sliccy 6.181.0 → 6.183.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 (210) hide show
  1. package/dist/ui/.vite/manifest.json +274 -266
  2. package/dist/ui/assets/SKILL-B4YYagrM.js +1 -0
  3. package/dist/ui/assets/{SKILL-BpMlcVho.js → SKILL-BbKu0tAh.js} +1 -1
  4. package/dist/ui/assets/{SKILL-DGelbGt_.js → SKILL-CG7Xvjv7.js} +1 -1
  5. package/dist/ui/assets/__vite-browser-external-CJkRLpJ-.js +1 -0
  6. package/dist/ui/assets/{account-store-J3ybiSNw.js → account-store-Ce44FdYj.js} +2 -2
  7. package/dist/ui/assets/{account-store-0RMtbmqz.js → account-store-D0ciUU3U.js} +1 -1
  8. package/dist/ui/assets/{adobe-YOeKKYUk.js → adobe-FgsPWBjV.js} +2 -2
  9. package/dist/ui/assets/{adobe-DEXpooxf.js → adobe-j1r9Po8o.js} +1 -1
  10. package/dist/ui/assets/{agent-panels-B4hlhzVG.js → agent-panels-DcVWQZVh.js} +1 -1
  11. package/dist/ui/assets/{almost-bash-shell-headless-BR1Hr6tM.js → almost-bash-shell-headless-CsDQjWSX.js} +270 -270
  12. package/dist/ui/assets/{apply-layout-BgFVMSBx.js → apply-layout-6-QTVrMq.js} +1 -1
  13. package/dist/ui/assets/{apps-oyrUmtWx.js → apps-C20mWJ8w.js} +1 -1
  14. package/dist/ui/assets/{azure-openai-Ytc_MWDd.js → azure-openai-CTmHX_BT.js} +1 -1
  15. package/dist/ui/assets/{azure-openai-B6qTFVGv.js → azure-openai-CotI4RBJ.js} +1 -1
  16. package/dist/ui/assets/{backend-hostfs-CEXlx0cW.js → backend-hostfs-D46_hViH.js} +1 -1
  17. package/dist/ui/assets/{browser-DG5MjvHF.js → browser-BM_DFzrh.js} +2 -2
  18. package/dist/ui/assets/{bsh-watchdog-DBtF-C4h.js → bsh-watchdog-CmaS7wa9.js} +1 -1
  19. package/dist/ui/assets/{capability-C8I_18AN.js → capability-BgC-ru0t.js} +2 -2
  20. package/dist/ui/assets/{cdp-DVWJozRc.js → cdp-BvPARz8i.js} +1 -1
  21. package/dist/ui/assets/{cerebras-BT44OLPt.js → cerebras-CGndqdHt.js} +1 -1
  22. package/dist/ui/assets/{cerebras-brHRFUH2.js → cerebras-DG7lHBt1.js} +1 -1
  23. package/dist/ui/assets/{client-Sb_wIqH2.js → client-CmfvXtLV.js} +1 -1
  24. package/dist/ui/assets/{composer-speech-BZQtz7u1.js → composer-speech-C2InwNBM.js} +1 -1
  25. package/dist/ui/assets/{connect-surface-D7cq2QI7.js → connect-surface-EWOA61l_.js} +1 -1
  26. package/dist/ui/assets/{core-B3ULTK7V.js → core-Be1yHH6v.js} +1 -1
  27. package/dist/ui/assets/{core-aQUekdF7.js → core-D-Fp1HL2.js} +2 -2
  28. package/dist/ui/assets/{cost-command-DZQVtgRS.js → cost-command-CitGzr6C.js} +1 -1
  29. package/dist/ui/assets/{directed-approval-DvAxEX5J.js → directed-approval-6QIzcmF_.js} +1 -1
  30. package/dist/ui/assets/{discovery-preference-C7kFEKRM.js → discovery-preference-MWZVi-PZ.js} +1 -1
  31. package/dist/ui/assets/dist-C8ZpEU8V.js +3 -0
  32. package/dist/ui/assets/{emscripten-vfs-hook-agmT6Hsz.js → emscripten-vfs-hook-B9KkLncp.js} +1 -1
  33. package/dist/ui/assets/{ensure-speech-assets-CQ05z2Xw.js → ensure-speech-assets-C3v1Nu2n.js} +1 -1
  34. package/dist/ui/assets/{esbuild-wasm-DS_YG2EY.js → esbuild-wasm-CeZYVyQ9.js} +1 -1
  35. package/dist/ui/assets/{extension-ops-CmuqbGmo.js → extension-ops-DTRUyGkx.js} +1 -1
  36. package/dist/ui/assets/{ffmpeg-wasm-B77gfnB_.js → ffmpeg-wasm-CV1BmGNS.js} +1 -1
  37. package/dist/ui/assets/{float-topology-BvkgNLoi.js → float-topology-B0_dG7En.js} +1 -1
  38. package/dist/ui/assets/{follower-navigate-watcher-B8Kk1WcF.js → follower-navigate-watcher-DVWQWTGU.js} +1 -1
  39. package/dist/ui/assets/{frozen-archive-writer-qxZ9jGOV.js → frozen-archive-writer-DMShgEqJ.js} +1 -1
  40. package/dist/ui/assets/{fs-Dkh-H6Cd.js → fs-JF56Nord.js} +2 -2
  41. package/dist/ui/assets/{fs-D6FCLu_F.js → fs-TVcPtHbB.js} +1 -1
  42. package/dist/ui/assets/{gelatiere-store-ChogqkEu.js → gelatiere-store-BnAzlDHe.js} +1 -1
  43. package/dist/ui/assets/{gelatiere-unit-DxFUh33e.js → gelatiere-unit-5cS02rOR.js} +1 -1
  44. package/dist/ui/assets/{github-D31l6kcK.js → github-BJKcZ0cU.js} +2 -2
  45. package/dist/ui/assets/{github-CrHzeKQ8.js → github-DsvjkXr7.js} +1 -1
  46. package/dist/ui/assets/{github-auth-VTbKhlbJ.js → github-auth-Crm1hubQ.js} +1 -1
  47. package/dist/ui/assets/{github-copilot-eUb4Djg_.js → github-copilot-BWhNAowY.js} +1 -1
  48. package/dist/ui/assets/{github-copilot-CVwHDKPD.js → github-copilot-ngj7NQ16.js} +1 -1
  49. package/dist/ui/assets/{github-install-Dkt1u6HU.js → github-install-DB3-4PDg.js} +1 -1
  50. package/dist/ui/assets/{github-zip-B6gHXxqd.js → github-zip-CfS9P2dH.js} +1 -1
  51. package/dist/ui/assets/{guest-tool-gate-YxkVsl15.js → guest-tool-gate-B2z1ggE_.js} +1 -1
  52. package/dist/ui/assets/{hear-BKQjhhNP.js → hear-akPMJ6kC.js} +1 -1
  53. package/dist/ui/assets/{help-C7WHd3Ia.js → help-CNHuyT-F.js} +1 -1
  54. package/dist/ui/assets/{host-command-ODKvqvjN.js → host-command-PUA7nfMk.js} +1 -1
  55. package/dist/ui/assets/{installer-D35TzRKw.js → installer-CzQ_lEMz.js} +1 -1
  56. package/dist/ui/assets/{interrupted-work-recovery-BK9ZDM7F.js → interrupted-work-recovery-r9fITX8G.js} +1 -1
  57. package/dist/ui/assets/js-realm-worker-EkjzOn2Q.js +53 -0
  58. package/dist/ui/assets/jsh-executor-C849KexO.js +18 -0
  59. package/dist/ui/assets/{kernel-worker-UUfeG-Eg.js → kernel-worker-B69_4v-D.js} +10 -10
  60. package/dist/ui/assets/{lick-ws-bridge-DoyPgrSr.js → lick-ws-bridge-BygSyyxa.js} +1 -1
  61. package/dist/ui/assets/{lick-ws-bridge-DdgwrW91.js → lick-ws-bridge-DDMdP2AB.js} +1 -1
  62. package/dist/ui/assets/{live-session-curation-6O9TA5qM.js → live-session-curation-BfplChNV.js} +1 -1
  63. package/dist/ui/assets/{live-session-snapshot-D_7T7FHe.js → live-session-snapshot-BQQH-IkA.js} +1 -1
  64. package/dist/ui/assets/{local-llm-BYaSa2xI.js → local-llm-BSMA7cC5.js} +1 -1
  65. package/dist/ui/assets/{local-llm-TK4oGrWD.js → local-llm-CNznNtp9.js} +1 -1
  66. package/dist/ui/assets/{magick-wasm-DCNZhAyd.js → magick-wasm-KFp97Nzb.js} +1 -1
  67. package/dist/ui/assets/{main-Bgkf5d3Z.js → main-BsG-jtvC.js} +3 -3
  68. package/dist/ui/assets/{main-cherry-BUdIAeG5.js → main-cherry-7eVbk29W.js} +1 -1
  69. package/dist/ui/assets/{memory-curation-seam-CNOuxuz4.js → memory-curation-seam-z19QoOG6.js} +1 -1
  70. package/dist/ui/assets/{memory-health-BSo0HKQx.js → memory-health-CL5kYVAr.js} +1 -1
  71. package/dist/ui/assets/{memory-write-execute-mQfg-aG4.js → memory-write-execute-C_oehZl_.js} +1 -1
  72. package/dist/ui/assets/{mount-h-dwh5GL.js → mount-BvxmwqOG.js} +3 -3
  73. package/dist/ui/assets/{mount-BpcQX-Sq.js → mount-JNIgSYT5.js} +1 -1
  74. package/dist/ui/assets/{mount-bridge-client-C4Ti1B85.js → mount-bridge-client-CaHZ1pkb.js} +1 -1
  75. package/dist/ui/assets/{mount-bridge-client-BMkDfg_K.js → mount-bridge-client-DRVFK3mJ.js} +1 -1
  76. package/dist/ui/assets/{new-session-CTx7YRbr.js → new-session-qNCtGIiI.js} +2 -2
  77. package/dist/ui/assets/{oauth-bootstrap-B18nfDG4.js → oauth-bootstrap-F0HvaeYA.js} +2 -2
  78. package/dist/ui/assets/{oauth-service-CxXBA9rC.js → oauth-service-Dn_Xz1FZ.js} +1 -1
  79. package/dist/ui/assets/{oauth-service-B8mWc7rY.js → oauth-service-_PUd0RqU.js} +1 -1
  80. package/dist/ui/assets/{onboarding-orchestrator-Df3UDgbD.js → onboarding-orchestrator-OKDMP2X_.js} +1 -1
  81. package/dist/ui/assets/{openai-codex-Cu1dT_JE.js → openai-codex-6hCaJG3N.js} +1 -1
  82. package/dist/ui/assets/{openai-codex-DBUtEEk3.js → openai-codex-BbYHsYuO.js} +1 -1
  83. package/dist/ui/assets/{openrouter-BwrZKpwu.js → openrouter-BPYQjzK5.js} +1 -1
  84. package/dist/ui/assets/{openrouter-CrB0BbnV.js → openrouter-BstowyUr.js} +1 -1
  85. package/dist/ui/assets/{openrouter-free-B_LRYNX8.js → openrouter-free-B1qsiSWg.js} +1 -1
  86. package/dist/ui/assets/{openrouter-free-CXqUunRn.js → openrouter-free-DMavbTS5.js} +1 -1
  87. package/dist/ui/assets/{openrouter-oauth-Bpzo9cvY.js → openrouter-oauth-CYZRlFsL.js} +1 -1
  88. package/dist/ui/assets/{openrouter-oauth-Bnohq7Ac.js → openrouter-oauth-DrKARZLe.js} +1 -1
  89. package/dist/ui/assets/{opfs-mount-CmDtZOGy.js → opfs-mount-D3x0tHeU.js} +1 -1
  90. package/dist/ui/assets/{page-approval-service-CYpStEUs.js → page-approval-service-DRZEjhrX.js} +1 -1
  91. package/dist/ui/assets/{panel-rpc-handlers-BFG-ZvfW.js → panel-rpc-handlers-CiSSOSEo.js} +2 -2
  92. package/dist/ui/assets/{panelize-shell-CLHSr5bz.js → panelize-shell-CILi0yPu.js} +4 -4
  93. package/dist/ui/assets/{pi-edit-execution-wHbJ4R48.js → pi-edit-execution-CEUeI3PX.js} +1 -1
  94. package/dist/ui/assets/{port-bridge-client-CrZ9vnOK.js → port-bridge-client-BiWcfZSc.js} +1 -1
  95. package/dist/ui/assets/{port-bridge-client-BHH6FPBY.js → port-bridge-client-BvO-1Rao.js} +1 -1
  96. package/dist/ui/assets/{provider-BXK9OD8Z.js → provider-CPes-oeu.js} +2 -2
  97. package/dist/ui/assets/{provider-DyqdvQeZ.js → provider-Dv9W3IvY.js} +1 -1
  98. package/dist/ui/assets/{provider-settings-BO6Fedc5.js → provider-settings-CDcPLuoa.js} +1 -1
  99. package/dist/ui/assets/provider-store-access-B7yFT4hY.js +1 -0
  100. package/dist/ui/assets/provider-store-access-D2Rj0Y-3.js +1 -0
  101. package/dist/ui/assets/{providers-BvApGkM9.js → providers-COWrD21n.js} +2 -2
  102. package/dist/ui/assets/{providers-CAcycJZb.js → providers-DLk_1jra.js} +1 -1
  103. package/dist/ui/assets/proxied-fetch-DiXk_XGs.js +2 -0
  104. package/dist/ui/assets/proxied-fetch-J19bK2dG.js +1 -0
  105. package/dist/ui/assets/{py-live-vfs-Di71Rd2P.js → py-live-vfs-DMc0LhCg.js} +12 -0
  106. package/dist/ui/assets/{py-live-vfs-CJWt_6ye.js → py-live-vfs-Dm8bBjqR.js} +12 -0
  107. package/dist/ui/assets/py-realm-worker-BaO89JAR.js +255 -0
  108. package/dist/ui/assets/{pyodide-W71AWfnt.js → pyodide-DY17DXNV.js} +2 -2
  109. package/dist/ui/assets/{quick-llm-BENSRBxD.js → quick-llm-ByDw79ph.js} +1 -1
  110. package/dist/ui/assets/realm-inprocess-BLSq-cQS.js +33 -0
  111. package/dist/ui/assets/{recovery-screen-Tq3wGnmV.js → recovery-screen-CldB31e2.js} +1 -1
  112. package/dist/ui/assets/{redirect-uri-Dnc7Ae7l.js → redirect-uri-DlOE4xJ4.js} +1 -1
  113. package/dist/ui/assets/{remote-terminal-view-C8LiE7Sl.js → remote-terminal-view-BpHAWWeD.js} +1 -1
  114. package/dist/ui/assets/{require-guards-DPd9EYEo.js → require-guards-DPf5QETL.js} +14 -3
  115. package/dist/ui/assets/{rest-ops-vPHUnWou.js → rest-ops-CPEMTyP-.js} +1 -1
  116. package/dist/ui/assets/{rest-ops-DABw6D2a.js → rest-ops-DKsDUOxE.js} +1 -1
  117. package/dist/ui/assets/{restore-DVP0SPlY.js → restore-CaWVAwJN.js} +1 -1
  118. package/dist/ui/assets/{run-CPT6_R-_.js → run-2oVsdzZj.js} +2 -2
  119. package/dist/ui/assets/{run-BGZP3j5p.js → run-BA94mtBB.js} +1 -1
  120. package/dist/ui/assets/{run-CKp8YCSO.js → run-BOMvKGOX.js} +1 -1
  121. package/dist/ui/assets/{run-C-OJvA2b.js → run-BP0Pyqp1.js} +1 -1
  122. package/dist/ui/assets/{run-BKItPKix.js → run-BVlVC7jS.js} +10 -10
  123. package/dist/ui/assets/{run-CX6BUmN-.js → run-C1e4W7pJ.js} +1 -1
  124. package/dist/ui/assets/{run-CiUSMP3Y.js → run-CH8M889A.js} +3 -3
  125. package/dist/ui/assets/{run-zLr2k5ZP.js → run-CHKo3g64.js} +1 -1
  126. package/dist/ui/assets/{run-BV_OY-0v.js → run-CW0-cog1.js} +1 -1
  127. package/dist/ui/assets/{run-FyOp8GaC.js → run-Dl4OQ_Yd.js} +1 -1
  128. package/dist/ui/assets/{screencapture-run-BnyfqO9F.js → screencapture-run-Dt7lEfIp.js} +1 -1
  129. package/dist/ui/assets/{secret-env-Cazzr31P.js → secret-env-iwcdxjpw.js} +1 -1
  130. package/dist/ui/assets/secret-topology-CZv6A9HW.js +1 -0
  131. package/dist/ui/assets/{secrets-bridge-client-CiA-2ZIU.js → secrets-bridge-client-B_CG-HIg.js} +1 -1
  132. package/dist/ui/assets/{secrets-bridge-client-kWWipUuL.js → secrets-bridge-client-CUClOhLJ.js} +1 -1
  133. package/dist/ui/assets/{session-command-memory-HovmIuMP.js → session-command-memory-mbpebhz_.js} +2 -2
  134. package/dist/ui/assets/{session-jsonl-PCOch0_B.js → session-jsonl-BIxfXb7u.js} +1 -1
  135. package/dist/ui/assets/{session-jsonl-DK-0Hm8U.js → session-jsonl-v8KN4g_6.js} +1 -1
  136. package/dist/ui/assets/{session-search-index-BNvhiRLv.js → session-search-index-CDR-vSNN.js} +1 -1
  137. package/dist/ui/assets/{setup-feature-flags-remote-2RQqEGaT.js → setup-feature-flags-remote-zauTrEL6.js} +1 -1
  138. package/dist/ui/assets/{setup-model-catalog-B911rONc.js → setup-model-catalog-CC8KX0LB.js} +1 -1
  139. package/dist/ui/assets/shared-BDXQKitm.js +1 -0
  140. package/dist/ui/assets/shared-DfMXB1pm.js +4 -0
  141. package/dist/ui/assets/{signed-fetch-gB25Bw53.js → signed-fetch-D3crNsSs.js} +1 -1
  142. package/dist/ui/assets/{silent-renew-backoff-Brcr76an.js → silent-renew-backoff-Bw_c5Dy9.js} +1 -1
  143. package/dist/ui/assets/slicc-version-BiZFSvt-.js +1 -0
  144. package/dist/ui/assets/{snapshot-Ci8jnY_A.js → snapshot-CISX8Ybx.js} +1 -1
  145. package/dist/ui/assets/{snapshot-features-BYEGCVfZ.js → snapshot-features-NmqWLNc6.js} +1 -1
  146. package/dist/ui/assets/soundscape-Cmr7xPXZ.js +1 -0
  147. package/dist/ui/assets/{speak-BT4Xdlvj.js → speak-D1JF7Loc.js} +1 -1
  148. package/dist/ui/assets/{sprinkle-manager-8T1XJmL3.js → sprinkle-manager-DYhvCg3m.js} +1 -1
  149. package/dist/ui/assets/{sprinkle-renderer-_vOdPt8H.js → sprinkle-renderer-B5O28doL.js} +16 -16
  150. package/dist/ui/assets/{ssh-BGtVaOJn.js → ssh-DPyBpV4Z.js} +1 -1
  151. package/dist/ui/assets/{state-nnDajRje.js → state-CcrU6NJk.js} +1 -1
  152. package/dist/ui/assets/{store-D9XL9aIQ.js → store-D9HgQRdy.js} +1 -1
  153. package/dist/ui/assets/{store-BxxMrsS7.js → store-DYTzgtEI.js} +1 -1
  154. package/dist/ui/assets/{sudo-CnXURhFV.js → sudo-BMKHhJ-G.js} +1 -1
  155. package/dist/ui/assets/{supervisor-fOZGoD0G.js → supervisor-DVWawJTM.js} +1 -1
  156. package/dist/ui/assets/{sync-dialog-oh_O9Mv5.js → sync-dialog-a3YQ7KdL.js} +1 -1
  157. package/dist/ui/assets/{transformers-env-zmBF2In6.js → transformers-env-BFCBqwlr.js} +1 -1
  158. package/dist/ui/assets/{tray-leader-Co-1rs4b.js → tray-leader-zKkaFxIk.js} +1 -1
  159. package/dist/ui/assets/{tray-leave-runtime-PpRt0K76.js → tray-leave-runtime-CNc8g3tP.js} +1 -1
  160. package/dist/ui/assets/{tray-runtime-config-DBapPARd.js → tray-runtime-config-DmcF9Q2r.js} +1 -1
  161. package/dist/ui/assets/{tray-sidecar-DYuM8Ifi.js → tray-sidecar-DqV3sh8H.js} +1 -1
  162. package/dist/ui/assets/{turn-journal-_Hrn3Aoy.js → turn-journal-Z3e-huge.js} +1 -1
  163. package/dist/ui/assets/{upgrade-detection-jhAzOLSL.js → upgrade-detection-Bsvrq_lt.js} +1 -1
  164. package/dist/ui/assets/{upskill-lick-skip-D1vFOKgN.js → upskill-lick-skip-BQvJXwS8.js} +1 -1
  165. package/dist/ui/assets/voice-reply-B_BXV7A4.js +1 -0
  166. package/dist/ui/assets/{wc-attach-BadBFuc7.js → wc-attach-CEkWqpLf.js} +2 -2
  167. package/dist/ui/assets/{wc-browser-DqUJaWcH.js → wc-browser-DWwB9l3P.js} +1 -1
  168. package/dist/ui/assets/{wc-computers-CTPf-95b.js → wc-computers-DuGnds2T.js} +1 -1
  169. package/dist/ui/assets/{wc-detached-UIVnUZp5.js → wc-detached-Bc462J4O.js} +1 -1
  170. package/dist/ui/assets/{wc-extension-Bxc7adS3.js → wc-extension-DZmTjBxS.js} +2 -2
  171. package/dist/ui/assets/{wc-follower-CcQiy0Ep.js → wc-follower-C0olroj0.js} +3 -3
  172. package/dist/ui/assets/{wc-follower-oauth-DEBzlhDR.js → wc-follower-oauth-BTOd3V8J.js} +1 -1
  173. package/dist/ui/assets/{wc-gelatiere-B3T_MsYw.js → wc-gelatiere-3BBfbusI.js} +1 -1
  174. package/dist/ui/assets/wc-live-Cc8h6ZH1.js +428 -0
  175. package/dist/ui/assets/{wc-nav-Cc31eRBb.js → wc-nav-6f53F2ez.js} +2 -2
  176. package/dist/ui/assets/{wc-onboarding-A_43Ieo4.js → wc-onboarding-D548eykf.js} +2 -2
  177. package/dist/ui/assets/{wc-permissions-C9woviuI.js → wc-permissions-B3SJSMf9.js} +2 -2
  178. package/dist/ui/assets/{wc-placeholder-t7YMeS_j.js → wc-placeholder-BS4TqwFw.js} +3 -3
  179. package/dist/ui/assets/{wc-secret-request-Dfm9QvyE.js → wc-secret-request-DoSFP6An.js} +1 -1
  180. package/dist/ui/assets/{wc-settings-BD6JONjg.js → wc-settings-B7zv9hl_.js} +3 -3
  181. package/dist/ui/assets/{wc-shell-Ba5uNdmF.js → wc-shell-pTQjFXvS.js} +362 -199
  182. package/dist/ui/assets/{wc-shortcut-config-DeU2Q2BU.js → wc-shortcut-config-87PqTsLw.js} +2 -2
  183. package/dist/ui/assets/{wc-sprinkles-D4sQVRG5.js → wc-sprinkles-BMoFsMix.js} +2 -2
  184. package/dist/ui/assets/{wc-transcript-export-CsUhlwMo.js → wc-transcript-export-CP5fUab6.js} +2 -2
  185. package/dist/ui/assets/{wc-tray-CwvVidS8.js → wc-tray-DW-miPAR.js} +4 -4
  186. package/dist/ui/assets/welcome-detection-F6VKt_Ix.js +1 -0
  187. package/dist/ui/assets/{whisper-session-MB0YiZ0q.js → whisper-session-C90nWMGE.js} +2 -2
  188. package/dist/ui/assets/{xai-grok-rwJAZiuv.js → xai-grok-D0yrS3by.js} +1 -1
  189. package/dist/ui/assets/{xai-grok-0BxCS34q.js → xai-grok-U-6wly9W.js} +1 -1
  190. package/dist/ui/index.html +9 -9
  191. package/dist/ui/packages/webapp/index.html +9 -9
  192. package/package.json +1 -1
  193. package/dist/ui/assets/SKILL-CWxUIsrD.js +0 -1
  194. package/dist/ui/assets/__vite-browser-external-BlQ4QU88.js +0 -1
  195. package/dist/ui/assets/js-realm-worker-BIVxi3Fa.js +0 -50
  196. package/dist/ui/assets/jsh-executor-DhdH2_yG.js +0 -18
  197. package/dist/ui/assets/provider-store-access-BFeKOGcv.js +0 -1
  198. package/dist/ui/assets/provider-store-access-C2X0AryS.js +0 -1
  199. package/dist/ui/assets/proxied-fetch-BlIpeDaL.js +0 -2
  200. package/dist/ui/assets/proxied-fetch-CNe6icTW.js +0 -1
  201. package/dist/ui/assets/py-realm-worker-DLb3nkyD.js +0 -244
  202. package/dist/ui/assets/realm-inprocess-BBw2Fa8u.js +0 -30
  203. package/dist/ui/assets/secret-topology-DpJD8DzV.js +0 -1
  204. package/dist/ui/assets/shared-C_68vn79.js +0 -4
  205. package/dist/ui/assets/shared-mBEktoxE.js +0 -1
  206. package/dist/ui/assets/slicc-version-CAje2bW-.js +0 -1
  207. package/dist/ui/assets/soundscape-CdQvLeB0.js +0 -1
  208. package/dist/ui/assets/voice-reply--Z1dXvPT.js +0 -1
  209. package/dist/ui/assets/wc-live-B4gJYGS5.js +0 -428
  210. package/dist/ui/assets/welcome-detection-CIDbn0ev.js +0 -1
