sliccy 6.54.8 → 6.54.11

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 (233) hide show
  1. package/dist/node-server/_shared/content-type.d.ts +3 -0
  2. package/dist/node-server/_shared/content-type.d.ts.map +1 -0
  3. package/dist/node-server/_shared/content-type.js +15 -0
  4. package/dist/node-server/_shared/content-type.js.map +1 -0
  5. package/dist/node-server/_shared/fetch-proxy-protocol.d.ts +19 -0
  6. package/dist/node-server/_shared/fetch-proxy-protocol.d.ts.map +1 -0
  7. package/dist/node-server/_shared/fetch-proxy-protocol.js +2 -0
  8. package/dist/node-server/_shared/fetch-proxy-protocol.js.map +1 -0
  9. package/dist/node-server/_shared/index.d.ts +3 -0
  10. package/dist/node-server/_shared/index.d.ts.map +1 -1
  11. package/dist/node-server/_shared/index.js +3 -0
  12. package/dist/node-server/_shared/index.js.map +1 -1
  13. package/dist/node-server/_shared/runtime-env.d.ts +5 -0
  14. package/dist/node-server/_shared/runtime-env.d.ts.map +1 -0
  15. package/dist/node-server/_shared/runtime-env.js +11 -0
  16. package/dist/node-server/_shared/runtime-env.js.map +1 -0
  17. package/dist/node-server/chrome-launch.d.ts +25 -0
  18. package/dist/node-server/chrome-launch.js +65 -1
  19. package/dist/node-server/index.js +5 -1
  20. package/dist/node-server/routes/fetch-proxy.js +4 -17
  21. package/dist/ui/assets/__vite-browser-external-Cyo-aQrT.js +1 -0
  22. package/dist/ui/assets/{account-store-Bt2Be9oE.js → account-store-Cixv6_YB.js} +3 -3
  23. package/dist/ui/assets/{account-store-CYiR_KWE.js → account-store-Cri2-QTs.js} +2 -2
  24. package/dist/ui/assets/adobe-BNCQ33BH.js +1 -0
  25. package/dist/ui/assets/adobe-DAhQEaHD.js +2 -0
  26. package/dist/ui/assets/{agent-message-to-chat-VVddq_Ha.js → agent-message-to-chat-CCV57pg-.js} +1 -1
  27. package/dist/ui/assets/{apply-layout-DKNNOb4a.js → apply-layout-CFOwCSzb.js} +1 -1
  28. package/dist/ui/assets/apps-BC9rK9nM.js +27 -0
  29. package/dist/ui/assets/{azure-openai-dPfKBZTy.js → azure-openai-CoqastgM.js} +1 -1
  30. package/dist/ui/assets/{azure-openai-DgadC0go.js → azure-openai-D5YHoDgy.js} +1 -1
  31. package/dist/ui/assets/{backend-local-D7Gqh_i1.js → backend-local-CS8Lg_pV.js} +1 -1
  32. package/dist/ui/assets/{backend-local-rrSF0A3j.js → backend-local-CXXz0Yr_.js} +4 -4
  33. package/dist/ui/assets/bridge-launch-params-zrpWWxT3.js +1 -0
  34. package/dist/ui/assets/{bsh-watchdog-B_HT1e8u.js → bsh-watchdog-Bsj_JtLQ.js} +1 -1
  35. package/dist/ui/assets/{cdp-Bflb-S3X.js → cdp-BnxqzbCK.js} +1 -1
  36. package/dist/ui/assets/{cerebras-Dyd6R0Db.js → cerebras-BcmTeedN.js} +1 -1
  37. package/dist/ui/assets/{cerebras-BtjxB69W.js → cerebras-D7VrI1s7.js} +1 -1
  38. package/dist/ui/assets/{client-CeGDTjnw.js → client-CzWrT-Mo.js} +1 -1
  39. package/dist/ui/assets/composer-speech-Dp1VloTB.js +1 -0
  40. package/dist/ui/assets/{connect-surface-C6FNzgoP.js → connect-surface-3drhMby5.js} +1 -1
  41. package/dist/ui/assets/{dip-VzeVAaf7.js → dip-DHrMkh1r.js} +3 -3
  42. package/dist/ui/assets/{discovery-preference-yvSQLIqD.js → discovery-preference-lWdnjDWF.js} +1 -1
  43. package/dist/ui/assets/ensure-speech-assets-DlSXDkvE.js +1 -0
  44. package/dist/ui/assets/{esbuild-wasm-CSJ3h_mF.js → esbuild-wasm-9vr0ah1m.js} +1 -1
  45. package/dist/ui/assets/{follower-navigate-watcher-DZpXL_9_.js → follower-navigate-watcher-BEVyfIJi.js} +1 -1
  46. package/dist/ui/assets/fs-BTIKXxba.js +1 -0
  47. package/dist/ui/assets/fs-oNjGckRR.js +2 -0
  48. package/dist/ui/assets/{github-F45obW9o.js → github-CLntIGDN.js} +1 -1
  49. package/dist/ui/assets/github-CybkmEr1.js +2 -0
  50. package/dist/ui/assets/{github-copilot-BPeImiyv.js → github-copilot-Bod7BQJp.js} +1 -1
  51. package/dist/ui/assets/{github-copilot-CnPcIVmJ.js → github-copilot-CMIt8yvh.js} +1 -1
  52. package/dist/ui/assets/{github-install-k2w3NVhx.js → github-install-CKVIej26.js} +1 -1
  53. package/dist/ui/assets/{github-zip-CHR2c6hm.js → github-zip-0GQc6thA.js} +1 -1
  54. package/dist/ui/assets/{hear-BGYMcw85.js → hear-BQ0BbAs7.js} +1 -1
  55. package/dist/ui/assets/{hear-B9-zPLZr.js → hear-N3SlQupC.js} +1 -1
  56. package/dist/ui/assets/hid-picker-C51l071r.js +1 -0
  57. package/dist/ui/assets/host-command-Ddl8Tl5P.js +1 -0
  58. package/dist/ui/assets/html-B_Hg2WOy.js +1 -0
  59. package/dist/ui/assets/{installer-C2_Cz1lU.js → installer-tGr2k0_6.js} +1 -1
  60. package/dist/ui/assets/{kernel-worker-ndM7R7wj.js → kernel-worker-cRmNFYk-.js} +609 -611
  61. package/dist/ui/assets/{kokoro-engine-DW_lDc5n.js → kokoro-engine-CMzNIqzG.js} +1 -1
  62. package/dist/ui/assets/{lick-manager-proxy-Bhx3Yzp_.js → lick-manager-proxy-B953oJ2Q.js} +1 -1
  63. package/dist/ui/assets/lick-urls-CMSonx2J.js +1 -0
  64. package/dist/ui/assets/lick-ws-bridge-BIUyFaOL.js +1 -0
  65. package/dist/ui/assets/lick-ws-bridge-BQqDKks6.js +1 -0
  66. package/dist/ui/assets/{local-llm-DIBeVdbG.js → local-llm-CBTKF56M.js} +1 -1
  67. package/dist/ui/assets/{local-llm-xwkS4sW3.js → local-llm-Cqc869KT.js} +1 -1
  68. package/dist/ui/assets/{magick-wasm-DZJeTjwR.js → magick-wasm-CjEzkzMd.js} +1 -1
  69. package/dist/ui/assets/main-SjRqq-JM.js +22 -0
  70. package/dist/ui/assets/{main-cherry-P7U4C_JX.js → main-cherry-BUtw5qvI.js} +1 -1
  71. package/dist/ui/assets/mount-1eKJdUt0.js +2 -0
  72. package/dist/ui/assets/mount-2wHi6eSf.js +1 -0
  73. package/dist/ui/assets/{mount-bridge-client-DkyfUm3y.js → mount-bridge-client-D5axbHW9.js} +1 -1
  74. package/dist/ui/assets/{mount-picker-popup-Bh-wMX4z.js → mount-picker-popup-CLqCDaVV.js} +1 -1
  75. package/dist/ui/assets/{mount-recovery-An66ui-4.js → mount-recovery-Bi58f2Bb.js} +1 -1
  76. package/dist/ui/assets/{new-session-BlJP1cFy.js → new-session-Bz5cXTQV.js} +2 -2
  77. package/dist/ui/assets/{oauth-bootstrap-DBP9aIP3.js → oauth-bootstrap-BH2Izm6f.js} +2 -2
  78. package/dist/ui/assets/oauth-service-CySg7b3K.js +1 -0
  79. package/dist/ui/assets/oauth-service-D3bhtX04.js +1 -0
  80. package/dist/ui/assets/{openai-codex-BkJuD6rI.js → openai-codex-CQbhjovl.js} +1 -1
  81. package/dist/ui/assets/{openai-codex-BOnF84-j.js → openai-codex-DV_iFXPd.js} +1 -1
  82. package/dist/ui/assets/{openrouter-y6ouOfpC.js → openrouter-CB0nOiI6.js} +1 -1
  83. package/dist/ui/assets/{openrouter-DufnXHSr.js → openrouter-CFHCrXC2.js} +1 -1
  84. package/dist/ui/assets/{openrouter-oauth-i7g_rngX.js → openrouter-oauth-Kqqbn8VX.js} +1 -1
  85. package/dist/ui/assets/{openrouter-oauth-DVEGTNi0.js → openrouter-oauth-exBNPDns.js} +1 -1
  86. package/dist/ui/assets/panel-rpc-handlers-CQqTGxuN.js +2 -0
  87. package/dist/ui/assets/picker-approval-D89YhXsA.js +12 -0
  88. package/dist/ui/assets/picker-popup-bwFI7R4q.js +1 -0
  89. package/dist/ui/assets/{port-bridge-client-OGFANy96.js → port-bridge-client-BdgO9OHy.js} +1 -1
  90. package/dist/ui/assets/{port-bridge-client-Bg6_jjLD.js → port-bridge-client-Bw9y6i0a.js} +1 -1
  91. package/dist/ui/assets/{provider-B8UmTfhm.js → provider-DOkgfCHy.js} +2 -2
  92. package/dist/ui/assets/{provider-BzHZeraX.js → provider-H8x9Br1t.js} +1 -1
  93. package/dist/ui/assets/provider-settings-C1rYOQz-.js +1 -0
  94. package/dist/ui/assets/provider-settings-D9PxpwSz.js +2 -0
  95. package/dist/ui/assets/provider-store-access-D78904zM.js +1 -0
  96. package/dist/ui/assets/provider-store-access-OOcT1Bx5.js +2 -0
  97. package/dist/ui/assets/providers-C7cHbvKF.js +2 -0
  98. package/dist/ui/assets/{providers-DW-Tzgav.js → providers-C_SVKq80.js} +1 -1
  99. package/dist/ui/assets/proxied-fetch-B30CBbDZ.js +1 -0
  100. package/dist/ui/assets/proxied-fetch-DLOgqk5A.js +2 -0
  101. package/dist/ui/assets/{py-realm-worker-2nn9AS1F.js → py-realm-worker-C2q3f011.js} +2 -2
  102. package/dist/ui/assets/{pyodide-X83yixXc.js → pyodide-DvV71W1m.js} +2 -2
  103. package/dist/ui/assets/{quick-llm-DKpypO15.js → quick-llm-B-9cKABZ.js} +1 -1
  104. package/dist/ui/assets/{recovery-screen-DQjd0S3O.js → recovery-screen-DAAI-N5v.js} +1 -1
  105. package/dist/ui/assets/redirect-uri-DMmApIMx.js +1 -0
  106. package/dist/ui/assets/{remote-terminal-view-Q8aeCLeG.js → remote-terminal-view-Djd5-Ay7.js} +1 -1
  107. package/dist/ui/assets/runtime-env-DadgceZk.js +1 -0
  108. package/dist/ui/assets/runtime-env-Dlaokqg1.js +1 -0
  109. package/dist/ui/assets/runtime-env-Dtj99aNH.js +1 -0
  110. package/dist/ui/assets/runtime-env-E-i2SW1s.js +1 -0
  111. package/dist/ui/assets/{secret-env-IgYMwYRy.js → secret-env-uj44lXHZ.js} +1 -1
  112. package/dist/ui/assets/secret-topology-CnKyhZKB.js +1 -0
  113. package/dist/ui/assets/{secrets-bridge-client-BZMh3a0J.js → secrets-bridge-client-Bz8CHwrq.js} +1 -1
  114. package/dist/ui/assets/serial-picker-DfuRO5aY.js +1 -0
  115. package/dist/ui/assets/{session-freezer-CyWay-PH.js → session-freezer-IUW8JBgx.js} +3 -3
  116. package/dist/ui/assets/{setup-feature-flags-remote-CM8xiRdx.js → setup-feature-flags-remote-BrY2fUR1.js} +1 -1
  117. package/dist/ui/assets/setup-standalone-prelude-C4DWDF0F.js +2 -0
  118. package/dist/ui/assets/setup-sudo-CHRibtUP.js +2 -0
  119. package/dist/ui/assets/shared-C_1S1Lba.js +4 -0
  120. package/dist/ui/assets/shared-Dt3WZi4m.js +1 -0
  121. package/dist/ui/assets/sidecar-repair-BXwSWMQD.js +1 -0
  122. package/dist/ui/assets/sidecar-repair-qfX5Cm1p.js +1 -0
  123. package/dist/ui/assets/{silent-renew-backoff-tbYCpSw6.js → silent-renew-backoff-BhyOB6Rq.js} +1 -1
  124. package/dist/ui/assets/{skills-C6TTCo-C.js → skills-C-Zmfu-_.js} +1 -1
  125. package/dist/ui/assets/{speak-BR-XEaAe.js → speak-BGDR8QCm.js} +1 -1
  126. package/dist/ui/assets/speak-DP8oL2p4.js +1 -0
  127. package/dist/ui/assets/{sprinkle-bridge-RIIOK3yH.js → sprinkle-bridge-SSPKXXql.js} +1 -1
  128. package/dist/ui/assets/{sprinkle-manager-BhUhBMGY.js → sprinkle-manager-CmLw6vMf.js} +1 -1
  129. package/dist/ui/assets/src-C9oNvq2b2.js +2 -0
  130. package/dist/ui/assets/{store-D52VSTCt.js → store-CVQXxikV.js} +1 -1
  131. package/dist/ui/assets/{store-CZgYGHpu.js → store-DKGtlC1b.js} +1 -1
  132. package/dist/ui/assets/{sudo-CQf1-eId.js → sudo-BL5Roxp2.js} +1 -1
  133. package/dist/ui/assets/telemetry-B3Gk6Bxx.js +3 -0
  134. package/dist/ui/assets/telemetry-CnFc0fJk.js +3 -0
  135. package/dist/ui/assets/{tool-result-images-BJnG1-lQ.js → tool-result-images-CrPqU7Fx.js} +1 -1
  136. package/dist/ui/assets/tool-ui-DfXu6quJ.js +1 -0
  137. package/dist/ui/assets/tool-ui-t6ocn6AG.js +1 -0
  138. package/dist/ui/assets/transformers-env-BsN_UeO3.js +1 -0
  139. package/dist/ui/assets/transformers-env-BvqRbTZA.js +1 -0
  140. package/dist/ui/assets/tray-leader-CWuSSwHv.js +1 -0
  141. package/dist/ui/assets/{tray-leave-runtime-Bk54j6on.js → tray-leave-runtime-Dqijtz8l.js} +1 -1
  142. package/dist/ui/assets/{tray-runtime-config-ObNW_fQX.js → tray-runtime-config-B76Ys57e.js} +1 -1
  143. package/dist/ui/assets/{tray-runtime-config-C82czC62.js → tray-runtime-config-BDiVOcsu.js} +1 -1
  144. package/dist/ui/assets/upgrade-detection-DkToHHOL.js +1 -0
  145. package/dist/ui/assets/usb-picker-lrIiGT6q.js +1 -0
  146. package/dist/ui/assets/{voice-reply-2AqNvqhZ.js → voice-reply-BTMNMaUc.js} +1 -1
  147. package/dist/ui/assets/wc-extension-BawIy0dL.js +2 -0
  148. package/dist/ui/assets/{wc-float-label-tSpScI6q.js → wc-float-label-Dsdaicq7.js} +1 -1
  149. package/dist/ui/assets/wc-follower-DJQWwP6o.js +17 -0
  150. package/dist/ui/assets/wc-live-BxBluEbE.js +8 -0
  151. package/dist/ui/assets/wc-nav-CzxaNTMa.js +2 -0
  152. package/dist/ui/assets/wc-onboarding-5WfRhyvL.js +2 -0
  153. package/dist/ui/assets/{wc-permissions-Dw-_JpYr.js → wc-permissions-CXegou6r.js} +3 -3
  154. package/dist/ui/assets/wc-permissions-providers-DqdS-3Fr.js +2 -0
  155. package/dist/ui/assets/{wc-placeholder-mxr2ptO0.js → wc-placeholder-DwG7gOF6.js} +2 -2
  156. package/dist/ui/assets/wc-settings-DW6n_9xd.js +51 -0
  157. package/dist/ui/assets/wc-shell-BntVvoQD.js +117 -0
  158. package/dist/ui/assets/wc-sprinkles-Cpu2urpZ.js +2 -0
  159. package/dist/ui/assets/wc-tray-BVd6DCu3.js +2 -0
  160. package/dist/ui/assets/{wc-tray-scoops-cIGATjdy.js → wc-tray-scoops-CgIs0nI4.js} +1 -1
  161. package/dist/ui/assets/{whisper-engine-yUbflZgR.js → whisper-engine-C07BgACl.js} +1 -1
  162. package/dist/ui/assets/whisper-session-B1Q88hDi.js +2 -0
  163. package/dist/ui/assets/{xai-grok-C5ISXBaA.js → xai-grok-CB-YtzAf.js} +1 -1
  164. package/dist/ui/assets/{xai-grok-D6XWol5w.js → xai-grok-CUnTVdjG.js} +1 -1
  165. package/dist/ui/index.html +16 -18
  166. package/dist/ui/llm-proxy-sw.js +1 -1
  167. package/dist/ui/packages/webapp/index.html +16 -18
  168. package/package.json +2 -2
  169. package/dist/ui/assets/__vite-browser-external-CjLuCwpB.js +0 -1
  170. package/dist/ui/assets/adobe-BGA2O5lN.js +0 -1
  171. package/dist/ui/assets/adobe-BiKFv-pW.js +0 -2
  172. package/dist/ui/assets/apps-Dq4XMpUj.js +0 -27
  173. package/dist/ui/assets/bridge-launch-params-B8x2eq4a.js +0 -1
  174. package/dist/ui/assets/composer-speech-BWgwwSEK.js +0 -1
  175. package/dist/ui/assets/electron-overlay-route-CjT6k9Df.js +0 -1
  176. package/dist/ui/assets/ensure-speech-assets-PTDD7H7F.js +0 -1
  177. package/dist/ui/assets/fs-BJpP9LmD.js +0 -1
  178. package/dist/ui/assets/fs-BUD7dzTH.js +0 -2
  179. package/dist/ui/assets/github-DpLa-xiJ.js +0 -2
  180. package/dist/ui/assets/hid-picker-Bhoh8hxy.js +0 -1
  181. package/dist/ui/assets/lick-ws-bridge-CFFtf-gn.js +0 -1
  182. package/dist/ui/assets/lick-ws-bridge-DeUbk3le.js +0 -1
  183. package/dist/ui/assets/main-DU3wtkSu.js +0 -22
  184. package/dist/ui/assets/mount-Bi2ynSJ8.js +0 -1
  185. package/dist/ui/assets/mount-rdxe7gND.js +0 -2
  186. package/dist/ui/assets/oauth-service-Dmnx-pbE.js +0 -1
  187. package/dist/ui/assets/oauth-service-a6YE6xTR.js +0 -1
  188. package/dist/ui/assets/panel-rpc-handlers-zb20b6Wn.js +0 -2
  189. package/dist/ui/assets/picker-approval-CXL7T-sh.js +0 -12
  190. package/dist/ui/assets/picker-popup-BvzmBsGL.js +0 -1
  191. package/dist/ui/assets/provider-settings-6psG445l.js +0 -1
  192. package/dist/ui/assets/provider-settings-BjJ5EnDa.js +0 -2
  193. package/dist/ui/assets/provider-store-access-BBR9vpxH.js +0 -2
  194. package/dist/ui/assets/provider-store-access-BJzHx-0D.js +0 -1
  195. package/dist/ui/assets/providers-DNK9uC6J.js +0 -2
  196. package/dist/ui/assets/proxied-fetch-BML_ivCH.js +0 -1
  197. package/dist/ui/assets/proxied-fetch-ULPrH97b.js +0 -2
  198. package/dist/ui/assets/redirect-uri-BKGsoWVQ.js +0 -1
  199. package/dist/ui/assets/runtime-env-DH4NDw4t.js +0 -1
  200. package/dist/ui/assets/runtime-env-byAg9ij-.js +0 -1
  201. package/dist/ui/assets/runtime-mode-BgSVO5sw.js +0 -1
  202. package/dist/ui/assets/runtime-mode-DVhcM6TX.js +0 -1
  203. package/dist/ui/assets/secret-topology-DCQNOMWj.js +0 -1
  204. package/dist/ui/assets/serial-picker-CUd91lje.js +0 -1
  205. package/dist/ui/assets/setup-standalone-prelude-DxrEy7JL.js +0 -2
  206. package/dist/ui/assets/setup-sudo-CeEFPOmJ.js +0 -2
  207. package/dist/ui/assets/shared-D4Q0n73P.js +0 -4
  208. package/dist/ui/assets/shared-Y4VMjBcs.js +0 -1
  209. package/dist/ui/assets/sidecar-merge-ChbmI6Wr.js +0 -1
  210. package/dist/ui/assets/sidecar-merge-DP5Rveo5.js +0 -1
  211. package/dist/ui/assets/sidecar-repair-CfVdKYNb.js +0 -1
  212. package/dist/ui/assets/sidecar-repair-cn5xY6Gb.js +0 -1
  213. package/dist/ui/assets/speak-BP6s3kzt.js +0 -1
  214. package/dist/ui/assets/telemetry-DqIqVG5n.js +0 -3
  215. package/dist/ui/assets/tool-ui-C-E235kX.js +0 -1
  216. package/dist/ui/assets/tool-ui-Dq9m-pLC.js +0 -1
  217. package/dist/ui/assets/transformers-env-CvfifvRm.js +0 -1
  218. package/dist/ui/assets/transformers-env-h1XwWBUK.js +0 -1
  219. package/dist/ui/assets/tray-leader-BIbpF_6U.js +0 -1
  220. package/dist/ui/assets/upgrade-detection-D56bVS81.js +0 -1
  221. package/dist/ui/assets/usb-picker-Cl6Cwuv9.js +0 -1
  222. package/dist/ui/assets/wc-extension-BFOLVfq4.js +0 -2
  223. package/dist/ui/assets/wc-follower-Rsa5fYZd.js +0 -17
  224. package/dist/ui/assets/wc-follower-model-surface-B3z6dlpJ.js +0 -1
  225. package/dist/ui/assets/wc-live-xwaF-8eq.js +0 -8
  226. package/dist/ui/assets/wc-nav-Bb6lzhZE.js +0 -2
  227. package/dist/ui/assets/wc-onboarding-Bm3kKhcn.js +0 -2
  228. package/dist/ui/assets/wc-permissions-providers-BOgM_jqs.js +0 -2
  229. package/dist/ui/assets/wc-settings-BQiqi5sp.js +0 -51
  230. package/dist/ui/assets/wc-shell-70CfrrbG.js +0 -117
  231. package/dist/ui/assets/wc-sprinkles-D_b6N7Zg.js +0 -2
  232. package/dist/ui/assets/wc-tray-we88HXwp.js +0 -2
  233. package/dist/ui/assets/whisper-session-CvoLVx5i.js +0 -2
