sliccy 6.87.2 → 6.88.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 (349) hide show
  1. package/README.md +1 -1
  2. package/dist/node-server/_shared/index.d.ts +1 -0
  3. package/dist/node-server/_shared/index.d.ts.map +1 -1
  4. package/dist/node-server/_shared/index.js +1 -0
  5. package/dist/node-server/_shared/index.js.map +1 -1
  6. package/dist/node-server/_shared/loopback.d.ts +18 -0
  7. package/dist/node-server/_shared/loopback.d.ts.map +1 -0
  8. package/dist/node-server/_shared/loopback.js +41 -0
  9. package/dist/node-server/_shared/loopback.js.map +1 -0
  10. package/dist/node-server/bridge-security.d.ts +4 -1
  11. package/dist/node-server/bridge-security.js +6 -16
  12. package/dist/node-server/cloud-status.d.ts +3 -0
  13. package/dist/node-server/cloud-status.js +6 -2
  14. package/dist/node-server/hostfs.d.ts +58 -0
  15. package/dist/node-server/hostfs.js +257 -0
  16. package/dist/node-server/index.js +10 -0
  17. package/dist/node-server/routes/fetch-proxy.js +3 -18
  18. package/dist/node-server/runtime-flags.d.ts +22 -0
  19. package/dist/node-server/runtime-flags.js +78 -2
  20. package/dist/ui/.vite/manifest.json +508 -437
  21. package/dist/ui/assets/CLAUDE-4LHXSyPA.js +1 -0
  22. package/dist/ui/assets/CLAUDE-Bio4HPGK.js +1 -0
  23. package/dist/ui/assets/MEMORY-6FXnIBfJ.js +135 -0
  24. package/dist/ui/assets/SKILL-BKUxKc7f.js +296 -0
  25. package/dist/ui/assets/SKILL-BKyxMoME.js +1 -0
  26. package/dist/ui/assets/SKILL-BcELX5TL.js +1 -0
  27. package/dist/ui/assets/SKILL-Bd5ykLEh.js +1 -0
  28. package/dist/ui/assets/SKILL-Bt-RhG0L.js +1 -0
  29. package/dist/ui/assets/SKILL-CED8RXQP.js +69 -0
  30. package/dist/ui/assets/SKILL-CNdAIhbb.js +1 -0
  31. package/dist/ui/assets/SKILL-CcMg6eqt.js +1 -0
  32. package/dist/ui/assets/SKILL-Ch-cOl61.js +1 -0
  33. package/dist/ui/assets/SKILL-CkfptFag.js +132 -0
  34. package/dist/ui/assets/SKILL-Ckg2XbSL.js +114 -0
  35. package/dist/ui/assets/SKILL-D40-t9w0.js +57 -0
  36. package/dist/ui/assets/SKILL-DFKKFkzD.js +96 -0
  37. package/dist/ui/assets/SKILL-DJ815vTN.js +62 -0
  38. package/dist/ui/assets/SKILL-DLXzwsY4.js +1 -0
  39. package/dist/ui/assets/SKILL-DXIigmDy.js +35 -0
  40. package/dist/ui/assets/SKILL-DfSluXpV.js +385 -0
  41. package/dist/ui/assets/SKILL-DhKtVqb-.js +1 -0
  42. package/dist/ui/assets/SKILL-FnBxPcDX.js +1 -0
  43. package/dist/ui/assets/SKILL-HEHb9hIB.js +1 -0
  44. package/dist/ui/assets/SKILL-i1NMDKwT.js +1 -0
  45. package/dist/ui/assets/SKILL-oOIS8LAm.js +1 -0
  46. package/dist/ui/assets/{account-store-u5knhoCx.js → account-store-BLu0_ipL.js} +2 -2
  47. package/dist/ui/assets/{account-store-D1f8dn0G.js → account-store-l8BmmoRx.js} +4 -4
  48. package/dist/ui/assets/adobe-Caluo3Vg.js +2 -0
  49. package/dist/ui/assets/adobe-Cj2iYsHq.js +1 -0
  50. package/dist/ui/assets/{angular-html-Cm4-xod0.js → angular-html-aPuBvESs.js} +1 -1
  51. package/dist/ui/assets/{angular-ts-Dopuir71.js → angular-ts-ocjSXnvf.js} +1 -1
  52. package/dist/ui/assets/anthropic-messages-CpSojOI8.js +39 -0
  53. package/dist/ui/assets/anthropic-messages-DbPJ2ji9.js +39 -0
  54. package/dist/ui/assets/api-endpoint-C00IT5T9.js +1 -0
  55. package/dist/ui/assets/api-endpoint-GRCyib6X.js +1 -0
  56. package/dist/ui/assets/{apply-layout-g9ha9fDb.js → apply-layout-lJ2Uyc3p.js} +1 -1
  57. package/dist/ui/assets/{apps-D2giAoeX.js → apps-BRi5S2KV.js} +1 -1
  58. package/dist/ui/assets/{astro-E_b8esPp.js → astro-go1PgQEf.js} +1 -1
  59. package/dist/ui/assets/auto-mount-table-CdyPAwVL.js +1 -0
  60. package/dist/ui/assets/{azure-openai-DYlB7tTf.js → azure-openai-DtPDwGAY.js} +2 -2
  61. package/dist/ui/assets/azure-openai-responses-BcoOaRCx.js +1 -0
  62. package/dist/ui/assets/azure-openai-responses-DUMDrZ29.js +1 -0
  63. package/dist/ui/assets/{azure-openai-CB7Ox9_p.js → azure-openai-xFuHu_hU.js} +2 -2
  64. package/dist/ui/assets/backend-hostfs-Com-zF5W.js +1 -0
  65. package/dist/ui/assets/backend-hostfs-bQQx-S0W.js +1 -0
  66. package/dist/ui/assets/bedrock-camp-BcJEC3Pg.js +1 -0
  67. package/dist/ui/assets/bedrock-camp-LeceEQbU.js +1 -0
  68. package/dist/ui/assets/bedrock-camp-compat-CYnC9BQI.js +1 -0
  69. package/dist/ui/assets/bedrock-camp-compat-CgBMwna8.js +1 -0
  70. package/dist/ui/assets/{blade-mj2TcBTp.js → blade-DPPr6MF0.js} +1 -1
  71. package/dist/ui/assets/catppuccin-frappe-C9Q5zVZY.js +1 -0
  72. package/dist/ui/assets/catppuccin-latte-CtsyrtPq.js +1 -0
  73. package/dist/ui/assets/catppuccin-macchiato-R8nAf1vR.js +1 -0
  74. package/dist/ui/assets/catppuccin-mocha-DjuaAJKi.js +1 -0
  75. package/dist/ui/assets/cerebras-BKhMaWSl.js +1 -0
  76. package/dist/ui/assets/cerebras-CCLa0xVH.js +1 -0
  77. package/dist/ui/assets/chime-CPc6qSh5.js +1 -0
  78. package/dist/ui/assets/claude-model-version-Csn7RPVg.js +1 -0
  79. package/dist/ui/assets/claude-model-version-DoVrYsKi.js +2 -0
  80. package/dist/ui/assets/{client-BTUV7dbh.js → client-DVC0x03n.js} +1 -1
  81. package/dist/ui/assets/{composer-speech-SNeD5SER.js → composer-speech-Cy4g3lh3.js} +1 -1
  82. package/dist/ui/assets/connect-llm-FevTa-aV.js +561 -0
  83. package/dist/ui/assets/{connect-surface-NkMUeXbQ.js → connect-surface-T7iCJFeB.js} +1 -1
  84. package/dist/ui/assets/cpp-Ct9pQPqT.js +1 -0
  85. package/dist/ui/assets/{css-vJJohHMc.js → css-DlBQoFxe.js} +1 -1
  86. package/dist/ui/assets/discovery-preference-__0HPYJC.js +1 -0
  87. package/dist/ui/assets/dist-B4LJzMVB.js +1547 -0
  88. package/dist/ui/assets/{ensure-speech-assets-DvFwJX-M.js → ensure-speech-assets-CKwQ54O1.js} +1 -1
  89. package/dist/ui/assets/float-topology-DiK91BlA.js +1 -0
  90. package/dist/ui/assets/{follower-navigate-watcher-CNC7ybEv.js → follower-navigate-watcher-Dz-52eZY.js} +1 -1
  91. package/dist/ui/assets/fs-1btyYJVn.js +1 -0
  92. package/dist/ui/assets/fs-BYtJQhvh.js +2 -0
  93. package/dist/ui/assets/github-BHL_hKU_.js +2 -0
  94. package/dist/ui/assets/github-copilot-CZorsYUj.js +1 -0
  95. package/dist/ui/assets/github-copilot-DVmzgGYz.js +2 -0
  96. package/dist/ui/assets/github-fX2kuECo.js +1 -0
  97. package/dist/ui/assets/{github-install-C7YXkDBT.js → github-install-DVzD1asQ.js} +1 -1
  98. package/dist/ui/assets/{github-zip-DVWjYLIh.js → github-zip-5ekKl7Z0.js} +1 -1
  99. package/dist/ui/assets/{go-BJwz_mda.js → go-rLFTqkRN.js} +1 -1
  100. package/dist/ui/assets/google-generative-ai-Dxo91M3n.js +1 -0
  101. package/dist/ui/assets/google-generative-ai-Rjh7hNBV.js +1 -0
  102. package/dist/ui/assets/{google-shared-BMJ_JErv.js → google-shared-CzJgTu-P.js} +3 -3
  103. package/dist/ui/assets/{google-shared-YqcyR4cm.js → google-shared-DQJPCU3d.js} +3 -3
  104. package/dist/ui/assets/google-vertex-61Jj0dk6.js +1 -0
  105. package/dist/ui/assets/google-vertex-DEwkNZJm.js +1 -0
  106. package/dist/ui/assets/{haml-DboNpPfQ.js → haml-Bqgi1Cau.js} +1 -1
  107. package/dist/ui/assets/{handlebars-Bv_jLwHk.js → handlebars-JgcNzdBj.js} +1 -1
  108. package/dist/ui/assets/{hear-D33CHppO.js → hear-BqNAK8-P.js} +1 -1
  109. package/dist/ui/assets/{horizon-bright-Br1oVSNq.js → horizon-bright-DSNQnXHK.js} +1 -1
  110. package/dist/ui/assets/{host-command-G_JIdBPR.js → host-command-C3cIKdbE.js} +1 -1
  111. package/dist/ui/assets/{html-BLkwJ0Yd.js → html-BsvMqTlf.js} +1 -1
  112. package/dist/ui/assets/{html-derivative-B3p5VrMH.js → html-derivative-D9FvRNj4.js} +1 -1
  113. package/dist/ui/assets/icon-example-LUkiEXyS.js +111 -0
  114. package/dist/ui/assets/{jinja-BeFOxtqS.js → jinja-CixBDh_U.js} +1 -1
  115. package/dist/ui/assets/{js-realm-worker-Ymi_bwDP.js → js-realm-worker-iDrigwwJ.js} +1 -1
  116. package/dist/ui/assets/jsh-runtime-extensions-DpVq60Gw.js +1 -0
  117. package/dist/ui/assets/julia-B5NbrcUp.js +1 -0
  118. package/dist/ui/assets/kanagawa-dragon-Bozd7klA.js +1 -0
  119. package/dist/ui/assets/kanagawa-lotus-BmuOG9ZW.js +1 -0
  120. package/dist/ui/assets/kanagawa-wave-BML5mF2J.js +1 -0
  121. package/dist/ui/assets/{kernel-worker-CJu5HqlT.js → kernel-worker-BdKtpNzV.js} +614 -4395
  122. package/dist/ui/assets/legacy-api-aliases-BnRqMAef.js +1 -0
  123. package/dist/ui/assets/legacy-api-aliases-oJPAvhVV.js +1 -0
  124. package/dist/ui/assets/{lick-urls-AW0BSaf4.js → lick-urls-DcXOqXGm.js} +1 -1
  125. package/dist/ui/assets/{lick-ws-bridge-DiPcVRfN.js → lick-ws-bridge-CnkYvHKI.js} +1 -1
  126. package/dist/ui/assets/{lick-ws-bridge-CWRES2H2.js → lick-ws-bridge-DOJW_mZp.js} +1 -1
  127. package/dist/ui/assets/loader-B23_5sFw.js +4 -0
  128. package/dist/ui/assets/{local-llm-CwFpBJ4H.js → local-llm-BoLsVU6D.js} +1 -1
  129. package/dist/ui/assets/{local-llm-C0c86vuh.js → local-llm-aZ3BO7wK.js} +1 -1
  130. package/dist/ui/assets/loopback-2H1kMO8T.js +1 -0
  131. package/dist/ui/assets/main-CSh1z5qo.js +22 -0
  132. package/dist/ui/assets/{marko-C3klgjEa.js → marko-DYWPPmCl.js} +1 -1
  133. package/dist/ui/assets/mdc-Cno1UUUH.js +1 -0
  134. package/dist/ui/assets/mistral-conversations-BtaPxrK1.js +4 -0
  135. package/dist/ui/assets/mistral-conversations-CDLVw-9i.js +4 -0
  136. package/dist/ui/assets/{transform-messages-DEFauvrq.js → models-4WTk3EBD.js} +1 -1
  137. package/dist/ui/assets/{transform-messages-N_eMsP2M.js → models-BSkXF4T6.js} +1 -1
  138. package/dist/ui/assets/monokai-B_bV9PQ9.js +1 -0
  139. package/dist/ui/assets/mount-BCaA8NF3.js +1 -0
  140. package/dist/ui/assets/mount-ICXjya6b.js +2 -0
  141. package/dist/ui/assets/{mount-bridge-client-4blXuJO1.js → mount-bridge-client-DZE6sHdr.js} +1 -1
  142. package/dist/ui/assets/mount-recovery-CtadSXiq.js +2 -0
  143. package/dist/ui/assets/new-session-CCcPVim0.js +2 -0
  144. package/dist/ui/assets/oauth-bootstrap-CJ7pyk8I.js +2 -0
  145. package/dist/ui/assets/oauth-service-CTntqv0R.js +1 -0
  146. package/dist/ui/assets/oauth-service-Uk8UIb05.js +1 -0
  147. package/dist/ui/assets/openai-codex-C7WXAsyq.js +1 -0
  148. package/dist/ui/assets/openai-codex-DJHh6O0O.js +1 -0
  149. package/dist/ui/assets/openai-codex-responses-CPOJeFUY.js +7 -0
  150. package/dist/ui/assets/openai-codex-responses-jQR19NyX.js +7 -0
  151. package/dist/ui/assets/openai-completions-DGOcowq8.js +5 -0
  152. package/dist/ui/assets/openai-completions-DGZFJo5D.js +5 -0
  153. package/dist/ui/assets/openai-responses-CDTdSIhv.js +1 -0
  154. package/dist/ui/assets/openai-responses-bnETPgx9.js +1 -0
  155. package/dist/ui/assets/{openai-responses-shared-DxcsuzHF.js → openai-responses-shared-ChgvRZ74.js} +5 -5
  156. package/dist/ui/assets/{openai-responses-shared-DhnqxYC9.js → openai-responses-shared-DqJbHrek.js} +5 -5
  157. package/dist/ui/assets/openrouter-CIXJV3ar.js +1 -0
  158. package/dist/ui/assets/openrouter-CbIgawBs.js +1 -0
  159. package/dist/ui/assets/{openrouter-oauth-578SWfOt.js → openrouter-oauth-CfwEmxEv.js} +1 -1
  160. package/dist/ui/assets/{openrouter-oauth-BeOk-ba4.js → openrouter-oauth-ZehYXklO.js} +1 -1
  161. package/dist/ui/assets/{page-approval-service-Bbc3_KdK.js → page-approval-service-BsXoPdFJ.js} +1 -1
  162. package/dist/ui/assets/panel-rpc-handlers-Bg0_q2j9.js +2 -0
  163. package/dist/ui/assets/{panelize-shell-BRldzPxv.js → panelize-shell-DG3fFAS4.js} +1 -1
  164. package/dist/ui/assets/patterns-ChiGbijt.js +171 -0
  165. package/dist/ui/assets/php-m5Ug_San.js +1 -0
  166. package/dist/ui/assets/port-bridge-client-BhmNRlRv.js +2 -0
  167. package/dist/ui/assets/port-bridge-client-Bz2N1tvn.js +1 -0
  168. package/dist/ui/assets/{provider-qCqf7_uc.js → provider-1dH_J0Ky.js} +2 -2
  169. package/dist/ui/assets/{provider-B5MTJuhf.js → provider-CCer_iKN.js} +1 -1
  170. package/dist/ui/assets/{provider-settings-NcM2Npzg.js → provider-settings-DKXi1uSi.js} +1 -1
  171. package/dist/ui/assets/provider-settings-DZxqnVAO.js +2 -0
  172. package/dist/ui/assets/{provider-store-access-BlHUi5MH.js → provider-store-access-BthQZUzO.js} +2 -2
  173. package/dist/ui/assets/provider-store-access-NzVfMvPw.js +1 -0
  174. package/dist/ui/assets/providers-D8GPTe3s.js +2 -0
  175. package/dist/ui/assets/providers-DdfpdKUf.js +1 -0
  176. package/dist/ui/assets/proxied-fetch-BGeNrvQ4.js +2 -0
  177. package/dist/ui/assets/proxied-fetch-Co-pb0x0.js +1 -0
  178. package/dist/ui/assets/{pug-BPcX_o8k.js → pug-B4bk2kWf.js} +1 -1
  179. package/dist/ui/assets/quick-llm-DscHMm6M.js +1 -0
  180. package/dist/ui/assets/r-C5FwQflr.js +1 -0
  181. package/dist/ui/assets/{recovery-screen-CC3JYs-j.js → recovery-screen-CmxX9RlA.js} +1 -1
  182. package/dist/ui/assets/red-DX1BQOs8.js +1 -0
  183. package/dist/ui/assets/{redirect-uri-Cz0-DXMU.js → redirect-uri-CSXbRzUU.js} +1 -1
  184. package/dist/ui/assets/rose-pine-aMsaMD1D.js +1 -0
  185. package/dist/ui/assets/rose-pine-dawn-8PwUyIlP.js +1 -0
  186. package/dist/ui/assets/rose-pine-moon-DO-qXg-I.js +1 -0
  187. package/dist/ui/assets/{scss-0nEf0IT-.js → scss-BaZL6t2Y.js} +1 -1
  188. package/dist/ui/assets/secret-env-CjwX7z7b.js +1 -0
  189. package/dist/ui/assets/secret-topology-0AWfFTh5.js +1 -0
  190. package/dist/ui/assets/{secrets-bridge-client-cWDAnFqs.js → secrets-bridge-client-DCQ44RyR.js} +1 -1
  191. package/dist/ui/assets/{session-freezer-DYVYVWZ3.js → session-freezer-cQJKe1j_.js} +3 -3
  192. package/dist/ui/assets/{setup-feature-flags-remote-DtLgZPds.js → setup-feature-flags-remote-BxfewGbb.js} +1 -1
  193. package/dist/ui/assets/setup-standalone-prelude-Bv9X4-V2.js +2 -0
  194. package/dist/ui/assets/setup-sudo-B3tWN6O2.js +2 -0
  195. package/dist/ui/assets/silent-renew-backoff-C_Iv54ZG.js +1 -0
  196. package/dist/ui/assets/silent-renew-backoff-t_Cd4Zw7.js +1 -0
  197. package/dist/ui/assets/{skills-CfaCWaY6.js → skills-C8Ojzeu6.js} +1 -1
  198. package/dist/ui/assets/{slicc-diff-DsGtkf0J.js → slicc-diff-DhGIKKqP.js} +1 -1
  199. package/dist/ui/assets/slicc-version-CaunkoU5.js +1 -0
  200. package/dist/ui/assets/smithy-Dgaz7aur.js +1 -0
  201. package/dist/ui/assets/solarized-dark-UdsmMDCL.js +1 -0
  202. package/dist/ui/assets/solarized-light-C1IUL_tW.js +1 -0
  203. package/dist/ui/assets/{speak-BDT9rGzg.js → speak-BSK3Souh.js} +1 -1
  204. package/dist/ui/assets/{sql-69VAgb2g.js → sql-DvarVTMJ.js} +1 -1
  205. package/dist/ui/assets/{src-DsDPrXOS.js → src-DXdqCrdV.js} +2 -2
  206. package/dist/ui/assets/{store-sdSLaoJp.js → store-BPyCiwPs.js} +1 -1
  207. package/dist/ui/assets/{store-BQWc00Lo.js → store-CGgqI527.js} +1 -1
  208. package/dist/ui/assets/style-guide-Bgzsk7bf.js +821 -0
  209. package/dist/ui/assets/{sudo-BTuTezs4.js → sudo-1gsx4XWx.js} +2 -2
  210. package/dist/ui/assets/{svelte-B4PVQJ-7.js → svelte-D4FIy7cP.js} +1 -1
  211. package/dist/ui/assets/swift-CyEgAFGc.js +1 -0
  212. package/dist/ui/assets/temperature-support-B4x2xaWY.js +1 -0
  213. package/dist/ui/assets/temperature-support-Cpml9LfI.js +1 -0
  214. package/dist/ui/assets/transform-messages-DZg9zDcV.js +1 -0
  215. package/dist/ui/assets/transform-messages-XkZ1QnTb.js +1 -0
  216. package/dist/ui/assets/transformers-env-DPjdc2EQ.js +1 -0
  217. package/dist/ui/assets/tray-leader-CP11I609.js +1 -0
  218. package/dist/ui/assets/{tray-leave-runtime-BGfdX5KF.js → tray-leave-runtime-CN7V9V7O.js} +1 -1
  219. package/dist/ui/assets/{tray-runtime-config-B1LF8Kd4.js → tray-runtime-config-CVoPQrT2.js} +1 -1
  220. package/dist/ui/assets/tray-runtime-config-D7cmCcHJ.js +1 -0
  221. package/dist/ui/assets/ts-tags-C4Ifwy6r.js +1 -0
  222. package/dist/ui/assets/{upgrade-detection-CmsEVCLH.js → upgrade-detection-DHKcwE9c.js} +1 -1
  223. package/dist/ui/assets/vesper-DdrHHSXu.js +1 -0
  224. package/dist/ui/assets/{voice-reply-CnP5wEO_.js → voice-reply-BNX-jA0G.js} +1 -1
  225. package/dist/ui/assets/{vue-Dg0Kv3qp.js → vue-Djeyp8pE.js} +1 -1
  226. package/dist/ui/assets/{vue-vine-DdvC-EE2.js → vue-vine-By_xyXdL.js} +1 -1
  227. package/dist/ui/assets/{wc-attach-DsMfUpx8.js → wc-attach-CPoS-Z-g.js} +2 -2
  228. package/dist/ui/assets/{wc-extension-wBWx11Lq.js → wc-extension-vZctlNTg.js} +2 -2
  229. package/dist/ui/assets/wc-float-label-D7p-4xyd.js +1 -0
  230. package/dist/ui/assets/wc-follower-BgCWId1J.js +17 -0
  231. package/dist/ui/assets/wc-live-leqS7MUz.js +8 -0
  232. package/dist/ui/assets/wc-nav-CO_N4L3V.js +2 -0
  233. package/dist/ui/assets/wc-onboarding-B4o-Pdiq.js +2 -0
  234. package/dist/ui/assets/wc-placeholder-BTbGc9bq.js +4 -0
  235. package/dist/ui/assets/wc-settings-B4hsC2Um.js +51 -0
  236. package/dist/ui/assets/{wc-shell-DrXzWzBs.js → wc-shell-B9UbR2P2.js} +3 -3
  237. package/dist/ui/assets/{wc-sprinkles-Hdy-5FTU.js → wc-sprinkles-Ds-rd0k7.js} +2 -2
  238. package/dist/ui/assets/wc-tray-BQls_HTm.js +2 -0
  239. package/dist/ui/assets/{wc-tray-scoops-B2RP8cgD.js → wc-tray-scoops-D8qwcovR.js} +1 -1
  240. package/dist/ui/assets/welcome-CyCMJDqG.js +621 -0
  241. package/dist/ui/assets/whisper-session-DpDs0sDL.js +2 -0
  242. package/dist/ui/assets/x_search-C-5p00-C.js +131 -0
  243. package/dist/ui/assets/xai-grok-DzMkuuG4.js +1 -0
  244. package/dist/ui/assets/xai-grok-kLSQtmUi.js +1 -0
  245. package/dist/ui/index.html +17 -16
  246. package/dist/ui/llm-proxy-sw.js +1 -1
  247. package/dist/ui/packages/webapp/index.html +17 -16
  248. package/dist/ui/slicc-diff.js +1 -1
  249. package/package.json +1 -1
  250. package/dist/ui/assets/adobe-B034kk8u.js +0 -2
  251. package/dist/ui/assets/adobe-FLVM_96g.js +0 -1
  252. package/dist/ui/assets/anthropic-messages-BX4DpK10.js +0 -39
  253. package/dist/ui/assets/anthropic-messages-C-orWG7m.js +0 -39
  254. package/dist/ui/assets/azure-openai-responses-C2LleG-4.js +0 -1
  255. package/dist/ui/assets/azure-openai-responses-Df9YPxyp.js +0 -1
  256. package/dist/ui/assets/bedrock-camp-B0KF_4RS.js +0 -1
  257. package/dist/ui/assets/bedrock-camp-qpZqnqLa.js +0 -2
  258. package/dist/ui/assets/bridge-launch-params-zrpWWxT3.js +0 -1
  259. package/dist/ui/assets/catppuccin-frappe-3VR1Za6u.js +0 -1
  260. package/dist/ui/assets/catppuccin-latte-DwIHMF0Q.js +0 -1
  261. package/dist/ui/assets/catppuccin-macchiato-DYnBP6_5.js +0 -1
  262. package/dist/ui/assets/catppuccin-mocha-DYhrFGRu.js +0 -1
  263. package/dist/ui/assets/cerebras-DweKDbE1.js +0 -1
  264. package/dist/ui/assets/cerebras-O8AuH6NY.js +0 -1
  265. package/dist/ui/assets/cpp-CdhRINFH.js +0 -1
  266. package/dist/ui/assets/discovery-preference-fqUhjzeE.js +0 -1
  267. package/dist/ui/assets/dist-Dwa3Gdd4.js +0 -1547
  268. package/dist/ui/assets/float-topology-BgioAcOd.js +0 -1
  269. package/dist/ui/assets/fs-Bov3sJ0L.js +0 -1
  270. package/dist/ui/assets/fs-Drpegy_X.js +0 -2
  271. package/dist/ui/assets/github-CE8SlGEA.js +0 -2
  272. package/dist/ui/assets/github-copilot-DsCq9ehC.js +0 -2
  273. package/dist/ui/assets/github-copilot-ywjopCMn.js +0 -1
  274. package/dist/ui/assets/github-t3RMhkRE.js +0 -1
  275. package/dist/ui/assets/google-generative-ai-C9uw7Zks.js +0 -1
  276. package/dist/ui/assets/google-generative-ai-DHBc1oKV.js +0 -1
  277. package/dist/ui/assets/google-vertex-BaT3InWy.js +0 -1
  278. package/dist/ui/assets/google-vertex-DX8CfGr6.js +0 -1
  279. package/dist/ui/assets/julia-DibC-h6i.js +0 -1
  280. package/dist/ui/assets/kanagawa-dragon-CXtmUGW6.js +0 -1
  281. package/dist/ui/assets/kanagawa-lotus-BN08jTvb.js +0 -1
  282. package/dist/ui/assets/kanagawa-wave-CTweb8Dz.js +0 -1
  283. package/dist/ui/assets/legacy-api-aliases-CsTVszvY.js +0 -1
  284. package/dist/ui/assets/legacy-api-aliases-nSD9C16V.js +0 -1
  285. package/dist/ui/assets/loader-sgPDMLWT.js +0 -4
  286. package/dist/ui/assets/main-BWIUe9mc.js +0 -22
  287. package/dist/ui/assets/mdc-Otire2H_.js +0 -1
  288. package/dist/ui/assets/mistral-conversations-BXo-tb0V.js +0 -4
  289. package/dist/ui/assets/mistral-conversations-Ck257tvp.js +0 -4
  290. package/dist/ui/assets/monokai-CdkpiU2Y.js +0 -1
  291. package/dist/ui/assets/mount-CDH4T-Mp.js +0 -2
  292. package/dist/ui/assets/mount-CE7C-kQS.js +0 -1
  293. package/dist/ui/assets/mount-recovery-h9v3cRpd.js +0 -2
  294. package/dist/ui/assets/new-session-CU8TGRAW.js +0 -2
  295. package/dist/ui/assets/oauth-bootstrap-CRJLIz8V.js +0 -2
  296. package/dist/ui/assets/oauth-service-Bbrrl8Mr.js +0 -1
  297. package/dist/ui/assets/oauth-service-Cy5ngmcU.js +0 -1
  298. package/dist/ui/assets/openai-codex-C2u_j09G.js +0 -1
  299. package/dist/ui/assets/openai-codex-DhoN0DsA.js +0 -1
  300. package/dist/ui/assets/openai-codex-responses-BQzefg3i.js +0 -7
  301. package/dist/ui/assets/openai-codex-responses-JtcU5b3J.js +0 -7
  302. package/dist/ui/assets/openai-completions-D-HjYi8x.js +0 -5
  303. package/dist/ui/assets/openai-completions-QMfwfjiE.js +0 -5
  304. package/dist/ui/assets/openai-responses-BVHnEPuG.js +0 -1
  305. package/dist/ui/assets/openai-responses-Ca0oWhbv.js +0 -1
  306. package/dist/ui/assets/openrouter-DnjFjBY3.js +0 -1
  307. package/dist/ui/assets/openrouter-DvfkEaFA.js +0 -1
  308. package/dist/ui/assets/panel-rpc-handlers-CqcvBRTi.js +0 -2
  309. package/dist/ui/assets/php-BidqsJNR.js +0 -1
  310. package/dist/ui/assets/port-bridge-client-BbVs1yhx.js +0 -2
  311. package/dist/ui/assets/port-bridge-client-DxYLF2-N.js +0 -1
  312. package/dist/ui/assets/provider-settings-DcYK3m1J.js +0 -2
  313. package/dist/ui/assets/provider-store-access-BN6c8KtH.js +0 -1
  314. package/dist/ui/assets/providers-BAjAn8LJ.js +0 -2
  315. package/dist/ui/assets/providers-BYRmRIj_.js +0 -1
  316. package/dist/ui/assets/proxied-fetch-B4g-4VbQ.js +0 -2
  317. package/dist/ui/assets/proxied-fetch-n2pCvcgW.js +0 -1
  318. package/dist/ui/assets/quick-llm-CXBgg2d_.js +0 -1
  319. package/dist/ui/assets/r-Dzep-lPg.js +0 -1
  320. package/dist/ui/assets/red-CJ3rzSJv.js +0 -1
  321. package/dist/ui/assets/rose-pine-BthvhNj6.js +0 -1
  322. package/dist/ui/assets/rose-pine-dawn-Dg85fqjY.js +0 -1
  323. package/dist/ui/assets/rose-pine-moon-hon4tzzS.js +0 -1
  324. package/dist/ui/assets/secret-env-q4hxkt7Z.js +0 -1
  325. package/dist/ui/assets/secret-topology-xLmXoozo.js +0 -1
  326. package/dist/ui/assets/setup-standalone-prelude-B5yx5j_i.js +0 -2
  327. package/dist/ui/assets/setup-sudo-CGpFS_H9.js +0 -2
  328. package/dist/ui/assets/silent-renew-backoff-BhyOB6Rq.js +0 -1
  329. package/dist/ui/assets/silent-renew-backoff-BrAZcbzt.js +0 -1
  330. package/dist/ui/assets/slicc-version-ClAVruxy.js +0 -1
  331. package/dist/ui/assets/solarized-dark-DV17i1UV.js +0 -1
  332. package/dist/ui/assets/solarized-light-DSh2HLQt.js +0 -1
  333. package/dist/ui/assets/swift-DonLKvLd.js +0 -1
  334. package/dist/ui/assets/transformers-env-SL0zTs7S.js +0 -1
  335. package/dist/ui/assets/tray-leader-DcRtwWl-.js +0 -1
  336. package/dist/ui/assets/tray-runtime-config-CRGwg9SK.js +0 -1
  337. package/dist/ui/assets/ts-tags-BUIgHz80.js +0 -1
  338. package/dist/ui/assets/vesper-D5bVUKB1.js +0 -1
  339. package/dist/ui/assets/wc-float-label-qqb_uM9y.js +0 -1
  340. package/dist/ui/assets/wc-follower-Di7VVZ0z.js +0 -17
  341. package/dist/ui/assets/wc-live-1OpoOfN1.js +0 -8
  342. package/dist/ui/assets/wc-nav-B8ymo0Vu.js +0 -2
  343. package/dist/ui/assets/wc-onboarding-CMJYjLlt.js +0 -2
  344. package/dist/ui/assets/wc-placeholder-DIOhu2Ac.js +0 -4
  345. package/dist/ui/assets/wc-settings-D2oVzKVs.js +0 -51
  346. package/dist/ui/assets/wc-tray-CfSIy5M0.js +0 -2
  347. package/dist/ui/assets/whisper-session-Cf2gGkoR.js +0 -2
  348. package/dist/ui/assets/xai-grok-B_POoF8K.js +0 -1
  349. package/dist/ui/assets/xai-grok-D__MgEgm.js +0 -1
