sliccy 6.99.7 → 6.99.8

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 (272) hide show
  1. package/dist/ui/.vite/manifest.json +389 -614
  2. package/dist/ui/assets/__vite-browser-external-CyeY5rFA.js +1 -0
  3. package/dist/ui/assets/{account-store-y43KgcoW.js → account-store-BHr78r-q.js} +3 -3
  4. package/dist/ui/assets/{account-store-llwJaGRg.js → account-store-DhN2-vXh.js} +5 -5
  5. package/dist/ui/assets/adobe-BgNEArvI.js +2 -0
  6. package/dist/ui/assets/{adobe-C30ITWqR.js → adobe-C-61Gw8p.js} +1 -1
  7. package/dist/ui/assets/agent-panels-DwH4FR7k.js +1 -0
  8. package/dist/ui/assets/{anthropic-messages-DbPJ2ji9.js → anthropic-messages-B7p0objs.js} +1 -1
  9. package/dist/ui/assets/{anthropic-messages-CpSojOI8.js → anthropic-messages-JQYJ-RUq.js} +1 -1
  10. package/dist/ui/assets/{apply-layout-CyFMgsCH.js → apply-layout-DWTxIKYs.js} +1 -1
  11. package/dist/ui/assets/{apps-BaBqMpf9.js → apps-CDrFK--r.js} +1 -1
  12. package/dist/ui/assets/azure-openai-BCHBeybM.js +18 -0
  13. package/dist/ui/assets/azure-openai-C1aiXjjQ.js +18 -0
  14. package/dist/ui/assets/{azure-openai-responses-DUMDrZ29.js → azure-openai-responses-BNbgkULn.js} +1 -1
  15. package/dist/ui/assets/{azure-openai-responses-BcoOaRCx.js → azure-openai-responses-BULcSJeo.js} +1 -1
  16. package/dist/ui/assets/{bedrock-camp-LeceEQbU.js → bedrock-camp-9Mg_YE1C.js} +1 -1
  17. package/dist/ui/assets/{bedrock-camp-BcJEC3Pg.js → bedrock-camp-DP3Gfbz7.js} +1 -1
  18. package/dist/ui/assets/{browser-DdY1FBRp.js → browser-DGwroBSO.js} +3 -3
  19. package/dist/ui/assets/{bsh-watchdog-GrjFkpDG.js → bsh-watchdog--Df_ThJG.js} +1 -1
  20. package/dist/ui/assets/{cdp-ByIHQG_1.js → cdp-BzUC7d2h.js} +1 -1
  21. package/dist/ui/assets/{cerebras-DCOB1GIn.js → cerebras-BWY_xN7G.js} +1 -1
  22. package/dist/ui/assets/{cerebras-Oyxkgl8K.js → cerebras-X5XOc6kT.js} +1 -1
  23. package/dist/ui/assets/{claude-model-version-Csn7RPVg.js → claude-model-version-BXR93nLt.js} +1 -1
  24. package/dist/ui/assets/claude-model-version-D6lCh6G7.js +2 -0
  25. package/dist/ui/assets/{composer-speech-Bqp4MnUW.js → composer-speech-Byuwd2QJ.js} +1 -1
  26. package/dist/ui/assets/{connect-surface-N7OhnOjG.js → connect-surface-BqfnkTNQ.js} +1 -1
  27. package/dist/ui/assets/{cost-command-BQWpaecs.js → cost-command-CwOkolbd.js} +57 -57
  28. package/dist/ui/assets/{dist-_7dnux20.js → dist-BmTb9jmr.js} +1 -1
  29. package/dist/ui/assets/{dist-D7yTTAcb.js → dist-BnDrtqYs.js} +1 -1
  30. package/dist/ui/assets/dist-CMD3ZuiV.js +1 -0
  31. package/dist/ui/assets/{dist-DTAqvnM4.js → dist-CV-6KpFS.js} +1 -1
  32. package/dist/ui/assets/dist-CWHNqkcj.js +1 -0
  33. package/dist/ui/assets/dist-CrVgSn_b.js +6 -0
  34. package/dist/ui/assets/dist-DkG8wgj1.js +23 -0
  35. package/dist/ui/assets/dist-N1MMHRNk.js +18 -0
  36. package/dist/ui/assets/dist-RekgwRC0.js +12 -0
  37. package/dist/ui/assets/{dist-B4LJzMVB.js → dist-kBT87Ea7.js} +11 -11
  38. package/dist/ui/assets/{ensure-speech-assets-CO3wuKjp.js → ensure-speech-assets-Hv5Jwof_.js} +1 -1
  39. package/dist/ui/assets/{es-BDNIRkLU.js → es-BLFevQz4.js} +5 -5
  40. package/dist/ui/assets/{esbuild-wasm-DUOZmSly.js → esbuild-wasm-Dl3vgXvq.js} +2 -2
  41. package/dist/ui/assets/esp8266-1y0C3qJ1.js +1 -0
  42. package/dist/ui/assets/esptool-operations-CiccBbBW.js +12 -0
  43. package/dist/ui/assets/esptool-operations-lUvXx3gs.js +13 -0
  44. package/dist/ui/assets/{follower-navigate-watcher-Dd46El3D.js → follower-navigate-watcher-DRFF6ll0.js} +1 -1
  45. package/dist/ui/assets/fs-qMMHgiDM.js +2 -0
  46. package/dist/ui/assets/{fs-BNz_JyUR.js → fs-tsCmhLpU.js} +1 -1
  47. package/dist/ui/assets/github-CLAenO0m.js +2 -0
  48. package/dist/ui/assets/github-TenSKQL4.js +1 -0
  49. package/dist/ui/assets/{github-copilot-DiPxhMir.js → github-copilot-B-pJOojX.js} +1 -1
  50. package/dist/ui/assets/github-copilot-CvxZKmtr.js +2 -0
  51. package/dist/ui/assets/{github-install-CZSoNGFR.js → github-install-CSrLhUFy.js} +1 -1
  52. package/dist/ui/assets/{github-zip-CrdkhxjH.js → github-zip-KaxQyKKS.js} +1 -1
  53. package/dist/ui/assets/{google-generative-ai-Rjh7hNBV.js → google-generative-ai-DEMR2Ygt.js} +1 -1
  54. package/dist/ui/assets/{google-generative-ai-Dxo91M3n.js → google-generative-ai-ZQ9beFyW.js} +1 -1
  55. package/dist/ui/assets/{google-shared-DQJPCU3d.js → google-shared-B7H0ZrH8.js} +6 -6
  56. package/dist/ui/assets/google-shared-REamLvEm.js +11 -0
  57. package/dist/ui/assets/{google-vertex-DEwkNZJm.js → google-vertex-0C6GT5h4.js} +1 -1
  58. package/dist/ui/assets/{google-vertex-61Jj0dk6.js → google-vertex-DsErHx7o.js} +1 -1
  59. package/dist/ui/assets/handoff-link-BObMRgsx.js +1 -0
  60. package/dist/ui/assets/{hear-Co4TqejW.js → hear-zfLnACrB.js} +1 -1
  61. package/dist/ui/assets/{installer-CufDPCfO.js → installer-VcJEC2uC.js} +1 -1
  62. package/dist/ui/assets/{isomorphic-git-BAj-fLD-.js → isomorphic-git-WdgG3efW.js} +6 -6
  63. package/dist/ui/assets/js-realm-worker-CXQhPnY0.js +40 -0
  64. package/dist/ui/assets/{kernel-worker-DyoLnIZO.js → kernel-worker-BpjE-7BD.js} +421 -428
  65. package/dist/ui/assets/kokoro-BkJ3NLgd.js +4 -0
  66. package/dist/ui/assets/{legacy-api-aliases-oJPAvhVV.js → legacy-api-aliases-BYDhiWyY.js} +1 -1
  67. package/dist/ui/assets/{legacy-api-aliases-BnRqMAef.js → legacy-api-aliases-Dh4ciP2O.js} +1 -1
  68. package/dist/ui/assets/{libesm-BI4UHVqp.js → libesm-BypnjKEL.js} +1 -1
  69. package/dist/ui/assets/{libesm-zfj8k-QN.js → libesm-CSMdpGMF.js} +1 -1
  70. package/dist/ui/assets/lick-manager-CYlek4qq.js +2 -0
  71. package/dist/ui/assets/{lick-ws-bridge-yklVm5en.js → lick-ws-bridge-CdCpPLQn.js} +1 -1
  72. package/dist/ui/assets/{local-llm-DNFbzXTw.js → local-llm-D5B7umV1.js} +1 -1
  73. package/dist/ui/assets/{local-llm-DOnsCe6c.js → local-llm-onyoDvHB.js} +1 -1
  74. package/dist/ui/assets/magick-wasm-266b8ntc.js +43 -0
  75. package/dist/ui/assets/main-DjAHuk3R.js +22 -0
  76. package/dist/ui/assets/{main-cherry-3UVAQhqV.js → main-cherry-C6fqCnLL.js} +1 -1
  77. package/dist/ui/assets/{mount-DhhlMZMN.js → mount-BcopcDTf.js} +1 -1
  78. package/dist/ui/assets/mount-Cr-j5Qvu.js +2 -0
  79. package/dist/ui/assets/{mount-recovery-Dbd9EVjz.js → mount-recovery-DnWemQVb.js} +1 -1
  80. package/dist/ui/assets/{navigation-watcher-OPbGCby9.js → navigation-watcher-DrWMx-B4.js} +1 -1
  81. package/dist/ui/assets/new-session-DagG-ZZy.js +2 -0
  82. package/dist/ui/assets/oauth-bootstrap-CDgbPc25.js +2 -0
  83. package/dist/ui/assets/onboarding-orchestrator-DwBmySbw.js +1 -0
  84. package/dist/ui/assets/openai-BKEGagiR.js +17 -0
  85. package/dist/ui/assets/openai-Bgt_f1Dp.js +17 -0
  86. package/dist/ui/assets/{openai-codex-BI5-lt7L.js → openai-codex-B8nK05u1.js} +1 -1
  87. package/dist/ui/assets/openai-codex-CFHJKZXk.js +1 -0
  88. package/dist/ui/assets/{openai-codex-responses-CPOJeFUY.js → openai-codex-responses-C-nzMgox.js} +1 -1
  89. package/dist/ui/assets/{openai-codex-responses-jQR19NyX.js → openai-codex-responses-CG4v_H6T.js} +1 -1
  90. package/dist/ui/assets/{openai-completions-DGOcowq8.js → openai-completions-CIRx7G9l.js} +2 -2
  91. package/dist/ui/assets/{openai-completions-DGZFJo5D.js → openai-completions-ojba8VM0.js} +2 -2
  92. package/dist/ui/assets/{openai-responses-CDTdSIhv.js → openai-responses-BDRcKCF5.js} +1 -1
  93. package/dist/ui/assets/{openai-responses-bnETPgx9.js → openai-responses-DzwaJ-X-.js} +1 -1
  94. package/dist/ui/assets/openai-responses-shared-BjAQ1eIE.js +10 -0
  95. package/dist/ui/assets/openai-responses-shared-Dg_yfxea.js +10 -0
  96. package/dist/ui/assets/{openrouter-DZhpGJA4.js → openrouter-BQXiRTOg.js} +1 -1
  97. package/dist/ui/assets/openrouter-brhW7dHW.js +1 -0
  98. package/dist/ui/assets/{openrouter-images-C93KT7V_.js → openrouter-images-BAtqv3Im.js} +1 -1
  99. package/dist/ui/assets/{openrouter-images-CiM-JPBO.js → openrouter-images-Du3tMEQa.js} +1 -1
  100. package/dist/ui/assets/openrouter-oauth-DQ7iHoUX.js +1 -0
  101. package/dist/ui/assets/{openrouter-oauth-iFmYGgcr.js → openrouter-oauth-DuIS_qNZ.js} +1 -1
  102. package/dist/ui/assets/panel-rpc-handlers-BBgO_HM3.js +2 -0
  103. package/dist/ui/assets/panelize-shell-DpfBeau6.js +4 -0
  104. package/dist/ui/assets/pdfjs-DAWky37A.js +100 -0
  105. package/dist/ui/assets/{provider-CauMmJra.js → provider-D1IQTDOu.js} +1 -1
  106. package/dist/ui/assets/provider-VbLD3Pa_.js +2 -0
  107. package/dist/ui/assets/{provider-settings-CDR9tmFe.js → provider-settings-D24NB2-U.js} +1 -1
  108. package/dist/ui/assets/provider-store-access-CFkv-yrf.js +1 -0
  109. package/dist/ui/assets/provider-store-access-Dh0tBZso.js +1 -0
  110. package/dist/ui/assets/providers-CZ_sFfrt.js +2 -0
  111. package/dist/ui/assets/{providers-DS7U7ou8.js → providers-PfyMAay1.js} +1 -1
  112. package/dist/ui/assets/{py-realm-worker-B2OTI7Xc.js → py-realm-worker-D1gqcTkl.js} +2 -2
  113. package/dist/ui/assets/{pyodide-CkJHMMSo.js → pyodide-D43YUXvd.js} +2 -2
  114. package/dist/ui/assets/{quick-llm-DSQHsD_0.js → quick-llm-drlxgkUg.js} +1 -1
  115. package/dist/ui/assets/{recovery-screen-dGlemlkP.js → recovery-screen-BccxAWe7.js} +1 -1
  116. package/dist/ui/assets/{redirect-uri-BOpxbXbd.js → redirect-uri-AfF6uLvV.js} +1 -1
  117. package/dist/ui/assets/remote-cdp-transport-DeDqT7I4.js +1 -0
  118. package/dist/ui/assets/remote-sprinkle-vfs-CawR6gXx.js +1 -0
  119. package/dist/ui/assets/{remote-terminal-view-BNWZWMBC.js → remote-terminal-view-D2bRNJcS.js} +2 -2
  120. package/dist/ui/assets/{run-Cll4MnAK.js → run-BIKu737n.js} +1 -1
  121. package/dist/ui/assets/safe-buffer-OLJ0qaLt.js +12 -0
  122. package/dist/ui/assets/safe-buffer-iah92gQe.js +1 -0
  123. package/dist/ui/assets/{setup-feature-flags-remote-rcKrPHk7.js → setup-feature-flags-remote-Dxg6pIkQ.js} +1 -1
  124. package/dist/ui/assets/shared-B9N4MZd0.js +1 -0
  125. package/dist/ui/assets/shared-CPVZc-MN.js +4 -0
  126. package/dist/ui/assets/sidecar-repair-DCvPqdWE.js +1 -0
  127. package/dist/ui/assets/{skills-0Do2e7wj.js → skills-Cc4T1Cfp.js} +1 -1
  128. package/dist/ui/assets/{slicc-diff-DhGIKKqP.js → slicc-diff-DRjxoBYz.js} +1 -1
  129. package/dist/ui/assets/slicc-editor-D-eO_pjd.js +23 -0
  130. package/dist/ui/assets/slicc-editor-Sdfe-_x_.js +1 -0
  131. package/dist/ui/assets/slicc-version-CzfOvAya.js +1 -0
  132. package/dist/ui/assets/speak-BsVaFA0Z.js +3 -0
  133. package/dist/ui/assets/{sprinkle-bridge-C4qw-DTw.js → sprinkle-bridge-e00Na2NA.js} +1 -1
  134. package/dist/ui/assets/{sprinkle-manager-B5T2quSt.js → sprinkle-manager-BqdBktzt.js} +1 -1
  135. package/dist/ui/assets/{sprinkle-renderer-D64E-W2o.js → sprinkle-renderer-C9L5ZRvl.js} +2 -2
  136. package/dist/ui/assets/{sql-wasm-DO685FZu.js → sql-wasm-B7K7OCuB.js} +1 -1
  137. package/dist/ui/assets/{state-BrCP8Eff.js → state-B8PB53C0.js} +1 -1
  138. package/dist/ui/assets/{store-bEWnkux0.js → store-BsTL1Wgg.js} +1 -1
  139. package/dist/ui/assets/{store-C2gM1M-9.js → store-SXMbC-35.js} +1 -1
  140. package/dist/ui/assets/{sudo-D0ZG1KJr.js → sudo-Blo41kLx.js} +1 -1
  141. package/dist/ui/assets/sync-dialog-yRY0wRJj.js +1 -0
  142. package/dist/ui/assets/{temperature-support-B4x2xaWY.js → temperature-support-BVrwHxWv.js} +1 -1
  143. package/dist/ui/assets/{temperature-support-Cpml9LfI.js → temperature-support-LrmsX3ix.js} +1 -1
  144. package/dist/ui/assets/{transformers-env-HIDS8utb.js → transformers-env-_JNZLFlo.js} +1 -1
  145. package/dist/ui/assets/transformers.web-B0gi9Hor.js +39 -0
  146. package/dist/ui/assets/tray-leader-Mq6HIneb.js +1 -0
  147. package/dist/ui/assets/{upgrade-detection-Ckesn3Ns.js → upgrade-detection-DqD1aedt.js} +1 -1
  148. package/dist/ui/assets/voice-reply-B-I-XncI.js +1 -0
  149. package/dist/ui/assets/wc-attach-DgJVZRem.js +13 -0
  150. package/dist/ui/assets/wc-extension-b7ONOPn6.js +2 -0
  151. package/dist/ui/assets/wc-float-label-d3I12c8W.js +1 -0
  152. package/dist/ui/assets/{wc-floatbar-online-tsTifrU7.js → wc-floatbar-online-CFeU9jju.js} +1 -1
  153. package/dist/ui/assets/wc-follower-BU7l80Bf.js +17 -0
  154. package/dist/ui/assets/wc-follower-oauth-DIH7qpbt.js +5 -0
  155. package/dist/ui/assets/wc-live-DL5TcdQ7.js +399 -0
  156. package/dist/ui/assets/wc-nav-DjOpEDo-.js +2 -0
  157. package/dist/ui/assets/wc-onboarding-BeunqMQZ.js +2 -0
  158. package/dist/ui/assets/{wc-permissions-CEmFmdBe.js → wc-permissions-WjSZrbPa.js} +2 -2
  159. package/dist/ui/assets/{wc-placeholder-C1LDJQR7.js → wc-placeholder-mYgmrH75.js} +3 -3
  160. package/dist/ui/assets/{wc-settings-PtFpnkee.js → wc-settings-JfsyJgL9.js} +3 -3
  161. package/dist/ui/assets/{src-B-encLtu.js → wc-shell-B7yZ6nn6.js} +304 -161
  162. package/dist/ui/assets/{wc-shortcut-config-w6fJ0bVB.js → wc-shortcut-config-CRticSXA.js} +2 -2
  163. package/dist/ui/assets/{wc-sprinkles-CeAUkWME.js → wc-sprinkles-D-DWMPsX.js} +2 -2
  164. package/dist/ui/assets/wc-transcript-export-DVjtNvuR.js +2 -0
  165. package/dist/ui/assets/wc-tray-D6joGkUe.js +2 -0
  166. package/dist/ui/assets/welcome-detection-CEmFgOCI.js +1 -0
  167. package/dist/ui/assets/{whisper-session-DzV9Jmfi.js → whisper-session-Ba-J0yyJ.js} +2 -2
  168. package/dist/ui/assets/{xai-grok-DRbKtbML.js → xai-grok-DHRw8xLj.js} +1 -1
  169. package/dist/ui/assets/xai-grok-DIhtpBYR.js +1 -0
  170. package/dist/ui/assets/xterm-B5LH8GIb.css +1 -0
  171. package/dist/ui/assets/xterm-C3BHN0de.js +16 -0
  172. package/dist/ui/index.html +8 -11
  173. package/dist/ui/packages/webapp/index.html +8 -11
  174. package/dist/ui/slicc-diff.js +1 -1
  175. package/dist/ui/slicc-editor.js +1 -1
  176. package/package.json +2 -2
  177. package/dist/ui/assets/__vite-browser-external-CwfFUl-x.js +0 -1
  178. package/dist/ui/assets/adobe-DeM_oCMe.js +0 -2
  179. package/dist/ui/assets/agent-message-to-chat-_cvF5A5g.js +0 -1
  180. package/dist/ui/assets/agent-panels-B92KQapO.js +0 -1
  181. package/dist/ui/assets/azure-openai-B2VLKBwJ.js +0 -18
  182. package/dist/ui/assets/azure-openai-tc52REpx.js +0 -18
  183. package/dist/ui/assets/backend-local-1YuE96fx.js +0 -1
  184. package/dist/ui/assets/chat-session-store-pWb1-jNp.js +0 -1
  185. package/dist/ui/assets/claude-model-version-DoVrYsKi.js +0 -2
  186. package/dist/ui/assets/db-cKsBsMMN.js +0 -1
  187. package/dist/ui/assets/dictation-priming-CNllGgNq.js +0 -1
  188. package/dist/ui/assets/dip-rCM_6Bc6.js +0 -233
  189. package/dist/ui/assets/dist-B6HZAA0r.js +0 -1
  190. package/dist/ui/assets/dist-BHvDPTv0.js +0 -1
  191. package/dist/ui/assets/dist-C56QxoYU.js +0 -18
  192. package/dist/ui/assets/dist-COLaZOxM.js +0 -23
  193. package/dist/ui/assets/dist-CPNmKU6m.js +0 -12
  194. package/dist/ui/assets/dist-Cew647MY.js +0 -12
  195. package/dist/ui/assets/dist-mxmkfALf.js +0 -6
  196. package/dist/ui/assets/esptool-operations-BmdosN6N.js +0 -13
  197. package/dist/ui/assets/esptool-operations-CbgLIJzi.js +0 -12
  198. package/dist/ui/assets/export-provider-BEHTjSYw.js +0 -1
  199. package/dist/ui/assets/follower-presentation-DqBw0YiV.js +0 -1
  200. package/dist/ui/assets/fs-C6heN6Io.js +0 -2
  201. package/dist/ui/assets/github-BES17MG4.js +0 -2
  202. package/dist/ui/assets/github-BnrwrtRn.js +0 -1
  203. package/dist/ui/assets/github-copilot-CzZSdNg_.js +0 -2
  204. package/dist/ui/assets/google-shared-CzJgTu-P.js +0 -11
  205. package/dist/ui/assets/handoff-link-BM4ctkE8.js +0 -1
  206. package/dist/ui/assets/host-command-zx0pt9Np.js +0 -1
  207. package/dist/ui/assets/js-realm-worker-D_8dhTFA.js +0 -40
  208. package/dist/ui/assets/kokoro-Bs5vU5OU.js +0 -4
  209. package/dist/ui/assets/layout-schema-m9_VAwOw.js +0 -1
  210. package/dist/ui/assets/leader-session-events-Iq9N1w56.js +0 -1
  211. package/dist/ui/assets/lick-manager-DFmMezV-.js +0 -2
  212. package/dist/ui/assets/magick-wasm-BpzBj-21.js +0 -43
  213. package/dist/ui/assets/main-CPLi98yu.js +0 -22
  214. package/dist/ui/assets/mount-CvVyowQ-.js +0 -2
  215. package/dist/ui/assets/new-session-BUxTN19q.js +0 -2
  216. package/dist/ui/assets/oauth-bootstrap-BnctKs3I.js +0 -2
  217. package/dist/ui/assets/onboarding-orchestrator-BF4m_3Ig.js +0 -1
  218. package/dist/ui/assets/openai-CjBvzZcB.js +0 -17
  219. package/dist/ui/assets/openai-ZcrxEOGB.js +0 -17
  220. package/dist/ui/assets/openai-codex-ad3likLF.js +0 -1
  221. package/dist/ui/assets/openai-responses-shared-ChgvRZ74.js +0 -10
  222. package/dist/ui/assets/openai-responses-shared-DqJbHrek.js +0 -10
  223. package/dist/ui/assets/openrouter-BfwBtJ0a.js +0 -1
  224. package/dist/ui/assets/openrouter-oauth-D1ocgCDw.js +0 -1
  225. package/dist/ui/assets/panel-registry-CJdOibpf.js +0 -1
  226. package/dist/ui/assets/panel-rpc-handlers-Dj-UnwwI.js +0 -2
  227. package/dist/ui/assets/panelize-shell-Dfx0Qk97.js +0 -4
  228. package/dist/ui/assets/pdfjs-BspLIDsM.js +0 -100
  229. package/dist/ui/assets/provider-3zYFx7pL.js +0 -2
  230. package/dist/ui/assets/provider-settings-CZ97KB3C.js +0 -2
  231. package/dist/ui/assets/provider-store-access-DvHfXiAa.js +0 -2
  232. package/dist/ui/assets/provider-store-access-escWLliN.js +0 -1
  233. package/dist/ui/assets/providers-DJA67z1N.js +0 -2
  234. package/dist/ui/assets/remote-cdp-transport-CgOXLjZ8.js +0 -1
  235. package/dist/ui/assets/remote-sprinkle-vfs-e81pZJKo.js +0 -1
  236. package/dist/ui/assets/safe-buffer-B2wnAhUx.js +0 -12
  237. package/dist/ui/assets/safe-buffer-BwTVRVVo.js +0 -1
  238. package/dist/ui/assets/session-freezer-BgO7tLUp.js +0 -162
  239. package/dist/ui/assets/setup-standalone-prelude-50scBzpK.js +0 -2
  240. package/dist/ui/assets/setup-sudo-Ce_APR8D.js +0 -2
  241. package/dist/ui/assets/shared-6HJLEwgI.js +0 -1
  242. package/dist/ui/assets/shared-BzvvjAZt.js +0 -4
  243. package/dist/ui/assets/sidecar-repair-431vRT2V.js +0 -1
  244. package/dist/ui/assets/slicc-editor-CVftccS9.js +0 -1
  245. package/dist/ui/assets/slicc-editor-DsHp_in-.js +0 -12
  246. package/dist/ui/assets/slicc-version-qJjMq-6R.js +0 -1
  247. package/dist/ui/assets/speak-KEFd3n_I.js +0 -3
  248. package/dist/ui/assets/sync-dialog-ACgl0n-p.js +0 -1
  249. package/dist/ui/assets/timestamp-preference-sKwBl5I8.js +0 -2
  250. package/dist/ui/assets/transformers.web-Cg_-cFJu.js +0 -39
  251. package/dist/ui/assets/tray-leader-iVJTGwuf.js +0 -1
  252. package/dist/ui/assets/tray-sync-protocol-BZ5yhJH9.js +0 -1
  253. package/dist/ui/assets/tray-sync-protocol-DV_QG_Ey.js +0 -1
  254. package/dist/ui/assets/trusted-layer-ghPA1ENf.js +0 -1
  255. package/dist/ui/assets/voice-reply-DaVk8H0o.js +0 -1
  256. package/dist/ui/assets/wc-attach-3I9pOCPA.js +0 -13
  257. package/dist/ui/assets/wc-extension-D1gzObu-.js +0 -2
  258. package/dist/ui/assets/wc-float-label-CCMo81Ds.js +0 -1
  259. package/dist/ui/assets/wc-follower-DrCJN-aK.js +0 -17
  260. package/dist/ui/assets/wc-follower-oauth-Dw0qOLsI.js +0 -5
  261. package/dist/ui/assets/wc-live-qc9mrCs3.js +0 -8
  262. package/dist/ui/assets/wc-nav-CysORJLz.js +0 -2
  263. package/dist/ui/assets/wc-onboarding-COhEMI0E.js +0 -2
  264. package/dist/ui/assets/wc-scoop-color-ShF3p7L9.js +0 -1
  265. package/dist/ui/assets/wc-shell-lFwQe30J.js +0 -119
  266. package/dist/ui/assets/wc-shortcuts-GiPteshM.js +0 -26
  267. package/dist/ui/assets/wc-transcript-export-DKIleW7-.js +0 -2
  268. package/dist/ui/assets/wc-tray-_dof-pAl.js +0 -2
  269. package/dist/ui/assets/welcome-detection-iVN_xL76.js +0 -1
  270. package/dist/ui/assets/xai-grok-BnSpWJjV.js +0 -1
  271. package/dist/ui/assets/xterm-BSL5rRqA.js +0 -18
  272. package/dist/ui/assets/xterm-BmfB5bmM.css +0 -1
