sliccy 6.199.0 → 6.200.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 (187) hide show
  1. package/README.md +2 -0
  2. package/dist/node-server/cloud-status.d.ts +7 -0
  3. package/dist/node-server/cloud-status.js +10 -0
  4. package/dist/node-server/index.js +3 -3
  5. package/dist/ui/.vite/manifest.json +182 -182
  6. package/dist/ui/assets/{SKILL-Cw2kRKxn.js → SKILL-BGRdm7JZ.js} +1 -1
  7. package/dist/ui/assets/{account-store-Cx-zMFBD.js → account-store-BxJt4yS8.js} +1 -1
  8. package/dist/ui/assets/{account-store-EoBfJmnP.js → account-store-BzBJdOjG.js} +1 -1
  9. package/dist/ui/assets/{adobe-DNks8ueK.js → adobe-CfZI9e_s.js} +1 -1
  10. package/dist/ui/assets/{adobe-D4lN-fe9.js → adobe-Duxzk6rb.js} +1 -1
  11. package/dist/ui/assets/{agent-panels-DfH2RfRc.js → agent-panels-Dw6pMIG7.js} +1 -1
  12. package/dist/ui/assets/agent-question-worker-oT1IOgNo.js +15 -0
  13. package/dist/ui/assets/{almost-bash-shell-headless-CJIpcyA_.js → almost-bash-shell-headless-DqbR046s.js} +513 -512
  14. package/dist/ui/assets/{apply-layout-ycn-YWV8.js → apply-layout-Dvq9FNPi.js} +1 -1
  15. package/dist/ui/assets/{apps-CwMp0IaY.js → apps-CkzkOBHh.js} +1 -1
  16. package/dist/ui/assets/{azure-openai-2XjV814_.js → azure-openai-C38Ok-Gx.js} +1 -1
  17. package/dist/ui/assets/{azure-openai--kdMGYQe.js → azure-openai-ir8YhFwn.js} +1 -1
  18. package/dist/ui/assets/{backend-hostfs-DmwXuxc_.js → backend-hostfs-CTkrA6w4.js} +1 -1
  19. package/dist/ui/assets/{bsh-watchdog-CCz8gp5d.js → bsh-watchdog-xbXqblUt.js} +1 -1
  20. package/dist/ui/assets/{cdp-C8iHjGeB.js → cdp-DriOLbXw.js} +1 -1
  21. package/dist/ui/assets/{cerebras-Bj8IbswC.js → cerebras-CWN_IdZZ.js} +1 -1
  22. package/dist/ui/assets/{cerebras-B2MfjfTb.js → cerebras-CzWnVMYU.js} +1 -1
  23. package/dist/ui/assets/{composer-speech-B7jpqEUd.js → composer-speech-Da0U11dE.js} +1 -1
  24. package/dist/ui/assets/{connect-surface-Dsv-VRdA.js → connect-surface-EGNJlwL7.js} +1 -1
  25. package/dist/ui/assets/{core-5TgOcN68.js → core-VO3EvqHP.js} +1 -1
  26. package/dist/ui/assets/{directed-approval-BY11fbfk.js → directed-approval-5zcBx_8Q.js} +1 -1
  27. package/dist/ui/assets/emscripten-vfs-hook-0t5cbJA-.js +1 -0
  28. package/dist/ui/assets/{emscripten-vfs-hook-rDtZMlJd.js → emscripten-vfs-hook-Con-EaZe.js} +1 -1
  29. package/dist/ui/assets/{ensure-speech-assets-Bnwq1rHN.js → ensure-speech-assets-Bxb0T3I7.js} +1 -1
  30. package/dist/ui/assets/{esbuild-wasm-CbTVjIj0.js → esbuild-wasm-BqY5rzxc.js} +1 -1
  31. package/dist/ui/assets/{ffmpeg-wasm-CmLVzRDe.js → ffmpeg-wasm-NIvl0oHG.js} +1 -1
  32. package/dist/ui/assets/{frozen-archive-writer-SpOL-8Rw.js → frozen-archive-writer-DXD3HNGv.js} +1 -1
  33. package/dist/ui/assets/{fs-j0imIjve.js → fs-DixNKUU2.js} +2 -2
  34. package/dist/ui/assets/{fs-COFN8LYS.js → fs-Dwrhp8ic.js} +1 -1
  35. package/dist/ui/assets/{gelatiere-store-DMxpxFl5.js → gelatiere-store-CXO9x_ym.js} +1 -1
  36. package/dist/ui/assets/{gelatiere-unit-BVxUEyjY.js → gelatiere-unit-C-RaaAN4.js} +1 -1
  37. package/dist/ui/assets/{github-CP2HmcKt.js → github-Dx70XiCa.js} +2 -2
  38. package/dist/ui/assets/{github-BBpjYbca.js → github-PitZcrvG.js} +1 -1
  39. package/dist/ui/assets/{github-auth-BGeZvDDK.js → github-auth-CrVMVbq1.js} +1 -1
  40. package/dist/ui/assets/{github-copilot-z_3tgxne.js → github-copilot-2AG326AA.js} +1 -1
  41. package/dist/ui/assets/{github-copilot-C8HzPVks.js → github-copilot-Bq647loV.js} +1 -1
  42. package/dist/ui/assets/{github-install-BuHsKLmH.js → github-install-BX21YoQ9.js} +1 -1
  43. package/dist/ui/assets/{github-zip-CdhraPsW.js → github-zip-BZ1xXXrZ.js} +1 -1
  44. package/dist/ui/assets/global-prefix-DqCuANmV.js +1 -0
  45. package/dist/ui/assets/gpu-ask-258b878401128d27/runtime/inference.mjs +59 -0
  46. package/dist/ui/assets/gpu-ask-258b878401128d27/runtime/inference.wasm +0 -0
  47. package/dist/ui/assets/gpu-ask-258b878401128d27/v13/config.json +29 -0
  48. package/dist/ui/assets/gpu-ask-258b878401128d27/v13/crf.json +1 -0
  49. package/dist/ui/assets/gpu-ask-258b878401128d27/v13/manifest.json +27 -0
  50. package/dist/ui/assets/gpu-ask-258b878401128d27/v13/member0.onnx +0 -0
  51. package/dist/ui/assets/gpu-ask-258b878401128d27/v13/member1.onnx +0 -0
  52. package/dist/ui/assets/gpu-ask-258b878401128d27/v13/static_vocab.json +1 -0
  53. package/dist/ui/assets/{guest-tool-gate-ChWgxyey.js → guest-tool-gate-BzUxTS0o.js} +1 -1
  54. package/dist/ui/assets/{hear-B3_6gBpO.js → hear-B2jOUJBd.js} +1 -1
  55. package/dist/ui/assets/{help-DEBF1lg7.js → help-DeCzUHHm.js} +1 -1
  56. package/dist/ui/assets/{installer-CRB9PB6D.js → installer-BP2BgIQj.js} +2 -2
  57. package/dist/ui/assets/{interrupted-work-recovery-iVZtmHsZ.js → interrupted-work-recovery-DkaikSRv.js} +1 -1
  58. package/dist/ui/assets/{ipk-mamba-DWCiJ0YO.js → ipk-mamba-Bu6lP-yN.js} +1 -1
  59. package/dist/ui/assets/{js-realm-worker-9qNmSeMt.js → js-realm-worker-DGzo9e6m.js} +2 -2
  60. package/dist/ui/assets/{jsh-executor-Bv_veUM_.js → jsh-executor-F0CFLkaz.js} +2 -2
  61. package/dist/ui/assets/{kernel-worker-B_7I-3sG.js → kernel-worker-ZLEuzNnF.js} +10 -10
  62. package/dist/ui/assets/{lick-ws-bridge-5HuXfp92.js → lick-ws-bridge-BxjNZ6mT.js} +1 -1
  63. package/dist/ui/assets/{lick-ws-bridge-BJwcfwUG.js → lick-ws-bridge-Dhr971ns.js} +1 -1
  64. package/dist/ui/assets/{live-session-curation-BFmvB-0m.js → live-session-curation-DdnOrBLX.js} +1 -1
  65. package/dist/ui/assets/{live-session-snapshot-BzqcwvnN.js → live-session-snapshot-C3mWxsFX.js} +1 -1
  66. package/dist/ui/assets/{local-llm-B-rO-waH.js → local-llm-BPvhp-xI.js} +1 -1
  67. package/dist/ui/assets/{local-llm-CbMyPbKh.js → local-llm-BX18gu-_.js} +1 -1
  68. package/dist/ui/assets/{magick-wasm-BATj-KUu.js → magick-wasm-DjyHtD1t.js} +1 -1
  69. package/dist/ui/assets/{main-A0IDHjYB.js → main-Dlhq0ECg.js} +3 -3
  70. package/dist/ui/assets/{main-cherry-BjDYCEBf.js → main-cherry-YHj3bFYw.js} +1 -1
  71. package/dist/ui/assets/{memory-curation-seam-DpIeuHCo.js → memory-curation-seam-DLjNyX6I.js} +1 -1
  72. package/dist/ui/assets/{memory-health-DCVHFlpU.js → memory-health-er4gWnBp.js} +1 -1
  73. package/dist/ui/assets/{memory-write-execute-CCRzz7oL.js → memory-write-execute-CdG4BhZ9.js} +1 -1
  74. package/dist/ui/assets/{merge-folded-cost-into-frozen-DAmJAikz.js → merge-folded-cost-into-frozen-BrMZ9Z4i.js} +1 -1
  75. package/dist/ui/assets/{mount-DajU3MBA.js → mount-BClA1VZ3.js} +3 -3
  76. package/dist/ui/assets/{mount-CyPrJ0Dn.js → mount-ovHiMqAC.js} +1 -1
  77. package/dist/ui/assets/{new-session-DqnJYTgI.js → new-session-BS2bMoRG.js} +2 -2
  78. package/dist/ui/assets/{oauth-bootstrap-6HPPzWmI.js → oauth-bootstrap-DNCeTDQS.js} +2 -2
  79. package/dist/ui/assets/{onboarding-orchestrator-CgakRFkk.js → onboarding-orchestrator-Ywkh0Vff.js} +1 -1
  80. package/dist/ui/assets/{openai-codex-DKHDJx7V.js → openai-codex-Copgpc1l.js} +1 -1
  81. package/dist/ui/assets/{openai-codex-bVm3p-UR.js → openai-codex-ggQD9llh.js} +1 -1
  82. package/dist/ui/assets/{openrouter-axjw9vxd.js → openrouter-Bg6XJT8w.js} +1 -1
  83. package/dist/ui/assets/{openrouter-imALD05G.js → openrouter-CDTp1b5L.js} +1 -1
  84. package/dist/ui/assets/{openrouter-free-ZOjmQipE.js → openrouter-free-DpEJ8N1H.js} +1 -1
  85. package/dist/ui/assets/{openrouter-free-DoT4iD1_.js → openrouter-free-DuS4wwr7.js} +1 -1
  86. package/dist/ui/assets/{openrouter-oauth-CL-Mvzf2.js → openrouter-oauth-C00UCg4n.js} +1 -1
  87. package/dist/ui/assets/{openrouter-oauth-tL5bQcLP.js → openrouter-oauth-C_qDKVGx.js} +1 -1
  88. package/dist/ui/assets/{opfs-mount-Bh50Ihzc.js → opfs-mount-BZuRvWgk.js} +1 -1
  89. package/dist/ui/assets/{panel-rpc-handlers-SJZUazHr.js → panel-rpc-handlers-C5I8S3Ox.js} +2 -2
  90. package/dist/ui/assets/{panelize-shell-CMNQNMKL.js → panelize-shell-BfM7D7GU.js} +1 -1
  91. package/dist/ui/assets/{pi-edit-execution-DdqXe8fR.js → pi-edit-execution-zM5AjgsN.js} +1 -1
  92. package/dist/ui/assets/process-worker-Dp3NuRKM.js +3 -0
  93. package/dist/ui/assets/{provider-BY7JJQ6C.js → provider-72FGuRVI.js} +2 -2
  94. package/dist/ui/assets/{provider-BJWASjRb.js → provider-Caqy6sQ9.js} +1 -1
  95. package/dist/ui/assets/{provider-settings-CpxxDUGX.js → provider-settings-CyRvW-sr.js} +1 -1
  96. package/dist/ui/assets/provider-store-access-B1DGSCi_.js +1 -0
  97. package/dist/ui/assets/provider-store-access-CdNwzR2X.js +1 -0
  98. package/dist/ui/assets/{providers-Cu9hF00M.js → providers-BO8z0UDJ.js} +1 -1
  99. package/dist/ui/assets/{providers-Bdna_Mfl.js → providers-CClQxLrp.js} +2 -2
  100. package/dist/ui/assets/{quick-llm-yC5FFRut.js → quick-llm-FkwEdyGU.js} +1 -1
  101. package/dist/ui/assets/{realm-inprocess-mlxB_Jft.js → realm-inprocess-evHZU-xc.js} +2 -2
  102. package/dist/ui/assets/{realm-unhandled-rejections-DTlyLSbk.js → realm-unhandled-rejections-B3RTHl-M.js} +1 -1
  103. package/dist/ui/assets/{realm-unhandled-rejections-pcAKQKxI.js → realm-unhandled-rejections-ChjWX2Mi.js} +1 -1
  104. package/dist/ui/assets/{recovery-screen-VOpbkVaX.js → recovery-screen-CEzQ-e0n.js} +1 -1
  105. package/dist/ui/assets/{remote-terminal-view-DCbE72Di.js → remote-terminal-view-BFwZA41k.js} +2 -2
  106. package/dist/ui/assets/{require-guards-idkispmW.js → require-guards-Dd9Pt0Fl.js} +1 -1
  107. package/dist/ui/assets/{restore-INu3JzKu.js → restore-BITUqyY6.js} +1 -1
  108. package/dist/ui/assets/{run-CKXEa8SO.js → run-127C4O6D.js} +1 -1
  109. package/dist/ui/assets/{run-Dg-St-RH.js → run-BKqRP8Pt.js} +1 -1
  110. package/dist/ui/assets/{run-xIOKpcaY.js → run-BYmK0SKZ.js} +2 -2
  111. package/dist/ui/assets/run-BciZIAEy.js +4 -0
  112. package/dist/ui/assets/{run-rx7i3htt.js → run-Bs946HA6.js} +2 -2
  113. package/dist/ui/assets/{run-B299BzVX.js → run-C9yHyWW8.js} +1 -1
  114. package/dist/ui/assets/{run-C2U8vrlj.js → run-CH4X8Dfz.js} +1 -1
  115. package/dist/ui/assets/{run-C-SsGj7G.js → run-DVX00_wa.js} +2 -2
  116. package/dist/ui/assets/{run-B8XEuF9O.js → run-DYBjhBJJ.js} +1 -1
  117. package/dist/ui/assets/{run-D8oYYvDP.js → run-OtfZUGcj.js} +1 -1
  118. package/dist/ui/assets/{screencapture-run-jNQom_As.js → screencapture-run-B6e616vU.js} +1 -1
  119. package/dist/ui/assets/script-catalog-ByM8lrb_.js +2 -0
  120. package/dist/ui/assets/{session-command-memory-CIlH12-t.js → session-command-memory-DMFFn99v.js} +2 -2
  121. package/dist/ui/assets/{session-jsonl-CbRjD436.js → session-jsonl-CkoP0xfM.js} +1 -1
  122. package/dist/ui/assets/{session-jsonl-DfIHsO8b.js → session-jsonl-l6ZgVDSg.js} +1 -1
  123. package/dist/ui/assets/{session-search-index-Dy-PfRqQ.js → session-search-index-BSUmgKdo.js} +1 -1
  124. package/dist/ui/assets/{setup-feature-flags-remote-CR7KSNE7.js → setup-feature-flags-remote-BdDyXHel.js} +1 -1
  125. package/dist/ui/assets/{setup-model-catalog-DXEif6eM.js → setup-model-catalog-DfNMuwij.js} +1 -1
  126. package/dist/ui/assets/shared-Bi8EHIOr.js +4 -0
  127. package/dist/ui/assets/{signed-fetch-By29jUjE.js → signed-fetch-CQ2uIDVn.js} +1 -1
  128. package/dist/ui/assets/{silent-renew-backoff-CNtrArsp.js → silent-renew-backoff-lgGx23mg.js} +1 -1
  129. package/dist/ui/assets/slicc-version-C9H8f3Hv.js +1 -0
  130. package/dist/ui/assets/{snapshot-DGKjtXNh.js → snapshot-Cu4EX8rn.js} +1 -1
  131. package/dist/ui/assets/{snapshot-features-DzVoIfFL.js → snapshot-features-CrEZZ-2O.js} +1 -1
  132. package/dist/ui/assets/{soundscape-CnOrBnbw.js → soundscape-CPZxNMih.js} +1 -1
  133. package/dist/ui/assets/{speak-BloUZd1x.js → speak-B70svz4B.js} +1 -1
  134. package/dist/ui/assets/{sprinkle-manager-IklvIg9J.js → sprinkle-manager-8pziQBT8.js} +1 -1
  135. package/dist/ui/assets/{sprinkle-renderer-B66ykiYM.js → sprinkle-renderer-BOAQN3uY.js} +1 -1
  136. package/dist/ui/assets/{ssh-DUF6fIeK.js → ssh-DscQolch.js} +1 -1
  137. package/dist/ui/assets/{state--dO2CNjQ.js → state-uHiY8LS_.js} +1 -1
  138. package/dist/ui/assets/{store-B7Q2yFWb.js → store-CGNPgQnE.js} +1 -1
  139. package/dist/ui/assets/{store-B9vKhxq-.js → store-DW6wS3OD.js} +1 -1
  140. package/dist/ui/assets/{sudo-C7vQszbT.js → sudo-7XIo23jh.js} +1 -1
  141. package/dist/ui/assets/{supervisor-B8XLC5F4.js → supervisor-C3xYG4Bn.js} +1 -1
  142. package/dist/ui/assets/{sync-dialog-DYkdAR7f.js → sync-dialog-7PsyGY7q.js} +1 -1
  143. package/dist/ui/assets/{transformers-env-BoqfFDpp.js → transformers-env-CVRfNycv.js} +1 -1
  144. package/dist/ui/assets/{tray-leader-Be9y1qqN.js → tray-leader-BAqGiVBM.js} +1 -1
  145. package/dist/ui/assets/{tray-leave-runtime-Dc4M6lXI.js → tray-leave-runtime-CNeE6PSE.js} +1 -1
  146. package/dist/ui/assets/{tray-sidecar-DQvMF1Ao.js → tray-sidecar-5ZkBkfDl.js} +1 -1
  147. package/dist/ui/assets/{turn-journal-1vL_oov2.js → turn-journal-C1eVrq7Y.js} +1 -1
  148. package/dist/ui/assets/{upgrade-detection-DyxZBRHK.js → upgrade-detection-Bv34xSKT.js} +1 -1
  149. package/dist/ui/assets/{upskill-lick-skip-ByW1Kcmd.js → upskill-lick-skip-BDwrQPt0.js} +1 -1
  150. package/dist/ui/assets/{voice-reply-7yEUC8s_.js → voice-reply-DeLsESWh.js} +1 -1
  151. package/dist/ui/assets/wasm-programs-h3UCRQyB.js +1 -0
  152. package/dist/ui/assets/{wc-attach-Cht5GxYL.js → wc-attach-Bdjm3chp.js} +2 -2
  153. package/dist/ui/assets/{wc-browser-CNPt07ut.js → wc-browser-Dnww_Ca5.js} +1 -1
  154. package/dist/ui/assets/{wc-computers-mfAtMwPf.js → wc-computers-DQtpsimi.js} +1 -1
  155. package/dist/ui/assets/{wc-detached-B9yxZ-n5.js → wc-detached-DuvST6zZ.js} +1 -1
  156. package/dist/ui/assets/{wc-extension-CEYQ0jRT.js → wc-extension-BsKdJwbY.js} +2 -2
  157. package/dist/ui/assets/{wc-follower-Dig1L7XU.js → wc-follower-BJrRVyyK.js} +3 -3
  158. package/dist/ui/assets/{wc-follower-oauth-CoNuNT7_.js → wc-follower-oauth-CybgZQ48.js} +1 -1
  159. package/dist/ui/assets/{wc-gelatiere-DV7qZCcd.js → wc-gelatiere-BA5XFm2f.js} +1 -1
  160. package/dist/ui/assets/{wc-live-DqGa1g7s.js → wc-live-B2BtE9JR.js} +5 -5
  161. package/dist/ui/assets/{wc-nav-MxkWV7Eh.js → wc-nav-DJT6pnqH.js} +2 -2
  162. package/dist/ui/assets/{wc-onboarding-B8k9BOPK.js → wc-onboarding-CX5J5YkZ.js} +2 -2
  163. package/dist/ui/assets/{wc-permissions-D0gWVZDW.js → wc-permissions-ApmoeEqE.js} +2 -2
  164. package/dist/ui/assets/{wc-placeholder-CZPgqag0.js → wc-placeholder-Dwt4gRKR.js} +3 -3
  165. package/dist/ui/assets/{wc-secret-request-Czx6L_Ak.js → wc-secret-request-B_TAGBwI.js} +1 -1
  166. package/dist/ui/assets/{wc-settings-DDLOvAjU.js → wc-settings-CyB10XjG.js} +3 -3
  167. package/dist/ui/assets/{wc-shell-BXVz8icy.js → wc-shell-DrXhF-lo.js} +53 -9
  168. package/dist/ui/assets/{wc-shortcut-config-CafKSWSR.js → wc-shortcut-config--h2Ha3bK.js} +1 -1
  169. package/dist/ui/assets/{wc-sprinkles-DCQquR-P.js → wc-sprinkles-ChCdCWmX.js} +2 -2
  170. package/dist/ui/assets/{wc-transcript-export-Cws1KmDm.js → wc-transcript-export-DSXMPEI7.js} +2 -2
  171. package/dist/ui/assets/{wc-tray-BYuoSJJ1.js → wc-tray-D-LjL8jH.js} +4 -4
  172. package/dist/ui/assets/welcome-detection-BJ0L9A1b.js +1 -0
  173. package/dist/ui/assets/{whisper-session-wPvWHvD6.js → whisper-session-TLzKerEw.js} +2 -2
  174. package/dist/ui/assets/{xai-grok-BfoEWDbt.js → xai-grok-CJ-VDQl7.js} +1 -1
  175. package/dist/ui/assets/{xai-grok-nd89A_Xv.js → xai-grok-NkEyHfe_.js} +1 -1
  176. package/dist/ui/index.html +3 -3
  177. package/dist/ui/packages/webapp/index.html +3 -3
  178. package/package.json +1 -1
  179. package/dist/ui/assets/emscripten-vfs-hook-BAyewmw_.js +0 -1
  180. package/dist/ui/assets/process-worker-B4TKhwWE.js +0 -2
  181. package/dist/ui/assets/provider-store-access-B8DU_2PF.js +0 -1
  182. package/dist/ui/assets/provider-store-access-DcvCWnpM.js +0 -1
  183. package/dist/ui/assets/run-DZ0a3If_.js +0 -3
  184. package/dist/ui/assets/script-catalog-DZtOMxvi.js +0 -2
  185. package/dist/ui/assets/shared-2XhBobrM.js +0 -4
  186. package/dist/ui/assets/slicc-version-DiHRD5WU.js +0 -1
  187. package/dist/ui/assets/welcome-detection-CdpDLz5b.js +0 -1
