sliccy 6.87.3 → 6.89.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 (343) hide show
  1. package/README.md +1 -1
  2. package/dist/node-server/hostfs.d.ts +58 -0
  3. package/dist/node-server/hostfs.js +257 -0
  4. package/dist/node-server/index.js +10 -0
  5. package/dist/node-server/runtime-flags.d.ts +22 -0
  6. package/dist/node-server/runtime-flags.js +78 -2
  7. package/dist/ui/.vite/manifest.json +540 -449
  8. package/dist/ui/assets/CLAUDE-4LHXSyPA.js +1 -0
  9. package/dist/ui/assets/CLAUDE-Bio4HPGK.js +1 -0
  10. package/dist/ui/assets/MEMORY-6FXnIBfJ.js +135 -0
  11. package/dist/ui/assets/SKILL-BKUxKc7f.js +296 -0
  12. package/dist/ui/assets/SKILL-BKyxMoME.js +1 -0
  13. package/dist/ui/assets/SKILL-BcELX5TL.js +1 -0
  14. package/dist/ui/assets/SKILL-Bd5ykLEh.js +1 -0
  15. package/dist/ui/assets/SKILL-Bt-RhG0L.js +1 -0
  16. package/dist/ui/assets/SKILL-CED8RXQP.js +69 -0
  17. package/dist/ui/assets/SKILL-CNdAIhbb.js +1 -0
  18. package/dist/ui/assets/SKILL-CcMg6eqt.js +1 -0
  19. package/dist/ui/assets/SKILL-Ch-cOl61.js +1 -0
  20. package/dist/ui/assets/SKILL-CkfptFag.js +132 -0
  21. package/dist/ui/assets/SKILL-Ckg2XbSL.js +114 -0
  22. package/dist/ui/assets/SKILL-D40-t9w0.js +57 -0
  23. package/dist/ui/assets/SKILL-D4YtbN6n.js +1 -0
  24. package/dist/ui/assets/SKILL-DFKKFkzD.js +96 -0
  25. package/dist/ui/assets/SKILL-DJ815vTN.js +62 -0
  26. package/dist/ui/assets/SKILL-DLXzwsY4.js +1 -0
  27. package/dist/ui/assets/SKILL-DXIigmDy.js +35 -0
  28. package/dist/ui/assets/SKILL-DfSluXpV.js +385 -0
  29. package/dist/ui/assets/SKILL-DhKtVqb-.js +1 -0
  30. package/dist/ui/assets/SKILL-FnBxPcDX.js +1 -0
  31. package/dist/ui/assets/SKILL-HEHb9hIB.js +1 -0
  32. package/dist/ui/assets/SKILL-oOIS8LAm.js +1 -0
  33. package/dist/ui/assets/{account-store-DysucxMw.js → account-store-Bo-yhxpr.js} +4 -4
  34. package/dist/ui/assets/{account-store-Cy3TJKnu.js → account-store-CYz2dZdk.js} +2 -2
  35. package/dist/ui/assets/adobe-BABx4YQD.js +1 -0
  36. package/dist/ui/assets/adobe-DFu35kBc.js +2 -0
  37. package/dist/ui/assets/{angular-html-Cm4-xod0.js → angular-html-aPuBvESs.js} +1 -1
  38. package/dist/ui/assets/{angular-ts-Dopuir71.js → angular-ts-ocjSXnvf.js} +1 -1
  39. package/dist/ui/assets/anthropic-messages-CpSojOI8.js +39 -0
  40. package/dist/ui/assets/anthropic-messages-DbPJ2ji9.js +39 -0
  41. package/dist/ui/assets/api-endpoint-C00IT5T9.js +1 -0
  42. package/dist/ui/assets/api-endpoint-GRCyib6X.js +1 -0
  43. package/dist/ui/assets/{apply-layout-TIXzvNTN.js → apply-layout-DtjqLMjP.js} +1 -1
  44. package/dist/ui/assets/{apps-e--FORGt.js → apps-CvbmIZii.js} +1 -1
  45. package/dist/ui/assets/{astro-E_b8esPp.js → astro-go1PgQEf.js} +1 -1
  46. package/dist/ui/assets/auto-mount-table-CdyPAwVL.js +1 -0
  47. package/dist/ui/assets/{azure-openai-mDyNL8OK.js → azure-openai-C47c28Th.js} +2 -2
  48. package/dist/ui/assets/{azure-openai-C5josrBb.js → azure-openai-Dn30Odmd.js} +2 -2
  49. package/dist/ui/assets/azure-openai-responses-BcoOaRCx.js +1 -0
  50. package/dist/ui/assets/azure-openai-responses-DUMDrZ29.js +1 -0
  51. package/dist/ui/assets/backend-hostfs-Com-zF5W.js +1 -0
  52. package/dist/ui/assets/backend-hostfs-bQQx-S0W.js +1 -0
  53. package/dist/ui/assets/bedrock-camp-BcJEC3Pg.js +1 -0
  54. package/dist/ui/assets/bedrock-camp-LeceEQbU.js +1 -0
  55. package/dist/ui/assets/bedrock-camp-compat-CYnC9BQI.js +1 -0
  56. package/dist/ui/assets/bedrock-camp-compat-CgBMwna8.js +1 -0
  57. package/dist/ui/assets/{blade-mj2TcBTp.js → blade-DPPr6MF0.js} +1 -1
  58. package/dist/ui/assets/catppuccin-frappe-C9Q5zVZY.js +1 -0
  59. package/dist/ui/assets/catppuccin-latte-CtsyrtPq.js +1 -0
  60. package/dist/ui/assets/catppuccin-macchiato-R8nAf1vR.js +1 -0
  61. package/dist/ui/assets/catppuccin-mocha-DjuaAJKi.js +1 -0
  62. package/dist/ui/assets/cerebras-B2bBHcWG.js +1 -0
  63. package/dist/ui/assets/cerebras-DWI7o4tY.js +1 -0
  64. package/dist/ui/assets/chime-CPc6qSh5.js +1 -0
  65. package/dist/ui/assets/claude-model-version-Csn7RPVg.js +1 -0
  66. package/dist/ui/assets/claude-model-version-DoVrYsKi.js +2 -0
  67. package/dist/ui/assets/{client-BTUV7dbh.js → client-DVC0x03n.js} +1 -1
  68. package/dist/ui/assets/{composer-speech-SNeD5SER.js → composer-speech-Cy4g3lh3.js} +1 -1
  69. package/dist/ui/assets/connect-llm-FevTa-aV.js +561 -0
  70. package/dist/ui/assets/{connect-surface-DqU2NC2c.js → connect-surface-Dd462OJJ.js} +1 -1
  71. package/dist/ui/assets/cpp-Ct9pQPqT.js +1 -0
  72. package/dist/ui/assets/{css-vJJohHMc.js → css-DlBQoFxe.js} +1 -1
  73. package/dist/ui/assets/db-DSIYsBgP.js +1 -0
  74. package/dist/ui/assets/db-cKsBsMMN.js +1 -0
  75. package/dist/ui/assets/discovery-preference-__0HPYJC.js +1 -0
  76. package/dist/ui/assets/dist-B4LJzMVB.js +1547 -0
  77. package/dist/ui/assets/{ensure-speech-assets-DvFwJX-M.js → ensure-speech-assets-CKwQ54O1.js} +1 -1
  78. package/dist/ui/assets/float-topology-DiK91BlA.js +1 -0
  79. package/dist/ui/assets/{follower-navigate-watcher-CNC7ybEv.js → follower-navigate-watcher-Dz-52eZY.js} +1 -1
  80. package/dist/ui/assets/fs-BHEdp-e-.js +1 -0
  81. package/dist/ui/assets/fs-MCOH5KUJ.js +2 -0
  82. package/dist/ui/assets/github-BbQO4O_c.js +2 -0
  83. package/dist/ui/assets/github-C-f5ThxJ.js +1 -0
  84. package/dist/ui/assets/github-copilot-DXrDbEzB.js +1 -0
  85. package/dist/ui/assets/github-copilot-Du-Z6Dmn.js +2 -0
  86. package/dist/ui/assets/{github-install-CFJLPySf.js → github-install-DbrQX7SM.js} +1 -1
  87. package/dist/ui/assets/{github-zip-C7dhlRG8.js → github-zip-BRYnSLKK.js} +1 -1
  88. package/dist/ui/assets/{go-BJwz_mda.js → go-rLFTqkRN.js} +1 -1
  89. package/dist/ui/assets/google-generative-ai-Dxo91M3n.js +1 -0
  90. package/dist/ui/assets/google-generative-ai-Rjh7hNBV.js +1 -0
  91. package/dist/ui/assets/{google-shared-BMJ_JErv.js → google-shared-CzJgTu-P.js} +3 -3
  92. package/dist/ui/assets/{google-shared-YqcyR4cm.js → google-shared-DQJPCU3d.js} +3 -3
  93. package/dist/ui/assets/google-vertex-61Jj0dk6.js +1 -0
  94. package/dist/ui/assets/google-vertex-DEwkNZJm.js +1 -0
  95. package/dist/ui/assets/{haml-DboNpPfQ.js → haml-Bqgi1Cau.js} +1 -1
  96. package/dist/ui/assets/{handlebars-Bv_jLwHk.js → handlebars-JgcNzdBj.js} +1 -1
  97. package/dist/ui/assets/{hear-D33CHppO.js → hear-BqNAK8-P.js} +1 -1
  98. package/dist/ui/assets/{horizon-bright-Br1oVSNq.js → horizon-bright-DSNQnXHK.js} +1 -1
  99. package/dist/ui/assets/host-command-zx0pt9Np.js +1 -0
  100. package/dist/ui/assets/{html-BLkwJ0Yd.js → html-BsvMqTlf.js} +1 -1
  101. package/dist/ui/assets/{html-derivative-B3p5VrMH.js → html-derivative-D9FvRNj4.js} +1 -1
  102. package/dist/ui/assets/icon-example-LUkiEXyS.js +111 -0
  103. package/dist/ui/assets/{jinja-BeFOxtqS.js → jinja-CixBDh_U.js} +1 -1
  104. package/dist/ui/assets/{js-realm-worker-BcijiBMH.js → js-realm-worker-BZhHEqbx.js} +1 -1
  105. package/dist/ui/assets/jsh-runtime-extensions-DpVq60Gw.js +1 -0
  106. package/dist/ui/assets/julia-B5NbrcUp.js +1 -0
  107. package/dist/ui/assets/kanagawa-dragon-Bozd7klA.js +1 -0
  108. package/dist/ui/assets/kanagawa-lotus-BmuOG9ZW.js +1 -0
  109. package/dist/ui/assets/kanagawa-wave-BML5mF2J.js +1 -0
  110. package/dist/ui/assets/kernel-worker-CwFqaikq.js +5233 -0
  111. package/dist/ui/assets/legacy-api-aliases-BnRqMAef.js +1 -0
  112. package/dist/ui/assets/legacy-api-aliases-oJPAvhVV.js +1 -0
  113. package/dist/ui/assets/{lick-manager-BJhAu_iX.js → lick-manager-DFmMezV-.js} +1 -1
  114. package/dist/ui/assets/{lick-urls-AW0BSaf4.js → lick-urls-DcXOqXGm.js} +1 -1
  115. package/dist/ui/assets/{lick-ws-bridge-DiPcVRfN.js → lick-ws-bridge-CnkYvHKI.js} +1 -1
  116. package/dist/ui/assets/{lick-ws-bridge-CWRES2H2.js → lick-ws-bridge-yklVm5en.js} +1 -1
  117. package/dist/ui/assets/{local-llm-DVCKFUl_.js → local-llm-D4MgnlBK.js} +1 -1
  118. package/dist/ui/assets/{local-llm-CQE3URQQ.js → local-llm-HluX94rS.js} +1 -1
  119. package/dist/ui/assets/{main-DQS8QHXU.js → main-BmpPeikS.js} +3 -3
  120. package/dist/ui/assets/{marko-C3klgjEa.js → marko-DYWPPmCl.js} +1 -1
  121. package/dist/ui/assets/mdc-Cno1UUUH.js +1 -0
  122. package/dist/ui/assets/mistral-conversations-BtaPxrK1.js +4 -0
  123. package/dist/ui/assets/mistral-conversations-CDLVw-9i.js +4 -0
  124. package/dist/ui/assets/{transform-messages-DEFauvrq.js → models-4WTk3EBD.js} +1 -1
  125. package/dist/ui/assets/{transform-messages-N_eMsP2M.js → models-BSkXF4T6.js} +1 -1
  126. package/dist/ui/assets/monokai-B_bV9PQ9.js +1 -0
  127. package/dist/ui/assets/mount-B_Yysj_W.js +2 -0
  128. package/dist/ui/assets/{mount-bridge-client-4blXuJO1.js → mount-bridge-client-DZE6sHdr.js} +1 -1
  129. package/dist/ui/assets/mount-kkSADJkJ.js +1 -0
  130. package/dist/ui/assets/mount-recovery-xQgEe0_O.js +2 -0
  131. package/dist/ui/assets/new-session-CEfChDqS.js +2 -0
  132. package/dist/ui/assets/oauth-bootstrap-C9bBExq6.js +2 -0
  133. package/dist/ui/assets/oauth-service-CTntqv0R.js +1 -0
  134. package/dist/ui/assets/oauth-service-Uk8UIb05.js +1 -0
  135. package/dist/ui/assets/{onboarding-orchestrator-CaLdds3m.js → onboarding-orchestrator-CnKr0yBW.js} +1 -1
  136. package/dist/ui/assets/openai-codex-Cs4FnQBb.js +1 -0
  137. package/dist/ui/assets/openai-codex-QVbVkjdj.js +1 -0
  138. package/dist/ui/assets/openai-codex-responses-CPOJeFUY.js +7 -0
  139. package/dist/ui/assets/openai-codex-responses-jQR19NyX.js +7 -0
  140. package/dist/ui/assets/openai-completions-DGOcowq8.js +5 -0
  141. package/dist/ui/assets/openai-completions-DGZFJo5D.js +5 -0
  142. package/dist/ui/assets/openai-responses-CDTdSIhv.js +1 -0
  143. package/dist/ui/assets/openai-responses-bnETPgx9.js +1 -0
  144. package/dist/ui/assets/{openai-responses-shared-DxcsuzHF.js → openai-responses-shared-ChgvRZ74.js} +5 -5
  145. package/dist/ui/assets/{openai-responses-shared-DhnqxYC9.js → openai-responses-shared-DqJbHrek.js} +5 -5
  146. package/dist/ui/assets/openrouter-CKoiUQKB.js +1 -0
  147. package/dist/ui/assets/openrouter-D1wpkLTj.js +1 -0
  148. package/dist/ui/assets/{openrouter-oauth-Dy4Qqt06.js → openrouter-oauth-Df_lWai3.js} +1 -1
  149. package/dist/ui/assets/{openrouter-oauth-DvOb1QMV.js → openrouter-oauth-jvPojBWW.js} +1 -1
  150. package/dist/ui/assets/{page-approval-service-Bbc3_KdK.js → page-approval-service-BsXoPdFJ.js} +1 -1
  151. package/dist/ui/assets/panel-rpc-handlers-Dwk2fvsL.js +2 -0
  152. package/dist/ui/assets/{panelize-shell-BRldzPxv.js → panelize-shell-DG3fFAS4.js} +1 -1
  153. package/dist/ui/assets/patterns-ChiGbijt.js +171 -0
  154. package/dist/ui/assets/php-m5Ug_San.js +1 -0
  155. package/dist/ui/assets/port-bridge-client-BhmNRlRv.js +2 -0
  156. package/dist/ui/assets/port-bridge-client-Bz2N1tvn.js +1 -0
  157. package/dist/ui/assets/{provider-D2RXncrR.js → provider-Dq-ruSoi.js} +2 -2
  158. package/dist/ui/assets/{provider-Bk24TjUg.js → provider-Y9RlYumW.js} +1 -1
  159. package/dist/ui/assets/{provider-settings-B5B0NtAl.js → provider-settings-CR96H2hU.js} +1 -1
  160. package/dist/ui/assets/provider-settings-DNJS-V3F.js +2 -0
  161. package/dist/ui/assets/{provider-store-access-Cl5aZRx7.js → provider-store-access-BIdOJknd.js} +2 -2
  162. package/dist/ui/assets/provider-store-access-HarlSCPD.js +1 -0
  163. package/dist/ui/assets/providers-BS5_Cp-0.js +2 -0
  164. package/dist/ui/assets/providers-DRiRdLO1.js +1 -0
  165. package/dist/ui/assets/proxied-fetch-BGeNrvQ4.js +2 -0
  166. package/dist/ui/assets/proxied-fetch-Co-pb0x0.js +1 -0
  167. package/dist/ui/assets/{pug-BPcX_o8k.js → pug-B4bk2kWf.js} +1 -1
  168. package/dist/ui/assets/quick-llm-9w6VrHaQ.js +1 -0
  169. package/dist/ui/assets/r-C5FwQflr.js +1 -0
  170. package/dist/ui/assets/record-Cy655bTh.js +1 -0
  171. package/dist/ui/assets/{recovery-screen-MHXsY2RD.js → recovery-screen-ClVBOtr7.js} +1 -1
  172. package/dist/ui/assets/red-DX1BQOs8.js +1 -0
  173. package/dist/ui/assets/{redirect-uri-B1SxiY-b.js → redirect-uri-B16gkDfI.js} +1 -1
  174. package/dist/ui/assets/{remote-terminal-view-Dc-DMywu.js → remote-terminal-view-DSUnPeXp.js} +1 -1
  175. package/dist/ui/assets/rose-pine-aMsaMD1D.js +1 -0
  176. package/dist/ui/assets/rose-pine-dawn-8PwUyIlP.js +1 -0
  177. package/dist/ui/assets/rose-pine-moon-DO-qXg-I.js +1 -0
  178. package/dist/ui/assets/{scss-0nEf0IT-.js → scss-BaZL6t2Y.js} +1 -1
  179. package/dist/ui/assets/secret-env-CjwX7z7b.js +1 -0
  180. package/dist/ui/assets/secret-topology-0AWfFTh5.js +1 -0
  181. package/dist/ui/assets/{secrets-bridge-client-cWDAnFqs.js → secrets-bridge-client-DCQ44RyR.js} +1 -1
  182. package/dist/ui/assets/{session-freezer-CnFBCb6j.js → session-freezer-BcGQ4XGx.js} +3 -3
  183. package/dist/ui/assets/{setup-feature-flags-remote-Dlcwmn-_.js → setup-feature-flags-remote-8Rvw554i.js} +1 -1
  184. package/dist/ui/assets/setup-standalone-prelude-NNpe-m64.js +2 -0
  185. package/dist/ui/assets/setup-sudo-CbAhwltm.js +2 -0
  186. package/dist/ui/assets/{skills-C90t15zW.js → skills-CDnSEmr6.js} +1 -1
  187. package/dist/ui/assets/{slicc-diff-DsGtkf0J.js → slicc-diff-DhGIKKqP.js} +1 -1
  188. package/dist/ui/assets/slicc-version-2zGA6xjX.js +1 -0
  189. package/dist/ui/assets/smithy-Dgaz7aur.js +1 -0
  190. package/dist/ui/assets/solarized-dark-UdsmMDCL.js +1 -0
  191. package/dist/ui/assets/solarized-light-C1IUL_tW.js +1 -0
  192. package/dist/ui/assets/{speak-BDT9rGzg.js → speak-BSK3Souh.js} +1 -1
  193. package/dist/ui/assets/{sql-69VAgb2g.js → sql-DvarVTMJ.js} +1 -1
  194. package/dist/ui/assets/{src-DsDPrXOS.js → src-DXdqCrdV.js} +2 -2
  195. package/dist/ui/assets/{store-BmhLnay6.js → store-BKV5dm_L.js} +1 -1
  196. package/dist/ui/assets/{store-Cvg04_Rz.js → store-Bl3OB-Qs.js} +1 -1
  197. package/dist/ui/assets/style-guide-Bgzsk7bf.js +821 -0
  198. package/dist/ui/assets/{sudo-DYhM4jWf.js → sudo-Bnq6X0me.js} +2 -2
  199. package/dist/ui/assets/{svelte-B4PVQJ-7.js → svelte-D4FIy7cP.js} +1 -1
  200. package/dist/ui/assets/swift-CyEgAFGc.js +1 -0
  201. package/dist/ui/assets/temperature-support-B4x2xaWY.js +1 -0
  202. package/dist/ui/assets/temperature-support-Cpml9LfI.js +1 -0
  203. package/dist/ui/assets/transform-messages-DZg9zDcV.js +1 -0
  204. package/dist/ui/assets/transform-messages-XkZ1QnTb.js +1 -0
  205. package/dist/ui/assets/transformers-env-DPjdc2EQ.js +1 -0
  206. package/dist/ui/assets/tray-leader-iVJTGwuf.js +1 -0
  207. package/dist/ui/assets/{tray-leave-runtime-BGfdX5KF.js → tray-leave-runtime-CN7V9V7O.js} +1 -1
  208. package/dist/ui/assets/{tray-runtime-config-B1LF8Kd4.js → tray-runtime-config-CVoPQrT2.js} +1 -1
  209. package/dist/ui/assets/tray-runtime-config-D7cmCcHJ.js +1 -0
  210. package/dist/ui/assets/ts-tags-C4Ifwy6r.js +1 -0
  211. package/dist/ui/assets/{upgrade-detection-Co2MZvYS.js → upgrade-detection-BC1ILaMz.js} +1 -1
  212. package/dist/ui/assets/vesper-DdrHHSXu.js +1 -0
  213. package/dist/ui/assets/{voice-reply-CnP5wEO_.js → voice-reply-BNX-jA0G.js} +1 -1
  214. package/dist/ui/assets/{vue-Dg0Kv3qp.js → vue-Djeyp8pE.js} +1 -1
  215. package/dist/ui/assets/{vue-vine-DdvC-EE2.js → vue-vine-By_xyXdL.js} +1 -1
  216. package/dist/ui/assets/{wc-attach-DsMfUpx8.js → wc-attach-CPoS-Z-g.js} +2 -2
  217. package/dist/ui/assets/{wc-extension-CL-LAE0W.js → wc-extension-pWBTulcf.js} +2 -2
  218. package/dist/ui/assets/wc-float-label-D7p-4xyd.js +1 -0
  219. package/dist/ui/assets/wc-follower-TQacOT97.js +17 -0
  220. package/dist/ui/assets/wc-live-DlayGhwI.js +8 -0
  221. package/dist/ui/assets/wc-nav-Co62IQ9D.js +2 -0
  222. package/dist/ui/assets/wc-onboarding-CqIwr35s.js +2 -0
  223. package/dist/ui/assets/{wc-permissions-gFKCQht9.js → wc-permissions-Oq3nX_59.js} +2 -2
  224. package/dist/ui/assets/wc-placeholder-CRVvrH3X.js +4 -0
  225. package/dist/ui/assets/{wc-scoop-color-CByZNEJo.js → wc-scoop-color-ShF3p7L9.js} +1 -1
  226. package/dist/ui/assets/wc-settings-Bh5hIzNc.js +51 -0
  227. package/dist/ui/assets/{wc-shell-DC5bovWA.js → wc-shell-7mtD7TN_.js} +3 -3
  228. package/dist/ui/assets/wc-sprinkles-wT8iHdRT.js +2 -0
  229. package/dist/ui/assets/wc-tray-DxDD8gsB.js +2 -0
  230. package/dist/ui/assets/wc-tray-scoops-B7RY-1VN.js +5 -0
  231. package/dist/ui/assets/wc-unit-context-C0EqsYUD.js +1 -0
  232. package/dist/ui/assets/welcome-CyCMJDqG.js +621 -0
  233. package/dist/ui/assets/{welcome-detection-C2MvJDW4.js → welcome-detection-DjomEbCT.js} +1 -1
  234. package/dist/ui/assets/whisper-session-DpDs0sDL.js +2 -0
  235. package/dist/ui/assets/x_search-C-5p00-C.js +131 -0
  236. package/dist/ui/assets/xai-grok-CcoDiPUW.js +1 -0
  237. package/dist/ui/assets/xai-grok-DO4be7QU.js +1 -0
  238. package/dist/ui/index.html +16 -14
  239. package/dist/ui/packages/webapp/index.html +16 -14
  240. package/dist/ui/slicc-diff.js +1 -1
  241. package/package.json +3 -4
  242. package/dist/ui/assets/adobe-C19oqBaU.js +0 -1
  243. package/dist/ui/assets/adobe-Dv-gMc09.js +0 -2
  244. package/dist/ui/assets/anthropic-messages-BX4DpK10.js +0 -39
  245. package/dist/ui/assets/anthropic-messages-C-orWG7m.js +0 -39
  246. package/dist/ui/assets/azure-openai-responses-C2LleG-4.js +0 -1
  247. package/dist/ui/assets/azure-openai-responses-Df9YPxyp.js +0 -1
  248. package/dist/ui/assets/bedrock-camp-B0KF_4RS.js +0 -1
  249. package/dist/ui/assets/bedrock-camp-qpZqnqLa.js +0 -2
  250. package/dist/ui/assets/catppuccin-frappe-3VR1Za6u.js +0 -1
  251. package/dist/ui/assets/catppuccin-latte-DwIHMF0Q.js +0 -1
  252. package/dist/ui/assets/catppuccin-macchiato-DYnBP6_5.js +0 -1
  253. package/dist/ui/assets/catppuccin-mocha-DYhrFGRu.js +0 -1
  254. package/dist/ui/assets/cerebras-CDHmZz_Y.js +0 -1
  255. package/dist/ui/assets/cerebras-DPV0CO1I.js +0 -1
  256. package/dist/ui/assets/cpp-CdhRINFH.js +0 -1
  257. package/dist/ui/assets/db-DATxPCUz.js +0 -1
  258. package/dist/ui/assets/db-DIbBClfy.js +0 -1
  259. package/dist/ui/assets/discovery-preference-fqUhjzeE.js +0 -1
  260. package/dist/ui/assets/dist-Dwa3Gdd4.js +0 -1547
  261. package/dist/ui/assets/float-topology-BgioAcOd.js +0 -1
  262. package/dist/ui/assets/fs-CIIVB1OK.js +0 -2
  263. package/dist/ui/assets/fs-QyBiZMuq.js +0 -1
  264. package/dist/ui/assets/github-Ctvr_Nd6.js +0 -1
  265. package/dist/ui/assets/github-Dq-ryVOk.js +0 -2
  266. package/dist/ui/assets/github-copilot-DIk_soEH.js +0 -1
  267. package/dist/ui/assets/github-copilot-Dm5mGSYk.js +0 -2
  268. package/dist/ui/assets/google-generative-ai-C9uw7Zks.js +0 -1
  269. package/dist/ui/assets/google-generative-ai-DHBc1oKV.js +0 -1
  270. package/dist/ui/assets/google-vertex-BaT3InWy.js +0 -1
  271. package/dist/ui/assets/google-vertex-DX8CfGr6.js +0 -1
  272. package/dist/ui/assets/host-command-G_JIdBPR.js +0 -1
  273. package/dist/ui/assets/julia-DibC-h6i.js +0 -1
  274. package/dist/ui/assets/kanagawa-dragon-CXtmUGW6.js +0 -1
  275. package/dist/ui/assets/kanagawa-lotus-BN08jTvb.js +0 -1
  276. package/dist/ui/assets/kanagawa-wave-CTweb8Dz.js +0 -1
  277. package/dist/ui/assets/kernel-worker-BiaHa-Mz.js +0 -9014
  278. package/dist/ui/assets/legacy-api-aliases-CsTVszvY.js +0 -1
  279. package/dist/ui/assets/legacy-api-aliases-nSD9C16V.js +0 -1
  280. package/dist/ui/assets/mdc-Otire2H_.js +0 -1
  281. package/dist/ui/assets/mistral-conversations-BXo-tb0V.js +0 -4
  282. package/dist/ui/assets/mistral-conversations-Ck257tvp.js +0 -4
  283. package/dist/ui/assets/monokai-CdkpiU2Y.js +0 -1
  284. package/dist/ui/assets/mount-C20u28qg.js +0 -2
  285. package/dist/ui/assets/mount-DSlWOyRg.js +0 -1
  286. package/dist/ui/assets/mount-recovery-Dp2uzDT3.js +0 -2
  287. package/dist/ui/assets/new-session-BmqHuPnd.js +0 -2
  288. package/dist/ui/assets/oauth-bootstrap-CF5Iq7xU.js +0 -2
  289. package/dist/ui/assets/oauth-service-Bbrrl8Mr.js +0 -1
  290. package/dist/ui/assets/oauth-service-Cy5ngmcU.js +0 -1
  291. package/dist/ui/assets/openai-codex-C2ilX51B.js +0 -1
  292. package/dist/ui/assets/openai-codex-bhWf9evO.js +0 -1
  293. package/dist/ui/assets/openai-codex-responses-BQzefg3i.js +0 -7
  294. package/dist/ui/assets/openai-codex-responses-JtcU5b3J.js +0 -7
  295. package/dist/ui/assets/openai-completions-D-HjYi8x.js +0 -5
  296. package/dist/ui/assets/openai-completions-QMfwfjiE.js +0 -5
  297. package/dist/ui/assets/openai-responses-BVHnEPuG.js +0 -1
  298. package/dist/ui/assets/openai-responses-Ca0oWhbv.js +0 -1
  299. package/dist/ui/assets/openrouter-Bo62to17.js +0 -1
  300. package/dist/ui/assets/openrouter-C9_8OqEu.js +0 -1
  301. package/dist/ui/assets/panel-rpc-handlers-Dbhx7m_G.js +0 -2
  302. package/dist/ui/assets/php-BidqsJNR.js +0 -1
  303. package/dist/ui/assets/port-bridge-client-BbVs1yhx.js +0 -2
  304. package/dist/ui/assets/port-bridge-client-DxYLF2-N.js +0 -1
  305. package/dist/ui/assets/provider-settings-BTpBo_o4.js +0 -2
  306. package/dist/ui/assets/provider-store-access-CrgSlufJ.js +0 -1
  307. package/dist/ui/assets/providers-Crdj27DN.js +0 -2
  308. package/dist/ui/assets/providers-DX7EJ4Fn.js +0 -1
  309. package/dist/ui/assets/proxied-fetch-B4g-4VbQ.js +0 -2
  310. package/dist/ui/assets/proxied-fetch-n2pCvcgW.js +0 -1
  311. package/dist/ui/assets/quick-llm-hL6bZGLe.js +0 -1
  312. package/dist/ui/assets/r-Dzep-lPg.js +0 -1
  313. package/dist/ui/assets/record-Z5ZWTUPJ.js +0 -1
  314. package/dist/ui/assets/red-CJ3rzSJv.js +0 -1
  315. package/dist/ui/assets/rose-pine-BthvhNj6.js +0 -1
  316. package/dist/ui/assets/rose-pine-dawn-Dg85fqjY.js +0 -1
  317. package/dist/ui/assets/rose-pine-moon-hon4tzzS.js +0 -1
  318. package/dist/ui/assets/secret-env-q4hxkt7Z.js +0 -1
  319. package/dist/ui/assets/secret-topology-xLmXoozo.js +0 -1
  320. package/dist/ui/assets/setup-standalone-prelude-Btsjqjoe.js +0 -2
  321. package/dist/ui/assets/setup-sudo-DrmeHwU_.js +0 -2
  322. package/dist/ui/assets/slicc-version-tsUsi909.js +0 -1
  323. package/dist/ui/assets/solarized-dark-DV17i1UV.js +0 -1
  324. package/dist/ui/assets/solarized-light-DSh2HLQt.js +0 -1
  325. package/dist/ui/assets/swift-DonLKvLd.js +0 -1
  326. package/dist/ui/assets/transformers-env-SL0zTs7S.js +0 -1
  327. package/dist/ui/assets/tray-leader-DcRtwWl-.js +0 -1
  328. package/dist/ui/assets/tray-runtime-config-CRGwg9SK.js +0 -1
  329. package/dist/ui/assets/ts-tags-BUIgHz80.js +0 -1
  330. package/dist/ui/assets/vesper-D5bVUKB1.js +0 -1
  331. package/dist/ui/assets/wc-float-label-qqb_uM9y.js +0 -1
  332. package/dist/ui/assets/wc-follower-troAtcMA.js +0 -17
  333. package/dist/ui/assets/wc-live-D1Mon0cw.js +0 -8
  334. package/dist/ui/assets/wc-nav-BV6Jm98e.js +0 -2
  335. package/dist/ui/assets/wc-onboarding-Dg4E9VDR.js +0 -2
  336. package/dist/ui/assets/wc-placeholder-_6RUOpYH.js +0 -4
  337. package/dist/ui/assets/wc-settings-Dy5cPd8c.js +0 -51
  338. package/dist/ui/assets/wc-sprinkles-CDP31nXS.js +0 -2
  339. package/dist/ui/assets/wc-tray-MFZAPwt4.js +0 -2
  340. package/dist/ui/assets/wc-tray-scoops-B2RP8cgD.js +0 -5
  341. package/dist/ui/assets/whisper-session-Cf2gGkoR.js +0 -2
  342. package/dist/ui/assets/xai-grok-C2GEvF8U.js +0 -1
  343. package/dist/ui/assets/xai-grok-CoSPbEFx.js +0 -1
