sliccy 6.178.2 → 6.179.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (185) hide show
  1. package/dist/ui/.vite/manifest.json +191 -182
  2. package/dist/ui/assets/SKILL-B26KJxxL.js +1 -0
  3. package/dist/ui/assets/__vite-browser-external-CVereMU8.js +1 -0
  4. package/dist/ui/assets/account-store-Bbb4tBjB.js +2 -0
  5. package/dist/ui/assets/account-store-DORXRt2J.js +1 -0
  6. package/dist/ui/assets/{adobe-BHZ-TF7E.js → adobe-CcJb_1io.js} +1 -1
  7. package/dist/ui/assets/{adobe-Cqd5wrqM.js → adobe-Dxc6H5uX.js} +1 -1
  8. package/dist/ui/assets/{agent-panels-DXCdmUkc.js → agent-panels-DukhfWpj.js} +1 -1
  9. package/dist/ui/assets/{almost-bash-shell-headless-B29ulBpN.js → almost-bash-shell-headless-2tBN0e_f.js} +231 -231
  10. package/dist/ui/assets/{apply-layout-BiYaZGTe.js → apply-layout-CnYIzvao.js} +1 -1
  11. package/dist/ui/assets/{apps-BYK0eeEc.js → apps-6FOwbeg0.js} +1 -1
  12. package/dist/ui/assets/{azure-openai-DwxTKwka.js → azure-openai-Bcul1Ufv.js} +1 -1
  13. package/dist/ui/assets/{azure-openai-BgA0OxNa.js → azure-openai-NsEky3Bh.js} +1 -1
  14. package/dist/ui/assets/{backend-hostfs-CeXHlroV.js → backend-hostfs-BJv18aU0.js} +1 -1
  15. package/dist/ui/assets/bedrock-camp-BQ02i7Bk.js +1 -0
  16. package/dist/ui/assets/bedrock-camp-CMYc0nQP.js +1 -0
  17. package/dist/ui/assets/bedrock-camp-extra-models-B0WH9IRx.js +1 -0
  18. package/dist/ui/assets/bedrock-camp-extra-models-WTCIjj5a.js +1 -0
  19. package/dist/ui/assets/{bunny-probe-Dk-taSwq.js → bunny-probe-DwyMiB71.js} +1 -1
  20. package/dist/ui/assets/{bunny-run-CmnXF3U5.js → bunny-run-COGwXgvg.js} +1 -1
  21. package/dist/ui/assets/{cdp-wm8vfA8s.js → cdp-Ck5NGIgv.js} +4 -4
  22. package/dist/ui/assets/{cerebras-wuHzITPY.js → cerebras-B2ofXAjg.js} +1 -1
  23. package/dist/ui/assets/{cerebras-BPlfZv3L.js → cerebras-DzROLFaR.js} +1 -1
  24. package/dist/ui/assets/{composer-speech-DI9SI2lY.js → composer-speech-ArgvCsJw.js} +1 -1
  25. package/dist/ui/assets/{connect-surface-zTa8OfFh.js → connect-surface-DVI8l1Gj.js} +1 -1
  26. package/dist/ui/assets/{directed-approval-DmDgVpiX.js → directed-approval-D5B0YPqE.js} +1 -1
  27. package/dist/ui/assets/{ensure-speech-assets-42E6KJDv.js → ensure-speech-assets-Bt69TLMK.js} +1 -1
  28. package/dist/ui/assets/{fast-path-DiV4YcEb.js → fast-path-CG_eXz0M.js} +1 -1
  29. package/dist/ui/assets/{frozen-archive-writer-C97kBlYw.js → frozen-archive-writer-DRM5RlgX.js} +1 -1
  30. package/dist/ui/assets/{fs-DmgjBIs9.js → fs-Bdm5h1uM.js} +1 -1
  31. package/dist/ui/assets/{fs-BKmepe3Q.js → fs-Ce8P6WrG.js} +2 -2
  32. package/dist/ui/assets/{gelatiere-store-D1l9WE1j.js → gelatiere-store-BZg-43KO.js} +1 -1
  33. package/dist/ui/assets/{gelatiere-unit-jlm5b-JJ.js → gelatiere-unit-BX9sZFKS.js} +1 -1
  34. package/dist/ui/assets/{github-C8jjATg2.js → github-8zos8s_U.js} +2 -2
  35. package/dist/ui/assets/{github-BB3M-XW1.js → github-CCjvDIfP.js} +1 -1
  36. package/dist/ui/assets/{github-auth-CkC7qTEg.js → github-auth-A-2czSUQ.js} +1 -1
  37. package/dist/ui/assets/{github-copilot-DuwasHAz.js → github-copilot-BptMXI0N.js} +1 -1
  38. package/dist/ui/assets/{github-copilot-D7QRCTDD.js → github-copilot-CKr_YmDA.js} +1 -1
  39. package/dist/ui/assets/{github-install-DT3Wys59.js → github-install-fthN4iEm.js} +1 -1
  40. package/dist/ui/assets/{github-zip-CX3GXBmW.js → github-zip-DwYtMYDx.js} +1 -1
  41. package/dist/ui/assets/{hear-pJ--prvx.js → hear-4csSE4tf.js} +1 -1
  42. package/dist/ui/assets/{help-gOzjZhgS.js → help-CW93-CFs.js} +1 -1
  43. package/dist/ui/assets/{installer-DeqzzcvC.js → installer-DMXLmwMy.js} +1 -1
  44. package/dist/ui/assets/{js-realm-worker-QT2JnICz.js → js-realm-worker-C2CFKG9d.js} +9 -9
  45. package/dist/ui/assets/{jsh-executor-BBZWMBxV.js → jsh-executor-sKhz-2wo.js} +3 -3
  46. package/dist/ui/assets/{kernel-worker-B23YxkDH.js → kernel-worker-DPGsdtHG.js} +11 -11
  47. package/dist/ui/assets/{lick-ws-bridge-CpcUjLS6.js → lick-ws-bridge-QLNp37XL.js} +1 -1
  48. package/dist/ui/assets/{lick-ws-bridge-DsoQWD5s.js → lick-ws-bridge-sNe1yusQ.js} +1 -1
  49. package/dist/ui/assets/{live-session-curation-BWfx-Nu1.js → live-session-curation-BeMkfXGh.js} +1 -1
  50. package/dist/ui/assets/{live-session-snapshot-BSNfthJ2.js → live-session-snapshot-Bm0Bb5YU.js} +1 -1
  51. package/dist/ui/assets/{local-llm-vzP-uq7M.js → local-llm-BP0eQCgl.js} +1 -1
  52. package/dist/ui/assets/{local-llm-DGFPI_4T.js → local-llm-DY70xAff.js} +1 -1
  53. package/dist/ui/assets/main-B0cbvPwD.js +22 -0
  54. package/dist/ui/assets/{main-cherry-Bbjw_90k.js → main-cherry-Cs8W2ySf.js} +1 -1
  55. package/dist/ui/assets/{memory-curation-seam-BufuSUCj.js → memory-curation-seam-BHFcRLuu.js} +1 -1
  56. package/dist/ui/assets/{memory-health-DdSqq7yP.js → memory-health-JgHshbO8.js} +1 -1
  57. package/dist/ui/assets/memory-v2-flag-DZrdHcA-.js +1 -0
  58. package/dist/ui/assets/{memory-write-execute-BygymnF0.js → memory-write-execute-Bw7kTO2u.js} +1 -1
  59. package/dist/ui/assets/{mount-DlogHA7u.js → mount-B70Cfm-W.js} +3 -3
  60. package/dist/ui/assets/{mount-_sTSuvKx.js → mount-CT7VaoKY.js} +1 -1
  61. package/dist/ui/assets/new-session-Crr2-msq.js +2 -0
  62. package/dist/ui/assets/oauth-bootstrap-CZzvOYOg.js +2 -0
  63. package/dist/ui/assets/{onboarding-orchestrator-CbnB67nZ.js → onboarding-orchestrator-CXxroXfS.js} +1 -1
  64. package/dist/ui/assets/{openai-codex-SI0nWQNS.js → openai-codex-Bv9btlww.js} +1 -1
  65. package/dist/ui/assets/{openai-codex-BtwVt-12.js → openai-codex-DCsbLgXd.js} +1 -1
  66. package/dist/ui/assets/{openrouter-BFlMjaCH.js → openrouter-CnnttWgn.js} +1 -1
  67. package/dist/ui/assets/{openrouter-BruOnSfT.js → openrouter-Crgs_QCq.js} +1 -1
  68. package/dist/ui/assets/{openrouter-free-B2pceWVg.js → openrouter-free-CgIoPuxn.js} +1 -1
  69. package/dist/ui/assets/{openrouter-free-DPQDCfqQ.js → openrouter-free-DRkmaxB3.js} +1 -1
  70. package/dist/ui/assets/{openrouter-oauth-BLskezr8.js → openrouter-oauth-CxTickkD.js} +1 -1
  71. package/dist/ui/assets/{openrouter-oauth-C4kwBIwS.js → openrouter-oauth-pI7Aub_Z.js} +1 -1
  72. package/dist/ui/assets/{opfs-mount-8s9WP18b.js → opfs-mount-mco_YXZ2.js} +1 -1
  73. package/dist/ui/assets/panel-rpc-handlers-DlWD1u2Q.js +2 -0
  74. package/dist/ui/assets/{panelize-shell-Dg_58ImI.js → panelize-shell-C6AGU1O_.js} +1 -1
  75. package/dist/ui/assets/{pi-edit-execution-C9GYKunH.js → pi-edit-execution-yVaqL9lZ.js} +1 -1
  76. package/dist/ui/assets/{provider-DEcfbBkM.js → provider-BLg5uchT.js} +1 -1
  77. package/dist/ui/assets/{provider-B_fhkXn7.js → provider-DGvW9aTF.js} +2 -2
  78. package/dist/ui/assets/{provider-settings-BLtjMrT0.js → provider-settings-CeFsisH4.js} +1 -1
  79. package/dist/ui/assets/provider-store-access-BaHh7m4I.js +1 -0
  80. package/dist/ui/assets/provider-store-access-CnoMGfWY.js +1 -0
  81. package/dist/ui/assets/providers-2pihfuXe.js +2 -0
  82. package/dist/ui/assets/providers-BNhTu4Az.js +1 -0
  83. package/dist/ui/assets/py-live-vfs-DaPSes0l.js +168 -0
  84. package/dist/ui/assets/py-live-vfs-Dx9cFlfE.js +168 -0
  85. package/dist/ui/assets/{py-realm-worker-A1ICPvEl.js → py-realm-worker-CYwLJW9I.js} +3 -3
  86. package/dist/ui/assets/{pyodide-DGH4V3SQ.js → pyodide-DKNrUBio.js} +2 -2
  87. package/dist/ui/assets/{quick-llm-B8uh7EVu.js → quick-llm-DcsNLbYv.js} +1 -1
  88. package/dist/ui/assets/realm-inprocess-BgV7BI1t.js +30 -0
  89. package/dist/ui/assets/{recovery-screen-M8szzZB2.js → recovery-screen-xvnzvjnh.js} +1 -1
  90. package/dist/ui/assets/{remote-terminal-view-6ygd42Fb.js → remote-terminal-view-C_QEoDZe.js} +1 -1
  91. package/dist/ui/assets/require-guards-Du29-pl4.js +252 -0
  92. package/dist/ui/assets/{restore-Qq5h6a38.js → restore-90cAJcB-.js} +1 -1
  93. package/dist/ui/assets/{run-C0wVagJ5.js → run-BjdOwTMK.js} +2 -2
  94. package/dist/ui/assets/{run-DK8nktud.js → run-BoSrXXY1.js} +2 -2
  95. package/dist/ui/assets/{run-CPDsfLJJ.js → run-Bx5g1SW-.js} +2 -2
  96. package/dist/ui/assets/{run-C3rYy-Lu.js → run-C-9fbuPf.js} +1 -1
  97. package/dist/ui/assets/{run-dNFrBZDI.js → run-CTYkZrli.js} +1 -1
  98. package/dist/ui/assets/{run-DUzzkV29.js → run-DMneLV98.js} +3 -3
  99. package/dist/ui/assets/{run--H9dud5r.js → run-Di77_0CW.js} +2 -2
  100. package/dist/ui/assets/{run-Bk0pGJJa.js → run-R7EnlHqn.js} +1 -1
  101. package/dist/ui/assets/{run-_QNErIec.js → run-u5sZdtZc.js} +2 -2
  102. package/dist/ui/assets/{session-command-memory-CAl1-crq.js → session-command-memory-BIW04ime.js} +2 -2
  103. package/dist/ui/assets/{session-jsonl-B-4fihPX.js → session-jsonl-BT6N86_D.js} +1 -1
  104. package/dist/ui/assets/{session-jsonl-lB9-7rZS.js → session-jsonl-DRpBHMbZ.js} +1 -1
  105. package/dist/ui/assets/{session-search-index-Bn4FhmPW.js → session-search-index-CRSNfFPt.js} +1 -1
  106. package/dist/ui/assets/{setup-feature-flags-remote-opNg3JWs.js → setup-feature-flags-remote-DLPlEBtl.js} +1 -1
  107. package/dist/ui/assets/{signed-fetch-YC2zrriw.js → signed-fetch-Cv-pIQgJ.js} +1 -1
  108. package/dist/ui/assets/{silent-renew-backoff-Bak0vwwf.js → silent-renew-backoff-BL0l9czs.js} +1 -1
  109. package/dist/ui/assets/slicc-version-wzJMaTOt.js +1 -0
  110. package/dist/ui/assets/{snapshot-features-BqGUjBWl.js → snapshot-features-DN8885R6.js} +1 -1
  111. package/dist/ui/assets/{snapshot-6br_5p-f.js → snapshot-h1IyuVIH.js} +1 -1
  112. package/dist/ui/assets/{soundscape-DRViCPly.js → soundscape-qJ4gJF6y.js} +1 -1
  113. package/dist/ui/assets/{speak-DRv_vLqY.js → speak-CUSuBAiN.js} +1 -1
  114. package/dist/ui/assets/{sprinkle-manager-DeJrE3Hq.js → sprinkle-manager-CK0KfQ0E.js} +1 -1
  115. package/dist/ui/assets/{sprinkle-renderer-DYUy10CO.js → sprinkle-renderer-C0-nYSNx.js} +1 -1
  116. package/dist/ui/assets/{src-CmTUvI8R.js → src-BfoZU01X.js} +74 -74
  117. package/dist/ui/assets/{ssh-D1zj1EXl.js → ssh-D9CT02gL.js} +1 -1
  118. package/dist/ui/assets/{state-BpyjzTIG.js → state-DCSstoTF.js} +1 -1
  119. package/dist/ui/assets/{store-DQkIRnav.js → store-COcJ0rh9.js} +1 -1
  120. package/dist/ui/assets/{store-DwUewAuZ.js → store-DrLyzt3v.js} +1 -1
  121. package/dist/ui/assets/{sudo-DIegVBwT.js → sudo-BLsv33L7.js} +1 -1
  122. package/dist/ui/assets/{supervisor-gHbk5m7z.js → supervisor-DC1z_etC.js} +1 -1
  123. package/dist/ui/assets/{sync-dialog-CH4PBcVu.js → sync-dialog-B9Na5xYc.js} +1 -1
  124. package/dist/ui/assets/sync-exec-xhr-bridge-BjD_IfJF.js +1 -0
  125. package/dist/ui/assets/sync-sab-wire-CkrsRVrw.js +1 -0
  126. package/dist/ui/assets/tab-8LaHojfd.js +1 -0
  127. package/dist/ui/assets/{transformers-env-9M9En1_O.js → transformers-env-DbQSH9Ln.js} +1 -1
  128. package/dist/ui/assets/{tray-leader-Bd293BI8.js → tray-leader-DyfRH9_x.js} +1 -1
  129. package/dist/ui/assets/{tray-leave-runtime-wLd1uBMu.js → tray-leave-runtime-BRVkq1j8.js} +1 -1
  130. package/dist/ui/assets/{tray-sidecar-C35X7Jht.js → tray-sidecar-BdSKCDRU.js} +1 -1
  131. package/dist/ui/assets/{upgrade-detection-Tp8fDJAG.js → upgrade-detection-DOttGbYy.js} +1 -1
  132. package/dist/ui/assets/{upskill-lick-skip-Cr0VVPGj.js → upskill-lick-skip-4EAgxZBZ.js} +1 -1
  133. package/dist/ui/assets/{voice-reply-wJfABSIn.js → voice-reply-BMbj-krb.js} +1 -1
  134. package/dist/ui/assets/wc-attach-BYh78RZQ.js +13 -0
  135. package/dist/ui/assets/{wc-browser-BJemxWhg.js → wc-browser-D_SlpGFj.js} +1 -1
  136. package/dist/ui/assets/{wc-computers-Cr14YnOg.js → wc-computers-DguwFFgg.js} +1 -1
  137. package/dist/ui/assets/{wc-detached-DQ_ZTSZ-.js → wc-detached-BwCNIFnT.js} +1 -1
  138. package/dist/ui/assets/{wc-extension-C8pgLDqO.js → wc-extension-B3EwzUfS.js} +2 -2
  139. package/dist/ui/assets/wc-follower-CmPddVGO.js +17 -0
  140. package/dist/ui/assets/{wc-follower-oauth-BU-XAftl.js → wc-follower-oauth-D9PaxsNc.js} +1 -1
  141. package/dist/ui/assets/{wc-gelatiere-BiyouLW3.js → wc-gelatiere-BIfd8LAx.js} +1 -1
  142. package/dist/ui/assets/{wc-live-CaopRwn0.js → wc-live-Dq-_FAPU.js} +6 -6
  143. package/dist/ui/assets/wc-nav-hfv762PR.js +2 -0
  144. package/dist/ui/assets/{wc-onboarding-FjrDOv_u.js → wc-onboarding-BAO8Xa0p.js} +2 -2
  145. package/dist/ui/assets/{wc-permissions-C63-jLbY.js → wc-permissions-BWZQsa4a.js} +2 -2
  146. package/dist/ui/assets/{wc-placeholder-Bdbmjijc.js → wc-placeholder-BJLM84yS.js} +3 -3
  147. package/dist/ui/assets/{wc-secret-request-C9iCWgBV.js → wc-secret-request-DMdnDVOi.js} +1 -1
  148. package/dist/ui/assets/{wc-settings-1ZJgN4Wk.js → wc-settings-Cwj7tYnH.js} +3 -3
  149. package/dist/ui/assets/{wc-shell-CrMn8BW0.js → wc-shell-Cn2tEDM7.js} +4 -4
  150. package/dist/ui/assets/{wc-shortcut-config-JXEU24sg.js → wc-shortcut-config-C5cwDbE-.js} +1 -1
  151. package/dist/ui/assets/{wc-sprinkles-CBaPR_V8.js → wc-sprinkles-Bme5XF35.js} +2 -2
  152. package/dist/ui/assets/{wc-transcript-export-eyG-SwVe.js → wc-transcript-export-D5m4sap2.js} +2 -2
  153. package/dist/ui/assets/{wc-tray-dSLNIDh9.js → wc-tray-kqJoJtNf.js} +4 -4
  154. package/dist/ui/assets/welcome-detection-CQJa6RP3.js +1 -0
  155. package/dist/ui/assets/whisper-session-DhEBOCZj.js +2 -0
  156. package/dist/ui/assets/{xai-grok-C2oyJ5tt.js → xai-grok-DVO4KVhh.js} +1 -1
  157. package/dist/ui/assets/{xai-grok-G4GFCgrM.js → xai-grok-UADpK8FU.js} +1 -1
  158. package/dist/ui/index.html +4 -3
  159. package/dist/ui/llm-proxy-sw.js +1 -1
  160. package/dist/ui/packages/webapp/index.html +4 -3
  161. package/package.json +1 -1
  162. package/dist/ui/assets/SKILL-CJrjPuRt.js +0 -1
  163. package/dist/ui/assets/__vite-browser-external-C7Grxh8D.js +0 -1
  164. package/dist/ui/assets/account-store-LwLxI7v1.js +0 -1
  165. package/dist/ui/assets/account-store-SI8RQbm0.js +0 -2
  166. package/dist/ui/assets/bedrock-camp-D-jmLdEX.js +0 -1
  167. package/dist/ui/assets/bedrock-camp-DmVFQWfL.js +0 -1
  168. package/dist/ui/assets/main-DFTTAllP.js +0 -22
  169. package/dist/ui/assets/memory-v2-flag-uChv9nwr.js +0 -1
  170. package/dist/ui/assets/new-session-C914zfKa.js +0 -2
  171. package/dist/ui/assets/oauth-bootstrap-B7cPXMSk.js +0 -2
  172. package/dist/ui/assets/panel-rpc-handlers-BuMdGle_.js +0 -2
  173. package/dist/ui/assets/provider-store-access-C0w1Xcs2.js +0 -1
  174. package/dist/ui/assets/provider-store-access-YjQKD2es.js +0 -1
  175. package/dist/ui/assets/providers-B0rCH1pp.js +0 -1
  176. package/dist/ui/assets/providers-B9p2VR5L.js +0 -2
  177. package/dist/ui/assets/realm-inprocess-qhbZWW6z.js +0 -30
  178. package/dist/ui/assets/slicc-version-D1Js64gw.js +0 -1
  179. package/dist/ui/assets/sync-sab-wire-CN1_ni9J.js +0 -252
  180. package/dist/ui/assets/tab-0xwFvGm5.js +0 -1
  181. package/dist/ui/assets/wc-attach-CtVWDKPk.js +0 -13
  182. package/dist/ui/assets/wc-follower-nosCeVKN.js +0 -17
  183. package/dist/ui/assets/wc-nav-Wn2qDNiX.js +0 -2
  184. package/dist/ui/assets/welcome-detection-DuFRP38Z.js +0 -1
  185. package/dist/ui/assets/whisper-session-DrDhzSqp.js +0 -2
