sliccy 6.110.2 → 6.110.4

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 (223) hide show
  1. package/README.md +1 -1
  2. package/dist/node-server/_cloud_core/src/cone-config/index.d.ts.map +1 -1
  3. package/dist/node-server/_cloud_core/src/cone-config/index.js +9 -6
  4. package/dist/node-server/_shared/transcript-export.d.ts.map +1 -1
  5. package/dist/node-server/_shared/transcript-export.js.map +1 -1
  6. package/dist/node-server/electron-runtime.d.ts +9 -0
  7. package/dist/node-server/electron-runtime.js +3 -3
  8. package/dist/ui/.vite/manifest.json +487 -331
  9. package/dist/ui/assets/{account-store-Bg1KKHOx.js → account-store-B_euqvU1.js} +3 -3
  10. package/dist/ui/assets/{account-store-8sKKUZ8J.js → account-store-D2KwZ_JF.js} +1 -1
  11. package/dist/ui/assets/{adobe-0CWIpyju.js → adobe-Cki2HdAO.js} +1 -1
  12. package/dist/ui/assets/adobe-D5Qr-WPC.js +2 -0
  13. package/dist/ui/assets/{agent-bridge-B43SVYcu.js → agent-bridge-Bn0WMBTn.js} +1 -1
  14. package/dist/ui/assets/agent-message-to-chat-Cc7vTUN1.js +1 -0
  15. package/dist/ui/assets/{agent-panels-9uCI5yeM.js → agent-panels-DXR6E-bx.js} +1 -1
  16. package/dist/ui/assets/{apply-layout-Bz-0rXhV.js → apply-layout-DPUrW7E1.js} +1 -1
  17. package/dist/ui/assets/{apps-C16RztyU.js → apps-CxDQe9yg.js} +3 -3
  18. package/dist/ui/assets/attachments-329cIT1j.js +1 -0
  19. package/dist/ui/assets/{azure-openai-DoQszniP.js → azure-openai-BWtPfHSZ.js} +1 -1
  20. package/dist/ui/assets/{azure-openai-BCKGDF-y.js → azure-openai-C1PRVW4U.js} +1 -1
  21. package/dist/ui/assets/{bsh-watchdog--Df_ThJG.js → bsh-watchdog-COvv_9Ni.js} +1 -1
  22. package/dist/ui/assets/{cdp-BzUC7d2h.js → cdp-CV7RtjZN.js} +1 -1
  23. package/dist/ui/assets/{cerebras-kH_bQsg2.js → cerebras-BCQIQgbC.js} +1 -1
  24. package/dist/ui/assets/{cerebras-CQwhL4Ig.js → cerebras-gMA2dLvG.js} +1 -1
  25. package/dist/ui/assets/chat-session-store-pWb1-jNp.js +1 -0
  26. package/dist/ui/assets/{connect-surface-BMrb-EnN.js → connect-surface-DQxDKDVQ.js} +1 -1
  27. package/dist/ui/assets/core-BVWxlTTk.js +95 -0
  28. package/dist/ui/assets/db-cKsBsMMN.js +1 -0
  29. package/dist/ui/assets/dictation-priming-CNllGgNq.js +1 -0
  30. package/dist/ui/assets/dip-DKmRJ7Vw.js +233 -0
  31. package/dist/ui/assets/{directed-approval-zeD_orXz.js → directed-approval-D76SQA01.js} +1 -1
  32. package/dist/ui/assets/dist-BamC4SL9.js +1 -0
  33. package/dist/ui/assets/dist-Bwf-JITi.js +12 -0
  34. package/dist/ui/assets/dist-CJQsHfm3.js +6 -0
  35. package/dist/ui/assets/dist-Cre853-J.js +23 -0
  36. package/dist/ui/assets/dist-D9gC7MoR.js +1 -0
  37. package/dist/ui/assets/esptool-operations-DEqDNikQ.js +12 -0
  38. package/dist/ui/assets/export-provider-BEHTjSYw.js +1 -0
  39. package/dist/ui/assets/{follower-navigate-watcher-BoAzVfrf.js → follower-navigate-watcher-BMWK2tPF.js} +1 -1
  40. package/dist/ui/assets/follower-presentation-DqBw0YiV.js +1 -0
  41. package/dist/ui/assets/fs-Bbg8o7F_.js +1 -0
  42. package/dist/ui/assets/fs-ybjwwXNY.js +2 -0
  43. package/dist/ui/assets/github-B4QpYLh4.js +2 -0
  44. package/dist/ui/assets/github-OxXVARDc.js +1 -0
  45. package/dist/ui/assets/{github-copilot-Xp2l1YxD.js → github-copilot-CdB5cKgY.js} +1 -1
  46. package/dist/ui/assets/github-copilot-uKaBUS0r.js +2 -0
  47. package/dist/ui/assets/{github-install-DRa8AaBY.js → github-install-IRaqAW5t.js} +1 -1
  48. package/dist/ui/assets/{github-zip-BpPiUirA.js → github-zip-D1HC1UDF.js} +1 -1
  49. package/dist/ui/assets/{guest-tool-gate-Odk1glKI.js → guest-tool-gate-MzqLI9n7.js} +1 -1
  50. package/dist/ui/assets/handoff-link-BzmwBKCE.js +1 -0
  51. package/dist/ui/assets/hear-L1cFtax_.js +1 -0
  52. package/dist/ui/assets/intercepted-oauth-B0tP4D7f.js +1 -0
  53. package/dist/ui/assets/{js-realm-worker-D6DSLfXh.js → js-realm-worker-C_6Rz8Xq.js} +4 -4
  54. package/dist/ui/assets/{kernel-worker-DQDT4Cud.js → kernel-worker-DP91cGf5.js} +656 -645
  55. package/dist/ui/assets/lick-manager-y-5bIVRR.js +2 -0
  56. package/dist/ui/assets/{lick-urls-51I5JBZv.js → lick-urls-CLl4eksX.js} +1 -1
  57. package/dist/ui/assets/lick-ws-bridge-BD2lQGbd.js +1 -0
  58. package/dist/ui/assets/{lick-ws-bridge-rxCk9AYw.js → lick-ws-bridge-CBO4U0Rd.js} +1 -1
  59. package/dist/ui/assets/{local-llm-OBHKAcNH.js → local-llm-DQaA6Xum.js} +2 -2
  60. package/dist/ui/assets/local-llm-qWWWUQwI.js +2 -0
  61. package/dist/ui/assets/main-CDW7cA9Q.js +22 -0
  62. package/dist/ui/assets/main-cherry-DM457LUs.js +1 -0
  63. package/dist/ui/assets/mount-Bye7RRyn.js +1 -0
  64. package/dist/ui/assets/{mount-Rb9VVKip.js → mount-CKqZ8Dw9.js} +2 -2
  65. package/dist/ui/assets/mount-index-BCzDM4LQ.js +1 -0
  66. package/dist/ui/assets/mount-picker-popup-DFcbLJQx.js +1 -0
  67. package/dist/ui/assets/mount-recovery-DLvtOBuL.js +2 -0
  68. package/dist/ui/assets/navigation-watcher-CUyfUWfd.js +1 -0
  69. package/dist/ui/assets/new-session-D_qcj8sH.js +2 -0
  70. package/dist/ui/assets/oauth-bootstrap-BggoSb8S.js +2 -0
  71. package/dist/ui/assets/oauth-service-NaEg6KHx.js +1 -0
  72. package/dist/ui/assets/{oauth-service-CUpgufjo.js → oauth-service-TDESX_tk.js} +1 -1
  73. package/dist/ui/assets/onboarding-orchestrator-CYP2ZqYz.js +1 -0
  74. package/dist/ui/assets/openai-codex-0QkemnWA.js +1 -0
  75. package/dist/ui/assets/openai-codex-Ywc_TGt7.js +1 -0
  76. package/dist/ui/assets/openrouter-Bigkgk_-.js +1 -0
  77. package/dist/ui/assets/{openrouter-meLV8ehE.js → openrouter-D7e8-Jky.js} +1 -1
  78. package/dist/ui/assets/{openrouter-oauth-DudFNSW4.js → openrouter-oauth-B-7NH7br.js} +1 -1
  79. package/dist/ui/assets/openrouter-oauth-C_xB6iEI.js +1 -0
  80. package/dist/ui/assets/panel-rpc-handlers-gt5P9UqB.js +2 -0
  81. package/dist/ui/assets/{panelize-shell-65i9Hq7n.js → panelize-shell-CYxm6Ct5.js} +1 -1
  82. package/dist/ui/assets/provider-DQ4cOwEh.js +2 -0
  83. package/dist/ui/assets/{provider-BE0mTIGf.js → provider-MJj2wPLX.js} +1 -1
  84. package/dist/ui/assets/provider-settings-B60i2ftL.js +2 -0
  85. package/dist/ui/assets/provider-settings-CxlhAPcv.js +1 -0
  86. package/dist/ui/assets/provider-store-access-B_svgffl.js +1 -0
  87. package/dist/ui/assets/provider-store-access-CglhtJ4J.js +2 -0
  88. package/dist/ui/assets/providers-Drh9RBhg.js +2 -0
  89. package/dist/ui/assets/{providers-BlPz5ou6.js → providers-fS5pOEQR.js} +1 -1
  90. package/dist/ui/assets/{quick-llm-CcFoANd_.js → quick-llm-DunO9KZO.js} +1 -1
  91. package/dist/ui/assets/{recovery-screen-44Uu5Cgy.js → recovery-screen-DtISSxAv.js} +1 -1
  92. package/dist/ui/assets/{redirect-uri-C_VlH29S.js → redirect-uri-DC3PdAtX.js} +1 -1
  93. package/dist/ui/assets/remote-cdp-transport-CgOXLjZ8.js +1 -0
  94. package/dist/ui/assets/{remote-terminal-view-vsJYhJKi.js → remote-terminal-view-DpxIbz7w.js} +1 -1
  95. package/dist/ui/assets/{run-BQu73khp.js → run-DgD5DSV8.js} +1 -1
  96. package/dist/ui/assets/{secret-env-Hwyj0iR1.js → secret-env-CvkpMxjz.js} +1 -1
  97. package/dist/ui/assets/secrets-bridge-client-H8-Z1RVR.js +1 -0
  98. package/dist/ui/assets/session-freezer-CNHYB1nc.js +162 -0
  99. package/dist/ui/assets/{setup-feature-flags-remote-ITlSmr_i.js → setup-feature-flags-remote-6EhUbJpO.js} +1 -1
  100. package/dist/ui/assets/setup-standalone-prelude-B8nDv9xv.js +2 -0
  101. package/dist/ui/assets/setup-sudo-B0OWsay7.js +2 -0
  102. package/dist/ui/assets/sidecar-repair-431vRT2V.js +1 -0
  103. package/dist/ui/assets/{skills-B0o8gPTv.js → skills-SI_H-dAw.js} +2 -2
  104. package/dist/ui/assets/slicc-editor-Bhg4cWBq.js +12 -0
  105. package/dist/ui/assets/slicc-editor-CL_D1iJB.js +1 -0
  106. package/dist/ui/assets/slicc-version-B-ZvN_5f.js +1 -0
  107. package/dist/ui/assets/{sprinkle-manager-DAE09Bc2.js → sprinkle-manager-DjLsrQSV.js} +1 -1
  108. package/dist/ui/assets/{sprinkle-renderer-C9L5ZRvl.js → sprinkle-renderer-1C1DNVyK.js} +2 -2
  109. package/dist/ui/assets/state-CDIZhQs-.js +42 -0
  110. package/dist/ui/assets/{store-C3RMRz9d.js → store-CxmVEGqi.js} +1 -1
  111. package/dist/ui/assets/{store-CzQ9Fvfr.js → store-DLL7d3Pv.js} +1 -1
  112. package/dist/ui/assets/{sudo-CPH7ANoV.js → sudo-C9n-aAFC.js} +1 -1
  113. package/dist/ui/assets/sync-dialog-ACgl0n-p.js +1 -0
  114. package/dist/ui/assets/timestamp-preference-sKwBl5I8.js +2 -0
  115. package/dist/ui/assets/tool-ui-eSQ1g2I1.js +1 -0
  116. package/dist/ui/assets/tray-leader-BkvHMG47.js +1 -0
  117. package/dist/ui/assets/{tray-leave-runtime-3_wlFPFU.js → tray-leave-runtime-OxVT1X8O.js} +1 -1
  118. package/dist/ui/assets/tray-runtime-config-CjsIUSv2.js +1 -0
  119. package/dist/ui/assets/tray-runtime-config-CluPgaPA.js +1 -0
  120. package/dist/ui/assets/tray-sidecar-DlsvQaxt.js +2 -0
  121. package/dist/ui/assets/tray-sync-protocol-BZ5yhJH9.js +1 -0
  122. package/dist/ui/assets/tray-sync-protocol-BlwQKL0e.js +1 -0
  123. package/dist/ui/assets/tray-url-config-Cx0gvYq6.js +1 -0
  124. package/dist/ui/assets/tray-webrtc-DfkvaMcO.js +1 -0
  125. package/dist/ui/assets/{upgrade-detection-TsOPChOa.js → upgrade-detection-BNeR8v1u.js} +1 -1
  126. package/dist/ui/assets/voice-reply-Bl9WzOJ_.js +1 -0
  127. package/dist/ui/assets/wc-attach-Dc31zmRt.js +13 -0
  128. package/dist/ui/assets/wc-extension-D5FlsMCt.js +2 -0
  129. package/dist/ui/assets/wc-float-label-CwzsTOti.js +1 -0
  130. package/dist/ui/assets/wc-floatbar-online-CCdIg4mG.js +1 -0
  131. package/dist/ui/assets/wc-follower-Bke4661H.js +17 -0
  132. package/dist/ui/assets/wc-follower-oauth-C-U310E1.js +5 -0
  133. package/dist/ui/assets/wc-live-CJ-SgVZ0.js +8 -0
  134. package/dist/ui/assets/wc-nav-TcC8J6nL.js +2 -0
  135. package/dist/ui/assets/wc-onboarding-BOs5rY9y.js +2 -0
  136. package/dist/ui/assets/{wc-permissions-CCJrTH49.js → wc-permissions-C77Upopt.js} +3 -3
  137. package/dist/ui/assets/wc-permissions-providers-CKzd9Xhn.js +2 -0
  138. package/dist/ui/assets/{wc-placeholder-CPMV2eO3.js → wc-placeholder-Cgt7DIlO.js} +3 -3
  139. package/dist/ui/assets/{wc-settings-M8e_JWQh.js → wc-settings-BBeVfukN.js} +3 -3
  140. package/dist/ui/assets/{wc-shell-WlrdsROD.js → wc-shell-DPug1uqg.js} +193 -194
  141. package/dist/ui/assets/{wc-shortcut-config-BftmZXGf.js → wc-shortcut-config-KuxMSZRS.js} +1 -1
  142. package/dist/ui/assets/{wc-sprinkles-DhXJLTUO.js → wc-sprinkles-DDuK1vDI.js} +2 -2
  143. package/dist/ui/assets/wc-transcript-export-DKIleW7-.js +2 -0
  144. package/dist/ui/assets/wc-tray-CAP6mm59.js +5 -0
  145. package/dist/ui/assets/welcome-detection-BxyK5SuW.js +1 -0
  146. package/dist/ui/assets/xai-grok-DnhaUq5y.js +1 -0
  147. package/dist/ui/assets/{xai-grok-DH1oX2E5.js → xai-grok-rlwyXPmo.js} +1 -1
  148. package/dist/ui/index.html +11 -8
  149. package/dist/ui/packages/webapp/index.html +11 -8
  150. package/dist/ui/slicc-editor.js +1 -1
  151. package/package.json +5 -4
  152. package/dist/ui/assets/adobe-ChXsF6gw.js +0 -2
  153. package/dist/ui/assets/backend-local-_o3dnerJ.js +0 -12
  154. package/dist/ui/assets/core-DpOt0gTq.js +0 -95
  155. package/dist/ui/assets/dist-CMD3ZuiV.js +0 -1
  156. package/dist/ui/assets/dist-CWHNqkcj.js +0 -1
  157. package/dist/ui/assets/dist-CrVgSn_b.js +0 -6
  158. package/dist/ui/assets/dist-DkG8wgj1.js +0 -23
  159. package/dist/ui/assets/esp8266-1y0C3qJ1.js +0 -1
  160. package/dist/ui/assets/esptool-operations-CiccBbBW.js +0 -12
  161. package/dist/ui/assets/fs-BsqtoiKD.js +0 -2
  162. package/dist/ui/assets/fs-DKRiXKHo.js +0 -1
  163. package/dist/ui/assets/github-DGUqMidV.js +0 -1
  164. package/dist/ui/assets/github-DqsEulTB.js +0 -2
  165. package/dist/ui/assets/github-copilot-DJf8cE1K.js +0 -2
  166. package/dist/ui/assets/handoff-link-BObMRgsx.js +0 -1
  167. package/dist/ui/assets/hear-Du8SABf8.js +0 -1
  168. package/dist/ui/assets/intercepted-oauth-BIKnTjZm.js +0 -1
  169. package/dist/ui/assets/lick-manager-DsQLFcKr.js +0 -2
  170. package/dist/ui/assets/lick-ws-bridge-1UPwiSVX.js +0 -1
  171. package/dist/ui/assets/local-llm-Cjzjpqa1.js +0 -2
  172. package/dist/ui/assets/logger-DQgFbfwx.js +0 -1
  173. package/dist/ui/assets/main-BK-7ArIz.js +0 -22
  174. package/dist/ui/assets/main-cherry-C6fqCnLL.js +0 -1
  175. package/dist/ui/assets/mount-BrQpW9eO.js +0 -1
  176. package/dist/ui/assets/mount-index-CD1UKs2l.js +0 -1
  177. package/dist/ui/assets/mount-picker-popup-C4q1Q3pK.js +0 -1
  178. package/dist/ui/assets/mount-recovery-Cb-AXW35.js +0 -2
  179. package/dist/ui/assets/navigation-watcher-DrWMx-B4.js +0 -1
  180. package/dist/ui/assets/new-session-CF4YpiQ9.js +0 -2
  181. package/dist/ui/assets/oauth-bootstrap-YFOy1SIX.js +0 -2
  182. package/dist/ui/assets/oauth-service-DJuzPXsg.js +0 -1
  183. package/dist/ui/assets/onboarding-orchestrator-Dmh6rOJl.js +0 -1
  184. package/dist/ui/assets/openai-codex-84EHUcAD.js +0 -1
  185. package/dist/ui/assets/openai-codex-DY_L0KSA.js +0 -1
  186. package/dist/ui/assets/openrouter-oauth-CblQ27-K.js +0 -1
  187. package/dist/ui/assets/openrouter-z7GGvxCM.js +0 -1
  188. package/dist/ui/assets/panel-rpc-handlers-DmiAyTiy.js +0 -2
  189. package/dist/ui/assets/picker-approval-D89YhXsA.js +0 -12
  190. package/dist/ui/assets/provider-BLbTGk-_.js +0 -2
  191. package/dist/ui/assets/provider-settings-Dq-yRgMh.js +0 -1
  192. package/dist/ui/assets/provider-store-access-CJdYrcvf.js +0 -1
  193. package/dist/ui/assets/provider-store-access-NHOQWINx.js +0 -1
  194. package/dist/ui/assets/providers-B3OPYf2o.js +0 -2
  195. package/dist/ui/assets/remote-cdp-transport-DeDqT7I4.js +0 -1
  196. package/dist/ui/assets/secrets-bridge-client-CHZomqvU.js +0 -1
  197. package/dist/ui/assets/sidecar-repair-Ddcz9Mvv.js +0 -1
  198. package/dist/ui/assets/slicc-editor-D-eO_pjd.js +0 -23
  199. package/dist/ui/assets/slicc-editor-Sdfe-_x_.js +0 -1
  200. package/dist/ui/assets/slicc-version-BrPYMXS9.js +0 -1
  201. package/dist/ui/assets/state-BSTmV4yO.js +0 -42
  202. package/dist/ui/assets/sync-dialog-vSEl3KxP.js +0 -1
  203. package/dist/ui/assets/tool-ui-DRnUkp2g.js +0 -1
  204. package/dist/ui/assets/tool-ui-DfXu6quJ.js +0 -1
  205. package/dist/ui/assets/tray-leader-B_FxjW0d.js +0 -1
  206. package/dist/ui/assets/tray-runtime-config-Bpo7AZhY.js +0 -1
  207. package/dist/ui/assets/tray-runtime-config-Dv3NVv5v.js +0 -1
  208. package/dist/ui/assets/tray-sidecar-BIcoXTJN.js +0 -2
  209. package/dist/ui/assets/voice-reply-O_Z2C0eg.js +0 -1
  210. package/dist/ui/assets/wc-attach-DM5yRZRS.js +0 -13
  211. package/dist/ui/assets/wc-extension-Dg5dOqTK.js +0 -2
  212. package/dist/ui/assets/wc-float-label-Bmp3gmHN.js +0 -1
  213. package/dist/ui/assets/wc-floatbar-online-B8ug4UwE.js +0 -1
  214. package/dist/ui/assets/wc-follower-G03aUmAn.js +0 -17
  215. package/dist/ui/assets/wc-follower-oauth-D15d_vbh.js +0 -5
  216. package/dist/ui/assets/wc-live-CiwhsK8i.js +0 -399
  217. package/dist/ui/assets/wc-nav-D8Bi3zRA.js +0 -2
  218. package/dist/ui/assets/wc-onboarding-DUBWYyMl.js +0 -2
  219. package/dist/ui/assets/wc-permissions-providers-CET8Rh_M.js +0 -2
  220. package/dist/ui/assets/wc-transcript-export-DjpmBvLP.js +0 -2
  221. package/dist/ui/assets/wc-tray-BdgbNPhM.js +0 -5
  222. package/dist/ui/assets/welcome-detection-0SaDZUV0.js +0 -1
  223. package/dist/ui/assets/xai-grok-CVEtAfJK.js +0 -1