@@ -0,0 +1,821 @@
1
+ var e=`# Sprinkle Component Reference
2
+
3
+ Use these CSS classes in \`.shtml\` sprinkles. Do NOT write custom CSS — these components cover all common UI patterns.
4
+
5
+ ## Rail icon (favicon)
6
+
7
+ Every sprinkle declares its own glyph for the side rail. Add this to the sprinkle's \`<head>\` (full-document mode) or as the first element (fragment mode):
8
+
9
+ \`\`\`html
10
+ <link rel="icon" href="music" />
11
+ \`\`\`
12
+
13
+ The \`href\` accepts a Lucide icon name (preferred), a VFS path to an SVG (\`/shared/sprinkles/<name>/icon.svg\`), or a \`data:image/svg+xml;...\` URL. See the SKILL.md "Sprinkle icon" section for the full list. **Never skip this** — generic Sparkles tiles are reserved for sprinkles that genuinely have no thematic anchor.
14
+
15
+ ## Icons (Lucide)
16
+
17
+ Lucide icons are available globally via the \`LucideIcons\` object. Use declarative \`data-lucide\` attributes for automatic rendering, or create icons programmatically.
18
+
19
+ **Declarative usage** (recommended):
20
+
21
+ \`\`\`html
22
+ <!-- Icon renders automatically on page load -->
23
+ <i data-lucide="check" class="sprinkle-icon"></i>
24
+ <i data-lucide="alert-circle" class="sprinkle-icon"></i>
25
+ <i data-lucide="settings" class="sprinkle-icon sprinkle-icon--l"></i>
26
+
27
+ <!-- In buttons -->
28
+ <button class="sprinkle-btn sprinkle-btn--primary">
29
+ <i data-lucide="save" class="sprinkle-icon"></i> Save
30
+ </button>
31
+
32
+ <!-- In action card headers -->
33
+ <div class="sprinkle-action-card">
34
+ <div class="sprinkle-action-card__header">
35
+ <i data-lucide="check-circle" class="sprinkle-icon" style="color: var(--uxc-positive-text)"></i>
36
+ Success
37
+ </div>
38
+ </div>
39
+ \`\`\`
40
+
41
+ **Programmatic usage**:
42
+
43
+ \`\`\`javascript
44
+ // Create an icon element
45
+ const icon = LucideIcons.createElement('alert-triangle', {
46
+ size: 20,
47
+ color: 'var(--uxc-notice-text)',
48
+ strokeWidth: 2,
49
+ class: 'sprinkle-icon',
50
+ });
51
+ container.appendChild(icon);
52
+
53
+ // Re-render all icons after dynamic content changes
54
+ LucideIcons.render();
55
+ \`\`\`
56
+
57
+ **Icon sizes**:
58
+
59
+ - \`.sprinkle-icon--xs\` — 12px (small badges)
60
+ - \`.sprinkle-icon--s\` — 14px (inline text)
61
+ - \`.sprinkle-icon--m\` — 16px (default, buttons)
62
+ - \`.sprinkle-icon--l\` — 20px (headings)
63
+ - \`.sprinkle-icon--xl\` — 24px (large cards)
64
+
65
+ **Icon names**: Use kebab-case from [lucide.dev/icons](https://lucide.dev/icons) — e.g., \`check\`, \`alert-circle\`, \`arrow-right\`, \`file-text\`.
66
+
67
+ **NO EMOJIS** — Always use Lucide icons instead of emoji for a professional, consistent look.
68
+
69
+ ## Cards
70
+
71
+ \`.sprinkle-card\` — Card with shadow (hover elevates).
72
+ \`.sprinkle-stat-card\` — Stat card with \`.value\` + \`.label\` children.
73
+
74
+ ## Action Card (Inline)
75
+
76
+ \`.sprinkle-action-card\` — Compact card with background and border for inline chat interactions (\` \`\`\`shtml \` blocks). Children:
77
+
78
+ - \`__header\` — Bold title row. Put a \`.sprinkle-badge\` inside for status (auto right-aligned).
79
+ - \`__body\` — Secondary-color description text.
80
+ - \`__actions\` — Right-aligned button row with top border separator.
81
+
82
+ All three children are optional. Minimal card (just actions):
83
+
84
+ \`\`\`html
85
+ <div class="sprinkle-action-card">
86
+ <div class="sprinkle-action-card__actions">
87
+ <button class="sprinkle-btn sprinkle-btn--primary" onclick="slicc.lick('go')">Go</button>
88
+ </div>
89
+ </div>
90
+ \`\`\`
91
+
92
+ Use existing \`.sprinkle-*\` components inside the body:
93
+
94
+ \`\`\`html
95
+ <div class="sprinkle-action-card">
96
+ <div class="sprinkle-action-card__header">Build status</div>
97
+ <div class="sprinkle-action-card__body">
98
+ <div class="sprinkle-progress-bar" style="--progress:67%">
99
+ <div class="sprinkle-progress-bar__header">
100
+ <span class="label">Tests</span><span class="value">67%</span>
101
+ </div>
102
+ <div class="sprinkle-progress-bar__track"><div class="fill" style="width:67%"></div></div>
103
+ </div>
104
+ </div>
105
+ </div>
106
+ \`\`\`
107
+
108
+ Full card with all sections:
109
+
110
+ \`\`\`html
111
+ <div class="sprinkle-action-card">
112
+ <div class="sprinkle-action-card__header">
113
+ Title
114
+ <span class="sprinkle-badge sprinkle-badge--notice">status</span>
115
+ </div>
116
+ <div class="sprinkle-action-card__body">Description</div>
117
+ <div class="sprinkle-action-card__actions">
118
+ <button class="sprinkle-btn sprinkle-btn--secondary" onclick="slicc.lick('cancel')">
119
+ Cancel
120
+ </button>
121
+ <button
122
+ class="sprinkle-btn sprinkle-btn--primary"
123
+ onclick="slicc.lick({action:'confirm',data:{id:1}})"
124
+ >
125
+ Confirm
126
+ </button>
127
+ </div>
128
+ </div>
129
+ \`\`\`
130
+
131
+ ## Table
132
+
133
+ \`.sprinkle-table\` — Table with bold headers (no uppercase!), row hover, row dividers.
134
+
135
+ ## Badges
136
+
137
+ \`.sprinkle-badge\` — Bold solid-fill badges.
138
+
139
+ - Color variants: \`--positive\`, \`--negative\`, \`--notice\`, \`--informative\`, \`--accent\`
140
+ - Styles: \`--subtle\` (tinted bg), \`--outline\` (stroke)
141
+ - Combine: \`sprinkle-badge sprinkle-badge--subtle sprinkle-badge--positive\`
142
+
143
+ ## Status Light
144
+
145
+ \`.sprinkle-status-light\` — Dot + label. Variants: \`--positive\`/\`--negative\`/\`--notice\`/\`--informative\`.
146
+
147
+ ## Buttons
148
+
149
+ \`.sprinkle-btn\` — Pill-rounded buttons.
150
+
151
+ - \`--primary\` — accent fill (CTA)
152
+ - \`--secondary\` — outline with hover
153
+ - \`--negative\` — red fill (destructive)
154
+ - Add \`disabled\` attribute for disabled state
155
+
156
+ \`.sprinkle-btn-group\` — Gap-spaced button group (each button keeps pill shape).
157
+
158
+ ## Text Field
159
+
160
+ \`.sprinkle-text-field\` — Styled text input. Use on \`<input type="text">\`. Supports hover/focus states, placeholder styling. Combine with \`.sprinkle-row\` for inline input + button layouts:
161
+
162
+ \`\`\`html
163
+ <div class="sprinkle-row">
164
+ <input type="text" class="sprinkle-text-field" style="flex:1" placeholder="https://example.com" />
165
+ <button class="sprinkle-btn sprinkle-btn--primary">Go</button>
166
+ </div>
167
+ \`\`\`
168
+
169
+ ## Progress Bar
170
+
171
+ \`.sprinkle-progress-bar\` — Two modes:
172
+
173
+ **Simple** (no label):
174
+
175
+ \`\`\`html
176
+ <div class="sprinkle-progress-bar" style="--progress: 75%"></div>
177
+ \`\`\`
178
+
179
+ Auto-fills via \`::after\` pseudo-element. No children needed.
180
+
181
+ **With label**:
182
+
183
+ \`\`\`html
184
+ <div class="sprinkle-progress-bar">
185
+ <div class="sprinkle-progress-bar__header">
186
+ <span class="label">Upload</span>
187
+ <span class="value">75%</span>
188
+ </div>
189
+ <div class="sprinkle-progress-bar__track">
190
+ <div class="fill" style="width: 75%"></div>
191
+ </div>
192
+ </div>
193
+ \`\`\`
194
+
195
+ The \`.fill\` child accepts inline \`style="width: 75%"\` or \`data-value="75"\`. Alternatively, omit \`.fill\` and set \`--progress\` on the container.
196
+
197
+ **Color variants** on container: \`--positive\` (green), \`--negative\` (red), \`--notice\` (orange), \`--informative\` (blue).
198
+ Inline \`--fill-color\` overrides the variant color.
199
+
200
+ ## Meter
201
+
202
+ \`.sprinkle-meter\` — Same structure as progress bar but uses \`.sprinkle-meter\`, \`__header\`/\`__track\`.
203
+
204
+ **Simple**:
205
+
206
+ \`\`\`html
207
+ <div class="sprinkle-meter" style="--value: 50%"></div>
208
+ \`\`\`
209
+
210
+ Accepts \`--value\` or \`--progress\` for fill width.
211
+
212
+ **Variants**: \`--positive\`/\`--notice\`/\`--negative\` on container. Default color: informative (blue).
213
+
214
+ ## Code Editor
215
+
216
+ \`<slicc-editor>\` — Pre-bundled CodeMirror 6 editor custom element. Use for code editing, config editing, or any domain-specific text with syntax highlighting. The editor auto-themes to S2 tokens (dark/light).
217
+
218
+ **Attributes:**
219
+
220
+ - \`language\` — Built-in: \`json\`, \`markdown\`, \`html\`. Omit for plain text.
221
+ - \`line-numbers\` — Show line numbers gutter (boolean attribute).
222
+ - \`readonly\` — Disable editing (boolean attribute).
223
+
224
+ **Inner text** is used as placeholder (shown when editor is empty).
225
+
226
+ **Basic usage:**
227
+
228
+ \`\`\`html
229
+ <slicc-editor id="config" language="json" line-numbers>{"key": "value"}</slicc-editor>
230
+ <script>
231
+ var editor = document.getElementById('config');
232
+ editor.value = '{\\n "name": "example"\\n}';
233
+ editor.addEventListener('change', function (e) {
234
+ slicc.lick({ action: 'config-changed', data: { value: e.detail.value } });
235
+ });
236
+ <\/script>
237
+ \`\`\`
238
+
239
+ **Custom syntax highlighter** for domain-specific languages:
240
+
241
+ \`\`\`html
242
+ <slicc-editor id="lyrics" line-numbers>[Intro] Write your lyrics here...</slicc-editor>
243
+ <script>
244
+ var editor = document.getElementById('lyrics');
245
+ var CM6 = window.__SLICC_CM6__;
246
+ editor.setHighlighter({
247
+ token: function (stream) {
248
+ if (stream.match(/^\\[.*?\\]/)) return 'keyword';
249
+ if (stream.match(/^\\(.*?\\)/)) return 'comment';
250
+ stream.next();
251
+ return null;
252
+ },
253
+ });
254
+ <\/script>
255
+ \`\`\`
256
+
257
+ **Gutter markers** (colored dots on specific lines):
258
+
259
+ \`\`\`javascript
260
+ editor.setGutterMarkers({
261
+ 3: { color: 'var(--s2-notice)', tooltip: 'Check meter' },
262
+ 7: { color: 'var(--s2-negative)', tooltip: 'Error here' },
263
+ });
264
+ \`\`\`
265
+
266
+ **Properties & Methods:**
267
+
268
+ | API | Description |
269
+ | ---------------------------- | ------------------------------------------------------------------- |
270
+ | \`.value\` | Get/set editor content (string) |
271
+ | \`.setHighlighter(parser)\` | Set custom StreamLanguage parser with \`token(stream, state)\` method |
272
+ | \`.setGutterMarkers(markers)\` | Set line markers: \`{ lineNo: { color, tooltip? } }\` |
273
+ | \`change\` event | Fires on edit. \`e.detail.value\` has new content |
274
+
275
+ ## Diff Viewer
276
+
277
+ \`<slicc-diff>\` — Pre-bundled diff viewer custom element ([@pierre/diffs](https://diffs.com)). Use for showing code changes, migration previews, before/after comparisons. Includes Shiki syntax highlighting and auto dark/light theming.
278
+
279
+ **Two-file mode** (compare old vs new):
280
+
281
+ \`\`\`html
282
+ <slicc-diff
283
+ old-name="config.json"
284
+ old-contents='{"debug": false}'
285
+ new-name="config.json"
286
+ new-contents='{"debug": true, "verbose": true}'
287
+ diff-style="split"
288
+ ></slicc-diff>
289
+ \`\`\`
290
+
291
+ **Element bundles load asynchronously.** \`<slicc-diff>\` and \`<slicc-editor>\`
292
+ arrive after your inline script runs, so set PROPERTIES (adopted on upgrade) and
293
+ await the bundle before calling METHODS:
294
+
295
+ \`\`\`javascript
296
+ window.__SLICC_SPRINKLE_ASSETS__['slicc-editor.js'].then(function () {
297
+ document.getElementById('lyrics').setHighlighter({ token: myTokenizer });
298
+ });
299
+ \`\`\`
300
+
301
+ **Patch mode** (unified diff string):
302
+
303
+ \`\`\`html
304
+ <slicc-diff id="mydiff"></slicc-diff>
305
+ <script>
306
+ document.getElementById('mydiff').patch =
307
+ '--- a/file.txt\\n+++ b/file.txt\\n@@ -1 +1 @@\\n-old line\\n+new line';
308
+ <\/script>
309
+ \`\`\`
310
+
311
+ **JS property API** (for dynamic content):
312
+
313
+ \`\`\`html
314
+ <slicc-diff id="preview"></slicc-diff>
315
+ <script>
316
+ var diff = document.getElementById('preview');
317
+ diff.oldFile = { name: 'app.ts', contents: oldCode };
318
+ diff.newFile = { name: 'app.ts', contents: newCode };
319
+ diff.options = { diffStyle: 'unified', overflow: 'wrap' };
320
+ <\/script>
321
+ \`\`\`
322
+
323
+ **Attributes:**
324
+
325
+ | Attribute | Default | Description |
326
+ | ---------------- | -------- | -------------------------------------------- |
327
+ | \`old-name\` | — | Old filename |
328
+ | \`old-contents\` | — | Old file contents |
329
+ | \`new-name\` | — | New filename |
330
+ | \`new-contents\` | — | New file contents |
331
+ | \`patch\` | — | Unified diff string (alternative to old/new) |
332
+ | \`diff-style\` | \`split\` | \`split\` (side-by-side) or \`unified\` (single) |
333
+ | \`overflow\` | \`scroll\` | \`scroll\` or \`wrap\` for long lines |
334
+ | \`disable-header\` | — | Boolean: hide the file header bar |
335
+
336
+ **JS Properties:** \`.oldFile\`, \`.newFile\` (objects with \`name\` + \`contents\`), \`.patch\` (string), \`.options\` (object).
337
+
338
+ ## Layout — Basic
339
+
340
+ \`.sprinkle-grid\` — Auto-fit responsive grid.
341
+ \`.sprinkle-stack\` — Vertical stack with gap.
342
+ \`.sprinkle-row\` — Horizontal flex row, centered.
343
+ \`.sprinkle-heading\` — Section heading.
344
+ \`.sprinkle-body\` — Body text.
345
+ \`.sprinkle-detail\` — Small secondary text.
346
+ \`.sprinkle-divider\` — Subtle separator line. Add \`--medium\` for thicker.
347
+
348
+ ## Layout — Advanced (Fragment & Full-Doc)
349
+
350
+ ### Sidebar
351
+
352
+ \`.sprinkle-sidebar\` — Two-column layout: fixed nav + flexible main.
353
+
354
+ \`\`\`html
355
+ <div class="sprinkle-sidebar">
356
+ <nav class="sprinkle-sidebar__nav">
357
+ <div class="sprinkle-sidebar__nav-label">Section</div>
358
+ <div class="sprinkle-sidebar__nav-item sprinkle-sidebar__nav-item--active">Active Item</div>
359
+ <div class="sprinkle-sidebar__nav-item">Other Item</div>
360
+ </nav>
361
+ <div class="sprinkle-sidebar__main">
362
+ <!-- main content -->
363
+ </div>
364
+ </div>
365
+ \`\`\`
366
+
367
+ ### Split Pane
368
+
369
+ \`.sprinkle-split\` — Equal horizontal split. Add \`--vertical\` for stacked.
370
+
371
+ \`\`\`html
372
+ <div class="sprinkle-split">
373
+ <div>Left / Top pane</div>
374
+ <div>Right / Bottom pane</div>
375
+ </div>
376
+ \`\`\`
377
+
378
+ ### Toolbar
379
+
380
+ \`.sprinkle-toolbar\` — Horizontal action bar with start/center/end slots.
381
+
382
+ \`\`\`html
383
+ <div class="sprinkle-toolbar">
384
+ <div class="sprinkle-toolbar__start"><button class="sprinkle-btn">Back</button></div>
385
+ <div class="sprinkle-toolbar__center"><strong>Title</strong></div>
386
+ <div class="sprinkle-toolbar__end">
387
+ <button class="sprinkle-btn sprinkle-btn--primary">Save</button>
388
+ </div>
389
+ </div>
390
+ \`\`\`
391
+
392
+ ### Tabs
393
+
394
+ \`.sprinkle-tabs\` — Tab bar with panels.
395
+
396
+ \`\`\`html
397
+ <div class="sprinkle-tabs">
398
+ <button class="sprinkle-tabs__tab sprinkle-tabs__tab--active" onclick="switchTab(0)">
399
+ Tab 1
400
+ </button>
401
+ <button class="sprinkle-tabs__tab" onclick="switchTab(1)">Tab 2</button>
402
+ </div>
403
+ <div class="sprinkle-tabs__panel sprinkle-tabs__panel--active">Content 1</div>
404
+ <div class="sprinkle-tabs__panel">Content 2</div>
405
+ \`\`\`
406
+
407
+ ### Dialog / Modal
408
+
409
+ \`.sprinkle-dialog\` — Overlay dialog. Use \`hidden\` attribute to hide.
410
+
411
+ \`\`\`html
412
+ <div class="sprinkle-dialog" hidden id="myDialog">
413
+ <div class="sprinkle-dialog__backdrop" onclick="closeDialog()"></div>
414
+ <div class="sprinkle-dialog__content">
415
+ <div class="sprinkle-dialog__header">
416
+ <span class="sprinkle-dialog__title">Title</span>
417
+ <button class="sprinkle-dialog__close" onclick="closeDialog()">×</button>
418
+ </div>
419
+ <p>Dialog content here.</p>
420
+ <div class="sprinkle-dialog__footer">
421
+ <button class="sprinkle-btn sprinkle-btn--secondary" onclick="closeDialog()">Cancel</button>
422
+ <button class="sprinkle-btn sprinkle-btn--primary" onclick="confirm()">Confirm</button>
423
+ </div>
424
+ </div>
425
+ </div>
426
+ \`\`\`
427
+
428
+ ### Collapsible
429
+
430
+ \`.sprinkle-collapsible\` — Expandable section. Add \`--open\` class to expand.
431
+
432
+ \`\`\`html
433
+ <div class="sprinkle-collapsible sprinkle-collapsible--open">
434
+ <button
435
+ class="sprinkle-collapsible__header"
436
+ onclick="this.parentElement.classList.toggle('sprinkle-collapsible--open')"
437
+ >
438
+ <span class="sprinkle-collapsible__chevron"></span>
439
+ Section Title
440
+ </button>
441
+ <div class="sprinkle-collapsible__body">Expandable content here.</div>
442
+ </div>
443
+ \`\`\`
444
+
445
+ ### Canvas / SVG Container
446
+
447
+ \`.sprinkle-canvas\` — Container for canvas or SVG. Aspect ratio modifiers: \`--16x9\`, \`--4x3\`, \`--1x1\`.
448
+
449
+ \`\`\`html
450
+ <div class="sprinkle-canvas sprinkle-canvas--16x9">
451
+ <svg viewBox="0 0 800 450"><!-- chart --></svg>
452
+ </div>
453
+ \`\`\`
454
+
455
+ ### Container Queries
456
+
457
+ Wrap content in \`.sprinkle-panel\` for responsive container queries:
458
+
459
+ - Below 400px: sidebar stacks vertically, grids go single-column, splits stack, toolbar wraps
460
+ - Above 600px: sidebar nav at 240px, grids use auto-fit minmax(180px, 1fr)
461
+
462
+ ## Key-Value List
463
+
464
+ \`.sprinkle-kv-list\` — Key-value pairs. Use \`<dl>\` with \`<dt>\`/\`<dd>\` (preferred) or \`<ul>\` with \`<li>\` containing \`.key\`/\`.value\` spans. The \`<dl>\` variant renders as a two-column grid with labels left, values right-aligned bold.
465
+
466
+ ## Empty State
467
+
468
+ \`.sprinkle-empty-state\` — Centered empty state messaging.
469
+
470
+ ---
471
+
472
+ ## Multi-Action Lick Patterns
473
+
474
+ Sprinkles can send multiple distinct actions via \`slicc.lick()\`. The cone routes each action to the owning scoop.
475
+
476
+ **Button with action + data**:
477
+
478
+ \`\`\`html
479
+ <button
480
+ class="sprinkle-btn sprinkle-btn--primary"
481
+ onclick="slicc.lick({action: 'save-section', data: {id: 'hero', content: getContent()}})"
482
+ >
483
+ Save
484
+ </button>
485
+ \`\`\`
486
+
487
+ **Toolbar with multiple actions**:
488
+
489
+ \`\`\`html
490
+ <div class="sprinkle-toolbar">
491
+ <div class="sprinkle-toolbar__start">
492
+ <button class="sprinkle-btn" onclick="slicc.lick({action: 'run-audit'})">Run Audit</button>
493
+ </div>
494
+ <div class="sprinkle-toolbar__end">
495
+ <button
496
+ class="sprinkle-btn sprinkle-btn--secondary"
497
+ onclick="slicc.lick({action: 'export-report'})"
498
+ >
499
+ Export
500
+ </button>
501
+ <button class="sprinkle-btn sprinkle-btn--primary" onclick="slicc.lick({action: 'fix-all'})">
502
+ Fix All
503
+ </button>
504
+ </div>
505
+ </div>
506
+ \`\`\`
507
+
508
+ **Handling updates from the agent**:
509
+
510
+ \`\`\`html
511
+ <script>
512
+ slicc.on('update', function (data) {
513
+ if (data.type === 'audit-results') {
514
+ renderResults(data.results);
515
+ } else if (data.type === 'status') {
516
+ document.getElementById('status').textContent = data.message;
517
+ }
518
+ });
519
+
520
+ // Restore state on reopen
521
+ var saved = slicc.getState();
522
+ if (saved) {
523
+ renderResults(saved.results);
524
+ }
525
+ <\/script>
526
+ \`\`\`
527
+
528
+ ---
529
+
530
+ ## Design Guidelines
531
+
532
+ Panels should look like professional tools, not chatbot output. Follow these rules:
533
+
534
+ **No emojis in headings or labels.** Use badges, status lights, and semantic color to convey meaning — not 🔍 ❌ ✅ ⚠️ 📊 icons.
535
+
536
+ **No inline color styles, and never hard-code light/dark values.** Use the semantic variants (\`--positive\`, \`--negative\`, \`--notice\`, \`--informative\`) and S2 tokens — they swap automatically when the parent theme flips. For one-off colors not covered by a token, use \`light-dark()\` (see "Light & dark mode" below).
537
+
538
+ **Use tables for structured findings.** When presenting lists of issues, checks, or recommendations, use \`.sprinkle-table\` with severity badges in the first column — not bullet lists with emoji prefixes.
539
+
540
+ **Use status lights for pass/fail.** \`sprinkle-status-light--positive\` for passed checks, badges for severity levels (Critical, Warning, Advisory).
541
+
542
+ **Keep headings plain.** Use \`sprinkle-body\` with \`font-weight:600\` for section subheadings, \`sprinkle-heading\` for the page title. No emoji, no decorative punctuation.
543
+
544
+ **Use \`sprinkle-kv-list\` for stats.** Key-value pairs belong in a definition list, not stat cards (reserve stat cards for 3–4 top-level KPIs).
545
+
546
+ ### Example: Audit/Report Panel Structure
547
+
548
+ \`\`\`html
549
+ <title>Report Title</title>
550
+ <link rel="icon" href="clipboard-list" />
551
+ <div class="sprinkle-stack">
552
+ <div>
553
+ <h2 class="sprinkle-heading">Report Title</h2>
554
+ <p class="sprinkle-detail">Context line — source, date</p>
555
+ </div>
556
+
557
+ <!-- Top-level KPIs -->
558
+ <div class="sprinkle-grid">
559
+ <div class="sprinkle-stat-card">
560
+ <div class="value">A</div>
561
+ <div class="label">Grade</div>
562
+ </div>
563
+ <div class="sprinkle-stat-card">
564
+ <div class="value">12</div>
565
+ <div class="label">Passed</div>
566
+ </div>
567
+ <div class="sprinkle-stat-card">
568
+ <div class="value">0</div>
569
+ <div class="label">Issues</div>
570
+ </div>
571
+ </div>
572
+
573
+ <div class="sprinkle-divider"></div>
574
+
575
+ <!-- Findings table with severity badges -->
576
+ <h3 class="sprinkle-body" style="font-weight:600">Issues</h3>
577
+ <table class="sprinkle-table">
578
+ <thead>
579
+ <tr>
580
+ <th>Severity</th>
581
+ <th>Finding</th>
582
+ </tr>
583
+ </thead>
584
+ <tbody>
585
+ <tr>
586
+ <td><span class="sprinkle-badge sprinkle-badge--negative">Critical</span></td>
587
+ <td><strong>Title</strong><br /><span class="sprinkle-detail">Description</span></td>
588
+ </tr>
589
+ <tr>
590
+ <td><span class="sprinkle-badge sprinkle-badge--notice">Warning</span></td>
591
+ <td><strong>Title</strong><br /><span class="sprinkle-detail">Description</span></td>
592
+ </tr>
593
+ </tbody>
594
+ </table>
595
+
596
+ <div class="sprinkle-divider"></div>
597
+
598
+ <!-- Passed checks with status lights -->
599
+ <h3 class="sprinkle-body" style="font-weight:600">Passed checks</h3>
600
+ <table class="sprinkle-table">
601
+ <thead>
602
+ <tr>
603
+ <th>Status</th>
604
+ <th>Check</th>
605
+ </tr>
606
+ </thead>
607
+ <tbody>
608
+ <tr>
609
+ <td><span class="sprinkle-status-light sprinkle-status-light--positive">Pass</span></td>
610
+ <td>Check description</td>
611
+ </tr>
612
+ </tbody>
613
+ </table>
614
+
615
+ <div class="sprinkle-divider"></div>
616
+
617
+ <!-- Stats as key-value list -->
618
+ <h3 class="sprinkle-body" style="font-weight:600">Stats</h3>
619
+ <dl class="sprinkle-kv-list">
620
+ <dt>Metric</dt>
621
+ <dd>Value</dd>
622
+ </dl>
623
+
624
+ <p class="sprinkle-detail" style="text-align:center;margin-top:var(--s2-spacing-200)">
625
+ Footer note
626
+ </p>
627
+ </div>
628
+ \`\`\`
629
+
630
+ ---
631
+
632
+ ## Using Built-in Sprinkles
633
+
634
+ Built-in sprinkles ship at \`/shared/sprinkles/\`. They are full-document HTML apps with a **DATA CONTRACT** — a comment block at the top of the \`<script>\` section documenting the exact JSON format the sprinkle expects.
635
+
636
+ ### Three-state protocol
637
+
638
+ Every built-in sprinkle has three view states: **empty** (URL input form), **loading** (spinner), and **ready** (full UI). The scoop controls transitions via \`sprinkle send\`:
639
+
640
+ 1. **Immediately after opening**, push analyzing status so the user sees progress:
641
+
642
+ \`\`\`bash
643
+ sprinkle send <name> '{"status":"analyzing","url":"https://example.com"}'
644
+ \`\`\`
645
+
646
+ 2. **When analysis is complete**, push data in the format specified by the DATA CONTRACT:
647
+
648
+ \`\`\`bash
649
+ sprinkle send <name> '{"content":"...","rules":{...}}'
650
+ \`\`\`
651
+
652
+ 3. **If no page was specified** (scoop should ask the user for a URL):
653
+ \`\`\`bash
654
+ sprinkle send <name> '{"status":"empty"}'
655
+ \`\`\`
656
+
657
+ ### Scoop brief template
658
+
659
+ \`\`\`
660
+ scoop_scoop("<sprinkle-name>")
661
+ feed_scoop("<sprinkle-name>", "You own the sprinkle '<sprinkle-name>'.
662
+ 1. Run: read_file /workspace/skills/sprinkles/style-guide.md
663
+ 2. Pick a Lucide icon name that matches the sprinkle's purpose. Add <link rel=\\"icon\\" href=\\"<icon-name>\\" /> to the .shtml. See sprinkles SKILL.md \\"Sprinkle icon\\" for examples.
664
+ 3. Write the sprinkle to /shared/sprinkles/<sprinkle-name>/<sprinkle-name>.shtml — define the DATA CONTRACT at the top of the <script>.
665
+ 4. Run: sprinkle open <sprinkle-name>
666
+ 5. IMMEDIATELY push status: sprinkle send <sprinkle-name> '{\\"status\\":\\"loading\\",\\"context\\":\\"<what>\\"}'
667
+ 6. Gather the data the user needs.
668
+ 7. Push results to the sprinkle in the format specified by the DATA CONTRACT.
669
+ 8. Stay ready — you will receive lick events when the user clicks buttons in the sprinkle.
670
+ 9. When the user confirms an edit, attempt to apply it to the underlying source (see 'Applying Changes' below).
671
+ Do not send a completion message.")
672
+ \`\`\`
673
+
674
+ The scoop creates and opens the sprinkle, pushes loading status, gathers real data, pushes results via \`sprinkle send\`, and handles lick events from the user.
675
+
676
+ ---
677
+
678
+ ## Applying Changes
679
+
680
+ Content-editing sprinkles should attempt to apply user-confirmed changes to the actual site. Sprinkle edits are not just local UI state — the scoop must try to write them back.
681
+
682
+ ### When to apply
683
+
684
+ Apply after the user **confirms** a change — not on every lick. Typical trigger: \`suggestion-applied\` lick (user picked a fix from suggestions), or \`apply-fix\` lick (user clicked "Apply").
685
+
686
+ ### Determining write access
687
+
688
+ The cone sets backend context in the scoop brief (option B). The scoop knows whether it has write access based on its instructions:
689
+
690
+ - **EDS site** (URL matches \`*--*--*.aem.page|live\`): use \`aem get\`, \`aem put\`, \`aem preview\` commands
691
+ - **No write access** (external site, unknown CMS): push \`fix-error\` explaining why
692
+
693
+ ### EDS apply workflow (example)
694
+
695
+ \`\`\`bash
696
+ # 1. Fetch current page HTML
697
+ aem get <eds-url> --output /scoops/<scoop-name>/page.html
698
+
699
+ # 2. Read and modify the HTML (e.g. update <title>, <meta>, headings)
700
+ # Use edit_file or read_file + write_file
701
+
702
+ # 3. Write back
703
+ aem put <eds-url> /scoops/<scoop-name>/page.html
704
+
705
+ # 4. Trigger preview
706
+ aem preview <eds-url>
707
+ \`\`\`
708
+
709
+ ### Confirming back to the sprinkle
710
+
711
+ After the write succeeds, push confirmation so the sprinkle updates its UI:
712
+
713
+ \`\`\`bash
714
+ sprinkle send <sprinkle-name> '{"action":"fix-applied","pageIndex":0,"category":"Title","value":"new title","path":"/page","previewUrl":"https://..."}'
715
+ \`\`\`
716
+
717
+ The sprinkle only updates local state (score, checkmarks) after receiving \`fix-applied\` with the confirmed value.
718
+
719
+ If the write fails or write access is unavailable, push the error:
720
+
721
+ \`\`\`bash
722
+ sprinkle send <sprinkle-name> '{"action":"fix-error","message":"Cannot apply — no write access to nationwide.co.uk"}'
723
+ \`\`\`
724
+
725
+ ### Sprinkle-side handlers
726
+
727
+ Sprinkles handle these update actions:
728
+
729
+ \`\`\`javascript
730
+ slicc.on('update', function (data) {
731
+ if (data.action === 'fix-applied') {
732
+ // Update local data with confirmed value, then show toast
733
+ applyFixToLocal(data.pageIndex, data.category, data.value);
734
+ showToast('Applied: ' + data.path);
735
+ }
736
+ if (data.action === 'fix-error') {
737
+ showToast('Error: ' + data.message, true);
738
+ }
739
+ });
740
+ \`\`\`
741
+
742
+ ---
743
+
744
+ ## Light & dark mode
745
+
746
+ All sprinkles inherit the parent's theme automatically. The parent injects its S2 tokens and toggles a \`.theme-light\` class on the sprinkle root — the iframe's \`<html>\` in full-document mode, or the outermost container injected into the sidebar in fragment mode — whenever the user flips themes. Every \`var(--s2-*)\` token below swaps with it. **Never hard-code colors for one theme**, and **do not use \`@media (prefers-color-scheme: ...)\`** for colors that should mirror the app theme (it desyncs from the parent's class-based toggle).
747
+
748
+ For one-off colors that aren't covered by an S2 token, use CSS \`light-dark()\`:
749
+
750
+ \`\`\`css
751
+ :root {
752
+ color-scheme: light dark;
753
+ }
754
+ .my-tile {
755
+ background: light-dark(#fafafa, #1c1c1c);
756
+ color: light-dark(#222, #eee);
757
+ }
758
+ \`\`\`
759
+
760
+ \`light-dark()\` only resolves the dark branch when \`color-scheme\` is set on an ancestor — set it on \`:root\` in full-document mode, or on your outermost container in fragment mode. This intentionally follows the user's OS \`color-scheme\` preference for one-off custom colors; the S2 tokens above still track the parent app's class-based theme toggle in lockstep.
761
+
762
+ ## Spectrum 2 Token Reference
763
+
764
+ Full-document sprinkles (\`.shtml\`) inherit S2 CSS custom properties from the parent page. Every token below is theme-aware: its value swaps when \`.theme-light\` is toggled on \`<html>\`, so you get correct light and dark colors for free. Always use tokens — never hardcode hex values.
765
+
766
+ ### Border Radius
767
+
768
+ | Token | Value | Usage |
769
+ | --------------------- | ------ | ------------------------------------ |
770
+ | \`--s2-radius-s\` | 4px | Checkboxes, in-field buttons |
771
+ | \`--s2-radius-default\` | 8px | Most components, inputs, small cards |
772
+ | \`--s2-radius-l\` | 10px | Cards, panels, action boxes |
773
+ | \`--s2-radius-xl\` | 16px | Dialogs, modals, wells |
774
+ | \`--s2-radius-pill\` | 9999px | **Buttons**, badges, avatars, tags |
775
+
776
+ **Buttons MUST use \`--s2-radius-pill\`** (pill rounding). This is a core S2 convention.
777
+
778
+ ### Backgrounds
779
+
780
+ | Token | Usage |
781
+ | ------------------ | -------------------------------------------- |
782
+ | \`--s2-bg-base\` | Page/body background (gray-25) |
783
+ | \`--s2-bg-layer-1\` | Sidebar/panel background (gray-50) |
784
+ | \`--s2-bg-layer-2\` | Nested layer background (gray-75) |
785
+ | \`--s2-bg-elevated\` | Cards, buttons, elevated surfaces (gray-100) |
786
+
787
+ **Never use \`#fff\` for backgrounds.** Use \`var(--s2-bg-elevated)\` for cards/buttons, \`var(--s2-bg-base)\` for page background.
788
+
789
+ ### Text on Dark Backgrounds
790
+
791
+ Use \`var(--s2-gray-25)\` instead of \`#fff\` or \`color: white\`. S2 avoids pure white on dark backgrounds to prevent halation.
792
+
793
+ ### Semantic Color Tints
794
+
795
+ For subtle tinted backgrounds (badges, hover states), use \`color-mix\`:
796
+
797
+ \`\`\`css
798
+ background: color-mix(in srgb, var(--s2-positive) 10%, transparent); /* green tint */
799
+ background: color-mix(in srgb, var(--s2-negative) 8%, transparent); /* red tint */
800
+ background: color-mix(in srgb, var(--s2-notice) 10%, transparent); /* amber tint */
801
+ background: color-mix(in srgb, var(--s2-accent) 6%, transparent); /* blue tint */
802
+ \`\`\`
803
+
804
+ ### Shadows
805
+
806
+ | Token | Usage |
807
+ | ----------------------- | ----------------------- |
808
+ | \`--s2-shadow-container\` | Subtle card shadow |
809
+ | \`--s2-shadow-elevated\` | Menus, tooltips, modals |
810
+
811
+ ### Spacing
812
+
813
+ | Token | Value |
814
+ | ------------------ | ----- |
815
+ | \`--s2-spacing-100\` | 8px |
816
+ | \`--s2-spacing-200\` | 12px |
817
+ | \`--s2-spacing-300\` | 16px |
818
+ | \`--s2-spacing-400\` | 24px |
819
+ | \`--s2-spacing-500\` | 32px |
820
+ | \`--s2-spacing-600\` | 40px |
821
+ `;export{e as default};