@@ -1,5 +1,5 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/dist-kBT87Ea7.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/preload-helper-Czpn1I53.js","assets/quick-llm-B8uh7EVu.js","assets/compat-qQM4gjF_.js","assets/models-BSkXF4T6.js","assets/diagnostics-DN_idNHx.js","assets/provider-env-CTOcDKrQ.js","assets/__vite-browser-external-5eBdwsFd.js","assets/openrouter.models-B-zmcypy.js","assets/logger-DDBAeTLF.js","assets/account-store-SI8RQbm0.js","assets/core-zz8rWM4c.js","assets/libesm-BypnjKEL.js","assets/proxied-fetch-W1rZTqEQ.js","assets/base64-ELzoYfwP.js","assets/fetch-body-1l9I58Vk.js","assets/api-endpoint-DuEQRZ4g.js","assets/runtime-env-Dlaokqg1.js","assets/secret-topology-fyLSbV8r.js","assets/float-topology-U8FF9pgZ.js","assets/secrets-bridge-client-9RRVsrGm.js","assets/port-bridge-client-BYQawsDH.js","assets/image-markers-q8JQTtid.js","assets/tool-ui-eSQ1g2I1.js","assets/providers-B9p2VR5L.js","assets/panel-rpc-B3MSVImO.js","assets/bedrock-camp-compat-BeCSBUrZ.js","assets/claude-model-version-DZmbk9E2.js","assets/llm-session-id-bZQs6gBN.js","assets/icons-jrIi5FYk.js","assets/isomorphic-git-C3lNgE6Y.js","assets/buffer-DvhmllZ2.js"])))=>i.map(i=>d[i]);
2
- import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./preload-helper-Czpn1I53.js";import{t as n}from"./logger-DDBAeTLF.js";import{i as r,n as i,r as a,t as o}from"./mime-types-D0xZwlMO.js";import{n as s,t as c}from"./base64-ELzoYfwP.js";import{a as l}from"./bridge-protocol-C52CnDIj.js";import{h as u,k as d}from"./account-store-SI8RQbm0.js";import{n as f}from"./runtime-env-Dlaokqg1.js";import{n as p}from"./image-markers-q8JQTtid.js";import{d as m,f as h,i as g,m as _,u as v}from"./telemetry-CKoAhRMv.js";import{t as y}from"./types-D8gIX-W-.js";import{t as b}from"./same-file-identity-DuEcSmPX.js";import{a as x,n as S,t as C}from"./icons-jrIi5FYk.js";function w(e){if(!Number.isFinite(e)||e<=0)return`0 B`;let t=[`B`,`KB`,`MB`,`GB`],n=e,r=0;for(;n>=1024&&r<t.length-1;)n/=1024,r++;return`${n>=10||r===0?Math.round(n):Math.round(n*10)/10} ${t[r]}`}function ee(e){let t=e.mimeType||`application/octet-stream`;return`${e.name} (${t}, ${w(e.size)})`}function te(e,t=`The original file lives on a remote runtime and is not accessible here.`){return e?.length?e.map(e=>{if(!e.path)return{...e};let{path:n,...r}=e;return e.kind===`image`&&e.data||e.kind===`text`&&e.text!==void 0?r:{...r,error:r.error??t}}):[]}var ne='---\nintervalHours: 24\nnightly: \'0 3 * * *\'\nmaxSuggestions: 5\n# allowedCommands adds to the built-in set a pass may run without asking you\n# for approval; it never replaces it. Bare command names only:\n# allowedCommands: [tree, xxd]\n---\n\n# Gelatiere pass\n\nYou are the gelatiere, SLICC\'s resident advisor. A lick just asked you for a pass: a nightly `[Cron Event: gelatiere-nightly]`, a `[Sprinkle Event: gelatiere]` because a session ended or someone ran `gelatiere run`, or a direct request. Your job is to look at how this person actually uses SLICC and come back with a handful of concrete, well-grounded suggestions — skills to install, use cases they have not tried, habits that would make their sessions go better, a skill worth writing when none exists, a bug worth reporting when SLICC itself is what got in the way — then hand them to the cones.\n\n**Work fast: a pass should take a few minutes, not many.** Mine the signals below, cross them with what is available, write the candidates file, and finish with the two commands at the end. Never install anything, never edit memory files yourself (the nightly\'s `memory dream` delegates that to sandboxed dreamer scoops), never message a cone by any other means than `gelatiere deliver`.\n\n## Nightly only: start the dreaming pass\n\nWhen this pass is the nightly (`[Cron Event: gelatiere-nightly]`), start the memory-dreaming pass first, before anything else, and do not wait for it:\n\n```bash\nmemory dream --all\n```\n\nThat spawns one sandboxed memory-dreamer per cone to consolidate its memory file — merge duplicates, drop superseded facts, land under budget. It runs detached; carry on with your own pass immediately and never read or edit the memory files it is working on beyond the signal-mining below. Skip this step entirely on session-end and on-demand passes.\n\n## What the user has done\n\nRead these in order; each one is cheap. Start with `date -u +%Y-%m-%d` so your evidence carries today\'s date.\n\n1. **Profile** — who they said they are on first run: `cat /home/*/.welcome.json 2>/dev/null` (`purpose`, `role`, `tasks`, `apps`, `company`).\n2. **Durable memory** — what earlier sessions already established (preferences, projects, pitfalls): `cat /workspace/CLAUDE.md`, and `cat /cones/*/CLAUDE.md 2>/dev/null` for the other cones. A long-lived install\'s memory files run to a thousand lines each; on those, read the shape first (`grep -n \'^## \' FILE`) and `sed -n` only the sections that look relevant.\n3. **Session index** — titles, dates, cones: `jq -r \'.[] | "\\(.frozenAt[0:10]) \\(.cone // "cone") \\(.title)"\' /sessions/index.json | tail -30`.\n4. **Recent archives** — the newest few sessions: `ls -t /sessions/*.md | grep -v agent- | head -5`.\n `/sessions/live-*.md` in that list is a chat still in progress — usually the newest and largest\n signal there is, and the easiest to skip. Check `ls -lt /sessions/live-*.md` too.\n5. **Your own notes** — what you concluded last time: `cat /shared/.gelatiere/notes.md 2>/dev/null`.\n\n**Never `cat` an archive.** They reach several megabytes and the `<!-- slicc:session-data ... -->` block is one JSON line holding the whole session. Pull the three signals separately, each on the prose half only:\n\n```bash\n# What the user asked for, in their words.\nsed \'/^<!-- slicc:session-data$/,/^-->$/d\' ARCHIVE | awk \'/^## User/{p=1;next} /^## (Assistant|Summary)/{p=0} /^### Tool/{p=0} p\' | head -80\n\n# Which commands and tools the sessions lean on.\nsed \'/^<!-- slicc:session-data$/,/^-->$/d\' ARCHIVE | grep -o \'^### Tool: [a-z_]*\' | sort | uniq -c | sort -rn\nsed \'/^<!-- slicc:session-data$/,/^-->$/d\' ARCHIVE | grep -oE \'^\\$? ?[a-z][a-z0-9-]+ \' | sort | uniq -c | sort -rn | head -20\n\n# What broke — the strongest signal for a missing skill.\nsed \'/^<!-- slicc:session-data$/,/^-->$/d\' ARCHIVE | grep -B4 \'^Result:.*\\(rror\\|not found\\|failed\\|denied\\|ENOENT\\)\' | cut -c1-160 | head -60\n```\n\n6. **What is already installed** — never suggest a duplicate: `upskill list`.\n7. **What you already suggested** — `/shared/.gelatiere/suggestions.json` holds every earlier suggestion with its `dismissedAt`. Do not repeat an id that is still open, and do not resurrect a dismissed one unless the sessions show a new, strong reason: `jq -r \'.[] | "\\(.id)\\t\\(.kind)\\t\\(.dismissedAt // "open")\\t\\(.title)"\' /shared/.gelatiere/suggestions.json 2>/dev/null`.\n\n## What is available\n\nCross the signals above with what SLICC can offer. Spend one command on each; do not browse further.\n\n```bash\n# The skill catalog: name, description, the tasks / roles / apps each skill fits, and WHERE it\n# lives (repo, path, skill, installAll) — the install command is built from those last four.\ngelatiere catalog | jq -r \'.data[] | "\\(.name)\\t\\(.description)\\ttasks=\\(.tasks) role=\\(.role) apps=\\(.apps)\\trepo=\\(.repo) path=\\(.path) skill=\\(.skill) installAll=\\(.installAll)"\'\n\n# Every documented shell command, one man page each. This is what the WEBSITE documents,\n# not everything SLICC ships — never tell the user a command is absent on this alone.\ngelatiere commands\n\n# What SLICC is FOR, in the site\'s own words: title, summary and the skills each use case\n# wants. Where a `use-case` suggestion for untried territory comes from.\ngelatiere use-cases\n\n# The community skills repo, when the catalog looks thin for this user.\nupskill ai-ecoverse/skills\n```\n\nRead a man page only when you are about to recommend that command and need to be sure it does what you think: `gelatiere man <command> | head -60`. You have no `curl` and need none — `gelatiere catalog`, `gelatiere commands`, `gelatiere use-cases` and `gelatiere man` are your whole web surface.\n\n## What to suggest\n\nAt most the `maxSuggestions` from the config block above, best first. Fewer, sharper suggestions beat a full list; an empty list is a fine outcome when nothing is genuinely worth the user\'s attention. Every suggestion must be traceable to something you saw:\n\n| kind | when | required fields |\n| ------------ | ----------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- |\n| `skill` | a catalog or repo skill matches a recurring task, app, or failure in the sessions | `skill`, and `install` — the exact `upskill` command (see below) |\n| `use-case` | a SLICC capability (shell command, scoops, sprinkles, mounts, automation) fits work the user does by hand or not at all | `prompt` — a message the user could send verbatim |\n| `tip` | a habit that would have avoided a failure or a repeated detour in the sessions | `body` explains what to do differently |\n| `skill-idea` | the sessions repeat a routine no installable skill covers — write one instead of installing one | `prompt` — what to ask a cone to author |\n| `issue` | SLICC ITSELF is what got in the way: a command that broke, a surface that lied, a capability that is simply missing | `prompt` — what to ask a cone to file |\n\n### `skill-idea` and `issue` — the two that point away from the catalog\n\nThe catalog is small and mostly already installed, so do not expect a `skill` every pass. When the\nsame multi-step routine shows up in two or more sessions — the same command sequence, the same\nprompt retyped, the same checklist rebuilt from memory — and neither `upskill list` nor `gelatiere\ncatalog` covers it, the honest answer is **write one**. Name the routine you watched, not a\ncategory; the `prompt` asks a cone to author it (what it does, when it triggers, the steps you saw)\nand points at `skill-creator` when `upskill list` shows it installed.\n\n> "You rebuilt the same release checklist by hand in three sessions — tag, changelog, TestFlight\n> notes, then the smoke run." `prompt`: "Write a skill for my release checklist: …"\n\n`issue` is for the failures nobody reports: the command that exited 1 and got worked around, the\nflag that silently did nothing, the panel that showed stale state. Only when the friction is\nSLICC\'s own AND reproducible from what you read — a named failure with session evidence, not a\nwish. One per pass at the very most: a pass that files speculative bugs teaches the user to ignore\nthe card. The `prompt` asks a cone to open it against `ai-ecoverse/slicc` with your reproduction.\n\n> "`chmod +x` reports success and leaves the mode unchanged, so `./script.sh` fails with\n> `Permission denied`." `prompt`: "File an issue against ai-ecoverse/slicc: chmod appears to …"\n\nNeither fits when the user simply did something the hard way (that is a `tip`), when the capability\nalready exists and they missed it (`use-case`), or when the evidence is one ambiguous error.\n\n### The `install` command\n\nIt is built from the catalog row, never from the bare name — `upskill <name>` alone searches the public registries and does not find catalog skills:\n\n| catalog row | `install` |\n| ------------------------------------------------- | -------------------------------------------- |\n| `repo=o/r skill=x` (path empty) | `upskill o/r --skill x` |\n| `repo=o/r path=skills/ skill=x` | `upskill o/r --path skills/ --skill x` |\n| `repo=o/r path=skills/migration/ installAll=true` | `upskill o/r --path skills/migration/ --all` |\n| a skill from `upskill ai-ecoverse/skills` output | `upskill ai-ecoverse/skills --skill <name>` |\n\n### Rules for every kind\n\n- `id` is a stable slug (`skill-github`, `use-case-fswatch-deploy`, `tip-mount-once`, `skill-idea-release-checklist`, `issue-chmod-noop`) so a repeat pass recognises it.\n- Speak to the user as "you" in every field — never about them in the third person ("Lars builds…" is wrong; "You build…" is right).\n- The card shows exactly two things — WHAT to do and WHY — so write the fields that way:\n - `title` is the WHAT: a short imperative, eight words or fewer, sentence case — "Install the GitHub skill", "Script your build–serve–screenshot loop", "Write a release-checklist skill", "Report the chmod no-op". No benefit clause bolted on ("…to manage repos and pull requests from chat" belongs in the why, if anywhere).\n - `body` is the WHY: one or two sentences, grounded in what you actually saw, that tell the story of the change — what you watched the user do by hand, and what gets better. "You ran the build–serve–screenshot loop 80+ times by hand in your bakery session; a workflow file replays it as one command." It must not restate the title, list features, or repeat `evidence` word for word.\n- `evidence` is one friendly sentence, spoken to the user, saying what you saw that led here — "You told the welcome wizard you\'re a developer who lives in GitHub". It rides the lick for the cones; the card does not render it, so do not lean on it to justify the suggestion — the why lives in `body`. Never a field dump like `role=developer, tasks=[…]`.\n- `url` is optional: the skill page or the man page.\n- `cones` names who it is for: the folder(s) of the cones whose sessions or memory led to it — the `cone` in the session index or an archive\'s frontmatter (`cone` is the primary, `cone-<slug>` an extra cone). Only those cones get a lick. Omit it only for advice that is about the whole install, not one cone\'s work; that goes to the primary cone alone.\n- Never suggest what `upskill list` already shows installed, and never invent a skill or command that is not in the catalog, the repo listing, or the sitemap. A `skill-idea` is the one exception — it names a skill that does NOT exist yet, which is the point; check first that no installable one covers it.\n\n## Finish\n\nWrite the candidates as JSON — `{ "suggestions": [ { "id", "kind", "title", "body", "skill", "install", "prompt", "url", "evidence", "cones" } ] }` — to `$TMPDIR/candidates.json`, then run exactly:\n\n```bash\ngelatiere suggest "$TMPDIR/candidates.json" && gelatiere deliver\n```\n\n`suggest` validates and folds the candidates into the store (known ids are kept, dismissed ones stay dismissed); `deliver` licks each cone with what is new and addressed to it. Then update `/shared/.gelatiere/notes.md` with two or three lines on what you looked at and what you decided against — that file, not your reply, is your memory across passes. Reply with one short line.\n\n<!-- How to customize\nAdd instructions above, for example: prefer skills from a company repo, or always check a team\nwiki at /mnt/kb before suggesting. The config block sets `intervalHours` (minimum hours between\nsession-end passes; the nightly pass ignores it), `nightly` (a 5-field cron expression, registered\nby `gelatiere init` as the `gelatiere-nightly` crontask), `maxSuggestions` (capped at 10) and\n`allowedCommands`.\n\n`allowedCommands` is the gelatiere\'s half of what `MEMORY.md` gives the memory curator: extra shell\ncommands a pass may run without escalating. It is ADDITIVE — the built-in set (the read-only text\nutilities, `jq`, `rg`, `upskill`, `gelatiere`, `memory`) always stands, and the file only extends\nit; entries are bare command names, so `tree` is valid and `tree -L 2` is not. `gelatiere status`\nprints the list actually in force and flags an edit that has not been applied yet. The unit is\nregistered once and then persists, so an edit here takes effect on the next boot or the next\n`gelatiere init` — and never mid-pass: applying it rebuilds the unit, which would cancel a pass in\nflight, so `gelatiere init` leaves a busy gelatiere alone and asks to be re-run when it is idle.\n\nAdding a command grants it to an UNATTENDED agent that can read `/sessions/` and every cone\'s\nmemory, so weigh a network command (`curl`, `wget`, `ssh`) against that: the pass reads third-party\ncatalog and repo content, and general egress would make one injected line enough to exfiltrate an\narchive. That is why the built-in set has none, and why leaving them out is the right default.\n\nThe gelatiere is a persistent scoop no cone owns (folder `gelatiere`); its own conversation is\ncompacted while it idles. Dismissed suggestions are kept with a dismissedAt stamp so the next pass does not\nrepeat them. `gelatiere run` from any cone\'s shell asks for a pass now.\n-->\n';function re(e,t){let n=e.replace(/^\uFEFF/,``).replace(/\r\n?/g,`
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/dist-kBT87Ea7.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/preload-helper-Czpn1I53.js","assets/quick-llm-DcsNLbYv.js","assets/compat-qQM4gjF_.js","assets/models-BSkXF4T6.js","assets/diagnostics-DN_idNHx.js","assets/provider-env-CTOcDKrQ.js","assets/__vite-browser-external-5eBdwsFd.js","assets/openrouter.models-B-zmcypy.js","assets/logger-DDBAeTLF.js","assets/account-store-Bbb4tBjB.js","assets/core-zz8rWM4c.js","assets/libesm-BypnjKEL.js","assets/proxied-fetch-W1rZTqEQ.js","assets/base64-ELzoYfwP.js","assets/fetch-body-1l9I58Vk.js","assets/api-endpoint-DuEQRZ4g.js","assets/runtime-env-Dlaokqg1.js","assets/secret-topology-fyLSbV8r.js","assets/float-topology-U8FF9pgZ.js","assets/secrets-bridge-client-9RRVsrGm.js","assets/port-bridge-client-BYQawsDH.js","assets/image-markers-q8JQTtid.js","assets/tool-ui-eSQ1g2I1.js","assets/providers-2pihfuXe.js","assets/panel-rpc-B3MSVImO.js","assets/bedrock-camp-compat-BeCSBUrZ.js","assets/bedrock-camp-extra-models-WTCIjj5a.js","assets/claude-model-version-DZmbk9E2.js","assets/llm-session-id-bZQs6gBN.js","assets/icons-jrIi5FYk.js","assets/isomorphic-git-C3lNgE6Y.js","assets/buffer-DvhmllZ2.js"])))=>i.map(i=>d[i]);
2
+ import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./preload-helper-Czpn1I53.js";import{t as n}from"./logger-DDBAeTLF.js";import{i as r,n as i,r as a,t as o}from"./mime-types-D0xZwlMO.js";import{n as s,t as c}from"./base64-ELzoYfwP.js";import{a as l}from"./bridge-protocol-C52CnDIj.js";import{h as u,k as d}from"./account-store-Bbb4tBjB.js";import{n as f}from"./runtime-env-Dlaokqg1.js";import{n as p}from"./image-markers-q8JQTtid.js";import{d as m,f as h,i as g,m as _,u as v}from"./telemetry-CKoAhRMv.js";import{t as y}from"./types-D8gIX-W-.js";import{t as b}from"./same-file-identity-DuEcSmPX.js";import{a as x,n as S,t as C}from"./icons-jrIi5FYk.js";function w(e){if(!Number.isFinite(e)||e<=0)return`0 B`;let t=[`B`,`KB`,`MB`,`GB`],n=e,r=0;for(;n>=1024&&r<t.length-1;)n/=1024,r++;return`${n>=10||r===0?Math.round(n):Math.round(n*10)/10} ${t[r]}`}function ee(e){let t=e.mimeType||`application/octet-stream`;return`${e.name} (${t}, ${w(e.size)})`}function te(e,t=`The original file lives on a remote runtime and is not accessible here.`){return e?.length?e.map(e=>{if(!e.path)return{...e};let{path:n,...r}=e;return e.kind===`image`&&e.data||e.kind===`text`&&e.text!==void 0?r:{...r,error:r.error??t}}):[]}var ne='---\nintervalHours: 24\nnightly: \'0 3 * * *\'\nmaxSuggestions: 5\n# allowedCommands adds to the built-in set a pass may run without asking you\n# for approval; it never replaces it. Bare command names only:\n# allowedCommands: [tree, xxd]\n---\n\n# Gelatiere pass\n\nYou are the gelatiere, SLICC\'s resident advisor. A lick just asked you for a pass: a nightly `[Cron Event: gelatiere-nightly]`, a `[Sprinkle Event: gelatiere]` because a session ended or someone ran `gelatiere run`, or a direct request. Your job is to look at how this person actually uses SLICC and come back with a handful of concrete, well-grounded suggestions — skills to install, use cases they have not tried, habits that would make their sessions go better, a skill worth writing when none exists, a bug worth reporting when SLICC itself is what got in the way — then hand them to the cones.\n\n**Work fast: a pass should take a few minutes, not many.** Mine the signals below, cross them with what is available, write the candidates file, and finish with the two commands at the end. Never install anything, never edit memory files yourself (the nightly\'s `memory dream` delegates that to sandboxed dreamer scoops), never message a cone by any other means than `gelatiere deliver`.\n\n## Nightly only: start the dreaming pass\n\nWhen this pass is the nightly (`[Cron Event: gelatiere-nightly]`), start the memory-dreaming pass first, before anything else, and do not wait for it:\n\n```bash\nmemory dream --all\n```\n\nThat spawns one sandboxed memory-dreamer per cone to consolidate its memory file — merge duplicates, drop superseded facts, land under budget. It runs detached; carry on with your own pass immediately and never read or edit the memory files it is working on beyond the signal-mining below. Skip this step entirely on session-end and on-demand passes.\n\n## What the user has done\n\nRead these in order; each one is cheap. Start with `date -u +%Y-%m-%d` so your evidence carries today\'s date.\n\n1. **Profile** — who they said they are on first run: `cat /home/*/.welcome.json 2>/dev/null` (`purpose`, `role`, `tasks`, `apps`, `company`).\n2. **Durable memory** — what earlier sessions already established (preferences, projects, pitfalls): `cat /workspace/CLAUDE.md`, and `cat /cones/*/CLAUDE.md 2>/dev/null` for the other cones. A long-lived install\'s memory files run to a thousand lines each; on those, read the shape first (`grep -n \'^## \' FILE`) and `sed -n` only the sections that look relevant.\n3. **Session index** — titles, dates, cones: `jq -r \'.[] | "\\(.frozenAt[0:10]) \\(.cone // "cone") \\(.title)"\' /sessions/index.json | tail -30`.\n4. **Recent archives** — the newest few sessions: `ls -t /sessions/*.md | grep -v agent- | head -5`.\n `/sessions/live-*.md` in that list is a chat still in progress — usually the newest and largest\n signal there is, and the easiest to skip. Check `ls -lt /sessions/live-*.md` too.\n5. **Your own notes** — what you concluded last time: `cat /shared/.gelatiere/notes.md 2>/dev/null`.\n\n**Never `cat` an archive.** They reach several megabytes and the `<!-- slicc:session-data ... -->` block is one JSON line holding the whole session. Pull the three signals separately, each on the prose half only:\n\n```bash\n# What the user asked for, in their words.\nsed \'/^<!-- slicc:session-data$/,/^-->$/d\' ARCHIVE | awk \'/^## User/{p=1;next} /^## (Assistant|Summary)/{p=0} /^### Tool/{p=0} p\' | head -80\n\n# Which commands and tools the sessions lean on.\nsed \'/^<!-- slicc:session-data$/,/^-->$/d\' ARCHIVE | grep -o \'^### Tool: [a-z_]*\' | sort | uniq -c | sort -rn\nsed \'/^<!-- slicc:session-data$/,/^-->$/d\' ARCHIVE | grep -oE \'^\\$? ?[a-z][a-z0-9-]+ \' | sort | uniq -c | sort -rn | head -20\n\n# What broke — the strongest signal for a missing skill.\nsed \'/^<!-- slicc:session-data$/,/^-->$/d\' ARCHIVE | grep -B4 \'^Result:.*\\(rror\\|not found\\|failed\\|denied\\|ENOENT\\)\' | cut -c1-160 | head -60\n```\n\n6. **What is already installed** — never suggest a duplicate: `upskill list`.\n7. **What you already suggested** — `/shared/.gelatiere/suggestions.json` holds every earlier suggestion with its `dismissedAt`. Do not repeat an id that is still open, and do not resurrect a dismissed one unless the sessions show a new, strong reason: `jq -r \'.[] | "\\(.id)\\t\\(.kind)\\t\\(.dismissedAt // "open")\\t\\(.title)"\' /shared/.gelatiere/suggestions.json 2>/dev/null`.\n\n## What is available\n\nCross the signals above with what SLICC can offer. Spend one command on each; do not browse further.\n\n```bash\n# The skill catalog: name, description, the tasks / roles / apps each skill fits, and WHERE it\n# lives (repo, path, skill, installAll) — the install command is built from those last four.\ngelatiere catalog | jq -r \'.data[] | "\\(.name)\\t\\(.description)\\ttasks=\\(.tasks) role=\\(.role) apps=\\(.apps)\\trepo=\\(.repo) path=\\(.path) skill=\\(.skill) installAll=\\(.installAll)"\'\n\n# Every documented shell command, one man page each. This is what the WEBSITE documents,\n# not everything SLICC ships — never tell the user a command is absent on this alone.\ngelatiere commands\n\n# What SLICC is FOR, in the site\'s own words: title, summary and the skills each use case\n# wants. Where a `use-case` suggestion for untried territory comes from.\ngelatiere use-cases\n\n# The community skills repo, when the catalog looks thin for this user.\nupskill ai-ecoverse/skills\n```\n\nRead a man page only when you are about to recommend that command and need to be sure it does what you think: `gelatiere man <command> | head -60`. You have no `curl` and need none — `gelatiere catalog`, `gelatiere commands`, `gelatiere use-cases` and `gelatiere man` are your whole web surface.\n\n## What to suggest\n\nAt most the `maxSuggestions` from the config block above, best first. Fewer, sharper suggestions beat a full list; an empty list is a fine outcome when nothing is genuinely worth the user\'s attention. Every suggestion must be traceable to something you saw:\n\n| kind | when | required fields |\n| ------------ | ----------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- |\n| `skill` | a catalog or repo skill matches a recurring task, app, or failure in the sessions | `skill`, and `install` — the exact `upskill` command (see below) |\n| `use-case` | a SLICC capability (shell command, scoops, sprinkles, mounts, automation) fits work the user does by hand or not at all | `prompt` — a message the user could send verbatim |\n| `tip` | a habit that would have avoided a failure or a repeated detour in the sessions | `body` explains what to do differently |\n| `skill-idea` | the sessions repeat a routine no installable skill covers — write one instead of installing one | `prompt` — what to ask a cone to author |\n| `issue` | SLICC ITSELF is what got in the way: a command that broke, a surface that lied, a capability that is simply missing | `prompt` — what to ask a cone to file |\n\n### `skill-idea` and `issue` — the two that point away from the catalog\n\nThe catalog is small and mostly already installed, so do not expect a `skill` every pass. When the\nsame multi-step routine shows up in two or more sessions — the same command sequence, the same\nprompt retyped, the same checklist rebuilt from memory — and neither `upskill list` nor `gelatiere\ncatalog` covers it, the honest answer is **write one**. Name the routine you watched, not a\ncategory; the `prompt` asks a cone to author it (what it does, when it triggers, the steps you saw)\nand points at `skill-creator` when `upskill list` shows it installed.\n\n> "You rebuilt the same release checklist by hand in three sessions — tag, changelog, TestFlight\n> notes, then the smoke run." `prompt`: "Write a skill for my release checklist: …"\n\n`issue` is for the failures nobody reports: the command that exited 1 and got worked around, the\nflag that silently did nothing, the panel that showed stale state. Only when the friction is\nSLICC\'s own AND reproducible from what you read — a named failure with session evidence, not a\nwish. One per pass at the very most: a pass that files speculative bugs teaches the user to ignore\nthe card. The `prompt` asks a cone to open it against `ai-ecoverse/slicc` with your reproduction.\n\n> "`chmod +x` reports success and leaves the mode unchanged, so `./script.sh` fails with\n> `Permission denied`." `prompt`: "File an issue against ai-ecoverse/slicc: chmod appears to …"\n\nNeither fits when the user simply did something the hard way (that is a `tip`), when the capability\nalready exists and they missed it (`use-case`), or when the evidence is one ambiguous error.\n\n### The `install` command\n\nIt is built from the catalog row, never from the bare name — `upskill <name>` alone searches the public registries and does not find catalog skills:\n\n| catalog row | `install` |\n| ------------------------------------------------- | -------------------------------------------- |\n| `repo=o/r skill=x` (path empty) | `upskill o/r --skill x` |\n| `repo=o/r path=skills/ skill=x` | `upskill o/r --path skills/ --skill x` |\n| `repo=o/r path=skills/migration/ installAll=true` | `upskill o/r --path skills/migration/ --all` |\n| a skill from `upskill ai-ecoverse/skills` output | `upskill ai-ecoverse/skills --skill <name>` |\n\n### Rules for every kind\n\n- `id` is a stable slug (`skill-github`, `use-case-fswatch-deploy`, `tip-mount-once`, `skill-idea-release-checklist`, `issue-chmod-noop`) so a repeat pass recognises it.\n- Speak to the user as "you" in every field — never about them in the third person ("Lars builds…" is wrong; "You build…" is right).\n- The card shows exactly two things — WHAT to do and WHY — so write the fields that way:\n - `title` is the WHAT: a short imperative, eight words or fewer, sentence case — "Install the GitHub skill", "Script your build–serve–screenshot loop", "Write a release-checklist skill", "Report the chmod no-op". No benefit clause bolted on ("…to manage repos and pull requests from chat" belongs in the why, if anywhere).\n - `body` is the WHY: one or two sentences, grounded in what you actually saw, that tell the story of the change — what you watched the user do by hand, and what gets better. "You ran the build–serve–screenshot loop 80+ times by hand in your bakery session; a workflow file replays it as one command." It must not restate the title, list features, or repeat `evidence` word for word.\n- `evidence` is one friendly sentence, spoken to the user, saying what you saw that led here — "You told the welcome wizard you\'re a developer who lives in GitHub". It rides the lick for the cones; the card does not render it, so do not lean on it to justify the suggestion — the why lives in `body`. Never a field dump like `role=developer, tasks=[…]`.\n- `url` is optional: the skill page or the man page.\n- `cones` names who it is for: the folder(s) of the cones whose sessions or memory led to it — the `cone` in the session index or an archive\'s frontmatter (`cone` is the primary, `cone-<slug>` an extra cone). Only those cones get a lick. Omit it only for advice that is about the whole install, not one cone\'s work; that goes to the primary cone alone.\n- Never suggest what `upskill list` already shows installed, and never invent a skill or command that is not in the catalog, the repo listing, or the sitemap. A `skill-idea` is the one exception — it names a skill that does NOT exist yet, which is the point; check first that no installable one covers it.\n\n## Finish\n\nWrite the candidates as JSON — `{ "suggestions": [ { "id", "kind", "title", "body", "skill", "install", "prompt", "url", "evidence", "cones" } ] }` — to `$TMPDIR/candidates.json`, then run exactly:\n\n```bash\ngelatiere suggest "$TMPDIR/candidates.json" && gelatiere deliver\n```\n\n`suggest` validates and folds the candidates into the store (known ids are kept, dismissed ones stay dismissed); `deliver` licks each cone with what is new and addressed to it. Then update `/shared/.gelatiere/notes.md` with two or three lines on what you looked at and what you decided against — that file, not your reply, is your memory across passes. Reply with one short line.\n\n<!-- How to customize\nAdd instructions above, for example: prefer skills from a company repo, or always check a team\nwiki at /mnt/kb before suggesting. The config block sets `intervalHours` (minimum hours between\nsession-end passes; the nightly pass ignores it), `nightly` (a 5-field cron expression, registered\nby `gelatiere init` as the `gelatiere-nightly` crontask), `maxSuggestions` (capped at 10) and\n`allowedCommands`.\n\n`allowedCommands` is the gelatiere\'s half of what `MEMORY.md` gives the memory curator: extra shell\ncommands a pass may run without escalating. It is ADDITIVE — the built-in set (the read-only text\nutilities, `jq`, `rg`, `upskill`, `gelatiere`, `memory`) always stands, and the file only extends\nit; entries are bare command names, so `tree` is valid and `tree -L 2` is not. `gelatiere status`\nprints the list actually in force and flags an edit that has not been applied yet. The unit is\nregistered once and then persists, so an edit here takes effect on the next boot or the next\n`gelatiere init` — and never mid-pass: applying it rebuilds the unit, which would cancel a pass in\nflight, so `gelatiere init` leaves a busy gelatiere alone and asks to be re-run when it is idle.\n\nAdding a command grants it to an UNATTENDED agent that can read `/sessions/` and every cone\'s\nmemory, so weigh a network command (`curl`, `wget`, `ssh`) against that: the pass reads third-party\ncatalog and repo content, and general egress would make one injected line enough to exfiltrate an\narchive. That is why the built-in set has none, and why leaving them out is the right default.\n\nThe gelatiere is a persistent scoop no cone owns (folder `gelatiere`); its own conversation is\ncompacted while it idles. Dismissed suggestions are kept with a dismissedAt stamp so the next pass does not\nrepeat them. `gelatiere run` from any cone\'s shell asks for a pass now.\n-->\n';function re(e,t){let n=e.replace(/^\uFEFF/,``).replace(/\r\n?/g,`
3
3
  `).match(/^---\s*\n([\s\S]*?)\n---\s*\n([\s\S]*)$/);if(!n?.[2].trim())throw Error(`${t} requires frontmatter and a prompt`);return{frontmatter:n[1],body:n[2].trim()}}function ie(e,t){let n={},r=e.split(`
4
4
  `);for(let e=0;e<r.length;e+=1){let i=r[e];if(!i.trim()||i.trimStart().startsWith(`#`))continue;let a=i.match(/^([A-Za-z][A-Za-z0-9]*):\s*(.*)$/);if(!a)throw Error(`Invalid frontmatter line: ${i}`);let[,o,s]=a;if(t.arrayKeys.has(o)){let t=ae(r,e,s);n[o]=t.value,e=t.lastIndex}else if(t.scalarKeys.has(o)&&s.trim())n[o]=se(s);else throw Error(`Unsupported or empty frontmatter field: ${o}`)}return n}function ae(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?oe(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(se(T(t[1]))),i=n}return{value:r,lastIndex:i}}function oe(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(se(e.slice(n,i))),n=i+1)}if(r)throw Error(`Unclosed quoted value`);return t.push(se(e.slice(n))),t}function T(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 se(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 E(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 ce(e,t){if(e!==void 0){if(typeof e!=`string`||!e)throw Error(`${t} is invalid`);return e}}function le(e,t,n,r=`timeoutSeconds`){if(e===void 0)return t;if(typeof e!=`string`)throw Error(`${r} is invalid`);let i=Number(e);if(!Number.isFinite(i)||i<=0)throw Error(`${r} must be positive`);return Math.min(i,n)}function ue(e,t){if(e.some(e=>!e.startsWith(`/`)||e.includes(`\0`)||t===`writablePaths`&&e===`/`))throw Error(`${t} must contain absolute VFS paths`)}var de=`gelatiere`,D=`gelatiere`,fe=`gelatiere-nightly`,pe=`system:gelatiere`;function me(e){return e.parentJid===`system:gelatiere`&&e.folder===`gelatiere`}var he=e({DEFAULT_GELATIERE_INTERVAL_HOURS:()=>24,DEFAULT_GELATIERE_MD:()=>ne,DEFAULT_GELATIERE_NIGHTLY_CRON:()=>k,DEFAULT_MAX_SUGGESTIONS:()=>5,GELATIERE_BASE_ALLOWED_COMMANDS:()=>we,GELATIERE_DIR:()=>ve,GELATIERE_FOLDER:()=>de,GELATIERE_INSTRUCTIONS_PATH:()=>_e,GELATIERE_NIGHTLY_CRON_NAME:()=>fe,GELATIERE_OWNER_JID:()=>pe,GELATIERE_SKILL_PATH:()=>xe,GELATIERE_SPRINKLE_NAME:()=>D,GELATIERE_STATE_PATH:()=>be,GELATIERE_SUGGESTIONS_ACTION:()=>O,GELATIERE_SUGGESTIONS_PATH:()=>ye,LICK_SUGGESTION_LIMIT:()=>5,MAX_STORED_SUGGESTIONS:()=>40,MAX_SUGGESTIONS_PER_PASS:()=>10,buildGelatiereLickBody:()=>lt,coerceSuggestions:()=>it,describeGelatiereLick:()=>dt,dismissGelatiereSuggestion:()=>Ge,isGelatiereUnit:()=>me,isNewSince:()=>Ue,isPassDue:()=>Re,loadGelatiereConfig:()=>je,mergeSuggestions:()=>at,openSuggestions:()=>Be,parseGelatiereDocument:()=>Oe,readGelatiereState:()=>Ie,readGelatiereSuggestions:()=>Ne,recordGelatiereTrigger:()=>ze,recordPass:()=>ct,suggestionsForCone:()=>We,suggestionsSince:()=>He,takeGelatiereSuggestion:()=>Ke,takenSuggestions:()=>Ve,writeGelatiereState:()=>Le,writeGelatiereSuggestions:()=>Fe}),ge=n(`gelatiere-store`),_e=`/shared/GELATIERE.md`,ve=`/shared/.gelatiere`,ye=`${ve}/suggestions.json`,be=`${ve}/state.json`,O=`gelatiere-suggestions`,xe=`/workspace/skills/gelatiere/SKILL.md`,k=`0 3 * * *`,Se=8,Ce={arrayKeys:new Set([`allowedCommands`]),scalarKeys:new Set([`intervalHours`,`nightly`,`maxSuggestions`])},we=`awk.basename.cat.column.cut.date.dirname.echo.expr.false.file.find.fold.gelatiere.grep.head.jq.ls.man.memory.mkdir.nl.paste.printf.realpath.rg.sed.seq.sort.stat.tail.tee.test.touch.tr.true.uniq.upskill.wc`.split(`.`),Te=/^[A-Za-z0-9][A-Za-z0-9._-]*$/,Ee=new Set([`skill`,`use-case`,`tip`,`skill-idea`,`issue`]),De=new Set([`use-case`,`skill-idea`,`issue`]);function Oe(e){let t=re(e,`GELATIERE.md`),n=ie(t.frontmatter,Ce),r=ce(n.nightly,`nightly`)??`0 3 * * *`;if(r.trim().split(/\s+/).length!==5)throw Error(`nightly must be a 5-field cron expression`);return{allowedCommands:ke(n),intervalHours:Ae(n.intervalHours,`intervalHours`,24),nightly:r.trim(),maxSuggestions:Math.min(10,Ae(n.maxSuggestions,`maxSuggestions`,5)),instructions:t.body}}function ke(e){let t=E(e,`allowedCommands`,[]),n=t.find(e=>!Te.test(e));if(n!==void 0)throw Error(`allowedCommands must contain bare command names, not "${n}"`);return[...new Set([...we,...t])]}function Ae(e,t,n){if(e===void 0)return n;if(typeof e!=`string`)throw Error(`${t} is invalid`);let r=Number(e);if(!Number.isFinite(r)||r<=0)throw Error(`${t} must be positive`);return r}async function je(e){try{return Oe(await A(e,_e))}catch(e){return ge.warn(`Could not load valid GELATIERE.md; using built-in default`,{error:ut(e)}),Oe(ne)}}async function A(e,t){let n=await e.readFile(t,{encoding:`utf-8`});return typeof n==`string`?n:new TextDecoder().decode(n)}async function Me(e,t){let n;try{n=await A(e,t)}catch(e){if(e instanceof y&&e.code===`ENOENT`)return;throw e}try{return JSON.parse(n)}catch{return}}async function Ne(e){let t=await Me(e,ye);if(!Array.isArray(t))return[];let n=[];for(let e of t){let t=rt(e,null);if(!t)continue;let{dismissedAt:r,takenAt:i,retargets:a}=e;typeof r==`string`&&r&&(t.dismissedAt=r),typeof i==`string`&&i&&(t.takenAt=i);let o=Pe(a);o.length>0&&(t.retargets=o),n.push(t)}return n}function Pe(e){return Array.isArray(e)?e.filter(e=>!!e&&typeof e.cone==`string`&&typeof e.at==`string`):[]}async function Fe(e,t){await e.mkdir(ve,{recursive:!0}),await e.writeFile(ye,`${JSON.stringify(t,null,2)}\n`)}async function Ie(e){let t=await Me(e,be);if(!t||typeof t!=`object`)return{passes:0};let n=t;return{passes:typeof n.passes==`number`&&n.passes>=0?n.passes:0,...typeof n.lastPassAt==`string`?{lastPassAt:n.lastPassAt}:{},...typeof n.lastTriggeredAt==`string`?{lastTriggeredAt:n.lastTriggeredAt}:{},...typeof n.lastDeliveredAt==`string`?{lastDeliveredAt:n.lastDeliveredAt}:{}}}async function Le(e,t){await e.mkdir(ve,{recursive:!0}),await e.writeFile(be,`${JSON.stringify(t,null,2)}\n`)}function Re(e,t,n){let r=Math.max(...[e.lastPassAt,e.lastTriggeredAt].map(e=>e?Date.parse(e):NaN).filter(e=>!Number.isNaN(e)));return!Number.isFinite(r)||t.getTime()-r>=n*36e5}async function ze(e,t=new Date){await Le(e,{...await Ie(e),lastTriggeredAt:t.toISOString()})}function Be(e){return e.filter(e=>!e.dismissedAt&&!e.takenAt)}function Ve(e){return e.filter(e=>!!e.takenAt)}function He(e,t){return Be(e).filter(e=>Ue(e,t))}function Ue(e,t,n){let r=t?Date.parse(t):NaN;if(Number.isNaN(r))return!0;let i=e=>{let t=Date.parse(e);return Number.isNaN(t)||t>r};return i(e.createdAt)?!0:(e.retargets??[]).some(e=>(n===void 0||e.cone===n)&&i(e.at))}function We(e,t,n,r){return e.filter(e=>{let i=e.cones?.filter(e=>r.has(e))??[];return i.length>0?i.includes(t):t===n})}async function Ge(e,t,n=new Date){return Je(e,t,`dismissedAt`,n)}async function Ke(e,t,n=new Date){return Je(e,t,`takenAt`,n)}var qe=Promise.resolve();function Je(e,t,n,r){let i=async()=>{let i=await Ne(e),a=i.find(e=>e.id===t&&!e.dismissedAt&&!e.takenAt);return a?(a[n]=r.toISOString(),await Fe(e,i),!0):!1},a=qe.then(i,i);return qe=a.catch(()=>!1),a}var Ye=/[^a-z0-9]+/g;function Xe(e){return e.toLowerCase().replace(Ye,`-`).replace(/^-+|-+$/g,``).slice(0,60)}function Ze(e,t){if(typeof e!=`string`)return;let n=e.trim();return n?n.slice(0,t):void 0}function Qe(e){if(e)try{let t=new URL(e).protocol;return t===`http:`||t===`https:`?e:void 0}catch{return}}var $e=/^[A-Za-z0-9@._/:=-]+$/;function et(e){if(!e)return;let t=e.split(/\s+/);if(!(t[0]!==`upskill`||t.length<2))return t.slice(1).every(e=>$e.test(e))?e:void 0}var tt=/^[a-z0-9][a-z0-9_-]*$/i;function nt(e){let t=(typeof e==`string`?[e]:Array.isArray(e)?e:[]).map(e=>Ze(e,80)).filter(e=>e!==void 0&&tt.test(e)),n=[...new Set(t)].slice(0,Se);return n.length>0?n:void 0}function rt(e,t){if(!e||typeof e!=`object`)return null;let n=e,r=typeof n.kind==`string`?n.kind:``,i=Ze(n.title,200),a=Ze(n.body,1e3);if(!Ee.has(r)||!i||!a)return null;let o=Xe(Ze(n.id,80)??`${r}-${i}`)||Xe(`${r}-${i}`);if(!o)return null;let s=t??Ze(n.createdAt,40)??``,c=n.skill===void 0?void 0:Ze(n.skill,120),l=n.install===void 0?void 0:et(Ze(n.install,300)),u=n.prompt===void 0?void 0:Ze(n.prompt,1e3);if(r===`skill`&&(!c||!l)||De.has(r)&&!u)return null;let d=nt(n.cones);return{id:o,kind:r,title:i,body:a,...n.skill===void 0?{}:{skill:c},...n.install===void 0?{}:{install:l},...n.prompt===void 0?{}:{prompt:u},...n.url===void 0?{}:{url:Qe(Ze(n.url,500))},...n.evidence===void 0?{}:{evidence:Ze(n.evidence,500)},...d?{cones:d}:{},createdAt:s}}function it(e,t,n=10){let r=Array.isArray(e)?e:e&&typeof e==`object`&&Array.isArray(e.suggestions)?e.suggestions??[]:[],i=new Set,a=[];for(let e of r){let r=rt(e,t);if(!(!r||i.has(r.id))&&(i.add(r.id),a.push(r),a.length>=n))break}return a}function at(e,t,n=40){let r=new Map(t.map(e=>[e.id,e])),i=new Set(e.map(e=>e.id)),a=t.filter(e=>!i.has(e.id)),o=[...a,...e.map(e=>ot(e,r.get(e.id)))];for(;o.length>n;){let e=st(o,e=>!!e.dismissedAt),t=e>=0?e:st(o,e=>!!e.takenAt);o.splice(t>=0?t:o.length-1,1)}return{merged:o,added:a}}function ot(e,t){if(!t?.cones||e.dismissedAt||e.takenAt)return e;let n=e.cones??[],r=t.cones.filter(e=>!n.includes(e)),i=[...n,...r].slice(0,Se),a=r.filter(e=>i.includes(e));if(a.length===0)return e;let o=[...e.retargets??[],...a.map(e=>({cone:e,at:t.createdAt}))];return{...e,cones:i,retargets:o}}function st(e,t){for(let n=e.length-1;n>=0;--n)if(t(e[n]))return n;return-1}async function ct(e,t,n=new Date){let r=await je(e),i=it(t,n.toISOString(),r.maxSuggestions),{merged:a,added:o}=at(await Ne(e),i);await Fe(e,a);let s=await Ie(e);return await Le(e,{...s,passes:s.passes+1,lastPassAt:n.toISOString()}),{added:o,open:Be(a)}}function lt(e,t){return{action:O,data:{added:e.length,open:t.length,suggestions:t.slice(0,5),path:ye,skill:xe}}}function ut(e){return e instanceof Error?e.message:String(e)}function dt(e){let t=j(e);if(!t)return null;let{action:n,bag:r}=t;return n===`gelatiere-suggestions`?ft(n,r):n===`session-settled`?N(n,r):n===`run`?pt(n,r):{action:n,headline:`gelatiere: ${n}`,titles:[]}}function j(e){let t=e.indexOf(`{`),n=e.lastIndexOf(`}`);if(t<0||n<=t)return null;let r;try{r=JSON.parse(e.slice(t,n+1))}catch{return null}if(!r||typeof r!=`object`)return null;let{action:i,data:a}=r;return typeof i==`string`?{action:i,bag:a&&typeof a==`object`?a:{}}:null}function ft(e,t){let n=M(t.suggestions),r=typeof t.added==`number`?t.added:n.length,i=typeof t.open==`number`?t.open:n.length;return{action:e,headline:r===0?`Nothing new — ${i} open ${i===1?`suggestion`:`suggestions`} in the suggestions card.`:`${r} new ${r===1?`suggestion`:`suggestions`} (${i} open) — the cards are in the suggestions sprinkle.`,titles:n}}function M(e){return Array.isArray(e)?e.map(e=>e&&typeof e==`object`?e.title:void 0).filter(e=>typeof e==`string`&&e.length>0):[]}function N(e,t){let n=typeof t.cone==`string`?t.cone:void 0;return{action:e,headline:n?`A session ended in ${n} — time for a pass.`:`A session ended — time for a pass.`,titles:[]}}function pt(e,t){let n=typeof t.requestedBy==`string`?t.requestedBy:void 0;return{action:e,headline:n?`${n} asked for a pass now.`:`Someone asked for a pass now.`,titles:[]}}var mt=`term`,ht={background:`#0c0c0e`,foreground:`#e7e7ea`,cursor:`#f59e0b`,cursorAccent:`#0c0c0e`,selectionBackground:`#8b5cf64d`,selectionForeground:`#ffffff`,black:`#0c0c0e`,red:`#f43f5e`,green:`#5bd17b`,yellow:`#f59e0b`,blue:`#3b82f6`,magenta:`#8b5cf6`,cyan:`#06b6d4`,white:`#e7e7ea`,brightBlack:`#8a8a93`,brightRed:`#fb7185`,brightGreen:`#86efac`,brightYellow:`#fbbf24`,brightBlue:`#60a5fa`,brightMagenta:`#a78bfa`,brightCyan:`#22d3ee`,brightWhite:`#ffffff`,border:`#232329`};function gt(e,t,n){for(let n of t){let t=e(n).trim();if(t&&!t.startsWith(`var(`))return t}return n}function _t(e){let t=ht,n=gt(e,[`--term-bg`],t.background),r=gt(e,[`--term-fg`],t.foreground),i=gt(e,[`--term-cursor`,`--ctx`,`--s2-accent`,`--amber`],t.cursor),a=gt(e,[`--term-red`,`--rose`,`--s2-negative`,`--red`],t.red),o=gt(e,[`--term-green`,`--s2-positive`,`--green`],t.green),s=gt(e,[`--term-yellow`,`--amber`],t.yellow),c=gt(e,[`--term-blue`,`--ctx`,`--s2-accent`,`--waffle`],t.blue),l=gt(e,[`--term-magenta`,`--violet`],t.magenta),u=gt(e,[`--term-cyan`,`--cyan`],t.cyan);return{background:n,foreground:r,cursor:i,cursorAccent:n,selectionBackground:gt(e,[`--term-selection`],`${i}4d`),selectionForeground:t.selectionForeground,black:n,red:a,green:o,yellow:s,blue:c,magenta:l,cyan:u,white:r,brightBlack:gt(e,[`--term-bright-black`,`--txt-3`],t.brightBlack),brightRed:gt(e,[`--term-bright-red`],t.brightRed),brightGreen:gt(e,[`--term-bright-green`],t.brightGreen),brightYellow:gt(e,[`--term-bright-yellow`],t.brightYellow),brightBlue:gt(e,[`--term-bright-blue`],t.brightBlue),brightMagenta:gt(e,[`--term-bright-magenta`],t.brightMagenta),brightCyan:gt(e,[`--term-bright-cyan`],t.brightCyan),brightWhite:t.brightWhite}}function vt(e){let t=e??(typeof document<`u`?document.documentElement:null),n=t?getComputedStyle(t):null,r=e=>n?n.getPropertyValue(e):``,i=_t(r),a=gt(r,[`--term-border`],ht.border);return{...i,border:a}}function yt(e,t){if(typeof MutationObserver!=`function`||typeof document>`u`)return()=>{};let n=new MutationObserver(t);n.observe(document.documentElement,{attributes:!0,attributeFilter:[`class`,`data-theme`,`style`]}),document.body&&n.observe(document.body,{attributes:!0,attributeFilter:[`class`,`data-theme`]});let r=e.closest(`.wcui-frame`);return r&&n.observe(r,{attributes:!0,attributeFilter:[`style`,`class`,`data-theme`]}),()=>n.disconnect()}var bt=new Set([`webhook`,`cron`,`sprinkle`,`fswatch`,`session-reload`,`navigate`,`discovery`,`upgrade`,`workflow`,`bash`,`jshd`,`preview`,`scoop-notify`,`scoop-idle`,`scoop-wait`,`sudo-request`]);function xt(e){return e!=null&&bt.has(e)}var P=new Set([`send_message`,`list_scoops`,`list_tasks`,`sudo_request`,`list_sudo_requests`,`lick_confirm`,`lick_dismiss`]),St=65536;function Ct(e,t=St){return e.length<=t?e:`${e.slice(0,t)}\n… [tool output truncated for the chat transcript: showing ${Et(t)} of ${Et(e.length)} — the agent received the full output]`}var wt=4;function Tt(e,t=St,n=wt){if(typeof e==`string`)return Ct(e,t);if(typeof e!=`object`||!e||n<=0)return e;if(Array.isArray(e)){let r=null;for(let i=0;i<e.length;i++){let a=Tt(e[i],t,n-1);a!==e[i]&&(r??=[...e],r[i]=a)}return r??e}let r=null;for(let[i,a]of Object.entries(e)){let o=Tt(a,t,n-1);o!==a&&(r??={...e},r[i]=o)}return r??e}function Et(e){return e>=1048576?`${(e/1048576).toFixed(1)} MB`:`${Math.round(e/1024)} KB`}var Dt=e({agentMessagesToChatMessages:()=>Ot,lickChannelFromBody:()=>Ut,lickChannelFromSenderName:()=>Ht,lickIdFromBody:()=>Wt,splitEnvelopes:()=>Vt,unwrapMessageEnvelope:()=>Bt});function Ot(e,t={}){let{source:n=`cone`,idSeed:r=zt,hiddenToolNames:i=P,uncapped:a=!1}=t,o=[],s=null,c=new Set;for(let t of e)Mt(t)?(o.push(...kt(t,r)),s=null):Nt(t)?(s=At(t,n,r,i,c,a),o.push(s)):Pt(t)&&jt(t,s,c,a);return o}function kt(e,t){let n=Ft(e.content);if(n.length===0)return[];let r=[];for(let i of Vt(n)){if(i.body.length===0&&i.sender==null)continue;let n=(i.sender?Ht(i.sender):null)??Ut(i.body),a=n?Wt(i.body):void 0,o={id:n===`sudo-request`&&a?`sudo-request-${a}`:t(),role:`user`,content:i.body,timestamp:e.timestamp};n&&(o.source=`lick`,o.channel=n,a&&(o.lickId=a)),r.push(o)}return r}function At(e,t,n,r,i,a=!1){let o=[];for(let t of Rt(e,a))r.has(t.name)?i.add(t.id):o.push(t);let s={id:n(),role:`assistant`,content:Ft(e.content),timestamp:e.timestamp,source:t,model:e.model},{usage:c}=e;return c&&(s.usage={input:c.input,output:c.output,cacheRead:c.cacheRead,cacheWrite:c.cacheWrite,cost:{input:c.cost.input,output:c.cost.output,cacheRead:c.cost.cacheRead,cacheWrite:c.cost.cacheWrite,total:c.cost.total}}),o.length>0&&(s.toolCalls=o),s}function jt(e,t,n,r=!1){if(n.has(e.toolCallId))return;let i=t?.toolCalls?.find(t=>t.id===e.toolCallId);if(!i)return;let a=Ft(e.content);i.result=r?a:Ct(a),i.isError=e.isError}function Mt(e){return e.role===`user`}function Nt(e){return e.role===`assistant`}function Pt(e){return e.role===`toolResult`}function Ft(e){if(typeof e==`string`)return e;if(!Array.isArray(e))return``;let t=[];for(let n of e)It(n)&&t.push(n.text);return t.join(``)}function It(e){return e.type===`text`}function Lt(e){return e.type===`toolCall`}function Rt(e,t=!1){if(!Array.isArray(e.content))return[];let n=[];for(let r of e.content)Lt(r)&&n.push({id:r.id,name:r.name,input:t?r.arguments:Tt(r.arguments)});return n}function zt(){return Date.now().toString(36)+Math.random().toString(36).slice(2,8)}function Bt(e){if(!e.startsWith(`[`))return null;let t=e.indexOf(`] `);if(t<=0||e.lastIndexOf(`
5
5
  `,t)!==-1)return null;let n=e.slice(t+2);if(n.startsWith(`User: `))return{sender:`User`,body:n.slice(6)};for(let e of bt){let t=`${e}:`;if(!n.startsWith(t))continue;let r=n.indexOf(`
@@ -8577,7 +8577,7 @@ Example input:
8577
8577
  2. bash: {"command":"ls /published"}
8578
8578
  3. bash: {"command":"diff /drafts /published"}
8579
8579
  Example output: Compare drafts against published files`;function gj(e){return e.length>=6&&/[a-zA-Z]/.test(e)&&/\s/.test(e.trim())}function _j(e,n){if(e.length===0)return;let r=mj(e);if(!r)return;let i=dj.get(r);if(i){n.setAttribute(`label`,i);return}let a=e[0]?.id;if(a){let e=pj.get(a);e&&n.setAttribute(`label`,e)}if(fj.has(r))return;fj.add(r);let o=e.map((e,t)=>{let n;try{n=JSON.stringify(e.input??{})}catch{n=String(e.input??``)}return n.length>300&&(n=`${n.slice(0,300)}…`),`${t+1}. ${e.name}: ${n}`}).join(`
8580
- `);t(async()=>{let{quickLabel:e}=await import(`./quick-llm-B8uh7EVu.js`).then(e=>e.n);return{quickLabel:e}},__vite__mapDeps([3,1,4,5,6,2,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30])).then(({quickLabel:e})=>e({system:hj,prompt:`Label these tool calls (inputs only):\n${o}`,maxTokens:40})).then(e=>{let t=e?.replace(/^["']|["']$|\.$/g,``).trim()??``;gj(t)&&(dj.set(r,t),a&&pj.set(a,t),n.isConnected&&n.setAttribute(`label`,t))}).catch(()=>void 0).finally(()=>fj.delete(r))}function vj(e,t={}){let n=Q(`slicc-tool-cluster`,{count:String(e.length)});return t.open&&n.setAttribute(`open`,``),n.append(...e),t.toolCalls&&t.toolCalls.length>0&&_j(t.toolCalls,n),n}function yj(e){let t=document.createElement(`slicc-agent-message`);t.setAttribute(`data-msg-id`,e.id);let n=(e.content??``).trim().length>0,r=On(e.timestamp);return r&&n&&t.setAttribute(`timestamp`,r),e.isStreaming&&t.setAttribute(`streaming`,``),t.setBodyHtml(gA(e.content,e.isStreaming===!0)),n||t.setAttribute(`data-empty`,``),[t,...(e.toolCalls??[]).map(t=>cj(t,e.id))]}function bj(e,t){let n=e.querySelectorAll(`:scope > slicc-tool-cluster`);for(let e of n){let n=Array.from(e.querySelectorAll(`slicc-action-row`));xj(e,n,t);let r=e.parentNode;if(!r){e.remove();continue}for(let t of n)Sj(t,r,e);e.remove()}}function xj(e,t,n){if(!e.hasAttribute(`open`))return;let r=t[0]?.dataset.msgId;r&&n.add(r)}function Sj(e,t,n){let r=e.dataset.msgId,i=r&&t instanceof Element?t.querySelector(`:scope > slicc-agent-message[data-msg-id="${r}"]`):null;if(!i||i.parentNode!==t){t.insertBefore(e,n);return}let a=i;for(;a.nextSibling instanceof HTMLElement&&a.nextSibling.tagName.toLowerCase()===`slicc-action-row`&&a.nextSibling.dataset.msgId===r;)a=a.nextSibling;t.insertBefore(e,a.nextSibling)}var Cj=new Set([`slicc-user-message`,`slicc-lick-card`,`slicc-error-card`,`slicc-delegation-line`,`slicc-day-separator`,`slicc-compaction-marker`]);function wj(e){return e instanceof HTMLElement?Cj.has(e.tagName.toLowerCase()):!0}function Tj(e){return e instanceof HTMLElement&&e.tagName.toLowerCase()===`slicc-action-row`}function Ej(e){return e instanceof HTMLElement&&e.tagName.toLowerCase()===`slicc-agent-message`}function Dj(e){let t=[],n=[];for(let r of e)Ej(r)?!r.hasAttribute(`data-empty`)&&n.length>0&&(t.push(n),n=[]):Tj(r)&&n.push(r);return n.length>0&&t.push(n),t}function Oj(e,t){let n=[];for(let r of e){let e=r.dataset.msgId,i=r.dataset.toolId;if(!e||!i)return;let a=t(e,i);if(!a)return;n.push(a)}return n}function kj(e,t){let n=e[0],r=n.parentNode;if(!r)return;let i=new Set(e),a=n.nextSibling;for(;a&&i.has(a);)a=a.nextSibling;let o=n.dataset.msgId,s=vj(e,{open:!!(o&&t.openClusterAnchors.has(o)),toolCalls:t.toolCallLookup?Oj(e,t.toolCallLookup):void 0});r.insertBefore(s,a)}function Aj(e,t){bj(e,t.openClusterAnchors);let n=Array.from(e.children),r=0;for(;r<n.length;){if(wj(n[r])){r++;continue}let e=r;for(;e<n.length&&!wj(n[e]);)e++;let i=Dj(n.slice(r,e));for(let e of i)e.length>=3&&kj(e,t);r=e}t.openClusterAnchors.clear()}function jj(e,t){return e.channel===`sprinkle`&&t?.[2]?.trim()===`gelatiere`}function Mj(e){let t=dt(e);if(!t)return null;let n=document.createElement(`div`),r=document.createElement(`p`);if(r.textContent=t.headline,n.append(r),t.titles.length>0){let e=document.createElement(`ul`);for(let n of t.titles){let t=document.createElement(`li`);t.textContent=n,e.append(t)}n.append(e)}return n}function Nj(e){let t=vA.exec(e.content),n=e.lickCount??1,r=SA.exec(e.content),i=r?CA(r[1]):null,a=jj(e,t),o=a?dt(e.content)?.action:void 0,s=Q(`slicc-lick-card`,{kind:a?D:e.channel??`webhook`,"event-label":a?(o??`suggestions`).replace(/^gelatiere-/,``):DA(e.content,e.channel,t,i),collapsible:``,collapsed:``});i&&s.setAttribute(`hue`,KT({isRoot:!1,name:i})),n>1&&s.setAttribute(`count`,String(n)),e.lickState&&e.lickState!==`pending`&&s.setAttribute(`state`,e.lickState);let c=e.lickParts??[e.content];for(let e of c){let t=a?Mj(e):null;if(t){s.append(t);continue}let n=document.createElement(`div`);n.innerHTML=hA(bA(e)),s.append(n)}return s}function Pj(e){let t=Q(`slicc-delegation-line`,{kind:`feed`,verb:`feed_scoop`,label:wA(e.content.replace(/\*\*\[[^\]]*\]\*\*\s*/,``))}),n=document.createElement(`slicc-user-message`);return n.setBodyHtml(hA(e.content)),[t,n]}var Fj=`Out of AI budget`;function Ij(){try{return u(d())}catch{return[]}}function Lj(e){if(e.resetsAt===null||/reset/i.test(e.message))return e.message;let t=new Date(e.resetsAt);return Number.isNaN(t.getTime())?e.message:`${e.message} Resets on ${t.toLocaleDateString(void 0,{dateStyle:`long`})}.`}function Rj(){return Ij().length===0?{action:`settings`,"button-label":`Add a provider`}:{action:`change-model`,"button-label":`Switch provider and try again`,"secondary-action":`settings`,"secondary-button-label":`Add a provider`}}function zj(e,t){let n={message:e.content,"message-id":e.id},r=_(e.content);return r&&(n.label=Fj,n.message=Lj(r)),t?(n[`no-action`]=``,Q(`slicc-error-card`,n)):r?Q(`slicc-error-card`,{...n,...Rj()}):(h(e.content)?n.action=`settings`:m(e.content)?n.action=`change-model`:v(e.content)&&(n.action=`login`),Q(`slicc-error-card`,n))}function Bj(e){return Q(`slicc-compaction-marker`,{trigger:e.trigger,state:e.state,...e.transcriptPath?{transcript:e.transcriptPath}:{}})}function Vj(e,t={}){if(e.compaction)return e.compaction.state===`discarded`?[]:[Bj(e.compaction)];if(e.source===`lick`)return[Nj(e)];if(e.source===`delegation`||e.channel===`delegation`)return Pj(e);if(e.error)return[zj(e,t.readOnly===!0)];if(e.role===`assistant`)return yj(e);let n=xA(e.content);return n?[Nj({...e,source:`lick`,channel:n})]:[lj(e)]}function Hj(e){let t=[];for(let n of e){let e=n;if(!n.source&&n.role===`user`){let t=xA(n.content);t&&(e={...n,source:`lick`,channel:t})}let r=t[t.length-1];if(!(e.lickId||r?.lickId)&&e.source===`lick`&&r?.source===`lick`&&r.channel===e.channel){r.lickParts=[...r.lickParts??[r.content],e.content],r.lickCount=r.lickParts.length,r.content+=`\n\n${e.content}`;continue}t.push({...e})}return t}function Uj(e){return new Date(e).toLocaleDateString(void 0,{weekday:`short`,month:`short`,day:`numeric`})}function Wj(e){return Q(`slicc-day-separator`,{label:Uj(e)})}function Gj(e,t={}){let n=[],r=``;for(let i of e){let e=new Date(i.timestamp).toDateString();e!==r&&(n.push(Wj(i.timestamp)),r=e),n.push(...Vj(i,t))}let i=document.createElement(`div`);return i.append(...n),Aj(i,{openClusterAnchors:new Set,toolCallLookup:(t,n)=>e.find(e=>e.id===t)?.toolCalls?.find(e=>e.id===n)}),Array.from(i.children)}var Kj=`auto`;function qj(e){if(e===null)return null;if(e===`auto`||e===`esc`)return e}var Jj=`slicc-shortcuts-style`,Yj=`
8580
+ `);t(async()=>{let{quickLabel:e}=await import(`./quick-llm-DcsNLbYv.js`).then(e=>e.n);return{quickLabel:e}},__vite__mapDeps([3,1,4,5,6,2,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31])).then(({quickLabel:e})=>e({system:hj,prompt:`Label these tool calls (inputs only):\n${o}`,maxTokens:40})).then(e=>{let t=e?.replace(/^["']|["']$|\.$/g,``).trim()??``;gj(t)&&(dj.set(r,t),a&&pj.set(a,t),n.isConnected&&n.setAttribute(`label`,t))}).catch(()=>void 0).finally(()=>fj.delete(r))}function vj(e,t={}){let n=Q(`slicc-tool-cluster`,{count:String(e.length)});return t.open&&n.setAttribute(`open`,``),n.append(...e),t.toolCalls&&t.toolCalls.length>0&&_j(t.toolCalls,n),n}function yj(e){let t=document.createElement(`slicc-agent-message`);t.setAttribute(`data-msg-id`,e.id);let n=(e.content??``).trim().length>0,r=On(e.timestamp);return r&&n&&t.setAttribute(`timestamp`,r),e.isStreaming&&t.setAttribute(`streaming`,``),t.setBodyHtml(gA(e.content,e.isStreaming===!0)),n||t.setAttribute(`data-empty`,``),[t,...(e.toolCalls??[]).map(t=>cj(t,e.id))]}function bj(e,t){let n=e.querySelectorAll(`:scope > slicc-tool-cluster`);for(let e of n){let n=Array.from(e.querySelectorAll(`slicc-action-row`));xj(e,n,t);let r=e.parentNode;if(!r){e.remove();continue}for(let t of n)Sj(t,r,e);e.remove()}}function xj(e,t,n){if(!e.hasAttribute(`open`))return;let r=t[0]?.dataset.msgId;r&&n.add(r)}function Sj(e,t,n){let r=e.dataset.msgId,i=r&&t instanceof Element?t.querySelector(`:scope > slicc-agent-message[data-msg-id="${r}"]`):null;if(!i||i.parentNode!==t){t.insertBefore(e,n);return}let a=i;for(;a.nextSibling instanceof HTMLElement&&a.nextSibling.tagName.toLowerCase()===`slicc-action-row`&&a.nextSibling.dataset.msgId===r;)a=a.nextSibling;t.insertBefore(e,a.nextSibling)}var Cj=new Set([`slicc-user-message`,`slicc-lick-card`,`slicc-error-card`,`slicc-delegation-line`,`slicc-day-separator`,`slicc-compaction-marker`]);function wj(e){return e instanceof HTMLElement?Cj.has(e.tagName.toLowerCase()):!0}function Tj(e){return e instanceof HTMLElement&&e.tagName.toLowerCase()===`slicc-action-row`}function Ej(e){return e instanceof HTMLElement&&e.tagName.toLowerCase()===`slicc-agent-message`}function Dj(e){let t=[],n=[];for(let r of e)Ej(r)?!r.hasAttribute(`data-empty`)&&n.length>0&&(t.push(n),n=[]):Tj(r)&&n.push(r);return n.length>0&&t.push(n),t}function Oj(e,t){let n=[];for(let r of e){let e=r.dataset.msgId,i=r.dataset.toolId;if(!e||!i)return;let a=t(e,i);if(!a)return;n.push(a)}return n}function kj(e,t){let n=e[0],r=n.parentNode;if(!r)return;let i=new Set(e),a=n.nextSibling;for(;a&&i.has(a);)a=a.nextSibling;let o=n.dataset.msgId,s=vj(e,{open:!!(o&&t.openClusterAnchors.has(o)),toolCalls:t.toolCallLookup?Oj(e,t.toolCallLookup):void 0});r.insertBefore(s,a)}function Aj(e,t){bj(e,t.openClusterAnchors);let n=Array.from(e.children),r=0;for(;r<n.length;){if(wj(n[r])){r++;continue}let e=r;for(;e<n.length&&!wj(n[e]);)e++;let i=Dj(n.slice(r,e));for(let e of i)e.length>=3&&kj(e,t);r=e}t.openClusterAnchors.clear()}function jj(e,t){return e.channel===`sprinkle`&&t?.[2]?.trim()===`gelatiere`}function Mj(e){let t=dt(e);if(!t)return null;let n=document.createElement(`div`),r=document.createElement(`p`);if(r.textContent=t.headline,n.append(r),t.titles.length>0){let e=document.createElement(`ul`);for(let n of t.titles){let t=document.createElement(`li`);t.textContent=n,e.append(t)}n.append(e)}return n}function Nj(e){let t=vA.exec(e.content),n=e.lickCount??1,r=SA.exec(e.content),i=r?CA(r[1]):null,a=jj(e,t),o=a?dt(e.content)?.action:void 0,s=Q(`slicc-lick-card`,{kind:a?D:e.channel??`webhook`,"event-label":a?(o??`suggestions`).replace(/^gelatiere-/,``):DA(e.content,e.channel,t,i),collapsible:``,collapsed:``});i&&s.setAttribute(`hue`,KT({isRoot:!1,name:i})),n>1&&s.setAttribute(`count`,String(n)),e.lickState&&e.lickState!==`pending`&&s.setAttribute(`state`,e.lickState);let c=e.lickParts??[e.content];for(let e of c){let t=a?Mj(e):null;if(t){s.append(t);continue}let n=document.createElement(`div`);n.innerHTML=hA(bA(e)),s.append(n)}return s}function Pj(e){let t=Q(`slicc-delegation-line`,{kind:`feed`,verb:`feed_scoop`,label:wA(e.content.replace(/\*\*\[[^\]]*\]\*\*\s*/,``))}),n=document.createElement(`slicc-user-message`);return n.setBodyHtml(hA(e.content)),[t,n]}var Fj=`Out of AI budget`;function Ij(){try{return u(d())}catch{return[]}}function Lj(e){if(e.resetsAt===null||/reset/i.test(e.message))return e.message;let t=new Date(e.resetsAt);return Number.isNaN(t.getTime())?e.message:`${e.message} Resets on ${t.toLocaleDateString(void 0,{dateStyle:`long`})}.`}function Rj(){return Ij().length===0?{action:`settings`,"button-label":`Add a provider`}:{action:`change-model`,"button-label":`Switch provider and try again`,"secondary-action":`settings`,"secondary-button-label":`Add a provider`}}function zj(e,t){let n={message:e.content,"message-id":e.id},r=_(e.content);return r&&(n.label=Fj,n.message=Lj(r)),t?(n[`no-action`]=``,Q(`slicc-error-card`,n)):r?Q(`slicc-error-card`,{...n,...Rj()}):(h(e.content)?n.action=`settings`:m(e.content)?n.action=`change-model`:v(e.content)&&(n.action=`login`),Q(`slicc-error-card`,n))}function Bj(e){return Q(`slicc-compaction-marker`,{trigger:e.trigger,state:e.state,...e.transcriptPath?{transcript:e.transcriptPath}:{}})}function Vj(e,t={}){if(e.compaction)return e.compaction.state===`discarded`?[]:[Bj(e.compaction)];if(e.source===`lick`)return[Nj(e)];if(e.source===`delegation`||e.channel===`delegation`)return Pj(e);if(e.error)return[zj(e,t.readOnly===!0)];if(e.role===`assistant`)return yj(e);let n=xA(e.content);return n?[Nj({...e,source:`lick`,channel:n})]:[lj(e)]}function Hj(e){let t=[];for(let n of e){let e=n;if(!n.source&&n.role===`user`){let t=xA(n.content);t&&(e={...n,source:`lick`,channel:t})}let r=t[t.length-1];if(!(e.lickId||r?.lickId)&&e.source===`lick`&&r?.source===`lick`&&r.channel===e.channel){r.lickParts=[...r.lickParts??[r.content],e.content],r.lickCount=r.lickParts.length,r.content+=`\n\n${e.content}`;continue}t.push({...e})}return t}function Uj(e){return new Date(e).toLocaleDateString(void 0,{weekday:`short`,month:`short`,day:`numeric`})}function Wj(e){return Q(`slicc-day-separator`,{label:Uj(e)})}function Gj(e,t={}){let n=[],r=``;for(let i of e){let e=new Date(i.timestamp).toDateString();e!==r&&(n.push(Wj(i.timestamp)),r=e),n.push(...Vj(i,t))}let i=document.createElement(`div`);return i.append(...n),Aj(i,{openClusterAnchors:new Set,toolCallLookup:(t,n)=>e.find(e=>e.id===t)?.toolCalls?.find(e=>e.id===n)}),Array.from(i.children)}var Kj=`auto`;function qj(e){if(e===null)return null;if(e===`auto`||e===`esc`)return e}var Jj=`slicc-shortcuts-style`,Yj=`
8581
8581
  /* The sheet grows a column at a time as the viewport allows, and the dialog
8582
8582
  grows with it — one alphabetical column of thirty-odd rows is a reference
8583
8583
  you read; three short labelled ones are a cheat sheet you scan. Capped at
@@ -8623,4 +8623,4 @@ slicc-dialog.wcsc-dialog::part(dialog){width:min(460px,92vw);}
8623
8623
  `;function lN(e,t){let n=e.commands.map(e=>CM(t,e)).filter(e=>e!==null);return n.length===0?null:n.join(` `)}function uN(e){return{commands:[e],find:t=>{let n=_M(e);return n?t.root.ownerDocument.querySelector(`slicc-dock-item[item-id="${dN(n)}"]`):null}}}function dN(e){return typeof globalThis.CSS?.escape==`function`?globalThis.CSS.escape(e):e.replace(/["\\]/g,`\\$&`)}var fN=[{commands:[`prevAgent`,`nextAgent`],find:e=>e.switcher.scoops.length>1?e.root.ownerDocument.querySelector(`slicc-agent-tabs [part="track-frame"]`):null,placement:`end`},uN(`tabs`),uN(`files`),uN(`terminal`),uN(`memory`),uN(`monitor`),{commands:[`sprinkles`],find:e=>e.root.ownerDocument.querySelector(`slicc-dock-item[kind="sprinkle"]`)},{commands:[`leftRail`],find:e=>e.root.ownerDocument.querySelector(`slicc-freezer [part="toggle"]`)},{commands:[`attach`],find:e=>e.inputCard.querySelector(`slicc-add-menu`),placement:`top-start`},{commands:[`stop`],find:e=>e.inputCard.querySelector(`slicc-send-button`)},{commands:[`composer`],find:e=>e.inputCard.querySelector(`textarea`),placement:`top-start`}];function pN(e,t,n=globalThis.innerWidth){return e.endsWith(`end`)&&t.right+iN>n?e.replace(/end$/,`start`):e.endsWith(`start`)&&t.left-iN<0?e.replace(/start$/,`end`):e}function mN(e){if(e.getElementById(sN))return;let t=e.createElement(`style`);t.id=sN,t.textContent=cN,(e.head??e.documentElement)?.append(t)}function hN(e){let t=e.root.ownerDocument,n=t.defaultView,r=null,i={},a=new Map,o=0,s=null,c=null,l=()=>{!r||o!==0||!n||(o=n.requestAnimationFrame(()=>{o=0,r&&d()}))},u=e=>{let t=a.get(e);t&&(t.cap.anchor=null,t.ghost.remove(),a.delete(e))};function d(){r&&fN.forEach((n,o)=>{let c=lN(n,i),l=c===null?null:n.find(e),d=l?.getBoundingClientRect();if(c===null||!l||!d||d.width===0||d.height===0){u(o);return}let f=a.get(o);if(!f){let e=t.createElement(`div`);e.className=oN;let n=t.createElement(`slicc-keycap`);n.setAttribute(`stagger`,String(o)),e.append(n),r?.append(e),f={ghost:e,cap:n},a.set(o,f)}let p=pN(n.placement??`top-end`,d);f.cap.getAttribute(`placement`)!==p&&f.cap.setAttribute(`placement`,p),f.cap.getAttribute(`cap`)!==c&&f.cap.setAttribute(`cap`,c),f.cap.anchor!==l&&(f.cap.anchor=l);let m=f.ghost.style;m.left=`${d.left}px`,m.top=`${d.top}px`,m.width=`${d.width}px`,m.height=`${d.height}px`,s?.observe(l)})}let f=a=>{if(i=a,r){d();return}if(mN(t),r=t.createElement(`div`),r.className=aN,r.dataset.wcShortcuts=`caps`,t.body.append(r),n?.ResizeObserver&&(s=new n.ResizeObserver(l)),n?.MutationObserver){c=new n.MutationObserver(l),c.observe(e.inputCard,{childList:!0,subtree:!0});let r=t.querySelector(`slicc-dock`);r&&c.observe(r,{childList:!0,subtree:!0})}n?.addEventListener(`resize`,l),t.addEventListener(`scroll`,l,{capture:!0,passive:!0}),s?.observe(t.documentElement),d()},p=()=>{if(r){o!==0&&(n?.cancelAnimationFrame(o),o=0);for(let e of[...a.keys()])u(e);s?.disconnect(),s=null,c?.disconnect(),c=null,n?.removeEventListener(`resize`,l),t.removeEventListener(`scroll`,l,{capture:!0}),r.remove(),r=null}};return{show:f,hide:p,destroy:p}}var gN=`slicc-dock-select`,_N=`freezer-toggle`;function vN(e){let t=e.detail;return typeof t?.id==`string`?t.id:null}function yN(e){let t=new Map,n=new Map,r=0,i=e=>{gM(e)&&(t.set(e,(t.get(e)??0)+1),r+=1,n.set(e,r))},a=!1,o=e=>{i(e),!a&&(a=!0,queueMicrotask(()=>{a=!1}))},s=e=>{a||i(e)},c=e=>{let t=vN(e);if(t===null)return;let n=vM(t);s(n??`sprinkles`)},l=()=>s(`leftRail`);return e.addEventListener(gN,c,!0),e.addEventListener(_N,l,!0),{record:o,used:e=>t.has(e),ranked:()=>[...t.entries()].map(([e,t])=>({id:e,count:t})).sort((e,t)=>t.count-e.count||(n.get(t.id)??0)-(n.get(e.id)??0)),dispose:()=>{e.removeEventListener(gN,c,!0),e.removeEventListener(_N,l,!0),t.clear(),n.clear()}}}function bN(e){e.inputCard.dispatchEvent(new CustomEvent(`stop`,{bubbles:!0,composed:!0}))}function xN(e){e.inputCard.querySelector(`slicc-add-menu`)?.open?.()}function SN(e){e.composer.toggleHandsFree?.()}function CN(e){let t=e.thread.ownerDocument.querySelector(`slicc-tab-overlay`);t&&(t.peeking=!0),e.dock.selectItem?.(`browser`)}function wN(e,t){let n=e.thread,r=n.getBoundingClientRect().top,i=[...n.children].map(e=>e.getBoundingClientRect().top-r),a=t>0?i.find(e=>e>1):i.filter(e=>e<-1).at(-1);a!==void 0&&(n.scrollTop+=a)}function TN(e,t){e.thread.querySelector(`.wc-copy-row slicc-press-button`)?.dispatchEvent(new CustomEvent(t,{bubbles:!0,cancelable:!0,detail:{}}))}function EN(e){TN(e,`short-click`)}function DN(e){TN(e,`long-press`)}function ON(e){if(!e)return null;try{return e.contentDocument}catch{return null}}function kN(e){let t=[...e.thread.querySelectorAll(`[data-tool-ui-request]`)];if(t.length===0)return;let n=e.thread.ownerDocument.activeElement,r=t[(t.findIndex(e=>n instanceof Node&&e.contains(n))+1)%t.length];if(!r)return;let i=r.querySelector(`iframe`),a=ON(i)?.querySelector(`button[data-action]`);(r.querySelector(`button[data-action]:not([disabled])`)??a??i)?.focus?.(),r.scrollIntoView?.({block:`nearest`})}function AN(e){let t=e.dock.active;t&&Bn(e.frame??e.dockTree,t)}function jN(e){let t=(e,t)=>({size:()=>e().querySelectorAll(t).length,selectAt:n=>{e().querySelectorAll(t)[n]?.click()}});return{files:{size:()=>e.fileTree.visibleIds().length,selectAt:t=>{let n=e.fileTree.visibleIds()[t];n&&e.fileTree.selectFile(n)}},memory:t(()=>e.memoryHost,`slicc-memrow`),sessions:t(()=>e.freezer,`slicc-freezer-card:not(.match-hidden):not([hidden])`)}}function MN(e){return nN({switcher:e.switcher,dock:e.dock,freezer:e.freezer,composerMeta:e.composerMeta,hudHost:e.chatPane,composerBand:e.composer,focusComposer:()=>e.inputCard.focus(),composerAvailable:()=>!e.composer.hasAttribute(`hidden`)&&!e.inputCard.hasAttribute(`disabled`),stopTurn:()=>bN(e),toggleVoice:()=>SN(e),scrollMessage:t=>wN(e,t),focusApproval:()=>kN(e),openAttachMenu:()=>xN(e),copyReply:()=>EN(e),copyChat:()=>DN(e),zoomSurface:()=>AN(e),peekTabs:()=>CN(e),lists:jN(e),caps:hN({inputCard:e.inputCard,root:e.chatPane,switcher:e.switcher}),usage:yN(e.chatPane.ownerDocument)})}var NN=/data:([\w.+-]+\/[\w.+-]+)(?:;[\w.+-]+=[^;,]*)*;base64,([A-Za-z0-9+/=]+)/g,PN=RegExp(`(?:^|[\\s"'\`(\\[{<,;:=])([A-Za-z0-9+/]{128,}={0,2})(?=$|[\\s"'\`)\\]}>,;:.!?])`,`g`),FN=16;function IN(e){let t=[],n=0;for(;;){let r=e.indexOf(`
8624
8624
  `,n),i=r<0?e.length:r,a=e[i-1]===`\r`?i-1:i;if(t.push({start:n,end:a,text:e.slice(n,a)}),r<0)return t;n=r+1}}var LN=/^[A-Za-z0-9+/]+$/,RN=/^[A-Za-z0-9+/]+={0,2}$/;function zN(e){let t=IN(e),n=[];for(let r=0;r<t.length;r+=1){let i=BN(t,r);if(i===null)continue;let a=VN(t,r,i);if(a===r)continue;let o=t.slice(r,a+1),s=HN(t,r,i);s&&o.unshift(s);let c=UN(e,o);c&&n.push(c),r=a}return n}function BN(e,t){let n=e[t];if(!n)return null;let r=n.text.length;return r<FN||r%4!=0?null:LN.test(n.text)?r:null}function VN(e,t,n){let r=t;for(let i=t+1;i<e.length;i+=1){let t=e[i];if(!t||t.text.length!==n||!LN.test(t.text))break;r=i}let i=e[r+1];if(!i||i.text.length===0||i.text.length>=n||!RN.test(i.text))return r;let a=e[r+2];return a!==void 0&&a.text.length===n&&LN.test(a.text)?r:r+1}function HN(e,t,n){let r=e[t-1];if(!r||r.text.length<=n)return null;let i=r.text.length-n,a=r.text.slice(i);return!LN.test(a)||LN.test(r.text[i-1]??` `)?null:{start:r.start+i,end:r.end,text:a}}function UN(e,t){let n=t.map(e=>e.text).join(``);if(n.replace(/=+$/,``).length<128||n.length%4!=0)return null;let r=s(n);if(!r)return null;let i=t[0]?.start??0,a=t[t.length-1]?.end??i;return{raw:e.slice(i,a),data:r,start:i,end:a}}function WN(e){let t=[],n=[],r=(e,t)=>n.some(([n,r])=>e<r&&t>n);NN.lastIndex=0;for(let r of e.matchAll(NN)){let e=r[2]??``;if(e.length<128)continue;let i=s(e);if(!i)continue;let a=r.index??0,o=a+r[0].length;t.push({raw:r[0],data:i,declaredMime:r[1]??``,start:a,end:o}),n.push([a,o])}for(let i of zN(e))r(i.start,i.end)||(t.push(i),n.push([i.start,i.end]));PN.lastIndex=0;for(let i of e.matchAll(PN)){let e=i[1]??``,a=(i.index??0)+(i[0].length-e.length),o=a+e.length;if(r(a,o)||e.length%4!=0)continue;let c=s(e);c&&(t.push({raw:e,data:c,start:a,end:o}),n.push([a,o]))}return t.sort((e,t)=>e.start-t.start)}var GN=e=>Array.from(e,e=>e.charCodeAt(0)),KN=[{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:GN(`GIF87a`),mime:`image/gif`},{offset:0,bytes:GN(`GIF89a`),mime:`image/gif`},{offset:0,bytes:GN(`BM`),mime:`image/bmp`},{offset:0,bytes:GN(`RIFF`),also:{offset:8,bytes:GN(`WEBP`)},mime:`image/webp`},{offset:4,bytes:GN(`ftypavif`),mime:`image/avif`},{offset:0,bytes:[0,0,1,0],mime:`image/x-icon`},{offset:0,bytes:GN(`RIFF`),also:{offset:8,bytes:GN(`WAVE`)},mime:`audio/wav`},{offset:0,bytes:GN(`ID3`),mime:`audio/mpeg`},{offset:0,bytes:GN(`fLaC`),mime:`audio/flac`},{offset:4,bytes:GN(`ftypM4A`),mime:`audio/mp4`},{offset:4,bytes:GN(`ftypisom`),mime:`video/mp4`},{offset:4,bytes:GN(`ftypmp42`),mime:`video/mp4`},{offset:4,bytes:GN(`ftypqt`),mime:`video/quicktime`},{offset:0,bytes:[26,69,223,163],mime:`video/webm`},{offset:0,bytes:GN(`%PDF-`),mime:`application/pdf`},{offset:0,bytes:[0,97,115,109],mime:`application/wasm`},{offset:0,bytes:GN(`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`}],qN=GN(`OggS`);function JN(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 YN(e){let t=[...KN].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(JN(e,n.offset,n.bytes)&&!(n.also&&!JN(e,n.also.offset,n.also.bytes)))return n.mime;if(JN(e,0,qN)){let t=XN(e.subarray(0,64));return/theora|VP8/.test(t)?`video/ogg`:`audio/ogg`}return null}function XN(e){let t=``;for(let n of e)t+=String.fromCharCode(n);return t}var ZN=4096;function QN(e){if(e.length===0)return!0;let t=e.subarray(0,Math.min(e.length,ZN));if(t.includes(0))return!1;let n=t.length;if(n===ZN)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 $N(e,t){if(t&&t.length>0){let e=YN(t);if(e)return{mime:e,text:eP(e),source:`magic`}}let n=i(e);return n===`application/octet-stream`?t&&QN(t)?{mime:`text/plain`,text:!0,source:`content`}:{mime:`application/octet-stream`,text:!1,source:t?`content`:`unknown`}:{mime:n,text:eP(n),source:`extension`}}function eP(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 tP=new Set([`md`,`markdown`,`mdown`,`mkd`,`mkdn`,`mdwn`]);function nP(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 tP.has(i)?`markdown`:i===`html`||i===`htm`?`html`:null}var rP=`payload`;function iP(e,t){let n;try{n=c(e)}catch{return null}if(n.length===0)return null;let r=YN(n);if(r)return aP(n,r,`magic`);let i=t?.split(`;`,1)[0]?.trim().toLowerCase();return i&&i.length>0&&i!==`application/octet-stream`?aP(n,i,`declared`):QN(n)?aP(n,`text/plain`,`content`):null}function aP(e,t,n){let r=o(t);return{bytes:e,mime:t,text:eP(t),source:n,name:r?`${rP}.${r}`:rP}}var oP=`slicc-blob-chip`,sP=`base64-preview-open`,cP=`data-base64-chips`;function lP(e){return`${e.childNodes.length}:${e.textContent?.length??0}`}var uP=new Set([`A`,`PRE`,`SCRIPT`,`STYLE`,`TEXTAREA`]),dP=[[`image/`,`image`],[`audio/`,`file-audio`],[`video/`,`file-video`],[`text/`,`file-text`]];function fP(e){for(let[t,n]of dP)if(e.startsWith(t))return C(n)?n:`file`;return`file`}function pP(e){let t=lP(e);if(e.getAttribute(cP)!==t){for(let t of hP(e)){let e=[];for(let n of WN(t.text)){let t=iP(n.data,n.declaredMime);t&&e.push({start:n.start,end:n.end,payload:t})}e.length!==0&&_P(t,e)}e.setAttribute(cP,lP(e))}}function mP(e,t){for(let n=e;n;n=n.parentElement){if(uP.has(n.tagName))return!0;if(n===t)return!1}return!1}function hP(e){let t=[];for(let n of[e,...e.querySelectorAll(`*`)]){if(mP(n,e))continue;let r=null;for(let e of n.childNodes){let n=gP(e);if(n===null){r=null;continue}r||(r={text:``,parts:[]},t.push(r));let i=r.text.length;r.text+=n,r.parts.push({node:e,start:i,end:r.text.length})}}return t.filter(e=>e.text.length>0)}function gP(e){return e.nodeType===Node.TEXT_NODE?e.nodeValue??``:e.nodeType===Node.ELEMENT_NODE&&e.tagName===`BR`?`
8625
8625
  `:null}function _P(e,t){let n=e.parts[0]?.node,r=n?.parentNode;if(!n||!r)return;let i=n.ownerDocument;if(!i)return;let a=i.createDocumentFragment(),o=new Set;for(let n of e.parts){if(gP(n.node)===`
8626
- `&&n.node.nodeType===Node.ELEMENT_NODE){t.some(e=>e.start<=n.start&&n.end<=e.end)||a.appendChild(i.createElement(`br`));continue}let r=n.start;for(let[s,c]of t.entries()){if(c.end<=n.start||c.start>=n.end)continue;let t=Math.min(Math.max(c.start,n.start),n.end);t>r&&a.appendChild(i.createTextNode(e.text.slice(r,t))),o.has(s)||(a.appendChild(vP(i,c.payload)),o.add(s)),r=Math.max(r,Math.min(c.end,n.end))}r<n.end&&a.appendChild(i.createTextNode(e.text.slice(r,n.end)))}r.insertBefore(a,n);for(let t of e.parts)t.node.remove()}function vP(e,t){let n=t.bytes.byteLength,r=e.createElement(oP);return r.setAttribute(`icon`,fP(t.mime)),r.setAttribute(`label`,`${ld(t.mime)} · ${w(n)}`),r.title=`${t.mime} · ${n.toLocaleString()} bytes\nClick to preview`,r.addEventListener(`click`,e=>{e.preventDefault(),e.stopPropagation();let n={payload:t};r.dispatchEvent(new CustomEvent(sP,{detail:n,bubbles:!0,composed:!0}))}),r}var yP=24;async function bP(e,t){let n=t.slice(0,Math.max(t.lastIndexOf(`/`),0))||`/`;for(let t=0;t<yP;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 xP(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 SP(e,n,r){let i=await bP(e,n);if(!i)return null;let a=n.slice(i===`/`?1:i.length+1);if(a.length===0)return null;try{let n=await t(()=>import(`./isomorphic-git-C3lNgE6Y.js`),__vite__mapDeps([31,1,32])),o=xP(e),s=await n.resolveRef({fs:o,dir:i,ref:`HEAD`}),{blob:c}=await n.readBlob({fs:o,dir:i,oid:s,filepath:a}),l=new TextDecoder().decode(c);return l===r?null:{baseContent:l,status:`modified`,repoRoot:i}}catch{return null}}function CP(e){let t=e.slice(e.lastIndexOf(`.`)).toLowerCase();return t===`.html`||t===`.svg`}async function wP(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}=$N(t,r);return{mime:i,text:a,bytes:r}}var TP=524288;function EP(e,t,n){if(n.length>TP)return null;switch(nP(e,t)){case`markdown`:return{mount:`inline`,html:hA(n)};case`html`:return{mount:`sandbox`,html:n};default:return null}}async function DP(e,t,n={}){let{mime:r,text:i,bytes:a}=await wP(e,t);if(!i){Cd.open({path:t,content:a.buffer,mimeType:r,text:!1});return}let o=new TextDecoder().decode(a),s=await SP(e,t,o),c=EP(t,r,o);Cd.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 OP(e,t){let{mime:n,bytes:r}=await wP(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 kP(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 AP(e,t){try{return await e.stat(t),!0}catch{return!1}}async function jP(e,t){let n=t.split(`/`).pop()??``,r=prompt(`Rename ${t} to:`,n)?.trim();if(!r||r===n||r.includes(`/`))return;let i=`${t.slice(0,t.length-n.length)}${r}`,a=await e.stat(t);try{let t=await e.stat(i);if(b(a,t))return}catch{}await AP(e,i)&&!confirm(`${i} already exists. Overwrite?`)||(await kP(e,t,i),await e.rm(t))}function MP(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 DP(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 OP(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&&CP(n)},{id:`delete`,label:`Delete`,destructive:!0,visible:a}];$c.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 AP(n,t)&&!confirm(`${t} already exists. Overwrite?`))break;await kP(n,s,t);break}case`delete`:confirm(`Delete ${s}?`)&&await(await r()).rm(s);break;case`rename`:await jP(await r(),s)}}catch(e){o.error(`Overflow action "${n}" failed`,e)}})}var NP=`slicc-agent-message`,PP=`slicc-user-message`,FP=`${NP},${PP}`,IP=[`streaming`,`text`,`timestamp`,`queued`];function LP(e){return e.tagName.toLowerCase()===PP?e.shadowRoot?.querySelector(`.b`)??null:e.querySelector(`.body`)??e}function RP(e){try{return zP(e)}catch(t){return e.log.error(`Base64 preview wiring failed; continuing without it`,t),()=>{}}}function zP(e){let{thread:t,log:n}=e;if(!(t instanceof Node))return()=>{};let r=e=>{if(!(e instanceof HTMLElement)||e.hasAttribute(`streaming`))return;let t=LP(e);if(t&&WN(t.textContent??``).length!==0)try{pP(t)}catch(e){n.error(`Base64 elision failed`,e)}},i=e=>{for(let t of e.querySelectorAll(FP))r(t)};i(t);let a=new MutationObserver(e=>{for(let t of e){let e=t.target;if(t.type===`attributes`){e&&r(e);continue}for(let e of t.addedNodes)e instanceof HTMLElement&&(e.matches(FP)?r(e):i(e));let n=e?.closest?.(FP);n&&r(n)}});a.observe(t,{childList:!0,subtree:!0,attributes:!0,attributeFilter:IP});let o=e=>{let{payload:t}=e.detail;try{BP(t)}catch(e){n.error(`Base64 preview failed`,e)}};return t.addEventListener(sP,o),()=>{a.disconnect(),t.removeEventListener(sP,o)}}function BP(e){if(!e.text){Cd.open({path:e.name,content:e.bytes.buffer,mimeType:e.mime,text:!1});return}let t=new TextDecoder().decode(e.bytes),n=EP(e.name,e.mime,t);Cd.open({path:e.name,content:t,mimeType:e.mime,text:!0,...n?{rendered:n}:{}})}var VP=e({FREEZER_TINT:()=>HP,applyComposerAvailability:()=>tF,applyShellContext:()=>eF,buildWcShellFrame:()=>$P,mountWcUiPreview:()=>iF,submittedSteer:()=>rF,submittedText:()=>nF}),HP=`#3b6cb2`,UP=`slicc-wcui-style`,WP=[`html,body{margin:0;padding:0;height:100%;overscroll-behavior:none;}`,`.wcui-frame{position:relative;transform:translateZ(0);width:100%;height:100vh;`,`overflow:hidden;background:var(--bg);font-family:var(--ui);}`,`.wcui-shader{position:absolute;inset:0;z-index:0;}`,`.wcui-frame slicc-chatpane{position:relative;background:transparent;}`,`.wcui-appcol{position:relative;z-index:1;height:100%;display:flex;flex-direction:column;`,`box-sizing:border-box;padding-left:var(--rail-w,44px);`,`transition:padding-left .4s cubic-bezier(.4,0,.2,1);}`,`@media (max-width:560px){.wcui-appcol{padding-left:44px;}}`,`.wcui-term{flex:1;min-height:0;display:flex;flex-direction:column;padding:8px 4px 8px 10px;`,`box-sizing:border-box;background:var(--term-bg,#0c0c0e);}`,`.wcui-term .terminal-panel__terminal-host{flex:1 1 auto;min-height:0;}`,`.wcui-term .terminal-panel__preview{flex:0 0 auto;}`,`.wcui-frame slicc-file-tree{width:100%;border-right:none;}`,`.wcui-memory{flex:1;min-height:0;overflow:hidden;}`,`.wcui-monitor{flex:1;min-height:0;}`,`.wcui-placeholder{flex:1;display:flex;align-items:center;justify-content:center;`,`padding:24px;color:var(--txt-2);font-size:13px;text-align:center;}`,`.wcui-backpressure{align-self:flex-end;max-width:80%;box-sizing:border-box;`,`padding:8px 12px;border:1px solid var(--line);border-radius:14px;`,`background:var(--canvas);color:var(--txt-2);font-size:12px;line-height:1.4;}`,`.wcui-backpressure[hidden]{display:none;}`,ET].join(``);function GP(e){if(e.getElementById(UP))return;let t=e.createElement(`style`);t.id=UP,t.textContent=WP,e.head.appendChild(t)}var KP=null;function qP(){KP?.(),KP=Kp()}function $(e,t={}){let n=document.createElement(e);for(let[e,r]of Object.entries(t))n.setAttribute(e,r);return n}function JP(e){let t=$(`slicc-nav`,{accent:`var(--waffle)`}),n=$(`slicc-agent-tabs`);n.scoops=[...e.scoops];let r=$(`slicc-floatbar`,{label:e.floatLabel,spent:`0.00`}),i=document.createElement(`slicc-avatar-menu`);return i.append($(`slicc-avatar`,{name:`SLICC`})),t.append(n,r,i),{nav:t,switcher:n,floatbar:r,avatarMenu:i}}function YP(e){let t=$(`slicc-composer`),n=$(`div`,{class:`wcui-backpressure`,role:`status`,"aria-live":`polite`,hidden:``}),r=$(`slicc-queued-stack`);r.style.position=`relative`,r.style.zIndex=`0`,r.style.marginBottom=`-32px`,r.style.minHeight=`76px`;let i=$(`slicc-input-card`,{placeholder:e.placeholder});i.style.position=`relative`,i.style.zIndex=`1`;let a=$(`slicc-composer-meta`,{model:`Preview`,thinking:`off`});return t.append(n,r,i,a),{composer:t,inputCard:i,composerMeta:a,queuedStack:r,lickBackpressureNotice:n}}function XP(){let e=$(`slicc-dock-tree`),t=$(`slicc-surface`,{"surface-id":`files`,layout:`flex`}),n=$(`slicc-file-tree`);t.append(n);let r=$(`slicc-surface`,{"surface-id":`term`,layout:`flex`}),i=$(`div`,{class:`wcui-term`});r.append(i);let a=$(`slicc-surface`,{"surface-id":`memory`,layout:`flex`}),o=$(`slicc-memory-panel`,{class:`wcui-memory`});a.append(o);let s=$(`slicc-surface`,{"surface-id":`monitor`,layout:`flex`}),c=$(`slicc-monitor`,{class:`wcui-monitor`});s.append(c);let l=$(`slicc-surface`,{"surface-id":`browser`,layout:`flex`}),u=$(`div`,{class:`wcui-placeholder`});return u.textContent=`The tab switcher runs on the leader. This float has no browser of its own to show — ask the leader to open, focus, or close tabs through chat.`,l.append(u),e.append(t,r,a,s,l),{dockTree:e,tree:n,termSurface:i,memoryHost:o,monitor:c}}function ZP(e,t){e.addEventListener(`slicc-dock-select`,e=>{let n=e.detail?.id;!n||t.has(n)})}function QP(e,t){e.addEventListener(`pointerdown`,e=>{let n=(e.target?.closest?.(`slicc-dock-item`))?.getAttribute(`item-id`);!n?.startsWith(`sprinkle:`)||!t.tilesMovable||t.beginExternalDrag(n,e.pointerId)})}function $P(e,t){Wp(document),GP(document),qP();let r=$(`div`,{class:`wcui-frame`}),i=$(`slicc-shader`,{mode:`cone`,class:`wcui-shader`}),a=$(`slicc-freezer`);a.append($(`slicc-freezer-new`));let o=$(`div`,{class:`wcui-appcol`}),s=t.urlState?{"url-state":``}:{},c=$(`slicc-shell`,s),l=$(`slicc-chatpane`),u=$(`slicc-chat-thread`,{context:`cone`,accent:`var(--waffle)`,...s});u.append(...Gj(t.messages));let{composer:d,inputCard:f,composerMeta:p,queuedStack:m,lickBackpressureNotice:h}=YP(t);l.append(u,d);let{dockTree:g,tree:_,termSurface:v,memoryHost:y,monitor:b}=XP(),x=$(`slicc-surface`,{"surface-id":`chat`,layout:`flex`});x.append(l),g.append(x);let S=g;S.setPinned([`chat`]),S.placeSurface(`chat`,`left`);let C=$(`slicc-dock`,{"system-tools":``});c.append(g,C);let w=new Set;ZP(C,w),QP(C,g),a.addEventListener(`freezer-toggle`,e=>{let t=e.detail?.open===!0;o.style.setProperty(`--rail-w`,t?`260px`:`44px`)});let ee=0;u.addEventListener(`scroll`,()=>{ee||=requestAnimationFrame(()=>{ee=0,i.setAttribute(`scroll`,String(Math.round(u.scrollTop)))})},{passive:!0});let{nav:te,switcher:ne,floatbar:re,avatarMenu:ie}=JP(t);o.append(te,c);let ae=MN({switcher:ne,dock:C,freezer:a,composerMeta:p,composer:d,chatPane:l,inputCard:f,thread:u,frame:r,dockTree:g,fileTree:_,memoryHost:y}),{panelHost:oe,trustedLayer:T}=DT(document);return oe.append(i,a,o),r.append(oe,T),e.replaceChildren(r),RP({thread:u,log:n(`base64-preview`)}),{frame:r,panelHost:oe,trustedLayer:T,shader:i,chatPane:l,thread:u,composer:d,inputCard:f,composerMeta:p,queuedStack:m,lickBackpressureNotice:h,switcher:ne,floatbar:re,shell:c,dockTree:g,dock:C,freezer:a,fileTree:_,termSurface:v,memoryHost:y,monitor:b,avatarMenu:ie,shortcuts:ae,overlaySurfaces:w}}function eF(e,t){let{shader:n,frame:r,freezer:i}=e;t.kind===`cone`?(n.removeAttribute(`tint`),r.style.removeProperty(`--ctx`),i.removeAttribute(`ctx`),n.setAttribute(`mode`,`cone`)):t.kind===`scoop`?(n.setAttribute(`tint`,t.accent),r.style.setProperty(`--ctx`,t.accent),i.removeAttribute(`ctx`),n.setAttribute(`mode`,`scoop`)):(n.setAttribute(`mode`,`freezer`),n.setAttribute(`tint`,HP),r.style.setProperty(`--ctx`,HP),i.setAttribute(`ctx`,``))}function tF(e,t){e.composer.toggleAttribute(`hidden`,t),t&&e.inputCard.setAttribute(`disabled`,``)}function nF(e){return e.detail?.value}function rF(e){return e.detail?.steer===!0}function iF(e){let t=$P(e,{messages:oE(),scoops:[{key:`cone`,type:`cone`,color:`#b07823`,label:`sliccy`,eyes:`open`,state:`working`},{key:XT,type:`scoop`,color:`#06b6d4`,label:XT,eyes:`open`,state:`broken`}],floatLabel:`standalone · preview`,placeholder:`Preview harness — submissions echo into the thread…`});t.fileTree.items=[{kind:`dir`,id:`/workspace`,label:`workspace`,open:!0,children:[{kind:`file`,id:`/workspace/CLAUDE.md`,label:`CLAUDE.md`,size:3200}]},{kind:`dir`,id:`/shared`,label:`shared`,open:!0,children:[{kind:`file`,id:`/shared/CLAUDE.md`,label:`CLAUDE.md`,size:1800}]}],t.switcher.setAttribute(`attention`,`cone`),t.inputCard.addEventListener(`submit`,e=>{let n=nF(e)?.trim();if(!n)return;let r={id:`wc-echo-${t.thread.childElementCount}`,role:`user`,content:n,timestamp:Date.now()};t.thread.append(...Vj(r))})}export{ln as $,OT as A,or as B,bj as C,le as Ct,mE as D,ee as Dt,CE as E,ue as Et,Vo as F,Nn as G,er as H,Uo as I,wn as J,Fn as K,Hn as L,pu as M,Al as N,KT as O,te as Ot,kc as P,gn as Q,Vn as R,Aj as S,E as St,hE as T,re as Tt,Bn as U,Zn as V,Ln as W,vn as X,Tn as Y,_n as Z,ej as _,Ie as _t,rF as a,en as at,Wj as b,me as bt,DP as c,Ut as ct,Kj as d,xt as dt,pn as et,yM as f,vt as ft,tj as g,je as gt,qj as h,Re as ht,$P as i,fn as it,CT as j,UT as k,MP as l,Ht as lt,gM as m,he as mt,tF as n,dn as nt,nF as o,Gt as ot,xM as p,yt as pt,In as q,eF as r,un as rt,VP as s,Dt as st,HP as t,tn as tt,bM as u,Vt as ut,$A as v,ze as vt,hA as w,ce as wt,Vj as x,ie as xt,Hj as y,D as yt,Qn as z};
8626
+ `&&n.node.nodeType===Node.ELEMENT_NODE){t.some(e=>e.start<=n.start&&n.end<=e.end)||a.appendChild(i.createElement(`br`));continue}let r=n.start;for(let[s,c]of t.entries()){if(c.end<=n.start||c.start>=n.end)continue;let t=Math.min(Math.max(c.start,n.start),n.end);t>r&&a.appendChild(i.createTextNode(e.text.slice(r,t))),o.has(s)||(a.appendChild(vP(i,c.payload)),o.add(s)),r=Math.max(r,Math.min(c.end,n.end))}r<n.end&&a.appendChild(i.createTextNode(e.text.slice(r,n.end)))}r.insertBefore(a,n);for(let t of e.parts)t.node.remove()}function vP(e,t){let n=t.bytes.byteLength,r=e.createElement(oP);return r.setAttribute(`icon`,fP(t.mime)),r.setAttribute(`label`,`${ld(t.mime)} · ${w(n)}`),r.title=`${t.mime} · ${n.toLocaleString()} bytes\nClick to preview`,r.addEventListener(`click`,e=>{e.preventDefault(),e.stopPropagation();let n={payload:t};r.dispatchEvent(new CustomEvent(sP,{detail:n,bubbles:!0,composed:!0}))}),r}var yP=24;async function bP(e,t){let n=t.slice(0,Math.max(t.lastIndexOf(`/`),0))||`/`;for(let t=0;t<yP;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 xP(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 SP(e,n,r){let i=await bP(e,n);if(!i)return null;let a=n.slice(i===`/`?1:i.length+1);if(a.length===0)return null;try{let n=await t(()=>import(`./isomorphic-git-C3lNgE6Y.js`),__vite__mapDeps([32,1,33])),o=xP(e),s=await n.resolveRef({fs:o,dir:i,ref:`HEAD`}),{blob:c}=await n.readBlob({fs:o,dir:i,oid:s,filepath:a}),l=new TextDecoder().decode(c);return l===r?null:{baseContent:l,status:`modified`,repoRoot:i}}catch{return null}}function CP(e){let t=e.slice(e.lastIndexOf(`.`)).toLowerCase();return t===`.html`||t===`.svg`}async function wP(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}=$N(t,r);return{mime:i,text:a,bytes:r}}var TP=524288;function EP(e,t,n){if(n.length>TP)return null;switch(nP(e,t)){case`markdown`:return{mount:`inline`,html:hA(n)};case`html`:return{mount:`sandbox`,html:n};default:return null}}async function DP(e,t,n={}){let{mime:r,text:i,bytes:a}=await wP(e,t);if(!i){Cd.open({path:t,content:a.buffer,mimeType:r,text:!1});return}let o=new TextDecoder().decode(a),s=await SP(e,t,o),c=EP(t,r,o);Cd.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 OP(e,t){let{mime:n,bytes:r}=await wP(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 kP(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 AP(e,t){try{return await e.stat(t),!0}catch{return!1}}async function jP(e,t){let n=t.split(`/`).pop()??``,r=prompt(`Rename ${t} to:`,n)?.trim();if(!r||r===n||r.includes(`/`))return;let i=`${t.slice(0,t.length-n.length)}${r}`,a=await e.stat(t);try{let t=await e.stat(i);if(b(a,t))return}catch{}await AP(e,i)&&!confirm(`${i} already exists. Overwrite?`)||(await kP(e,t,i),await e.rm(t))}function MP(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 DP(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 OP(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&&CP(n)},{id:`delete`,label:`Delete`,destructive:!0,visible:a}];$c.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 AP(n,t)&&!confirm(`${t} already exists. Overwrite?`))break;await kP(n,s,t);break}case`delete`:confirm(`Delete ${s}?`)&&await(await r()).rm(s);break;case`rename`:await jP(await r(),s)}}catch(e){o.error(`Overflow action "${n}" failed`,e)}})}var NP=`slicc-agent-message`,PP=`slicc-user-message`,FP=`${NP},${PP}`,IP=[`streaming`,`text`,`timestamp`,`queued`];function LP(e){return e.tagName.toLowerCase()===PP?e.shadowRoot?.querySelector(`.b`)??null:e.querySelector(`.body`)??e}function RP(e){try{return zP(e)}catch(t){return e.log.error(`Base64 preview wiring failed; continuing without it`,t),()=>{}}}function zP(e){let{thread:t,log:n}=e;if(!(t instanceof Node))return()=>{};let r=e=>{if(!(e instanceof HTMLElement)||e.hasAttribute(`streaming`))return;let t=LP(e);if(t&&WN(t.textContent??``).length!==0)try{pP(t)}catch(e){n.error(`Base64 elision failed`,e)}},i=e=>{for(let t of e.querySelectorAll(FP))r(t)};i(t);let a=new MutationObserver(e=>{for(let t of e){let e=t.target;if(t.type===`attributes`){e&&r(e);continue}for(let e of t.addedNodes)e instanceof HTMLElement&&(e.matches(FP)?r(e):i(e));let n=e?.closest?.(FP);n&&r(n)}});a.observe(t,{childList:!0,subtree:!0,attributes:!0,attributeFilter:IP});let o=e=>{let{payload:t}=e.detail;try{BP(t)}catch(e){n.error(`Base64 preview failed`,e)}};return t.addEventListener(sP,o),()=>{a.disconnect(),t.removeEventListener(sP,o)}}function BP(e){if(!e.text){Cd.open({path:e.name,content:e.bytes.buffer,mimeType:e.mime,text:!1});return}let t=new TextDecoder().decode(e.bytes),n=EP(e.name,e.mime,t);Cd.open({path:e.name,content:t,mimeType:e.mime,text:!0,...n?{rendered:n}:{}})}var VP=e({FREEZER_TINT:()=>HP,applyComposerAvailability:()=>tF,applyShellContext:()=>eF,buildWcShellFrame:()=>$P,mountWcUiPreview:()=>iF,submittedSteer:()=>rF,submittedText:()=>nF}),HP=`#3b6cb2`,UP=`slicc-wcui-style`,WP=[`html,body{margin:0;padding:0;height:100%;overscroll-behavior:none;}`,`.wcui-frame{position:relative;transform:translateZ(0);width:100%;height:100vh;`,`overflow:hidden;background:var(--bg);font-family:var(--ui);}`,`.wcui-shader{position:absolute;inset:0;z-index:0;}`,`.wcui-frame slicc-chatpane{position:relative;background:transparent;}`,`.wcui-appcol{position:relative;z-index:1;height:100%;display:flex;flex-direction:column;`,`box-sizing:border-box;padding-left:var(--rail-w,44px);`,`transition:padding-left .4s cubic-bezier(.4,0,.2,1);}`,`@media (max-width:560px){.wcui-appcol{padding-left:44px;}}`,`.wcui-term{flex:1;min-height:0;display:flex;flex-direction:column;padding:8px 4px 8px 10px;`,`box-sizing:border-box;background:var(--term-bg,#0c0c0e);}`,`.wcui-term .terminal-panel__terminal-host{flex:1 1 auto;min-height:0;}`,`.wcui-term .terminal-panel__preview{flex:0 0 auto;}`,`.wcui-frame slicc-file-tree{width:100%;border-right:none;}`,`.wcui-memory{flex:1;min-height:0;overflow:hidden;}`,`.wcui-monitor{flex:1;min-height:0;}`,`.wcui-placeholder{flex:1;display:flex;align-items:center;justify-content:center;`,`padding:24px;color:var(--txt-2);font-size:13px;text-align:center;}`,`.wcui-backpressure{align-self:flex-end;max-width:80%;box-sizing:border-box;`,`padding:8px 12px;border:1px solid var(--line);border-radius:14px;`,`background:var(--canvas);color:var(--txt-2);font-size:12px;line-height:1.4;}`,`.wcui-backpressure[hidden]{display:none;}`,ET].join(``);function GP(e){if(e.getElementById(UP))return;let t=e.createElement(`style`);t.id=UP,t.textContent=WP,e.head.appendChild(t)}var KP=null;function qP(){KP?.(),KP=Kp()}function $(e,t={}){let n=document.createElement(e);for(let[e,r]of Object.entries(t))n.setAttribute(e,r);return n}function JP(e){let t=$(`slicc-nav`,{accent:`var(--waffle)`}),n=$(`slicc-agent-tabs`);n.scoops=[...e.scoops];let r=$(`slicc-floatbar`,{label:e.floatLabel,spent:`0.00`}),i=document.createElement(`slicc-avatar-menu`);return i.append($(`slicc-avatar`,{name:`SLICC`})),t.append(n,r,i),{nav:t,switcher:n,floatbar:r,avatarMenu:i}}function YP(e){let t=$(`slicc-composer`),n=$(`div`,{class:`wcui-backpressure`,role:`status`,"aria-live":`polite`,hidden:``}),r=$(`slicc-queued-stack`);r.style.position=`relative`,r.style.zIndex=`0`,r.style.marginBottom=`-32px`,r.style.minHeight=`76px`;let i=$(`slicc-input-card`,{placeholder:e.placeholder});i.style.position=`relative`,i.style.zIndex=`1`;let a=$(`slicc-composer-meta`,{model:`Preview`,thinking:`off`});return t.append(n,r,i,a),{composer:t,inputCard:i,composerMeta:a,queuedStack:r,lickBackpressureNotice:n}}function XP(){let e=$(`slicc-dock-tree`),t=$(`slicc-surface`,{"surface-id":`files`,layout:`flex`}),n=$(`slicc-file-tree`);t.append(n);let r=$(`slicc-surface`,{"surface-id":`term`,layout:`flex`}),i=$(`div`,{class:`wcui-term`});r.append(i);let a=$(`slicc-surface`,{"surface-id":`memory`,layout:`flex`}),o=$(`slicc-memory-panel`,{class:`wcui-memory`});a.append(o);let s=$(`slicc-surface`,{"surface-id":`monitor`,layout:`flex`}),c=$(`slicc-monitor`,{class:`wcui-monitor`});s.append(c);let l=$(`slicc-surface`,{"surface-id":`browser`,layout:`flex`}),u=$(`div`,{class:`wcui-placeholder`});return u.textContent=`The tab switcher runs on the leader. This float has no browser of its own to show — ask the leader to open, focus, or close tabs through chat.`,l.append(u),e.append(t,r,a,s,l),{dockTree:e,tree:n,termSurface:i,memoryHost:o,monitor:c}}function ZP(e,t){e.addEventListener(`slicc-dock-select`,e=>{let n=e.detail?.id;!n||t.has(n)})}function QP(e,t){e.addEventListener(`pointerdown`,e=>{let n=(e.target?.closest?.(`slicc-dock-item`))?.getAttribute(`item-id`);!n?.startsWith(`sprinkle:`)||!t.tilesMovable||t.beginExternalDrag(n,e.pointerId)})}function $P(e,t){Wp(document),GP(document),qP();let r=$(`div`,{class:`wcui-frame`}),i=$(`slicc-shader`,{mode:`cone`,class:`wcui-shader`}),a=$(`slicc-freezer`);a.append($(`slicc-freezer-new`));let o=$(`div`,{class:`wcui-appcol`}),s=t.urlState?{"url-state":``}:{},c=$(`slicc-shell`,s),l=$(`slicc-chatpane`),u=$(`slicc-chat-thread`,{context:`cone`,accent:`var(--waffle)`,...s});u.append(...Gj(t.messages));let{composer:d,inputCard:f,composerMeta:p,queuedStack:m,lickBackpressureNotice:h}=YP(t);l.append(u,d);let{dockTree:g,tree:_,termSurface:v,memoryHost:y,monitor:b}=XP(),x=$(`slicc-surface`,{"surface-id":`chat`,layout:`flex`});x.append(l),g.append(x);let S=g;S.setPinned([`chat`]),S.placeSurface(`chat`,`left`);let C=$(`slicc-dock`,{"system-tools":``});c.append(g,C);let w=new Set;ZP(C,w),QP(C,g),a.addEventListener(`freezer-toggle`,e=>{let t=e.detail?.open===!0;o.style.setProperty(`--rail-w`,t?`260px`:`44px`)});let ee=0;u.addEventListener(`scroll`,()=>{ee||=requestAnimationFrame(()=>{ee=0,i.setAttribute(`scroll`,String(Math.round(u.scrollTop)))})},{passive:!0});let{nav:te,switcher:ne,floatbar:re,avatarMenu:ie}=JP(t);o.append(te,c);let ae=MN({switcher:ne,dock:C,freezer:a,composerMeta:p,composer:d,chatPane:l,inputCard:f,thread:u,frame:r,dockTree:g,fileTree:_,memoryHost:y}),{panelHost:oe,trustedLayer:T}=DT(document);return oe.append(i,a,o),r.append(oe,T),e.replaceChildren(r),RP({thread:u,log:n(`base64-preview`)}),{frame:r,panelHost:oe,trustedLayer:T,shader:i,chatPane:l,thread:u,composer:d,inputCard:f,composerMeta:p,queuedStack:m,lickBackpressureNotice:h,switcher:ne,floatbar:re,shell:c,dockTree:g,dock:C,freezer:a,fileTree:_,termSurface:v,memoryHost:y,monitor:b,avatarMenu:ie,shortcuts:ae,overlaySurfaces:w}}function eF(e,t){let{shader:n,frame:r,freezer:i}=e;t.kind===`cone`?(n.removeAttribute(`tint`),r.style.removeProperty(`--ctx`),i.removeAttribute(`ctx`),n.setAttribute(`mode`,`cone`)):t.kind===`scoop`?(n.setAttribute(`tint`,t.accent),r.style.setProperty(`--ctx`,t.accent),i.removeAttribute(`ctx`),n.setAttribute(`mode`,`scoop`)):(n.setAttribute(`mode`,`freezer`),n.setAttribute(`tint`,HP),r.style.setProperty(`--ctx`,HP),i.setAttribute(`ctx`,``))}function tF(e,t){e.composer.toggleAttribute(`hidden`,t),t&&e.inputCard.setAttribute(`disabled`,``)}function nF(e){return e.detail?.value}function rF(e){return e.detail?.steer===!0}function iF(e){let t=$P(e,{messages:oE(),scoops:[{key:`cone`,type:`cone`,color:`#b07823`,label:`sliccy`,eyes:`open`,state:`working`},{key:XT,type:`scoop`,color:`#06b6d4`,label:XT,eyes:`open`,state:`broken`}],floatLabel:`standalone · preview`,placeholder:`Preview harness — submissions echo into the thread…`});t.fileTree.items=[{kind:`dir`,id:`/workspace`,label:`workspace`,open:!0,children:[{kind:`file`,id:`/workspace/CLAUDE.md`,label:`CLAUDE.md`,size:3200}]},{kind:`dir`,id:`/shared`,label:`shared`,open:!0,children:[{kind:`file`,id:`/shared/CLAUDE.md`,label:`CLAUDE.md`,size:1800}]}],t.switcher.setAttribute(`attention`,`cone`),t.inputCard.addEventListener(`submit`,e=>{let n=nF(e)?.trim();if(!n)return;let r={id:`wc-echo-${t.thread.childElementCount}`,role:`user`,content:n,timestamp:Date.now()};t.thread.append(...Vj(r))})}export{ln as $,OT as A,or as B,bj as C,le as Ct,mE as D,ee as Dt,CE as E,ue as Et,Vo as F,Nn as G,er as H,Uo as I,wn as J,Fn as K,Hn as L,pu as M,Al as N,KT as O,te as Ot,kc as P,gn as Q,Vn as R,Aj as S,E as St,hE as T,re as Tt,Bn as U,Zn as V,Ln as W,vn as X,Tn as Y,_n as Z,ej as _,Ie as _t,rF as a,en as at,Wj as b,me as bt,DP as c,Ut as ct,Kj as d,xt as dt,pn as et,yM as f,vt as ft,tj as g,je as gt,qj as h,Re as ht,$P as i,fn as it,CT as j,UT as k,MP as l,Ht as lt,gM as m,he as mt,tF as n,dn as nt,nF as o,Gt as ot,xM as p,yt as pt,In as q,eF as r,un as rt,VP as s,Dt as st,HP as t,tn as tt,bM as u,Vt as ut,$A as v,ze as vt,hA as w,ce as wt,Vj as x,ie as xt,Hj as y,D as yt,Qn as z};
@@ -1,4 +1,4 @@
1
- import{t as e}from"./logger-DDBAeTLF.js";import{d as t,f as n,h as r,m as i,p as a,u as o}from"./wc-shell-CrMn8BW0.js";var s=`{
1
+ import{t as e}from"./logger-DDBAeTLF.js";import{d as t,f as n,h as r,m as i,p as a,u as o}from"./wc-shell-Cn2tEDM7.js";var s=`{
2
2
  "//": [
3
3
  "Keyboard-mode shortcuts. How the mode is entered is controlled by",
4
4
  "\\"trigger\\" (also switchable in Theme settings):",
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/legacy-styles-B3nS5QUo.js","assets/preload-helper-Czpn1I53.js","assets/sprinkle-manager-DeJrE3Hq.js","assets/logger-DDBAeTLF.js","assets/sprinkle-renderer-DYUy10CO.js","assets/wc-shell-CrMn8BW0.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/mime-types-D0xZwlMO.js","assets/base64-ELzoYfwP.js","assets/bridge-protocol-C52CnDIj.js","assets/account-store-SI8RQbm0.js","assets/core-zz8rWM4c.js","assets/compat-qQM4gjF_.js","assets/models-BSkXF4T6.js","assets/diagnostics-DN_idNHx.js","assets/provider-env-CTOcDKrQ.js","assets/__vite-browser-external-5eBdwsFd.js","assets/openrouter.models-B-zmcypy.js","assets/libesm-BypnjKEL.js","assets/proxied-fetch-W1rZTqEQ.js","assets/fetch-body-1l9I58Vk.js","assets/api-endpoint-DuEQRZ4g.js","assets/runtime-env-Dlaokqg1.js","assets/secret-topology-fyLSbV8r.js","assets/float-topology-U8FF9pgZ.js","assets/secrets-bridge-client-9RRVsrGm.js","assets/port-bridge-client-BYQawsDH.js","assets/image-markers-q8JQTtid.js","assets/tool-ui-eSQ1g2I1.js","assets/providers-B9p2VR5L.js","assets/panel-rpc-B3MSVImO.js","assets/bedrock-camp-compat-BeCSBUrZ.js","assets/claude-model-version-DZmbk9E2.js","assets/telemetry-CKoAhRMv.js","assets/types-D8gIX-W-.js","assets/same-file-identity-DuEcSmPX.js","assets/icons-jrIi5FYk.js","assets/wc-shell-WkeczD9x.css","assets/hid-device-registry-B2R-0rNt.js","assets/serial-port-registry-CCqklAEr.js","assets/hid-operations-C97SZtrY.js","assets/usb-device-registry--JwKRTYp.js","assets/usb-operations-v1mGAdRY.js","assets/shared-mBEktoxE.js","assets/theme-CwPIBqJE.js","assets/theme-engine-ZV7CeqWw.js","assets/main-DFTTAllP.js","assets/modulepreload-polyfill-P2Xu9kJm.js","assets/tray-follower-status-BAjnN7Ar.js","assets/clipboard-eqmn97SP.js","assets/bounded-walk-BjxKWNqp.js","assets/path-utils-DNJG-zQf.js","assets/sprinkle-instances-B8n7h-oP.js","assets/setup-sprinkle-exec-BX_Qq-Su.js","assets/wc-live-CaopRwn0.js","assets/slugify-BYJ6QVAt.js","assets/transcript-export-DP-r8eDz.js","assets/session-jsonl-lB9-7rZS.js","assets/src-BWaKqLvQ.js","assets/provider-budget-LCzMPlKv.js","assets/permissions-surface-registry-CilCRwhh.js","assets/browser-DGwroBSO.js","assets/tray-leader-Bd293BI8.js","assets/record-CCQFJXn_.js","assets/descriptor-DzbI9z_9.js","assets/types-CFfBWsH5.js","assets/wc-unit-context-CS4hSDi7.js","assets/quick-llm-B8uh7EVu.js","assets/llm-session-id-bZQs6gBN.js"])))=>i.map(i=>d[i]);
2
- import{t as e}from"./preload-helper-Czpn1I53.js";import{U as t}from"./wc-shell-CrMn8BW0.js";import{n}from"./runtime-env-Dlaokqg1.js";import{a as r,o as i,s as a,t as o}from"./wc-unit-context-CS4hSDi7.js";function s(e,t){return e.find(e=>e.folder===t)??e.find(e=>e.folder===`${t}-scoop`)??e.find(e=>e.name===t)}var c=`sprinkle:`,l=`slicc-sprinkle-icons`;function u(){try{let e=localStorage.getItem(l);if(!e)return{};let t=JSON.parse(e);if(typeof t!=`object`||!t)return{};let n={};for(let[e,r]of Object.entries(t))typeof r==`string`&&(n[e]=r);return n}catch{return{}}}function d(e){try{let t=new Set(e),n=Object.fromEntries(Object.entries(u()).filter(([e])=>t.has(e)));localStorage.setItem(l,JSON.stringify(n))}catch{}}function f(e,t){try{localStorage.setItem(l,JSON.stringify({...u(),[e]:t}))}catch{}}function p(e){return typeof e==`string`&&/^[a-z0-9]+(-[a-z0-9]+)*$/.test(e)}function m(e){return`${c}${e}`}function h(e){return e?.startsWith(c)?e.slice(9):null}var g=`chat`,_=new Set([`files`,`term`,`memory`,`monitor`]),v=`right`,y=v;function b(e){return _.has(e)}var x=class{#e;#t=new Map;#n=new Map;#r=new Set;#i=[];#a;constructor(e,t={}){this.#e=e,this.#a=t}#o(){return this.#e.dockTree}applyLayout(e){let t=this.#o();t?.setTree(e);for(let e of this.#i)t?.placeSurface(m(e),y)}placeSurface(e,t){let n=this.#o();if(n&&!this.#a.hostSprinkleSurface)for(let e of n.getSurfaceIds())e!==t&&e!==`chat`&&this.removeSurface(e);if(n?.placeSurface(t,e),!this.#a.hostSprinkleSurface){let e=this.#e.dock;e&&(e.active=t)}b(t)&&this.#a.onToolPanelActivate?.(t)}moveSurfaceToZone(e,t){this.#o()?.moveSurfaceToZone(e,t)}removeSurface(e){this.#o()?.removeSurface(e),b(e)&&this.#a.onToolPanelDeactivate?.(e)}setSurfaceSize(e,t){return this.#o()?.setSurfaceSize(e,t)??!1}seedDockItems(e){let t=u(),n=!1;for(let r of e)this.#t.has(r)||(this.#r.add(r),this.#t.set(r,{id:m(r),icon:t[r]??`sparkles`,label:r,kind:`sprinkle`}),n=!0);n&&this.#p()}dropUnconfirmedSeeds(){let e=!1;for(let t of this.#r)this.#n.has(t)||(this.#t.delete(t),e=!0);this.#r.clear(),e&&this.#p()}callbacks(){return{addSprinkle:(e,t,n,r,i)=>this.#s(e,t,n,i),removeSprinkle:e=>this.#c(e,{keepDockItem:!1}),minimizeSprinkle:e=>this.#l(e),registerSprinkle:(e,t,n)=>this.#u(e,t,n?.icon),unregisterSprinkle:e=>this.#f(e),closeSprinkleContent:e=>this.#c(e,{keepDockItem:!0})}}updateDockIcon(e,t){let n=this.#t.get(e);!n||n.icon===t||(this.#t.set(e,{...n,icon:t}),this.#p())}defaultIconNames(){return[...this.#t.entries()].filter(([,e])=>e.icon===`sparkles`).map(([e])=>e)}isOpen(e){return this.#n.has(e)}#s(e,t,n,r){let i=m(e),a=this.#a.hostSprinkleSurface,o=this.#n.get(e),s=!o;if(o||(o=document.createElement(`slicc-surface`),o.setAttribute(`surface-id`,i),o.setAttribute(`layout`,`flex`),a||this.#e.dockTree?.append(o),this.#n.set(e,o)),o.replaceChildren(n),this.#u(e,t,r?.icon),this.#i.includes(e)||this.#i.push(e),a){s&&a(i,o);return}r?.attention||r?.background||this.placeSurface(y,i)}#c(e,t){let n=m(e);this.#n.get(e)?.remove(),this.#n.delete(e),t.keepDockItem||this.#t.delete(e);let r=this.#i.indexOf(e);if(r>=0&&this.#i.splice(r,1),this.#p(),this.#a.removeSprinkleSurface){this.#a.removeSprinkleSurface(n);return}this.#e.dockTree?.removeSurface(n)}#l(e){this.#e.dock.removeAttribute(`active`),!this.#a.hostSprinkleSurface&&this.removeSurface(m(e))}#u(e,t,n){this.#r.delete(e);let r=this.#d(e,n);this.#t.set(e,{id:m(e),icon:r,label:t,kind:`sprinkle`}),this.#p()}#d(e,t){return p(t)?t:u()[e]??`sparkles`}#f(e){this.#n.has(e)||(this.#t.delete(e),this.#p())}#p(){this.#e.dock.items=[...this.#t.values()]}};function S(e,t){return(n,r)=>{if(!(n.type!==`sprinkle`||!n.sprinkleName)&&!t?.(n)){if(r){e.sendSprinkleLick(n.sprinkleName,n.body,n.targetScoop,{unitJid:r});return}e.sendSprinkleLick(n.sprinkleName,n.body,n.targetScoop)}}}var C=180;function w(e){e.dock.addEventListener(`slicc-dock-longpress`,n=>{let r=n.detail?.id;if(!r||h(r)===null&&!b(r))return;let i=n=>{t(e.frame??e.dockTree,r)||n<=0||requestAnimationFrame(()=>i(n-1))};i(C)})}async function T(t){let{refs:c,client:l,fs:u,instanceId:f,onAttachImage:p,onToolPanelActivate:m,onToolPanelDeactivate:g,hostSprinkleSurface:_,removeSprinkleSurface:y,log:C}=t,T=new x(c,{onToolPanelActivate:m,onToolPanelDeactivate:g,hostSprinkleSurface:_,removeSprinkleSurface:y}),{loadSprinkleStyles:D}=await e(async()=>{let{loadSprinkleStyles:e}=await import(`./legacy-styles-B3nS5QUo.js`);return{loadSprinkleStyles:e}},__vite__mapDeps([0,1]));await D();let{SprinkleManager:O,readKnownSprinkleNames:k}=await e(async()=>{let{SprinkleManager:e,readKnownSprinkleNames:t}=await import(`./sprinkle-manager-DeJrE3Hq.js`);return{SprinkleManager:e,readKnownSprinkleNames:t}},__vite__mapDeps([2,3,4,1,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52]));T.seedDockItems(k());let{installSprinkleManagerHandlerOverChannel:A}=await e(async()=>{let{installSprinkleManagerHandlerOverChannel:e}=await import(`./sprinkle-bridge-channel-DTP5IbJB.js`);return{installSprinkleManagerHandlerOverChannel:e}},[]),{createSprinkleExecHandler:j}=await e(async()=>{let{createSprinkleExecHandler:e}=await import(`./setup-sprinkle-exec-BX_Qq-Su.js`);return{createSprinkleExecHandler:e}},__vite__mapDeps([53,1])),{setDipExecHandler:M}=await e(async()=>{let{setDipExecHandler:e}=await import(`./wc-live-CaopRwn0.js`).then(e=>e.V);return{setDipExecHandler:e}},__vite__mapDeps([54,6,11,12,13,14,1,15,16,17,18,3,19,8,20,21,22,23,24,25,26,27,28,5,7,9,10,29,30,31,32,33,34,35,36,37,4,38,39,40,41,42,43,44,45,55,56,57,48,46,47,49,58,59,60,61,62,63,64,65,66])),N=n(),P=j(l),F=t.selectScoop,I=new O(u,S(l,t.interceptWelcomeLick),T.callbacks(),()=>{let e=o(t.getUnits());e&&l.stopScoop(e.id)},{...N?{autoOpenBehavior:`attention`}:{},inlineSprinkles:new Set([`welcome`]),execHandler:P,onAttachImage:p??(()=>{}),resolveLickOriginUnitId:e=>s(t.getUnits(),e)?.id,selectedScoopHandler:()=>a(t.getUnits(),t.getSelected()?.id),...F?{selectScoopHandler:e=>i(t.getUnits(),e,t.getSelected()?.id,F)}:{}});if(window.__slicc_sprinkleManager=I,M(P),f!==void 0){let e=A(I,{instanceId:f});window.addEventListener(`beforeunload`,()=>e(),{once:!0})}else if(N){let{handleSprinkleOp:t}=await e(async()=>{let{handleSprinkleOp:e}=await import(`./sprinkle-op-handler-DyRlIvAg.js`);return{handleSprinkleOp:e}},[]);l.setSprinkleOpHandler(e=>{let{id:n,op:r,name:i,data:a,target:o,openOptions:s}=e;t(I,n,r,i,a,o,s)})}c.dock.addEventListener(`slicc-dock-select`,e=>{let n=e.detail?.id,i=h(n);if(i){let e=r(t.getUnits(),t.getSelected());(e?I.activate(i,void 0,{lickOriginTarget:e.folder}):I.activate(i)).catch(e=>C.error(`WC sprinkle activate failed`,e));return}n&&b(n)&&T.placeSurface(v,n)}),c.dock.addEventListener(`slicc-dock-collapse`,e=>{let t=e.detail?.id;if(!t)return;if(b(t)){T.removeSurface(t);return}let n=h(t);n&&I.minimize(n)}),w(c);let L=!1,R=async()=>{if(await I.refresh(),I.available().length>0){T.dropUnconfirmedSeeds();let t=I.available().map(e=>e.name),{pruneKnownSprinkleNames:n}=await e(async()=>{let{pruneKnownSprinkleNames:e}=await import(`./sprinkle-manager-DeJrE3Hq.js`);return{pruneKnownSprinkleNames:e}},__vite__mapDeps([2,3,4,1,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52]));n(t),d(t)}await I.restoreOpenSprinkles().catch(e=>{C.warn(`WC shell: failed to restore open sprinkles`,e)}),L||(L=!0,e(async()=>{let{pickLucideIcon:e}=await import(`./quick-llm-B8uh7EVu.js`).then(e=>e.n);return{pickLucideIcon:e}},__vite__mapDeps([67,6,12,13,14,1,15,16,17,3,10,11,18,19,8,20,21,22,23,24,25,26,27,28,29,30,31,32,68,36])).then(({pickLucideIcon:e})=>E(T,I.available(),t=>e({subject:t}))).catch(()=>void 0).finally(()=>{L=!1}))};return R().catch(e=>C.warn(`WC shell: initial sprinkle resync failed`,e)),{manager:I,zone:T,resync:R}}async function E(e,t,n){let r=new Set(e.defaultIconNames()),i=u();for(let a of t){if(!r.has(a.name)||p(a.icon))continue;let t=i[a.name];if(t){e.updateDockIcon(a.name,t);continue}let o=await n(`"${a.title}" — a SLICC sprinkle panel (${a.name})`);o&&(f(a.name,o),e.updateDockIcon(a.name,o))}}export{g as CHAT_SURFACE_ID,x as WcSprinkleZone,T as wireWcSprinkles};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/legacy-styles-B3nS5QUo.js","assets/preload-helper-Czpn1I53.js","assets/sprinkle-manager-CK0KfQ0E.js","assets/logger-DDBAeTLF.js","assets/sprinkle-renderer-C0-nYSNx.js","assets/wc-shell-Cn2tEDM7.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/mime-types-D0xZwlMO.js","assets/base64-ELzoYfwP.js","assets/bridge-protocol-C52CnDIj.js","assets/account-store-Bbb4tBjB.js","assets/core-zz8rWM4c.js","assets/compat-qQM4gjF_.js","assets/models-BSkXF4T6.js","assets/diagnostics-DN_idNHx.js","assets/provider-env-CTOcDKrQ.js","assets/__vite-browser-external-5eBdwsFd.js","assets/openrouter.models-B-zmcypy.js","assets/libesm-BypnjKEL.js","assets/proxied-fetch-W1rZTqEQ.js","assets/fetch-body-1l9I58Vk.js","assets/api-endpoint-DuEQRZ4g.js","assets/runtime-env-Dlaokqg1.js","assets/secret-topology-fyLSbV8r.js","assets/float-topology-U8FF9pgZ.js","assets/secrets-bridge-client-9RRVsrGm.js","assets/port-bridge-client-BYQawsDH.js","assets/image-markers-q8JQTtid.js","assets/tool-ui-eSQ1g2I1.js","assets/providers-2pihfuXe.js","assets/panel-rpc-B3MSVImO.js","assets/bedrock-camp-compat-BeCSBUrZ.js","assets/bedrock-camp-extra-models-WTCIjj5a.js","assets/claude-model-version-DZmbk9E2.js","assets/telemetry-CKoAhRMv.js","assets/types-D8gIX-W-.js","assets/same-file-identity-DuEcSmPX.js","assets/icons-jrIi5FYk.js","assets/wc-shell-WkeczD9x.css","assets/hid-device-registry-B2R-0rNt.js","assets/serial-port-registry-CCqklAEr.js","assets/hid-operations-C97SZtrY.js","assets/usb-device-registry--JwKRTYp.js","assets/usb-operations-v1mGAdRY.js","assets/shared-mBEktoxE.js","assets/theme-CwPIBqJE.js","assets/theme-engine-ZV7CeqWw.js","assets/main-B0cbvPwD.js","assets/modulepreload-polyfill-P2Xu9kJm.js","assets/tray-follower-status-BAjnN7Ar.js","assets/clipboard-eqmn97SP.js","assets/bounded-walk-BjxKWNqp.js","assets/path-utils-DNJG-zQf.js","assets/sprinkle-instances-B8n7h-oP.js","assets/setup-sprinkle-exec-BX_Qq-Su.js","assets/wc-live-Dq-_FAPU.js","assets/slugify-BYJ6QVAt.js","assets/transcript-export-DP-r8eDz.js","assets/session-jsonl-DRpBHMbZ.js","assets/src-BWaKqLvQ.js","assets/provider-budget-LCzMPlKv.js","assets/permissions-surface-registry-CilCRwhh.js","assets/browser-DGwroBSO.js","assets/tray-leader-DyfRH9_x.js","assets/record-CCQFJXn_.js","assets/descriptor-DzbI9z_9.js","assets/types-CFfBWsH5.js","assets/wc-unit-context-CS4hSDi7.js","assets/quick-llm-DcsNLbYv.js","assets/llm-session-id-bZQs6gBN.js"])))=>i.map(i=>d[i]);
2
+ import{t as e}from"./preload-helper-Czpn1I53.js";import{U as t}from"./wc-shell-Cn2tEDM7.js";import{n}from"./runtime-env-Dlaokqg1.js";import{a as r,o as i,s as a,t as o}from"./wc-unit-context-CS4hSDi7.js";function s(e,t){return e.find(e=>e.folder===t)??e.find(e=>e.folder===`${t}-scoop`)??e.find(e=>e.name===t)}var c=`sprinkle:`,l=`slicc-sprinkle-icons`;function u(){try{let e=localStorage.getItem(l);if(!e)return{};let t=JSON.parse(e);if(typeof t!=`object`||!t)return{};let n={};for(let[e,r]of Object.entries(t))typeof r==`string`&&(n[e]=r);return n}catch{return{}}}function d(e){try{let t=new Set(e),n=Object.fromEntries(Object.entries(u()).filter(([e])=>t.has(e)));localStorage.setItem(l,JSON.stringify(n))}catch{}}function f(e,t){try{localStorage.setItem(l,JSON.stringify({...u(),[e]:t}))}catch{}}function p(e){return typeof e==`string`&&/^[a-z0-9]+(-[a-z0-9]+)*$/.test(e)}function m(e){return`${c}${e}`}function h(e){return e?.startsWith(c)?e.slice(9):null}var g=`chat`,_=new Set([`files`,`term`,`memory`,`monitor`]),v=`right`,y=v;function b(e){return _.has(e)}var x=class{#e;#t=new Map;#n=new Map;#r=new Set;#i=[];#a;constructor(e,t={}){this.#e=e,this.#a=t}#o(){return this.#e.dockTree}applyLayout(e){let t=this.#o();t?.setTree(e);for(let e of this.#i)t?.placeSurface(m(e),y)}placeSurface(e,t){let n=this.#o();if(n&&!this.#a.hostSprinkleSurface)for(let e of n.getSurfaceIds())e!==t&&e!==`chat`&&this.removeSurface(e);if(n?.placeSurface(t,e),!this.#a.hostSprinkleSurface){let e=this.#e.dock;e&&(e.active=t)}b(t)&&this.#a.onToolPanelActivate?.(t)}moveSurfaceToZone(e,t){this.#o()?.moveSurfaceToZone(e,t)}removeSurface(e){this.#o()?.removeSurface(e),b(e)&&this.#a.onToolPanelDeactivate?.(e)}setSurfaceSize(e,t){return this.#o()?.setSurfaceSize(e,t)??!1}seedDockItems(e){let t=u(),n=!1;for(let r of e)this.#t.has(r)||(this.#r.add(r),this.#t.set(r,{id:m(r),icon:t[r]??`sparkles`,label:r,kind:`sprinkle`}),n=!0);n&&this.#p()}dropUnconfirmedSeeds(){let e=!1;for(let t of this.#r)this.#n.has(t)||(this.#t.delete(t),e=!0);this.#r.clear(),e&&this.#p()}callbacks(){return{addSprinkle:(e,t,n,r,i)=>this.#s(e,t,n,i),removeSprinkle:e=>this.#c(e,{keepDockItem:!1}),minimizeSprinkle:e=>this.#l(e),registerSprinkle:(e,t,n)=>this.#u(e,t,n?.icon),unregisterSprinkle:e=>this.#f(e),closeSprinkleContent:e=>this.#c(e,{keepDockItem:!0})}}updateDockIcon(e,t){let n=this.#t.get(e);!n||n.icon===t||(this.#t.set(e,{...n,icon:t}),this.#p())}defaultIconNames(){return[...this.#t.entries()].filter(([,e])=>e.icon===`sparkles`).map(([e])=>e)}isOpen(e){return this.#n.has(e)}#s(e,t,n,r){let i=m(e),a=this.#a.hostSprinkleSurface,o=this.#n.get(e),s=!o;if(o||(o=document.createElement(`slicc-surface`),o.setAttribute(`surface-id`,i),o.setAttribute(`layout`,`flex`),a||this.#e.dockTree?.append(o),this.#n.set(e,o)),o.replaceChildren(n),this.#u(e,t,r?.icon),this.#i.includes(e)||this.#i.push(e),a){s&&a(i,o);return}r?.attention||r?.background||this.placeSurface(y,i)}#c(e,t){let n=m(e);this.#n.get(e)?.remove(),this.#n.delete(e),t.keepDockItem||this.#t.delete(e);let r=this.#i.indexOf(e);if(r>=0&&this.#i.splice(r,1),this.#p(),this.#a.removeSprinkleSurface){this.#a.removeSprinkleSurface(n);return}this.#e.dockTree?.removeSurface(n)}#l(e){this.#e.dock.removeAttribute(`active`),!this.#a.hostSprinkleSurface&&this.removeSurface(m(e))}#u(e,t,n){this.#r.delete(e);let r=this.#d(e,n);this.#t.set(e,{id:m(e),icon:r,label:t,kind:`sprinkle`}),this.#p()}#d(e,t){return p(t)?t:u()[e]??`sparkles`}#f(e){this.#n.has(e)||(this.#t.delete(e),this.#p())}#p(){this.#e.dock.items=[...this.#t.values()]}};function S(e,t){return(n,r)=>{if(!(n.type!==`sprinkle`||!n.sprinkleName)&&!t?.(n)){if(r){e.sendSprinkleLick(n.sprinkleName,n.body,n.targetScoop,{unitJid:r});return}e.sendSprinkleLick(n.sprinkleName,n.body,n.targetScoop)}}}var C=180;function w(e){e.dock.addEventListener(`slicc-dock-longpress`,n=>{let r=n.detail?.id;if(!r||h(r)===null&&!b(r))return;let i=n=>{t(e.frame??e.dockTree,r)||n<=0||requestAnimationFrame(()=>i(n-1))};i(C)})}async function T(t){let{refs:c,client:l,fs:u,instanceId:f,onAttachImage:p,onToolPanelActivate:m,onToolPanelDeactivate:g,hostSprinkleSurface:_,removeSprinkleSurface:y,log:C}=t,T=new x(c,{onToolPanelActivate:m,onToolPanelDeactivate:g,hostSprinkleSurface:_,removeSprinkleSurface:y}),{loadSprinkleStyles:D}=await e(async()=>{let{loadSprinkleStyles:e}=await import(`./legacy-styles-B3nS5QUo.js`);return{loadSprinkleStyles:e}},__vite__mapDeps([0,1]));await D();let{SprinkleManager:O,readKnownSprinkleNames:k}=await e(async()=>{let{SprinkleManager:e,readKnownSprinkleNames:t}=await import(`./sprinkle-manager-CK0KfQ0E.js`);return{SprinkleManager:e,readKnownSprinkleNames:t}},__vite__mapDeps([2,3,4,1,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53]));T.seedDockItems(k());let{installSprinkleManagerHandlerOverChannel:A}=await e(async()=>{let{installSprinkleManagerHandlerOverChannel:e}=await import(`./sprinkle-bridge-channel-DTP5IbJB.js`);return{installSprinkleManagerHandlerOverChannel:e}},[]),{createSprinkleExecHandler:j}=await e(async()=>{let{createSprinkleExecHandler:e}=await import(`./setup-sprinkle-exec-BX_Qq-Su.js`);return{createSprinkleExecHandler:e}},__vite__mapDeps([54,1])),{setDipExecHandler:M}=await e(async()=>{let{setDipExecHandler:e}=await import(`./wc-live-Dq-_FAPU.js`).then(e=>e.V);return{setDipExecHandler:e}},__vite__mapDeps([55,6,11,12,13,14,1,15,16,17,18,3,19,8,20,21,22,23,24,25,26,27,28,5,7,9,10,29,30,31,32,33,34,35,36,37,38,4,39,40,41,42,43,44,45,46,56,57,58,49,47,48,50,59,60,61,62,63,64,65,66,67])),N=n(),P=j(l),F=t.selectScoop,I=new O(u,S(l,t.interceptWelcomeLick),T.callbacks(),()=>{let e=o(t.getUnits());e&&l.stopScoop(e.id)},{...N?{autoOpenBehavior:`attention`}:{},inlineSprinkles:new Set([`welcome`]),execHandler:P,onAttachImage:p??(()=>{}),resolveLickOriginUnitId:e=>s(t.getUnits(),e)?.id,selectedScoopHandler:()=>a(t.getUnits(),t.getSelected()?.id),...F?{selectScoopHandler:e=>i(t.getUnits(),e,t.getSelected()?.id,F)}:{}});if(window.__slicc_sprinkleManager=I,M(P),f!==void 0){let e=A(I,{instanceId:f});window.addEventListener(`beforeunload`,()=>e(),{once:!0})}else if(N){let{handleSprinkleOp:t}=await e(async()=>{let{handleSprinkleOp:e}=await import(`./sprinkle-op-handler-DyRlIvAg.js`);return{handleSprinkleOp:e}},[]);l.setSprinkleOpHandler(e=>{let{id:n,op:r,name:i,data:a,target:o,openOptions:s}=e;t(I,n,r,i,a,o,s)})}c.dock.addEventListener(`slicc-dock-select`,e=>{let n=e.detail?.id,i=h(n);if(i){let e=r(t.getUnits(),t.getSelected());(e?I.activate(i,void 0,{lickOriginTarget:e.folder}):I.activate(i)).catch(e=>C.error(`WC sprinkle activate failed`,e));return}n&&b(n)&&T.placeSurface(v,n)}),c.dock.addEventListener(`slicc-dock-collapse`,e=>{let t=e.detail?.id;if(!t)return;if(b(t)){T.removeSurface(t);return}let n=h(t);n&&I.minimize(n)}),w(c);let L=!1,R=async()=>{if(await I.refresh(),I.available().length>0){T.dropUnconfirmedSeeds();let t=I.available().map(e=>e.name),{pruneKnownSprinkleNames:n}=await e(async()=>{let{pruneKnownSprinkleNames:e}=await import(`./sprinkle-manager-CK0KfQ0E.js`);return{pruneKnownSprinkleNames:e}},__vite__mapDeps([2,3,4,1,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53]));n(t),d(t)}await I.restoreOpenSprinkles().catch(e=>{C.warn(`WC shell: failed to restore open sprinkles`,e)}),L||(L=!0,e(async()=>{let{pickLucideIcon:e}=await import(`./quick-llm-DcsNLbYv.js`).then(e=>e.n);return{pickLucideIcon:e}},__vite__mapDeps([68,6,12,13,14,1,15,16,17,3,10,11,18,19,8,20,21,22,23,24,25,26,27,28,29,30,31,32,33,69,37])).then(({pickLucideIcon:e})=>E(T,I.available(),t=>e({subject:t}))).catch(()=>void 0).finally(()=>{L=!1}))};return R().catch(e=>C.warn(`WC shell: initial sprinkle resync failed`,e)),{manager:I,zone:T,resync:R}}async function E(e,t,n){let r=new Set(e.defaultIconNames()),i=u();for(let a of t){if(!r.has(a.name)||p(a.icon))continue;let t=i[a.name];if(t){e.updateDockIcon(a.name,t);continue}let o=await n(`"${a.title}" — a SLICC sprinkle panel (${a.name})`);o&&(f(a.name,o),e.updateDockIcon(a.name,o))}}export{g as CHAT_SURFACE_ID,x as WcSprinkleZone,T as wireWcSprinkles};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/wc-live-CaopRwn0.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/core-zz8rWM4c.js","assets/compat-qQM4gjF_.js","assets/models-BSkXF4T6.js","assets/diagnostics-DN_idNHx.js","assets/preload-helper-Czpn1I53.js","assets/provider-env-CTOcDKrQ.js","assets/__vite-browser-external-5eBdwsFd.js","assets/openrouter.models-B-zmcypy.js","assets/libesm-BypnjKEL.js","assets/logger-DDBAeTLF.js","assets/proxied-fetch-W1rZTqEQ.js","assets/base64-ELzoYfwP.js","assets/fetch-body-1l9I58Vk.js","assets/api-endpoint-DuEQRZ4g.js","assets/runtime-env-Dlaokqg1.js","assets/secret-topology-fyLSbV8r.js","assets/float-topology-U8FF9pgZ.js","assets/secrets-bridge-client-9RRVsrGm.js","assets/port-bridge-client-BYQawsDH.js","assets/image-markers-q8JQTtid.js","assets/tool-ui-eSQ1g2I1.js","assets/wc-shell-CrMn8BW0.js","assets/mime-types-D0xZwlMO.js","assets/bridge-protocol-C52CnDIj.js","assets/account-store-SI8RQbm0.js","assets/providers-B9p2VR5L.js","assets/panel-rpc-B3MSVImO.js","assets/bedrock-camp-compat-BeCSBUrZ.js","assets/claude-model-version-DZmbk9E2.js","assets/telemetry-CKoAhRMv.js","assets/types-D8gIX-W-.js","assets/same-file-identity-DuEcSmPX.js","assets/icons-jrIi5FYk.js","assets/wc-shell-WkeczD9x.css","assets/sprinkle-renderer-DYUy10CO.js","assets/hid-device-registry-B2R-0rNt.js","assets/serial-port-registry-CCqklAEr.js","assets/hid-operations-C97SZtrY.js","assets/usb-device-registry--JwKRTYp.js","assets/usb-operations-v1mGAdRY.js","assets/shared-mBEktoxE.js","assets/theme-CwPIBqJE.js","assets/theme-engine-ZV7CeqWw.js","assets/slugify-BYJ6QVAt.js","assets/transcript-export-DP-r8eDz.js","assets/session-jsonl-lB9-7rZS.js","assets/tray-follower-status-BAjnN7Ar.js","assets/main-DFTTAllP.js","assets/modulepreload-polyfill-P2Xu9kJm.js","assets/clipboard-eqmn97SP.js","assets/src-BWaKqLvQ.js","assets/provider-budget-LCzMPlKv.js","assets/permissions-surface-registry-CilCRwhh.js","assets/browser-DGwroBSO.js","assets/tray-leader-Bd293BI8.js","assets/record-CCQFJXn_.js","assets/descriptor-DzbI9z_9.js","assets/types-CFfBWsH5.js","assets/wc-unit-context-CS4hSDi7.js"])))=>i.map(i=>d[i]);
2
- import{t as e}from"./preload-helper-Czpn1I53.js";import{n as t}from"./transcript-export-DP-r8eDz.js";import{t as n}from"./export-spool-CuNzzI8a.js";async function r(e){let t=n(`local-${crypto.randomUUID()}`);try{let n=0;for await(let r of e.chunks)await t.append(r,n++);let r=await e.completion;return await t.finalize(n,r.byteLength,r.sha256)}catch(e){throw await t.cancel(),e}}async function i(e,t){let n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=t,r.setAttribute(`data-transcript-dl`,``),r.style.display=`none`,document.body.appendChild(r);try{r.click()}finally{r.remove(),URL.revokeObjectURL(n)}}function a(e){return e instanceof t?e.detail?`${e.code}: ${e.detail}`:e.code:e instanceof Error&&e.message?e.message:`unknown error`}function o(e){if(typeof document>`u`||!customElements.get(`slicc-dialog`))return;let t=document.createElement(`slicc-dialog`);t.setAttribute(`heading`,`Export failed`);let n=document.createElement(`p`);n.style.cssText=`margin:0;padding:0.25rem 0;font-size:0.9375rem;line-height:1.5;`,n.textContent=`No transcript was written — ${a(e)}.`,t.append(n);let r=document.createElement(`button`);r.setAttribute(`slot`,`footer`),r.type=`button`,r.dataset.transcriptExportAction=`close`,r.textContent=`Close`,r.addEventListener(`click`,()=>t.remove()),t.append(r),t.addEventListener(`slicc-dialog-close`,()=>t.remove()),document.body.appendChild(t),t.show?.()}async function s(t,n,r){let{getTranscriptExportService:i}=await e(async()=>{let{getTranscriptExportService:e}=await import(`./wc-live-CaopRwn0.js`).then(e=>e.H);return{getTranscriptExportService:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60])),a=i(),o=t.kind===`frozen`?{kind:`frozen`,sessionId:t.sessionId}:{kind:`active`};return a.export(o,{signal:n})}export{i as downloadTranscriptBlob,s as runTranscriptExportForFollower,o as showTranscriptExportFailure,r as transcriptZipToBlob};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/wc-live-Dq-_FAPU.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/core-zz8rWM4c.js","assets/compat-qQM4gjF_.js","assets/models-BSkXF4T6.js","assets/diagnostics-DN_idNHx.js","assets/preload-helper-Czpn1I53.js","assets/provider-env-CTOcDKrQ.js","assets/__vite-browser-external-5eBdwsFd.js","assets/openrouter.models-B-zmcypy.js","assets/libesm-BypnjKEL.js","assets/logger-DDBAeTLF.js","assets/proxied-fetch-W1rZTqEQ.js","assets/base64-ELzoYfwP.js","assets/fetch-body-1l9I58Vk.js","assets/api-endpoint-DuEQRZ4g.js","assets/runtime-env-Dlaokqg1.js","assets/secret-topology-fyLSbV8r.js","assets/float-topology-U8FF9pgZ.js","assets/secrets-bridge-client-9RRVsrGm.js","assets/port-bridge-client-BYQawsDH.js","assets/image-markers-q8JQTtid.js","assets/tool-ui-eSQ1g2I1.js","assets/wc-shell-Cn2tEDM7.js","assets/mime-types-D0xZwlMO.js","assets/bridge-protocol-C52CnDIj.js","assets/account-store-Bbb4tBjB.js","assets/providers-2pihfuXe.js","assets/panel-rpc-B3MSVImO.js","assets/bedrock-camp-compat-BeCSBUrZ.js","assets/bedrock-camp-extra-models-WTCIjj5a.js","assets/claude-model-version-DZmbk9E2.js","assets/telemetry-CKoAhRMv.js","assets/types-D8gIX-W-.js","assets/same-file-identity-DuEcSmPX.js","assets/icons-jrIi5FYk.js","assets/wc-shell-WkeczD9x.css","assets/sprinkle-renderer-C0-nYSNx.js","assets/hid-device-registry-B2R-0rNt.js","assets/serial-port-registry-CCqklAEr.js","assets/hid-operations-C97SZtrY.js","assets/usb-device-registry--JwKRTYp.js","assets/usb-operations-v1mGAdRY.js","assets/shared-mBEktoxE.js","assets/theme-CwPIBqJE.js","assets/theme-engine-ZV7CeqWw.js","assets/slugify-BYJ6QVAt.js","assets/transcript-export-DP-r8eDz.js","assets/session-jsonl-DRpBHMbZ.js","assets/tray-follower-status-BAjnN7Ar.js","assets/main-B0cbvPwD.js","assets/modulepreload-polyfill-P2Xu9kJm.js","assets/clipboard-eqmn97SP.js","assets/src-BWaKqLvQ.js","assets/provider-budget-LCzMPlKv.js","assets/permissions-surface-registry-CilCRwhh.js","assets/browser-DGwroBSO.js","assets/tray-leader-DyfRH9_x.js","assets/record-CCQFJXn_.js","assets/descriptor-DzbI9z_9.js","assets/types-CFfBWsH5.js","assets/wc-unit-context-CS4hSDi7.js"])))=>i.map(i=>d[i]);
2
+ import{t as e}from"./preload-helper-Czpn1I53.js";import{n as t}from"./transcript-export-DP-r8eDz.js";import{t as n}from"./export-spool-CuNzzI8a.js";async function r(e){let t=n(`local-${crypto.randomUUID()}`);try{let n=0;for await(let r of e.chunks)await t.append(r,n++);let r=await e.completion;return await t.finalize(n,r.byteLength,r.sha256)}catch(e){throw await t.cancel(),e}}async function i(e,t){let n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=t,r.setAttribute(`data-transcript-dl`,``),r.style.display=`none`,document.body.appendChild(r);try{r.click()}finally{r.remove(),URL.revokeObjectURL(n)}}function a(e){return e instanceof t?e.detail?`${e.code}: ${e.detail}`:e.code:e instanceof Error&&e.message?e.message:`unknown error`}function o(e){if(typeof document>`u`||!customElements.get(`slicc-dialog`))return;let t=document.createElement(`slicc-dialog`);t.setAttribute(`heading`,`Export failed`);let n=document.createElement(`p`);n.style.cssText=`margin:0;padding:0.25rem 0;font-size:0.9375rem;line-height:1.5;`,n.textContent=`No transcript was written — ${a(e)}.`,t.append(n);let r=document.createElement(`button`);r.setAttribute(`slot`,`footer`),r.type=`button`,r.dataset.transcriptExportAction=`close`,r.textContent=`Close`,r.addEventListener(`click`,()=>t.remove()),t.append(r),t.addEventListener(`slicc-dialog-close`,()=>t.remove()),document.body.appendChild(t),t.show?.()}async function s(t,n,r){let{getTranscriptExportService:i}=await e(async()=>{let{getTranscriptExportService:e}=await import(`./wc-live-Dq-_FAPU.js`).then(e=>e.H);return{getTranscriptExportService:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61])),a=i(),o=t.kind===`frozen`?{kind:`frozen`,sessionId:t.sessionId}:{kind:`active`};return a.export(o,{signal:n})}export{i as downloadTranscriptBlob,s as runTranscriptExportForFollower,o as showTranscriptExportFailure,r as transcriptZipToBlob};