@@ -0,0 +1 @@
1
+ var e="# CLAUDE.md\n\nThis file covers the default virtual filesystem payload in `packages/vfs-root/`.\n\n## What This Package Contains\n\n`packages/vfs-root/` is copied into the app's virtual filesystem on init/reset. It is content, not runtime code.\n\n## Directory Structure\n\n| Path | Purpose |\n| ------------------------------------- | ------------------------------------------------------------------ |\n| `packages/vfs-root/shared/` | Shared content that becomes `/shared/` in the VFS |\n| `packages/vfs-root/workspace/` | Default workspace content that becomes `/workspace/` in the VFS |\n| `packages/vfs-root/shared/CLAUDE.md` | Agent-facing runtime instructions bundled into `/shared/CLAUDE.md` |\n| `packages/vfs-root/shared/MEMORY.md` | User-editable memory curator config bundled as `/shared/MEMORY.md` |\n| `packages/vfs-root/shared/sprinkles/` | Built-in sprinkle UIs |\n| `packages/vfs-root/shared/sounds/` | Shared notification sounds |\n| `packages/vfs-root/workspace/skills/` | Default installable workspace skills |\n\n## Adding Default Content\n\n### Memory curator\n\n- `shared/MEMORY.md` is the single source for the runner's build-time fallback and the seeded\n `/shared/MEMORY.md` file.\n- The file is seeded only when absent, so user and skill customizations survive later boots.\n- `MEMORY.md` is user-edited only; the curator intentionally cannot rewrite its own instructions.\n- Frontmatter uses a strict YAML subset: block-array items may have `#` comment tails; inline\n entries containing commas must be quoted. A bare `/` is rejected from `writablePaths`.\n- Frontmatter `allowedCommands` entries extend the curator's built-in base set; they do not\n replace or remove base commands.\n- The curator may rewrite the entire `/workspace/CLAUDE.md`, and the hard character budget\n applies to the entire file with no protected region.\n- Every `##`/`###` memory section ends with a `YYYY-MM-DD` last-verified date, in UTC to match\n archive timestamps. Each pass re-verifies the oldest sections first; undated sections are\n maximally stale.\n- The curator's write grant is `/workspace/CLAUDE.md` alone, not `/workspace/`. It can run `upskill`\n to look up a skill for a pitfall it found, and a directory-wide grant would also let it install\n into `/workspace/skills/`. Reads still cover `/workspace/`. Single-file entries in\n `writablePaths` work because `generateScoopSudoers` emits both the bare path and the `/**` form.\n- The pass is detached, so it spawns with `notifyOnComplete`. Its closing message reaches the cone\n on the `scoop-notify` channel; that is where a skill suggestion lands. Without it the report is\n discarded and the cone never learns the pass ran.\n- Turn count is what a pass costs, because every turn re-reads the whole context as a cache read.\n Two things keep it down, and both belong to the prompt rather than the runtime: `thinkingLevel`\n (default `medium`; spawned agents otherwise resolve to `off`) so the curator plans the cut\n instead of converging by trial and error, and the archive reading recipes so it never `cat`s a\n multi-megabyte archive whose `slicc:session-data` block is a single line holding half the file.\n\n### Skills\n\n- Add new built-in workspace skills under `packages/vfs-root/workspace/skills/<skill-name>/`.\n- Include `SKILL.md` and any companion assets or `.jsh` scripts the skill needs.\n\n### Sprinkles\n\n- Add built-in sprinkles under `packages/vfs-root/shared/sprinkles/<name>/`.\n- Keep the main file named `<name>.shtml` to match discovery and sprinkle naming conventions.\n\n### Sounds\n\n- Add shared sounds under `packages/vfs-root/shared/sounds/`.\n- Prefer stable filenames because shell commands and docs may reference them directly.\n\n## External Handoffs\n\n- Mechanism: RFC 8288 `Link` response header carrying `https://www.sliccy.ai/rel/handoff` or `https://www.sliccy.ai/rel/upskill` on a main-frame document response → `navigate` lick → cone approval card.\n- Agent-facing flow: `packages/vfs-root/workspace/skills/handoff/SKILL.md` (bundled to `/workspace/skills/handoff/SKILL.md`) and the trigger line in `shared/CLAUDE.md` (bundled to `/shared/CLAUDE.md`).\n- Protocol reference: `docs/slicc-handoff.md`.\n- When handoff behavior changes, keep the skill, `shared/CLAUDE.md`, and `docs/slicc-handoff.md` aligned — do not duplicate their content here.\n\n## Important Distinction\n\n`packages/vfs-root/shared/CLAUDE.md` is **agent-facing runtime content** bundled into the virtual filesystem.\n\nIt is different from the developer-facing `CLAUDE.md` files in the repository. Do not merge those roles together.\n";export{e as default};
@@ -0,0 +1 @@
1
+ var e='# sliccy\n\nAI agent in SLICC, a browser-native runtime: code, automate, browse, orchestrate parallel agents.\n\n## Vocabulary\n\n- **Cone**: You. Orchestrate scoops, talk to the human, full FS access.\n- **Scoops**: Isolated sub-agents (`scoop_scoop`, `feed_scoop`, `drop_scoop`, `agent` one-shot).\n- **Sprinkles**: Persistent UI panels (`.shtml`), owned by a long-lived scoop.\n- **Dips**: Inline `shtml` chat widgets; ephemeral, lick-only.\n- **Licks**: Events routed to scoops (below).\n- **Trays**: Remote runtimes. `host` lists; `--runtime=<id>` targets.\n\n## Explore first\n\n100+ commands. When unsure: `commands`, `<cmd> --help`, `man <topic>`, `skill list`.\n\n**Never say "I can\'t" without checking.** If stuck: `upskill search "<query>"`; `upskill tabs` for tab skills.\n\n## SLICC-native commands\n\nOften missed:\n\n- `oauth-token`, `mcp add`, `webhook`, `crontask`, `agent`, `serve`, `ffmpeg`, `hf`, `usb`/`serial`/`hid`/`esptool`, `workflow`\n\n## Principles\n\n- **Scoops do the heavy lifting. The cone orchestrates and synthesizes.** See `man delegation`.\n- When something fails, try another approach.\n- New capabilities = skills, not features. Author: `/workspace/skills/skill-authoring/SKILL.md`.\n\n## Sprinkles\n\nOne scoop per sprinkle, named identically. Cone MUST NOT write `.shtml`/run `sprinkle` — delegate via `feed_scoop`. See `man sprinkle`.\n\n## Dips\n\nInline `shtml` chat widgets — sandboxed, ephemeral, lick-only; the cone writes them directly (buttons emit `slicc.lick(...)`). Persistent UI → Sprinkles. Authoring: `/workspace/skills/dips/SKILL.md`.\n\n## Licks\n\nEvents arrive as `[<Event>: <name>]` with JSON body. **Navigate** (handoff): `man handoff`. **Discovery** (`[Discovery Event: <url>]`): origin advertises agentic resources (ai-catalog.json/llms.txt) — informational; you MAY fetch/act (`mcp add`, read `llms.txt`), never required. **Webhook/Cron/File Watch**: `/workspace/skills/automation/SKILL.md`. **Sprinkle** routes to its scoop. Scoops return on `scoop-notify`/`scoop-idle`/`scoop-wait`.\n\n**Actionable** — `lick_confirm`/`lick_dismiss`. navigate·upskill → `upskill`; session-reload·mount-recovery → re-run `mount`; upgrade → update files; session-reload plain → dismiss-only; navigate·handoff → human-gated.\n\n## Workflows\n\n`workflow run <file.js>` — parallel fan-out, backgrounded; result at `/shared/workflow-runs/<id>.json` (`--wait` blocks). API: `agent(prompt,{schema?,thinking?})`, `parallel`, `pipeline`, `phase`, `log`. Deterministic (`Date`/`Math.random`/`crypto`/timers throw). `workflow status|list|stop|save <id>`.\n\n## Approvals (sudo)\n\n`/etc/sudoers` gates actions; deny → exit 1/`EACCES`. `Cmnd`/`Read`/`Write`/`Export <glob>` (+`NOPASSWD`); "Always" → `sudoers.d/granted`. `sudo <cmd>` requests one. Scoops escalate via `sudo_request` (you resolve; `always` persists).\n\n## Style\n\nProfessional tool, not chatbot. No emoji.\n\n## Memory\n\nPersists across sessions. Add durable user prefs; prune stale. Each scoop has its own `CLAUDE.md`.\n';export{e as default};
@@ -0,0 +1,135 @@
1
+ var e=`---
2
+ writablePaths:
3
+ - /workspace/CLAUDE.md
4
+ visiblePaths:
5
+ - /sessions/
6
+ - /shared/
7
+ - /workspace/
8
+ allowedCommands:
9
+ - awk
10
+ - cat
11
+ - cp
12
+ - cut
13
+ - echo
14
+ - file
15
+ - find
16
+ - grep
17
+ - head
18
+ - jq # structured reads of JSON stores such as /shared/loose-ends.json
19
+ - ls
20
+ - mkdir
21
+ - mv
22
+ - od # read-only byte inspection of corrupted stores
23
+ - printf
24
+ - rg # recursive, .gitignore-aware search; what the curator actually uses over find|xargs grep
25
+ - sed
26
+ - sort
27
+ - tail
28
+ - tr
29
+ - uniq
30
+ - upskill
31
+ - wc
32
+ timeoutSeconds: 1200
33
+ thinkingLevel: medium
34
+ ---
35
+
36
+ # Memory curator
37
+
38
+ Curate the durable memory for session {{SESSION_COUNT}}. Today's date is {{TODAY}}.
39
+
40
+ **Work fast: a full pass should finish in well under 10 minutes.** The run is hard-stopped at 20 minutes, and a kill mid-write can corrupt the memory file or leave it over budget — so mine the three signals, rewrite the file, compact it in the same pass, and stop, rather than exploring the archive exhaustively.
41
+
42
+ Read the entire current memory at {{MEMORY_PATH}} if it exists. Then mine the archived session at {{SESSION_ARCHIVE_PATH}} using the reading recipes below. Rewrite the entire {{MEMORY_PATH}} file with the durable information worth carrying into future sessions. Every part of the file is editable and counts toward the budget.
43
+
44
+ ## What to look for
45
+
46
+ Three things carry across sessions, and each has its own place in the archive:
47
+
48
+ | Look for | Where it lives |
49
+ | --------------- | ---------------------------------------------------------------------- |
50
+ | **Preferences** | the user's own messages — how they want things done, and what to avoid |
51
+ | **Projects** | tool-call arguments — the paths, repos and files actually worked on |
52
+ | **Pitfalls** | failed tool calls — what broke, and the error that proves it |
53
+
54
+ Pitfalls are the highest-value and most-often-lost category: a failure that cost half an hour is worth one line next time. Keep the error text that identifies it, not the stack trace.
55
+
56
+ ## Reading the session archive
57
+
58
+ **Never \`cat\` the archive and never \`head\` it.** Archives reach several megabytes, and the machine-readable \`<!-- slicc:session-data ... -->\` block is a _single line_ holding the whole session as JSON — roughly half the file. Reading it costs a fortune and tells you nothing the prose below it does not. Whole \`### Tool\` result bodies are the other half and are equally not worth reading.
59
+
60
+ Check the size first, then pull the three signals separately. Together they run about 1% of the archive, so these work on a 2.5 MB file as happily as on a small one.
61
+
62
+ \`\`\`bash
63
+ wc -c {{SESSION_ARCHIVE_PATH}}
64
+
65
+ # Preferences — what the user asked for, in their words.
66
+ sed '/^<!-- slicc:session-data$/,/^-->$/d' {{SESSION_ARCHIVE_PATH}} \\
67
+ | awk '/^## User/{p=1;next} /^## (Assistant|Summary)/{p=0} /^### Tool/{p=0} p'
68
+
69
+ # Projects — the paths touched most, which name the work.
70
+ sed '/^<!-- slicc:session-data$/,/^-->$/d' {{SESSION_ARCHIVE_PATH}} \\
71
+ | grep -o '/[A-Za-z0-9_][A-Za-z0-9_./-]\\{3,\\}' \\
72
+ | sort | uniq -c | sort -rn | head -40
73
+
74
+ # Pitfalls — failed calls with the input that caused them.
75
+ sed '/^<!-- slicc:session-data$/,/^-->$/d' {{SESSION_ARCHIVE_PATH}} \\
76
+ | grep -B6 '^Result:.*\\(rror\\|not found\\|failed\\|denied\\|ENOENT\\|fatal\\)' \\
77
+ | cut -c1-200
78
+ \`\`\`
79
+
80
+ Only if something is still missing, reach into one specific block with \`grep -n\` plus a bounded \`sed -n 'START,ENDp'\`. Never widen these to the whole file.
81
+
82
+ ## Suggesting a skill
83
+
84
+ A recurring pitfall is often a missing skill. Once you know what broke and what the work was, spend **one** lookup on it — no more, and skip it entirely when the session had no failures:
85
+
86
+ \`\`\`bash
87
+ upskill search <a few words from the pitfall>
88
+ upskill list # what is already installed — never suggest a duplicate
89
+ \`\`\`
90
+
91
+ \`upskill ai-ecoverse/skills\` and \`upskill adobe/skills\` list a repo's skills without installing anything. **Never install.** You have no write access to the skills tree, so an install attempt will fail or interrupt the user for approval; recommending is your job, deciding is theirs. Put any suggestion in your closing message, with the pitfall it addresses — that message is delivered to the main agent.
92
+
93
+ ## Working within the budget
94
+
95
+ Measure, decide, then write once. Do not converge on the budget by trial and error — each attempt re-reads your whole context and is billed accordingly.
96
+
97
+ 1. \`wc -c {{MEMORY_PATH}}\` to get the current size, and subtract {{BUDGET_CHARS}} to get the exact surplus.
98
+ 2. Decide up front which sections absorb that surplus, oldest-dated first, and roughly what each one costs. Budget the whole cut before editing anything.
99
+ 3. Write the complete file once, already inside the budget. Never write a version you know to be over budget «to fix in the next step»: the pass can be killed at any moment, and the file you leave behind is the one the next session inherits.
100
+ 4. \`wc -c {{MEMORY_PATH}}\` to confirm. If you are still over, cut a whole section rather than shaving a few characters at a time.
101
+
102
+ Per-section costs come out of \`awk\`, not an interpreter: \`awk '/^## /{h=$0} {c[h]+=length($0)+1} END{for(k in c) printf "%7d %s\\n", c[k], k}' {{MEMORY_PATH}} | sort -rn\` tells you which sections pay for the surplus.
103
+
104
+ To draft before committing, draft in \`{{SCRATCH_DIR}}\`. That is your own scratch folder: writable without a grant and without an approval prompt, private to this pass, and deleted when the pass ends. Reuse one filename such as \`{{SCRATCH_DIR}}/draft.md\` rather than numbering drafts — you have no \`rm\`, so every extra draft survives until the folder goes.
105
+
106
+ If the pass is running long, drop the oldest-dated section wholesale and write. An under-budget file missing one stale section is a good outcome; an over-budget file is a broken one.
107
+
108
+ Rules:
109
+
110
+ - Keep durable preferences, stable project facts, validated approaches, named resources, and the pitfalls worth not repeating.
111
+ - Organize retained information into concise per-topic sections rather than one flat list. Let the topic lead the heading; preferences, projects and pitfalls are what to look for, not a required table of contents.
112
+ - Never write next to the memory file. It is versioned, so backups and scratch copies beside it are noise; drafts belong in \`{{SCRATCH_DIR}}\`. Do not draft in \`/tmp/\` either: it is shared with every other scoop, which can read and overwrite what you leave there.
113
+ - Shell tools only. Interpreters such as \`python3\` and \`node -e\` are not on your allow-list, so reaching for one costs an approval round-trip and may fail even when approved — \`awk\`, \`sed\`, \`wc\` and \`sort\` cover every measurement this pass needs.
114
+ - End every \`##\` and \`###\` section heading with its last-verified date in \`YYYY-MM-DD\` form, for example \`## Deployment pipeline (2026-08-06)\`. Dates are UTC, matching the session archive timestamps, so a late-evening freeze west of UTC stamps the next day.
115
+ - Stamp sections you write or confirm with today's date, {{TODAY}}.
116
+ - Prioritize re-verifying the oldest-dated sections. Treat undated headings as maximally stale and date them on this pass.
117
+ - Drop ephemera and duplicates. Delete or merge sections that are stale, superseded, or unverifiable.
118
+ - Preserve concrete identifiers such as file paths, URLs, IDs, and names verbatim.
119
+ - Keep the entire file at or below the hard budget of {{BUDGET_CHARS}} characters, with no exempt region. When over budget, compact or remove the oldest-dated sections first.
120
+ - Write the result to {{MEMORY_PATH}}; do not merely return it in your response.
121
+
122
+ <!-- How to customize
123
+ Add curator instructions here, for example: also update the knowledge base at /path following its WIKI.md. Extend visiblePaths or writablePaths above to grant access to extra stores, and adjust timeoutSeconds when needed.
124
+
125
+ writablePaths defaults to the memory file alone rather than /workspace/, because the curator can run upskill and a directory-wide grant would also let it install skills into /workspace/skills. Widen it only as far as a task genuinely needs; a single file is a valid entry, not just a directory.
126
+
127
+ Scratch space needs no entry here. The curator spawns under a fixed per-cone name (memory-curator for the primary cone), so the bridge grants it {{SCRATCH_DIR}} — private to the run, writable without a prompt, and removed when the pass ends — and that is where the prompt sends drafts. /tmp/ is writable too, but it is shared with every other scoop and visible to the cone, so a full rewrite of durable memory does not belong there.
128
+
129
+ thinkingLevel accepts off, minimal, low, medium, high, or xhigh. Curation is cheaper with reasoning than without: an unreasoned pass converges on the budget by trial and error, and because every turn re-reads the whole context, turn count is what the pass costs. Lower it to off only if you also shrink the prompt to a single mechanical instruction.
130
+
131
+ MEMORY.md is user-edited only: the curator intentionally has read-only access to /shared/ and cannot rewrite its own instructions. A bare / is rejected in writablePaths.
132
+
133
+ Frontmatter supports a strict YAML subset. Arrays may use the block form above (with optional # comment tails) or inline form such as [cat, grep]. \`allowedCommands\` is additive: listed commands extend the built-in base set without replacing it. Inline entries containing commas must be quoted, for example ["/knowledge/lars,rebecca/"].
134
+ -->
135
+ `;export{e as default};
@@ -0,0 +1,296 @@
1
+ var e=`---
2
+ name: delegation
3
+ description: |
4
+ Use this when deciding whether to do work yourself or delegate to a scoop, when
5
+ fanning out parallel scoops, or when picking models for sub-agents. Covers
6
+ scoop lifecycle (when to drop), parallel orchestration (\`scoop_mute\`,
7
+ \`scoop_unmute\`, \`scoop_wait\`), one-shot ephemeral sub-agents via the \`agent\`
8
+ shell command, and model selection. Read this BEFORE running \`scoop_scoop\` for
9
+ non-trivial work.
10
+ allowed-tools: bash
11
+ ---
12
+
13
+ # Delegation
14
+
15
+ Scoops do the heavy lifting; the cone orchestrates and synthesizes. This skill is about choosing how to delegate, not about administering scoops.
16
+
17
+ ## When to delegate
18
+
19
+ **Default to delegation.** Parallel scoops almost always finish faster, and the cone's job is synthesis.
20
+
21
+ Delegate when:
22
+
23
+ - Multiple independent sources (scraping 3 sites = 3 scoops).
24
+ - Time-consuming work that doesn't need direct oversight.
25
+ - Work expressible as a clear, self-contained brief.
26
+
27
+ Do it yourself when:
28
+
29
+ - Single quick lookup (one page, one API call).
30
+ - Real-time adaptation needed (navigating broken URLs).
31
+ - Overhead of spawning exceeds benefit.
32
+
33
+ ## Brief for authority, not for execution
34
+
35
+ The most common delegation failure is **the cone doing too much pre-work before delegating**. The cone researches the topic, makes the design decisions, picks the approach, and then hands the scoop a pre-cooked plan to type out. This is bad on three axes:
36
+
37
+ - **Pollutes the scoop's context.** The brief is bloated with conclusions the scoop now has to re-derive an opinion on, instead of facts it can act on.
38
+ - **Strips the scoop of autonomy.** A scoop that's been told what to think can't push back on a bad call or notice a better path mid-task. You get a typist, not a collaborator.
39
+ - **Wastes the cone's tokens.** The cone's strength is orchestration — picking the right scoops, synthesizing their outputs. Doing the research itself burns the cone's context on work that's parallelizable.
40
+
41
+ **Heuristic: if the cone reads files, runs commands, or makes decisions before delegating, that should have been part of the scoop's brief.** Hand the scoop the question, the constraints, and the access — let it decide.
42
+
43
+ | Bad (cone over-prepares) | Good (scoop decides) |
44
+ | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
45
+ | Cone reads 5 files, picks an approach, tells scoop "implement approach X in file Y." | Scoop is told "the user wants Z; the relevant code is under \`/workspace/src/\`. Pick an approach and implement it." |
46
+ | Cone scrapes 3 docs, summarizes, then asks scoop to "write a comparison based on this summary." | Scoop is told "compare libraries A, B, C for this use case. Their docs are at <urls>. Decide and write the comparison." |
47
+ | Cone debugs a failure, isolates the bug, then asks scoop to "fix the off-by-one in line 42." | Scoop is told "this command fails with \`<output>\`. Find and fix the bug." (Even better: a one-shot \`agent\` for cheap, deterministic bug-fixes.) |
48
+
49
+ Two carve-outs where pre-work IS the cone's job:
50
+
51
+ 1. **Routing decisions.** Picking which scoop gets which slice of a fan-out is orchestration, not pre-cooking.
52
+ 2. **Synthesis after the fact.** Reading scoop outputs to combine them is the cone's whole point.
53
+
54
+ If a scoop comes back with a wrong call, **drop it and re-spawn with a better brief** — don't feed a correction. Corrections compound the autonomy problem.
55
+
56
+ ## Scoop lifecycle
57
+
58
+ Drop scoops when done — but **NEVER drop a scoop that owns a sprinkle**.
59
+
60
+ Drop when:
61
+
62
+ - Task completed and results synthesized.
63
+ - Stuck or misbehaving (drop and re-spawn with a better brief).
64
+
65
+ Never drop when:
66
+
67
+ - It owns an open sprinkle (must stay alive for the sprinkle's lifetime).
68
+ - Running a recurring/long-running task (feed watcher, webhook handler).
69
+ - Work is still in progress (dropping loses all context).
70
+
71
+ ## Three delegation primitives
72
+
73
+ | Primitive | Conversation | Sprinkle ownership | Auto-cleanup | When to use |
74
+ | ---------------------------- | ------------------------ | ------------------ | ----------------- | ----------------------------------------------------------- |
75
+ | \`scoop_scoop\` + \`feed_scoop\` | Persistent (multi-turn) | Yes | No (\`drop_scoop\`) | Long-lived work; sprinkle owners; conversational follow-ups |
76
+ | \`scoop_wait\` / \`scoop_mute\` | Persistent (multi-turn) | Yes | No | Parallel fan-out where you want one synthesis turn |
77
+ | \`agent\` (shell command) | One-shot (single prompt) | No | Yes (on exit) | Cheap, predictable, composable; no cone follow-up needed |
78
+
79
+ ### \`agent\` — one-shot ephemeral sub-agents
80
+
81
+ \`agent\` is a shell command that spawns a one-shot sub-scoop, feeds it a prompt, blocks until the agent loop completes, and prints the final message on stdout. Runs from any bash context (terminal, \`feed_scoop\` prompt, \`.jsh\` script, dip lick handler, sprinkle button handler).
82
+
83
+ \`\`\`
84
+ agent <cwd> <allowed-commands> <prompt> [--model <id>] [--read-only <paths>] [--background-after <s>]
85
+ \`\`\`
86
+
87
+ - \`<cwd>\` — sole writable prefix (plus \`/shared/\`, the scoop's scratch folder, and \`/tmp/\`). Relative paths resolve against the caller's cwd.
88
+ - \`<allowed-commands>\` — comma-separated allow-list; \`*\` for unrestricted.
89
+ - \`<prompt>\` — forwarded verbatim. The spawned scoop has no access to the caller's history; pack context into the prompt.
90
+ - \`--model\` — defaults to the parent scoop's model (or the cone's, when invoked from the terminal). Accepts an exact id, a shorthand (\`haiku\`, \`sonnet\`, \`claude-haiku-4-5\`), or the \`provider:model\` form \`models\` prints (\`openrouter:openai/gpt-5.6-terra-pro\`). A bare id resolves against the selected provider first, then against any other configured provider that offers it; if several do, the error lists the qualified ids to pick from. The scoop runs on the provider the model resolved from. An id that cannot be resolved is a hard error (exit 1) — it never silently falls back to the parent's model. Models from a provider other than the selected one must additionally be allowed in \`/etc/models\` (see [Model access policy](#model-access-policy)); a blocked model exits 1 and the error quotes the line to add.
91
+ - \`--read-only\` — pure-replace list of read-only paths. Default: the **owning cone's** workspace (plus \`/workspace/skills/\`) and the invoking shell's cwd. When replacing it, name your own cone's workspace — a literal \`/workspace/\` is the primary cone's, not yours.
92
+ - \`--background-after <seconds>\` — how long the spawned scoop's \`bash\` waits for a command before detaching it and moving on (default 600). Nobody can cancel a spawned scoop's turn, so a command that never returns would otherwise burn the whole run on one call; a detached command reports its exit code back to that scoop as a \`Background Command\` lick. \`0\` detaches every command immediately.
93
+
94
+ **Critical property: no handoff.** Ephemeral scoops do NOT notify the cone on completion. Running \`agent\` from a non-cone shell does not trigger an unsolicited cone turn. The caller gets the result on stdout, nothing else. This makes \`agent\` the right choice for cheap, predictable interactions inside dips and sprinkles where you don't want the cone or owning scoop woken up.
95
+
96
+ \`\`\`bash
97
+ # Parallel, collected to one file. No cone turns spawned.
98
+ for url in site-a site-b site-c; do
99
+ agent /tmp "curl,jq" "Fetch https://$url/api, return the top-level title field." >> /tmp/titles.txt &
100
+ done
101
+ wait
102
+
103
+ # Focused refactor with a restricted allow-list.
104
+ agent /workspace/src "rg,sed,node" "Rename getCwd to getCurrentWorkingDirectory across *.ts"
105
+
106
+ # Cheap one-shot from a faster model.
107
+ agent . '*' 'Summarize the README in one sentence.' --model claude-haiku-4-5
108
+ \`\`\`
109
+
110
+ For dip and sprinkle interaction patterns built on \`agent\`, see \`/workspace/skills/dips/SKILL.md\` and \`/workspace/skills/sprinkles/SKILL.md\`.
111
+
112
+ ## Shaping the scoop's sandbox: \`visiblePaths\`, \`writablePaths\`, \`allowedCommands\`
113
+
114
+ \`scoop_scoop\` accepts three sandbox-shaping parameters. **They are how you give a scoop authority — by widening or narrowing what it can read, write, and run.** A scoop that can't reach the files it needs has no autonomy; pre-cooking the brief is what you do to compensate. Get the sandbox right and the brief gets shorter.
115
+
116
+ | Param | What it controls | Default | Pure replace? |
117
+ | ----------------- | -------------------------------------- | -------------------------------------- | ------------- |
118
+ | \`visiblePaths\` | Read-only VFS paths the scoop can SEE | \`["/workspace/"]\` | Yes |
119
+ | \`writablePaths\` | VFS paths the scoop can READ AND WRITE | \`["/scoops/<folder>/", "/shared/"]\` | Yes |
120
+ | \`allowedCommands\` | Shell command allow-list | unrestricted (every built-in + \`.jsh\`) | Yes |
121
+
122
+ "Pure replace" means what you set is what you get — the value isn't merged with the default. Pass \`[]\` to drop it entirely. Trailing slashes recommended on path entries (e.g. \`/shared/data/\`).
123
+
124
+ Subtleties:
125
+
126
+ - **\`writablePaths\` are always readable too.** A true read-nothing sandbox needs both \`visiblePaths: []\` AND \`writablePaths: []\`.
127
+ - **Mounts remain readable regardless** of \`visiblePaths\`. \`mount\` overlays are always visible — that's how scoops can work against a mounted S3 bucket or DA repo without you naming the path explicitly.
128
+ - **\`allowedCommands\` applies recursively** — pipelines, command substitutions, and network commands are all gated. Pass \`["*"]\` for explicit unrestricted.
129
+
130
+ ### How to choose
131
+
132
+ Ask three questions, in order:
133
+
134
+ 1. **What does the scoop need to read?** Files it must consume — source tree, docs, mounted data — go in \`visiblePaths\`. Default \`/workspace/\` is fine for most "do something in the project" briefs. Add specific paths (\`/shared/data/\`, \`/mnt/da/\`) for narrower scopes.
135
+ 2. **What is it allowed to change?** Output dirs, the file it's editing, the sprinkle path it owns. Default writable scratch (\`/scoops/<folder>/\`) plus \`/shared/\` is fine for scoops producing artifacts. **Tighten this when the scoop should not modify production code** — e.g. a research scoop with \`writablePaths: ["/scoops/<folder>/"]\` only.
136
+ 3. **What commands does it need?** Default unrestricted is right when the scoop will figure out its own toolchain. Tighten only when narrowing to a known set of tools improves reliability or safety — e.g. a scraper with \`["curl","jq"]\`, or a refactor scoop with \`["rg","sed","node"]\`.
137
+
138
+ ### Patterns
139
+
140
+ \`\`\`
141
+ # Default sandbox: full project, own scratch dir, all commands.
142
+ # Right for most "do this in the project" briefs.
143
+ scoop_scoop({ name: "fix-bug", prompt: "..." })
144
+
145
+ # Read-only research scoop. Can read everything, can't change anything,
146
+ # can use whatever commands it needs to investigate.
147
+ scoop_scoop({
148
+ name: "auth-research",
149
+ visiblePaths: ["/workspace/", "/shared/"],
150
+ writablePaths: ["/scoops/auth-research/"],
151
+ prompt: "Map the auth flow across the codebase and write findings to /scoops/auth-research/notes.md."
152
+ })
153
+
154
+ # Sprinkle-owning scoop. Needs write access to its sprinkle path.
155
+ scoop_scoop({
156
+ name: "giro-winners",
157
+ writablePaths: ["/scoops/giro-winners/", "/shared/sprinkles/giro-winners/"],
158
+ prompt: "..."
159
+ })
160
+
161
+ # Tight scraper. Only sees public docs, only runs network/json tools,
162
+ # writes to its own scratch.
163
+ scoop_scoop({
164
+ name: "scraper",
165
+ visiblePaths: [],
166
+ writablePaths: ["/scoops/scraper/"],
167
+ allowedCommands: ["curl", "jq", "rg"],
168
+ prompt: "Fetch <urls>, extract the price field from each, write a CSV to /scoops/scraper/out.csv."
169
+ })
170
+
171
+ # Mount-only scoop. Sees just the DA mount, can write back to it.
172
+ # Mount overlays remain readable regardless of visiblePaths.
173
+ scoop_scoop({
174
+ name: "da-editor",
175
+ visiblePaths: [],
176
+ writablePaths: ["/mnt/da/", "/scoops/da-editor/"],
177
+ prompt: "Edit /mnt/da/index.html to ..."
178
+ })
179
+ \`\`\`
180
+
181
+ ### Don't
182
+
183
+ - Don't widen \`writablePaths\` "just in case." A scoop with surprise write access can clobber files outside its task — drop and re-spawn with a tighter scope is cheaper than recovering from that.
184
+ - Don't narrow \`allowedCommands\` to "look secure" if you don't know which commands the scoop will need. The agent will hit a wall mid-task and either lie ("I'll skip that step") or spam tool errors.
185
+ - Don't forget the \`writablePaths\`-also-readable rule. \`visiblePaths: []\` alone does not produce a blind sandbox.
186
+
187
+ ### \`background_after\` — bounding a scoop's slow commands
188
+
189
+ \`scoop_scoop({ background_after: <seconds> })\` sets how long that scoop's \`bash\`
190
+ tool waits for a command before detaching it and continuing the turn (default
191
+ 600). This is a resilience knob, not a sandbox one: a scoop's turn cannot be
192
+ cancelled by anyone, so a command that never returns would hang the scoop (and,
193
+ for a blocking \`agent\` call, its caller) indefinitely. When a detached command
194
+ finishes, that scoop receives a \`Background Command\` lick with the exit code, a
195
+ preview, and the path to the full output.
196
+
197
+ \`\`\`
198
+ # A scoop whose commands must never stall it for more than a minute.
199
+ scoop_scoop({ name: "flaky-net", background_after: 60, allowedCommands: ["curl", "jq"], prompt: "..." })
200
+ \`\`\`
201
+
202
+ The scoop can also override the budget per call (\`bash({ command, background_after, timeout })\`). Each run is a real pid: \`ps\` lists a detached job and \`kill <pid>\` stops it, so \`timeout\` is a kill rather than just a detach.
203
+
204
+ ## Parallel orchestration: \`scoop_mute\` / \`scoop_unmute\` / \`scoop_wait\`
205
+
206
+ By default, every non-ephemeral scoop completion fires a \`scoop-notify\` event that wakes the cone for a fresh turn. Fanning out N scoops in parallel produces N extra cone turns whose only job is to acknowledge "scoop X finished" — expensive in tokens, disruptive to orchestration.
207
+
208
+ These three cone-only tools collapse the fan-out into a single follow-up turn:
209
+
210
+ - **\`scoop_mute({ scoop_names })\`** — suspends \`scoop-notify\` for the listed scoops. Completions arriving while muted are stashed (full response persisted to \`/shared/scoop-notifications/*.md\`); they do NOT trigger a cone turn.
211
+ - **\`scoop_unmute({ scoop_names })\`** — resumes notifications AND returns every stashed completion inline as the tool's result. The cone reads the summaries in the current turn instead of one extra turn per scoop.
212
+ - **\`scoop_wait({ scoop_names, timeout_ms? })\`** — schedules a NON-BLOCKING wait. Returns immediately so the cone can keep working; when every listed scoop completes (or the timeout fires) the orchestrator delivers a single \`scoop-wait\` channel lick with all captured summaries. Target scoops are implicitly muted for the wait's duration so individual \`scoop-notify\` events don't pre-empt the eventual lick. \`timeout_ms: 0\` fires on the next tick with whatever is already done. Omit \`timeout_ms\` to wait indefinitely. Pre-existing \`scoop_mute\` state survives the wait.
213
+
214
+ ### When to use which
215
+
216
+ - **Fan-out + synthesis** (your next useful step depends on all scoops) → \`scoop_wait\`.
217
+ - **Background work you'll check later** → \`scoop_mute\` now, \`scoop_unmute\` when you want the summaries.
218
+ - **Single delegation, no parallelism** → don't mute. Default \`scoop-notify\` is fine.
219
+
220
+ ### Examples
221
+
222
+ \`\`\`
223
+ # Fan-out + synthesize:
224
+ feed_scoop({ scoop_name: "writer-a", prompt: "Draft intro" })
225
+ feed_scoop({ scoop_name: "writer-b", prompt: "Draft outro" })
226
+ scoop_wait({ scoop_names: ["writer-a", "writer-b"], timeout_ms: 600000 })
227
+ # Returns immediately. Cone keeps working. When both finish (or 10 min), a single
228
+ # \`scoop-wait\` lick wakes the cone with both summaries; the next turn synthesizes.
229
+
230
+ # Background, poll non-blockingly:
231
+ scoop_mute({ scoop_names: ["scraper"] })
232
+ feed_scoop({ scoop_name: "scraper", prompt: "Collect URLs from the sitemap" })
233
+ # ... do other work ...
234
+ scoop_unmute({ scoop_names: ["scraper"] })
235
+ # Tool result has the stashed summary or "No stashed completions".
236
+ \`\`\`
237
+
238
+ ### Notes
239
+
240
+ - Full response is always persisted to \`/shared/scoop-notifications/<timestamp>-<folder>-<id>.md\` (bounded to the 200 most recent). The summary string in the tool result is truncated at 20 000 characters; read the VFS path when you need the full output.
241
+ - Unknown scoop names are reported in the result but do not abort the call.
242
+ - Dropping or re-registering a muted scoop is safe: \`unregisterScoop\` releases waiters (resolving as \`timedOut: true\`) and clears mute/pending state.
243
+
244
+ ## Inspecting delegation cost
245
+
246
+ Run \`cost\` to inspect spend for the cone and currently live scoops. The table labels each row's source, and \`--json\` returns the same live-only scope for scripts.
247
+
248
+ Use \`cost --all\` only when you need the historical picture: it adds dropped scoops from the current runtime and frozen sessions recorded in \`/sessions/index.json\`. Combine it with \`--json\` for structured historical output. Legacy frozen sessions that predate cost persistence are retained with unknown cost rather than reported as zero.
249
+
250
+ ## Model selection for scoops
251
+
252
+ **Always run \`models\` to verify available models before specifying one.** Model availability depends on the configured provider and API key. \`model\` accepts an exact id, a shorthand (\`haiku\`, \`sonnet\`, \`claude-haiku-4-5\`), or the \`provider:model\` form \`models\` prints (\`openrouter:openai/gpt-5.6-terra-pro\`). A bare id resolves against the selected provider first, then against any other configured provider that offers it; matching several is an error listing the qualified ids. The scoop runs on the provider the model resolved from. An id that cannot be resolved is rejected outright — it never silently falls back to the cone's model. Cross-provider models also need an \`/etc/models\` allow entry (see [Model access policy](#model-access-policy)).
253
+
254
+ Use \`models --json\` to compare. Intelligence, speed, and cost are independent dimensions:
255
+
256
+ - **Cost-sensitive** (renames, formatting, grep-and-replace) → low-cost models.
257
+ - **Complex** (architecture, multi-file refactors, subtle debugging) → high-intelligence.
258
+ - **Latency-sensitive** (interactive workflows, quick lookups) → high-speed.
259
+ - **Default** → omit the parameter; inherits the cone's model.
260
+
261
+ \`\`\`bash
262
+ # 1. Verify available models.
263
+ models
264
+
265
+ # 2. Create scoops with verified IDs.
266
+ scoop_scoop({ name: "fix-typos", model: "claude-haiku-4-5", prompt: "Fix all typos in /workspace/docs/" })
267
+ scoop_scoop({ name: "architect", model: "claude-opus-4-6", prompt: "Design the new plugin system..." })
268
+ \`\`\`
269
+
270
+ **Error handling**: scoops retry up to 3 times with exponential backoff for transient errors (rate limits, server errors). Non-retryable errors (invalid model, auth failures) fail immediately and notify the cone, bypassing any \`scoop_mute\` settings.
271
+
272
+ ## Browser tabs
273
+
274
+ Browser-tab handling rules (track your IDs, never close tabs you didn't open, handle "tab not found" gracefully) live in \`/workspace/skills/playwright-cli/SKILL.md\` under "Multi-Agent Tab Behavior". Read that skill before delegating browser work.
275
+
276
+ ## Model access policy
277
+
278
+ \`/etc/models\` decides which \`provider:model\` combinations you may spawn against. It
279
+ is keyed by the **selected** provider:
280
+
281
+ \`\`\`ini
282
+ [adobe] # while \`adobe\` is selected…
283
+ openrouter:* # …any openrouter model may be targeted
284
+ -adobe:claude-opus-5 # …but never adobe's own Opus 5
285
+ \`\`\`
286
+
287
+ - The selected provider's own models are allowed by default — you never list them.
288
+ - Any other provider's model is denied until an entry allows it. This is a spend
289
+ boundary: the user may keep separate work and personal accounts.
290
+ - \`models\` and the picker hide only what a \`-\` entry denies, so a model you can see
291
+ is not automatically one you may spawn against; the rejection names the exact
292
+ line to add.
293
+
294
+ Do not edit \`/etc/models\` to unblock yourself — the write requires a human approval
295
+ (\`Write /etc/models\` in \`/etc/sudoers\`). Ask the user instead, quoting the line.
296
+ `;export{e as default};
@@ -0,0 +1 @@
1
+ var e="---\nname: dns\ndescription: |\n Use this when resolving DNS records or troubleshooting names and addresses\n with SLICC's built-in `dig` command. Covers record and reverse queries,\n supported DNS-over-HTTPS resolvers and fallback, output modes, version flags,\n and accepted `+opts`.\nallowed-tools: bash\n---\n\n# DNS lookups with dig\n\nSLICC's built-in `dig` resolves DNS records over DNS-over-HTTPS (DoH):\n\n```bash\ndig <name> [type] [@server] [+opts] [--json]\ndig <type> <name> [@server] [+opts] [--json]\ndig -x <address> [@server] [+opts] [--json]\ndig -v | dig --version\n```\n\nThe name and supported record type may appear in either order. A lone positional\nis always the name and defaults to type `A`. Supported types are `A`, `AAAA`,\n`MX`, `TXT`, `CNAME`, `NS`, `SOA`, `SRV`, `PTR`, and `CAA`.\n\n## Resolver selection\n\n| Resolver | Supported `@server` values |\n| ---------- | ------------------------------------------------ |\n| Cloudflare | `@1.1.1.1`, `@1.0.0.1`, `@cloudflare-dns.com` |\n| Google | `@8.8.8.8`, `@8.8.4.4`, `@dns.google` |\n| Quad9 | `@9.9.9.9`, `@149.112.112.112`, `@dns.quad9.net` |\n\nCloudflare is the default. Any other `@server` falls back to Cloudflare and\nprints a note on stderr because arbitrary DNS servers cannot be queried over\nthe built-in DoH transport.\n\n## Flags and output\n\n- `-x <address>` performs an IPv4 or IPv6 reverse lookup as a `PTR` query.\n- `-v` and `--version` print `DiG 9.20.0-slicc (DNS-over-HTTPS)` and exit.\n- `+short` prints one answer value per line; `--json` prints the resolver response as JSON.\n They are mutually exclusive.\n- Other `+opts`, such as `+noall` and `+answer`, are accepted as no-ops.\n";export{e as default};
@@ -0,0 +1 @@
1
+ var e="---\nname: biome\ndescription: |\n Use this when checking, linting, or formatting code with SLICC's `biome`\n shell command. Covers its ipk prerequisites, config discovery, check, lint,\n and format modes, exit codes, and plain or JSON reporters.\nallowed-tools: bash\n---\n\n# Biome\n\nUse the `biome` shell command for Biome checks inside the VFS. It is a thin wrapper over ipk-installed WASM packages, not a bundled Biome binary.\n\n## Install prerequisites\n\nInstall all three backing packages before linting or formatting:\n\n```bash\nipk add @biomejs/wasm-web @biomejs/js-api esbuild-wasm\n```\n\nThere is no CDN fallback. If a package is missing, follow the pinned `ipk add` command printed by `biome --help` or the error message.\n\n## Commands\n\n| Command | Behavior |\n| --------------------------------- | ------------------------------------------------------------- |\n| `biome check <files...>` | Lint and check formatting. Add `--write` to apply formatting. |\n| `biome lint <files...>` | Lint only; never writes files. |\n| `biome format <file>` | Print formatted source. Add `--write` to update files. |\n| `biome format --check <files...>` | Report unformatted files without printing or writing changes. |\n\n`format --write` and `format --check` are mutually exclusive. For piped input, pass `--stdin-file-path <path>` so Biome selects the correct parser.\n\n## Configuration\n\nUse `--config-path <file>` to select a config explicitly. Otherwise, discovery starts at the first target file's directory, or the current directory for stdin, and walks toward `/`. At each directory, `biome.json` takes precedence over `biome.jsonc`.\n\nThe wrapper accepts comments and trailing commas. It does not resolve `extends`.\n\n## Reporters\n\nThe default `plain` reporter emits diagnostics as plain text without HTML entities, HTML tags, or added ANSI escapes.\n\nUse `--reporter json` or `--json` for one JSON document on stdout with `summary`, `diagnostics`, and `files` fields. JSON diagnostic text is not written to stderr, and selecting JSON does not change the exit code.\n\n## Exit codes\n\n| Code | Meaning |\n| ---- | ---------------------------------------------------------------------------------------------------------------------- |\n| `0` | No findings, and checked files are formatted. |\n| `1` | Error, fatal, or warning diagnostics; unformatted checked files; missing packages/files; or invalid discovered config. |\n| `2` | Usage error, including a missing or invalid explicit `--config-path`. |\n\nTreat code `1` as a failed check even when Biome reports only warnings.\n";export{e as default};
@@ -0,0 +1 @@
1
+ var e="---\nname: image-processing\ndescription: |\n Use this when converting, resizing, cropping, stitching, or annotating images;\n building a filmstrip, contact sheet, or grid; correcting orientation or color;\n turning a PDF into PNG or JPEG images; or applying common ImageMagick-style\n effects with SLICC's `convert` / `magick` and `pdftoppm` shell commands.\nallowed-tools: bash\n---\n\n# Image processing with `convert`\n\nSLICC's local ImageMagick WASM command handles common image transforms, multi-image composition, and labels without network access. `magick` is an alias for `convert`.\n\n## Compose filmstrips and grids\n\nJoin images horizontally with `+append` or vertically with `-append`:\n\n```bash\nconvert f00.jpg f01.jpg f02.jpg f03.jpg +append /tmp/filmstrip.jpg\nconvert top.png middle.png bottom.png -append /tmp/column.png\n```\n\nBuild grids with escaped parenthesized groups. Each group produces one intermediate image:\n\n```bash\nconvert \\( f00.jpg f01.jpg f02.jpg f03.jpg +append \\) \\\n \\( f04.jpg f05.jpg f06.jpg f07.jpg +append \\) \\\n -append /tmp/grid.jpg\n```\n\n## Transform images\n\nOperations run from left to right on the preceding image or group:\n\n```bash\nconvert photo.jpg -auto-orient -thumbnail '320x320>' -strip thumb.jpg\nconvert input.png -gravity center -crop 800x600+0+0 output.png\nconvert input.png -background white -gravity center -extent 1200x630 output.png\nconvert input.png -colorspace Gray -normalize -sharpen 0x1 output.png\n```\n\nCommon operations:\n\n- Geometry: `-resize`, `-thumbnail`, `-crop`, `-extent`, `-rotate`\n- Orientation: `-auto-orient`, `-flip`, `-flop`\n- Cleanup: `-strip`, `-trim`, `-auto-gamma`, `-auto-level`, `-normalize`\n- Color/alpha: `-background`, `-alpha`, `-colorspace`, `-transparent`, `-negate`\n- Effects: `-blur R[xS]`, `-sharpen R[xS]`\n- Output: `-quality 0-100`\n\nResize geometry accepts ImageMagick modifiers such as `%`, `!`, `^`, `>`, and `<`. Quote geometry containing shell metacharacters.\n\n## Add labels\n\nConfigure the drawing state before `-annotate`:\n\n```bash\nconvert frame.jpg -gravity south -fill white -undercolor '#000000aa' \\\n -pointsize 24 -annotate +0+10 'Frame 07 — 00:03.5' labeled.jpg\n```\n\nAnnotation uses the bundled Adobe Clean font; custom `-font` selection is not supported yet.\n\nUse `-gravity` with `northwest`, `north`, `northeast`, `west`, `center`, `east`, `southwest`, `south`, or `southeast`. Quote label text and colors containing `#`.\n\n## Rasterize a PDF\n\n`pdftoppm` turns PDF pages into images. `pdftocairo` is an alias.\n\n```bash\npdftoppm -png -r 150 doc.pdf page # page-1.png, page-2.png, ...\npdftoppm -jpeg -jpegopt quality=80 doc.pdf page\npdftoppm -png -f 2 -l 4 doc.pdf page # pages 2-4 only\npdftoppm -png -singlefile doc.pdf cover # exactly cover.png, no page suffix\npdftoppm -png -scale-to 1024 doc.pdf thumb\n```\n\nPage files are numbered `<prefix>-<n>.<ext>`, zero-padded to the digit width of\nthe last page — `page-1.png` for a 9-page document, `page-01.png` for a 12-page\none. `pdftoppm` prints the filenames it wrote.\n\nFor a single page you can also feed the PDF straight to `convert`, which\nrasterizes it first and accepts ImageMagick's 0-based bracket page selector:\n\n```bash\nconvert -density 150 doc.pdf cover.png # first page\nconvert doc.pdf[2] -resize 800x page3.jpg # third page, resized\n```\n\nPrefer `pdftoppm` for whole documents: it parses the PDF once, while repeated\n`convert` calls re-parse it per page.\n\n`pdftk` handles page-level PDF work (merge, split, rotate, text extraction)\nwithout rendering, which is cheaper when you do not need an image.\n\n## Verify and inspect\n\n```bash\nfile /tmp/grid.jpg\nopen --view --size high /tmp/grid.jpg\nconvert --help\npdftoppm --help\n```\n\nKeep the output path last. Multiple inputs must be reduced with `+append` or `-append`; escape group parentheses as `\\(` and `\\)` so the shell passes them to `convert`.\n";export{e as default};
@@ -0,0 +1 @@
1
+ var e="---\nname: workflows\ndescription: |\n Use this when a task is a fan-out/aggregate job worth orchestrating in code rather\n than doing turn-by-turn: codebase-wide sweeps, large migrations, multi-source research\n you cross-check, or multi-angle planning. Covers authoring a workflow (the meta block +\n the agent/parallel/pipeline/phase/log API), running it (non-blocking by default), and\n saving a good run as a reusable command. NOT for one-off single-agent tasks — use a\n plain scoop or `agent` for those.\nallowed-tools: bash, read_file, write_file\n---\n\n# Workflows\n\nA workflow is a plain-JS orchestration script that fans out to parallel sub-agents and\nkeeps intermediate results in script variables (not your context). You author it, run it\nwith `workflow run`, and — once it's good — `workflow save` it as a reusable command.\n\n## When to reach for a workflow\n\n- A sweep over many files/items where each unit is independent (lint, classify, summarize).\n- A migration applied across a codebase in parallel, then aggregated.\n- Research that fans out to several sources and cross-checks them.\n- Multi-angle planning (draft N approaches in parallel, then synthesize).\n\nIf it's a single self-contained task, just use a plain scoop or the `agent` command — a\nworkflow is overhead you don't need.\n\n## The API (available inside a workflow script)\n\n- `agent(prompt, opts?)` → the sub-agent's text (or parsed JSON when `opts.schema` is set),\n or `null` on failure. `opts`: `{ model?, thinking?, schema?, phase?, label? }`.\n - `model`: a **bare model id** (run `models` to see the ids you can use) to run this\n sub-agent on a specific model; omit to inherit the workflow's model. Always pass the\n bare id (e.g. `claude-opus-4-8`), never a `provider:model` form.\n - `thinking`: `off | minimal | low | medium | high | xhigh` (per-agent reasoning effort).\n - `schema`: a JSON Schema; the result is constrained to it and JSON-parsed for you.\n - `phase` / `label`: display-only grouping (no execution effect yet).\n- `parallel(thunks)` → runs an array of `() => Promise` concurrently (bounded by the cap).\n- `pipeline(items, ...stages)` → maps items through stages.\n- `phase(title)` / `log(message)` → progress markers.\n- `args` → the value passed when the workflow is invoked (`<name> '<json>'`).\n\n## Authoring\n\nA workflow MUST export a `meta` block with a `name` (description optional):\n\n```js\nexport const meta = { name: 'weekly-audit', description: 'Audit each package in parallel' };\n\nconst pkgs = args?.packages ?? ['webapp', 'node-server'];\nphase('audit');\nconst findings = await parallel(\n pkgs.map((p) => () => agent(`Audit packages/${p} for TODOs. One line each.`, { thinking: 'low' }))\n);\nreturn findings.filter(Boolean);\n```\n\n## Running\n\n```bash\nworkflow run my.workflow.js # non-blocking (default) — returns a run id immediately\nworkflow run my.workflow.js --wait # block and print the full result inline\nworkflow status <runId> # one-shot progress check (NOT for polling loops)\nworkflow list # all runs\n```\n\n**Non-blocking is the default, and it is lick-driven — do NOT sleep or poll to wait for it.**\n`workflow run` returns a run id and your turn ends. When the run finishes, its result is delivered\nback to you automatically as a **new turn** (a completion _lick_) carrying the result path plus a\npreview — you will be re-invoked then. So the pattern is: **launch it, then stop.** Never `sleep`,\nand never loop on `workflow status` waiting for completion — the lick is how you get the result, and\nmanually waiting just wastes a turn (and `setTimeout`/`sleep` inside the workflow itself is banned by\nthe determinism guard anyway).\n\nYou do **not** need to wait for a run to finish before saving it: `workflow save` persists the\nscript _source_, which exists the moment the run starts. So the idiomatic flow is **launch\nnon-blocking → `workflow save <runId> <name>` right away → end your turn**; the result lick arrives\non its own.\n\nUse `--wait` ONLY when you genuinely need the full result inline in the current turn (it blocks until\nthe run finishes). Note `--wait` runs are **not** saveable (they have no tracked run id) — run\nnon-blocking when you intend to save.\n\n## Saving as a reusable command\n\n```bash\nworkflow save <runId> weekly-audit # → /workspace/.workflows/weekly-audit.workflow.js\nweekly-audit # now a bare command\nweekly-audit '{\"packages\":[\"cherry\"]}' # JSON arg arrives as `args`\n```\n\nSaved workflows live in `/workspace/.workflows/` and become bare commands (`weekly-audit`).\nSkills can also ship workflows under `skills/<skill>/.workflows/`, which register as\n`<skill>:<name>`. If a bare name collides, the precedence is `built-in > .jsh > saved-workflow`\n(a built-in or `.jsh` keeps the bare name; the workflow is still runnable via\n`workflow run /workspace/.workflows/<name>.workflow.js`). `workflow save` rejects a name\nthat's already a command, so pick another.\n";export{e as default};
@@ -0,0 +1,69 @@
1
+ var e=`---
2
+ name: x-search
3
+ description: |
4
+ Search X (formerly Twitter) for real-time posts, sentiment, and citations
5
+ via xAI's \`x_search\` server-side tool. Works with any model — the search
6
+ call runs through your xAI Grok OAuth credentials regardless of which
7
+ model is steering the cone. Use when you need fresh social-media signal,
8
+ public reactions, or to find specific posts by keyword, hashtag, or handle.
9
+ allowed-tools: bash
10
+ ---
11
+
12
+ # X Search
13
+
14
+ Run \`x_search\` from bash. The script pipes a one-shot request to xAI's
15
+ Responses API with the \`x_search\` server tool enabled, then prints the
16
+ model's answer plus any citation URLs.
17
+
18
+ ## Authentication
19
+
20
+ The shell command resolves the bearer token through \`oauth-token xai-grok\`,
21
+ so you must be signed in to xAI Grok first:
22
+
23
+ \`\`\`bash
24
+ oauth-token xai-grok
25
+ \`\`\`
26
+
27
+ If the command prints \`xai-grok: not signed in\`, run \`/login\` in the side
28
+ panel (or the same \`oauth-token xai-grok\` interactively) to complete the
29
+ xAI OAuth flow before searching.
30
+
31
+ ## Usage
32
+
33
+ \`\`\`bash
34
+ # Free-form query — most common usage
35
+ x_search "what are people saying about Grok 4.3?"
36
+
37
+ # Restrict to specific handles (comma-separated, max 10)
38
+ x_search --from "elonmusk,xai" "ship dates for Grok"
39
+
40
+ # Date range (ISO 8601)
41
+ x_search --since 2025-01-01 --until 2025-03-31 "earnings call reactions"
42
+
43
+ # Pin the underlying search model (default: grok-4.3)
44
+ PI_XAI_X_SEARCH_MODEL=grok-4.5 x_search "fed minutes hot takes"
45
+ \`\`\`
46
+
47
+ ## Output
48
+
49
+ Plain text answer followed by citations:
50
+
51
+ \`\`\`text
52
+ Recent posts indicate broadly positive sentiment …
53
+
54
+ Sources:
55
+ - https://x.com/user/status/...
56
+ - https://x.com/user/status/...
57
+ \`\`\`
58
+
59
+ ## Notes
60
+
61
+ - \`x_search\` is a separate xAI request, not a context-bearing tool call. The
62
+ result is folded into your transcript as a bash result, so you can quote
63
+ or summarize it directly.
64
+ - Per-request \`enable_image_understanding\` / \`enable_video_understanding\`
65
+ toggles are intentionally not exposed; xAI's defaults are sensible and the
66
+ toggles bloat the response.
67
+ - This skill is a slicc-native shell command — \`pi.registerTool\` does not
68
+ apply here. The behavior matches stnly/pi-grok's \`x_search\` tool.
69
+ `;export{e as default};
@@ -0,0 +1 @@
1
+ var e="---\nname: package-execution\ndescription: |\n Use this when the user asks to run or install a JavaScript/npm package with\n `npx` or `ipx`, or to run a `package.json` script with `npm run`. Covers\n built-in hints, any required `ipk add` bootstrap, the `--force` bypass, and\n how script bodies resolve installed bins.\nallowed-tools: bash\n---\n\n# JavaScript package execution\n\n`ipx` runs package bins from the nearest installed `node_modules`; `npx` is an alias with the same behavior. If no local bin or installed package resolves, it normally installs the requested package and runs its bin.\n\nBefore that network install, mapped package names that duplicate SLICC built-ins redirect to the built-in instead. The command exits non-zero and prints an actionable stderr hint naming the built-in and suggesting an invocation with the original arguments. The hint may also include an exact `ipk add` bootstrap; run that bootstrap first when present, then use the suggested built-in.\n\nPrefer the built-in. To deliberately preserve install-and-run behavior for the npm package, put `--force` before its name:\n\n```bash\nnpx --force <package> [args...]\nipx --force <package> [args...]\n```\n\nAlready-installed packages, locally resolved bins, and unmapped package names keep their normal behavior. Use `commands` to discover available built-ins instead of maintaining a package mapping here.\n\n## Running package.json scripts\n\n`npm run <script>` (also `ipk run`, `npm run-script`, and the `npm test` / `start` / `stop` / `restart` shortcuts) runs a `scripts` entry from the nearest `package.json`, in that package's directory. `npm run` with no script name lists what is available — read that list instead of guessing a script name.\n\n```bash\nnpm run # list scripts\nnpm run build # run build, with prebuild/postbuild around it\nnpm run build -- --watch # pass extra args to the script body\nnpm run build --silent # no banner, script output only (either side of the name)\nnpm run lint -- --help # --help after -- goes to the script, not to npm\n```\n\n`--silent`/`-s` and `--if-present` are npm's own flags anywhere before `--`; everything after `--` reaches the script untouched. Missing `start` falls back to `node server.js` when the package has one, and missing `restart` to `npm stop --if-present && npm start`.\n\nA bare bin word in a script body (`vitest run`) is rewritten to `ipx vitest run` when that package is installed, because `$PATH` does not cover `node_modules/.bin` shims. This also applies after keywords like `if`/`then`/`do`. A SLICC built-in with the same name wins, and an unknown word is not installed implicitly — install it with `ipk add <pkg>` first.\n";export{e as default};
@@ -0,0 +1 @@
1
+ var e='---\nname: upgrade\ndescription: |\n Use this when you receive an `[Upgrade Event: x.y.z→a.b.c]` lick — fired on\n boot whenever the bundled SLICC version differs from the previous run. The\n lick renders a binary action card: `lick_confirm` to Update workspace files\n (three-way merge of bundled `vfs-root` files against the user\'s local edits)\n or `lick_dismiss` to clear it. Reviewing the changelog from GitHub, and\n checking installed skills for updates with `upskill update --dry-run`, are\n separate steps you can run first. Never auto-applies; the user resolves the\n card.\nallowed-tools: bash, read_file, write_file, edit_file\n---\n\n# Upgrade\n\nWhen SLICC boots and discovers that the bundled version (baked into the build at release time from the root `package.json`) differs from the version it was last seen running, it emits an `upgrade` lick to the cone. This skill describes how to react.\n\n## Event shape\n\nYou receive a message like:\n\n```text\n[Upgrade Event: 0.4.1→0.5.0]\n\nSLICC was upgraded from `0.4.1` to `0.5.0`.\nReleased: 2026-04-15T12:00:00Z\n\nUse the **upgrade** skill (...)\n```\n\nThe two version strings (`from`, `to`) are valid git tags on `https://github.com/ai-ecoverse/slicc` — the public source repository. The lick message carries a `Lick ID:` line — you resolve the card with that id.\n\n## What to do when you receive an upgrade lick\n\nThe runtime renders the upgrade lick as a binary action card automatically — you do not render a sprinkle. The card has exactly two outcomes, which you drive with the lick tools using the `Lick ID` from the message:\n\n- **`lick_confirm` → Update workspace files.** This runs `upgrade apply` with the stored release versions. Only confirm once the user has decided to pull the new files.\n- **`lick_dismiss` → clear the card.** Use this when the user wants to skip the merge; nothing is changed and the card mutes (✗). The lick will not fire again until the next upgrade.\n\nThe card flips to ✓ on confirm / muted ✗ on dismiss. Never auto-run the merge — the user must choose. Reviewing the changelog is **not** a card action; it is a separate step you can run first to help the user decide.\n\n## Which version am I running?\n\n`uname -r` prints the running version. `upgrade status` adds the last-booted one, whether a merge is pending, and the exact `upgrade apply` line to run when it is — that is where `--from`/`--to` come from without a card on screen. Realm scripts read `globalThis.SLICC_VERSION`.\n\n## Changelog review (separate step — not a card action)\n\nBefore the user decides, you can fetch the GitHub compare API for the two tags and summarize the result. This is optional and independent of the card; it does not resolve the lick.\n\n```bash\n# The repo is public — no auth required for the compare endpoint.\n# stdin here is fully buffered, so read() drains the whole response in one shot.\ncurl -sSL "https://api.github.com/repos/ai-ecoverse/slicc/compare/v${FROM_VERSION}...v${TO_VERSION}" \\\n | node -e \'const j=JSON.parse(process.stdin.read()||"{}");console.log((j.commits||[]).map(c=>"- "+c.commit.message.split("\\n")[0]).join("\\n"))\'\n```\n\nShow the conventional-commit messages grouped by type (`feat`, `fix`, `chore`, ...). If the compare returns 404 (tags missing), fall back to the GitHub releases page URL: `https://github.com/ai-ecoverse/slicc/releases/tag/v${TO_VERSION}`.\n\n## Applying workspace files (the `lick_confirm` action)\n\n`lick_confirm` runs the browser-native command below through the cone shell using the versions stored with the lick. Do not run a second merge after confirming.\n\n```bash\nupgrade apply --from="${FROM_VERSION}" --to="${TO_VERSION}"\n```\n\nThe command discovers bundled files at both release refs under `/workspace/skills`, `/shared/sprinkles`, `/shared/sounds`, and `/etc`, plus the single file `/shared/MEMORY.md`; prefetches and preflights every path; then applies safe updates with `VirtualFS` and the built-in three-way merge. `/shared/MEMORY.md` (the memory-curator contract) and the `/etc` policy files (`sudoers`, `models`, `llmstxtignore`) are seeded only when absent, so this merge is the only way a rule change in them reaches an existing profile — including approval rules such as the `Write /etc/models` gate. Applying a change to `/etc/sudoers` still raises its own approval prompt: the card authorizes the merge, not the policy edit. Its JSON output classifies every bundled path as `auto-applied`, `merged-clean`, `kept-local`, `needs-review`, `unchanged`, or `added-new`.\n\nAn exit code of `1` means discovery/fetch failed or at least one path needs review. Conflicts are written to the reported collision-safe sidecar while the live file remains unchanged. Show the JSON summary and sidecar paths to the user; never copy conflict markers into the live file automatically. The command never deletes local-only files.\n\nThe command can also be run directly with explicit release versions for manual recovery, but an upgrade card still requires the user\'s confirmation before changing files.\n\n## Also check installed skills (separate step — not a card action)\n\nThe card only covers **bundled** files (`/workspace/skills`, `/shared/sprinkles`, `/shared/sounds`, `/shared/MEMORY.md`, `/etc`). Skills the user installed themselves with `upskill` are never touched by it, and they drift silently — a stale one can sit months behind upstream while still loading fine.\n\nA new SLICC release is a good moment to check them. This is read-only:\n\n```bash\nupskill update --dry-run\n```\n\nIt reads each skill\'s `.upskill` provenance record (written at install time: source repo, ref, resolved commit, file list) and compares the recorded commit against the ref\'s head. Skills whose commit has not moved report `already current` without downloading anything; the rest are fetched and classified with the same vocabulary as `upgrade apply` — `unchanged`, `updated`, `added`, `removed`, `kept-local`.\n\nReport what would change and let the user decide. To apply:\n\n```bash\nupskill update # every skill with provenance\nupskill update <skill> # just one\n```\n\nNotes worth knowing:\n\n- **Dotfiles are never touched.** `upskill` will not modify or delete a dotfile in a skill directory, so credentials (`scripts/.config`) and the `.upskill` record survive updates and `--force` reinstalls. Never hand-copy a credential file "to be safe" — it is already safe, and moving it can break the skill.\n- **`kept-local` is not a failure.** It marks dotfiles and files the user added themselves; leaving them is the correct outcome.\n- A skill installed before provenance tracking reports `no install provenance`. If the user knows where it came from, record it in place — `upskill update <skill> --from <owner>/<repo> --dry-run` first, then without `--dry-run`. That first update never deletes anything, because nothing is attributable to a previous install yet.\n\n## Do not\n\n- Do not run `upgrade apply` before the user confirms. Confirmation runs it automatically; dismissal runs nothing.\n- Do not delete files that no longer exist in the new release — many users name-collide their own scripts with bundled ones; deletion is too dangerous to automate.\n- Do not modify files outside `/workspace/skills/`, `/shared/sprinkles/`, `/shared/sounds/`, `/shared/MEMORY.md`, and `/etc/` without the user explicitly extending the scope.\n- Do not run `upskill update` (without `--dry-run`) unless the user asks for it — the dry run is the safe default when you are volunteering the check.\n- Do not advance the bundled version marker yourself. The runtime advances it automatically once this lick has been routed; if the user dismisses, the lick will not fire again until the next upgrade.\n';export{e as default};