package/README.md CHANGED
@@ -74,6 +74,7 @@ SLICC is for you if:
74
74
  - **Automate repetitive workflows in authenticated web apps.** Use browser automation, page inspection, screenshots, storage access, and scripted tab control where your logged-in browser session already has the context.
75
75
  - **Hand work off from another coding agent into your live browser session.** Open any URL whose response carries an RFC 8288 `Link` header with a SLICC handoff or upskill rel (the tray-hub `/handoff?handoff=...` / `?upskill=...` endpoint is a convenience) and SLICC prompts you to approve the action inside the Chat tab.
76
76
  - **Solve technical tasks with practical tools.** Reach for `bash`, `git`, `grep`, `node`, `python`, previews, and browser automation when the job is bigger than text generation.
77
+ - **Answer agent questions from the composer.** Finished messages highlight questions in the transcript; the latest answerable question shows its choices or input above the composer text field, including the model's recommendation.
77
78
  - **Make targeted file changes with Pi's `edit` tool.** One call can apply multiple unique, non-overlapping replacements while preserving BOMs and line endings; replacement text is always literal, so `$` sequences cannot rewrite themselves through JavaScript replacement expansion.
78
79
  - **See image-producing tool results directly in chat.** Supported `<img:data:image/...;base64,...>` markers from commands such as `open --view` and `screencapture` render as bounded, lazy-loaded inline images in chat tool rows. Each tool body displays at most four images and shows an explicit overflow indication when more are present.