@@ -0,0 +1,3 @@
1
+ /** Check whether a content type is safe to decode as UTF-8 text. */
2
+ export declare function isTextContentType(contentType: string): boolean;
3
+ //# sourceMappingURL=content-type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-type.d.ts","sourceRoot":"","sources":["../src/content-type.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAa9D"}
@@ -0,0 +1,15 @@
1
+ /** Check whether a content type is safe to decode as UTF-8 text. */
2
+ export function isTextContentType(contentType) {
3
+ if (!contentType)
4
+ return false;
5
+ const normalized = contentType.toLowerCase();
6
+ return (normalized.startsWith('text/') ||
7
+ normalized.includes('json') ||
8
+ normalized.includes('xml') ||
9
+ normalized.includes('javascript') ||
10
+ normalized.includes('ecmascript') ||
11
+ normalized.includes('html') ||
12
+ normalized.includes('css') ||
13
+ normalized.includes('svg'));
14
+ }
15
+ //# sourceMappingURL=content-type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-type.js","sourceRoot":"","sources":["../src/content-type.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,MAAM,UAAU,iBAAiB,CAAC,WAAmB;IACnD,IAAI,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC;IAC/B,MAAM,UAAU,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;IAC7C,OAAO,CACL,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC;QAC9B,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC3B,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC1B,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC;QACjC,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC;QACjC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC3B,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC1B,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAC3B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Port-streamed fetch-proxy response protocol shared by the extension backend
3
+ * and browser clients.
4
+ */
5
+ export type FetchProxyResponseMsg = {
6
+ type: 'response-head';
7
+ status: number;
8
+ statusText: string;
9
+ headers: Record<string, string>;
10
+ } | {
11
+ type: 'response-chunk';
12
+ dataBase64: string;
13
+ } | {
14
+ type: 'response-end';
15
+ } | {
16
+ type: 'response-error';
17
+ error: string;
18
+ };
19
+ //# sourceMappingURL=fetch-proxy-protocol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-proxy-protocol.d.ts","sourceRoot":"","sources":["../src/fetch-proxy-protocol.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAC7B;IACE,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC,GACD;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,GACxB;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=fetch-proxy-protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-proxy-protocol.js","sourceRoot":"","sources":["../src/fetch-proxy-protocol.ts"],"names":[],"mappings":""}
@@ -2,9 +2,12 @@ export * from './agent-wire-types.js';
2
2
  export * from './base64.js';
3
3
  export * from './bridge-protocol.js';
4
4
  export * from './cdp-frame-unmask.js';
5
+ export * from './content-type.js';
5
6
  export * from './electron-overlay-route.js';
7
+ export * from './fetch-proxy-protocol.js';
6
8
  export * from './oauth-extra-domains-storage.js';
7
9
  export * from './preview-url.js';
10
+ export * from './runtime-env.js';
8
11
  export * from './secret-env-schema.js';
9
12
  export * from './secret-masking.js';
10
13
  export * from './secrets-pipeline.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC;AACjD,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kCAAkC,CAAC;AACjD,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC"}
@@ -3,9 +3,12 @@ export * from './agent-wire-types.js';
3
3
  export * from './base64.js';
4
4
  export * from './bridge-protocol.js';
5
5
  export * from './cdp-frame-unmask.js';
6
+ export * from './content-type.js';
6
7
  export * from './electron-overlay-route.js';
8
+ export * from './fetch-proxy-protocol.js';
7
9
  export * from './oauth-extra-domains-storage.js';
8
10
  export * from './preview-url.js';
11
+ export * from './runtime-env.js';
9
12
  export * from './secret-env-schema.js';
10
13
  export * from './secret-masking.js';
11
14
  export * from './secrets-pipeline.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iFAAiF;AAEjF,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC;AACjD,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iFAAiF;AAEjF,cAAc,uBAAuB,CAAC;AACtC,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kCAAkC,CAAC;AACjD,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC"}
@@ -0,0 +1,5 @@
1
+ /** True when running inside a Chrome extension realm. */
2
+ export declare function isChromeExtensionRealm(): boolean;
3
+ /** True when this page can open a named port to a Chrome extension. */
4
+ export declare function canConnectToChromeRuntime(): boolean;
5
+ //# sourceMappingURL=runtime-env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-env.d.ts","sourceRoot":"","sources":["../src/runtime-env.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,wBAAgB,sBAAsB,IAAI,OAAO,CAGhD;AAED,uEAAuE;AACvE,wBAAgB,yBAAyB,IAAI,OAAO,CAGnD"}
@@ -0,0 +1,11 @@
1
+ /** True when running inside a Chrome extension realm. */
2
+ export function isChromeExtensionRealm() {
3
+ const runtimeId = globalThis.chrome?.runtime?.id;
4
+ return typeof runtimeId === 'string' && runtimeId.length > 0;
5
+ }
6
+ /** True when this page can open a named port to a Chrome extension. */
7
+ export function canConnectToChromeRuntime() {
8
+ const runtime = globalThis.chrome?.runtime;
9
+ return typeof runtime?.connect === 'function';
10
+ }
11
+ //# sourceMappingURL=runtime-env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-env.js","sourceRoot":"","sources":["../src/runtime-env.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,MAAM,UAAU,sBAAsB;IACpC,MAAM,SAAS,GAAI,UAA0D,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC;IAClG,OAAO,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;AAC/D,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,yBAAyB;IACvC,MAAM,OAAO,GAAI,UAA+D,CAAC,MAAM,EAAE,OAAO,CAAC;IACjG,OAAO,OAAO,OAAO,EAAE,OAAO,KAAK,UAAU,CAAC;AAChD,CAAC"}
@@ -161,6 +161,31 @@ export declare function clearStaleDevToolsActivePort(userDataDir: string): Promi
161
161
  * launch.
162
162
  */
163
163
  export declare function clearChromeRestoreState(userDataDir: string): Promise<void>;