@@ -0,0 +1,5 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/theme-engine-By4GU_Wc.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/logger-DDBAeTLF.js"])))=>i.map(i=>d[i]);
2
+ import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF.js";import{r as n}from"./attachments-329cIT1j.js";import{r,t as i}from"./base64-DJRlyqZu.js";import{i as a,r as o}from"./src-CAWTvdAa.js";import{t as s}from"./slicc-app-url-BsBryEhn.js";import{n as c}from"./tray-webrtc-DfkvaMcO.js";import{d as l,f as u,p as d}from"./tray-sync-protocol-BZ5yhJH9.js";import{i as f,n as p,r as m,t as ee}from"./tray-follower-status-BAjnN7Ar.js";import{t as te}from"./remote-cdp-transport-CgOXLjZ8.js";import{T as h}from"./wc-shell-DPug1uqg.js";import{c as g,i as _}from"./record-D153M47x.js";import{i as v,n as y}from"./tray-sync-protocol-BlwQKL0e.js";import{n as b}from"./shared-2T6O01rS.js";import{t as x}from"./sprinkle-renderer-1C1DNVyK.js";import{f as ne}from"./wc-unit-context-BaavrvD8.js";import{t as S}from"./export-spool-Eul4J1RP.js";var re=`slicc.followerTrayStatus`,C=t(`data-channel-keepalive`);function w(e,t){if(!Number.isInteger(t)||t<1)throw RangeError(`DataChannelKeepalive ${e} must be a positive integer; got ${String(t)}`)}var T=class{sendPing;onDead;isTransportOpen;onStalled;onRecovered;intervalMs;maxMissed;hardMaxMissed;timer=null;missedPongs=0;awaitingPong=!1;stopped=!1;stalled=!1;constructor(e){if(this.sendPing=e.sendPing,this.onDead=e.onDead,this.isTransportOpen=e.isTransportOpen??(()=>!1),this.onStalled=e.onStalled,this.onRecovered=e.onRecovered,this.intervalMs=e.intervalMs??1e4,this.maxMissed=e.maxMissed??3,this.hardMaxMissed=e.hardMaxMissed??30,w(`intervalMs`,this.intervalMs),w(`maxMissed`,this.maxMissed),w(`hardMaxMissed`,this.hardMaxMissed),this.hardMaxMissed<this.maxMissed)throw RangeError(`DataChannelKeepalive hardMaxMissed (${this.hardMaxMissed}) must be >= maxMissed (${this.maxMissed})`)}start(){this.timer||this.stopped||(this.timer=setInterval(()=>this.tick(),this.intervalMs))}stop(){this.stopped=!0,this.stalled=!1,this.timer&&=(clearInterval(this.timer),null)}receivePong(){this.stopped||(this.awaitingPong=!1,this.missedPongs=0,this.clearStall())}receivePing(){this.stopped||(this.missedPongs=0,this.awaitingPong=!1,this.clearStall())}get missed(){return this.missedPongs}get isStalled(){return this.stalled}clearStall(){this.stalled&&(this.stalled=!1,C.info(`Peer answered again after a stall`),this.onRecovered?.())}tick(){this.stopped||this.awaitingPong&&(this.missedPongs++,C.debug(`Missed pong`,{missedPongs:this.missedPongs,maxMissed:this.maxMissed}),this.missedPongs>=this.maxMissed&&this.declareUnreachable())||(this.awaitingPong=!0,this.sendPing())}declareUnreachable(){return this.missedPongs<this.hardMaxMissed&&this.isTransportOpen()?(this.stalled||(this.stalled=!0,C.warn(`Peer stopped answering but its transport is still open — treating as stalled`,{missedPongs:this.missedPongs,hardMaxMissed:this.hardMaxMissed}),this.onStalled?.()),!1):(C.warn(`Channel declared dead`,{missedPongs:this.missedPongs}),this.stop(),this.onDead(),!0)}},E=65536;async function D(e,t){try{switch(t.op){case`readFile`:return await O(e,t.path,t.encoding);case`writeFile`:return[await k(e,t.path,t.content,t.encoding)];case`stat`:return[await A(e,t.path)];case`readDir`:return[await j(e,t.path)];case`mkdir`:return[await M(e,t.path,t.recursive)];case`rm`:return[await N(e,t.path,t.recursive)];case`exists`:return[await P(e,t.path)];case`walk`:return[await F(e,t.path)];default:return[{ok:!1,error:`Unknown fs operation: ${t.op}`}]}}catch(e){return[L(e)]}}async function O(e,t,n){if((n??`utf-8`)===`utf-8`)return I(await e.readFile(t,{encoding:`utf-8`}),`utf-8`);let i=await e.readFile(t,{encoding:`binary`});return I(r(i),`base64`)}async function k(e,t,n,r){if(r===`base64`){let r=i(n);await e.writeFile(t,r)}else await e.writeFile(t,n);return{ok:!0,data:{type:`void`}}}async function A(e,t){return{ok:!0,data:{type:`stat`,stat:await e.stat(t)}}}async function j(e,t){return{ok:!0,data:{type:`dirEntries`,entries:await e.readDir(t)}}}async function M(e,t,n){return await e.mkdir(t,{recursive:n}),{ok:!0,data:{type:`void`}}}async function N(e,t,n){return await e.rm(t,{recursive:n}),{ok:!0,data:{type:`void`}}}async function P(e,t){return{ok:!0,data:{type:`exists`,exists:await e.exists(t)}}}async function F(e,t){let n=[];for await(let r of e.walk(t))n.push(r);return{ok:!0,data:{type:`paths`,paths:n}}}function I(e,t){if(e.length<=E)return[{ok:!0,data:{type:`file`,content:e,encoding:t}}];let n=Math.ceil(e.length/E),r=[];for(let i=0;i<n;i++){let a=i*E,o=e.slice(a,a+E);r.push({ok:!0,data:{type:`file`,content:o,encoding:t},chunkIndex:i,totalChunks:n})}return r}function L(e){return e instanceof Error&&`code`in e?{ok:!1,error:e.message,code:e.code}:{ok:!1,error:e instanceof Error?e.message:String(e)}}var R=t(`tray-follower-sync`),z=15e3,B=6e4;function V(e,t){return e===void 0||e===t}var H=class{options;sync;eventListeners=new Set;unsubscribe;keepalive;latestSnapshot=null;sentMessageIds=new Set;targetEntries=[];remoteTransports=new Map;cdpChunkBuffers=new Map;snapshotChunkBuffer=null;remoteCDPSessions=new Set;cdpEventCleanups=[];oauthPopupAborts=new Map;tabOpenResolvers=new Map;fsResolvers=new Map;leaderProtocolVersion;legacyLeaderLogged=!1;latestSprinkles=[];sprinkleContentCache=new Map;pendingSprinkleFetches=new Map;inflightSprinkleByName=new Map;sprinkleContentWaiters=new Map;cacheEpoch=0;fetchEpoch=new Map;activeExportRequests=new Map;openSudoPrompts=new Map;constructor(e,t={}){this.options=t;let n=t.sprinkleFetchTimeoutMs;if(n!==void 0&&(!Number.isFinite(n)||n<0))throw RangeError(`sprinkleFetchTimeoutMs must be a non-negative finite number (0 disables the timer); got ${n}`);this.sync=y(e),this.unsubscribe=this.sync.onMessage(e=>{this.handleLeaderMessage(e)});let r=this.options.onSudoApprovalRequest?{exec:!1,...this.options.helloCapabilities??{},sudoApproval:!0}:this.options.helloCapabilities;this.sync.send({type:`hello`,protocolVersion:7,...this.options.selfRuntimeId?{runtime:this.options.selfRuntimeId}:{},...r?{capabilities:r}:{}}),this.keepalive=new T({sendPing:()=>this.sync.send({type:`ping`}),isTransportOpen:()=>this.sync.isOpen,onStalled:()=>{R.warn(`Leader stopped answering pings; channel still open, waiting for it to catch up`),m(!0),this.options.onLeaderStalled?.(!0)},onRecovered:()=>{R.info(`Leader is answering pings again`),m(!1),this.options.onLeaderStalled?.(!1)},onDead:()=>{R.warn(`Leader keepalive dead, cleaning up`),this.handleDisconnect(`Keepalive timeout — leader not responding`),this.options.onDead?.()}}),this.keepalive.start(),e.addEventListener(`close`,()=>{R.warn(`Data channel closed`),this.handleDisconnect(`Data channel closed`)}),e.addEventListener(`error`,()=>{R.warn(`Data channel error`),this.handleDisconnect(`Data channel error`)})}sendMessage(e,t,r,i){let a=t??`follower-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;this.sentMessageIds.add(a);let o=r?.length?n(r):r;this.sync.send({type:`user_message`,text:e,messageId:a,attachments:o,...i?.steer?{steer:!0}:{}}),R.info(`Sent user message to leader`,{messageId:a})}onEvent(e){return this.eventListeners.add(e),()=>this.eventListeners.delete(e)}stop(){this.sync.send({type:`abort`}),R.info(`Sent abort to leader`)}requestSnapshot(e){this.sync.send({type:`request_snapshot`,...e?{scoopJid:e}:{}})}requestNewSession(e){this.sync.send({type:`new_session`,action:e}),R.info(`Sent new_session to leader`,{action:e})}selectScoop(e){this.sync.send({type:`scoops.select`,scoopJid:e})}requestModels(){this.sync.send({type:`models.request`})}selectModel(e,t){this.sync.send({type:`model.select`,modelId:e,...t?{scoopJid:t}:{}})}setThinkingLevel(e,t,n){this.sync.send({type:`thinking.set`,scoopJid:e,thinkingLevel:t,effortOverride:n})}getLatestSnapshot(){return this.latestSnapshot}close(){this.disconnected||(this.disconnected=!0,this.keepalive.stop(),this.unsubscribe(),this.sync.close(),this.eventListeners.clear(),this.cleanupCDPEventForwarding(),this.rejectPendingRequests(`Follower sync closed`),R.info(`Follower sync closed`))}rejectPendingRequests(e){this.rejectPendingSprinkleFetches(e);for(let e of this.oauthPopupAborts.values())e.abort();this.oauthPopupAborts.clear();for(let e of this.openSudoPrompts.values())e.abort();this.openSudoPrompts.clear();let t=Error(e);for(let{reject:e}of this.tabOpenResolvers.values())e(t);this.tabOpenResolvers.clear();for(let{reject:e}of this.fsResolvers.values())e(t);this.fsResolvers.clear(),this.cdpChunkBuffers.clear();for(let e of this.remoteTransports.values())e.disconnect();this.remoteTransports.clear();for(let[,e]of this.activeExportRequests)e.signal.removeEventListener(`abort`,e.onAbort),e.spool.cancel(),e.reject(new o(`transfer-aborted`));this.activeExportRequests.clear()}advertiseTargets(e,t){this.sync.send({type:`targets.advertise`,targets:e,runtimeId:t})}getTargets(){return this.targetEntries}sendCherryHostEvent(e,t){this.sync.send({type:`cherry.host_event`,targetId:this.options.selfRuntimeId??``,name:e,detail:t})}getSprinkles(){return this.latestSprinkles}refreshSprinkles(){this.sync.send({type:`sprinkles.refresh`})}fetchSprinkleContent(e){let t=this.sprinkleContentCache.get(e);if(t!==void 0)return Promise.resolve(t);let n=this.options.sprinkleFetchTimeoutMs??z;return new Promise((t,r)=>{let i=Symbol(`sprinkle-waiter`),a,o=e=>{a!==void 0&&clearTimeout(a),t(e)},s=e=>{a!==void 0&&clearTimeout(a),r(e)},c=this.sprinkleContentWaiters.get(e)??[];if(c.push({id:i,resolve:o,reject:s}),this.sprinkleContentWaiters.set(e,c),n>0&&(a=setTimeout(()=>{let t=this.sprinkleContentWaiters.get(e);if(t){let r=t.findIndex(e=>e.id===i);r>=0&&t.splice(r,1),t.length===0&&(this.sprinkleContentWaiters.delete(e),this.cancelSprinkleFetch(e,`Sprinkle fetch for "${e}" timed out after ${n}ms`))}r(Error(`Sprinkle fetch for "${e}" timed out after ${n}ms`))},n)),this.inflightSprinkleByName.has(e))return;let l=`sprinkle-fetch-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;this.inflightSprinkleByName.set(e,l),this.pendingSprinkleFetches.set(l,{sprinkleName:e,chunks:new Map,totalChunks:1}),this.fetchEpoch.set(l,this.cacheEpoch),this.sync.send({type:`sprinkle.fetch`,requestId:l,sprinkleName:e})})}sendSprinkleLick(e,t,n){this.sync.send({type:`sprinkle.lick`,sprinkleName:e,body:t,targetScoop:n})||R.warn(`sendSprinkleLick dropped: tray channel closed`,{sprinkleName:e})}reportSprinkleInstances(e){this.sync.send({type:`sprinkle.instances`,sprinkles:e})||R.debug(`reportSprinkleInstances dropped: tray channel closed`)}forwardLick(e){let t=this.sync.send({type:`lick`,event:e});return t||R.warn(`forwardLick dropped: tray channel closed`,{type:e.type}),t}clearSprinkleCache(e){e===void 0?this.sprinkleContentCache.clear():this.sprinkleContentCache.delete(e)}cancelSprinkleFetch(e,t=`fetch cancelled`){let n=this.sprinkleContentWaiters.get(e)??[];this.sprinkleContentWaiters.delete(e);let r=this.inflightSprinkleByName.get(e);if(r!==void 0&&(this.inflightSprinkleByName.delete(e),this.pendingSprinkleFetches.delete(r),this.fetchEpoch.delete(r)),n.length===0)return;let i=Error(t);for(let e of n)e.reject(i)}disconnected=!1;handleDisconnect(e){if(this.disconnected)return;this.disconnected=!0,R.error(`Follower sync disconnected`,{reason:e});let t=ee();f({...t,state:`error`,error:e,stalled:!1}),this.keepalive.stop(),this.cleanupCDPEventForwarding(),this.unsubscribe(),this.sync.close(),this.rejectPendingRequests(`Follower sync disconnected: ${e}`),this.options.onDisconnect?.(e)}handleKeepaliveMessage(e){if(e===`ping`){this.keepalive.receivePing(),this.sync.send({type:`pong`});return}this.keepalive.receivePong(),p(Date.now())}handleSnapshot(e,t){R.info(`Snapshot received from leader`,{messageCount:e.length,scoopJid:t}),this.snapshotChunkBuffer=null,this.latestSnapshot={messages:e,scoopJid:t},this.options.onSnapshot?.(e,t)}handleSnapshotChunk(e){let t=v(this.snapshotChunkBuffer,e);this.snapshotChunkBuffer=t.buffer,t.result&&(R.info(`Chunked snapshot reassembled from leader`,{messageCount:t.result.messages.length,scoopJid:t.result.scoopJid}),this.latestSnapshot=t.result,this.options.onSnapshot?.(t.result.messages,t.result.scoopJid))}handleBiscottoMessageState(e,t){this.options.onBiscottoMessageState?.(e,t)}handleLeaderHello(e){this.leaderProtocolVersion=e,e>7?R.warn(`Leader speaks a newer tray sync protocol — update this build`,{leaderVersion:e,ourVersion:7}):R.info(`Leader hello`,{protocolVersion:e}),e>=5&&this.requestModels()}noteLegacyLeader(e){e!==`hello`&&this.leaderProtocolVersion===void 0&&(this.legacyLeaderLogged||(this.legacyLeaderLogged=!0,R.info(`Leader sent no hello — legacy peer (pre-versioning build)`)))}handleThemeMessage(e){return e.type===`theme.apply`&&(this.applyLeaderTheme(e.themeJson),!0)}handleLeaderMessage(e){if(this.noteLegacyLeader(e.type),!this.handleThemeMessage(e))switch(e.type){case`snapshot`:this.handleSnapshot(e.messages,e.scoopJid);break;case`snapshot_chunk`:this.handleSnapshotChunk(e);break;case`agent_event`:this.emitEvent(e.event);break;case`user_message_echo`:this.handleUserMessageEcho(e);break;case`status`:this.options.onStatus?.(e.scoopStatus,e.scoopJid);break;case`error`:R.warn(`Error from leader`,{error:e.error}),this.emitEvent({type:`error`,error:e.error});break;case`targets.registry`:R.info(`Target registry received from leader`,{targetCount:e.targets.length}),this.targetEntries=e.targets,this.options.onTargetsUpdated?.(this.targetEntries);break;case`cdp.request`:{let{requestId:t,localTargetId:n,method:r,params:i,sessionId:a}=e;this.executeLocalCDP(t,n,r,i,a);break}case`cdp.response`:this.routeCDPResponse(e);break;case`cdp.event`:this.routeCDPEvent(e);break;case`tab.open`:case`preview.open`:this.executeLocalTabOpen(e.requestId,e.url);break;case`tab.opened`:{let t=this.tabOpenResolvers.get(e.requestId);t&&(this.tabOpenResolvers.delete(e.requestId),t.resolve(e.targetId));break}case`tab.open.error`:{let t=this.tabOpenResolvers.get(e.requestId);t&&(this.tabOpenResolvers.delete(e.requestId),t.reject(Error(e.error)));break}case`fs.request`:this.executeLocalFs(e.requestId,e.request);break;case`fs.response`:this.routeFsResponse(e.requestId,e.response);break;case`scoops.list`:this.handleScoopsList(e.scoops,e.activeScoopJid);break;case`models.list`:this.options.onModelsList?.(e.models);break;case`model.state`:this.options.onModelState?.(e.state);break;case`sprinkles.list`:this.handleSprinklesList(e.sprinkles);break;case`sprinkle.content`:this.handleSprinkleContent(e);break;case`sprinkle.update`:this.options.onSprinkleUpdate?.(e.sprinkleName,e.data);break;case`sprinkle.reloaded`:this.handleSprinkleReloaded(e.sprinkleName);break;case`cherry.slicc_event`:this.options.onCherrySliccEvent?.(e.name,e.detail);break;case`transcript.export.pending`:case`transcript.export.denied`:case`transcript.export.start`:case`transcript.export.chunk`:case`transcript.export.complete`:case`transcript.export.error`:this.handleExportLeaderMessage(e);break;case`sudo.approve.request`:case`sudo.approve.cancel`:this.handleSudoLeaderMessage(e);break;case`oauth.popup.request`:this.handleOAuthPopupRequest(e.requestId,e.url);break;case`ping`:case`pong`:this.handleKeepaliveMessage(e.type);break;case`hello`:this.handleLeaderHello(e.protocolVersion);break;case`biscotto.message.state`:this.handleBiscottoMessageState(e.messageId,e.state);break;case`exec.request`:case`exec.chunk`:case`exec.response`:case`exec.signal`:this.handleExecMessage(e);break;default:{let t=d(e);R.warn(`Unknown leader message type — skewed leader?`,{type:t.type});break}}}handleExecMessage(e){e.type===`exec.request`&&this.sync.send({type:`exec.response`,requestId:e.requestId,exitCode:127,error:`exec is not supported on this follower`})}handleSprinklesList(e){R.info(`Sprinkles list received from leader`,{sprinkleCount:e.length}),this.sprinkleContentCache.clear(),this.cacheEpoch++,this.latestSprinkles=e,this.options.onSprinklesList?.(e)}handleUserMessageEcho(e){if(this.sentMessageIds.has(e.messageId)){this.sentMessageIds.delete(e.messageId),R.debug(`Skipping own message echo`,{messageId:e.messageId});return}R.info(`User message echo received`,{messageId:e.messageId,scoopJid:e.scoopJid}),this.options.onUserMessage?.(e.text,e.messageId,e.scoopJid,e.attachments)}handleScoopsList(e,t){R.info(`Scoops list received from leader`,{scoopCount:e.length}),this.options.onScoopsList?.(e,t)}handleSprinkleReloaded(e){this.sprinkleContentCache.delete(e),this.options.onSprinkleReloaded?.(e)}handleSprinkleContent(e){let{requestId:t,sprinkleName:n,content:r,chunkIndex:i,totalChunks:a,error:o}=e;if(o){R.warn(`sprinkle.content error from leader`,{sprinkleName:n,error:o}),this.pendingSprinkleFetches.delete(t),this.inflightSprinkleByName.delete(n),this.fetchEpoch.delete(t);let e=this.sprinkleContentWaiters.get(n)??[];this.sprinkleContentWaiters.delete(n);for(let t of e)t.reject(Error(o));return}if(!this.pendingSprinkleFetches.has(t)){R.debug(`Dropping sprinkle.content for unknown requestId`,{sprinkleName:n,requestId:t});return}let s=null;if(i!==void 0&&a!==void 0){if(i<0||i>=a){R.warn(`Dropping sprinkle.content with out-of-range chunkIndex`,{sprinkleName:n,chunkIndex:i,totalChunks:a});return}let e=this.pendingSprinkleFetches.get(t);if(e.totalChunks=a,e.chunks.has(i)?R.warn(`Dropping duplicate sprinkle.content chunk`,{sprinkleName:n,chunkIndex:i}):e.chunks.set(i,r),e.chunks.size>=a){let r=[];for(let t=0;t<a;t++){let i=e.chunks.get(t);if(i===void 0){R.warn(`Chunked sprinkle.content missing chunk after assembly`,{sprinkleName:n,missingIndex:t});return}r.push(i)}s=r.join(``),this.pendingSprinkleFetches.delete(t)}}else s=r,this.pendingSprinkleFetches.delete(t);if(s===null)return;let c=this.fetchEpoch.get(t);this.fetchEpoch.delete(t),c===this.cacheEpoch&&this.sprinkleContentCache.set(n,s),this.inflightSprinkleByName.delete(n);let l=this.sprinkleContentWaiters.get(n)??[];this.sprinkleContentWaiters.delete(n);for(let e of l)e.resolve(s)}rejectPendingSprinkleFetches(e){let t=Error(e);for(let[,e]of this.sprinkleContentWaiters)for(let n of e)n.reject(t);this.sprinkleContentWaiters.clear(),this.pendingSprinkleFetches.clear(),this.inflightSprinkleByName.clear(),this.fetchEpoch.clear()}applyLeaderTheme(e){this.options.onThemeApply?.(e)}emitEvent(e){for(let t of this.eventListeners)try{t(e)}catch(t){R.error(`Listener error`,{eventType:e.type,error:t instanceof Error?t.message:String(t)})}}createRemoteTransport(e,t){let n=new te({sendCDPRequest:(n,r,i,a)=>{this.sync.send({type:`cdp.request`,requestId:n,targetRuntimeId:e,localTargetId:t,method:r,params:i,sessionId:a})}});return this.remoteTransports.set(`${e}:${t}`,n),n}removeRemoteTransport(e,t){let n=`${e}:${t}`,r=this.remoteTransports.get(n);r&&(r.disconnect(),this.remoteTransports.delete(n))}openRemoteTab(e,t){let n=`tab-open-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;return new Promise((r,i)=>{this.tabOpenResolvers.set(n,{resolve:r,reject:i}),this.sync.send({type:`tab.open`,requestId:n,targetRuntimeId:e,url:t})})}requestTabTeleport(e){let t=`tab-teleport-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;return new Promise((n,r)=>{let i=setTimeout(()=>{this.tabOpenResolvers.delete(t)&&r(Error(`tab teleport timed out`))},B),a=e=>t=>{clearTimeout(i),e(t)};this.tabOpenResolvers.set(t,{resolve:a(n),reject:a(r)}),this.sync.send({type:`tab.teleport.request`,requestId:t,targetId:e})===!1&&(clearTimeout(i),this.tabOpenResolvers.delete(t),r(Error(`not connected to a leader`)))})}getLeaderProtocolVersion(){return this.leaderProtocolVersion}async handleOAuthPopupRequest(e,t){let n=this.options.onOAuthPopupRequest;if(!n){R.warn(`Leader delegated an OAuth popup, but this float cannot show one`,{requestId:e}),this.sync.send({type:`oauth.popup.response`,requestId:e,error:`this follower cannot show an interactive login`});return}let r=new AbortController;this.oauthPopupAborts.set(e,r);try{let i=await n(t,r.signal);this.sync.send({type:`oauth.popup.response`,requestId:e,...i?{redirectUrl:i}:{}})}catch(t){R.warn(`Delegated OAuth popup failed`,{requestId:e,error:String(t)}),this.sync.send({type:`oauth.popup.response`,requestId:e,error:t instanceof Error?t.message:String(t)})}finally{this.oauthPopupAborts.delete(e)}}async executeLocalTabOpen(e,t){let n=this.options.browserTransport;if(!n){this.sync.send({type:`tab.open.error`,requestId:e,error:`Follower has no browser transport`});return}try{let r=(await n.send(`Target.createTarget`,{url:t,background:!0})).targetId;if(typeof r!=`string`||r.length===0){this.sync.send({type:`tab.open.error`,requestId:e,error:`Target.createTarget did not return a usable targetId`});return}this.sync.send({type:`tab.opened`,requestId:e,targetId:r}),this.options.onTargetsChanged?.()}catch(t){this.sync.send({type:`tab.open.error`,requestId:e,error:t instanceof Error?t.message:String(t)})}}async executeLocalCDP(e,t,n,r,i){let a=this.options.browserTransport;if(!a){this.sync.send({type:`cdp.response`,requestId:e,error:`Follower has no browser transport`});return}try{let t=await a.send(n,r,i);if(n===`Target.attachToTarget`&&t.sessionId){let e=t.sessionId;this.remoteCDPSessions.add(e),this.setupCDPEventForwarding(a,e),R.debug(`Tracking remote CDP session`,{remoteSessionId:e})}n===`Target.detachFromTarget`&&i&&this.remoteCDPSessions.has(i)&&(this.remoteCDPSessions.delete(i),R.debug(`Removed remote CDP session on detach`,{sessionId:i})),u(this.sync,e,t)}catch(t){this.sync.send({type:`cdp.response`,requestId:e,error:t instanceof Error?t.message:String(t)})}}setupCDPEventForwarding(e,t){for(let n of[`Page.frameNavigated`,`Page.loadEventFired`,`Page.domContentEventFired`,`Network.responseReceived`,`Network.loadingFinished`,`Network.requestWillBeSent`,`Runtime.executionContextCreated`,`Runtime.executionContextDestroyed`,`Runtime.executionContextsCleared`]){let r=e=>{if(e.sessionId!==t||!this.remoteCDPSessions.has(t))return;let{sessionId:r,...i}=e;this.sync.send({type:`cdp.event`,method:n,params:i,sessionId:t})};e.on(n,r),this.cdpEventCleanups.push(()=>e.off(n,r))}}cleanupCDPEventForwarding(){for(let e of this.cdpEventCleanups)e();this.cdpEventCleanups.length=0,this.remoteCDPSessions.clear()}routeCDPResponse(e){let t=l(this.cdpChunkBuffers,e);if(t)for(let n of this.remoteTransports.values())n.handleResponse(e.requestId,t.result,t.error)}routeCDPEvent(e){let t=e.sessionId?{...e.params,sessionId:e.sessionId}:e.params;for(let n of this.remoteTransports.values())n.handleEvent(e.method,t)}async executeLocalFs(e,t){let n=this.options.vfs;if(!n){this.sync.send({type:`fs.response`,requestId:e,response:{ok:!1,error:`Follower has no VFS`}});return}let r;try{r=await D(n,t)}catch(t){this.sync.send({type:`fs.response`,requestId:e,response:{ok:!1,error:t instanceof Error?t.message:String(t)}});return}for(let t of r)this.sync.send({type:`fs.response`,requestId:e,response:t})}routeFsResponse(e,t){let n=this.fsResolvers.get(e);if(!n)return;n.responses.push(t);let r=t.ok&&t.totalChunks||1;n.responses.length>=r&&(this.fsResolvers.delete(e),n.resolve(n.responses))}sendFsRequest(e,t){let n=`fs-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;return new Promise((r,i)=>{this.fsResolvers.set(n,{resolve:r,reject:i,responses:[]}),this.sync.send({type:`fs.request`,requestId:n,targetRuntimeId:e,request:t})})}handleExportLeaderMessage(e){switch(e.type){case`transcript.export.pending`:R.debug(`Transcript export pending`,{requestId:e.requestId}),this.activeExportRequests.get(e.requestId)?.onProgress?.({phase:`collecting`});break;case`transcript.export.denied`:this.handleExportDenied(e.requestId);break;case`transcript.export.start`:R.debug(`Transcript export start`,{requestId:e.requestId}),this.activeExportRequests.get(e.requestId)?.onProgress?.({phase:`packaging`});break;case`transcript.export.chunk`:this.handleExportChunkAsync(e.requestId,e.index,e.data);break;case`transcript.export.complete`:this.handleExportComplete(e.requestId,e.chunks,e.byteLength,e.sha256);break;case`transcript.export.error`:this.handleExportError(e.requestId,e.code);break;default:{let t=d(e);R.warn(`Unknown transcript export leader message — skewed leader?`,{type:t.type});break}}}requestTranscriptExport(e,t,n){if(t.aborted)return Promise.reject(new o(`transfer-aborted`));let r=`te-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,i=(this.options.makeExportSpool??S)(r);return new Promise((a,s)=>{let c=()=>{let e=this.activeExportRequests.get(r);e&&(this.sync.send({type:`transcript.export.cancel`,requestId:r}),this.activeExportRequests.delete(r),e.spool.cancel(),s(new o(`transfer-aborted`)))};if(t.aborted){i.cancel(),s(new o(`transfer-aborted`));return}t.addEventListener(`abort`,c,{once:!0}),this.activeExportRequests.set(r,{resolve:a,reject:s,spool:i,nextExpectedIndex:0,totalBytes:0,signal:t,onAbort:c,onProgress:n}),this.sync.send({type:`transcript.export.request`,requestId:r,selector:e})})}handleSudoLeaderMessage(e){if(e.type===`sudo.approve.cancel`){this.openSudoPrompts.get(e.requestId)?.abort();return}this.handleSudoApprovalRequest(e)}async handleSudoApprovalRequest(e){let{requestId:t}=e,n=e=>{this.sync.send({type:`sudo.approve.response`,requestId:t,decision:e.decision,...e.decision===`always`&&e.pattern?{pattern:e.pattern}:{},...e.attestation?{attestation:e.attestation}:{}})},r=this.options.onSudoApprovalRequest;if(!r){R.warn(`No sudo approval handler wired — denying delegated prompt`,{requestId:t}),n({decision:`deny`});return}if(this.openSudoPrompts.has(t))return;let i=new AbortController;this.openSudoPrompts.set(t,i);let a={decision:`deny`};try{a=await r({requestId:t,kind:e.kind,detail:e.detail,...e.suggestedPattern?{suggestedPattern:e.suggestedPattern}:{},...e.scoopName?{scoopName:e.scoopName}:{},...e.requester?{requester:e.requester}:{},expiresAt:e.expiresAt,signal:i.signal})}catch(e){R.warn(`Sudo approval dialog failed — denying`,{requestId:t,error:e instanceof Error?e.message:String(e)}),a={decision:`deny`}}finally{this.openSudoPrompts.delete(t)}if(i.signal.aborted){n({decision:`deny`});return}n(a)}registerPushToken(e){return this.sync.send({type:`push.register`,...e})}handleExportDenied(e){let t=this.activeExportRequests.get(e);t&&(t.signal.removeEventListener(`abort`,t.onAbort),this.activeExportRequests.delete(e),t.spool.cancel(),t.reject(new o(`permission-denied`)))}async handleExportChunkAsync(e,t,n){let r=this.activeExportRequests.get(e);if(!r)return;if(t!==r.nextExpectedIndex){R.warn(`Transcript export chunk out of order`,{requestId:e,expected:r.nextExpectedIndex,got:t}),r.signal.removeEventListener(`abort`,r.onAbort),this.activeExportRequests.delete(e),this.sync.send({type:`transcript.export.cancel`,requestId:e}),r.spool.cancel(),r.reject(new o(`transfer-corrupt`));return}let i=atob(n),a=new Uint8Array(i.length);for(let e=0;e<i.length;e++)a[e]=i.charCodeAt(e);r.totalBytes+=a.byteLength,r.nextExpectedIndex++,r.onProgress?.({phase:`transferring`,processedBytes:r.totalBytes});try{await r.spool.append(a,t)}catch(t){if(!this.activeExportRequests.has(e))return;r.signal.removeEventListener(`abort`,r.onAbort),this.activeExportRequests.delete(e),this.sync.send({type:`transcript.export.cancel`,requestId:e}),r.spool.cancel(),r.reject(new o(`transfer-corrupt`)),R.warn(`Transcript export spool append failed`,{requestId:e,error:t instanceof Error?t.message:String(t)});return}this.activeExportRequests.has(e)&&this.sync.send({type:`transcript.export.ack`,requestId:e,index:t})}async handleExportComplete(e,t,n,r){let i=this.activeExportRequests.get(e);if(!i)return;if(i.signal.removeEventListener(`abort`,i.onAbort),this.activeExportRequests.delete(e),i.nextExpectedIndex!==t){R.warn(`Transcript export chunk count mismatch`,{requestId:e,expected:t,got:i.nextExpectedIndex}),i.spool.cancel(),i.reject(new o(`transfer-corrupt`));return}let a;try{a=await i.spool.finalize(t,n,r)}catch(t){R.warn(`Transcript export spool finalize failed`,{requestId:e,error:t instanceof Error?t.message:String(t)}),i.reject(new o(`transfer-corrupt`));return}i.resolve(a)}handleExportError(e,t){let n=this.activeExportRequests.get(e);if(!n)return;n.signal.removeEventListener(`abort`,n.onAbort),this.activeExportRequests.delete(e),n.spool.cancel();let r=a.has(t)?t:`transfer-corrupt`;n.reject(new o(r))}},U=class{logger;failureMessage;recoveryMessage;throttleMs;sustainedRelogMs;recoveryDebounceTicks;now;lastErrorLogAt=-1/0;inFailingState=!1;consecutiveSuccesses=0;constructor(e,t){if(!t.failureMessage.trim())throw RangeError(`ThrottledErrorTracker: failureMessage must be non-empty`);if(!t.recoveryMessage.trim())throw RangeError(`ThrottledErrorTracker: recoveryMessage must be non-empty`);let n=t.throttleMs??6e4;if(!Number.isFinite(n)||n<0)throw RangeError(`ThrottledErrorTracker: throttleMs must be a non-negative finite number, got ${n}`);let r=t.sustainedRelogMs??3e5;if(!Number.isFinite(r)||r<0)throw RangeError(`ThrottledErrorTracker: sustainedRelogMs must be a non-negative finite number, got ${r}`);let i=t.recoveryDebounceTicks??5;if(!Number.isInteger(i)||i<1)throw RangeError(`ThrottledErrorTracker: recoveryDebounceTicks must be a positive integer, got ${i}`);this.logger=e,this.failureMessage=t.failureMessage,this.recoveryMessage=t.recoveryMessage,this.throttleMs=n,this.sustainedRelogMs=r,this.recoveryDebounceTicks=i,this.now=t.now??(()=>performance.now())}reportFailure(e){let t=this.inFailingState;this.inFailingState=!0,this.consecutiveSuccesses=0;let n=this.now(),r=n-this.lastErrorLogAt;if(r>(t?this.sustainedRelogMs:this.throttleMs)){let i=t,a=i?`${this.failureMessage} (sustained)`:this.failureMessage;try{try{this.logger.error(a,i?{error:e instanceof Error?e.message:String(e),elapsedMs:Math.round(r)}:{error:e instanceof Error?e.message:String(e)})}catch(t){try{console.error(`[throttled-error-tracker] logger.error threw`,t,{originalMessage:a,originalError:e instanceof Error?e.message:String(e)})}catch{}}}finally{this.lastErrorLogAt=n}}}reportSuccess(){if(this.inFailingState&&(this.consecutiveSuccesses++,!(this.consecutiveSuccesses<this.recoveryDebounceTicks)))try{try{this.logger.error(this.recoveryMessage,{kind:`recovery`})}catch(e){try{console.error(`[throttled-error-tracker] logger.error (recovery) threw`,e,{originalMessage:this.recoveryMessage})}catch{}}}finally{this.inFailingState=!1,this.consecutiveSuccesses=0,this.lastErrorLogAt=-1/0}}};function W(e){if(!e)throw Error(`canonicalRuntimeId: bootstrapId is required`);return e.startsWith(`follower-`)?e:`follower-${e}`}var G=t(`sprinkle-follower`),K=class{sync;addSprinkle;removeSprinkle;zone;openPath;open=new Map;opening=new Set;latestDesiredOpen=new Set;pendingUpdates=new Map;updateListeners=new Map;disposed=!1;constructor(e){this.sync=e.sync,this.addSprinkle=e.addSprinkle,this.removeSprinkle=e.removeSprinkle,this.zone=e.zone,this.openPath=e.open}async updateAvailable(e){if(this.disposed)return;let t=new Map;for(let n of e)n.open&&t.set(n.name,n);this.latestDesiredOpen=new Set(t.keys());for(let e of[...this.open.keys()])t.has(e)||this.closeLocally(e);for(let e of[...this.pendingUpdates.keys()])t.has(e)||this.pendingUpdates.delete(e);let n=[];for(let[e,r]of t)this.open.has(e)||this.opening.has(e)||n.push(this.openLocally(e,r));await Promise.allSettled(n),this.reportInstances()}handleSprinkleUpdate(e,t){if(this.disposed)return;let n=this.open.get(e);if(n){n.renderer.pushUpdate(t),this.fanOutToListeners(e,t);return}if(this.opening.has(e)){this.pendingUpdates.set(e,t);return}G.debug(`Dropping sprinkle.update for unknown sprinkle`,{sprinkleName:e})}async handleSprinkleReloaded(e){if(this.disposed)return;let t=this.open.get(e);if(!t){this.opening.has(e)&&this.pendingUpdates.delete(e);return}this.updateListeners.delete(e);let n;try{n=await this.sync.fetchSprinkleContent(e)}catch(t){G.warn(`Failed to fetch sprinkle content for reload`,{sprinkleName:e,error:t instanceof Error?t.message:String(t)});return}if(this.disposed||!this.open.has(e))return;try{t.renderer.dispose()}catch(t){G.warn(`Sprinkle dispose threw during reload`,{sprinkleName:e,error:t instanceof Error?t.message:String(t)})}let r=this.createBridge(e),i=new x(t.container,r);try{await i.render(n,e)}catch(t){G.warn(`Sprinkle re-render failed during reload`,{sprinkleName:e,error:t instanceof Error?t.message:String(t)})}if(this.disposed||!this.open.has(e)){i.dispose();return}t.renderer=i,i.activateBridgeLifecycle(),this.open.has(e)&&G.info(`Sprinkle reloaded in place`,{sprinkleName:e})}dispose(){if(!this.disposed){this.disposed=!0;for(let e of[...this.open.keys()])this.closeLocally(e);this.pendingUpdates.clear(),this.latestDesiredOpen.clear(),this.updateListeners.clear(),this.reportInstances()}}async openLocally(e,t){this.opening.add(e);let n;try{n=await this.sync.fetchSprinkleContent(e)}catch(t){this.opening.delete(e),this.pendingUpdates.delete(e),G.warn(`Failed to fetch sprinkle content from leader`,{sprinkleName:e,error:t instanceof Error?t.message:String(t)});return}if(this.disposed||!this.latestDesiredOpen.has(e)){this.opening.delete(e),this.pendingUpdates.delete(e);return}let r=document.createElement(`div`);r.className=`sprinkle-panel`,r.style.cssText=`width: 100%; height: 100%; display: flex; flex-direction: column; overflow-y: auto;`,r.dataset.sprinkle=e;let i=this.createBridge(e),a=new x(r,i);this.addSprinkle(e,t.title,r,this.zone,{icon:t.icon});try{await a.render(n,e)}catch(t){G.warn(`Sprinkle render failed`,{sprinkleName:e,error:t instanceof Error?t.message:String(t)})}if(this.disposed||!this.latestDesiredOpen.has(e)){this.updateListeners.delete(e),this.opening.delete(e),this.pendingUpdates.delete(e);try{a.dispose()}catch(t){G.warn(`Sprinkle dispose threw during post-render cleanup`,{sprinkleName:e,error:t instanceof Error?t.message:String(t)})}r.remove();try{this.removeSprinkle(e)}catch(t){G.warn(`removeSprinkle callback threw during post-render cleanup`,{sprinkleName:e,error:t instanceof Error?t.message:String(t)})}return}if(this.open.set(e,{renderer:a,container:r}),this.opening.delete(e),a.activateBridgeLifecycle(),this.reportInstances(),!this.open.has(e))return;let o=this.pendingUpdates.get(e);o!==void 0&&(this.pendingUpdates.delete(e),a.pushUpdate(o),this.fanOutToListeners(e,o))}fanOutToListeners(e,t){let n=this.updateListeners.get(e);if(n)for(let r of[...n])try{r(t)}catch(t){G.warn(`Sprinkle update listener threw`,{sprinkleName:e,error:t instanceof Error?t.message:String(t)})}}reportInstances(){try{this.sync.reportSprinkleInstances([...this.open.keys()])}catch(e){G.debug(`Failed to report sprinkle instances`,{error:e instanceof Error?e.message:String(e)})}}closeLocally(e){this.updateListeners.delete(e),this.pendingUpdates.delete(e);let t=this.open.get(e);if(t){try{t.renderer.dispose()}catch(t){G.warn(`Sprinkle dispose threw`,{sprinkleName:e,error:t instanceof Error?t.message:String(t)})}t.container.remove(),this.open.delete(e);try{this.removeSprinkle(e)}catch(t){G.warn(`removeSprinkle callback threw`,{sprinkleName:e,error:t instanceof Error?t.message:String(t)})}this.reportInstances()}}createBridge(e){return{name:e,lick:t=>{let n=typeof t==`string`?t:t.action,r=typeof t==`string`?void 0:t.data;this.sync.sendSprinkleLick(e,{action:n,data:r})},on:(t,n)=>{if(t!==`update`)return;let r=this.updateListeners.get(e);r||(r=new Set,this.updateListeners.set(e,r)),r.add(n)},off:(t,n)=>{t===`update`&&this.updateListeners.get(e)?.delete(n)},readFile:()=>Promise.reject(Error(`readFile not supported in follower-rendered sprinkle`)),writeFile:()=>Promise.reject(Error(`writeFile not supported in follower-rendered sprinkle`)),readDir:()=>Promise.reject(Error(`readDir not supported in follower-rendered sprinkle`)),exists:()=>Promise.resolve(!1),stat:()=>Promise.reject(Error(`stat not supported in follower-rendered sprinkle`)),mkdir:()=>Promise.reject(Error(`mkdir not supported in follower-rendered sprinkle`)),rm:()=>Promise.reject(Error(`rm not supported in follower-rendered sprinkle`)),screenshot:()=>Promise.reject(Error(`screenshot not supported in follower-rendered sprinkle`)),setState:t=>{try{localStorage.setItem(`slicc-sprinkle-state:${e}`,JSON.stringify(t))}catch(t){G.warn(`Sprinkle setState failed`,{sprinkleName:e,error:t instanceof Error?t.message:String(t)})}},getState:()=>{try{let t=localStorage.getItem(`slicc-sprinkle-state:${e}`);return t?JSON.parse(t):null}catch(t){return G.warn(`Sprinkle getState failed`,{sprinkleName:e,error:t instanceof Error?t.message:String(t)}),null}},open:e=>{if(this.openPath){this.openPath(e);return}let t=/^https?:|^chrome-extension:/.test(e)?e:b(e);window.open(t,`_blank`)},close:()=>this.closeLocally(e),minimize:()=>{},stopCone:()=>{this.sync.sendSprinkleLick(e,{action:`__stopCone__`})},attachImage:()=>{},captureScreen:()=>Promise.reject(Error(`captureScreen not supported in follower-rendered sprinkle`)),exec:Object.assign(()=>Promise.resolve({stdout:``,stderr:`exec not supported in follower-rendered sprinkle
3
+ `,exitCode:127}),{spawn:()=>Promise.resolve({stdout:``,stderr:`exec.spawn not supported in follower-rendered sprinkle
4
+ `,exitCode:127})}),agent:()=>Promise.resolve({stdout:`agent not supported in follower-rendered sprinkle
5
+ `,exitCode:127}),fetch:()=>Promise.reject(Error(`fetch not supported in follower-rendered sprinkle`)),http:{client:()=>{let e=()=>Promise.reject(Error(`http not supported in follower-rendered sprinkle`));return{get:e,post:e,put:e,patch:e,delete:e}}},browser:{findTab:()=>Promise.reject(Error(`browser not supported in follower-rendered sprinkle`)),ensureTab:()=>Promise.reject(Error(`browser not supported in follower-rendered sprinkle`)),eval:()=>Promise.reject(Error(`browser not supported in follower-rendered sprinkle`)),evalAsync:()=>Promise.reject(Error(`browser not supported in follower-rendered sprinkle`)),cookie:()=>Promise.reject(Error(`browser not supported in follower-rendered sprinkle`)),localStorage:()=>Promise.reject(Error(`browser not supported in follower-rendered sprinkle`)),fetch:()=>Promise.reject(Error(`browser not supported in follower-rendered sprinkle`))},hid:{list:()=>Promise.reject(Error(`hid not supported in follower-rendered sprinkle`)),request:()=>Promise.reject(Error(`hid not supported in follower-rendered sprinkle`)),open:()=>Promise.reject(Error(`hid not supported in follower-rendered sprinkle`)),close:()=>Promise.reject(Error(`hid not supported in follower-rendered sprinkle`)),sendReport:()=>Promise.reject(Error(`hid not supported in follower-rendered sprinkle`)),on:()=>{},off:()=>{}},serial:{list:()=>Promise.reject(Error(`serial not supported in follower-rendered sprinkle`)),request:()=>Promise.reject(Error(`serial not supported in follower-rendered sprinkle`)),open:()=>Promise.reject(Error(`serial not supported in follower-rendered sprinkle`)),close:()=>Promise.reject(Error(`serial not supported in follower-rendered sprinkle`))},usb:{list:()=>Promise.reject(Error(`usb not supported in follower-rendered sprinkle`)),request:()=>Promise.reject(Error(`usb not supported in follower-rendered sprinkle`)),open:()=>Promise.reject(Error(`usb not supported in follower-rendered sprinkle`)),close:()=>Promise.reject(Error(`usb not supported in follower-rendered sprinkle`))},readFileBinary:()=>Promise.reject(Error(`readFileBinary not supported in follower-rendered sprinkle`)),writeFileBinary:()=>Promise.reject(Error(`writeFileBinary not supported in follower-rendered sprinkle`)),fetchToFile:()=>Promise.reject(Error(`fetchToFile not supported in follower-rendered sprinkle`)),_jsh:()=>Promise.reject(Error(`jsh globals not supported in follower-rendered sprinkle`)),_device:()=>Promise.reject(Error(`device ops not supported in follower-rendered sprinkle`))}}},q=t(`page-follower-tray`);function J(){f({state:`inactive`,joinUrl:null,trayId:null,error:null,lastPingTime:null,reconnectAttempts:0,attachAttempts:0,lastAttachCode:null,connectingSince:null,lastError:null})}function Y(e,t){e.browserAPI.setTrayTargetProvider(t),e.setChatAgent(t),e.onForwardingToggle?.(!0),e.onConnectionChange?.(!0),t.requestSnapshot(e.getSelectedScoopJid?.()??void 0)}function X(e,t=!1){if(e!==`slicc-cherry`)return{browser:!0,...t?{oauthPopup:!0}:{}}}function ie(e,t){let n=typeof location<`u`&&location.origin?[location.origin]:void 0,r=e.filter(e=>!s(e.url,{selfOrigins:n}));return t===`slicc-cherry`?r.map(e=>({targetId:e.targetId,title:e.title,url:e.url,kind:`cherry`,capabilities:{navigate:!0,network:!1,screenshot:!0}})):r.map(e=>({targetId:e.targetId,title:e.title,url:e.url,kind:`browser`,capabilities:{navigate:!0,network:!0,screenshot:!0}}))}function ae(t){e(async()=>{let{importTheme:e,saveCustomTheme:t,setActiveTheme:n,clearActiveTheme:r,applyThemeOverrides:i}=await import(`./theme-engine-By4GU_Wc.js`).then(e=>e.p);return{importTheme:e,saveCustomTheme:t,setActiveTheme:n,clearActiveTheme:r,applyThemeOverrides:i}},__vite__mapDeps([0,1,2])).then(({importTheme:e,saveCustomTheme:n,setActiveTheme:r,clearActiveTheme:i,applyThemeOverrides:a})=>{if(!t)i();else{let i=e(t);n(i),r(i.id)}a()}).catch(e=>q.error(`Failed to apply leader theme`,{err:e}))}function oe(e){let t=e._refreshIntervalMs??5e3,n=null,r=null,i=null,a=null,o=(t=!0)=>{i&&=(clearInterval(i),null),r&&=(r.dispose(),null),n&&=(e.onForwardingToggle?.(!1),t&&e.onConnectionChange?.(!1),e.browserAPI.setTrayTargetProvider(null),n.close(),null)};return a=c({joinUrl:e.joinUrl,runtime:e.runtime??`slicc-standalone`,fetchImpl:e._fetchImpl,peerConnectionFactory:e._peerConnectionFactory,sleep:e._sleep,onJoinUrlChanged:e.onJoinUrlChanged},{onConnected:a=>{o();let s=W(a.bootstrapId),c=null,l=new H(a.channel,{browserTransport:e.browserAPI.getTransport(),browserAPI:e.browserAPI,helloCapabilities:X(e.runtime,!!e.onOAuthPopupRequest),onOAuthPopupRequest:e.onOAuthPopupRequest,onSnapshot:e.onSnapshot,onUserMessage:e.onUserMessage,onStatus:e.onStatus,onCherrySliccEvent:e.onCherrySliccEvent,onTargetsUpdated:e.onTargetsUpdated,onScoopsList:e.onScoopsList,onModelsList:e.onModelsList,onModelState:e.onModelState,onThemeApply:ae,onSudoApprovalRequest:e.onSudoApprovalRequest,onBiscottoMessageState:e.onBiscottoMessageState,selfRuntimeId:s,onTargetsChanged:()=>void d(),onSprinklesList:t=>{e.onSprinklesList?.(t),c?.updateAvailable(t)},onSprinkleUpdate:(e,t)=>c?.handleSprinkleUpdate(e,t),onSprinkleReloaded:e=>void c?.handleSprinkleReloaded(e),onLeaderStalled:t=>e.onLeaderStalled?.(t),onDisconnect:e=>{q.warn(`Follower sync disconnected`,{reason:e}),o()}});e.addSprinkle&&e.removeSprinkle&&(c=new K({sync:l,addSprinkle:e.addSprinkle,removeSprinkle:e.removeSprinkle,open:e.onOpen}),r=c);let u=new U(q,{failureMessage:`Follower CDP target listing failed (best-effort, throttled)`,recoveryMessage:`Follower CDP target listing recovered (stable for debounce window)`}),d=async()=>{if(e.advertisesCdpTargets===!1)return;let t;try{t=await e.browserAPI.listPages()}catch(e){u.reportFailure(e);return}if(n===l){u.reportSuccess();try{l.advertiseTargets(ie(t,e.runtime??`slicc-standalone`),s)}catch(e){q.error(`Follower target advertisement broadcast failed (sync.advertiseTargets threw)`,{error:e instanceof Error?e.message:String(e)})}}};n=l,Y(e,l),e.advertisesCdpTargets!==!1&&(i=setInterval(()=>void d(),t),d()),q.info(`Follower sync wired`,{trayId:a.trayId})},onReconnecting:e=>{q.info(`Follower reconnecting`,{attempt:e})},onGaveUp:t=>{q.warn(`Follower reconnect gave up`,{lastError:t}),o(!1),e.onGaveUp?.(t)},sleep:e._sleep}),{stop(){o(),a?.cancel(),a=null,J()},get currentSync(){return n}}}var se=new Set([`thinking`,`tool`,`awaiting`]);function ce(e){let t=e?.state??`idle`;return t===`working`?{state:t,activity:e?.phase===`tool`?`tool`:`thinking`}:t===`idle`&&e?.awaiting?{state:t,activity:`awaiting`}:{state:t}}function le(e){let t=e.state??`idle`,n=se.has(e.activity??``)?e.activity:void 0;return t===`working`?{state:t,phase:n===`tool`?`tool`:`thinking`}:t===`idle`&&n===`awaiting`?{state:t,awaiting:!0}:{state:t}}function ue(e,t){let n=new Map(t.map(e=>[e.key,e]));return e.map(e=>{let t=n.get(e.jid),r=_(e);return{jid:e.jid,name:e.name,folder:e.folder,isCone:g(e),parentId:e.parentJid,assistantLabel:e.assistantLabel,...e.addedAt?{addedAt:e.addedAt}:{},trigger:e.trigger,...r?{model:r}:{},...ce(t),fill:typeof t?.fill==`number`?t.fill:0}})}function de(e){return e.parentId===void 0?e.isCone:e.parentId===null}function Z(e){let t=le(e);return{id:e.jid,parentId:e.parentId,role:de(e)?`primary`:`child`,name:e.name,folder:e.folder,assistantLabel:e.assistantLabel,state:t.state??`idle`,...t.phase?{phase:t.phase}:{},...t.awaiting?{awaiting:!0}:{},fill:typeof e.fill==`number`?e.fill:0,...e.model?{model:e.model}:{},...e.trigger?{trigger:e.trigger}:{},...e.addedAt?{addedAt:e.addedAt}:{}}}function fe(e,t){return ne(e.map(Z),t,h)}var Q=t(`follower-oauth`),pe=`slicc-oauth-relay`,me=12e4,he=1500;function ge(e){try{let t=new URL(e).searchParams.get(`state`);if(!t)return null;let n=JSON.parse(atob(t));return typeof n.nonce==`string`&&n.nonce?n.nonce:null}catch{return null}}function $(e,t,n,r){return new Promise(i=>{let a=[],o=!1,s=t=>{if(!o){o=!0;for(let e of a)e();try{e?.close()}catch{}i(t)}},c=(e,t)=>{if(e?.type===`oauth-callback`&&typeof e.redirectUrl==`string`){if(r&&e.nonce&&e.nonce!==r){Q.debug(`Ignoring an OAuth callback for a different flow`,{via:t});return}Q.info(`Delegated OAuth callback received`,{via:t}),s(e.redirectUrl)}};try{let e=new BroadcastChannel(pe);e.onmessage=e=>c(e.data,`broadcast`),a.push(()=>e.close())}catch(e){Q.warn(`BroadcastChannel unavailable for OAuth delivery`,{error:String(e)})}let l=e=>{e.origin===t.window.location.origin&&c(e.data,`postMessage`)};if(t.window.addEventListener(`message`,l),a.push(()=>t.window.removeEventListener(`message`,l)),e){let t=setInterval(()=>{if(!e.closed)return;clearInterval(t);let n=setTimeout(()=>s(null),he);a.push(()=>clearTimeout(n))},500);a.push(()=>clearInterval(t))}let u=setTimeout(()=>{Q.warn(`Delegated OAuth popup timed out`),s(null)},me);a.push(()=>clearTimeout(u));let d=()=>s(null);n.addEventListener(`abort`,d),a.push(()=>n.removeEventListener(`abort`,d)),n.aborted&&s(null)})}async function _e(e,t,n){if(t.aborted)return null;let r=n.getPermissionsSurface();if(!r)throw Error(`no permissions surface available to approve the login`);let i=await r.prompt({kinds:[`popup`],description:`Continue to sign in. A new window will open to the provider.`,grantLabel:`Continue`,requestOptions:{popup:{url:e}}});if(i.status!==`granted`)return null;let a=i.grants.find(e=>e.kind===`popup`);return $(a&&a.kind===`popup`?a.window:null,n,t,ge(e))}export{oe as a,V as c,re as d,ue as i,D as l,Z as n,W as o,fe as r,U as s,_e as t,T as u};
@@ -0,0 +1,8 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/provider-settings-B60i2ftL.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/account-store-B_euqvU1.js","assets/preload-helper-Czpn1I53.js","assets/claude-model-version-C0HLsjny.js","assets/models-BSkXF4T6.js","assets/diagnostics-DN_idNHx.js","assets/provider-env-CTOcDKrQ.js","assets/__vite-browser-external-5eBdwsFd.js","assets/openrouter.models-BxrUfzom.js","assets/libesm-BypnjKEL.js","assets/logger-DDBAeTLF.js","assets/src-CAWTvdAa.js","assets/proxied-fetch-CFWkfPNA.js","assets/base64-DJRlyqZu.js","assets/runtime-env-Dlaokqg1.js","assets/fetch-body-D2PwksUW.js","assets/api-endpoint-GRCyib6X.js","assets/float-topology-BYb7rxY5.js","assets/runtime-env-E-i2SW1s.js","assets/secret-topology-BE7Eyd3P.js","assets/secrets-bridge-client-H8-Z1RVR.js","assets/port-bridge-client-Cti-DmEY.js","assets/image-markers-CxJ9ZBgw.js","assets/tool-ui-eSQ1g2I1.js","assets/providers-Drh9RBhg.js","assets/panel-rpc-B3MSVImO.js","assets/bedrock-camp-compat-CgBMwna8.js","assets/telemetry-BVzuNdvW.js","assets/runtime-env-CgsZ7LTp.js","assets/tray-runtime-config-CluPgaPA.js","assets/messages-BD4p8GuF.js","assets/tray-follower-status-BAjnN7Ar.js","assets/clipboard-eqmn97SP.js","assets/tray-join-url-BIvzbiFR.js","assets/chat-session-store-pWb1-jNp.js","assets/wc-placeholder-Cgt7DIlO.js","assets/dictation-priming-CNllGgNq.js","assets/wc-attach-Dc31zmRt.js","assets/permissions-surface-registry-CilCRwhh.js","assets/session-freezer-CNHYB1nc.js","assets/attachments-329cIT1j.js","assets/types-idfTVsM8.js","assets/icons-ZLR7gmJ4.js","assets/record-D153M47x.js","assets/agent-message-to-chat-Cc7vTUN1.js","assets/voice-reply-Bl9WzOJ_.js","assets/speak-DW89OFqf.js","assets/speech-assets-bridge-CFYafE89.js","assets/transformers-env-plTpP5Zy.js","assets/shared-2T6O01rS.js","assets/mime-types-k2E6ulyv.js","assets/soundscape-TvriK11t.js","assets/soundscape-cues-5_sT5Un6.js","assets/legacy-styles-DcRu2WCJ.js","assets/theme-CXRqxpw6.js","assets/theme-engine-By4GU_Wc.js","assets/export-provider-BEHTjSYw.js","assets/quick-llm-DunO9KZO.js","assets/llm-session-id-bZQs6gBN.js","assets/new-session-D_qcj8sH.js","assets/feature-flags-ByMXaIc4.js","assets/db-cKsBsMMN.js","assets/mount-table-store-dY2IfQ5S.js","assets/remote-vfs-client-CN1pCs1m.js","assets/writable-vfs-client-CuBjWhy3.js","assets/wc-onboarding-BOs5rY9y.js","assets/welcome-detection-BxyK5SuW.js","assets/dip-DKmRJ7Vw.js","assets/hid-device-registry-B2R-0rNt.js","assets/serial-port-registry-CCqklAEr.js","assets/usb-operations-BBXJ4GF8.js","assets/usb-device-registry-CRsCisej.js","assets/sprinkle-renderer-1C1DNVyK.js","assets/sprinkle-bridge-D4YmJlZ6.js","assets/wc-browser-CYph9bTu.js","assets/slicc-app-url-BsBryEhn.js","assets/tab-teleport-ChkQ1rYc.js","assets/teleport-storage-Beud1T6_.js","assets/remote-terminal-view-DpxIbz7w.js","assets/mount-picker-popup-DFcbLJQx.js","assets/picker-popup-bwFI7R4q.js","assets/browser-DGwroBSO.js","assets/serial-picker-Cfjtv7AL.js","assets/picker-popup-Epy7NPEK.js","assets/hid-picker-BcXVbHb2.js","assets/usb-picker-D-B9HZ67.js","assets/terminal-session-client-ADzaWGFd.js","assets/secret-env-CvkpMxjz.js","assets/wc-permissions-C77Upopt.js","assets/wc-permissions-providers-CKzd9Xhn.js","assets/timestamp-preference-sKwBl5I8.js","assets/panelize-shell-CYxm6Ct5.js","assets/virtual-device-paths-D45tpPP6.js","assets/wc-shell-DPug1uqg.js","assets/speech-C5U8h4In.js","assets/wc-shell-WkeczD9x.css","assets/layout-apply-registry-Cw730jao.js","assets/wc-shortcut-config-KuxMSZRS.js","assets/remote-sprinkle-vfs-CawR6gXx.js","assets/wc-sprinkles-DDuK1vDI.js","assets/wc-unit-context-BaavrvD8.js","assets/agent-panels-DXR6E-bx.js","assets/apply-layout-DPUrW7E1.js","assets/wc-tray-CAP6mm59.js","assets/tray-webrtc-DfkvaMcO.js","assets/tray-sync-protocol-BZ5yhJH9.js","assets/wc-follower-oauth-C-U310E1.js","assets/remote-cdp-transport-CgOXLjZ8.js","assets/pending-request-table-Dgn6qYdL.js","assets/tray-sync-protocol-BlwQKL0e.js","assets/export-spool-Eul4J1RP.js","assets/src-BWaKqLvQ.js","assets/logger-BoSvu4mW.js","assets/handoff-link-BzmwBKCE.js","assets/path-utils-DNJG-zQf.js","assets/tray-leader-BkvHMG47.js","assets/synthetic-cdp-transport-Ds83IPjw.js","assets/sprinkle-instances-B8n7h-oP.js","assets/follower-presentation-DqBw0YiV.js","assets/wc-transcript-export-DKIleW7-.js","assets/wc-nav-TcC8J6nL.js","assets/composer-speech-C08Pruqj.js","assets/whisper-session-B1agEx3i.js","assets/wc-float-label-CwzsTOti.js","assets/wc-floatbar-online-CCdIg4mG.js","assets/setup-sudo-B0OWsay7.js"])))=>i.map(i=>d[i]);
2
+ import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{C as t,L as n,R as r,S as i,d as a}from"./account-store-B_euqvU1.js";import{t as o}from"./preload-helper-Czpn1I53.js";import{t as s}from"./logger-DDBAeTLF.js";import{r as c,t as l}from"./base64-DJRlyqZu.js";import{a as u,n as d,r as f,t as p}from"./src-CAWTvdAa.js";import"./proxied-fetch-CFWkfPNA.js";import{a as m,i as h,n as g,r as _}from"./setup-standalone-prelude-B8nDv9xv.js";import{i as v,t as y}from"./api-endpoint-GRCyib6X.js";import{n as b}from"./float-topology-BYb7rxY5.js";import"./secret-topology-BE7Eyd3P.js";import{n as x}from"./secrets-bridge-client-H8-Z1RVR.js";import{t as S}from"./tool-ui-eSQ1g2I1.js";import{a as ee,c as te,l as C,n as ne,r as re,u as ie}from"./telemetry-BVzuNdvW.js";import{r as w}from"./feature-flags-ByMXaIc4.js";import{h as ae,m as oe,o as se,p as ce}from"./tray-runtime-config-CluPgaPA.js";import{i as le,t as ue}from"./tray-follower-status-BAjnN7Ar.js";import{n as de}from"./src-BWaKqLvQ.js";import"./browser-DGwroBSO.js";import{B as fe,C as pe,S as me,T,V as he,_ as ge,a as _e,b as ve,c as ye,g as be,h as xe,i as Se,l as Ce,m as we,n as Te,o as Ee,p as De,r as Oe,t as ke,v as Ae,w as je,x as Me,y as Ne}from"./wc-shell-DPug1uqg.js";import{t as Pe}from"./chat-session-store-pWb1-jNp.js";import{i as Fe,r as Ie}from"./tray-leader-BkvHMG47.js";import{a as Le,c as E,d as Re,i as D,n as ze,o as Be,s as Ve,u as O}from"./record-D153M47x.js";import{n as He}from"./shared-2T6O01rS.js";import{a as Ue,n as We,t as Ge}from"./dictation-priming-CNllGgNq.js";import{n as Ke}from"./export-provider-BEHTjSYw.js";import{a as qe,i as Je,r as Ye}from"./dip-DKmRJ7Vw.js";import{c as k,d as Xe,f as Ze,l as Qe,m as $e,p as et,s as tt,u as A}from"./session-freezer-CNHYB1nc.js";import{a as nt,c as rt,i as it,o as at,s as ot}from"./follower-presentation-DqBw0YiV.js";import{a as j,c as st,f as ct,i as lt,l as ut,m as dt,n as ft,o as M,p as N,r as pt,s as mt,t as P,u as F}from"./wc-unit-context-BaavrvD8.js";var ht=`agent-sessions`,gt=1,I=`sessions`;function _t(){return new Promise((e,t)=>{let n=indexedDB.open(ht,gt);n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(I)||e.createObjectStore(I,{keyPath:`id`})},n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)})}var vt=class{dbPromise=null;getDB(){return this.dbPromise||=_t().then(e=>(e.onversionchange=()=>{e.close(),this.dbPromise=null},e.onclose=()=>{this.dbPromise=null},e)),this.dbPromise}async save(e){let t=await this.getDB();return new Promise((n,r)=>{let i=t.transaction(I,`readwrite`).objectStore(I).put(e);i.onsuccess=()=>n(),i.onerror=()=>r(i.error)})}async load(e){let t=await this.getDB();return new Promise((n,r)=>{let i=t.transaction(I,`readonly`).objectStore(I).get(e);i.onsuccess=()=>n(i.result??null),i.onerror=()=>r(i.error)})}async delete(e){let t=await this.getDB();return new Promise((n,r)=>{let i=t.transaction(I,`readwrite`).objectStore(I).delete(e);i.onsuccess=()=>n(),i.onerror=()=>r(i.error)})}async loadAll(){let e=await this.getDB();return new Promise((t,n)=>{let r=e.transaction(I,`readonly`).objectStore(I).getAll();r.onsuccess=()=>t(r.result??[]),r.onerror=()=>n(r.error)})}async list(){let e=await this.getDB();return new Promise((t,n)=>{let r=e.transaction(I,`readonly`).objectStore(I).getAll();r.onsuccess=()=>{t((r.result??[]).map(e=>({id:e.id,updatedAt:e.updatedAt})))},r.onerror=()=>n(r.error)})}async clearAll(){let e=await this.getDB();return new Promise((t,n)=>{let r=e.transaction(I,`readwrite`).objectStore(I).clear();r.onsuccess=()=>t(),r.onerror=()=>n(r.error)})}static newId(){return`session-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}static createSession(e,t){let n=Date.now();return{id:e,messages:[],config:t,createdAt:n,updatedAt:n}}static updateMessages(e,t){return{...e,messages:t,updatedAt:Date.now()}}},yt=`__slicc_binary__`,bt=`b64`;function xt(e){if(!e||typeof e!=`object`)return!1;let t=e;return t[yt]===bt&&typeof t.data==`string`}function St(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Uint8Array)}function Ct(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Uint8Array)&&!xt(e)}function L(e){if(e instanceof Uint8Array)return{[yt]:bt,data:c(e)};if(Array.isArray(e))return e.map(L);if(St(e)){let t={};for(let[n,r]of Object.entries(e))t[n]=L(r);return t}return e}function R(e){if(xt(e))return l(e.data);if(Array.isArray(e))return e.map(R);if(Ct(e)){let t={};for(let[n,r]of Object.entries(e))t[n]=R(r);return t}return e}var wt=s(`panel-transport`);function Tt(e){return typeof e==`object`&&!!e&&`source`in e&&`payload`in e}function Et(){return{onMessage:e=>{let t=(t,n,r)=>(Tt(t)&&e(R(t)),!1);return chrome.runtime.onMessage.addListener(t),()=>chrome.runtime.onMessage.removeListener(t)},send:(e,t)=>{let n=L(e);chrome.runtime.sendMessage({source:`panel`,payload:n}).catch(e=>{wt.error(`failed to send to offscreen`,{error:e instanceof Error?e.message:String(e)})})}}}var Dt=`unknown-parent`,Ot=2e3,z=s(`offscreen-client`),kt=class{eventListeners=new Set;callbacks;scoops=[];scoopStatuses=new Map;currentMessageId=new Map;toolDepth=new Map;ready=!1;stateRetryTimer=null;localFs=null;pendingClearAcks=new Map;pendingWebhookDeliveries=new Map;pendingAgentSpawnRequests=new Map;pendingThinkingAcks=new Map;pendingModelAcks=new Map;pendingTranscriptRequests=new Map;pendingChatMessagesRequests=new Map;pendingStatsRequests=new Map;pendingSudoRequests=new Map;transport;_selectedScoopJid=null;get selectedScoopJid(){return this._selectedScoopJid}scoopSelectedListeners=new Set;onScoopSelected(e){return this.scoopSelectedListeners.add(e),()=>{this.scoopSelectedListeners.delete(e)}}setSelectedScoopJid(e){if(this._selectedScoopJid!==e&&(this._selectedScoopJid=e,e!==null))for(let t of this.scoopSelectedListeners)try{t(e)}catch(e){z.error(`onScoopSelected handler threw`,{error:e instanceof Error?e.message:String(e)})}}locked=!1;constructor(e,t){this.callbacks=e,this.transport=t??Et(),this.setupMessageListener()}setLocalFS(e){this.localFs=e}getTransport(){return this.transport}createAgentHandle(){return{sendMessage:(e,t,n,r)=>{if(!this.selectedScoopJid){this.emitToUI({type:`error`,error:`No scoop selected`});return}this.send({type:`user-message`,scoopJid:this.selectedScoopJid,text:e,attachments:n,messageId:t??`msg-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,...r?.steer?{steer:!0}:{},...r?.guestGate?{guestGate:r.guestGate}:{}})},onEvent:e=>(this.eventListeners.add(e),()=>this.eventListeners.delete(e)),stop:()=>{this.selectedScoopJid&&this.send({type:`abort`,scoopJid:this.selectedScoopJid})}}}getScoops(){return this.scoops}getScoop(e){return this.scoops.find(t=>t.jid===e)}isProcessing(e){return this.scoopStatuses.get(e)===`processing`}async registerScoop(e,t={}){if(!E(e))throw Error(`OffscreenClient.registerScoop is cone-only; use scoop_scoop for non-cone scoops`);this.scoops.find(t=>t.name===e.name)||(this.scoops.push(e),this.scoopStatuses.set(e.jid,`initializing`)),this.send({type:`cone-create`,name:e.name,...t.description?{description:t.description}:{},...t.prompt?{prompt:t.prompt}:{},...e.model?{model:e.model}:{}})}async unregisterScoop(e){let t=this.scoops.find(t=>t.jid===e);if(t&&E(t)&&O(this.scoops).length<=1)throw Error(`Cannot remove the last cone`);this.send({type:`scoop-drop`,scoopJid:e}),this.scoops=this.scoops.filter(t=>t.jid!==e),this.scoopStatuses.delete(e)}createScoopTab(e){}async getGlobalMemory(){if(!this.localFs)return``;try{let e=await this.localFs.readFile(`/shared/CLAUDE.md`,{encoding:`utf-8`});return typeof e==`string`?e:new TextDecoder().decode(e)}catch{return``}}getScoopContext(e){if(this.localFs)return{getFS:()=>this.localFs}}getSharedFS(){return this.localFs}stopScoop(e){this.send({type:`abort`,scoopJid:e})}async clearQueuedMessages(e){}async deleteQueuedMessage(e,t){this.send({type:`delete-queued-message`,scoopJid:e,messageId:t})}updateModel(){this.send({type:`refresh-model`})}setScoopModel(e,t){let n=`model-${B()}`,r=new Promise(e=>{this.pendingModelAcks.set(n,e)});return this.send({type:`set-scoop-model`,requestId:n,scoopJid:e,model:t}),Promise.race([r,new Promise(e=>setTimeout(()=>e(!1),5e3))]).finally(()=>this.pendingModelAcks.delete(n))}setLocked(e){this.locked=e}setScoopThinkingLevel(e,t,n){let r=`thinking-${B()}`,i=new Promise(e=>{this.pendingThinkingAcks.set(r,e)});return this.send({type:`set-thinking-level`,requestId:r,scoopJid:e,level:t,effortOverride:n}),Promise.race([i,new Promise(e=>setTimeout(()=>e(!1),5e3))]).finally(()=>this.pendingThinkingAcks.delete(r))}async clearAllMessages(e){let t=`clear-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,n=new Promise(e=>{this.pendingClearAcks.set(t,e)});this.send({type:`clear-chat`,requestId:t,...e?{scoopJid:e}:{}}),await Promise.race([n,new Promise(e=>setTimeout(e,5e3))]),this.pendingClearAcks.delete(t)}spawnAgent(e){let t=`agent-${B()}`,n=new Promise((e,n)=>{this.pendingAgentSpawnRequests.set(t,{resolve:e,reject:n})}),{signal:r,...i}=e;return this.send({type:`agent-spawn-request`,requestId:t,options:i}),r&&(r.aborted?this.send({type:`agent-spawn-abort`,requestId:t}):r.addEventListener(`abort`,()=>this.send({type:`agent-spawn-abort`,requestId:t}),{once:!0})),n}clearFilesystem(){this.send({type:`clear-filesystem`})}requestScoopMessages(e){this.send({type:`request-scoop-messages`,scoopJid:e})}async getScoopTranscript(e){let t=`tr-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,n=new Promise(e=>{this.pendingTranscriptRequests.set(t,e)});this.send({type:`request-scoop-transcript`,requestId:t,scoopJid:e});let r=await Promise.race([n,new Promise(e=>setTimeout(()=>e(``),5e3))]);return this.pendingTranscriptRequests.delete(t),r}async getMessagesForScoop(e){let t=`cm-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,n=new Promise(e=>{this.pendingChatMessagesRequests.set(t,e)});this.send({type:`request-scoop-chat-messages`,requestId:t,scoopJid:e});let r=!1,i=await Promise.race([n,new Promise(e=>setTimeout(()=>{r=!0,e([])},5e3))]);return this.pendingChatMessagesRequests.delete(t),r&&z.warn(`getMessagesForScoop timed out`,{scoopJid:e}),i}async requestSudoApproval(e,t=6e5){let n=`sudo-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,r=new Promise(e=>{this.pendingSudoRequests.set(n,e)});this.send({type:`request-sudo-approval`,requestId:n,request:e});let i=await Promise.race([r,new Promise(e=>setTimeout(()=>e({decision:`deny`}),t))]);return this.pendingSudoRequests.delete(n),i}async getSessionStats(){let e=`st-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,t=new Promise(t=>{this.pendingStatsRequests.set(e,t)});this.send({type:`request-session-stats`,requestId:e});let n=await Promise.race([t,new Promise(e=>setTimeout(()=>e(null),5e3))]);return this.pendingStatsRequests.delete(e),n}requestState(){this.send({type:`request-state`});let e=0;this.stateRetryTimer=setInterval(()=>{if(e++,this.ready||e>20){this.stateRetryTimer&&=(clearInterval(this.stateRetryTimer),null);return}z.debug(`Retrying request-state`,{attempt:e}),this.send({type:`request-state`})},500)}isReady(){return this.ready}sprinkleOpHandler=null;forwardLickHandler=null;sendSprinkleLick(e,t,n,r){this.send({type:`sprinkle-lick`,sprinkleName:e,body:t,targetScoop:n,originLabel:r})}sendToolUiAction(e,t,n){this.send({type:`tool-ui-action`,requestId:e,action:t,data:n})}async sendWebhookEvent(e,t,n){let r=`wh-${B()}`,i=new Promise(e=>{this.pendingWebhookDeliveries.set(r,e)});this.send({type:`lick-webhook-event`,webhookId:e,headers:t,body:n,requestId:r});try{return await Promise.race([i,new Promise(e=>setTimeout(()=>e(null),Ot))])}finally{this.pendingWebhookDeliveries.delete(r)}}sendSetFollowerForwarding(e){this.send({type:`set-follower-forwarding`,enabled:e})}sendForwardedLick(e){this.send({type:`inject-forwarded-lick`,event:e})}setForwardLickHandler(e){this.forwardLickHandler=e}sendCherryHostEvent(e,t,n){this.send({type:`lick-cherry-host-event`,cherryRuntimeId:e,name:t,detail:n})}sendPreviewLick(e){this.send({type:`lick-preview`,event:e})}setSprinkleOpHandler(e){this.sprinkleOpHandler=e}sendRaw(e){this.send(e)}setupMessageListener(){this.transport.onMessage(e=>{if(e.source!==`offscreen`)return;let t=e.payload;t?.type===`sprinkle-op`&&this.sprinkleOpHandler?this.sprinkleOpHandler(t):this.handleOffscreenMessage(e.payload)})}handleOffscreenMessage(e){switch(e.type){case`offscreen-ready`:this.ready?(z.warn(`Offscreen restarted — re-requesting state`),this.ready=!1):z.info(`Offscreen engine ready`),this.send({type:`request-state`});break;case`agent-event`:this.handleAgentEvent(e);break;case`scoop-status`:this.handleScoopStatus(e);break;case`compaction-state`:this.callbacks.onCompactionStateChange?.(e.scoopJid,e.state),this.renderCompactionNotice(e.scoopJid,e.state);break;case`clear-chat-ack`:{let t=this.pendingClearAcks.get(e.requestId);t&&(this.pendingClearAcks.delete(e.requestId),t());break}case`lick-webhook-delivery`:{let t=this.pendingWebhookDeliveries.get(e.requestId);t&&(this.pendingWebhookDeliveries.delete(e.requestId),t(e.disposition));break}case`agent-spawn-result`:this.handleAgentSpawnResult(e);break;case`set-scoop-model-ack`:this.handleScoopModelAck(e);break;case`set-thinking-level-ack`:this.handleThinkingLevelAck(e);break;case`scoop-created`:this.handleScoopCreated(e);break;case`scoop-list`:this.handleScoopList(e);break;case`state-snapshot`:this.handleStateSnapshot(e);break;case`error`:this.handleError(e);break;case`lick-backpressure`:this.callbacks.onLickBackpressure?.(e.scoopJid,{count:e.count,waitingMs:e.waitingMs});break;case`incoming-message`:this.handleIncomingMessage(e);break;case`message-updated`:this.handleMessageUpdated(e);break;case`scoop-messages-replaced`:{let t=e;this.resyncStreamPointer(t.scoopJid,t.messages),this.callbacks.onScoopMessagesReplaced?.(t.scoopJid,t.messages,t.queuedIds);break}case`scoop-transcript`:{let t=e,n=this.pendingTranscriptRequests.get(t.requestId);n&&(this.pendingTranscriptRequests.delete(t.requestId),n(t.transcript));break}case`scoop-chat-messages`:{let t=e,n=this.pendingChatMessagesRequests.get(t.requestId);n&&(this.pendingChatMessagesRequests.delete(t.requestId),n(t.messages));break}case`sudo-approval`:{let t=e,n=this.pendingSudoRequests.get(t.requestId);n&&(this.pendingSudoRequests.delete(t.requestId),n(t.decision));break}case`session-stats`:{let t=e,n=this.pendingStatsRequests.get(t.requestId);n&&(this.pendingStatsRequests.delete(t.requestId),n({totalCost:t.totalCost,burnRate:t.burnRate,fills:t.fills,models:t.models??[],scoops:t.scoops??[]}));break}case`tray-runtime-status`:{let t=e;At(t.leader,t.follower);break}case`forward-lick`:this.forwardLickHandler?.(e.event);break;case`terminal-status`:case`terminal-output`:case`terminal-media-preview`:case`terminal-exit`:case`terminal-cleared`:for(let t of this.terminalEventListeners)try{t(e)}catch(e){z.error(`terminal event listener error`,{error:e instanceof Error?e.message:String(e)})}}}handleAgentSpawnResult(e){let t=this.pendingAgentSpawnRequests.get(e.requestId);t&&(this.pendingAgentSpawnRequests.delete(e.requestId),e.ok?t.resolve(e.result):t.reject(Error(e.error)))}terminalEventListeners=new Set;onTerminalEvent(e){return this.terminalEventListeners.add(e),()=>this.terminalEventListeners.delete(e)}resyncStreamPointer(e,t){let n;for(let e=t.length-1;e>=0;e--){let r=t[e];if(r.role===`assistant`&&r.isStreaming){n=r.id;break}}n===void 0?this.currentMessageId.delete(e):this.currentMessageId.set(e,n)}trackToolPhase(e,t){let n=this.toolDepth.get(e)??0,r=t===null?0:Math.max(0,n+t);r===0?this.toolDepth.delete(e):this.toolDepth.set(e,r),n>0!=r>0&&this.callbacks.onScoopPhaseChange?.(e,r>0?`tool`:`thinking`)}handleToolUiAgentEvent(e){if(e.displayScoopJid){let t=`tool-ui-${e.requestId??``}`;e.eventType===`tool_ui`?this.emitToUI({type:`tool_ui`,messageId:t,toolName:e.toolName??``,requestId:e.requestId??``,html:e.html??``}):e.eventType===`tool_ui_done`&&this.emitToUI({type:`tool_ui_done`,messageId:t,requestId:e.requestId??``});return}if(e.eventType===`tool_ui`){let t=this.currentMessageId.get(e.scoopJid);t||(t=`scoop-${e.scoopJid}-${B()}`,this.currentMessageId.set(e.scoopJid,t),this.emitToUI({type:`message_start`,messageId:t})),this.emitToUI({type:`tool_ui`,messageId:t,toolName:e.toolName??``,requestId:e.requestId??``,html:e.html??``});return}let t=this.currentMessageId.get(e.scoopJid);t&&(e.eventType===`tool_ui_done`?this.emitToUI({type:`tool_ui_done`,messageId:t,requestId:e.requestId??``}):e.progress&&this.emitToUI({type:`tool_progress`,messageId:t,toolName:e.toolName??``,progress:e.progress,toolCallId:e.toolCallId}))}handleAgentEvent(e){switch(e.eventType){case`text_delta`:case`tool_start`:case`tool_ui`:case`turn_end`:this.callbacks.onScoopActivity?.(e.scoopJid)}switch(e.eventType){case`tool_start`:this.trackToolPhase(e.scoopJid,1);break;case`tool_end`:this.trackToolPhase(e.scoopJid,-1);break;case`turn_end`:this.trackToolPhase(e.scoopJid,null)}if((e.displayScoopJid??e.scoopJid)===this.selectedScoopJid)switch(e.eventType){case`text_delta`:{let t=this.currentMessageId.get(e.scoopJid);t||(t=`scoop-${e.scoopJid}-${B()}`,this.currentMessageId.set(e.scoopJid,t),this.emitToUI({type:`message_start`,messageId:t})),this.emitToUI({type:`content_delta`,messageId:t,text:e.text??``});break}case`tool_start`:{let t=this.currentMessageId.get(e.scoopJid);t||(t=`scoop-${e.scoopJid}-${B()}`,this.currentMessageId.set(e.scoopJid,t),this.emitToUI({type:`message_start`,messageId:t})),this.emitToUI({type:`tool_use_start`,messageId:t,toolName:e.toolName??``,toolInput:e.toolInput,toolCallId:e.toolCallId});break}case`tool_end`:{let t=this.currentMessageId.get(e.scoopJid);t&&this.emitToUI({type:`tool_result`,messageId:t,toolName:e.toolName??``,result:e.toolResult??``,isError:e.isError,toolCallId:e.toolCallId});break}case`tool_ui`:case`tool_ui_done`:case`tool_progress`:this.handleToolUiAgentEvent(e);break;case`response_done`:{let t=this.currentMessageId.get(e.scoopJid);t&&(this.emitToUI({type:`content_done`,messageId:t,model:e.model,usage:e.usage}),this.currentMessageId.delete(e.scoopJid));break}case`turn_end`:{let t=this.currentMessageId.get(e.scoopJid)??`done-${e.scoopJid}-${B()}`;this.currentMessageId.delete(e.scoopJid),this.emitToUI({type:`turn_end`,messageId:t});break}}}renderCompactionNotice(e,t){if(e!==this.selectedScoopJid)return;let n;if(t===`summarizing`)n=`Context window almost exceeded — compacting history…`;else if(t===`fallback`)n=`Compaction summarization failed — continuing with older messages truncated.`;else return;let r=`compaction-${e}-${B()}`;this.emitToUI({type:`message_start`,messageId:r}),this.emitToUI({type:`content_delta`,messageId:r,text:n}),this.emitToUI({type:`content_done`,messageId:r})}handleScoopStatus(e){let t=this.scoopStatuses.get(e.scoopJid);this.scoopStatuses.set(e.scoopJid,e.status),t!==e.status&&this.trackToolPhase(e.scoopJid,null),this.callbacks.onStatusChange(e.scoopJid,e.status)}handleScoopCreated(e){let t=this.msgScoopToRegistered(e.scoop,this.coneJidFromRecords(this.scoops));this.scoops=this.scoops.filter(e=>e.name!==t.name||e.jid===t.jid),this.scoops.find(e=>e.jid===t.jid)||this.scoops.push(t),this.scoopStatuses.set(t.jid,e.scoop.status),this.callbacks.onScoopCreated(t)}handleScoopModelAck(e){if(e.applied){let t=this.getScoop(e.scoopJid);t&&(t.model=e.model?{...e.model}:void 0)}this.pendingModelAcks.get(e.requestId)?.(e.applied)}handleThinkingLevelAck(e){if(e.applied){let t=this.getScoop(e.scoopJid);t&&Be(t,e.level===void 0?void 0:{level:e.level,effortOverride:e.effortOverride})}this.pendingThinkingAcks.get(e.requestId)?.(e.applied)}handleScoopList(e){this.scoops=e.scoops.map(t=>this.msgScoopToRegistered(t,this.coneJidFromWire(e.scoops)));for(let t of e.scoops)this.scoopStatuses.set(t.jid,t.status);this.callbacks.onScoopListUpdate(e.scoops)}handleStateSnapshot(e){z.info(`Received state snapshot`,{scoopCount:e.scoops.length}),this.scoops=e.scoops.map(t=>this.msgScoopToRegistered(t,this.coneJidFromWire(e.scoops)));for(let t of e.scoops)this.scoopStatuses.set(t.jid,t.status);e.trayRuntimeStatus&&At(e.trayRuntimeStatus.leader,e.trayRuntimeStatus.follower);let t=!this.ready;t&&(this.ready=!0,this.stateRetryTimer&&=(clearInterval(this.stateRetryTimer),null)),this.callbacks.onScoopListUpdate(e.scoops),t&&this.callbacks.onReady?.()}handleError(e){e.scoopJid===this.selectedScoopJid&&this.emitToUI({type:`error`,error:e.error})}handleIncomingMessage(e){this.callbacks.onIncomingMessage(e.scoopJid,e.message)}handleMessageUpdated(e){this.callbacks.onMessageUpdate?.(e.scoopJid,{messageId:e.messageId,lickId:e.lickId,lickState:e.lickState})}coneJidFromRecords(e){return e.find(e=>E(e))?.jid??null}coneJidFromWire(e){return e.find(e=>e.parentId===void 0?e.isCone:e.parentId===null)?.jid??null}msgScoopToRegistered(e,t){return Le({jid:e.jid,name:e.name,folder:e.folder,parentJid:e.parentId===void 0?e.isCone?null:t??Dt:e.parentId,requiresTrigger:!e.isCone,assistantLabel:e.assistantLabel,addedAt:new Date().toISOString(),...e.config?{config:{...e.config}}:{}})}emitToUI(e){for(let t of this.eventListeners)try{t(e)}catch(e){z.error(`Listener error`,{error:e instanceof Error?e.message:String(e)})}}send(e){if(this.locked){this.emitToUI({type:`error`,error:`This window is detached. Close it and use the detached tab.`});return}this.transport.send(e)}};function B(){return Date.now().toString(36)+Math.random().toString(36).slice(2,8)}function At(e,t){Fe({state:e.state,error:e.error,reconnectAttempts:e.reconnectAttempts,session:e.session?{...e.session}:null}),le({state:t.state,joinUrl:t.joinUrl,trayId:t.trayId,error:t.error,lastError:t.lastError,reconnectAttempts:t.reconnectAttempts,attachAttempts:t.attachAttempts,lastAttachCode:t.lastAttachCode,connectingSince:t.connectingSince,lastPingTime:t.lastPingTime})}function V(e){return!e.includes(`\0`)}function jt(e){if(typeof window>`u`||window.localStorage===void 0)return()=>void 0;let t=window.localStorage,n=typeof Storage<`u`&&t instanceof Storage,r=n?Storage.prototype.setItem:t.setItem.bind(t),i=n?Storage.prototype.removeItem:t.removeItem.bind(t),a=n?Storage.prototype.clear:t.clear.bind(t);if(n){let n=Storage.prototype;n.setItem=function(n,i){if(r.call(this,n,i),this===t){if(!V(n)){console.warn(`[page-storage-sync] dropping localStorage write with NUL in key`,n);return}e.send({type:`local-storage-set`,key:n,value:i})}},n.removeItem=function(n){if(i.call(this,n),this===t){if(!V(n)){console.warn(`[page-storage-sync] dropping localStorage remove with NUL in key`,n);return}e.send({type:`local-storage-remove`,key:n})}},n.clear=function(){a.call(this),this===t&&e.send({type:`local-storage-clear`})}}else{let n=(e,n)=>{Object.defineProperty(t,e,{value:n,writable:!0,configurable:!0,enumerable:!1})};n(`setItem`,(t,n)=>{if(r(t,n),!V(t)){console.warn(`[page-storage-sync] dropping localStorage write with NUL in key`,t);return}e.send({type:`local-storage-set`,key:t,value:n})}),n(`removeItem`,t=>{if(i(t),!V(t)){console.warn(`[page-storage-sync] dropping localStorage remove with NUL in key`,t);return}e.send({type:`local-storage-remove`,key:t})}),n(`clear`,()=>{a(),e.send({type:`local-storage-clear`})})}let o=n=>{if(n.storageArea===t){if(n.key===null){e.send({type:`local-storage-clear`});return}if(V(n.key)){if(n.newValue===null){e.send({type:`local-storage-remove`,key:n.key});return}e.send({type:`local-storage-set`,key:n.key,value:n.newValue})}}};return window.addEventListener(`storage`,o),()=>{if(n)Storage.prototype.setItem=r,Storage.prototype.removeItem=i,Storage.prototype.clear=a;else{let e=(e,n)=>{Object.defineProperty(t,e,{value:n,writable:!0,configurable:!0,enumerable:!1})};e(`setItem`,r),e(`removeItem`,i),e(`clear`,a)}window.removeEventListener(`storage`,o)}}function Mt(e){let t=!1,n=()=>{t||(t=!0,typeof e.start==`function`&&e.start())};return{onMessage:t=>{let r=e=>{t(e.data)};return e.addEventListener(`message`,r),n(),()=>{e.removeEventListener(`message`,r)}},send:(t,n)=>{n&&n.length>0?e.postMessage(t,n):e.postMessage(t)}}}function Nt(e){let t=Mt(e);return{onMessage:e=>t.onMessage(e),send:(e,n)=>{t.send({source:`panel`,payload:e},n)}}}async function Pt(e,t,n,r){let i=e;if(i?.type){if(i.type===`cdp-cmd`){let r=e;try{let e=await t.send(r.method,r.params,r.sessionId);n.send({type:`cdp-response`,id:r.id,result:e})}catch(e){n.send({type:`cdp-response`,id:r.id,error:e instanceof Error?e.message:String(e)})}return}if(i.type===`cdp-subscribe`){let i=e;if(r.has(i.event))return;let a=e=>{n.send({type:`cdp-event`,method:i.event,params:e})};r.set(i.event,a),t.on(i.event,a);return}if(i.type===`cdp-unsubscribe`){let n=e,i=r.get(n.event);if(!i)return;r.delete(n.event),t.off(n.event,i)}}}function Ft(e,t){let n=Mt(e),r=new Map,i=n.onMessage(e=>{Pt(e,t,n,r)});return()=>{i();for(let[e,n]of r)t.off(e,n);r.clear()}}function It(){let e={};if(typeof localStorage>`u`)return e;for(let t=0;t<localStorage.length;t++){let n=localStorage.key(t);if(n===null)continue;let r=localStorage.getItem(n);r!==null&&(e[n]=r)}return e}function Lt(e,t,n){let r=()=>{};return{ready:new Promise((i,a)=>{let o=null,s=null,c=()=>{o!==null&&(clearTimeout(o),o=null)},l=Math.max(1,t.readyStallLimit??(t.onReadyStall?3:1)),u=Date.now(),d=0,f=!1,p=()=>{c(),o=setTimeout(()=>{if(d+=1,d<l){t.onReadyStall?.({elapsedMs:Date.now()-u,stalls:d}),p();return}t.onLateReady?c():r(),f=!0,a(Error(`Kernel worker did not signal ready within ${n*l}ms`))},n)};r=()=>{s!==null&&(e.removeEventListener(`message`,s),s=null),c()},s=e=>{let n=e.data;if(n?.type===`kernel-worker-boot-progress`){d=0,p();return}if(n?.type===`kernel-worker-ready`){if(r(),f){t.onLateReady?.();return}i();return}if(n?.type===`kernel-worker-boot-error`){r();let e=n.message??`unknown error`,t=n.code,i=Error(`Kernel worker boot failed: ${e}`);t&&(i.code=t),a(i)}},e.addEventListener(`message`,s),p()}),cleanup:()=>r()}}function Rt(e){let{worker:t,realCdpTransport:n}=e,r=e.readyTimeoutMs??3e4,i=e.localStorageSeed??{},a=new MessageChannel,o=new MessageChannel,s=Nt(a.port1),c=e.makeClient(s);e.onWorkerScriptError&&e.worker.addEventListener?.(`error`,()=>e.onWorkerScriptError());let l=Ft(o.port1,n),{ready:u,cleanup:d}=Lt(a.port1,e,r),f={type:`kernel-worker-init`,kernelPort:a.port2,cdpPort:o.port2,localStorageSeed:i,instanceId:e.instanceId,localApiBaseUrl:e.localApiBaseUrl??null,bridgeToken:e.bridgeToken??null,syncFsBridgeEnabled:e.syncFsBridgeEnabled??!1,syncFsChannelNonce:e.syncFsChannelNonce??null,localLickWsUrl:e.localLickWsUrl??null,extensionDelegateId:e.extensionDelegateId??null,pageBuildId:`6.110.4-mteononv`,flagFloat:e.flagFloat??null};t.postMessage(f,[a.port2,o.port2]);let p=!1;return{client:c,ready:u,dispose(){if(!p){p=!0,d(),l();try{t.postMessage({type:`kernel-worker-shutdown`})}catch{}t.terminate(),a.port1.close(),o.port1.close()}}}}function zt(e){return Rt({worker:e.workerUrl?new Worker(e.workerUrl,{type:`module`}):new Worker(new URL(`/assets/kernel-worker-DP91cGf5.js`,``+import.meta.url),{type:`module`}),realCdpTransport:e.realCdpTransport,makeClient:e.makeClient,readyTimeoutMs:e.readyTimeoutMs,localStorageSeed:e.localStorageSeed??It(),instanceId:e.instanceId,localApiBaseUrl:e.localApiBaseUrl,bridgeToken:e.bridgeToken,syncFsBridgeEnabled:e.syncFsBridgeEnabled,syncFsChannelNonce:e.syncFsChannelNonce,localLickWsUrl:e.localLickWsUrl,extensionDelegateId:e.extensionDelegateId,flagFloat:e.flagFloat,onWorkerScriptError:e.onWorkerScriptError,onReadyStall:e.onReadyStall,readyStallLimit:e.readyStallLimit,onLateReady:e.onLateReady})}var Bt=1048576,Vt=`r`;function Ht(e){return e.replace(/~/g,`~0`).replace(/\//g,`~1`)}function H(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function U(e,t,n){if(typeof e==`string`){n.push({pointer:t,value:e});return}if(Array.isArray(e)){for(let r=0;r<e.length;r++)U(e[r],`${t}/${r}`,n);return}if(H(e))for(let[r,i]of Object.entries(e))U(i,`${t}/${Ht(r)}`,n)}function W(e,t,n){if(typeof e==`string`)return n.get(t)??e;if(Array.isArray(e)){let r=!1,i=[];for(let a=0;a<e.length;a++){let o=W(e[a],`${t}/${a}`,n);o!==e[a]&&(r=!0),i.push(o)}return r?i:e}if(H(e)){let r=!1,i={};for(let[a,o]of Object.entries(e)){let e=W(o,`${t}/${Ht(a)}`,n);e!==o&&(r=!0),i[a]=e}return r?i:e}return e}function Ut(e,t,n){if(H(e))return W(e,t,n);if(typeof e==`string`)return n.get(t)??e;if(Array.isArray(e)){let r=!1,i=[];for(let a=0;a<e.length;a++){let o=Ut(e[a],`${t}/${a}`,n);o!==e[a]&&(r=!0),i.push(o)}return r?i:e}return e}function Wt(e){let t=new Map;for(let n of e.matchAll(/⟦REDACTED:([^:⟧]+):([^⟧]+)⟧/g)){let e=n[0],r=t.get(e);r?r.count++:t.set(e,{category:n[1],id:n[2],count:1})}return t}async function Gt(e,t,n){let r=[],i=0;for(;i<e.length;){if(n?.aborted)throw new f(`redaction-unavailable`);let a=0,o=i;for(;o<e.length;){let t=e[o].length;if(o>i&&a+t>Bt)break;a+=t,o++}let s=e.slice(i,o),c;try{c=await t.redact(s,n)}catch{throw new f(`redaction-unavailable`)}if(c.length!==s.length)throw new f(`redaction-unavailable`);r.push(...c),i=o}return r}function Kt(e,t,n,r){let i=[],a=Wt(e);for(let{category:e,id:t}of a.values())i.push({id:t,category:e,detector:`pre-obfuscated`,target:n});let o=Wt(t);for(let[e,{category:t,id:r,count:s}]of o)s>(a.get(e)?.count??0)&&i.push({id:r,category:t,detector:`known-secret`,target:n});let{text:s,matches:c,nextId:l}=p(t,Vt,r);for(let{id:e,category:t}of c)i.push({id:e,category:t,detector:`credential-pattern`,target:n});return{finalText:s,redactions:i,nextId:l}}function qt(e,t,n){for(let{redactions:r}of e)for(let e of r)t.push(e),n[e.category]=(n[e.category]??0)+1}async function Jt(e,t,n,r){if(r?.aborted)throw new f(`redaction-unavailable`);let{privacy:i,...a}=e,o=[];U(a,``,o);let s=[...t.entries()],c=await Gt([...o.map(e=>e.value),...s.map(([,e])=>e)],n,r),l=[],u={},d=1,p=new Map,m=[];for(let e=0;e<o.length;e++){let t=o[e],n=Kt(t.value,c[e],{kind:`json`,pointer:t.pointer},d);d=n.nextId,n.finalText!==t.value&&p.set(t.pointer,n.finalText),m.push(n)}qt(m,l,u);let h=new Map,g=o.length,_=[];for(let e=0;e<s.length;e++){let[t,n]=s[e],r=Kt(n,c[g+e],{kind:`attachment`,attachmentId:t},d);d=r.nextId,h.set(t,r.finalText),_.push(r)}qt(_,l,u);let v=Ut(e,``,p);return{document:{...v,privacy:{...v.privacy,redactionCounts:u,redactions:l}},textAttachments:h}}function Yt(e,t){let n=e.startsWith(`text/`)||e===`application/json`,r=/\.(?:txt|md|json|csv|xml|ya?ml|js|mjs|cjs|ts|tsx|css|html)$/i.test(t);return n||r?`text-redacted`:`binary-unchanged`}async function Xt(e){let t=e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength),n=await crypto.subtle.digest(`SHA-256`,t);return Array.from(new Uint8Array(n)).map(e=>e.toString(16).padStart(2,`0`)).join(``)}var Zt={"image/png":`.png`,"image/jpeg":`.jpg`,"image/gif":`.gif`,"image/webp":`.webp`,"image/svg+xml":`.svg`,"image/bmp":`.bmp`,"application/pdf":`.pdf`,"application/zip":`.zip`,"application/gzip":`.gz`,"application/json":`.json`,"text/plain":`.txt`,"text/markdown":`.md`,"text/csv":`.csv`,"text/html":`.html`,"text/xml":`.xml`,"application/xml":`.xml`};function Qt(e,t){return Zt[e]??(t===`text-redacted`?`.txt`:`.bin`)}function $t(e,t,n){return`attachments/att-${String(e+1).padStart(4,`0`)}${Qt(t,n)}`}function en(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}function tn(e){let t=[];for(let n of e.conversations){let e=0;for(let r of n.messages){let i=r.role;if(i!==`user`&&i!==`assistant`&&i!==`tool-result`)continue;let a=0;for(let o of r.content)o.type===`attachment-ref`&&(t.push({attachmentId:o.attachmentId,conversationId:n.id,messageId:r.id,role:i,userOrdinal:e,imgIndex:a}),a++);i===`user`&&e++}}return t}async function nn(e,t,n,r,i){let a=Yt(e.mimeType,e.name),o={attachmentId:t,originalName:e.name,mimeType:e.mimeType,handling:a,present:!0,sourceConversationId:n,sourceMessageId:r};if(a===`text-redacted`){let t;if(e.text!==void 0)t=e.text;else if(e.data!==void 0)t=new TextDecoder().decode(en(e.data));else if(e.path!==void 0&&i!==void 0)try{t=new TextDecoder().decode(await i(e.path))}catch{return{...o,present:!1,missingReason:`attachment-file-missing`}}return t===void 0?{...o,present:!1,missingReason:`attachment-file-missing`}:{...o,rawText:t}}let s;if(e.data!==void 0)s=en(e.data);else if(e.path!==void 0&&i!==void 0)try{s=await i(e.path)}catch{return{...o,present:!1,missingReason:`attachment-file-missing`}}return s===void 0?{...o,present:!1,missingReason:`attachment-file-missing`}:{...o,rawBytes:s}}function rn(e,t,n,r){let i=[],a=new Set,o=new Set;for(let s of e){if(s.role!==`user`){let e=n.get(s.attachmentId);e===void 0?i.push(Promise.resolve({attachmentId:s.attachmentId,originalName:`unknown`,mimeType:`application/octet-stream`,handling:`binary-unchanged`,present:!1,missingReason:`attachment-file-missing`,sourceConversationId:s.conversationId,sourceMessageId:s.messageId})):i.push(Promise.resolve({attachmentId:s.attachmentId,originalName:`image-${s.imgIndex}`,mimeType:e.mimeType,handling:`binary-unchanged`,rawBytes:en(e.data),present:!0,sourceConversationId:s.conversationId,sourceMessageId:s.messageId}));continue}let e=(t.get(s.conversationId)??[]).filter(e=>e.role===`user`)[s.userOrdinal];if(e===void 0){a.add(s.conversationId),i.push(Promise.resolve({attachmentId:s.attachmentId,originalName:`unknown`,mimeType:`application/octet-stream`,handling:`binary-unchanged`,present:!1,missingReason:`attachment-association-unavailable`,sourceConversationId:s.conversationId,sourceMessageId:s.messageId}));continue}let c=(e.attachments??[]).map((e,t)=>({a:e,i:t})).filter(({a:e})=>e.kind===`image`||e.kind===`file`&&e.data!==void 0)[s.imgIndex];if(c===void 0){i.push(Promise.resolve({attachmentId:s.attachmentId,originalName:`unknown`,mimeType:`application/octet-stream`,handling:`binary-unchanged`,present:!1,missingReason:`attachment-file-missing`,sourceConversationId:s.conversationId,sourceMessageId:s.messageId}));continue}o.add(`${s.conversationId}:${e.id}:${c.i}`),i.push(nn(c.a,s.attachmentId,s.conversationId,s.messageId,r))}return{pendingPromises:i,mismatchedConvIds:a,processedUiPositions:o}}function an(e,t,n){return(e.attachments??[]).map((e,t)=>({a:e,i:t})).filter(({a:r,i})=>(r.kind===`text`||r.kind===`file`&&(r.data!==void 0||r.path!==void 0))&&!n.has(`${t}:${e.id}:${i}`))}function on(e,t,n,r,i,a,o){let s=an(t,n,i),c=[];for(let t=0;t<s.length;t++){let{a:i}=s[t],l=`${e.id}-file-${t}`;r.has(l)||(a.push(nn(i,l,n,e.id,o)),c.push({type:`attachment-ref`,attachmentId:l}))}return c}function sn(e,t,n,r,i){let a=new Map,o=[];for(let s of e.conversations){let e=(t.get(s.id)??[]).filter(e=>e.role===`user`),c=0;for(let t of s.messages){if(t.role!==`user`)continue;let l=e[c];if(c++,l===void 0)continue;let u=on(t,l,s.id,n,r,o,i);u.length>0&&(a.has(s.id)||a.set(s.id,new Map),a.get(s.id).set(t.id,[...t.content,...u]))}}return{updates:a,additionalPendingPromises:o}}function cn(e,t){let n=new Map,r=0,i=new Map;for(let t of e)t.handling===`text-redacted`&&t.rawText!==void 0&&n.set(t.attachmentId,t.rawText),t.present&&i.set(t.attachmentId,$t(r++,t.mimeType,t.handling));for(let n of e)!n.present&&n.missingReason!==void 0&&t.add(n.missingReason);return{rawAttachments:e.map(e=>e.present?{id:e.attachmentId,path:i.get(e.attachmentId),originalName:e.originalName,mimeType:e.mimeType,byteLength:0,sha256:``,sourceConversationId:e.sourceConversationId,sourceMessageId:e.sourceMessageId,handling:e.handling,present:!0}:{id:e.attachmentId,path:``,originalName:e.originalName,mimeType:e.mimeType,byteLength:0,sha256:``,sourceConversationId:e.sourceConversationId,sourceMessageId:e.sourceMessageId,handling:e.handling,present:!1,missingReason:e.missingReason??`attachment-file-missing`}),textMap:n}}async function ln(e,t,n,r,i){let{rawAttachments:a,textMap:o}=cn(e,n),s,c;try{let e=await Jt({...t,attachments:a},o,r,i);s=e.document,c=e.textAttachments}catch(e){throw e instanceof f?e:new f(`attachment-unreadable`)}let l=new Map;for(let t of e){if(l.has(t.attachmentId))throw new f(`schema-invalid`);l.set(t.attachmentId,t)}let u=new Map,d=await Promise.all(s.attachments.map(async e=>{if(!e.present||!e.path)return e;let t=l.get(e.id);if(t===void 0)throw new f(`schema-invalid`);let n=t.handling===`text-redacted`?new TextEncoder().encode(c.get(t.attachmentId)??t.rawText??``):t.rawBytes,r=await Xt(n);return u.set(e.path,n),{...e,byteLength:n.length,sha256:r}}));return{redactedDocument:{...s,attachments:d},bundleFiles:u}}async function un(e){let{document:t,chatMessagesByConversation:n,knownSecrets:r,signal:i}=e,a=e.canonicalImages??new Map,o=e.vfsReader,s=new Set,{pendingPromises:c,mismatchedConvIds:l,processedUiPositions:u}=rn(tn(t),n,a,o);l.size>0&&s.add(`attachment-association-unavailable`);for(let e of t.conversations)e.messages.filter(e=>e.role===`user`).length>(n.get(e.id)??[]).filter(e=>e.role===`user`).length&&s.add(`attachment-association-unavailable`);let d=await Promise.all(c),{updates:f,additionalPendingPromises:p}=sn(t,n,new Set(d.map(e=>e.attachmentId)),u,o),m=await Promise.all(p),h=[...d,...m],g=t;f.size>0&&(g={...t,conversations:t.conversations.map(e=>{let t=f.get(e.id);return t?{...e,messages:e.messages.map(e=>{let n=t.get(e.id);return n?{...e,content:n}:e})}:e})});let{redactedDocument:_,bundleFiles:v}=await ln(h,g,s,r,i),y=[..._.session.completeness.missing.filter(e=>!s.has(e)),...s];return{document:{..._,session:{..._.session,completeness:{status:y.length>0?`partial`:_.session.completeness.status,missing:y}}},bundleFiles:v}}var dn=50;function fn(e){return ze(e)}function pn(e,t){return e.map(e=>{let n=t.isProcessing(e.jid)?`1`:`0`,r=t.getAgentMessages(e.jid);if(r===null)return`${e.jid}:${n}:null`;let i=r.length,a=r[i-1],o=a?.role??``,s=a&&`timestamp`in a?a.timestamp:-1,c=a&&`toolCallId`in a?a.toolCallId:``;return`${e.jid}:${n}:${i}:${o}:${s}:${c}`}).join(`,`)}function mn(e,t,n,r){let i=new Map;for(let e of t)i.set(e.id,e);let a=new Map;for(let e of n)a.set(e.id,e);let o=[],s=new Map;for(let t of e){let e=r.getAgentMessages(t.jid)??i.get(t.jid)?.messages??[],n={id:t.jid,kind:E(t)?`cone`:`scoop`,name:t.name,...t.folder&&!E(t)?{folder:t.folder}:{},...t.parentJid?{parentConversationId:t.parentJid}:{},...t.originToolCallId?{originToolCallId:t.originToolCallId}:{},messages:e};o.push(n);let c=fn(t),l=a.get(c);l&&s.set(t.jid,l.messages)}return{sources:o,chatMessagesByConversation:s}}async function hn(e,t,n={}){let r=e=>n.rootJid===void 0?e:Re(e,n.rootJid);for(;;){let n=r(e.listScoops());for(;n.some(t=>e.isProcessing(t.jid));)if(t?.aborted||(await e.wait(dn,t),t?.aborted))throw new f(`transfer-aborted`);let i=pn(n,e),[a,o]=await Promise.all([e.loadPersistedSessions(),e.loadUiChatSessions()]);if(t?.aborted)throw new f(`transfer-aborted`);let s=r(e.listScoops());if(i===pn(s,e))return mn(s,a,o,e)}}function gn(e,t){return`${e}-msg-${t.toString().padStart(6,`0`)}`}function _n(e,t){return{type:`attachment-ref`,attachmentId:`${e}-img-${t}`}}function vn(e,t){if(typeof e==`string`)return e?[{type:`text`,text:e}]:[];let n=[],r=0;for(let i of e)i.type===`text`?i.text&&n.push({type:`text`,text:i.text}):i.type===`image`&&n.push(_n(t,r++));return n}function yn(e,t){let n=[],r=new Map,i=0,a=0;for(let o of e)if(o.type===`thinking`)i+=1;else if(o.type===`text`)o.text&&n.push({type:`text`,text:o.text});else if(o.type===`toolCall`)n.push({type:`tool-call`,id:o.id??``,name:o.name??``,input:o.arguments??{}});else if(o.type===`image`){let e=_n(t,a++);n.push(e),o.data&&o.mimeType&&r.set(e.attachmentId,{data:o.data,mimeType:o.mimeType})}return{blocks:n,excluded:i,images:r}}function bn(e,t){let n=[],r=new Map,i=0;for(let a of e)if(a.type===`text`)a.text&&n.push({type:`text`,text:a.text});else if(a.type===`image`){let e=_n(t,i++);n.push(e),a.data&&a.mimeType&&r.set(e.attachmentId,{data:a.data,mimeType:a.mimeType})}return{blocks:n,images:r}}function xn(e,t,n){let r=gn(t,n),i=vn(e.content,r);return{message:{id:r,sequence:n,role:`user`,timestamp:new Date(e.timestamp).toISOString(),content:i},excludedReasoningBlocks:0,images:new Map}}function Sn(e,t,n){let r=gn(t,n),{blocks:i,excluded:a,images:o}=yn(e.content,r);return{message:{id:r,sequence:n,role:`assistant`,timestamp:new Date(e.timestamp).toISOString(),content:i,model:{provider:e.provider,id:e.model,api:e.api},usage:e.usage,stopReason:e.stopReason,...e.errorMessage?{error:e.errorMessage}:{}},excludedReasoningBlocks:a,images:o}}function Cn(e,t,n){let r=gn(t,n),{blocks:i,images:a}=bn(e.content,r);return{message:{id:r,sequence:n,role:`tool-result`,timestamp:new Date(e.timestamp).toISOString(),content:i,toolCallId:e.toolCallId,isError:e.isError},excludedReasoningBlocks:0,images:a}}function wn(e,t,n){return e.role===`user`?xn(e,t,n):e.role===`assistant`?Sn(e,t,n):e.role===`toolResult`?Cn(e,t,n):{message:null,excludedReasoningBlocks:0,images:new Map}}function Tn(e){let t=[];for(let n of e){if(!n.parentConversationId)continue;let e={sourceConversationId:n.parentConversationId,targetConversationId:n.id};n.originToolCallId&&(e.toolCallId=n.originToolCallId),t.push(e)}return t}function En(e){let t=0,n=new Map;return{conversations:e.map(e=>{let r=e.messages.flatMap((r,i)=>{let a=wn(r,e.id,i+1);t+=a.excludedReasoningBlocks;for(let[e,t]of a.images)n.set(e,t);return a.message?[a.message]:[]});return{id:e.id,kind:e.kind,name:e.name,...e.folder?{folder:e.folder}:{},...e.parentConversationId?{parentConversationId:e.parentConversationId}:{},...e.createdAt?{createdAt:e.createdAt}:{},...e.updatedAt?{updatedAt:e.updatedAt}:{},messages:r}}),delegations:Tn(e),excludedReasoningBlocks:t,canonicalImages:n}}var Dn=(()=>{let e=new Uint32Array(256);for(let t=0;t<256;t++){let n=t;for(let e=0;e<8;e++)n=n&1?3988292384^n>>>1:n>>>1;e[t]=n}return e})();function On(e){let t=-1>>>0;for(let n=0;n<e.length;n++)t=t>>>8^Dn[(t^e[n])&255];return~t>>>0}var kn=new TextEncoder;function G(e,t,n){e[t]=n&255,e[t+1]=n>>>8&255}function K(e,t,n){e[t]=n&255,e[t+1]=n>>>8&255,e[t+2]=n>>>16&255,e[t+3]=n>>>24&255}function An(e,t,n){let r=new Uint8Array(30+e.length);return r[0]=80,r[1]=75,r[2]=3,r[3]=4,G(r,4,20),G(r,6,2048),G(r,8,0),G(r,10,0),G(r,12,0),K(r,14,n),K(r,18,t),K(r,22,t),G(r,26,e.length),G(r,28,0),r.set(e,30),r}function jn(e,t,n,r){let i=new Uint8Array(46+e.length);return i[0]=80,i[1]=75,i[2]=1,i[3]=2,G(i,4,20),G(i,6,20),G(i,8,2048),G(i,10,0),G(i,12,0),G(i,14,0),K(i,16,n),K(i,20,t),K(i,24,t),G(i,28,e.length),G(i,30,0),G(i,32,0),G(i,34,0),G(i,36,0),K(i,38,0),K(i,42,r),i.set(e,46),i}function Mn(e,t,n){let r=new Uint8Array(22);return r[0]=80,r[1]=75,r[2]=5,r[3]=6,G(r,4,0),G(r,6,0),G(r,8,e),G(r,10,e),K(r,12,t),K(r,16,n),G(r,20,0),r}function Nn(e){if(!e||e.startsWith(`/`)||e.includes(`\0`)||e.includes(`\\`))return!1;for(let t of e.split(`/`))if(t===``||t===`.`||t===`..`)return!1;return!0}function Pn(e){let t=e.export.generatedAt.slice(0,10),n=e.export.id.slice(0,8);return`slicc-${t}-${e.session.title.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-|-$/g,``).slice(0,40)||`transcript`}-${n}.zip`}async function*Fn(e,t,n,r,i){if(n?.aborted)throw i(new f(`transfer-aborted`)),new f(`transfer-aborted`);let a=()=>i(new f(`transfer-aborted`));n?.addEventListener(`abort`,a,{once:!0});let o=de.create(),s=0,c=0,l=[],u=!1;function*d(e){o.update(e),s+=e.byteLength,c+=e.byteLength,yield e}try{let i=new TextEncoder().encode(JSON.stringify(e,null,2)),a=kn.encode(`transcript.json`),p=On(i),m=An(a,i.length,p);if(l.push({nameBytes:a,size:i.length,crc:p,localOffset:c}),n?.aborted||(yield*d(m),n?.aborted))throw new f(`transfer-aborted`);yield*d(i);for(let[e,r]of t){if(n?.aborted)throw new f(`transfer-aborted`);let t=kn.encode(e),i=On(r),a=An(t,r.length,i);if(l.push({nameBytes:t,size:r.length,crc:i,localOffset:c}),yield*d(a),n?.aborted)throw new f(`transfer-aborted`);yield*d(r)}let h=c;for(let e of l){if(n?.aborted)throw new f(`transfer-aborted`);yield*d(jn(e.nameBytes,e.size,e.crc,e.localOffset))}if(n?.aborted)throw new f(`transfer-aborted`);yield*d(Mn(l.length,c-h,h)),u=!0,r({byteLength:s,sha256:o.hex()})}catch(e){throw u=!0,i(e),e}finally{n?.removeEventListener(`abort`,a),u||(u=!0,i(new f(`transfer-aborted`)))}}var In=4294967295,Ln=65535;function Rn(e,t,n){for(let e of t.keys())if(!Nn(e))throw new f(`schema-invalid`);if(t.size+1>Ln)throw new f(`schema-invalid`);for(let e of t.values())if(e.byteLength>In)throw new f(`schema-invalid`);let r,i,a=new Promise((e,t)=>{r=e,i=t});return{filename:Pn(e),chunks:Fn(e,t,n,r,i),completion:a}}function zn(e,t,n,r,i,a={}){return{schemaVersion:1,export:{id:crypto.randomUUID(),generatedAt:new Date().toISOString(),producer:{application:`slicc`,version:i},format:d},session:{id:e,title:t,state:n,completeness:{status:`complete`,missing:[]},...a},privacy:{reasoningExcluded:!0,excludedReasoningBlocks:r.excludedReasoningBlocks,binaryAttachments:`included-unchanged`,redactionCounts:{},redactions:[]},conversations:r.conversations,delegations:r.delegations,attachments:[]}}function Bn(e,t){let n=[],r=1;for(let i of e){if(i.role!==`user`&&i.role!==`assistant`)continue;let e=`${t}-msg-${String(r).padStart(6,`0`)}`;n.push({id:e,sequence:r++,role:i.role,timestamp:new Date(i.timestamp||0).toISOString(),content:i.content?[{type:`text`,text:i.content}]:[]})}return n}function Vn(e){if(!u(e).ok)throw new f(`schema-invalid`)}function Hn(e,t,n){let r=new Map;for(let i of e)if(!(!i.present||!i.path)){if(i.handling===`text-redacted`){let e=t.get(i.id);e!==void 0&&r.set(i.path,new TextEncoder().encode(e))}else{let e=n.get(i.path);e&&r.set(i.path,e)}}return r}async function Un(e,t){return Promise.all(e.map(async e=>{if(!e.present||!e.path||e.handling!==`text-redacted`)return e;let n=t.get(e.path);if(!n)return e;let r=n.buffer.slice(n.byteOffset,n.byteOffset+n.byteLength),i=await crypto.subtle.digest(`SHA-256`,r),a=Array.from(new Uint8Array(i)).map(e=>e.toString(16).padStart(2,`0`)).join(``);return{...e,byteLength:n.length,sha256:a}}))}function Wn(e){let t=e.match(/^---\n([\s\S]*?)\n---\n/);if(!t)return{};let n=t[1],r={},i=n.match(/^createdAt:\s*(\d+)\s*$/m),a=n.match(/^updatedAt:\s*(\d+)\s*$/m);return i&&(r.createdAt=new Date(Number(i[1])).toISOString()),a&&(r.updatedAt=new Date(Number(a[1])).toISOString()),r}var Gn=class{deps;constructor(e){this.deps=e}async export(e,t={}){let{signal:n,onProgress:r}=t,i;return i=e.kind===`active`?await this.buildActiveSnapshot(n,r):await this.buildFrozenSnapshot(e.sessionId,n,r),Vn(i.document),r?.({phase:`packaging`}),Rn(i.document,i.bundleFiles,n)}async captureFrozen(e,t){let n=await hn(this.deps.collection,t,{...e.rootJid?{rootJid:e.rootJid}:{}});if(e.rootJid&&n.sources.length===0)return;let r=En(n.sources),{document:i,bundleFiles:a}=await un({document:zn(e.sessionId,e.title,`frozen`,r,this.deps.version,{frozenAt:e.frozenAt,createdAt:new Date(e.createdAt).toISOString(),updatedAt:new Date(e.updatedAt).toISOString()}),chatMessagesByConversation:n.chatMessagesByConversation,knownSecrets:this.deps.knownSecrets,canonicalImages:r.canonicalImages,vfsReader:e=>this.readBinaryFromVfs(e),signal:t});Vn(i),await this.deps.snapshotStore.write(e.sessionId,{document:i,attachments:a})}async buildActiveSnapshot(e,t){t?.({phase:`waiting-for-conversations`}),t?.({phase:`collecting`});let n=await hn(this.deps.collection,e),r=En(n.sources),{id:i,title:a}=this.deps.getActiveSessionInfo(),o=zn(i,a,`active`,r,this.deps.version);return t?.({phase:`redacting`}),un({document:o,chatMessagesByConversation:n.chatMessagesByConversation,knownSecrets:this.deps.knownSecrets,canonicalImages:r.canonicalImages,vfsReader:e=>this.readBinaryFromVfs(e),signal:e})}async buildFrozenSnapshot(e,t,n){let r=await this.deps.snapshotStore.read(e);return r?(n?.({phase:`redacting`}),this.reredactStoredSnapshot(r,t)):this.buildLegacyPartial(e,t,n)}async reredactStoredSnapshot(e,t){let n=new Map;for(let t of e.document.attachments){if(t.handling!==`text-redacted`||!t.present||!t.path)continue;let r=e.attachments.get(t.path);r&&n.set(t.id,new TextDecoder().decode(r))}let r,i;try{let a=await Jt(e.document,n,this.deps.knownSecrets,t);r=a.document,i=a.textAttachments}catch{throw new f(`redaction-unavailable`)}let a=Hn(r.attachments,i,e.attachments),o=await Un(r.attachments,a);return{document:{...r,attachments:o},bundleFiles:a}}async buildLegacyPartial(e,t,n){let r=(await Xe(this.deps.vfs)).find(t=>t.sessionId===e||!t.sessionId&&t.filename===e);if(!r)throw new f(`session-not-found`);let i;try{let e=await this.deps.vfs.readFile(`/sessions/${r.filename}`,{encoding:`utf-8`});i=typeof e==`string`?e:new TextDecoder().decode(e)}catch{throw new f(`session-not-found`)}let{title:a,messages:o}=A(i),s=`legacy-cone`,c=Bn(o,s),l=Wn(i),u={schemaVersion:1,export:{id:crypto.randomUUID(),generatedAt:new Date().toISOString(),producer:{application:`slicc`,version:this.deps.version},format:d},session:{id:e,title:a,state:`frozen`,...r.frozenAt?{frozenAt:r.frozenAt}:{},...l,completeness:{status:`partial`,missing:[`complete-snapshot-unavailable`,`canonical-agent-history-unavailable`]}},privacy:{reasoningExcluded:!0,excludedReasoningBlocks:0,binaryAttachments:`included-unchanged`,redactionCounts:{},redactions:[]},conversations:[{id:s,kind:`cone`,name:a,messages:c}],delegations:[],attachments:[]},p=new Map([[s,o]]);return n?.({phase:`redacting`}),un({document:u,chatMessagesByConversation:p,knownSecrets:this.deps.knownSecrets,vfsReader:e=>this.readBinaryFromVfs(e),signal:t})}async readBinaryFromVfs(e){let t=await this.deps.vfs.readFile(e,{encoding:`binary`});if(!(t instanceof Uint8Array))throw new f(`attachment-unreadable`);return t}},Kn=`/sessions/data`,qn=`document.json`;async function Jn(e){let t=e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength),n=await crypto.subtle.digest(`SHA-256`,t);return Array.from(new Uint8Array(n)).map(e=>e.toString(16).padStart(2,`0`)).join(``)}function Yn(e){if(e.length===0||/[/\\\x00]/.test(e)||e===`..`||e===`.`||e.includes(`..`)||!/^[a-zA-Z0-9._-]+$/.test(e))throw new f(`session-not-found`)}function Xn(e){return`${Kn}/${e}`}function Zn(e){return`${Kn}/.tmp-${e}`}async function Qn(e,t){try{await e.mkdir(t,{recursive:!0})}catch{}}async function q(e,t){let n;try{n=await e.readDir(t)}catch{return}for(let r of n){let n=`${t}/${r.name}`;r.type===`directory`&&await q(e,n);try{await e.rm(n)}catch{}}try{await e.rm(t)}catch{}}async function $n(e,t,n){await Qn(e,n);let r=await e.readDir(t);for(let i of r){let r=`${t}/${i.name}`,a=`${n}/${i.name}`;if(i.type===`directory`)await $n(e,r,a);else{let t=await e.readFile(r,{encoding:`binary`});await e.writeFile(a,t)}}}async function er(e,t,n){Yn(t);let r=Zn(t),i=Xn(t),a=new Map(n.document.attachments.filter(e=>e.present&&e.path).map(e=>[e.path,e]));for(let[e]of n.attachments)if(!a.has(e))throw new f(`schema-invalid`);await q(e,i),await Qn(e,r);try{let t=[...n.document.attachments];for(let[e,r]of n.attachments){let n=await Jn(r),i=a.get(e);if(i!==void 0){let e=t.indexOf(i);e!==-1&&(t[e]={...i,sha256:n,byteLength:r.length})}}let o={...n.document,attachments:t},s=JSON.stringify(o,null,2);if(await e.writeFile(`${r}/${qn}`,s),n.attachments.size>0)for(let[t,i]of n.attachments){let n=`${r}/${t}`,a=t.lastIndexOf(`/`);a!==-1&&await Qn(e,`${r}/${t.slice(0,a)}`),await e.writeFile(n,i)}await e.flush(),await $n(e,r,i),await e.flush()}catch(t){throw await q(e,r),t}await q(e,r)}async function tr(e,t){Yn(t);let n=Xn(t),r=`${n}/${qn}`,i;try{let t=await e.readFile(r,{encoding:`utf-8`});i=typeof t==`string`?t:new TextDecoder().decode(t)}catch{throw new f(`session-not-found`)}let a;try{a=JSON.parse(i)}catch{throw new f(`schema-invalid`)}if(!u(a).ok)throw new f(`schema-invalid`);let o=new Map;for(let t of a.attachments){if(!t.present||!t.path)continue;let r=`${n}/${t.path}`,i;try{let t=await e.readFile(r,{encoding:`binary`});i=t instanceof Uint8Array?t:new TextEncoder().encode(t)}catch{throw new f(`transfer-corrupt`)}if(await Jn(i)!==t.sha256)throw new f(`transfer-corrupt`);o.set(t.path,i)}return{document:a,attachments:o}}function nr(e){return`error`in e}function J(){throw new f(`redaction-unavailable`)}function rr(e,t){return(typeof e!=`object`||!e||!Array.isArray(e.texts)||e.texts.length!==t)&&J(),e.texts}function ir(){return{async redact(e){let t;try{t=await fetch(v(`/api/secrets/redact-export`),{method:`POST`,headers:y({"content-type":`application/json`}),body:JSON.stringify({texts:e})})}catch{J()}t.ok||J();let n;try{n=await t.json()}catch{J()}return rr(n,e.length)}}}function ar(){return{async redact(e){let t;try{t=await new Promise(t=>{chrome.runtime.sendMessage({type:`secrets.redact-export`,texts:e},e=>{chrome.runtime.lastError,t(e??null)})})}catch{J()}return typeof t==`object`&&t&&nr(t)&&J(),rr(t,e.length)}}}function or(){return{async redact(e){let t;try{t=await x(`secrets.redact-export`,{texts:e})}catch{J()}return t??J(),typeof t==`object`&&t&&nr(t)&&J(),rr(t,e.length)}}}function sr(){return{async redact(e){J()}}}function cr(){let e=b();return e===`connect`?sr():e===`extension-direct`?ar():e===`extension-delegate`?or():ir()}function lr(e,t=Date.now){let n=e.parentId===null,r=e.folder??e.name,i={jid:e.id??(n?`cone_${t()}`:`scoop_${r}_${t()}`),name:e.name,folder:r,requiresTrigger:!n,assistantLabel:n?`sliccy`:r,addedAt:new Date(t()).toISOString(),parentJid:e.parentId,...e.config?{config:e.config,configSchemaVersion:3}:{},...e.notifyOnComplete===!1?{notifyOnComplete:!1}:{}};return n||(i.trigger=`@${r}`),i}var ur=`padding:0.5rem 1.25rem;border-radius:0.375rem;cursor:pointer;font:inherit;font-size:0.875rem;`,dr=`${ur}border:none;background:var(--s2-accent-color,#0265dc);color:#fff;`,fr=`${ur}border:none;background:#d23;color:#fff;`,pr=`${ur}background:transparent;border:1px solid var(--s2-border-color,#e0e0e0);color:inherit;`;function mr(e,t,n){return{...lr({parentId:null,name:e,folder:`cone-pending-${t.length+1}`}),assistantLabel:e,...n?{model:n}:{}}}function hr(e,t){let n=e.createElement(`slicc-dialog`);n.setAttribute(`heading`,t.heading),n.append(t.body);for(let r of t.actions){let t=e.createElement(`button`);t.setAttribute(`slot`,`footer`),t.type=`button`,t.dataset.coneAction=r.data,t.textContent=r.text,t.style.cssText=r.style,t.addEventListener(`click`,r.onClick),n.append(t)}return n.addEventListener(`slicc-dialog-close`,()=>t.onDismiss(n)),n}function gr(e,t){let n=e.createElement(`form`);n.style.cssText=`display:flex;flex-direction:column;gap:0.5rem;padding:0.25rem 0;`;let r=`font-size:0.9375rem;padding:0.5rem 0.625rem;border:1px solid var(--s2-border-color,#e0e0e0);border-radius:0.375rem;background:transparent;color:inherit;font-family:inherit;`,i=e.createElement(`input`);i.type=`text`,i.name=`name`,i.placeholder=`Name`,i.setAttribute(`aria-label`,`Cone name`),i.maxLength=40,i.autocomplete=`off`,i.required=!0,i.style.cssText=r;let a=e.createElement(`textarea`);a.name=`brief`,a.placeholder=`What should it work on? (optional)`,a.setAttribute(`aria-label`,`What the cone should work on`),a.rows=3,a.style.cssText=`${r}resize:vertical;`,n.append(i,a);let o=()=>({name:i.value.trim(),brief:a.value.trim()});return n.addEventListener(`submit`,e=>{e.preventDefault(),t(o())}),a.addEventListener(`keydown`,e=>{e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),t(o()))}),n.readDraft=o,n}function _r(e){let{freezer:t,client:n,log:r}=e,i=t.ownerDocument,a=null,o=!1,s=null,c=()=>t.querySelector(`slicc-freezer-new`),l=()=>j(n.getScoops(),e.getSelected()),u=()=>{if(!s)return;let e=s;s=null,e.hide?.(),e.remove()},d=e=>{u();let t=hr(i,{...e,onDismiss:e=>{s===e&&(s=null),e.remove()}});s=t,i.body.append(t),t.show?.()},f=e=>{if(!e.name)return;u();let t=l(),i=mr(e.name,n.getScoops(),t?D(t):void 0);a=e.name,n.registerScoop(i,e.brief?{description:e.brief,prompt:e.brief}:{}).catch(e=>r.warn(`WC cone create failed`,e)),g()},p=()=>{let e=gr(i,f);d({heading:`New cone`,body:e,actions:[{text:`Create`,style:dr,data:`create`,onClick:()=>f(e.readDraft())},{text:`Cancel`,style:pr,data:`cancel`,onClick:u}]}),queueMicrotask(()=>e.querySelector(`input`)?.focus())},m=t=>{u();let i=O(n.getScoops()),a=i.find(e=>e.jid===t);if(!a||i.length<=1||o){g();return}o=!0,g(),(async()=>{try{await e.freezeCone(a)}catch(e){r.warn(`WC cone freeze before drop failed`,e)}let t=l()?.jid===a.jid;try{await n.unregisterScoop(a.jid)}catch(e){r.warn(`WC cone drop failed`,e)}if(t){let t=O(n.getScoops()).find(e=>e.jid!==a.jid);t&&e.selectScoop(t)}o=!1,g()})()},h=e=>{let t=M(e),n=i.createElement(`p`);n.textContent=`Its chat goes to the Freezer.`,n.style.cssText=`font-size:0.875rem;margin:0;`,d({heading:`Drop ${t}?`,body:n,actions:[{text:`Drop`,style:fr,data:`drop`,onClick:()=>m(e.jid)},{text:`Cancel`,style:pr,data:`cancel`,onClick:u}]})},g=()=>{let t=O(n.getScoops());if(a!==null){let n=t.find(e=>e.name===a&&!e.folder.startsWith(`cone-pending-`));n&&(a=null,e.getSelected()?.jid!==n.jid&&e.selectScoop(n))}let r=c();r?.setAttribute(`cones`,String(t.length)),r?.toggleAttribute(`busy`,o)};return t.addEventListener(`new-cone`,p),t.addEventListener(`drop-cone`,()=>{let e=l();!e||O(n.getScoops()).length<=1||o||h(e)}),g(),{refresh:g,dialog:()=>s}}var vr=5e3,yr=class{deps;listListeners=new Set;unitListeners=new Map;lastSnapshots=new Map;orphanedReplays=new Map;pendingSnapshots=new Map;constructor(e){this.deps=e}toSummary(e){return dt(e,{awaiting:this.deps.getAwaiting?.()===e.jid,fill:this.deps.fills.get(e.jid),phase:this.deps.phases.get(e.jid),status:this.deps.statuses.get(e.jid)})}snapshotFor(e,t,n){let r=this.deps.getClient()?.getScoops().find(t=>t.jid===e);return r?{summary:this.toSummary(r),messages:t,...n?{queuedIds:n}:{}}:null}currentUnits(){return(this.deps.getClient()?.getScoops()??[]).map(e=>this.toSummary(e))}publishSnapshot(e,t){this.lastSnapshots.set(e,t),this.emit(e,{snapshot:t,type:`snapshot`});let n=this.pendingSnapshots.get(e);if(n){this.pendingSnapshots.delete(e);for(let e of n)e(t)}}drainOrphanedReplays(){for(let[e,t]of this.orphanedReplays){let n=this.snapshotFor(e,t.messages,t.queuedIds);n&&(this.orphanedReplays.delete(e),this.publishSnapshot(e,n))}}forgetWaiter(e,t){let n=this.pendingSnapshots.get(e);n&&(n.delete(t),n.size===0&&this.pendingSnapshots.delete(e))}emitList(){if(this.drainOrphanedReplays(),this.listListeners.size===0)return;let e=this.currentUnits();for(let t of this.listListeners)t(e)}emit(e,t){let n=this.unitListeners.get(e);if(n)for(let e of n)e(t)}wrapCallbacks(e){return{...e,onStatusChange:(t,n)=>{e.onStatusChange(t,n),this.emit(t,{state:N(n),type:`status`}),this.emitList()},onScoopCreated:t=>{e.onScoopCreated(t),this.emitList()},onScoopListUpdate:t=>{e.onScoopListUpdate(t),this.emitList()},onScoopPhaseChange:(t,n)=>{e.onScoopPhaseChange?.(t,n),this.emitList()},onIncomingMessage:(t,n)=>{e.onIncomingMessage(t,n),this.emit(t,{message:n,type:`message`})},onScoopMessagesReplaced:(t,n,r)=>{e.onScoopMessagesReplaced?.(t,n,r);let i=n,a=this.snapshotFor(t,i,r);a?this.publishSnapshot(t,a):this.orphanedReplays.set(t,{messages:i,queuedIds:r})}}}list(){return Promise.resolve(this.currentUnits())}subscribeList(e){return this.listListeners.add(e),e(this.currentUnits()),()=>{this.listListeners.delete(e)}}subscribe(e,t){let n=this.unitListeners.get(e)??new Set;n.add(t),this.unitListeners.set(e,n);let r=this.lastSnapshots.get(e);return r?t({snapshot:r,type:`snapshot`}):this.deps.getClient()?.requestScoopMessages(e),()=>{n.delete(t),n.size===0&&this.unitListeners.delete(e)}}snapshot(e){let t=this.deps.getClient();if(!t)return Promise.reject(Error(`kernel client not attached`));let n=this.pendingSnapshots.get(e)??new Set;this.pendingSnapshots.set(e,n);let r=()=>{},i=new Promise(e=>{r=e,n.add(e)});t.setSelectedScoopJid(e),t.requestScoopMessages(e);let a=new Promise(t=>{setTimeout(()=>{this.forgetWaiter(e,r),t(this.snapshotFor(e,[],void 0))},vr)});return Promise.race([i,a]).then(t=>{if(!t)throw Error(`unknown work unit: ${e}`);return t})}send(e,t){let n=this.deps.getClient();return n?(n.sendRaw({attachments:t.attachments,messageId:`msg-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,scoopJid:e,text:t.text,type:`user-message`,...t.steer?{steer:!0}:{}}),Promise.resolve()):Promise.reject(Error(`kernel client not attached`))}signal(e,t){return t===`stop`&&this.deps.getClient()?.stopScoop(e),Promise.resolve()}};function br(e,t,n,r,i,a){let o=e.map(e=>dt(e,{awaiting:i===e.jid,fill:n?.get(e.jid),phase:r?.get(e.jid),status:t?.get(e.jid)}));return ct(o,a,T)}function xr(e){let t=new yr({fills:e.fills,getAwaiting:()=>e.awaitingInput,getClient:()=>e.getClient(),phases:e.phases,statuses:e.statuses});e.workUnits=t;let n=()=>{e.getClient()&&(e.refs.switcher.scoops=ct(t.currentUnits(),e.getSelected()?.jid,T)),e.refreshConeActions?.()};t.subscribeList(()=>n());let r=n;e.refreshScoops=r;let i=()=>(e.refs.thread.getAttribute(`context`)??``).startsWith(`freezer:`),a=()=>{if(e.getSelected()||i())return;let t=e.getClient()?.getScoops()??[],n=e.pendingUrlContext;if(n?.startsWith(`freezer:`))return;if(n?.startsWith(`scoop:`)||n?.startsWith(`cone:`)){let r=st(t,n);if(r){e.pendingUrlContext=null,e.selectScoop(r);return}}let r=P(t);r&&(e.pendingUrlContext=null,e.selectScoop(r))};return t.wrapCallbacks({onStatusChange:(t,n)=>{let i=e.statuses.get(t),a=n;e.statuses.set(t,a),a!==`ready`&&e.awaitingInput===t&&(e.awaitingInput=null),N(i)!==N(a)&&(r(),e.notifyScoopStateChanged?.()),e.getSelected()?.jid===t&&e.getController()?.setProcessing(n===`processing`)},onScoopCreated:t=>{r(),!e.getSelected()&&!i()&&!e.pendingUrlContext&&e.selectScoop(t)},onScoopListUpdate:t=>{let n=new Set(t.map(e=>e.jid));for(let t of e.lickBackpressure.keys())n.has(t)||e.lickBackpressure.delete(t);r(),a()},onScoopActivity:t=>{e.refs.switcher.setAttribute(`attention`,t)},onScoopPhaseChange:(t,n)=>{e.phases.set(t,n),r(),e.notifyScoopStateChanged?.()},onIncomingMessage:(t,n)=>{e.refs.switcher.setAttribute(`attention`,t),e.lastActivity.set(t,String(n.content??``).slice(0,600)),e.getSelected()?.jid===t&&n.channel!==`web`&&fe(n.channel)&&e.getController()?.addLickMessage(n.id,n.content,n.channel,new Date(n.timestamp).getTime(),n.lickId)},onLickBackpressure:(t,n)=>{n.count<=0?e.lickBackpressure.delete(t):e.lickBackpressure.set(t,n);let r=e.getSelected();if(r?.jid!==t)return;let i=F(r);e.getController()?.setLickBackpressure(n.count,n.waitingMs,i)},onMessageUpdate:(t,n)=>{e.getSelected()?.jid===t&&n.lickId&&n.lickState&&e.getController()?.updateLickState(n.lickId,n.lickState)},onScoopMessagesReplaced:(t,n,r)=>{e.getSelected()?.jid===t&&e.getController()?.loadMessages(n,r)},onReady:()=>{r(),a(),e.notifyReady?.()}})}var Sr=`slicc:leader-local-model-state-changed`;function Cr(e=window){e.dispatchEvent(new Event(Sr))}var wr=`slicc:leader-model-catalog-changed`;function Tr(e=window){e.dispatchEvent(new Event(wr))}var Er={off:`off`,low:`low`,medium:`medium`,high:`high`,xhigh:`xhigh`,max:`xhigh`},Dr={off:`off`,minimal:`low`,low:`low`,medium:`medium`,high:`high`,xhigh:`xhigh`};function Or(e){return e?Er[e]:void 0}function kr(e){return e===`max`?`max`:void 0}function Ar(e,t){return t===`max`?`max`:(e&&Dr[e])??`off`}var jr=2e3,Mr=1e4,Nr=12e4;function Pr(e){let t=[],n=null,r=e.modelPickerEnabled!==!1,i=e.catalogRetryDelayMs??jr,a=e.catalogRetryMaxDelayMs??Mr,o=e.catalogRetryWindowMs??Nr,s=0,c=null,l=null,u=()=>{if(!r||l!==null)return;let t=Date.now();if(c===null&&(c=t+o),t>=c)return;let n=Math.min(i*2**s,a);l=setTimeout(()=>{l=null;let t=e.getSync();t?.requestModels&&(s+=1,t.requestModels())},n)},d=()=>{l!==null&&clearTimeout(l),l=null,s=0,c=null},f=()=>{let i=n?t.find(e=>e.modelId===n?.activeModelId):void 0;if(!r||!n||!i){e.composerMeta.style.display=`none`,u();return}e.composerMeta.model=i.modelName,e.composerMeta.setAttribute(`thinking`,Ar(n.thinkingLevel,n.effortOverride)),e.composerMeta.toggleAttribute(`no-thinking`,!i.reasoning),e.composerMeta.style.removeProperty(`display`),d()},p=t=>{e.interceptLocalHandlers&&t.stopImmediatePropagation()};e.composerMeta.addEventListener(`model-change`,t=>{let r=e.getSync();if(!r)return;p(t);let i=t.detail?.id,a=e.getSelectedScoopJid()??n?.scoopJid;i&&r.selectModel(i,a??void 0),f()},{capture:e.interceptLocalHandlers}),e.composerMeta.addEventListener(`thinking-change`,t=>{let r=e.getSync();if(!r)return;if(p(t),e.getLockedEffortLevel?.()){f();return}let i=t.detail?.thinking,a=Or(i),o=e.getSelectedScoopJid()??n?.scoopJid;o&&a&&a!==`max`&&r.setThinkingLevel(o,a,kr(i)),f()},{capture:e.interceptLocalHandlers});let m=()=>{t=[],n=null,d(),e.composerMeta.models=[],e.composerMeta.style.display=`none`};return m(),{onModelsList(n){t=n,e.composerMeta.models=n.map(e=>({id:e.modelId,name:e.modelName,provider:e.providerName})),f()},onModelState(e){n=e,f()},reset:m}}async function Fr(e,t,n,r,i=Cr){let a=await e.setScoopThinkingLevel(t,n,r);return a&&i(),a}function Ir(e,t){return pt(e)===null||new URL(t.location.href).searchParams.get(`cherry`)===`1`||se(t.localStorage)}async function Lr(e,t,n=[]){let r=ut(t),i=ft(r);e.thread.setAttribute(`context`,mt(t));let a=E(t),s=T({isRoot:a,name:t.name});e.thread.setAttribute(`accent`,s),e.switcher.setAttribute(`active`,t.jid),Oe(e,a?{kind:`cone`}:{kind:`scoop`,accent:s}),Te(e,i);let c=localStorage.getItem(`slicc_locked_effort_level`),l=Ve(t);e.composerMeta.setAttribute(`thinking`,Ar(c??l.level,l.effortOverride));try{let{resolveCurrentModel:r,resolveModelById:i}=await o(async()=>{let{resolveCurrentModel:e,resolveModelById:t}=await import(`./provider-settings-B60i2ftL.js`).then(e=>e.t);return{resolveCurrentModel:e,resolveModelById:t}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34])),a=D(j(n,t)??t),s=a?i(a.id,a.provider):r();e.composerMeta.setAttribute(`model`,s.name??s.id),e.composerMeta.toggleAttribute(`no-thinking`,s.reasoning!==!0||!!c)}catch{}}async function Rr(e){if(Ir(e.pendingUrlContext,e.win))return;let t=pt(e.pendingUrlContext);if(t===null)return;let{SessionStore:n}=await o(async()=>{let{SessionStore:e}=await import(`./chat-session-store-pWb1-jNp.js`).then(e=>e.n);return{SessionStore:e}},__vite__mapDeps([35,1])),r=new n;await r.init();let i=await r.load(ze({folder:t}));i&&i.messages.length>0&&!e.hasSelection()&&(e.loadMessages(i.messages),e.onHydrated())}function zr(e){let{boot:t,client:n,agentHandle:r,openReader:i,log:a}=e,{refs:s}=t;o(async()=>{let{createPlaceholderRefresher:e}=await import(`./wc-placeholder-Cgt7DIlO.js`);return{createPlaceholderRefresher:e}},__vite__mapDeps([36,3,37,1])).then(({createPlaceholderRefresher:n})=>{e.setRefreshPlaceholder(n({inputCard:s.inputCard,getMessages:()=>t.getController()?.getMessages()??[],defaultPlaceholder:s.inputCard.getAttribute(`placeholder`)??`Ask sliccy, or describe a change…`}))}),Rr({pendingUrlContext:t.wiring.pendingUrlContext,win:window,hasSelection:()=>!!t.getSelected(),loadMessages:e=>t.getController()?.loadMessages(e),onHydrated:e.triggerPlaceholder}).catch(e=>a.warn(`WC session hydration failed`,e));let c=null;return o(async()=>{let{wireWcAttach:e}=await import(`./wc-attach-Dc31zmRt.js`);return{wireWcAttach:e}},__vite__mapDeps([38,3,14,12,39])).then(({wireWcAttach:t})=>{c=t({inputCard:s.inputCard,freezer:s.freezer,composer:s.composer,openReader:i,openWriter:e.openWriter,listConversations:async()=>{let{readSessionsIndex:e}=await o(async()=>{let{readSessionsIndex:e}=await import(`./session-freezer-CNHYB1nc.js`).then(e=>e.o);return{readSessionsIndex:e}},__vite__mapDeps([40,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,41,42,43,44,37,45]));return(await e(await i())).map(e=>({id:e.filename,label:e.title,sub:`${e.messageCount} turns`}))},log:a})}).catch(e=>a.error(`WC add-menu wiring failed`,e)),s.switcher.setAttribute(`gaze-target`,`slicc-input-card`),s.inputCard.addEventListener(`input`,()=>{s.switcher.scrutinize(),s.switcher.wake()}),s.inputCard.addEventListener(`submit`,e=>{let n=Ee(e);if(!n)return;t.wiring.awaitingInput=null,t.wiring.refreshScoops?.(),t.wiring.notifyScoopStateChanged?.();let r=e.detail?.source===`dictation`;r&&(o(async()=>{let{markVoiceSubmission:e}=await import(`./voice-reply-Bl9WzOJ_.js`);return{markVoiceSubmission:e}},__vite__mapDeps([46,11,37,1,47,3,15,29,19,12,48,49,13,14,16,17,50,51])).then(({markVoiceSubmission:e})=>e()).catch(()=>void 0),o(async()=>{let{beginVoiceTurn:e,playCue:t}=await import(`./soundscape-TvriK11t.js`);return{beginVoiceTurn:e,playCue:t}},__vite__mapDeps([52,11,53])).then(({beginVoiceTurn:e,playCue:t})=>{e(),t(`sent`)}).catch(()=>void 0)),t.getController()?.sendUserMessage(n,c?.take(),{dictation:r,steer:_e(e)}),s.inputCard.clear?.();let i=t.getSelected()?.jid;i&&(s.switcher.setAttribute(`attention`,i),t.wiring.lastActivity.set(i,n.slice(0,600)))}),s.inputCard.addEventListener(`stop`,()=>{t.getController()?.processing&&r.stop()}),o(async()=>{let{wireWcHistoryNav:e}=await import(`./wc-history-nav-C5w8ianG.js`);return{wireWcHistoryNav:e}},[]).then(({wireWcHistoryNav:e})=>e({thread:s.thread,inputCard:s.inputCard})).catch(e=>a.error(`WC history nav wiring failed`,e)),s.composerMeta.addEventListener(`thinking-change`,e=>{if(localStorage.getItem(`slicc_locked_effort_level`))return;let r=e.detail?.thinking,i=Or(r),o=kr(r),s=t.getSelected();s&&i&&Fr(n,s.jid,i,o).catch(e=>a.warn(`local thinking update failed`,e))}),{getAttachStage:()=>c}}var Br=`<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>`;function Vr(e){for(let t=e.length-1;t>=0;t--){let n=e[t];if(n.role===`assistant`&&!n.isStreaming&&!n.queued)return n.content}for(let t=e.length-1;t>=0;t--)if(e[t].role===`assistant`)return e[t].content;return null}function Hr(e){let t=e.writeText??(e=>navigator.clipboard.writeText(e)),n=document.createElement(`div`);n.className=`wc-copy-row`,n.style.cssText=`display:flex;justify-content:flex-start;margin:-8px 0 14px;`;let r=document.createElement(`slicc-press-button`);r.setAttribute(`tooltip`,`Copy last response · hold to copy chat`),r.setAttribute(`label`,`Copy last response — hold to copy entire chat`),r.setAttribute(`disable-double-click`,``),r.style.cssText=`color:var(--txt-3);cursor:pointer;display:inline-flex;`;let i=document.createRange();r.append(i.createContextualFragment(Br));let a=()=>{r.style.color=`var(--green)`,setTimeout(()=>{r.style.color=`var(--txt-3)`},1500)};return r.addEventListener(`short-click`,()=>{(async()=>{let n=Vr(e.getMessages());await t(n??tt([...e.getMessages()])),a()})()}),r.addEventListener(`long-press`,()=>{(async()=>{let n=tt([...e.getMessages()]);n&&(await t(n),a())})()}),n.append(r),n}function Y(){return`msg-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}function Ur(e){try{let t=new DOMParser().parseFromString(e,`text/html`).querySelector(`.sprinkle-action-card__header`);if(t){t.querySelector(`.sprinkle-badge`)?.remove(),t.querySelector(`.sprinkle-action-card__meta`)?.remove();let e=t.textContent?.trim();if(e)return e}}catch{}return`Approval requested`}function Wr(e){return`
3
+ <div class="sprinkle-action-card">
4
+ <div class="sprinkle-action-card__header">${he(Ur(e))} <span class="sprinkle-badge sprinkle-badge--informative">pending</span></div>
5
+ <div class="sprinkle-action-card__body">Waiting for approval on the leader&hellip;</div>
6
+ </div>
7
+ `}function Gr(e){let t={id:e.id,text:e.content};return e.attachments?.length&&(t.attachments=e.attachments.length),t}var Kr=class e{#e;#t;#n;#r;#i;#a=null;#o;#s;#c;#l;#u;#d;#f;#p;#m;#h;#g;#_;#v;#y=[];#b=[];#x=null;#S=new Map;#C=null;#w=null;#T=``;#E=!1;#D=!1;#O=`thinking`;#k=0;#A=null;#j=new Set;#M=new Map;#N=new Map;#P=new Set;#F=!1;#I=null;constructor(e){this.#e=e.thread,this.#t=e.agent,this.#n=e.onProcessingChange,this.#r=e.onBusyPhaseChange,this.#i=e.onToolProgressChange,this.#o=e.onMessageRendered,this.#s=e.onMessageDisposed,this.#c=e.onTurnComplete,this.#l=e.resolveTelemetryContext,this.#u=e.onQueuedChange,this.#d=e.onLickBackpressureChange,this.#f=e.onQueuedCancel,this.#p=e.onToolUiAction,this.#m=e.readOnlyToolUi??!1,this.#h=e.agent.onEvent(e=>this.#q(e)),this.#v=e=>this.#fe(e),this.#e.addEventListener(`slicc-error-retry`,this.#v)}dispose(){this.#h(),this.#e.removeEventListener(`slicc-error-retry`,this.#v);for(let e of[...this.#M.keys()])this.#de(e);this.#N.clear(),this.#P.clear(),this.#ue()}setReadOnly(e){if(this.#F!==e&&(this.#F=e,e))for(let e of[...this.#M.keys()])this.#de(e)}get readOnly(){return this.#F}get processing(){return this.#D}getMessages(){return this.#y.map(e=>({...e}))}setAgent(e){this.#h(),this.#t=e,this.#h=e.onEvent(e=>this.#q(e))}setOnLocalUserMessage(e){this.#g=e}setOnLocalProcessingChange(e){this.#_=e}addUserMessage(e,t,n){this.#he({id:Y(),role:`user`,content:e,timestamp:Date.now(),...n?{source:n}:{}})}getQueuedMessages(){return this.#b.map(Gr)}removeQueuedMessage(e){let t=this.#b.filter(t=>t.id!==e);t.length!==this.#b.length&&(this.#b=t,this.#z())}stashQueued(){let e=this.#b;return e.length===0?[]:(this.#b=[],this.#z(),e)}restoreQueued(e){this.#I=e.length>0?[...e]:null}heldBackendPendingIds(e){if(!this.#I||!e?.length)return new Set;let t=new Set(e);return new Set(this.#I.filter(e=>t.has(e.id)).map(e=>e.id))}#L(e,t){if(!this.#I)return;let n=this.heldBackendPendingIds(t),r=new Set(e.map(e=>e.id)),i=this.#I.filter(e=>!r.has(e.id)||n.has(e.id));if(this.#I=null,i.length===0)return;if(!t){this.#b=i,this.#z();return}let a=new Map(t.map((e,t)=>[e,t])),o=i.filter(e=>a.has(e.id)).sort((e,t)=>(a.get(e.id)??0)-(a.get(t.id)??0)),s=i.filter(e=>!a.has(e.id));if(this.#b=this.#D?o:[...o,...s],this.#z(),this.#D)for(let e of s)this.#he(e)}#R(){if(this.#b.length===0)return;let e=this.#b;this.#b=[];for(let t of e)this.#he(t);this.#z()}#z(){this.#u?.(this.#b.map(Gr))}#B(){this.#d?.(this.#x)}setLickBackpressure(e,t,n){if(e<=0){if(!this.#x)return;this.#x=null,this.#B();return}this.#x={text:`${e} events waiting for the current turn`},this.#B();try{ee(n,t)}catch{}}addAssistantMessage(e){this.#he({id:Y(),role:`assistant`,content:e,timestamp:Date.now()})}loadMessages(e,t){for(let e of this.#S.keys())this.#s?.(e);for(let e of[...this.#M.keys()])this.#de(e);this.#N.clear(),this.#P.clear(),this.#ue();let n=this.#b.length>0;if(this.#b.length>0){if(this.#f)for(let e of this.#b)try{this.#f(e.id)}catch(e){console.error(`onQueuedCancel hook threw`,e)}this.#b=[]}n&&this.#z();let r=this.heldBackendPendingIds(t),i=r.size>0?e.filter(e=>!r.has(e.id)):e;this.#y=be(i);let a=[...this.#y].reverse().find(e=>e.isStreaming);this.#C=a?.id??null,a&&(this.#w=a.id),this.#T=``,this.#E=!1,this.#S.clear();let o=[],s=``;for(let e of this.#y){let t=new Date(e.timestamp).toDateString();t!==s&&(o.push(ge(e.timestamp)),s=t);let n=this.#me(e);this.#S.set(e.id,n),o.push(...n)}let c=this.#e;typeof c.replaceContent==`function`?c.replaceContent(...o):c.replaceChildren(...o),this.#ye();for(let e of this.#y)e.isStreaming||this.#o?.(e,this.#S.get(e.id)??[]);this.#K(),this.#xe(),this.#V(),this.#L(e,t)}#V(){if(this.#e.getAttribute(`context`)!==`cone`||this.#y.length===0||!_()||this.#D)return;let e=this.#y[this.#y.length-1];e.role!==`user`||e.source===`lick`||e.source===`delegation`||e.queued||this.#fe(new Event(`slicc-error-retry`))}sendUserMessage(e,t,n){let r=e.trim();if(!r&&!t?.length)return;let i=n?.dictation?this.#H(r):r,a={id:Y(),role:`user`,content:i,timestamp:Date.now(),attachments:t?.length?t:void 0};this.#D&&!n?.steer?(this.#b.push(a),this.#z()):this.#he(a),n?.steer?this.#t.sendMessage(i,a.id,a.attachments,{steer:!0}):this.#t.sendMessage(i,a.id,a.attachments),this.#U();try{let e=n?.dictation?Ue(i):i;this.#g?.(e,a.id,a.attachments)}catch(e){console.error(`onLocalUserMessage hook threw`,e)}}#H(e){return Ge(e,We())}#U(){if(this.#l)try{let e=this.#l();if(!e)return;ne(e.scoopName,e.model)}catch{}}addLickMessage(e,t,n,r,i){let a=this.#y[this.#y.length-1];if(!(i||a?.lickId)&&a&&a.source===`lick`&&a.channel===n){a.lickParts=[...a.lickParts??[a.content],t],a.lickCount=a.lickParts.length,a.content+=`\n\n${t}`,this.#ge(a);return}this.#he({id:e,role:`user`,content:t,timestamp:r,source:`lick`,channel:n,lickId:i,lickState:i?`pending`:void 0,queued:this.#D?!0:void 0})}updateLickState(e,t){let n=this.#y.find(t=>t.lickId===e);n&&(n.lickState=t,this.#ge(n))}setProcessing(e){if(this.#D!==e){this.#D=e,e&&(this.#w=null),e&&(this.#k=0,this.#W(`thinking`)),e&&this.#R(),e||(this.#x&&(this.#x=null,this.#B()),this.#K()),this.#n?.(e);try{this.#_?.(e)}catch(e){console.error(`onLocalProcessingChange hook threw`,e)}e||this.#G()}}#W(e){this.#O!==e&&(this.#O=e,this.#r?.(e))}#G(){let e=this.#w;if(this.#w=null,!this.#c)return;let t=e?this.#pe(e):null;this.#c(t?{...t}:null)}#K(){let e=this.#y[this.#y.length-1];if(!(e?.role===`assistant`&&!e.isStreaming)){this.#A?.remove();return}this.#A??=Hr({getMessages:()=>this.getMessages()}),(this.#e.inner??this.#e).append(this.#A)}#q(e){switch(e.type){case`message_start`:this.#J(e.messageId);break;case`content_delta`:this.#Y(e.messageId,e.text);break;case`content_done`:this.#Z(e.messageId,e.model,e.usage);break;case`tool_use_start`:this.#$(e.messageId,e.toolName,e.toolInput,e.toolCallId);break;case`tool_result`:this.#te(e.messageId,e.toolName,e.result,e.isError,e.toolCallId);break;case`tool_ui`:this.#ae(e.messageId,e.requestId,e.html);break;case`tool_ui_done`:this.#oe(e.requestId);break;case`tool_progress`:this.#se(e.messageId,e.toolName,e.progress,e.toolCallId);break;case`turn_end`:this.#ne(e.messageId);break;case`error`:this.#re(e.error)}}#J(e){this.setProcessing(!0),this.#C=e,this.#w=e,this.#he({id:e,role:`assistant`,content:``,timestamp:Date.now(),isStreaming:!0,toolCalls:[]})}#Y(e,t){this.#pe(e)&&(this.#T+=t,!this.#E&&(this.#E=!0,requestAnimationFrame(()=>this.#X(e))))}#X(e){if(this.#E=!1,!this.#T)return;let t=this.#pe(e);t&&(t.content+=this.#T,this.#T=``,this.#ge(t))}#Z(e,t,n){let r=this.#pe(e);r&&(t&&(r.model=t),n&&(r.usage=n),this.#T&&this.#C===e&&(r.content+=this.#T),this.#T=``,this.#E=!1,r.isStreaming=!1,this.#ge(r))}static#Q(e,t){return`${e}:${t}`}#$(t,n,r,i){let a=this.#pe(t);if(!a)return;a.toolCalls=a.toolCalls??[];let o=i?e.#Q(t,i):Y();this.#P.add(o),a.toolCalls.push({id:o,name:n,input:r}),this.#k+=1,this.#W(`tool`),this.#ge(a)}#ee(t,n,r){let i=t?.toolCalls??[];if(r){let n=t?e.#Q(t.id,r):void 0;return i.find(e=>e.id===n)??i.find(e=>e.id===r)}return[...i].reverse().find(e=>e.name===n&&e.result===void 0)}#te(e,t,n,r,i){let a=this.#pe(e),o=this.#ee(a,t,i);!a||!o||(o.result=n,o.isError=r,o.id&&(this.#N.delete(o.id),this.#ue()),this.#k=Math.max(0,this.#k-1),this.#k===0&&this.#W(`thinking`),this.#ge(a))}#ne(e){let t=this.#pe(e);t?.isStreaming&&(t.isStreaming=!1,this.#ge(t)),this.#C=null,this.setProcessing(!1)}#re(e){this.setProcessing(!1),this.#he({id:Y(),role:`assistant`,content:e,timestamp:Date.now(),error:!0}),this.#ie(e)}#ie(e){try{if(ie(e)||C(e)||te(e))return;re(`error-card`,e)}catch{}}#ae(e,t,n){if(this.#F)return;this.#de(t);let r=document.createElement(`div`);if(r.className=`msg__dip`,r.setAttribute(`data-tool-ui-request`,t),(this.#e.inner??this.#e).append(r),this.#m){let e=qe(r,Wr(n),()=>{},!1);this.#M.set(t,{instance:e,container:r});return}let i=qe(r,n,(e,n)=>{this.#p?.(t,e,n)},!1);this.#M.set(t,{instance:i,container:r}),this.#p?.(t,S,void 0)}#oe(e){this.#de(e)}#se(e,t,n,r){let i=this.#pe(e),a=this.#ee(i,t,r);a?.id&&(n.phase===`end`?this.#N.delete(a.id):this.#N.set(a.id,n),this.#ce(a.id),this.#ue())}#ce(e){let t=this.#e.querySelector(`slicc-action-row[data-tool-id="${CSS.escape(e)}"]`);t&&xe(t,this.#N.get(e)??null),this.#le()}#le(){let e=this.#e.querySelectorAll(`slicc-tool-cluster`);for(let t of e){let e=[...t.querySelectorAll(`slicc-action-row[data-tool-id]`)].filter(e=>e.dataset.toolId&&this.#P.has(e.dataset.toolId)).map(e=>{let t=e.dataset.toolId,n=e.getAttribute(`result`);return{done:n!==null&&n!==`…`,fraction:this.#N.get(t)?.fraction}});we(t,De(e))}}#ue(){let e=null,t=[...this.#N.values()];t.length>0&&t.every(e=>typeof e.fraction==`number`)&&(e=t.reduce((e,t)=>e+t.fraction,0)/t.length),e!==this.#a&&(this.#a=e,this.#i?.(e))}#de(e){let t=this.#M.get(e);if(t){this.#M.delete(e);try{t.instance.dispose()}catch{}t.container.remove()}}#fe(e){if(this.#D)return;let t=e.detail?.messageId??null,n=this.#y.length;if(t){let e=this.#y.findIndex(e=>e.id===t);e>=0&&(n=e)}let r=n>0?this.#y[n-1]:void 0;if(r&&r.source===`lick`&&!r.queued){this.#t.sendMessage(r.content,Y(),r.attachments);return}let i;for(let e=n-1;e>=0;e--){let t=this.#y[e];if(t.role===`user`&&t.source!==`lick`&&t.source!==`delegation`&&!t.queued){i=t;break}}i&&this.#t.sendMessage(i.content,Y(),i.attachments)}#pe(e){return this.#y.find(t=>t.id===e)}#me(e){try{return Ae(e,{readOnly:this.#F})}catch(t){console.error(`[wc-chat] message render failed — degrading to plain bubble`,t);let n=document.createElement(e.role===`assistant`?`slicc-agent-message`:`slicc-user-message`);return n.setAttribute(`text`,String(e.content??``)),[n]}}#he(e){this.#ve(),this.#y.push(e);let t=this.#me(e);this.#S.set(e.id,t),this.#e.append(...t),this.#ye(),e.isStreaming||this.#o?.(e,t),e.role===`user`?this.#xe():this.#Se()}#ge(e){this.#ve(),this.#s?.(e.id);let t=this.#S.get(e.id)??[],n=this.#me(e),r=t[0]??null,i=r?.parentNode;if(i){for(let e of n)i.insertBefore(e,r);for(let e of t)e.remove()}else this.#e.append(...n);this.#S.set(e.id,n);for(let t of e.toolCalls??[])t.id&&this.#N.has(t.id)&&this.#ce(t.id);this.#ye(),this.#le(),e.isStreaming||this.#o?.(e,n),this.#Se()}#_e(){return this.#e.inner??this.#e}#ve(){ve(this.#_e(),this.#j)}#ye(){Ne(this.#_e(),{openClusterAnchors:this.#j,toolCallLookup:(e,t)=>this.#be(e,t)})}#be(e,t){return this.#y.find(t=>t.id===e)?.toolCalls?.find(e=>e.id===t)}#xe(){this.#e.scrollTop=this.#e.scrollHeight}#Se(){let e=this.#e;typeof e.requestFollow==`function`?e.requestFollow():this.#xe()}};function qr(e,t,i,a,s){let c=new Map;o(async()=>{let{loadDipStyles:e}=await import(`./legacy-styles-DcRu2WCJ.js`);return{loadDipStyles:e}},__vite__mapDeps([54,3])).then(({loadDipStyles:e})=>e()).catch(()=>void 0),o(async()=>{let{watchSprinkleThemeBroadcast:e}=await import(`./theme-CXRqxpw6.js`).then(e=>e.i);return{watchSprinkleThemeBroadcast:e}},__vite__mapDeps([55,1,56,11])).then(({watchSprinkleThemeBroadcast:e})=>e()).catch(()=>void 0),o(async()=>{let{applyThemeOverrides:e}=await import(`./theme-engine-By4GU_Wc.js`).then(e=>e.p);return{applyThemeOverrides:e}},__vite__mapDeps([56,1,11])).then(({applyThemeOverrides:e})=>e()).catch(()=>void 0);let l=t.createAgentHandle();l.onEvent(t=>{(t.type===`tool_use_start`||t.type===`tool_result`)&&(t.type===`tool_result`&&t.isError&&e.switcher.glower(),o(async()=>{let{playCue:e}=await import(`./soundscape-TvriK11t.js`);return{playCue:e}},__vite__mapDeps([52,11,53])).then(({playCue:e})=>e(t.type===`tool_use_start`?`tool-start`:`tool-finish`)).catch(()=>void 0))});let u=new Kr({thread:e.thread,agent:l,resolveTelemetryContext:()=>{let e=i();if(!e)return null;let t=F(e);try{let i=D(e);return{scoopName:t,model:(i?r(i.id,i.provider):n()).id}}catch{return{scoopName:t,model:``}}},onTurnComplete:e=>{o(async()=>{let{consumeVoiceSubmission:e,speakReplyMarkdown:t}=await import(`./voice-reply-Bl9WzOJ_.js`);return{consumeVoiceSubmission:e,speakReplyMarkdown:t}},__vite__mapDeps([46,11,37,1,47,3,15,29,19,12,48,49,13,14,16,17,50,51])).then(async({consumeVoiceSubmission:t,speakReplyMarkdown:n})=>{if(!t())return;let{endVoiceTurn:r,setTtsActive:i}=await o(async()=>{let{endVoiceTurn:e,setTtsActive:t}=await import(`./soundscape-TvriK11t.js`);return{endVoiceTurn:e,setTtsActive:t}},__vite__mapDeps([52,11,53]));try{if(e?.content){i(!0);try{await n(e.content)}finally{i(!1)}}}finally{r()}}).catch(()=>void 0)},onProcessingChange:t=>{e.frame.toggleAttribute(`data-processing`,t),e.inputCard.querySelector(`slicc-send-button`)?.toggleAttribute(`busy`,t),t||a?.()},onBusyPhaseChange:t=>{e.inputCard.querySelector(`slicc-send-button`)?.setAttribute(`phase`,t)},onToolProgressChange:t=>{let n=e.inputCard.querySelector(`slicc-send-button`);n&&(t===null?n.removeAttribute(`progress`):n.setAttribute(`progress`,t.toFixed(3)))},onMessageDisposed:e=>{let t=c.get(e);t&&(Ye(t),c.delete(e))},onMessageRendered:(e,n)=>{let r=n[0];r&&c.set(e.id,Je(r,(e,n)=>{let r={type:`sprinkle`,sprinkleName:`inline`,timestamp:new Date().toISOString(),body:{action:e,data:n}};s?.intercept?.(r)||t.sendSprinkleLick(`inline`,{action:e,data:n})}))},onQueuedChange:t=>e.queuedStack.setMessages(t),onLickBackpressureChange:t=>{e.lickBackpressureNotice.textContent=t?.text??``,e.lickBackpressureNotice.toggleAttribute(`hidden`,t===null)},onToolUiAction:(e,n,r)=>{t.sendToolUiAction(e,n,r)},onQueuedCancel:e=>{let n=t.selectedScoopJid;n&&t.deleteQueuedMessage(n,e).catch(()=>void 0)}});return e.queuedStack.addEventListener(`slicc-queued-remove`,e=>{let n=e.detail?.id;if(!n)return;u.removeQueuedMessage(n);let r=t.selectedScoopJid;r&&t.deleteQueuedMessage(r,n).catch(()=>void 0)}),{controller:u,agentHandle:l}}var Jr=`slicc:leader-run-new-session`,Yr=`slicc:leader-broadcast-snapshot`;function Xr(e){if(!(!e.cone||e.cone===`cone`))return e.coneLabel||e.cone.replace(/^cone-/,``)}function Zr(e){return`${new Date(e.frozenAt).toLocaleDateString(void 0,{month:`short`,day:`numeric`})} · ${e.messageCount} turns`}function Qr(e){let t=document.createElement(`slicc-freezer-card`);return t.setAttribute(`title`,e.title),t.setAttribute(`meta`,Zr(e)),t.setAttribute(`slug`,e.filename),e.icon&&t.setAttribute(`icon`,e.icon),t}async function $r(e){let t=new Map;for(let n of e.entries){if(n.icon||n.pendingEnrichment)continue;let r=await e.pickIcon(`"${n.title}" — an archived chat session`);r&&t.set(n.filename,r)}if(t.size===0)return;let n=await ei(e.reader);if(n===null||n.length===0)return;let r=n.map(e=>{let n=!e.icon&&t.has(e.filename)?t.get(e.filename):void 0;return n?{...e,icon:n}:e});await e.writer.writeFile(k,JSON.stringify(r,null,2));for(let n of e.freezer.querySelectorAll(`slicc-freezer-card`)){let e=t.get(n.getAttribute(`slug`)??``);e&&!n.hasAttribute(`icon`)&&n.setAttribute(`icon`,e)}}async function ei(e){let t=await ti(e);return t.kind===`ok`?t.entries:t.kind===`missing`?[]:null}async function ti(e){let t;try{let n=await e.readFile(k,{encoding:`utf-8`});t=typeof n==`string`?n:new TextDecoder().decode(n)}catch(e){return e?.code===`ENOENT`?{kind:`missing`}:{kind:`fault`}}try{let e=JSON.parse(t);return Array.isArray(e)?{kind:`ok`,entries:e}:{kind:`corrupt`}}catch{return{kind:`corrupt`}}}async function ni(e){let t;try{t=(await e.readDir(`/sessions`)).filter(e=>e.type===`file`&&e.name.endsWith(`.md`)).map(e=>e.name)}catch{return[]}let n=[];for(let r of t)try{let t=await e.readFile(`/sessions/${r}`,{encoding:`utf-8`}),i=typeof t==`string`?t:new TextDecoder().decode(t),a=i.slice(0,2e3),o=/^title:\s*"?(.*?)"?\s*$/m.exec(a)?.[1]??r,s=/^frozenAt:\s*"?(.*?)"?\s*$/m.exec(a)?.[1]??new Date(0).toISOString(),c=Number(/^messageCount:\s*(\d+)\s*$/m.exec(a)?.[1]??0),l=A(i);n.push({filename:r,title:o,frozenAt:s,messageCount:c,...l.cost?{cost:l.cost}:{},...l.models?{models:l.models}:{},...l.cone?{cone:l.cone}:{},...l.coneLabel?{coneLabel:l.coneLabel}:{},...l.memorySkipped?{memorySkipped:!0}:{},...r.startsWith(`pending-`)?{pendingEnrichment:!0}:{}})}catch{}return n.sort((e,t)=>t.frozenAt.localeCompare(e.frozenAt)),n}function ri(e,t){for(let t of Array.from(e.querySelectorAll(`slicc-freezer-card`)))t.remove();e.append(...t.map(Qr))}async function ii(e,t){let n=await e.readFile(Qe(t),{encoding:`utf-8`}),r=typeof n==`string`?n:new TextDecoder().decode(n),i=A(r);return{title:i.title||t.title,messages:i.messages}}async function ai(e,t){let{getTranscriptExportService:n}=await o(async()=>{let{getTranscriptExportService:e}=await import(`./export-provider-BEHTjSYw.js`).then(e=>e.t);return{getTranscriptExportService:e}},__vite__mapDeps([57,1,12]));await n().captureFrozen({sessionId:t.sessionId??t.archive.id,title:t.archive.title,frozenAt:t.archive.frozenAt,createdAt:t.archive.createdAt,updatedAt:t.archive.updatedAt,...e?{rootJid:e.jid}:{}})}async function oi(e){let{root:t}=e,n=t?{folder:t.folder,label:M(t),jid:t.jid}:void 0,r=e=>ai(t,e);if(e.action!==`save`){await e.runNewSessionFreezeQuick({vfs:e.writer,cone:n,captureCompleteSnapshot:r});return}await e.runNewSessionFreeze({vfs:e.writer,cone:n,agenticMemorySpawn:t=>e.client.spawnAgent(t),captureCompleteSnapshot:r,onProgress:t=>{let n=e.freezerNew();n&&(t===null?n.removeAttribute(`progress`):n.setAttribute(`progress`,String(t)))},onBackgroundEnriched:e.refreshFreezer})}async function si(e){try{await e.resetNewSessionTmp(e.writer,e.tmpDir)}catch(t){e.log.warn(`WC new session /tmp reset failed — clearing anyway`,t)}await e.client.clearAllMessages(e.root?.jid),e.getController()?.loadMessages([]),window.dispatchEvent(new CustomEvent(Yr)),o(async()=>{let{resetDictationPriming:e}=await import(`./dictation-priming-CNllGgNq.js`).then(e=>e.r);return{resetDictationPriming:e}},__vite__mapDeps([37,1])).then(({resetDictationPriming:e})=>e()).catch(()=>void 0)}function ci(e,t){let n=t?Xr(t):void 0,r=e.createElement(`slicc-day-separator`);return r.setAttribute(`label`,n?`Frozen chat · from cone ${n}`:`Frozen chat`),r.setAttribute(`data-frozen-provenance`,n??``),r}function li(e){let{refs:t,openVfs:n,client:r,getController:i,getSelected:a,clearSelection:s,log:c}=e,l=[],u=null,d=t=>{u=null,e.selectScoop(t)},f=0,p=!1,m=()=>{let e=++f;n().then(async({reader:n,writer:r})=>{let i=await ei(n);if(i===null){if((await ti(n)).kind!==`corrupt`||(c.warn(`WC freezer index corrupt — rebuilding from archives`),i=await ni(n),i.length===0))return;await r.writeFile(k,JSON.stringify(i,null,2))}e===f&&(l=i,ri(t.freezer,i),!p&&i.some(e=>!e.icon&&!e.pendingEnrichment)&&(p=!0,o(async()=>{let{pickLucideIcon:e}=await import(`./quick-llm-DunO9KZO.js`).then(e=>e.n);return{pickLucideIcon:e}},__vite__mapDeps([58,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,59,43])).then(({pickLucideIcon:e})=>$r({reader:n,writer:r,freezer:t.freezer,entries:i,pickIcon:t=>e({subject:t})})).catch(e=>c.warn(`WC freezer icon enrichment failed`,e)).finally(()=>{p=!1})))}).catch(e=>c.error(`WC freezer refresh failed`,e))},h=!1,g=()=>t.freezer.querySelector(`slicc-freezer-new`),_=e=>{h||(h=!0,g()?.setAttribute(`busy`,``),(async()=>{let t=j(r.getScoops(),a());try{let{writer:a}=await n(),{resetNewSessionTmp:s,runNewSessionFreeze:l,runNewSessionFreezeQuick:u}=await o(async()=>{let{resetNewSessionTmp:e,runNewSessionFreeze:t,runNewSessionFreezeQuick:n}=await import(`./new-session-D_qcj8sH.js`);return{resetNewSessionTmp:e,runNewSessionFreeze:t,runNewSessionFreezeQuick:n}},__vite__mapDeps([60,2,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,61,0,28,29,30,31,32,33,34,59,35,40,41,42,43,44,37,45]));e!==`erase`&&await oi({action:e,writer:a,root:t,client:r,freezerNew:g,refreshFreezer:m,runNewSessionFreeze:l,runNewSessionFreezeQuick:u}),await si({writer:a,root:t,client:r,getController:i,log:c,resetNewSessionTmp:s,tmpDir:$e(r.getScoops(),t)}),m();let f=r.getScoops().find(e=>e.jid===t?.jid)??P(r.getScoops());f&&d(f)}catch(e){c.error(`WC new session failed`,e)}finally{h=!1;let e=g();e?.removeAttribute(`busy`),e?.removeAttribute(`progress`)}})())};for(let e of[`save`,`skip`,`erase`])t.freezer.addEventListener(`new-chat-${e}`,()=>_(e));let v=async e=>{let{writer:t}=await n(),{runNewSessionArchiveOnly:r}=await o(async()=>{let{runNewSessionArchiveOnly:e}=await import(`./new-session-D_qcj8sH.js`);return{runNewSessionArchiveOnly:e}},__vite__mapDeps([60,2,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,61,0,28,29,30,31,32,33,34,59,35,40,41,42,43,44,37,45]));await r({vfs:t,cone:{folder:e.folder,label:M(e),jid:e.jid},captureCompleteSnapshot:t=>ai(e,t)}),m()};w(`agentic-memory`)&&g()?.setAttribute(`no-skip`,``),window.addEventListener(Jr,e=>{let t=e.detail?.action;(t===`save`||t===`skip`||t===`erase`)&&_(t)});let y=async e=>{let o=l.find(t=>t.filename===e);try{let{reader:r}=await n();o||=(await ei(r)??[]).find(t=>t.filename===e);let{messages:a}=await ii(r,o??{filename:e,title:e,frozenAt:``,messageCount:0});t.thread.setAttribute(`context`,`freezer:${o?.filename??e}`),u=o?.sessionId??o?.filename??null,i()?.loadMessages(a),(t.thread.inner??t.thread).prepend(ci(t.thread.ownerDocument,o)),t.thread.setAttribute(`accent`,ke),Oe(t,{kind:`freezer`}),t.inputCard.setAttribute(`disabled`,``),t.switcher.removeAttribute(`active`),s()}catch(e){if(c.error(`WC thaw failed`,e),!a()){let e=lt(r.getScoops(),o?.cone);e&&d(e)}}};return t.freezer.addEventListener(`freezer-card-select`,e=>{let t=e.detail?.slug;t&&y(t)}),{refreshFreezer:m,openFrozen:y,getViewedFrozenSessionId:()=>u,freezeCone:v}}s(`scoops.tray-leave`),s(`scoops.tray-join`);var X=null;function ui(e){X=e}function di(){return X?.()??[]}var fi=null;function pi(e){fi=e}function mi(){return fi??void 0}var hi=`slicc.leaderTrayFollowers`;function gi(){return _i()}function _i(){if(X)return X();try{let e=globalThis.localStorage?.getItem(hi);if(e)return JSON.parse(e)}catch{}return[]}function vi(e,t=globalThis.localStorage){try{t?.setItem(hi,JSON.stringify(e))}catch{}}function yi(e){try{let t=JSON.parse(e);return{processes:(t.processes??[]).filter(e=>e.status===`running`||e.status===`pending`).map(e=>({pid:Number(e.pid??0),argv:String(e.argv??``),status:String(e.status??`unknown`)})),terminated:Number(t.stats?.terminated??0)}}catch{return{processes:[],terminated:0}}}function bi(e){let t=ue();if(t.state!==`inactive`)return{role:`follower`,state:t.state,joinUrl:t.joinUrl,sessionId:t.trayId,workerBaseUrl:oe(t.joinUrl)?.workerBaseUrl??null,stalled:t.stalled};let n=Ie();if(n.state!==`inactive`)return{role:`leader`,state:n.state,joinUrl:n.session?.joinUrl,sessionId:n.session?.trayId,workerBaseUrl:n.session?.workerBaseUrl};let r=null;try{r=ae(e.getItem(ce))}catch{}return{role:`standalone`,state:`inactive`,workerBaseUrl:r}}function xi(e){let{client:n,openReader:r,storage:s}=e;return{getScoops:()=>n.getScoops(),isProcessing:e=>n.isProcessing(e),getCronTasks:async()=>{let{getAllCronTasks:e}=await o(async()=>{let{getAllCronTasks:e}=await import(`./db-cKsBsMMN.js`).then(e=>e.t);return{getAllCronTasks:e}},__vite__mapDeps([62,1]));return e()},getWebhooks:async()=>{let{getAllWebhooks:e}=await o(async()=>{let{getAllWebhooks:e}=await import(`./db-cKsBsMMN.js`).then(e=>e.t);return{getAllWebhooks:e}},__vite__mapDeps([62,1]));return e()},getMounts:async()=>{let{getAllMountEntries:e,loadMountHandle:t}=await o(async()=>{let{getAllMountEntries:e,loadMountHandle:t}=await import(`./mount-table-store-dY2IfQ5S.js`).then(e=>e.r);return{getAllMountEntries:e,loadMountHandle:t}},__vite__mapDeps([63,1])),n=await e();return Promise.all(n.map(async e=>{if(e.descriptor.kind!==`local`)return e;try{let n=await(await t(e.descriptor.idbHandleKey))?.queryPermission?.({mode:`readwrite`});return{...e,valid:n===`granted`}}catch{return{...e,valid:!1}}}))},getMcpServers:async()=>{try{let e=await(await r()).readFile(`/workspace/.mcp/servers.json`,{encoding:`utf-8`});return JSON.parse(typeof e==`string`?e:new TextDecoder().decode(e)).servers??{}}catch{return{}}},getOAuthProviders:()=>{try{let e=new Set,n=[];for(let r of a()){if(e.has(r.providerId))continue;if(e.add(r.providerId),!t(r.providerId)?.isOAuth){n.push({providerId:r.providerId});continue}let a=i(r.providerId),o=r.loggedOut?!1:a?!a.expired:!1;n.push({providerId:r.providerId,valid:o})}return n}catch{return[]}},getSessionStats:async()=>n.getSessionStats?.()??null,getProcesses:async()=>{try{let e=await(await r()).readFile(`/proc/table`,{encoding:`utf-8`});return yi(typeof e==`string`?e:new TextDecoder().decode(e))}catch{return{processes:[],terminated:0}}},getTrayInfo:()=>bi(s),getConnectedFollowers:di}}var Si=`sync-fs-nonce`;function Ci(e={}){let t=e.navigator??(typeof navigator<`u`?navigator:void 0),n=e.document??(typeof document<`u`?document:void 0),r=e.window??(typeof window<`u`?window:void 0),i=e.randomUUID??(()=>crypto.randomUUID()),a=!!t?.serviceWorker?.controller,o=a?i():void 0;if(!o||!t?.serviceWorker)return{syncFsBridgeEnabled:a,syncFsChannelNonce:o};let s=t.serviceWorker,c={type:Si,nonce:o},l=()=>s.controller?.postMessage(c);return l(),s.addEventListener(`controllerchange`,l),s.addEventListener(`message`,e=>{e.data?.type===`sync-fs-need-nonce`&&l()}),n?.addEventListener(`visibilitychange`,()=>{n.visibilityState===`visible`&&l()}),r?.addEventListener(`focus`,l),{syncFsBridgeEnabled:a,syncFsChannelNonce:o}}var wi=36e5,Ti=2e3,Ei=class{#e=[];#t;#n;constructor(e=wi,t=Ti){this.#t=Math.max(1,Math.floor(e)),this.#n=Math.max(2,Math.floor(t))}get windowMs(){return this.#t}push(e){this.#e.push(e);let t=e.at-this.#t;for(;this.#e.length>0&&this.#e[0].at<t;)this.#e.shift();for(;this.#e.length>this.#n;)this.#e.shift()}get size(){return this.#e.length}series(e){if(!(this.#e.length<2))return{points:this.#e.map(t=>({at:t.at,value:t[e]})),windowMs:this.#t}}peak(e){return this.#e.length===0?null:this.#e.reduce((t,n)=>Math.max(t,n[e]),-1/0)}windowLabel(){if(this.#e.length<2)return null;let e=this.#e[this.#e.length-1].at-this.#e[0].at,t=Math.max(1,Math.round(e/1e3));if(t<90)return`last ${t}s`;let n=Math.round(t/60);return n<90?`last ${n}m`:`last ${Math.round(n/60)}h`}},Di=64,Oi=12,ki=/\b(feedback|reviews?|corrections?|learnings?|observations?|testing|verification)\b/i,Ai=/\b(user|preferences?|identit(?:y|ies)|accounts?|personal|interface|working rhythm|keyboard|accessibility)\b/i,ji=/^Auto-extracted \(/;function Mi(e){let t=document.createRange();return t.selectNodeContents(document.body),t.createContextualFragment(e)}function Ni(e){return(Mi(Me(e)).textContent??``).replace(/\s+/g,` `).trim()}function Pi(e){let t=Ni(e);if(t.length<=Di)return{title:t,summary:``,titleEnd:t.length,summaryStart:t.length};let n=[];for(let e of t.matchAll(/[.!?](?:[*_`'")\]]*)\s+|\s+[—–]\s+|[:;](?:[*_`]*)\s+|,\s+(?=(?:and|but|because|while|when|then|so)\b)/g)){let r=/^\s+[—–]|^[:;]/.test(e[0]),i=e.index+(r?0:e[0].trimEnd().length),a=e.index+e[0].length;t.slice(0,i).trim().length>=Oi&&i<=96&&t.slice(a).trim()&&n.push({titleEnd:i,summaryStart:a})}let r=n.sort((e,t)=>Math.abs(e.titleEnd-Di)-Math.abs(t.titleEnd-Di))[0];if(r)return{title:t.slice(0,r.titleEnd).trim(),summary:t.slice(r.summaryStart).trim(),titleEnd:r.titleEnd,summaryStart:r.summaryStart};let i=t.slice(0,97).lastIndexOf(` `),a=i>=Oi?i:96,o=t.slice(a).trim();return{title:t.slice(0,a).trim(),summary:o,titleEnd:a,summaryStart:t.indexOf(o,a)}}function Fi(e,t){let n=Ni(e),r=ji.test(t),i=r?n:`${t} ${n}`;return ki.test(i)?`feedback`:Ai.test(i)?`user`:r?null:`project`}function Ii(e,t){let n=Pi(e);return{title:n.title,summary:n.summary,section:t,tag:Fi(e,t),bodyHtml:Me(e),titleEnd:n.titleEnd,summaryStart:n.summaryStart}}function Li(e){let t=[],n=`Memory`,r=``,i=``,a=null,o=()=>[r||n,i].filter(Boolean).join(` / `),s=()=>{if(!a)return;let e=a.lines.join(` `).trim();e&&t.push(Ii(e,a.section)),a=null};for(let t of e.split(`
8
+ `)){let e=/^(#{1,6})\s+(.+?)\s*#*\s*$/.exec(t.trim());if(e){s();let t=Ni(e[2]);e[1].length===1?(n=t||n,r=``,i=``):e[1].length===2?(r=t,i=``):e[1].length===3&&(i=t);continue}let c=/^\s*[-*]\s+(.*)$/.exec(t);c?(s(),a={lines:[c[1]],section:o()}):t.trim()?a?a.lines.push(t.trim()):a={lines:[t.trim()],section:o()}:s()}return s(),t}function Ri(e,t){let n=document.createTreeWalker(e,NodeFilter.SHOW_TEXT),r=0,i=!1,a=!1,o=null,s=n.nextNode();for(;s;){for(let e=0;e<s.data.length;e+=1){if(/\s/.test(s.data[e])){i&&!a&&(a=!0,o={node:s,offset:e});continue}if(a){if(r===t)return o;r+=1}if(a=!1,o=null,r===t)return{node:s,offset:e};r+=1,i=!0}s=n.nextNode()}return r===t?{node:e,offset:e.childNodes.length}:null}function zi(e,t,n){let r=Mi(e),i=Ri(r,t),a=n==null?{node:r,offset:r.childNodes.length}:Ri(r,n);if(!i||!a)return document.createDocumentFragment();let o=document.createRange();o.setStart(i.node,i.offset),o.setEnd(a.node,a.offset);let s=o.cloneContents();for(let e of[...s.childNodes])e.nodeType===Node.TEXT_NODE&&!e.textContent?.trim()&&e.remove();let c=s.childNodes.length===1?s.firstChild:null;if(!(c instanceof HTMLParagraphElement))return s;let l=document.createDocumentFragment();return l.append(...c.childNodes),l}function Bi(e){return Li(e).map(e=>{let t=document.createElement(`slicc-memrow`);return t.setAttribute(`heading`,e.title),e.summary&&t.setAttribute(`summary`,e.summary),t.setAttribute(`section`,e.section),e.tag&&t.setAttribute(`tag`,e.tag),t.setHeadingContent(zi(e.bodyHtml,0,e.titleEnd)),e.summary&&t.setBodyContent(zi(e.bodyHtml,e.summaryStart,null)),t})}async function Vi(e,t=Ze.memoryPath){let n=``;try{let r=await e.readFile(t,{encoding:`utf-8`});n=typeof r==`string`?r:new TextDecoder().decode(r)}catch{n=``}return Bi(n)}function Hi(e){let t=e.filter(e=>e.health===`stalled`).length,n=e.filter(e=>e.health!==`stalled`&&e.peerState===`connecting`).length,r=e.length-t-n,i=[r>0?`${r} connected`:``,n>0?`${n} connecting`:``,t>0?`${t} stalled`:``].filter(Boolean);return{id:`followers`,label:`Followers`,icon:`radio`,count:e.filter(e=>e.peerState===`connected`).length,meta:i.join(` · `)||`none paired`,accent:`cyan`,emptyText:`No followers connected yet. Pair a phone, tablet, or CLI follower to this tray.`,rows:e.map(e=>{let t=e.motd??e.runtime??`Connected follower`,n=e.hostOrigin?`${t} · ${e.hostOrigin}`:t,r=[e.exec?`ssh`:``,e.cdp?`playwright`:``].filter(Boolean);return{name:ot(e),sublabel:n,meta:nt(e),icon:it(e),badges:r,status:at(e)}})}}function Ui(e){return e.stalled||e.state===`reconnecting`?`warn`:e.state===`error`?`error`:e.state===`leader`||e.state===`connected`?`active`:`idle`}function Wi(e){return e.stalled?`stalled`:e.state===`leader`?`connected`:e.state}function Gi(e){let t=Wi(e),n=e.sessionId?`Session ${rt(e.sessionId)}`:null,r=e.workerBaseUrl?`Worker · ${e.workerBaseUrl}`:null;return{id:`tray`,label:`Tray`,icon:e.role===`follower`?`radio`:`cloud`,count:1,meta:`${e.role} · ${t}`,accent:`waffle`,status:Ui(e),rows:[{name:e.role[0].toUpperCase()+e.role.slice(1),sublabel:[n,r].filter(Boolean).join(` · `)||`No tray session`,meta:t,icon:e.role===`follower`?`radio`:`cloud`,badges:e.joinUrl?[`join URL`]:[],status:Ui(e)}]}}function Ki(e,t){let n=e.filter(e=>E(e)),r=t=>e.filter(e=>!E(e)&&e.parentJid===t),i=(e,n)=>{let r=t(e.jid);return{name:E(e)?`${e.name||`sliccy`} (cone)`:e.name,meta:r?`working`:`idle`,active:r,depth:n}},a=n.flatMap(e=>[i(e,0),...r(e.jid).map(e=>i(e,1))]),o=new Set(a.map(e=>e.name));for(let t of e){let e=i(t,0);o.has(e.name)||a.push(e)}let s=e.filter(e=>t(e.jid)).length;return{id:`scoops`,label:`Scoops`,icon:`bot`,count:e.length,meta:`${e.length} · ${s} working`,accent:`violet`,status:`active`,emptyText:`Delegate a focused task and its scoop will show up here.`,rows:a}}function qi(e){let t=e.filter(e=>e.valid===!1).length;return{id:`mounts`,label:`Mounts`,icon:`hard-drive`,count:e.length,meta:t>0?`${e.length} · ${t} need${t===1?`s`:``} re-grant`:`${e.length} · all granted`,status:t>0?`warn`:`active`,emptyText:`Mount a folder to give the workspace access to files on disk.`,rows:e.map(e=>({name:e.targetPath,meta:e.valid===!1?`permission lost`:e.descriptor.kind,status:e.valid===!0?`active`:e.valid===!1?`warn`:`idle`}))}}function Ji(e,t){let n=t.filter(e=>e.valid===!1).length,r=e.reduce((e,[,t])=>e+(t.tools?.length??0),0),i=[`${e.length} server${e.length===1?``:`s`}`,`${r} tool${r===1?``:`s`}`,n>0?`${n} account expired`:`${t.length} accounts valid`].join(` · `);return{id:`integrations`,label:`Integrations`,icon:`blocks`,count:e.length+t.length,meta:i,accent:`waffle`,status:n>0?`error`:`active`,emptyText:`Connect an MCP server or a provider account to extend the workspace.`,rows:[...e.map(([e,t])=>{let n=t.tools?.length??0;return{name:e,meta:`MCP · ${n} tool${n===1?``:`s`}`,status:`active`}}),...t.map(e=>({name:e.providerId,meta:e.valid===!1?`session expired`:`account`,status:e.valid===!0?`active`:e.valid===!1?`error`:`idle`}))]}}function Yi(e,t){let n=[`${t.length} webhook${t.length===1?``:`s`}`,e.length>0?`${e.length} cron task${e.length===1?``:`s`}`:`no cron tasks`].join(` · `);return{id:`automations`,label:`Automations`,icon:`calendar-clock`,count:e.length+t.length,meta:n,accent:`amber`,emptyText:`Scheduled tasks and webhook-driven licks will appear here.`,rows:[...e.map(e=>({name:e.name,meta:e.cron,status:e.status===`active`?`active`:`idle`})),...t.map(e=>({name:e.name,meta:e.scoop?`→ ${e.scoop}`:`→ cone`,status:`idle`}))]}}function Xi(e){return{id:`cost`,label:`Cost`,icon:`receipt`,count:e?.models.length??0,meta:e?`$${e.totalCost.toFixed(2)} across ${e.models.length} models`:`no spend yet`,accent:`rose`,emptyText:`Model usage will be summarized after the first turn.`,rows:e?.models.map(e=>({name:e.model,meta:`$${e.cost.toFixed(4)}`,status:`idle`}))??[]}}function Zi(e){let t=[];for(let n of e.oauthProviders)n.valid===!1&&t.push({id:`oauth:${n.providerId}`,severity:`error`,icon:`key-round`,title:`${n.providerId} session expired`,detail:`Tool calls through this provider will fail until it is signed in again.`});let n=Ui(e.tray);(n===`error`||n===`warn`)&&t.push({id:`tray`,severity:n===`error`?`error`:`warn`,icon:`cloud-off`,title:`Tray ${Wi(e.tray)}`,detail:e.tray.workerBaseUrl?`Worker · ${e.tray.workerBaseUrl}`:`No tray session is established.`});for(let n of e.followers)at(n)===`warn`&&t.push({id:`follower:${n.runtimeId}`,severity:`warn`,icon:`radio`,title:`${ot(n)} stopped answering`,detail:n.motd??n.runtime??`No heartbeat from this follower.`,age:nt(n)});for(let n of e.mounts)n.valid===!1&&t.push({id:`mount:${n.targetPath}`,severity:`warn`,icon:`folder-lock`,title:`${n.targetPath} needs re-grant`,detail:`File System Access permission is no longer granted for this handle.`});return t.sort((e,t)=>e.severity===t.severity?0:e.severity===`error`?-1:1)}function Qi(e){return e>=100?`$${Math.round(e)}`:`$${e.toFixed(2)}`}function $i(e){let{stats:t,workingUnits:n,totalUnits:r,liveProcesses:i,terminated:a,history:o}=e,s=o?.windowLabel(),c=t?.burnRate??0,l=t?.fills??[],u=l.reduce((e,t)=>Math.max(e,t.fill),0),d=[{id:`burn`,label:`Burn rate`,value:Qi(c),unit:`/hour`,hero:!0,series:o?.series(`burnRate`),foot:[t?`$${t.totalCost.toFixed(2)} this session`:`no spend yet`,s].filter(Boolean).join(` · `)},{id:`load`,label:`Agent load`,value:String(n),unit:`of ${r} working`,accent:`violet`,series:o?.series(`workingUnits`),foot:s??void 0},{id:`processes`,label:`Live processes`,value:String(i),unit:i===1?`process`:`processes`,accent:`cyan`,series:o?.series(`liveProcesses`),foot:a>0?`${a.toLocaleString()} exited this session`:s??void 0}];return l.length>0&&d.push({id:`context`,label:`Context fill`,value:String(Math.round(u*100)),unit:`%`,ratio:u,markers:ea(l,e.units??[]),accent:u>=.9?`rose`:u>=.7?`amber`:`green`,foot:`fullest of ${l.length} context window${l.length===1?``:`s`}`}),d}function ea(e,t){let n=new Map(t.map(e=>[e.jid,e]));return e.map(({jid:e,fill:t})=>{let r=n.get(e),i=r?E(r):!1,a=r?.name||(r?`sliccy`:e);return{id:e,ratio:t,color:T({isRoot:i,name:a}),label:`${i?`${a} (cone)`:a} — ${Math.round(t*100)}% full`}})}var ta={running:`R`,pending:`S`,exited:`Z`,killed:`K`};function na(e,t){if(!e)return;let n=Math.max(0,Math.round((t-e)/1e3));if(n<60)return`${n}s`;let r=Math.floor(n/60);return r<60?`${r}m ${n%60}s`:`${Math.floor(r/60)}h ${r%60}m`}function ra(e,t){return{pid:e.pid,ppid:e.ppid,state:ta[e.status]??`?`,status:e.status,command:e.argv,scoop:e.scoop,started:e.startedAt?new Date(e.startedAt).toTimeString().slice(0,5):void 0,elapsed:na(e.startedAt,t)}}async function ia(e,t){let n=e.getScoops(),r=e.getTrayInfo(),i=e.getConnectedFollowers(),[a,o,s,c,l,u]=await Promise.all([e.getCronTasks().catch(()=>[]),e.getWebhooks().catch(()=>[]),e.getMounts().catch(()=>[]),e.getMcpServers().catch(()=>({})),e.getSessionStats().catch(()=>null),e.getProcesses().catch(()=>({processes:[],terminated:0}))]),{processes:d,terminated:f}=u,p=e.getOAuthProviders(),m=Object.entries(c),h=n.filter(t=>e.isProcessing(t.jid)).length,g=Date.now();return t?.push({at:g,burnRate:l?.burnRate??0,workingUnits:h,liveProcesses:d.length}),{updated:`Streaming · updated just now`,vitals:$i({stats:l,workingUnits:h,totalUnits:n.length,liveProcesses:d.length,terminated:f,history:t,units:n}),alerts:Zi({tray:r,followers:i,mounts:s,oauthProviders:p}),sections:[Gi(r),Hi(i),Ki(n,t=>e.isProcessing(t)),qi(s),Ji(m,p),Yi(a,o),Xi(l)],processes:{rows:d.map(e=>ra(e,g)),terminated:f}}}var aa=`/shared`,oa=3,sa=200;async function ca(e,t,n){let r;try{r=await e.readDir(t)}catch{return[]}let i=r.filter(e=>e.type===`directory`).sort((e,t)=>e.name.localeCompare(t.name)),a=r.filter(e=>e.type===`file`).sort((e,t)=>e.name.localeCompare(t.name)),o=[...i,...a].slice(0,sa),s=o.filter(e=>e.type===`file`).map(e=>`${t}/${e.name}`),c=await Promise.allSettled(s.map(t=>e.stat(t))),l=new Map;s.forEach((e,t)=>{let n=c[t];n?.status===`fulfilled`&&l.set(e,n.value.size)});let u=[];for(let r of o){let i=`${t}/${r.name}`;if(r.type===`directory`)u.push({kind:`dir`,id:i,label:r.name,children:n<oa?await ca(e,i,n+1):[]});else{let e=l.get(i);u.push({kind:`file`,id:i,label:r.name,path:i,size:e})}}return u}async function la(e,t=Ze.root){let n=[];for(let r of[t,aa])n.push({kind:`dir`,id:r,label:r.replace(/^\/(cones\/)?/,``),open:!0,children:await ca(e,r,1)});return n}var ua=200,da=1e3,fa=3e3;function pa(e){let t=null,n=!1,r=!1,i=!1,a=0,o=0,s=null,c=null,l=0,u=()=>{let t=++o;e.openFs().then(async n=>{let i=await la(n,e.getWorkspace().root);t===o&&(e.fileTree.items=i,r||(r=!0,Ce({fileTree:e.fileTree,openFs:e.openFs,openWriter:e.openWriter,insertReference:e.insertReference,toPreviewUrl:He,log:e.log})))}).catch(t=>e.log.error(`WC file tree refresh failed`,t))},d=()=>{if(!i)return;let e=Date.now();if(c==null)l=e;else if(e-l>=da){clearTimeout(c),c=null,u();return}c!=null&&clearTimeout(c),c=setTimeout(()=>{c=null,u()},ua)},f=()=>{t??=setInterval(u,fa)},p=()=>{let t=++a;s?.(),s=null;let n=[e.getWorkspace().root,aa];e.openFs().then(async e=>{if(!e.watch){t===a&&i&&f();return}let r=await e.watch(n,d);if(t!==a||!i){r();return}s=r}).catch(n=>{e.log.error(`WC file tree watch failed — falling back to polling`,n),t===a&&i&&f()})},m=()=>{n=!1,i=!1,a++,s?.(),s=null,c!=null&&(clearTimeout(c),c=null),t!=null&&(clearInterval(t),t=null)};return{open(){m(),i=!0,n=!0,e.onKernelReady(()=>{n&&(n=!1,u(),p())})},close:m,repoint(){!i||n||(u(),p())}}}function ma(e){let t=!1,n=!1,r=0,i=null,a=new Ei,o=pa(e),s=()=>{i!=null&&(clearInterval(i),i=null)},c=()=>{let t=++r;e.openFs().then(async n=>{let i=await Vi(n,e.getWorkspace().memoryPath);t===r&&(e.memoryHost.setRows?e.memoryHost.setRows(i):e.memoryHost.replaceChildren(...i))}).catch(t=>e.log.error(`WC memory refresh failed`,t))},l=()=>{(async()=>{try{e.monitor.model=await ia(e.getMonitorDeps(),a)}catch(t){e.log.error(`WC monitor refresh failed`,t)}})()};return e.monitor.addEventListener(`slicc-monitor-refresh`,l),{activate(r){if(r===`files`){o.open();return}if(r===`memory`){n=!0,c();return}if(r===`monitor`){s(),l(),i=setInterval(l,5e3);return}r===`term`&&!t&&(t=!0,e.mountTerminal(e.termSurface).catch(n=>{t=!1,e.log.error(`WC terminal mount failed`,n)}))},deactivate(e){e===`files`?o.close():e===`monitor`?s():e===`memory`&&(n=!1)},refreshMemory(){n&&c()},refreshFiles(){o.repoint()}}}var ha=[`/workspace`,`/shared`,`/memory`,`/scoops`,`/mnt`],ga=new Set([`node_modules`,`.git`,`dist`,`build`,`out`,`coverage`,`.cache`,`.venv`,`venv`,`__pycache__`,`target`,`vendor`,`.next`,`.turbo`,`python_wheels`]),_a=2e4,va=12,ya=3e4;function ba(e){let t=e.trim();for(;t.startsWith(`./`)||t.startsWith(`../`);)t=t.slice(t.startsWith(`./`)?2:3);return t.startsWith(`~/`)&&(t=t.slice(2)),t.replace(/\/{2,}/g,`/`)}function xa(e){return e.slice(e.lastIndexOf(`/`)+1)}function Sa(e,t){return e===t?!0:e.endsWith(t)?e[e.length-t.length-1]===`/`:!1}function Ca(e,t){let n=ba(e);return t.includes(`/`)?Sa(n,t):xa(n)===t}function wa(e,t){let n=[],r=new Set;for(let i=t.length-1;i>=0;--i){let a=t[i];if(!(a===void 0||r.has(a))&&Ca(a,e)&&(r.add(a),n.push(ba(a)),n.length>=Ta))break}return n}var Ta=4,Ea=class{#e;#t;#n;#r;#i;#a;#o=0;#s=null;#c=null;#l=new Map;#u=new Map;constructor(e,t={}){this.#e=e,this.#t=t.roots??ha,this.#n=t.ignoredDirs??ga,this.#r=t.maxEntries??_a,this.#i=t.maxDepth??va,this.#a=t.ttlMs??ya}resolve(e,t=[]){this.#g();let n=ba(e),r=this.#d(n),i=wa(n,t);return i.length===0?r:this.#f(n,r,i)}resolveAll(e,t=[]){return Promise.all(e.map(e=>this.resolve(e,t)))}invalidate(){this.#s=null,this.#c=null,this.#l.clear(),this.#u.clear()}#d(e){let t=this.#l.get(e);if(t)return t;let n=this.#m(e).catch(()=>({query:e,matches:[]}));return this.#l.set(e,n),n}async#f(e,t,n){let{matches:r}=await t,i=new Set(r),a=[];for(let e of n)!e.startsWith(`/`)||i.has(e)||await this.#p(e)&&a.push(e);let o=e=>n.findIndex(t=>Sa(e,t)),s=r.filter(e=>o(e)>=0).sort((e,t)=>o(e)-o(t)),c=new Set(s),l=r.filter(e=>!c.has(e));return{query:e,matches:[...a,...s,...l]}}#p(e){let t=this.#u.get(e);if(t)return t;let n=this.#h(e);return this.#u.set(e,n),n}async#m(e){if(e.startsWith(`/`))return{query:e,matches:await this.#h(e)?[e]:[]};let t=(await this.#_()).get(xa(e))??[];return e.includes(`/`)?{query:e,matches:t.filter(t=>Sa(t,e)).sort(Da)}:{query:e,matches:[...t].sort(Da)}}async#h(e){try{return(await this.#e.stat(e)).type===`file`}catch{return!1}}#g(){!this.#s||this.#a===1/0||Date.now()-this.#o<this.#a||this.invalidate()}#_(){return this.#s?Promise.resolve(this.#s):(this.#c??=this.#v().then(e=>(this.#s=e,this.#o=Date.now(),e)),this.#c)}async#v(){let e=new Map,t={left:this.#r};for(let n of this.#t){if(t.left<=0)break;await this.#y(n,0,e,t)}return e}async#y(e,t,n,r){if(r.left<=0||t>this.#i)return;let i;try{i=await this.#e.readDir(e)}catch{return}let a=this.#b(e,i,n,r);for(let e of a){if(r.left<=0)break;await this.#y(e,t+1,n,r)}}#b(e,t,n,r){let i=[];for(let a of t){if(r.left<=0)break;let t=e===`/`?`/${a.name}`:`${e}/${a.name}`;if(a.type===`directory`){this.#n.has(a.name)||i.push(t);continue}let o=n.get(a.name);o?o.push(t):n.set(a.name,[t]),--r.left}return i}};function Da(e,t){let n=e.split(`/`).length,r=t.split(`/`).length;return n===r?e.localeCompare(t):n-r}var Oa=`file-mention`,Z=`data-file-mentions`;function ka(e){return`${e.childNodes.length}:${e.textContent?.length??0}`}var Aa=new Set([`A`,`PRE`,`SCRIPT`,`STYLE`,`TEXTAREA`]),ja=`file-mention-open`;async function Ma(e,t,n=[]){let r=ka(e);if(e.getAttribute(Z)===r)return;let i=Na(e);if(i.length===0){e.setAttribute(Z,r);return}let a=[],o=new Set;for(let e of i){let t=je(e.data);if(t.length!==0){a.push({node:e,mentions:t});for(let e of t)o.add(e.path)}}if(a.length===0){e.setAttribute(Z,r);return}let s=[...o],c=await t.resolveAll(s,n),l=new Map(s.map((e,t)=>[e,c[t]?.matches??[]]));for(let{node:e,mentions:t}of a){if(!e.isConnected)continue;let n=t.filter(e=>(l.get(e.path)?.length??0)>0);n.length!==0&&Pa(e,n,l)}e.setAttribute(Z,ka(e))}function Na(e){let t=e.ownerDocument.createTreeWalker(e,NodeFilter.SHOW_TEXT,{acceptNode(t){if(!t.nodeValue||t.nodeValue.trim().length===0)return NodeFilter.FILTER_REJECT;for(let n=t.parentElement;n&&n!==e;n=n.parentElement)if(Aa.has(n.tagName)||n.classList.contains(`file-mention`))return NodeFilter.FILTER_REJECT;return NodeFilter.FILTER_ACCEPT}}),n=[];for(let e=t.nextNode();e!==null;e=t.nextNode())n.push(e);return n}function Pa(e,t,n){let r=e.ownerDocument,i=e.data,a=r.createDocumentFragment(),o=0;for(let e of t){let t=n.get(e.path)??[],s=t[0];s&&(e.start>o&&a.appendChild(r.createTextNode(i.slice(o,e.start))),a.appendChild(Fa(r,i.slice(e.start,e.end),s,t,e.line)),o=e.end)}o<i.length&&a.appendChild(r.createTextNode(i.slice(o))),e.parentNode?.replaceChild(a,e)}function Fa(e,t,n,r,i){let a=e.createElement(`a`);return a.className=Oa,a.textContent=t,a.href=`#${n}`,a.dataset.path=n,i!==void 0&&(a.dataset.line=String(i)),a.title=r.length>1?`${n}\n(+${r.length-1} other match${r.length>2?`es`:``})`:n,a.addEventListener(`click`,e=>{e.preventDefault(),e.stopPropagation();let t={path:n,alternatives:r,...i===void 0?{}:{line:i}};a.dispatchEvent(new CustomEvent(ja,{detail:t,bubbles:!0,composed:!0}))}),a}var Ia=`slicc-agent-message`,La=`slicc-action-row[${me}]`;function Ra(e,t){let n=[],r=e.querySelectorAll(La);for(let e of r){if(t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING)break;n.push(e.getAttribute(`data-file-paths`)??``)}return n.slice(-40).flatMap(e=>pe(e))}function za(e){let t=globalThis.requestIdleCallback;typeof t==`function`?t(e):setTimeout(e,0)}function Ba(e){try{return Va(e)}catch(t){return e.log.error(`File mention wiring failed; continuing without it`,t),()=>{}}}function Va(e){let{thread:t,openFs:n,log:r}=e;if(!(t instanceof Node))return()=>{};let i=null,a=()=>(i??=n().then(e=>new Ea(e)),i),o=e=>{if(!(e instanceof HTMLElement)||e.hasAttribute(`streaming`))return;let n=e.querySelector(`.body`)??e;je(n.textContent??``).length!==0&&za(()=>{let i=Ra(t,e);a().then(e=>Ma(n,e,i)).catch(e=>r.error(`File mention linking failed`,e))})},s=e=>{for(let t of e.querySelectorAll(Ia))o(t)};s(t);let c=new MutationObserver(e=>{for(let t of e){if(t.type===`attributes`){t.target instanceof HTMLElement&&o(t.target);continue}for(let e of t.addedNodes)e instanceof HTMLElement&&(e.tagName.toLowerCase()===Ia?o(e):s(e));let e=t.target?.closest?.(Ia);e&&o(e)}});c.observe(t,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`streaming`]});let l=e=>{let{path:t,line:i}=e.detail;n().then(e=>ye(e,t,i===void 0?{}:{line:i})).catch(e=>r.error(`File mention preview failed`,e))};return t.addEventListener(ja,l),()=>{c.disconnect(),t.removeEventListener(ja,l)}}var Ha=e({DEFAULT_DOCK_TREE_ON_BOOT:()=>$,DOCK_TREE_STORAGE_KEY:()=>eo,attachWcClient:()=>ro,makeSprinkleAttachImage:()=>no,mountWcUiLive:()=>io,prepareWcShell:()=>Q,wireDockTreePersistence:()=>to,wireWcChipTips:()=>Ya});function Q(e,t){let n=Se(e,{messages:[],scoops:[],floatLabel:t,placeholder:`Ask sliccy, or describe a change…`,urlState:!0}),r=null,i=null,a=null,o=new Map,s=!1,c=null,l=new Set,u=null,d=e=>{if(a=e,!i)return;let t=ft(ut(e)),s=(e,t)=>{for(let n of t)i?.deleteQueuedMessage(e,n).catch(()=>void 0)},l=i.getScoops(),d=e=>{let t=e===void 0?void 0:l.find(t=>t.jid===e);return t?j(l,t)?.jid??t.jid:void 0},p=d(e.jid),m=i.selectedScoopJid;if(m&&m!==e.jid){let e=d(m);if(t&&p!==void 0&&p===e){let t=r?.stashQueued()??[];t.length>0&&(u={jid:e,items:t})}else s(m,(r?.getQueuedMessages()??[]).map(e=>e.id))}u&&(u.jid===e.jid?(r?.restoreQueued(u.items),u=null):p!==u.jid&&(s(u.jid,u.items.map(e=>e.id)),u=null));let h=o.get(e.jid);r?.setLickBackpressure(h?.count??0,h?.waitingMs??0,F(e)),i.setSelectedScoopJid(e.jid),r?.setReadOnly(t),t||n.inputCard.removeAttribute(`disabled`),Lr(n,e,i.getScoops()),i.requestScoopMessages(e.jid),r?.setProcessing(i.isProcessing(e.jid)),n.switcher.hasAttribute(`attention`)||n.switcher.setAttribute(`attention`,e.jid),f.refreshScoops?.(),c?.refreshMemory(),c?.refreshFiles()},f={refs:n,statuses:new Map,fills:new Map,phases:new Map,lickBackpressure:o,lastActivity:new Map,pendingUrlContext:n.thread.urlContext??null,getController:()=>r,getClient:()=>i,getSelected:()=>a,selectScoop:d,notifyReady:()=>{s=!0;for(let e of l)e()}};return{refs:n,wiring:f,setClient:e=>{i=e},selectScoop:d,getSelected:()=>a,clearSelection:()=>{a=null},getController:()=>r,setController:e=>{r=e},setActivateSurface:e=>{c=e;let t=new Set(n.dockTree.getSurfaceIds());for(let n of[`files`,`term`,`memory`,`monitor`])t.has(n)&&(s?e.activate(n):l.add(()=>e.activate(n)))},onClientReady:e=>{l.add(e),s&&e()}}}function Ua(e){let t=null;return()=>(t??=(async()=>{let[{createRemoteVfsClient:t},{createRemoteWritableVfsClient:n}]=await Promise.all([o(()=>import(`./remote-vfs-client-CN1pCs1m.js`),__vite__mapDeps([64,42])),o(()=>import(`./writable-vfs-client-CuBjWhy3.js`),__vite__mapDeps([65,42]))]);return{reader:t({transport:e.getTransport()}),writer:n({transport:e.getTransport()})}})(),t)}function Wa(e,t,n,r,i){e.onClientReady(()=>{r.intercept||o(async()=>{let{wireWcOnboarding:e}=await import(`./wc-onboarding-BOs5rY9y.js`);return{wireWcOnboarding:e}},__vite__mapDeps([66,3,30,12,13,1,14,15,16,17,31,67,11,44,68,29,19,39,69,70,71,72,73,55,56,74,50,51])).then(({wireWcOnboarding:r})=>r({client:t,getController:()=>e.getController(),openVfs:n,log:i})).then(e=>{r.intercept=e.interceptWelcomeLick}).catch(e=>i.error(`WC onboarding wiring failed`,e))})}function Ga(e,t){let n=()=>{t.getSessionStats?.().then(n=>{if(!n)return;e.refs.floatbar.setAttribute(`spent`,n.totalCost.toFixed(2)),typeof n.burnRate==`number`&&Number.isFinite(n.burnRate)?e.refs.floatbar.setAttribute(`rate`,n.burnRate.toFixed(2)):e.refs.floatbar.removeAttribute(`rate`);let r=e.refs.floatbar;n.models&&(r.costModels=n.models),n.scoops&&(r.costScoops=n.scoops),e.fills.clear();for(let t of n.fills)e.fills.set(t.jid,t.fill);e.refs.switcher.scoops=br(t.getScoops(),e.statuses,e.fills,e.phases,e.awaitingInput,e.getSelected()?.jid)})};return setInterval(n,15e3),n}function Ka(e,t,n){let r=t.standalone;r&&o(async()=>{let{wireWcBrowser:e}=await import(`./wc-browser-CYph9bTu.js`);return{wireWcBrowser:e}},__vite__mapDeps([75,12,76,77,11,78])).then(({wireWcBrowser:t})=>t({refs:e.refs,browser:r.browser,log:n})).catch(e=>n.error(`WC browser overlay wiring failed`,e))}function qa(e,t){let{refs:n}=e;n.switcher.addEventListener(`slicc-scoop-select`,n=>{let r=n.detail?.key,i=t.getScoops().find(e=>e.jid===r);i&&i.jid!==e.getSelected()?.jid&&e.selectScoop(i)}),Ya({switcher:n.switcher,getScoops:()=>t.getScoops(),lastActivity:e.wiring.lastActivity})}function Ja(e){return()=>{e.triggerPlaceholder();let t=e.boot.getSelected()?.jid;if(e.boot.wiring.awaitingInput=t??null,e.boot.wiring.refreshScoops?.(),e.boot.wiring.notifyScoopStateChanged?.(),e.refreshStats(),!t)return;e.boot.refs.switcher.setAttribute(`attention`,t);let n=e.boot.getController()?.getMessages().filter(e=>e.role===`assistant`).at(-1);n&&e.boot.wiring.lastActivity.set(t,String(n.content??``).slice(0,600))}}function Ya(e){let t=new Map,n=new Set;e.switcher.addEventListener(`pointerover`,r=>{let i=r.target?.closest?.(`.slicc-agent-tabs__segment`);if(!i||!e.switcher.contains(i))return;let a=i.dataset.k??``,s=e.getScoops().find(e=>e.jid===a);if(!s)return;let c=e.lastActivity.get(a)??``,l=t.get(a);if(l&&l.activity===c){i.title=l.tip;return}i.title||=M(s),!(!c||n.has(a))&&(n.add(a),(async()=>{try{let n=await(e.labelFn??(await o(async()=>{let{quickLabel:e}=await import(`./quick-llm-DunO9KZO.js`).then(e=>e.n);return{quickLabel:e}},__vite__mapDeps([58,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,59,43]))).quickLabel)({system:`One line for a hover tooltip: at most 14 words, present tense, no quotes, no trailing period.`,prompt:`Summarize what this agent has been doing.\nAgent: ${E(s)?`${M(s)} (a main agent)`:s.name}\nMost recent activity:\n${c}`,maxTokens:40});n&&(t.set(a,{activity:c,tip:n}),i.title=n)}finally{n.delete(a)}})())})}async function Xa(e,t,n){let{RemoteTerminalView:r}=await o(async()=>{let{RemoteTerminalView:e}=await import(`./remote-terminal-view-DpxIbz7w.js`);return{RemoteTerminalView:e}},__vite__mapDeps([79,1,3,24,11,39,80,81,15,19,12,69,82,10,70,83,84,85,72,86,87])),{fetchSecretEnvVars:i}=await o(async()=>{let{fetchSecretEnvVars:e}=await import(`./secret-env-CvkpMxjz.js`);return{fetchSecretEnvVars:e}},__vite__mapDeps([88,11,13,1,3,14,12,15,16,17,18,19,20,21,22])),a=await i(),s=new r({client:t,cwd:`/`,env:Object.keys(a).length>0?a:void 0});await new Promise(t=>e.onClientReady(t)),await s.mount(n),globalThis.__slicc_terminal_view=s,window.addEventListener(`beforeunload`,()=>s.dispose(),{once:!0})}function Za(e,t,n){let r=r=>{if(r.startsWith(`freezer:`)){n(r.slice(8));return}let i=st(t.getScoops(),r);i&&i.jid!==e.getSelected()?.jid&&e.selectScoop(i)};e.refs.thread.addEventListener(`slicc-url-context`,e=>{let t=e.detail?.context;t&&r(t)});let i=e.wiring.pendingUrlContext;i?.startsWith(`freezer:`)&&e.onClientReady(()=>{e.wiring.pendingUrlContext===i&&(e.wiring.pendingUrlContext=null,r(i))})}function Qa(e,t,n,r){o(async()=>{let{installLeaderPermissionsSurface:e,installMountPendingConsumer:t}=await import(`./wc-permissions-C77Upopt.js`);return{installLeaderPermissionsSurface:e,installMountPendingConsumer:t}},__vite__mapDeps([89,3,11,39])).then(async({installLeaderPermissionsSurface:r,installMountPendingConsumer:i})=>{let a=n.standalone?.runtimeMode??`standalone`,{buildLeaderPermissionProviders:s,isExtensionRuntime:c}=await o(async()=>{let{buildLeaderPermissionProviders:e,isExtensionRuntime:t}=await import(`./wc-permissions-providers-CKzd9Xhn.js`);return{buildLeaderPermissionProviders:e,isExtensionRuntime:t}},__vite__mapDeps([90,3,15,29,19,12]));r({runtimeMode:a,providers:await s(c()||a===`extension`||a===`extension-detached`)}),i({runShell:$a(e,t)})}).catch(e=>r.warn(`WC permissions surface wiring failed`,e))}function $a(e,t){let n=null,r=()=>(n||=(async()=>{await new Promise(t=>e.onClientReady(t));let{TerminalSessionClient:n}=await o(async()=>{let{TerminalSessionClient:e}=await import(`./terminal-session-client-ADzaWGFd.js`).then(e=>e.n);return{TerminalSessionClient:e}},__vite__mapDeps([87,1])),r=new n({client:t,sid:`mount-drop-${Date.now()}`});return await r.open({cwd:`/workspace`}),r})().catch(e=>{throw n=null,e}),n);return async e=>(await r()).exec(e)}var eo=`slicc-dock-tree:default`,$={zones:{top:null,left:{type:`leaf`,surfaceId:`chat`},middle:null,right:null,bottom:null},rowFr:{top:1,center:1,bottom:1},colFr:{left:3,middle:1,right:1}};function to(e,t){let n=e.dockTree,r=e.dockTree,i=e=>{try{localStorage.setItem(eo,JSON.stringify(e))}catch{}};n.addEventListener(`dock-tree-change`,e=>{i(e.detail?.tree)}),n.addEventListener(`dock-tree-resize`,e=>{i(e.detail?.tree)});try{let e=localStorage.getItem(eo);r.setTree(e?JSON.parse(e):$)}catch(e){t.warn(`WC dock-tree restore failed — seeding the default layout`,e),r.setTree($)}}function no(e,t){return(n,r,i)=>{let a=e.getAttachStage();if(!a){t.warn(`sprinkle attachImage dropped: composer stage not ready yet`);return}let o=n.match(/^data:(image\/[^;]+);base64,([A-Za-z0-9+/=]+)$/),s=o?o[2]:n,c=o?o[1]:i??`image/png`,l=c.split(`/`)[1]?.replace(`jpeg`,`jpg`).replace(`svg+xml`,`svg`)??`png`,u=r??`annotation-${Date.now()}.${l}`;a.add({id:`att-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,name:u,mimeType:c,size:Math.floor(s.length*3/4),kind:`image`,data:s})}}function ro(e,t,n,r={}){o(async()=>{let{initTimestampPreference:e}=await import(`./timestamp-preference-sKwBl5I8.js`).then(e=>e.a);return{initTimestampPreference:e}},__vite__mapDeps([91,1])).then(({initTimestampPreference:e})=>e()).catch(()=>void 0);let{refs:i}=e;e.setClient(t);let a=w(`panel-layouts`);i.dockTree.tilesMovable=a,a||to(i,n);let s=null,c=Ga(e.wiring,t),l=()=>s?.(),u={intercept:null},{controller:d,agentHandle:f}=qr(i,t,()=>e.getSelected(),Ja({boot:e,triggerPlaceholder:l,refreshStats:c}),u);e.setController(d),e.onClientReady(c);let p=Ua(t),m=async()=>(await p()).reader;r.standalone?.runtimeMode!==`cherry`&&r.standalone?.runtimeMode!==`hosted-leader`&&Wa(e,t,p,u,n);let h=zr({boot:e,client:t,agentHandle:f,setRefreshPlaceholder:e=>{s=e},triggerPlaceholder:l,openReader:m,openWriter:async()=>(await p()).writer,log:n});qa(e,t),Ka(e,r,n),Qa(e,t,r,n);let g=ma({fileTree:i.fileTree,termSurface:i.termSurface,memoryHost:i.memoryHost,monitor:i.monitor,openFs:m,openWriter:async()=>(await p()).writer,onKernelReady:t=>e.onClientReady(t),getMonitorDeps:()=>xi({client:t,openReader:m,storage:window.localStorage}),getWorkspace:()=>et(t.getScoops(),e.getSelected()??void 0),mountTerminal:n=>Xa(e,t,n),insertReference:e=>{let t=i.inputCard,n=t.value.trim();t.value=n?`${n} @${e}`:`@${e}`,t.focus()},log:n});e.setActivateSurface(g),a&&o(async()=>{let{panelizeShell:e}=await import(`./panelize-shell-CYxm6Ct5.js`);return{panelizeShell:e}},__vite__mapDeps([92,11,93,94,1,3,41,51,14,12,23,28,15,29,19,43,95,37,53,45,91,96,97])).then(({panelizeShell:e})=>e(i,void 0,void 0,{onToolPanelActivate:e=>g.activate(e),onToolPanelDeactivate:e=>g.deactivate(e)})).catch(e=>n.error(`panelize failed — keeping the classic shell`,e)),Ba({thread:i.thread,openFs:m,log:n}),i.floatbar.addEventListener(`click`,()=>{let e=i.dock;e.active===`monitor`?e.collapse():e.selectItem(`monitor`)});let _=li({refs:i,openVfs:p,client:t,getController:()=>e.getController(),getSelected:()=>e.getSelected(),selectScoop:e.selectScoop,clearSelection:e.clearSelection,log:n}),{refreshFreezer:v,openFrozen:y,getViewedFrozenSessionId:b}=_;if(v(),e.onClientReady(v),w(`multiple-cones`)){let r=_r({freezer:i.freezer,client:t,getSelected:()=>e.getSelected(),selectScoop:e.selectScoop,freezeCone:_.freezeCone,log:n});e.wiring.refreshConeActions=r.refresh,e.onClientReady(r.refresh)}Za(e,t,y),e.onClientReady(()=>{p().then(async({reader:e,writer:t})=>{let{loadShortcutConfig:n}=await o(async()=>{let{loadShortcutConfig:e}=await import(`./wc-shortcut-config-KuxMSZRS.js`);return{loadShortcutConfig:e}},__vite__mapDeps([98,11,94,1,3,41,51,14,12,23,28,15,29,19,43,95,37,53,45,91,96]));await n({reader:e,writer:t,apply:i.shortcuts.setKeymap})}).catch(e=>n.warn(`WC shortcut config load failed`,e))}),p().then(async({reader:e})=>{let{installPreviewVfsResponder:t}=await o(async()=>{let{installPreviewVfsResponder:e}=await import(`./preview-vfs-responder-CluNpFQR.js`);return{installPreviewVfsResponder:e}},[]);t({channel:new BroadcastChannel(`preview-vfs`),getReader:()=>e,logger:n})}).catch(e=>n.warn(`WC page-VFS support wiring failed`,e)),p().then(async({reader:a,writer:s})=>{let{createRemoteSprinkleVfs:c}=await o(async()=>{let{createRemoteSprinkleVfs:e}=await import(`./remote-sprinkle-vfs-CawR6gXx.js`);return{createRemoteSprinkleVfs:e}},__vite__mapDeps([99,42])),l=(await o(async()=>{let{getPanelizedShell:e}=await import(`./panelize-shell-CYxm6Ct5.js`);return{getPanelizedShell:e}},__vite__mapDeps([92,11,93,94,1,3,41,51,14,12,23,28,15,29,19,43,95,37,53,45,91,96,97]))).getPanelizedShell(),{wireWcSprinkles:u}=await o(async()=>{let{wireWcSprinkles:e}=await import(`./wc-sprinkles-DDuK1vDI.js`);return{wireWcSprinkles:e}},__vite__mapDeps([100,3,15,29,19,12,101,44])),d=await u({refs:i,client:t,fs:c({reader:a,writer:s}),instanceId:r.instanceId,onAttachImage:no(h,n),onToolPanelActivate:e=>g.activate(e),onToolPanelDeactivate:e=>g.deactivate(e),hostSprinkleSurface:l?(e,t)=>l.hostSprinkleSurface(e,t):void 0,removeSprinkleSurface:l?e=>l.removeSprinkleSurface(e):void 0,log:n});e.onClientReady(()=>void d.resync());let{getPanelizedShell:_}=await o(async()=>{let{getPanelizedShell:e}=await import(`./panelize-shell-CYxm6Ct5.js`);return{getPanelizedShell:e}},__vite__mapDeps([92,11,93,94,1,3,41,51,14,12,23,28,15,29,19,43,95,37,53,45,91,96,97])),v=_();if(v){let e=c({reader:a,writer:s});v.attachFs(e);let{registerAgentPanels:t}=await o(async()=>{let{registerAgentPanels:e}=await import(`./agent-panels-DXR6E-bx.js`);return{registerAgentPanels:e}},__vite__mapDeps([102,11,94,1,3,41,51,14,12,23,28,15,29,19,43,95,37,53,45,91,96]));await t(e).catch(e=>n.warn(`agent panel discovery failed`,e))}else{let{setLayoutApplier:e}=await o(async()=>{let{setLayoutApplier:e}=await import(`./layout-apply-registry-Cw730jao.js`);return{setLayoutApplier:e}},[]),{applyLayout:t}=await o(async()=>{let{applyLayout:e}=await import(`./apply-layout-DPUrW7E1.js`);return{applyLayout:e}},__vite__mapDeps([103,100,3,15,29,19,12,101,44]));e(e=>t(d.zone,e))}if(r.standalone&&r.instanceId){let{wireWcTray:a}=await o(async()=>{let{wireWcTray:e}=await import(`./wc-tray-CAP6mm59.js`);return{wireWcTray:e}},__vite__mapDeps([104,2,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,41,76,105,32,106,30,31,107,108,109,94,51,28,29,43,95,37,53,45,91,96,44,110,50,73,55,56,101,111,112,0,33,34,39,113,114,115,87,116,62,78,117,118,119])),s=d.zone.callbacks(),c=await a({refs:i,client:t,browser:r.standalone.browser,realCdpTransport:r.standalone.realCdpTransport,instanceId:r.instanceId,runtimeMode:r.standalone.runtimeMode,sprinkleManager:d.manager,addSprinkle:(e,t,n)=>s.addSprinkle(e,t,n),removeSprinkle:e=>s.removeSprinkle(e),getController:()=>e.getController(),getSelectedJid:()=>e.getSelected()?.jid??`cone`,agentHandle:f,openFs:m,openWriter:async()=>(await p()).writer,window,log:n});e.wiring.notifyScoopStateChanged=()=>c.scheduleScoopsListBroadcast()}}).catch(e=>n.error(`WC sprinkle/tray wiring failed`,e));{let e=new vt,n=new Pe,r=new Gn({collection:{listScoops:()=>t.getScoops(),isProcessing:e=>t.isProcessing(e),getAgentMessages:()=>null,loadPersistedSessions:()=>e.loadAll(),loadUiChatSessions:async()=>{let e=await n.list();return(await Promise.all(e.map(e=>n.load(e)))).filter(e=>e!==null)},wait:e=>new Promise(t=>setTimeout(t,e))},knownSecrets:cr(),snapshotStore:{read:async e=>{let{reader:t}=await p();return tr(t,e)},write:async(e,t)=>{let{writer:n}=await p();return er(n,e,t)}},vfs:{readFile:async(e,t)=>(await p()).reader.readFile(e,t),readDir:async e=>(await p()).reader.readDir(e),stat:async e=>(await p()).reader.stat(e)},getActiveSessionInfo:()=>{let e=P(t.getScoops());return{id:e?.jid??`session-${Date.now()}`,title:e?.name??`Active Session`}},version:`6.110.4`}),i=Ke(r);window.addEventListener(`unload`,i,{once:!0})}let x=!1,S=()=>x?Promise.resolve():(x=!0,(async()=>{try{let[{getTranscriptExportService:e},{transcriptZipToBlob:t,downloadTranscriptBlob:n}]=await Promise.all([o(()=>import(`./export-provider-BEHTjSYw.js`).then(e=>e.t),__vite__mapDeps([57,1,12])),o(()=>import(`./wc-transcript-export-DKIleW7-.js`),__vite__mapDeps([120,3,111,12,112,1]))]),r=b(),i=r==null?{kind:`active`}:{kind:`frozen`,sessionId:r},a=await e().export(i,{}),{filename:s}=a;await n(await t(a),s)}catch(e){n.error(`Transcript export failed`,e)}finally{x=!1}})());if(o(async()=>{let{wireWcNav:e}=await import(`./wc-nav-TcC8J6nL.js`);return{wireWcNav:e}},__vite__mapDeps([121,3,15,29,19,12,61,30,13,1,14,16,17,31,32,33,34,116,11,62,101,44])).then(({wireWcNav:e})=>e({refs:i,client:t,log:n,onExportTranscript:S,shortcuts:i.shortcuts})).catch(e=>n.error(`WC nav wiring failed`,e)),o(async()=>{let{getComposerSpeech:e,setComposerSpeechInstanceId:t}=await import(`./composer-speech-C08Pruqj.js`);return{getComposerSpeech:e,setComposerSpeechInstanceId:t}},__vite__mapDeps([122,11,15,29,19,12,39,95,48,49,13,1,3,14,16,17,50,51,123])).then(({getComposerSpeech:e,setComposerSpeechInstanceId:t})=>{let n=i.composer;t(r.instanceId),n.speech=e(),n.setAttribute(`ptt`,``)}).catch(e=>n.error(`WC push-to-talk wiring failed`,e)),o(async()=>{let{setSpeakAssetsInstanceId:e}=await import(`./speak-DW89OFqf.js`);return{setSpeakAssetsInstanceId:e}},__vite__mapDeps([47,3,11,15,29,19,12,48,49,13,1,14,16,17,50,51])).then(({setSpeakAssetsInstanceId:e})=>e(r.instanceId)).catch(e=>n.error(`WC say warmup wiring failed`,e)),r.standalone)return()=>{o(async()=>{let{schedulePendingSessionCatchup:e}=await import(`./new-session-D_qcj8sH.js`);return{schedulePendingSessionCatchup:e}},__vite__mapDeps([60,2,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,61,0,28,29,30,31,32,33,34,59,35,40,41,42,43,44,37,45])).then(({schedulePendingSessionCatchup:e})=>e({openVfs:async()=>(await p()).writer,onComplete:v})).catch(e=>n.warn(`Pending session catch-up scheduling failed`,e))}}async function io(e,t,n=`standalone`){let{browser:r,realCdpTransport:i,instanceId:a,localApiBaseUrl:s,bridgeToken:c,localLickWsUrl:l,extensionDelegateId:u,attachLickForwardingClient:d}=await g({runtimeMode:n,envBaseUrl:null,window,log:t}),{floatKindForRuntimeMode:f,floatLabelForKind:p,resolveStandaloneFloatKind:_}=await o(async()=>{let{floatKindForRuntimeMode:e,floatLabelForKind:t,resolveStandaloneFloatKind:n}=await import(`./wc-float-label-CwzsTOti.js`);return{floatKindForRuntimeMode:e,floatLabelForKind:t,resolveStandaloneFloatKind:n}},__vite__mapDeps([124,13,1,3,14,12,15,16,17,94,11,41,51,23,28,29,19,43,95,37,53,45,91,96])),{installFloatbarStatus:v}=await o(async()=>{let{installFloatbarStatus:e}=await import(`./wc-floatbar-online-CCdIg4mG.js`);return{installFloatbarStatus:e}},__vite__mapDeps([125,32,116,1,11,13,3,14,12,15,16,17,29,19,30,31,62,124,94,41,51,23,28,43,95,37,53,45,91,96])),y=n===`standalone`?await _():f(n),b=p(y),x=Q(e,b);v(x.refs.floatbar,{floatKind:y,label:b}),a&&m(a);let{syncFsBridgeEnabled:S,syncFsChannelNonce:ee}=Ci(),te=!1,C=zt({realCdpTransport:i,instanceId:a,makeClient:e=>new kt(xr(x.wiring),e),localApiBaseUrl:s,bridgeToken:c,syncFsBridgeEnabled:S,syncFsChannelNonce:ee,localLickWsUrl:l,extensionDelegateId:u,flagFloat:n,onWorkerScriptError:()=>{h()},onReadyStall:e=>{te=!0,o(()=>import(`./boot-stall-overlay-Pxp4nHfq.js`).then(t=>t.showBootStallOverlay(document,e)),[])},onLateReady:()=>{h()}});jt({send:e=>C.client.sendRaw(e)}),d?.(C.client);let ne=ro(x,C.client,t,{instanceId:a,standalone:{browser:r,realCdpTransport:i,runtimeMode:n,floatKind:y}}),{setupSudoStandalone:re}=await o(async()=>{let{setupSudoStandalone:e}=await import(`./setup-sudo-B0OWsay7.js`).then(e=>e.n);return{setupSudoStandalone:e}},__vite__mapDeps([126,1,3]));await re({log:t});try{await C.ready}finally{te&&o(()=>import(`./boot-stall-overlay-Pxp4nHfq.js`).then(e=>e.removeBootStallOverlay(document)),[])}x.wiring.notifyReady?.(),t.info(`WC live shell ready`,{scoops:C.client.getScoops().length}),ne?.();let{consumeAutoPrompt:ie}=await o(async()=>{let{consumeAutoPrompt:e}=await import(`./auto-prompt-Mj-vUQeB.js`);return{consumeAutoPrompt:e}},[]),w=ie(window.location.search);w&&(x.getController()?.sendUserMessage(w),t.info(`Auto-prompt submitted`,{length:w.length}))}export{Tr as _,gi as a,pi as c,Jr as d,Kr as f,Cr as g,wr as h,di as i,vi as l,Sr as m,Q as n,mi as o,Pr as p,Ha as r,ui as s,ro as t,Yr as u,xr as v,kt as y};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/provider-settings-B60i2ftL.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/account-store-B_euqvU1.js","assets/preload-helper-Czpn1I53.js","assets/claude-model-version-C0HLsjny.js","assets/models-BSkXF4T6.js","assets/diagnostics-DN_idNHx.js","assets/provider-env-CTOcDKrQ.js","assets/__vite-browser-external-5eBdwsFd.js","assets/openrouter.models-BxrUfzom.js","assets/libesm-BypnjKEL.js","assets/logger-DDBAeTLF.js","assets/src-CAWTvdAa.js","assets/proxied-fetch-CFWkfPNA.js","assets/base64-DJRlyqZu.js","assets/runtime-env-Dlaokqg1.js","assets/fetch-body-D2PwksUW.js","assets/api-endpoint-GRCyib6X.js","assets/float-topology-BYb7rxY5.js","assets/runtime-env-E-i2SW1s.js","assets/secret-topology-BE7Eyd3P.js","assets/secrets-bridge-client-H8-Z1RVR.js","assets/port-bridge-client-Cti-DmEY.js","assets/image-markers-CxJ9ZBgw.js","assets/tool-ui-eSQ1g2I1.js","assets/providers-Drh9RBhg.js","assets/panel-rpc-B3MSVImO.js","assets/bedrock-camp-compat-CgBMwna8.js","assets/telemetry-BVzuNdvW.js","assets/runtime-env-CgsZ7LTp.js","assets/tray-runtime-config-CluPgaPA.js","assets/messages-BD4p8GuF.js","assets/tray-follower-status-BAjnN7Ar.js","assets/clipboard-eqmn97SP.js","assets/tray-join-url-BIvzbiFR.js","assets/wc-detached-B3WCbbZT.js","assets/wc-settings-BBeVfukN.js","assets/feature-flags-ByMXaIc4.js","assets/theme-engine-By4GU_Wc.js","assets/theme-CXRqxpw6.js","assets/discovery-preference-cJij_YcT.js","assets/timestamp-preference-sKwBl5I8.js","assets/legacy-styles-DcRu2WCJ.js","assets/sync-dialog-ACgl0n-p.js","assets/icons-ZLR7gmJ4.js","assets/follower-presentation-DqBw0YiV.js"])))=>i.map(i=>d[i]);
2
+ import{t as e}from"./preload-helper-Czpn1I53.js";import{n as t}from"./runtime-env-Dlaokqg1.js";import{_ as n,a as r,g as i,o as a}from"./wc-live-CJ-SgVZ0.js";import"./runtime-env-CgsZ7LTp.js";import{r as o}from"./feature-flags-ByMXaIc4.js";import{l as s,t as c}from"./tray-runtime-config-CluPgaPA.js";import{t as l}from"./tray-follower-status-BAjnN7Ar.js";import{n as u}from"./clipboard-eqmn97SP.js";import{t as d}from"./tray-join-url-BIvzbiFR.js";import{r as f}from"./tray-leader-BkvHMG47.js";import{a as p}from"./wc-unit-context-BaavrvD8.js";function m(e){let t=e.find(e=>e.userAvatar&&e.userName)??e.find(e=>e.userName);return t?.userName?{name:t.userName,avatarUrl:t.userAvatar,provider:t.providerId}:null}function h(e){return e.flatMap(e=>e.models.map(t=>({name:t.name??t.id,provider:e.providerName,id:`${e.providerId}:${t.id}`})))}function g(e,t){try{let n=t();e.setAttribute(`model`,n.name??n.id)}catch{}}function _(e,t){let n=[{id:`settings`,label:`Account settings…`,icon:`settings`},{id:`theme`,label:`Theme settings…`,icon:`palette`},...t?[{id:`shortcuts`,label:`Keyboard mode`,icon:`keyboard`}]:[],{id:`export-transcript`,label:`Export transcript`,icon:`download`,disabled:e||void 0}];return o(`experimental-settings`)&&n.push({id:`experimental-settings`,label:`Experimental features…`,icon:`flask-conical`}),n}function v(e,t){return()=>{e.models=h(t()),n()}}async function y(n){let{refs:r,client:i,log:a,onExportTranscript:o}=n,{getAllAvailableModels:s,getAccounts:c,resolveCurrentModel:u}=await e(async()=>{let{getAllAvailableModels:e,getAccounts:t,resolveCurrentModel:n}=await import(`./provider-settings-B60i2ftL.js`).then(e=>e.t);return{getAllAvailableModels:e,getAccounts:t,resolveCurrentModel:n}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34])),p=v(r.composerMeta,s),h=()=>g(r.composerMeta,u);p();let y=null;await k(r,i,()=>{let e=y;y=null,e!=null&&r.thread?.dispatchEvent(new CustomEvent(`slicc-error-retry`,{detail:{messageId:e},bubbles:!0,composed:!0}))});let w=t(),A=()=>{let e=m(c()),t=r.avatarMenu.querySelector(`slicc-avatar`),n=r.inputCard.querySelector(`slicc-send-button`);e?(t?.removeAttribute(`initials`),t?.setAttribute(`name`,e.name),e.avatarUrl&&(t?.setAttribute(`src`,e.avatarUrl),n?.setAttribute(`src`,e.avatarUrl)),r.avatarMenu.user={name:e.name,provider:e.provider}):(t?.removeAttribute(`name`),t?.removeAttribute(`src`),t?.removeAttribute(`initials`),n?.removeAttribute(`src`),r.avatarMenu.user={name:`SLICC`,provider:w?`extension`:`standalone`})};A();let M=()=>{if(w)return[];let e=d(f(),l()),t=[{kind:`separator`}];return e.kind===`leader-offer`?t.push({id:`tray-enable`,label:e.label,icon:`radio`}):e.kind===`leader-copy`?(t.push({id:`tray-copy`,label:`Copy tray join URL`,icon:`link`}),t.push({id:`tray-stop`,label:`Stop multi-browser sync`,icon:`square`,danger:!0})):e.kind===`leader-pending`?(t.push({kind:`caption`,label:e.caption}),t.push({id:`tray-stop`,label:`Stop multi-browser sync`,icon:`square`,danger:!0})):(t.push({kind:`caption`,label:e.caption}),t.push({id:`tray-stop`,label:`Disconnect from leader`,icon:`unplug`,danger:!0})),t},N=new URLSearchParams(window.location.search).has(`detached`),P=()=>w&&!N?[{id:`popout`,label:`Pop out into a tab`,icon:`external-link`}]:[],F=!1,I=()=>{r.avatarMenu.items=[..._(F,!!n.shortcuts),...P(),...M()]};I(),r.avatarMenu.addEventListener(`slicc-avatar-menu-toggle`,e=>{e.detail?.open&&I()});let L=b(a,p,A,()=>i.updateModel());n.shortcuts?.setAction(`accounts`,L);let R=x(a),z=S(a);C(r,a),r.avatarMenu.addEventListener(`slicc-avatar-action`,t=>{let r=t.detail?.id;if(r&&T(r,a)){I();return}if(r===`popout`){e(async()=>{let{requestDetachedPopout:e}=await import(`./wc-detached-B3WCbbZT.js`);return{requestDetachedPopout:e}},__vite__mapDeps([35,31])).then(({requestDetachedPopout:e})=>e()).catch(e=>a.error(`detached popout request failed`,e));return}r===`shortcuts`&&n.shortcuts?.showHelp(),r===`settings`&&L(),r===`theme`&&R(),r===`experimental-settings`&&z(),r===`export-transcript`&&o&&(F=!0,I(),o().finally(()=>{F=!1,I()}))}),r.composerMeta.addEventListener(`add-ai`,L),E(r,L),D({refs:r,log:a,openSettings:L,setPendingReplayMessageId:e=>{y=e}}),await O({refs:r,log:a,openSettings:L,refreshModels:p,applyIdentity:A,client:i}),await j({refreshModels:p,refreshModelPill:h,applyIdentity:A,client:i})}function b(t,n,r,i){return()=>{e(async()=>{let{showWcSettings:e}=await import(`./wc-settings-BBeVfukN.js`);return{showWcSettings:e}},__vite__mapDeps([36,3,37,38,1,11,39,40,13,14,12,15,16,17,41])).then(({showWcSettings:e})=>e(t)).then(()=>{n(),r(),i()}).catch(e=>t.error(`WC settings dialog failed`,e))}}function x(t){return()=>{e(async()=>{let{showThemeSettings:e}=await import(`./wc-settings-BBeVfukN.js`);return{showThemeSettings:e}},__vite__mapDeps([36,3,37,38,1,11,39,40,13,14,12,15,16,17,41])).then(({showThemeSettings:e})=>e(t)).catch(e=>t.error(`Theme settings dialog failed`,e))}}function S(t){return()=>{e(async()=>{let{showExperimentalSettings:e}=await import(`./wc-settings-BBeVfukN.js`);return{showExperimentalSettings:e}},__vite__mapDeps([36,3,37,38,1,11,39,40,13,14,12,15,16,17,41])).then(({showExperimentalSettings:e})=>e(t)).catch(e=>t.error(`Experimental settings dialog failed`,e))}}function C(e,t){e.floatbar.addEventListener(`slicc-followers-click`,()=>{w(t,{copy:!1,initialTab:`status`})})}function w(t,n){let i=f().session?.joinUrl;i&&(n.copy&&u(i).catch(()=>void 0),e(async()=>{let{loadLegacyDialogStyles:e}=await import(`./legacy-styles-DcRu2WCJ.js`);return{loadLegacyDialogStyles:e}},__vite__mapDeps([42,3])).then(({loadLegacyDialogStyles:e})=>e()).then(async()=>{let{showSyncEnabledDialog:t}=await e(async()=>{let{showSyncEnabledDialog:e}=await import(`./sync-dialog-ACgl0n-p.js`);return{showSyncEnabledDialog:e}},__vite__mapDeps([43,12,33,1,44,45]));t({joinUrl:i,copied:n.copy,initialTab:n.initialTab,followers:r(),onReset:a()??null})}).catch(e=>t.error(`sync dialog failed`,e)))}function T(e,t){return e===`tray-enable`?(s({locationHref:window.location.href,storage:window.localStorage,envBaseUrl:null,defaultWorkerBaseUrl:c}).then(e=>{if(!e)return t.error(`tray enable: no worker base URL resolvable`);window.dispatchEvent(new CustomEvent(`slicc:tray-leave`,{detail:{workerBaseUrl:e}}))}),!0):e===`tray-copy`?(w(t,{copy:!0}),!0):e===`tray-stop`&&(window.dispatchEvent(new CustomEvent(`slicc:tray-leave`,{detail:{workerBaseUrl:null}})),!0)}function E(e,t){e.thread?.addEventListener(`slicc-error-open-settings`,t),window.addEventListener(`slicc:open-settings-from-panel`,()=>t())}function D(e){let{refs:t,log:n,openSettings:r,setPendingReplayMessageId:i}=e;t.thread?.addEventListener(`slicc-error-change-model`,e=>{i(e.detail?.messageId??null);let a=t.composerMeta,o=a.models;if(Array.isArray(o)&&o.length===0){r();return}try{a.openMenu?.()}catch(e){n.error(`opening composer model picker failed`,e)}})}async function O(t){let{refs:n,log:r,openSettings:i,refreshModels:a,applyIdentity:o,client:s}=t,{getSelectedProvider:c,getProviderConfig:l,reloginOAuthAccount:u}=await e(async()=>{let{getSelectedProvider:e,getProviderConfig:t,reloginOAuthAccount:n}=await import(`./provider-settings-B60i2ftL.js`).then(e=>e.t);return{getSelectedProvider:e,getProviderConfig:t,reloginOAuthAccount:n}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34]));n.thread?.addEventListener(`slicc-error-login`,()=>{let e=c(),t=e?l(e):null;if(!t||!t.onOAuthLogin&&!t.onOAuthLoginIntercepted){i();return}u(t,()=>{a(),o(),s.updateModel()}).catch(e=>r.error(`re-login from error card failed`,e))})}async function k(t,n,r){let{resolveModelById:i,resolveCurrentModel:a,setSelectedModelId:o}=await e(async()=>{let{resolveModelById:e,resolveCurrentModel:t,setSelectedModelId:n}=await import(`./provider-settings-B60i2ftL.js`).then(e=>e.t);return{resolveModelById:e,resolveCurrentModel:t,setSelectedModelId:n}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34])),s=e=>{let t=e.indexOf(`:`);return t>0?e.slice(t+1):e},c=e=>{try{let n=e?i(s(e)):a();t.composerMeta.toggleAttribute(`no-thinking`,n.reasoning!==!0)}catch{}};c(),t.composerMeta.addEventListener(`model-change`,e=>{let t=e.detail,i=t?.id;i&&t?.source!==`follower`&&(o(i),c(i),A(n,i),r?.())})}async function A(e,t,n=i){let r=t.indexOf(`:`);if(r<=0)return!1;let a={provider:t.slice(0,r),id:t.slice(r+1)},o=e.selectedScoopJid,s=o?e.getScoop(o)??null:null,c=p(e.getScoops(),s);if(!c)return!1;let l=await e.setScoopModel(c.jid,a);return l&&n(),l}async function j(t){let{refreshModels:n,refreshModelPill:r,applyIdentity:i,client:a}=t,{getAccounts:o,getProviderConfig:s}=await e(async()=>{let{getAccounts:e,getProviderConfig:t}=await import(`./provider-settings-B60i2ftL.js`).then(e=>e.t);return{getAccounts:e,getProviderConfig:t}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34]));window.addEventListener(`slicc:accounts-changed`,()=>{n(),r(),i(),a.updateModel();for(let e of o()){let t=s(e.providerId)?.refreshModels;t&&t().then(()=>{n(),r(),a.updateModel()}).catch(()=>void 0)}})}export{y as wireWcNav};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/onboarding-orchestrator-CYP2ZqYz.js","assets/logger-DDBAeTLF.js","assets/welcome-detection-BxyK5SuW.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/record-D153M47x.js","assets/oauth-service-NaEg6KHx.js","assets/preload-helper-Czpn1I53.js","assets/proxied-fetch-CFWkfPNA.js","assets/base64-DJRlyqZu.js","assets/src-CAWTvdAa.js","assets/runtime-env-Dlaokqg1.js","assets/fetch-body-D2PwksUW.js","assets/api-endpoint-GRCyib6X.js","assets/runtime-env-CgsZ7LTp.js","assets/runtime-env-E-i2SW1s.js","assets/panel-rpc-B3MSVImO.js","assets/permissions-surface-registry-CilCRwhh.js","assets/provider-settings-B60i2ftL.js","assets/account-store-B_euqvU1.js","assets/claude-model-version-C0HLsjny.js","assets/models-BSkXF4T6.js","assets/diagnostics-DN_idNHx.js","assets/provider-env-CTOcDKrQ.js","assets/__vite-browser-external-5eBdwsFd.js","assets/openrouter.models-BxrUfzom.js","assets/libesm-BypnjKEL.js","assets/float-topology-BYb7rxY5.js","assets/secret-topology-BE7Eyd3P.js","assets/secrets-bridge-client-H8-Z1RVR.js","assets/port-bridge-client-Cti-DmEY.js","assets/image-markers-CxJ9ZBgw.js","assets/tool-ui-eSQ1g2I1.js","assets/providers-Drh9RBhg.js","assets/bedrock-camp-compat-CgBMwna8.js","assets/telemetry-BVzuNdvW.js","assets/tray-runtime-config-CluPgaPA.js","assets/messages-BD4p8GuF.js","assets/tray-follower-status-BAjnN7Ar.js","assets/clipboard-eqmn97SP.js","assets/tray-join-url-BIvzbiFR.js"])))=>i.map(i=>d[i]);
2
+ import{t as e}from"./preload-helper-Czpn1I53.js";import{o as t}from"./tray-runtime-config-CluPgaPA.js";import{t as n}from"./welcome-detection-BxyK5SuW.js";import{t as r}from"./dip-DKmRJ7Vw.js";function i(e){let{vfs:r,storage:i,firedWelcomeActions:a,persistFiredWelcomeActions:o,getOrchestrator:s,log:c}=e;t(i)||n(r).then(e=>{if(e.isFirstRun){if(a.has(`first-run`)){c.debug(`Suppressing welcome re-fire: first-run already in dedup ledger`);return}a.add(`first-run`),o(a),s().handleFirstRun()}}).catch(e=>c.warn(`Welcome detection failed`,e))}function a(e){for(let t of[`slicc_accounts`,`selected-model`]){let n=localStorage.getItem(t);n!=null&&e.sendRaw({type:`local-storage-set`,key:t,value:n})}}function o(e,t,n,r){let i=n(e).filter(e=>!r(e.id)),a=t.defaultModelId?i.find(e=>e.id===t.defaultModelId):void 0,o=t.defaultModelId?i.find(e=>e.id.toLowerCase().includes(t.defaultModelId.toLowerCase())):void 0,s=a??o??i[0];return s?`${e}:${s.id}`:void 0}function s(e){let t=e.getAvailableProviders().filter(t=>e.providerOffersLlmModels(t)),n=t.map(t=>{let n=e.getProviderConfig(t);return{id:n.id,name:n.name??n.id,description:n.description,requiresApiKey:n.requiresApiKey??!0,requiresBaseUrl:n.requiresBaseUrl??!1,requiresDeployment:!!n.requiresDeployment,requiresApiVersion:!!n.requiresApiVersion,apiKeyPlaceholder:n.apiKeyPlaceholder??void 0,apiKeyEnvVar:n.apiKeyEnvVar??void 0,defaultBaseUrl:n.baseUrlPlaceholder??void 0,baseUrlDescription:n.baseUrlDescription??void 0,deploymentPlaceholder:n.deploymentPlaceholder??void 0,deploymentDescription:n.deploymentDescription??void 0,apiVersionDefault:n.apiVersionDefault??void 0,apiVersionDescription:n.apiVersionDescription??void 0,isOAuth:!!n.isOAuth}}).sort((e,t)=>e.name.localeCompare(t.name,void 0,{sensitivity:`base`})),r={};for(let n of t)try{r[n]=e.getProviderModels(n).filter(t=>!e.isModelHiddenFromPicker(t.id)).map(e=>({id:e.id,name:e.name}))}catch{r[n]=[]}return{providers:n,models:r}}async function c(t){let{OnboardingOrchestrator:n}=await e(async()=>{let{OnboardingOrchestrator:e}=await import(`./onboarding-orchestrator-CYP2ZqYz.js`);return{OnboardingOrchestrator:e}},__vite__mapDeps([0,1,2,3,4])),r=null;return{get:()=>r||(r=new n({fs:t.fs,postSystemMessage:t.postSystemMessage,postDipReference:t.postDipReference,getProviderCatalogue:()=>s(t.providers),saveAccount:(e,n,r,i,a)=>t.providers.addAccount(e,n,r,i,a),setSelectedModel:e=>t.providers.setSelectedModelId(e),resolveModelLabel:(e,n)=>{try{return t.providers.getProviderModels(e).find(e=>e.id===n)?.name??null}catch{return null}},broadcastToDip:e=>t.broadcastToDip(e),fireFinalLick:e=>t.onFireFinalLick(e),onAccountsChanged:t.onAccountsChanged?()=>t.onAccountsChanged?.():void 0,launchOAuth:async(e,n)=>await l(e,n??null,t)}),r),peek:()=>r,buildCatalogue:()=>s(t.providers)}}async function l(t,n,r){try{let i=r.providers.getProviderConfig(t);if(!i.isOAuth||!i.onOAuthLogin&&!i.onOAuthLoginIntercepted)return{ok:!1,message:`Provider does not support OAuth.`};if(i.requiresBaseUrl&&n&&r.providers.addAccount(t,``,n),i.onOAuthLoginIntercepted){let{createInterceptingOAuthLauncherForCurrentRuntime:t}=await e(async()=>{let{createInterceptingOAuthLauncherForCurrentRuntime:e}=await import(`./oauth-service-NaEg6KHx.js`);return{createInterceptingOAuthLauncherForCurrentRuntime:e}},__vite__mapDeps([5,6,7,3,8,9,10,11,12,13,14,15,16])),n=await t();if(!n)return{ok:!1,message:`Intercepted OAuth requires the controlled-browser transport — open SLICC in standalone or extension mode.`};await i.onOAuthLoginIntercepted(n,()=>void 0,{presentDeviceCode:r.deviceCode.createSprinkleDeviceCodePrompter({broadcastToDip:e=>r.broadcastToDip(e)})})}else if(i.onOAuthLogin){let{createOAuthLauncher:t}=await e(async()=>{let{createOAuthLauncher:e}=await import(`./oauth-service-NaEg6KHx.js`);return{createOAuthLauncher:e}},__vite__mapDeps([5,6,7,3,8,9,10,11,12,13,14,15,16])),n=t();await i.onOAuthLogin(n,()=>void 0)}return{ok:!0,model:o(t,i,r.providers.getProviderModels,r.providers.isModelHiddenFromPicker)}}catch(e){return{ok:!1,message:e instanceof Error?e.message:`OAuth login failed.`}}}var u=new Set([`first-run`,`onboarding-complete`,`onboarding-complete-with-provider`,`shortcut-migrate`]),d=`slicc:welcome-flow-fired`;function f(){try{let e=typeof localStorage<`u`?localStorage.getItem(d):null;if(!e)return new Set;let t=JSON.parse(e);return new Set(Array.isArray(t)?t.map(String):[])}catch{return new Set}}function p(e){try{if(typeof localStorage>`u`)return;localStorage.setItem(d,JSON.stringify([...e]))}catch{}}function m(e,t,n,r,i){if(u.has(e)&&t.has(e)){i.debug(`Suppressing duplicate welcome lick (${r})`,{action:e});return}u.has(e)&&(t.add(e),p(t)),n()}var h=new Set([`first-run`,`onboarding-complete`,`connect-ready`,`connect-attempt`,`oauth-attempt`,`device-code-decision`,`shortcut-migrate`]);function g(e){let{firedWelcomeActions:t,getAccounts:n,getProviderConfig:r,resolveDeviceCodeDecision:i,getOnboardingOrchestrator:a,applyPendingMount:o,fastForward:s,onShortcutMigrate:c,contextLabel:l,vfs:d,log:f}=e;return e=>{if(e.type!==`sprinkle`)return!1;let m=e.sprinkleName===`welcome`||e.sprinkleName===`inline`?e.body?.action:void 0;if(m&&u.has(m)){if(t.has(m))return f.debug(`Suppressing duplicate welcome lick (${l})`,{action:m}),!0;t.add(m),p(t)}if(!m||!h.has(m))return!1;let g=e.body;return S(m,g,{getAccounts:n,getProviderConfig:r,resolveDeviceCodeDecision:i,getOnboardingOrchestrator:a,applyPendingMount:o,fastForward:s,onShortcutMigrate:c,vfs:d,log:f})}}function _(e,t){let n=e[t];return typeof n==`string`&&n?n:null}function v(e,t){let n=t.getOnboardingOrchestrator(),r=e?.data??{};return r.mountWorkspace&&t.applyPendingMount&&t.applyPendingMount().catch(e=>t.log.warn(`Failed to mount workspace from onboarding`,e)),n.handleOnboardingComplete(r).catch(e=>t.log.warn(`OnboardingOrchestrator failed`,e)),!0}function y(e,t){let n=e?.data;return n&&t.getOnboardingOrchestrator().handleConnectAttempt({provider:String(n.provider??``),apiKey:String(n.apiKey??``),baseUrl:_(n,`baseUrl`),deployment:_(n,`deployment`),apiVersion:_(n,`apiVersion`),model:n.model==null?null:String(n.model)}).catch(e=>t.log.warn(`handleConnectAttempt failed`,e)),!0}function b(e,t){let n=e?.data;return n&&t.getOnboardingOrchestrator().handleOAuthAttempt({provider:String(n.provider??``),baseUrl:_(n,`baseUrl`)}).catch(e=>t.log.warn(`handleOAuthAttempt failed`,e)),!0}var x={"device-code-decision":(e,t)=>{let n=e?.data?.decision;return t.resolveDeviceCodeDecision(n===`cancel`?`cancel`:`continue`),!0},"first-run":(e,t)=>(t.getOnboardingOrchestrator().handleFirstRun(),!0),"onboarding-complete":v,"connect-ready":(e,t)=>C(t),"connect-attempt":y,"oauth-attempt":b,"shortcut-migrate":(e,t)=>(t.onShortcutMigrate(),!0)};function S(e,t,n){return x[e]?.(t,n)??!1}function C(e){let t=e.getAccounts();if(t.length===0)return e.getOnboardingOrchestrator().handleConnectReady(),!0;let n=t[0];return e.fastForward.broadcastAlreadyConnected(n.providerId),w(e.vfs,n.providerId,e.fastForward.fire).catch(t=>e.log.warn(`Failed to fire fast-forward final lick`,t)),!0}async function w(t,n,r){let{hasOnboardingFinalLickInHistory:i}=await e(async()=>{let{hasOnboardingFinalLickInHistory:e}=await import(`./welcome-detection-BxyK5SuW.js`).then(e=>e.r);return{hasOnboardingFinalLickInHistory:e}},__vite__mapDeps([2,3,1,4]));if(await i())return;let a=t?await T(t):{},{getSelectedModelId:o,getProviderConfig:s,getProviderModels:c}=await e(async()=>{let{getSelectedModelId:e,getProviderConfig:t,getProviderModels:n}=await import(`./provider-settings-B60i2ftL.js`).then(e=>e.t);return{getSelectedModelId:e,getProviderConfig:t,getProviderModels:n}},__vite__mapDeps([17,3,18,6,19,20,21,22,23,24,25,1,9,7,8,10,11,12,26,14,27,28,29,30,31,32,15,33,34,13,35,36,37,38,39])),l=(()=>{try{return o()||null}catch{return null}})(),u=(()=>{if(!l)return null;try{return c(n).find(e=>e.id===l)?.name??l}catch{return l}})(),d=null;try{d=s(n).name??null}catch{}r({action:`onboarding-complete-with-provider`,data:{profile:a,provider:n,providerName:d,model:l,modelLabel:u,validation:`preexisting`}})}async function T(e){try{let t=await e.readDir(`/home`),n=null;for(let r of t){if(r.type!==`directory`)continue;let t=`/home/${r.name}/.welcome.json`;try{let r=(await e.stat(t)).mtime??0;if(n&&r<=n.mtime)continue;let i=await e.readFile(t,{encoding:`utf-8`}),a=JSON.parse(typeof i==`string`?i:new TextDecoder().decode(i));a&&typeof a==`object`&&(n={profile:a,mtime:r})}catch{}}return n?.profile??{}}catch{return{}}}function E(e){let{writer:t}=e;return{readFile:t.readFile.bind(t),writeFile:t.writeFile.bind(t),readDir:t.readDir.bind(t),stat:t.stat.bind(t),mkdir:t.mkdir.bind(t),exists:async e=>{try{return await t.stat(e),!0}catch{return!1}}}}async function D(t){let{client:n,getController:o,openVfs:s,log:l}=t,u=await e(()=>import(`./provider-settings-B60i2ftL.js`).then(e=>e.t),__vite__mapDeps([17,3,18,6,19,20,21,22,23,24,25,1,9,7,8,10,11,12,26,14,27,28,29,30,31,32,15,33,34,13,35,36,37,38,39])),{createSprinkleDeviceCodePrompter:d,resolveDeviceCodeDecision:h}=await e(async()=>{let{createSprinkleDeviceCodePrompter:e,resolveDeviceCodeDecision:t}=await import(`./device-code-bridge-CbHxw098.js`);return{createSprinkleDeviceCodePrompter:e,resolveDeviceCodeDecision:t}},[]),_=E(await s()),v=f(),y=e=>{let t=o();t?t.addAssistantMessage(e):l.warn(`WC onboarding: no controller to post welcome line`)},b=await c({fs:_,log:l,providers:u,deviceCode:{createSprinkleDeviceCodePrompter:d},postSystemMessage:y,postDipReference:y,broadcastToDip:e=>r(e),onFireFinalLick:e=>{a(n),m(String(e.action??``),v,()=>n.sendSprinkleLick(`welcome`,e),`orchestrator-wc`,l)},onAccountsChanged:()=>{try{typeof window<`u`&&window.dispatchEvent(new CustomEvent(`slicc:accounts-changed`))}catch(e){l.warn(`Failed to dispatch slicc:accounts-changed`,e)}}}),x=g({firedWelcomeActions:v,getAccounts:u.getAccounts,getProviderConfig:u.getProviderConfig,resolveDeviceCodeDecision:h,getOnboardingOrchestrator:()=>b.get(),fastForward:{fire:e=>{m(String(e.action??``),v,()=>n.sendSprinkleLick(`welcome`,e),`fast-forward-wc`,l)},broadcastAlreadyConnected:e=>{let t=(()=>{try{return u.getProviderConfig(e)?.name??null}catch{return null}})();r({type:`slicc-already-connected`,provider:e,note:t?`Already connected to ${t}.`:`Already connected.`})}},onShortcutMigrate:()=>{_.writeFile(`/shared/.welcomed`,`1`).catch(e=>l.warn(`Failed to persist welcome completion marker`,e))},contextLabel:`wc`,vfs:_,log:l});return i({vfs:_,storage:window.localStorage,firedWelcomeActions:v,persistFiredWelcomeActions:p,getOrchestrator:()=>b.get(),log:l}),{interceptWelcomeLick:x}}export{D as wireWcOnboarding};
@@ -1,3 +1,3 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/mount-picker-popup-C4q1Q3pK.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/logger-DDBAeTLF.js","assets/picker-popup-bwFI7R4q.js","assets/runtime-env-Dlaokqg1.js","assets/runtime-env-E-i2SW1s.js","assets/src-CAWTvdAa.js","assets/remote-terminal-view-vsJYhJKi.js","assets/preload-helper-Czpn1I53.js","assets/tool-ui-DfXu6quJ.js","assets/permissions-surface-registry-CilCRwhh.js","assets/picker-approval-D89YhXsA.js","assets/html-B_Hg2WOy.js","assets/hid-device-registry-B2R-0rNt.js","assets/browser-DGwroBSO.js","assets/libesm-BypnjKEL.js","assets/serial-port-registry-CCqklAEr.js","assets/serial-picker-Cfjtv7AL.js","assets/picker-popup-Epy7NPEK.js","assets/hid-picker-BcXVbHb2.js","assets/usb-device-registry-CRsCisej.js","assets/usb-picker-D-B9HZ67.js","assets/terminal-session-client-ADzaWGFd.js"])))=>i.map(i=>d[i]);
2
- import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF.js";import{n}from"./permissions-surface-registry-CilCRwhh.js";var r=t(`wc-permissions`);function i(){return`pendingMount:perm-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}function a(e){if(e.runtimeMode===`cherry`)return null;let t=e.host??document.body,r=document.createElement(`slicc-permissions`);r.setAttribute(`data-leader-permissions`,``),e.providers&&(r.providers=e.providers),t.appendChild(r),n(r);let i=e=>{let t=e.detail;t.kind===`filesystem`&&t.source===`drop`&&o(t.handle).then(e=>{document.dispatchEvent(new CustomEvent(`slicc-mount-pending`,{detail:{idbKey:e,dirName:t.handle.name,source:`drop`},bubbles:!0,composed:!0}))})};return r.addEventListener(`slicc-permission-grant`,i),{element:r,dispose(){r.removeEventListener(`slicc-permission-grant`,i),r.remove(),n(null)}}}async function o(t){let n=i();try{let{storePendingHandle:r}=await e(async()=>{let{storePendingHandle:e}=await import(`./mount-picker-popup-C4q1Q3pK.js`).then(e=>e.n);return{storePendingHandle:e}},__vite__mapDeps([0,1,2,3,4,5,6]));await r(n,t)}catch(e){throw r.warn(`failed to stash dropped handle`,{error:e instanceof Error?e.message:String(e)}),e}return n}var s=`__sliccMountPendingConsumer`;function c(e){let t=new Set;for(let n of e.split(`
3
- `)){let e=n.trim();if(!e||e===`No active mounts`)continue;let r=e.split(/\s+/)[0];r.startsWith(`/`)&&t.add(r)}return t}function l(e){return e.trim().replace(/[^A-Za-z0-9._-]+/g,`-`).replace(/^[-.]+|[-.]+$/g,``)||`folder`}function u(e,t){let n=`/mnt/${e}`,r=2;for(;t.has(n);)n=`/mnt/${e}-${r++}`;return n}function d(e){let t=e.doc??document,n=t;if(n[s])return()=>{};n[s]=!0;let i=Promise.resolve(),a=t=>{let n=t.detail;n?.idbKey&&(i=i.then(()=>f(n,e)).catch(e=>{r.error(`slicc-mount-pending consumer failed`,{error:e instanceof Error?e.message:String(e)})}))};return t.addEventListener(`slicc-mount-pending`,a),()=>{t.removeEventListener(`slicc-mount-pending`,a),n[s]=!1}}async function f(e,t){let n=t.loadHandle??(await p()).loadAndClearPendingHandle,i=t.storeHandle??(await p()).storePendingHandle,a=t.mountKeyFor??await m(),o;try{o=await n(e.idbKey)}catch(t){r.warn(`failed to read pending handle from IDB`,{idbKey:e.idbKey,error:t instanceof Error?t.message:String(t)});return}if(!o){r.warn(`pending mount handle missing or expired`,{idbKey:e.idbKey});return}let s=new Set;try{s=c((await t.runShell(`mount list`)).stdout)}catch(e){r.warn(`mount list probe failed; assuming no existing mounts`,{error:e instanceof Error?e.message:String(e)})}let d=u(l(e.dirName),s);try{await i(a(d),o)}catch(e){r.warn(`failed to stash handle for worker adoption`,{targetPath:d,error:e instanceof Error?e.message:String(e)});return}let f;try{f=await t.runShell(`mount ${d}`)}catch(e){r.error(`mount command threw`,{targetPath:d,error:e instanceof Error?e.message:String(e)});return}if(f.exitCode!==0){r.error(`mount command returned non-zero`,{targetPath:d,stderr:f.stderr.trim()});return}r.info(`mounted dropped folder`,{targetPath:d,dirName:e.dirName})}async function p(){return e(()=>import(`./mount-picker-popup-C4q1Q3pK.js`).then(e=>e.n),__vite__mapDeps([0,1,2,3,4,5,6]))}async function m(){let{localMountIdbKey:t}=await e(async()=>{let{localMountIdbKey:e}=await import(`./remote-terminal-view-vsJYhJKi.js`);return{localMountIdbKey:e}},__vite__mapDeps([7,1,8,9,2,10,11,12,0,3,4,5,6,13,14,15,16,17,18,19,20,21,22]));return t}export{a as installLeaderPermissionsSurface,d as installMountPendingConsumer};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/mount-picker-popup-DFcbLJQx.js","assets/logger-DDBAeTLF.js","assets/picker-popup-bwFI7R4q.js","assets/runtime-env-Dlaokqg1.js","assets/runtime-env-E-i2SW1s.js","assets/src-CAWTvdAa.js","assets/remote-terminal-view-DpxIbz7w.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/preload-helper-Czpn1I53.js","assets/tool-ui-eSQ1g2I1.js","assets/permissions-surface-registry-CilCRwhh.js","assets/hid-device-registry-B2R-0rNt.js","assets/browser-DGwroBSO.js","assets/libesm-BypnjKEL.js","assets/serial-port-registry-CCqklAEr.js","assets/serial-picker-Cfjtv7AL.js","assets/picker-popup-Epy7NPEK.js","assets/hid-picker-BcXVbHb2.js","assets/usb-device-registry-CRsCisej.js","assets/usb-picker-D-B9HZ67.js","assets/terminal-session-client-ADzaWGFd.js"])))=>i.map(i=>d[i]);
2
+ import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF.js";import{n}from"./permissions-surface-registry-CilCRwhh.js";var r=t(`wc-permissions`);function i(){return`pendingMount:perm-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}function a(e){if(e.runtimeMode===`cherry`)return null;let t=e.host??document.body,r=document.createElement(`slicc-permissions`);r.setAttribute(`data-leader-permissions`,``),e.providers&&(r.providers=e.providers),t.appendChild(r),n(r);let i=e=>{let t=e.detail;t.kind===`filesystem`&&t.source===`drop`&&o(t.handle).then(e=>{document.dispatchEvent(new CustomEvent(`slicc-mount-pending`,{detail:{idbKey:e,dirName:t.handle.name,source:`drop`},bubbles:!0,composed:!0}))})};return r.addEventListener(`slicc-permission-grant`,i),{element:r,dispose(){r.removeEventListener(`slicc-permission-grant`,i),r.remove(),n(null)}}}async function o(t){let n=i();try{let{storePendingHandle:r}=await e(async()=>{let{storePendingHandle:e}=await import(`./mount-picker-popup-DFcbLJQx.js`);return{storePendingHandle:e}},__vite__mapDeps([0,1,2,3,4,5]));await r(n,t)}catch(e){throw r.warn(`failed to stash dropped handle`,{error:e instanceof Error?e.message:String(e)}),e}return n}var s=`__sliccMountPendingConsumer`;function c(e){let t=new Set;for(let n of e.split(`
3
+ `)){let e=n.trim();if(!e||e===`No active mounts`)continue;let r=e.split(/\s+/)[0];r.startsWith(`/`)&&t.add(r)}return t}function l(e){return e.trim().replace(/[^A-Za-z0-9._-]+/g,`-`).replace(/^[-.]+|[-.]+$/g,``)||`folder`}function u(e,t){let n=`/mnt/${e}`,r=2;for(;t.has(n);)n=`/mnt/${e}-${r++}`;return n}function d(e){let t=e.doc??document,n=t;if(n[s])return()=>{};n[s]=!0;let i=Promise.resolve(),a=t=>{let n=t.detail;n?.idbKey&&(i=i.then(()=>f(n,e)).catch(e=>{r.error(`slicc-mount-pending consumer failed`,{error:e instanceof Error?e.message:String(e)})}))};return t.addEventListener(`slicc-mount-pending`,a),()=>{t.removeEventListener(`slicc-mount-pending`,a),n[s]=!1}}async function f(e,t){let n=t.loadHandle??(await p()).loadAndClearPendingHandle,i=t.storeHandle??(await p()).storePendingHandle,a=t.mountKeyFor??await m(),o;try{o=await n(e.idbKey)}catch(t){r.warn(`failed to read pending handle from IDB`,{idbKey:e.idbKey,error:t instanceof Error?t.message:String(t)});return}if(!o){r.warn(`pending mount handle missing or expired`,{idbKey:e.idbKey});return}let s=new Set;try{s=c((await t.runShell(`mount list`)).stdout)}catch(e){r.warn(`mount list probe failed; assuming no existing mounts`,{error:e instanceof Error?e.message:String(e)})}let d=u(l(e.dirName),s);try{await i(a(d),o)}catch(e){r.warn(`failed to stash handle for worker adoption`,{targetPath:d,error:e instanceof Error?e.message:String(e)});return}let f;try{f=await t.runShell(`mount ${d}`)}catch(e){r.error(`mount command threw`,{targetPath:d,error:e instanceof Error?e.message:String(e)});return}if(f.exitCode!==0){r.error(`mount command returned non-zero`,{targetPath:d,stderr:f.stderr.trim()});return}r.info(`mounted dropped folder`,{targetPath:d,dirName:e.dirName})}async function p(){return e(()=>import(`./mount-picker-popup-DFcbLJQx.js`),__vite__mapDeps([0,1,2,3,4,5]))}async function m(){let{localMountIdbKey:t}=await e(async()=>{let{localMountIdbKey:e}=await import(`./remote-terminal-view-DpxIbz7w.js`);return{localMountIdbKey:e}},__vite__mapDeps([6,7,8,9,1,10,0,2,3,4,5,11,12,13,14,15,16,17,18,19,20]));return t}export{a as installLeaderPermissionsSurface,d as installMountPendingConsumer};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/mount-picker-popup-DFcbLJQx.js","assets/logger-DDBAeTLF.js","assets/picker-popup-bwFI7R4q.js","assets/runtime-env-Dlaokqg1.js","assets/runtime-env-E-i2SW1s.js","assets/src-CAWTvdAa.js","assets/usb-picker-D-B9HZ67.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/picker-popup-Epy7NPEK.js","assets/hid-picker-BcXVbHb2.js","assets/serial-picker-Cfjtv7AL.js","assets/usb-device-registry-CRsCisej.js","assets/hid-device-registry-B2R-0rNt.js","assets/serial-port-registry-CCqklAEr.js"])))=>i.map(i=>d[i]);
2
+ import{t as e}from"./preload-helper-Czpn1I53.js";import{n as t}from"./runtime-env-Dlaokqg1.js";import"./runtime-env-CgsZ7LTp.js";function n(){return t()}async function r(t=n()){if(!t)return;let[{openMountPickerPopup:r,storePendingHandle:s,loadAndClearPendingHandle:c},l,u,d]=await Promise.all([e(()=>import(`./mount-picker-popup-DFcbLJQx.js`),__vite__mapDeps([0,1,2,3,4,5])),e(()=>import(`./usb-picker-D-B9HZ67.js`).then(e=>e.t),__vite__mapDeps([6,7,2,3,4,5,8])),e(()=>import(`./hid-picker-BcXVbHb2.js`).then(e=>e.t),__vite__mapDeps([9,7,2,3,4,5,8])),e(()=>import(`./serial-picker-Cfjtv7AL.js`).then(e=>e.t),__vite__mapDeps([10,7,2,3,4,5,8]))]);return{filesystem:{async showDirectoryPicker(){let e=await r();if(e.cancelled)throw new DOMException(`mount picker cancelled`,`AbortError`);if(e.error)throw Error(e.error);if(!e.idbKey)throw Error(`mount picker returned no handle key`);let t=await c(e.idbKey);if(!t)throw Error(`mount picker returned no handle`);return await s(e.idbKey,t),t}},usb:{async requestDevice(e){let t=await l.openUsbPickerPopup(e?.filters??[]);if(`cancelled`in t)throw new DOMException(`usb picker cancelled`,`AbortError`);if(`error`in t)throw Error(t.error);let n=await i(t.info);if(!n)throw Error(`granted USB device could not be re-acquired`);return n}},hid:{async requestDevice(e){let t=await u.openHidPickerPopup(e?.filters??[]);if(`cancelled`in t)throw new DOMException(`hid picker cancelled`,`AbortError`);if(`error`in t)throw Error(t.error);let n=await a(t.info);if(n.length===0)throw Error(`granted HID device could not be re-acquired`);return n}},serial:{async requestPort(e){let t=await d.openSerialPickerPopup(e?.filters??[]);if(`cancelled`in t)throw new DOMException(`serial picker cancelled`,`AbortError`);if(`error`in t)throw Error(t.error);let n=await o(t.info);if(!n)throw Error(`granted serial port could not be re-acquired`);return n}}}}async function i(t){let{getNavigatorUsb:n}=await e(async()=>{let{getNavigatorUsb:e}=await import(`./usb-device-registry-CRsCisej.js`).then(e=>e.a);return{getNavigatorUsb:e}},__vite__mapDeps([11,7])),r=n();if(!r)throw Error(`WebUSB is unavailable in this browser`);return(await r.getDevices()).find(e=>e.vendorId===t.vendorId&&e.productId===t.productId&&(!t.serialNumber||e.serialNumber===t.serialNumber))??null}async function a(t){let{getNavigatorHid:n}=await e(async()=>{let{getNavigatorHid:e}=await import(`./hid-device-registry-B2R-0rNt.js`).then(e=>e.a);return{getNavigatorHid:e}},__vite__mapDeps([12,7])),r=n();if(!r)throw Error(`WebHID is unavailable in this browser`);return(await r.getDevices()).filter(e=>e.vendorId===t.vendorId&&e.productId===t.productId)}async function o(t){let{getNavigatorSerial:n}=await e(async()=>{let{getNavigatorSerial:e}=await import(`./serial-port-registry-CCqklAEr.js`).then(e=>e.o);return{getNavigatorSerial:e}},__vite__mapDeps([13,7])),r=n();if(!r)throw Error(`Web Serial is unavailable in this browser`);let i=await r.getPorts();return i.filter(e=>{let n=e.getInfo();return!(t.usbVendorId!==void 0&&n.usbVendorId!==t.usbVendorId||t.usbProductId!==void 0&&n.usbProductId!==t.usbProductId)})[0]??i[0]??null}export{r as buildLeaderPermissionProviders,n as isExtensionRuntime};