@@ -1,2 +1,2 @@
1
- import{t as e}from"./logger-DDBAeTLF.js";import{t}from"./base64-ELzoYfwP.js";import{f as n,p as r}from"./wc-follower-oauth-DEBzlhDR.js";import{r as i}from"./tray-leader-Co-1rs4b.js";var a=e(`tray-sidecar`),o=`slicc-sidecar`,s=4194304,c={exec:!1},l=class{onChunk;stdout=``;stderr=``;truncated=!1;units=0;constructor(e){this.onChunk=e}push(e,t){if(!(this.truncated||t.length===0)){if(this.units+=t.length,this.units>s){this.truncated=!0;return}e===`stdout`?this.stdout+=t:this.stderr+=t,this.onChunk?.({stream:e,text:t})}}result(e,t){return{stdout:this.truncated?`${this.stdout}\n[output truncated at cap]`:this.stdout,stderr:this.stderr,exitCode:e,...t?{error:t}:{},...this.truncated?{truncated:!0}:{}}}},u=class{name;handle=null;channel=null;unsubscribe=null;listeners=new Set;dropListeners=new Set;status=null;attachedAt=Date.now();currentJoinUrl;startPromise=null;constructor(e,t){this.name=e,this.currentJoinUrl=t}statusSink={get:()=>this.status??{state:`inactive`,joinUrl:this.currentJoinUrl,trayId:null,error:null,lastPingTime:null,reconnectAttempts:0,attachAttempts:0,lastAttachCode:null,connectingSince:null,lastError:null},set:e=>{this.status=e}};get info(){let e=this.statusSink.get();return{name:this.name,joinUrl:this.currentJoinUrl,trayId:e.trayId,state:e.state,attachedAt:this.attachedAt,error:e.error}}get connected(){return this.channel!==null&&this.statusSink.get().state===`connected`}get dead(){return this.statusSink.get().state===`error`}async ready(){await(this.startPromise??Promise.resolve())}async start(e){return this.startPromise=new Promise((t,r)=>{let i=!1,a=setTimeout(()=>{i||(i=!0,this.stop(),r(Error(`timed out after ${Math.round(e/1e3)}s connecting to leader`)))},e);this.handle=n({joinUrl:this.currentJoinUrl,runtime:o,statusSink:this.statusSink,onJoinUrlChanged:e=>{this.currentJoinUrl=e}},{onConnected:e=>{this.wire(e.channel),!i&&(i=!0,clearTimeout(a),t())},onReconnecting:()=>{this.notifyDropped(`connection dropped; reconnecting`)},onGaveUp:e=>{this.notifyDropped(`reconnect gave up: ${e}`),!i&&(i=!0,clearTimeout(a),this.stop(),r(Error(e)))}})}),await this.startPromise}wire(e){let t=this.channel!==null;this.unsubscribe?.();let n=new r(e);this.channel=n,this.unsubscribe=n.onMessage(e=>this.dispatch(e)),n.send({type:`hello`,protocolVersion:9,runtime:o,capabilities:c}),a.info(t?`Sidecar reconnected`:`Sidecar attached`,{name:this.name}),t&&this.notifyDropped(`reconnected mid-request; the reply was lost`)}dispatch(e){if(e.type===`ping`){this.channel?.send({type:`pong`});return}if(e.type!==`pong`){if(e.type===`exec.request`){this.channel?.send({type:`exec.response`,requestId:e.requestId,exitCode:127,error:`slicc sidecar is a client-only attachment and does not accept exec`});return}for(let t of[...this.listeners])try{t(e)}catch(e){a.error(`Sidecar listener threw`,{name:this.name,error:e instanceof Error?e.message:String(e)})}}}send(e){return this.channel?.send(e)??!1}onMessage(e){return this.listeners.add(e),()=>this.listeners.delete(e)}onDropped(e){return this.dropListeners.add(e),()=>this.dropListeners.delete(e)}notifyDropped(e){for(let t of[...this.dropListeners])try{t(e)}catch{}}stop(){this.unsubscribe?.(),this.unsubscribe=null,this.channel?.close(),this.channel=null,this.handle?.cancel(),this.handle=null,this.notifyDropped(`detached`),this.listeners.clear(),this.dropListeners.clear()}};function d(e){let t;try{t=new URL(e)}catch{throw Error(`not a URL: ${e}`)}if(t.protocol!==`https:`&&t.protocol!==`http:`)throw Error(`join URL must be http(s): ${e}`);if(!t.pathname.includes(`/join/`))throw Error(`not a tray join URL (expected .../join/<token>): ${e}`);return t}function f(e){let t=i().session?.joinUrl;if(!t)return!1;try{let n=new URL(t);return n.origin===e.origin&&n.pathname===e.pathname}catch{return!1}}function p(e,t,n,r){return new Promise(i=>{let a=!1,o=null,s=null,c=null,l=null,u=null,d=(e,r,d)=>{a||(a=!0,c&&clearTimeout(c),l&&clearTimeout(l),o?.(),s?.(),u&&t.signal?.removeEventListener(`abort`,u),i({result:n.result(r,d),outcome:e}))},f={finish:(e,t)=>d(`complete`,e,t)};if(o=e.onMessage(e=>r(e,f)),s=e.onDropped(e=>d(`dropped`,1,`connection lost: ${e}`)),t.timeoutMs!==void 0){let e=Math.round(t.timeoutMs/1e3);c=setTimeout(()=>d(`abort`,124,`timed out after ${e}s`),t.timeoutMs)}if(t.expireMs!==void 0&&(l=setTimeout(()=>d(`expire`,0),t.expireMs)),t.signal){if(t.signal.aborted){d(`abort`,130,`interrupted`);return}u=()=>d(`abort`,130,`interrupted`),t.signal.addEventListener(`abort`,u,{once:!0})}})}var m=class{attachments=new Map;counter=0;list(){return[...this.attachments.values()].map(e=>e.info)}async attach(e){let t=d(e.joinUrl);if(f(t))throw Error(`refusing to attach to this instance's own tray — that would deadlock the leader thread`);let n=this.findByJoinUrl(t);if(n?.dead)a.info(`Replacing a dead sidecar attachment`,{name:n.name}),this.detach(n.name);else if(n){if(await n.ready(),!n.dead)return n.info;this.detach(n.name)}if(this.attachments.size>=8)throw Error(`too many sidecar attachments (8); detach one first`);let r=e.name??`slicc-${++this.counter}`;if(this.attachments.has(r))throw Error(`attachment '${r}' already exists`);let i=new u(r,t.toString());this.attachments.set(r,i);try{await i.start(e.connectTimeoutMs??3e4)}catch(e){throw this.attachments.delete(r),e}return i.info}detach(e){let t=this.attachments.get(e);return t?(t.stop(),this.attachments.delete(e),!0):!1}detachAll(){for(let e of[...this.attachments.keys()])this.detach(e)}findByJoinUrl(e){let t=`${e.origin}${e.pathname}`;return[...this.attachments.values()].find(e=>{try{let n=new URL(e.info.joinUrl);return`${n.origin}${n.pathname}`===t}catch{return!1}})}require(e){let t=this.attachments.get(e);if(!t)throw Error(`no such attachment: ${e}`);if(!t.connected)throw Error(`attachment '${e}' is not connected`);return t}async prompt(e,t,n={}){let r=this.require(e),i=new l(n.onChunk),a=!1,o=p(r,n,i,(e,t)=>{if(e.type===`agent_event`){let n=e.event;n.type===`content_delta`?i.push(`stdout`,n.text):n.type===`turn_end`?t.finish(0):n.type===`error`&&(i.push(`stderr`,`${n.error}\n`),t.finish(1));return}if(e.type===`status`){e.scoopStatus===`processing`?a=!0:a&&t.finish(0);return}e.type===`error`&&(i.push(`stderr`,`${e.error}\n`),t.finish(1))});if(!r.send({type:`user_message`,text:t,messageId:crypto.randomUUID(),...n.steer?{steer:!0}:{}}))return{stdout:``,stderr:``,exitCode:1,error:`failed to send user_message`};let{result:s,outcome:c}=await o;return c===`abort`&&r.send({type:`abort`}),s}async exec(e,n,r={}){let i=this.require(e),a=crypto.randomUUID(),o=new l(r.onChunk),s=new TextDecoder,c=new TextDecoder,u=p(i,r,o,(e,n)=>{if(e.type===`exec.chunk`&&e.requestId===a){let n;try{n=t(e.data)}catch{return}let r=e.stream===`stdout`?s:c;o.push(e.stream,r.decode(n,{stream:!0}));return}e.type===`exec.response`&&e.requestId===a&&(o.push(`stdout`,s.decode()),o.push(`stderr`,c.decode()),n.finish(e.exitCode,e.error))});if(!i.send({type:`exec.request`,requestId:a,command:n,...r.cwd?{cwd:r.cwd}:{},...r.env?{env:r.env}:{},...r.stdin?{stdin:r.stdin}:{}}))return{stdout:``,stderr:``,exitCode:1,error:`failed to send exec.request`};let{result:d,outcome:f}=await u;return f===`abort`&&i.send({type:`exec.signal`,requestId:a,signal:`SIGINT`}),d}async watch(e,t){let n=this.require(e),r=new l(t.onChunk),i=!1,{result:a}=await p(n,{...t,timeoutMs:void 0,expireMs:t.durationMs},r,(e,n)=>{if(e.type===`user_message_echo`){r.push(`stdout`,`\n> ${e.text}\n`);return}if(e.type===`agent_event`){if(t.scoopJid&&e.scoopJid!==t.scoopJid)return;r.push(`stdout`,h(e.event));return}if(e.type===`status`){if(t.scoopJid&&e.scoopJid!==t.scoopJid)return;e.scoopStatus===`processing`?i=!0:i&&t.untilIdle&&n.finish(0);return}e.type===`error`&&r.push(`stderr`,`${e.error}\n`)});return a}};function h(e){switch(e.type){case`content_delta`:return e.text;case`tool_use_start`:return`\n[tool] ${e.toolName} ${g(e.toolInput)}\n`;case`tool_result`:return`[${e.isError?`tool-error`:`tool-ok`}] ${_(e.result,200)}\n`;case`turn_end`:return`
1
+ import{t as e}from"./logger-DDBAeTLF.js";import{t}from"./base64-ELzoYfwP.js";import{f as n,p as r}from"./wc-follower-oauth-BTOd3V8J.js";import{r as i}from"./tray-leader-zKkaFxIk.js";var a=e(`tray-sidecar`),o=`slicc-sidecar`,s=4194304,c={exec:!1},l=class{onChunk;stdout=``;stderr=``;truncated=!1;units=0;constructor(e){this.onChunk=e}push(e,t){if(!(this.truncated||t.length===0)){if(this.units+=t.length,this.units>s){this.truncated=!0;return}e===`stdout`?this.stdout+=t:this.stderr+=t,this.onChunk?.({stream:e,text:t})}}result(e,t){return{stdout:this.truncated?`${this.stdout}\n[output truncated at cap]`:this.stdout,stderr:this.stderr,exitCode:e,...t?{error:t}:{},...this.truncated?{truncated:!0}:{}}}},u=class{name;handle=null;channel=null;unsubscribe=null;listeners=new Set;dropListeners=new Set;status=null;attachedAt=Date.now();currentJoinUrl;startPromise=null;constructor(e,t){this.name=e,this.currentJoinUrl=t}statusSink={get:()=>this.status??{state:`inactive`,joinUrl:this.currentJoinUrl,trayId:null,error:null,lastPingTime:null,reconnectAttempts:0,attachAttempts:0,lastAttachCode:null,connectingSince:null,lastError:null},set:e=>{this.status=e}};get info(){let e=this.statusSink.get();return{name:this.name,joinUrl:this.currentJoinUrl,trayId:e.trayId,state:e.state,attachedAt:this.attachedAt,error:e.error}}get connected(){return this.channel!==null&&this.statusSink.get().state===`connected`}get dead(){return this.statusSink.get().state===`error`}async ready(){await(this.startPromise??Promise.resolve())}async start(e){return this.startPromise=new Promise((t,r)=>{let i=!1,a=setTimeout(()=>{i||(i=!0,this.stop(),r(Error(`timed out after ${Math.round(e/1e3)}s connecting to leader`)))},e);this.handle=n({joinUrl:this.currentJoinUrl,runtime:o,statusSink:this.statusSink,onJoinUrlChanged:e=>{this.currentJoinUrl=e}},{onConnected:e=>{this.wire(e.channel),!i&&(i=!0,clearTimeout(a),t())},onReconnecting:()=>{this.notifyDropped(`connection dropped; reconnecting`)},onGaveUp:e=>{this.notifyDropped(`reconnect gave up: ${e}`),!i&&(i=!0,clearTimeout(a),this.stop(),r(Error(e)))}})}),await this.startPromise}wire(e){let t=this.channel!==null;this.unsubscribe?.();let n=new r(e);this.channel=n,this.unsubscribe=n.onMessage(e=>this.dispatch(e)),n.send({type:`hello`,protocolVersion:9,runtime:o,capabilities:c}),a.info(t?`Sidecar reconnected`:`Sidecar attached`,{name:this.name}),t&&this.notifyDropped(`reconnected mid-request; the reply was lost`)}dispatch(e){if(e.type===`ping`){this.channel?.send({type:`pong`});return}if(e.type!==`pong`){if(e.type===`exec.request`){this.channel?.send({type:`exec.response`,requestId:e.requestId,exitCode:127,error:`slicc sidecar is a client-only attachment and does not accept exec`});return}for(let t of[...this.listeners])try{t(e)}catch(e){a.error(`Sidecar listener threw`,{name:this.name,error:e instanceof Error?e.message:String(e)})}}}send(e){return this.channel?.send(e)??!1}onMessage(e){return this.listeners.add(e),()=>this.listeners.delete(e)}onDropped(e){return this.dropListeners.add(e),()=>this.dropListeners.delete(e)}notifyDropped(e){for(let t of[...this.dropListeners])try{t(e)}catch{}}stop(){this.unsubscribe?.(),this.unsubscribe=null,this.channel?.close(),this.channel=null,this.handle?.cancel(),this.handle=null,this.notifyDropped(`detached`),this.listeners.clear(),this.dropListeners.clear()}};function d(e){let t;try{t=new URL(e)}catch{throw Error(`not a URL: ${e}`)}if(t.protocol!==`https:`&&t.protocol!==`http:`)throw Error(`join URL must be http(s): ${e}`);if(!t.pathname.includes(`/join/`))throw Error(`not a tray join URL (expected .../join/<token>): ${e}`);return t}function f(e){let t=i().session?.joinUrl;if(!t)return!1;try{let n=new URL(t);return n.origin===e.origin&&n.pathname===e.pathname}catch{return!1}}function p(e,t,n,r){return new Promise(i=>{let a=!1,o=null,s=null,c=null,l=null,u=null,d=(e,r,d)=>{a||(a=!0,c&&clearTimeout(c),l&&clearTimeout(l),o?.(),s?.(),u&&t.signal?.removeEventListener(`abort`,u),i({result:n.result(r,d),outcome:e}))},f={finish:(e,t)=>d(`complete`,e,t)};if(o=e.onMessage(e=>r(e,f)),s=e.onDropped(e=>d(`dropped`,1,`connection lost: ${e}`)),t.timeoutMs!==void 0){let e=Math.round(t.timeoutMs/1e3);c=setTimeout(()=>d(`abort`,124,`timed out after ${e}s`),t.timeoutMs)}if(t.expireMs!==void 0&&(l=setTimeout(()=>d(`expire`,0),t.expireMs)),t.signal){if(t.signal.aborted){d(`abort`,130,`interrupted`);return}u=()=>d(`abort`,130,`interrupted`),t.signal.addEventListener(`abort`,u,{once:!0})}})}var m=class{attachments=new Map;counter=0;list(){return[...this.attachments.values()].map(e=>e.info)}async attach(e){let t=d(e.joinUrl);if(f(t))throw Error(`refusing to attach to this instance's own tray — that would deadlock the leader thread`);let n=this.findByJoinUrl(t);if(n?.dead)a.info(`Replacing a dead sidecar attachment`,{name:n.name}),this.detach(n.name);else if(n){if(await n.ready(),!n.dead)return n.info;this.detach(n.name)}if(this.attachments.size>=8)throw Error(`too many sidecar attachments (8); detach one first`);let r=e.name??`slicc-${++this.counter}`;if(this.attachments.has(r))throw Error(`attachment '${r}' already exists`);let i=new u(r,t.toString());this.attachments.set(r,i);try{await i.start(e.connectTimeoutMs??3e4)}catch(e){throw this.attachments.delete(r),e}return i.info}detach(e){let t=this.attachments.get(e);return t?(t.stop(),this.attachments.delete(e),!0):!1}detachAll(){for(let e of[...this.attachments.keys()])this.detach(e)}findByJoinUrl(e){let t=`${e.origin}${e.pathname}`;return[...this.attachments.values()].find(e=>{try{let n=new URL(e.info.joinUrl);return`${n.origin}${n.pathname}`===t}catch{return!1}})}require(e){let t=this.attachments.get(e);if(!t)throw Error(`no such attachment: ${e}`);if(!t.connected)throw Error(`attachment '${e}' is not connected`);return t}async prompt(e,t,n={}){let r=this.require(e),i=new l(n.onChunk),a=!1,o=p(r,n,i,(e,t)=>{if(e.type===`agent_event`){let n=e.event;n.type===`content_delta`?i.push(`stdout`,n.text):n.type===`turn_end`?t.finish(0):n.type===`error`&&(i.push(`stderr`,`${n.error}\n`),t.finish(1));return}if(e.type===`status`){e.scoopStatus===`processing`?a=!0:a&&t.finish(0);return}e.type===`error`&&(i.push(`stderr`,`${e.error}\n`),t.finish(1))});if(!r.send({type:`user_message`,text:t,messageId:crypto.randomUUID(),...n.steer?{steer:!0}:{}}))return{stdout:``,stderr:``,exitCode:1,error:`failed to send user_message`};let{result:s,outcome:c}=await o;return c===`abort`&&r.send({type:`abort`}),s}async exec(e,n,r={}){let i=this.require(e),a=crypto.randomUUID(),o=new l(r.onChunk),s=new TextDecoder,c=new TextDecoder,u=p(i,r,o,(e,n)=>{if(e.type===`exec.chunk`&&e.requestId===a){let n;try{n=t(e.data)}catch{return}let r=e.stream===`stdout`?s:c;o.push(e.stream,r.decode(n,{stream:!0}));return}e.type===`exec.response`&&e.requestId===a&&(o.push(`stdout`,s.decode()),o.push(`stderr`,c.decode()),n.finish(e.exitCode,e.error))});if(!i.send({type:`exec.request`,requestId:a,command:n,...r.cwd?{cwd:r.cwd}:{},...r.env?{env:r.env}:{},...r.stdin?{stdin:r.stdin}:{}}))return{stdout:``,stderr:``,exitCode:1,error:`failed to send exec.request`};let{result:d,outcome:f}=await u;return f===`abort`&&i.send({type:`exec.signal`,requestId:a,signal:`SIGINT`}),d}async watch(e,t){let n=this.require(e),r=new l(t.onChunk),i=!1,{result:a}=await p(n,{...t,timeoutMs:void 0,expireMs:t.durationMs},r,(e,n)=>{if(e.type===`user_message_echo`){r.push(`stdout`,`\n> ${e.text}\n`);return}if(e.type===`agent_event`){if(t.scoopJid&&e.scoopJid!==t.scoopJid)return;r.push(`stdout`,h(e.event));return}if(e.type===`status`){if(t.scoopJid&&e.scoopJid!==t.scoopJid)return;e.scoopStatus===`processing`?i=!0:i&&t.untilIdle&&n.finish(0);return}e.type===`error`&&r.push(`stderr`,`${e.error}\n`)});return a}};function h(e){switch(e.type){case`content_delta`:return e.text;case`tool_use_start`:return`\n[tool] ${e.toolName} ${g(e.toolInput)}\n`;case`tool_result`:return`[${e.isError?`tool-error`:`tool-ok`}] ${_(e.result,200)}\n`;case`turn_end`:return`
2
2
  `;case`error`:return`[error] ${e.error}\n`;default:return``}}function g(e){if(e==null)return``;try{return _(JSON.stringify(e),120)}catch{return``}}function _(e,t){let n=e.replace(/\s+/g,` `).trim();return n.length<=t?n:`${n.slice(0,t-1)}…`}export{m as SidecarRegistry};
@@ -1 +1 @@
1
- import{t as e}from"./logger-LESFN7Hj.js";import"./core-aQUekdF7.js";const t=e(`turn-journal`),n=`inflight`;var r=class{dbPromise=null;dbName;live=new Map;chains=new Map;constructor(e={}){this.dbName=e.dbName??`slicc-turn-journal`}begin(e,t,n=0,r=[]){let i=Date.now(),a={jid:e,folder:t,startedAt:i,updatedAt:i,resumeCount:n,tools:[],guestGates:[...r]};this.live.set(e,a),this.write(e,a)}setGuestGates(e,t){let n=this.live.get(e);n&&(n.guestGates=[...t],n.updatedAt=Date.now(),this.write(e,n))}toolStarted(e,t,n,r){let i=this.live.get(e);return i?i.tools.some(e=>e.toolCallId===t)?this.settled(e):(i.tools.push({toolCallId:t,toolName:n,argsPreview:s(r),startedAt:Date.now()}),i.updatedAt=Date.now(),this.write(e,i)):Promise.resolve()}toolEnded(e,t){let n=this.live.get(e);if(!n)return;let r=n.tools.length;n.tools=n.tools.filter(e=>e.toolCallId!==t),n.tools.length!==r&&(n.updatedAt=Date.now(),this.write(e,n))}end(e){this.live.delete(e)&&this.write(e,null)}isLive(e){return this.live.has(e)}async clear(e){this.live.delete(e),await this.write(e,null)}async readAll(){try{return(await a((await this.getDb()).transaction(n,`readonly`).objectStore(n).getAll())).filter(c).map(e=>({...e,resumeCount:typeof e.resumeCount==`number`?e.resumeCount:0,guestGates:Array.isArray(e.guestGates)?e.guestGates:[]}))}catch(e){return t.warn(`Turn journal read failed; nothing will be recovered`,{error:l(e)}),[]}}async flush(){await Promise.all([...this.chains.values()])}settled(e){return this.chains.get(e)??Promise.resolve()}write(e,n){let r=n?structuredClone(n):null,i=(this.chains.get(e)??Promise.resolve()).then(()=>this.persist(e,r)).catch(n=>{t.warn(`Turn journal write failed`,{jid:e,error:l(n)})});return this.chains.set(e,i),i.then(()=>{this.chains.get(e)===i&&this.chains.delete(e)}),i}async persist(e,t){let r=(await this.getDb()).transaction(n,`readwrite`),i=r.objectStore(n);t?i.put(t):i.delete(e),await o(r)}getDb(){return this.dbPromise||=i(this.dbName).catch(e=>{throw this.dbPromise=null,e}),this.dbPromise}};function i(e){return new Promise((t,r)=>{if(typeof indexedDB>`u`){r(Error(`IndexedDB unavailable`));return}let i=indexedDB.open(e,1);i.onupgradeneeded=()=>{i.result.objectStoreNames.contains(n)||i.result.createObjectStore(n,{keyPath:`jid`})},i.onsuccess=()=>t(i.result),i.onerror=()=>r(i.error??Error(`turn journal open failed`)),i.onblocked=()=>r(Error(`turn journal open blocked`))})}function a(e){return new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error??Error(`turn journal request failed`))})}function o(e){return new Promise((t,n)=>{e.oncomplete=()=>t(),e.onerror=()=>n(e.error??Error(`turn journal transaction failed`)),e.onabort=()=>n(e.error??Error(`turn journal transaction aborted`))})}function s(e){let t;try{t=typeof e==`string`?e:JSON.stringify(e)??``}catch{t=String(e)}return t.length>400?`${t.slice(0,399)}…`:t}function c(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.jid==`string`&&typeof t.folder==`string`&&Array.isArray(t.tools)}function l(e){return e instanceof Error?e.message:String(e)}export{r as TurnJournal,s as previewArgs};
1
+ import{t as e}from"./logger-LESFN7Hj.js";import"./core-D-Fp1HL2.js";const t=e(`turn-journal`),n=`inflight`;var r=class{dbPromise=null;dbName;live=new Map;chains=new Map;constructor(e={}){this.dbName=e.dbName??`slicc-turn-journal`}begin(e,t,n=0,r=[]){let i=Date.now(),a={jid:e,folder:t,startedAt:i,updatedAt:i,resumeCount:n,tools:[],guestGates:[...r]};this.live.set(e,a),this.write(e,a)}setGuestGates(e,t){let n=this.live.get(e);n&&(n.guestGates=[...t],n.updatedAt=Date.now(),this.write(e,n))}toolStarted(e,t,n,r){let i=this.live.get(e);return i?i.tools.some(e=>e.toolCallId===t)?this.settled(e):(i.tools.push({toolCallId:t,toolName:n,argsPreview:s(r),startedAt:Date.now()}),i.updatedAt=Date.now(),this.write(e,i)):Promise.resolve()}toolEnded(e,t){let n=this.live.get(e);if(!n)return;let r=n.tools.length;n.tools=n.tools.filter(e=>e.toolCallId!==t),n.tools.length!==r&&(n.updatedAt=Date.now(),this.write(e,n))}end(e){this.live.delete(e)&&this.write(e,null)}isLive(e){return this.live.has(e)}async clear(e){this.live.delete(e),await this.write(e,null)}async readAll(){try{return(await a((await this.getDb()).transaction(n,`readonly`).objectStore(n).getAll())).filter(c).map(e=>({...e,resumeCount:typeof e.resumeCount==`number`?e.resumeCount:0,guestGates:Array.isArray(e.guestGates)?e.guestGates:[]}))}catch(e){return t.warn(`Turn journal read failed; nothing will be recovered`,{error:l(e)}),[]}}async flush(){await Promise.all([...this.chains.values()])}settled(e){return this.chains.get(e)??Promise.resolve()}write(e,n){let r=n?structuredClone(n):null,i=(this.chains.get(e)??Promise.resolve()).then(()=>this.persist(e,r)).catch(n=>{t.warn(`Turn journal write failed`,{jid:e,error:l(n)})});return this.chains.set(e,i),i.then(()=>{this.chains.get(e)===i&&this.chains.delete(e)}),i}async persist(e,t){let r=(await this.getDb()).transaction(n,`readwrite`),i=r.objectStore(n);t?i.put(t):i.delete(e),await o(r)}getDb(){return this.dbPromise||=i(this.dbName).catch(e=>{throw this.dbPromise=null,e}),this.dbPromise}};function i(e){return new Promise((t,r)=>{if(typeof indexedDB>`u`){r(Error(`IndexedDB unavailable`));return}let i=indexedDB.open(e,1);i.onupgradeneeded=()=>{i.result.objectStoreNames.contains(n)||i.result.createObjectStore(n,{keyPath:`jid`})},i.onsuccess=()=>t(i.result),i.onerror=()=>r(i.error??Error(`turn journal open failed`)),i.onblocked=()=>r(Error(`turn journal open blocked`))})}function a(e){return new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error??Error(`turn journal request failed`))})}function o(e){return new Promise((t,n)=>{e.oncomplete=()=>t(),e.onerror=()=>n(e.error??Error(`turn journal transaction failed`)),e.onabort=()=>n(e.error??Error(`turn journal transaction aborted`))})}function s(e){let t;try{t=typeof e==`string`?e:JSON.stringify(e)??``}catch{t=String(e)}return t.length>400?`${t.slice(0,399)}…`:t}function c(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.jid==`string`&&typeof t.folder==`string`&&Array.isArray(t.tools)}function l(e){return e instanceof Error?e.message:String(e)}export{r as TurnJournal,s as previewArgs};
@@ -1 +1 @@
1
- import{n as e}from"./slicc-version-CAje2bW-.js";import{f as t,p as n}from"./kernel-worker-UUfeG-Eg.js";const r=`slicc:last-seen-version`;function i(){let{version:t,releasedAt:n}=e();return{version:t,releasedAt:n}}async function a(){let e=await t(r);return e&&e.length>0?e:null}async function o(e){await n(r,e)}async function s(){let e=i(),t=await a();return t===null?(await o(e.version),{bundled:e,lastSeen:null,isUpgrade:!1}):t===e.version?{bundled:e,lastSeen:t,isUpgrade:!1}:{bundled:e,lastSeen:t,isUpgrade:!0}}async function c(e){await o(e)}export{s as detectUpgrade,a as getLastSeenVersion,c as recordVersionSeen};
1
+ import{n as e}from"./slicc-version-BiZFSvt-.js";import{f as t,p as n}from"./kernel-worker-B69_4v-D.js";const r=`slicc:last-seen-version`;function i(){let{version:t,releasedAt:n}=e();return{version:t,releasedAt:n}}async function a(){let e=await t(r);return e&&e.length>0?e:null}async function o(e){await n(r,e)}async function s(){let e=i(),t=await a();return t===null?(await o(e.version),{bundled:e,lastSeen:null,isUpgrade:!1}):t===e.version?{bundled:e,lastSeen:t,isUpgrade:!1}:{bundled:e,lastSeen:t,isUpgrade:!0}}async function c(e){await o(e)}export{s as detectUpgrade,a as getLastSeenVersion,c as recordVersionSeen};
@@ -1 +1 @@
1
- import{i as e}from"./github-install-Dkt1u6HU.js";function t(e){return(e??``).replace(/^\/+|\/+$/g,``)}function n(e,t){let n=e.toLowerCase(),r=t.toLowerCase();return n===r||n.startsWith(r)||r.startsWith(n)}function r(e){let n=t(e);if(n)return n.split(`/`).pop()||void 0}function i(e,n,i){if(e.kind!==`github`||e.source!==n)return!1;let a=t(e.path);if(!i||a===i||a.startsWith(`${i}/`))return!0;let o=r(i);return!!(o&&(e.skill===o||e.skill===i))}async function a(e,t){let n=e.body??{};if(n.verb!==`upskill`||typeof n.target!=`string`||!n.target)return!1;let r=t();if(!r)return!1;let[{scanSkillProvenance:i,resolveCommitSha:a},{createProxiedFetch:s},{createGitHubRequestContext:c}]=await Promise.all([import(`./provenance-DdmsQ3Nr.js`).then(e=>e.n),import(`./proxied-fetch-CNe6icTW.js`).then(e=>e.i),import(`./github-auth-VTbKhlbJ.js`).then(e=>e.r)]),l=await i(r),u=await c(s());return await o({target:n.target,branch:typeof n.branch==`string`?n.branch:void 0,path:typeof n.path==`string`?n.path:void 0,provenanced:l.provenanced,unattributed:l.unattributed,resolveSha:({owner:e,repo:t,ref:n,path:r})=>a(e,t,n,u,!0,r)})!==`raise`}async function o(a){let o=e(a.target);if(!o)return`raise`;let s=`${o.owner}/${o.repo}`,c=t(a.path??o.path),l=a.branch??o.branch,u=a.provenanced.filter(({provenance:e})=>i(e,s,c)),d=r(c);if(u.length===0)return d&&a.unattributed.includes(d)?`skip-no-provenance`:`raise`;let f=u.map(({provenance:e})=>e.sha).filter(e=>typeof e==`string`&&e.length>0);if(f.length!==u.length)return`skip-no-provenance`;let p=await a.resolveSha({owner:o.owner,repo:o.repo,ref:l,path:c||void 0});return p?f.every(e=>n(e,p))?`skip-same-sha`:`raise`:`skip-no-provenance`}export{a as shouldSkipNavigateUpskill};
1
+ import{i as e}from"./github-install-DB3-4PDg.js";function t(e){return(e??``).replace(/^\/+|\/+$/g,``)}function n(e,t){let n=e.toLowerCase(),r=t.toLowerCase();return n===r||n.startsWith(r)||r.startsWith(n)}function r(e){let n=t(e);if(n)return n.split(`/`).pop()||void 0}function i(e,n,i){if(e.kind!==`github`||e.source!==n)return!1;let a=t(e.path);if(!i||a===i||a.startsWith(`${i}/`))return!0;let o=r(i);return!!(o&&(e.skill===o||e.skill===i))}async function a(e,t){let n=e.body??{};if(n.verb!==`upskill`||typeof n.target!=`string`||!n.target)return!1;let r=t();if(!r)return!1;let[{scanSkillProvenance:i,resolveCommitSha:a},{createProxiedFetch:s},{createGitHubRequestContext:c}]=await Promise.all([import(`./provenance-DdmsQ3Nr.js`).then(e=>e.n),import(`./proxied-fetch-J19bK2dG.js`).then(e=>e.i),import(`./github-auth-Crm1hubQ.js`).then(e=>e.r)]),l=await i(r),u=await c(s());return await o({target:n.target,branch:typeof n.branch==`string`?n.branch:void 0,path:typeof n.path==`string`?n.path:void 0,provenanced:l.provenanced,unattributed:l.unattributed,resolveSha:({owner:e,repo:t,ref:n,path:r})=>a(e,t,n,u,!0,r)})!==`raise`}async function o(a){let o=e(a.target);if(!o)return`raise`;let s=`${o.owner}/${o.repo}`,c=t(a.path??o.path),l=a.branch??o.branch,u=a.provenanced.filter(({provenance:e})=>i(e,s,c)),d=r(c);if(u.length===0)return d&&a.unattributed.includes(d)?`skip-no-provenance`:`raise`;let f=u.map(({provenance:e})=>e.sha).filter(e=>typeof e==`string`&&e.length>0);if(f.length!==u.length)return`skip-no-provenance`;let p=await a.resolveSha({owner:o.owner,repo:o.repo,ref:l,path:c||void 0});return p?f.every(e=>n(e,p))?`skip-same-sha`:`raise`:`skip-no-provenance`}export{a as shouldSkipNavigateUpskill};
@@ -0,0 +1 @@
1
+ import{t as e}from"./logger-DDBAeTLF.js";import{it as t,ot as n}from"./wc-shell-pTQjFXvS.js";import{hasVoiceForLang as r,speak as i,speechTextFromMarkdown as a}from"./speak-D1JF7Loc.js";var o=e(`speech:voice-reply`),s=0;function c(){s++}function l(){return s<=0?!1:(s--,!0)}async function u(e,s=i,c=r){let l=t(e);if(l&&!await c(l))return;let u=a(n(e));if(u)try{await s(l?{text:u,lang:l}:{text:u})}catch(e){o.warn(`spoken reply failed`,e)}}export{l as consumeVoiceSubmission,c as markVoiceSubmission,u as speakReplyMarkdown};
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/wc-shell-Ba5uNdmF.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/preload-helper-Czpn1I53.js","assets/logger-DDBAeTLF.js","assets/mime-types-D0xZwlMO.js","assets/base64-ELzoYfwP.js","assets/bridge-protocol-C52CnDIj.js","assets/account-store-J3ybiSNw.js","assets/core-B3ULTK7V.js","assets/compat-qQM4gjF_.js","assets/models-BSkXF4T6.js","assets/diagnostics-DN_idNHx.js","assets/provider-env-CTOcDKrQ.js","assets/__vite-browser-external-5eBdwsFd.js","assets/openrouter.models-B-zmcypy.js","assets/libesm-BypnjKEL.js","assets/feature-flags-BftQitIZ.js","assets/proxied-fetch-BlIpeDaL.js","assets/fetch-body-1l9I58Vk.js","assets/api-endpoint-DuEQRZ4g.js","assets/runtime-env-Dlaokqg1.js","assets/secret-topology-DpJD8DzV.js","assets/float-topology-BvkgNLoi.js","assets/secrets-bridge-client-CiA-2ZIU.js","assets/port-bridge-client-CrZ9vnOK.js","assets/image-markers-q8JQTtid.js","assets/tool-ui-eSQ1g2I1.js","assets/providers-BvApGkM9.js","assets/panel-rpc-D3EPRnmw.js","assets/bedrock-camp-compat-BeCSBUrZ.js","assets/bedrock-camp-extra-models-WTCIjj5a.js","assets/claude-model-version-DZmbk9E2.js","assets/telemetry-CKoAhRMv.js","assets/types-D8gIX-W-.js","assets/same-file-identity-DuEcSmPX.js","assets/icons-jrIi5FYk.js","assets/wc-shell-WkeczD9x.css","assets/wc-secret-request-Dfm9QvyE.js","assets/secret-request-registry-DrOMKR1H.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/wc-shell-pTQjFXvS.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/preload-helper-Czpn1I53.js","assets/logger-DDBAeTLF.js","assets/mime-types-D0xZwlMO.js","assets/base64-ELzoYfwP.js","assets/bridge-protocol-C52CnDIj.js","assets/account-store-Ce44FdYj.js","assets/core-Be1yHH6v.js","assets/compat-qQM4gjF_.js","assets/models-BSkXF4T6.js","assets/diagnostics-DN_idNHx.js","assets/provider-env-CTOcDKrQ.js","assets/__vite-browser-external-5eBdwsFd.js","assets/openrouter.models-B-zmcypy.js","assets/libesm-BypnjKEL.js","assets/feature-flags-BftQitIZ.js","assets/proxied-fetch-DiXk_XGs.js","assets/fetch-body-1l9I58Vk.js","assets/api-endpoint-DuEQRZ4g.js","assets/runtime-env-Dlaokqg1.js","assets/secret-topology-CZv6A9HW.js","assets/float-topology-B0_dG7En.js","assets/secrets-bridge-client-B_CG-HIg.js","assets/port-bridge-client-BiWcfZSc.js","assets/image-markers-q8JQTtid.js","assets/tool-ui-eSQ1g2I1.js","assets/providers-COWrD21n.js","assets/panel-rpc-D3EPRnmw.js","assets/bedrock-camp-compat-BeCSBUrZ.js","assets/bedrock-camp-extra-models-WTCIjj5a.js","assets/claude-model-version-DZmbk9E2.js","assets/telemetry-CKoAhRMv.js","assets/types-D8gIX-W-.js","assets/same-file-identity-DuEcSmPX.js","assets/icons-jrIi5FYk.js","assets/wc-shell-WkeczD9x.css","assets/wc-secret-request-DoSFP6An.js","assets/secret-request-registry-DrOMKR1H.js"])))=>i.map(i=>d[i]);
2
2
  import{t as e}from"./preload-helper-Czpn1I53.js";import{r as t,t as n}from"./base64-ELzoYfwP.js";import{t as r}from"./permissions-surface-registry-CilCRwhh.js";var i=8,a=2e3,o=[`/workspace`,`/shared`,`/tmp`],s=8,c=new Set([`node_modules`,`.git`]),l=1e4,u=/\.(png|jpe?g|gif|webp|svg|avif)$/i,d=4194304,f=262144;function p(){return`att-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}function m(e){return{png:`image/png`,jpg:`image/jpeg`,jpeg:`image/jpeg`,gif:`image/gif`,webp:`image/webp`,svg:`image/svg+xml`,avif:`image/avif`,md:`text/markdown`,json:`application/json`}[e.toLowerCase().split(`.`).pop()??``]??`text/plain`}function h(e,n){let r={id:p(),name:e,size:n.length};if(u.test(e))return n.length>d?{...r,mimeType:m(e),kind:`image`,error:`image too large to inline`}:{...r,mimeType:m(e),kind:`image`,data:t(n)};let i={...r,mimeType:m(e),kind:`file`};return n.length>f?{...i,error:`file too large to inline`}:i}async function g(e){let t=new Uint8Array(await e.arrayBuffer()),n=h(e.name,t);return e.type?{...n,mimeType:e.type}:n}function _(e,t){let n=t.match(/^data:(image\/[^;]+);base64,(.+)$/);return n?{id:p(),name:e,mimeType:n[1],size:Math.floor(n[2].length*3/4),kind:`image`,data:n[2]}:null}var v=`/tmp/upload`,y=1568;async function b(e,t,n){await e.mkdir(v,{recursive:!0}).catch(()=>void 0);let r=`${v}/${Date.now()}-${t.replace(/[^A-Za-z0-9._-]+/g,`_`)}`;return await e.writeFile(r,n),r}async function x(e,t=y){let n=new Image;n.src=e;try{await n.decode()}catch{return e}let r=Math.min(1,t/Math.max(n.naturalWidth,n.naturalHeight,1));if(r>=1)return e;let i=document.createElement(`canvas`);return i.width=Math.round(n.naturalWidth*r),i.height=Math.round(n.naturalHeight*r),i.getContext(`2d`)?.drawImage(n,0,0,i.width,i.height),i.toDataURL(`image/jpeg`,.85)}async function S(e,t,r){let i=_(e,t);if(!i)return null;let a;return r&&i.data&&(a=await b(r,e,n(i.data)).catch(()=>void 0)),{..._(e,await x(t).catch(()=>t))??i,name:e,path:a}}async function C(e,t,n){if(!n)return null;let r=new Uint8Array(await t.arrayBuffer()),i=await b(n,e,r).catch(()=>void 0);return i?{id:p(),name:e,mimeType:t.type||`video/webm`,size:r.length,kind:`file`,path:i}:null}async function w(e){let t=[],n=o.map(e=>({dir:e,depth:0}));for(;n.length>0&&t.length<a;){let{dir:r,depth:i}=n.shift(),o;try{o=await e.readDir(r)}catch{continue}for(let e of o){let o=`${r}/${e.name}`;if(e.type===`directory`)i<s&&!c.has(e.name)&&n.push({dir:o,depth:i+1});else if(t.push(o),t.length>=a)break}}return t}function T(e){let t=null;return async n=>{let r=await e.openReader();(!t||Date.now()-t.at>l)&&(t={at:Date.now(),paths:await w(r)});let a=e=>n===``||e.toLowerCase().includes(n),o=t.paths.filter(e=>a(e)).slice(0,i).map(e=>({id:e,label:e.split(`/`).pop()??e,sub:e.slice(0,e.lastIndexOf(`/`))})),s=[];try{s=(await r.readDir(`/workspace/skills`)).filter(e=>e.type===`directory`&&a(e.name)).slice(0,i).map(e=>({id:e.name,label:e.name}))}catch{}let c=(await e.listConversations().catch(()=>[])).filter(e=>a(e.label)).slice(0,i);return[{kind:`file`,label:`Files`,icon:`file`,entries:o},{kind:`skill`,label:`Skills`,icon:`sparkles`,entries:s},{kind:`conversation`,label:`Conversations`,icon:`message-square`,entries:c}]}}var E=`slicc-wc-attach-style`,D=`
3
3
  .wcatt{display:flex;flex-wrap:wrap;gap:6px;padding:8px 10px 0;font-family:var(--ui);}
4
4
  .wcatt:empty{display:none;}
@@ -10,4 +10,4 @@ import{t as e}from"./preload-helper-Czpn1I53.js";import{r as t,t as n}from"./bas
10
10
  .wcatt__x{appearance:none;background:none;border:none;cursor:pointer;color:var(--txt-3);
11
11
  font:inherit;padding:0;line-height:1;}
12
12
  .wcatt__x:hover{color:var(--ink);}
13
- `,O=class{#e;#t=[];constructor(e){if(!document.getElementById(E)){let e=document.createElement(`style`);e.id=E,e.textContent=D,document.head.appendChild(e)}this.#e=document.createElement(`div`),this.#e.className=`wcatt`,e.prepend(this.#e)}get items(){return this.#t}add(e){this.#t.push(e),this.#n()}take(){let e=this.#t;return this.#t=[],this.#n(),e}#n(){this.#e.replaceChildren(...this.#t.map(e=>this.#r(e)))}#r(t){let n=document.createElement(`span`);if(n.className=`wcatt__chip`,t.kind===`image`&&t.data){let r=document.createElement(`img`);r.className=`wcatt__thumb`,r.src=`data:${t.mimeType};base64,${t.data}`,r.alt=t.name,r.addEventListener(`click`,()=>{e(async()=>{let{SliccImagePreview:e}=await import(`./wc-shell-Ba5uNdmF.js`).then(e=>e.j);return{SliccImagePreview:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36])).then(({SliccImagePreview:e})=>e.show(r.src,r))}),n.append(r)}let r=document.createElement(`span`);r.className=`wcatt__name`,r.textContent=t.name;let i=document.createElement(`button`);return i.type=`button`,i.className=`wcatt__x`,i.setAttribute(`aria-label`,`Remove ${t.name}`),i.textContent=`×`,i.addEventListener(`click`,()=>{this.#t=this.#t.filter(e=>e.id!==t.id),this.#n()}),n.append(r,i),n}};async function k(e){let t=document.createElement(`video`);t.srcObject=e,t.muted=!0;try{await t.play(),await new Promise(e=>requestAnimationFrame(()=>e(null)));let e=document.createElement(`canvas`);return e.width=t.videoWidth,e.height=t.videoHeight,e.width===0||e.height===0?null:(e.getContext(`2d`)?.drawImage(t,0,0),e.toDataURL(`image/png`))}finally{for(let t of e.getTracks())t.stop();t.srcObject=null}}async function A(){let e=r();if(e){let t=await e.request(`screenshare`,{constraints:{video:!0}});if(!t)return null;let n=t.stream;return k(n)}return k(await navigator.mediaDevices.getDisplayMedia({video:!0}))}async function j(e,t){let n=r();if(!n)return null;let i=await n.prompt({kinds:e,description:t,skipIfGranted:!0});for(let e of i.grants)if(e.kind===`camera`||e.kind===`microphone`||e.kind===`screenshare`)for(let t of e.stream.getTracks())t.stop();return i.status===`granted`}var M=`slicc_camera_device`,N=`slicc_microphone_device`,P=[`position:absolute`,`left:50%`,`right:auto`,`transform:translateX(-50%)`,`bottom:56px`,`width:calc(100% - 32px)`,`max-width:680px`,`z-index:3`].join(`;`);async function F(e,t){if(await j([`camera`,`microphone`],`Slicc is requesting access to your camera and microphone to capture a photo or video for this conversation.`)===!1)return null;let n=document.createElement(`slicc-composer-capture`),r=localStorage.getItem(M);r&&n.setAttribute(`preferred-device`,r);let i=localStorage.getItem(N);i&&n.setAttribute(`preferred-audio-device`,i),n.style.cssText=P,n.hidden=!0,n.addEventListener(`slicc-capture-device-change`,e=>{let t=e.detail;if(!t?.deviceId)return;let n=t.kind===`microphone`?N:M;localStorage.setItem(n,t.deviceId)}),e.append(n);try{return await n.open(t)}finally{n.remove()}}async function I(e,t,n){if(!e.dataUrl)return;let r=`photo-${Date.now()}.png`,i=await t.openWriter?.().catch(()=>null)??null,a=await S(r,e.dataUrl,i);a&&n.add(a)}async function L(e,t,n){if(!e.blob)return;let r=/webm/i.test(e.mimeType)?`webm`:`bin`,i=`video-${Date.now()}.${r}`,a=await t.openWriter?.().catch(()=>null)??null,o=await C(i,e.blob,a);o&&n.add(o)}async function R(e,t,n){if(e.mode===`photo`){if(!t.composer){let e=await z();if(!e)return;let r=await S(`photo-${Date.now()}.png`,e,await t.openWriter?.().catch(()=>null)??null);r&&n.add(r);return}let e=await F(t.composer,`photo`);if(!e)return;e.kind===`image`?await I(e,t,n):e.kind===`video`&&await L(e,t,n);return}let r=await A();if(!r)return;let i=await S(`screenshot-${Date.now()}.png`,r,await t.openWriter?.().catch(()=>null)??null);i&&n.add(i)}async function z(){if(await j([`camera`],`Slicc is requesting access to your camera to capture a photo for this conversation.`)===!1)return null;let e=document.createElement(`slicc-camera-dialog`),t=localStorage.getItem(M);t&&e.setAttribute(`preferred-device`,t),e.addEventListener(`slicc-camera-device-change`,e=>{let t=e.detail?.deviceId;t&&localStorage.setItem(M,t)}),document.body.append(e);try{return await e.open()}finally{e.remove()}}async function B(e,t,n){let r=await n.openWriter?.().catch(()=>null)??null,i=r?await b(r,e.name,t).catch(()=>void 0):void 0;return i?{...e,error:void 0,path:i}:e.kind===`image`?e:{...e,error:`could not be saved to the virtual filesystem`}}async function V(e,t,n){let r=await(await t()).readFile(e,{encoding:`binary`});return typeof r==`string`?(n.error(`VFS image pick returned text, not bytes — skipping the inline copy`,e),null):r}async function H(e,t,n){let r=0;try{r=(await(await n()).stat(e)).size}catch{}return{id:p(),name:t,mimeType:m(t),size:r,kind:`file`,path:e}}async function U(e,t,n,r){let i=e.split(`/`).pop()??e;if(u.test(i)){let a=await V(e,t,r);if(a){let t=h(i,a);n.add({...t,error:void 0,path:e});return}}n.add(await H(e,i,t))}function W(e,t){let n=t.value??t.getAttribute(`value`)??``,r=n&&!n.endsWith(` `)?` `:``;t.setAttribute(`value`,`${n}${r}${e}`)}function G(e,t){W(`Use the "${e}" skill: `,t)}async function K(t){let{requestSecretFromUser:n}=await e(async()=>{let{requestSecretFromUser:e}=await import(`./wc-secret-request-Dfm9QvyE.js`);return{requestSecretFromUser:e}},__vite__mapDeps([37,3,0,1,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,38])),r=await n();if(!r.stored)return;let i=r.domains.join(`, `),a=r.persisted?`saved`:`this session only`;W(r.maskedValue?`I stored the secret ${r.name} (masked value ${r.maskedValue}, scope: ${i}, ${a}). Use the masked value — SLICC swaps in the real one at the network boundary. `:`I stored the secret ${r.name} (scope: ${i}, ${a}). Run \`secret get ${r.name}\` for its masked value. `,t.inputCard)}function q(e){return e?.name===`NotAllowedError`}async function J(e,t,n){if(e.kind===`upload`&&e.file instanceof File){let r=new Uint8Array(await e.file.arrayBuffer());n.add(await B(await g(e.file),r,t))}else e.kind===`capture`?await R(e,t,n):e.kind===`file`&&typeof e.id==`string`&&t.openReader?await U(e.id,t.openReader,n,t.log):e.kind===`secret`?await K(t):e.kind===`skill`&&typeof e.label==`string`?G(e.label,t.inputCard):e.kind===`conversation`&&typeof e.id==`string`&&t.freezer.dispatchEvent(new CustomEvent(`freezer-card-select`,{bubbles:!0,composed:!0,detail:{slug:e.id}}))}function Y(e){let{inputCard:t,log:n}=e,r=new O(t),i=t.querySelector(`slicc-add-menu`);return i&&(e.openReader?i.provider=T({openReader:e.openReader,listConversations:e.listConversations??(async()=>[])}):i.results=[],i.setAttribute(`global-drop`,``),e.noCamera&&i.setAttribute(`no-camera`,``),e.secretEntry&&i.setAttribute(`secret-action`,``)),t.addEventListener(`slicc-add`,t=>{let i=t.detail;i&&J(i,e,r).catch(e=>{q(e)||n.error(`WC add-menu action failed`,e)})}),t.addEventListener(`paste`,t=>{let i=t.clipboardData?.items;if(i)for(let a of Array.from(i)){if(!a.type.startsWith(`image/`))continue;let i=a.getAsFile();if(!i)continue;t.preventDefault();let o=(i.type.split(`/`)[1]||`png`).replace(/[^a-z0-9]/gi,``)||`png`,s=i.name?i:new File([i],`pasted-image.${o}`,{type:i.type});J({kind:`upload`,name:s.name,size:s.size,file:s},e,r).catch(e=>n.error(`Paste image failed`,e))}}),r}export{Y as wireWcAttach};
13
+ `,O=class{#e;#t=[];constructor(e){if(!document.getElementById(E)){let e=document.createElement(`style`);e.id=E,e.textContent=D,document.head.appendChild(e)}this.#e=document.createElement(`div`),this.#e.className=`wcatt`,e.prepend(this.#e)}get items(){return this.#t}add(e){this.#t.push(e),this.#n()}take(){let e=this.#t;return this.#t=[],this.#n(),e}#n(){this.#e.replaceChildren(...this.#t.map(e=>this.#r(e)))}#r(t){let n=document.createElement(`span`);if(n.className=`wcatt__chip`,t.kind===`image`&&t.data){let r=document.createElement(`img`);r.className=`wcatt__thumb`,r.src=`data:${t.mimeType};base64,${t.data}`,r.alt=t.name,r.addEventListener(`click`,()=>{e(async()=>{let{SliccImagePreview:e}=await import(`./wc-shell-pTQjFXvS.js`).then(e=>e.N);return{SliccImagePreview:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36])).then(({SliccImagePreview:e})=>e.show(r.src,r))}),n.append(r)}let r=document.createElement(`span`);r.className=`wcatt__name`,r.textContent=t.name;let i=document.createElement(`button`);return i.type=`button`,i.className=`wcatt__x`,i.setAttribute(`aria-label`,`Remove ${t.name}`),i.textContent=`×`,i.addEventListener(`click`,()=>{this.#t=this.#t.filter(e=>e.id!==t.id),this.#n()}),n.append(r,i),n}};async function k(e){let t=document.createElement(`video`);t.srcObject=e,t.muted=!0;try{await t.play(),await new Promise(e=>requestAnimationFrame(()=>e(null)));let e=document.createElement(`canvas`);return e.width=t.videoWidth,e.height=t.videoHeight,e.width===0||e.height===0?null:(e.getContext(`2d`)?.drawImage(t,0,0),e.toDataURL(`image/png`))}finally{for(let t of e.getTracks())t.stop();t.srcObject=null}}async function A(){let e=r();if(e){let t=await e.request(`screenshare`,{constraints:{video:!0}});if(!t)return null;let n=t.stream;return k(n)}return k(await navigator.mediaDevices.getDisplayMedia({video:!0}))}async function j(e,t){let n=r();if(!n)return null;let i=await n.prompt({kinds:e,description:t,skipIfGranted:!0});for(let e of i.grants)if(e.kind===`camera`||e.kind===`microphone`||e.kind===`screenshare`)for(let t of e.stream.getTracks())t.stop();return i.status===`granted`}var M=`slicc_camera_device`,N=`slicc_microphone_device`,P=[`position:absolute`,`left:50%`,`right:auto`,`transform:translateX(-50%)`,`bottom:56px`,`width:calc(100% - 32px)`,`max-width:680px`,`z-index:3`].join(`;`);async function F(e,t){if(await j([`camera`,`microphone`],`Slicc is requesting access to your camera and microphone to capture a photo or video for this conversation.`)===!1)return null;let n=document.createElement(`slicc-composer-capture`),r=localStorage.getItem(M);r&&n.setAttribute(`preferred-device`,r);let i=localStorage.getItem(N);i&&n.setAttribute(`preferred-audio-device`,i),n.style.cssText=P,n.hidden=!0,n.addEventListener(`slicc-capture-device-change`,e=>{let t=e.detail;if(!t?.deviceId)return;let n=t.kind===`microphone`?N:M;localStorage.setItem(n,t.deviceId)}),e.append(n);try{return await n.open(t)}finally{n.remove()}}async function I(e,t,n){if(!e.dataUrl)return;let r=`photo-${Date.now()}.png`,i=await t.openWriter?.().catch(()=>null)??null,a=await S(r,e.dataUrl,i);a&&n.add(a)}async function L(e,t,n){if(!e.blob)return;let r=/webm/i.test(e.mimeType)?`webm`:`bin`,i=`video-${Date.now()}.${r}`,a=await t.openWriter?.().catch(()=>null)??null,o=await C(i,e.blob,a);o&&n.add(o)}async function R(e,t,n){if(e.mode===`photo`){if(!t.composer){let e=await z();if(!e)return;let r=await S(`photo-${Date.now()}.png`,e,await t.openWriter?.().catch(()=>null)??null);r&&n.add(r);return}let e=await F(t.composer,`photo`);if(!e)return;e.kind===`image`?await I(e,t,n):e.kind===`video`&&await L(e,t,n);return}let r=await A();if(!r)return;let i=await S(`screenshot-${Date.now()}.png`,r,await t.openWriter?.().catch(()=>null)??null);i&&n.add(i)}async function z(){if(await j([`camera`],`Slicc is requesting access to your camera to capture a photo for this conversation.`)===!1)return null;let e=document.createElement(`slicc-camera-dialog`),t=localStorage.getItem(M);t&&e.setAttribute(`preferred-device`,t),e.addEventListener(`slicc-camera-device-change`,e=>{let t=e.detail?.deviceId;t&&localStorage.setItem(M,t)}),document.body.append(e);try{return await e.open()}finally{e.remove()}}async function B(e,t,n){let r=await n.openWriter?.().catch(()=>null)??null,i=r?await b(r,e.name,t).catch(()=>void 0):void 0;return i?{...e,error:void 0,path:i}:e.kind===`image`?e:{...e,error:`could not be saved to the virtual filesystem`}}async function V(e,t,n){let r=await(await t()).readFile(e,{encoding:`binary`});return typeof r==`string`?(n.error(`VFS image pick returned text, not bytes — skipping the inline copy`,e),null):r}async function H(e,t,n){let r=0;try{r=(await(await n()).stat(e)).size}catch{}return{id:p(),name:t,mimeType:m(t),size:r,kind:`file`,path:e}}async function U(e,t,n,r){let i=e.split(`/`).pop()??e;if(u.test(i)){let a=await V(e,t,r);if(a){let t=h(i,a);n.add({...t,error:void 0,path:e});return}}n.add(await H(e,i,t))}function W(e,t){let n=t.value??t.getAttribute(`value`)??``,r=n&&!n.endsWith(` `)?` `:``;t.setAttribute(`value`,`${n}${r}${e}`)}function G(e,t){W(`Use the "${e}" skill: `,t)}async function K(t){let{requestSecretFromUser:n}=await e(async()=>{let{requestSecretFromUser:e}=await import(`./wc-secret-request-DoSFP6An.js`);return{requestSecretFromUser:e}},__vite__mapDeps([37,3,0,1,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,38])),r=await n();if(!r.stored)return;let i=r.domains.join(`, `),a=r.persisted?`saved`:`this session only`;W(r.maskedValue?`I stored the secret ${r.name} (masked value ${r.maskedValue}, scope: ${i}, ${a}). Use the masked value — SLICC swaps in the real one at the network boundary. `:`I stored the secret ${r.name} (scope: ${i}, ${a}). Run \`secret get ${r.name}\` for its masked value. `,t.inputCard)}function q(e){return e?.name===`NotAllowedError`}async function J(e,t,n){if(e.kind===`upload`&&e.file instanceof File){let r=new Uint8Array(await e.file.arrayBuffer());n.add(await B(await g(e.file),r,t))}else e.kind===`capture`?await R(e,t,n):e.kind===`file`&&typeof e.id==`string`&&t.openReader?await U(e.id,t.openReader,n,t.log):e.kind===`secret`?await K(t):e.kind===`skill`&&typeof e.label==`string`?G(e.label,t.inputCard):e.kind===`conversation`&&typeof e.id==`string`&&t.freezer.dispatchEvent(new CustomEvent(`freezer-card-select`,{bubbles:!0,composed:!0,detail:{slug:e.id}}))}function Y(e){let{inputCard:t,log:n}=e,r=new O(t),i=t.querySelector(`slicc-add-menu`);return i&&(e.openReader?i.provider=T({openReader:e.openReader,listConversations:e.listConversations??(async()=>[])}):i.results=[],i.setAttribute(`global-drop`,``),e.noCamera&&i.setAttribute(`no-camera`,``),e.secretEntry&&i.setAttribute(`secret-action`,``)),t.addEventListener(`slicc-add`,t=>{let i=t.detail;i&&J(i,e,r).catch(e=>{q(e)||n.error(`WC add-menu action failed`,e)})}),t.addEventListener(`paste`,t=>{let i=t.clipboardData?.items;if(i)for(let a of Array.from(i)){if(!a.type.startsWith(`image/`))continue;let i=a.getAsFile();if(!i)continue;t.preventDefault();let o=(i.type.split(`/`)[1]||`png`).replace(/[^a-z0-9]/gi,``)||`png`,s=i.name?i:new File([i],`pasted-image.${o}`,{type:i.type});J({kind:`upload`,name:s.name,size:s.size,file:s},e,r).catch(e=>n.error(`Paste image failed`,e))}}),r}export{Y as wireWcAttach};
@@ -1 +1 @@
1
- import{t as e}from"./slicc-app-url-BKHBBuTR.js";import{teleportTabOneWay as t}from"./tab-teleport-C8QSKgl0.js";import{bindComputerOverlay as n,mergeOverlayTabs as r,parseComputerOverlayId as i}from"./wc-computers-CTPf-95b.js";var a=5e3;function o(t){let{browser:n,log:r}=t,i=async()=>{try{let t=await n.listAllTargets(),r=t.find(e=>e.url===location.href);if(r)return r.targetId;let i=location?.origin?[location.origin]:void 0;return t.find(t=>e(t.url??``,{selfOrigins:i}))?.targetId??null}catch(e){return r.warn(`WC browser overlay: could not resolve the SLICC tab`,e),null}},o=null;return async e=>{let s=t.agentTarget(),c=await i();if(await t.activate(e)){if(!c){r.warn(`WC browser overlay: peek cannot find the SLICC tab; staying put`,{target:e});return}o&&clearTimeout(o),o=setTimeout(()=>{o=null,(async()=>{try{await n.bringTabToFront(c),s&&s!==c&&await n.selectTab(s)}catch(e){r.error(`WC browser overlay: peek return failed`,e)}})()},a)}}}function s(a){let{refs:s,browser:c,log:l}=a,u=document.createElement(`slicc-tab-overlay`);u.setAttribute(`heading`,`Browser · tabs & computers`),document.body.append(u),n(u,l);let d=0,f=null,p=async()=>{u.hasAttribute(`open`)||(f=c.getAttachedTargetId());let t=++d;u.show();let n;try{n=await c.listAllTargets()}catch(e){l.error(`WC browser overlay: listing tabs failed`,e),u.tabs=r([]);return}if(t!==d)return;let i=location?.origin?[location.origin]:void 0;n=n.filter(t=>!e(t.url??``,{selfOrigins:i})),u.tabs=r(n.map(e=>({id:e.targetId,title:e.title||e.url||e.targetId,url:e.url})));for(let e of n){if(t!==d||!u.hasAttribute(`open`))return;try{let n=await c.withTab(e.targetId,e=>e.screenshot({format:`jpeg`,quality:72,maxWidth:a.thumbWidth??Math.round(560*Math.min(devicePixelRatio||1,2)),foregroundFallback:!1}));if(t!==d)return;u.tabs=u.tabs.map(t=>t.id===e.targetId?{...t,screenshot:`data:image/jpeg;base64,${n}`}:t)}catch(t){l.warn(`WC browser overlay: thumbnail failed`,{target:e.targetId,err:t})}}};s.overlaySurfaces.add(`browser`),s.dock.addEventListener(`slicc-dock-select`,e=>{e.detail?.id===`browser`&&(p(),s.dock.collapse?.())});let m=async e=>{try{if(e.includes(`:`)){let n=await t(c,{sourceTargetId:e,destination:{kind:`leader`}});return l.info(`WC browser overlay: pulled remote tab to leader`,{source:e,target:n.targetId,degraded:n.degraded}),u.hide(),!0}return await c.bringTabToFront(e),u.hide(),!0}catch(e){return l.error(`WC browser overlay: tab activate failed`,e),!1}};u.addEventListener(`tab-activate`,e=>{let t=e.detail.id;i(t)||m(t)});let h=o({browser:c,log:l,activate:m,agentTarget:()=>f});return u.addEventListener(`tab-peek`,e=>{let t=e.detail.id;if(!i(t)){if(t.includes(`:`)){m(t);return}h(t).catch(e=>l.error(`WC browser overlay: peek failed`,e))}}),u.addEventListener(`tab-close`,e=>{let t=e.detail.id;i(t)||c.closePage(t).then(()=>p()).catch(e=>l.error(`WC browser overlay: tab close failed`,e))}),{overlay:u,refresh:p}}export{s as wireWcBrowser};
1
+ import{t as e}from"./slicc-app-url-BKHBBuTR.js";import{teleportTabOneWay as t}from"./tab-teleport-C8QSKgl0.js";import{bindComputerOverlay as n,mergeOverlayTabs as r,parseComputerOverlayId as i}from"./wc-computers-DuGnds2T.js";var a=5e3;function o(t){let{browser:n,log:r}=t,i=async()=>{try{let t=await n.listAllTargets(),r=t.find(e=>e.url===location.href);if(r)return r.targetId;let i=location?.origin?[location.origin]:void 0;return t.find(t=>e(t.url??``,{selfOrigins:i}))?.targetId??null}catch(e){return r.warn(`WC browser overlay: could not resolve the SLICC tab`,e),null}},o=null;return async e=>{let s=t.agentTarget(),c=await i();if(await t.activate(e)){if(!c){r.warn(`WC browser overlay: peek cannot find the SLICC tab; staying put`,{target:e});return}o&&clearTimeout(o),o=setTimeout(()=>{o=null,(async()=>{try{await n.bringTabToFront(c),s&&s!==c&&await n.selectTab(s)}catch(e){r.error(`WC browser overlay: peek return failed`,e)}})()},a)}}}function s(a){let{refs:s,browser:c,log:l}=a,u=document.createElement(`slicc-tab-overlay`);u.setAttribute(`heading`,`Browser · tabs & computers`),document.body.append(u),n(u,l);let d=0,f=null,p=async()=>{u.hasAttribute(`open`)||(f=c.getAttachedTargetId());let t=++d;u.show();let n;try{n=await c.listAllTargets()}catch(e){l.error(`WC browser overlay: listing tabs failed`,e),u.tabs=r([]);return}if(t!==d)return;let i=location?.origin?[location.origin]:void 0;n=n.filter(t=>!e(t.url??``,{selfOrigins:i})),u.tabs=r(n.map(e=>({id:e.targetId,title:e.title||e.url||e.targetId,url:e.url})));for(let e of n){if(t!==d||!u.hasAttribute(`open`))return;try{let n=await c.withTab(e.targetId,e=>e.screenshot({format:`jpeg`,quality:72,maxWidth:a.thumbWidth??Math.round(560*Math.min(devicePixelRatio||1,2)),foregroundFallback:!1}));if(t!==d)return;u.tabs=u.tabs.map(t=>t.id===e.targetId?{...t,screenshot:`data:image/jpeg;base64,${n}`}:t)}catch(t){l.warn(`WC browser overlay: thumbnail failed`,{target:e.targetId,err:t})}}};s.overlaySurfaces.add(`browser`),s.dock.addEventListener(`slicc-dock-select`,e=>{e.detail?.id===`browser`&&(p(),s.dock.collapse?.())});let m=async e=>{try{if(e.includes(`:`)){let n=await t(c,{sourceTargetId:e,destination:{kind:`leader`}});return l.info(`WC browser overlay: pulled remote tab to leader`,{source:e,target:n.targetId,degraded:n.degraded}),u.hide(),!0}return await c.bringTabToFront(e),u.hide(),!0}catch(e){return l.error(`WC browser overlay: tab activate failed`,e),!1}};u.addEventListener(`tab-activate`,e=>{let t=e.detail.id;i(t)||m(t)});let h=o({browser:c,log:l,activate:m,agentTarget:()=>f});return u.addEventListener(`tab-peek`,e=>{let t=e.detail.id;if(!i(t)){if(t.includes(`:`)){m(t);return}h(t).catch(e=>l.error(`WC browser overlay: peek failed`,e))}}),u.addEventListener(`tab-close`,e=>{let t=e.detail.id;i(t)||c.closePage(t).then(()=>p()).catch(e=>l.error(`WC browser overlay: tab close failed`,e))}),{overlay:u,refresh:p}}export{s as wireWcBrowser};
@@ -1,3 +1,3 @@
1
- import{F as e,I as t,k as n}from"./wc-shell-Ba5uNdmF.js";import{r}from"./base64-ELzoYfwP.js";import{t as i}from"./image-markers-q8JQTtid.js";import{r as a,t as o}from"./scale-D09IlqOK.js";import{E as s,T as c,w as l}from"./wc-live-B4gJYGS5.js";function u(e){let t=c(e.bytes);return`data:${s(t)??e.mime};base64,${r(t)}`}var d=`computer:`,f=4,ee=768,p=2,m=480,te={debug(){},info(){},warn(){},error(){}},h=null;function g(e){return`${d}${e}`}function _(e){return e.startsWith(`computer:`)?e.slice(9):null}function v(e){let t=e.trim().split(/\s+/);for(let e=0;e<t.length;e++)if(t[e]===`-c`||t[e]===`--computer`)return t[e+1]??null;return null}function y(e){for(let t of e.split(`
1
+ import{L as e,R as t,j as n}from"./wc-shell-pTQjFXvS.js";import{r}from"./base64-ELzoYfwP.js";import{t as i}from"./image-markers-q8JQTtid.js";import{r as a,t as o}from"./scale-D09IlqOK.js";import{E as s,T as c,w as l}from"./wc-live-Cc8h6ZH1.js";function u(e){let t=c(e.bytes);return`data:${s(t)??e.mime};base64,${r(t)}`}var d=`computer:`,f=4,ee=768,p=2,m=480,te={debug(){},info(){},warn(){},error(){}},h=null;function g(e){return`${d}${e}`}function _(e){return e.startsWith(`computer:`)?e.slice(9):null}function v(e){let t=e.trim().split(/\s+/);for(let e=0;e<t.length;e++)if(t[e]===`-c`||t[e]===`--computer`)return t[e+1]??null;return null}function y(e){for(let t of e.split(`
2
2
  `)){let e=t.trim();if(!e.startsWith(`target: `))continue;let n=e.slice(8).trim();if(n)return n}return null}function b(e,t,n){return n||(v(e)??y(t))}function x(e){for(let t of e.split(`
3
3
  `)){let e=t.trim();if(!e.startsWith(`screen: `))continue;let n=e.slice(8).trim();if(n)return n}return null}function S(e){return i(e).find(e=>e.kind===`image`&&e.parsed)?.parsed?.dataUrl??null}function C(e){let t=x(e);if(t)return{kind:`path`,path:t};let n=S(e);return n?{kind:`data`,src:n}:null}function w(e){if(e.kind!==`ssh`)return e.title;let t=e.capabilities.inputAllowed?`input`:`view-only`;return`${e.title} [${t}]`}function T(e,t){return{id:g(e.id),title:w(e),url:e.kind,screenshot:t?u(t):void 0,kind:`computer`,live:e.state===`live`,softKeys:e.softKeys?.map(e=>({label:e.label,keysym:e.keysym}))}}function E(e,t=l().list()){let n=l(),r=e.filter(e=>e.kind!==`computer`),i=t.map(e=>T(e,n.lastFrame(e.id)));return[...r,...i]}function D(e){return h?(e?.log&&(h.deps.log=e.log),e?.openFs&&(h.deps.openFs=e.openFs),h):(h={deps:{log:e?.log??te,openFs:e?.openFs},bound:new Map,overlayUnsubs:[],overlayWatchIds:new Map,lightboxId:null,lightboxWatchToken:null,lightboxOrigin:null,lightboxLive:!1,preview:null,installed:!1},h)}function O(e,t){e.append(n(t))}function k(e){let t=e.target,n=e.detail,r=b(n.command??t.command??``,n.output??t.output??``,n.computerId??t.computerId),i=n.toolCallId||t.toolCallId,a={el:t,toolCallId:i,computerId:r,watchToken:null,loadGen:0,frozenKey:null};D().bound.set(t,a),t.addEventListener(`computer-row-unbind`,j),r&&(t.computerId=r),r&&i&&l().recordInvocation(r,i),N()}function A(e){if(e.computerId)return;let t=b(e.el.command??``,e.el.output??``,e.el.computerId);t&&(e.computerId=t,e.el.computerId=t,e.toolCallId&&l().recordInvocation(t,e.toolCallId))}function j(e){let t=e.target,n=h;if(!n)return;let r=n.bound.get(t);if(r){if(n.bound.delete(t),t.removeEventListener(`computer-row-unbind`,j),r.watchToken!==null&&r.computerId)try{l().unwatch(r.computerId,r.watchToken)}catch(e){n.deps.log.warn(`WC computers: unwatch on row unbind failed`,e)}N()}}function M(e){let t=e.target,n=h?.bound.get(t),r=e.detail?.src;r&&K(t.frameMode===`live`?n?.computerId??null:null,r,t)}function N(){let e=h;if(e)for(let t of e.bound.values())P(t)}function P(t){A(t);let n=l(),r=t.computerId?n.get(t.computerId):null,i=C(t.el.output??``),a=t.computerId?n.lastFrame(t.computerId):null,o=t.computerId?n.newestInvocation(t.computerId):null,s=!!t.computerId&&r?.state===`live`&&o===t.toolCallId,c=e({computerLive:r?.state===`live`,newestToolCallId:o,toolCallId:t.toolCallId,hasFrame:!!i,hasPushedFrame:!!a});t.el.frameMode=c,F(t,s);let d=t.el.output??``;if(c===`live`&&a){t.loadGen+=1,t.frozenKey=null,t.el.frameSrc=u(a);return}if(c===`frozen`){let e=I(d);if(t.frozenKey===e)return;t.frozenKey=e,t.loadGen+=1,R(t,d,t.loadGen);return}t.loadGen+=1,t.frozenKey=null,t.el.frameSrc=null}function F(e,t){if(!e.computerId)return;let n=l();t&&e.watchToken===null?e.watchToken=n.watch(e.computerId,p,m):!t&&e.watchToken!==null&&(n.unwatch(e.computerId,e.watchToken),e.watchToken=null)}function I(e){return`${x(e)??``}\n${S(e)??``}`}function L(e,t,n){return h?.bound.get(e.el)!==e||e.loadGen!==t||e.el.frameMode!==`frozen`?!1:I(e.el.output??``)===I(n)}async function R(e,t,n){let r=x(t),i=null;r&&(i=await z(r)),i||=S(t),L(e,n,t)&&(e.el.frameSrc=i)}async function z(e){let t=h?.deps.openFs;if(!t)return null;try{let n=await(await t()).readFile(e,{encoding:`binary`}),i=c(n);return`data:${s(i)??`image/jpeg`};base64,${r(i)}`}catch(t){return h?.deps.log.warn(`WC computers: frozen frame read failed`,{path:e,err:t}),null}}function B(e,t){let n=u(t),r=D();if(r.lightboxId===e){r.lightboxLive=!0;let e=V();U(r),e.isOpen?e.setSrc(n):e.open(n,r.lightboxOrigin??e)}N()}function V(){let e=D();if(e.preview?.isConnected)return e.preview;let t=document.createElement(`slicc-image-preview`);return t.setAttribute(`data-computer-live`,``),document.body.append(t),t.addEventListener(`slicc-image-preview-close`,()=>q()),t.addEventListener(`slicc-image-preview-input`,W),e.preview=t,t}function H(e){return e?!!l().get(e)?.capabilities.inputAllowed:!1}function U(e){let t=e.preview;t&&(t.drive=!!(e.lightboxLive&&H(e.lightboxId)))}function W(e){let t=h;if(!t?.lightboxId||!t.lightboxLive)return;let n=l().get(t.lightboxId);if(!n?.capabilities.inputAllowed)return;let r=e.detail;if(!r)return;let i=n.size??l().lastFrame(t.lightboxId);if(i)try{let e=G(r,i);e.length&&l().input(t.lightboxId,e)}catch(e){t.deps.log.warn(`WC computers: lightbox input failed`,e)}}function G(e,t){if(e.kind===`key`){let t=a(e);return t?[{type:`key`,keysym:t}]:[]}let n=o(e.x,e.y,{width:e.width,height:e.height},t);return e.kind===`scroll`?[{type:`scroll`,dx:e.dx,dy:e.dy,x:n.x,y:n.y}]:[{type:`click`,button:e.button,count:1,x:n.x,y:n.y}]}function K(e,t,n){let r=D(),i=l();e?(r.lightboxId&&r.lightboxId!==e&&r.lightboxWatchToken!==null&&(i.unwatch(r.lightboxId,r.lightboxWatchToken),r.lightboxWatchToken=null),(r.lightboxId!==e||r.lightboxWatchToken===null)&&(r.lightboxWatchToken=i.watch(e,f,ee),r.lightboxId=e)):r.lightboxWatchToken!==null&&r.lightboxId&&(i.unwatch(r.lightboxId,r.lightboxWatchToken),r.lightboxWatchToken=null,r.lightboxId=null),r.lightboxOrigin=n;let a=V(),o=e?i.lastFrame(e):null;r.lightboxLive=!!o,U(r);let s=o?u(o):t;s&&(a.isOpen?a.setSrc(s):a.open(s,n))}function q(){let e=h;if(e){if(e.lightboxWatchToken!==null&&e.lightboxId){try{l().unwatch(e.lightboxId,e.lightboxWatchToken)}catch(t){e.deps.log.warn(`WC computers: lightbox unwatch failed`,t)}e.lightboxWatchToken=null}e.lightboxId=null,e.lightboxOrigin=null,e.lightboxLive=!1,e.preview&&(e.preview.drive=!1)}}function J(e,t){return e.shadowRoot?.querySelector(`[data-tab-id="${CSS.escape(t)}"]`)??e}function Y(){let e=h;if(!e)return;let t=l();for(let[n,r]of[...e.overlayWatchIds]){try{t.unwatch(n,r)}catch{}e.overlayWatchIds.delete(n)}}function X(e){Q(e),e.hasAttribute(`open`)&&(e.tabs=E(e.tabs))}function Z(e,t,n){if(Q(e),!e.hasAttribute(`open`))return;let r=u(n);r&&e.patchTabScreenshot?.(g(t),r)||(e.tabs=E(e.tabs))}function Q(e){let t=D(),n=l(),r=e.hasAttribute(`open`)?n.list().map(e=>e.id):[],i=new Set(r);for(let[e,r]of[...t.overlayWatchIds])if(!i.has(e)){try{n.unwatch(e,r)}catch(e){t.deps.log.warn(`WC computers: overlay unwatch failed`,e)}t.overlayWatchIds.delete(e)}for(let e of r)if(!t.overlayWatchIds.has(e))try{t.overlayWatchIds.set(e,n.watch(e,p,m))}catch(e){t.deps.log.warn(`WC computers: overlay watch failed`,e)}}function ne(e){let n=D(e);if(t(O),n.installed)return $;n.installed=!0,document.addEventListener(`computer-row-bind`,k),document.addEventListener(`computer-row-unbind`,j),document.addEventListener(`computer-frame-click`,M);let r=l();return n.overlayUnsubs.push(r.onList(()=>N())),n.overlayUnsubs.push(r.onInvocations(()=>N())),n.overlayUnsubs.push(r.onFrame(B)),$}function re(e,t){let n=D(t?{log:t}:void 0),r=l(),i=t=>{let i=t.detail?.id,a=i?_(i):null;if(!a)return;let o=r.lastFrame(a),s=o?u(o):``;s||n.deps.log.warn(`WC computers: no frame yet for lightbox`,{id:a}),K(a,s,J(e,i))},a=e=>{let t=e.detail,i=t?.id?_(t.id):null;if(!(!i||!t.keysym))try{r.input(i,[{type:`key`,keysym:t.keysym}])}catch(e){n.deps.log.warn(`WC computers: softkey input failed`,e)}};e.addEventListener(`tab-activate`,i),e.addEventListener(`tab-peek`,i),e.addEventListener(`computer-softkey`,a);let o=()=>X(e);e.addEventListener(`overlay-close`,o);let s=new MutationObserver(()=>X(e));s.observe(e,{attributes:!0,attributeFilter:[`open`]});let c=r.onList(()=>X(e)),d=r.onFrame((t,n)=>Z(e,t,n));return X(e),()=>{e.removeEventListener(`tab-activate`,i),e.removeEventListener(`tab-peek`,i),e.removeEventListener(`computer-softkey`,a),e.removeEventListener(`overlay-close`,o),s.disconnect(),c(),d(),Y()}}function $(){let e=h;if(e){document.removeEventListener(`computer-row-bind`,k),document.removeEventListener(`computer-row-unbind`,j),document.removeEventListener(`computer-frame-click`,M);for(let t of e.overlayUnsubs)t();Y();for(let t of e.bound.values())if(t.watchToken!==null&&t.computerId)try{l().unwatch(t.computerId,t.watchToken)}catch{}if(e.lightboxWatchToken!==null&&e.lightboxId)try{l().unwatch(e.lightboxId,e.lightboxWatchToken)}catch{}e.preview?.remove(),h=null}}export{re as bindComputerOverlay,ne as installWcComputers,E as mergeOverlayTabs,_ as parseComputerOverlayId};
@@ -1 +1 @@
1
- import{O as e}from"./main-Bgkf5d3Z.js";var t=`slicc-detached-overlay`;function n(t){let{client:n,isDetachedSelf:r}=t;chrome.runtime.onMessage.addListener(t=>(!e(t)||t.source!==`service-worker`||t.payload.type!==`detached-active`||r||i(n),!1)),r&&chrome.runtime.sendMessage({source:`panel`,payload:{type:`detached-claim`}}).catch(()=>void 0)}function r(){chrome.runtime.sendMessage({source:`panel`,payload:{type:`detached-popout-request`}}).catch(e=>{console.warn(`[slicc] detached-popout-request failed`,e)})}function i(e){try{window.close()}catch{}e.setLocked(!0),a()}function a(){if(document.getElementById(t))return;let e=document.createElement(`div`);e.id=t,e.style.cssText=`position:fixed;inset:0;z-index:9999;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:24px;text-align:center;background:var(--canvas,#fff);color:var(--ink,#111);font:14px/1.5 var(--ui,system-ui)`;let n=document.createElement(`strong`);n.textContent=`SLICC is open in a detached window`;let r=document.createElement(`span`);r.textContent=`This panel yields while the detached window is active.`;let i=document.createElement(`button`);i.textContent=`Close this window`,i.style.cssText=`margin-top:8px;padding:8px 16px;border:none;border-radius:999px;cursor:pointer;background:var(--ink,#111);color:var(--canvas,#fff);font:600 13px var(--ui,system-ui)`,i.addEventListener(`click`,()=>window.close()),e.append(n,r,i),document.body.appendChild(e)}export{r as requestDetachedPopout,n as wireWcDetached};
1
+ import{O as e}from"./main-BsG-jtvC.js";var t=`slicc-detached-overlay`;function n(t){let{client:n,isDetachedSelf:r}=t;chrome.runtime.onMessage.addListener(t=>(!e(t)||t.source!==`service-worker`||t.payload.type!==`detached-active`||r||i(n),!1)),r&&chrome.runtime.sendMessage({source:`panel`,payload:{type:`detached-claim`}}).catch(()=>void 0)}function r(){chrome.runtime.sendMessage({source:`panel`,payload:{type:`detached-popout-request`}}).catch(e=>{console.warn(`[slicc] detached-popout-request failed`,e)})}function i(e){try{window.close()}catch{}e.setLocked(!0),a()}function a(){if(document.getElementById(t))return;let e=document.createElement(`div`);e.id=t,e.style.cssText=`position:fixed;inset:0;z-index:9999;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:24px;text-align:center;background:var(--canvas,#fff);color:var(--ink,#111);font:14px/1.5 var(--ui,system-ui)`;let n=document.createElement(`strong`);n.textContent=`SLICC is open in a detached window`;let r=document.createElement(`span`);r.textContent=`This panel yields while the detached window is active.`;let i=document.createElement(`button`);i.textContent=`Close this window`,i.style.cssText=`margin-top:8px;padding:8px 16px;border:none;border-radius:999px;cursor:pointer;background:var(--ink,#111);color:var(--canvas,#fff);font:600 13px var(--ui,system-ui)`,i.addEventListener(`click`,()=>window.close()),e.append(n,r,i),document.body.appendChild(e)}export{r as requestDetachedPopout,n as wireWcDetached};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/main-Bgkf5d3Z.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/modulepreload-polyfill-P2Xu9kJm.js","assets/core-B3ULTK7V.js","assets/compat-qQM4gjF_.js","assets/models-BSkXF4T6.js","assets/diagnostics-DN_idNHx.js","assets/preload-helper-Czpn1I53.js","assets/provider-env-CTOcDKrQ.js","assets/__vite-browser-external-5eBdwsFd.js","assets/openrouter.models-B-zmcypy.js","assets/libesm-BypnjKEL.js","assets/logger-DDBAeTLF.js","assets/feature-flags-BftQitIZ.js","assets/proxied-fetch-BlIpeDaL.js","assets/base64-ELzoYfwP.js","assets/fetch-body-1l9I58Vk.js","assets/api-endpoint-DuEQRZ4g.js","assets/runtime-env-Dlaokqg1.js","assets/secret-topology-DpJD8DzV.js","assets/float-topology-BvkgNLoi.js","assets/secrets-bridge-client-CiA-2ZIU.js","assets/port-bridge-client-CrZ9vnOK.js","assets/image-markers-q8JQTtid.js","assets/tool-ui-eSQ1g2I1.js","assets/bridge-protocol-C52CnDIj.js","assets/account-store-J3ybiSNw.js","assets/providers-BvApGkM9.js","assets/panel-rpc-D3EPRnmw.js","assets/bedrock-camp-compat-BeCSBUrZ.js","assets/bedrock-camp-extra-models-WTCIjj5a.js","assets/claude-model-version-DZmbk9E2.js","assets/telemetry-CKoAhRMv.js","assets/tray-follower-status-BAjnN7Ar.js","assets/clipboard-eqmn97SP.js"])))=>i.map(i=>d[i]);
2
- import{t as e}from"./preload-helper-Czpn1I53.js";import{C as t,S as n,b as r,r as i,t as a,y as o}from"./wc-live-B4gJYGS5.js";import{wireWcDetached as s}from"./wc-detached-UIVnUZp5.js";async function c(c,l,u=!1){let d;await i(c,l,{floatKind:`extension`,connect:e=>{d=new t(o(e.wiring));let i=n(d);return{client:r(e.wiring),host:i,workbench:(e,t)=>{a(e,d,t,i,l)}}}}),s({client:d,isDetachedSelf:u});let{setupSudoExtension:f}=await e(async()=>{let{setupSudoExtension:e}=await import(`./main-Bgkf5d3Z.js`).then(e=>e.c);return{setupSudoExtension:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34]));await f({log:l}),d.requestState(),l.info(`WC extension shell connected to offscreen engine`)}export{c as bootExtensionFloat};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/main-BsG-jtvC.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/modulepreload-polyfill-P2Xu9kJm.js","assets/core-Be1yHH6v.js","assets/compat-qQM4gjF_.js","assets/models-BSkXF4T6.js","assets/diagnostics-DN_idNHx.js","assets/preload-helper-Czpn1I53.js","assets/provider-env-CTOcDKrQ.js","assets/__vite-browser-external-5eBdwsFd.js","assets/openrouter.models-B-zmcypy.js","assets/libesm-BypnjKEL.js","assets/logger-DDBAeTLF.js","assets/feature-flags-BftQitIZ.js","assets/proxied-fetch-DiXk_XGs.js","assets/base64-ELzoYfwP.js","assets/fetch-body-1l9I58Vk.js","assets/api-endpoint-DuEQRZ4g.js","assets/runtime-env-Dlaokqg1.js","assets/secret-topology-CZv6A9HW.js","assets/float-topology-B0_dG7En.js","assets/secrets-bridge-client-B_CG-HIg.js","assets/port-bridge-client-BiWcfZSc.js","assets/image-markers-q8JQTtid.js","assets/tool-ui-eSQ1g2I1.js","assets/bridge-protocol-C52CnDIj.js","assets/account-store-Ce44FdYj.js","assets/providers-COWrD21n.js","assets/panel-rpc-D3EPRnmw.js","assets/bedrock-camp-compat-BeCSBUrZ.js","assets/bedrock-camp-extra-models-WTCIjj5a.js","assets/claude-model-version-DZmbk9E2.js","assets/telemetry-CKoAhRMv.js","assets/tray-follower-status-BAjnN7Ar.js","assets/clipboard-eqmn97SP.js"])))=>i.map(i=>d[i]);
2
+ import{t as e}from"./preload-helper-Czpn1I53.js";import{C as t,S as n,b as r,r as i,t as a,y as o}from"./wc-live-Cc8h6ZH1.js";import{wireWcDetached as s}from"./wc-detached-Bc462J4O.js";async function c(c,l,u=!1){let d;await i(c,l,{floatKind:`extension`,connect:e=>{d=new t(o(e.wiring));let i=n(d);return{client:r(e.wiring),host:i,workbench:(e,t)=>{a(e,d,t,i,l)}}}}),s({client:d,isDetachedSelf:u});let{setupSudoExtension:f}=await e(async()=>{let{setupSudoExtension:e}=await import(`./main-BsG-jtvC.js`).then(e=>e.c);return{setupSudoExtension:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34]));await f({log:l}),d.requestState(),l.info(`WC extension shell connected to offscreen engine`)}export{c as bootExtensionFloat};
@@ -1,5 +1,5 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/wc-shell-Ba5uNdmF.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/preload-helper-Czpn1I53.js","assets/logger-DDBAeTLF.js","assets/mime-types-D0xZwlMO.js","assets/base64-ELzoYfwP.js","assets/bridge-protocol-C52CnDIj.js","assets/account-store-J3ybiSNw.js","assets/core-B3ULTK7V.js","assets/compat-qQM4gjF_.js","assets/models-BSkXF4T6.js","assets/diagnostics-DN_idNHx.js","assets/provider-env-CTOcDKrQ.js","assets/__vite-browser-external-5eBdwsFd.js","assets/openrouter.models-B-zmcypy.js","assets/libesm-BypnjKEL.js","assets/feature-flags-BftQitIZ.js","assets/proxied-fetch-BlIpeDaL.js","assets/fetch-body-1l9I58Vk.js","assets/api-endpoint-DuEQRZ4g.js","assets/runtime-env-Dlaokqg1.js","assets/secret-topology-DpJD8DzV.js","assets/float-topology-BvkgNLoi.js","assets/secrets-bridge-client-CiA-2ZIU.js","assets/port-bridge-client-CrZ9vnOK.js","assets/image-markers-q8JQTtid.js","assets/tool-ui-eSQ1g2I1.js","assets/providers-BvApGkM9.js","assets/panel-rpc-D3EPRnmw.js","assets/bedrock-camp-compat-BeCSBUrZ.js","assets/bedrock-camp-extra-models-WTCIjj5a.js","assets/claude-model-version-DZmbk9E2.js","assets/telemetry-CKoAhRMv.js","assets/types-D8gIX-W-.js","assets/same-file-identity-DuEcSmPX.js","assets/icons-jrIi5FYk.js","assets/wc-shell-WkeczD9x.css","assets/panelize-shell-CLHSr5bz.js","assets/virtual-device-paths-D45tpPP6.js","assets/layout-apply-registry-Cw730jao.js","assets/wc-live-B4gJYGS5.js","assets/sprinkle-renderer-_vOdPt8H.js","assets/hid-device-registry-B2R-0rNt.js","assets/serial-port-registry-CCqklAEr.js","assets/hid-operations-C97SZtrY.js","assets/usb-device-registry--JwKRTYp.js","assets/usb-operations-v1mGAdRY.js","assets/shared-mBEktoxE.js","assets/theme-CwPIBqJE.js","assets/theme-engine-ZV7CeqWw.js","assets/slugify-BYJ6QVAt.js","assets/transcript-export-DP-r8eDz.js","assets/session-jsonl-PCOch0_B.js","assets/tray-follower-status-BAjnN7Ar.js","assets/main-Bgkf5d3Z.js","assets/modulepreload-polyfill-P2Xu9kJm.js","assets/clipboard-eqmn97SP.js","assets/src-BWaKqLvQ.js","assets/provider-budget-LCzMPlKv.js","assets/permissions-surface-registry-CilCRwhh.js","assets/browser-DGwroBSO.js","assets/tray-leader-Co-1rs4b.js","assets/record-CCQFJXn_.js","assets/descriptor-DzbI9z_9.js","assets/types-CFfBWsH5.js","assets/wc-unit-context-CS4hSDi7.js","assets/legacy-styles-B3nS5QUo.js","assets/follower-navigate-watcher-B8Kk1WcF.js","assets/navigation-watcher-CPcnZL9l.js","assets/discovery-preference-C7kFEKRM.js","assets/wc-transcript-export-CsUhlwMo.js","assets/export-spool-CuNzzI8a.js"])))=>i.map(i=>d[i]);
2
- import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF.js";import{i as n,t as r}from"./feature-flags-BftQitIZ.js";import{n as i}from"./transcript-export-DP-r8eDz.js";import{a,c as o,n as s,t as c,v as l,y as ee}from"./wc-follower-oauth-DEBzlhDR.js";import{a as te,t as ne}from"./tray-follower-status-BAjnN7Ar.js";import{C as re,D as u,E as d,s as ie,w as f,x as ae}from"./main-Bgkf5d3Z.js";import{m as oe,r as se,x as ce}from"./wc-live-B4gJYGS5.js";import{n as le}from"./theme-engine-ZV7CeqWw.js";import{o as ue,p as de,s as fe}from"./wc-unit-context-CS4hSDi7.js";import{WcSprinkleZone as p}from"./wc-sprinkles-D4sQVRG5.js";import{wireWcAttach as pe}from"./wc-attach-BadBFuc7.js";import{installLeaderPermissionsSurface as me}from"./wc-permissions-C9woviuI.js";var m=t(`follower-switch-out`);function he(e,t){t.stopFollower();try{t.storage.removeItem(d),e.workerBaseUrl===null?t.storage.removeItem(u):t.storage.setItem(u,e.workerBaseUrl)}catch(e){m.error(`follower switch-out: storage write failed — state may revert on reload`,{error:e instanceof Error?e.message:String(e)})}try{let e=t.getHref(),n=f(e);n!==e&&t.replaceHref(n)}catch(e){m.error(`follower switch-out: URL normalize failed — may re-enter follower on reload`,{error:e instanceof Error?e.message:String(e)})}t.reload()}var h=6;function ge(e){let{refs:t,getSync:n,getTargets:r,hasCdpBrowser:i,log:a}=e;if(t.overlaySurfaces.has(`browser`))return{overlay:document.createElement(`slicc-tab-overlay`),refresh:()=>{}};let o=document.createElement(`slicc-tab-overlay`);o.setAttribute(`heading`,`Browser · tabs in this tray`),o.setAttribute(`no-peek`,``),document.body.append(o);let s=()=>{o.tabs=r().map(e=>({id:e.targetId,title:e.title||e.url||e.targetId,url:e.url}))};return t.overlaySurfaces.add(`browser`),t.dock.addEventListener(`slicc-dock-select`,e=>{e.detail?.id===`browser`&&(s(),o.show(),t.dock.collapse?.())}),o.addEventListener(`tab-activate`,t=>{let r=t.detail.id,s=n(),c=s?.getLeaderProtocolVersion()??0;if(!(s&&i()&&c>=h)){let t=o.tabs.find(e=>e.id===r)?.url;if(!t){a.warn(`WC follower browser: no URL for tab`,{id:r});return}e.window.open(t,`_blank`,`noopener`)||a.warn(`WC follower browser: window.open was blocked`,{id:r}),o.hide();return}s.requestTabTeleport(r).then(e=>{a.info(`WC follower browser: leader teleported a tab here`,{source:r,targetId:e}),o.hide()}).catch(e=>{a.error(`WC follower browser: tab teleport failed`,e)})}),{overlay:o,refresh:s}}var g=new Set([`oauth-attempt`,`connect-attempt`,`device-code-decision`]);function _e(e){return g.has(e)}var _=`slicc-signin-redirect-style`,v=`wc-signin-redirect`,y=`${v}--welcome`,b=`
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/wc-shell-pTQjFXvS.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/preload-helper-Czpn1I53.js","assets/logger-DDBAeTLF.js","assets/mime-types-D0xZwlMO.js","assets/base64-ELzoYfwP.js","assets/bridge-protocol-C52CnDIj.js","assets/account-store-Ce44FdYj.js","assets/core-Be1yHH6v.js","assets/compat-qQM4gjF_.js","assets/models-BSkXF4T6.js","assets/diagnostics-DN_idNHx.js","assets/provider-env-CTOcDKrQ.js","assets/__vite-browser-external-5eBdwsFd.js","assets/openrouter.models-B-zmcypy.js","assets/libesm-BypnjKEL.js","assets/feature-flags-BftQitIZ.js","assets/proxied-fetch-DiXk_XGs.js","assets/fetch-body-1l9I58Vk.js","assets/api-endpoint-DuEQRZ4g.js","assets/runtime-env-Dlaokqg1.js","assets/secret-topology-CZv6A9HW.js","assets/float-topology-B0_dG7En.js","assets/secrets-bridge-client-B_CG-HIg.js","assets/port-bridge-client-BiWcfZSc.js","assets/image-markers-q8JQTtid.js","assets/tool-ui-eSQ1g2I1.js","assets/providers-COWrD21n.js","assets/panel-rpc-D3EPRnmw.js","assets/bedrock-camp-compat-BeCSBUrZ.js","assets/bedrock-camp-extra-models-WTCIjj5a.js","assets/claude-model-version-DZmbk9E2.js","assets/telemetry-CKoAhRMv.js","assets/types-D8gIX-W-.js","assets/same-file-identity-DuEcSmPX.js","assets/icons-jrIi5FYk.js","assets/wc-shell-WkeczD9x.css","assets/panelize-shell-CILi0yPu.js","assets/virtual-device-paths-D45tpPP6.js","assets/layout-apply-registry-Cw730jao.js","assets/wc-live-Cc8h6ZH1.js","assets/sprinkle-renderer-B5O28doL.js","assets/hid-device-registry-B2R-0rNt.js","assets/serial-port-registry-CCqklAEr.js","assets/hid-operations-C97SZtrY.js","assets/usb-device-registry--JwKRTYp.js","assets/usb-operations-v1mGAdRY.js","assets/shared-BDXQKitm.js","assets/theme-CwPIBqJE.js","assets/theme-engine-ZV7CeqWw.js","assets/slugify-BYJ6QVAt.js","assets/transcript-export-DP-r8eDz.js","assets/session-jsonl-BIxfXb7u.js","assets/tray-follower-status-BAjnN7Ar.js","assets/main-BsG-jtvC.js","assets/modulepreload-polyfill-P2Xu9kJm.js","assets/clipboard-eqmn97SP.js","assets/src-BWaKqLvQ.js","assets/provider-budget-LCzMPlKv.js","assets/permissions-surface-registry-CilCRwhh.js","assets/browser-DGwroBSO.js","assets/tray-leader-zKkaFxIk.js","assets/record-CCQFJXn_.js","assets/descriptor-DzbI9z_9.js","assets/types-CFfBWsH5.js","assets/wc-unit-context-CS4hSDi7.js","assets/legacy-styles-B3nS5QUo.js","assets/follower-navigate-watcher-DVWQWTGU.js","assets/navigation-watcher-CPcnZL9l.js","assets/discovery-preference-MWZVi-PZ.js","assets/wc-transcript-export-CP5fUab6.js","assets/export-spool-CuNzzI8a.js"])))=>i.map(i=>d[i]);
2
+ import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF.js";import{i as n,t as r}from"./feature-flags-BftQitIZ.js";import{n as i}from"./transcript-export-DP-r8eDz.js";import{a,c as o,n as s,t as c,v as l,y as ee}from"./wc-follower-oauth-BTOd3V8J.js";import{a as te,t as ne}from"./tray-follower-status-BAjnN7Ar.js";import{C as re,D as u,E as d,s as ie,w as f,x as ae}from"./main-BsG-jtvC.js";import{m as oe,r as se,x as ce}from"./wc-live-Cc8h6ZH1.js";import{n as le}from"./theme-engine-ZV7CeqWw.js";import{o as ue,p as de,s as fe}from"./wc-unit-context-CS4hSDi7.js";import{WcSprinkleZone as p}from"./wc-sprinkles-BMoFsMix.js";import{wireWcAttach as pe}from"./wc-attach-CEkWqpLf.js";import{installLeaderPermissionsSurface as me}from"./wc-permissions-B3SJSMf9.js";var m=t(`follower-switch-out`);function he(e,t){t.stopFollower();try{t.storage.removeItem(d),e.workerBaseUrl===null?t.storage.removeItem(u):t.storage.setItem(u,e.workerBaseUrl)}catch(e){m.error(`follower switch-out: storage write failed — state may revert on reload`,{error:e instanceof Error?e.message:String(e)})}try{let e=t.getHref(),n=f(e);n!==e&&t.replaceHref(n)}catch(e){m.error(`follower switch-out: URL normalize failed — may re-enter follower on reload`,{error:e instanceof Error?e.message:String(e)})}t.reload()}var h=6;function ge(e){let{refs:t,getSync:n,getTargets:r,hasCdpBrowser:i,log:a}=e;if(t.overlaySurfaces.has(`browser`))return{overlay:document.createElement(`slicc-tab-overlay`),refresh:()=>{}};let o=document.createElement(`slicc-tab-overlay`);o.setAttribute(`heading`,`Browser · tabs in this tray`),o.setAttribute(`no-peek`,``),document.body.append(o);let s=()=>{o.tabs=r().map(e=>({id:e.targetId,title:e.title||e.url||e.targetId,url:e.url}))};return t.overlaySurfaces.add(`browser`),t.dock.addEventListener(`slicc-dock-select`,e=>{e.detail?.id===`browser`&&(s(),o.show(),t.dock.collapse?.())}),o.addEventListener(`tab-activate`,t=>{let r=t.detail.id,s=n(),c=s?.getLeaderProtocolVersion()??0;if(!(s&&i()&&c>=h)){let t=o.tabs.find(e=>e.id===r)?.url;if(!t){a.warn(`WC follower browser: no URL for tab`,{id:r});return}e.window.open(t,`_blank`,`noopener`)||a.warn(`WC follower browser: window.open was blocked`,{id:r}),o.hide();return}s.requestTabTeleport(r).then(e=>{a.info(`WC follower browser: leader teleported a tab here`,{source:r,targetId:e}),o.hide()}).catch(e=>{a.error(`WC follower browser: tab teleport failed`,e)})}),{overlay:o,refresh:s}}var g=new Set([`oauth-attempt`,`connect-attempt`,`device-code-decision`]);function _e(e){return g.has(e)}var _=`slicc-signin-redirect-style`,v=`wc-signin-redirect`,y=`${v}--welcome`,b=`
3
3
  .${v}{display:flex;gap:10px;align-items:flex-start;margin:10px 12px;padding:12px 14px;
4
4
  border:1px solid var(--line);border-radius:12px;background:var(--ghost);color:var(--ink);
5
5
  font-family:var(--ui);font-size:13px;line-height:1.4;}
@@ -14,4 +14,4 @@ import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF
14
14
  .${v}__x:hover{color:var(--ink);}
15
15
  `;function x(e){if(e.getElementById(_))return;let t=e.createElement(`style`);t.id=_,t.textContent=b,e.head.appendChild(t)}function S(e,t){x(e);let n=e.createElement(`div`);n.className=v,n.setAttribute(`role`,`status`);let r=e.createElement(`div`);r.className=`${v}__body`;let i=e.createElement(`div`);i.className=`${v}__title`,i.textContent=t.title;let a=e.createElement(`div`);a.className=`${v}__sub`,a.textContent=t.sub,r.append(i,a);let o=e.createElement(`button`);if(o.type=`button`,o.className=`${v}__open`,o.textContent=t.buttonLabel,o.addEventListener(`click`,()=>t.onOpenTab()),n.append(r,o),t.dismissible){let t=e.createElement(`button`);t.type=`button`,t.className=`${v}__x`,t.setAttribute(`aria-label`,`Dismiss`),t.textContent=`×`,t.addEventListener(`click`,()=>n.remove()),n.append(t)}return n}function ve(e,t){let n=e.ownerDocument;t.onOpenTab();let r=e.querySelector(`.${v}`);if(r)return r.scrollIntoView?.({block:`nearest`}),r;let i=S(n,{title:`Sign in from the SLICC tab`,sub:`The side panel can't complete a provider login — we've switched you to the main SLICC tab. Finish signing in there (Settings › Providers), then come back.`,buttonLabel:`Open SLICC tab`,onOpenTab:t.onOpenTab,dismissible:!0});return e.append(i),i.scrollIntoView?.({block:`nearest`}),i}function ye(e,t){let n=S(e,{title:`Set up SLICC in the main tab`,sub:`SLICC needs a model connected before it can help. Open the main SLICC tab to finish setup and sign in, then come back to the side panel.`,buttonLabel:`Open SLICC tab`,onOpenTab:t.onOpenTab,dismissible:!1});return n.classList.add(y),n}var C=t(`wc-follower`),be=`/shared/sprinkles/welcome/`,xe=`/shared/sprinkles/suggestions/`;function Se(e){return e===void 0||e===`active`?{kind:`active`}:e.trim()===``?null:{kind:`frozen`,sessionId:e}}function Ce(e,t){for(;e.firstChild;)e.removeChild(e.firstChild);let n=document.createElement(`div`);n.style.cssText=`padding:2rem;text-align:center;font-family:system-ui;`;let r=document.createElement(`h1`);r.style.color=`var(--s2-negative, #e34850)`,r.textContent=`Could not start follower`;let i=document.createElement(`p`);i.style.color=`var(--s2-content-tertiary, #717171)`,i.textContent=t,n.append(r,i),e.appendChild(n)}function we(e,t,n,r,i){let a=e=>{let t=document.createElement(`div`);return t.className=`wcui-placeholder`,t.textContent=e,t};i.files?(e.style.display=`none`,e.parentElement?.append(a(`Files live on the leader. A follower mirrors the leader's chat, sprinkles, and browser tabs - not its filesystem.`))):e.closest(`slicc-surface`)?.remove(),i.terminal?t.append(a(`The shell runs on the leader. A follower has no local terminal - drive the session through chat.`)):t.closest(`slicc-surface`)?.remove(),i.memory?n.append(a(`Memory lives on the leader. A follower has no local memory store.`)):n.closest(`slicc-surface`)?.remove(),i.monitor?(r.style.display=`none`,r.parentElement?.append(a(`Monitor reads the leader's kernel state. A follower has no local kernel.`))):r.closest(`slicc-surface`)?.remove()}var w={terminal:!0,files:!0,memory:!0,browser:!0,modelPicker:!0,history:!0,nav:!0,monitor:!0,showTimestamps:!0};function Te(e){let t=[];for(let[n,r]of[[`terminal`,`term`],[`files`,`files`],[`memory`,`memory`],[`browser`,`browser`],[`monitor`,`monitor`]])e[n]||t.push(`slicc-dock-item[data-t="${r}"]`);if(e.modelPicker||t.push(`slicc-composer-meta`),e.history||t.push(`slicc-freezer`),e.nav||t.push(`slicc-nav`),!e.terminal&&!e.files&&!e.memory&&!e.browser&&!e.monitor&&t.push(`slicc-dock .div`,`slicc-dock .grow`),t.length||!e.history){let n=document.createElement(`style`),r=t.length?`${t.join(`,
16
16
  `)}{display:none!important;}`:``;e.history||(r+=`
17
- .wcui-appcol{padding-left:0!important;}`),n.textContent=r,document.head.append(n)}}function T(e,t){return e&&!t}async function E(t,n,r){let[{parseLayoutDocument:i},{panelizeShell:a}]=await Promise.all([e(()=>import(`./wc-shell-Ba5uNdmF.js`).then(e=>e.R),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36])),e(()=>import(`./panelize-shell-CLHSr5bz.js`),__vite__mapDeps([37,3,0,1,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,38,39]))]),o=i(n);if(`error`in o){r.warn(`follower: host-pushed layout failed validation — keeping the default`,{error:o.error});return}a(t.refs,o),r.info(`follower: applied host-pushed layout document`,{id:o.id,locked:o.locked===!0})}async function Ee(e,t,i){if(i&&t.cherryTransport?.flags)try{let e=JSON.parse(t.cherryTransport.flags);e&&typeof e==`object`&&!Array.isArray(e)&&r(e)}catch(e){C.warn(`follower: host-pushed flags were not valid JSON — ignoring`,e)}let a=n(`panel-layouts`);if(e.refs.dockTree.tilesMovable=a,i&&t.cherryTransport?.layout)try{let n=JSON.parse(t.cherryTransport.layout);n&&typeof n==`object`&&`base`in n?a?await E(e,n,C):C.warn(`follower: ignoring host-pushed layout — the panel-layouts flag is off`):e.refs.dockTree.setTree(n)}catch(e){C.warn(`follower: host-pushed layout was not valid JSON — keeping the default`,e)}}async function D(t,r,u){let d=u===`cherry`,f=d&&new URLSearchParams(window.location.search).get(`ui-only`)===`1`,m=window.location.ancestorOrigins?.[0],h=d&&(m?.startsWith(`chrome-extension://`)??!1),g;try{g=await ie({runtimeMode:u,envBaseUrl:null,window,log:r})}catch(e){let n=e instanceof Error?e.message:String(e);C.error(`follower prelude failed`,{runtimeMode:u,error:n}),Ce(t,n);return}let _=d?g.cherryJoinUrl:ae(window.location.href,window.localStorage);if(!_){C.error(`follower mount with no join URL - falling back to live boot`);let{bootLeaderFloat:n}=await e(async()=>{let{bootLeaderFloat:e}=await import(`./wc-live-B4gJYGS5.js`).then(e=>e.n);return{bootLeaderFloat:e}},__vite__mapDeps([40,1,8,9,10,11,2,12,13,14,15,3,16,17,5,18,19,20,21,22,23,24,25,26,0,4,6,7,27,28,29,30,31,32,33,34,35,36,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65]));return n(t,r,`standalone`)}let v=d?`cherry`:h?`extension`:`standalone`,b,x,S,E=new Set,D=null,O=null,k=()=>g.cherryTransport?.emitSliccEventToHost(`slicc.open-leader-tab`),A=()=>{h&&ve(b.refs.thread,{onOpenTab:k})},De=e=>{let t=e.querySelectorAll(`img[src^="${be}"]`);return t.length!==0&&(t.forEach((t,n)=>{n===0&&!j?t.replaceWith(ye(e.ownerDocument,{onOpenTab:k})):t.remove()}),!0)},j=!1,Oe=e=>{let t=e.querySelectorAll(`img[src^="${xe}"]`);if(t.length!==0){for(let e of t)e.remove();j=!0;for(let e of b.refs.thread.querySelectorAll(`.${y}`))e.remove()}},M=(await se(t,r,{floatKind:v,connect:async t=>{b=t,d&&g.cherryTransport?.theme&&le(g.cherryTransport.theme),await Ee(b,g,d);let n=d&&g.cherryTransport?.effortLevel;n?localStorage.setItem(`slicc_locked_effort_level`,n):localStorage.removeItem(`slicc_locked_effort_level`),x=d&&g.cherryTransport?{...w,...g.cherryTransport.features}:w,we(b.refs.fileTree,b.refs.termSurface,b.refs.memoryHost,b.refs.monitor,x),Te(x),e(async()=>{let{applyTimestampVisibility:e,initTimestampPreference:t}=await import(`./wc-shell-Ba5uNdmF.js`).then(e=>e.X);return{applyTimestampVisibility:e,initTimestampPreference:t}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36])).then(({applyTimestampVisibility:e,initTimestampPreference:t})=>{x.showTimestamps?t():e(!1)}),e(async()=>{let{loadDipStyles:e,loadSprinkleStyles:t}=await import(`./legacy-styles-B3nS5QUo.js`);return{loadDipStyles:e,loadSprinkleStyles:t}},__vite__mapDeps([66,2])).then(({loadDipStyles:e,loadSprinkleStyles:t})=>Promise.all([e(),t()])).catch(()=>void 0),S=new s({getSync:()=>J?.currentSync??null});let r=ce({getSync:()=>J?.currentSync??null,onAgentEvent:e=>(E.add(e),()=>E.delete(e)),onAgentError:e=>{C.warn(`follower send failed`,{error:e}),M.controller.addAssistantMessage(`_That message was not sent to the leader — ${e}_`)}}),i={...r,sendSprinkleLick:(e,t,n)=>{r.sendSprinkleLick(e,t,n);let i=t?.action;typeof i==`string`&&_e(i)&&A()},addressableUnitId:()=>B(),onMessageRendered:e=>{Oe(e),h&&De(e)},onSelectionApplied:()=>{U(V,H),O?.onShownUnitChanged()},onSnapshotRendered:e=>{M.controller.setProcessing(e.some(e=>e.isStreaming))},ownsModelPill:!0,takeAttachments:()=>W.take()};return{client:S,host:i}}})).chat,N=M.controller;if(h)for(let e of[`slicc-error-open-settings`,`slicc-error-login`,`slicc-error-change-model`])b.refs.thread.addEventListener(e,()=>A());let P=`Connecting to leader…`,F=`Ask the leader, or describe a change…`,I=null,L=()=>b.getSelected()?.id??I,R=e=>e&&e.length>0?e:null,z=!1,B=()=>z?R(L()??S.selectedUnitId):null,ke=()=>{let e=b.getSelected();return e?de(e):!1},V=!1,H=P,U=(e,t)=>{V=e,H=t;let n=e&&B()!==null;b.refs.inputCard.setAttribute(`placeholder`,e&&!n?P:t),n&&!ke()?b.refs.inputCard.removeAttribute(`disabled`):b.refs.inputCard.setAttribute(`disabled`,``)};U(!1,P),te(e=>{try{window.localStorage.setItem(l,JSON.stringify(e))}catch{}});try{window.localStorage.setItem(l,JSON.stringify(ne()))}catch{}f||b.refs.composer.setAttribute(`ptt`,``);let W=pe({inputCard:b.refs.inputCard,freezer:b.refs.freezer,composer:b.refs.composer,noCamera:f,log:C}),G=new p(b.refs).callbacks(),K=e=>{if(I=e,!e)return;let t=S.currentUnits().find(t=>t.id===e);if(!t){b.watchUnit(e),U(V,H);return}if(b.getSelected()?.id!==t.id){b.selectScoop(t);return}U(V,H)},q=()=>{z=!1,S.resetSelection()};b.refs.switcher.connection=`disconnected`;let J,Y=null,Ae=()=>(Y||=me({runtimeMode:u})?.element??null,Y),X=[],je=ge({refs:b.refs,getSync:()=>J.currentSync,getTargets:()=>X,hasCdpBrowser:()=>T(g.hasLocalCdpSurface,f),window,log:C});O=oe({composerMeta:b.refs.composerMeta,getUnits:()=>S.currentUnits(),setModel:(e,t)=>{S.setModel(e,t).catch(()=>void 0)},getSync:()=>J.currentSync,getSelectedScoopJid:()=>L(),modelPickerEnabled:x.modelPicker,getLockedEffortLevel:()=>localStorage.getItem(`slicc_locked_effort_level`)}),S.subscribeList(()=>O?.onShownUnitChanged()),J=a(S.wrapOptions({joinUrl:_,runtime:d?ee:`slicc-standalone`,advertisesCdpTargets:T(g.hasLocalCdpSurface,f),onTargetsUpdated:e=>{X=e,je.refresh()},...d||f?{}:{onOAuthPopupRequest:(e,t)=>c(e,t,{getPermissionsSurface:Ae,window})},browserAPI:g.browser,onSnapshot:(e,t)=>{z=!0,K(R(t))},onUserMessage:(e,t,n,r)=>N.addUserMessage(e,r),onBiscottoMessageState:(e,t)=>{switch(t){case`pending`:N.addAssistantMessage(`_Sent for review — waiting for the host._`);break;case`rejected`:N.addAssistantMessage(`_The host did not forward that message._`);break;case`unanswered`:N.addAssistantMessage(`_No one reviewed that message in time, so it was not forwarded._`)}},onStatus:(e,t)=>{o(t,L())&&N.setProcessing(e===`processing`)},setChatAgent:e=>{D?.(),D=e.onEvent(e=>{for(let t of E)t(e)})},onSudoApprovalRequest:async t=>{let{openSudoApprovalDialog:n}=await e(async()=>{let{openSudoApprovalDialog:e}=await import(`./wc-sudo-approval-C51zuN6a.js`);return{openSudoApprovalDialog:e}},[]),r=d?g.cherryTransport?.hostOrigin:void 0;return{decision:(await n({kind:t.kind,detail:t.detail,...t.suggestedPattern?{suggestedPattern:t.suggestedPattern}:{},...t.reason?{reason:t.reason}:{}},{allowAlways:!1,signal:t.signal,expiresAt:t.expiresAt,requester:t.requester??t.scoopName??(r?`via ${r}`:void 0)})).decision,attestation:`none`}},onConnectionChange:e=>{b.refs.switcher.connection=e?`connected`:`disconnected`,e||q(),U(e,e?F:P),e||O?.reset(),d&&g.cherryTransport?.emitSliccEventToHost(e?`slicc.follower.ready`:`slicc.follower.disconnected`)},getSelectedScoopJid:()=>L(),onLeaderStalled:e=>{U(!e,e?`The leader is busy — hang on…`:F)},onGaveUp:e=>{C.error(`follower gave up reaching the leader`,{error:e}),b.refs.switcher.connection=`disconnected`,q(),U(!1,`Couldn't reach the leader. Reload to retry.`),O?.reset(),d&&g.cherryTransport?.emitSliccEventToHost(`slicc.follower.disconnected`)},...d?{}:{onJoinUrlChanged:e=>{C.info(`follower joinUrl superseded, persisting replacement`,{newJoinUrl:e}),re(window.localStorage,e)}},addSprinkle:G.addSprinkle,removeSprinkle:G.removeSprinkle,onOpen:e=>{/^https?:\/\//.test(e)?window.open(e,`_blank`,`noopener`):C.warn(`follower sprinkle open() of a local path is unavailable`,{path:e})},onSelectScoop:e=>ue(S.currentUnits(),e,b.getSelected()?.id,e=>b.selectScoop(e)),onSelectedScoop:()=>fe(S.currentUnits(),b.getSelected()?.id),onScoopsList:(e,t)=>{z=!0;let n=L();!n||!e.some(e=>e.jid===n)?K(R(t)):K(n),b.wiring.refreshScoops?.()},onModelsList:e=>O?.onModelsList(e),onModelState:e=>O?.onModelState(e),...d?{onCherrySliccEvent:(e,t)=>g.cherryTransport?.emitSliccEventToHost(e,t)}:{}}));for(let e of[`save`,`skip`,`erase`])b.refs.freezer.addEventListener(`new-chat-${e}`,()=>{S.forgetLocalSends(),J.currentSync?.requestNewSession(e)});n(`agentic-memory`)&&b.refs.freezer.querySelector(`slicc-freezer-new`)?.setAttribute(`no-skip`,``),b.refs.switcher.addEventListener(`slicc-scoop-select`,e=>{let t=e.detail?.key;t&&(I=t)}),d&&g.cherryTransport&&(g.cherryTransport.onHostEvent=(e,t)=>J.currentSync?.sendCherryHostEvent(e,t),g.cherryTransport.onExportRequest=(e,t,n,r)=>{let a=J.currentSync;if(!a)return Promise.reject(new i(`transfer-aborted`));let o=Se(t);return o?a.requestTranscriptExport(o,n,r):Promise.reject(new i(`session-not-found`))});let Z=null;if(!d){let{startFollowerNavigateWatcher:t}=await e(async()=>{let{startFollowerNavigateWatcher:e}=await import(`./follower-navigate-watcher-B8Kk1WcF.js`);return{startFollowerNavigateWatcher:e}},__vite__mapDeps([67,3,17,1,2,5,18,19,20,68,6,69]));Z=t(g.realCdpTransport,()=>J.currentSync)}let Q=!1,$=()=>{b.refs.avatarMenu.items=[{kind:`separator`},...h?[{id:`focus-leader-tab`,label:`Bring leader to front`,icon:`external-link`}]:[],{id:`export-transcript`,label:Q?`Exporting…`:`Export transcript`,icon:`download`,disabled:Q||void 0},{id:`tray-stop`,label:`Disconnect from leader`,icon:`unplug`,danger:!0}]};$(),b.refs.avatarMenu.addEventListener(`slicc-avatar-action`,t=>{let n=t.detail?.id;if(n===`focus-leader-tab`){g.cherryTransport?.emitSliccEventToHost(`slicc.focus-leader-tab`);return}if(n===`tray-stop`){window.dispatchEvent(new CustomEvent(`slicc:tray-leave`,{detail:{workerBaseUrl:null}}));return}if(n===`export-transcript`&&!Q){Q=!0,$();let t=J.currentSync;if(!t){Q=!1,$();return}let n=new AbortController;t.requestTranscriptExport({kind:`active`},n.signal).then(async t=>{let{downloadTranscriptBlob:n}=await e(async()=>{let{downloadTranscriptBlob:e}=await import(`./wc-transcript-export-CsUhlwMo.js`);return{downloadTranscriptBlob:e}},__vite__mapDeps([70,2,51,71,57,1]));await n(t,`slicc-transcript-${new Date().toISOString().slice(0,10)}.zip`)}).catch(e=>{C.error(`follower transcript export failed`,{error:String(e)})}).finally(()=>{Q=!1,$()})}}),window.addEventListener(`slicc:tray-leave`,e=>{he({workerBaseUrl:(e.detail??{}).workerBaseUrl??null},{storage:window.localStorage,stopFollower:()=>{Z?.(),J.stop()},getHref:()=>window.location.href,replaceHref:e=>window.history.replaceState(null,``,e),reload:()=>window.location.reload()})}),C.info(`follower mounted`,{runtimeMode:u,isCherry:d})}export{D as bootFollowerFloat};
17
+ .wcui-appcol{padding-left:0!important;}`),n.textContent=r,document.head.append(n)}}function T(e,t){return e&&!t}async function E(t,n,r){let[{parseLayoutDocument:i},{panelizeShell:a}]=await Promise.all([e(()=>import(`./wc-shell-pTQjFXvS.js`).then(e=>e.B),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36])),e(()=>import(`./panelize-shell-CILi0yPu.js`),__vite__mapDeps([37,3,0,1,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,38,39]))]),o=i(n);if(`error`in o){r.warn(`follower: host-pushed layout failed validation — keeping the default`,{error:o.error});return}a(t.refs,o),r.info(`follower: applied host-pushed layout document`,{id:o.id,locked:o.locked===!0})}async function Ee(e,t,i){if(i&&t.cherryTransport?.flags)try{let e=JSON.parse(t.cherryTransport.flags);e&&typeof e==`object`&&!Array.isArray(e)&&r(e)}catch(e){C.warn(`follower: host-pushed flags were not valid JSON — ignoring`,e)}let a=n(`panel-layouts`);if(e.refs.dockTree.tilesMovable=a,i&&t.cherryTransport?.layout)try{let n=JSON.parse(t.cherryTransport.layout);n&&typeof n==`object`&&`base`in n?a?await E(e,n,C):C.warn(`follower: ignoring host-pushed layout — the panel-layouts flag is off`):e.refs.dockTree.setTree(n)}catch(e){C.warn(`follower: host-pushed layout was not valid JSON — keeping the default`,e)}}async function D(t,r,u){let d=u===`cherry`,f=d&&new URLSearchParams(window.location.search).get(`ui-only`)===`1`,m=window.location.ancestorOrigins?.[0],h=d&&(m?.startsWith(`chrome-extension://`)??!1),g;try{g=await ie({runtimeMode:u,envBaseUrl:null,window,log:r})}catch(e){let n=e instanceof Error?e.message:String(e);C.error(`follower prelude failed`,{runtimeMode:u,error:n}),Ce(t,n);return}let _=d?g.cherryJoinUrl:ae(window.location.href,window.localStorage);if(!_){C.error(`follower mount with no join URL - falling back to live boot`);let{bootLeaderFloat:n}=await e(async()=>{let{bootLeaderFloat:e}=await import(`./wc-live-Cc8h6ZH1.js`).then(e=>e.n);return{bootLeaderFloat:e}},__vite__mapDeps([40,1,8,9,10,11,2,12,13,14,15,3,16,17,5,18,19,20,21,22,23,24,25,26,0,4,6,7,27,28,29,30,31,32,33,34,35,36,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65]));return n(t,r,`standalone`)}let v=d?`cherry`:h?`extension`:`standalone`,b,x,S,E=new Set,D=null,O=null,k=()=>g.cherryTransport?.emitSliccEventToHost(`slicc.open-leader-tab`),A=()=>{h&&ve(b.refs.thread,{onOpenTab:k})},De=e=>{let t=e.querySelectorAll(`img[src^="${be}"]`);return t.length!==0&&(t.forEach((t,n)=>{n===0&&!j?t.replaceWith(ye(e.ownerDocument,{onOpenTab:k})):t.remove()}),!0)},j=!1,Oe=e=>{let t=e.querySelectorAll(`img[src^="${xe}"]`);if(t.length!==0){for(let e of t)e.remove();j=!0;for(let e of b.refs.thread.querySelectorAll(`.${y}`))e.remove()}},M=(await se(t,r,{floatKind:v,connect:async t=>{b=t,d&&g.cherryTransport?.theme&&le(g.cherryTransport.theme),await Ee(b,g,d);let n=d&&g.cherryTransport?.effortLevel;n?localStorage.setItem(`slicc_locked_effort_level`,n):localStorage.removeItem(`slicc_locked_effort_level`),x=d&&g.cherryTransport?{...w,...g.cherryTransport.features}:w,we(b.refs.fileTree,b.refs.termSurface,b.refs.memoryHost,b.refs.monitor,x),Te(x),e(async()=>{let{applyTimestampVisibility:e,initTimestampPreference:t}=await import(`./wc-shell-pTQjFXvS.js`).then(e=>e.Q);return{applyTimestampVisibility:e,initTimestampPreference:t}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36])).then(({applyTimestampVisibility:e,initTimestampPreference:t})=>{x.showTimestamps?t():e(!1)}),e(async()=>{let{loadDipStyles:e,loadSprinkleStyles:t}=await import(`./legacy-styles-B3nS5QUo.js`);return{loadDipStyles:e,loadSprinkleStyles:t}},__vite__mapDeps([66,2])).then(({loadDipStyles:e,loadSprinkleStyles:t})=>Promise.all([e(),t()])).catch(()=>void 0),S=new s({getSync:()=>J?.currentSync??null});let r=ce({getSync:()=>J?.currentSync??null,onAgentEvent:e=>(E.add(e),()=>E.delete(e)),onAgentError:e=>{C.warn(`follower send failed`,{error:e}),M.controller.addAssistantMessage(`_That message was not sent to the leader — ${e}_`)}}),i={...r,sendSprinkleLick:(e,t,n)=>{r.sendSprinkleLick(e,t,n);let i=t?.action;typeof i==`string`&&_e(i)&&A()},addressableUnitId:()=>B(),onMessageRendered:e=>{Oe(e),h&&De(e)},onSelectionApplied:()=>{U(V,H),O?.onShownUnitChanged()},onSnapshotRendered:e=>{M.controller.setProcessing(e.some(e=>e.isStreaming))},ownsModelPill:!0,takeAttachments:()=>W.take()};return{client:S,host:i}}})).chat,N=M.controller;if(h)for(let e of[`slicc-error-open-settings`,`slicc-error-login`,`slicc-error-change-model`])b.refs.thread.addEventListener(e,()=>A());let P=`Connecting to leader…`,F=`Ask the leader, or describe a change…`,I=null,L=()=>b.getSelected()?.id??I,R=e=>e&&e.length>0?e:null,z=!1,B=()=>z?R(L()??S.selectedUnitId):null,ke=()=>{let e=b.getSelected();return e?de(e):!1},V=!1,H=P,U=(e,t)=>{V=e,H=t;let n=e&&B()!==null;b.refs.inputCard.setAttribute(`placeholder`,e&&!n?P:t),n&&!ke()?b.refs.inputCard.removeAttribute(`disabled`):b.refs.inputCard.setAttribute(`disabled`,``)};U(!1,P),te(e=>{try{window.localStorage.setItem(l,JSON.stringify(e))}catch{}});try{window.localStorage.setItem(l,JSON.stringify(ne()))}catch{}f||b.refs.composer.setAttribute(`ptt`,``);let W=pe({inputCard:b.refs.inputCard,freezer:b.refs.freezer,composer:b.refs.composer,noCamera:f,log:C}),G=new p(b.refs).callbacks(),K=e=>{if(I=e,!e)return;let t=S.currentUnits().find(t=>t.id===e);if(!t){b.watchUnit(e),U(V,H);return}if(b.getSelected()?.id!==t.id){b.selectScoop(t);return}U(V,H)},q=()=>{z=!1,S.resetSelection()};b.refs.switcher.connection=`disconnected`;let J,Y=null,Ae=()=>(Y||=me({runtimeMode:u})?.element??null,Y),X=[],je=ge({refs:b.refs,getSync:()=>J.currentSync,getTargets:()=>X,hasCdpBrowser:()=>T(g.hasLocalCdpSurface,f),window,log:C});O=oe({composerMeta:b.refs.composerMeta,getUnits:()=>S.currentUnits(),setModel:(e,t)=>{S.setModel(e,t).catch(()=>void 0)},getSync:()=>J.currentSync,getSelectedScoopJid:()=>L(),modelPickerEnabled:x.modelPicker,getLockedEffortLevel:()=>localStorage.getItem(`slicc_locked_effort_level`)}),S.subscribeList(()=>O?.onShownUnitChanged()),J=a(S.wrapOptions({joinUrl:_,runtime:d?ee:`slicc-standalone`,advertisesCdpTargets:T(g.hasLocalCdpSurface,f),onTargetsUpdated:e=>{X=e,je.refresh()},...d||f?{}:{onOAuthPopupRequest:(e,t)=>c(e,t,{getPermissionsSurface:Ae,window})},browserAPI:g.browser,onSnapshot:(e,t)=>{z=!0,K(R(t))},onUserMessage:(e,t,n,r)=>N.addUserMessage(e,r),onBiscottoMessageState:(e,t)=>{switch(t){case`pending`:N.addAssistantMessage(`_Sent for review — waiting for the host._`);break;case`rejected`:N.addAssistantMessage(`_The host did not forward that message._`);break;case`unanswered`:N.addAssistantMessage(`_No one reviewed that message in time, so it was not forwarded._`)}},onStatus:(e,t)=>{o(t,L())&&N.setProcessing(e===`processing`)},setChatAgent:e=>{D?.(),D=e.onEvent(e=>{for(let t of E)t(e)})},onSudoApprovalRequest:async t=>{let{openSudoApprovalDialog:n}=await e(async()=>{let{openSudoApprovalDialog:e}=await import(`./wc-sudo-approval-C51zuN6a.js`);return{openSudoApprovalDialog:e}},[]),r=d?g.cherryTransport?.hostOrigin:void 0;return{decision:(await n({kind:t.kind,detail:t.detail,...t.suggestedPattern?{suggestedPattern:t.suggestedPattern}:{},...t.reason?{reason:t.reason}:{}},{allowAlways:!1,signal:t.signal,expiresAt:t.expiresAt,requester:t.requester??t.scoopName??(r?`via ${r}`:void 0)})).decision,attestation:`none`}},onConnectionChange:e=>{b.refs.switcher.connection=e?`connected`:`disconnected`,e||q(),U(e,e?F:P),e||O?.reset(),d&&g.cherryTransport?.emitSliccEventToHost(e?`slicc.follower.ready`:`slicc.follower.disconnected`)},getSelectedScoopJid:()=>L(),onLeaderStalled:e=>{U(!e,e?`The leader is busy — hang on…`:F)},onGaveUp:e=>{C.error(`follower gave up reaching the leader`,{error:e}),b.refs.switcher.connection=`disconnected`,q(),U(!1,`Couldn't reach the leader. Reload to retry.`),O?.reset(),d&&g.cherryTransport?.emitSliccEventToHost(`slicc.follower.disconnected`)},...d?{}:{onJoinUrlChanged:e=>{C.info(`follower joinUrl superseded, persisting replacement`,{newJoinUrl:e}),re(window.localStorage,e)}},addSprinkle:G.addSprinkle,removeSprinkle:G.removeSprinkle,onOpen:e=>{/^https?:\/\//.test(e)?window.open(e,`_blank`,`noopener`):C.warn(`follower sprinkle open() of a local path is unavailable`,{path:e})},onSelectScoop:e=>ue(S.currentUnits(),e,b.getSelected()?.id,e=>b.selectScoop(e)),onSelectedScoop:()=>fe(S.currentUnits(),b.getSelected()?.id),onScoopsList:(e,t)=>{z=!0;let n=L();!n||!e.some(e=>e.jid===n)?K(R(t)):K(n),b.wiring.refreshScoops?.()},onModelsList:e=>O?.onModelsList(e),onModelState:e=>O?.onModelState(e),...d?{onCherrySliccEvent:(e,t)=>g.cherryTransport?.emitSliccEventToHost(e,t)}:{}}));for(let e of[`save`,`skip`,`erase`])b.refs.freezer.addEventListener(`new-chat-${e}`,()=>{S.forgetLocalSends(),J.currentSync?.requestNewSession(e)});n(`agentic-memory`)&&b.refs.freezer.querySelector(`slicc-freezer-new`)?.setAttribute(`no-skip`,``),b.refs.switcher.addEventListener(`slicc-scoop-select`,e=>{let t=e.detail?.key;t&&(I=t)}),d&&g.cherryTransport&&(g.cherryTransport.onHostEvent=(e,t)=>J.currentSync?.sendCherryHostEvent(e,t),g.cherryTransport.onExportRequest=(e,t,n,r)=>{let a=J.currentSync;if(!a)return Promise.reject(new i(`transfer-aborted`));let o=Se(t);return o?a.requestTranscriptExport(o,n,r):Promise.reject(new i(`session-not-found`))});let Z=null;if(!d){let{startFollowerNavigateWatcher:t}=await e(async()=>{let{startFollowerNavigateWatcher:e}=await import(`./follower-navigate-watcher-DVWQWTGU.js`);return{startFollowerNavigateWatcher:e}},__vite__mapDeps([67,3,17,1,2,5,18,19,20,68,6,69]));Z=t(g.realCdpTransport,()=>J.currentSync)}let Q=!1,$=()=>{b.refs.avatarMenu.items=[{kind:`separator`},...h?[{id:`focus-leader-tab`,label:`Bring leader to front`,icon:`external-link`}]:[],{id:`export-transcript`,label:Q?`Exporting…`:`Export transcript`,icon:`download`,disabled:Q||void 0},{id:`tray-stop`,label:`Disconnect from leader`,icon:`unplug`,danger:!0}]};$(),b.refs.avatarMenu.addEventListener(`slicc-avatar-action`,t=>{let n=t.detail?.id;if(n===`focus-leader-tab`){g.cherryTransport?.emitSliccEventToHost(`slicc.focus-leader-tab`);return}if(n===`tray-stop`){window.dispatchEvent(new CustomEvent(`slicc:tray-leave`,{detail:{workerBaseUrl:null}}));return}if(n===`export-transcript`&&!Q){Q=!0,$();let t=J.currentSync;if(!t){Q=!1,$();return}let n=new AbortController;t.requestTranscriptExport({kind:`active`},n.signal).then(async t=>{let{downloadTranscriptBlob:n}=await e(async()=>{let{downloadTranscriptBlob:e}=await import(`./wc-transcript-export-CP5fUab6.js`);return{downloadTranscriptBlob:e}},__vite__mapDeps([70,2,51,71,57,1]));await n(t,`slicc-transcript-${new Date().toISOString().slice(0,10)}.zip`)}).catch(e=>{C.error(`follower transcript export failed`,{error:String(e)})}).finally(()=>{Q=!1,$()})}}),window.addEventListener(`slicc:tray-leave`,e=>{he({workerBaseUrl:(e.detail??{}).workerBaseUrl??null},{storage:window.localStorage,stopFollower:()=>{Z?.(),J.stop()},getHref:()=>window.location.href,replaceHref:e=>window.history.replaceState(null,``,e),reload:()=>window.location.reload()})}),C.info(`follower mounted`,{runtimeMode:u,isCherry:d})}export{D as bootFollowerFloat};