164
+ /**
165
+ * Sites whose tabs Chrome must never discard or freeze: the hosted leader
166
+ * UI (www + apex) and local bridge/dev origins. Entries are Chrome
167
+ * "tab discarding exception" site patterns (the same strings
168
+ * chrome://settings/performance stores).
169
+ */
170
+ export declare const TAB_LIFECYCLE_EXEMPT_SITES: string[];
171
+ /**
172
+ * Seed the profile's `Default/Preferences` with tab-lifecycle opt-outs before
173
+ * every launch. The `--disable-features` list in {@link buildChromeLaunchArgs}
174
+ * is the primary defense against Chrome freezing/discarding the backgrounded
175
+ * leader tab, but feature names churn between Chrome versions (Chrome 151
176
+ * renamed the whole pipeline, silently reviving the freeze); these prefs are
177
+ * the version-stable belt:
178
+ *
179
+ * - `tab_freezing_enabled: false` — master pref gating tab freezing;
180
+ * - `performance_tuning.high_efficiency_mode.state: 0` — Memory Saver off;
181
+ * - `performance_tuning.tab_discarding.exceptions` — per-site exemption list
182
+ * covering the leader origins, honored by both discard and (via Chrome's
183
+ * FreezingFollowsDiscardOptOut) freeze policy.
184
+ *
185
+ * Merges into existing prefs (the profile persists logins across runs) and
186
+ * never throws — a failure here must not block a launch.
187
+ */
188
+ export declare function seedChromeProfilePreferences(userDataDir: string): Promise<void>;
164
189
  /**
165
190
  * Remove Chrome's session-restore snapshot so a relaunch opens ONLY the
166
191
  * command-line tab instead of also reopening the previous window's tabs.
@@ -1,3 +1,4 @@
1
+ import { SLICC_HOSTED_ORIGIN } from './_shared/index.js';
1
2
  import { existsSync, readdirSync } from 'fs';
2
3
  import { cp, mkdir, readFile, readlink, rm, unlink, writeFile } from 'fs/promises';
3
4
  import { request as httpRequest } from 'http';
@@ -205,7 +206,19 @@ export function buildChromeLaunchArgs(options) {
205
206
  // disable freezing/discard eligibility and renderer backgrounding
206
207
  // outright. (Unknown --disable-features names are ignored by Chrome, so
207
208
  // the list is safe across versions.)
208
- '--disable-features=LocalNetworkAccessChecks,LocalNetworkAccessChecksWebSockets,IntensiveWakeUpThrottling,HighEfficiencyModeAvailable',
209
+ //
210
+ // Chrome 151 renamed/split the freezing pipeline, so the original
211
+ // HighEfficiencyModeAvailable flag no longer covers it (live incident
212
+ // 2026-08-17: hidden leader frozen so hard even CDP dispatch was
213
+ // suspended, then force-reloaded as a same-entry back_forward navigation
214
+ // on activation — the "dead tab"). The names below were extracted from
215
+ // the Chrome 151 binary: InfiniteTabsFreezing* is the new freezing
216
+ // feature, CPU/MemoryMeasurementInFreezingPolicy feed the intervention
217
+ // that picks high-footprint background tabs (which is why a busy kernel
218
+ // trips it on a ~30 min cadence), and AllowDevtoolsConnectedDiscard
219
+ // removed the DevTools-attached exemption the leader used to enjoy.
220
+ // Belt: seedChromeProfilePreferences() writes the matching prefs.
221
+ '--disable-features=LocalNetworkAccessChecks,LocalNetworkAccessChecksWebSockets,IntensiveWakeUpThrottling,HighEfficiencyModeAvailable,InfiniteTabsFreezing,InfiniteTabsFreezingOnMemoryPressure,CPUMeasurementInFreezingPolicy,MemoryMeasurementInFreezingPolicy,AllowDevtoolsConnectedDiscard',
209
222
  '--disable-background-timer-throttling',
210
223
  '--disable-backgrounding-occluded-windows',
211
224
  '--disable-renderer-backgrounding',
@@ -607,6 +620,57 @@ export async function clearChromeRestoreState(userDataDir) {
607
620
  // Best-effort — a write failure just leaves the prior restore behavior.
608
621
  }
609
622
  }
623
+ const hostedLeaderHost = new URL(SLICC_HOSTED_ORIGIN).hostname;
624
+ /**
625
+ * Sites whose tabs Chrome must never discard or freeze: the hosted leader
626
+ * UI (www + apex) and local bridge/dev origins. Entries are Chrome
627
+ * "tab discarding exception" site patterns (the same strings
628
+ * chrome://settings/performance stores).
629
+ */
630
+ export const TAB_LIFECYCLE_EXEMPT_SITES = [
631
+ hostedLeaderHost,
632
+ hostedLeaderHost.replace(/^www\./, ''),
633
+ 'localhost',
634
+ ];
635
+ /**
636
+ * Seed the profile's `Default/Preferences` with tab-lifecycle opt-outs before
637
+ * every launch. The `--disable-features` list in {@link buildChromeLaunchArgs}
638
+ * is the primary defense against Chrome freezing/discarding the backgrounded
639
+ * leader tab, but feature names churn between Chrome versions (Chrome 151
640
+ * renamed the whole pipeline, silently reviving the freeze); these prefs are
641
+ * the version-stable belt:
642
+ *
643
+ * - `tab_freezing_enabled: false` — master pref gating tab freezing;
644
+ * - `performance_tuning.high_efficiency_mode.state: 0` — Memory Saver off;
645
+ * - `performance_tuning.tab_discarding.exceptions` — per-site exemption list
646
+ * covering the leader origins, honored by both discard and (via Chrome's
647
+ * FreezingFollowsDiscardOptOut) freeze policy.
648
+ *
649
+ * Merges into existing prefs (the profile persists logins across runs) and
650
+ * never throws — a failure here must not block a launch.
651
+ */
652
+ export async function seedChromeProfilePreferences(userDataDir) {
653
+ const prefsPath = join(userDataDir, 'Default', 'Preferences');
654
+ try {
655
+ const prefs = await readJsonFile(prefsPath);
656
+ prefs['tab_freezing_enabled'] = false;
657
+ const performanceTuning = ensureObject(prefs, 'performance_tuning');
658
+ const highEfficiencyMode = ensureObject(performanceTuning, 'high_efficiency_mode');
659
+ highEfficiencyMode['state'] = 0;
660
+ const tabDiscarding = ensureObject(performanceTuning, 'tab_discarding');
661
+ const existing = tabDiscarding['exceptions'];
662
+ const exceptions = Array.isArray(existing) ? existing.filter((e) => typeof e === 'string') : [];
663
+ for (const site of TAB_LIFECYCLE_EXEMPT_SITES) {
664
+ if (!exceptions.includes(site))
665
+ exceptions.push(site);
666
+ }
667
+ tabDiscarding['exceptions'] = exceptions;
668
+ await writeJsonFile(prefsPath, prefs);
669
+ }
670
+ catch {
671
+ // Best-effort — without the seed the --disable-features flags still apply.
672
+ }
673
+ }
610
674
  /**
611
675
  * Remove Chrome's session-restore snapshot so a relaunch opens ONLY the
612
676
  * command-line tab instead of also reopening the previous window's tabs.
@@ -15,7 +15,7 @@ import { BRIDGE_TOKEN_HEADER, buildCorsHeaders, buildPnaPreflightHeaders, isLoop
15
15
  import { closeLaunchedBrowserGracefully } from './browser-shutdown.js';
16
16
  import { applyCdpUnmask } from './cdp-proxy/cdp-unmask.js';
17
17
  import { createCdpSessionUrlTracker } from './cdp-proxy/session-url-tracker.js';
18
- import { buildChromeLaunchArgs, clearChromeRestoreState, clearChromeSessionRestore, clearStaleDevToolsActivePort, ensureQaProfileScaffold, findChromeExecutable, legacyChromeCandidates, migrateLegacyDefaultChromeProfile, planChromeSpawn, resolveChromeLaunchProfile, terminateExistingProfileChrome, waitForCdpPort, } from './chrome-launch.js';
18
+ import { buildChromeLaunchArgs, clearChromeRestoreState, clearChromeSessionRestore, clearStaleDevToolsActivePort, ensureQaProfileScaffold, findChromeExecutable, legacyChromeCandidates, migrateLegacyDefaultChromeProfile, planChromeSpawn, resolveChromeLaunchProfile, seedChromeProfilePreferences, terminateExistingProfileChrome, waitForCdpPort, } from './chrome-launch.js';
19
19
  import { CliLogDedup } from './cli-log-dedup.js';
20
20
  import { parseCloudArgs } from './cloud/dispatch.js';
21
21
  import { runKill } from './cloud/kill.js';
@@ -478,6 +478,10 @@ async function launchChromeTarget(state) {
478
478
  // flag so Chrome doesn't show the crash-restore bubble. (The tab-restore
479
479
  // itself is handled by clearChromeSessionRestore above, not this.)
480
480
  await clearChromeRestoreState(chromeProfile.userDataDir);
481
+ // Prefs-level opt-out from tab freezing/discarding for the leader origins —
482
+ // the version-stable belt behind the --disable-features flags, which Chrome
483
+ // 151 demonstrated can rot when the feature names churn.
484
+ await seedChromeProfilePreferences(chromeProfile.userDataDir);
481
485
  // On macOS, route through `/usr/bin/open` so LaunchServices owns the new Chrome
482
486
  // process — otherwise the launching terminal stays in Chrome's TCC responsibility
483
487
  // chain and silently breaks getUserMedia() camera/mic grants.
@@ -1,6 +1,6 @@
1
1
  import { Readable, Transform } from 'node:stream';
2
2
  import { StringDecoder } from 'node:string_decoder';
3
- import { HMAC_SIGN_HEADER } from '../_shared/index.js';
3
+ import { HMAC_SIGN_HEADER, isTextContentType } from '../_shared/index.js';
4
4
  import { FETCH_PROXY_SKIP_HEADERS, FETCH_PROXY_SKIP_RESPONSE_HEADERS, FETCH_PROXY_SKIP_RESPONSE_PREFIXES, } from '../fetch-proxy-headers.js';
5
5
  import { AgentActivityTracker, registerAgentActivityRoute } from './agent-activity.js';
6
6
  /** Pick the first value of a possibly-multi-valued request header. */