79
80
  - **Use a Ghostty-backed terminal.** wterm renders shell text and handles input; `imgcat photo.png` sends image bytes to its Kitty graphics preview. Other supported image and video types keep their existing media preview.
@@ -92,6 +93,7 @@ SLICC is for you if:
92
93
  - **Inspect experimental features from the avatar menu.** When centrally managed flags enable the surface for the current runtime, click your avatar and choose **Experimental features…** to open its standalone dialog. The dialog may honestly be empty: `experimental-settings` controls its availability but is not itself user-toggleable. Experimental features take effect when SLICC boots, so flipping one only matters on the next load. Changes are held until you confirm: the dialog says what is waiting and offers **Reload now** to save and apply them, or **Revert** to drop them. Nothing is written until you reload, and dismissing the dialog discards — so a flag can never end up reading `on` with nothing to show for it.
93
94
  - **Steer a running turn instead of waiting for it.** In the chat composer, `Enter` sends — including from a hardware keyboard in the native iOS follower — and queues behind whatever the cone is already doing; `Shift+Enter` inserts a newline. `Ctrl+Enter` (`Cmd+Enter` on macOS) steers: the message is injected as soon as the current step finishes, so you can redirect the agent mid-turn.
94
95
  - **Boot full x86 virtual machines in the browser.** `v86 start` runs real operating systems (Alpine, FreeDOS, KolibriOS, ...) on the wasm-based [v86](https://github.com/copy/v86) emulator, entirely client-side. The agent drives the guest from the shell — type, click, screenshot, stream the screen live, save/restore state — and `-net <model>,relay=fetch` gives the guest HTTP access through SLICC's fetch proxy. Install with `ipk add -g v86`.
96
+ - **Run native command-line programs compiled to wasm.** A package that ships Emscripten programs (for example `ipk add -g @ai-ecoverse/wasm-pkgconf`) makes each one a shell command. Each process runs in a worker of its own, with real pipes and child processes; `wasm --list` shows what is installed. No local mount or server is needed.
95
97
  - **Delegate parallel work to scoops.** Split tasks into isolated sub-agents with their own sandboxes and context, then let the main agent coordinate the results. If a scoop hits a terminal model or provider failure, its owner gets a durable error card without spending another model call to acknowledge the outage; fatal state still bypasses mute and releases `scoop_wait`.
96
98
  - **Turn one-off wins into reusable workflows.** Package behavior as skills, build interactive sprinkles, and react to external events with webhooks and cron-driven licks.
97
99
  - **Mount your local file system.** By default, SLICC is confined to your browser. But you can ask it to mount folders from your local file system, so it can read and write from there. Mount into an empty path such as `/mnt/myproject` so you do not hide existing skills or scripts. Tear one down with `umount /mnt/myproject` (or the longer `mount unmount /mnt/myproject`). Picker mounts ask again after a page reload; for folders you always want available, map them in the launcher's mount table (`npx slicc --mount=~/Projects/foo:/mnt/foo`, or Settings → Mounts in Sliccstart.app) and they are mounted automatically on every launch, with no picker or permission prompt — see [Auto-mounted host folders](docs/mounts.md#auto-mounted-host-folders-the-mount-table).
@@ -1,4 +1,11 @@
1
1
  import { type Express, type NextFunction, type Request, type Response } from 'express';
2
+ /** e2b sandboxes poll this path. A host with several leaders sets `SLICC_JOIN_FILE`. */
3
+ export declare const DEFAULT_JOIN_FILE_PATH = "/tmp/slicc-join.json";
4
+ /**
5
+ * Join file for `POST /api/cloud-status`. `SLICC_JOIN_FILE` wins so each
6
+ * leader on one host writes its own file; unset keeps the sandbox default.
7
+ */
8
+ export declare function resolveJoinFilePath(env?: NodeJS.ProcessEnv): string;
2
9
  export interface CloudStatusEndpointOptions {
3
10
  joinFilePath: string;
4
11
  }
@@ -1,6 +1,16 @@
1
1
  import { promises as fs } from 'node:fs';
2
2
  import { isLoopbackHostname } from './_shared/index.js';
3
3
  import express from 'express';
4
+ /** e2b sandboxes poll this path. A host with several leaders sets `SLICC_JOIN_FILE`. */
5
+ export const DEFAULT_JOIN_FILE_PATH = '/tmp/slicc-join.json';
6
+ /**
7
+ * Join file for `POST /api/cloud-status`. `SLICC_JOIN_FILE` wins so each
8
+ * leader on one host writes its own file; unset keeps the sandbox default.
9
+ */
10
+ export function resolveJoinFilePath(env = process.env) {
11
+ const configured = env.SLICC_JOIN_FILE?.trim();
12
+ return configured || DEFAULT_JOIN_FILE_PATH;
13
+ }
4
14
  /** The optional string fields validated when present but never required. */
5
15
  const OPTIONAL_STRING_FIELDS = [
6
16
  'trayId',
@@ -26,7 +26,7 @@ import { runPause } from './cloud/pause.js';
26
26
  import { FileRegistry } from './cloud/registry-file.js';
27
27
  import { runResume } from './cloud/resume.js';
28
28
  import { runStart } from './cloud/start.js';
29
- import { registerCloudStatusEndpoint } from './cloud-status.js';
29
+ import { registerCloudStatusEndpoint, resolveJoinFilePath } from './cloud-status.js';
30
30
  import { ComputerDemoState, createComputerDemoFrameServer, handleComputerDemoUpgrade, registerComputerDemoRoutes, } from './computer-demo.js';
31
31
  import { ElectronAppAlreadyRunningError, ElectronOverlayInjector, launchElectronApp, resolveOverlayThinBridge, } from './electron-controller.js';
32
32
  import { getElectronAppPorts } from './electron-runtime.js';
@@ -1254,12 +1254,12 @@ async function main() {
1254
1254
  // Secret management API — direct .env file access (no browser needed),
1255
1255
  // plus the S3 / DA sign-and-forward and masked-secret endpoints.
1256
1256
  registerSecretRoutes(app, { secretStore, secretProxy, oauthStore, devMode: false });
1257
- // Cloud status endpoint (hosted-only) — writes join info to /tmp/slicc-join.json
1257
+ // Cloud status (hosted-only). Writes SLICC_JOIN_FILE, else /tmp/slicc-join.json.
1258
1258
  // Register BEFORE Chromium launches. The webapp's first action after
1259
1259
  // ?runtime=hosted-leader boot is to mint a tray and POST /api/cloud-status.
1260
1260
  // If the route doesn't exist yet, the post 404s and the CLI poll times out.
1261
1261
  if (RUNTIME_FLAGS.hosted) {
1262
- registerCloudStatusEndpoint(app, { joinFilePath: '/tmp/slicc-join.json' });
1262
+ registerCloudStatusEndpoint(app, { joinFilePath: resolveJoinFilePath() });
1263
1263
  registerHostedBootstrapEndpoint(app, { secretStore });
1264
1264
  registerSecretsReloadEndpoint(app, { secretProxy, secretStore, oauthStore });
1265
1265
  }