@@ -0,0 +1,399 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/mount-picker-popup-Bc3ca2Vl.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/logger-DDBAeTLF.js","assets/logger-BoSvu4mW.js","assets/picker-popup-Bwcnocm6.js","assets/runtime-env-Dlaokqg1.js","assets/runtime-env-CgsZ7LTp.js","assets/runtime-env-E-i2SW1s.js","assets/src-CAWTvdAa.js","assets/usb-picker-KMes4Lyb.js","assets/serial-picker-NxC1kxYI.js","assets/hid-picker-JPu5knyb.js","assets/usb-device-registry-CRsCisej.js","assets/serial-port-registry-CCqklAEr.js","assets/hid-device-registry-B2R-0rNt.js","assets/quick-llm-drlxgkUg.js","assets/account-store-BHr78r-q.js","assets/preload-helper-Czpn1I53.js","assets/claude-model-version-D6lCh6G7.js","assets/models-BSkXF4T6.js","assets/diagnostics-DN_idNHx.js","assets/provider-env-CTOcDKrQ.js","assets/__vite-browser-external-5eBdwsFd.js","assets/openrouter.models-gbjkpjE_.js","assets/libesm-BypnjKEL.js","assets/proxied-fetch-BGeNrvQ4.js","assets/base64-DpPqYZJF.js","assets/fetch-body-D2PwksUW.js","assets/api-endpoint-GRCyib6X.js","assets/float-topology-DiK91BlA.js","assets/secret-topology-0AWfFTh5.js","assets/secrets-bridge-client-DCQ44RyR.js","assets/port-bridge-client-BhmNRlRv.js","assets/image-markers-BXtVm4og.js","assets/tool-ui-DfXu6quJ.js","assets/providers-CZ_sFfrt.js","assets/panel-rpc-B3MSVImO.js","assets/bedrock-camp-compat-CgBMwna8.js","assets/llm-session-id-bZQs6gBN.js","assets/icons-ZLR7gmJ4.js","assets/main-DjAHuk3R.js","assets/modulepreload-polyfill-P2Xu9kJm.js","assets/telemetry-BVzuNdvW.js","assets/messages-BD4p8GuF.js","assets/feature-flags-ByMXaIc4.js","assets/tray-runtime-config-D7cmCcHJ.js","assets/tray-follower-status-BAjnN7Ar.js","assets/clipboard-eqmn97SP.js","assets/tray-join-url-BIvzbiFR.js","assets/wc-placeholder-mYgmrH75.js","assets/wc-shell-B7yZ6nn6.js","assets/html-B_Hg2WOy.js","assets/speech-C5U8h4In.js","assets/soundscape-cues-5_sT5Un6.js","assets/wc-shell-WkeczD9x.css","assets/wc-attach-DgJVZRem.js","assets/permissions-surface-registry-CilCRwhh.js","assets/voice-reply-B-I-XncI.js","assets/speak-BsVaFA0Z.js","assets/speech-assets-bridge-CFYafE89.js","assets/transformers-env-_JNZLFlo.js","assets/shared-B9N4MZd0.js","assets/mime-types-ugOWOUZ9.js","assets/soundscape-TvriK11t.js","assets/legacy-styles-DcRu2WCJ.js","assets/theme-CXRqxpw6.js","assets/theme-engine-By4GU_Wc.js","assets/new-session-DagG-ZZy.js","assets/tray-leader-Mq6HIneb.js","assets/mount-table-store-dY2IfQ5S.js","assets/isomorphic-git-WdgG3efW.js","assets/safe-buffer-iah92gQe.js","assets/remote-vfs-client-CN1pCs1m.js","assets/types-idfTVsM8.js","assets/writable-vfs-client-CuBjWhy3.js","assets/wc-onboarding-BeunqMQZ.js","assets/record-C0lt6kKE.js","assets/wc-browser-DdPBkgaJ.js","assets/slicc-app-url-BsBryEhn.js","assets/tab-teleport-Dhh60nH7.js","assets/teleport-storage-CwYntbOB.js","assets/remote-terminal-view-D2bRNJcS.js","assets/picker-approval-D89YhXsA.js","assets/browser-DGwroBSO.js","assets/terminal-session-client-ADzaWGFd.js","assets/secret-env-CjwX7z7b.js","assets/wc-permissions-WjSZrbPa.js","assets/wc-permissions-providers-I39VzaSN.js","assets/panelize-shell-DpfBeau6.js","assets/virtual-device-paths-9EXC9iPp.js","assets/layout-apply-registry-Cw730jao.js","assets/wc-shortcut-config-CRticSXA.js","assets/remote-sprinkle-vfs-CawR6gXx.js","assets/wc-sprinkles-D-DWMPsX.js","assets/wc-unit-context-oCIU0KAf.js","assets/agent-panels-DwH4FR7k.js","assets/apply-layout-DWTxIKYs.js","assets/wc-tray-D6joGkUe.js","assets/attachments-CByeG2Ru.js","assets/remote-cdp-transport-DeDqT7I4.js","assets/pending-request-table-Dgn6qYdL.js","assets/wc-follower-oauth-DIH7qpbt.js","assets/sprinkle-renderer-C9L5ZRvl.js","assets/export-spool-Eul4J1RP.js","assets/src-BWaKqLvQ.js","assets/handoff-link-BObMRgsx.js","assets/path-utils-DNJG-zQf.js","assets/synthetic-cdp-transport-Ds83IPjw.js","assets/sprinkle-instances-B8n7h-oP.js","assets/wc-transcript-export-DVjtNvuR.js","assets/wc-nav-DjOpEDo-.js","assets/composer-speech-Byuwd2QJ.js","assets/whisper-session-Ba-J0yyJ.js","assets/wc-float-label-d3I12c8W.js","assets/wc-floatbar-online-CFeU9jju.js"])))=>i.map(i=>d[i]);
2
+ import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{C as t,L as n,Q as r,R as i,S as a,X as o,Z as s,d as c}from"./account-store-BHr78r-q.js";import{t as l}from"./preload-helper-Czpn1I53.js";import{o as u}from"./claude-model-version-D6lCh6G7.js";import{t as d}from"./logger-DDBAeTLF.js";import{t as f}from"./attachments-CByeG2Ru.js";import{t as p}from"./mime-types-ugOWOUZ9.js";import{n as m,t as h}from"./base64-DpPqYZJF.js";import{a as g,n as _,r as v,t as y}from"./src-CAWTvdAa.js";import"./proxied-fetch-BGeNrvQ4.js";import{n as ee}from"./runtime-env-Dlaokqg1.js";import{i as b,t as x}from"./api-endpoint-GRCyib6X.js";import{n as te}from"./float-topology-DiK91BlA.js";import"./secret-topology-0AWfFTh5.js";import{t as ne}from"./secrets-bridge-client-DCQ44RyR.js";import{t as re}from"./tool-ui-DfXu6quJ.js";import"./runtime-env-CgsZ7LTp.js";import{a as S,c as ie,l as ae,n as oe,r as se,u as ce}from"./telemetry-BVzuNdvW.js";import{r as le}from"./feature-flags-ByMXaIc4.js";import{c as ue,h as de,i as fe,l as pe}from"./tray-runtime-config-D7cmCcHJ.js";import{i as me,t as he}from"./tray-follower-status-BAjnN7Ar.js";import{a as ge,o as _e,r as ve,s as ye}from"./main-DjAHuk3R.js";import{n as be}from"./src-BWaKqLvQ.js";import{t as xe}from"./permissions-surface-registry-CilCRwhh.js";import{t as C}from"./types-idfTVsM8.js";import{t as Se}from"./html-B_Hg2WOy.js";import{n as Ce,r as we}from"./hid-device-registry-B2R-0rNt.js";import"./browser-DGwroBSO.js";import{a as Te,i as Ee}from"./serial-port-registry-CCqklAEr.js";import{C as De,D as Oe,E as ke,S as Ae,_ as je,a as Me,g as Ne,h as Pe,k as Fe,l as Ie,m as Le,n as Re,o as ze,s as Be,w as Ve,x as He,y as Ue}from"./usb-operations-BBXJ4GF8.js";import{i as We,r as Ge}from"./usb-device-registry-CRsCisej.js";import{t as Ke}from"./icons-ZLR7gmJ4.js";import{n as qe,r as Je}from"./tray-leader-Mq6HIneb.js";import{a as Ye,c as w,d as Xe,i as Ze,l as Qe,n as $e,o as et,r as tt,s as nt,t as rt,u as T}from"./record-C0lt6kKE.js";import{n as it}from"./shared-B9N4MZd0.js";import{C as at,E as ot,G as st,J as ct,S as lt,U as ut,W as dt,_ as ft,a as pt,b as mt,d as ht,f as gt,g as _t,h as vt,i as yt,k as bt,m as xt,n as St,o as Ct,p as wt,r as Tt,t as Et,v as Dt,x as Ot,y as kt}from"./wc-shell-B7yZ6nn6.js";import{i as At,n as jt,r as Mt}from"./sprinkle-renderer-C9L5ZRvl.js";import{n as Nt}from"./sprinkle-bridge-e00Na2NA.js";import{a as Pt,n as Ft,r as It}from"./theme-CXRqxpw6.js";import{a as Lt,c as Rt,f as zt,i as Bt,l as Vt,m as Ht,n as Ut,o as E,p as Wt,r as Gt,s as Kt,t as qt,u as Jt}from"./wc-unit-context-oCIU0KAf.js";var Yt=`agent-sessions`,Xt=1,D=`sessions`;function Zt(){return new Promise((e,t)=>{let n=indexedDB.open(Yt,Xt);n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(D)||e.createObjectStore(D,{keyPath:`id`})},n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)})}var Qt=class{dbPromise=null;getDB(){return this.dbPromise||=Zt().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(D,`readwrite`).objectStore(D).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(D,`readonly`).objectStore(D).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(D,`readwrite`).objectStore(D).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(D,`readonly`).objectStore(D).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(D,`readonly`).objectStore(D).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(D,`readwrite`).objectStore(D).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()}}},$t=e({SessionStore:()=>rn}),en=`browser-coding-agent`,tn=1,O=`sessions`;function nn(){return new Promise((e,t)=>{let n=indexedDB.open(en,tn);n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(O)||e.createObjectStore(O,{keyPath:`id`})},n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)})}var rn=class{db=null;async init(){await this.getDb()}async getDb(){if(!this.db){let e=await nn();e.onversionchange=()=>{e.close(),this.db=null},e.onclose=()=>{this.db=null},this.db=e}return this.db}async save(e){let t=await this.getDb();return new Promise((n,r)=>{let i=t.transaction(O,`readwrite`);i.objectStore(O).put(e),i.oncomplete=()=>n(),i.onerror=()=>r(i.error)})}async load(e){let t=await this.getDb();return new Promise((n,r)=>{let i=t.transaction(O,`readonly`).objectStore(O).get(e);i.onsuccess=()=>n(i.result??null),i.onerror=()=>r(i.error)})}async list(){let e=await this.getDb();return new Promise((t,n)=>{let r=e.transaction(O,`readonly`).objectStore(O).getAll();r.onsuccess=()=>{t(r.result.sort((e,t)=>t.updatedAt-e.updatedAt).map(e=>e.id))},r.onerror=()=>n(r.error)})}async delete(e){let t=await this.getDb();return new Promise((n,r)=>{let i=t.transaction(O,`readwrite`);i.objectStore(O).delete(e),i.oncomplete=()=>n(),i.onerror=()=>r(i.error)})}async saveMessages(e,t){let n=await this.load(e),r=n?{...n,messages:t,updatedAt:Date.now()}:{id:e,messages:t,createdAt:Date.now(),updatedAt:Date.now()};await this.save(r)}},an=e({getTranscriptExportService:()=>sn,registerTranscriptExportService:()=>on}),k=null;function on(e){return k=e,()=>{k===e&&(k=null)}}function sn(){if(!k)throw new v(`session-not-found`);return k}var cn=e({broadcastToDips:()=>Tn,disposeDips:()=>Kn,handleDipPickerAction:()=>qn,hydrateDips:()=>Gn,mountDip:()=>P,setDipExecHandler:()=>Dn}),ln=ee();async function un(e,t){if(t?.aborted)throw new DOMException(`aborted`,`AbortError`);let n=await pn(e,!0,t);if(t?.aborted)throw new DOMException(`aborted`,`AbortError`);if(n===null)throw Error(`VFS read failed: ${e}`);return typeof n==`string`?n:new TextDecoder().decode(n)}var dn=null;function fn(){if(dn)return dn;if(typeof BroadcastChannel>`u`)return null;try{dn=new BroadcastChannel(`preview-vfs`)}catch{return null}return dn}async function pn(e,t,n){let r=fn();if(!r)return null;let i=`dip-${Date.now()}-${Math.random().toString(36).slice(2)}`;return new Promise(a=>{let o=!1,s=()=>{r.removeEventListener(`message`,c),n?.removeEventListener(`abort`,l)},c=e=>{if(!o&&e.data?.type===`preview-vfs-response`&&e.data.id===i){if(o=!0,s(),e.data.error){a(null);return}a(e.data.content??null)}},l=()=>{o||(o=!0,s(),a(null))};r.addEventListener(`message`,c),n?.addEventListener(`abort`,l),setTimeout(()=>{o||(o=!0,s(),a(null))},5e3),r.postMessage({type:`preview-vfs-read`,id:i,path:e,asText:t})})}var mn=[`/shared/sprinkles/`,`/workspace/skills/sprinkles/`,`/workspace/sprinkles/`],hn=[`/shared/`,`/workspace/skills/sprinkles/`,`/workspace/sprinkles/`];function gn(e){return mn.some(t=>e.startsWith(t))}function _n(e){return typeof e!=`string`||!e.startsWith(`/`)||e.includes(`..`)?!1:hn.some(t=>e.startsWith(t))}var A=new WeakSet,vn=`,
3
+ exec: Object.assign(function(cmd) {
4
+ return _vfsCall('dip-exec', { cmd: cmd }, function(m) { return m.result; });
5
+ }, { spawn: function(argv) {
6
+ return _vfsCall('dip-jsh', { op: 'spawn', args: [argv] }, function(m) { return m.result; });
7
+ } }),
8
+ agent: function(prompt, opts) {
9
+ return _vfsCall('dip-agent', { prompt: prompt, opts: opts || null },
10
+ function(m) { return m.result; });
11
+ }`,yn=`,
12
+ fetch: function(url, init) {
13
+ return _vfsCall('dip-jsh', { op: 'fetch', args: [url, init || null] }, function(m) { return m.result; });
14
+ },
15
+ http: { client: function(cfg) {
16
+ function mk(method) { return function(path, opts) { return _vfsCall('dip-jsh', { op: 'http', args: [cfg, method, path, opts || null] }, function(m) { return m.result; }); }; }
17
+ return { get: mk('get'), post: mk('post'), put: mk('put'), patch: mk('patch'), 'delete': mk('delete') };
18
+ } },
19
+ browser: {
20
+ findTab: function(q) { return _vfsCall('dip-jsh', { op: 'browser', args: ['findTab', q] }, function(m) { return m.result; }); },
21
+ ensureTab: function(url, options) { return _vfsCall('dip-jsh', { op: 'browser', args: ['ensureTab', url, options || {}] }, function(m) { return m.result; }); },
22
+ eval: function(tab, code) { return _vfsCall('dip-jsh', { op: 'browser', args: ['eval', tab, code] }, function(m) { return m.result; }); },
23
+ evalAsync: function(tab, code) { return _vfsCall('dip-jsh', { op: 'browser', args: ['evalAsync', tab, code] }, function(m) { return m.result; }); },
24
+ cookie: function(tab, name) { return _vfsCall('dip-jsh', { op: 'browser', args: ['cookie', tab, name] }, function(m) { return m.result; }); },
25
+ localStorage: function(tab, key) { return _vfsCall('dip-jsh', { op: 'browser', args: ['localStorage', tab, key] }, function(m) { return m.result; }); },
26
+ fetch: function(tab, url, opts) { return _vfsCall('dip-jsh', { op: 'browser', args: ['fetch', tab, url, opts || {}] }, function(m) { return m.result; }); }
27
+ },
28
+ fetchToFile: function(url, path) {
29
+ return _vfsCall('dip-jsh', { op: 'fetchToFile', args: [url, path] }, function(m) { return m.result; });
30
+ }`,bn=`,
31
+ _device: function(channel, op, args) {
32
+ return _vfsCall('dip-device-op',
33
+ { channel: channel, op: op, args: args || [] },
34
+ function(m) { return m.result; });
35
+ },
36
+ hid: {
37
+ list: function() { return _vfsCall('dip-device-op', { channel: 'hid', op: 'list', args: [] }, function(m) { return m.result; }); },
38
+ request: function(filters) { return _vfsCall('dip-device-op', { channel: 'hid', op: 'request', args: [filters || []] }, function(m) { return m.result; }); },
39
+ open: function(handle) { return _vfsCall('dip-device-op', { channel: 'hid', op: 'open', args: [handle] }, function(m) { return m.result; }).then(function() {}); },
40
+ close: function(handle) { return _vfsCall('dip-device-op', { channel: 'hid', op: 'close', args: [handle] }, function(m) { return m.result; }).then(function() {}); },
41
+ sendReport: function(handle, reportId, data) { return _vfsCall('dip-device-op', { channel: 'hid', op: 'sendReport', args: [handle, reportId, data] }, function(m) { return m.result; }).then(function() {}); },
42
+ on: function(event, cb) { if (event === 'inputreport') _hidInputReportListeners.add(cb); },
43
+ off: function(event, cb) { if (event === 'inputreport') _hidInputReportListeners.delete(cb); }
44
+ },
45
+ serial: {
46
+ list: function() { return _vfsCall('dip-device-op', { channel: 'serial', op: 'list', args: [] }, function(m) { return m.result; }); },
47
+ request: function(filters) { return _vfsCall('dip-device-op', { channel: 'serial', op: 'request', args: [filters || []] }, function(m) { return m.result; }); },
48
+ open: function(handle, options) { return _vfsCall('dip-device-op', { channel: 'serial', op: 'open', args: [handle, options] }, function(m) { return m.result; }).then(function() {}); },
49
+ close: function(handle) { return _vfsCall('dip-device-op', { channel: 'serial', op: 'close', args: [handle] }, function(m) { return m.result; }).then(function() {}); }
50
+ },
51
+ usb: {
52
+ list: function() { return _vfsCall('dip-device-op', { channel: 'usb', op: 'list', args: [] }, function(m) { return m.result; }); },
53
+ request: function(filters) { return _vfsCall('dip-device-op', { channel: 'usb', op: 'request', args: [filters || []] }, function(m) { return m.result; }); },
54
+ open: function(handle) { return _vfsCall('dip-device-op', { channel: 'usb', op: 'open', args: [handle] }, function(m) { return m.result; }).then(function() {}); },
55
+ close: function(handle) { return _vfsCall('dip-device-op', { channel: 'usb', op: 'close', args: [handle] }, function(m) { return m.result; }).then(function() {}); }
56
+ }`;function xn(e){return`(function() {
57
+ var _cbId = 0;
58
+ var _callbacks = {};
59
+ var _hidInputReportListeners = new Set();
60
+
61
+ function _vfsCall(type, params, extractResult) {
62
+ return new Promise(function(resolve, reject) {
63
+ var id = ++_cbId;
64
+ _callbacks[id] = function(msg) {
65
+ if (msg.error) reject(new Error(msg.error));
66
+ else resolve(extractResult ? extractResult(msg) : undefined);
67
+ };
68
+ var m = { type: type, id: id };
69
+ if (params) { for (var k in params) m[k] = params[k]; }
70
+ parent.postMessage(m, '*');
71
+ });
72
+ }
73
+
74
+ window.slicc = window.bridge = {
75
+ lick: function(event) {
76
+ var action = typeof event === 'string' ? event : event.action;
77
+ var data = typeof event === 'string' ? undefined : ('data' in event ? event.data : event);
78
+ parent.postMessage({ type: 'dip-lick', action: action, data: data }, '*');
79
+ },
80
+ /* Read-only VFS access. Mirrors the sprinkle bridge so dips can
81
+ check onboarding markers, profiles, etc. without a parent-side
82
+ handshake. */
83
+ readFile: function(path) {
84
+ return _vfsCall('dip-readfile', { path: path }, function(m) { return m.content; });
85
+ },
86
+ exists: function(path) {
87
+ return _vfsCall('dip-exists', { path: path }, function(m) { return m.exists; });
88
+ },
89
+ stat: function(path) {
90
+ return _vfsCall('dip-stat', { path: path }, function(m) { return m.stat; });
91
+ }${e?vn:``}${e?yn:``}${e?bn:``}
92
+ };
93
+ function reportHeight() {
94
+ parent.postMessage({ type: 'dip-height',
95
+ height: document.documentElement.scrollHeight }, '*');
96
+ }
97
+ window.addEventListener('message', function(e) {
98
+ if (!e.data || typeof e.data.type !== 'string') return;
99
+ if (e.data.type === 'slicc-theme') {
100
+ document.documentElement.classList.toggle('theme-light', !!e.data.isLight);
101
+ return;
102
+ }
103
+ /* Pushed device events (currently 'hid:inputreport'). The host
104
+ attaches the underlying listener on slicc.hid.open(handle) for
105
+ this dip; teardown happens automatically on dispose. */
106
+ if (e.data.type === 'dip-device-event' && e.data.channel === 'hid:inputreport') {
107
+ _hidInputReportListeners.forEach(function(cb) {
108
+ try { cb(e.data.payload); } catch(ex) {}
109
+ });
110
+ return;
111
+ }
112
+ /* VFS callback responses target the originating call by id. */
113
+ if (e.data.id && _callbacks[e.data.id]) {
114
+ var cb = _callbacks[e.data.id];
115
+ delete _callbacks[e.data.id];
116
+ cb(e.data);
117
+ return;
118
+ }
119
+ /* Forward any other slicc-* message to in-page listeners via a
120
+ CustomEvent. Dips can opt in with
121
+ window.addEventListener('slicc-message', (ev) => ev.detail). */
122
+ if (e.data.type.indexOf('slicc-') === 0) {
123
+ try {
124
+ document.dispatchEvent(new CustomEvent('slicc-message', { detail: e.data }));
125
+ } catch (ex) {}
126
+ }
127
+ });
128
+ window.addEventListener('load', function() {
129
+ reportHeight();
130
+ new ResizeObserver(reportHeight).observe(document.body);
131
+ });
132
+ /* Support data-action attributes (Tool UI compat) — auto-lick on click.
133
+ Also intercept <a href> clicks and relay to the parent so links open
134
+ despite the iframe sandbox blocking top-level navigation. */
135
+ document.addEventListener('click', function(e) {
136
+ var el = e.target;
137
+ while (el && el !== document.body) {
138
+ if (el.dataset && el.dataset.action) {
139
+ var actionData = el.dataset.actionData;
140
+ if (actionData) { try { actionData = JSON.parse(actionData); } catch(ex) {} }
141
+ /* Picker hint (e.g. data-picker="directory") needs the parent to
142
+ run File System Access API on the click activation chain.
143
+ Forward as a separate message so the parent can run
144
+ showDirectoryPicker, stash the handle in IDB, then dispatch
145
+ the lick with the IDB key. */
146
+ var picker = el.dataset.picker;
147
+ if (picker) {
148
+ parent.postMessage({
149
+ type: 'dip-picker-action',
150
+ action: el.dataset.action,
151
+ data: actionData || null,
152
+ picker: picker,
153
+ }, '*');
154
+ } else {
155
+ window.slicc.lick({ action: el.dataset.action, data: actionData || null });
156
+ }
157
+ e.preventDefault();
158
+ e.stopPropagation();
159
+ return;
160
+ }
161
+ if (el.tagName === 'A' && el.getAttribute('href')) {
162
+ var href = el.getAttribute('href');
163
+ /* Allow in-iframe anchor navigation (#foo). Skip javascript: for safety. */
164
+ if (href.charAt(0) === '#') return;
165
+ if (/^javascript:/i.test(href)) { e.preventDefault(); return; }
166
+ /* Resolve relative URLs against the iframe's base. */
167
+ var resolved;
168
+ try { resolved = new URL(href, document.baseURI).href; } catch(ex) { resolved = href; }
169
+ parent.postMessage({ type: 'dip-open-link', url: resolved }, '*');
170
+ e.preventDefault();
171
+ e.stopPropagation();
172
+ return;
173
+ }
174
+ el = el.parentElement;
175
+ }
176
+ });
177
+ })();`}var Sn=`html,body{margin:0;padding:0;overflow:hidden;background:transparent;box-sizing:border-box}
178
+ *,*::before,*::after{box-sizing:inherit}
179
+ /* Vertical breathing room around dip content. Horizontal padding is owned
180
+ by the dip's own content (e.g. .sprinkle-action-card__body) so shtml
181
+ widgets that already pad themselves don't end up double-indented. The
182
+ ResizeObserver on document.body reports the post-padding scrollHeight
183
+ correctly, so auto-height continues to work. The .sprinkle-inline rule
184
+ (set on the iframe body) carries 2px of horizontal padding so the 1px
185
+ focus ring (box-shadow:0 0 0 1px on inputs/select below) doesn't get
186
+ clipped at the iframe paint boundary. */
187
+ body{padding:12px 0;font-family:var(--s2-font-family, sans-serif);font-size:13px;color:var(--s2-content-default)}
188
+ .sprinkle-inline{padding:var(--s2-spacing-100) 2px}
189
+ .sprinkle-inline .sprinkle-btn{padding:4px 12px;font-size:12px;height:28px;box-shadow:none}
190
+ .sprinkle-inline .sprinkle-btn:not([class*="sprinkle-btn--"]){background:var(--s2-bg-elevated)}
191
+ .sprinkle-inline .sprinkle-card{box-shadow:none;margin:0}
192
+ .sprinkle-inline .sprinkle-action-card{margin:0;width:100%}
193
+ .sprinkle-inline .sprinkle-action-card .sprinkle-table{width:100%}
194
+ .sprinkle-inline .sprinkle-grid{width:100%}
195
+ input[type="range"]{width:100%;height:4px;-webkit-appearance:none;appearance:none;background:var(--s2-gray-300);border-radius:2px;outline:none;cursor:default}
196
+ input[type="range"]::-webkit-slider-thumb{-webkit-appearance:none;width:18px;height:18px;border-radius:50%;background:var(--s2-accent);cursor:default;border:2px solid var(--s2-bg-base)}
197
+ input[type="range"]::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--s2-accent);cursor:default;border:2px solid var(--s2-bg-base)}
198
+ input[type="text"],input[type="number"],textarea{width:100%;padding:7px 12px;font-size:13px;font-family:var(--s2-font-family,sans-serif);color:var(--s2-content-default);background:var(--s2-bg-layer-2);border:1px solid var(--s2-border-subtle,var(--s2-gray-300));border-radius:8px;outline:none;box-sizing:border-box}
199
+ input[type="text"]:focus,input[type="number"]:focus,textarea:focus{border-color:var(--s2-accent);box-shadow:0 0 0 1px var(--s2-accent)}
200
+ input[type="text"]::placeholder,textarea::placeholder{color:var(--s2-content-disabled,var(--s2-gray-400))}
201
+ select{padding:6px 12px;font-size:13px;font-family:var(--s2-font-family,sans-serif);color:var(--s2-content-default);background:var(--s2-bg-layer-2);border:1px solid var(--s2-border-subtle,var(--s2-gray-300));border-radius:8px;outline:none;cursor:default}
202
+ select:focus{border-color:var(--s2-accent);box-shadow:0 0 0 1px var(--s2-accent)}
203
+ button{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:28px;padding:4px 12px;border:1px solid var(--s2-border-default,var(--s2-gray-300));border-radius:9999px;background:transparent;color:var(--s2-content-default);font-size:12px;font-weight:700;font-family:var(--s2-font-family,sans-serif);cursor:default;transition:background 130ms ease}
204
+ button:hover{background:color-mix(in srgb,var(--s2-content-default) 6%,transparent)}
205
+ button:disabled{opacity:0.4;pointer-events:none}
206
+ canvas{display:block;width:100%;border-radius:8px}
207
+ mark{background:color-mix(in srgb,var(--s2-accent) 25%,transparent);color:inherit;border-radius:2px;padding:0 2px}
208
+ .c-purple{background:#3C3489;color:#EEEDFE}.c-teal{background:#085041;color:#E1F5EE}
209
+ .c-coral{background:#712B13;color:#FAECE7}.c-pink{background:#72243E;color:#FBEAF0}
210
+ .c-gray{background:#444441;color:#F1EFE8}.c-blue{background:#0C447C;color:#E6F1FB}
211
+ .c-amber{background:#633806;color:#FAEEDA}.c-red{background:#791F1F;color:#FCEBEB}
212
+ .c-green{background:#27500A;color:#EAF3DE}`,Cn=`(function(){
213
+ window.addEventListener('message', function(e){
214
+ if (!e.data || e.data.type !== 'dip-draft-update') return;
215
+ var content = typeof e.data.content === 'string' ? e.data.content : '';
216
+ document.body.innerHTML = content;
217
+ if (window.lucide && typeof window.lucide.createIcons === 'function') {
218
+ try { window.lucide.createIcons(); } catch(ex){}
219
+ }
220
+ });
221
+ })();`;function wn(e,t,n=!1){let r=jt(),i=Ft()?` class="theme-light"`:``,a=t||e.includes(`<slicc-editor`),o=t||e.includes(`<slicc-diff`),s=t?`<script>${Cn}<\/script>`:``;return`<!DOCTYPE html>
222
+ <html${i}><head>
223
+ <meta charset="utf-8">
224
+ <style>${r}</style>
225
+ <style>${Sn}</style>
226
+ <script>${xn(n&&!t)}<\/script>
227
+ ${s}
228
+ ${a?`<script src="/slicc-editor.js"><\/script>`:``}
229
+ ${o?`<script src="/slicc-diff.js"><\/script>`:``}
230
+ <script src="/lucide-icons.js"><\/script>
231
+ </head>
232
+ <body class="sprinkle-inline">${e}</body></html>`}var j=new Set;function Tn(e){if(typeof e?.type!=`string`||e.type.indexOf(`slicc-`)!==0)throw Error(`broadcastToDips: payload.type must start with 'slicc-'`);for(let t of j)try{t.postMessage(e,`*`)}catch{}}var En;function Dn(e){En=e}function M(e){return e.length===0?`''`:`'${e.replace(/'/g,`'\\''`)}'`}function On(e,t){let n=t?.cwd??`.`,r=t?.allowedCommands??`*`,i=[`agent`];return t?.model&&i.push(`--model`,M(t.model)),t?.thinking&&i.push(`--thinking`,M(t.thinking)),t?.readOnly&&i.push(`--read-only`,M(t.readOnly)),i.push(M(n),M(r),M(e)),i.join(` `)}async function kn(e){if(!En)return{stdout:``,stderr:`exec: shell bridge not available
233
+ `,exitCode:127};try{return await En(e)}catch(e){return{stdout:``,stderr:`exec: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}}async function An(e,t){let n=await kn(On(e,t));return{stdout:n.stdout||n.stderr,exitCode:n.exitCode}}async function jn(e,t){let n=await Nt(kn,e,t);if(e===`fetch`){let e=n,t=atob(e.bodyBase64),r=new Uint8Array(t.length);for(let e=0;e<t.length;e++)r[e]=t.charCodeAt(e);return{...e,body:new TextDecoder(`utf-8`).decode(r)}}return n}var N=new WeakMap;function Mn(e,t){try{e.postMessage({type:`dip-device-event`,channel:`hid:inputreport`,payload:t},`*`)}catch{}}async function Nn(e,t){let n=N.get(e);if(n||(n=new Map,N.set(e,n)),n.has(t))return;let r=await Ae(we(),t,n=>{let r=n.bytes instanceof Uint8Array?n.bytes:new Uint8Array(n.bytes);Mn(e,{handle:t,reportId:n.reportId,data:r})});n.set(t,r)}async function Pn(e,t){let n=N.get(e);if(!n)return;let r=n.get(t);if(r){n.delete(t);try{await Promise.resolve(r())}catch{}}n.size===0&&N.delete(e)}function Fn(e){let t=N.get(e);if(t){for(let e of t.values())try{Promise.resolve(e()).catch(()=>{})}catch{}N.delete(e)}}function In(e){if(e instanceof Uint8Array)return e;if(e instanceof ArrayBuffer)return new Uint8Array(e);if(ArrayBuffer.isView(e)){let t=e;return new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}if(Array.isArray(e))return new Uint8Array(e);throw Error(`expected Uint8Array, ArrayBuffer, or number[]`)}async function Ln(e,t,n){let r=we();switch(t){case`list`:{let e=Ce();if(!e)throw Error(`WebHID is unavailable in this browser`);return Ne(r,e)}case`request`:{let e=Ce();if(!e)throw Error(`WebHID is unavailable in this browser`);return Ue(r,e,n[0]??[])}case`info`:return Pe(r,n[0]);case`open`:{let t=n[0];return await je(r,t),await Nn(e,t),{ok:!0}}case`close`:{let t=n[0];return await Pn(e,t),await Le(r,t),{ok:!0}}case`sendReport`:{let e=n[0],t=n[1],i=In(n[2]),a=i.buffer.slice(i.byteOffset,i.byteOffset+i.byteLength);return await He(r,e,t,a),{ok:!0}}default:throw Error(`hid: unknown op '${t}'`)}}async function Rn(e,t){let n=Te();switch(e){case`list`:{let e=Ee();if(!e)throw Error(`Web Serial is unavailable in this browser`);return ke(n,e)}case`request`:{let e=Ee();if(!e)throw Error(`Web Serial is unavailable in this browser`);return Fe(n,e,t[0]??[])}case`info`:return Ve(n,t[0]);case`open`:{let e=t[0],r=t[1]??{baudRate:9600};return await Oe(n,e,r),{ok:!0}}case`close`:return await De(n,t[0]),{ok:!0};default:throw Error(`serial: unknown op '${e}'`)}}async function zn(e,t){let n=We();switch(e){case`list`:{let e=Ge();if(!e)throw Error(`WebUSB is unavailable in this browser`);return ze(n,e)}case`request`:{let e=Ge();if(!e)throw Error(`WebUSB is unavailable in this browser`);return Ie(n,e,t[0]??[])}case`info`:return Me(n,t[0]);case`open`:return await Be(n,t[0]),{ok:!0};case`close`:return await Re(n,t[0]),{ok:!0};default:throw Error(`usb: unknown op '${e}'`)}}async function Bn(e,t,n,r){switch(t){case`hid`:return Ln(e,n,r);case`serial`:return Rn(n,r);case`usb`:return zn(n,r);default:throw Error(`unknown device channel '${t}'`)}}async function Vn(e,t){if(!e||typeof t.id!=`number`)return!1;let n=n=>{try{e.postMessage({...n,id:t.id},`*`)}catch{}};if(!A.has(e))return n({type:`dip-device-op-response`,error:`device access not allowed for this dip`}),!0;let r=t.channel;if(r!==`hid`&&r!==`serial`&&r!==`usb`)return n({type:`dip-device-op-response`,error:`unknown device channel '${r}'`}),!0;try{n({type:`dip-device-op-response`,result:await Bn(e,r,typeof t.op==`string`?t.op:``,Array.isArray(t.args)?t.args:[])})}catch(e){n({type:`dip-device-op-response`,error:e instanceof Error?e.message:String(e)})}return!0}async function Hn(e,t){if(!e||typeof t.id!=`number`)return!1;let n=n=>{try{e.postMessage({...n,id:t.id},`*`)}catch{}};if(!A.has(e))return n({type:`${t.type}-response`,error:`exec not allowed for this dip`}),!0;if(t.type===`dip-exec`)return n({type:`dip-exec-response`,result:await kn(typeof t.cmd==`string`?t.cmd:``)}),!0;if(t.type===`dip-agent`)return n({type:`dip-agent-response`,result:await An(typeof t.prompt==`string`?t.prompt:``,t.opts)}),!0;if(t.type===`dip-jsh`){try{n({type:`dip-jsh-response`,result:await jn(typeof t.op==`string`?t.op:``,Array.isArray(t.args)?t.args:[])})}catch(e){n({type:`dip-jsh-response`,error:e instanceof Error?e.message:String(e)})}return!0}return!1}function P(e,t,n,r=!1){let i=wn(t,!1,r);if(ln)return tr(e,i,n,r);let a=document.createElement(`iframe`);a.setAttribute(`sandbox`,`allow-scripts allow-same-origin`),a.style.cssText=`width:100%;border:none;overflow:hidden;display:block;`,a.srcdoc=i,e.appendChild(a),a.contentWindow&&(It(a.contentWindow),j.add(a.contentWindow),r&&A.add(a.contentWindow)),a.addEventListener(`load`,()=>{It(a.contentWindow),a.contentWindow&&(j.add(a.contentWindow),r&&A.add(a.contentWindow)),Mt()&&At(a)},{once:!0});let o=e=>{if(e.source!==a.contentWindow)return;let t=e.data;t?.type&&(t.type===`dip-lick`?n(t.action,t.data):t.type===`dip-height`?a.style.height=t.height+`px`:t.type===`dip-open-link`?Wn(t.url):t.type===`dip-picker-action`?qn(t,n):t.type===`dip-readfile`||t.type===`dip-exists`||t.type===`dip-stat`?Un(a.contentWindow,t):t.type===`dip-exec`||t.type===`dip-agent`||t.type===`dip-jsh`?Hn(a.contentWindow,t):t.type===`dip-device-op`&&Vn(a.contentWindow,t))};window.addEventListener(`message`,o);let s=null;if(Mt()&&typeof IntersectionObserver<`u`){let e=!1,t=new IntersectionObserver(n=>{if(n[n.length-1].isIntersecting){if(e){e=!1;return}t.unobserve(a),At(a,()=>{e=!0,t.observe(a)})}});s=t,t.observe(a)}return{dispose(){s?.disconnect(),window.removeEventListener(`message`,o),Pt(a.contentWindow),a.contentWindow&&(j.delete(a.contentWindow),A.delete(a.contentWindow),Fn(a.contentWindow)),a.remove()}}}async function Un(e,t){if(!e||typeof t.id!=`number`)return!1;let n=typeof t.path==`string`?t.path:``,r=n=>{try{e.postMessage({...n,id:t.id},`*`)}catch{}};if(!A.has(e))return r({type:`${t.type}-response`,error:`VFS access not allowed for this dip`}),!0;if(!_n(n))return r({type:`${t.type}-response`,error:`VFS path not allowed: ${n}`}),!0;if(t.type===`dip-readfile`){let e=await pn(n,!0);return e===null?(r({type:`dip-readfile-response`,error:`Read failed`}),!0):(r({type:`dip-readfile-response`,content:typeof e==`string`?e:new TextDecoder().decode(e)}),!0)}if(t.type===`dip-exists`)return r({type:`dip-exists-response`,exists:await pn(n,!0)!==null}),!0;if(t.type===`dip-stat`){let e=await pn(n,!1);return e===null?(r({type:`dip-stat-response`,error:`Stat failed`}),!0):(r({type:`dip-stat-response`,stat:{isFile:!0,isDirectory:!1,size:typeof e==`string`?e.length:e.byteLength,mtimeMs:0}}),!0)}return!1}function Wn(e){if(!(typeof e!=`string`||!e)&&/^(https?:|mailto:)/i.test(e))try{window.open(e,`_blank`,`noopener,noreferrer`)}catch{}}function Gn(e,t){let n=[],r=e.querySelectorAll(`pre > code.language-shtml`);for(let e of r){let r=e.parentElement,i=e.textContent??``,a=document.createElement(`div`);a.className=`msg__dip`,r.replaceWith(a),n.push(P(a,i,t,!1))}let i=e.querySelectorAll(`img[src$=".shtml"]`);for(let e of i){let r=e.getAttribute(`src`);if(!r)continue;let i=document.createElement(`div`);i.className=`msg__dip`,e.alt&&i.setAttribute(`title`,e.alt),e.replaceWith(i);let a=new AbortController,o=null,s=!1;n.push({dispose(){s=!0,a.abort(),o&&=(o.dispose(),null)}});let c=r.startsWith(`/`),l=typeof navigator<`u`&&!!navigator.serviceWorker?.controller,u=c?`/preview${r}`:r,d=async()=>{if(c&&!l)return un(r,a.signal);let e;try{e=await fetch(u,{signal:a.signal})}catch(e){if(e?.name===`AbortError`)throw e;if(c)return un(r,a.signal);throw e}if(e.ok)return e.text();if(c)return un(r,a.signal);throw Error(`HTTP ${e.status}`)},f=c&&gn(r);d().then(e=>{s||!i.isConnected||(o=P(i,e,t,f))}).catch(e=>{s||e?.name===`AbortError`||(i.textContent=`Failed to load dip: ${r}`,i.style.cssText=`padding:8px;font-size:12px;color:var(--s2-negative);font-family:var(--s2-font-mono)`)})}return n}function Kn(e){for(let t of e)try{t.dispose()}catch{}e.length=0}async function qn(e,t){let n=e.data??null,r=Array.isArray(n?.filters)?n.filters:[];if(ln){await Jn(e.picker,e.action,r,t);return}switch(e.picker){case`directory`:await Zn(e.action,t);return;case`usb-device`:await Qn(e.action,r,t);return;case`serial-port`:await $n(e.action,r,t);return;case`hid-device`:await er(e.action,r,t);return;default:t(e.action,e.data);return}}async function Jn(e,t,n,r){try{switch(e){case`directory`:{let{openMountPickerPopup:e}=await l(async()=>{let{openMountPickerPopup:e}=await import(`./mount-picker-popup-Bc3ca2Vl.js`).then(e=>e.n);return{openMountPickerPopup:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8])),n=await e();n.cancelled?r(t,{cancelled:!0}):n.error?r(t,{error:n.error}):n.idbKey?r(t,{handleInIdb:!0,idbKey:n.idbKey,dirName:n.dirName??``}):r(t,{error:`mount picker returned no handle key`});return}case`usb-device`:{let{openUsbPickerPopup:e}=await l(async()=>{let{openUsbPickerPopup:e}=await import(`./usb-picker-KMes4Lyb.js`).then(e=>e.t);return{openUsbPickerPopup:e}},__vite__mapDeps([9,1,4,5,6,7,8])),i=await e(n);`cancelled`in i?r(t,{cancelled:!0}):`error`in i?r(t,{error:i.error}):r(t,{granted:!0,info:i.info});return}case`serial-port`:{let{openSerialPickerPopup:e}=await l(async()=>{let{openSerialPickerPopup:e}=await import(`./serial-picker-NxC1kxYI.js`).then(e=>e.t);return{openSerialPickerPopup:e}},__vite__mapDeps([10,1,4,5,6,7,8])),i=await e(n);`cancelled`in i?r(t,{cancelled:!0}):`error`in i?r(t,{error:i.error}):r(t,{granted:!0,info:i.info});return}case`hid-device`:{let{openHidPickerPopup:e}=await l(async()=>{let{openHidPickerPopup:e}=await import(`./hid-picker-JPu5knyb.js`).then(e=>e.t);return{openHidPickerPopup:e}},__vite__mapDeps([11,1,4,5,6,7,8])),i=await e(n);`cancelled`in i?r(t,{cancelled:!0}):`error`in i?r(t,{error:i.error}):r(t,{granted:!0,info:i.info});return}default:r(t,{error:`unknown picker kind: ${e??`(none)`}`});return}}catch(e){r(t,{error:e instanceof Error?e.message:String(e)})}}async function Yn(e,t){let n=xe();if(!n)return null;let r={current:null},i=t=>{let n=t.detail;n.kind===e&&(r.current=n)};n.addEventListener(`slicc-permission-deny`,i);try{let i=await n.request(e,t);if(i)return{ok:!0,grant:i};let a=r.current;return{ok:!1,reason:a?.reason??`error`,...a?.message?{message:a.message}:{}}}finally{n.removeEventListener(`slicc-permission-deny`,i)}}function Xn(e,t,n,r){if(t.reason===`cancelled`){r(e,{cancelled:!0});return}if(t.reason===`unavailable`){r(e,{error:n});return}r(e,{error:t.message??`unknown error`})}async function Zn(e,t){let n=await Yn(`filesystem`);if(!n){t(e,{error:`File System Access API not available`});return}if(!n.ok){Xn(e,n,`File System Access API not available`,t);return}let r=n.grant.handle,i=`pendingMount:dip-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`;try{let{storePendingHandle:e}=await l(async()=>{let{storePendingHandle:e}=await import(`./mount-picker-popup-Bc3ca2Vl.js`).then(e=>e.n);return{storePendingHandle:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8]));await e(i,r)}catch(n){t(e,{error:`failed to store directory handle: ${n instanceof Error?n.message:String(n)}`});return}t(e,{handleInIdb:!0,idbKey:i,dirName:r.name})}async function Qn(e,t,n){let r=await Yn(`usb`,{filters:t});if(!r){n(e,{error:`WebUSB is not available`});return}if(!r.ok){Xn(e,r,`WebUSB is not available`,n);return}let i=r.grant,{getSharedUsbRegistry:a,deviceToInfo:o}=await l(async()=>{let{getSharedUsbRegistry:e,deviceToInfo:t}=await import(`./usb-device-registry-CRsCisej.js`).then(e=>e.a);return{getSharedUsbRegistry:e,deviceToInfo:t}},__vite__mapDeps([12,1])),s=a().register(i.device);n(e,{granted:!0,handle:s,info:o(s,i.device)})}async function $n(e,t,n){let r=await Yn(`serial`,t.length?{filters:t}:void 0);if(!r){n(e,{error:`Web Serial is not available`});return}if(!r.ok){Xn(e,r,`Web Serial is not available`,n);return}let i=r.grant,a=await l(()=>import(`./serial-port-registry-CCqklAEr.js`).then(e=>e.o),__vite__mapDeps([13,1])),o=a.getSharedSerialRegistry(),s=o.register(i.port),c=o.get(s);n(e,{granted:!0,handle:s,info:c?a.deviceToInfo(s,c):{handle:s}})}async function er(e,t,n){let r=await Yn(`hid`,{filters:t});if(!r){n(e,{error:`WebHID is not available`});return}if(!r.ok){Xn(e,r,`WebHID is not available`,n);return}let i=r.grant,{getSharedHidRegistry:a,hidDeviceToInfo:o}=await l(async()=>{let{getSharedHidRegistry:e,hidDeviceToInfo:t}=await import(`./hid-device-registry-B2R-0rNt.js`).then(e=>e.a);return{getSharedHidRegistry:e,hidDeviceToInfo:t}},__vite__mapDeps([14,1])),s=a(),c=i.devices.map(e=>{let t=s.register(e);return o(t,e)}),u=c[0];n(e,{granted:!0,handle:u.handle,info:u,devices:c})}function tr(e,t,n,r=!1){let i=document.createElement(`iframe`);i.src=chrome.runtime.getURL(`sprinkle-sandbox.html`),i.style.cssText=`width:100%;border:none;overflow:hidden;display:block;`,e.appendChild(i);let a=e=>{if(e.source!==i.contentWindow)return;let t=e.data;t?.type&&(t.type===`dip-lick`?n(t.action,t.data):t.type===`dip-height`?i.style.height=t.height+`px`:t.type===`dip-open-link`?Wn(t.url):t.type===`dip-readfile`||t.type===`dip-exists`||t.type===`dip-stat`?Un(i.contentWindow,t):t.type===`dip-exec`||t.type===`dip-agent`||t.type===`dip-jsh`?Hn(i.contentWindow,t):t.type===`dip-device-op`?Vn(i.contentWindow,t):t.type===`dip-picker-action`&&qn(t,n))};return window.addEventListener(`message`,a),i.addEventListener(`load`,()=>{It(i.contentWindow),i.contentWindow&&(j.add(i.contentWindow),r&&A.add(i.contentWindow)),i.contentWindow?.postMessage({type:`dip-render`,srcdoc:t,isLight:Ft()},`*`)},{once:!0}),{dispose(){window.removeEventListener(`message`,a),Pt(i.contentWindow),i.contentWindow&&(j.delete(i.contentWindow),A.delete(i.contentWindow),Fn(i.contentWindow)),i.remove()}}}var nr=`---
234
+ writablePaths:
235
+ - /workspace/CLAUDE.md
236
+ visiblePaths:
237
+ - /sessions/
238
+ - /shared/
239
+ - /workspace/
240
+ allowedCommands:
241
+ - awk
242
+ - cat
243
+ - cp
244
+ - cut
245
+ - echo
246
+ - file
247
+ - find
248
+ - grep
249
+ - head
250
+ - jq # structured reads of JSON stores such as /shared/loose-ends.json
251
+ - ls
252
+ - mkdir
253
+ - mv
254
+ - od # read-only byte inspection of corrupted stores
255
+ - printf
256
+ - rg # recursive, .gitignore-aware search; what the curator actually uses over find|xargs grep
257
+ - sed
258
+ - sort
259
+ - tail
260
+ - tr
261
+ - uniq
262
+ - upskill
263
+ - wc
264
+ timeoutSeconds: 1200
265
+ thinkingLevel: medium
266
+ ---
267
+
268
+ # Memory curator
269
+
270
+ Curate the durable memory for session {{SESSION_COUNT}}. Today's date is {{TODAY}}.
271
+
272
+ **Work fast: a full pass should finish in well under 10 minutes.** The run is hard-stopped at 20 minutes, and your rewrite only lands if the pass completes — a killed run is discarded wholesale. So mine the three signals, rewrite the file, compact it in the same pass, and stop, rather than exploring the archive exhaustively.
273
+
274
+ Read the entire current memory at {{MEMORY_PATH}} if it exists. Then mine the archived session at {{SESSION_ARCHIVE_PATH}} using the reading recipes below. Rewrite the entire {{MEMORY_PATH}} file with the durable information worth carrying into future sessions. Every part of the file is editable and counts toward the budget.
275
+
276
+ ## What to look for
277
+
278
+ Three things carry across sessions, and each has its own place in the archive:
279
+
280
+ | Look for | Where it lives |
281
+ | --------------- | ---------------------------------------------------------------------- |
282
+ | **Preferences** | the user's own messages — how they want things done, and what to avoid |
283
+ | **Projects** | tool-call arguments — the paths, repos and files actually worked on |
284
+ | **Pitfalls** | failed tool calls — what broke, and the error that proves it |
285
+
286
+ Pitfalls are the highest-value and most-often-lost category: a failure that cost half an hour is worth one line next time. Keep the error text that identifies it, not the stack trace.
287
+
288
+ ## Reading the session archive
289
+
290
+ **Never \`cat\` the archive and never \`head\` it.** Archives reach several megabytes, and the machine-readable \`<!-- slicc:session-data ... -->\` block is a _single line_ holding the whole session as JSON — roughly half the file. Reading it costs a fortune and tells you nothing the prose below it does not. Whole \`### Tool\` result bodies are the other half and are equally not worth reading.
291
+
292
+ Check the size first, then pull the three signals separately. Together they run about 1% of the archive, so these work on a 2.5 MB file as happily as on a small one.
293
+
294
+ \`\`\`bash
295
+ wc -c {{SESSION_ARCHIVE_PATH}}
296
+
297
+ # Preferences — what the user asked for, in their words.
298
+ sed '/^<!-- slicc:session-data$/,/^-->$/d' {{SESSION_ARCHIVE_PATH}} \\
299
+ | awk '/^## User/{p=1;next} /^## (Assistant|Summary)/{p=0} /^### Tool/{p=0} p'
300
+
301
+ # Projects — the paths touched most, which name the work.
302
+ sed '/^<!-- slicc:session-data$/,/^-->$/d' {{SESSION_ARCHIVE_PATH}} \\
303
+ | grep -o '/[A-Za-z0-9_][A-Za-z0-9_./-]\\{3,\\}' \\
304
+ | sort | uniq -c | sort -rn | head -40
305
+
306
+ # Pitfalls — failed calls with the input that caused them.
307
+ sed '/^<!-- slicc:session-data$/,/^-->$/d' {{SESSION_ARCHIVE_PATH}} \\
308
+ | grep -B6 '^Result:.*\\(rror\\|not found\\|failed\\|denied\\|ENOENT\\|fatal\\)' \\
309
+ | cut -c1-200
310
+ \`\`\`
311
+
312
+ Only if something is still missing, reach into one specific block with \`grep -n\` plus a bounded \`sed -n 'START,ENDp'\`. Never widen these to the whole file.
313
+
314
+ ## Suggesting a skill
315
+
316
+ A recurring pitfall is often a missing skill. Once you know what broke and what the work was, spend **one** lookup on it — no more, and skip it entirely when the session had no failures:
317
+
318
+ \`\`\`bash
319
+ upskill search <a few words from the pitfall>
320
+ upskill list # what is already installed — never suggest a duplicate
321
+ \`\`\`
322
+
323
+ \`upskill ai-ecoverse/skills\` and \`upskill adobe/skills\` list a repo's skills without installing anything. **Never install.** You have no write access to the skills tree, so an install attempt will fail or interrupt the user for approval; recommending is your job, deciding is theirs. Put any suggestion in your closing message, with the pitfall it addresses — that message is delivered to the main agent.
324
+
325
+ ## Working within the budget
326
+
327
+ Measure, decide, then write once. Do not converge on the budget by trial and error — each attempt re-reads your whole context and is billed accordingly.
328
+
329
+ 1. \`wc -c {{MEMORY_PATH}}\` to get the current size, and subtract {{BUDGET_CHARS}} to get the exact surplus.
330
+ 2. Decide up front which sections absorb that surplus, oldest-dated first, and roughly what each one costs. Budget the whole cut before editing anything.
331
+ 3. Write the complete file once, already inside the budget. Never write a version you know to be over budget «to fix in the next step»: the pass can be killed at any moment, and the file you leave behind is the one the next session inherits.
332
+ 4. \`wc -c {{MEMORY_PATH}}\` to confirm. If you are still over, cut a whole section rather than shaving a few characters at a time.
333
+
334
+ Per-section costs come out of \`awk\`, not an interpreter: \`awk '/^## /{h=$0} {c[h]+=length($0)+1} END{for(k in c) printf "%7d %s\\n", c[k], k}' {{MEMORY_PATH}} | sort -rn\` tells you which sections pay for the surplus.
335
+
336
+ To draft before committing, draft in \`{{SCRATCH_DIR}}\`. That is your own scratch folder: writable without a grant and without an approval prompt, private to this pass, and deleted when the pass ends. Reuse one filename such as \`{{SCRATCH_DIR}}/draft.md\` rather than numbering drafts — you have no \`rm\`, so every extra draft survives until the folder goes.
337
+
338
+ If the pass is running long, drop the oldest-dated section wholesale and write. An under-budget file missing one stale section is a good outcome; an over-budget file is a broken one.
339
+
340
+ Rules:
341
+
342
+ - Keep durable preferences, stable project facts, validated approaches, named resources, and the pitfalls worth not repeating.
343
+ - Organize retained information into concise per-topic sections rather than one flat list. Let the topic lead the heading; preferences, projects and pitfalls are what to look for, not a required table of contents.
344
+ - Never write next to the memory file. It is versioned, so backups and scratch copies beside it are noise; drafts belong in \`{{SCRATCH_DIR}}\`. Do not draft in \`/tmp/\` either: it is shared with every other scoop, which can read and overwrite what you leave there.
345
+ - Shell tools only. Interpreters such as \`python3\` and \`node -e\` are not on your allow-list, so reaching for one costs an approval round-trip and may fail even when approved — \`awk\`, \`sed\`, \`wc\` and \`sort\` cover every measurement this pass needs.
346
+ - End every \`##\` and \`###\` section heading with its last-verified date in \`YYYY-MM-DD\` form, for example \`## Deployment pipeline (2026-08-06)\`. Dates are UTC, matching the session archive timestamps, so a late-evening freeze west of UTC stamps the next day.
347
+ - Stamp sections you write or confirm with today's date, {{TODAY}}.
348
+ - Prioritize re-verifying the oldest-dated sections. Treat undated headings as maximally stale and date them on this pass.
349
+ - Drop ephemera and duplicates. Delete or merge sections that are stale, superseded, or unverifiable.
350
+ - Preserve concrete identifiers such as file paths, URLs, IDs, and names verbatim.
351
+ - Keep the entire file at or below the hard budget of {{BUDGET_CHARS}} characters, with no exempt region. When over budget, compact or remove the oldest-dated sections first.
352
+ - Write the result to {{MEMORY_PATH}}; do not merely return it in your response.
353
+
354
+ <!-- How to customize
355
+ Add curator instructions here, for example: also update the knowledge base at /path following its WIKI.md. Extend visiblePaths or writablePaths above to grant access to extra stores, and adjust timeoutSeconds when needed.
356
+
357
+ {{MEMORY_PATH}} resolves to a staged per-archive draft under /sessions/.curation/, not the live memory file: the pass snapshots the live file when it spawns, the curator rewrites the draft, and on a successful exit the runtime three-way-merges the rewrite back onto the live file. Edits the cone or the user makes to the live memory while the curator runs survive; where both sides changed the same lines the curator's version wins. An entry in writablePaths naming the memory file is substituted with the draft automatically, so this file keeps working unchanged. A failed or killed run leaves the live memory untouched and its outcome recorded at /sessions/.curation/<archive>/status.json.
358
+
359
+ writablePaths defaults to the memory file alone rather than /workspace/, because the curator can run upskill and a directory-wide grant would also let it install skills into /workspace/skills. Widen it only as far as a task genuinely needs; a single file is a valid entry, not just a directory.
360
+
361
+ Scratch space needs no entry here. The curator spawns under a fixed per-cone name (memory-curator for the primary cone), so the bridge grants it {{SCRATCH_DIR}} — private to the run, writable without a prompt, and removed when the pass ends — and that is where the prompt sends drafts. /tmp/ is writable too, but it is shared with every other scoop and visible to the cone, so a full rewrite of durable memory does not belong there.
362
+
363
+ thinkingLevel accepts off, minimal, low, medium, high, or xhigh. Curation is cheaper with reasoning than without: an unreasoned pass converges on the budget by trial and error, and because every turn re-reads the whole context, turn count is what the pass costs. Lower it to off only if you also shrink the prompt to a single mechanical instruction.
364
+
365
+ MEMORY.md is user-edited only: the curator intentionally has read-only access to /shared/ and cannot rewrite its own instructions. A bare / is rejected in writablePaths.
366
+
367
+ Frontmatter supports a strict YAML subset. Arrays may use the block form above (with optional # comment tails) or inline form such as [cat, grep]. \`allowedCommands\` is additive: listed commands extend the built-in base set without replacing it. Inline entries containing commas must be quoted, for example ["/knowledge/lars,rebecca/"].
368
+ -->
369
+ `,rr=`/cones`,ir=`/workspace/skills`;function ar(e){if(w(e)){if(tt(e))return{root:`/workspace`,memoryPath:`/workspace/CLAUDE.md`,scratch:`/tmp`};let t=`${rr}/${e.folder}`;return{root:`${t}/workspace`,memoryPath:`${t}/CLAUDE.md`,scratch:`/tmp`}}let t=`/scoops/${e.folder}`;return{root:`${t}/workspace`,memoryPath:`${t}/CLAUDE.md`,scratch:t}}var F=Object.freeze(ar({parentJid:null,folder:rt}));function or(e,t){let n=[...e],r=Qe(n,t)??T(n)[0];return r?ar(r):F}function sr(e){let t=`${e.root}/`,n=`${ir}/`;return n.startsWith(t)?[t]:[t,n]}var cr=`abject.abortive.abrasive.absolute.abstruse.abundant.abyssal.accessible.acerbic.acrid.adamant.adept.adlerian.adornian.adroit.adventurous.aeolian.aerated.aesthetic.affable.aged.ageless.agile.airborne.airlocked.airy.akkadian.alabaster.alacritous.alert.alien.alloyed.allusive.aloof.alpha.alpine.alternate.altruistic.amaranthine.amber.ambidextrous.ambivalent.ambrosial.amiable.amorphous.ample.analog.analytical.ancestral.ancient.angelic.animated.animist.anomalous.antediluvian.antic.antlered.apollinairian.apollonian.apt.aquatic.arbitrary.arcadian.arcane.archaic.archimedean.ardent.arduous.arendtian.argent.argentine.argive.aristotelian.armstrongian.aromatic.arresting.artful.arthurian.articulate.artificial.artisanal.artless.ascetic.ashen.ashy.asimovian.aspiring.assiduous.assyrian.asteroidal.astral.astute.asynchronous.athenian.atlantean.atomic.attentive.attic.audacious.audenesque.augmented.august.augustan.aureate.auric.auroral.austenian.austere.austral.authentic.autonomous.autumnal.avalonian.avid.avuncular.aztec.azure.babbagean.babylonian.bacchic.bachian.bactrian.ballardian.ballistic.balmy.banksian.barefoot.barreled.barthesian.bartokian.bashy.baudelairean.bayesian.beatific.beckettesque.beckettian.beethovenian.beguiling.bellicose.bemused.benevolent.benign.benjaminian.bergmanesque.beta.bewitched.binary.bionic.bismarckian.bitter.bitwise.blackened.blakean.blameless.bland.blazar.blazing.blended.blessed.blissful.blistered.blithe.blooming.blunt.blustery.boeotian.boggy.bohrian.boingy.boisterous.bold.bolted.bombastic.bonny.boolean.boreal.borgesian.borgian.bosky.botticellian.bottled.bouncy.boundless.bountiful.bourbon.bradburyan.brahmsian.braised.brambly.brash.brave.brazen.bready.breathless.brechtian.breezy.briared.briery.bright.brilliant.brined.briny.brisk.bristling.briton.brittenesque.broadband.brontean.bronzed.brooding.browned.browningesque.brucknerian.brumal.brusque.bubbling.bubbly.bucolic.budding.bunuelian.buoyant.burnished.burnt.buttered.buttery.bygone.byronic.bytewise.byzantine.cacophonous.caesarean.callow.calm.candescent.candid.candied.canny.cantorian.capable.capricious.caramelized.caravaggesque.carbon.carefree.carolingian.cartesian.carved.casked.cast.cavafian.cavalier.celebrated.celestial.celtic.ceramic.cerebral.ceremonious.cerulean.cervantine.cezannesque.chagallian.chalky.chaplinesque.charcoal.charismatic.charmed.charming.charred.chaucerian.cheeky.cheerful.chekhovian.cherished.cherubic.chewy.chilled.chilly.chimerical.chipper.chirpy.chivalrous.chopinesque.chromospheric.chronal.chthonic.chubby.chunky.churchillian.cimmerian.cindered.circumspect.circumstellar.citrusy.civil.clandestine.clangy.clarified.clarkean.classic.clement.clever.cloaked.clockwork.clompy.cloned.cloudlike.cloudy.clunky.clustered.coastal.cobalt.cognitive.coherent.coleridgean.colossal.coltranesque.comely.cometary.compiled.complacent.composite.concurrent.conradian.constablean.convivial.copernican.copious.coplandesque.cordial.corinthian.corked.cornelian.coronal.cortical.cosmic.coy.cozy.cracked.crackling.crafty.cranky.crashy.creamy.credible.crepuscular.cretan.crimson.crisp.crispy.crowned.crumbly.crunchy.crushed.cryo.cryofrozen.cryogenic.cryonic.cryptic.crystalline.cuddly.cumulative.cunning.cupric.cured.curious.cursed.cursory.cushy.cybernetic.cyberpunk.cynical.cyprian.daliesque.dancy.dandy.dantean.dantesque.dapper.dappled.daring.dark.darwinian.dashing.dashy.dauntless.davisian.dawning.dazzling.deathless.debonair.deboned.debussyan.decanted.decompiled.decorous.decrypted.deep.deferential.deft.degasian.delectable.deleuzian.delian.deliberate.delicate.delirious.delphic.delta.demure.depressurized.derridean.destined.devout.dewy.dexterous.diaphanous.diced.dickensian.dickian.dickinsonian.didactic.dieselpunk.diffident.digital.dignified.diligent.dimensional.dinky.dionysian.discerning.discreet.disheveled.disparate.distant.distinct.distributed.diurnal.divine.dizzy.docile.docked.dogged.doomed.dorian.dormant.dostoevskian.dotty.doughty.doughy.downy.dozy.draconic.dreamful.dreamy.drifting.dripping.drizzly.droll.drowsy.druidic.dulcet.dun.dunky.durkheimian.dusky.dwarven.dynamic.dystopian.eager.earnest.earthy.eastward.easygoing.ebony.ebullient.eclectic.eclipsed.ecstatic.edenic.edwardian.effervescent.effulgent.effusive.einsteinian.elamite.elastic.elated.eldritch.electric.electronic.elegant.elegiac.elgarian.eliotian.eliotic.elizabethan.ellingtonian.eloquent.elusive.elven.elvish.elysian.embered.emergent.eminent.emphatic.emulsified.enchanted.encoded.encrypted.endearing.endless.endogenous.energetic.enhanced.enigmatic.enthralling.ephemeral.epic.epicurean.equanimous.errant.erudite.escherian.esoteric.esteemed.eternal.ethereal.ethiopian.etruscan.euclidean.eulerian.euphonious.euphoric.evanescent.evening.eventide.everlasting.evocative.exacting.exalted.exemplary.exo.exogenous.expansive.expressive.exquisite.extraterrestrial.extruded.exuberant.fabled.fabulous.facetious.faithful.fallow.fanciful.fantastic.faradayic.faraway.farmhouse.fastidious.fated.fateful.fathomless.faulknerian.faunal.fearless.feathered.feathery.fecund.federated.feisty.felicitous.felliniesque.fenny.fermented.ferny.ferrous.fervent.fervid.festive.fetching.fey.fickle.fierce.fiery.filleted.filtered.fitzgeraldian.fizzy.flaky.flamboyant.flamed.flashy.flawless.fleecy.fleet.fleeting.flexible.flickering.flinty.floral.florid.flouncy.flourishing.flowering.fluent.fluffy.fluid.fluvial.foamy.folded.fond.foraged.forged.formidable.forthright.fortuitous.forward.foucauldian.fourier.fractal.fragrant.frank.frankish.freckled.free.fresh.freudian.friedmanite.frisky.frizzy.frolicsome.frosted.frosty.frothy.frozen.frugal.fruiting.fruity.funky.furred.furtive.futuristic.fuzzy.gaelic.galactic.galbraithian.galilean.gallant.gallic.galvanic.gamesome.gamma.gandhian.garlanded.garrulous.gauguinesque.gaussian.gauzy.generous.genetic.genial.genomic.genteel.gentle.geomagnetic.georgian.gershwinesque.ghostly.giant.gibsonian.giddy.gifted.giga.giggly.gilded.giottesque.glacial.glad.glazed.gleaming.gleeful.glimmering.glistening.glorious.glossy.glowing.gnomish.godardian.godelian.goethean.goethesque.gogolian.golden.gooey.goofy.gorgeous.gorsy.gossamer.gothic.gowned.goyaesque.graceful.gracious.grainy.grand.grassy.grated.gravitic.gregarious.grilled.groovy.ground.grounded.guileless.gushy.gusty.habermasian.habsburg.hadrianic.halcyon.hale.hallowed.haloed.halved.hamiltonian.han.handelian.handmade.handsome.hanoverian.hapless.happy.hardy.hardyesque.harmonious.hashed.haunted.haydnesque.hayekian.hazy.heady.heaneyesque.hearthside.hearty.heathen.heathered.heavenly.hegelian.heideggerian.heinesque.heinleinian.heirloom.heisenbergian.heliacal.hellenic.hellish.hemingwayesque.herbal.herbertian.herculean.hermetic.heroic.hexed.hibernal.hilbertian.histrionic.hitchcockian.hittite.hoar.hoary.hobbesian.hobbitish.hogarthian.holderlinian.holo.holographic.holy.homerian.homeric.homeward.honest.honeyed.honky.hooded.hooved.hopeful.hopkinsian.hopperesque.hoppy.horatian.horned.hospitable.hot.housemade.huggy.humble.humean.humming.humorous.hunky.hunnish.hurrian.hushed.hydraulic.hyper.hyperborean.hypersonic.hyperspatial.hypnotic.iberian.ibsenite.iced.icy.ideal.idyllic.igneous.illustrious.imaginative.immaculate.immense.immortal.impassioned.impeccable.impetuous.impish.impressive.incan.incandescent.incisive.incorrigible.indefatigable.indelible.indigo.indolent.indomitable.industrious.ineffable.inexorable.infernal.infinite.infra.infrared.infused.ingenious.ingenuous.inimitable.innocuous.inquisitive.insatiable.inspired.intense.intergalactic.interstellar.intragalactic.intrepid.intricate.intrinsic.intuitive.inventive.inveterate.invincible.inward.ionian.ionic.ionospheric.irenic.iridescent.irrepressible.ithacan.itinerant.ivory.jacobean.jammy.jangly.jaunty.jazzy.jeffersonian.jiggly.jingly.jocular.jocund.johnsonian.jolly.jouncy.jovial.jovian.joycean.joyful.joyous.jubilant.judicious.juiced.juicy.jumped.jumpy.jungian.junky.justinianic.jute.kafkaesque.kandinskian.kantian.keatonesque.keatsian.keen.keplerian.keynesian.kierkegaardian.kindly.kindred.kinetic.kiplingesque.klimtian.knowing.kooky.kubrickian.kurosawan.lacanian.laconic.lacquered.lacustrine.lacy.lamarckian.lambda.lambent.laminated.landed.languid.lanky.laplacian.larkinesque.laser.latent.lathed.latin.lattice.laudable.launched.laureled.lavish.layered.leaden.leafy.lean.learned.legendary.leguinian.leibnizian.lemian.lemurian.lenient.leonardesque.liberal.libyan.lidar.light.lighthearted.likable.lilac.lilting.liminal.limpid.lincolnesque.lingering.linnaean.lissome.lisztian.literate.lithe.littoral.lively.loamy.local.lockean.lofty.logical.loopy.loose.loquacious.lorcaesque.lorcan.lossless.lossy.lovecraftian.lovelacean.loyal.lucent.lucid.lucky.ludic.lukewarm.luminal.luminous.lunar.luscious.lush.lushy.lusitanian.lustrous.lydian.lynchian.lyotardian.lyric.lyrical.macerated.machiavellian.macro.magical.magnanimous.magnetar.magnetic.magnetospheric.magnificent.magrittean.mahlerian.majestic.mallarmean.malleable.malthusian.malty.mandelan.manetesque.manifold.marbled.marshy.martial.martian.marvelous.marxian.maser.masked.masterful.matchless.matin.matissean.mature.matutinal.mauve.maverick.mawkish.maxwellian.mayan.meandering.mechanical.median.medicean.mega.mellifluous.mellow.melodic.mendelian.merciful.mercurial.merovingian.merry.meshed.meta.metamorphic.meteoric.meticulous.metternichian.mettlesome.michelangelesque.micro.microwave.midnight.mighty.mild.milled.miltonian.miltonic.minced.mindful.mineral.ming.mingusian.minoan.minty.miraculous.mired.miroesque.mirthful.mischievous.misty.mobile.modest.modular.molecular.molieresque.momentous.mondrianesque.monetian.monkish.mono.montane.moonless.moonlit.mordant.morning.mossy.motley.mottled.mouthwatering.mozartian.mughal.multiversal.munificent.murmuring.mushy.musical.mutable.mutant.mycenaean.mysterious.mystical.mythic.nabokovian.nameless.nano.nanoscale.napoleonic.narrowband.nascent.natty.neat.nebular.nebulous.nefarious.neptunian.nerudian.networked.neural.neutron.neutronic.newtonian.nietzschean.nifty.nimble.noble.nocturnal.nonchalant.nonpareil.noontide.norse.northward.nostalgic.notable.novel.nozickian.nuanced.nubian.nuclear.numinous.nutty.oaky.obdurate.oblique.observant.obstinate.obtuse.oceanic.ochre.odyssean.olden.olympian.omega.omni.onward.opaline.opportune.optical.optimistic.opulent.oracular.orbital.orbiting.orderly.original.ornate.orphic.orwellian.osirian.ostentatious.otherworldly.otiose.ottoman.outgoing.outspoken.outward.overcast.overclocked.ovidian.pacific.pagan.painstaking.palatial.pale.pallid.palpable.paradisal.paradoxical.parallel.paramount.parkerish.parsonian.parthian.passionate.pastoral.patched.pathless.patient.pavlovian.peaceable.peaceful.peachy.pearly.peaty.pebbly.peeled.peered.peerless.pelagic.pellucid.penetrating.pensive.peppered.peppery.peppy.perceptive.perennial.perfect.perfumed.perky.persian.persistent.perspicacious.persuasive.pert.pervasive.pessoan.petaled.petrarchan.phantom.pharaonic.phased.philosophical.phlegmatic.phoenician.photonic.photospheric.phrygian.picassoesque.pickled.pictish.picturesque.pillowy.pindaric.pinteresque.piping.piquant.pirandellian.pithy.pivotal.pixelated.placid.planckian.planetary.planetoid.plangent.plasmic.plathian.platinum.platonic.playful.pleasant.plentiful.pliant.plinky.plonky.plucky.plumed.plummy.plush.plushy.plutonian.plutonic.pneumatic.poached.poesque.poetic.poignant.poised.polished.polite.pollockian.poly.polygonal.polymer.polynesian.popean.popped.popular.portly.posh.positronic.posthuman.potent.pouncy.powdery.powerful.pragmatic.prancy.precise.precocious.precognitive.preeminent.premier.prescient.pressed.pressurized.prestigious.pretty.primeval.primordial.princely.printed.pristine.private.prized.prodigious.profane.proficient.profound.profuse.prokofievian.prolific.promethean.prompt.proper.prophetic.prosaic.prosperous.protean.proto.protostellar.proud.proustian.providential.prudent.psionic.puccinian.puckish.pudgy.puffed.pulled.pulsar.punctilious.punctual.pungent.punic.pure.purposeful.pushkinian.pynchonesque.pythagorean.quaint.quantum.quartered.quasar.questing.quick.quiescent.quiet.quintessential.quirky.quixotic.rabelaisian.racinian.radar.radiant.radio.rainwashed.rainy.rakish.rambunctious.raphaelesque.rapid.rapturous.rare.rational.ravelian.rawlsian.raytraced.ready.reasonable.rebooted.receptive.recondite.recursive.redolent.reduced.reedy.refined.reflective.refulgent.regal.relativistic.relaxed.reliable.remarkable.rembrandtesque.remote.rendered.renoiresque.renowned.replete.replicated.resilient.resinous.resolute.resourceful.respectful.resplendent.responsive.restful.restive.restless.reticent.retro.reverent.rhapsodic.rhodian.rhythmic.ricardian.rich.richelieuvian.riemannian.rigorous.rilkean.rimbaudian.rimed.ringed.ripe.ripening.rippling.risible.riverine.riveted.roaming.roaring.roasted.robed.robotic.robust.rolled.roly.roman.romanov.romantic.rompy.rooseveltian.roseate.rosy.rothkoesque.rousing.rousseauian.rowdy.royal.rubenesque.ruddy.runic.rushy.russet.rustic.sabine.sable.sacred.sagacious.sage.saintly.salient.saline.salingeresque.salted.salty.salubrious.samian.sandaled.sandy.sanguine.sapid.sapient.sapphic.sardonic.sarmatian.sartrean.sassy.satiny.saturnian.saturnine.saucy.savory.savvy.saxon.scalding.scarlet.schielesque.schillerian.schoenbergian.scholarly.schubertian.schumannesque.schumpeterian.scintillating.scorched.scorsesean.scrappy.scruffy.scrupulous.scythian.seaborne.seamless.seared.seasonal.seaward.secure.sedate.sedgy.sedimentary.sedulous.seemly.seismic.selenic.selfless.sensible.sensitive.sentient.sentimental.seraphic.sere.serene.seuratian.shaded.shadowed.shadowy.shaggy.shaken.shakespearean.shamanic.shannonian.sharded.sharp.shaved.shavian.shelleyan.shielded.shimmering.shiny.shoreless.shostakovian.shrewd.shucked.sibelian.sibilant.sibylline.sicilian.sidereal.sienna.sifted.sigma.silicon.silken.silky.silly.silty.silver.silvered.simmering.simulated.sincere.singed.singing.singular.sinuous.sisyphean.sizzling.skeptical.skillful.skinnerian.skittish.skyward.sleek.sleepless.sleepy.slender.sliced.slick.slipstreamed.slow.sly.smart.smashy.smithian.smoked.smoky.smoldering.smooth.snappy.snazzy.snoozy.snowy.snug.snuggly.soaring.sociable.socratic.sodden.soft.sogdian.solar.solarpunk.solemn.solid.somnolent.sonar.song.sonic.sonorous.sooty.soporific.soulful.sound.soundless.sour.southward.sovereign.spaceborne.spacefaring.spacious.sparkling.sparkly.spartan.special.speckled.spectacular.spectral.speedy.spellbound.spiced.spicy.spielbergian.spiffy.spinozan.spirited.splashy.splendid.split.sploshy.spontaneous.spooky.sporty.spotless.spotted.sprightly.sproingy.spry.spun.spunky.squally.squashy.squelchy.squiggly.squishy.staid.stainless.stalwart.starborn.starfaring.starless.starlit.stasisbound.stately.steadfast.steady.steaming.steampunk.steely.steeped.steinbeckian.stellar.stellarborn.sticky.stirred.stirring.stoic.stoical.stolid.stompy.stoppardian.storied.stormy.stout.strained.stratospheric.straussian.stravinskian.streaky.stretched.striking.strindbergian.striped.strong.stuart.stubby.studious.stunning.sturdy.stygian.suave.subatomic.sublime.suborbital.subsonic.substantial.subtle.succinct.succulent.sudsy.sugared.sugary.sumerian.summery.sunless.sunlit.sunny.sunward.superb.supergalactic.superlative.superluminal.supersonic.supple.supreme.sure.surreptitious.svelte.swanky.sweeping.sweet.swift.swiftian.swirled.swooshy.sylvan.sympathetic.synaptic.synchronous.synthetic.syrupy.tableside.tachyonic.taciturn.talented.talleyrandian.tame.tang.tangy.tarantinoesque.tarkovskian.tart.tasteful.tattered.taut.tawny.tectonic.telekinetic.telepathic.temperate.tempered.temporal.tenacious.tender.tennysonian.tenuous.tepid.tera.terran.terrific.terse.textured.thackerayan.thankful.thawed.theban.thessalian.theta.thorny.thorough.thoughtful.thracian.threadbare.thriving.thundery.tidal.tidy.timeless.timely.timeworn.tinkly.tiny.tipsy.tireless.titanesque.titanian.titanic.titanium.titianesque.toasted.toasty.tocharian.tokenized.tolerant.tolkienesque.tolstoyan.tonic.tonky.toothsome.torched.totemic.tough.towering.trackless.tranquil.transcendent.transhuman.treacly.treasured.tremendous.tremulous.trenchant.tricky.trim.triumphant.trojan.trollopian.truculent.true.truffautian.truffled.trusty.truthful.tudor.turbo.turingian.turneresque.twangy.twilight.twilit.twinkling.twinkly.ubiquitous.ultra.ultrasonic.ultraviolet.umami.umber.unassuming.unbounded.uncanny.uncorked.unctuous.undaunted.underworldly.undocked.undying.unearthly.unerring.unflappable.unique.unknown.unruffled.upbeat.upgraded.upright.upstanding.upward.uranian.urbane.utopian.vacuous.valeryan.valiant.valorous.vandal.vangoghian.vast.veblenian.vectorized.vedic.vehement.veiled.velazquezian.velvet.velvety.venerable.venturous.venusian.veracious.verbose.verdant.verdian.verdurous.verlainian.vermeerian.vermilion.vernal.verneian.versatile.vesper.vespertine.vibrant.victorian.vigilant.vigorous.vintage.violet.virgilian.virtual.virtuous.visceral.vital.vivacious.vivid.vocal.voidborn.voidward.volcanic.voltairean.voluble.vonnegutian.voracious.voxel.vroomy.wacky.wagnerian.wakeful.waking.wan.wandering.warholian.warm.warped.wary.washingtonian.wayward.wealthy.weathered.weberian.welcome.welded.wellesian.wellsian.westward.whacky.whimsical.whimsy.whipped.whisked.whispering.whistlerian.whitmanesque.whole.wholesome.whooshy.wide.wiggly.wild.wildean.willowy.wilsonian.wily.windswept.windy.winged.winning.winsome.wintry.wired.wireframe.wireless.wise.wishful.wispy.wistful.wittgensteinian.witty.wobbly.wodehousian.wondrous.wonky.wooded.woody.woolly.woozy.wordless.wordsworthian.wormholed.worthy.wraithlike.wreathed.wriggly.wry.xenial.xeno.yanky.yearning.yeasty.yeatsian.young.youthful.yuletide.yummy.zany.zappy.zealous.zested.zestful.zesty.zeta.zingy.zippy.zodiacal.zonked.zonky.zoomy.zoroastrian`.split(`.`),lr=`abalone.absinthe.absyrtus.accelerator.achilles.acorn.acquerello.actuator.adobo.adonis.aeetes.aegis.aello.aeneas.aengus.aether.affogato.afterburner.agartha.agate.agni.agnolotti.aioli.airlock.ajax.aji.albatross.alder.ale.alecto.aleppo.alfheim.allegory.alliteration.almond.amaranth.amaretto.amaterasu.ambrosia.americano.amphiaraus.anago.anapest.ancho.anchovy.android.andromeda.anise.annal.annwn.ansible.antaeus.antenna.anthem.antigone.antimony.antistrophe.anubis.aoidos.aperol.aphelion.aphrodite.apogee.apollo.apple.apricot.aquamarine.aquavit.aqueduct.arabica.arachne.arawn.arbor.arborio.arc.arcadia.arch.archipelago.ares.argo.argon.argonaut.aria.ariadne.ark.arke.armagnac.array.arrow.artemis.arthur.artichoke.artifact.arugula.asgard.asgardia.ash.asparagus.aspen.assam.assonance.asteroid.astronaut.atalanta.athena.atlantis.atlas.atoll.atom.atropos.aubergine.augean.aura.aurora.avalon.avalonia.avocado.awning.axion.axle.azurite.bacchus.bagna.baharat.balder.ballad.balladeer.banana.banshee.baozi.bard.barge.barium.barley.barn.basalt.basil.basilisk.basmati.bastet.bastion.bay.bayleaf.beacon.beam.bean.bearing.beech.beetroot.behemoth.bellini.beowulf.bergamot.berth.beryl.beryllium.bifrost.biodome.birch.biscotti.bismuth.bisque.bit.bittern.blackberry.blast.blaster.blini.block.blodeuwedd.bloodstone.blossom.bluebell.blueberry.bolt.bomba.bonito.boom.borage.boson.botargo.bottarga.bouillon.boundary.bow.bower.bragi.bramble.bran.branch.brandy.branwen.breeze.brew.bridge.brigid.brioche.broccoli.brook.brulee.brunhild.brush.bucatini.buckler.buckwheat.buffer.bulkhead.bunting.burrata.burst.bus.busiris.butte.butter.buttercup.butterscotch.byte.cabbage.cabin.cacao.cachaca.cache.cacus.cadence.caesura.calamarata.calamari.calcite.caldera.calliope.calvados.calypso.cam.camellia.camelot.camembert.campari.canal.cannelloni.cannoli.canopy.cantaloupe.cantata.canticle.canvas.canyon.canzone.capacitor.capellini.caper.capon.cappelletti.cappuccino.capsule.caramel.cardamom.cardoon.carillon.carnaroli.carnation.carol.carrier.carrot.cascade.cashew.cassandra.cassis.castle.castor.cavatelli.caviar.cayenne.cedar.celaeno.celeriac.cell.centaur.cerberi.cerberus.cernunnos.ceryneian.cesium.ceto.ceylon.chaff.chaffinch.chai.chain.chalk.chamomile.champagne.chandra.channel.chanson.chanterelle.chard.charon.chartreuse.cheddar.cherry.chert.chervil.chestnut.chickweed.chicory.chili.chime.chimera.chimichurri.chimney.chip.chipotle.chirashi.chiron.chive.chocolate.chorale.chorizo.chorus.chronicle.chrysanthemum.chrysaor.chrysomallus.chutney.ciabatta.cibola.cider.cilantro.cinder.cinnamon.cipher.circe.circlet.circuit.cirque.cistern.citadel.citrine.citron.clementine.cliff.clio.clipper.cloak.clotho.cloud.clove.clover.cluster.coal.cobbler.cockaigne.cockpit.cocoa.coconut.codex.coffee.cog.cognac.coif.coil.col.colchis.collider.colony.combe.comet.compote.concerto.conchiglie.conduit.confit.console.consomme.consonance.continuum.contour.cookies.coordinate.core.coriander.cormorant.corona.coronet.cortado.corvette.cosmos.cottage.couplet.course.couscous.cove.cowl.cowslip.crab.craft.crag.cranberry.crane.crayon.cream.creme.crepe.cress.crocus.croissant.crosne.crown.cruiser.crumble.cryopod.cryosleep.crystal.cuchulainn.cuckoo.cucumber.cuirass.cumin.cupid.curlew.currant.current.curry.custard.cyborg.cycle.cyclops.cyclotron.cylinder.dactyl.daedalus.daemon.daffodil.dagda.dahlia.daiquiri.dais.daisy.dale.dam.dandelion.danu.daphne.darjeeling.dart.dashi.date.dawn.daydream.deck.deirdre.demeter.destroyer.dew.diadem.diary.dill.dimension.diode.diomedean.dionysus.ditalini.ditch.djinn.dock.doenjang.domain.donburi.donjon.door.doppio.dove.downlink.dreadnought.dream.drift.droid.dryad.dukkah.dulce.dumpling.dune.durga.dusk.dust.dyke.eagle.earlgrey.easel.echidna.echo.eclair.eclipse.ecliptic.edamame.eddy.edelweiss.edge.egret.einsteinium.elderflower.eldorado.electra.elegy.elm.elysium.ember.endive.enigma.enjambment.enkidu.envoi.eos.epigram.epistle.epode.erato.erinyes.eros.erymanthian.escargot.espresso.estuary.eumenides.euryale.eurybia.eurydice.eurytion.excalibur.exoplanet.fable.fafnir.falcon.fancy.farfalle.fate.feather.feldspar.fell.fence.fennel.fenrir.fenugreek.fermion.fern.fettuccine.fiddlehead.field.fig.finch.finn.fionn.firebird.firefly.fission.fizz.fjord.flake.flame.flare.flash.flicker.flint.flue.fluorite.flux.flywheel.focaccia.fog.folio.fondant.forge.fortress.foxglove.fragment.fraise.frame.frangipane.frappe.freesia.fregola.freighter.freya.frigate.frigg.frost.fudge.fugue.fumarole.furies.fusilli.fusion.gaia.galahad.galangal.galatea.galaxy.galette.galleon.gallium.ganache.ganesh.gannet.gantry.ganymede.garam.gardenia.garlic.garuda.gateway.gauntlet.gawain.gazebo.gear.gelato.gemelli.genmaicha.genoise.geranium.germ.germanium.geryon.geyser.ghazal.ghee.ghost.gilgamesh.ginger.gingko.ginnungagap.girder.glacier.glade.glaze.gleam.gleeman.glen.glimmer.glint.glitter.gloss.glow.gluon.gnocchi.gochujang.goldfinch.golem.goose.gooseberry.gorgon.gouda.governor.gradient.graeae.granary.granite.grapefruit.grappa.gratin.graviton.greave.grebe.gremolata.grenadine.grendel.grid.griffin.gruyere.guajillo.guava.gudrun.guinevere.gunkan.gwydion.gyoza.gyroscope.habanero.habitat.hades.hadron.haiku.hall.halloumi.halo.halva.hamachi.hangar.hanuman.harissa.harpies.harpy.harvest.hatch.hauberk.hawthorn.haze.hazel.hazelnut.heading.headland.heap.heart.hearth.heather.hecate.hedge.heimdall.hel.helheim.helios.helium.helix.helle.hellebore.helm.hemistich.hephaestus.hera.hermes.heron.hesperides.hestia.hibiscus.hippogriff.hirame.hive.hoisin.hojicha.hollandaise.hollow.holly.hologram.honey.honeycomb.honeysuckle.hood.hoopoe.horizon.horseradish.horus.hrothgar.hub.huckleberry.hue.huginn.hull.husk.hut.hyacinth.hydra.hydras.hylas.hymn.hyperborea.hypercube.hyperdrive.hyperion.hyperspace.hyssop.iamb.ibis.icarus.idas.idunn.idyll.igniter.igraine.ikura.indium.indra.inductor.infusion.injector.ink.inlet.inspiration.ion.iridium.iris.ishtar.isis.isolde.isotope.ivy.iwashi.izanagi.jackdaw.jackfruit.jalapeno.janus.jasmine.jason.jasper.javelin.jay.jet.jiaozi.jongleur.jonquil.jormungandr.jotunheim.journal.julep.jumpgate.juniper.juno.jupiter.kaffir.kale.kali.kampachi.karaage.karasumi.katsu.keel.keep.kefir.kelpie.kenning.kernel.kestrel.khinkali.kiln.kimchi.kingfisher.kinmedai.kirsch.kite.kitsune.kiwi.koan.kohlrabi.kombucha.koshihikari.kraken.krypton.kumquat.kvass.lachesis.lacquer.ladon.ladons.laertes.lager.lagoon.lake.lakshmi.lambic.lament.lance.lancelot.lander.lane.langoustine.lantern.lapis.lark.larkspur.lasagna.latte.laureate.laurel.lava.lavender.leaf.leda.leek.legend.lemon.lemonbalm.lemongrass.lemuria.lens.lentil.lepton.lernaean.lethe.letter.levee.lever.leviathan.lightyear.lily.lime.limerick.limoncello.linden.linguine.link.linnet.lir.lithium.lityerses.lobster.loch.lock.lodge.loki.loop.loquat.lotus.lovage.lugh.lullaby.lungo.luster.lychee.lynceus.lyonesse.lyricist.macadamia.macaron.macchiato.madai.madeleine.madrigal.magma.magnolia.magpie.mail.mainframe.maki.makrut.malachite.manannan.mango.manicotti.manor.manti.manticore.mantle.mantou.manuscript.maple.marble.marduk.margarita.marigold.marjoram.marquee.marrow.martini.marvel.marzipan.masago.masala.mascarpone.mast.matcha.matrix.mead.meadow.mech.medea.medusa.megaera.meleager.memoir.mentaiko.mercury.meringue.merlin.merlot.mesa.mesh.metaphor.meteor.meter.mezcal.mezzaluna.mica.midas.midgard.mill.mimir.mimosa.minerva.minotaur.minstrel.mint.minuet.miracle.mirin.mirror.miso.missive.mist.mjolnir.mocha.module.moira.mojito.molasses.mole.momo.monolith.moonbase.moonbeam.moonstone.moor.mopsus.mordred.morel.morgana.morpheus.morrigan.moss.mote.motet.mousse.mu.mulberry.muninn.muon.muse.muspelheim.mustard.myrtle.mystery.myth.nadir.naga.naiad.nanite.nanobot.narcissus.neapolitan.nebula.nectarine.needle.negroni.nemean.nemesis.neon.neptune.neptunium.nereid.nereus.nessus.nest.nestor.net.nettle.neutrino.nexus.niamh.nib.nibble.nibiru.niflheim.nightingale.nigiri.nike.niobe.njord.nocturne.node.nog.nori.norn.note.nougat.nova.nozzle.nuada.nutmeg.nyx.oak.oasis.oat.obelisk.oberon.obsidian.oceanid.oceanus.octave.octavo.ocypete.ode.odin.odysseus.oisin.okonomiyaki.olive.olympus.oni.onigiri.oolong.oracle.orange.orb.orbit.orbiter.orchard.orchid.oreads.orecchiette.oregano.orion.orpheus.orthros.orthrus.orzo.oscillator.osiris.osmium.osprey.ouroboros.outline.outpost.ouzo.oven.overture.owl.oyster.paccheri.packet.padron.page.palace.palette.palladium.palm.pan.pandan.pandora.panettone.pansotti.pansy.pantoum.papaya.pappardelle.paprika.papyrus.parable.paradox.parcae.parchment.parfait.parmesan.parsec.parsley.parsnip.particle.partridge.parvati.pasilla.passionfruit.pastel.pastis.patina.pavilion.pavlova.peach.peak.pear.pebble.pecan.pegasi.pegasus.pekoe.peleus.pelican.pelmeni.pen.pencil.penelope.penne.peony.pepper.peppermint.percival.peregrine.pergola.peridot.perigee.perihelion.perry.persephone.perseus.persillade.persimmon.pesto.petal.petrel.phase.pheasant.phoenix.pholus.phorcys.photon.phrixus.pickle.pierogi.pigment.pimento.pine.pineapple.ping.pinot.pipe.pipit.piquillo.pisco.pistachio.piston.pith.plane.plasma.plate.plover.plum.plume.pluto.plutonium.poblano.pod.podarge.poet.polenta.pollux.polyphemus.pomegranate.pomelo.pond.pontus.ponzu.pooka.pool.poplar.poppy.porcini.port.portal.porter.porthole.poseidon.positron.prairie.praline.prelude.primrose.prism.probe.profile.prometheus.prosciutto.prosecco.proteus.protocol.psalm.psyche.pudding.puffin.pulse.pumice.pumpkin.purslane.pwyll.pylon.pyrrhic.quadrant.quail.quark.quarto.quartz.quatrain.qubit.quetzalcoatl.queue.quill.quince.quinoa.quiver.radish.radium.radon.ragnarok.rain.rama.ramen.ramp.rampart.ramson.raspberry.ratatoskr.raven.ravioli.ray.reactor.realm.reaper.reed.reef.refrain.region.register.relay.relic.remnant.requiem.reservoir.residue.resistor.resonator.reverie.rhapsode.rhapsody.rhea.rhiannon.rhodium.rhododendron.rhubarb.rhyme.ricotta.riddle.ridge.riesling.rigatoni.rim.ring.risotto.ristretto.river.roast.robin.robusta.roc.rocket.rod.romesco.rondeau.rooibos.rook.root.rose.rosemary.rosewater.roundel.rover.rowan.rubidium.rum.rune.saba.saffron.saga.saison.sake.salmoriglio.salsa.salsify.sambal.sambuca.samphire.sancerre.sandpiper.sangria.sanma.sansho.saraswati.sashimi.sasquatch.satellite.satyr.sauternes.savanna.sawara.sazerac.scaffold.scalar.scallop.scansion.scepter.schnapps.schooner.scop.scorzonera.scotchbonnet.scroll.sector.seed.sekhmet.selene.selenite.selenium.selkie.sencha.sensor.sequoia.serenade.serrano.servo.sesame.sestina.sextet.shack.shade.shadow.shaft.shale.shallot.shambhala.shard.shed.sheen.sherbet.sherry.shield.shimmer.ship.shishito.shiso.shiva.shoyu.shrub.shumai.shuttle.sibyl.sif.signal.sigurd.silhouette.silo.simile.simurgh.singularity.siren.sita.skadi.skald.skiff.skuld.skylark.slant.slate.sleipnir.sling.slipstream.sliver.sloop.sluice.smithy.smoke.snowdrop.socket.sofrito.sonata.sonnet.soot.sorbet.sorrel.souffle.soul.soy.spaceport.spaghetti.spark.sparkle.sparrow.spear.speck.specter.speculoos.spelt.sphere.sphinx.sphinxes.spindle.spinel.spiral.spire.spirit.splinter.spoke.spondee.spore.spring.spritz.spruce.sriracha.ssamjang.stack.stanza.starbase.starlight.starling.starport.starship.stasis.station.steam.stellarator.steppe.stheno.stork.stracciatella.strawberry.stream.strontium.strophe.strozzapreti.strut.stylus.stymphalian.styx.subspace.sumac.summit.sunbeam.sunstone.supernova.surge.surya.susanoo.sushi.svartalfheim.swallow.swan.swarm.sycamore.syleus.synchrotron.tabard.tachyon.tagliatelle.tahini.takoyaki.taliesin.tamari.tamarind.tangerine.tanka.tanker.tapenade.tapioca.tarako.taranis.tare.tarn.tarragon.tartarus.telamon.telemetry.teleporter.tellurium.temaki.tempura.tengu.tensor.tent.tequila.tercet.teriyaki.terminal.tern.terraform.tesseract.tethys.thalassa.thalia.thallium.thaumas.themis.theseus.thistle.thor.thorium.thoth.threshold.throne.throttle.thrush.thruster.thule.thunderbird.thyme.tiamat.tiara.tide.tint.tintagel.tiphys.tiramisu.tirnanog.tisane.tisiphone.titan.tobiko.toccata.toddy.toffee.tofu.tokamak.tomatillo.tomato.tome.tone.tonka.tonkatsu.tor.tortellini.torus.tourmaline.tower.trace.track.transducer.transistor.treacle.trellis.triolet.tristan.triton.trochee.trofie.trope.troubadour.trouvere.truffle.trunk.truss.tug.tulip.tundra.tungsten.turbine.turmeric.turquoise.turret.twinkle.typhon.tyr.udon.ulysses.unagi.uni.unicorn.uplink.uramaki.urania.uranium.urd.urfa.uther.vale.valhalla.valkyrie.valve.vanadium.vanaheim.vanilla.vapor.vareniki.varnish.varuna.vector.veil.vellum.vent.venus.verbena.verdandi.verge.verjus.vermouth.verse.vessel.vesta.vestige.vialone.viewport.villanelle.vishnu.vodka.volcano.volta.volume.vortex.vulcan.wall.walnut.waltz.warbler.warpgate.wasabi.wash.watercress.watermelon.wave.waypoint.web.weir.well.wendigo.wheat.whisky.whisper.wiglaf.willow.wimple.window.wisteria.wonder.wonton.woodcock.woodpecker.word.wormhole.wraith.wren.wyrm.wyvern.xenon.yacht.yakitori.yama.yarrow.yeti.yew.yggdrasil.yokai.yuzu.zaatar.zabaglione.zenith.zephyr.zeus.zinnia.zircon.zirconium.ziti.zone.zucchini`.split(`.`);cr.length*lr.length;var ur=[`off`,`minimal`,`low`,`medium`,`high`,`xhigh`];function dr(e){return typeof e==`string`&&ur.includes(e)}d(`agent-bridge`);var fr=`agent: name already in use`,pr=d(`cone-memory-budget`),mr=4e3,hr=2e3,gr=1.25,_r=F.memoryPath,vr=`/sessions/index.json`,yr=4096,br=/^## Auto-extracted/m,xr=`Consolidate the auto-extracted memory bullets below into a single tighter set of durable memories.
370
+
371
+ Rules:
372
+ - Output ONLY a single \`## Auto-extracted (consolidated)\` heading followed by markdown bullets.
373
+ - One fact per bullet. Drop duplicates and superseded facts. Keep the most recent / specific phrasing.
374
+ - Preserve concrete identifiers (file paths, URLs, IDs, names) verbatim.
375
+ - Be terse. Aim well under the original size.
376
+ - Do NOT add preamble, commentary, or any heading other than the single consolidated one.`;function Sr(e){return Math.round(mr+hr*Math.log2((Number.isFinite(e)&&e>=0?e:0)+2))}function Cr(e){let t=br.exec(e);if(!t)return{header:e,autoExtracted:``};let n=t.index;return{header:e.slice(0,n),autoExtracted:e.slice(n)}}async function wr(e){try{let t=await e.readFile(vr,{encoding:`utf-8`}),n=typeof t==`string`?t:new TextDecoder().decode(t),r=JSON.parse(n);return Array.isArray(r)?r.length:0}catch{return 0}}async function Tr(e){let{header:t,autoExtracted:n}=Cr(e.currentContent);if(!n.trim())return e.currentContent;let r=`You are a memory consolidation assistant. You are given a markdown file's "auto-extracted" section — a list of memory bullets accumulated across sessions of an AI coding assistant. Your job is to rewrite that section as a tighter, deduplicated set of durable memories that fits well within ${e.budget} characters.
377
+
378
+ <auto-extracted>
379
+ ${n}
380
+ </auto-extracted>`,i={role:`user`,content:[{type:`text`,text:xr}],timestamp:Date.now()},a=await u(e.model,{systemPrompt:r,messages:[i]},{apiKey:e.apiKey,maxTokens:yr,headers:e.headers,signal:e.signal});if(a.stopReason===`error`)throw Error(`Restructure call failed: ${a.errorMessage||`Unknown error`}`);let o=a.content.filter(e=>e.type===`text`).map(e=>e.text).join(`
381
+ `).trim();if(!o)throw Error(`Restructure call returned empty content`);return`${t}${t.length===0||t.endsWith(`
382
+ `)?``:`
383
+ `}${o}\n`}async function Er(e){if(!e.model||!e.apiKey)return{restructured:!1,reason:`no-llm`};let t=e.memoryPath??_r,n=``;try{let r=await e.vfs.readFile(t,{encoding:`utf-8`});n=typeof r==`string`?r:new TextDecoder().decode(r)}catch{return{restructured:!1,reason:`missing-file`}}let r=await wr(e.vfs),i=Sr(r),a=i*gr;if(n.length<=a)return{restructured:!1,reason:`under-threshold`};pr.info(`Cone memory over threshold — restructuring`,{size:n.length,budget:i,threshold:a,sessionCount:r});try{let r=await Tr({currentContent:n,budget:i,model:e.model,apiKey:e.apiKey,headers:e.headers,signal:e.signal});return await e.vfs.writeFile(t,r),pr.info(`Cone memory restructured`,{before:n.length,after:r.length}),{restructured:!0}}catch(e){return pr.warn(`Cone memory restructure failed — leaving appended content in place`,{error:e instanceof Error?e.message:String(e)}),{restructured:!1,reason:`error`}}}var Dr=d(`agentic-memory`),Or=`/shared/MEMORY.md`,kr=1200,Ar=e=>[e.memoryPath],jr=e=>[`/sessions/`,`/shared/`,...sr(e)],Mr=`awk.cat.cp.cut.date.diff.du.echo.file.find.grep.head.jq.ls.mkdir.mount.mv.nl.od.printf.readlink.sed.sort.stat.tail.touch.tr.uniq.upskill.wc.xxd`.split(`.`),Nr=new Set([`writablePaths`,`visiblePaths`,`allowedCommands`]),Pr=new Set([`model`,`timeoutSeconds`,`thinkingLevel`]),Fr=`medium`,Ir=3e4;function Lr(e){return e===`cone`?`memory-curator`:`memory-curator-${e}`}function Rr(e){let t=Lr(e);return zr.test(t)?t:Lr(rt)}var zr=/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/;function Br(e){return`/scoops/agent-${Rr(e)}`}var Vr=Br(rt);function Hr(e){return ar({parentJid:null,folder:e?.folder??`cone`})}function Ur(e,t){if(t.root===F.root)return e;if(e===F.memoryPath)return t.memoryPath;if(e===`/workspace/skills`||e.startsWith(`/workspace/skills/`))return e;let n=`${F.root}/`;return e===F.root?t.root:e.startsWith(n)?`${t.root}/${e.slice(n.length)}`:e}function Wr(e,t){let n=`${ir}/`,r=e=>e.some(e=>n.startsWith(e.endsWith(`/`)?e:`${e}/`)),i=e.map(e=>Ur(e,t));return r(e)&&!r(i)&&i.push(n),i}async function Gr(e){try{if(e.signal?.aborted)return{ok:!1,reason:`aborted`,legacyFallbackSafe:!1};let t=Hr(e.cone),n=Br(e.cone?.folder??`cone`),r=await Kr(e.vfs,t),i=R(e.sessionArchivePath);try{await oi(e.vfs,t.memoryPath,e.sessionArchivePath)}catch(e){return{ok:!1,reason:`snapshot: ${z(e)}`,legacyFallbackSafe:!0}}let a=ci(r,li(ui(r.promptTemplate,{MEMORY_PATH:i,SESSION_ARCHIVE_PATH:e.sessionArchivePath,SESSION_COUNT:String(e.sessionCount),BUDGET_CHARS:String(Sr(e.sessionCount)),SCRATCH_DIR:n,TODAY:e.today??new Date().toISOString().slice(0,10)}),n),e.sessionArchivePath,t,e.cone);e.signal&&(a.signal=e.signal);let o=await di(Promise.resolve().then(()=>e.spawn(a)),r.timeoutSeconds*1e3+Ir,e.signal);if(o.type===`timeout`)return Dr.warn(`Agentic memory wait timed out past the in-run bound + grace`,{timeoutSeconds:r.timeoutSeconds,graceMs:Ir}),{ok:!1,reason:`timeout`,legacyFallbackSafe:!1};if(o.type===`aborted`)return{ok:!1,reason:`aborted`,legacyFallbackSafe:!1};if(o.type===`error`)return{ok:!1,reason:z(o.error),legacyFallbackSafe:!0};if(o.result.exitCode!==0){let e=(o.result.finalText??``).startsWith(fr);return{ok:!1,reason:o.result.finalText||`exit-${o.result.exitCode}`,legacyFallbackSafe:!e}}return{ok:!0,report:o.result.finalText}}catch(e){return Dr.warn(`Agentic memory pass failed`,{error:z(e)}),{ok:!1,reason:z(e),legacyFallbackSafe:!1}}}async function Kr(e,t=F){try{let n=await e.readFile(Or,{encoding:`utf-8`});return qr(typeof n==`string`?n:new TextDecoder().decode(n),t)}catch(e){return Dr.warn(`Could not load valid MEMORY.md; using built-in default`,{error:z(e)}),qr(nr,t)}}function qr(e,t=F){let n=e.replace(/^\uFEFF/,``).replace(/\r\n?/g,`
384
+ `).match(/^---\s*\n([\s\S]*?)\n---\s*\n([\s\S]*)$/);if(!n?.[2].trim())throw Error(`MEMORY.md requires frontmatter and a prompt`);let r=Yr(n[1]),i=$r(r,`writablePaths`,Ar(t));if(i.length===0)throw Error(`writablePaths must not be empty`);ni(i,`writablePaths`);let a=$r(r,`visiblePaths`,jr(t));ni(a,`visiblePaths`);let o=ti(r.timeoutSeconds),s=ei(r.model,`model`);return{writablePaths:i.map(e=>Ur(e,t)),visiblePaths:Wr(a,t),allowedCommands:[...new Set([...Mr,...$r(r,`allowedCommands`,[])])],...s?{model:s}:{},thinkingLevel:Jr(r.thinkingLevel),timeoutSeconds:o,promptTemplate:n[2].trim()}}function Jr(e){if(e===void 0)return Fr;if(typeof e!=`string`||!dr(e))throw Error(`thinkingLevel must be one of ${ur.join(`, `)}`);return e}function Yr(e){let t={},n=e.split(`
385
+ `);for(let e=0;e<n.length;e+=1){let r=n[e];if(!r.trim()||r.trimStart().startsWith(`#`))continue;let i=r.match(/^([A-Za-z][A-Za-z0-9]*):\s*(.*)$/);if(!i)throw Error(`Invalid frontmatter line: ${r}`);let[,a,o]=i;if(Nr.has(a)){let r=Xr(n,e,o);t[a]=r.value,e=r.lastIndex}else if(Pr.has(a)&&o.trim())t[a]=I(o);else throw Error(`Unsupported or empty frontmatter field: ${a}`)}return t}function Xr(e,t,n){if(n.trim()){let e=n.trim();if(!e.startsWith(`[`)||!e.endsWith(`]`))throw Error(`Expected an array`);let r=e.slice(1,-1).trim();return{value:r?Zr(r):[],lastIndex:t}}let r=[],i=t;for(let n=t+1;n<e.length;n+=1){let t=e[n].match(/^\s+-\s+(.+)$/);if(!t)break;r.push(I(Qr(t[1]))),i=n}return{value:r,lastIndex:i}}function Zr(e){let t=[],n=0,r;for(let i=0;i<e.length;i+=1){let a=e[i];a===`"`||a===`'`?r=r===a?void 0:r??a:a===`,`&&!r&&(t.push(I(e.slice(n,i))),n=i+1)}if(r)throw Error(`Unclosed quoted value`);return t.push(I(e.slice(n))),t}function Qr(e){let t;for(let n=0;n<e.length;n+=1){let r=e[n];if(r===`"`||r===`'`)t=t===r?void 0:t??r;else if(r===`#`&&!t&&(n===0||/\s/.test(e[n-1])))return e.slice(0,n).trimEnd()}return e}function I(e){let t=e.trim();if(!t)throw Error(`Empty frontmatter value`);let n=t[0];if((n===`"`||n===`'`)&&t.at(-1)===n)return t.slice(1,-1);if(n===`"`||n===`'`)throw Error(`Unclosed quoted value`);return t}function $r(e,t,n){let r=e[t];if(r===void 0)return[...n];if(!Array.isArray(r)||r.some(e=>!e))throw Error(`${t} is invalid`);return[...r]}function ei(e,t){if(e!==void 0){if(typeof e!=`string`||!e)throw Error(`${t} is invalid`);return e}}function ti(e){if(e===void 0)return 600;if(typeof e!=`string`)throw Error(`timeoutSeconds is invalid`);let t=Number(e);if(!Number.isFinite(t)||t<=0)throw Error(`timeoutSeconds must be positive`);return Math.min(t,kr)}function ni(e,t){if(e.some(e=>!e.startsWith(`/`)||e.includes(`\0`)||t===`writablePaths`&&e===`/`))throw Error(`${t} must contain absolute VFS paths`)}function ri(e){return`/sessions/.curated/${e.slice(e.lastIndexOf(`/`)+1)}`}function L(e){return`/sessions/.curation/${e.slice(e.lastIndexOf(`/`)+1)}`}function ii(e){return`${L(e)}/base.md`}function R(e){return`${L(e)}/draft.md`}function ai(e){return`${L(e)}/status.json`}async function oi(e,t,n){let r=``;try{let n=await e.readFile(t,{encoding:`utf-8`});r=typeof n==`string`?n:new TextDecoder().decode(n)}catch{}await e.mkdir(L(n),{recursive:!0}),await e.writeFile(ii(n),r),await e.writeFile(R(n),r)}function si(e,t,n){let r=e.map(e=>e===t?n:e);return r.includes(n)?r:[...r,n]}function ci(e,t,n,r,i){let a=e.model===`parent`||e.model===`cone`,o=ii(n),s=R(n);return{cwd:r.root,writablePaths:si(e.writablePaths,r.memoryPath,s),visiblePaths:[...e.visiblePaths,`${L(n)}/`],allowedCommands:e.allowedCommands,prompt:t,thinkingLevel:e.thinkingLevel,persistSession:!0,name:Rr(i?.folder??`cone`),...i?.jid?{parentJid:i.jid}:{},notifyOnComplete:!0,successReceiptPath:ri(n),mergeOnSuccess:{targetPath:r.memoryPath,basePath:o,draftPath:s},outcomeReceiptPath:ai(n),maxWallClockMs:e.timeoutSeconds*1e3,...!a&&e.model?{modelId:e.model}:{}}}function li(e,t){return t===Vr?e:e.replaceAll(Vr,t)}function ui(e,t){let n=e;for(let[e,r]of Object.entries(t))n=n.replaceAll(`{{${e}}}`,r);return n}function di(e,t,n){return new Promise(r=>{let i=!1,a=e=>{i||(i=!0,clearTimeout(s),n?.removeEventListener(`abort`,o),r(e))},o=()=>a({type:`aborted`}),s=setTimeout(()=>a({type:`timeout`}),t);n?.addEventListener(`abort`,o,{once:!0}),e.then(e=>a({type:`result`,result:e}),e=>a({type:`error`,error:e}))})}function z(e){return e instanceof Error?e.message:String(e)}var B=`/sessions`,V=`/sessions/index.json`;async function H(e){try{let t=await e.readFile(V,{encoding:`utf-8`}),n=typeof t==`string`?t:new TextDecoder().decode(t),r=JSON.parse(n);return Array.isArray(r)?r:[]}catch{return[]}}function U(e){return`${B}/${e.filename}`}function fi(e){let t=e,n=`Untitled`,r={},i=t.match(/^---\n([\s\S]*?)\n---\n+/);if(i){t=t.slice(i[0].length);let e=mi(i[1],`cost`),a=mi(i[1],`models`);e&&(r.cost=e),a&&(r.models=a);let o=i[1].match(/^cone:\s*(.+?)\s*$/m)?.[1];o&&(r.cone=o);let s=i[1].match(/^coneLabel:\s*(.+?)\s*$/m)?.[1];s&&(r.coneLabel=pi(s)),/^memorySkipped:\s*true\s*$/m.test(i[1])&&(r.memorySkipped=!0);let c=i[1].match(/^title:\s*(.+?)\s*$/m);c&&(n=pi(c[1]))}let a=t.match(/<!-- slicc:session-data\n([\s\S]*?)\n-->\n*/);if(a){try{let e=a[1].replace(/-- >/g,`-->`),t=JSON.parse(e);if(Array.isArray(t))return{title:n,messages:t,...r}}catch{}t=t.replace(/<!-- slicc:session-data\n[\s\S]*?\n-->\n*/,``)}return t=t.replace(/^#\s+[^\n]*\n+/,``),{title:n,messages:hi(t),...r}}function pi(e){let t=e.trim();if(!t.startsWith(`"`))return t;try{let e=JSON.parse(t);if(typeof e==`string`)return e}catch{}return t.replace(/^"|"$/g,``)}function mi(e,t){let n=RegExp(`^${t}:\\s*(.+?)\\s*$`,`m`).exec(e)?.[1];if(n)try{return JSON.parse(n)}catch{return}}function hi(e){let t=[],n=/^## (User|Assistant)\s*\n/gm,r=[],i;for(;(i=n.exec(e))!==null;)r.push({role:i[1]===`User`?`user`:`assistant`,start:i.index,bodyStart:i.index+i[0].length});for(let n=0;n<r.length;n++){let i=n+1<r.length?r[n+1].start:e.length,a=e.slice(r[n].bodyStart,i).trim();t.push({id:`frozen-${n}`,role:r[n].role,content:a,timestamp:0})}return t}function gi(e){let t=``;for(let n of e){let e=n.role===`user`?`User`:`Assistant`,r=n.role===`user`?ct(n.content):n.content;if(t+=`## ${e}\n${r}\n\n`,n.attachments?.length&&(t+=`Attachments:\n${n.attachments.map(e=>`- ${f(e)}`).join(`
386
+ `)}\n\n`),n.toolCalls)for(let e of n.toolCalls)t+=`### Tool: ${e.name}\nInput: ${JSON.stringify(e.input,null,2)}\nResult: ${e.result??``}\n\n`}return t}var _i=e({PENDING_SESSION_ATTEMPT_LIMIT:()=>3,SESSIONS_INDEX_PATH:()=>V,curateFrozenSessionMemories:()=>Ci,enrichPendingSession:()=>ra,freezeConeSession:()=>Si,listPendingEnrichments:()=>ea,markSnapshotUnavailable:()=>ba,processPendingSessions:()=>ta,readSessionsIndex:()=>H}),W=d(`session-freezer`),vi=4,yi=2048,bi=40,xi=`${B}/attachments`;async function Si(e){let t=await Bi(e.sessionStore,Ri(e));if(!t||t.messages.length<vi)return W.info(`Skipping freeze: session below threshold or missing`,{messageCount:t?.messages.length??0}),null;let n=Vi(t.messages),r=e.mode??`full`,i=r===`full`&&!!(e.apiKey&&e.model);!e.agenticMemorySpawn&&e.memory!==`skip`&&await Ei(e,n,i);let a=await Di(e,n,i)||qi(t.messages);return await Oi(e,t,a,r,i?await wi(e,a):void 0,!!e.agenticMemorySpawn&&e.memory!==`skip`)}async function Ci(e,t){let n=Vi(t.archive.messages),r;try{r=await Gr({spawn:e.agenticMemorySpawn,vfs:e.vfs,sessionArchivePath:U(t),sessionCount:await wr(e.vfs),...e.cone?{cone:e.cone}:{}})}catch(e){r={ok:!1,reason:e instanceof Error?e.message:String(e),legacyFallbackSafe:!1}}if(r.ok){let n=await ha(e.vfs,t.filename);return await oa(e.vfs,t.filename),n?(delete t.memoryPending,W.info(`Agentic memory pass completed`,{filename:t.filename}),n):(W.info(`Agentic memory pass completed; index entry already gone`,{filename:t.filename}),null)}return await _a(e.vfs,t.filename,r.reason),r.legacyFallbackSafe?(W.warn(`Agentic memory pass failed after finishing — falling back to legacy extraction`,{filename:t.filename,reason:r.reason}),await Ei(e,n,!0),null):(W.warn(`Agentic memory pass unfinished — entry stays pending for boot catch-up`,{filename:t.filename,reason:r.reason,attemptLimit:3}),null)}async function wi(e,t){try{return Ti(await(e.pickIcon??(await l(async()=>{let{pickLucideIcon:e}=await import(`./quick-llm-drlxgkUg.js`).then(e=>e.n);return{pickLucideIcon:e}},__vite__mapDeps([15,1,16,17,18,19,20,21,22,23,24,2,8,25,26,5,27,28,29,7,30,31,32,33,34,35,36,37,38,39]))).pickLucideIcon)({subject:`"${t}" — an archived chat session`})??void 0)}catch(e){W.warn(`Icon pick failed (freeze still proceeds)`,{error:e instanceof Error?e.message:String(e)});return}}function Ti(e){if(e)return Ke(e)?e:void 0}async function Ei(e,t,n){if(!n){W.info(`LLM unavailable — skipping memory extraction; freezing anyway`);return}let i=``;try{i=await r({messages:t,instruction:o,model:e.model,apiKey:e.apiKey,maxTokens:yi,headers:e.headers})}catch(e){W.warn(`Memory extraction call failed (freeze still proceeds)`,{error:e instanceof Error?e.message:String(e)});return}if(!i.trim()||i.trim()===`NONE`){W.info(`Memory extraction returned no durable memories`);return}try{await Qi(e.vfs,zi(Ri(e)),i.trim(),`new-session`,{model:e.model,apiKey:e.apiKey,headers:e.headers}),W.info(`Memory extracted and appended on new-session`)}catch(e){W.warn(`Memory append failed`,{error:e instanceof Error?e.message:String(e)})}}async function Di(e,t,n){if(!n)return``;try{return Ki(await r({messages:t,instruction:s,model:e.model,apiKey:e.apiKey,maxTokens:bi,headers:e.headers}))}catch(e){return W.warn(`Title generation call failed (using heuristic)`,{error:e instanceof Error?e.message:String(e)}),``}}async function Oi(e,t,n,r,i,a=!1){let o=new Date().toISOString(),s=crypto.randomUUID(),c=r===`quick`?`pending-${Yi()}.md`:`${o.replace(/[:.]/g,`-`)}-${Ji(n)}.md`,l=ki(t.messages),u=Ri(e),d={cone:u,...u!==`cone`&&e.cone?.label?{coneLabel:e.cone.label}:{}},f={filename:c,sessionId:s,title:n,frozenAt:o,messageCount:t.messages.length,...l??{},...d,...i?{icon:i}:{},...r===`quick`?{pendingEnrichment:!0}:{},...a?{memoryPending:!0}:{},...e.memory===`skip`?{memorySkipped:!0}:{}};try{await Zi(e.vfs,B);let r=await Mi(e.vfs,t.messages,c.replace(/\.md$/,``)),i={id:t.id,title:n,frozenAt:o,createdAt:t.createdAt,updatedAt:t.updatedAt,messageCount:t.messages.length,messages:r,...l??{},...d,...e.memory===`skip`?{memorySkipped:!0}:{}},a=Gi(i);return await e.vfs.writeFile(`${B}/${c}`,a),await $i(e.vfs,f),await e.vfs.flush(),W.info(`Cone session frozen`,{filename:c,title:n,cone:u,messageCount:t.messages.length}),{...f,archive:i}}catch(e){return W.warn(`Failed to write frozen session to VFS`,{error:e instanceof Error?e.message:String(e)}),null}}function ki(e){let t={total:0,input:0,output:0,cacheRead:0,cacheWrite:0},n=new Map,r=!1;for(let i of e){if(i.role!==`assistant`)continue;let{model:e,usage:a}=i;if(!e||!a||!ji(a))return null;let o=a.cost;r=!0,t.total+=o.total,t.input+=o.input,t.output+=o.output,t.cacheRead+=o.cacheRead,t.cacheWrite+=o.cacheWrite;let s=n.get(e)??{model:e,cost:0,turns:0,tokens:0};s.cost+=o.total,s.turns+=1,s.tokens+=a.input+a.output+a.cacheRead+a.cacheWrite,n.set(e,s)}return r?{cost:t,models:[...n.values()].sort((e,t)=>t.cost-e.cost)}:null}function Ai(e){return typeof e==`number`&&Number.isFinite(e)}function ji(e){let{cost:t}=e;return[e.input,e.output,e.cacheRead,e.cacheWrite].every(Ai)&&[t.input,t.output,t.cacheRead,t.cacheWrite,t.total].every(Ai)}async function Mi(e,t,n){let r={vfs:e,archiveDir:`${xi}/${n}`,copiedPaths:new Map,fileIndex:0},i=[];for(let e of t){if(!e.attachments?.some(Fi)){i.push(e);continue}let t=[];for(let n of e.attachments)t.push(await Ni(r,n));i.push({...e,attachments:t})}return i}async function Ni(e,t){if(!Fi(t))return t;let n=e.copiedPaths.get(t.path);if(n)return{...t,path:n};let r=await Pi(e.vfs,t.path);if(!r)return Li(t);let i=t.name.replace(/[^A-Za-z0-9._-]+/g,`_`)||`attachment`,a=`${e.archiveDir}/${e.fileIndex++}-${i}`;return await Zi(e.vfs,e.archiveDir),await e.vfs.writeFile(a,r),e.copiedPaths.set(t.path,a),{...t,path:a}}async function Pi(e,t){try{if(!await Ii(e,t))return null;let n=await e.readFile(t,{encoding:`binary`});if(!(n instanceof Uint8Array))throw Error(`Expected binary attachment content at ${t}`);return n}catch{return null}}function Fi(e){return typeof e.path==`string`&&e.path.startsWith(`/tmp/`)&&e.data===void 0&&e.text===void 0}async function Ii(e,t){let n=t.split(`/`).slice(1);if(n.length<2||n[0]!==`tmp`||n.some(e=>!e||e===`.`||e===`..`))return!1;let r=`/`;for(let t=0;t<n.length;t+=1){let i=(await e.readDir(r)).find(e=>e.name===n[t]);if(!i)return!1;if(t===n.length-1)return i.type===`file`;if(i.type!==`directory`)return!1;r=r===`/`?`/${n[t]}`:`${r}/${n[t]}`}return!1}function Li(e){let{path:t,...n}=e;return{...n,error:e.error??`Archived attachment file is missing or unsafe to preserve.`}}function Ri(e){return e.cone?.folder||`cone`}function zi(e){return ar({parentJid:null,folder:e}).memoryPath}async function Bi(e,t){let n=$e({folder:t});try{return await e.load(n)}catch(e){return W.warn(`Failed to load cone chat session`,{sessionId:n,error:e instanceof Error?e.message:String(e)}),null}}function Vi(e){return e.map(e=>({role:e.role,content:[{type:`text`,text:e.content}],timestamp:e.timestamp}))}var Hi=`<!-- slicc:session-data
387
+ `,Ui=`
388
+ -->`;function Wi(e){return e.map(e=>{let t={id:e.id,role:e.role,content:e.content,timestamp:e.timestamp};return e.attachments?.length&&(t.attachments=e.attachments),e.toolCalls?.length&&(t.toolCalls=e.toolCalls.map(e=>({id:e.id,name:e.name,input:e.input,...e.result===void 0?{}:{result:e.result},...e.isError?{isError:e.isError}:{}}))),e.source&&(t.source=e.source),e.channel&&(t.channel=e.channel),t})}function Gi(e){let t=(e.cost?`cost: ${JSON.stringify(e.cost)}\n`:``)+(e.models?`models: ${JSON.stringify(e.models)}\n`:``),n=(e.cone?`cone: ${e.cone}\n`:``)+(e.coneLabel?`coneLabel: ${JSON.stringify(e.coneLabel)}\n`:``)+(e.memorySkipped?`memorySkipped: true
389
+ `:``),r=`---\nid: ${e.id}\ntitle: ${JSON.stringify(e.title)}\nfrozenAt: ${e.frozenAt}\ncreatedAt: ${e.createdAt}\nupdatedAt: ${e.updatedAt}\nmessageCount: ${e.messageCount}\n`+t+n+`---
390
+
391
+ `,i=`${Hi}${JSON.stringify(Wi(e.messages)).replace(/-->/g,`-- >`)}${Ui}\n\n`,a=`# ${e.title}\n\n`;return r+i+a+gi(e.messages)}function Ki(e){let t=e.trim();return t=t.replace(/^["'`]+|["'`]+$/g,``).trim(),t=t.replace(/\s+/g,` `),t.length>80&&(t=t.slice(0,80).trimEnd()),t}function qi(e){let t=e.find(e=>e.role===`user`);if(!t?.content)return`untitled-session`;let n=t.content.trim().replace(/\s+/g,` `);return n.length>60?`${n.slice(0,60)}…`:n||`untitled-session`}function Ji(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``).slice(0,48)||`session`}function Yi(){return`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,6)}`}function Xi(e){return e.startsWith(`pending-`)}async function Zi(e,t){try{await e.mkdir(t,{recursive:!0})}catch{}}async function Qi(e,t,n,r,i){let a=t,o=``;try{let t=await e.readFile(a,{encoding:`utf-8`});o=typeof t==`string`?t:new TextDecoder().decode(t)}catch(t){if(!(t instanceof C)||t.code!==`ENOENT`)throw t;await Zi(e,a.slice(0,a.lastIndexOf(`/`)))}let s=`## Auto-extracted (${new Date().toISOString().slice(0,10)}, ${r})`,c=`${o.length===0||o.endsWith(`
392
+ `)?``:`
393
+ `}\n${s}\n\n${n}\n`;await e.writeFile(a,o+c);try{await Er({vfs:e,memoryPath:a,model:i?.model,apiKey:i?.apiKey,headers:i?.headers,signal:i?.signal})}catch(e){W.warn(`Cone memory budget step threw (append already committed)`,{error:e instanceof Error?e.message:String(e)})}}async function $i(e,t){let n=[];try{let t=await e.readFile(V,{encoding:`utf-8`}),r=typeof t==`string`?t:new TextDecoder().decode(t),i=JSON.parse(r);Array.isArray(i)&&(n=i)}catch(e){if(!(e instanceof C)||e.code!==`ENOENT`)throw e}let r=[t,...n.filter(e=>e.filename!==t.filename)];await e.writeFile(V,JSON.stringify(r,null,2))}async function ea(e){return(await H(e)).filter(e=>(e.pendingEnrichment===!0||e.memoryPending===!0)&&na(e)<3)}async function ta(e){let t={attempted:0,completed:0};if(!e.model||!e.apiKey)return t;try{for(let t of await H(e.vfs))t.memoryPending===!0&&t.memoryFailed===void 0&&na(t)>=3&&await _a(e.vfs,t.filename,`catch-up retries exhausted (3)`);let n=await ea(e.vfs);for(let r of n)try{let n=await ga(e.vfs,r.filename);if(!n)continue;t.attempted+=1,await ra(e.vfs,n,{model:e.model,apiKey:e.apiKey,headers:e.headers})&&(t.completed+=1)}catch(e){W.warn(`Pending session catch-up attempt failed`,{filename:r.filename,error:e instanceof Error?e.message:String(e)})}}catch(e){W.warn(`Pending session catch-up failed`,{error:e instanceof Error?e.message:String(e)})}return t}function na(e){let t=e.pendingAttemptCount;return typeof t==`number`&&Number.isInteger(t)&&t>0?t:0}async function ra(e,t,n){if(!t.pendingEnrichment&&!t.memoryPending)return null;let r=await ca(e,t);if(r===null)return null;let i=la(t,r);if(i===null)return null;let a=t.memoryPending===!0&&n.skipMemory!==!0&&await aa(e,t),o=a||t.memorySkipped===!0?{...n,skipMemory:!0}:n,s=await ua(t,i,o);if(s===null)return null;let c=await sa(o,s.newTitle);await da(e,t,s.bullets,o);let l=await pa(e,t,r,s.newTitle,c,n.skipMemory===!0);return l&&a&&(await oa(e,t.filename),await va(e,l.filename),await ia(e,t.filename)),l}async function ia(e,t){for(let n of[ii(`/sessions/${t}`),R(`/sessions/${t}`)])try{await e.rm(n)}catch{}}async function aa(e,t){try{return await e.stat(ri(`/sessions/${t.filename}`)),!0}catch{return!1}}async function oa(e,t){try{await e.rm(ri(`/sessions/${t}`))}catch{}}async function sa(e,t){if(e.pickIcon)try{return await Ti(await e.pickIcon({subject:`"${t}" — an archived chat session`})??void 0)}catch(e){W.warn(`Enrichment icon pick failed (continuing without icon)`,{error:e instanceof Error?e.message:String(e)});return}}async function ca(e,t){try{let n=await e.readFile(U(t),{encoding:`utf-8`});return typeof n==`string`?n:new TextDecoder().decode(n)}catch(e){return e?.code===`ENOENT`?W.info(`Pending archive missing — treating as already enriched`,{filename:t.filename}):W.warn(`Failed to read pending archive (entry stays pending)`,{filename:t.filename,error:e instanceof Error?e.message:String(e)}),null}}function la(e,t){let n;try{n=fi(t).messages}catch(t){return W.warn(`Failed to parse pending archive — leaving entry intact`,{filename:e.filename,error:t instanceof Error?t.message:String(t)}),null}return n.length===0?(W.info(`Pending archive has no messages — skipping enrichment`,{filename:e.filename}),null):Vi(n)}async function ua(e,t,n){let i=``;if(!n.skipMemory)try{i=await r({messages:t,instruction:o,model:n.model,apiKey:n.apiKey,maxTokens:yi,headers:n.headers})}catch(t){return W.warn(`Enrichment memory call failed (entry stays pending)`,{filename:e.filename,error:t instanceof Error?t.message:String(t)}),null}let a=``;try{a=Ki(await r({messages:t,instruction:s,model:n.model,apiKey:n.apiKey,maxTokens:bi,headers:n.headers}))}catch(t){return W.warn(`Enrichment title call failed (entry stays pending)`,{filename:e.filename,error:t instanceof Error?t.message:String(t)}),null}return a?{bullets:i,newTitle:a}:(W.info(`Enrichment title call returned empty — entry stays pending`,{filename:e.filename}),null)}async function da(e,t,n,r){let i=n.trim();if(!(!i||i===`NONE`))try{await Qi(e,zi(t.cone||`cone`),i,`pending-enrichment`,{model:r.model,apiKey:r.apiKey,headers:r.headers})}catch(e){W.warn(`Enrichment memory append failed (continuing with title rewrite)`,{filename:t.filename,error:e instanceof Error?e.message:String(e)})}}function fa(e,t,n,r,i){let a=r??e.icon;return{filename:t,title:n,frozenAt:e.frozenAt,messageCount:e.messageCount,...e.cost?{cost:e.cost}:{},...e.models?{models:e.models}:{},...e.cone?{cone:e.cone}:{},...e.coneLabel?{coneLabel:e.coneLabel}:{},...e.sessionId?{sessionId:e.sessionId}:{},...a?{icon:a}:{},...e.completeSnapshotUnavailable?{completeSnapshotUnavailable:!0}:{},...i&&e.memoryPending?{memoryPending:!0}:{},...e.memorySkipped?{memorySkipped:!0}:{}}}async function pa(e,t,n,r,i,a=!1){let o=U(t),s=Xi(t.filename),c=s?r:t.title,l=s?`${t.frozenAt.replace(/[:.]/g,`-`)}-${Ji(r)}.md`:t.filename,u=`${B}/${l}`;if(s)try{await Zi(e,B),await e.writeFile(u,ma(n,c))}catch(e){return W.warn(`Enrichment write failed (entry stays pending)`,{filename:t.filename,error:e instanceof Error?e.message:String(e)}),null}let d=fa(t,l,c,i,a);try{await ya(e,t.filename,d)}catch(e){return W.warn(`Enrichment index update failed (entry may stay pending)`,{filename:t.filename,error:e instanceof Error?e.message:String(e)}),null}if(u!==o)try{await e.rm(o)}catch(e){W.info(`Stale pending archive cleanup failed (harmless)`,{oldPath:o,error:e instanceof Error?e.message:String(e)})}try{await e.flush()}catch{}return W.info(`Pending session enriched`,{oldFilename:t.filename,newFilename:l,title:c}),d}function ma(e,t){let n=e.match(/^---\n([\s\S]*?)\n---\n([\s\S]*)$/);if(!n)return e;let r=n[1].replace(/^title:\s*.+$/m,`title: ${JSON.stringify(t)}`),i=n[2];return i=i.replace(/^#\s+[^\n]*$/m,`# ${t}`),`---\n${r}\n---\n${i}`}var G=Promise.resolve();async function ha(e,t){let n=null,r=async()=>{let r=await H(e),i=r.findIndex(e=>e.filename===t);if(i===-1)return;let{memoryPending:a,pendingEnrichment:o,pendingAttemptCount:s,memoryFailed:c,...l}=r[i],u={...l,memoryCuratedAt:new Date().toISOString()},d=r.slice();d[i]=u,await e.writeFile(V,JSON.stringify(d,null,2)),await e.flush(),n=u},i=G.then(r,r);G=i.then(()=>void 0,()=>void 0);try{await i}catch(e){W.warn(`Failed to clear agentic memory pending marker`,{filename:t,error:e instanceof Error?e.message:String(e)})}return n}async function ga(e,t){let n=null,r=async()=>{let r=await H(e),i=r.findIndex(e=>e.filename===t);if(i===-1)return;let a=r[i];if(!a.pendingEnrichment&&!a.memoryPending)return;let o=na(a);if(o>=3)return;n={...a,pendingAttemptCount:o+1};let s=r.slice();s[i]=n,await e.writeFile(V,JSON.stringify(s,null,2)),await e.flush()},i=G.then(r,r);return G=i.then(()=>void 0,()=>void 0),await i,n}async function _a(e,t,n){let r=async()=>{let r=await H(e),i=r.findIndex(e=>e.filename===t);if(i===-1)return;let a=r.slice();a[i]={...r[i],memoryFailed:n.slice(0,300)},await e.writeFile(V,JSON.stringify(a,null,2)),await e.flush()},i=G.then(r,r);G=i.then(()=>void 0,()=>void 0);try{await i}catch(e){W.warn(`Failed to record curator failure in sessions index`,{filename:t,error:e instanceof Error?e.message:String(e)})}}async function va(e,t){let n=async()=>{let n=await H(e),r=n.findIndex(e=>e.filename===t);if(r===-1)return;let{memoryFailed:i,...a}=n[r],o=n.slice();o[r]={...a,memoryCuratedAt:new Date().toISOString()},await e.writeFile(V,JSON.stringify(o,null,2)),await e.flush()},r=G.then(n,n);G=r.then(()=>void 0,()=>void 0);try{await r}catch(e){W.warn(`Failed to record curator completion in sessions index`,{filename:t,error:e instanceof Error?e.message:String(e)})}}async function ya(e,t,n){let r=async()=>{let r=[];try{let t=await e.readFile(V,{encoding:`utf-8`}),n=typeof t==`string`?t:new TextDecoder().decode(t),i=JSON.parse(n);Array.isArray(i)&&(r=i)}catch(e){if(!(e instanceof C)||e.code!==`ENOENT`)throw e}let i=r.findIndex(e=>e.filename===t),a;i===-1?a=[n,...r.filter(e=>e.filename!==n.filename)]:(a=r.slice(),a[i]=n,a=a.filter((e,t)=>t===i||e.filename!==n.filename)),await e.writeFile(V,JSON.stringify(a,null,2))},i=G.then(r,r);return G=i.then(()=>void 0,()=>void 0),i}async function ba(e,t){let n=async()=>{let n=[];try{let t=await e.readFile(V,{encoding:`utf-8`}),r=typeof t==`string`?t:new TextDecoder().decode(t),i=JSON.parse(r);Array.isArray(i)&&(n=i)}catch(e){if(!(e instanceof C)||e.code!==`ENOENT`)throw e;return}if(!n.find(e=>e.filename===t))return;let r=n.map(e=>e.filename===t?{...e,completeSnapshotUnavailable:!0}:e);await e.writeFile(V,JSON.stringify(r,null,2))},r=G.then(n,n);return G=r.then(()=>void 0,()=>void 0),r}var xa=`slicc:followers-changed`;function Sa(e){let t=e.replace(/^follower-/,``);return t.length>12?`${t.slice(0,8)}…`:t}function Ca(e){return e.floatType===`ios`?`iOS`:e.floatType===`electron`?`Electron`:e.floatType===`extension`?`Extension`:e.floatType===`standalone`?`Standalone`:e.runtime?.includes(`cli`)?`CLI`:`Follower`}function wa(e){return e.floatType===`ios`?`smartphone`:e.floatType===`electron`||e.floatType===`standalone`?`monitor`:e.floatType===`extension`?`blocks`:e.runtime?.includes(`cli`)?`terminal`:`radio`}function Ta(e,t=Date.now()){if(!e)return null;let n=new Date(e).getTime();if(!Number.isFinite(n))return null;let r=Math.max(0,Math.floor((t-n)/1e3));return r<60?`${r}s`:r<3600?`${Math.floor(r/60)}m`:r<86400?`${Math.floor(r/3600)}h`:`${Math.floor(r/86400)}d`}function Ea(e){return e.health===`stalled`?`warn`:e.peerState===`connecting`?`idle`:e.peerState===`connected`&&e.health===`live`?`active`:`idle`}function Da(e,t=Date.now()){let n=e.health===`stalled`?`stalled`:e.peerState===`connecting`?`connecting`:`connected`,r=Ta(e.connectedAt,t);return r?`${n} ${r}`:n}function Oa(e){let t=[];return e.exec&&t.push(`can run commands`),e.cdp&&t.push(`hosts tabs`),t}function ka(e){return`${Ca(e)} · ${Sa(e.runtimeId)}`}function Aa(e){return e.motd??e.runtime??void 0}function ja(e,t=Date.now()){return e.map(e=>({id:e.runtimeId,icon:wa(e),title:ka(e),detail:Aa(e),state:Ea(e),stateText:Da(e,t),chips:Oa(e)}))}var Ma=`__slicc_binary__`,Na=`b64`;function Pa(e){if(!e||typeof e!=`object`)return!1;let t=e;return t[Ma]===Na&&typeof t.data==`string`}function Fa(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Uint8Array)}function Ia(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Uint8Array)&&!Pa(e)}function La(e){if(e instanceof Uint8Array)return{[Ma]:Na,data:m(e)};if(Array.isArray(e))return e.map(La);if(Fa(e)){let t={};for(let[n,r]of Object.entries(e))t[n]=La(r);return t}return e}function Ra(e){if(Pa(e))return h(e.data);if(Array.isArray(e))return e.map(Ra);if(Ia(e)){let t={};for(let[n,r]of Object.entries(e))t[n]=Ra(r);return t}return e}var za=d(`panel-transport`);function Ba(e){return typeof e==`object`&&!!e&&`source`in e&&`payload`in e}function Va(){return{onMessage:e=>{let t=(t,n,r)=>(Ba(t)&&e(Ra(t)),!1);return chrome.runtime.onMessage.addListener(t),()=>chrome.runtime.onMessage.removeListener(t)},send:(e,t)=>{let n=La(e);chrome.runtime.sendMessage({source:`panel`,payload:n}).catch(e=>{za.error(`failed to send to offscreen`,{error:e instanceof Error?e.message:String(e)})})}}}var Ha=`unknown-parent`,K=d(`offscreen-client`),Ua=class{eventListeners=new Set;callbacks;scoops=[];scoopStatuses=new Map;currentMessageId=new Map;toolDepth=new Map;ready=!1;stateRetryTimer=null;localFs=null;pendingClearAcks=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){K.error(`onScoopSelected handler threw`,{error:e instanceof Error?e.message:String(e)})}}locked=!1;constructor(e,t){this.callbacks=e,this.transport=t??Va(),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}:{}})},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(!w(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&&w(t)&&T(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-${q()}`,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-${q()}`,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-${q()}`,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&&K.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}K.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})}sendWebhookEvent(e,t,n){this.send({type:`lick-webhook-event`,webhookId:e,headers:t,body:n})}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?(K.warn(`Offscreen restarted — re-requesting state`),this.ready=!1):K.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`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;Wa(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){K.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}-${q()}`,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}-${q()}`,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}-${q()}`,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}-${q()}`;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}-${q()}`;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&&et(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){K.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&&Wa(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=>w(e))?.jid??null}coneJidFromWire(e){return e.find(e=>e.parentId===void 0?e.isCone:e.parentId===null)?.jid??null}msgScoopToRegistered(e,t){return Ye({jid:e.jid,name:e.name,folder:e.folder,parentJid:e.parentId===void 0?e.isCone?null:t??Ha: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){K.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 q(){return Date.now().toString(36)+Math.random().toString(36).slice(2,8)}function Wa(e,t){Je({state:e.state,error:e.error,reconnectAttempts:e.reconnectAttempts,session:e.session?{...e.session}:null}),me({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 J(e){return!e.includes(`\0`)}function Ga(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(!J(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(!J(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),!J(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),!J(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(J(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 Ka(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 qa(e){let t=Ka(e);return{onMessage:e=>t.onMessage(e),send:(e,n)=>{t.send({source:`panel`,payload:e},n)}}}function Ja(e,t){let n=Ka(e),r=new Map,i=n.onMessage(async e=>{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);return}}});return()=>{i();for(let[e,n]of r)t.off(e,n);r.clear()}}function Ya(){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 Xa(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 Za(e){let{worker:t,realCdpTransport:n}=e,r=e.readyTimeoutMs??3e4,i=e.localStorageSeed??{},a=new MessageChannel,o=new MessageChannel,s=qa(a.port1),c=e.makeClient(s);e.onWorkerScriptError&&e.worker.addEventListener?.(`error`,()=>e.onWorkerScriptError());let l=Ja(o.port1,n),{ready:u,cleanup:d}=Xa(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.99.8-mtb9anv9`,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 Qa(e){return Za({worker:e.workerUrl?new Worker(e.workerUrl,{type:`module`}):new Worker(new URL(`/assets/kernel-worker-BpjE-7BD.js`,``+import.meta.url),{type:`module`}),realCdpTransport:e.realCdpTransport,makeClient:e.makeClient,readyTimeoutMs:e.readyTimeoutMs,localStorageSeed:e.localStorageSeed??Ya(),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 $a=1048576,eo=`r`;function to(e){return e.replace(/~/g,`~0`).replace(/\//g,`~1`)}function no(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++)no(e[r],`${t}/${r}`,n);return}if(typeof e==`object`&&e)for(let[r,i]of Object.entries(e))no(i,`${t}/${to(r)}`,n)}function ro(e,t,n){let r=!1,i=[];for(let a=0;a<e.length;a++){let o=ao(e[a],`${t}/${a}`,n);o!==e[a]&&(r=!0),i.push(o)}return r?i:e}function io(e,t,n){let r=!1,i={};for(let[a,o]of Object.entries(e)){let e=ao(o,`${t}/${to(a)}`,n);e!==o&&(r=!0),i[a]=e}return r?i:e}function ao(e,t,n){return typeof e==`string`?n.get(t)??e:Array.isArray(e)?ro(e,t,n):typeof e==`object`&&e?io(e,t,n):e}function oo(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 so(e,t,n){let r=[],i=0;for(;i<e.length;){if(n?.aborted)throw new v(`redaction-unavailable`);let a=0,o=i;for(;o<e.length;){let t=e[o].length;if(o>i&&a+t>$a)break;a+=t,o++}let s=e.slice(i,o),c;try{c=await t.redact(s,n)}catch{throw new v(`redaction-unavailable`)}if(c.length!==s.length)throw new v(`redaction-unavailable`);r.push(...c),i=o}return r}function co(e,t,n,r){let i=[],a=oo(e);for(let{category:e,id:t}of a.values())i.push({id:t,category:e,detector:`pre-obfuscated`,target:n});let o=oo(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}=y(t,eo,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 lo(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 uo(e,t,n,r){if(r?.aborted)throw new v(`redaction-unavailable`);let{privacy:i,...a}=e,o=[];no(a,``,o);let s=[...t.entries()],c=await so([...o.map(e=>e.value),...s.map(([,e])=>e)],n,r),l=[],u={},d=1,f=new Map,p=[];for(let e=0;e<o.length;e++){let t=o[e],n=co(t.value,c[e],{kind:`json`,pointer:t.pointer},d);d=n.nextId,n.finalText!==t.value&&f.set(t.pointer,n.finalText),p.push(n)}lo(p,l,u);let m=new Map,h=o.length,g=[];for(let e=0;e<s.length;e++){let[t,n]=s[e],r=co(n,c[h+e],{kind:`attachment`,attachmentId:t},d);d=r.nextId,m.set(t,r.finalText),g.push(r)}lo(g,l,u);let _=ao(e,``,f);return{document:{..._,privacy:{..._.privacy,redactionCounts:u,redactions:l}},textAttachments:m}}function fo(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 po(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 mo={"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 ho(e,t){return mo[e]??(t===`text-redacted`?`.txt`:`.bin`)}function go(e,t,n){return`attachments/att-${String(e+1).padStart(4,`0`)}${ho(t,n)}`}function _o(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 vo(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 yo(e,t,n,r,i){let a=fo(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(_o(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=_o(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 bo(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:_o(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(yo(c.a,s.attachmentId,s.conversationId,s.messageId,r))}return{pendingPromises:i,mismatchedConvIds:a,processedUiPositions:o}}function xo(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 So(e,t,n,r,i,a,o){let s=xo(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(yo(i,l,n,e.id,o)),c.push({type:`attachment-ref`,attachmentId:l}))}return c}function Co(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=So(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 wo(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,go(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 To(e,t,n,r,i){let{rawAttachments:a,textMap:o}=wo(e,n),s,c;try{let e=await uo({...t,attachments:a},o,r,i);s=e.document,c=e.textAttachments}catch(e){throw e instanceof v?e:new v(`attachment-unreadable`)}let l=new Map;for(let t of e){if(l.has(t.attachmentId))throw new v(`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 v(`schema-invalid`);let n=t.handling===`text-redacted`?new TextEncoder().encode(c.get(t.attachmentId)??t.rawText??``):t.rawBytes,r=await po(n);return u.set(e.path,n),{...e,byteLength:n.length,sha256:r}}));return{redactedDocument:{...s,attachments:d},bundleFiles:u}}async function Eo(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}=bo(vo(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}=Co(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 To(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 Do=50;function Oo(e){return $e(e)}function ko(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 Ao(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:w(t)?`cone`:`scoop`,name:t.name,...t.folder&&!w(t)?{folder:t.folder}:{},...t.parentJid?{parentConversationId:t.parentJid}:{},...t.originToolCallId?{originToolCallId:t.originToolCallId}:{},messages:e};o.push(n);let c=Oo(t),l=a.get(c);l&&s.set(t.jid,l.messages)}return{sources:o,chatMessagesByConversation:s}}async function jo(e,t,n={}){let r=e=>n.rootJid===void 0?e:Xe(e,n.rootJid);for(;;){let n=r(e.listScoops());for(;n.some(t=>e.isProcessing(t.jid));)if(t?.aborted||(await e.wait(Do,t),t?.aborted))throw new v(`transfer-aborted`);let i=ko(n,e),[a,o]=await Promise.all([e.loadPersistedSessions(),e.loadUiChatSessions()]);if(t?.aborted)throw new v(`transfer-aborted`);let s=r(e.listScoops());if(i===ko(s,e))return Ao(s,a,o,e)}}function Mo(e,t){return`${e}-msg-${t.toString().padStart(6,`0`)}`}function No(e,t){return{type:`attachment-ref`,attachmentId:`${e}-img-${t}`}}function Po(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(No(t,r++));return n}function Fo(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=No(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 Io(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=No(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 Lo(e,t,n){let r=Mo(t,n),i=Po(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 Ro(e,t,n){let r=Mo(t,n),{blocks:i,excluded:a,images:o}=Fo(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 zo(e,t,n){let r=Mo(t,n),{blocks:i,images:a}=Io(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 Bo(e,t,n){return e.role===`user`?Lo(e,t,n):e.role===`assistant`?Ro(e,t,n):e.role===`toolResult`?zo(e,t,n):{message:null,excludedReasoningBlocks:0,images:new Map}}function Vo(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 Ho(e){let t=0,n=new Map;return{conversations:e.map(e=>{let r=e.messages.flatMap((r,i)=>{let a=Bo(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:Vo(e),excludedReasoningBlocks:t,canonicalImages:n}}var Uo=(()=>{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 Wo(e){let t=-1>>>0;for(let n=0;n<e.length;n++)t=t>>>8^Uo[(t^e[n])&255];return~t>>>0}var Go=new TextEncoder;function Y(e,t,n){e[t]=n&255,e[t+1]=n>>>8&255}function X(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 Ko(e,t,n){let r=new Uint8Array(30+e.length);return r[0]=80,r[1]=75,r[2]=3,r[3]=4,Y(r,4,20),Y(r,6,2048),Y(r,8,0),Y(r,10,0),Y(r,12,0),X(r,14,n),X(r,18,t),X(r,22,t),Y(r,26,e.length),Y(r,28,0),r.set(e,30),r}function qo(e,t,n,r){let i=new Uint8Array(46+e.length);return i[0]=80,i[1]=75,i[2]=1,i[3]=2,Y(i,4,20),Y(i,6,20),Y(i,8,2048),Y(i,10,0),Y(i,12,0),Y(i,14,0),X(i,16,n),X(i,20,t),X(i,24,t),Y(i,28,e.length),Y(i,30,0),Y(i,32,0),Y(i,34,0),Y(i,36,0),X(i,38,0),X(i,42,r),i.set(e,46),i}function Jo(e,t,n){let r=new Uint8Array(22);return r[0]=80,r[1]=75,r[2]=5,r[3]=6,Y(r,4,0),Y(r,6,0),Y(r,8,e),Y(r,10,e),X(r,12,t),X(r,16,n),Y(r,20,0),r}function Yo(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 Xo(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*Zo(e,t,n,r,i){if(n?.aborted)throw i(new v(`transfer-aborted`)),new v(`transfer-aborted`);let a=()=>i(new v(`transfer-aborted`));n?.addEventListener(`abort`,a,{once:!0});let o=be.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=Go.encode(`transcript.json`),f=Wo(i),p=Ko(a,i.length,f);if(l.push({nameBytes:a,size:i.length,crc:f,localOffset:c}),n?.aborted||(yield*d(p),n?.aborted))throw new v(`transfer-aborted`);yield*d(i);for(let[e,r]of t){if(n?.aborted)throw new v(`transfer-aborted`);let t=Go.encode(e),i=Wo(r),a=Ko(t,r.length,i);if(l.push({nameBytes:t,size:r.length,crc:i,localOffset:c}),yield*d(a),n?.aborted)throw new v(`transfer-aborted`);yield*d(r)}let m=c;for(let e of l){if(n?.aborted)throw new v(`transfer-aborted`);yield*d(qo(e.nameBytes,e.size,e.crc,e.localOffset))}if(n?.aborted)throw new v(`transfer-aborted`);yield*d(Jo(l.length,c-m,m)),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 v(`transfer-aborted`)))}}var Qo=4294967295,$o=65535;function es(e,t,n){for(let e of t.keys())if(!Yo(e))throw new v(`schema-invalid`);if(t.size+1>$o)throw new v(`schema-invalid`);for(let e of t.values())if(e.byteLength>Qo)throw new v(`schema-invalid`);let r,i,a=new Promise((e,t)=>{r=e,i=t});return{filename:Xo(e),chunks:Zo(e,t,n,r,i),completion:a}}function ts(e,t,n,r,i,a={}){return{schemaVersion:1,export:{id:crypto.randomUUID(),generatedAt:new Date().toISOString(),producer:{application:`slicc`,version:i},format:_},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 ns(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 rs(e){if(!g(e).ok)throw new v(`schema-invalid`)}function is(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 as(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 os(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 ss=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),rs(i.document),r?.({phase:`packaging`}),es(i.document,i.bundleFiles,n)}async captureFrozen(e,t){let n=await jo(this.deps.collection,t,{...e.rootJid?{rootJid:e.rootJid}:{}});if(e.rootJid&&n.sources.length===0)return;let r=Ho(n.sources),{document:i,bundleFiles:a}=await Eo({document:ts(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});rs(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 jo(this.deps.collection,e),r=Ho(n.sources),{id:i,title:a}=this.deps.getActiveSessionInfo(),o=ts(i,a,`active`,r,this.deps.version);return t?.({phase:`redacting`}),Eo({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 uo(e.document,n,this.deps.knownSecrets,t);r=a.document,i=a.textAttachments}catch{throw new v(`redaction-unavailable`)}let a=is(r.attachments,i,e.attachments),o=await as(r.attachments,a);return{document:{...r,attachments:o},bundleFiles:a}}async buildLegacyPartial(e,t,n){let r=(await H(this.deps.vfs)).find(t=>t.sessionId===e||!t.sessionId&&t.filename===e);if(!r)throw new v(`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 v(`session-not-found`)}let{title:a,messages:o}=fi(i),s=`legacy-cone`,c=ns(o,s),l=os(i),u={schemaVersion:1,export:{id:crypto.randomUUID(),generatedAt:new Date().toISOString(),producer:{application:`slicc`,version:this.deps.version},format:_},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:[]},d=new Map([[s,o]]);return n?.({phase:`redacting`}),Eo({document:u,chatMessagesByConversation:d,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 v(`attachment-unreadable`);return t}},cs=`/sessions/data`,ls=`document.json`;async function us(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 ds(e){if(e.length===0||/[/\\\x00]/.test(e)||e===`..`||e===`.`||e.includes(`..`)||!/^[a-zA-Z0-9._-]+$/.test(e))throw new v(`session-not-found`)}function fs(e){return`${cs}/${e}`}function ps(e){return`${cs}/.tmp-${e}`}async function ms(e,t){try{await e.mkdir(t,{recursive:!0})}catch{}}async function hs(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 hs(e,n);try{await e.rm(n)}catch{}}try{await e.rm(t)}catch{}}async function gs(e,t,n){await ms(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 gs(e,r,a);else{let t=await e.readFile(r,{encoding:`binary`});await e.writeFile(a,t)}}}async function _s(e,t,n){ds(t);let r=ps(t),i=fs(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 v(`schema-invalid`);await hs(e,i),await ms(e,r);try{let t=[...n.document.attachments];for(let[e,r]of n.attachments){let n=await us(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}/${ls}`,s),n.attachments.size>0)for(let[t,i]of n.attachments){let n=`${r}/${t}`,a=t.lastIndexOf(`/`);a!==-1&&await ms(e,`${r}/${t.slice(0,a)}`),await e.writeFile(n,i)}await e.flush(),await gs(e,r,i),await e.flush()}catch(t){throw await hs(e,r),t}await hs(e,r)}async function vs(e,t){ds(t);let n=fs(t),r=`${n}/${ls}`,i;try{let t=await e.readFile(r,{encoding:`utf-8`});i=typeof t==`string`?t:new TextDecoder().decode(t)}catch{throw new v(`session-not-found`)}let a;try{a=JSON.parse(i)}catch{throw new v(`schema-invalid`)}if(!g(a).ok)throw new v(`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 v(`transfer-corrupt`)}if(await us(i)!==t.sha256)throw new v(`transfer-corrupt`);o.set(t.path,i)}return{document:a,attachments:o}}function ys(e){return`error`in e}function Z(){throw new v(`redaction-unavailable`)}function bs(e,t){return(typeof e!=`object`||!e||!Array.isArray(e.texts)||e.texts.length!==t)&&Z(),e.texts}function xs(){return{async redact(e){let t;try{t=await fetch(b(`/api/secrets/redact-export`),{method:`POST`,headers:x({"content-type":`application/json`}),body:JSON.stringify({texts:e})})}catch{Z()}t.ok||Z();let n;try{n=await t.json()}catch{Z()}return bs(n,e.length)}}}function Ss(){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{Z()}return typeof t==`object`&&t&&ys(t)&&Z(),bs(t,e.length)}}}function Cs(){return{async redact(e){let t;try{t=await ne(`secrets.redact-export`,{texts:e})}catch{Z()}return t??Z(),typeof t==`object`&&t&&ys(t)&&Z(),bs(t,e.length)}}}function ws(){return{async redact(e){Z()}}}function Ts(){let e=te();return e===`connect`?ws():e===`extension-direct`?Ss():e===`extension-delegate`?Cs():xs()}function Es(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 Ds=`padding:0.5rem 1.25rem;border-radius:0.375rem;cursor:pointer;font:inherit;font-size:0.875rem;`,Os=`${Ds}border:none;background:var(--s2-accent-color,#0265dc);color:#fff;`,ks=`${Ds}border:none;background:#d23;color:#fff;`,As=`${Ds}background:transparent;border:1px solid var(--s2-border-color,#e0e0e0);color:inherit;`;function js(e,t,n){return{...Es({parentId:null,name:e,folder:`cone-pending-${t.length+1}`}),assistantLabel:e,...n?{model:n}:{}}}function Ms(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 Ns(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 Ps(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=()=>Lt(n.getScoops(),e.getSelected()),u=()=>{if(!s)return;let e=s;s=null,e.hide?.(),e.remove()},d=e=>{u();let t=Ms(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=js(e.name,n.getScoops(),t?Ze(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=Ns(i,f);d({heading:`New cone`,body:e,actions:[{text:`Create`,style:Os,data:`create`,onClick:()=>f(e.readDraft())},{text:`Cancel`,style:As,data:`cancel`,onClick:u}]}),queueMicrotask(()=>e.querySelector(`input`)?.focus())},m=t=>{u();let i=T(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=T(n.getScoops()).find(e=>e.jid!==a.jid);t&&e.selectScoop(t)}o=!1,g()})()},h=e=>{let t=E(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:ks,data:`drop`,onClick:()=>m(e.jid)},{text:`Cancel`,style:As,data:`cancel`,onClick:u}]})},g=()=>{let t=T(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||T(n.getScoops()).length<=1||o||h(e)}),g(),{refresh:g,dialog:()=>s}}var Fs=5e3,Is=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 Ht(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:Wt(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))},Fs)});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 Ls(e,t,n,r,i,a){let o=e.map(e=>Ht(e,{awaiting:i===e.jid,fill:n?.get(e.jid),phase:r?.get(e.jid),status:t?.get(e.jid)}));return zt(o,a,at)}function Rs(e){let t=new Is({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=zt(t.currentUnits(),e.getSelected()?.jid,at)),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=Rt(t,n);if(r){e.pendingUrlContext=null,e.selectScoop(r);return}}let r=qt(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),Wt(i)!==Wt(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`&&ut(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=Jt(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 zs=`slicc:leader-local-model-state-changed`;function Bs(e=window){e.dispatchEvent(new Event(zs))}var Vs=`slicc:leader-model-catalog-changed`;function Hs(e=window){e.dispatchEvent(new Event(Vs))}var Us={off:`off`,low:`low`,medium:`medium`,high:`high`,xhigh:`xhigh`,max:`xhigh`},Ws={off:`off`,minimal:`low`,low:`low`,medium:`medium`,high:`high`,xhigh:`xhigh`};function Gs(e){return e?Us[e]:void 0}function Ks(e){return e===`max`?`max`:void 0}function qs(e,t){return t===`max`?`max`:(e&&Ws[e])??`off`}var Js=2e3,Ys=1e4,Xs=12e4;function Zs(e){let t=[],n=null,r=e.modelPickerEnabled!==!1,i=e.catalogRetryDelayMs??Js,a=e.catalogRetryMaxDelayMs??Ys,o=e.catalogRetryWindowMs??Xs,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`,qs(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=Gs(i),o=e.getSelectedScoopJid()??n?.scoopJid;o&&a&&a!==`max`&&r.setThinkingLevel(o,a,Ks(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 Qs(e,t,n,r,i=Bs){let a=await e.setScoopThinkingLevel(t,n,r);return a&&i(),a}function $s(e,t){return Gt(e)===null||new URL(t.location.href).searchParams.get(`cherry`)===`1`||ue(t.localStorage)}async function ec(e,t,n=[]){let r=Vt(t),i=Ut(r);e.thread.setAttribute(`context`,Kt(t));let a=w(t),o=at({isRoot:a,name:t.name});e.thread.setAttribute(`accent`,o),e.switcher.setAttribute(`active`,t.jid),Tt(e,a?{kind:`cone`}:{kind:`scoop`,accent:o}),St(e,i);let s=localStorage.getItem(`slicc_locked_effort_level`),c=nt(t);e.composerMeta.setAttribute(`thinking`,qs(s??c.level,c.effortOverride));try{let{resolveCurrentModel:r,resolveModelById:i}=await l(async()=>{let{resolveCurrentModel:e,resolveModelById:t}=await import(`./main-DjAHuk3R.js`).then(e=>e.t);return{resolveCurrentModel:e,resolveModelById:t}},__vite__mapDeps([40,1,41,16,17,18,19,20,21,22,23,24,2,8,25,26,5,27,28,29,7,30,31,32,33,34,35,36,37,6,42,43,44,45,46,47,48])),a=Ze(Lt(n,t)??t),o=a?i(a.id,a.provider):r();e.composerMeta.setAttribute(`model`,o.name??o.id),e.composerMeta.toggleAttribute(`no-thinking`,o.reasoning!==!0||!!s)}catch{}}async function tc(e){if($s(e.pendingUrlContext,e.win))return;let t=Gt(e.pendingUrlContext);if(t===null)return;let{SessionStore:n}=await l(async()=>{let{SessionStore:e}=await Promise.resolve().then(()=>$t);return{SessionStore:e}},void 0),r=new n;await r.init();let i=await r.load($e({folder:t}));i&&i.messages.length>0&&!e.hasSelection()&&(e.loadMessages(i.messages),e.onHydrated())}function nc(e){let{boot:t,client:n,agentHandle:r,openReader:i,log:a}=e,{refs:o}=t;l(async()=>{let{createPlaceholderRefresher:e}=await import(`./wc-placeholder-mYgmrH75.js`);return{createPlaceholderRefresher:e}},__vite__mapDeps([49,17,50,1,8,33,42,5,6,7,51,39,52,53,54])).then(({createPlaceholderRefresher:n})=>{e.setRefreshPlaceholder(n({inputCard:o.inputCard,getMessages:()=>t.getController()?.getMessages()??[],defaultPlaceholder:o.inputCard.getAttribute(`placeholder`)??`Ask sliccy, or describe a change…`}))}),tc({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 s=null;return l(async()=>{let{wireWcAttach:e}=await import(`./wc-attach-DgJVZRem.js`);return{wireWcAttach:e}},__vite__mapDeps([55,17,26,8,56])).then(({wireWcAttach:t})=>{s=t({inputCard:o.inputCard,freezer:o.freezer,composer:o.composer,openReader:i,openWriter:e.openWriter,listConversations:async()=>{let{readSessionsIndex:e}=await l(async()=>{let{readSessionsIndex:e}=await Promise.resolve().then(()=>_i);return{readSessionsIndex:e}},void 0);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)),o.switcher.setAttribute(`gaze-target`,`slicc-input-card`),o.inputCard.addEventListener(`input`,()=>{o.switcher.scrutinize(),o.switcher.wake()}),o.inputCard.addEventListener(`submit`,e=>{let n=Ct(e);if(!n)return;t.wiring.awaitingInput=null,t.wiring.refreshScoops?.(),t.wiring.notifyScoopStateChanged?.();let r=e.detail?.source===`dictation`;r&&(l(async()=>{let{markVoiceSubmission:e}=await import(`./voice-reply-B-I-XncI.js`);return{markVoiceSubmission:e}},__vite__mapDeps([57,2,50,1,17,8,33,42,5,6,7,51,39,52,53,54,58,59,60,25,26,27,28,61,62])).then(({markVoiceSubmission:e})=>e()).catch(()=>void 0),l(async()=>{let{beginVoiceTurn:e,playCue:t}=await import(`./soundscape-TvriK11t.js`);return{beginVoiceTurn:e,playCue:t}},__vite__mapDeps([63,2,53])).then(({beginVoiceTurn:e,playCue:t})=>{e(),t(`sent`)}).catch(()=>void 0)),t.getController()?.sendUserMessage(n,s?.take(),{dictation:r,steer:pt(e)}),o.inputCard.clear?.();let i=t.getSelected()?.jid;i&&(o.switcher.setAttribute(`attention`,i),t.wiring.lastActivity.set(i,n.slice(0,600)))}),o.inputCard.addEventListener(`stop`,()=>{t.getController()?.processing&&r.stop()}),l(async()=>{let{wireWcHistoryNav:e}=await import(`./wc-history-nav-C5w8ianG.js`);return{wireWcHistoryNav:e}},[]).then(({wireWcHistoryNav:e})=>e({thread:o.thread,inputCard:o.inputCard})).catch(e=>a.error(`WC history nav wiring failed`,e)),o.composerMeta.addEventListener(`thinking-change`,e=>{if(localStorage.getItem(`slicc_locked_effort_level`))return;let r=e.detail?.thinking,i=Gs(r),o=Ks(r),s=t.getSelected();s&&i&&Qs(n,s.jid,i,o).catch(e=>a.warn(`local thinking update failed`,e))}),{getAttachStage:()=>s}}var rc=`<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 ic(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 ac(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(rc));let a=()=>{r.style.color=`var(--green)`,setTimeout(()=>{r.style.color=`var(--txt-3)`},1500)};return r.addEventListener(`short-click`,()=>{(async()=>{let n=ic(e.getMessages());await t(n??gi([...e.getMessages()])),a()})()}),r.addEventListener(`long-press`,()=>{(async()=>{let n=gi([...e.getMessages()]);n&&(await t(n),a())})()}),n.append(r),n}function Q(){return`msg-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}function oc(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 sc(e){return`
394
+ <div class="sprinkle-action-card">
395
+ <div class="sprinkle-action-card__header">${Se(oc(e))} <span class="sprinkle-badge sprinkle-badge--informative">pending</span></div>
396
+ <div class="sprinkle-action-card__body">Waiting for approval on the leader&hellip;</div>
397
+ </div>
398
+ `}function cc(e){let t={id:e.id,text:e.content};return e.attachments?.length&&(t.attachments=e.attachments.length),t}var lc=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){this.#he({id:Q(),role:`user`,content:e,timestamp:Date.now()})}getQueuedMessages(){return this.#b.map(cc)}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(cc))}#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{S(n,t)}catch{}}addAssistantMessage(e){this.#he({id:Q(),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=xt(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(vt(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||!ge()||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:Q(),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?ct(i):i;this.#g?.(e,a.id,a.attachments)}catch(e){console.error(`onLocalUserMessage hook threw`,e)}}#H(e){return dt(e,st())}#U(){if(this.#l)try{let e=this.#l();if(!e)return;oe(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??=ac({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):Q();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:Q(),role:`assistant`,content:e,timestamp:Date.now(),error:!0}),this.#ie(e)}#ie(e){try{if(ce(e)||ae(e)||ie(e))return;se(`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=P(r,sc(n),()=>{},!1);this.#M.set(t,{instance:e,container:r});return}let i=P(r,n,(e,n)=>{this.#p?.(t,e,n)},!1);this.#M.set(t,{instance:i,container:r}),this.#p?.(t,re,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&&wt(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}});gt(t,ht(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,Q(),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,Q(),i.attachments)}#pe(e){return this.#y.find(t=>t.id===e)}#me(e){try{return _t(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(){Dt(this.#_e(),this.#j)}#ye(){ft(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 uc(e,t,r,a,o){let s=new Map;l(async()=>{let{loadDipStyles:e}=await import(`./legacy-styles-DcRu2WCJ.js`);return{loadDipStyles:e}},__vite__mapDeps([64,17])).then(({loadDipStyles:e})=>e()).catch(()=>void 0),l(async()=>{let{watchSprinkleThemeBroadcast:e}=await import(`./theme-CXRqxpw6.js`).then(e=>e.i);return{watchSprinkleThemeBroadcast:e}},__vite__mapDeps([65,1,66,2])).then(({watchSprinkleThemeBroadcast:e})=>e()).catch(()=>void 0),l(async()=>{let{applyThemeOverrides:e}=await import(`./theme-engine-By4GU_Wc.js`).then(e=>e.p);return{applyThemeOverrides:e}},__vite__mapDeps([66,1,2])).then(({applyThemeOverrides:e})=>e()).catch(()=>void 0);let c=t.createAgentHandle();c.onEvent(t=>{(t.type===`tool_use_start`||t.type===`tool_result`)&&(t.type===`tool_result`&&t.isError&&e.switcher.glower(),l(async()=>{let{playCue:e}=await import(`./soundscape-TvriK11t.js`);return{playCue:e}},__vite__mapDeps([63,2,53])).then(({playCue:e})=>e(t.type===`tool_use_start`?`tool-start`:`tool-finish`)).catch(()=>void 0))});let u=new lc({thread:e.thread,agent:c,resolveTelemetryContext:()=>{let e=r();if(!e)return null;let t=Jt(e);try{let r=Ze(e);return{scoopName:t,model:(r?i(r.id,r.provider):n()).id}}catch{return{scoopName:t,model:``}}},onTurnComplete:e=>{l(async()=>{let{consumeVoiceSubmission:e,speakReplyMarkdown:t}=await import(`./voice-reply-B-I-XncI.js`);return{consumeVoiceSubmission:e,speakReplyMarkdown:t}},__vite__mapDeps([57,2,50,1,17,8,33,42,5,6,7,51,39,52,53,54,58,59,60,25,26,27,28,61,62])).then(async({consumeVoiceSubmission:t,speakReplyMarkdown:n})=>{if(!t())return;let{endVoiceTurn:r,setTtsActive:i}=await l(async()=>{let{endVoiceTurn:e,setTtsActive:t}=await import(`./soundscape-TvriK11t.js`);return{endVoiceTurn:e,setTtsActive:t}},__vite__mapDeps([63,2,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=s.get(e);t&&(Kn(t),s.delete(e))},onMessageRendered:(e,n)=>{let r=n[0];r&&s.set(e.id,Gn(r,(e,n)=>{let r={type:`sprinkle`,sprinkleName:`inline`,timestamp:new Date().toISOString(),body:{action:e,data:n}};o?.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:c}}var dc=`slicc:leader-run-new-session`,fc=`slicc:leader-broadcast-snapshot`;function pc(e){if(!(!e.cone||e.cone===`cone`))return e.coneLabel||e.cone.replace(/^cone-/,``)}function mc(e){return`${new Date(e.frozenAt).toLocaleDateString(void 0,{month:`short`,day:`numeric`})} · ${e.messageCount} turns`}function hc(e){let t=document.createElement(`slicc-freezer-card`);return t.setAttribute(`title`,e.title),t.setAttribute(`meta`,mc(e)),t.setAttribute(`slug`,e.filename),e.icon&&t.setAttribute(`icon`,e.icon),t}async function gc(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 _c(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(V,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 _c(e){let t=await vc(e);return t.kind===`ok`?t.entries:t.kind===`missing`?[]:null}async function vc(e){let t;try{let n=await e.readFile(V,{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 yc(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=fi(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 bc(e,t){for(let t of Array.from(e.querySelectorAll(`slicc-freezer-card`)))t.remove();e.append(...t.map(hc))}async function xc(e,t){let n=await e.readFile(U(t),{encoding:`utf-8`}),r=fi(typeof n==`string`?n:new TextDecoder().decode(n));return{title:r.title||t.title,messages:r.messages}}async function Sc(e,t){let{getTranscriptExportService:n}=await l(async()=>{let{getTranscriptExportService:e}=await Promise.resolve().then(()=>an);return{getTranscriptExportService:e}},void 0);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 Cc(e){let{root:t}=e,n=t?{folder:t.folder,label:E(t),jid:t.jid}:void 0,r=e=>Sc(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})}function wc(e,t){let n=t?pc(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 Tc(e){let{refs:t,openVfs:n,client:r,getController:i,getSelected:a,clearSelection:o,log:s}=e,c=[],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 _c(n);if(i===null){if((await vc(n)).kind!==`corrupt`||(s.warn(`WC freezer index corrupt — rebuilding from archives`),i=await yc(n),i.length===0))return;await r.writeFile(V,JSON.stringify(i,null,2))}e===f&&(c=i,bc(t.freezer,i),!p&&i.some(e=>!e.icon&&!e.pendingEnrichment)&&(p=!0,l(async()=>{let{pickLucideIcon:e}=await import(`./quick-llm-drlxgkUg.js`).then(e=>e.n);return{pickLucideIcon:e}},__vite__mapDeps([15,1,16,17,18,19,20,21,22,23,24,2,8,25,26,5,27,28,29,7,30,31,32,33,34,35,36,37,38,39])).then(({pickLucideIcon:e})=>gc({reader:n,writer:r,freezer:t.freezer,entries:i,pickIcon:t=>e({subject:t})})).catch(e=>s.warn(`WC freezer icon enrichment failed`,e)).finally(()=>{p=!1})))}).catch(e=>s.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=Lt(r.getScoops(),a());try{let{writer:a}=await n(),{resetNewSessionTmp:o,runNewSessionFreeze:s,runNewSessionFreezeQuick:c}=await l(async()=>{let{resetNewSessionTmp:e,runNewSessionFreeze:t,runNewSessionFreezeQuick:n}=await import(`./new-session-DagG-ZZy.js`);return{resetNewSessionTmp:e,runNewSessionFreeze:t,runNewSessionFreezeQuick:n}},__vite__mapDeps([67,16,1,17,18,19,20,21,22,23,24,2,8,25,26,5,27,28,29,7,30,31,32,33,34,35,36,37,44,40,41,6,42,43,45,46,47,48,38]));e!==`erase`&&await Cc({action:e,writer:a,root:t,client:r,freezerNew:g,refreshFreezer:m,runNewSessionFreeze:s,runNewSessionFreezeQuick:c}),await o(a),await r.clearAllMessages(t?.jid),i()?.loadMessages([]),window.dispatchEvent(new CustomEvent(fc)),l(async()=>{let{resetDictationPriming:e}=await import(`./wc-shell-B7yZ6nn6.js`).then(e=>e.K);return{resetDictationPriming:e}},__vite__mapDeps([50,1,17,8,33,42,5,6,7,51,39,52,53,54])).then(({resetDictationPriming:e})=>e()).catch(()=>void 0),m();let u=r.getScoops().find(e=>e.jid===t?.jid)??qt(r.getScoops());u&&d(u)}catch(e){s.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 l(async()=>{let{runNewSessionArchiveOnly:e}=await import(`./new-session-DagG-ZZy.js`);return{runNewSessionArchiveOnly:e}},__vite__mapDeps([67,16,1,17,18,19,20,21,22,23,24,2,8,25,26,5,27,28,29,7,30,31,32,33,34,35,36,37,44,40,41,6,42,43,45,46,47,48,38]));await r({vfs:t,cone:{folder:e.folder,label:E(e),jid:e.jid},captureCompleteSnapshot:t=>Sc(e,t)}),m()};le(`agentic-memory`)&&g()?.setAttribute(`no-skip`,``),window.addEventListener(dc,e=>{let t=e.detail?.action;(t===`save`||t===`skip`||t===`erase`)&&_(t)});let y=async e=>{let l=c.find(t=>t.filename===e);try{let{reader:r}=await n();l||=(await _c(r)??[]).find(t=>t.filename===e);let{messages:a}=await xc(r,l??{filename:e,title:e,frozenAt:``,messageCount:0});t.thread.setAttribute(`context`,`freezer:${l?.filename??e}`),u=l?.sessionId??l?.filename??null,i()?.loadMessages(a),(t.thread.inner??t.thread).prepend(wc(t.thread.ownerDocument,l)),t.thread.setAttribute(`accent`,Et),Tt(t,{kind:`freezer`}),t.inputCard.setAttribute(`disabled`,``),t.switcher.removeAttribute(`active`),o()}catch(e){if(s.error(`WC thaw failed`,e),!a()){let e=Bt(r.getScoops(),l?.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}}d(`scoops.tray-leave`),d(`scoops.tray-join`);var Ec=null;function Dc(e){Ec=e}function Oc(){return Ec?.()??[]}var kc=null;function Ac(e){kc=e}function jc(){return kc??void 0}var Mc=`slicc.leaderTrayFollowers`;function Nc(){return Pc()}function Pc(){if(Ec)return Ec();try{let e=globalThis.localStorage?.getItem(Mc);if(e)return JSON.parse(e)}catch{}return[]}function Fc(e,t=globalThis.localStorage){try{t?.setItem(Mc,JSON.stringify(e))}catch{}}function Ic(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 Lc(e){let t=he();if(t.state!==`inactive`)return{role:`follower`,state:t.state,joinUrl:t.joinUrl,sessionId:t.trayId,workerBaseUrl:pe(t.joinUrl)?.workerBaseUrl??null,stalled:t.stalled};let n=qe();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=de(e.getItem(fe))}catch{}return{role:`standalone`,state:`inactive`,workerBaseUrl:r}}function Rc(e){let{client:n,openReader:r,storage:i}=e;return{getScoops:()=>n.getScoops(),isProcessing:e=>n.isProcessing(e),getCronTasks:async()=>{let{getAllCronTasks:e}=await l(async()=>{let{getAllCronTasks:e}=await import(`./tray-leader-Mq6HIneb.js`).then(e=>e.o);return{getAllCronTasks:e}},__vite__mapDeps([68,1,2,25,17,26,8,5,27,28,6,7,45,43]));return e()},getWebhooks:async()=>{let{getAllWebhooks:e}=await l(async()=>{let{getAllWebhooks:e}=await import(`./tray-leader-Mq6HIneb.js`).then(e=>e.o);return{getAllWebhooks:e}},__vite__mapDeps([68,1,2,25,17,26,8,5,27,28,6,7,45,43]));return e()},getMounts:async()=>{let{getAllMountEntries:e,loadMountHandle:t}=await l(async()=>{let{getAllMountEntries:e,loadMountHandle:t}=await import(`./mount-table-store-dY2IfQ5S.js`).then(e=>e.r);return{getAllMountEntries:e,loadMountHandle:t}},__vite__mapDeps([69,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 c()){if(e.has(r.providerId))continue;if(e.add(r.providerId),!t(r.providerId)?.isOAuth){n.push({providerId:r.providerId});continue}let i=a(r.providerId),o=r.loggedOut?!1:i?!i.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 Ic(typeof e==`string`?e:new TextDecoder().decode(e))}catch{return{processes:[],terminated:0}}},getTrayInfo:()=>Lc(i),getConnectedFollowers:Oc}}var zc=`sync-fs-nonce`;function Bc(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:zc,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 $=e=>Array.from(e,e=>e.charCodeAt(0)),Vc=[{offset:0,bytes:[137,80,78,71,13,10,26,10],mime:`image/png`},{offset:0,bytes:[255,216,255],mime:`image/jpeg`},{offset:0,bytes:$(`GIF87a`),mime:`image/gif`},{offset:0,bytes:$(`GIF89a`),mime:`image/gif`},{offset:0,bytes:$(`BM`),mime:`image/bmp`},{offset:0,bytes:$(`RIFF`),also:{offset:8,bytes:$(`WEBP`)},mime:`image/webp`},{offset:4,bytes:$(`ftypavif`),mime:`image/avif`},{offset:0,bytes:[0,0,1,0],mime:`image/x-icon`},{offset:0,bytes:$(`RIFF`),also:{offset:8,bytes:$(`WAVE`)},mime:`audio/wav`},{offset:0,bytes:$(`ID3`),mime:`audio/mpeg`},{offset:0,bytes:$(`fLaC`),mime:`audio/flac`},{offset:4,bytes:$(`ftypM4A`),mime:`audio/mp4`},{offset:4,bytes:$(`ftypisom`),mime:`video/mp4`},{offset:4,bytes:$(`ftypmp42`),mime:`video/mp4`},{offset:4,bytes:$(`ftypqt`),mime:`video/quicktime`},{offset:0,bytes:[26,69,223,163],mime:`video/webm`},{offset:0,bytes:$(`%PDF-`),mime:`application/pdf`},{offset:0,bytes:[0,97,115,109],mime:`application/wasm`},{offset:0,bytes:$(`PK`),mime:`application/zip`},{offset:0,bytes:[31,139],mime:`application/gzip`},{offset:0,bytes:[127,69,76,70],mime:`application/x-executable`},{offset:0,bytes:[202,254,186,190],mime:`application/x-mach-binary`}],Hc=$(`OggS`);function Uc(e,t,n){if(t+n.length>e.length)return!1;for(let r=0;r<n.length;r+=1)if(e[t+r]!==n[r])return!1;return!0}function Wc(e){let t=[...Vc].sort((e,t)=>t.bytes.length+(t.also?.bytes.length??0)-(e.bytes.length+(e.also?.bytes.length??0)));for(let n of t)if(Uc(e,n.offset,n.bytes)&&!(n.also&&!Uc(e,n.also.offset,n.also.bytes)))return n.mime;if(Uc(e,0,Hc)){let t=Gc(e.subarray(0,64));return/theora|VP8/.test(t)?`video/ogg`:`audio/ogg`}return null}function Gc(e){let t=``;for(let n of e)t+=String.fromCharCode(n);return t}var Kc=4096;function qc(e){if(e.length===0)return!0;let t=e.subarray(0,Math.min(e.length,Kc));if(t.includes(0))return!1;let n=t.length;if(n===Kc)for(let e=0;e<4&&n>0;e+=1){let e=t[n-1]??0;if(!(e&128)||(--n,(e&192)==192))break}try{let e=new TextDecoder(`utf-8`,{fatal:!0}).decode(t.subarray(0,n)),r=0;for(let t of e){let e=t.codePointAt(0)??0;e!==9&&e!==10&&e!==13&&e!==12&&e!==27&&(e<32||e===127)&&(r+=1)}return r<=e.length*.05}catch{return!1}}function Jc(e,t){if(t&&t.length>0){let e=Wc(t);if(e)return{mime:e,text:Yc(e),source:`magic`}}let n=p(e);return n===`application/octet-stream`?t&&qc(t)?{mime:`text/plain`,text:!0,source:`content`}:{mime:`application/octet-stream`,text:!1,source:t?`content`:`unknown`}:{mime:n,text:Yc(n),source:`extension`}}function Yc(e){if(e.startsWith(`text/`))return!0;let t=e.split(`;`,1)[0]?.trim()??e;return t===`application/json`||t===`application/xml`||t===`application/javascript`||t===`application/ecmascript`||t===`image/svg+xml`||t.endsWith(`+json`)||t.endsWith(`+xml`)}var Xc=new Set([`md`,`markdown`,`mdown`,`mkd`,`mkdn`,`mdwn`]);function Zc(e,t){let n=t.split(`;`,1)[0]?.trim()??t;if(n===`text/html`)return`html`;if(n===`text/markdown`||n===`text/x-markdown`)return`markdown`;let r=e.lastIndexOf(`.`),i=r>0?e.slice(r+1).toLowerCase():``;return Xc.has(i)?`markdown`:i===`html`||i===`htm`?`html`:null}var Qc=24;async function $c(e,t){let n=t.slice(0,Math.max(t.lastIndexOf(`/`),0))||`/`;for(let t=0;t<Qc;t+=1){try{return await e.stat(n===`/`?`/.git`:`${n}/.git`),n===``?`/`:n}catch{}if(n===`/`||n===``)return null;n=n.slice(0,Math.max(n.lastIndexOf(`/`),0))||`/`}return null}function el(e){let t=async t=>{let n=await e.stat(t),r=n.type===`directory`;return{type:r?`dir`:`file`,mode:r?16877:33188,size:n.size,ino:0,mtimeMs:n.mtime,ctimeMs:n.ctime,uid:1,gid:1,dev:1,isFile:()=>!r,isDirectory:()=>r,isSymbolicLink:()=>n.isSymlink===!0}};return{promises:{readFile:(t,n)=>{let r=typeof n==`string`?n:n?.encoding;return e.readFile(t,r===`utf8`?{encoding:`utf-8`}:{encoding:`binary`})},readdir:async t=>(await e.readDir(t)).map(e=>e.name),stat:t,lstat:t,readlink:async t=>(await e.stat(t)).symlinkTarget??``}}}async function tl(e,t,n){let r=await $c(e,t);if(!r)return null;let i=t.slice(r===`/`?1:r.length+1);if(i.length===0)return null;try{let t=await l(()=>import(`./isomorphic-git-WdgG3efW.js`),__vite__mapDeps([70,1,71])),a=el(e),o=await t.resolveRef({fs:a,dir:r,ref:`HEAD`}),{blob:s}=await t.readBlob({fs:a,dir:r,oid:o,filepath:i}),c=new TextDecoder().decode(s);return c===n?null:{baseContent:c,status:`modified`,repoRoot:r}}catch{return null}}function nl(e){let t=e.slice(e.lastIndexOf(`.`)).toLowerCase();return t===`.html`||t===`.svg`}async function rl(e,t){let n=await e.readFile(t,{encoding:`binary`}),r=new Uint8Array(new ArrayBuffer(n.length));r.set(n);let{mime:i,text:a}=Jc(t,r);return{mime:i,text:a,bytes:r}}var il=524288;function al(e,t,n){if(n.length>il)return null;switch(Zc(e,t)){case`markdown`:return{mount:`inline`,html:kt(n)};case`html`:return{mount:`sandbox`,html:n};default:return null}}async function ol(e,t,n={}){let{mime:r,text:i,bytes:a}=await rl(e,t);if(!i){ot.open({path:t,content:a.buffer,mimeType:r,text:!1});return}let o=new TextDecoder().decode(a),s=await tl(e,t,o),c=al(t,r,o);ot.open({path:t,content:o,mimeType:r,text:!0,...s?{baseContent:s.baseContent,gitStatus:s.status}:{},...c?{rendered:c}:{},...n.line===void 0?{}:{line:n.line}})}async function sl(e,t){let{mime:n,bytes:r}=await rl(e,t),i=new Blob([r],{type:n}),a=URL.createObjectURL(i);try{let e=document.createElement(`a`);e.href=a,e.download=t.split(`/`).pop()||`download`,e.click()}finally{URL.revokeObjectURL(a)}}async function cl(e,t,n){let r=await e.readFile(t,{encoding:`binary`}),i=typeof r==`string`?r:Uint8Array.from(r);await e.writeFile(n,i)}async function ll(e,t){try{return await e.stat(t),!0}catch{return!1}}function ul(e){let{fileTree:t,openFs:n,openWriter:r,insertReference:i,toPreviewUrl:a,log:o}=e;t.addEventListener(`file-preview`,async e=>{let{path:t}=e.detail;try{await ol(await n(),t)}catch(e){o.error(`File preview failed`,e)}}),t.addEventListener(`file-reference`,e=>{let{path:t}=e.detail;i(t)}),t.addEventListener(`file-download`,async e=>{let{path:t}=e.detail;try{await sl(await n(),t)}catch(e){o.error(`File download failed`,e)}}),t.addEventListener(`file-overflow`,e=>{let{path:n,anchor:r,kind:i}=e.detail,a=i!==`directory`,o=[{id:`preview`,label:`Preview`,visible:a},{id:`reference`,label:`Reference in chat`,visible:a},{id:`download`,label:`Download`,visible:a},{id:`rename`,label:`Rename`,visible:a},{id:`duplicate`,label:`Duplicate`,visible:a},{id:`copy-path`,label:`Copy path`},{id:`open-browser`,label:`Open in browser`,visible:a&&nl(n)},{id:`delete`,label:`Delete`,destructive:!0,visible:a}];bt.show({anchor:r,items:o,context:{path:n},dispatchTarget:t})}),t.addEventListener(`overflow-action`,async e=>{let{action:n,context:i}=e.detail,{path:s}=i;try{switch(n){case`preview`:case`reference`:case`download`:t.dispatchEvent(new CustomEvent(`file-${n}`,{detail:{id:s,path:s},bubbles:!0,composed:!0}));break;case`copy-path`:await navigator.clipboard.writeText(s);break;case`open-browser`:window.open(a(s),`_blank`);break;case`duplicate`:{let e=s.lastIndexOf(`.`),t=e>0?`${s.slice(0,e)}_copy${s.slice(e)}`:`${s}_copy`,n=await r();if(await ll(n,t)&&!confirm(`${t} already exists. Overwrite?`))break;await cl(n,s,t);break}case`delete`:confirm(`Delete ${s}?`)&&await(await r()).rm(s);break;case`rename`:{let e=s.split(`/`).pop()??``,t=prompt(`Rename ${s} to:`,e)?.trim();if(!t||t===e||t.includes(`/`))break;let n=`${s.slice(0,s.length-e.length)}${t}`,i=await r();if(await ll(i,n)&&!confirm(`${n} already exists. Overwrite?`))break;await cl(i,s,n),await i.rm(s);break}}}catch(e){o.error(`Overflow action "${n}" failed`,e)}})}var dl=36e5,fl=2e3,pl=class{#e=[];#t;#n;constructor(e=dl,t=fl){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`}},ml=64,hl=12,gl=/\b(feedback|reviews?|corrections?|learnings?|observations?|testing|verification)\b/i,_l=/\b(user|preferences?|identit(?:y|ies)|accounts?|personal|interface|working rhythm|keyboard|accessibility)\b/i,vl=/^Auto-extracted \(/;function yl(e){let t=document.createRange();return t.selectNodeContents(document.body),t.createContextualFragment(e)}function bl(e){return(yl(kt(e)).textContent??``).replace(/\s+/g,` `).trim()}function xl(e){let t=bl(e);if(t.length<=ml)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>=hl&&i<=96&&t.slice(a).trim()&&n.push({titleEnd:i,summaryStart:a})}let r=n.sort((e,t)=>Math.abs(e.titleEnd-ml)-Math.abs(t.titleEnd-ml))[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>=hl?i:96,o=t.slice(a).trim();return{title:t.slice(0,a).trim(),summary:o,titleEnd:a,summaryStart:t.indexOf(o,a)}}function Sl(e,t){let n=bl(e),r=vl.test(t),i=r?n:`${t} ${n}`;return gl.test(i)?`feedback`:_l.test(i)?`user`:r?null:`project`}function Cl(e,t){let n=xl(e);return{title:n.title,summary:n.summary,section:t,tag:Sl(e,t),bodyHtml:kt(e),titleEnd:n.titleEnd,summaryStart:n.summaryStart}}function wl(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(Cl(e,a.section)),a=null};for(let t of e.split(`
399
+ `)){let e=/^(#{1,6})\s+(.+?)\s*#*\s*$/.exec(t.trim());if(e){s();let t=bl(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 Tl(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 El(e,t,n){let r=yl(e),i=Tl(r,t),a=n==null?{node:r,offset:r.childNodes.length}:Tl(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 Dl(e){return wl(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(El(e.bodyHtml,0,e.titleEnd)),e.summary&&t.setBodyContent(El(e.bodyHtml,e.summaryStart,null)),t})}async function Ol(e,t=F.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 Dl(n)}function kl(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:ka(e),sublabel:n,meta:Da(e),icon:wa(e),badges:r,status:Ea(e)}})}}function Al(e){return e.stalled||e.state===`reconnecting`?`warn`:e.state===`error`?`error`:e.state===`leader`||e.state===`connected`?`active`:`idle`}function jl(e){return e.stalled?`stalled`:e.state===`leader`?`connected`:e.state}function Ml(e){let t=jl(e),n=e.sessionId?`Session ${Sa(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:Al(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:Al(e)}]}}function Nl(e,t){let n=e.filter(e=>w(e)),r=t=>e.filter(e=>!w(e)&&e.parentJid===t),i=(e,n)=>{let r=t(e.jid);return{name:w(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 Pl(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 Fl(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 Il(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 Ll(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 Rl(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=Al(e.tray);(n===`error`||n===`warn`)&&t.push({id:`tray`,severity:n===`error`?`error`:`warn`,icon:`cloud-off`,title:`Tray ${jl(e.tray)}`,detail:e.tray.workerBaseUrl?`Worker · ${e.tray.workerBaseUrl}`:`No tray session is established.`});for(let n of e.followers)Ea(n)===`warn`&&t.push({id:`follower:${n.runtimeId}`,severity:`warn`,icon:`radio`,title:`${ka(n)} stopped answering`,detail:n.motd??n.runtime??`No heartbeat from this follower.`,age:Da(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 zl(e){return e>=100?`$${Math.round(e)}`:`$${e.toFixed(2)}`}function Bl(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:zl(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,accent:u>=.9?`rose`:u>=.7?`amber`:`green`,foot:`fullest of ${l.length} context window${l.length===1?``:`s`}`}),d}var Vl={running:`R`,pending:`S`,exited:`Z`,killed:`K`};function Hl(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 Ul(e,t){return{pid:e.pid,ppid:e.ppid,state:Vl[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:Hl(e.startedAt,t)}}async function Wl(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:Bl({stats:l,workingUnits:h,totalUnits:n.length,liveProcesses:d.length,terminated:f,history:t}),alerts:Rl({tray:r,followers:i,mounts:s,oauthProviders:p}),sections:[Ml(r),kl(i),Nl(n,t=>e.isProcessing(t)),Pl(s),Fl(m,p),Il(a,o),Ll(l)],processes:{rows:d.map(e=>Ul(e,g)),terminated:f}}}var Gl=`/shared`,Kl=3,ql=200;async function Jl(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,ql),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<Kl?await Jl(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 Yl(e,t=F.root){let n=[];for(let r of[t,Gl])n.push({kind:`dir`,id:r,label:r.replace(/^\/(cones\/)?/,``),open:!0,children:await Jl(e,r,1)});return n}var Xl=200,Zl=1e3,Ql=3e3;function $l(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 Yl(n,e.getWorkspace().root);t===o&&(e.fileTree.items=i,r||(r=!0,ul({fileTree:e.fileTree,openFs:e.openFs,openWriter:e.openWriter,insertReference:e.insertReference,toPreviewUrl:it,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>=Zl){clearTimeout(c),c=null,u();return}c!=null&&clearTimeout(c),c=setTimeout(()=>{c=null,u()},Xl)},f=()=>{t??=setInterval(u,Ql)},p=()=>{let t=++a;s?.(),s=null;let n=[e.getWorkspace().root,Gl];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 eu(e){let t=!1,n=!1,r=0,i=null,a=new pl,o=$l(e),s=()=>{i!=null&&(clearInterval(i),i=null)},c=()=>{let t=++r;e.openFs().then(async n=>{let i=await Ol(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 Wl(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 tu=[`/workspace`,`/shared`,`/memory`,`/scoops`,`/mnt`],nu=new Set([`node_modules`,`.git`,`dist`,`build`,`out`,`coverage`,`.cache`,`.venv`,`venv`,`__pycache__`,`target`,`vendor`,`.next`,`.turbo`,`python_wheels`]),ru=2e4,iu=12,au=3e4;function ou(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 su(e){return e.slice(e.lastIndexOf(`/`)+1)}function cu(e,t){return e===t?!0:e.endsWith(t)?e[e.length-t.length-1]===`/`:!1}function lu(e,t){let n=ou(e);return t.includes(`/`)?cu(n,t):su(n)===t}function uu(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))&&lu(a,e)&&(r.add(a),n.push(ou(a)),n.length>=du))break}return n}var du=4,fu=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??tu,this.#n=t.ignoredDirs??nu,this.#r=t.maxEntries??ru,this.#i=t.maxDepth??iu,this.#a=t.ttlMs??au}resolve(e,t=[]){this.#g();let n=ou(e),r=this.#d(n),i=uu(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=>cu(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(su(e))??[];return e.includes(`/`)?{query:e,matches:t.filter(t=>cu(t,e)).sort(pu)}:{query:e,matches:[...t].sort(pu)}}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 pu(e,t){let n=e.split(`/`).length,r=t.split(`/`).length;return n===r?e.localeCompare(t):n-r}var mu=`file-mention`,hu=`data-file-mentions`;function gu(e){return`${e.childNodes.length}:${e.textContent?.length??0}`}var _u=new Set([`A`,`PRE`,`SCRIPT`,`STYLE`,`TEXTAREA`]),vu=`file-mention-open`;async function yu(e,t,n=[]){let r=gu(e);if(e.getAttribute(hu)===r)return;let i=bu(e);if(i.length===0){e.setAttribute(hu,r);return}let a=[],o=new Set;for(let e of i){let t=lt(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(hu,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&&xu(e,n,l)}e.setAttribute(hu,gu(e))}function bu(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(_u.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 xu(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(Su(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 Su(e,t,n,r,i){let a=e.createElement(`a`);return a.className=mu,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(vu,{detail:t,bubbles:!0,composed:!0}))}),a}var Cu=`slicc-agent-message`,wu=`slicc-action-row[${mt}]`;function Tu(e,t){let n=[],r=e.querySelectorAll(wu);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=>Ot(e))}function Eu(e){let t=globalThis.requestIdleCallback;typeof t==`function`?t(e):setTimeout(e,0)}function Du(e){try{return Ou(e)}catch(t){return e.log.error(`File mention wiring failed; continuing without it`,t),()=>{}}}function Ou(e){let{thread:t,openFs:n,log:r}=e;if(!(t instanceof Node))return()=>{};let i=null,a=()=>(i??=n().then(e=>new fu(e)),i),o=e=>{if(!(e instanceof HTMLElement)||e.hasAttribute(`streaming`))return;let n=e.querySelector(`.body`)??e;lt(n.textContent??``).length!==0&&Eu(()=>{let i=Tu(t,e);a().then(e=>yu(n,e,i)).catch(e=>r.error(`File mention linking failed`,e))})},s=e=>{for(let t of e.querySelectorAll(Cu))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()===Cu?o(e):s(e));let e=t.target?.closest?.(Cu);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=>ol(e,t,i===void 0?{}:{line:i})).catch(e=>r.error(`File mention preview failed`,e))};return t.addEventListener(vu,l),()=>{c.disconnect(),t.removeEventListener(vu,l)}}var ku=e({DEFAULT_DOCK_TREE_ON_BOOT:()=>Uu,DOCK_TREE_STORAGE_KEY:()=>Hu,attachWcClient:()=>Ku,makeSprinkleAttachImage:()=>Gu,mountWcUiLive:()=>qu,prepareWcShell:()=>Au,wireDockTreePersistence:()=>Wu,wireWcChipTips:()=>Lu});function Au(e,t){let n=yt(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=Ut(Vt(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?Lt(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,Jt(e)),i.setSelectedScoopJid(e.jid),r?.setReadOnly(t),t||n.inputCard.removeAttribute(`disabled`),ec(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 ju(e){let t=null;return()=>(t??=(async()=>{let[{createRemoteVfsClient:t},{createRemoteWritableVfsClient:n}]=await Promise.all([l(()=>import(`./remote-vfs-client-CN1pCs1m.js`),__vite__mapDeps([72,73])),l(()=>import(`./writable-vfs-client-CuBjWhy3.js`),__vite__mapDeps([74,73]))]);return{reader:t({transport:e.getTransport()}),writer:n({transport:e.getTransport()})}})(),t)}function Mu(e,t,n,r,i){e.onClientReady(()=>{r.intercept||l(async()=>{let{wireWcOnboarding:e}=await import(`./wc-onboarding-BeunqMQZ.js`);return{wireWcOnboarding:e}},__vite__mapDeps([75,17,2,45,8,25,1,26,5,27,28,43,76])).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 Nu(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=Ls(t.getScoops(),e.statuses,e.fills,e.phases,e.awaitingInput,e.getSelected()?.jid)})};return setInterval(n,15e3),n}function Pu(e,t,n){let r=t.standalone;r&&l(async()=>{let{wireWcBrowser:e}=await import(`./wc-browser-DdPBkgaJ.js`);return{wireWcBrowser:e}},__vite__mapDeps([77,8,78,79,2,80,3])).then(({wireWcBrowser:t})=>t({refs:e.refs,browser:r.browser,log:n})).catch(e=>n.error(`WC browser overlay wiring failed`,e))}function Fu(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)}),Lu({switcher:n.switcher,getScoops:()=>t.getScoops(),lastActivity:e.wiring.lastActivity})}function Iu(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 Lu(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??``,o=e.getScoops().find(e=>e.jid===a);if(!o)return;let s=e.lastActivity.get(a)??``,c=t.get(a);if(c&&c.activity===s){i.title=c.tip;return}i.title||=E(o),!(!s||n.has(a))&&(n.add(a),(async()=>{try{let n=await(e.labelFn??(await l(async()=>{let{quickLabel:e}=await import(`./quick-llm-drlxgkUg.js`).then(e=>e.n);return{quickLabel:e}},__vite__mapDeps([15,1,16,17,18,19,20,21,22,23,24,2,8,25,26,5,27,28,29,7,30,31,32,33,34,35,36,37,38,39]))).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: ${w(o)?`${E(o)} (a main agent)`:o.name}\nMost recent activity:\n${s}`,maxTokens:40});n&&(t.set(a,{activity:s,tip:n}),i.title=n)}finally{n.delete(a)}})())})}async function Ru(e,t,n){let{RemoteTerminalView:r}=await l(async()=>{let{RemoteTerminalView:e}=await import(`./remote-terminal-view-D2bRNJcS.js`);return{RemoteTerminalView:e}},__vite__mapDeps([81,1,17,34,2,56,82,51,0,3,4,5,6,7,8,14,83,24,13,10,11,12,9,84])),{fetchSecretEnvVars:i}=await l(async()=>{let{fetchSecretEnvVars:e}=await import(`./secret-env-CjwX7z7b.js`);return{fetchSecretEnvVars:e}},__vite__mapDeps([85,2,25,1,17,26,8,5,27,28,29,7,30,31,32])),a=await i(),o=new r({client:t,cwd:`/`,env:Object.keys(a).length>0?a:void 0});await new Promise(t=>e.onClientReady(t)),await o.mount(n),globalThis.__slicc_terminal_view=o,window.addEventListener(`beforeunload`,()=>o.dispose(),{once:!0})}function zu(e,t,n){let r=r=>{if(r.startsWith(`freezer:`)){n(r.slice(8));return}let i=Rt(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 Bu(e,t,n,r){l(async()=>{let{installLeaderPermissionsSurface:e,installMountPendingConsumer:t}=await import(`./wc-permissions-WjSZrbPa.js`);return{installLeaderPermissionsSurface:e,installMountPendingConsumer:t}},__vite__mapDeps([86,17,2,56])).then(async({installLeaderPermissionsSurface:r,installMountPendingConsumer:i})=>{let a=n.standalone?.runtimeMode??`standalone`,{buildLeaderPermissionProviders:o,isExtensionRuntime:s}=await l(async()=>{let{buildLeaderPermissionProviders:e,isExtensionRuntime:t}=await import(`./wc-permissions-providers-I39VzaSN.js`);return{buildLeaderPermissionProviders:e,isExtensionRuntime:t}},__vite__mapDeps([87,17,5,6,7,8]));r({runtimeMode:a,providers:await o(s()||a===`extension`||a===`extension-detached`)}),i({runShell:Vu(e,t)})}).catch(e=>r.warn(`WC permissions surface wiring failed`,e))}function Vu(e,t){let n=null,r=()=>(n||=(async()=>{await new Promise(t=>e.onClientReady(t));let{TerminalSessionClient:n}=await l(async()=>{let{TerminalSessionClient:e}=await import(`./terminal-session-client-ADzaWGFd.js`).then(e=>e.n);return{TerminalSessionClient:e}},__vite__mapDeps([84,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 Hu=`slicc-dock-tree:default`,Uu={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 Wu(e,t){let n=e.dockTree,r=e.dockTree,i=e=>{try{localStorage.setItem(Hu,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(Hu);r.setTree(e?JSON.parse(e):Uu)}catch(e){t.warn(`WC dock-tree restore failed — seeding the default layout`,e),r.setTree(Uu)}}function Gu(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 Ku(e,t,n,r={}){l(async()=>{let{initTimestampPreference:e}=await import(`./wc-shell-B7yZ6nn6.js`).then(e=>e.H);return{initTimestampPreference:e}},__vite__mapDeps([50,1,17,8,33,42,5,6,7,51,39,52,53,54])).then(({initTimestampPreference:e})=>e()).catch(()=>void 0);let{refs:i}=e;e.setClient(t);let a=le(`panel-layouts`);i.dockTree.tilesMovable=a,a||Wu(i,n);let o=null,s=Nu(e.wiring,t),c=()=>o?.(),u={intercept:null},{controller:d,agentHandle:f}=uc(i,t,()=>e.getSelected(),Iu({boot:e,triggerPlaceholder:c,refreshStats:s}),u);e.setController(d),e.onClientReady(s);let p=ju(t),m=async()=>(await p()).reader;r.standalone?.runtimeMode!==`cherry`&&r.standalone?.runtimeMode!==`hosted-leader`&&Mu(e,t,p,u,n);let h=nc({boot:e,client:t,agentHandle:f,setRefreshPlaceholder:e=>{o=e},triggerPlaceholder:c,openReader:m,openWriter:async()=>(await p()).writer,log:n});Fu(e,t),Pu(e,r,n),Bu(e,t,r,n);let g=eu({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:()=>Rc({client:t,openReader:m,storage:window.localStorage}),getWorkspace:()=>or(t.getScoops(),e.getSelected()??void 0),mountTerminal:n=>Ru(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&&l(async()=>{let{panelizeShell:e}=await import(`./panelize-shell-DpfBeau6.js`);return{panelizeShell:e}},__vite__mapDeps([88,2,89,39,1,50,17,8,33,42,5,6,7,51,52,53,54,90])).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)),Du({thread:i.thread,openFs:m,log:n}),i.floatbar.addEventListener(`click`,()=>{let e=i.dock;e.active===`monitor`?e.collapse():e.selectItem(`monitor`)});let _=Tc({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:ee}=_;if(v(),e.onClientReady(v),le(`multiple-cones`)){let r=Ps({freezer:i.freezer,client:t,getSelected:()=>e.getSelected(),selectScoop:e.selectScoop,freezeCone:_.freezeCone,log:n});e.wiring.refreshConeActions=r.refresh,e.onClientReady(r.refresh)}zu(e,t,y),e.onClientReady(()=>{p().then(async({reader:e,writer:t})=>{let{loadShortcutConfig:n}=await l(async()=>{let{loadShortcutConfig:e}=await import(`./wc-shortcut-config-CRticSXA.js`);return{loadShortcutConfig:e}},__vite__mapDeps([91,2,50,1,17,8,33,42,5,6,7,51,39,52,53,54]));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 l(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:o})=>{let{createRemoteSprinkleVfs:s}=await l(async()=>{let{createRemoteSprinkleVfs:e}=await import(`./remote-sprinkle-vfs-CawR6gXx.js`);return{createRemoteSprinkleVfs:e}},__vite__mapDeps([92,73])),c=(await l(async()=>{let{getPanelizedShell:e}=await import(`./panelize-shell-DpfBeau6.js`);return{getPanelizedShell:e}},__vite__mapDeps([88,2,89,39,1,50,17,8,33,42,5,6,7,51,52,53,54,90]))).getPanelizedShell(),{wireWcSprinkles:u}=await l(async()=>{let{wireWcSprinkles:e}=await import(`./wc-sprinkles-D-DWMPsX.js`);return{wireWcSprinkles:e}},__vite__mapDeps([93,17,5,6,7,8,94,76])),d=await u({refs:i,client:t,fs:s({reader:a,writer:o}),instanceId:r.instanceId,onAttachImage:Gu(h,n),onToolPanelActivate:e=>g.activate(e),onToolPanelDeactivate:e=>g.deactivate(e),hostSprinkleSurface:c?(e,t)=>c.hostSprinkleSurface(e,t):void 0,removeSprinkleSurface:c?e=>c.removeSprinkleSurface(e):void 0,log:n});e.onClientReady(()=>void d.resync());let{getPanelizedShell:_}=await l(async()=>{let{getPanelizedShell:e}=await import(`./panelize-shell-DpfBeau6.js`);return{getPanelizedShell:e}},__vite__mapDeps([88,2,89,39,1,50,17,8,33,42,5,6,7,51,52,53,54,90])),v=_();if(v){let e=s({reader:a,writer:o});v.attachFs(e);let{registerAgentPanels:t}=await l(async()=>{let{registerAgentPanels:e}=await import(`./agent-panels-DwH4FR7k.js`);return{registerAgentPanels:e}},__vite__mapDeps([95,2,50,1,17,8,33,42,5,6,7,51,39,52,53,54]));await t(e).catch(e=>n.warn(`agent panel discovery failed`,e))}else{let{setLayoutApplier:e}=await l(async()=>{let{setLayoutApplier:e}=await import(`./layout-apply-registry-Cw730jao.js`);return{setLayoutApplier:e}},[]),{applyLayout:t}=await l(async()=>{let{applyLayout:e}=await import(`./apply-layout-DWTxIKYs.js`);return{applyLayout:e}},__vite__mapDeps([96,93,17,5,6,7,8,94,76]));e(e=>t(d.zone,e))}if(r.standalone&&r.instanceId){let{wireWcTray:a}=await l(async()=>{let{wireWcTray:e}=await import(`./wc-tray-D6joGkUe.js`);return{wireWcTray:e}},__vite__mapDeps([97,16,1,17,18,19,20,21,22,23,24,2,8,25,26,5,27,28,29,7,30,31,32,33,34,35,36,37,98,78,99,100,45,43,101,46,76,61,62,50,42,6,51,39,52,53,54,102,65,66,94,103,104,40,41,44,47,48,56,3,105,106,84,68,80,107,108])),o=d.zone.callbacks(),s=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)=>o.addSprinkle(e,t,n),removeSprinkle:e=>o.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=()=>s.scheduleScoopsListBroadcast()}}).catch(e=>n.error(`WC sprinkle/tray wiring failed`,e));{let e=new Qt,n=new rn,r=on(new ss({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:Ts(),snapshotStore:{read:async e=>{let{reader:t}=await p();return vs(t,e)},write:async(e,t)=>{let{writer:n}=await p();return _s(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=qt(t.getScoops());return{id:e?.jid??`session-${Date.now()}`,title:e?.name??`Active Session`}},version:`6.99.8`}));window.addEventListener(`unload`,r,{once:!0})}let b=!1,x=()=>b?Promise.resolve():(b=!0,(async()=>{try{let[{getTranscriptExportService:e},{transcriptZipToBlob:t,downloadTranscriptBlob:n}]=await Promise.all([l(()=>Promise.resolve().then(()=>an),void 0),l(()=>import(`./wc-transcript-export-DVjtNvuR.js`),__vite__mapDeps([109,17,103,8,104,1]))]),r=ee(),i=r==null?{kind:`active`}:{kind:`frozen`,sessionId:r},a=await e().export(i,{}),{filename:o}=a;await n(await t(a),o)}catch(e){n.error(`Transcript export failed`,e)}finally{b=!1}})());if(l(async()=>{let{wireWcNav:e}=await import(`./wc-nav-DjOpEDo-.js`);return{wireWcNav:e}},__vite__mapDeps([110,17,5,6,7,8,44,45,25,1,26,27,28,43,46,47,48,68,2,94,76])).then(({wireWcNav:e})=>e({refs:i,client:t,log:n,onExportTranscript:x,shortcuts:i.shortcuts})).catch(e=>n.error(`WC nav wiring failed`,e)),l(async()=>{let{getComposerSpeech:e,setComposerSpeechInstanceId:t}=await import(`./composer-speech-Byuwd2QJ.js`);return{getComposerSpeech:e,setComposerSpeechInstanceId:t}},__vite__mapDeps([111,2,5,6,7,8,56,52,59,60,25,1,17,26,27,28,61,62,112])).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)),l(async()=>{let{setSpeakAssetsInstanceId:e}=await import(`./speak-BsVaFA0Z.js`);return{setSpeakAssetsInstanceId:e}},__vite__mapDeps([58,17,2,5,6,7,8,59,60,25,1,26,27,28,61,62])).then(({setSpeakAssetsInstanceId:e})=>e(r.instanceId)).catch(e=>n.error(`WC say warmup wiring failed`,e)),r.standalone)return()=>{l(async()=>{let{schedulePendingSessionCatchup:e}=await import(`./new-session-DagG-ZZy.js`);return{schedulePendingSessionCatchup:e}},__vite__mapDeps([67,16,1,17,18,19,20,21,22,23,24,2,8,25,26,5,27,28,29,7,30,31,32,33,34,35,36,37,44,40,41,6,42,43,45,46,47,48,38])).then(({schedulePendingSessionCatchup:e})=>e({openVfs:async()=>(await p()).writer,onComplete:v})).catch(e=>n.warn(`Pending session catch-up scheduling failed`,e))}}async function qu(e,t,n=`standalone`){let{browser:r,realCdpTransport:i,instanceId:a,localApiBaseUrl:o,bridgeToken:s,localLickWsUrl:c,extensionDelegateId:u,attachLickForwardingClient:d}=await ve({runtimeMode:n,envBaseUrl:null,window,log:t}),{floatKindForRuntimeMode:f,floatLabelForKind:p,resolveStandaloneFloatKind:m}=await l(async()=>{let{floatKindForRuntimeMode:e,floatLabelForKind:t,resolveStandaloneFloatKind:n}=await import(`./wc-float-label-d3I12c8W.js`);return{floatKindForRuntimeMode:e,floatLabelForKind:t,resolveStandaloneFloatKind:n}},__vite__mapDeps([113,25,1,17,26,8,5,27,28,50,33,42,6,7,51,39,52,53,54])),{installFloatbarStatus:h}=await l(async()=>{let{installFloatbarStatus:e}=await import(`./wc-floatbar-online-CFeU9jju.js`);return{installFloatbarStatus:e}},__vite__mapDeps([114,46,68,1,2,25,17,26,8,5,27,28,6,7,45,43,113,50,33,42,51,39,52,53,54])),g=n===`standalone`?await m():f(n),_=p(g),v=Au(e,_);h(v.refs.floatbar,{floatKind:g,label:_}),a&&ye(a);let{syncFsBridgeEnabled:y,syncFsChannelNonce:ee}=Bc(),b=!1,x=Qa({realCdpTransport:i,instanceId:a,makeClient:e=>new Ua(Rs(v.wiring),e),localApiBaseUrl:o,bridgeToken:s,syncFsBridgeEnabled:y,syncFsChannelNonce:ee,localLickWsUrl:c,extensionDelegateId:u,flagFloat:n,onWorkerScriptError:()=>{_e()},onReadyStall:e=>{b=!0,l(()=>import(`./boot-stall-overlay-Pxp4nHfq.js`).then(t=>t.showBootStallOverlay(document,e)),[])},onLateReady:()=>{_e()}});Ga({send:e=>x.client.sendRaw(e)}),d?.(x.client);let te=Ku(v,x.client,t,{instanceId:a,standalone:{browser:r,realCdpTransport:i,runtimeMode:n,floatKind:g}}),{setupSudoStandalone:ne}=await l(async()=>{let{setupSudoStandalone:e}=await import(`./main-DjAHuk3R.js`).then(e=>e.i);return{setupSudoStandalone:e}},__vite__mapDeps([40,1,41,16,17,18,19,20,21,22,23,24,2,8,25,26,5,27,28,29,7,30,31,32,33,34,35,36,37,6,42,43,44,45,46,47,48]));await ne({log:t});try{await x.ready}finally{b&&l(()=>import(`./boot-stall-overlay-Pxp4nHfq.js`).then(e=>e.removeBootStallOverlay(document)),[])}v.wiring.notifyReady?.(),t.info(`WC live shell ready`,{scoops:x.client.getScoops().length}),te?.();let{consumeAutoPrompt:re}=await l(async()=>{let{consumeAutoPrompt:e}=await import(`./auto-prompt-Mj-vUQeB.js`);return{consumeAutoPrompt:e}},[]),S=re(window.location.search);S&&(v.getController()?.sendUserMessage(S),t.info(`Auto-prompt submitted`,{length:S.length}))}export{Si as A,wa as C,ja as D,ka as E,Kn as F,Gn as I,an as L,ta as M,Tn as N,Ci as O,cn as P,rn as R,Aa as S,Ea as T,Hs as _,Nc as a,xa as b,Ac as c,dc as d,lc as f,Bs as g,Vs as h,Oc as i,ba as j,ra as k,Fc as l,zs as m,Au as n,jc as o,Zs as p,ku as r,Dc as s,Ku as t,fc as u,Rs as v,Da as w,Oa as x,Ua as y};