@@ -141,17 +141,8 @@ async function applyHmacSigning(secretProxy, headers, hmacSpec, body, targetHost
141
141
  * on arbitrary bytes corrupts them, and masked values never appear in binary.
142
142
  */
143
143
  function unmaskRequestBody(secretProxy, headers, rawBody, targetHostname) {
144
- const reqCt = (headers['content-type'] ?? headers['Content-Type'] ?? '').toLowerCase();
145
- const reqIsText = !reqCt ||
146
- reqCt.startsWith('text/') ||
147
- reqCt.includes('json') ||
148
- reqCt.includes('xml') ||
149
- reqCt.includes('javascript') ||
150
- reqCt.includes('ecmascript') ||
151
- reqCt.includes('html') ||
152
- reqCt.includes('css') ||
153
- reqCt.includes('svg');
154
- if (reqIsText && secretProxy.hasSecrets()) {
144
+ const contentType = headers['content-type'] ?? headers['Content-Type'] ?? '';
145
+ if (isTextContentType(contentType) && secretProxy.hasSecrets()) {
155
146
  const bodyResult = secretProxy.unmaskBody(rawBody.toString('utf-8'), targetHostname);
156
147
  return Buffer.from(bodyResult.text, 'utf-8');
157
148
  }
@@ -231,11 +222,7 @@ function createScrubStream(secretProxy, isText) {
231
222
  }
232
223
  /** Stream the upstream body to the client through the secret-scrub transform. */
233
224
  function streamUpstreamBody(res, upstream, secretProxy, detachClientClose) {
234
- const ct = (upstream.headers.get('content-type') ?? '').toLowerCase();
235
- const isText = ct.startsWith('text/') ||
236
- ct.startsWith('application/json') ||
237
- ct.includes('charset=') ||
238
- ct.includes('event-stream');
225
+ const isText = isTextContentType(upstream.headers.get('content-type') ?? '');
239
226
  const upstreamStream = Readable.fromWeb(upstream.body);
240
227
  const scrubChunk = createScrubStream(secretProxy, isText);
241
228
  upstreamStream.on('error', (err) => {
@@ -0,0 +1 @@
1
+ import{t as e}from"./py-realm-worker-C2q3f011.js";var t=e(((e,t)=>{t.exports={}}));export default t();
@@ -1,5 +1,5 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/oauth-service-Dmnx-pbE.js","assets/preload-helper-Czpn1I53.js","assets/proxied-fetch-ULPrH97b.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/base64-DpPqYZJF.js","assets/src-CAWTvdAa.js","assets/runtime-env-DH4NDw4t.js","assets/fetch-body-D2PwksUW.js","assets/panel-rpc-B3MSVImO.js","assets/permissions-surface-registry-CilCRwhh.js"])))=>i.map(i=>d[i]);
2
- import{n as e,t}from"./rolldown-runtime-Dd_uD5pT.js";import{t as n}from"./preload-helper-Czpn1I53.js";import{c as r,d as i,f as a,l as o,r as s,t as c,u as l}from"./bedrock-camp-C8bCNVSq.js";import{t as u}from"./logger-DDBAeTLF.js";import"./src-CAWTvdAa.js";import{o as d,t as f}from"./proxied-fetch-ULPrH97b.js";import{t as p}from"./secret-topology-DCQNOMWj.js";import{t as m}from"./secrets-bridge-client-BZMh3a0J.js";import"./tool-ui-C-E235kX.js";import"./tool-result-images-D8kQ0hH0.js";import{n as h,o as g,t as _}from"./providers-DNK9uC6J.js";import{n as v,t as y}from"./panel-rpc-B3MSVImO.js";var b={assign:0,create:0,clone:0,discard:0,update:0};function x(e){return Array.isArray(e)}function S(e){return w(e,null)}function C(e){return w(typeof e,`object`)&&!S(e)}function w(e,t){return e===t}function ee(e){if(!C(e))return!1;let t=globalThis.Object.getPrototypeOf(e);return!S(t)&&w(typeof t.constructor,`function`)&&!(w(t.constructor,globalThis.Object)||w(t.constructor.name,`Object`))}function te(e){return w(e,`__proto__`)||w(e,`constructor`)||w(e,`prototype`)}function ne(e,t){return te(t)?Object.prototype.hasOwnProperty.call(e,t):t in e}function re(e){return Object.getOwnPropertyNames(e)}function ie(e){return Object.getOwnPropertySymbols(e)}function T(e){return globalThis.ArrayBuffer.isView(e)}function ae(e){return e instanceof globalThis.RegExp}function oe(e){return e instanceof globalThis.Set}function se(e){return e instanceof globalThis.Map}function ce(e){return e}function le(e){return ne(e,`~kind`)||ne(e,`~unsafe`)}function ue(e){let t={},n=Object.getOwnPropertyDescriptors(e);for(let e of Object.keys(n)){if(te(e))continue;let r=n[e];ne(r,`value`)&&Object.defineProperty(t,e,{...r,value:E(r.value)})}return t}function de(e){let t={};for(let n of re(e))te(n)||(t[n]=E(e[n]));for(let n of ie(e))t[n]=E(e[n]);return t}function fe(e){return ee(e)?ce(e):le(e)?ue(e):de(e)}function pe(e){return e.map(e=>E(e))}function me(e){return e.slice()}function he(e){return new RegExp(e.source,e.flags)}function ge(e){return new Map(E([...e.entries()]))}function _e(e){return new Set(E([...e.values()]))}function E(e){return T(e)?me(e):ae(e)?he(e):se(e)?ge(e):oe(e)?_e(e):x(e)?pe(e):C(e)?fe(e):e}function ve(e){return b.clone+=1,E(e)}var ye={immutableTypes:!1,maxErrors:8,useAcceleration:!0,exactOptionalPropertyTypes:!1,enumerableKind:!1,correctiveParse:!1,unionPrioritySort:!0};function be(){return ye}function xe(e,t){for(let n of Object.keys(t))Object.defineProperty(e,n,{configurable:!0,writable:!0,enumerable:!1,value:t[n]});return e}function Se(e,t){return{...e,...t}}function Ce(e,t,n={}){b.create+=1;let r=be(),i=Se(t,n),a=r.enumerableKind?Se(i,e):xe(i,e);return r.immutableTypes?Object.freeze(a):a}function we(e,t,n){b.update+=1;let r=be(),i=ve(e);for(let e of Object.keys(t))Object.defineProperty(i,e,{configurable:!0,writable:!0,enumerable:r.enumerableKind,value:t[e]});for(let e of Object.keys(n))Object.defineProperty(i,e,{configurable:!0,enumerable:!0,writable:!0,value:n[e]});return i}function Te(e){return C(e)}function Ee(e){return we(e,{"~optional":!0},{})}function De(e,t){return we(Ee(e),{},t)}function Oe(e,t){return Ce({"~kind":`Array`},{type:`array`,items:e},t)}function ke(e,t={}){return De(e,t)}function Ae(e){return ke(e)}function je(e){return Te(e)&&ne(e,`~optional`)}function Me(e){return re(e).filter(t=>!je(e[t]))}function Ne(e,t={}){let n=Me(e);return Ce({"~kind":`Object`},{type:`object`,...n.length>0?{required:n}:{},properties:e},t)}var Pe;(function(e){e[e.Array=0]=`Array`,e[e.BigInt=1]=`BigInt`,e[e.Boolean=2]=`Boolean`,e[e.Date=3]=`Date`,e[e.Constructor=4]=`Constructor`,e[e.Function=5]=`Function`,e[e.Null=6]=`Null`,e[e.Number=7]=`Number`,e[e.Object=8]=`Object`,e[e.RegExp=9]=`RegExp`,e[e.String=10]=`String`,e[e.Symbol=11]=`Symbol`,e[e.TypeArray=12]=`TypeArray`,e[e.Undefined=13]=`Undefined`})(Pe||={}),Array.from({length:256}).map((e,t)=>BigInt(t));var Fe=new Float64Array(1);new DataView(Fe.buffer),new Uint8Array(Fe.buffer),new TextEncoder;var Ie=`-?(?:0|[1-9][0-9]*)`,Le=`-?(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?`;function Re(e){return Ce({"~kind":`Number`},{type:`number`},e)}function D(e){return Ce({"~kind":`String`},{type:`string`},e)}var ze=`^${Ie}$`;`${Le}`;function Be(e,t){return Array.from({length:t-e+1},(t,n)=>String.fromCharCode(e+n))}var Ve=[...Be(97,122),...Be(65,90)],He=[`0`,...Be(49,57)];[...He],[...Ve,...He],[...He],new RegExp(ze);function Ue(e,t){try{return Promise.resolve(t(We))}catch(e){return Promise.reject(e)}}var We={startSpan:Ue,addEvent:()=>{},setAttributes:()=>{},setStatus:()=>{}};Object.freeze(We);var Ge=Symbol.for(`yaml.alias`),Ke=Symbol.for(`yaml.document`),O=Symbol.for(`yaml.map`),qe=Symbol.for(`yaml.pair`),Je=Symbol.for(`yaml.scalar`),Ye=Symbol.for(`yaml.seq`),k=Symbol.for(`yaml.node.type`),Xe=e=>!!e&&typeof e==`object`&&e[k]===Ge,Ze=e=>!!e&&typeof e==`object`&&e[k]===Ke,Qe=e=>!!e&&typeof e==`object`&&e[k]===O,A=e=>!!e&&typeof e==`object`&&e[k]===qe,j=e=>!!e&&typeof e==`object`&&e[k]===Je,$e=e=>!!e&&typeof e==`object`&&e[k]===Ye;function M(e){if(e&&typeof e==`object`)switch(e[k]){case O:case Ye:return!0}return!1}function N(e){if(e&&typeof e==`object`)switch(e[k]){case Ge:case O:case Je:case Ye:return!0}return!1}var et=e=>(j(e)||M(e))&&!!e.anchor,P=Symbol(`break visit`),tt=Symbol(`skip children`),nt=Symbol(`remove node`);function rt(e,t){let n=it(t);Ze(e)?F(null,e.contents,n,Object.freeze([e]))===nt&&(e.contents=null):F(null,e,n,Object.freeze([]))}rt.BREAK=P,rt.SKIP=tt,rt.REMOVE=nt;function F(e,t,n,r){let i=at(e,t,n,r);if(N(i)||A(i))return ot(e,r,i),F(e,i,n,r);if(typeof i!=`symbol`){if(M(t)){r=Object.freeze(r.concat(t));for(let e=0;e<t.items.length;++e){let i=F(e,t.items[e],n,r);if(typeof i==`number`)e=i-1;else if(i===P)return P;else i===nt&&(t.items.splice(e,1),--e)}}else if(A(t)){r=Object.freeze(r.concat(t));let e=F(`key`,t.key,n,r);if(e===P)return P;e===nt&&(t.key=null);let i=F(`value`,t.value,n,r);if(i===P)return P;i===nt&&(t.value=null)}}return i}function it(e){return typeof e==`object`&&(e.Collection||e.Node||e.Value)?Object.assign({Alias:e.Node,Map:e.Node,Scalar:e.Node,Seq:e.Node},e.Value&&{Map:e.Value,Scalar:e.Value,Seq:e.Value},e.Collection&&{Map:e.Collection,Seq:e.Collection},e):e}function at(e,t,n,r){if(typeof n==`function`)return n(e,t,r);if(Qe(t))return n.Map?.(e,t,r);if($e(t))return n.Seq?.(e,t,r);if(A(t))return n.Pair?.(e,t,r);if(j(t))return n.Scalar?.(e,t,r);if(Xe(t))return n.Alias?.(e,t,r)}function ot(e,t,n){let r=t[t.length-1];if(M(r))r.items[e]=n;else if(A(r))e===`key`?r.key=n:r.value=n;else if(Ze(r))r.contents=n;else{let e=Xe(r)?`alias`:`scalar`;throw Error(`Cannot replace node with ${e} parent`)}}function st(e){if(/[\x00-\x19\s,[\]{}]/.test(e)){let t=`Anchor must not contain whitespace or control characters: ${JSON.stringify(e)}`;throw Error(t)}return!0}function ct(e,t,n,r){if(r&&typeof r==`object`)if(Array.isArray(r))for(let t=0,n=r.length;t<n;++t){let n=r[t],i=ct(e,r,String(t),n);i===void 0?delete r[t]:i!==n&&(r[t]=i)}else if(r instanceof Map)for(let t of Array.from(r.keys())){let n=r.get(t),i=ct(e,r,t,n);i===void 0?r.delete(t):i!==n&&r.set(t,i)}else if(r instanceof Set)for(let t of Array.from(r)){let n=ct(e,r,t,t);n===void 0?r.delete(t):n!==t&&(r.delete(t),r.add(n))}else for(let[t,n]of Object.entries(r)){let i=ct(e,r,t,n);i===void 0?delete r[t]:i!==n&&(r[t]=i)}return e.call(t,n,r)}function I(e,t,n){if(Array.isArray(e))return e.map((e,t)=>I(e,String(t),n));if(e&&typeof e.toJSON==`function`){if(!n||!et(e))return e.toJSON(t,n);let r={aliasCount:0,count:1,res:void 0};n.anchors.set(e,r),n.onCreate=e=>{r.res=e,delete n.onCreate};let i=e.toJSON(t,n);return n.onCreate&&n.onCreate(i),i}return typeof e==`bigint`&&!n?.keep?Number(e):e}var lt=class{constructor(e){Object.defineProperty(this,k,{value:e})}clone(){let e=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return this.range&&(e.range=this.range.slice()),e}toJS(e,{mapAsMap:t,maxAliasCount:n,onAnchor:r,reviver:i}={}){if(!Ze(e))throw TypeError(`A document argument is required`);let a={anchors:new Map,doc:e,keep:!0,mapAsMap:t===!0,mapKeyWarned:!1,maxAliasCount:typeof n==`number`?n:100},o=I(this,``,a);if(typeof r==`function`)for(let{count:e,res:t}of a.anchors.values())r(t,e);return typeof i==`function`?ct(i,{"":o},``,o):o}},ut=class extends lt{constructor(e){super(Ge),this.source=e,Object.defineProperty(this,"tag",{set(){throw Error(`Alias nodes cannot have tags`)}})}resolve(e,t){if(t?.maxAliasCount===0)throw ReferenceError(`Alias resolution is disabled`);let n;t?.aliasResolveCache?n=t.aliasResolveCache:(n=[],rt(e,{Node:(e,t)=>{(Xe(t)||et(t))&&n.push(t)}}),t&&(t.aliasResolveCache=n));let r;for(let e of n){if(e===this)break;e.anchor===this.source&&(r=e)}return r}toJSON(e,t){if(!t)return{source:this.source};let{anchors:n,doc:r,maxAliasCount:i}=t,a=this.resolve(r,t);if(!a){let e=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw ReferenceError(e)}let o=n.get(a);if(o||=(I(a,null,t),n.get(a)),o?.res===void 0)throw ReferenceError(`This should not happen: Alias anchor was not resolved?`);if(i>=0&&(o.count+=1,o.aliasCount===0&&(o.aliasCount=dt(r,a,n)),o.count*o.aliasCount>i))throw ReferenceError(`Excessive alias count indicates a resource exhaustion attack`);return o.res}toString(e,t,n){let r=`*${this.source}`;if(e){if(st(this.source),e.options.verifyAliasOrder&&!e.anchors.has(this.source)){let e=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw Error(e)}if(e.implicitKey)return`${r} `}return r}};function dt(e,t,n){if(Xe(t)){let r=t.resolve(e),i=n&&r&&n.get(r);return i?i.count*i.aliasCount:0}if(M(t)){let r=0;for(let i of t.items){let t=dt(e,i,n);t>r&&(r=t)}return r}if(A(t)){let r=dt(e,t.key,n),i=dt(e,t.value,n);return Math.max(r,i)}return 1}var ft=e=>!e||typeof e!=`function`&&typeof e!=`object`,L=class extends lt{constructor(e){super(Je),this.value=e}toJSON(e,t){return t?.keep?this.value:I(this.value,e,t)}toString(){return String(this.value)}};L.BLOCK_FOLDED=`BLOCK_FOLDED`,L.BLOCK_LITERAL=`BLOCK_LITERAL`,L.PLAIN=`PLAIN`,L.QUOTE_DOUBLE=`QUOTE_DOUBLE`,L.QUOTE_SINGLE=`QUOTE_SINGLE`;var pt=`tag:yaml.org,2002:`;function mt(e,t,n){if(t){let e=n.filter(e=>e.tag===t),r=e.find(e=>!e.format)??e[0];if(!r)throw Error(`Tag ${t} not found`);return r}return n.find(t=>t.identify?.(e)&&!t.format)}function ht(e,t,n){if(Ze(e)&&(e=e.contents),N(e))return e;if(A(e)){let t=n.schema[O].createNode?.(n.schema,null,n);return t.items.push(e),t}(e instanceof String||e instanceof Number||e instanceof Boolean||typeof BigInt<`u`&&e instanceof BigInt)&&(e=e.valueOf());let{aliasDuplicateObjects:r,onAnchor:i,onTagObj:a,schema:o,sourceObjects:s}=n,c;if(r&&e&&typeof e==`object`){if(c=s.get(e),c)return c.anchor??(c.anchor=i(e)),new ut(c.anchor);c={anchor:null,node:null},s.set(e,c)}t?.startsWith(`!!`)&&(t=pt+t.slice(2));let l=mt(e,t,o.tags);if(!l){if(e&&typeof e.toJSON==`function`&&(e=e.toJSON()),!e||typeof e!=`object`){let t=new L(e);return c&&(c.node=t),t}l=e instanceof Map?o[O]:Symbol.iterator in Object(e)?o[Ye]:o[O]}a&&(a(l),delete n.onTagObj);let u=l?.createNode?l.createNode(n.schema,e,n):typeof l?.nodeClass?.from==`function`?l.nodeClass.from(n.schema,e,n):new L(e);return t?u.tag=t:l.default||(u.tag=l.tag),c&&(c.node=u),u}function gt(e,t,n){let r=n;for(let e=t.length-1;e>=0;--e){let n=t[e];if(typeof n==`number`&&Number.isInteger(n)&&n>=0){let e=[];e[n]=r,r=e}else r=new Map([[n,r]])}return ht(r,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:()=>{throw Error(`This should not happen, please report a bug.`)},schema:e,sourceObjects:new Map})}var _t=e=>e==null||typeof e==`object`&&!!e[Symbol.iterator]().next().done,vt=class extends lt{constructor(e,t){super(e),Object.defineProperty(this,"schema",{value:t,configurable:!0,enumerable:!1,writable:!0})}clone(e){let t=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return e&&(t.schema=e),t.items=t.items.map(t=>N(t)||A(t)?t.clone(e):t),this.range&&(t.range=this.range.slice()),t}addIn(e,t){if(_t(e))this.add(t);else{let[n,...r]=e,i=this.get(n,!0);if(M(i))i.addIn(r,t);else if(i===void 0&&this.schema)this.set(n,gt(this.schema,r,t));else throw Error(`Expected YAML collection at ${n}. Remaining path: ${r}`)}}deleteIn(e){let[t,...n]=e;if(n.length===0)return this.delete(t);let r=this.get(t,!0);if(M(r))return r.deleteIn(n);throw Error(`Expected YAML collection at ${t}. Remaining path: ${n}`)}getIn(e,t){let[n,...r]=e,i=this.get(n,!0);return r.length===0?!t&&j(i)?i.value:i:M(i)?i.getIn(r,t):void 0}hasAllNullValues(e){return this.items.every(t=>{if(!A(t))return!1;let n=t.value;return n==null||e&&j(n)&&n.value==null&&!n.commentBefore&&!n.comment&&!n.tag})}hasIn(e){let[t,...n]=e;if(n.length===0)return this.has(t);let r=this.get(t,!0);return M(r)?r.hasIn(n):!1}setIn(e,t){let[n,...r]=e;if(r.length===0)this.set(n,t);else{let e=this.get(n,!0);if(M(e))e.setIn(r,t);else if(e===void 0&&this.schema)this.set(n,gt(this.schema,r,t));else throw Error(`Expected YAML collection at ${n}. Remaining path: ${r}`)}}},yt=e=>e.replace(/^(?!$)(?: $)?/gm,`#`);function bt(e,t){return/^\n+$/.test(e)?e.substring(1):t?e.replace(/^(?! *$)/gm,t):e}var R=(e,t,n)=>e.endsWith(`
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/oauth-service-D3bhtX04.js","assets/preload-helper-Czpn1I53.js","assets/proxied-fetch-DLOgqk5A.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/base64-DpPqYZJF.js","assets/src-CAWTvdAa.js","assets/runtime-env-Dlaokqg1.js","assets/fetch-body-D2PwksUW.js","assets/runtime-env-E-i2SW1s.js","assets/panel-rpc-B3MSVImO.js","assets/permissions-surface-registry-CilCRwhh.js"])))=>i.map(i=>d[i]);
2
+ import{n as e,t}from"./rolldown-runtime-Dd_uD5pT.js";import{t as n}from"./preload-helper-Czpn1I53.js";import{c as r,d as i,f as a,l as o,r as s,t as c,u as l}from"./bedrock-camp-C8bCNVSq.js";import{t as u}from"./logger-DDBAeTLF.js";import"./src-CAWTvdAa.js";import{o as d,t as f}from"./proxied-fetch-DLOgqk5A.js";import{t as p}from"./secret-topology-CnKyhZKB.js";import{t as m}from"./secrets-bridge-client-Bz8CHwrq.js";import"./tool-ui-DfXu6quJ.js";import"./tool-result-images-D8kQ0hH0.js";import{n as h,o as g,t as _}from"./providers-C7cHbvKF.js";import{n as v,t as y}from"./panel-rpc-B3MSVImO.js";var b={assign:0,create:0,clone:0,discard:0,update:0};function x(e){return Array.isArray(e)}function S(e){return w(e,null)}function C(e){return w(typeof e,`object`)&&!S(e)}function w(e,t){return e===t}function ee(e){if(!C(e))return!1;let t=globalThis.Object.getPrototypeOf(e);return!S(t)&&w(typeof t.constructor,`function`)&&!(w(t.constructor,globalThis.Object)||w(t.constructor.name,`Object`))}function te(e){return w(e,`__proto__`)||w(e,`constructor`)||w(e,`prototype`)}function ne(e,t){return te(t)?Object.prototype.hasOwnProperty.call(e,t):t in e}function re(e){return Object.getOwnPropertyNames(e)}function ie(e){return Object.getOwnPropertySymbols(e)}function T(e){return globalThis.ArrayBuffer.isView(e)}function ae(e){return e instanceof globalThis.RegExp}function oe(e){return e instanceof globalThis.Set}function se(e){return e instanceof globalThis.Map}function ce(e){return e}function le(e){return ne(e,`~kind`)||ne(e,`~unsafe`)}function ue(e){let t={},n=Object.getOwnPropertyDescriptors(e);for(let e of Object.keys(n)){if(te(e))continue;let r=n[e];ne(r,`value`)&&Object.defineProperty(t,e,{...r,value:E(r.value)})}return t}function de(e){let t={};for(let n of re(e))te(n)||(t[n]=E(e[n]));for(let n of ie(e))t[n]=E(e[n]);return t}function fe(e){return ee(e)?ce(e):le(e)?ue(e):de(e)}function pe(e){return e.map(e=>E(e))}function me(e){return e.slice()}function he(e){return new RegExp(e.source,e.flags)}function ge(e){return new Map(E([...e.entries()]))}function _e(e){return new Set(E([...e.values()]))}function E(e){return T(e)?me(e):ae(e)?he(e):se(e)?ge(e):oe(e)?_e(e):x(e)?pe(e):C(e)?fe(e):e}function ve(e){return b.clone+=1,E(e)}var ye={immutableTypes:!1,maxErrors:8,useAcceleration:!0,exactOptionalPropertyTypes:!1,enumerableKind:!1,correctiveParse:!1,unionPrioritySort:!0};function be(){return ye}function xe(e,t){for(let n of Object.keys(t))Object.defineProperty(e,n,{configurable:!0,writable:!0,enumerable:!1,value:t[n]});return e}function Se(e,t){return{...e,...t}}function Ce(e,t,n={}){b.create+=1;let r=be(),i=Se(t,n),a=r.enumerableKind?Se(i,e):xe(i,e);return r.immutableTypes?Object.freeze(a):a}function we(e,t,n){b.update+=1;let r=be(),i=ve(e);for(let e of Object.keys(t))Object.defineProperty(i,e,{configurable:!0,writable:!0,enumerable:r.enumerableKind,value:t[e]});for(let e of Object.keys(n))Object.defineProperty(i,e,{configurable:!0,enumerable:!0,writable:!0,value:n[e]});return i}function Te(e){return C(e)}function Ee(e){return we(e,{"~optional":!0},{})}function De(e,t){return we(Ee(e),{},t)}function Oe(e,t){return Ce({"~kind":`Array`},{type:`array`,items:e},t)}function ke(e,t={}){return De(e,t)}function Ae(e){return ke(e)}function je(e){return Te(e)&&ne(e,`~optional`)}function Me(e){return re(e).filter(t=>!je(e[t]))}function Ne(e,t={}){let n=Me(e);return Ce({"~kind":`Object`},{type:`object`,...n.length>0?{required:n}:{},properties:e},t)}var Pe;(function(e){e[e.Array=0]=`Array`,e[e.BigInt=1]=`BigInt`,e[e.Boolean=2]=`Boolean`,e[e.Date=3]=`Date`,e[e.Constructor=4]=`Constructor`,e[e.Function=5]=`Function`,e[e.Null=6]=`Null`,e[e.Number=7]=`Number`,e[e.Object=8]=`Object`,e[e.RegExp=9]=`RegExp`,e[e.String=10]=`String`,e[e.Symbol=11]=`Symbol`,e[e.TypeArray=12]=`TypeArray`,e[e.Undefined=13]=`Undefined`})(Pe||={}),Array.from({length:256}).map((e,t)=>BigInt(t));var Fe=new Float64Array(1);new DataView(Fe.buffer),new Uint8Array(Fe.buffer),new TextEncoder;var Ie=`-?(?:0|[1-9][0-9]*)`,Le=`-?(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?`;function Re(e){return Ce({"~kind":`Number`},{type:`number`},e)}function D(e){return Ce({"~kind":`String`},{type:`string`},e)}var ze=`^${Ie}$`;`${Le}`;function Be(e,t){return Array.from({length:t-e+1},(t,n)=>String.fromCharCode(e+n))}var Ve=[...Be(97,122),...Be(65,90)],He=[`0`,...Be(49,57)];[...He],[...Ve,...He],[...He],new RegExp(ze);function Ue(e,t){try{return Promise.resolve(t(We))}catch(e){return Promise.reject(e)}}var We={startSpan:Ue,addEvent:()=>{},setAttributes:()=>{},setStatus:()=>{}};Object.freeze(We);var Ge=Symbol.for(`yaml.alias`),Ke=Symbol.for(`yaml.document`),O=Symbol.for(`yaml.map`),qe=Symbol.for(`yaml.pair`),Je=Symbol.for(`yaml.scalar`),Ye=Symbol.for(`yaml.seq`),k=Symbol.for(`yaml.node.type`),Xe=e=>!!e&&typeof e==`object`&&e[k]===Ge,Ze=e=>!!e&&typeof e==`object`&&e[k]===Ke,Qe=e=>!!e&&typeof e==`object`&&e[k]===O,A=e=>!!e&&typeof e==`object`&&e[k]===qe,j=e=>!!e&&typeof e==`object`&&e[k]===Je,$e=e=>!!e&&typeof e==`object`&&e[k]===Ye;function M(e){if(e&&typeof e==`object`)switch(e[k]){case O:case Ye:return!0}return!1}function N(e){if(e&&typeof e==`object`)switch(e[k]){case Ge:case O:case Je:case Ye:return!0}return!1}var et=e=>(j(e)||M(e))&&!!e.anchor,P=Symbol(`break visit`),tt=Symbol(`skip children`),nt=Symbol(`remove node`);function rt(e,t){let n=it(t);Ze(e)?F(null,e.contents,n,Object.freeze([e]))===nt&&(e.contents=null):F(null,e,n,Object.freeze([]))}rt.BREAK=P,rt.SKIP=tt,rt.REMOVE=nt;function F(e,t,n,r){let i=at(e,t,n,r);if(N(i)||A(i))return ot(e,r,i),F(e,i,n,r);if(typeof i!=`symbol`){if(M(t)){r=Object.freeze(r.concat(t));for(let e=0;e<t.items.length;++e){let i=F(e,t.items[e],n,r);if(typeof i==`number`)e=i-1;else if(i===P)return P;else i===nt&&(t.items.splice(e,1),--e)}}else if(A(t)){r=Object.freeze(r.concat(t));let e=F(`key`,t.key,n,r);if(e===P)return P;e===nt&&(t.key=null);let i=F(`value`,t.value,n,r);if(i===P)return P;i===nt&&(t.value=null)}}return i}function it(e){return typeof e==`object`&&(e.Collection||e.Node||e.Value)?Object.assign({Alias:e.Node,Map:e.Node,Scalar:e.Node,Seq:e.Node},e.Value&&{Map:e.Value,Scalar:e.Value,Seq:e.Value},e.Collection&&{Map:e.Collection,Seq:e.Collection},e):e}function at(e,t,n,r){if(typeof n==`function`)return n(e,t,r);if(Qe(t))return n.Map?.(e,t,r);if($e(t))return n.Seq?.(e,t,r);if(A(t))return n.Pair?.(e,t,r);if(j(t))return n.Scalar?.(e,t,r);if(Xe(t))return n.Alias?.(e,t,r)}function ot(e,t,n){let r=t[t.length-1];if(M(r))r.items[e]=n;else if(A(r))e===`key`?r.key=n:r.value=n;else if(Ze(r))r.contents=n;else{let e=Xe(r)?`alias`:`scalar`;throw Error(`Cannot replace node with ${e} parent`)}}function st(e){if(/[\x00-\x19\s,[\]{}]/.test(e)){let t=`Anchor must not contain whitespace or control characters: ${JSON.stringify(e)}`;throw Error(t)}return!0}function ct(e,t,n,r){if(r&&typeof r==`object`)if(Array.isArray(r))for(let t=0,n=r.length;t<n;++t){let n=r[t],i=ct(e,r,String(t),n);i===void 0?delete r[t]:i!==n&&(r[t]=i)}else if(r instanceof Map)for(let t of Array.from(r.keys())){let n=r.get(t),i=ct(e,r,t,n);i===void 0?r.delete(t):i!==n&&r.set(t,i)}else if(r instanceof Set)for(let t of Array.from(r)){let n=ct(e,r,t,t);n===void 0?r.delete(t):n!==t&&(r.delete(t),r.add(n))}else for(let[t,n]of Object.entries(r)){let i=ct(e,r,t,n);i===void 0?delete r[t]:i!==n&&(r[t]=i)}return e.call(t,n,r)}function I(e,t,n){if(Array.isArray(e))return e.map((e,t)=>I(e,String(t),n));if(e&&typeof e.toJSON==`function`){if(!n||!et(e))return e.toJSON(t,n);let r={aliasCount:0,count:1,res:void 0};n.anchors.set(e,r),n.onCreate=e=>{r.res=e,delete n.onCreate};let i=e.toJSON(t,n);return n.onCreate&&n.onCreate(i),i}return typeof e==`bigint`&&!n?.keep?Number(e):e}var lt=class{constructor(e){Object.defineProperty(this,k,{value:e})}clone(){let e=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return this.range&&(e.range=this.range.slice()),e}toJS(e,{mapAsMap:t,maxAliasCount:n,onAnchor:r,reviver:i}={}){if(!Ze(e))throw TypeError(`A document argument is required`);let a={anchors:new Map,doc:e,keep:!0,mapAsMap:t===!0,mapKeyWarned:!1,maxAliasCount:typeof n==`number`?n:100},o=I(this,``,a);if(typeof r==`function`)for(let{count:e,res:t}of a.anchors.values())r(t,e);return typeof i==`function`?ct(i,{"":o},``,o):o}},ut=class extends lt{constructor(e){super(Ge),this.source=e,Object.defineProperty(this,"tag",{set(){throw Error(`Alias nodes cannot have tags`)}})}resolve(e,t){if(t?.maxAliasCount===0)throw ReferenceError(`Alias resolution is disabled`);let n;t?.aliasResolveCache?n=t.aliasResolveCache:(n=[],rt(e,{Node:(e,t)=>{(Xe(t)||et(t))&&n.push(t)}}),t&&(t.aliasResolveCache=n));let r;for(let e of n){if(e===this)break;e.anchor===this.source&&(r=e)}return r}toJSON(e,t){if(!t)return{source:this.source};let{anchors:n,doc:r,maxAliasCount:i}=t,a=this.resolve(r,t);if(!a){let e=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw ReferenceError(e)}let o=n.get(a);if(o||=(I(a,null,t),n.get(a)),o?.res===void 0)throw ReferenceError(`This should not happen: Alias anchor was not resolved?`);if(i>=0&&(o.count+=1,o.aliasCount===0&&(o.aliasCount=dt(r,a,n)),o.count*o.aliasCount>i))throw ReferenceError(`Excessive alias count indicates a resource exhaustion attack`);return o.res}toString(e,t,n){let r=`*${this.source}`;if(e){if(st(this.source),e.options.verifyAliasOrder&&!e.anchors.has(this.source)){let e=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw Error(e)}if(e.implicitKey)return`${r} `}return r}};function dt(e,t,n){if(Xe(t)){let r=t.resolve(e),i=n&&r&&n.get(r);return i?i.count*i.aliasCount:0}if(M(t)){let r=0;for(let i of t.items){let t=dt(e,i,n);t>r&&(r=t)}return r}if(A(t)){let r=dt(e,t.key,n),i=dt(e,t.value,n);return Math.max(r,i)}return 1}var ft=e=>!e||typeof e!=`function`&&typeof e!=`object`,L=class extends lt{constructor(e){super(Je),this.value=e}toJSON(e,t){return t?.keep?this.value:I(this.value,e,t)}toString(){return String(this.value)}};L.BLOCK_FOLDED=`BLOCK_FOLDED`,L.BLOCK_LITERAL=`BLOCK_LITERAL`,L.PLAIN=`PLAIN`,L.QUOTE_DOUBLE=`QUOTE_DOUBLE`,L.QUOTE_SINGLE=`QUOTE_SINGLE`;var pt=`tag:yaml.org,2002:`;function mt(e,t,n){if(t){let e=n.filter(e=>e.tag===t),r=e.find(e=>!e.format)??e[0];if(!r)throw Error(`Tag ${t} not found`);return r}return n.find(t=>t.identify?.(e)&&!t.format)}function ht(e,t,n){if(Ze(e)&&(e=e.contents),N(e))return e;if(A(e)){let t=n.schema[O].createNode?.(n.schema,null,n);return t.items.push(e),t}(e instanceof String||e instanceof Number||e instanceof Boolean||typeof BigInt<`u`&&e instanceof BigInt)&&(e=e.valueOf());let{aliasDuplicateObjects:r,onAnchor:i,onTagObj:a,schema:o,sourceObjects:s}=n,c;if(r&&e&&typeof e==`object`){if(c=s.get(e),c)return c.anchor??(c.anchor=i(e)),new ut(c.anchor);c={anchor:null,node:null},s.set(e,c)}t?.startsWith(`!!`)&&(t=pt+t.slice(2));let l=mt(e,t,o.tags);if(!l){if(e&&typeof e.toJSON==`function`&&(e=e.toJSON()),!e||typeof e!=`object`){let t=new L(e);return c&&(c.node=t),t}l=e instanceof Map?o[O]:Symbol.iterator in Object(e)?o[Ye]:o[O]}a&&(a(l),delete n.onTagObj);let u=l?.createNode?l.createNode(n.schema,e,n):typeof l?.nodeClass?.from==`function`?l.nodeClass.from(n.schema,e,n):new L(e);return t?u.tag=t:l.default||(u.tag=l.tag),c&&(c.node=u),u}function gt(e,t,n){let r=n;for(let e=t.length-1;e>=0;--e){let n=t[e];if(typeof n==`number`&&Number.isInteger(n)&&n>=0){let e=[];e[n]=r,r=e}else r=new Map([[n,r]])}return ht(r,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:()=>{throw Error(`This should not happen, please report a bug.`)},schema:e,sourceObjects:new Map})}var _t=e=>e==null||typeof e==`object`&&!!e[Symbol.iterator]().next().done,vt=class extends lt{constructor(e,t){super(e),Object.defineProperty(this,"schema",{value:t,configurable:!0,enumerable:!1,writable:!0})}clone(e){let t=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return e&&(t.schema=e),t.items=t.items.map(t=>N(t)||A(t)?t.clone(e):t),this.range&&(t.range=this.range.slice()),t}addIn(e,t){if(_t(e))this.add(t);else{let[n,...r]=e,i=this.get(n,!0);if(M(i))i.addIn(r,t);else if(i===void 0&&this.schema)this.set(n,gt(this.schema,r,t));else throw Error(`Expected YAML collection at ${n}. Remaining path: ${r}`)}}deleteIn(e){let[t,...n]=e;if(n.length===0)return this.delete(t);let r=this.get(t,!0);if(M(r))return r.deleteIn(n);throw Error(`Expected YAML collection at ${t}. Remaining path: ${n}`)}getIn(e,t){let[n,...r]=e,i=this.get(n,!0);return r.length===0?!t&&j(i)?i.value:i:M(i)?i.getIn(r,t):void 0}hasAllNullValues(e){return this.items.every(t=>{if(!A(t))return!1;let n=t.value;return n==null||e&&j(n)&&n.value==null&&!n.commentBefore&&!n.comment&&!n.tag})}hasIn(e){let[t,...n]=e;if(n.length===0)return this.has(t);let r=this.get(t,!0);return M(r)?r.hasIn(n):!1}setIn(e,t){let[n,...r]=e;if(r.length===0)this.set(n,t);else{let e=this.get(n,!0);if(M(e))e.setIn(r,t);else if(e===void 0&&this.schema)this.set(n,gt(this.schema,r,t));else throw Error(`Expected YAML collection at ${n}. Remaining path: ${r}`)}}},yt=e=>e.replace(/^(?!$)(?: $)?/gm,`#`);function bt(e,t){return/^\n+$/.test(e)?e.substring(1):t?e.replace(/^(?! *$)/gm,t):e}var R=(e,t,n)=>e.endsWith(`
3
3
  `)?bt(n,t):n.includes(`
4
4
  `)?`
5
5
  `+bt(n,t):(e.endsWith(` `)?``:` `)+n,xt=`flow`,St=`block`,Ct=`quoted`;function wt(e,t,n=`flow`,{indentAtStart:r,lineWidth:i=80,minContentWidth:a=20,onFold:o,onOverflow:s}={}){if(!i||i<0)return e;i<a&&(a=0);let c=Math.max(1+a,1+i-t.length);if(e.length<=c)return e;let l=[],u={},d=i-t.length;typeof r==`number`&&(r>i-Math.max(2,a)?l.push(0):d=i-r);let f,p,m=!1,h=-1,g=-1,_=-1;n===`block`&&(h=Tt(e,h,t.length),h!==-1&&(d=h+c));for(let r;r=e[h+=1];){if(n===`quoted`&&r===`\\`){switch(g=h,e[h+1]){case`x`:h+=3;break;case`u`:h+=5;break;case`U`:h+=9;break;default:h+=1}_=h}if(r===`
@@ -65,4 +65,4 @@ Do NOT continue the conversation. Do NOT answer questions inside the conversatio
65
65
  <conversation>
66
66
  ${e}
67
67
  </conversation>`}async function Bn(e,t,n,r,i,a,s){let c=await o(e,{systemPrompt:n,messages:[{role:`user`,content:[{type:`text`,text:r}],timestamp:Date.now()}]},{maxTokens:i,apiKey:t,headers:a,signal:s});if(c.stopReason===`error`)throw Error(`Compaction call failed: ${c.errorMessage||`Unknown error`}`);return c.content.filter(e=>e.type===`text`).map(e=>e.text).join(`
68
- `).trim()}async function Vn(e){let t=zn(In(e.messages));return Bn(e.model,e.apiKey,t,e.instruction,e.maxTokens,e.headers,e.signal)}var Hn=Rn,Un=`Generate a short title (3 to 6 words) summarizing what this conversation was about. Output ONLY the title text — no quotes, no punctuation other than what belongs in the title, no preamble.`,Wn=`slicc_oauth_extra_domains`;function Gn(e){try{let t=e.getItem(Wn);if(!t)return{};let n=JSON.parse(t);if(typeof n!=`object`||!n||Array.isArray(n))return{};let r={};for(let[e,t]of Object.entries(n)){if(typeof e!=`string`||!Array.isArray(t))continue;let n=t.filter(e=>typeof e==`string`&&e.length>0);n.length>0&&(r[e]=n)}return r}catch{return{}}}function Kn(e,t){try{e.setItem(Wn,JSON.stringify(t))}catch(e){throw Error(`Failed to persist OAuth extras (localStorage quota exceeded?): ${e instanceof Error?e.message:String(e)}`)}}u(`secret-scrub`),u(`tool-adapter`);function qn(e,t){let n={input:0,output:0,cacheRead:0,cacheWrite:0},i=r(e);if(!i)return n;let a;for(let e of t.values()){let t=r(e.id);!t||t.family!==i.family||(!a||t.major>a.major||t.major===a.major&&t.minor>a.minor)&&(a={major:t.major,minor:t.minor,cost:e.cost})}return a?.cost??n}var Jn=e({ACCOUNTS_KEY:()=>G,__test__:()=>ir,addAccount:()=>Sr,applyProviderDefaults:()=>dr,clearAllSettings:()=>Kr,clearApiKey:()=>Vr,clearBaseUrl:()=>Wr,clearSelectedProvider:()=>Rr,exportProviders:()=>Gr,getAccounts:()=>X,getAllAvailableModels:()=>hr,getAllExtraOAuthDomains:()=>yr,getApiKey:()=>zr,getApiKeyForProvider:()=>Mr,getApiVersionForProvider:()=>Pr,getAvailableProviders:()=>ar,getBaseUrl:()=>Hr,getBaseUrlForProvider:()=>Z,getDeploymentForProvider:()=>Nr,getExtraOAuthDomains:()=>gr,getOAuthAccountInfo:()=>lr,getProviderConfig:()=>q,getProviderModels:()=>J,getRawApiKeyForProvider:()=>jr,getSelectedModelId:()=>Q,getSelectedProvider:()=>$,isModelHiddenFromPicker:()=>pr,logoutOAuthAccount:()=>Tr,maskOAuthTokenWithRetry:()=>Er,migrateLegacyAuthOnlySelection:()=>nr,persistOAuthMaskViaServiceWorker:()=>Dr,providerOffersLlmModels:()=>or,removeAccount:()=>wr,resolveCurrentModel:()=>Zr,resolveModelById:()=>Xr,resolveModelByShorthand:()=>Qr,resolveModelIdForScoop:()=>ei,saveOAuthAccount:()=>kr,setApiKey:()=>Br,setBaseUrl:()=>Ur,setExtraOAuthDomains:()=>_r,setExtraOAuthDomainsAsync:()=>vr,setSelectedModelId:()=>Fr,setSelectedProvider:()=>Lr}),Yn=l,Xn=i,G=`slicc_accounts`,K=`selected-model`,Zn=[`slicc_provider`,`slicc_api_key`,`slicc_base_url`,`anthropic_api_key`,`api_provider`,`azure_resource`,`bedrock_region`],Qn=new Set([`github`]);function $n(e){let t;try{t=a()}catch{return!1}return t.includes(e)&&!g(e)}var er=!1;function tr(){if(!er){er=!0;for(let e of Zn)try{localStorage.removeItem(e)}catch{}nr()}}function nr(){try{let e=localStorage.getItem(K);if(e){let t=e.indexOf(`:`);if(t>0){let n=e.slice(0,t);(Qn.has(n)||$n(n))&&localStorage.removeItem(K)}}}catch{}try{let e=localStorage.getItem(G);if(!e)return;let t=JSON.parse(e);if(!Array.isArray(t))return;let n=t.filter(e=>!(typeof e==`object`&&e&&typeof e.providerId==`string`&&$n(e.providerId)));n.length!==t.length&&localStorage.setItem(G,JSON.stringify(n))}catch{}}function rr(){er=!1}var ir={_resetLegacyCleanup:rr};function ar(){let e=a().filter(g),t=h();return[...new Set([...e,...t])].filter(e=>!_(e)?.hidden)}function or(e){try{if(J(e).length>0)return!0}catch{}try{if(i(e).length>0)return!0}catch{}let t=_(e);return!!(t?.modelOverrides&&Object.keys(t.modelOverrides).length>0)}function sr(e,t){try{if(J(e).some(e=>e.id===t))return!0}catch{}try{if(i(e).some(e=>e.id===t))return!0}catch{}let n=_(e);return!!(n?.modelOverrides&&Object.hasOwn(n.modelOverrides,t))}function q(e){return _(e)||{id:e,name:e.split(`-`).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `),description:`${e} provider`,requiresApiKey:!0,requiresBaseUrl:!1}}function cr(e,t){t.context_window!==void 0&&(e.contextWindow=t.context_window),t.max_tokens!==void 0&&(e.maxTokens=t.max_tokens),t.reasoning!==void 0&&(e.reasoning=t.reasoning),t.input!==void 0&&(e.input=t.input),t.cost!==void 0&&(e.cost=t.cost,e.inputCost=t.cost.input,e.outputCost=t.cost.output,e.cacheReadCost=t.cost.cacheRead,e.cacheWriteCost=t.cost.cacheWrite),t.compat!==void 0&&(e.compat={...e.compat??{},...t.compat}),t.thinkingLevelMap!==void 0&&(e.thinkingLevelMap={...e.thinkingLevelMap??{},...t.thinkingLevelMap})}function J(e){try{if(e===`bedrock-camp`){let e=c(Z(`bedrock-camp`));return Xn(`amazon-bedrock`).filter(t=>s(t,e)).map(e=>({...e,api:`bedrock-camp-converse`,provider:`bedrock-camp`}))}let t=q(e);if(t.getModelIds){let n;try{n=t.getModelIds()}catch(t){return Y.error(`Provider getModelIds callback failed`,{providerId:e,error:t instanceof Error?t.message:String(t)}),[]}let r=new Map;for(let e of a())try{for(let t of Xn(e))r.set(t.id,t)}catch{}return n.map(n=>{let i=n.api===`openai`?`openai`:`anthropic`,a=`${e}-${i}`,o=r.get(n.id),s;if(o)s={...o,api:a,provider:e};else if(s=Jr(e,n.id,``,a),n.name&&(s.name=n.name),i===`anthropic`){let e=qn(n.id,r);s.cost=e,s.inputCost=e.input,s.outputCost=e.output,s.cacheReadCost=e.cacheRead,s.cacheWriteCost=e.cacheWrite}let c=t.modelOverrides?.[n.id];return c&&cr(s,c),cr(s,n),s})}if(t.isOAuth){let n=Xn(`anthropic`),r=`${e}-anthropic`;return n.map(n=>{let i={...n,api:r,provider:e},a=t.modelOverrides?.[n.id];return a&&cr(i,a),i})}return Xn(e===`azure-ai-foundry`?`anthropic`:e)}catch(t){return Y.error(`Failed to load models`,{providerId:e,error:t instanceof Error?t.message:String(t)}),[]}}function lr(e){let t=X().find(t=>t.providerId===e);if(!t?.accessToken)return null;let n=!!t.tokenExpiresAt&&Date.now()>t.tokenExpiresAt-6e4;return{token:t.accessToken,maskedValue:t.maskedValue,expiresAt:t.tokenExpiresAt,userName:t.userName,userAvatar:t.userAvatar,scopes:t.scopes,expired:n}}var ur=Object.assign({})[`/packages/webapp/providers.json`]??[],Y=u(`provider-settings`);function dr(e=ur){if(e.length===0||X().length>0)return;let t=new Set(ar());for(let n of e)if(!(!n.providerId||!n.apiKey)){if(!t.has(n.providerId)){Y.warn(`Unknown provider "${n.providerId}" in providers.json — skipping`);continue}Sr(n.providerId,n.apiKey,n.baseUrl)}let n=e.find(e=>e.providerId&&e.apiKey&&t.has(e.providerId));n?.model&&!localStorage.getItem(K)&&localStorage.setItem(K,`${n.providerId}:${n.model}`)}var fr=[/haiku/i];function pr(e){return fr.some(t=>t.test(e))}function mr(e){return e.filter(e=>!pr(e.id))}function hr(){let e=X();if(e.length===0)return[];let t=new Map;for(let n of e){if(t.has(n.providerId))continue;let e=q(n.providerId);if(e.hidden||$n(n.providerId))continue;let r=mr(J(n.providerId));if(r.length===0)continue;let i={providerId:n.providerId,providerName:e.name,models:r};t.set(n.providerId,i)}return[...t.values()]}function X(){tr();let e=localStorage.getItem(G);if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`object`&&!!e&&typeof e.providerId==`string`&&typeof e.apiKey==`string`):[]}catch{return[]}}function gr(e){return Gn(localStorage)[e]??[]}function _r(e,t){let n=Gn(localStorage),r=t.map(e=>e.trim()).filter(e=>e.length>0);r.length===0?delete n[e]:n[e]=r,Kn(localStorage,n)}async function vr(e,t){if(v()){_r(e,t);return}let n=y();if(!n)throw Error(`setExtraOAuthDomainsAsync: no DOM and no panel-rpc client — cannot persist to page localStorage`);let{storeAfter:r}=await n.call(`oauth-extras-set`,{providerId:e,domains:t});try{Kn(localStorage,r)}catch(t){Y.warn(`worker-shim mirror failed after successful page write — reload to refresh`,{providerId:e,error:t instanceof Error?t.message:String(t)})}}function yr(){return Gn(localStorage)}function br(e){localStorage.setItem(G,JSON.stringify(e))}async function xr(e){if(v()){br(e);return}let t=y();if(!t)throw Error(`saveAccountsAsync: no DOM and no panel-rpc client — cannot persist to page localStorage`);let n=JSON.stringify(e),{storedJson:r}=await t.call(`save-oauth-accounts`,{accountsJson:n});try{localStorage.setItem(G,r)}catch(e){Y.warn(`worker-shim mirror failed after successful page write — reload to refresh`,{error:e instanceof Error?e.message:String(e)})}}function Sr(e,t,n,r,i){let a=X().filter(t=>t.providerId!==e),o={providerId:e,apiKey:t};n&&(o.baseUrl=n),r&&(o.deployment=r),i&&(o.apiVersion=i),a.push(o),br(a)}async function Cr(e){let t=p();try{if(t===`extension-direct`){let t=await new Promise(t=>{chrome.runtime.sendMessage({type:`secrets.delete`,name:`oauth.${e}.token`},n=>{chrome.runtime.lastError&&Y.error(`SW secrets.delete transport failed`,{providerId:e,error:chrome.runtime.lastError.message}),t(n??{})})});t.error&&Y.error(`SW secrets.delete returned error`,{providerId:e,error:t.error})}else if(t===`extension-delegate`){let t=await m(`secrets.delete`,{name:`oauth.${e}.token`});t?.error&&Y.error(`Bridge secrets.delete returned error`,{providerId:e,error:t.error})}else if(t!==`connect`){let t=await fetch(d(`/api/secrets/oauth/${e}`),{method:`DELETE`,headers:f()});!t.ok&&t.status!==404&&Y.warn(`OAuth replica DELETE non-ok`,{providerId:e,status:t.status})}}catch(n){Y.error(`OAuth replica removal failed`,{providerId:e,topology:t,error:n instanceof Error?n.message:String(n)})}}async function wr(e){let t=X().find(t=>t.providerId===e),n=q(e);t&&n?.isOAuth&&await Tr(e),await Cr(e),await xr(X().filter(t=>t.providerId!==e));let r=localStorage.getItem(K)??``,i=r.indexOf(`:`);i>0&&r.slice(0,i)===e&&localStorage.removeItem(K)}async function Tr(e){let t=X().find(t=>t.providerId===e);if(!t)return;let r=q(e);if(r?.isOAuth){if(r.onOAuthLogout)try{await r.onOAuthLogout()}catch(t){Y.warn(`onOAuthLogout failed`,{providerId:e,error:t instanceof Error?t.message:String(t)})}if(r.getOAuthLogoutUrl){let i=r.getOAuthLogoutUrl(t);if(i){let{openIdpLogoutUrl:t}=await n(async()=>{let{openIdpLogoutUrl:e}=await import(`./oauth-service-Dmnx-pbE.js`);return{openIdpLogoutUrl:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9]));await t(i).catch(t=>{Y.warn(`IdP logout popup failed`,{providerId:e,error:t instanceof Error?t.message:String(t)})})}}await xr(X().map(t=>t.providerId===e?{providerId:t.providerId,apiKey:``,baseUrl:t.baseUrl,userName:t.userName,userAvatar:t.userAvatar,loggedOut:!0}:t)),await Cr(e)}}async function Er(e,t={}){let n=Math.max(1,t.attempts??3),r=t.delayMs??150,i=t.sleep??(e=>new Promise(t=>setTimeout(t,e))),a;for(let t=0;t<n;t++){let o=await e();if(o.maskedValue)return{maskedValue:o.maskedValue};o.error&&(a=o.error),t<n-1&&await i(r)}return{lastError:a}}async function Dr(e,t,n){let r={providerId:e.providerId,accessToken:e.accessToken,domains:e.domains.join(`,`)},{maskedValue:i,lastError:a}=await Er(()=>t.sendMaskRequest(r),n);if(!i){Y.error(`OAuth mask give-up: no masked value after retries`,{providerId:e.providerId,reason:a??`no error reported (cold SW or empty reply)`});return}let o=t.getAccounts(),s=o.find(t=>t.providerId===e.providerId);s&&(s.maskedValue=i,await t.saveAccounts(o))}function Or(e,t){if(e.accessToken)return`scopes`in e?e.scopes:t?.scopes}async function kr(e){let t=X().find(t=>t.providerId===e.providerId),n=X().filter(t=>t.providerId!==e.providerId);n.push({providerId:e.providerId,apiKey:``,accessToken:e.accessToken,refreshToken:e.refreshToken,tokenExpiresAt:e.tokenExpiresAt,userName:e.userName,userAvatar:e.userAvatar,baseUrl:e.baseUrl??t?.baseUrl,scopes:Or(e,t)}),await xr(n);let r=q(e.providerId)?.oauthTokenDomains??[],i=gr(e.providerId),a=new Set,o=[];for(let e of[...r,...i]){let t=e.toLowerCase();a.has(t)||(a.add(t),o.push(e))}if(o.length===0)return;let s=p();try{if(s===`extension-direct`)await Dr({providerId:e.providerId,accessToken:e.accessToken,domains:o},{sendMaskRequest:t=>new Promise(n=>{chrome.runtime.sendMessage({type:`secrets.mask-oauth-token`,...t},t=>{chrome.runtime.lastError&&Y.error(`SW mask-oauth-token transport failed`,{providerId:e.providerId,error:chrome.runtime.lastError.message});let r=typeof t==`object`&&t?t:void 0;r?.error&&Y.warn(`SW mask-oauth-token returned error`,{providerId:e.providerId,error:r.error}),n(r??{})})}),getAccounts:X,saveAccounts:xr});else if(s===`extension-delegate`)await Dr({providerId:e.providerId,accessToken:e.accessToken,domains:o},{sendMaskRequest:t=>m(`secrets.mask-oauth-token`,t).then(t=>(t?.error&&Y.warn(`Bridge mask-oauth-token returned error`,{providerId:e.providerId,error:t.error}),t??{})).catch(t=>(Y.error(`Bridge mask-oauth-token transport failed`,{providerId:e.providerId,error:t instanceof Error?t.message:String(t)}),{})),getAccounts:X,saveAccounts:xr});else if(s!==`connect`){let t=await fetch(d(`/api/secrets/oauth-update`),{method:`POST`,headers:f({"Content-Type":`application/json`}),body:JSON.stringify({providerId:e.providerId,accessToken:e.accessToken,domains:o})});if(t.ok){let n=await t.json();if(typeof n.maskedValue==`string`){let t=X(),r=t.find(t=>t.providerId===e.providerId);r&&(r.maskedValue=n.maskedValue,await xr(t))}else Y.warn(`OAuth replica POST ok but missing maskedValue`,{providerId:e.providerId})}else Y.warn(`OAuth replica POST non-ok`,{providerId:e.providerId,status:t.status})}}catch(t){Y.error(`OAuth replica sync failed`,{providerId:e.providerId,topology:s,error:t instanceof Error?t.message:String(t)})}}var Ar=`local`;function jr(e){let t=X().find(t=>t.providerId===e);return t&&(t.accessToken||t.apiKey)||null}function Mr(e){let t=X().find(t=>t.providerId===e);return t?t.accessToken||t.apiKey||(q(e).optionalApiKey?Ar:null):null}function Z(e){return X().find(t=>t.providerId===e)?.baseUrl??null}function Nr(e){return X().find(t=>t.providerId===e)?.deployment??null}function Pr(e){return X().find(t=>t.providerId===e)?.apiVersion??null}function Q(){let e=localStorage.getItem(K)||``,t=e.indexOf(`:`);return t>=0?e.slice(t+1):e}function Fr(e){let t=e.indexOf(`:`);if(t>0){let n=e.slice(0,t),r=new Set([...h(),...ar()]),i=n.includes(`.`);if(r.has(n)||!i){localStorage.setItem(K,e);return}}let n=$();localStorage.setItem(K,`${n}:${e}`)}function Ir(){return localStorage.getItem(K)||``}function $(){let e=Ir(),t=e.indexOf(`:`);if(t>0)return e.slice(0,t);let n=X(),r=Q();if(r){let e=n.find(e=>or(e.providerId)&&sr(e.providerId,r));if(e)return e.providerId}let i=n.find(e=>or(e.providerId));return i?i.providerId:n.length>0?n[0].providerId:`anthropic`}function Lr(e){let t=Q();localStorage.setItem(K,`${e}:${t}`)}function Rr(){let e=Q();localStorage.setItem(K,e)}function zr(){return Mr($())}function Br(e){let t=$();Sr(t,e,Z(t)??void 0)}async function Vr(){await wr($())}function Hr(){return Z($())}function Ur(e){let t=$(),n=jr(t);n&&Sr(t,n,e||void 0)}function Wr(){let e=$(),t=jr(e);t&&Sr(e,t)}function Gr(){let e=X(),t=$(),n=Q();return e.map(e=>{let r={providerId:e.providerId,apiKey:e.apiKey};return e.baseUrl&&(r.baseUrl=e.baseUrl),e.providerId===t&&n&&(r.model=n),r})}async function Kr(){let e=X();await Promise.allSettled(e.map(e=>wr(e.providerId))),localStorage.removeItem(G),localStorage.removeItem(K);for(let e of Zn)localStorage.removeItem(e)}function qr(e){return/^(?:gpt[-.]?|o[0-9]|chatgpt)/i.test(e)?`openai`:`anthropic`}function Jr(e,t,n,r){return{id:t,name:t,provider:e,api:r??`${e}-${qr(t)}`,baseUrl:n??``,contextWindow:2e5,maxTokens:16384,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},reasoning:!0}}function Yr(e,t){return t.isOAuth||e===`azure-ai-foundry`?`anthropic`:e===`bedrock-camp`?`amazon-bedrock`:e}function Xr(e){if(!e)return Zr();let t=$(),n=Z(t),r=q(t);try{let i=Yn(Yr(t,r),e);if(!i?.id)throw Error(`Model ${e} not found`);let a=i;return r.isOAuth?a=J(t).find(t=>t.id===e)||{...a,api:`${t}-anthropic`,provider:t}:t===`bedrock-camp`&&(a={...a,api:`bedrock-camp-converse`,provider:`bedrock-camp`}),n&&(a={...a,baseUrl:n}),a}catch(i){if(Y.debug(`resolveModelById: pi-ai lookup miss, using provider fallback`,{providerId:t,modelId:e,error:i instanceof Error?i.message:String(i)}),r.isOAuth){let r=J(t).find(t=>t.id===e);return r?n?{...r,baseUrl:n}:r:Jr(t,e,n)}return Zr()}}function Zr(){let e=$(),t=Q(),n=Z(e),r=J(e),i=q(e),a=i.defaultModelId?r.find(e=>e.id.toLowerCase().includes(i.defaultModelId.toLowerCase()))?.id:void 0,o=t||a||r[0]?.id||`claude-sonnet-4-6`;try{let t=Yr(e,i),a=Yn(t,o);if(!a?.id)throw Error(`Model ${o} not found in ${t} registry`);let s=a;return i.isOAuth?s=r.find(e=>e.id===o)||{...s,api:`${e}-anthropic`,provider:e}:e===`bedrock-camp`&&(s={...s,api:`bedrock-camp-converse`,provider:`bedrock-camp`}),n&&(s={...s,baseUrl:n}),s}catch(t){Y.debug(`resolveCurrentModel: pi-ai lookup miss, using provider fallback`,{providerId:e,effectiveModelId:o,error:t instanceof Error?t.message:String(t)});let a=r.find(e=>e.id===o);return a?n?{...a,baseUrl:n}:a:i.isOAuth?Jr(e,o,n):Yn(`anthropic`,`claude-sonnet-4-0`)}}function Qr(e){let t=e.toLowerCase();if(!t)return null;let n=null;try{n=$()}catch{}if(n!==null){let e=$r(t,[n]);if(e!==null)return e}return $r(t,X().map(e=>e.providerId))}function $r(e,t){let n=null,r=-1;for(let i of t)for(let t of J(i)){let i=t.id.toLowerCase(),a=(t.name??``).toLowerCase();if(!i.includes(e)&&!a.includes(e))continue;let o=t.contextWindow??0;(o>r||o===r&&ti(t.id,n??``)>0)&&(r=o,n=t.id)}return n}function ei(e){if(!e)return null;let t=[e],n=Qr(e);n!==null&&n!==e&&t.push(n);let r=[];try{r=J($())}catch{}for(let n of t)if(!(r.length>0&&!r.some(e=>e.id===n)))try{if(Xr(n).id===n)return n}catch(t){Y.debug(`resolveModelIdForScoop: candidate did not resolve`,{input:e,candidate:n,error:t instanceof Error?t.message:String(t)})}return null}function ti(e,t){let n=e.match(/\d+/g)?.map(Number)??[],r=t.match(/\d+/g)?.map(Number)??[],i=Math.max(n.length,r.length);for(let e=0;e<i;e++){let t=(n[e]??0)-(r[e]??0);if(t!==0)return t}return 0}export{Er as A,Br as B,q as C,$ as D,Q as E,Zr as F,Lr as G,_r as H,Xr as I,Un as J,qn as K,Qr as L,Dr as M,or as N,pr as O,wr as P,ei as R,lr as S,jr as T,vr as U,Ur as V,Fr as W,Vn as Y,ar as _,dr as a,Nr as b,Wr as c,X as d,hr as f,Pr as g,Mr as h,Sr as i,nr as j,Tr as k,Rr as l,zr as m,ir as n,Kr as o,yr as p,Hn as q,Jn as r,Vr as s,G as t,Gr as u,Hr as v,J as w,gr as x,Z as y,kr as z};
68
+ `).trim()}async function Vn(e){let t=zn(In(e.messages));return Bn(e.model,e.apiKey,t,e.instruction,e.maxTokens,e.headers,e.signal)}var Hn=Rn,Un=`Generate a short title (3 to 6 words) summarizing what this conversation was about. Output ONLY the title text — no quotes, no punctuation other than what belongs in the title, no preamble.`,Wn=`slicc_oauth_extra_domains`;function Gn(e){try{let t=e.getItem(Wn);if(!t)return{};let n=JSON.parse(t);if(typeof n!=`object`||!n||Array.isArray(n))return{};let r={};for(let[e,t]of Object.entries(n)){if(typeof e!=`string`||!Array.isArray(t))continue;let n=t.filter(e=>typeof e==`string`&&e.length>0);n.length>0&&(r[e]=n)}return r}catch{return{}}}function Kn(e,t){try{e.setItem(Wn,JSON.stringify(t))}catch(e){throw Error(`Failed to persist OAuth extras (localStorage quota exceeded?): ${e instanceof Error?e.message:String(e)}`)}}u(`secret-scrub`),u(`tool-adapter`);function qn(e,t){let n={input:0,output:0,cacheRead:0,cacheWrite:0},i=r(e);if(!i)return n;let a;for(let e of t.values()){let t=r(e.id);!t||t.family!==i.family||(!a||t.major>a.major||t.major===a.major&&t.minor>a.minor)&&(a={major:t.major,minor:t.minor,cost:e.cost})}return a?.cost??n}var Jn=e({ACCOUNTS_KEY:()=>G,__test__:()=>ir,addAccount:()=>Sr,applyProviderDefaults:()=>dr,clearAllSettings:()=>Kr,clearApiKey:()=>Vr,clearBaseUrl:()=>Wr,clearSelectedProvider:()=>Rr,exportProviders:()=>Gr,getAccounts:()=>X,getAllAvailableModels:()=>hr,getAllExtraOAuthDomains:()=>yr,getApiKey:()=>zr,getApiKeyForProvider:()=>Mr,getApiVersionForProvider:()=>Pr,getAvailableProviders:()=>ar,getBaseUrl:()=>Hr,getBaseUrlForProvider:()=>Z,getDeploymentForProvider:()=>Nr,getExtraOAuthDomains:()=>gr,getOAuthAccountInfo:()=>lr,getProviderConfig:()=>q,getProviderModels:()=>J,getRawApiKeyForProvider:()=>jr,getSelectedModelId:()=>Q,getSelectedProvider:()=>$,isModelHiddenFromPicker:()=>pr,logoutOAuthAccount:()=>Tr,maskOAuthTokenWithRetry:()=>Er,migrateLegacyAuthOnlySelection:()=>nr,persistOAuthMaskViaServiceWorker:()=>Dr,providerOffersLlmModels:()=>or,removeAccount:()=>wr,resolveCurrentModel:()=>Zr,resolveModelById:()=>Xr,resolveModelByShorthand:()=>Qr,resolveModelIdForScoop:()=>ei,saveOAuthAccount:()=>kr,setApiKey:()=>Br,setBaseUrl:()=>Ur,setExtraOAuthDomains:()=>_r,setExtraOAuthDomainsAsync:()=>vr,setSelectedModelId:()=>Fr,setSelectedProvider:()=>Lr}),Yn=l,Xn=i,G=`slicc_accounts`,K=`selected-model`,Zn=[`slicc_provider`,`slicc_api_key`,`slicc_base_url`,`anthropic_api_key`,`api_provider`,`azure_resource`,`bedrock_region`],Qn=new Set([`github`]);function $n(e){let t;try{t=a()}catch{return!1}return t.includes(e)&&!g(e)}var er=!1;function tr(){if(!er){er=!0;for(let e of Zn)try{localStorage.removeItem(e)}catch{}nr()}}function nr(){try{let e=localStorage.getItem(K);if(e){let t=e.indexOf(`:`);if(t>0){let n=e.slice(0,t);(Qn.has(n)||$n(n))&&localStorage.removeItem(K)}}}catch{}try{let e=localStorage.getItem(G);if(!e)return;let t=JSON.parse(e);if(!Array.isArray(t))return;let n=t.filter(e=>!(typeof e==`object`&&e&&typeof e.providerId==`string`&&$n(e.providerId)));n.length!==t.length&&localStorage.setItem(G,JSON.stringify(n))}catch{}}function rr(){er=!1}var ir={_resetLegacyCleanup:rr};function ar(){let e=a().filter(g),t=h();return[...new Set([...e,...t])].filter(e=>!_(e)?.hidden)}function or(e){try{if(J(e).length>0)return!0}catch{}try{if(i(e).length>0)return!0}catch{}let t=_(e);return!!(t?.modelOverrides&&Object.keys(t.modelOverrides).length>0)}function sr(e,t){try{if(J(e).some(e=>e.id===t))return!0}catch{}try{if(i(e).some(e=>e.id===t))return!0}catch{}let n=_(e);return!!(n?.modelOverrides&&Object.hasOwn(n.modelOverrides,t))}function q(e){return _(e)||{id:e,name:e.split(`-`).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `),description:`${e} provider`,requiresApiKey:!0,requiresBaseUrl:!1}}function cr(e,t){t.context_window!==void 0&&(e.contextWindow=t.context_window),t.max_tokens!==void 0&&(e.maxTokens=t.max_tokens),t.reasoning!==void 0&&(e.reasoning=t.reasoning),t.input!==void 0&&(e.input=t.input),t.cost!==void 0&&(e.cost=t.cost,e.inputCost=t.cost.input,e.outputCost=t.cost.output,e.cacheReadCost=t.cost.cacheRead,e.cacheWriteCost=t.cost.cacheWrite),t.compat!==void 0&&(e.compat={...e.compat??{},...t.compat}),t.thinkingLevelMap!==void 0&&(e.thinkingLevelMap={...e.thinkingLevelMap??{},...t.thinkingLevelMap})}function J(e){try{if(e===`bedrock-camp`){let e=c(Z(`bedrock-camp`));return Xn(`amazon-bedrock`).filter(t=>s(t,e)).map(e=>({...e,api:`bedrock-camp-converse`,provider:`bedrock-camp`}))}let t=q(e);if(t.getModelIds){let n;try{n=t.getModelIds()}catch(t){return Y.error(`Provider getModelIds callback failed`,{providerId:e,error:t instanceof Error?t.message:String(t)}),[]}let r=new Map;for(let e of a())try{for(let t of Xn(e))r.set(t.id,t)}catch{}return n.map(n=>{let i=n.api===`openai`?`openai`:`anthropic`,a=`${e}-${i}`,o=r.get(n.id),s;if(o)s={...o,api:a,provider:e};else if(s=Jr(e,n.id,``,a),n.name&&(s.name=n.name),i===`anthropic`){let e=qn(n.id,r);s.cost=e,s.inputCost=e.input,s.outputCost=e.output,s.cacheReadCost=e.cacheRead,s.cacheWriteCost=e.cacheWrite}let c=t.modelOverrides?.[n.id];return c&&cr(s,c),cr(s,n),s})}if(t.isOAuth){let n=Xn(`anthropic`),r=`${e}-anthropic`;return n.map(n=>{let i={...n,api:r,provider:e},a=t.modelOverrides?.[n.id];return a&&cr(i,a),i})}return Xn(e===`azure-ai-foundry`?`anthropic`:e)}catch(t){return Y.error(`Failed to load models`,{providerId:e,error:t instanceof Error?t.message:String(t)}),[]}}function lr(e){let t=X().find(t=>t.providerId===e);if(!t?.accessToken)return null;let n=!!t.tokenExpiresAt&&Date.now()>t.tokenExpiresAt-6e4;return{token:t.accessToken,maskedValue:t.maskedValue,expiresAt:t.tokenExpiresAt,userName:t.userName,userAvatar:t.userAvatar,scopes:t.scopes,expired:n}}var ur=Object.assign({})[`/packages/webapp/providers.json`]??[],Y=u(`provider-settings`);function dr(e=ur){if(e.length===0||X().length>0)return;let t=new Set(ar());for(let n of e)if(!(!n.providerId||!n.apiKey)){if(!t.has(n.providerId)){Y.warn(`Unknown provider "${n.providerId}" in providers.json — skipping`);continue}Sr(n.providerId,n.apiKey,n.baseUrl)}let n=e.find(e=>e.providerId&&e.apiKey&&t.has(e.providerId));n?.model&&!localStorage.getItem(K)&&localStorage.setItem(K,`${n.providerId}:${n.model}`)}var fr=[/haiku/i];function pr(e){return fr.some(t=>t.test(e))}function mr(e){return e.filter(e=>!pr(e.id))}function hr(){let e=X();if(e.length===0)return[];let t=new Map;for(let n of e){if(t.has(n.providerId))continue;let e=q(n.providerId);if(e.hidden||$n(n.providerId))continue;let r=mr(J(n.providerId));if(r.length===0)continue;let i={providerId:n.providerId,providerName:e.name,models:r};t.set(n.providerId,i)}return[...t.values()]}function X(){tr();let e=localStorage.getItem(G);if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`object`&&!!e&&typeof e.providerId==`string`&&typeof e.apiKey==`string`):[]}catch{return[]}}function gr(e){return Gn(localStorage)[e]??[]}function _r(e,t){let n=Gn(localStorage),r=t.map(e=>e.trim()).filter(e=>e.length>0);r.length===0?delete n[e]:n[e]=r,Kn(localStorage,n)}async function vr(e,t){if(v()){_r(e,t);return}let n=y();if(!n)throw Error(`setExtraOAuthDomainsAsync: no DOM and no panel-rpc client — cannot persist to page localStorage`);let{storeAfter:r}=await n.call(`oauth-extras-set`,{providerId:e,domains:t});try{Kn(localStorage,r)}catch(t){Y.warn(`worker-shim mirror failed after successful page write — reload to refresh`,{providerId:e,error:t instanceof Error?t.message:String(t)})}}function yr(){return Gn(localStorage)}function br(e){localStorage.setItem(G,JSON.stringify(e))}async function xr(e){if(v()){br(e);return}let t=y();if(!t)throw Error(`saveAccountsAsync: no DOM and no panel-rpc client — cannot persist to page localStorage`);let n=JSON.stringify(e),{storedJson:r}=await t.call(`save-oauth-accounts`,{accountsJson:n});try{localStorage.setItem(G,r)}catch(e){Y.warn(`worker-shim mirror failed after successful page write — reload to refresh`,{error:e instanceof Error?e.message:String(e)})}}function Sr(e,t,n,r,i){let a=X().filter(t=>t.providerId!==e),o={providerId:e,apiKey:t};n&&(o.baseUrl=n),r&&(o.deployment=r),i&&(o.apiVersion=i),a.push(o),br(a)}async function Cr(e){let t=p();try{if(t===`extension-direct`){let t=await new Promise(t=>{chrome.runtime.sendMessage({type:`secrets.delete`,name:`oauth.${e}.token`},n=>{chrome.runtime.lastError&&Y.error(`SW secrets.delete transport failed`,{providerId:e,error:chrome.runtime.lastError.message}),t(n??{})})});t.error&&Y.error(`SW secrets.delete returned error`,{providerId:e,error:t.error})}else if(t===`extension-delegate`){let t=await m(`secrets.delete`,{name:`oauth.${e}.token`});t?.error&&Y.error(`Bridge secrets.delete returned error`,{providerId:e,error:t.error})}else if(t!==`connect`){let t=await fetch(d(`/api/secrets/oauth/${e}`),{method:`DELETE`,headers:f()});!t.ok&&t.status!==404&&Y.warn(`OAuth replica DELETE non-ok`,{providerId:e,status:t.status})}}catch(n){Y.error(`OAuth replica removal failed`,{providerId:e,topology:t,error:n instanceof Error?n.message:String(n)})}}async function wr(e){let t=X().find(t=>t.providerId===e),n=q(e);t&&n?.isOAuth&&await Tr(e),await Cr(e),await xr(X().filter(t=>t.providerId!==e));let r=localStorage.getItem(K)??``,i=r.indexOf(`:`);i>0&&r.slice(0,i)===e&&localStorage.removeItem(K)}async function Tr(e){let t=X().find(t=>t.providerId===e);if(!t)return;let r=q(e);if(r?.isOAuth){if(r.onOAuthLogout)try{await r.onOAuthLogout()}catch(t){Y.warn(`onOAuthLogout failed`,{providerId:e,error:t instanceof Error?t.message:String(t)})}if(r.getOAuthLogoutUrl){let i=r.getOAuthLogoutUrl(t);if(i){let{openIdpLogoutUrl:t}=await n(async()=>{let{openIdpLogoutUrl:e}=await import(`./oauth-service-D3bhtX04.js`);return{openIdpLogoutUrl:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10]));await t(i).catch(t=>{Y.warn(`IdP logout popup failed`,{providerId:e,error:t instanceof Error?t.message:String(t)})})}}await xr(X().map(t=>t.providerId===e?{providerId:t.providerId,apiKey:``,baseUrl:t.baseUrl,userName:t.userName,userAvatar:t.userAvatar,loggedOut:!0}:t)),await Cr(e)}}async function Er(e,t={}){let n=Math.max(1,t.attempts??3),r=t.delayMs??150,i=t.sleep??(e=>new Promise(t=>setTimeout(t,e))),a;for(let t=0;t<n;t++){let o=await e();if(o.maskedValue)return{maskedValue:o.maskedValue};o.error&&(a=o.error),t<n-1&&await i(r)}return{lastError:a}}async function Dr(e,t,n){let r={providerId:e.providerId,accessToken:e.accessToken,domains:e.domains.join(`,`)},{maskedValue:i,lastError:a}=await Er(()=>t.sendMaskRequest(r),n);if(!i){Y.error(`OAuth mask give-up: no masked value after retries`,{providerId:e.providerId,reason:a??`no error reported (cold SW or empty reply)`});return}let o=t.getAccounts(),s=o.find(t=>t.providerId===e.providerId);s&&(s.maskedValue=i,await t.saveAccounts(o))}function Or(e,t){if(e.accessToken)return`scopes`in e?e.scopes:t?.scopes}async function kr(e){let t=X().find(t=>t.providerId===e.providerId),n=X().filter(t=>t.providerId!==e.providerId);n.push({providerId:e.providerId,apiKey:``,accessToken:e.accessToken,refreshToken:e.refreshToken,tokenExpiresAt:e.tokenExpiresAt,userName:e.userName,userAvatar:e.userAvatar,baseUrl:e.baseUrl??t?.baseUrl,scopes:Or(e,t)}),await xr(n);let r=q(e.providerId)?.oauthTokenDomains??[],i=gr(e.providerId),a=new Set,o=[];for(let e of[...r,...i]){let t=e.toLowerCase();a.has(t)||(a.add(t),o.push(e))}if(o.length===0)return;let s=p();try{if(s===`extension-direct`)await Dr({providerId:e.providerId,accessToken:e.accessToken,domains:o},{sendMaskRequest:t=>new Promise(n=>{chrome.runtime.sendMessage({type:`secrets.mask-oauth-token`,...t},t=>{chrome.runtime.lastError&&Y.error(`SW mask-oauth-token transport failed`,{providerId:e.providerId,error:chrome.runtime.lastError.message});let r=typeof t==`object`&&t?t:void 0;r?.error&&Y.warn(`SW mask-oauth-token returned error`,{providerId:e.providerId,error:r.error}),n(r??{})})}),getAccounts:X,saveAccounts:xr});else if(s===`extension-delegate`)await Dr({providerId:e.providerId,accessToken:e.accessToken,domains:o},{sendMaskRequest:t=>m(`secrets.mask-oauth-token`,t).then(t=>(t?.error&&Y.warn(`Bridge mask-oauth-token returned error`,{providerId:e.providerId,error:t.error}),t??{})).catch(t=>(Y.error(`Bridge mask-oauth-token transport failed`,{providerId:e.providerId,error:t instanceof Error?t.message:String(t)}),{})),getAccounts:X,saveAccounts:xr});else if(s!==`connect`){let t=await fetch(d(`/api/secrets/oauth-update`),{method:`POST`,headers:f({"Content-Type":`application/json`}),body:JSON.stringify({providerId:e.providerId,accessToken:e.accessToken,domains:o})});if(t.ok){let n=await t.json();if(typeof n.maskedValue==`string`){let t=X(),r=t.find(t=>t.providerId===e.providerId);r&&(r.maskedValue=n.maskedValue,await xr(t))}else Y.warn(`OAuth replica POST ok but missing maskedValue`,{providerId:e.providerId})}else Y.warn(`OAuth replica POST non-ok`,{providerId:e.providerId,status:t.status})}}catch(t){Y.error(`OAuth replica sync failed`,{providerId:e.providerId,topology:s,error:t instanceof Error?t.message:String(t)})}}var Ar=`local`;function jr(e){let t=X().find(t=>t.providerId===e);return t&&(t.accessToken||t.apiKey)||null}function Mr(e){let t=X().find(t=>t.providerId===e);return t?t.accessToken||t.apiKey||(q(e).optionalApiKey?Ar:null):null}function Z(e){return X().find(t=>t.providerId===e)?.baseUrl??null}function Nr(e){return X().find(t=>t.providerId===e)?.deployment??null}function Pr(e){return X().find(t=>t.providerId===e)?.apiVersion??null}function Q(){let e=localStorage.getItem(K)||``,t=e.indexOf(`:`);return t>=0?e.slice(t+1):e}function Fr(e){let t=e.indexOf(`:`);if(t>0){let n=e.slice(0,t),r=new Set([...h(),...ar()]),i=n.includes(`.`);if(r.has(n)||!i){localStorage.setItem(K,e);return}}let n=$();localStorage.setItem(K,`${n}:${e}`)}function Ir(){return localStorage.getItem(K)||``}function $(){let e=Ir(),t=e.indexOf(`:`);if(t>0)return e.slice(0,t);let n=X(),r=Q();if(r){let e=n.find(e=>or(e.providerId)&&sr(e.providerId,r));if(e)return e.providerId}let i=n.find(e=>or(e.providerId));return i?i.providerId:n.length>0?n[0].providerId:`anthropic`}function Lr(e){let t=Q();localStorage.setItem(K,`${e}:${t}`)}function Rr(){let e=Q();localStorage.setItem(K,e)}function zr(){return Mr($())}function Br(e){let t=$();Sr(t,e,Z(t)??void 0)}async function Vr(){await wr($())}function Hr(){return Z($())}function Ur(e){let t=$(),n=jr(t);n&&Sr(t,n,e||void 0)}function Wr(){let e=$(),t=jr(e);t&&Sr(e,t)}function Gr(){let e=X(),t=$(),n=Q();return e.map(e=>{let r={providerId:e.providerId,apiKey:e.apiKey};return e.baseUrl&&(r.baseUrl=e.baseUrl),e.providerId===t&&n&&(r.model=n),r})}async function Kr(){let e=X();await Promise.allSettled(e.map(e=>wr(e.providerId))),localStorage.removeItem(G),localStorage.removeItem(K);for(let e of Zn)localStorage.removeItem(e)}function qr(e){return/^(?:gpt[-.]?|o[0-9]|chatgpt)/i.test(e)?`openai`:`anthropic`}function Jr(e,t,n,r){return{id:t,name:t,provider:e,api:r??`${e}-${qr(t)}`,baseUrl:n??``,contextWindow:2e5,maxTokens:16384,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},reasoning:!0}}function Yr(e,t){return t.isOAuth||e===`azure-ai-foundry`?`anthropic`:e===`bedrock-camp`?`amazon-bedrock`:e}function Xr(e){if(!e)return Zr();let t=$(),n=Z(t),r=q(t);try{let i=Yn(Yr(t,r),e);if(!i?.id)throw Error(`Model ${e} not found`);let a=i;return r.isOAuth?a=J(t).find(t=>t.id===e)||{...a,api:`${t}-anthropic`,provider:t}:t===`bedrock-camp`&&(a={...a,api:`bedrock-camp-converse`,provider:`bedrock-camp`}),n&&(a={...a,baseUrl:n}),a}catch(i){if(Y.debug(`resolveModelById: pi-ai lookup miss, using provider fallback`,{providerId:t,modelId:e,error:i instanceof Error?i.message:String(i)}),r.isOAuth){let r=J(t).find(t=>t.id===e);return r?n?{...r,baseUrl:n}:r:Jr(t,e,n)}return Zr()}}function Zr(){let e=$(),t=Q(),n=Z(e),r=J(e),i=q(e),a=i.defaultModelId?r.find(e=>e.id.toLowerCase().includes(i.defaultModelId.toLowerCase()))?.id:void 0,o=t||a||r[0]?.id||`claude-sonnet-4-6`;try{let t=Yr(e,i),a=Yn(t,o);if(!a?.id)throw Error(`Model ${o} not found in ${t} registry`);let s=a;return i.isOAuth?s=r.find(e=>e.id===o)||{...s,api:`${e}-anthropic`,provider:e}:e===`bedrock-camp`&&(s={...s,api:`bedrock-camp-converse`,provider:`bedrock-camp`}),n&&(s={...s,baseUrl:n}),s}catch(t){Y.debug(`resolveCurrentModel: pi-ai lookup miss, using provider fallback`,{providerId:e,effectiveModelId:o,error:t instanceof Error?t.message:String(t)});let a=r.find(e=>e.id===o);return a?n?{...a,baseUrl:n}:a:i.isOAuth?Jr(e,o,n):Yn(`anthropic`,`claude-sonnet-4-0`)}}function Qr(e){let t=e.toLowerCase();if(!t)return null;let n=null;try{n=$()}catch{}if(n!==null){let e=$r(t,[n]);if(e!==null)return e}return $r(t,X().map(e=>e.providerId))}function $r(e,t){let n=null,r=-1;for(let i of t)for(let t of J(i)){let i=t.id.toLowerCase(),a=(t.name??``).toLowerCase();if(!i.includes(e)&&!a.includes(e))continue;let o=t.contextWindow??0;(o>r||o===r&&ti(t.id,n??``)>0)&&(r=o,n=t.id)}return n}function ei(e){if(!e)return null;let t=[e],n=Qr(e);n!==null&&n!==e&&t.push(n);let r=[];try{r=J($())}catch{}for(let n of t)if(!(r.length>0&&!r.some(e=>e.id===n)))try{if(Xr(n).id===n)return n}catch(t){Y.debug(`resolveModelIdForScoop: candidate did not resolve`,{input:e,candidate:n,error:t instanceof Error?t.message:String(t)})}return null}function ti(e,t){let n=e.match(/\d+/g)?.map(Number)??[],r=t.match(/\d+/g)?.map(Number)??[],i=Math.max(n.length,r.length);for(let e=0;e<i;e++){let t=(n[e]??0)-(r[e]??0);if(t!==0)return t}return 0}export{Er as A,Br as B,q as C,$ as D,Q as E,Zr as F,Lr as G,_r as H,Xr as I,Un as J,qn as K,Qr as L,Dr as M,or as N,pr as O,wr as P,ei as R,lr as S,jr as T,vr as U,Ur as V,Fr as W,Vn as Y,ar as _,dr as a,Nr as b,Wr as c,X as d,hr as f,Pr as g,Mr as h,Sr as i,nr as j,Tr as k,Rr as l,zr as m,ir as n,Kr as o,yr as p,Hn as q,Jn as r,Vr as s,G as t,Gr as u,Hr as v,J as w,gr as x,Z as y,kr as z};