sliccy 6.150.2 → 6.150.3

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 (124) hide show
  1. package/dist/node-server/_shared/github-releases.d.ts +79 -0
  2. package/dist/node-server/_shared/github-releases.d.ts.map +1 -0
  3. package/dist/node-server/_shared/github-releases.js +86 -0
  4. package/dist/node-server/_shared/github-releases.js.map +1 -0
  5. package/dist/node-server/_shared/index.d.ts +1 -0
  6. package/dist/node-server/_shared/index.d.ts.map +1 -1
  7. package/dist/node-server/_shared/index.js +1 -0
  8. package/dist/node-server/_shared/index.js.map +1 -1
  9. package/dist/node-server/install-cli.d.ts +1 -1
  10. package/dist/node-server/install-cli.js +17 -38
  11. package/dist/ui/.vite/manifest.json +170 -170
  12. package/dist/ui/assets/{account-store-igNbS3Ak.js → account-store-CrlYmBhs.js} +1 -1
  13. package/dist/ui/assets/{account-store-WHtW2xQT.js → account-store-DOXqeYT0.js} +1 -1
  14. package/dist/ui/assets/{adobe-qGeGJSVK.js → adobe-B_clTofx.js} +1 -1
  15. package/dist/ui/assets/{adobe-DES78X4G.js → adobe-aYqJ5v9x.js} +1 -1
  16. package/dist/ui/assets/{agent-bridge-Bj-PqjME.js → agent-bridge-C65rLRpW.js} +1 -1
  17. package/dist/ui/assets/{agent-panels-BWaMcEJL.js → agent-panels-BVRcI_xw.js} +1 -1
  18. package/dist/ui/assets/{apply-layout-Cw4kGKTd.js → apply-layout-DBkYsHXJ.js} +1 -1
  19. package/dist/ui/assets/{apps-GYMxMVb3.js → apps-Do7g8Hnr.js} +1 -1
  20. package/dist/ui/assets/{azure-openai-BbxUu9bl.js → azure-openai-B0TsF9za.js} +1 -1
  21. package/dist/ui/assets/{azure-openai-Df42STSp.js → azure-openai-CaWKE5Uo.js} +1 -1
  22. package/dist/ui/assets/{budget-usage-source-CkdCr5f4.js → budget-usage-source-Betq3LfQ.js} +1 -1
  23. package/dist/ui/assets/{cdp-bzn_Xeev.js → cdp-Bm40FI9c.js} +1 -1
  24. package/dist/ui/assets/{cerebras-BdSVSPms.js → cerebras-CCzpXIYc.js} +1 -1
  25. package/dist/ui/assets/{cerebras-CnqGnpF2.js → cerebras-CX-AhbtR.js} +1 -1
  26. package/dist/ui/assets/{composer-speech-Bk2rlnG1.js → composer-speech-D02A5Gzx.js} +1 -1
  27. package/dist/ui/assets/{connect-surface-CHDb1bpy.js → connect-surface-ntIDYIw7.js} +1 -1
  28. package/dist/ui/assets/{directed-approval-KW7sZoq9.js → directed-approval-DHODzJjY.js} +1 -1
  29. package/dist/ui/assets/{fs-FVRsAbgb.js → fs-D-uj-8Sz.js} +1 -1
  30. package/dist/ui/assets/{fs-ih2eMSkQ.js → fs-h2k1izi7.js} +2 -2
  31. package/dist/ui/assets/{github-CMoh4wrN.js → github-BerPN1ng.js} +2 -2
  32. package/dist/ui/assets/{github--5oROr4B.js → github-Db06TQ3y.js} +1 -1
  33. package/dist/ui/assets/{github-copilot-DkYiMCsw.js → github-copilot-CYitJUQl.js} +1 -1
  34. package/dist/ui/assets/{github-copilot-qWy0Zt4S.js → github-copilot-CgfwZrlt.js} +1 -1
  35. package/dist/ui/assets/{github-install-BNlfwzSw.js → github-install-CLsaou5x.js} +1 -1
  36. package/dist/ui/assets/{github-zip-BlzKyxxV.js → github-zip-D_u_u7J9.js} +1 -1
  37. package/dist/ui/assets/{hear-DZ1gevW6.js → hear-Bw1_Wsyq.js} +1 -1
  38. package/dist/ui/assets/{help-AarM8EZw.js → help-H4PdSpjs.js} +1 -1
  39. package/dist/ui/assets/{js-realm-worker-B0sapExQ.js → js-realm-worker-BeUzaR6t.js} +1 -1
  40. package/dist/ui/assets/{kernel-worker-BsjX-8Q_.js → kernel-worker-JSk0YABz.js} +32 -32
  41. package/dist/ui/assets/{local-llm-Bm7qcibx.js → local-llm-X6aoWrdk.js} +1 -1
  42. package/dist/ui/assets/{local-llm-oYJuPYM9.js → local-llm-p0HeqQQs.js} +1 -1
  43. package/dist/ui/assets/{main-0FLLRgpr.js → main-DpqAB6Xt.js} +3 -3
  44. package/dist/ui/assets/{main-cherry-DgWyX5j1.js → main-cherry-BKgKqIUE.js} +1 -1
  45. package/dist/ui/assets/{memory-curation-seam-DaqkHe0O.js → memory-curation-seam-C3w7uRm8.js} +1 -1
  46. package/dist/ui/assets/{mount-BQVKp_Ky.js → mount-CcrODNCz.js} +3 -3
  47. package/dist/ui/assets/{mount-pNmGh8WK.js → mount-DwQIRhG8.js} +1 -1
  48. package/dist/ui/assets/{mount-recovery-BAhGb_bv.js → mount-recovery-BjCUtQ_D.js} +1 -1
  49. package/dist/ui/assets/{new-session-DTTLrwVg.js → new-session-NbvCXw0f.js} +2 -2
  50. package/dist/ui/assets/{oauth-bootstrap-CyfMMMHH.js → oauth-bootstrap-CTpOMfQ1.js} +2 -2
  51. package/dist/ui/assets/{onboarding-orchestrator-yYN6eJua.js → onboarding-orchestrator-D8IzMCxO.js} +1 -1
  52. package/dist/ui/assets/{openai-codex-r3KGBkgC.js → openai-codex-BMdbw_6d.js} +1 -1
  53. package/dist/ui/assets/{openai-codex-DG43gisr.js → openai-codex-_dQEkPvX.js} +1 -1
  54. package/dist/ui/assets/{openrouter-DssYc44Z.js → openrouter-C-PiEZ_6.js} +1 -1
  55. package/dist/ui/assets/{openrouter-Bk7xqCwB.js → openrouter-C5bxqxEw.js} +1 -1
  56. package/dist/ui/assets/{openrouter-free-CSLhk_A7.js → openrouter-free-BrrKDnFq.js} +1 -1
  57. package/dist/ui/assets/{openrouter-free-Bhx3nBtn.js → openrouter-free-QQ3Wdmll.js} +1 -1
  58. package/dist/ui/assets/{openrouter-oauth-ByDzZ41D.js → openrouter-oauth-CR6_YaLR.js} +1 -1
  59. package/dist/ui/assets/{openrouter-oauth-C8yHZzXx.js → openrouter-oauth-DbhmptxK.js} +1 -1
  60. package/dist/ui/assets/{panel-rpc-handlers-S63g21yk.js → panel-rpc-handlers-BZ4Kn8n2.js} +2 -2
  61. package/dist/ui/assets/{panelize-shell-B59FHf_a.js → panelize-shell-BXYJdfdz.js} +1 -1
  62. package/dist/ui/assets/{provider-DTjGYfpI.js → provider-BfYWPifn.js} +2 -2
  63. package/dist/ui/assets/{provider-B_5ZkOJ1.js → provider-BkZPLhtS.js} +1 -1
  64. package/dist/ui/assets/provider-settings--kFwOouY.js +1 -0
  65. package/dist/ui/assets/provider-store-access-963yDvhJ.js +1 -0
  66. package/dist/ui/assets/provider-store-access-ROkWbOw8.js +1 -0
  67. package/dist/ui/assets/{providers-w9myWTsL.js → providers-DggUfKzU.js} +1 -1
  68. package/dist/ui/assets/{providers-70klvlGo.js → providers-gJZWlxGR.js} +2 -2
  69. package/dist/ui/assets/{quick-llm-Bji5F30H.js → quick-llm-BseHVEV7.js} +1 -1
  70. package/dist/ui/assets/{recovery-screen-lqxJwXM8.js → recovery-screen-DqMA4-ox.js} +1 -1
  71. package/dist/ui/assets/{run-BWhPamLe.js → run-C1rvMwL4.js} +1 -1
  72. package/dist/ui/assets/{run-Ba8ggbts.js → run-sonPt-UJ.js} +2 -2
  73. package/dist/ui/assets/{run-Byf9dPJf.js → run-vhU_KOu5.js} +1 -1
  74. package/dist/ui/assets/{session-jsonl-BCOxqyX1.js → session-jsonl-on-0nPRn.js} +1 -1
  75. package/dist/ui/assets/{setup-feature-flags-remote-D1ban-xx.js → setup-feature-flags-remote-B0qLs3k4.js} +1 -1
  76. package/dist/ui/assets/sidecar-repair-Bt_naq-u.js +1 -0
  77. package/dist/ui/assets/{silent-renew-backoff-DycrXmC_.js → silent-renew-backoff-Dfauu-BS.js} +1 -1
  78. package/dist/ui/assets/{skills-CyvmUs8o.js → skills-D5k744s5.js} +1 -1
  79. package/dist/ui/assets/slicc-version-B1IDQjQu.js +1 -0
  80. package/dist/ui/assets/{snapshot-CezJTIo1.js → snapshot-Di8YvLTh.js} +1 -1
  81. package/dist/ui/assets/{snapshot-features-i5G7O7jE.js → snapshot-features-RjT-rBOd.js} +1 -1
  82. package/dist/ui/assets/{soundscape-B9l997Lg.js → soundscape-Cl3u8Jyr.js} +1 -1
  83. package/dist/ui/assets/{speak-DHglNoiP.js → speak-CJqusOZ1.js} +1 -1
  84. package/dist/ui/assets/{sprinkle-manager-oNv4Dxy0.js → sprinkle-manager-QQ2CwjdG.js} +1 -1
  85. package/dist/ui/assets/{sprinkle-renderer-CeGc4B0L.js → sprinkle-renderer-BlXAU391.js} +1 -1
  86. package/dist/ui/assets/{state-CENLKudR.js → state-CxToeKjf.js} +1 -1
  87. package/dist/ui/assets/{store-L5QyZg_g.js → store-973mBXTd.js} +1 -1
  88. package/dist/ui/assets/{store-BZA4REpw.js → store-BHNNlmAL.js} +1 -1
  89. package/dist/ui/assets/{sudo-B6DNIqye.js → sudo-DTtHLCYd.js} +1 -1
  90. package/dist/ui/assets/{sync-dialog-CroF8oTi.js → sync-dialog-BK7PE3wq.js} +1 -1
  91. package/dist/ui/assets/{transformers-env-CUhuRO-A.js → transformers-env-Dai_HSxd.js} +1 -1
  92. package/dist/ui/assets/{tray-sidecar-Djlc71w_.js → tray-sidecar-Crght3K7.js} +1 -1
  93. package/dist/ui/assets/{upgrade-detection-BLcTRETI.js → upgrade-detection-CSYo_Vtl.js} +1 -1
  94. package/dist/ui/assets/{voice-reply-Pzf7yCCs.js → voice-reply-DIY2GqU4.js} +1 -1
  95. package/dist/ui/assets/{wc-attach-BBHTF92w.js → wc-attach-B9uzcseM.js} +2 -2
  96. package/dist/ui/assets/{wc-extension-BVUF-GVc.js → wc-extension-DYcXGgiG.js} +2 -2
  97. package/dist/ui/assets/{wc-follower-9mZwPNR8.js → wc-follower-B7pHK3RY.js} +3 -3
  98. package/dist/ui/assets/{wc-follower-oauth-B-LgkRB6.js → wc-follower-oauth-CKx18G9S.js} +1 -1
  99. package/dist/ui/assets/{wc-gelatiere-Cse9kSXf.js → wc-gelatiere-BvHDoYuK.js} +1 -1
  100. package/dist/ui/assets/{wc-live-Ts1bLhjx.js → wc-live-Cw2LKjtz.js} +5 -5
  101. package/dist/ui/assets/{wc-nav-DO33b6Qg.js → wc-nav-BwvNNWIw.js} +2 -2
  102. package/dist/ui/assets/{wc-onboarding-DeCWfgKN.js → wc-onboarding-BXAxlGfu.js} +2 -2
  103. package/dist/ui/assets/{wc-placeholder-DgM1-HSU.js → wc-placeholder-BSxKGHkd.js} +3 -3
  104. package/dist/ui/assets/{wc-secret-request-BNTQEHzM.js → wc-secret-request-BdnXLwK0.js} +1 -1
  105. package/dist/ui/assets/{wc-settings-CCJ-33PW.js → wc-settings-CfYwwf8H.js} +3 -3
  106. package/dist/ui/assets/{wc-shell-S_KQG-ZJ.js → wc-shell-rn0tIe5F.js} +3 -3
  107. package/dist/ui/assets/{wc-shortcut-config-DOL-7eLe.js → wc-shortcut-config-B8ZVGT9x.js} +1 -1
  108. package/dist/ui/assets/{wc-shortcuts-BU_YGmdb.js → wc-shortcuts-C6WmikKG.js} +1 -1
  109. package/dist/ui/assets/{wc-sprinkles-l4l891y6.js → wc-sprinkles-N7Mm_dCE.js} +2 -2
  110. package/dist/ui/assets/{wc-transcript-export-DRwVoKZj.js → wc-transcript-export-40rwtRxl.js} +2 -2
  111. package/dist/ui/assets/{wc-tray-qlcU6L0f.js → wc-tray-pS-04NeG.js} +4 -4
  112. package/dist/ui/assets/welcome-detection-DsSbZk0X.js +1 -0
  113. package/dist/ui/assets/{whisper-session-D3sdmYD8.js → whisper-session-DFK5Kh0n.js} +2 -2
  114. package/dist/ui/assets/{xai-grok-DStVYmfz.js → xai-grok-SjTy_RN_.js} +1 -1
  115. package/dist/ui/assets/{xai-grok-pQ6Q0CcQ.js → xai-grok-yNIcIXvN.js} +1 -1
  116. package/dist/ui/index.html +3 -3
  117. package/dist/ui/packages/webapp/index.html +3 -3
  118. package/package.json +1 -1
  119. package/dist/ui/assets/provider-settings-uchEkvQy.js +0 -1
  120. package/dist/ui/assets/provider-store-access-Cz_2CeJI.js +0 -1
  121. package/dist/ui/assets/provider-store-access-kQEPDMDW.js +0 -1
  122. package/dist/ui/assets/sidecar-repair-CJngowmG.js +0 -1
  123. package/dist/ui/assets/slicc-version-BhF_V6lj.js +0 -1
  124. package/dist/ui/assets/welcome-detection-BFFz2Urt.js +0 -1
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/main-0FLLRgpr.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/modulepreload-polyfill-P2Xu9kJm.js","assets/account-store-igNbS3Ak.js","assets/preload-helper-Czpn1I53.js","assets/claude-model-version-CSATLzrT.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/logger-DDBAeTLF.js","assets/base64-DJRlyqZu.js","assets/proxied-fetch-DyBveeCl.js","assets/fetch-body-1l9I58Vk.js","assets/api-endpoint-DGxXvrur.js","assets/runtime-env-Dlaokqg1.js","assets/float-topology-YtctpJaG.js","assets/secret-topology-DLJBhHOi.js","assets/secrets-bridge-client--VZ3E0yk.js","assets/port-bridge-client-Dn8JtUyP.js","assets/tool-ui-eSQ1g2I1.js","assets/providers-70klvlGo.js","assets/panel-rpc-B3MSVImO.js","assets/bedrock-camp-compat-BeCSBUrZ.js","assets/bridge-protocol-06nbmp2X.js","assets/messages-zAgr7E2T.js","assets/tray-runtime-config-B9jN9kUJ.js","assets/telemetry-DJyRzh6X.js","assets/feature-flags-CYCRk6Dq.js","assets/tray-follower-status-BAjnN7Ar.js","assets/clipboard-eqmn97SP.js","assets/tray-join-url-BIvzbiFR.js","assets/wc-detached-F7FTH1YG.js","assets/wc-settings-CCJ-33PW.js","assets/wc-shortcuts-BU_YGmdb.js","assets/icons-Df1OSRR-.js","assets/slugify-BYJ6QVAt.js","assets/theme-engine-B5SkYf3E.js","assets/theme-DFKCBK8N.js","assets/discovery-preference-Bw3Fi0jd.js","assets/legacy-styles-B3nS5QUo.js","assets/sync-dialog-CroF8oTi.js","assets/wc-live-Ts1bLhjx.js","assets/sprinkle-renderer-CeGc4B0L.js","assets/hid-device-registry-B2R-0rNt.js","assets/serial-port-registry-CCqklAEr.js","assets/usb-operations-BsAiCAWF.js","assets/usb-device-registry-DmUBqrA-.js","assets/shared-mBEktoxE.js","assets/mime-types-D0xZwlMO.js","assets/transcript-export-DP-r8eDz.js","assets/session-jsonl-BCOxqyX1.js","assets/types-Dgm4REV3.js","assets/src-BWaKqLvQ.js","assets/provider-budget-LCzMPlKv.js","assets/permissions-surface-registry-CilCRwhh.js","assets/browser-DGwroBSO.js","assets/tray-leader-BmmfZ-wo.js","assets/record-CCQFJXn_.js","assets/wc-shell-S_KQG-ZJ.js","assets/wc-shell-WkeczD9x.css","assets/wc-unit-context-DhQqWVxs.js"])))=>i.map(i=>d[i]);
2
- import{t as e}from"./preload-helper-Czpn1I53.js";import{n as t}from"./runtime-env-Dlaokqg1.js";import{l as n,t as r}from"./tray-runtime-config-B9jN9kUJ.js";import{_ as i,c as a,s as o,v as s}from"./wc-live-Ts1bLhjx.js";import{r as c}from"./feature-flags-CYCRk6Dq.js";import{t as l}from"./tray-follower-status-BAjnN7Ar.js";import{n as u}from"./clipboard-eqmn97SP.js";import{t as d}from"./tray-join-url-BIvzbiFR.js";import{r as f}from"./tray-leader-BmmfZ-wo.js";import{o as p}from"./record-CCQFJXn_.js";import{a as m}from"./wc-unit-context-DhQqWVxs.js";function h(e){let t=e.find(e=>e.userAvatar&&e.userName)??e.find(e=>e.userName);return t?.userName?{name:t.userName,avatarUrl:t.userAvatar,provider:t.providerId}:null}function g(e){return e.flatMap(e=>e.models.map(t=>({name:t.name??t.id,provider:e.providerName,id:`${e.providerId}:${t.id}`})))}function _(e,t,n){try{let r=t();e.setAttribute(`model`,r.name??r.id),n&&(e.selectedModelId=n())}catch{}}function v(e,t){let n=[{id:`settings`,label:`Account settings…`,icon:`settings`},{id:`theme`,label:`Theme settings…`,icon:`palette`},...t?[{id:`shortcuts`,label:`Keyboard mode`,icon:`keyboard`}]:[],{id:`export-transcript`,label:`Export transcript`,icon:`download`,disabled:e||void 0}];return c(`experimental-settings`)&&n.push({id:`experimental-settings`,label:`Experimental features…`,icon:`flask-conical`}),n}function y(e,t){return()=>{e.models=g(t()),s()}}function b(e,t,n){return()=>_(e,t,()=>{let e=t();return`${n()}:${e.id}`})}function x(e,t,n){return()=>{let r=h(t()),i=e.avatarMenu.querySelector(`slicc-avatar`),a=e.inputCard.querySelector(`slicc-send-button`);if(r){i?.removeAttribute(`initials`),i?.setAttribute(`name`,r.name),r.avatarUrl&&(i?.setAttribute(`src`,r.avatarUrl),a?.setAttribute(`src`,r.avatarUrl)),e.avatarMenu.user={name:r.name,provider:r.provider};return}i?.removeAttribute(`name`),i?.removeAttribute(`src`),i?.removeAttribute(`initials`),a?.removeAttribute(`src`),e.avatarMenu.user={name:`SLICC`,provider:n?`extension`:`standalone`}}}async function S(n){let{refs:r,client:i,log:a,onExportTranscript:o}=n,{getAllAvailableModels:s,getAccounts:c,getSelectedProvider:u,resolveCurrentModel:p}=await e(async()=>{let{getAllAvailableModels:e,getAccounts:t,getSelectedProvider:n,resolveCurrentModel:r}=await import(`./main-0FLLRgpr.js`).then(e=>e.t);return{getAllAvailableModels:e,getAccounts:t,getSelectedProvider:n,resolveCurrentModel: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])),m=y(r.composerMeta,s),h=b(r.composerMeta,p,u);m();let g=null;await N(r,i,n.workUnits,n.getUnits,()=>{let e=g;g=null,e!=null&&r.thread?.dispatchEvent(new CustomEvent(`slicc-error-retry`,{detail:{messageId:e},bubbles:!0,composed:!0}))});let _=t(),S=x(r,c,_);S();let O=()=>{if(_)return[];let e=d(f(),l()),t=[{kind:`separator`}];return e.kind===`leader-offer`?t.push({id:`tray-enable`,label:e.label,icon:`radio`}):e.kind===`leader-copy`?(t.push({id:`tray-copy`,label:`Copy tray join URL`,icon:`link`}),t.push({id:`tray-stop`,label:`Stop multi-browser sync`,icon:`square`,danger:!0})):e.kind===`leader-pending`?(t.push({kind:`caption`,label:e.caption}),t.push({id:`tray-stop`,label:`Stop multi-browser sync`,icon:`square`,danger:!0})):(t.push({kind:`caption`,label:e.caption}),t.push({id:`tray-stop`,label:`Disconnect from leader`,icon:`unplug`,danger:!0})),t},P=new URLSearchParams(window.location.search).has(`detached`),I=()=>_&&!P?[{id:`popout`,label:`Pop out into a tab`,icon:`external-link`}]:[],L=!1,R=()=>{r.avatarMenu.items=[...v(L,!!n.shortcuts),...I(),...O()]};R(),r.avatarMenu.addEventListener(`slicc-avatar-menu-toggle`,e=>{e.detail?.open&&R()});let z=C(a,m,S,()=>i.updateModel());n.shortcuts?.setAction(`accounts`,z);let B=w(a,T(n)),V=E(a);D(r,a),r.avatarMenu.addEventListener(`slicc-avatar-action`,t=>{let r=t.detail?.id;if(r&&k(r,a)){R();return}if(r===`popout`){e(async()=>{let{requestDetachedPopout:e}=await import(`./wc-detached-F7FTH1YG.js`);return{requestDetachedPopout:e}},__vite__mapDeps([34,27])).then(({requestDetachedPopout:e})=>e()).catch(e=>a.error(`detached popout request failed`,e));return}r===`shortcuts`&&n.shortcuts?.showHelp(),r===`settings`&&z(),r===`theme`&&B(),r===`experimental-settings`&&V(),r===`export-transcript`&&o&&(L=!0,R(),o().finally(()=>{L=!1,R()}))}),r.composerMeta.addEventListener(`add-ai`,z),A(r,z),j({refs:r,log:a,openSettings:z,setPendingReplayMessageId:e=>{g=e}}),await M({refs:r,log:a,openSettings:z,refreshModels:m,applyIdentity:S,client:i}),await F({refreshModels:m,refreshModelPill:h,applyIdentity:S,client:i})}function C(t,n,r,i){return()=>{e(async()=>{let{showWcSettings:e}=await import(`./wc-settings-CCJ-33PW.js`);return{showWcSettings:e}},__vite__mapDeps([35,4,36,1,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,37,38,30,39,40,41])).then(({showWcSettings:e})=>e(t)).then(()=>{n(),r(),i()}).catch(e=>t.error(`WC settings dialog failed`,e))}}function w(t,n){return()=>{e(async()=>{let{showThemeSettings:e}=await import(`./wc-settings-CCJ-33PW.js`);return{showThemeSettings:e}},__vite__mapDeps([35,4,36,1,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,37,38,30,39,40,41])).then(({showThemeSettings:e})=>e(t,n?{getTrigger:n.getTrigger,setTrigger:n.setTrigger,persistTrigger:n.persistTrigger}:void 0)).catch(e=>t.error(`Theme settings dialog failed`,e))}}function T(e){let t=e.shortcuts;if(t)return{getTrigger:()=>t.trigger(),setTrigger:e=>t.setTrigger(e),persistTrigger:e.persistKeyboardTrigger}}function E(t){return()=>{e(async()=>{let{showExperimentalSettings:e}=await import(`./wc-settings-CCJ-33PW.js`);return{showExperimentalSettings:e}},__vite__mapDeps([35,4,36,1,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,37,38,30,39,40,41])).then(({showExperimentalSettings:e})=>e(t)).catch(e=>t.error(`Experimental settings dialog failed`,e))}}function D(e,t){e.floatbar.addEventListener(`slicc-followers-click`,()=>{O(t,{copy:!1,initialTab:`status`})})}function O(t,n){let r=f().session?.joinUrl;r&&(n.copy&&u(r).catch(()=>void 0),e(async()=>{let{loadLegacyDialogStyles:e}=await import(`./legacy-styles-B3nS5QUo.js`);return{loadLegacyDialogStyles:e}},__vite__mapDeps([42,4])).then(({loadLegacyDialogStyles:e})=>e()).then(async()=>{let{showSyncEnabledDialog:t}=await e(async()=>{let{showSyncEnabledDialog:e}=await import(`./sync-dialog-CroF8oTi.js`);return{showSyncEnabledDialog:e}},__vite__mapDeps([43,26,44,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,36,37,45,46,47,48,49,50,51,40,39,38,52,53,54,28,27,29,30,31,0,2,32,33,55,56,57,58,59,60,61,62,63]));t({joinUrl:r,copied:n.copy,initialTab:n.initialTab,followers:o(),onReset:a()??null})}).catch(e=>t.error(`sync dialog failed`,e)))}function k(e,t){return e===`tray-enable`?(n({locationHref:window.location.href,storage:window.localStorage,envBaseUrl:null,defaultWorkerBaseUrl:r}).then(e=>{if(!e)return t.error(`tray enable: no worker base URL resolvable`);window.dispatchEvent(new CustomEvent(`slicc:tray-leave`,{detail:{workerBaseUrl:e}}))}),!0):e===`tray-copy`?(O(t,{copy:!0}),!0):e===`tray-stop`&&(window.dispatchEvent(new CustomEvent(`slicc:tray-leave`,{detail:{workerBaseUrl:null}})),!0)}function A(e,t){e.thread?.addEventListener(`slicc-error-open-settings`,t),window.addEventListener(`slicc:open-settings-from-panel`,()=>t())}function j(e){let{refs:t,log:n,openSettings:r,setPendingReplayMessageId:i}=e;t.thread?.addEventListener(`slicc-error-change-model`,e=>{i(e.detail?.messageId??null);let a=t.composerMeta,o=a.models;if(Array.isArray(o)&&o.length===0){r();return}try{a.openMenu?.()}catch(e){n.error(`opening composer model picker failed`,e)}})}async function M(t){let{refs:n,log:r,openSettings:i,refreshModels:a,applyIdentity:o,client:s}=t,{getSelectedProvider:c,getProviderConfig:l,reloginOAuthAccount:u}=await e(async()=>{let{getSelectedProvider:e,getProviderConfig:t,reloginOAuthAccount:n}=await import(`./main-0FLLRgpr.js`).then(e=>e.t);return{getSelectedProvider:e,getProviderConfig:t,reloginOAuthAccount:n}},__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]));n.thread?.addEventListener(`slicc-error-login`,()=>{let e=c(),t=e?l(e):null;if(!t||!t.onOAuthLogin&&!t.onOAuthLoginIntercepted){i();return}u(t,()=>{a(),o(),s.updateModel()}).catch(e=>r.error(`re-login from error card failed`,e))})}async function N(t,n,r,i,a){let{resolveModelById:o,resolveCurrentModel:s,setSelectedModelId:c}=await e(async()=>{let{resolveModelById:e,resolveCurrentModel:t,setSelectedModelId:n}=await import(`./main-0FLLRgpr.js`).then(e=>e.t);return{resolveModelById:e,resolveCurrentModel:t,setSelectedModelId:n}},__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])),l=e=>{let t=e.indexOf(`:`);return t>0?e.slice(t+1):e},u=e=>{try{let n=e?o(l(e)):s();t.composerMeta.toggleAttribute(`no-thinking`,n.reasoning!==!0)}catch{}};u(),t.composerMeta.addEventListener(`model-change`,e=>{let t=e.detail,o=t?.id;o&&t?.source!==`follower`&&(c(o),u(o),P(n,r,i(),o),a?.())})}async function P(e,t,n,r,a=i){let o=p(r);if(!o)return!1;let s=e.selectedScoopJid,c=m(n,s?{id:s}:null);if(!c)return!1;let l=await t.setModel(c.id,o);return l&&a(),l===!0}async function F(t){let{refreshModels:n,refreshModelPill:r,applyIdentity:i,client:a}=t,{getAccounts:o,getProviderConfig:s}=await e(async()=>{let{getAccounts:e,getProviderConfig:t}=await import(`./main-0FLLRgpr.js`).then(e=>e.t);return{getAccounts:e,getProviderConfig: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]));window.addEventListener(`slicc:accounts-changed`,()=>{n(),r(),i(),a.updateModel();for(let e of o()){let t=s(e.providerId)?.refreshModels;t&&t().then(()=>{n(),r(),a.updateModel()}).catch(()=>void 0)}})}export{S as wireWcNav};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/main-DpqAB6Xt.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/modulepreload-polyfill-P2Xu9kJm.js","assets/account-store-CrlYmBhs.js","assets/preload-helper-Czpn1I53.js","assets/claude-model-version-CSATLzrT.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/logger-DDBAeTLF.js","assets/base64-DJRlyqZu.js","assets/proxied-fetch-DyBveeCl.js","assets/fetch-body-1l9I58Vk.js","assets/api-endpoint-DGxXvrur.js","assets/runtime-env-Dlaokqg1.js","assets/float-topology-YtctpJaG.js","assets/secret-topology-DLJBhHOi.js","assets/secrets-bridge-client--VZ3E0yk.js","assets/port-bridge-client-Dn8JtUyP.js","assets/tool-ui-eSQ1g2I1.js","assets/providers-gJZWlxGR.js","assets/panel-rpc-B3MSVImO.js","assets/bedrock-camp-compat-BeCSBUrZ.js","assets/bridge-protocol-06nbmp2X.js","assets/messages-zAgr7E2T.js","assets/tray-runtime-config-B9jN9kUJ.js","assets/telemetry-DJyRzh6X.js","assets/feature-flags-CYCRk6Dq.js","assets/tray-follower-status-BAjnN7Ar.js","assets/clipboard-eqmn97SP.js","assets/tray-join-url-BIvzbiFR.js","assets/wc-detached-F7FTH1YG.js","assets/wc-settings-CfYwwf8H.js","assets/wc-shortcuts-C6WmikKG.js","assets/icons-Df1OSRR-.js","assets/slugify-BYJ6QVAt.js","assets/theme-engine-B5SkYf3E.js","assets/theme-DFKCBK8N.js","assets/discovery-preference-Bw3Fi0jd.js","assets/legacy-styles-B3nS5QUo.js","assets/sync-dialog-BK7PE3wq.js","assets/wc-live-Cw2LKjtz.js","assets/sprinkle-renderer-BlXAU391.js","assets/hid-device-registry-B2R-0rNt.js","assets/serial-port-registry-CCqklAEr.js","assets/usb-operations-BsAiCAWF.js","assets/usb-device-registry-DmUBqrA-.js","assets/shared-mBEktoxE.js","assets/mime-types-D0xZwlMO.js","assets/transcript-export-DP-r8eDz.js","assets/session-jsonl-on-0nPRn.js","assets/types-Dgm4REV3.js","assets/src-BWaKqLvQ.js","assets/provider-budget-LCzMPlKv.js","assets/permissions-surface-registry-CilCRwhh.js","assets/browser-DGwroBSO.js","assets/tray-leader-BmmfZ-wo.js","assets/record-CCQFJXn_.js","assets/wc-shell-rn0tIe5F.js","assets/wc-shell-WkeczD9x.css","assets/wc-unit-context-DhQqWVxs.js"])))=>i.map(i=>d[i]);
2
+ import{t as e}from"./preload-helper-Czpn1I53.js";import{n as t}from"./runtime-env-Dlaokqg1.js";import{l as n,t as r}from"./tray-runtime-config-B9jN9kUJ.js";import{_ as i,c as a,s as o,v as s}from"./wc-live-Cw2LKjtz.js";import{r as c}from"./feature-flags-CYCRk6Dq.js";import{t as l}from"./tray-follower-status-BAjnN7Ar.js";import{n as u}from"./clipboard-eqmn97SP.js";import{t as d}from"./tray-join-url-BIvzbiFR.js";import{r as f}from"./tray-leader-BmmfZ-wo.js";import{o as p}from"./record-CCQFJXn_.js";import{a as m}from"./wc-unit-context-DhQqWVxs.js";function h(e){let t=e.find(e=>e.userAvatar&&e.userName)??e.find(e=>e.userName);return t?.userName?{name:t.userName,avatarUrl:t.userAvatar,provider:t.providerId}:null}function g(e){return e.flatMap(e=>e.models.map(t=>({name:t.name??t.id,provider:e.providerName,id:`${e.providerId}:${t.id}`})))}function _(e,t,n){try{let r=t();e.setAttribute(`model`,r.name??r.id),n&&(e.selectedModelId=n())}catch{}}function v(e,t){let n=[{id:`settings`,label:`Account settings…`,icon:`settings`},{id:`theme`,label:`Theme settings…`,icon:`palette`},...t?[{id:`shortcuts`,label:`Keyboard mode`,icon:`keyboard`}]:[],{id:`export-transcript`,label:`Export transcript`,icon:`download`,disabled:e||void 0}];return c(`experimental-settings`)&&n.push({id:`experimental-settings`,label:`Experimental features…`,icon:`flask-conical`}),n}function y(e,t){return()=>{e.models=g(t()),s()}}function b(e,t,n){return()=>_(e,t,()=>{let e=t();return`${n()}:${e.id}`})}function x(e,t,n){return()=>{let r=h(t()),i=e.avatarMenu.querySelector(`slicc-avatar`),a=e.inputCard.querySelector(`slicc-send-button`);if(r){i?.removeAttribute(`initials`),i?.setAttribute(`name`,r.name),r.avatarUrl&&(i?.setAttribute(`src`,r.avatarUrl),a?.setAttribute(`src`,r.avatarUrl)),e.avatarMenu.user={name:r.name,provider:r.provider};return}i?.removeAttribute(`name`),i?.removeAttribute(`src`),i?.removeAttribute(`initials`),a?.removeAttribute(`src`),e.avatarMenu.user={name:`SLICC`,provider:n?`extension`:`standalone`}}}async function S(n){let{refs:r,client:i,log:a,onExportTranscript:o}=n,{getAllAvailableModels:s,getAccounts:c,getSelectedProvider:u,resolveCurrentModel:p}=await e(async()=>{let{getAllAvailableModels:e,getAccounts:t,getSelectedProvider:n,resolveCurrentModel:r}=await import(`./main-DpqAB6Xt.js`).then(e=>e.t);return{getAllAvailableModels:e,getAccounts:t,getSelectedProvider:n,resolveCurrentModel: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])),m=y(r.composerMeta,s),h=b(r.composerMeta,p,u);m();let g=null;await N(r,i,n.workUnits,n.getUnits,()=>{let e=g;g=null,e!=null&&r.thread?.dispatchEvent(new CustomEvent(`slicc-error-retry`,{detail:{messageId:e},bubbles:!0,composed:!0}))});let _=t(),S=x(r,c,_);S();let O=()=>{if(_)return[];let e=d(f(),l()),t=[{kind:`separator`}];return e.kind===`leader-offer`?t.push({id:`tray-enable`,label:e.label,icon:`radio`}):e.kind===`leader-copy`?(t.push({id:`tray-copy`,label:`Copy tray join URL`,icon:`link`}),t.push({id:`tray-stop`,label:`Stop multi-browser sync`,icon:`square`,danger:!0})):e.kind===`leader-pending`?(t.push({kind:`caption`,label:e.caption}),t.push({id:`tray-stop`,label:`Stop multi-browser sync`,icon:`square`,danger:!0})):(t.push({kind:`caption`,label:e.caption}),t.push({id:`tray-stop`,label:`Disconnect from leader`,icon:`unplug`,danger:!0})),t},P=new URLSearchParams(window.location.search).has(`detached`),I=()=>_&&!P?[{id:`popout`,label:`Pop out into a tab`,icon:`external-link`}]:[],L=!1,R=()=>{r.avatarMenu.items=[...v(L,!!n.shortcuts),...I(),...O()]};R(),r.avatarMenu.addEventListener(`slicc-avatar-menu-toggle`,e=>{e.detail?.open&&R()});let z=C(a,m,S,()=>i.updateModel());n.shortcuts?.setAction(`accounts`,z);let B=w(a,T(n)),V=E(a);D(r,a),r.avatarMenu.addEventListener(`slicc-avatar-action`,t=>{let r=t.detail?.id;if(r&&k(r,a)){R();return}if(r===`popout`){e(async()=>{let{requestDetachedPopout:e}=await import(`./wc-detached-F7FTH1YG.js`);return{requestDetachedPopout:e}},__vite__mapDeps([34,27])).then(({requestDetachedPopout:e})=>e()).catch(e=>a.error(`detached popout request failed`,e));return}r===`shortcuts`&&n.shortcuts?.showHelp(),r===`settings`&&z(),r===`theme`&&B(),r===`experimental-settings`&&V(),r===`export-transcript`&&o&&(L=!0,R(),o().finally(()=>{L=!1,R()}))}),r.composerMeta.addEventListener(`add-ai`,z),A(r,z),j({refs:r,log:a,openSettings:z,setPendingReplayMessageId:e=>{g=e}}),await M({refs:r,log:a,openSettings:z,refreshModels:m,applyIdentity:S,client:i}),await F({refreshModels:m,refreshModelPill:h,applyIdentity:S,client:i})}function C(t,n,r,i){return()=>{e(async()=>{let{showWcSettings:e}=await import(`./wc-settings-CfYwwf8H.js`);return{showWcSettings:e}},__vite__mapDeps([35,4,36,1,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,37,38,30,39,40,41])).then(({showWcSettings:e})=>e(t)).then(()=>{n(),r(),i()}).catch(e=>t.error(`WC settings dialog failed`,e))}}function w(t,n){return()=>{e(async()=>{let{showThemeSettings:e}=await import(`./wc-settings-CfYwwf8H.js`);return{showThemeSettings:e}},__vite__mapDeps([35,4,36,1,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,37,38,30,39,40,41])).then(({showThemeSettings:e})=>e(t,n?{getTrigger:n.getTrigger,setTrigger:n.setTrigger,persistTrigger:n.persistTrigger}:void 0)).catch(e=>t.error(`Theme settings dialog failed`,e))}}function T(e){let t=e.shortcuts;if(t)return{getTrigger:()=>t.trigger(),setTrigger:e=>t.setTrigger(e),persistTrigger:e.persistKeyboardTrigger}}function E(t){return()=>{e(async()=>{let{showExperimentalSettings:e}=await import(`./wc-settings-CfYwwf8H.js`);return{showExperimentalSettings:e}},__vite__mapDeps([35,4,36,1,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,37,38,30,39,40,41])).then(({showExperimentalSettings:e})=>e(t)).catch(e=>t.error(`Experimental settings dialog failed`,e))}}function D(e,t){e.floatbar.addEventListener(`slicc-followers-click`,()=>{O(t,{copy:!1,initialTab:`status`})})}function O(t,n){let r=f().session?.joinUrl;r&&(n.copy&&u(r).catch(()=>void 0),e(async()=>{let{loadLegacyDialogStyles:e}=await import(`./legacy-styles-B3nS5QUo.js`);return{loadLegacyDialogStyles:e}},__vite__mapDeps([42,4])).then(({loadLegacyDialogStyles:e})=>e()).then(async()=>{let{showSyncEnabledDialog:t}=await e(async()=>{let{showSyncEnabledDialog:e}=await import(`./sync-dialog-BK7PE3wq.js`);return{showSyncEnabledDialog:e}},__vite__mapDeps([43,26,44,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,36,37,45,46,47,48,49,50,51,40,39,38,52,53,54,28,27,29,30,31,0,2,32,33,55,56,57,58,59,60,61,62,63]));t({joinUrl:r,copied:n.copy,initialTab:n.initialTab,followers:o(),onReset:a()??null})}).catch(e=>t.error(`sync dialog failed`,e)))}function k(e,t){return e===`tray-enable`?(n({locationHref:window.location.href,storage:window.localStorage,envBaseUrl:null,defaultWorkerBaseUrl:r}).then(e=>{if(!e)return t.error(`tray enable: no worker base URL resolvable`);window.dispatchEvent(new CustomEvent(`slicc:tray-leave`,{detail:{workerBaseUrl:e}}))}),!0):e===`tray-copy`?(O(t,{copy:!0}),!0):e===`tray-stop`&&(window.dispatchEvent(new CustomEvent(`slicc:tray-leave`,{detail:{workerBaseUrl:null}})),!0)}function A(e,t){e.thread?.addEventListener(`slicc-error-open-settings`,t),window.addEventListener(`slicc:open-settings-from-panel`,()=>t())}function j(e){let{refs:t,log:n,openSettings:r,setPendingReplayMessageId:i}=e;t.thread?.addEventListener(`slicc-error-change-model`,e=>{i(e.detail?.messageId??null);let a=t.composerMeta,o=a.models;if(Array.isArray(o)&&o.length===0){r();return}try{a.openMenu?.()}catch(e){n.error(`opening composer model picker failed`,e)}})}async function M(t){let{refs:n,log:r,openSettings:i,refreshModels:a,applyIdentity:o,client:s}=t,{getSelectedProvider:c,getProviderConfig:l,reloginOAuthAccount:u}=await e(async()=>{let{getSelectedProvider:e,getProviderConfig:t,reloginOAuthAccount:n}=await import(`./main-DpqAB6Xt.js`).then(e=>e.t);return{getSelectedProvider:e,getProviderConfig:t,reloginOAuthAccount:n}},__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]));n.thread?.addEventListener(`slicc-error-login`,()=>{let e=c(),t=e?l(e):null;if(!t||!t.onOAuthLogin&&!t.onOAuthLoginIntercepted){i();return}u(t,()=>{a(),o(),s.updateModel()}).catch(e=>r.error(`re-login from error card failed`,e))})}async function N(t,n,r,i,a){let{resolveModelById:o,resolveCurrentModel:s,setSelectedModelId:c}=await e(async()=>{let{resolveModelById:e,resolveCurrentModel:t,setSelectedModelId:n}=await import(`./main-DpqAB6Xt.js`).then(e=>e.t);return{resolveModelById:e,resolveCurrentModel:t,setSelectedModelId:n}},__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])),l=e=>{let t=e.indexOf(`:`);return t>0?e.slice(t+1):e},u=e=>{try{let n=e?o(l(e)):s();t.composerMeta.toggleAttribute(`no-thinking`,n.reasoning!==!0)}catch{}};u(),t.composerMeta.addEventListener(`model-change`,e=>{let t=e.detail,o=t?.id;o&&t?.source!==`follower`&&(c(o),u(o),P(n,r,i(),o),a?.())})}async function P(e,t,n,r,a=i){let o=p(r);if(!o)return!1;let s=e.selectedScoopJid,c=m(n,s?{id:s}:null);if(!c)return!1;let l=await t.setModel(c.id,o);return l&&a(),l===!0}async function F(t){let{refreshModels:n,refreshModelPill:r,applyIdentity:i,client:a}=t,{getAccounts:o,getProviderConfig:s}=await e(async()=>{let{getAccounts:e,getProviderConfig:t}=await import(`./main-DpqAB6Xt.js`).then(e=>e.t);return{getAccounts:e,getProviderConfig: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]));window.addEventListener(`slicc:accounts-changed`,()=>{n(),r(),i(),a.updateModel();for(let e of o()){let t=s(e.providerId)?.refreshModels;t&&t().then(()=>{n(),r(),a.updateModel()}).catch(()=>void 0)}})}export{S as wireWcNav};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/onboarding-orchestrator-yYN6eJua.js","assets/logger-DDBAeTLF.js","assets/slugify-BYJ6QVAt.js","assets/oauth-service-BsW9nY_u.js","assets/preload-helper-Czpn1I53.js","assets/proxied-fetch-DyBveeCl.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/base64-DJRlyqZu.js","assets/fetch-body-1l9I58Vk.js","assets/api-endpoint-DGxXvrur.js","assets/runtime-env-Dlaokqg1.js","assets/panel-rpc-B3MSVImO.js","assets/permissions-surface-registry-CilCRwhh.js","assets/wc-shortcuts-BU_YGmdb.js","assets/account-store-igNbS3Ak.js","assets/claude-model-version-CSATLzrT.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/float-topology-YtctpJaG.js","assets/secret-topology-DLJBhHOi.js","assets/secrets-bridge-client--VZ3E0yk.js","assets/port-bridge-client-Dn8JtUyP.js","assets/tool-ui-eSQ1g2I1.js","assets/providers-70klvlGo.js","assets/bedrock-camp-compat-BeCSBUrZ.js","assets/icons-Df1OSRR-.js","assets/main-0FLLRgpr.js","assets/modulepreload-polyfill-P2Xu9kJm.js","assets/bridge-protocol-06nbmp2X.js","assets/messages-zAgr7E2T.js","assets/tray-runtime-config-B9jN9kUJ.js","assets/telemetry-DJyRzh6X.js","assets/feature-flags-CYCRk6Dq.js","assets/tray-follower-status-BAjnN7Ar.js","assets/clipboard-eqmn97SP.js","assets/tray-join-url-BIvzbiFR.js"])))=>i.map(i=>d[i]);
2
- import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF.js";import{o as n}from"./tray-runtime-config-B9jN9kUJ.js";import{L as r}from"./wc-live-Ts1bLhjx.js";import{n as i,t as a}from"./record-CCQFJXn_.js";var o=t(`welcome-detection`),s=`/shared/.welcomed`,c=`browser-coding-agent`,l=1,u=`sessions`,d=i({folder:a}),f=`[Sprinkle Event: welcome]`;function p(){return new Promise((e,t)=>{let n=indexedDB.open(c,l);n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(u)||e.createObjectStore(u,{keyPath:`id`})},n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error),n.onblocked=()=>{}})}function m(){return p().catch(()=>new Promise((e,t)=>{setTimeout(()=>{p().then(e,t)},120)}))}async function h(){let e=await m();try{return await new Promise((t,n)=>{let r=e.transaction(u,`readonly`).objectStore(u).get(d);r.onsuccess=()=>t(r.result??null),r.onerror=()=>n(r.error)})}finally{e.close()}}async function g(){try{let e=await h();return!e||!Array.isArray(e.messages)?!1:e.messages.some(e=>_(e))}catch(e){return o.warn(`Failed to scan cone chat session for welcome lick`,{error:e instanceof Error?e.message:String(e)}),!1}}function _(e){let t=e.content;return typeof t==`string`?t.includes(f):Array.isArray(t)?t.some(e=>{if(typeof e==`string`)return e.includes(f);if(e&&typeof e==`object`){let t=e.text;if(typeof t==`string`)return t.includes(f)}return!1}):!1}async function v(e){let t=!1;try{t=await e.exists(s)}catch(e){return o.warn(`Failed to read welcomed marker`,{path:s,error:e instanceof Error?e.message:String(e)}),{isFirstRun:!1}}return t||await g()?{isFirstRun:!1}:{isFirstRun:!0}}async function y(e){await e.writeFile(s,`1`)}var b=`"action":"onboarding-complete-with-provider"`;function x(e){let t=e.content;return typeof t==`string`?t.includes(b):Array.isArray(t)?t.some(e=>{if(typeof e==`string`)return e.includes(b);if(e&&typeof e==`object`){let t=e.text;if(typeof t==`string`)return t.includes(b)}return!1}):!1}async function S(){try{let e=await h();return!e||!Array.isArray(e.messages)?!1:e.messages.some(e=>x(e))}catch(e){return o.warn(`Failed to scan cone chat session for final lick`,{error:e instanceof Error?e.message:String(e)}),!1}}function C(e){let{vfs:t,storage:r,firedWelcomeActions:i,persistFiredWelcomeActions:a,getOrchestrator:o,log:s}=e;n(r)||v(t).then(e=>{if(e.isFirstRun){if(i.has(`first-run`)){s.debug(`Suppressing welcome re-fire: first-run already in dedup ledger`);return}i.add(`first-run`),a(i),o().handleFirstRun()}}).catch(e=>s.warn(`Welcome detection failed`,e))}function w(e){for(let t of[`slicc_accounts`,`selected-model`]){let n=localStorage.getItem(t);n!=null&&e.sendRaw({type:`local-storage-set`,key:t,value:n})}}function T(e,t,n,r){let i=n(e).filter(e=>!r(e.id)),a=t.defaultModelId?i.find(e=>e.id===t.defaultModelId):void 0,o=t.defaultModelId?i.find(e=>e.id.toLowerCase().includes(t.defaultModelId.toLowerCase())):void 0,s=a??o??i[0];return s?`${e}:${s.id}`:void 0}function E(e){let t=e.getAvailableProviders().filter(t=>e.providerOffersLlmModels(t)),n=t.map(t=>{let n=e.getProviderConfig(t);return{id:n.id,name:n.name??n.id,description:n.description,requiresApiKey:n.requiresApiKey??!0,requiresBaseUrl:n.requiresBaseUrl??!1,requiresDeployment:!!n.requiresDeployment,requiresApiVersion:!!n.requiresApiVersion,apiKeyPlaceholder:n.apiKeyPlaceholder??void 0,apiKeyEnvVar:n.apiKeyEnvVar??void 0,defaultBaseUrl:n.baseUrlPlaceholder??void 0,baseUrlDescription:n.baseUrlDescription??void 0,deploymentPlaceholder:n.deploymentPlaceholder??void 0,deploymentDescription:n.deploymentDescription??void 0,apiVersionDefault:n.apiVersionDefault??void 0,apiVersionDescription:n.apiVersionDescription??void 0,isOAuth:!!n.isOAuth}}).sort((e,t)=>e.name.localeCompare(t.name,void 0,{sensitivity:`base`})),r={};for(let n of t)try{r[n]=e.getProviderModels(n).filter(t=>!e.isModelHiddenFromPicker(t.id)).map(e=>({id:e.id,name:e.name}))}catch{r[n]=[]}return{providers:n,models:r}}async function D(t){let{OnboardingOrchestrator:n}=await e(async()=>{let{OnboardingOrchestrator:e}=await import(`./onboarding-orchestrator-yYN6eJua.js`);return{OnboardingOrchestrator:e}},__vite__mapDeps([0,1,2])),r=null;return{get:()=>r||(r=new n({fs:t.fs,postSystemMessage:t.postSystemMessage,postDipReference:t.postDipReference,getProviderCatalogue:()=>E(t.providers),saveAccount:(e,n,r,i,a)=>t.providers.addAccount(e,n,r,i,a),setSelectedModel:e=>t.providers.setSelectedModelId(e),resolveModelLabel:(e,n)=>{try{return t.providers.getProviderModels(e).find(e=>e.id===n)?.name??null}catch{return null}},broadcastToDip:e=>t.broadcastToDip(e),fireFinalLick:e=>t.onFireFinalLick(e),onAccountsChanged:t.onAccountsChanged?()=>t.onAccountsChanged?.():void 0,launchOAuth:async(e,n)=>await O(e,n??null,t)}),r),peek:()=>r,buildCatalogue:()=>E(t.providers)}}async function O(t,n,r){try{let i=r.providers.getProviderConfig(t);if(!i.isOAuth||!i.onOAuthLogin&&!i.onOAuthLoginIntercepted)return{ok:!1,message:`Provider does not support OAuth.`};if(i.requiresBaseUrl&&n&&r.providers.addAccount(t,``,n),i.onOAuthLoginIntercepted){let{createInterceptingOAuthLauncherForCurrentRuntime:t}=await e(async()=>{let{createInterceptingOAuthLauncherForCurrentRuntime:e}=await import(`./oauth-service-BsW9nY_u.js`);return{createInterceptingOAuthLauncherForCurrentRuntime:e}},__vite__mapDeps([3,4,5,6,7,8,9,10,11,12])),n=await t();if(!n)return{ok:!1,message:`Intercepted OAuth requires the controlled-browser transport — open SLICC in standalone or extension mode.`};await i.onOAuthLoginIntercepted(n,()=>void 0,{presentDeviceCode:r.deviceCode.createSprinkleDeviceCodePrompter({broadcastToDip:e=>r.broadcastToDip(e)})})}else if(i.onOAuthLogin){let{createOAuthLauncher:t}=await e(async()=>{let{createOAuthLauncher:e}=await import(`./oauth-service-BsW9nY_u.js`);return{createOAuthLauncher:e}},__vite__mapDeps([3,4,5,6,7,8,9,10,11,12])),n=t();await i.onOAuthLogin(n,()=>void 0)}return{ok:!0,model:T(t,i,r.providers.getProviderModels,r.providers.isModelHiddenFromPicker)}}catch(e){return{ok:!1,message:e instanceof Error?e.message:`OAuth login failed.`}}}var k=new Set([`first-run`,`onboarding-complete`,`onboarding-complete-with-provider`,`shortcut-migrate`]),A=`slicc:welcome-flow-fired`;function j(){try{let e=typeof localStorage<`u`?localStorage.getItem(A):null;if(!e)return new Set;let t=JSON.parse(e);return new Set(Array.isArray(t)?t.map(String):[])}catch{return new Set}}function M(e){try{if(typeof localStorage>`u`)return;localStorage.setItem(A,JSON.stringify([...e]))}catch{}}function N(e,t,n,r,i){if(k.has(e)&&t.has(e)){i.debug(`Suppressing duplicate welcome lick (${r})`,{action:e});return}k.has(e)&&(t.add(e),M(t)),n()}var P=new Set([`first-run`,`onboarding-complete`,`connect-ready`,`connect-attempt`,`oauth-attempt`,`device-code-decision`,`shortcut-migrate`,`gelatiere-dismiss`,`gelatiere-install`,`gelatiere-try`]);function F(e){let{firedWelcomeActions:t,getAccounts:n,getProviderConfig:r,resolveDeviceCodeDecision:i,getOnboardingOrchestrator:a,applyPendingMount:o,fastForward:s,onShortcutMigrate:c,contextLabel:l,vfs:u,log:d}=e;return e=>{if(e.type!==`sprinkle`)return!1;let f=e.sprinkleName===`welcome`||e.sprinkleName===`inline`||e.sprinkleName===`suggestions`?e.body?.action:void 0;if(f&&k.has(f)){if(t.has(f))return d.debug(`Suppressing duplicate welcome lick (${l})`,{action:f}),!0;t.add(f),M(t)}if(!f||!P.has(f))return!1;let p=e.body;return W(f,p,{getAccounts:n,getProviderConfig:r,resolveDeviceCodeDecision:i,getOnboardingOrchestrator:a,applyPendingMount:o,fastForward:s,onShortcutMigrate:c,vfs:u,log:d})}}function I(e,t){let n=e[t];return typeof n==`string`&&n?n:null}function L(e,t){let n=t.getOnboardingOrchestrator(),r=e?.data??{};return r.mountWorkspace&&t.applyPendingMount&&t.applyPendingMount().catch(e=>t.log.warn(`Failed to mount workspace from onboarding`,e)),n.handleOnboardingComplete(r).catch(e=>t.log.warn(`OnboardingOrchestrator failed`,e)),!0}function R(e,t){let n=e?.data;return n&&t.getOnboardingOrchestrator().handleConnectAttempt({provider:String(n.provider??``),apiKey:String(n.apiKey??``),baseUrl:I(n,`baseUrl`),deployment:I(n,`deployment`),apiVersion:I(n,`apiVersion`),model:n.model==null?null:String(n.model)}).catch(e=>t.log.warn(`handleConnectAttempt failed`,e)),!0}function z(e,t){let n=e?.data;return n&&t.getOnboardingOrchestrator().handleOAuthAttempt({provider:String(n.provider??``),baseUrl:I(n,`baseUrl`)}).catch(e=>t.log.warn(`handleOAuthAttempt failed`,e)),!0}var B={"device-code-decision":(e,t)=>{let n=e?.data?.decision;return t.resolveDeviceCodeDecision(n===`cancel`?`cancel`:`continue`),!0},"first-run":(e,t)=>(t.getOnboardingOrchestrator().handleFirstRun(),!0),"onboarding-complete":L,"connect-ready":(e,t)=>G(t),"connect-attempt":R,"oauth-attempt":z,"shortcut-migrate":(e,t)=>(t.onShortcutMigrate(),!0),"gelatiere-dismiss":(e,t)=>(U(e,t,`dismiss`),!0),"gelatiere-install":(e,t)=>(U(e,t,`take`),!1),"gelatiere-try":(e,t)=>(U(e,t,`take`),!1)},V;function H(){return V??=e(()=>import(`./wc-shortcuts-BU_YGmdb.js`).then(e=>e.X),__vite__mapDeps([13,6,14,4,15,16,17,18,19,20,21,1,7,5,8,9,10,22,23,24,25,26,27,11,28,29])),V}function U(e,t,n){let r=e?.data?.id;if(typeof r!=`string`||!r||!t.vfs)return;let i=t.vfs;H().then(({dismissGelatiereSuggestion:e,takeGelatiereSuggestion:t})=>n===`take`?t(i,r):e(i,r)).catch(e=>t.log.warn(`Failed to settle gelatiere suggestion`,e))}function W(e,t,n){return B[e]?.(t,n)??!1}function G(e){let t=e.getAccounts();if(t.length===0)return e.getOnboardingOrchestrator().handleConnectReady(),!0;let n=t[0];return e.fastForward.broadcastAlreadyConnected(n.providerId),K(e.vfs,n.providerId,e.fastForward.fire).catch(t=>e.log.warn(`Failed to fire fast-forward final lick`,t)),!0}async function K(t,n,r){let{hasOnboardingFinalLickInHistory:i}=await e(async()=>{let{hasOnboardingFinalLickInHistory:e}=await import(`./welcome-detection-BFFz2Urt.js`);return{hasOnboardingFinalLickInHistory:e}},[]);if(await i())return;let a=t?await q(t):{},{getSelectedModelId:o,getProviderConfig:s,getProviderModels:c}=await e(async()=>{let{getSelectedModelId:e,getProviderConfig:t,getProviderModels:n}=await import(`./main-0FLLRgpr.js`).then(e=>e.t);return{getSelectedModelId:e,getProviderConfig:t,getProviderModels:n}},__vite__mapDeps([30,6,31,14,4,15,16,17,18,19,20,21,1,7,5,8,9,10,22,23,24,25,26,27,11,28,32,33,34,35,36,37,38,39])),l=(()=>{try{return o()||null}catch{return null}})(),u=(()=>{if(!l)return null;try{return c(n).find(e=>e.id===l)?.name??l}catch{return l}})(),d=null;try{d=s(n).name??null}catch{}r({action:`onboarding-complete-with-provider`,data:{profile:a,provider:n,providerName:d,model:l,modelLabel:u,validation:`preexisting`}})}async function q(e){try{let t=await e.readDir(`/home`),n=null;for(let r of t){if(r.type!==`directory`)continue;let t=`/home/${r.name}/.welcome.json`;try{let r=(await e.stat(t)).mtime??0;if(n&&r<=n.mtime)continue;let i=await e.readFile(t,{encoding:`utf-8`}),a=JSON.parse(typeof i==`string`?i:new TextDecoder().decode(i));a&&typeof a==`object`&&(n={profile:a,mtime:r})}catch{}}return n?.profile??{}}catch{return{}}}function J(e){let{writer:t}=e;return{readFile:t.readFile.bind(t),writeFile:t.writeFile.bind(t),readDir:t.readDir.bind(t),stat:t.stat.bind(t),mkdir:t.mkdir.bind(t),exists:async e=>{try{return await t.stat(e),!0}catch{return!1}}}}async function Y(t){let{client:n,getController:i,openVfs:a,log:o}=t,s=await e(()=>import(`./main-0FLLRgpr.js`).then(e=>e.t),__vite__mapDeps([30,6,31,14,4,15,16,17,18,19,20,21,1,7,5,8,9,10,22,23,24,25,26,27,11,28,32,33,34,35,36,37,38,39])),{createSprinkleDeviceCodePrompter:c,resolveDeviceCodeDecision:l}=await e(async()=>{let{createSprinkleDeviceCodePrompter:e,resolveDeviceCodeDecision:t}=await import(`./device-code-bridge-CbHxw098.js`);return{createSprinkleDeviceCodePrompter:e,resolveDeviceCodeDecision:t}},[]),u=J(await a()),d=j(),f=e=>{let t=i();t?t.addAssistantMessage(e):o.warn(`WC onboarding: no controller to post welcome line`)},p=await D({fs:u,log:o,providers:s,deviceCode:{createSprinkleDeviceCodePrompter:c},postSystemMessage:f,postDipReference:f,broadcastToDip:e=>r(e),onFireFinalLick:e=>{w(n),N(String(e.action??``),d,()=>n.sendSprinkleLick(`welcome`,e),`orchestrator-wc`,o)},onAccountsChanged:()=>{try{typeof window<`u`&&window.dispatchEvent(new CustomEvent(`slicc:accounts-changed`))}catch(e){o.warn(`Failed to dispatch slicc:accounts-changed`,e)}}}),m=F({firedWelcomeActions:d,getAccounts:s.getAccounts,getProviderConfig:s.getProviderConfig,resolveDeviceCodeDecision:l,getOnboardingOrchestrator:()=>p.get(),fastForward:{fire:e=>{N(String(e.action??``),d,()=>n.sendSprinkleLick(`welcome`,e),`fast-forward-wc`,o)},broadcastAlreadyConnected:e=>{let t=(()=>{try{return s.getProviderConfig(e)?.name??null}catch{return null}})();r({type:`slicc-already-connected`,provider:e,note:t?`Already connected to ${t}.`:`Already connected.`})}},onShortcutMigrate:()=>{u.writeFile(`/shared/.welcomed`,`1`).catch(e=>o.warn(`Failed to persist welcome completion marker`,e))},contextLabel:`wc`,vfs:u,log:o});return C({vfs:u,storage:window.localStorage,firedWelcomeActions:d,persistFiredWelcomeActions:M,getOrchestrator:()=>p.get(),log:o}),{interceptWelcomeLick:m}}export{y as i,S as n,g as r,v as t,Y as wireWcOnboarding};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/onboarding-orchestrator-D8IzMCxO.js","assets/logger-DDBAeTLF.js","assets/slugify-BYJ6QVAt.js","assets/oauth-service-BsW9nY_u.js","assets/preload-helper-Czpn1I53.js","assets/proxied-fetch-DyBveeCl.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/base64-DJRlyqZu.js","assets/fetch-body-1l9I58Vk.js","assets/api-endpoint-DGxXvrur.js","assets/runtime-env-Dlaokqg1.js","assets/panel-rpc-B3MSVImO.js","assets/permissions-surface-registry-CilCRwhh.js","assets/wc-shortcuts-C6WmikKG.js","assets/account-store-CrlYmBhs.js","assets/claude-model-version-CSATLzrT.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/float-topology-YtctpJaG.js","assets/secret-topology-DLJBhHOi.js","assets/secrets-bridge-client--VZ3E0yk.js","assets/port-bridge-client-Dn8JtUyP.js","assets/tool-ui-eSQ1g2I1.js","assets/providers-gJZWlxGR.js","assets/bedrock-camp-compat-BeCSBUrZ.js","assets/icons-Df1OSRR-.js","assets/main-DpqAB6Xt.js","assets/modulepreload-polyfill-P2Xu9kJm.js","assets/bridge-protocol-06nbmp2X.js","assets/messages-zAgr7E2T.js","assets/tray-runtime-config-B9jN9kUJ.js","assets/telemetry-DJyRzh6X.js","assets/feature-flags-CYCRk6Dq.js","assets/tray-follower-status-BAjnN7Ar.js","assets/clipboard-eqmn97SP.js","assets/tray-join-url-BIvzbiFR.js"])))=>i.map(i=>d[i]);
2
+ import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF.js";import{o as n}from"./tray-runtime-config-B9jN9kUJ.js";import{L as r}from"./wc-live-Cw2LKjtz.js";import{n as i,t as a}from"./record-CCQFJXn_.js";var o=t(`welcome-detection`),s=`/shared/.welcomed`,c=`browser-coding-agent`,l=1,u=`sessions`,d=i({folder:a}),f=`[Sprinkle Event: welcome]`;function p(){return new Promise((e,t)=>{let n=indexedDB.open(c,l);n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(u)||e.createObjectStore(u,{keyPath:`id`})},n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error),n.onblocked=()=>{}})}function m(){return p().catch(()=>new Promise((e,t)=>{setTimeout(()=>{p().then(e,t)},120)}))}async function h(){let e=await m();try{return await new Promise((t,n)=>{let r=e.transaction(u,`readonly`).objectStore(u).get(d);r.onsuccess=()=>t(r.result??null),r.onerror=()=>n(r.error)})}finally{e.close()}}async function g(){try{let e=await h();return!e||!Array.isArray(e.messages)?!1:e.messages.some(e=>_(e))}catch(e){return o.warn(`Failed to scan cone chat session for welcome lick`,{error:e instanceof Error?e.message:String(e)}),!1}}function _(e){let t=e.content;return typeof t==`string`?t.includes(f):Array.isArray(t)?t.some(e=>{if(typeof e==`string`)return e.includes(f);if(e&&typeof e==`object`){let t=e.text;if(typeof t==`string`)return t.includes(f)}return!1}):!1}async function v(e){let t=!1;try{t=await e.exists(s)}catch(e){return o.warn(`Failed to read welcomed marker`,{path:s,error:e instanceof Error?e.message:String(e)}),{isFirstRun:!1}}return t||await g()?{isFirstRun:!1}:{isFirstRun:!0}}async function y(e){await e.writeFile(s,`1`)}var b=`"action":"onboarding-complete-with-provider"`;function x(e){let t=e.content;return typeof t==`string`?t.includes(b):Array.isArray(t)?t.some(e=>{if(typeof e==`string`)return e.includes(b);if(e&&typeof e==`object`){let t=e.text;if(typeof t==`string`)return t.includes(b)}return!1}):!1}async function S(){try{let e=await h();return!e||!Array.isArray(e.messages)?!1:e.messages.some(e=>x(e))}catch(e){return o.warn(`Failed to scan cone chat session for final lick`,{error:e instanceof Error?e.message:String(e)}),!1}}function C(e){let{vfs:t,storage:r,firedWelcomeActions:i,persistFiredWelcomeActions:a,getOrchestrator:o,log:s}=e;n(r)||v(t).then(e=>{if(e.isFirstRun){if(i.has(`first-run`)){s.debug(`Suppressing welcome re-fire: first-run already in dedup ledger`);return}i.add(`first-run`),a(i),o().handleFirstRun()}}).catch(e=>s.warn(`Welcome detection failed`,e))}function w(e){for(let t of[`slicc_accounts`,`selected-model`]){let n=localStorage.getItem(t);n!=null&&e.sendRaw({type:`local-storage-set`,key:t,value:n})}}function T(e,t,n,r){let i=n(e).filter(e=>!r(e.id)),a=t.defaultModelId?i.find(e=>e.id===t.defaultModelId):void 0,o=t.defaultModelId?i.find(e=>e.id.toLowerCase().includes(t.defaultModelId.toLowerCase())):void 0,s=a??o??i[0];return s?`${e}:${s.id}`:void 0}function E(e){let t=e.getAvailableProviders().filter(t=>e.providerOffersLlmModels(t)),n=t.map(t=>{let n=e.getProviderConfig(t);return{id:n.id,name:n.name??n.id,description:n.description,requiresApiKey:n.requiresApiKey??!0,requiresBaseUrl:n.requiresBaseUrl??!1,requiresDeployment:!!n.requiresDeployment,requiresApiVersion:!!n.requiresApiVersion,apiKeyPlaceholder:n.apiKeyPlaceholder??void 0,apiKeyEnvVar:n.apiKeyEnvVar??void 0,defaultBaseUrl:n.baseUrlPlaceholder??void 0,baseUrlDescription:n.baseUrlDescription??void 0,deploymentPlaceholder:n.deploymentPlaceholder??void 0,deploymentDescription:n.deploymentDescription??void 0,apiVersionDefault:n.apiVersionDefault??void 0,apiVersionDescription:n.apiVersionDescription??void 0,isOAuth:!!n.isOAuth}}).sort((e,t)=>e.name.localeCompare(t.name,void 0,{sensitivity:`base`})),r={};for(let n of t)try{r[n]=e.getProviderModels(n).filter(t=>!e.isModelHiddenFromPicker(t.id)).map(e=>({id:e.id,name:e.name}))}catch{r[n]=[]}return{providers:n,models:r}}async function D(t){let{OnboardingOrchestrator:n}=await e(async()=>{let{OnboardingOrchestrator:e}=await import(`./onboarding-orchestrator-D8IzMCxO.js`);return{OnboardingOrchestrator:e}},__vite__mapDeps([0,1,2])),r=null;return{get:()=>r||(r=new n({fs:t.fs,postSystemMessage:t.postSystemMessage,postDipReference:t.postDipReference,getProviderCatalogue:()=>E(t.providers),saveAccount:(e,n,r,i,a)=>t.providers.addAccount(e,n,r,i,a),setSelectedModel:e=>t.providers.setSelectedModelId(e),resolveModelLabel:(e,n)=>{try{return t.providers.getProviderModels(e).find(e=>e.id===n)?.name??null}catch{return null}},broadcastToDip:e=>t.broadcastToDip(e),fireFinalLick:e=>t.onFireFinalLick(e),onAccountsChanged:t.onAccountsChanged?()=>t.onAccountsChanged?.():void 0,launchOAuth:async(e,n)=>await O(e,n??null,t)}),r),peek:()=>r,buildCatalogue:()=>E(t.providers)}}async function O(t,n,r){try{let i=r.providers.getProviderConfig(t);if(!i.isOAuth||!i.onOAuthLogin&&!i.onOAuthLoginIntercepted)return{ok:!1,message:`Provider does not support OAuth.`};if(i.requiresBaseUrl&&n&&r.providers.addAccount(t,``,n),i.onOAuthLoginIntercepted){let{createInterceptingOAuthLauncherForCurrentRuntime:t}=await e(async()=>{let{createInterceptingOAuthLauncherForCurrentRuntime:e}=await import(`./oauth-service-BsW9nY_u.js`);return{createInterceptingOAuthLauncherForCurrentRuntime:e}},__vite__mapDeps([3,4,5,6,7,8,9,10,11,12])),n=await t();if(!n)return{ok:!1,message:`Intercepted OAuth requires the controlled-browser transport — open SLICC in standalone or extension mode.`};await i.onOAuthLoginIntercepted(n,()=>void 0,{presentDeviceCode:r.deviceCode.createSprinkleDeviceCodePrompter({broadcastToDip:e=>r.broadcastToDip(e)})})}else if(i.onOAuthLogin){let{createOAuthLauncher:t}=await e(async()=>{let{createOAuthLauncher:e}=await import(`./oauth-service-BsW9nY_u.js`);return{createOAuthLauncher:e}},__vite__mapDeps([3,4,5,6,7,8,9,10,11,12])),n=t();await i.onOAuthLogin(n,()=>void 0)}return{ok:!0,model:T(t,i,r.providers.getProviderModels,r.providers.isModelHiddenFromPicker)}}catch(e){return{ok:!1,message:e instanceof Error?e.message:`OAuth login failed.`}}}var k=new Set([`first-run`,`onboarding-complete`,`onboarding-complete-with-provider`,`shortcut-migrate`]),A=`slicc:welcome-flow-fired`;function j(){try{let e=typeof localStorage<`u`?localStorage.getItem(A):null;if(!e)return new Set;let t=JSON.parse(e);return new Set(Array.isArray(t)?t.map(String):[])}catch{return new Set}}function M(e){try{if(typeof localStorage>`u`)return;localStorage.setItem(A,JSON.stringify([...e]))}catch{}}function N(e,t,n,r,i){if(k.has(e)&&t.has(e)){i.debug(`Suppressing duplicate welcome lick (${r})`,{action:e});return}k.has(e)&&(t.add(e),M(t)),n()}var P=new Set([`first-run`,`onboarding-complete`,`connect-ready`,`connect-attempt`,`oauth-attempt`,`device-code-decision`,`shortcut-migrate`,`gelatiere-dismiss`,`gelatiere-install`,`gelatiere-try`]);function F(e){let{firedWelcomeActions:t,getAccounts:n,getProviderConfig:r,resolveDeviceCodeDecision:i,getOnboardingOrchestrator:a,applyPendingMount:o,fastForward:s,onShortcutMigrate:c,contextLabel:l,vfs:u,log:d}=e;return e=>{if(e.type!==`sprinkle`)return!1;let f=e.sprinkleName===`welcome`||e.sprinkleName===`inline`||e.sprinkleName===`suggestions`?e.body?.action:void 0;if(f&&k.has(f)){if(t.has(f))return d.debug(`Suppressing duplicate welcome lick (${l})`,{action:f}),!0;t.add(f),M(t)}if(!f||!P.has(f))return!1;let p=e.body;return W(f,p,{getAccounts:n,getProviderConfig:r,resolveDeviceCodeDecision:i,getOnboardingOrchestrator:a,applyPendingMount:o,fastForward:s,onShortcutMigrate:c,vfs:u,log:d})}}function I(e,t){let n=e[t];return typeof n==`string`&&n?n:null}function L(e,t){let n=t.getOnboardingOrchestrator(),r=e?.data??{};return r.mountWorkspace&&t.applyPendingMount&&t.applyPendingMount().catch(e=>t.log.warn(`Failed to mount workspace from onboarding`,e)),n.handleOnboardingComplete(r).catch(e=>t.log.warn(`OnboardingOrchestrator failed`,e)),!0}function R(e,t){let n=e?.data;return n&&t.getOnboardingOrchestrator().handleConnectAttempt({provider:String(n.provider??``),apiKey:String(n.apiKey??``),baseUrl:I(n,`baseUrl`),deployment:I(n,`deployment`),apiVersion:I(n,`apiVersion`),model:n.model==null?null:String(n.model)}).catch(e=>t.log.warn(`handleConnectAttempt failed`,e)),!0}function z(e,t){let n=e?.data;return n&&t.getOnboardingOrchestrator().handleOAuthAttempt({provider:String(n.provider??``),baseUrl:I(n,`baseUrl`)}).catch(e=>t.log.warn(`handleOAuthAttempt failed`,e)),!0}var B={"device-code-decision":(e,t)=>{let n=e?.data?.decision;return t.resolveDeviceCodeDecision(n===`cancel`?`cancel`:`continue`),!0},"first-run":(e,t)=>(t.getOnboardingOrchestrator().handleFirstRun(),!0),"onboarding-complete":L,"connect-ready":(e,t)=>G(t),"connect-attempt":R,"oauth-attempt":z,"shortcut-migrate":(e,t)=>(t.onShortcutMigrate(),!0),"gelatiere-dismiss":(e,t)=>(U(e,t,`dismiss`),!0),"gelatiere-install":(e,t)=>(U(e,t,`take`),!1),"gelatiere-try":(e,t)=>(U(e,t,`take`),!1)},V;function H(){return V??=e(()=>import(`./wc-shortcuts-C6WmikKG.js`).then(e=>e.X),__vite__mapDeps([13,6,14,4,15,16,17,18,19,20,21,1,7,5,8,9,10,22,23,24,25,26,27,11,28,29])),V}function U(e,t,n){let r=e?.data?.id;if(typeof r!=`string`||!r||!t.vfs)return;let i=t.vfs;H().then(({dismissGelatiereSuggestion:e,takeGelatiereSuggestion:t})=>n===`take`?t(i,r):e(i,r)).catch(e=>t.log.warn(`Failed to settle gelatiere suggestion`,e))}function W(e,t,n){return B[e]?.(t,n)??!1}function G(e){let t=e.getAccounts();if(t.length===0)return e.getOnboardingOrchestrator().handleConnectReady(),!0;let n=t[0];return e.fastForward.broadcastAlreadyConnected(n.providerId),K(e.vfs,n.providerId,e.fastForward.fire).catch(t=>e.log.warn(`Failed to fire fast-forward final lick`,t)),!0}async function K(t,n,r){let{hasOnboardingFinalLickInHistory:i}=await e(async()=>{let{hasOnboardingFinalLickInHistory:e}=await import(`./welcome-detection-DsSbZk0X.js`);return{hasOnboardingFinalLickInHistory:e}},[]);if(await i())return;let a=t?await q(t):{},{getSelectedModelId:o,getProviderConfig:s,getProviderModels:c}=await e(async()=>{let{getSelectedModelId:e,getProviderConfig:t,getProviderModels:n}=await import(`./main-DpqAB6Xt.js`).then(e=>e.t);return{getSelectedModelId:e,getProviderConfig:t,getProviderModels:n}},__vite__mapDeps([30,6,31,14,4,15,16,17,18,19,20,21,1,7,5,8,9,10,22,23,24,25,26,27,11,28,32,33,34,35,36,37,38,39])),l=(()=>{try{return o()||null}catch{return null}})(),u=(()=>{if(!l)return null;try{return c(n).find(e=>e.id===l)?.name??l}catch{return l}})(),d=null;try{d=s(n).name??null}catch{}r({action:`onboarding-complete-with-provider`,data:{profile:a,provider:n,providerName:d,model:l,modelLabel:u,validation:`preexisting`}})}async function q(e){try{let t=await e.readDir(`/home`),n=null;for(let r of t){if(r.type!==`directory`)continue;let t=`/home/${r.name}/.welcome.json`;try{let r=(await e.stat(t)).mtime??0;if(n&&r<=n.mtime)continue;let i=await e.readFile(t,{encoding:`utf-8`}),a=JSON.parse(typeof i==`string`?i:new TextDecoder().decode(i));a&&typeof a==`object`&&(n={profile:a,mtime:r})}catch{}}return n?.profile??{}}catch{return{}}}function J(e){let{writer:t}=e;return{readFile:t.readFile.bind(t),writeFile:t.writeFile.bind(t),readDir:t.readDir.bind(t),stat:t.stat.bind(t),mkdir:t.mkdir.bind(t),exists:async e=>{try{return await t.stat(e),!0}catch{return!1}}}}async function Y(t){let{client:n,getController:i,openVfs:a,log:o}=t,s=await e(()=>import(`./main-DpqAB6Xt.js`).then(e=>e.t),__vite__mapDeps([30,6,31,14,4,15,16,17,18,19,20,21,1,7,5,8,9,10,22,23,24,25,26,27,11,28,32,33,34,35,36,37,38,39])),{createSprinkleDeviceCodePrompter:c,resolveDeviceCodeDecision:l}=await e(async()=>{let{createSprinkleDeviceCodePrompter:e,resolveDeviceCodeDecision:t}=await import(`./device-code-bridge-CbHxw098.js`);return{createSprinkleDeviceCodePrompter:e,resolveDeviceCodeDecision:t}},[]),u=J(await a()),d=j(),f=e=>{let t=i();t?t.addAssistantMessage(e):o.warn(`WC onboarding: no controller to post welcome line`)},p=await D({fs:u,log:o,providers:s,deviceCode:{createSprinkleDeviceCodePrompter:c},postSystemMessage:f,postDipReference:f,broadcastToDip:e=>r(e),onFireFinalLick:e=>{w(n),N(String(e.action??``),d,()=>n.sendSprinkleLick(`welcome`,e),`orchestrator-wc`,o)},onAccountsChanged:()=>{try{typeof window<`u`&&window.dispatchEvent(new CustomEvent(`slicc:accounts-changed`))}catch(e){o.warn(`Failed to dispatch slicc:accounts-changed`,e)}}}),m=F({firedWelcomeActions:d,getAccounts:s.getAccounts,getProviderConfig:s.getProviderConfig,resolveDeviceCodeDecision:l,getOnboardingOrchestrator:()=>p.get(),fastForward:{fire:e=>{N(String(e.action??``),d,()=>n.sendSprinkleLick(`welcome`,e),`fast-forward-wc`,o)},broadcastAlreadyConnected:e=>{let t=(()=>{try{return s.getProviderConfig(e)?.name??null}catch{return null}})();r({type:`slicc-already-connected`,provider:e,note:t?`Already connected to ${t}.`:`Already connected.`})}},onShortcutMigrate:()=>{u.writeFile(`/shared/.welcomed`,`1`).catch(e=>o.warn(`Failed to persist welcome completion marker`,e))},contextLabel:`wc`,vfs:u,log:o});return C({vfs:u,storage:window.localStorage,firedWelcomeActions:d,persistFiredWelcomeActions:M,getOrchestrator:()=>p.get(),log:o}),{interceptWelcomeLick:m}}export{y as i,S as n,g as r,v as t,Y as wireWcOnboarding};
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/quick-llm-Bji5F30H.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/account-store-igNbS3Ak.js","assets/preload-helper-Czpn1I53.js","assets/claude-model-version-CSATLzrT.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/logger-DDBAeTLF.js","assets/base64-DJRlyqZu.js","assets/proxied-fetch-DyBveeCl.js","assets/fetch-body-1l9I58Vk.js","assets/api-endpoint-DGxXvrur.js","assets/runtime-env-Dlaokqg1.js","assets/float-topology-YtctpJaG.js","assets/secret-topology-DLJBhHOi.js","assets/secrets-bridge-client--VZ3E0yk.js","assets/port-bridge-client-Dn8JtUyP.js","assets/tool-ui-eSQ1g2I1.js","assets/providers-70klvlGo.js","assets/panel-rpc-B3MSVImO.js","assets/bedrock-camp-compat-BeCSBUrZ.js","assets/llm-session-id-bZQs6gBN.js","assets/icons-Df1OSRR-.js"])))=>i.map(i=>d[i]);
2
- import{t as e}from"./preload-helper-Czpn1I53.js";import{G as t}from"./wc-shortcuts-BU_YGmdb.js";var n=400,r=800,i=`You suggest the user's next prompt in a coding-agent chat. Based on the recent conversation, output ONE concrete follow-up the user might type next. Reply with just the prompt text — no quotes, no preamble, no list. Max 80 characters. If nothing useful comes to mind, reply exactly: What shall we build?`;function a(e,t){return e.length>t?`${e.slice(0,t)}…`:e}function o(e){let i=e.filter(e=>!e.isStreaming&&!e.queued&&e.source!==`lick`),o=[...i].reverse().find(e=>e.role===`assistant`),s=i.filter(e=>e.role===`user`).slice(-3);return!o||s.length===0?null:[...s.map(e=>`[user]: ${a(t(e.content),n)}`),`[assistant]: ${a(o.content,r)}`].join(`
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/quick-llm-BseHVEV7.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/account-store-CrlYmBhs.js","assets/preload-helper-Czpn1I53.js","assets/claude-model-version-CSATLzrT.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/logger-DDBAeTLF.js","assets/base64-DJRlyqZu.js","assets/proxied-fetch-DyBveeCl.js","assets/fetch-body-1l9I58Vk.js","assets/api-endpoint-DGxXvrur.js","assets/runtime-env-Dlaokqg1.js","assets/float-topology-YtctpJaG.js","assets/secret-topology-DLJBhHOi.js","assets/secrets-bridge-client--VZ3E0yk.js","assets/port-bridge-client-Dn8JtUyP.js","assets/tool-ui-eSQ1g2I1.js","assets/providers-gJZWlxGR.js","assets/panel-rpc-B3MSVImO.js","assets/bedrock-camp-compat-BeCSBUrZ.js","assets/llm-session-id-bZQs6gBN.js","assets/icons-Df1OSRR-.js"])))=>i.map(i=>d[i]);
2
+ import{t as e}from"./preload-helper-Czpn1I53.js";import{G as t}from"./wc-shortcuts-C6WmikKG.js";var n=400,r=800,i=`You suggest the user's next prompt in a coding-agent chat. Based on the recent conversation, output ONE concrete follow-up the user might type next. Reply with just the prompt text — no quotes, no preamble, no list. Max 80 characters. If nothing useful comes to mind, reply exactly: What shall we build?`;function a(e,t){return e.length>t?`${e.slice(0,t)}…`:e}function o(e){let i=e.filter(e=>!e.isStreaming&&!e.queued&&e.source!==`lick`),o=[...i].reverse().find(e=>e.role===`assistant`),s=i.filter(e=>e.role===`user`).slice(-3);return!o||s.length===0?null:[...s.map(e=>`[user]: ${a(t(e.content),n)}`),`[assistant]: ${a(o.content,r)}`].join(`
3
3
 
4
- `)}async function s(t){if(t.currentValue.length>0)return;let n=o(t.messages);if(!n){t.setPlaceholder(t.defaultPlaceholder);return}let r=await(t.quickLabelFn??(await e(async()=>{let{quickLabel:e}=await import(`./quick-llm-Bji5F30H.js`).then(e=>e.n);return{quickLabel: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]))).quickLabel)({system:i,prompt:`Recent conversation:\n${n}`,maxTokens:40,signal:t.signal});t.signal?.aborted||t.currentValue.length>0||t.setPlaceholder(r&&r.length>0?r:t.defaultPlaceholder)}function c(e,t,n){t===n?(e.removeAttribute(`suggestion`),e.setAttribute(`placeholder`,t)):e.setAttribute(`suggestion`,t)}function l(e){let t=null;return()=>{e.inputCard.hasAttribute(`disabled`)||(t?.abort(),t=new AbortController,s({messages:e.getMessages(),currentValue:e.inputCard.value??``,setPlaceholder:t=>c(e.inputCard,t,e.defaultPlaceholder),defaultPlaceholder:e.defaultPlaceholder,signal:t.signal}).catch(()=>void 0))}}export{l as createPlaceholderRefresher};
4
+ `)}async function s(t){if(t.currentValue.length>0)return;let n=o(t.messages);if(!n){t.setPlaceholder(t.defaultPlaceholder);return}let r=await(t.quickLabelFn??(await e(async()=>{let{quickLabel:e}=await import(`./quick-llm-BseHVEV7.js`).then(e=>e.n);return{quickLabel: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]))).quickLabel)({system:i,prompt:`Recent conversation:\n${n}`,maxTokens:40,signal:t.signal});t.signal?.aborted||t.currentValue.length>0||t.setPlaceholder(r&&r.length>0?r:t.defaultPlaceholder)}function c(e,t,n){t===n?(e.removeAttribute(`suggestion`),e.setAttribute(`placeholder`,t)):e.setAttribute(`suggestion`,t)}function l(e){let t=null;return()=>{e.inputCard.hasAttribute(`disabled`)||(t?.abort(),t=new AbortController,s({messages:e.getMessages(),currentValue:e.inputCard.value??``,setPlaceholder:t=>c(e.inputCard,t,e.defaultPlaceholder),defaultPlaceholder:e.defaultPlaceholder,signal:t.signal}).catch(()=>void 0))}}export{l as createPlaceholderRefresher};
@@ -1 +1 @@
1
- import{k as e}from"./account-store-igNbS3Ak.js";import{t}from"./logger-DDBAeTLF.js";import{p as n}from"./wc-shortcuts-BU_YGmdb.js";import"./proxied-fetch-DyBveeCl.js";import{a as r,t as i}from"./api-endpoint-DGxXvrur.js";import{n as a}from"./float-topology-YtctpJaG.js";import"./secret-topology-DLJBhHOi.js";import{n as o}from"./secrets-bridge-client--VZ3E0yk.js";import{setSecretRequestSurface as s}from"./secret-request-registry-DrOMKR1H.js";var c={anthropic:`Anthropic`,openai:`OpenAI`,google:`Google`,adobe:`Adobe`,github:`GitHub`,bedrock:`AWS Bedrock`,azure:`Azure`,"azure-openai":`Azure OpenAI`,"azure-ai-foundry":`Azure AI Foundry`,groq:`Groq`,xai:`xAI`,openrouter:`OpenRouter`,local:`your local model`};function l(e){if(e)return c[e]??e}function u(e){return new Promise((t,n)=>{chrome.runtime.sendMessage(e,e=>{let r=chrome.runtime.lastError;if(r){n(Error(r.message??`chrome.runtime.lastError`));return}t(e)})})}var d=1e4,f=0;async function p(e,t,n){let a={method:e,headers:i({"Content-Type":`application/json`}),signal:AbortSignal.timeout(d)};n&&(a.body=JSON.stringify(n));try{let e=await fetch(r(`/api/secrets${t}`),a),n=await e.json().catch(()=>({}));return{ok:e.ok,status:e.status,data:n}}catch(e){return{ok:!1,status:f,data:{error:m(e)}}}}function m(e){let t=e instanceof Error?e.name:``;return t===`TimeoutError`||t===`AbortError`?`no response from the secret store within ${d/1e3}s`:`secret store unreachable: ${e instanceof Error?e.message:String(e)}`}function h(e,t){return`could not read ${e} secrets — ${t??`the bridge gave no reason`}`}function g(e,t){let n=e.entries.find(e=>e.name===t)??null;if(n)return n;if(e.warnings.length>0)throw Error(e.warnings.join(`; `));return null}function _(){return{async list(){let[e,t]=await Promise.all([p(`GET`,``),p(`GET`,`/session`)]),n=[],r=[];if(e.ok)for(let t of e.data)n.push({name:t.name,domains:t.domains,persisted:!0});else r.push(h(`saved`,x(e.data)));if(t.ok)for(let e of t.data)n.push({name:e.name,domains:e.domains,persisted:!1});else r.push(h(`session`,x(t.data)));return{entries:n,warnings:r}},async getInfo(e){return g(await this.list(),e)},async getMasked(e){let{ok:t,data:n}=await p(`GET`,`/masked`);return t?n.find(t=>t.name===e)??null:null},async peek(e){let{ok:t,data:n}=await p(`GET`,`/peek?name=${encodeURIComponent(e)}`);return t?n:null},async setSession(e,t,n){let{ok:r,data:i}=await p(`POST`,`/session`,{name:e,value:t,domains:n});if(!r)throw Error(x(i)??`failed to set session secret`)},async setPersisted(e,t,n){let{ok:r,data:i}=await p(`POST`,``,{name:e,value:t,domains:n});if(!r)throw Error(x(i)??`failed to persist secret`)},async setScope(e,t){let{ok:n,data:r}=await p(`POST`,`/scope`,{name:e,domains:t});if(!n)throw Error(x(r)??`failed to update scope`)},async delete(e){let{ok:t,status:n,data:r}=await p(`DELETE`,`/${encodeURIComponent(e)}`);if(n===404)return{removed:!1};if(!t)throw Error(x(r)??`failed to delete secret`);return{removed:!0,fromSession:r&&typeof r==`object`&&`fromSession`in r?!!r.fromSession:void 0}}}}function v(e){let t=t=>e(t);return{async list(){let[e,n]=await Promise.all([t({type:`secrets.list`}),t({type:`secrets.session.list`})]),r=[],i=[];for(let t of e?.entries??[])r.push({name:t.name,domains:t.domains,persisted:!0});for(let e of n?.entries??[])r.push({name:e.name,domains:e.domains,persisted:!1});return e?.entries||i.push(h(`saved`,e?.error)),n?.entries||i.push(h(`session`,n?.error)),{entries:r,warnings:i}},async getInfo(e){return g(await this.list(),e)},async getMasked(e){return((await t({type:`secrets.list-masked-entries`}))?.entries??[]).find(t=>t.name===e)??null},async peek(e){let n=await t({type:`secrets.peek`,name:e});if(n?.error)throw Error(n.error);return n?.record??null},async setSession(e,n,r){let i=await t({type:`secrets.session.set`,name:e,value:n,domains:r});if(!i?.ok)throw Error(i?.error??`secrets.session.set failed`)},async setPersisted(e,n,r){let i=await t({type:`secrets.set`,name:e,value:n,domains:r});if(!i?.ok)throw Error(i?.error??`secrets.set failed`)},async setScope(e,n){let r=await t({type:`secrets.set-domains`,name:e,domains:n});if(!r?.ok)throw Error(r?.error??`secrets.set-domains failed`)},async delete(e){let n=await t({type:`secrets.delete`,name:e});if(!n?.ok)throw Error(n?.error??`secrets.delete failed`);return{removed:n.removed??!0,fromSession:n.fromSession}}}}function y(){return v(e=>u(e))}function b(){return v(e=>{let{type:t,...n}=e;return o(t,n)})}function x(e){if(e&&typeof e==`object`&&`error`in e){let t=e.error;if(typeof t==`string`)return t}}function S(e){switch(e){case`extension-direct`:return y();case`extension-delegate`:return b();default:return _()}}var C=t(`wc-secret-request`);function w(e){try{return n(e,document),!0}catch(e){return C.error("no trusted layer in this float — refusing to collect a secret on spoofable chrome; use `secret set` or the settings UI instead (see trusted-layer.ts)",{error:e instanceof Error?e.message:String(e)}),!1}}function T(){try{return l(e())}catch{return}}function E(e){return{name:e.name,domains:e.domains,reason:e.reason,requester:e.requester,persist:e.persist,provider:e.provider??T()}}async function D(e={},t={}){let n=t.backend??S(a()),r=t.createDialog?.()??document.createElement(`slicc-secret-dialog`);if(t.mount)t.mount(r);else if(!w(r))return{stored:!1,reason:`unavailable`};let i={};r.submitHandler=async e=>{try{e.persist?await n.setPersisted(e.name,e.value,e.domains):await n.setSession(e.name,e.value,e.domains)}catch(e){return e instanceof Error?e.message:String(e)}return i.entry={name:e.name,domains:e.domains,persisted:e.persist},null};try{let t=await r.open(E(e)),a=i.entry;return!t||!a?{stored:!1,reason:`cancelled`}:{stored:!0,name:a.name,maskedValue:await O(n,a.name),domains:a.domains,persisted:a.persisted}}finally{r.remove()}}async function O(e,t){try{return(await e.getMasked(t))?.maskedValue??null}catch(e){return C.warn(`secret stored, but the mask could not be read back`,{name:t,error:e instanceof Error?e.message:String(e)}),null}}function k(e={}){return s(t=>D(t,e)),()=>s(null)}export{k as installSecretRequestSurface,D as requestSecretFromUser};
1
+ import{k as e}from"./account-store-CrlYmBhs.js";import{t}from"./logger-DDBAeTLF.js";import{p as n}from"./wc-shortcuts-C6WmikKG.js";import"./proxied-fetch-DyBveeCl.js";import{a as r,t as i}from"./api-endpoint-DGxXvrur.js";import{n as a}from"./float-topology-YtctpJaG.js";import"./secret-topology-DLJBhHOi.js";import{n as o}from"./secrets-bridge-client--VZ3E0yk.js";import{setSecretRequestSurface as s}from"./secret-request-registry-DrOMKR1H.js";var c={anthropic:`Anthropic`,openai:`OpenAI`,google:`Google`,adobe:`Adobe`,github:`GitHub`,bedrock:`AWS Bedrock`,azure:`Azure`,"azure-openai":`Azure OpenAI`,"azure-ai-foundry":`Azure AI Foundry`,groq:`Groq`,xai:`xAI`,openrouter:`OpenRouter`,local:`your local model`};function l(e){if(e)return c[e]??e}function u(e){return new Promise((t,n)=>{chrome.runtime.sendMessage(e,e=>{let r=chrome.runtime.lastError;if(r){n(Error(r.message??`chrome.runtime.lastError`));return}t(e)})})}var d=1e4,f=0;async function p(e,t,n){let a={method:e,headers:i({"Content-Type":`application/json`}),signal:AbortSignal.timeout(d)};n&&(a.body=JSON.stringify(n));try{let e=await fetch(r(`/api/secrets${t}`),a),n=await e.json().catch(()=>({}));return{ok:e.ok,status:e.status,data:n}}catch(e){return{ok:!1,status:f,data:{error:m(e)}}}}function m(e){let t=e instanceof Error?e.name:``;return t===`TimeoutError`||t===`AbortError`?`no response from the secret store within ${d/1e3}s`:`secret store unreachable: ${e instanceof Error?e.message:String(e)}`}function h(e,t){return`could not read ${e} secrets — ${t??`the bridge gave no reason`}`}function g(e,t){let n=e.entries.find(e=>e.name===t)??null;if(n)return n;if(e.warnings.length>0)throw Error(e.warnings.join(`; `));return null}function _(){return{async list(){let[e,t]=await Promise.all([p(`GET`,``),p(`GET`,`/session`)]),n=[],r=[];if(e.ok)for(let t of e.data)n.push({name:t.name,domains:t.domains,persisted:!0});else r.push(h(`saved`,x(e.data)));if(t.ok)for(let e of t.data)n.push({name:e.name,domains:e.domains,persisted:!1});else r.push(h(`session`,x(t.data)));return{entries:n,warnings:r}},async getInfo(e){return g(await this.list(),e)},async getMasked(e){let{ok:t,data:n}=await p(`GET`,`/masked`);return t?n.find(t=>t.name===e)??null:null},async peek(e){let{ok:t,data:n}=await p(`GET`,`/peek?name=${encodeURIComponent(e)}`);return t?n:null},async setSession(e,t,n){let{ok:r,data:i}=await p(`POST`,`/session`,{name:e,value:t,domains:n});if(!r)throw Error(x(i)??`failed to set session secret`)},async setPersisted(e,t,n){let{ok:r,data:i}=await p(`POST`,``,{name:e,value:t,domains:n});if(!r)throw Error(x(i)??`failed to persist secret`)},async setScope(e,t){let{ok:n,data:r}=await p(`POST`,`/scope`,{name:e,domains:t});if(!n)throw Error(x(r)??`failed to update scope`)},async delete(e){let{ok:t,status:n,data:r}=await p(`DELETE`,`/${encodeURIComponent(e)}`);if(n===404)return{removed:!1};if(!t)throw Error(x(r)??`failed to delete secret`);return{removed:!0,fromSession:r&&typeof r==`object`&&`fromSession`in r?!!r.fromSession:void 0}}}}function v(e){let t=t=>e(t);return{async list(){let[e,n]=await Promise.all([t({type:`secrets.list`}),t({type:`secrets.session.list`})]),r=[],i=[];for(let t of e?.entries??[])r.push({name:t.name,domains:t.domains,persisted:!0});for(let e of n?.entries??[])r.push({name:e.name,domains:e.domains,persisted:!1});return e?.entries||i.push(h(`saved`,e?.error)),n?.entries||i.push(h(`session`,n?.error)),{entries:r,warnings:i}},async getInfo(e){return g(await this.list(),e)},async getMasked(e){return((await t({type:`secrets.list-masked-entries`}))?.entries??[]).find(t=>t.name===e)??null},async peek(e){let n=await t({type:`secrets.peek`,name:e});if(n?.error)throw Error(n.error);return n?.record??null},async setSession(e,n,r){let i=await t({type:`secrets.session.set`,name:e,value:n,domains:r});if(!i?.ok)throw Error(i?.error??`secrets.session.set failed`)},async setPersisted(e,n,r){let i=await t({type:`secrets.set`,name:e,value:n,domains:r});if(!i?.ok)throw Error(i?.error??`secrets.set failed`)},async setScope(e,n){let r=await t({type:`secrets.set-domains`,name:e,domains:n});if(!r?.ok)throw Error(r?.error??`secrets.set-domains failed`)},async delete(e){let n=await t({type:`secrets.delete`,name:e});if(!n?.ok)throw Error(n?.error??`secrets.delete failed`);return{removed:n.removed??!0,fromSession:n.fromSession}}}}function y(){return v(e=>u(e))}function b(){return v(e=>{let{type:t,...n}=e;return o(t,n)})}function x(e){if(e&&typeof e==`object`&&`error`in e){let t=e.error;if(typeof t==`string`)return t}}function S(e){switch(e){case`extension-direct`:return y();case`extension-delegate`:return b();default:return _()}}var C=t(`wc-secret-request`);function w(e){try{return n(e,document),!0}catch(e){return C.error("no trusted layer in this float — refusing to collect a secret on spoofable chrome; use `secret set` or the settings UI instead (see trusted-layer.ts)",{error:e instanceof Error?e.message:String(e)}),!1}}function T(){try{return l(e())}catch{return}}function E(e){return{name:e.name,domains:e.domains,reason:e.reason,requester:e.requester,persist:e.persist,provider:e.provider??T()}}async function D(e={},t={}){let n=t.backend??S(a()),r=t.createDialog?.()??document.createElement(`slicc-secret-dialog`);if(t.mount)t.mount(r);else if(!w(r))return{stored:!1,reason:`unavailable`};let i={};r.submitHandler=async e=>{try{e.persist?await n.setPersisted(e.name,e.value,e.domains):await n.setSession(e.name,e.value,e.domains)}catch(e){return e instanceof Error?e.message:String(e)}return i.entry={name:e.name,domains:e.domains,persisted:e.persist},null};try{let t=await r.open(E(e)),a=i.entry;return!t||!a?{stored:!1,reason:`cancelled`}:{stored:!0,name:a.name,maskedValue:await O(n,a.name),domains:a.domains,persisted:a.persisted}}finally{r.remove()}}async function O(e,t){try{return(await e.getMasked(t))?.maskedValue??null}catch(e){return C.warn(`secret stored, but the mask could not be read back`,{name:t,error:e instanceof Error?e.message:String(e)}),null}}function k(e={}){return s(t=>D(t,e)),()=>s(null)}export{k as installSecretRequestSurface,D as requestSecretFromUser};
@@ -1,5 +1,5 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/oauth-service-BsW9nY_u.js","assets/preload-helper-Czpn1I53.js","assets/proxied-fetch-DyBveeCl.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/base64-DJRlyqZu.js","assets/fetch-body-1l9I58Vk.js","assets/api-endpoint-DGxXvrur.js","assets/runtime-env-Dlaokqg1.js","assets/panel-rpc-B3MSVImO.js","assets/permissions-surface-registry-CilCRwhh.js","assets/main-0FLLRgpr.js","assets/modulepreload-polyfill-P2Xu9kJm.js","assets/account-store-igNbS3Ak.js","assets/claude-model-version-CSATLzrT.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/logger-DDBAeTLF.js","assets/float-topology-YtctpJaG.js","assets/secret-topology-DLJBhHOi.js","assets/secrets-bridge-client--VZ3E0yk.js","assets/port-bridge-client-Dn8JtUyP.js","assets/tool-ui-eSQ1g2I1.js","assets/providers-70klvlGo.js","assets/bedrock-camp-compat-BeCSBUrZ.js","assets/bridge-protocol-06nbmp2X.js","assets/messages-zAgr7E2T.js","assets/tray-runtime-config-B9jN9kUJ.js","assets/telemetry-DJyRzh6X.js","assets/feature-flags-CYCRk6Dq.js","assets/tray-follower-status-BAjnN7Ar.js","assets/clipboard-eqmn97SP.js","assets/tray-join-url-BIvzbiFR.js"])))=>i.map(i=>d[i]);
2
- import{t as e}from"./preload-helper-Czpn1I53.js";import{F as t,L as n}from"./wc-shortcuts-BU_YGmdb.js";import{t as r}from"./slugify-BYJ6QVAt.js";import{a as i,i as a,r as o}from"./feature-flags-CYCRk6Dq.js";import{a as s,c,f as l,h as u,i as d,l as f,o as p,p as m,s as h,t as g,u as _}from"./theme-engine-B5SkYf3E.js";import{t as v}from"./theme-DFKCBK8N.js";import{n as y,t as b}from"./discovery-preference-Bw3Fi0jd.js";var x={surfaces:[`--s2-gray-25`,`--s2-gray-50`,`--s2-gray-75`,`--s2-gray-100`,`--s2-gray-200`,`--s2-bg-base`,`--s2-bg-layer-1`,`--s2-bg-layer-2`,`--s2-bg-elevated`,`--s2-bg-sunken`],text:[`--s2-gray-800`,`--s2-gray-900`,`--s2-gray-1000`,`--s2-content-default`,`--s2-content-secondary`,`--s2-content-tertiary`,`--s2-content-disabled`],accents:[`--slicc-cone`,`--slicc-scoop-blue`,`--slicc-scoop-purple`,`--slicc-scoop-teal`,`--slicc-accent`,`--s2-accent`,`--s2-accent-hover`,`--s2-accent-down`],semantic:[`--s2-negative`,`--s2-positive`,`--s2-informative`,`--s2-notice`],chrome:[`--s2-border-default`,`--s2-border-subtle`,`--s2-border-focus`,`--s2-shadow-elevated`,`--s2-shadow-container`]},S=`slicc-wc-settings-style`,C=`
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/oauth-service-BsW9nY_u.js","assets/preload-helper-Czpn1I53.js","assets/proxied-fetch-DyBveeCl.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/base64-DJRlyqZu.js","assets/fetch-body-1l9I58Vk.js","assets/api-endpoint-DGxXvrur.js","assets/runtime-env-Dlaokqg1.js","assets/panel-rpc-B3MSVImO.js","assets/permissions-surface-registry-CilCRwhh.js","assets/main-DpqAB6Xt.js","assets/modulepreload-polyfill-P2Xu9kJm.js","assets/account-store-CrlYmBhs.js","assets/claude-model-version-CSATLzrT.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/logger-DDBAeTLF.js","assets/float-topology-YtctpJaG.js","assets/secret-topology-DLJBhHOi.js","assets/secrets-bridge-client--VZ3E0yk.js","assets/port-bridge-client-Dn8JtUyP.js","assets/tool-ui-eSQ1g2I1.js","assets/providers-gJZWlxGR.js","assets/bedrock-camp-compat-BeCSBUrZ.js","assets/bridge-protocol-06nbmp2X.js","assets/messages-zAgr7E2T.js","assets/tray-runtime-config-B9jN9kUJ.js","assets/telemetry-DJyRzh6X.js","assets/feature-flags-CYCRk6Dq.js","assets/tray-follower-status-BAjnN7Ar.js","assets/clipboard-eqmn97SP.js","assets/tray-join-url-BIvzbiFR.js"])))=>i.map(i=>d[i]);
2
+ import{t as e}from"./preload-helper-Czpn1I53.js";import{F as t,L as n}from"./wc-shortcuts-C6WmikKG.js";import{t as r}from"./slugify-BYJ6QVAt.js";import{a as i,i as a,r as o}from"./feature-flags-CYCRk6Dq.js";import{a as s,c,f as l,h as u,i as d,l as f,o as p,p as m,s as h,t as g,u as _}from"./theme-engine-B5SkYf3E.js";import{t as v}from"./theme-DFKCBK8N.js";import{n as y,t as b}from"./discovery-preference-Bw3Fi0jd.js";var x={surfaces:[`--s2-gray-25`,`--s2-gray-50`,`--s2-gray-75`,`--s2-gray-100`,`--s2-gray-200`,`--s2-bg-base`,`--s2-bg-layer-1`,`--s2-bg-layer-2`,`--s2-bg-elevated`,`--s2-bg-sunken`],text:[`--s2-gray-800`,`--s2-gray-900`,`--s2-gray-1000`,`--s2-content-default`,`--s2-content-secondary`,`--s2-content-tertiary`,`--s2-content-disabled`],accents:[`--slicc-cone`,`--slicc-scoop-blue`,`--slicc-scoop-purple`,`--slicc-scoop-teal`,`--slicc-accent`,`--s2-accent`,`--s2-accent-hover`,`--s2-accent-down`],semantic:[`--s2-negative`,`--s2-positive`,`--s2-informative`,`--s2-notice`],chrome:[`--s2-border-default`,`--s2-border-subtle`,`--s2-border-focus`,`--s2-shadow-elevated`,`--s2-shadow-container`]},S=`slicc-wc-settings-style`,C=`
3
3
  /* Width is owned by the dialog card (via ::part) — a min-width on the body
4
4
  used to overflow the card's content box and clip the row borders. */
5
5
  slicc-dialog.wcset-dialog::part(dialog){width:min(520px,92vw);}
@@ -56,4 +56,4 @@ slicc-dialog.wcset-dialog::part(dialog){width:min(520px,92vw);}
56
56
  .wcset__radio-row__body{flex:1;min-width:0;}
57
57
  .wcset__radio-row__title{font-size:12.5px;font-weight:600;}
58
58
  .wcset__radio-row__detail{font-size:11px;color:var(--txt-3);margin-top:2px;line-height:1.4;}
59
- `;function w(e){if(e.getElementById(S))return;let t=e.createElement(`style`);t.id=S,t.textContent=C,e.head.appendChild(t)}function T(e,t){let n=document.createElement(`div`);return n.className=e,t!==void 0&&(n.textContent=t),n}function E(e,t,n){let r=document.createElement(`button`);return r.type=`button`,r.className=e,r.textContent=t,r.addEventListener(`click`,n),r}function D(e){return e?e.length<=8?`••••`:`${e.slice(0,4)}…${e.slice(-4)}`:``}function O(e){let t;return t=e.loggedOut?e.userName?`Logged out — was ${e.userName}`:`Logged out`:e.userName?e.userName:e.accessToken?`Logged in`:D(e.apiKey),e.baseUrl?`${t} • ${e.baseUrl}`:t}async function k(t,n,r){let{ps:i,log:a,setStatus:o,renderList:s}=r,c=i.getProviderConfig(t),l=i.getAccounts().some(e=>e.providerId===t);if(c.requiresBaseUrl){if(!n.trim()&&!i.getBaseUrlForProvider(t)){o(`Base URL is required.`,!0);return}n.trim()&&i.addAccount(t,``,n.trim())}o(`Opening login window…`);let u=()=>{o(``),s()};try{if(c.onOAuthLoginIntercepted){let{createInterceptingOAuthLauncherForCurrentRuntime:t}=await e(async()=>{let{createInterceptingOAuthLauncherForCurrentRuntime:e}=await import(`./oauth-service-BsW9nY_u.js`);return{createInterceptingOAuthLauncherForCurrentRuntime:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9])),n=await t();if(!n)throw Error(`No controlled-browser CDP transport available — open SLICC in standalone mode or the Chrome extension.`);await c.onOAuthLoginIntercepted(n,u)}else if(c.onOAuthLogin){let{createOAuthLauncher:t}=await e(async()=>{let{createOAuthLauncher:e}=await import(`./oauth-service-BsW9nY_u.js`);return{createOAuthLauncher:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9]));await c.onOAuthLogin(t(),u)}else throw Error(`${c.name} does not support interactive login.`)}catch(e){l||await i.removeAccount(t).catch(()=>void 0),a.error(`WC settings OAuth login failed`,{providerId:t,err:e}),o(`Login failed: ${e instanceof Error?e.message:String(e)}`,!0)}}function A(e,t,n){let{ps:r,log:i,setStatus:a,renderList:o}=n,s=T(`wcset__row`),c=T(`wcset__info`);if(c.append(T(`wcset__name`,t.name),T(`wcset__detail`,O(e))),s.append(c),t.isOAuth){let t=e.loggedOut===!0;s.append(E(`wcset__btn`,t?`Log in`:`Log out`,()=>{t?k(e.providerId,``,n):r.logoutOAuthAccount(e.providerId).then(o).catch(t=>{i.error(`WC settings logout failed`,{providerId:e.providerId,err:t}),a(`Logout failed.`,!0)})}))}return s.append(E(`wcset__btn wcset__btn--danger`,`Remove`,()=>{r.removeAccount(e.providerId).then(o).catch(t=>{i.error(`WC settings remove failed`,{providerId:e.providerId,err:t}),a(`Remove failed.`,!0)})})),s}function j(e){let{ps:t,setStatus:n}=e,r=T(`wcset__add`);r.append(T(`wcset__label`,`Add account`));let i=document.createElement(`select`);i.className=`wcset__select`;let a=document.createElement(`option`);a.value=``,a.textContent=`Choose a provider…`,i.append(a);let o=new Set(t.getAccounts().map(e=>e.providerId)),s=t.getAvailableProviders().filter(e=>!o.has(e)&&t.providerOffersLlmModels(e)).sort((e,n)=>t.getProviderConfig(e).name.localeCompare(t.getProviderConfig(n).name));for(let e of s){let n=document.createElement(`option`);n.value=e,n.textContent=t.getProviderConfig(e).name,i.append(n)}r.append(i);let c=T(`wcset__controls`);return c.style.cssText=`display:flex;flex-direction:column;gap:8px;`,r.append(c),i.addEventListener(`change`,()=>{c.replaceChildren(),n(``);let r=i.value;if(!r)return;let a=t.getProviderConfig(r),o=document.createElement(`input`);if(o.className=`wcset__input`,o.placeholder=a.baseUrlPlaceholder??`Base URL`,o.value=t.getBaseUrlForProvider(r)??``,a.requiresBaseUrl&&c.append(o),a.isOAuth){c.append(E(`wcset__btn wcset__btn--primary`,`Login with ${a.name}`,()=>{k(r,o.value,e)}));return}let s=document.createElement(`input`);s.className=`wcset__input`,s.placeholder=a.deploymentPlaceholder??`Model IDs (comma-separated)`,s.value=t.getDeploymentForProvider(r)??``,a.requiresDeployment&&c.append(s);let l=document.createElement(`input`);l.className=`wcset__input`,l.type=`password`,l.placeholder=a.apiKeyPlaceholder??`API key`,l.setAttribute(`data-testid`,`wcset-api-key`),(a.requiresApiKey||a.optionalApiKey)&&c.append(l),c.append(E(`wcset__btn wcset__btn--primary`,`Save`,()=>{let i=l.value.trim();if(a.requiresApiKey&&!i){n(`An API key is required.`,!0),l.focus();return}if(a.requiresBaseUrl&&!o.value.trim()){n(`Base URL is required.`,!0),o.focus();return}if(a.requiresDeployment&&!s.value.trim()){n(`Model IDs are required.`,!0),s.focus();return}t.addAccount(r,i,o.value.trim()||void 0,s.value.trim()||void 0),l.value=``,n(`${a.name} connected.`),e.renderList()}))}),r}function M(){let e=T(`wcset__add`);e.append(T(`wcset__section-label`,`Chat`));let r=T(`wcset__toggle-row`),i=document.createElement(`label`);i.textContent=`Show timestamps`;let a=document.createElement(`input`);return a.type=`checkbox`,a.checked=t(),a.addEventListener(`change`,()=>n(a.checked)),r.append(i,a),e.append(r),e}function N(){let e=T(`wcset__add`);e.append(T(`wcset__section-label`,`Browsing`));let t=T(`wcset__toggle-row`),n=document.createElement(`label`);n.textContent=`Autodiscover agentic resources`;let r=document.createElement(`input`);return r.type=`checkbox`,r.checked=b(),r.addEventListener(`change`,()=>y(r.checked)),t.append(n,r),e.append(t),e}function P(e,t,n){let r=T(`wcset__add`);r.append(T(`wcset__section-label`,`Keyboard mode`));let i=T(`wcset__radio-list`),a=[{value:`auto`,title:`Auto`,detail:`On whenever you are not typing — click outside the composer to command.`},{value:`esc`,title:`Esc`,detail:`Press Esc to enter. Blurring the composer does not turn it on.`},{value:null,title:`Off`,detail:`Keyboard mode disabled. Shortcuts stay unavailable until you pick Auto or Esc.`}],o=e.getTrigger();for(let r of a){let a=document.createElement(`label`);a.className=`wcset__radio-row`;let s=document.createElement(`input`);s.type=`radio`,s.name=`wcset-keyboard-trigger`,s.value=r.value===null?`off`:r.value,s.checked=o===r.value,s.addEventListener(`change`,()=>{if(!s.checked)return;let i=r.value;e.setTrigger(i),t(`Saved.`),e.persistTrigger?.(i).catch(e=>{n.error(`Could not persist keyboard trigger`,e),t(`Applied for this session; could not write /etc/slicc/keys.json.`,!0)})});let c=T(`wcset__radio-row__body`);c.append(T(`wcset__radio-row__title`,r.title),T(`wcset__radio-row__detail`,r.detail)),a.append(s,c),i.append(a)}return r.append(i),r}function F(e){let t=T(`wcset__list`),n=a().filter(e=>e.userToggleable);n.length===0&&t.append(T(`wcset__empty`,`No experimental features are available right now.`));for(let r of n){let n=T(`wcset__toggle-row`),a=T(`wcset__info`),s=document.createElement(`label`),c=document.createElement(`input`);c.id=`wcset-feature-${r.id}`,c.type=`checkbox`,c.checked=o(r.id),s.htmlFor=c.id,s.textContent=r.label,a.append(s,T(`wcset__detail`,r.description)),c.addEventListener(`change`,()=>{try{i(r.id,c.checked?`on`:`off`),c.checked=o(r.id),e.setStatus(`Saved.`)}catch(t){e.log.error(`Experimental settings update failed`,{flagId:r.id,err:t}),e.setStatus(`Unable to save this feature setting.`,!0)}}),n.append(a,c),t.append(n)}return t}function I(e){let t=T(`wcset__appearance`);t.append(T(`wcset__section-label`,`Appearance`));let n=c(),r=T(`wcset__preset-grid`),i=document.createElement(`div`);i.className=`wcset__preset-swatch${n?``:` wcset__preset-swatch--active`}`,i.innerHTML=[`#161618`,`#1f1f22`,`#f59e0b`].map(e=>`<div class="wcset__preset-swatch__stripe" style="background:${e}"></div>`).join(``)+`<div class="wcset__preset-name">Default</div>`,i.addEventListener(`click`,()=>{d(),v(),g()}),r.append(i);for(let e of u){let t=document.createElement(`div`);t.className=`wcset__preset-swatch${n===e.id?` wcset__preset-swatch--active`:``}`,t.innerHTML=`<div class="wcset__preset-swatch__stripe" style="background:${e.tokens[`--s2-gray-25`]||`#1a1a1a`}"></div><div class="wcset__preset-swatch__stripe" style="background:${e.tokens[`--s2-gray-100`]||`#2c2c2c`}"></div><div class="wcset__preset-swatch__stripe" style="background:${e.tokens[`--s2-accent`]||`#3562ff`}"></div><div class="wcset__preset-name">${e.name}</div>`,t.addEventListener(`click`,()=>{m(e.id),v(),g()}),r.append(t)}t.append(r);let a=f().filter(e=>e.id!==`__preview`);if(a.length>0){let e=T(`wcset__custom-themes`);e.append(T(`wcset__section-label`,`My Themes`));for(let t of a){let r=T(`wcset__custom-row`),i=T(`wcset__custom-row__name`,t.name);n===t.id&&(i.style.fontWeight=`700`),r.append(i),r.append(E(`wcset__btn`,`Use`,()=>{m(t.id),v(),g()})),r.append(E(`wcset__btn`,`Edit`,()=>{y(t)})),r.append(E(`wcset__btn`,`Export`,()=>{let e=new Blob([h(t)],{type:`application/json`}),n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=`${t.name.toLowerCase().replace(/\s+/g,`-`)}.slicc-theme.json`,r.click(),URL.revokeObjectURL(n)})),r.append(E(`wcset__btn wcset__btn--danger`,`×`,()=>{s(t.id),v(),g()})),e.append(r)}t.append(e)}let o=T(``);o.style.cssText=`display:flex;gap:8px;`,o.append(E(`wcset__btn wcset__btn--primary`,`+ Create Custom Theme`,()=>{y(null)})),o.append(E(`wcset__btn`,`Import Theme…`,()=>{let t=document.createElement(`input`);t.type=`file`,t.accept=`.json`,t.addEventListener(`change`,()=>{let n=t.files?.[0];n&&n.text().then(t=>{try{let n=_(t);l(n),e.setStatus(`Imported "${n.name}".`),g()}catch(t){e.setStatus(`Import failed: ${t instanceof Error?t.message:String(t)}`,!0)}})}),t.click()})),t.append(o);let p=T(``);t.append(p);function g(){let n=t.parentElement;if(!n)return;let r=I(e);n.replaceChild(r,t)}function y(t){p.replaceChildren(U(t,e,g))}return t}function L(e,t,n,r){let i=[],a=p(e,t);for(let[e,t]of Object.entries(x)){i.push(T(`wcset__section-label`,e));let o=T(`wcset__advanced-grid`);for(let e of t){let t=T(`wcset__advanced-token`),i=document.createElement(`input`);i.type=`color`;let s=n[e]||a[e]||`#000000`;i.value=s.startsWith(`#`)?s:`#000000`,i.addEventListener(`input`,()=>{n[e]=i.value,r()});let c=document.createElement(`span`);c.textContent=e.replace(`--s2-`,``).replace(`--slicc-`,``),t.append(i,c),o.append(t)}i.push(o)}return i}function R(e,t,n,r,i){let a=[];for(let[r,o]of[[`background`,`Background`],[`text`,`Text`],[`accent`,`Links & buttons`]]){let s=T(`wcset__builder-row`),c=document.createElement(`label`);c.textContent=o;let l=document.createElement(`input`);l.type=`color`,l.value=e[r],l.addEventListener(`input`,()=>{e[r]=l.value,i()});let u=document.createElement(`input`);if(u.type=`range`,u.min=`0`,u.max=`100`,u.value=String(Math.round((t[r]??1)*100)),u.style.cssText=`width:60px;margin-left:6px;`,u.title=`Opacity`,u.addEventListener(`input`,()=>{t[r]=Number(u.value)/100,i()}),s.append(c,l,u),r===`background`){let e=document.createElement(`input`);e.type=`checkbox`,e.checked=n.disabled,e.style.cssText=`width:auto;margin:0 0 0 8px;`,e.title=`Hide animated background`,e.addEventListener(`change`,()=>{n.disabled=e.checked,i()});let t=document.createElement(`span`);t.textContent=`Static`,t.style.cssText=`font-size:10px;color:var(--txt-3);`,s.append(e,t)}a.push(s)}a.push(T(`wcset__section-label`,`Components`));for(let[e,t]of[[`bubbleBg`,`User bubble bg`],[`bubbleText`,`User bubble text`],[`navBg`,`Nav bar`],[`composerBg`,`Input box`]]){let n=T(`wcset__builder-row`),o=document.createElement(`label`);o.textContent=t;let s=document.createElement(`input`);s.type=`color`,s.value=r[e]||`#000000`,s.addEventListener(`input`,()=>{r[e]=s.value,i()}),n.append(o,s),a.push(n)}return a}function z(e,t){let n=T(`wcset__builder-row`),r=document.createElement(`label`);r.textContent=`Base`;let i=T(`wcset__base-toggle`);for(let n of[`dark`,`light`]){let r=document.createElement(`button`);r.textContent=n.charAt(0).toUpperCase()+n.slice(1),r.className=e===n?`active`:``,r.addEventListener(`click`,()=>t(n)),i.append(r)}return n.append(r,i),n}function B(e,t){let n=T(``);return n.style.cssText=`display:flex;gap:8px;margin-top:8px;`,n.append(E(`wcset__btn wcset__btn--primary`,`Save`,e)),n.append(E(`wcset__btn`,`Cancel`,t)),n}function V(e){return{userBubble:{background:e.bubbleBg,text:e.bubbleText},nav:{background:e.navBg},composer:{background:e.composerBg}}}function H(e,t){let n=t===`dark`;return{bubbleBg:e?.components?.userBubble?.background||(n?`#f5f5f2`:`#0a0a0a`),bubbleText:e?.components?.userBubble?.text||(n?`#0a0a0a`:`#ffffff`),navBg:e?.components?.nav?.background||(n?`#161618`:`#ffffff`),composerBg:e?.components?.composer?.background||(n?`#161618`:`#ffffff`)}}function U(e,t,n){let i=T(`wcset__builder`),a=e?.base??`dark`,o=e?.disableShader??!1,c=!1,u={background:e?.tokens[`--s2-gray-25`]||(a===`dark`?`#1a1a1a`:`#ffffff`),surface:``,text:e?.tokens[`--s2-content-default`]||e?.tokens[`--s2-gray-900`]||(a===`dark`?`#e8e8e8`:`#131313`),accent:e?.tokens[`--s2-accent`]||`#3562ff`,border:``,success:`#2d9d78`,error:`#e34850`},f={background:1,text:1,accent:1},h=H(e,a),_={},y=document.createElement(`input`);y.className=`wcset__input`,y.placeholder=`Theme name`,y.value=e?.name??``;function b(){return r(y.value)||`custom-${Date.now()}`}function x(){let e=a===`dark`;u.surface=g(u.background,e?.1:-.08),u.border=g(u.background,e?.15:-.12),u.success=`#2d9d78`,u.error=`#e34850`}function S(){x();let e={...p(u,a),..._};for(let[t,n]of Object.entries(f))if(n<1&&u[t]){let r=u[t],i=Math.round(n*255).toString(16).padStart(2,`0`);for(let n of{background:[`--canvas`,`--s2-gray-25`,`--s2-bg-base`,`--shaderbg`],text:[`--ink`,`--s2-content-default`,`--s2-gray-900`],accent:[`--ctx`,`--waffle`,`--s2-accent`]}[t]||[])e[n]&&(e[n]=`${r}${i}`)}let t={id:`__preview`,name:`Preview`,base:a,tokens:e,disableShader:o,components:V(h)};l(t),m(`__preview`),v()}function C(){i.replaceChildren();let r=T(`wcset__builder-row`),g=document.createElement(`label`);g.textContent=`Name`,r.append(g,y),i.append(r),i.append(z(a,e=>{a=e,C(),S()}));let w={disabled:o};for(let e of R(u,f,w,h,()=>{o=w.disabled,S()}))i.append(e);let E=document.createElement(`button`);if(E.className=`wcset__advanced-toggle`,E.textContent=c?`Hide advanced`:`Show advanced`,E.addEventListener(`click`,()=>{c=!c,C()}),i.append(E),c)for(let e of L(u,a,_,S))i.append(e);i.append(B(()=>{let r=y.value.trim();if(!r){t.setStatus(`Name is required.`,!0);return}x();let i={...p(u,a),..._},c=e?.id??b(),d={id:c,name:r,base:a,tokens:i,disableShader:o,components:V(h)};s(`__preview`),l(d),m(c),v(),t.setStatus(`Saved "${r}".`),n()},()=>{s(`__preview`),e?m(e.id):d(),v(),n()}))}return C(),S(),i}async function W(t){let n=await e(()=>import(`./main-0FLLRgpr.js`).then(e=>e.t),__vite__mapDeps([10,3,11,12,1,13,14,15,16,17,18,19,20,4,2,5,6,7,21,22,23,24,25,26,8,27,28,29,30,31,32,33,34,35]));w(document);let r=JSON.stringify(n.getAccounts());return new Promise(e=>{let i=document.createElement(`slicc-dialog`);i.classList.add(`wcset-dialog`),i.setAttribute(`heading`,`Accounts`);let a=T(`wcset`),o=T(`wcset__list`),s=T(`wcset__status`),c=(e,t=!1)=>{s.textContent=e,s.toggleAttribute(`data-error`,t)},l=r,u=()=>{let e=JSON.stringify(n.getAccounts());e!==l&&(l=e,window.dispatchEvent(new CustomEvent(`slicc:accounts-changed`)))},d=T(``),f={ps:n,log:t,setStatus:c,renderList:()=>{u(),o.replaceChildren();let e=n.getAccounts();if(e.length===0)o.append(T(`wcset__empty`,`No accounts configured.`));else for(let t of e)o.append(A(t,n.getProviderConfig(t.providerId),f));d.replaceChildren(j(f))}};f.renderList(),a.append(o,d,s),i.append(a);let p=E(`wcset__btn wcset__btn--primary`,`Done`,()=>{i.hide?.()});p.setAttribute(`slot`,`footer`),i.append(p),i.addEventListener(`slicc-dialog-close`,()=>{i.remove(),e(JSON.stringify(n.getAccounts())!==r)}),document.body.append(i),i.show?.()})}async function G(e,t){return w(document),s(`__preview`),new Promise(n=>{let r=document.createElement(`slicc-dialog`);r.classList.add(`wcset-dialog`),r.setAttribute(`heading`,`Theme`);let i=T(`wcset`),a=T(`wcset__status`),o=(e,t=!1)=>{a.textContent=e,a.toggleAttribute(`data-error`,t)},l=I({ps:null,log:e,setStatus:o,renderList:()=>{}}),u=M(),f=N();i.append(l,u,f),t&&i.append(P(t,o,e)),i.append(a),r.append(i);let p=E(`wcset__btn wcset__btn--primary`,`Done`,()=>{r.hide?.()});p.setAttribute(`slot`,`footer`),r.append(p);let h=c();r.addEventListener(`slicc-dialog-close`,()=>{c()===`__preview`&&(s(`__preview`),h&&h!==`__preview`?m(h):d(),v()),r.remove(),n()}),document.body.append(r),r.show?.()})}async function K(e){if(o(`experimental-settings`))return w(document),new Promise(t=>{let n=document.createElement(`slicc-dialog`);n.classList.add(`wcset-dialog`),n.setAttribute(`heading`,`Experimental`);let r=T(`wcset`),i=T(`wcset__status`);r.append(F({log:e,setStatus:(e,t=!1)=>{i.textContent=e,i.toggleAttribute(`data-error`,t)}}),i),n.append(r);let a=E(`wcset__btn wcset__btn--primary`,`Done`,()=>{n.hide?.()});a.setAttribute(`slot`,`footer`),n.append(a),n.addEventListener(`slicc-dialog-close`,()=>{n.remove(),t()}),document.body.append(n),n.show?.()})}export{K as showExperimentalSettings,G as showThemeSettings,W as showWcSettings};
59
+ `;function w(e){if(e.getElementById(S))return;let t=e.createElement(`style`);t.id=S,t.textContent=C,e.head.appendChild(t)}function T(e,t){let n=document.createElement(`div`);return n.className=e,t!==void 0&&(n.textContent=t),n}function E(e,t,n){let r=document.createElement(`button`);return r.type=`button`,r.className=e,r.textContent=t,r.addEventListener(`click`,n),r}function D(e){return e?e.length<=8?`••••`:`${e.slice(0,4)}…${e.slice(-4)}`:``}function O(e){let t;return t=e.loggedOut?e.userName?`Logged out — was ${e.userName}`:`Logged out`:e.userName?e.userName:e.accessToken?`Logged in`:D(e.apiKey),e.baseUrl?`${t} • ${e.baseUrl}`:t}async function k(t,n,r){let{ps:i,log:a,setStatus:o,renderList:s}=r,c=i.getProviderConfig(t),l=i.getAccounts().some(e=>e.providerId===t);if(c.requiresBaseUrl){if(!n.trim()&&!i.getBaseUrlForProvider(t)){o(`Base URL is required.`,!0);return}n.trim()&&i.addAccount(t,``,n.trim())}o(`Opening login window…`);let u=()=>{o(``),s()};try{if(c.onOAuthLoginIntercepted){let{createInterceptingOAuthLauncherForCurrentRuntime:t}=await e(async()=>{let{createInterceptingOAuthLauncherForCurrentRuntime:e}=await import(`./oauth-service-BsW9nY_u.js`);return{createInterceptingOAuthLauncherForCurrentRuntime:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9])),n=await t();if(!n)throw Error(`No controlled-browser CDP transport available — open SLICC in standalone mode or the Chrome extension.`);await c.onOAuthLoginIntercepted(n,u)}else if(c.onOAuthLogin){let{createOAuthLauncher:t}=await e(async()=>{let{createOAuthLauncher:e}=await import(`./oauth-service-BsW9nY_u.js`);return{createOAuthLauncher:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9]));await c.onOAuthLogin(t(),u)}else throw Error(`${c.name} does not support interactive login.`)}catch(e){l||await i.removeAccount(t).catch(()=>void 0),a.error(`WC settings OAuth login failed`,{providerId:t,err:e}),o(`Login failed: ${e instanceof Error?e.message:String(e)}`,!0)}}function A(e,t,n){let{ps:r,log:i,setStatus:a,renderList:o}=n,s=T(`wcset__row`),c=T(`wcset__info`);if(c.append(T(`wcset__name`,t.name),T(`wcset__detail`,O(e))),s.append(c),t.isOAuth){let t=e.loggedOut===!0;s.append(E(`wcset__btn`,t?`Log in`:`Log out`,()=>{t?k(e.providerId,``,n):r.logoutOAuthAccount(e.providerId).then(o).catch(t=>{i.error(`WC settings logout failed`,{providerId:e.providerId,err:t}),a(`Logout failed.`,!0)})}))}return s.append(E(`wcset__btn wcset__btn--danger`,`Remove`,()=>{r.removeAccount(e.providerId).then(o).catch(t=>{i.error(`WC settings remove failed`,{providerId:e.providerId,err:t}),a(`Remove failed.`,!0)})})),s}function j(e){let{ps:t,setStatus:n}=e,r=T(`wcset__add`);r.append(T(`wcset__label`,`Add account`));let i=document.createElement(`select`);i.className=`wcset__select`;let a=document.createElement(`option`);a.value=``,a.textContent=`Choose a provider…`,i.append(a);let o=new Set(t.getAccounts().map(e=>e.providerId)),s=t.getAvailableProviders().filter(e=>!o.has(e)&&t.providerOffersLlmModels(e)).sort((e,n)=>t.getProviderConfig(e).name.localeCompare(t.getProviderConfig(n).name));for(let e of s){let n=document.createElement(`option`);n.value=e,n.textContent=t.getProviderConfig(e).name,i.append(n)}r.append(i);let c=T(`wcset__controls`);return c.style.cssText=`display:flex;flex-direction:column;gap:8px;`,r.append(c),i.addEventListener(`change`,()=>{c.replaceChildren(),n(``);let r=i.value;if(!r)return;let a=t.getProviderConfig(r),o=document.createElement(`input`);if(o.className=`wcset__input`,o.placeholder=a.baseUrlPlaceholder??`Base URL`,o.value=t.getBaseUrlForProvider(r)??``,a.requiresBaseUrl&&c.append(o),a.isOAuth){c.append(E(`wcset__btn wcset__btn--primary`,`Login with ${a.name}`,()=>{k(r,o.value,e)}));return}let s=document.createElement(`input`);s.className=`wcset__input`,s.placeholder=a.deploymentPlaceholder??`Model IDs (comma-separated)`,s.value=t.getDeploymentForProvider(r)??``,a.requiresDeployment&&c.append(s);let l=document.createElement(`input`);l.className=`wcset__input`,l.type=`password`,l.placeholder=a.apiKeyPlaceholder??`API key`,l.setAttribute(`data-testid`,`wcset-api-key`),(a.requiresApiKey||a.optionalApiKey)&&c.append(l),c.append(E(`wcset__btn wcset__btn--primary`,`Save`,()=>{let i=l.value.trim();if(a.requiresApiKey&&!i){n(`An API key is required.`,!0),l.focus();return}if(a.requiresBaseUrl&&!o.value.trim()){n(`Base URL is required.`,!0),o.focus();return}if(a.requiresDeployment&&!s.value.trim()){n(`Model IDs are required.`,!0),s.focus();return}t.addAccount(r,i,o.value.trim()||void 0,s.value.trim()||void 0),l.value=``,n(`${a.name} connected.`),e.renderList()}))}),r}function M(){let e=T(`wcset__add`);e.append(T(`wcset__section-label`,`Chat`));let r=T(`wcset__toggle-row`),i=document.createElement(`label`);i.textContent=`Show timestamps`;let a=document.createElement(`input`);return a.type=`checkbox`,a.checked=t(),a.addEventListener(`change`,()=>n(a.checked)),r.append(i,a),e.append(r),e}function N(){let e=T(`wcset__add`);e.append(T(`wcset__section-label`,`Browsing`));let t=T(`wcset__toggle-row`),n=document.createElement(`label`);n.textContent=`Autodiscover agentic resources`;let r=document.createElement(`input`);return r.type=`checkbox`,r.checked=b(),r.addEventListener(`change`,()=>y(r.checked)),t.append(n,r),e.append(t),e}function P(e,t,n){let r=T(`wcset__add`);r.append(T(`wcset__section-label`,`Keyboard mode`));let i=T(`wcset__radio-list`),a=[{value:`auto`,title:`Auto`,detail:`On whenever you are not typing — click outside the composer to command.`},{value:`esc`,title:`Esc`,detail:`Press Esc to enter. Blurring the composer does not turn it on.`},{value:null,title:`Off`,detail:`Keyboard mode disabled. Shortcuts stay unavailable until you pick Auto or Esc.`}],o=e.getTrigger();for(let r of a){let a=document.createElement(`label`);a.className=`wcset__radio-row`;let s=document.createElement(`input`);s.type=`radio`,s.name=`wcset-keyboard-trigger`,s.value=r.value===null?`off`:r.value,s.checked=o===r.value,s.addEventListener(`change`,()=>{if(!s.checked)return;let i=r.value;e.setTrigger(i),t(`Saved.`),e.persistTrigger?.(i).catch(e=>{n.error(`Could not persist keyboard trigger`,e),t(`Applied for this session; could not write /etc/slicc/keys.json.`,!0)})});let c=T(`wcset__radio-row__body`);c.append(T(`wcset__radio-row__title`,r.title),T(`wcset__radio-row__detail`,r.detail)),a.append(s,c),i.append(a)}return r.append(i),r}function F(e){let t=T(`wcset__list`),n=a().filter(e=>e.userToggleable);n.length===0&&t.append(T(`wcset__empty`,`No experimental features are available right now.`));for(let r of n){let n=T(`wcset__toggle-row`),a=T(`wcset__info`),s=document.createElement(`label`),c=document.createElement(`input`);c.id=`wcset-feature-${r.id}`,c.type=`checkbox`,c.checked=o(r.id),s.htmlFor=c.id,s.textContent=r.label,a.append(s,T(`wcset__detail`,r.description)),c.addEventListener(`change`,()=>{try{i(r.id,c.checked?`on`:`off`),c.checked=o(r.id),e.setStatus(`Saved.`)}catch(t){e.log.error(`Experimental settings update failed`,{flagId:r.id,err:t}),e.setStatus(`Unable to save this feature setting.`,!0)}}),n.append(a,c),t.append(n)}return t}function I(e){let t=T(`wcset__appearance`);t.append(T(`wcset__section-label`,`Appearance`));let n=c(),r=T(`wcset__preset-grid`),i=document.createElement(`div`);i.className=`wcset__preset-swatch${n?``:` wcset__preset-swatch--active`}`,i.innerHTML=[`#161618`,`#1f1f22`,`#f59e0b`].map(e=>`<div class="wcset__preset-swatch__stripe" style="background:${e}"></div>`).join(``)+`<div class="wcset__preset-name">Default</div>`,i.addEventListener(`click`,()=>{d(),v(),g()}),r.append(i);for(let e of u){let t=document.createElement(`div`);t.className=`wcset__preset-swatch${n===e.id?` wcset__preset-swatch--active`:``}`,t.innerHTML=`<div class="wcset__preset-swatch__stripe" style="background:${e.tokens[`--s2-gray-25`]||`#1a1a1a`}"></div><div class="wcset__preset-swatch__stripe" style="background:${e.tokens[`--s2-gray-100`]||`#2c2c2c`}"></div><div class="wcset__preset-swatch__stripe" style="background:${e.tokens[`--s2-accent`]||`#3562ff`}"></div><div class="wcset__preset-name">${e.name}</div>`,t.addEventListener(`click`,()=>{m(e.id),v(),g()}),r.append(t)}t.append(r);let a=f().filter(e=>e.id!==`__preview`);if(a.length>0){let e=T(`wcset__custom-themes`);e.append(T(`wcset__section-label`,`My Themes`));for(let t of a){let r=T(`wcset__custom-row`),i=T(`wcset__custom-row__name`,t.name);n===t.id&&(i.style.fontWeight=`700`),r.append(i),r.append(E(`wcset__btn`,`Use`,()=>{m(t.id),v(),g()})),r.append(E(`wcset__btn`,`Edit`,()=>{y(t)})),r.append(E(`wcset__btn`,`Export`,()=>{let e=new Blob([h(t)],{type:`application/json`}),n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=`${t.name.toLowerCase().replace(/\s+/g,`-`)}.slicc-theme.json`,r.click(),URL.revokeObjectURL(n)})),r.append(E(`wcset__btn wcset__btn--danger`,`×`,()=>{s(t.id),v(),g()})),e.append(r)}t.append(e)}let o=T(``);o.style.cssText=`display:flex;gap:8px;`,o.append(E(`wcset__btn wcset__btn--primary`,`+ Create Custom Theme`,()=>{y(null)})),o.append(E(`wcset__btn`,`Import Theme…`,()=>{let t=document.createElement(`input`);t.type=`file`,t.accept=`.json`,t.addEventListener(`change`,()=>{let n=t.files?.[0];n&&n.text().then(t=>{try{let n=_(t);l(n),e.setStatus(`Imported "${n.name}".`),g()}catch(t){e.setStatus(`Import failed: ${t instanceof Error?t.message:String(t)}`,!0)}})}),t.click()})),t.append(o);let p=T(``);t.append(p);function g(){let n=t.parentElement;if(!n)return;let r=I(e);n.replaceChild(r,t)}function y(t){p.replaceChildren(U(t,e,g))}return t}function L(e,t,n,r){let i=[],a=p(e,t);for(let[e,t]of Object.entries(x)){i.push(T(`wcset__section-label`,e));let o=T(`wcset__advanced-grid`);for(let e of t){let t=T(`wcset__advanced-token`),i=document.createElement(`input`);i.type=`color`;let s=n[e]||a[e]||`#000000`;i.value=s.startsWith(`#`)?s:`#000000`,i.addEventListener(`input`,()=>{n[e]=i.value,r()});let c=document.createElement(`span`);c.textContent=e.replace(`--s2-`,``).replace(`--slicc-`,``),t.append(i,c),o.append(t)}i.push(o)}return i}function R(e,t,n,r,i){let a=[];for(let[r,o]of[[`background`,`Background`],[`text`,`Text`],[`accent`,`Links & buttons`]]){let s=T(`wcset__builder-row`),c=document.createElement(`label`);c.textContent=o;let l=document.createElement(`input`);l.type=`color`,l.value=e[r],l.addEventListener(`input`,()=>{e[r]=l.value,i()});let u=document.createElement(`input`);if(u.type=`range`,u.min=`0`,u.max=`100`,u.value=String(Math.round((t[r]??1)*100)),u.style.cssText=`width:60px;margin-left:6px;`,u.title=`Opacity`,u.addEventListener(`input`,()=>{t[r]=Number(u.value)/100,i()}),s.append(c,l,u),r===`background`){let e=document.createElement(`input`);e.type=`checkbox`,e.checked=n.disabled,e.style.cssText=`width:auto;margin:0 0 0 8px;`,e.title=`Hide animated background`,e.addEventListener(`change`,()=>{n.disabled=e.checked,i()});let t=document.createElement(`span`);t.textContent=`Static`,t.style.cssText=`font-size:10px;color:var(--txt-3);`,s.append(e,t)}a.push(s)}a.push(T(`wcset__section-label`,`Components`));for(let[e,t]of[[`bubbleBg`,`User bubble bg`],[`bubbleText`,`User bubble text`],[`navBg`,`Nav bar`],[`composerBg`,`Input box`]]){let n=T(`wcset__builder-row`),o=document.createElement(`label`);o.textContent=t;let s=document.createElement(`input`);s.type=`color`,s.value=r[e]||`#000000`,s.addEventListener(`input`,()=>{r[e]=s.value,i()}),n.append(o,s),a.push(n)}return a}function z(e,t){let n=T(`wcset__builder-row`),r=document.createElement(`label`);r.textContent=`Base`;let i=T(`wcset__base-toggle`);for(let n of[`dark`,`light`]){let r=document.createElement(`button`);r.textContent=n.charAt(0).toUpperCase()+n.slice(1),r.className=e===n?`active`:``,r.addEventListener(`click`,()=>t(n)),i.append(r)}return n.append(r,i),n}function B(e,t){let n=T(``);return n.style.cssText=`display:flex;gap:8px;margin-top:8px;`,n.append(E(`wcset__btn wcset__btn--primary`,`Save`,e)),n.append(E(`wcset__btn`,`Cancel`,t)),n}function V(e){return{userBubble:{background:e.bubbleBg,text:e.bubbleText},nav:{background:e.navBg},composer:{background:e.composerBg}}}function H(e,t){let n=t===`dark`;return{bubbleBg:e?.components?.userBubble?.background||(n?`#f5f5f2`:`#0a0a0a`),bubbleText:e?.components?.userBubble?.text||(n?`#0a0a0a`:`#ffffff`),navBg:e?.components?.nav?.background||(n?`#161618`:`#ffffff`),composerBg:e?.components?.composer?.background||(n?`#161618`:`#ffffff`)}}function U(e,t,n){let i=T(`wcset__builder`),a=e?.base??`dark`,o=e?.disableShader??!1,c=!1,u={background:e?.tokens[`--s2-gray-25`]||(a===`dark`?`#1a1a1a`:`#ffffff`),surface:``,text:e?.tokens[`--s2-content-default`]||e?.tokens[`--s2-gray-900`]||(a===`dark`?`#e8e8e8`:`#131313`),accent:e?.tokens[`--s2-accent`]||`#3562ff`,border:``,success:`#2d9d78`,error:`#e34850`},f={background:1,text:1,accent:1},h=H(e,a),_={},y=document.createElement(`input`);y.className=`wcset__input`,y.placeholder=`Theme name`,y.value=e?.name??``;function b(){return r(y.value)||`custom-${Date.now()}`}function x(){let e=a===`dark`;u.surface=g(u.background,e?.1:-.08),u.border=g(u.background,e?.15:-.12),u.success=`#2d9d78`,u.error=`#e34850`}function S(){x();let e={...p(u,a),..._};for(let[t,n]of Object.entries(f))if(n<1&&u[t]){let r=u[t],i=Math.round(n*255).toString(16).padStart(2,`0`);for(let n of{background:[`--canvas`,`--s2-gray-25`,`--s2-bg-base`,`--shaderbg`],text:[`--ink`,`--s2-content-default`,`--s2-gray-900`],accent:[`--ctx`,`--waffle`,`--s2-accent`]}[t]||[])e[n]&&(e[n]=`${r}${i}`)}let t={id:`__preview`,name:`Preview`,base:a,tokens:e,disableShader:o,components:V(h)};l(t),m(`__preview`),v()}function C(){i.replaceChildren();let r=T(`wcset__builder-row`),g=document.createElement(`label`);g.textContent=`Name`,r.append(g,y),i.append(r),i.append(z(a,e=>{a=e,C(),S()}));let w={disabled:o};for(let e of R(u,f,w,h,()=>{o=w.disabled,S()}))i.append(e);let E=document.createElement(`button`);if(E.className=`wcset__advanced-toggle`,E.textContent=c?`Hide advanced`:`Show advanced`,E.addEventListener(`click`,()=>{c=!c,C()}),i.append(E),c)for(let e of L(u,a,_,S))i.append(e);i.append(B(()=>{let r=y.value.trim();if(!r){t.setStatus(`Name is required.`,!0);return}x();let i={...p(u,a),..._},c=e?.id??b(),d={id:c,name:r,base:a,tokens:i,disableShader:o,components:V(h)};s(`__preview`),l(d),m(c),v(),t.setStatus(`Saved "${r}".`),n()},()=>{s(`__preview`),e?m(e.id):d(),v(),n()}))}return C(),S(),i}async function W(t){let n=await e(()=>import(`./main-DpqAB6Xt.js`).then(e=>e.t),__vite__mapDeps([10,3,11,12,1,13,14,15,16,17,18,19,20,4,2,5,6,7,21,22,23,24,25,26,8,27,28,29,30,31,32,33,34,35]));w(document);let r=JSON.stringify(n.getAccounts());return new Promise(e=>{let i=document.createElement(`slicc-dialog`);i.classList.add(`wcset-dialog`),i.setAttribute(`heading`,`Accounts`);let a=T(`wcset`),o=T(`wcset__list`),s=T(`wcset__status`),c=(e,t=!1)=>{s.textContent=e,s.toggleAttribute(`data-error`,t)},l=r,u=()=>{let e=JSON.stringify(n.getAccounts());e!==l&&(l=e,window.dispatchEvent(new CustomEvent(`slicc:accounts-changed`)))},d=T(``),f={ps:n,log:t,setStatus:c,renderList:()=>{u(),o.replaceChildren();let e=n.getAccounts();if(e.length===0)o.append(T(`wcset__empty`,`No accounts configured.`));else for(let t of e)o.append(A(t,n.getProviderConfig(t.providerId),f));d.replaceChildren(j(f))}};f.renderList(),a.append(o,d,s),i.append(a);let p=E(`wcset__btn wcset__btn--primary`,`Done`,()=>{i.hide?.()});p.setAttribute(`slot`,`footer`),i.append(p),i.addEventListener(`slicc-dialog-close`,()=>{i.remove(),e(JSON.stringify(n.getAccounts())!==r)}),document.body.append(i),i.show?.()})}async function G(e,t){return w(document),s(`__preview`),new Promise(n=>{let r=document.createElement(`slicc-dialog`);r.classList.add(`wcset-dialog`),r.setAttribute(`heading`,`Theme`);let i=T(`wcset`),a=T(`wcset__status`),o=(e,t=!1)=>{a.textContent=e,a.toggleAttribute(`data-error`,t)},l=I({ps:null,log:e,setStatus:o,renderList:()=>{}}),u=M(),f=N();i.append(l,u,f),t&&i.append(P(t,o,e)),i.append(a),r.append(i);let p=E(`wcset__btn wcset__btn--primary`,`Done`,()=>{r.hide?.()});p.setAttribute(`slot`,`footer`),r.append(p);let h=c();r.addEventListener(`slicc-dialog-close`,()=>{c()===`__preview`&&(s(`__preview`),h&&h!==`__preview`?m(h):d(),v()),r.remove(),n()}),document.body.append(r),r.show?.()})}async function K(e){if(o(`experimental-settings`))return w(document),new Promise(t=>{let n=document.createElement(`slicc-dialog`);n.classList.add(`wcset-dialog`),n.setAttribute(`heading`,`Experimental`);let r=T(`wcset`),i=T(`wcset__status`);r.append(F({log:e,setStatus:(e,t=!1)=>{i.textContent=e,i.toggleAttribute(`data-error`,t)}}),i),n.append(r);let a=E(`wcset__btn wcset__btn--primary`,`Done`,()=>{n.hide?.()});a.setAttribute(`slot`,`footer`),n.append(a),n.addEventListener(`slicc-dialog-close`,()=>{n.remove(),t()}),document.body.append(n),n.show?.()})}export{K as showExperimentalSettings,G as showThemeSettings,W as showWcSettings};
@@ -1,5 +1,5 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/quick-llm-Bji5F30H.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/account-store-igNbS3Ak.js","assets/preload-helper-Czpn1I53.js","assets/claude-model-version-CSATLzrT.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/logger-DDBAeTLF.js","assets/base64-DJRlyqZu.js","assets/proxied-fetch-DyBveeCl.js","assets/fetch-body-1l9I58Vk.js","assets/api-endpoint-DGxXvrur.js","assets/runtime-env-Dlaokqg1.js","assets/float-topology-YtctpJaG.js","assets/secret-topology-DLJBhHOi.js","assets/secrets-bridge-client--VZ3E0yk.js","assets/port-bridge-client-Dn8JtUyP.js","assets/tool-ui-eSQ1g2I1.js","assets/providers-70klvlGo.js","assets/panel-rpc-B3MSVImO.js","assets/bedrock-camp-compat-BeCSBUrZ.js","assets/llm-session-id-bZQs6gBN.js","assets/icons-Df1OSRR-.js","assets/isomorphic-git-Cgji39_P.js","assets/safe-buffer-iah92gQe.js"])))=>i.map(i=>d[i]);
2
- import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{$ as t,h as n,k as r}from"./account-store-igNbS3Ak.js";import{t as i}from"./preload-helper-Czpn1I53.js";import{t as a}from"./logger-DDBAeTLF.js";import{G as o,I as s,J as c,K as l,P as u,Y as d,_ as f,a as p,c as m,d as ee,f as te,g as h,h as ne,k as g,lt as re,o as ie,s as ae,tt as oe,u as _,v,x as se,z as ce}from"./wc-shortcuts-BU_YGmdb.js";import{i as le,n as ue,r as de,t as fe}from"./mime-types-D0xZwlMO.js";import{n as pe,t as me}from"./base64-DJRlyqZu.js";import{i as he}from"./bridge-protocol-06nbmp2X.js";import{d as ge,f as _e,i as ve,m as ye,u as y}from"./telemetry-DJyRzh6X.js";import{a as b,t as be}from"./icons-Df1OSRR-.js";var xe=new Set([`webhook`,`cron`,`sprinkle`,`fswatch`,`session-reload`,`navigate`,`discovery`,`upgrade`,`workflow`,`bash`,`preview`,`scoop-notify`,`scoop-idle`,`scoop-wait`,`sudo-request`]);function Se(e){return e!=null&&xe.has(e)}var Ce=`#b07823`,we=[`#06b6d4`,`#8b5cf6`,`#f59e0b`,`#10b981`,`#3b82f6`,`#ef4444`];function Te(e){if(e.isRoot)return Ce;let t=0;for(let n of e.name)t=t*31+n.charCodeAt(0)>>>0;return we[t%we.length]}var Ee=new Uint8Array([137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,1,0,0,0,1,8,4,0,0,0,181,28,12,2,0,0,0,11,73,68,65,84,120,218,99,100,96,0,0,0,6,0,2,48,129,208,47,0,0,0,0,73,69,78,68,174,66,96,130]);function De(e){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return typeof btoa==`function`?btoa(t):Buffer.from(t,`binary`).toString(`base64`)}var x=new Date(`2024-01-01T10:00:00`).getTime();function S(e){return x+e*6e4}var C=`ui-fixture`;function Oe(){return[{id:`fx-user-1`,role:`user`,content:`Hey sliccy — can you summarize what this fixture covers?`,timestamp:S(0)},{id:`fx-assistant-1`,role:`assistant`,content:`Sure! This session walks through every chat UI variant I know about. You'll see user and assistant bubbles, tool calls in every status, the six lick channels, a delegation, queued messages, and a streaming tail at the end so you can inspect the live state.`,timestamp:S(.2)}]}function w(){return[{id:`fx-user-2`,role:`user`,content:`Show me some **markdown** — headings, lists, code, a blockquote.`,timestamp:S(1)},{id:`fx-user-attachment`,role:`user`,content:`Use these attachments as visual and text context.`,timestamp:S(1.1),attachments:[{id:`fx-att-image`,name:`dot.png`,mimeType:`image/png`,size:Ee.byteLength,kind:`image`,data:De(Ee)},{id:`fx-att-text`,name:`notes.txt`,mimeType:`text/plain`,size:21,kind:`text`,text:`Fixture attachment text`}]},{id:`fx-assistant-2`,role:`assistant`,content:"## Rich content sample,,Here is a short list:,,- `renderAssistantMessageContent` handles GFM markdown,- Code blocks get syntax highlighting,- Inline `code` uses the mono token,,A fenced code block:,,```ts,import { createChatFixture } from './chat-fixture.js';,,const msgs = createChatFixture();,console.log(msgs.length);,```,,> Blockquotes should feel quieter than regular text.,,And a nested ordered list:,,1. First step,2. Second step, 1. Sub-step A, 2. Sub-step B,3. Third step".split(`,`).join(`
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/quick-llm-BseHVEV7.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/account-store-CrlYmBhs.js","assets/preload-helper-Czpn1I53.js","assets/claude-model-version-CSATLzrT.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/logger-DDBAeTLF.js","assets/base64-DJRlyqZu.js","assets/proxied-fetch-DyBveeCl.js","assets/fetch-body-1l9I58Vk.js","assets/api-endpoint-DGxXvrur.js","assets/runtime-env-Dlaokqg1.js","assets/float-topology-YtctpJaG.js","assets/secret-topology-DLJBhHOi.js","assets/secrets-bridge-client--VZ3E0yk.js","assets/port-bridge-client-Dn8JtUyP.js","assets/tool-ui-eSQ1g2I1.js","assets/providers-gJZWlxGR.js","assets/panel-rpc-B3MSVImO.js","assets/bedrock-camp-compat-BeCSBUrZ.js","assets/llm-session-id-bZQs6gBN.js","assets/icons-Df1OSRR-.js","assets/isomorphic-git-Cgji39_P.js","assets/safe-buffer-iah92gQe.js"])))=>i.map(i=>d[i]);
2
+ import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{$ as t,h as n,k as r}from"./account-store-CrlYmBhs.js";import{t as i}from"./preload-helper-Czpn1I53.js";import{t as a}from"./logger-DDBAeTLF.js";import{G as o,I as s,J as c,K as l,P as u,Y as d,_ as f,a as p,c as m,d as ee,f as te,g as h,h as ne,k as g,lt as re,o as ie,s as ae,tt as oe,u as _,v,x as se,z as ce}from"./wc-shortcuts-C6WmikKG.js";import{i as le,n as ue,r as de,t as fe}from"./mime-types-D0xZwlMO.js";import{n as pe,t as me}from"./base64-DJRlyqZu.js";import{i as he}from"./bridge-protocol-06nbmp2X.js";import{d as ge,f as _e,i as ve,m as ye,u as y}from"./telemetry-DJyRzh6X.js";import{a as b,t as be}from"./icons-Df1OSRR-.js";var xe=new Set([`webhook`,`cron`,`sprinkle`,`fswatch`,`session-reload`,`navigate`,`discovery`,`upgrade`,`workflow`,`bash`,`preview`,`scoop-notify`,`scoop-idle`,`scoop-wait`,`sudo-request`]);function Se(e){return e!=null&&xe.has(e)}var Ce=`#b07823`,we=[`#06b6d4`,`#8b5cf6`,`#f59e0b`,`#10b981`,`#3b82f6`,`#ef4444`];function Te(e){if(e.isRoot)return Ce;let t=0;for(let n of e.name)t=t*31+n.charCodeAt(0)>>>0;return we[t%we.length]}var Ee=new Uint8Array([137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,1,0,0,0,1,8,4,0,0,0,181,28,12,2,0,0,0,11,73,68,65,84,120,218,99,100,96,0,0,0,6,0,2,48,129,208,47,0,0,0,0,73,69,78,68,174,66,96,130]);function De(e){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return typeof btoa==`function`?btoa(t):Buffer.from(t,`binary`).toString(`base64`)}var x=new Date(`2024-01-01T10:00:00`).getTime();function S(e){return x+e*6e4}var C=`ui-fixture`;function Oe(){return[{id:`fx-user-1`,role:`user`,content:`Hey sliccy — can you summarize what this fixture covers?`,timestamp:S(0)},{id:`fx-assistant-1`,role:`assistant`,content:`Sure! This session walks through every chat UI variant I know about. You'll see user and assistant bubbles, tool calls in every status, the six lick channels, a delegation, queued messages, and a streaming tail at the end so you can inspect the live state.`,timestamp:S(.2)}]}function w(){return[{id:`fx-user-2`,role:`user`,content:`Show me some **markdown** — headings, lists, code, a blockquote.`,timestamp:S(1)},{id:`fx-user-attachment`,role:`user`,content:`Use these attachments as visual and text context.`,timestamp:S(1.1),attachments:[{id:`fx-att-image`,name:`dot.png`,mimeType:`image/png`,size:Ee.byteLength,kind:`image`,data:De(Ee)},{id:`fx-att-text`,name:`notes.txt`,mimeType:`text/plain`,size:21,kind:`text`,text:`Fixture attachment text`}]},{id:`fx-assistant-2`,role:`assistant`,content:"## Rich content sample,,Here is a short list:,,- `renderAssistantMessageContent` handles GFM markdown,- Code blocks get syntax highlighting,- Inline `code` uses the mono token,,A fenced code block:,,```ts,import { createChatFixture } from './chat-fixture.js';,,const msgs = createChatFixture();,console.log(msgs.length);,```,,> Blockquotes should feel quieter than regular text.,,And a nested ordered list:,,1. First step,2. Second step, 1. Sub-step A, 2. Sub-step B,3. Third step".split(`,`).join(`
3
3
  `),timestamp:S(1.3)}]}function ke(){return[{id:`fx-assistant-3`,role:`assistant`,content:`Let me check a few things before I answer.`,timestamp:S(2),toolCalls:[{id:`fx-tc-read`,name:`read_file`,input:{path:`/workspace/README.md`},result:`# Sample README
4
4
 
5
5
  This is the contents that read_file returned.`},{id:`fx-tc-bash`,name:`bash`,input:{command:`ls -la /workspace`},result:`total 24
@@ -116,7 +116,7 @@ Example input:
116
116
  2. bash: {"command":"ls /published"}
117
117
  3. bash: {"command":"diff /drafts /published"}
118
118
  Example output: Compare drafts against published files`;function Fa(e){return e.length>=6&&/[a-zA-Z]/.test(e)&&/\s/.test(e.trim())}function Ia(e,t){if(e.length===0)return;let n=Na(e);if(!n)return;let r=Aa.get(n);if(r){t.setAttribute(`label`,r);return}let a=e[0]?.id;if(a){let e=Ma.get(a);e&&t.setAttribute(`label`,e)}if(ja.has(n))return;ja.add(n);let o=e.map((e,t)=>{let n;try{n=JSON.stringify(e.input??{})}catch{n=String(e.input??``)}return n.length>300&&(n=`${n.slice(0,300)}…`),`${t+1}. ${e.name}: ${n}`}).join(`
119
- `);i(async()=>{let{quickLabel:e}=await import(`./quick-llm-Bji5F30H.js`).then(e=>e.n);return{quickLabel: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])).then(({quickLabel:e})=>e({system:Pa,prompt:`Label these tool calls (inputs only):\n${o}`,maxTokens:40})).then(e=>{let r=e?.replace(/^["']|["']$|\.$/g,``).trim()??``;Fa(r)&&(Aa.set(n,r),a&&Ma.set(a,r),t.isConnected&&t.setAttribute(`label`,r))}).catch(()=>void 0).finally(()=>ja.delete(n))}function La(e,t={}){let n=X(`slicc-tool-cluster`,{count:String(e.length)});return t.open&&n.setAttribute(`open`,``),n.append(...e),t.toolCalls&&t.toolCalls.length>0&&Ia(t.toolCalls,n),n}function Ra(e){let t=document.createElement(`slicc-agent-message`);t.setAttribute(`data-msg-id`,e.id);let n=(e.content??``).trim().length>0,r=u(e.timestamp);return r&&n&&t.setAttribute(`timestamp`,r),e.isStreaming&&t.setAttribute(`streaming`,``),t.setBodyHtml(Ri(e.content,e.isStreaming===!0)),n||t.setAttribute(`data-empty`,``),[t,...(e.toolCalls??[]).map(t=>Da(t,e.id))]}function za(e,t){let n=e.querySelectorAll(`:scope > slicc-tool-cluster`);for(let e of n){let n=Array.from(e.querySelectorAll(`slicc-action-row`));Ba(e,n,t);let r=e.parentNode;if(!r){e.remove();continue}for(let t of n)Va(t,r,e);e.remove()}}function Ba(e,t,n){if(!e.hasAttribute(`open`))return;let r=t[0]?.dataset.msgId;r&&n.add(r)}function Va(e,t,n){let r=e.dataset.msgId,i=r&&t instanceof Element?t.querySelector(`:scope > slicc-agent-message[data-msg-id="${r}"]`):null;if(!i||i.parentNode!==t){t.insertBefore(e,n);return}let a=i;for(;a.nextSibling instanceof HTMLElement&&a.nextSibling.tagName.toLowerCase()===`slicc-action-row`&&a.nextSibling.dataset.msgId===r;)a=a.nextSibling;t.insertBefore(e,a.nextSibling)}var Ha=new Set([`slicc-user-message`,`slicc-lick-card`,`slicc-error-card`,`slicc-delegation-line`,`slicc-day-separator`,`slicc-compaction-marker`]);function Ua(e){return e instanceof HTMLElement?Ha.has(e.tagName.toLowerCase()):!0}function Wa(e){return e instanceof HTMLElement&&e.tagName.toLowerCase()===`slicc-action-row`}function Ga(e){return e instanceof HTMLElement&&e.tagName.toLowerCase()===`slicc-agent-message`}function Ka(e){let t=[],n=[];for(let r of e)Ga(r)?!r.hasAttribute(`data-empty`)&&n.length>0&&(t.push(n),n=[]):Wa(r)&&n.push(r);return n.length>0&&t.push(n),t}function qa(e,t){let n=[];for(let r of e){let e=r.dataset.msgId,i=r.dataset.toolId;if(!e||!i)return;let a=t(e,i);if(!a)return;n.push(a)}return n}function Ja(e,t){let n=e[0],r=n.parentNode;if(!r)return;let i=new Set(e),a=n.nextSibling;for(;a&&i.has(a);)a=a.nextSibling;let o=n.dataset.msgId,s=La(e,{open:!!(o&&t.openClusterAnchors.has(o)),toolCalls:t.toolCallLookup?qa(e,t.toolCallLookup):void 0});r.insertBefore(s,a)}function Ya(e,t){za(e,t.openClusterAnchors);let n=Array.from(e.children),r=0;for(;r<n.length;){if(Ua(n[r])){r++;continue}let e=r;for(;e<n.length&&!Ua(n[e]);)e++;let i=Ka(n.slice(r,e));for(let e of i)e.length>=3&&Ja(e,t);r=e}t.openClusterAnchors.clear()}function Xa(e,t){return e.channel===`sprinkle`&&t?.[2]?.trim()===`gelatiere`}function Za(e){let t=d(e);if(!t)return null;let n=document.createElement(`div`),r=document.createElement(`p`);if(r.textContent=t.headline,n.append(r),t.titles.length>0){let e=document.createElement(`ul`);for(let n of t.titles){let t=document.createElement(`li`);t.textContent=n,e.append(t)}n.append(e)}return n}function Qa(e){let t=Bi.exec(e.content),n=e.lickCount??1,r=Wi.exec(e.content),i=r?Gi(r[1]):null,a=Xa(e,t),o=a?d(e.content)?.action:void 0,s=X(`slicc-lick-card`,{kind:a?oe:e.channel??`webhook`,"event-label":a?(o??`suggestions`).replace(/^gelatiere-/,``):Yi(e.content,e.channel,t,i),collapsible:``,collapsed:``});i&&s.setAttribute(`hue`,Te({isRoot:!1,name:i})),n>1&&s.setAttribute(`count`,String(n)),e.lickState&&e.lickState!==`pending`&&s.setAttribute(`state`,e.lickState);let c=e.lickParts??[e.content];for(let e of c){let t=a?Za(e):null;if(t){s.append(t);continue}let n=document.createElement(`div`);n.innerHTML=Li(Hi(e)),s.append(n)}return s}function $a(e){let t=X(`slicc-delegation-line`,{kind:`feed`,verb:`feed_scoop`,label:Ki(e.content.replace(/\*\*\[[^\]]*\]\*\*\s*/,``))}),n=document.createElement(`slicc-user-message`);return n.setBodyHtml(Li(e.content)),[t,n]}var eo=`Out of AI budget`;function to(){try{return n(r())}catch{return[]}}function no(e){if(e.resetsAt===null||/reset/i.test(e.message))return e.message;let t=new Date(e.resetsAt);return Number.isNaN(t.getTime())?e.message:`${e.message} Resets on ${t.toLocaleDateString(void 0,{dateStyle:`long`})}.`}function ro(){return to().length===0?{action:`settings`,"button-label":`Add a provider`}:{action:`change-model`,"button-label":`Switch provider and try again`,"secondary-action":`settings`,"secondary-button-label":`Add a provider`}}function io(e,t){let n={message:e.content,"message-id":e.id},r=ye(e.content);return r&&(n.label=eo,n.message=no(r)),t?(n[`no-action`]=``,X(`slicc-error-card`,n)):r?X(`slicc-error-card`,{...n,...ro()}):(_e(e.content)?n.action=`settings`:ge(e.content)?n.action=`change-model`:y(e.content)&&(n.action=`login`),X(`slicc-error-card`,n))}function ao(e){return X(`slicc-compaction-marker`,{trigger:e.trigger,state:e.state,...e.transcriptPath?{transcript:e.transcriptPath}:{}})}function oo(e,t={}){if(e.compaction)return e.compaction.state===`discarded`?[]:[ao(e.compaction)];if(e.source===`lick`)return[Qa(e)];if(e.source===`delegation`||e.channel===`delegation`)return $a(e);if(e.error)return[io(e,t.readOnly===!0)];if(e.role===`assistant`)return Ra(e);let n=Ui(e.content);return n?[Qa({...e,source:`lick`,channel:n})]:[Oa(e)]}function so(e){let t=[];for(let n of e){let e=n;if(!n.source&&n.role===`user`){let t=Ui(n.content);t&&(e={...n,source:`lick`,channel:t})}let r=t[t.length-1];if(!(e.lickId||r?.lickId)&&e.source===`lick`&&r?.source===`lick`&&r.channel===e.channel){r.lickParts=[...r.lickParts??[r.content],e.content],r.lickCount=r.lickParts.length,r.content+=`\n\n${e.content}`;continue}t.push({...e})}return t}function co(e){return new Date(e).toLocaleDateString(void 0,{weekday:`short`,month:`short`,day:`numeric`})}function lo(e){return X(`slicc-day-separator`,{label:co(e)})}function uo(e,t={}){let n=[],r=``;for(let i of e){let e=new Date(i.timestamp).toDateString();e!==r&&(n.push(lo(i.timestamp)),r=e),n.push(...oo(i,t))}let i=document.createElement(`div`);return i.append(...n),Ya(i,{openClusterAnchors:new Set,toolCallLookup:(t,n)=>e.find(e=>e.id===t)?.toolCalls?.find(e=>e.id===n)}),Array.from(i.children)}var fo=40,po=56,mo=`wcsc-caps`,ho=`wcsc-caps__ghost`,go=`wcsc-caps-style`,_o=`
119
+ `);i(async()=>{let{quickLabel:e}=await import(`./quick-llm-BseHVEV7.js`).then(e=>e.n);return{quickLabel: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])).then(({quickLabel:e})=>e({system:Pa,prompt:`Label these tool calls (inputs only):\n${o}`,maxTokens:40})).then(e=>{let r=e?.replace(/^["']|["']$|\.$/g,``).trim()??``;Fa(r)&&(Aa.set(n,r),a&&Ma.set(a,r),t.isConnected&&t.setAttribute(`label`,r))}).catch(()=>void 0).finally(()=>ja.delete(n))}function La(e,t={}){let n=X(`slicc-tool-cluster`,{count:String(e.length)});return t.open&&n.setAttribute(`open`,``),n.append(...e),t.toolCalls&&t.toolCalls.length>0&&Ia(t.toolCalls,n),n}function Ra(e){let t=document.createElement(`slicc-agent-message`);t.setAttribute(`data-msg-id`,e.id);let n=(e.content??``).trim().length>0,r=u(e.timestamp);return r&&n&&t.setAttribute(`timestamp`,r),e.isStreaming&&t.setAttribute(`streaming`,``),t.setBodyHtml(Ri(e.content,e.isStreaming===!0)),n||t.setAttribute(`data-empty`,``),[t,...(e.toolCalls??[]).map(t=>Da(t,e.id))]}function za(e,t){let n=e.querySelectorAll(`:scope > slicc-tool-cluster`);for(let e of n){let n=Array.from(e.querySelectorAll(`slicc-action-row`));Ba(e,n,t);let r=e.parentNode;if(!r){e.remove();continue}for(let t of n)Va(t,r,e);e.remove()}}function Ba(e,t,n){if(!e.hasAttribute(`open`))return;let r=t[0]?.dataset.msgId;r&&n.add(r)}function Va(e,t,n){let r=e.dataset.msgId,i=r&&t instanceof Element?t.querySelector(`:scope > slicc-agent-message[data-msg-id="${r}"]`):null;if(!i||i.parentNode!==t){t.insertBefore(e,n);return}let a=i;for(;a.nextSibling instanceof HTMLElement&&a.nextSibling.tagName.toLowerCase()===`slicc-action-row`&&a.nextSibling.dataset.msgId===r;)a=a.nextSibling;t.insertBefore(e,a.nextSibling)}var Ha=new Set([`slicc-user-message`,`slicc-lick-card`,`slicc-error-card`,`slicc-delegation-line`,`slicc-day-separator`,`slicc-compaction-marker`]);function Ua(e){return e instanceof HTMLElement?Ha.has(e.tagName.toLowerCase()):!0}function Wa(e){return e instanceof HTMLElement&&e.tagName.toLowerCase()===`slicc-action-row`}function Ga(e){return e instanceof HTMLElement&&e.tagName.toLowerCase()===`slicc-agent-message`}function Ka(e){let t=[],n=[];for(let r of e)Ga(r)?!r.hasAttribute(`data-empty`)&&n.length>0&&(t.push(n),n=[]):Wa(r)&&n.push(r);return n.length>0&&t.push(n),t}function qa(e,t){let n=[];for(let r of e){let e=r.dataset.msgId,i=r.dataset.toolId;if(!e||!i)return;let a=t(e,i);if(!a)return;n.push(a)}return n}function Ja(e,t){let n=e[0],r=n.parentNode;if(!r)return;let i=new Set(e),a=n.nextSibling;for(;a&&i.has(a);)a=a.nextSibling;let o=n.dataset.msgId,s=La(e,{open:!!(o&&t.openClusterAnchors.has(o)),toolCalls:t.toolCallLookup?qa(e,t.toolCallLookup):void 0});r.insertBefore(s,a)}function Ya(e,t){za(e,t.openClusterAnchors);let n=Array.from(e.children),r=0;for(;r<n.length;){if(Ua(n[r])){r++;continue}let e=r;for(;e<n.length&&!Ua(n[e]);)e++;let i=Ka(n.slice(r,e));for(let e of i)e.length>=3&&Ja(e,t);r=e}t.openClusterAnchors.clear()}function Xa(e,t){return e.channel===`sprinkle`&&t?.[2]?.trim()===`gelatiere`}function Za(e){let t=d(e);if(!t)return null;let n=document.createElement(`div`),r=document.createElement(`p`);if(r.textContent=t.headline,n.append(r),t.titles.length>0){let e=document.createElement(`ul`);for(let n of t.titles){let t=document.createElement(`li`);t.textContent=n,e.append(t)}n.append(e)}return n}function Qa(e){let t=Bi.exec(e.content),n=e.lickCount??1,r=Wi.exec(e.content),i=r?Gi(r[1]):null,a=Xa(e,t),o=a?d(e.content)?.action:void 0,s=X(`slicc-lick-card`,{kind:a?oe:e.channel??`webhook`,"event-label":a?(o??`suggestions`).replace(/^gelatiere-/,``):Yi(e.content,e.channel,t,i),collapsible:``,collapsed:``});i&&s.setAttribute(`hue`,Te({isRoot:!1,name:i})),n>1&&s.setAttribute(`count`,String(n)),e.lickState&&e.lickState!==`pending`&&s.setAttribute(`state`,e.lickState);let c=e.lickParts??[e.content];for(let e of c){let t=a?Za(e):null;if(t){s.append(t);continue}let n=document.createElement(`div`);n.innerHTML=Li(Hi(e)),s.append(n)}return s}function $a(e){let t=X(`slicc-delegation-line`,{kind:`feed`,verb:`feed_scoop`,label:Ki(e.content.replace(/\*\*\[[^\]]*\]\*\*\s*/,``))}),n=document.createElement(`slicc-user-message`);return n.setBodyHtml(Li(e.content)),[t,n]}var eo=`Out of AI budget`;function to(){try{return n(r())}catch{return[]}}function no(e){if(e.resetsAt===null||/reset/i.test(e.message))return e.message;let t=new Date(e.resetsAt);return Number.isNaN(t.getTime())?e.message:`${e.message} Resets on ${t.toLocaleDateString(void 0,{dateStyle:`long`})}.`}function ro(){return to().length===0?{action:`settings`,"button-label":`Add a provider`}:{action:`change-model`,"button-label":`Switch provider and try again`,"secondary-action":`settings`,"secondary-button-label":`Add a provider`}}function io(e,t){let n={message:e.content,"message-id":e.id},r=ye(e.content);return r&&(n.label=eo,n.message=no(r)),t?(n[`no-action`]=``,X(`slicc-error-card`,n)):r?X(`slicc-error-card`,{...n,...ro()}):(_e(e.content)?n.action=`settings`:ge(e.content)?n.action=`change-model`:y(e.content)&&(n.action=`login`),X(`slicc-error-card`,n))}function ao(e){return X(`slicc-compaction-marker`,{trigger:e.trigger,state:e.state,...e.transcriptPath?{transcript:e.transcriptPath}:{}})}function oo(e,t={}){if(e.compaction)return e.compaction.state===`discarded`?[]:[ao(e.compaction)];if(e.source===`lick`)return[Qa(e)];if(e.source===`delegation`||e.channel===`delegation`)return $a(e);if(e.error)return[io(e,t.readOnly===!0)];if(e.role===`assistant`)return Ra(e);let n=Ui(e.content);return n?[Qa({...e,source:`lick`,channel:n})]:[Oa(e)]}function so(e){let t=[];for(let n of e){let e=n;if(!n.source&&n.role===`user`){let t=Ui(n.content);t&&(e={...n,source:`lick`,channel:t})}let r=t[t.length-1];if(!(e.lickId||r?.lickId)&&e.source===`lick`&&r?.source===`lick`&&r.channel===e.channel){r.lickParts=[...r.lickParts??[r.content],e.content],r.lickCount=r.lickParts.length,r.content+=`\n\n${e.content}`;continue}t.push({...e})}return t}function co(e){return new Date(e).toLocaleDateString(void 0,{weekday:`short`,month:`short`,day:`numeric`})}function lo(e){return X(`slicc-day-separator`,{label:co(e)})}function uo(e,t={}){let n=[],r=``;for(let i of e){let e=new Date(i.timestamp).toDateString();e!==r&&(n.push(lo(i.timestamp)),r=e),n.push(...oo(i,t))}let i=document.createElement(`div`);return i.append(...n),Ya(i,{openClusterAnchors:new Set,toolCallLookup:(t,n)=>e.find(e=>e.id===t)?.toolCalls?.find(e=>e.id===n)}),Array.from(i.children)}var fo=40,po=56,mo=`wcsc-caps`,ho=`wcsc-caps__ghost`,go=`wcsc-caps-style`,_o=`
120
120
  .${mo}{position:fixed;inset:0;z-index:${fo};pointer-events:none;}
121
121
  .${ho}{position:absolute;pointer-events:none;}
122
122
  `;function vo(e,t){let n=e.commands.map(e=>ie(t,e)).filter(e=>e!==null);return n.length===0?null:n.join(` `)}function yo(e){return{commands:[e],find:t=>{let n=ae(e);return n?t.root.ownerDocument.querySelector(`slicc-dock-item[item-id="${bo(n)}"]`):null}}}function bo(e){return typeof globalThis.CSS?.escape==`function`?globalThis.CSS.escape(e):e.replace(/["\\]/g,`\\$&`)}var xo=[{commands:[`prevAgent`,`nextAgent`],find:e=>e.switcher.scoops.length>1?e.root.ownerDocument.querySelector(`slicc-agent-tabs [part="track-frame"]`):null,placement:`end`},yo(`tabs`),yo(`files`),yo(`terminal`),yo(`memory`),yo(`monitor`),{commands:[`sprinkles`],find:e=>e.root.ownerDocument.querySelector(`slicc-dock-item[kind="sprinkle"]`)},{commands:[`leftRail`],find:e=>e.root.ownerDocument.querySelector(`slicc-freezer [part="toggle"]`)},{commands:[`attach`],find:e=>e.inputCard.querySelector(`slicc-add-menu`),placement:`top-start`},{commands:[`stop`],find:e=>e.inputCard.querySelector(`slicc-send-button`)},{commands:[`composer`],find:e=>e.inputCard.querySelector(`textarea`),placement:`top-start`}];function So(e,t,n=globalThis.innerWidth){return e.endsWith(`end`)&&t.right+po>n?e.replace(/end$/,`start`):e.endsWith(`start`)&&t.left-po<0?e.replace(/start$/,`end`):e}function Co(e){if(e.getElementById(go))return;let t=e.createElement(`style`);t.id=go,t.textContent=_o,(e.head??e.documentElement)?.append(t)}function wo(e){let t=e.root.ownerDocument,n=t.defaultView,r=null,i={},a=new Map,o=0,s=null,c=null,l=()=>{!r||o!==0||!n||(o=n.requestAnimationFrame(()=>{o=0,r&&d()}))},u=e=>{let t=a.get(e);t&&(t.cap.anchor=null,t.ghost.remove(),a.delete(e))};function d(){r&&xo.forEach((n,o)=>{let c=vo(n,i),l=c===null?null:n.find(e),d=l?.getBoundingClientRect();if(c===null||!l||!d||d.width===0||d.height===0){u(o);return}let f=a.get(o);if(!f){let e=t.createElement(`div`);e.className=ho;let n=t.createElement(`slicc-keycap`);n.setAttribute(`stagger`,String(o)),e.append(n),r?.append(e),f={ghost:e,cap:n},a.set(o,f)}let p=So(n.placement??`top-end`,d);f.cap.getAttribute(`placement`)!==p&&f.cap.setAttribute(`placement`,p),f.cap.getAttribute(`cap`)!==c&&f.cap.setAttribute(`cap`,c),f.cap.anchor!==l&&(f.cap.anchor=l);let m=f.ghost.style;m.left=`${d.left}px`,m.top=`${d.top}px`,m.width=`${d.width}px`,m.height=`${d.height}px`,s?.observe(l)})}let f=a=>{if(i=a,r){d();return}if(Co(t),r=t.createElement(`div`),r.className=mo,r.dataset.wcShortcuts=`caps`,t.body.append(r),n?.ResizeObserver&&(s=new n.ResizeObserver(l)),n?.MutationObserver){c=new n.MutationObserver(l),c.observe(e.inputCard,{childList:!0,subtree:!0});let r=t.querySelector(`slicc-dock`);r&&c.observe(r,{childList:!0,subtree:!0})}n?.addEventListener(`resize`,l),t.addEventListener(`scroll`,l,{capture:!0,passive:!0}),s?.observe(t.documentElement),d()},p=()=>{if(r){o!==0&&(n?.cancelAnimationFrame(o),o=0);for(let e of[...a.keys()])u(e);s?.disconnect(),s=null,c?.disconnect(),c=null,n?.removeEventListener(`resize`,l),t.removeEventListener(`scroll`,l,{capture:!0}),r.remove(),r=null}};return{show:f,hide:p,destroy:p}}var To=`slicc-dock-select`,Eo=`freezer-toggle`;function Do(e){let t=e.detail;return typeof t?.id==`string`?t.id:null}function Oo(e){let t=new Map,n=new Map,r=0,i=e=>{m(e)&&(t.set(e,(t.get(e)??0)+1),r+=1,n.set(e,r))},a=!1,o=e=>{i(e),!a&&(a=!0,queueMicrotask(()=>{a=!1}))},s=e=>{a||i(e)},c=e=>{let t=Do(e);if(t===null)return;let n=p(t);s(n??`sprinkles`)},l=()=>s(`leftRail`);return e.addEventListener(To,c,!0),e.addEventListener(Eo,l,!0),{record:o,used:e=>t.has(e),ranked:()=>[...t.entries()].map(([e,t])=>({id:e,count:t})).sort((e,t)=>t.count-e.count||(n.get(t.id)??0)-(n.get(e.id)??0)),dispose:()=>{e.removeEventListener(To,c,!0),e.removeEventListener(Eo,l,!0),t.clear(),n.clear()}}}function ko(e){e.inputCard.dispatchEvent(new CustomEvent(`stop`,{bubbles:!0,composed:!0}))}function Ao(e){e.inputCard.querySelector(`slicc-add-menu`)?.open?.()}function jo(e){e.composer.toggleHandsFree?.()}function Mo(e){let t=e.thread.ownerDocument.querySelector(`slicc-tab-overlay`);t&&(t.peeking=!0),e.dock.selectItem?.(`browser`)}function No(e,t){let n=e.thread,r=n.getBoundingClientRect().top,i=[...n.children].map(e=>e.getBoundingClientRect().top-r),a=t>0?i.find(e=>e>1):i.filter(e=>e<-1).at(-1);a!==void 0&&(n.scrollTop+=a)}function Po(e,t){e.thread.querySelector(`.wc-copy-row slicc-press-button`)?.dispatchEvent(new CustomEvent(t,{bubbles:!0,cancelable:!0,detail:{}}))}function Fo(e){Po(e,`short-click`)}function Io(e){Po(e,`long-press`)}function Lo(e){if(!e)return null;try{return e.contentDocument}catch{return null}}function Ro(e){let t=[...e.thread.querySelectorAll(`[data-tool-ui-request]`)];if(t.length===0)return;let n=e.thread.ownerDocument.activeElement,r=t[(t.findIndex(e=>n instanceof Node&&e.contains(n))+1)%t.length];if(!r)return;let i=r.querySelector(`iframe`),a=Lo(i)?.querySelector(`button[data-action]`);(r.querySelector(`button[data-action]:not([disabled])`)??a??i)?.focus?.(),r.scrollIntoView?.({block:`nearest`})}function zo(e){let t=e.dock.active;t&&g(e.frame??e.dockTree,t)}function Bo(e){let t=(e,t)=>({size:()=>e().querySelectorAll(t).length,selectAt:n=>{e().querySelectorAll(t)[n]?.click()}});return{files:{size:()=>e.fileTree.visibleIds().length,selectAt:t=>{let n=e.fileTree.visibleIds()[t];n&&e.fileTree.selectFile(n)}},memory:t(()=>e.memoryHost,`slicc-memrow`),sessions:t(()=>e.freezer,`slicc-freezer-card:not(.match-hidden):not([hidden])`)}}function Vo(e){return _({switcher:e.switcher,dock:e.dock,freezer:e.freezer,composerMeta:e.composerMeta,hudHost:e.chatPane,composerBand:e.composer,focusComposer:()=>e.inputCard.focus(),composerAvailable:()=>!e.composer.hasAttribute(`hidden`)&&!e.inputCard.hasAttribute(`disabled`),stopTurn:()=>ko(e),toggleVoice:()=>jo(e),scrollMessage:t=>No(e,t),focusApproval:()=>Ro(e),openAttachMenu:()=>Ao(e),copyReply:()=>Fo(e),copyChat:()=>Io(e),zoomSurface:()=>zo(e),peekTabs:()=>Mo(e),lists:Bo(e),caps:wo({inputCard:e.inputCard,root:e.chatPane,switcher:e.switcher}),usage:Oo(e.chatPane.ownerDocument)})}var Ho=/data:([\w.+-]+\/[\w.+-]+)(?:;[\w.+-]+=[^;,]*)*;base64,([A-Za-z0-9+/=]+)/g,Uo=RegExp(`(?:^|[\\s"'\`(\\[{<,;:=])([A-Za-z0-9+/]{128,}={0,2})(?=$|[\\s"'\`)\\]}>,;:.!?])`,`g`),Wo=16;function Go(e){let t=[],n=0;for(;;){let r=e.indexOf(`
@@ -1,4 +1,4 @@
1
- import{t as e}from"./logger-DDBAeTLF.js";import{c as t,i as n,l as r,n as i,r as a,t as o}from"./wc-shortcuts-BU_YGmdb.js";var s=`{
1
+ import{t as e}from"./logger-DDBAeTLF.js";import{c as t,i as n,l as r,n as i,r as a,t as o}from"./wc-shortcuts-C6WmikKG.js";var s=`{
2
2
  "//": [
3
3
  "Keyboard-mode shortcuts. How the mode is entered is controlled by",
4
4
  "\\"trigger\\" (also switchable in Theme settings):",
@@ -1,5 +1,5 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/dist-kBT87Ea7.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/preload-helper-Czpn1I53.js"])))=>i.map(i=>d[i]);
2
- import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import"./account-store-igNbS3Ak.js";import{t}from"./preload-helper-Czpn1I53.js";import{t as n}from"./logger-DDBAeTLF.js";import{n as r}from"./runtime-env-Dlaokqg1.js";import{n as i,t as a}from"./icons-Df1OSRR-.js";function o(e){if(!Number.isFinite(e)||e<=0)return`0 B`;let t=[`B`,`KB`,`MB`,`GB`],n=e,r=0;for(;n>=1024&&r<t.length-1;)n/=1024,r++;return`${n>=10||r===0?Math.round(n):Math.round(n*10)/10} ${t[r]}`}function s(e){let t=e.mimeType||`application/octet-stream`;return`${e.name} (${t}, ${o(e.size)})`}function c(e,t=`The original file lives on a remote runtime and is not accessible here.`){return e?.length?e.map(e=>{if(!e.path)return{...e};let{path:n,...r}=e;return e.kind===`image`&&e.data||e.kind===`text`&&e.text!==void 0?r:{...r,error:r.error??t}}):[]}var l='---\nintervalHours: 24\nnightly: \'0 3 * * *\'\nmaxSuggestions: 5\n---\n\n# Gelatiere pass\n\nYou are the gelatiere, SLICC\'s resident advisor. A lick just asked you for a pass: a nightly `[Cron Event: gelatiere-nightly]`, a `[Sprinkle Event: gelatiere]` because a session ended or someone ran `gelatiere run`, or a direct request. Your job is to look at how this person actually uses SLICC and come back with a handful of concrete, well-grounded suggestions — skills to install, use cases they have not tried, habits that would make their sessions go better — then hand them to the cones.\n\n**Work fast: a pass should take a few minutes, not many.** Mine the signals below, cross them with what is available, write the candidates file, and finish with the two commands at the end. Never install anything, never edit memory files yourself (the nightly\'s `memory dream` delegates that to sandboxed dreamer scoops), never message a cone by any other means than `gelatiere deliver`.\n\n## Nightly only: start the dreaming pass\n\nWhen this pass is the nightly (`[Cron Event: gelatiere-nightly]`), start the memory-dreaming pass first, before anything else, and do not wait for it:\n\n```bash\nmemory dream --all\n```\n\nThat spawns one sandboxed memory-dreamer per cone to consolidate its memory file — merge duplicates, drop superseded facts, land under budget. It runs detached; carry on with your own pass immediately and never read or edit the memory files it is working on beyond the signal-mining below. Skip this step entirely on session-end and on-demand passes.\n\n## What the user has done\n\nRead these in order; each one is cheap. Start with `date -u +%Y-%m-%d` so your evidence carries today\'s date.\n\n1. **Profile** — who they said they are on first run: `cat /home/*/.welcome.json 2>/dev/null` (`purpose`, `role`, `tasks`, `apps`, `company`).\n2. **Durable memory** — what earlier sessions already established (preferences, projects, pitfalls): `cat /workspace/CLAUDE.md`, and `cat /cones/*/CLAUDE.md 2>/dev/null` for the other cones.\n3. **Session index** — titles, dates, cones: `jq -r \'.[] | "\\(.frozenAt[0:10]) \\(.cone // "cone") \\(.title)"\' /sessions/index.json | tail -30`.\n4. **Recent archives** — the newest few sessions: `ls -t /sessions/*.md | grep -v agent- | head -5`.\n5. **Your own notes** — what you concluded last time: `cat /shared/.gelatiere/notes.md 2>/dev/null`.\n\n**Never `cat` an archive.** They reach several megabytes and the `<!-- slicc:session-data ... -->` block is one JSON line holding the whole session. Pull the three signals separately, each on the prose half only:\n\n```bash\n# What the user asked for, in their words.\nsed \'/^<!-- slicc:session-data$/,/^-->$/d\' ARCHIVE | awk \'/^## User/{p=1;next} /^## (Assistant|Summary)/{p=0} /^### Tool/{p=0} p\' | head -80\n\n# Which commands and tools the sessions lean on.\nsed \'/^<!-- slicc:session-data$/,/^-->$/d\' ARCHIVE | grep -o \'^### Tool: [a-z_]*\' | sort | uniq -c | sort -rn\nsed \'/^<!-- slicc:session-data$/,/^-->$/d\' ARCHIVE | grep -oE \'^\\$? ?[a-z][a-z0-9-]+ \' | sort | uniq -c | sort -rn | head -20\n\n# What broke — the strongest signal for a missing skill.\nsed \'/^<!-- slicc:session-data$/,/^-->$/d\' ARCHIVE | grep -B4 \'^Result:.*\\(rror\\|not found\\|failed\\|denied\\|ENOENT\\)\' | cut -c1-160 | head -60\n```\n\n6. **What is already installed** — never suggest a duplicate: `upskill list`.\n7. **What you already suggested** — `/shared/.gelatiere/suggestions.json` holds every earlier suggestion with its `dismissedAt`. Do not repeat an id that is still open, and do not resurrect a dismissed one unless the sessions show a new, strong reason: `jq -r \'.[] | "\\(.id)\\t\\(.kind)\\t\\(.dismissedAt // "open")\\t\\(.title)"\' /shared/.gelatiere/suggestions.json 2>/dev/null`.\n\n## What is available\n\nCross the signals above with what SLICC can offer. Spend one command on each; do not browse further.\n\n```bash\n# The skill catalog: name, description, the tasks / roles / apps each skill fits, and WHERE it\n# lives (repo, path, skill, installAll) — the install command is built from those last four.\ngelatiere catalog | jq -r \'.data[] | "\\(.name)\\t\\(.description)\\ttasks=\\(.tasks) role=\\(.role) apps=\\(.apps)\\trepo=\\(.repo) path=\\(.path) skill=\\(.skill) installAll=\\(.installAll)"\'\n\n# Every shell command SLICC ships, one man page each — the use-case surface.\ngelatiere commands\n\n# The community skills repo, when the catalog looks thin for this user.\nupskill ai-ecoverse/skills\n```\n\nRead a man page only when you are about to recommend that command and need to be sure it does what you think: `gelatiere man <command> | head -60`. You have no `curl` and need none — `gelatiere catalog`, `gelatiere commands` and `gelatiere man` are your whole web surface.\n\n## What to suggest\n\nAt most the `maxSuggestions` from the config block above, best first. Fewer, sharper suggestions beat a full list; an empty list is a fine outcome when nothing is genuinely worth the user\'s attention. Every suggestion must be traceable to something you saw:\n\n| kind | when | required fields |\n| ---------- | ----------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- |\n| `skill` | a catalog or repo skill matches a recurring task, app, or failure in the sessions | `skill`, and `install` — the exact `upskill` command (see below) |\n| `use-case` | a SLICC capability (shell command, scoops, sprinkles, mounts, automation) fits work the user does by hand or not at all | `prompt` — a message the user could send verbatim |\n| `tip` | a habit that would have avoided a failure or a repeated detour in the sessions | `body` explains what to do differently |\n\nThe `install` command is built from the catalog row, never from the bare name — `upskill <name>` alone searches the public registries and does not find catalog skills:\n\n| catalog row | `install` |\n| ------------------------------------------------- | -------------------------------------------- |\n| `repo=o/r skill=x` (path empty) | `upskill o/r --skill x` |\n| `repo=o/r path=skills/ skill=x` | `upskill o/r --path skills/ --skill x` |\n| `repo=o/r path=skills/migration/ installAll=true` | `upskill o/r --path skills/migration/ --all` |\n| a skill from `upskill ai-ecoverse/skills` output | `upskill ai-ecoverse/skills --skill <name>` |\n\nRules:\n\n- `id` is a stable slug (`skill-github`, `use-case-fswatch-deploy`, `tip-mount-once`) so a repeat pass recognises it.\n- Speak to the user as "you" in every field — never about them in the third person ("Lars builds…" is wrong; "You build…" is right).\n- The card shows exactly two things — WHAT to do and WHY — so write the fields that way:\n - `title` is the WHAT: a short imperative, eight words or fewer, sentence case — "Install the GitHub skill", "Script your build–serve–screenshot loop". No benefit clause bolted on ("…to manage repos and pull requests from chat" belongs in the why, if anywhere).\n - `body` is the WHY: one or two sentences, grounded in what you actually saw, that tell the story of the change — what you watched the user do by hand, and what gets better. "You ran the build–serve–screenshot loop 80+ times by hand in your bakery session; a workflow file replays it as one command." It must not restate the title, list features, or repeat `evidence` word for word.\n- `evidence` is one friendly sentence, spoken to the user, saying what you saw that led here — "You told the welcome wizard you\'re a developer who lives in GitHub". It rides the lick for the cones; the card does not render it, so do not lean on it to justify the suggestion — the why lives in `body`. Never a field dump like `role=developer, tasks=[…]`.\n- `url` is optional: the skill page or the man page.\n- Never suggest what `upskill list` already shows installed, and never invent a skill or command that is not in the catalog, the repo listing, or the sitemap.\n\n## Finish\n\nWrite the candidates as JSON — `{ "suggestions": [ { "id", "kind", "title", "body", "skill", "install", "prompt", "url", "evidence" } ] }` — to `$TMPDIR/candidates.json`, then run exactly:\n\n```bash\ngelatiere suggest "$TMPDIR/candidates.json" && gelatiere deliver\n```\n\n`suggest` validates and folds the candidates into the store (known ids are kept, dismissed ones stay dismissed); `deliver` licks every other cone with what is new. Then update `/shared/.gelatiere/notes.md` with two or three lines on what you looked at and what you decided against — that file, not your reply, is your memory across passes. Reply with one short line.\n\n<!-- How to customize\nAdd instructions above, for example: prefer skills from a company repo, or always check a team\nwiki at /mnt/kb before suggesting. The config block sets `intervalHours` (minimum hours between\nsession-end passes; the nightly pass ignores it), `nightly` (a 5-field cron expression, registered\nby `gelatiere init` as the `gelatiere-nightly` crontask) and `maxSuggestions` (capped at 10).\n\nThe gelatiere is a persistent scoop no cone owns (folder `gelatiere`); its own conversation is\ncompacted while it idles. Dismissed suggestions are kept with a dismissedAt stamp so the next pass does not\nrepeat them. `gelatiere run` from any cone\'s shell asks for a pass now.\n-->\n';function u(e,t){let n=e.replace(/^\uFEFF/,``).replace(/\r\n?/g,`
2
+ import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import"./account-store-CrlYmBhs.js";import{t}from"./preload-helper-Czpn1I53.js";import{t as n}from"./logger-DDBAeTLF.js";import{n as r}from"./runtime-env-Dlaokqg1.js";import{n as i,t as a}from"./icons-Df1OSRR-.js";function o(e){if(!Number.isFinite(e)||e<=0)return`0 B`;let t=[`B`,`KB`,`MB`,`GB`],n=e,r=0;for(;n>=1024&&r<t.length-1;)n/=1024,r++;return`${n>=10||r===0?Math.round(n):Math.round(n*10)/10} ${t[r]}`}function s(e){let t=e.mimeType||`application/octet-stream`;return`${e.name} (${t}, ${o(e.size)})`}function c(e,t=`The original file lives on a remote runtime and is not accessible here.`){return e?.length?e.map(e=>{if(!e.path)return{...e};let{path:n,...r}=e;return e.kind===`image`&&e.data||e.kind===`text`&&e.text!==void 0?r:{...r,error:r.error??t}}):[]}var l='---\nintervalHours: 24\nnightly: \'0 3 * * *\'\nmaxSuggestions: 5\n---\n\n# Gelatiere pass\n\nYou are the gelatiere, SLICC\'s resident advisor. A lick just asked you for a pass: a nightly `[Cron Event: gelatiere-nightly]`, a `[Sprinkle Event: gelatiere]` because a session ended or someone ran `gelatiere run`, or a direct request. Your job is to look at how this person actually uses SLICC and come back with a handful of concrete, well-grounded suggestions — skills to install, use cases they have not tried, habits that would make their sessions go better — then hand them to the cones.\n\n**Work fast: a pass should take a few minutes, not many.** Mine the signals below, cross them with what is available, write the candidates file, and finish with the two commands at the end. Never install anything, never edit memory files yourself (the nightly\'s `memory dream` delegates that to sandboxed dreamer scoops), never message a cone by any other means than `gelatiere deliver`.\n\n## Nightly only: start the dreaming pass\n\nWhen this pass is the nightly (`[Cron Event: gelatiere-nightly]`), start the memory-dreaming pass first, before anything else, and do not wait for it:\n\n```bash\nmemory dream --all\n```\n\nThat spawns one sandboxed memory-dreamer per cone to consolidate its memory file — merge duplicates, drop superseded facts, land under budget. It runs detached; carry on with your own pass immediately and never read or edit the memory files it is working on beyond the signal-mining below. Skip this step entirely on session-end and on-demand passes.\n\n## What the user has done\n\nRead these in order; each one is cheap. Start with `date -u +%Y-%m-%d` so your evidence carries today\'s date.\n\n1. **Profile** — who they said they are on first run: `cat /home/*/.welcome.json 2>/dev/null` (`purpose`, `role`, `tasks`, `apps`, `company`).\n2. **Durable memory** — what earlier sessions already established (preferences, projects, pitfalls): `cat /workspace/CLAUDE.md`, and `cat /cones/*/CLAUDE.md 2>/dev/null` for the other cones.\n3. **Session index** — titles, dates, cones: `jq -r \'.[] | "\\(.frozenAt[0:10]) \\(.cone // "cone") \\(.title)"\' /sessions/index.json | tail -30`.\n4. **Recent archives** — the newest few sessions: `ls -t /sessions/*.md | grep -v agent- | head -5`.\n5. **Your own notes** — what you concluded last time: `cat /shared/.gelatiere/notes.md 2>/dev/null`.\n\n**Never `cat` an archive.** They reach several megabytes and the `<!-- slicc:session-data ... -->` block is one JSON line holding the whole session. Pull the three signals separately, each on the prose half only:\n\n```bash\n# What the user asked for, in their words.\nsed \'/^<!-- slicc:session-data$/,/^-->$/d\' ARCHIVE | awk \'/^## User/{p=1;next} /^## (Assistant|Summary)/{p=0} /^### Tool/{p=0} p\' | head -80\n\n# Which commands and tools the sessions lean on.\nsed \'/^<!-- slicc:session-data$/,/^-->$/d\' ARCHIVE | grep -o \'^### Tool: [a-z_]*\' | sort | uniq -c | sort -rn\nsed \'/^<!-- slicc:session-data$/,/^-->$/d\' ARCHIVE | grep -oE \'^\\$? ?[a-z][a-z0-9-]+ \' | sort | uniq -c | sort -rn | head -20\n\n# What broke — the strongest signal for a missing skill.\nsed \'/^<!-- slicc:session-data$/,/^-->$/d\' ARCHIVE | grep -B4 \'^Result:.*\\(rror\\|not found\\|failed\\|denied\\|ENOENT\\)\' | cut -c1-160 | head -60\n```\n\n6. **What is already installed** — never suggest a duplicate: `upskill list`.\n7. **What you already suggested** — `/shared/.gelatiere/suggestions.json` holds every earlier suggestion with its `dismissedAt`. Do not repeat an id that is still open, and do not resurrect a dismissed one unless the sessions show a new, strong reason: `jq -r \'.[] | "\\(.id)\\t\\(.kind)\\t\\(.dismissedAt // "open")\\t\\(.title)"\' /shared/.gelatiere/suggestions.json 2>/dev/null`.\n\n## What is available\n\nCross the signals above with what SLICC can offer. Spend one command on each; do not browse further.\n\n```bash\n# The skill catalog: name, description, the tasks / roles / apps each skill fits, and WHERE it\n# lives (repo, path, skill, installAll) — the install command is built from those last four.\ngelatiere catalog | jq -r \'.data[] | "\\(.name)\\t\\(.description)\\ttasks=\\(.tasks) role=\\(.role) apps=\\(.apps)\\trepo=\\(.repo) path=\\(.path) skill=\\(.skill) installAll=\\(.installAll)"\'\n\n# Every shell command SLICC ships, one man page each — the use-case surface.\ngelatiere commands\n\n# The community skills repo, when the catalog looks thin for this user.\nupskill ai-ecoverse/skills\n```\n\nRead a man page only when you are about to recommend that command and need to be sure it does what you think: `gelatiere man <command> | head -60`. You have no `curl` and need none — `gelatiere catalog`, `gelatiere commands` and `gelatiere man` are your whole web surface.\n\n## What to suggest\n\nAt most the `maxSuggestions` from the config block above, best first. Fewer, sharper suggestions beat a full list; an empty list is a fine outcome when nothing is genuinely worth the user\'s attention. Every suggestion must be traceable to something you saw:\n\n| kind | when | required fields |\n| ---------- | ----------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- |\n| `skill` | a catalog or repo skill matches a recurring task, app, or failure in the sessions | `skill`, and `install` — the exact `upskill` command (see below) |\n| `use-case` | a SLICC capability (shell command, scoops, sprinkles, mounts, automation) fits work the user does by hand or not at all | `prompt` — a message the user could send verbatim |\n| `tip` | a habit that would have avoided a failure or a repeated detour in the sessions | `body` explains what to do differently |\n\nThe `install` command is built from the catalog row, never from the bare name — `upskill <name>` alone searches the public registries and does not find catalog skills:\n\n| catalog row | `install` |\n| ------------------------------------------------- | -------------------------------------------- |\n| `repo=o/r skill=x` (path empty) | `upskill o/r --skill x` |\n| `repo=o/r path=skills/ skill=x` | `upskill o/r --path skills/ --skill x` |\n| `repo=o/r path=skills/migration/ installAll=true` | `upskill o/r --path skills/migration/ --all` |\n| a skill from `upskill ai-ecoverse/skills` output | `upskill ai-ecoverse/skills --skill <name>` |\n\nRules:\n\n- `id` is a stable slug (`skill-github`, `use-case-fswatch-deploy`, `tip-mount-once`) so a repeat pass recognises it.\n- Speak to the user as "you" in every field — never about them in the third person ("Lars builds…" is wrong; "You build…" is right).\n- The card shows exactly two things — WHAT to do and WHY — so write the fields that way:\n - `title` is the WHAT: a short imperative, eight words or fewer, sentence case — "Install the GitHub skill", "Script your build–serve–screenshot loop". No benefit clause bolted on ("…to manage repos and pull requests from chat" belongs in the why, if anywhere).\n - `body` is the WHY: one or two sentences, grounded in what you actually saw, that tell the story of the change — what you watched the user do by hand, and what gets better. "You ran the build–serve–screenshot loop 80+ times by hand in your bakery session; a workflow file replays it as one command." It must not restate the title, list features, or repeat `evidence` word for word.\n- `evidence` is one friendly sentence, spoken to the user, saying what you saw that led here — "You told the welcome wizard you\'re a developer who lives in GitHub". It rides the lick for the cones; the card does not render it, so do not lean on it to justify the suggestion — the why lives in `body`. Never a field dump like `role=developer, tasks=[…]`.\n- `url` is optional: the skill page or the man page.\n- Never suggest what `upskill list` already shows installed, and never invent a skill or command that is not in the catalog, the repo listing, or the sitemap.\n\n## Finish\n\nWrite the candidates as JSON — `{ "suggestions": [ { "id", "kind", "title", "body", "skill", "install", "prompt", "url", "evidence" } ] }` — to `$TMPDIR/candidates.json`, then run exactly:\n\n```bash\ngelatiere suggest "$TMPDIR/candidates.json" && gelatiere deliver\n```\n\n`suggest` validates and folds the candidates into the store (known ids are kept, dismissed ones stay dismissed); `deliver` licks every other cone with what is new. Then update `/shared/.gelatiere/notes.md` with two or three lines on what you looked at and what you decided against — that file, not your reply, is your memory across passes. Reply with one short line.\n\n<!-- How to customize\nAdd instructions above, for example: prefer skills from a company repo, or always check a team\nwiki at /mnt/kb before suggesting. The config block sets `intervalHours` (minimum hours between\nsession-end passes; the nightly pass ignores it), `nightly` (a 5-field cron expression, registered\nby `gelatiere init` as the `gelatiere-nightly` crontask) and `maxSuggestions` (capped at 10).\n\nThe gelatiere is a persistent scoop no cone owns (folder `gelatiere`); its own conversation is\ncompacted while it idles. Dismissed suggestions are kept with a dismissedAt stamp so the next pass does not\nrepeat them. `gelatiere run` from any cone\'s shell asks for a pass now.\n-->\n';function u(e,t){let n=e.replace(/^\uFEFF/,``).replace(/\r\n?/g,`
3
3
  `).match(/^---\s*\n([\s\S]*?)\n---\s*\n([\s\S]*)$/);if(!n?.[2].trim())throw Error(`${t} requires frontmatter and a prompt`);return{frontmatter:n[1],body:n[2].trim()}}function d(e,t){let n={},r=e.split(`
4
4
  `);for(let e=0;e<r.length;e+=1){let i=r[e];if(!i.trim()||i.trimStart().startsWith(`#`))continue;let a=i.match(/^([A-Za-z][A-Za-z0-9]*):\s*(.*)$/);if(!a)throw Error(`Invalid frontmatter line: ${i}`);let[,o,s]=a;if(t.arrayKeys.has(o)){let t=f(r,e,s);n[o]=t.value,e=t.lastIndex}else if(t.scalarKeys.has(o)&&s.trim())n[o]=h(s);else throw Error(`Unsupported or empty frontmatter field: ${o}`)}return n}function f(e,t,n){if(n.trim()){let e=n.trim();if(!e.startsWith(`[`)||!e.endsWith(`]`))throw Error(`Expected an array`);let r=e.slice(1,-1).trim();return{value:r?p(r):[],lastIndex:t}}let r=[],i=t;for(let n=t+1;n<e.length;n+=1){let t=e[n].match(/^\s+-\s+(.+)$/);if(!t)break;r.push(h(m(t[1]))),i=n}return{value:r,lastIndex:i}}function p(e){let t=[],n=0,r;for(let i=0;i<e.length;i+=1){let a=e[i];a===`"`||a===`'`?r=r===a?void 0:r??a:a===`,`&&!r&&(t.push(h(e.slice(n,i))),n=i+1)}if(r)throw Error(`Unclosed quoted value`);return t.push(h(e.slice(n))),t}function m(e){let t;for(let n=0;n<e.length;n+=1){let r=e[n];if(r===`"`||r===`'`)t=t===r?void 0:t??r;else if(r===`#`&&!t&&(n===0||/\s/.test(e[n-1])))return e.slice(0,n).trimEnd()}return e}function h(e){let t=e.trim();if(!t)throw Error(`Empty frontmatter value`);let n=t[0];if((n===`"`||n===`'`)&&t.at(-1)===n)return t.slice(1,-1);if(n===`"`||n===`'`)throw Error(`Unclosed quoted value`);return t}function g(e,t,n){let r=e[t];if(r===void 0)return[...n];if(!Array.isArray(r)||r.some(e=>!e))throw Error(`${t} is invalid`);return[...r]}function _(e,t){if(e!==void 0){if(typeof e!=`string`||!e)throw Error(`${t} is invalid`);return e}}function v(e,t,n){if(e===void 0)return t;if(typeof e!=`string`)throw Error(`timeoutSeconds is invalid`);let r=Number(e);if(!Number.isFinite(r)||r<=0)throw Error(`timeoutSeconds must be positive`);return Math.min(r,n)}function y(e,t){if(e.some(e=>!e.startsWith(`/`)||e.includes(`\0`)||t===`writablePaths`&&e===`/`))throw Error(`${t} must contain absolute VFS paths`)}var b=`gelatiere`,x=`gelatiere`,S=`gelatiere-nightly`,C=`system:gelatiere`;function ee(e){return e.parentJid===`system:gelatiere`&&e.folder===`gelatiere`}var te=e({DEFAULT_GELATIERE_INTERVAL_HOURS:()=>24,DEFAULT_GELATIERE_MD:()=>l,DEFAULT_GELATIERE_NIGHTLY_CRON:()=>oe,DEFAULT_MAX_SUGGESTIONS:()=>5,GELATIERE_DIR:()=>T,GELATIERE_FOLDER:()=>b,GELATIERE_INSTRUCTIONS_PATH:()=>w,GELATIERE_NIGHTLY_CRON_NAME:()=>S,GELATIERE_OWNER_JID:()=>C,GELATIERE_SKILL_PATH:()=>E,GELATIERE_SPRINKLE_NAME:()=>x,GELATIERE_STATE_PATH:()=>ie,GELATIERE_SUGGESTIONS_ACTION:()=>ae,GELATIERE_SUGGESTIONS_PATH:()=>re,LICK_SUGGESTION_LIMIT:()=>5,MAX_STORED_SUGGESTIONS:()=>40,MAX_SUGGESTIONS_PER_PASS:()=>10,buildGelatiereLickBody:()=>Ie,coerceSuggestions:()=>Ne,describeGelatiereLick:()=>Re,dismissGelatiereSuggestion:()=>Se,isGelatiereUnit:()=>ee,isPassDue:()=>_e,loadGelatiereConfig:()=>ue,mergeSuggestions:()=>O,openSuggestions:()=>ye,parseGelatiereDocument:()=>ce,readGelatiereState:()=>he,readGelatiereSuggestions:()=>pe,recordGelatiereTrigger:()=>ve,recordPass:()=>Fe,suggestionsSince:()=>xe,takeGelatiereSuggestion:()=>Ce,takenSuggestions:()=>be,writeGelatiereState:()=>ge,writeGelatiereSuggestions:()=>me}),ne=n(`gelatiere-store`),w=`/shared/GELATIERE.md`,T=`/shared/.gelatiere`,re=`${T}/suggestions.json`,ie=`${T}/state.json`,ae=`gelatiere-suggestions`,E=`/workspace/skills/gelatiere/SKILL.md`,oe=`0 3 * * *`,D={arrayKeys:new Set,scalarKeys:new Set([`intervalHours`,`nightly`,`maxSuggestions`])},se=new Set([`skill`,`use-case`,`tip`]);function ce(e){let t=u(e,`GELATIERE.md`),n=d(t.frontmatter,D),r=_(n.nightly,`nightly`)??`0 3 * * *`;if(r.trim().split(/\s+/).length!==5)throw Error(`nightly must be a 5-field cron expression`);return{intervalHours:le(n.intervalHours,`intervalHours`,24),nightly:r.trim(),maxSuggestions:Math.min(10,le(n.maxSuggestions,`maxSuggestions`,5)),instructions:t.body}}function le(e,t,n){if(e===void 0)return n;if(typeof e!=`string`)throw Error(`${t} is invalid`);let r=Number(e);if(!Number.isFinite(r)||r<=0)throw Error(`${t} must be positive`);return r}async function ue(e){try{return ce(await de(e,w))}catch(e){return ne.warn(`Could not load valid GELATIERE.md; using built-in default`,{error:Le(e)}),ce(l)}}async function de(e,t){let n=await e.readFile(t,{encoding:`utf-8`});return typeof n==`string`?n:new TextDecoder().decode(n)}async function fe(e,t){try{return JSON.parse(await de(e,t))}catch{return}}async function pe(e){let t=await fe(e,re);if(!Array.isArray(t))return[];let n=[];for(let e of t){let t=Me(e,null);if(!t)continue;let{dismissedAt:r,takenAt:i}=e;typeof r==`string`&&r&&(t.dismissedAt=r),typeof i==`string`&&i&&(t.takenAt=i),n.push(t)}return n}async function me(e,t){await e.mkdir(T,{recursive:!0}),await e.writeFile(re,`${JSON.stringify(t,null,2)}\n`)}async function he(e){let t=await fe(e,ie);if(!t||typeof t!=`object`)return{passes:0};let n=t;return{passes:typeof n.passes==`number`&&n.passes>=0?n.passes:0,...typeof n.lastPassAt==`string`?{lastPassAt:n.lastPassAt}:{},...typeof n.lastTriggeredAt==`string`?{lastTriggeredAt:n.lastTriggeredAt}:{},...typeof n.lastDeliveredAt==`string`?{lastDeliveredAt:n.lastDeliveredAt}:{}}}async function ge(e,t){await e.mkdir(T,{recursive:!0}),await e.writeFile(ie,`${JSON.stringify(t,null,2)}\n`)}function _e(e,t,n){let r=Math.max(...[e.lastPassAt,e.lastTriggeredAt].map(e=>e?Date.parse(e):NaN).filter(e=>!Number.isNaN(e)));return!Number.isFinite(r)||t.getTime()-r>=n*36e5}async function ve(e,t=new Date){await ge(e,{...await he(e),lastTriggeredAt:t.toISOString()})}function ye(e){return e.filter(e=>!e.dismissedAt&&!e.takenAt)}function be(e){return e.filter(e=>!!e.takenAt)}function xe(e,t){let n=ye(e);if(!t)return n;let r=Date.parse(t);return Number.isNaN(r)?n:n.filter(e=>{let t=Date.parse(e.createdAt);return Number.isNaN(t)||t>r})}async function Se(e,t,n=new Date){return Te(e,t,`dismissedAt`,n)}async function Ce(e,t,n=new Date){return Te(e,t,`takenAt`,n)}var we=Promise.resolve();function Te(e,t,n,r){let i=async()=>{let i=await pe(e),a=i.find(e=>e.id===t&&!e.dismissedAt&&!e.takenAt);return a?(a[n]=r.toISOString(),await me(e,i),!0):!1},a=we.then(i,i);return we=a.catch(()=>!1),a}var Ee=/[^a-z0-9]+/g;function De(e){return e.toLowerCase().replace(Ee,`-`).replace(/^-+|-+$/g,``).slice(0,60)}function Oe(e,t){if(typeof e!=`string`)return;let n=e.trim();return n?n.slice(0,t):void 0}function ke(e){if(e)try{let t=new URL(e).protocol;return t===`http:`||t===`https:`?e:void 0}catch{return}}var Ae=/^[A-Za-z0-9@._/:=-]+$/;function je(e){if(!e)return;let t=e.split(/\s+/);if(!(t[0]!==`upskill`||t.length<2))return t.slice(1).every(e=>Ae.test(e))?e:void 0}function Me(e,t){if(!e||typeof e!=`object`)return null;let n=e,r=typeof n.kind==`string`?n.kind:``,i=Oe(n.title,200),a=Oe(n.body,1e3);if(!se.has(r)||!i||!a)return null;let o=De(Oe(n.id,80)??`${r}-${i}`)||De(`${r}-${i}`);if(!o)return null;let s=t??Oe(n.createdAt,40)??``,c=n.skill===void 0?void 0:Oe(n.skill,120),l=n.install===void 0?void 0:je(Oe(n.install,300)),u=n.prompt===void 0?void 0:Oe(n.prompt,1e3);return r===`skill`&&(!c||!l)||r===`use-case`&&!u?null:{id:o,kind:r,title:i,body:a,...n.skill===void 0?{}:{skill:c},...n.install===void 0?{}:{install:l},...n.prompt===void 0?{}:{prompt:u},...n.url===void 0?{}:{url:ke(Oe(n.url,500))},...n.evidence===void 0?{}:{evidence:Oe(n.evidence,500)},createdAt:s}}function Ne(e,t,n=10){let r=Array.isArray(e)?e:e&&typeof e==`object`&&Array.isArray(e.suggestions)?e.suggestions??[]:[],i=new Set,a=[];for(let e of r){let r=Me(e,t);if(!(!r||i.has(r.id))&&(i.add(r.id),a.push(r),a.length>=n))break}return a}function O(e,t,n=40){let r=new Set(e.map(e=>e.id)),i=t.filter(e=>!r.has(e.id)),a=[...i,...e];for(;a.length>n;){let e=Pe(a,e=>!!e.dismissedAt),t=e>=0?e:Pe(a,e=>!!e.takenAt);a.splice(t>=0?t:a.length-1,1)}return{merged:a,added:i}}function Pe(e,t){for(let n=e.length-1;n>=0;--n)if(t(e[n]))return n;return-1}async function Fe(e,t,n=new Date){let r=await ue(e),i=Ne(t,n.toISOString(),r.maxSuggestions),{merged:a,added:o}=O(await pe(e),i);await me(e,a);let s=await he(e);return await ge(e,{...s,passes:s.passes+1,lastPassAt:n.toISOString()}),{added:o,open:ye(a)}}function Ie(e,t){return{action:ae,data:{added:e.length,open:t.length,suggestions:t.slice(0,5),path:re,skill:E}}}function Le(e){return e instanceof Error?e.message:String(e)}function Re(e){let t=ze(e);if(!t)return null;let{action:n,bag:r}=t;return n===`gelatiere-suggestions`?Be(n,r):n===`session-settled`?He(n,r):n===`run`?Ue(n,r):{action:n,headline:`gelatiere: ${n}`,titles:[]}}function ze(e){let t=e.indexOf(`{`),n=e.lastIndexOf(`}`);if(t<0||n<=t)return null;let r;try{r=JSON.parse(e.slice(t,n+1))}catch{return null}if(!r||typeof r!=`object`)return null;let{action:i,data:a}=r;return typeof i==`string`?{action:i,bag:a&&typeof a==`object`?a:{}}:null}function Be(e,t){let n=Ve(t.suggestions),r=typeof t.added==`number`?t.added:n.length,i=typeof t.open==`number`?t.open:n.length;return{action:e,headline:r===0?`Nothing new — ${i} open ${i===1?`suggestion`:`suggestions`} in the suggestions card.`:`${r} new ${r===1?`suggestion`:`suggestions`} (${i} open) — the cards are in the suggestions sprinkle.`,titles:n}}function Ve(e){return Array.isArray(e)?e.map(e=>e&&typeof e==`object`?e.title:void 0).filter(e=>typeof e==`string`&&e.length>0):[]}function He(e,t){let n=typeof t.cone==`string`?t.cone:void 0;return{action:e,headline:n?`A session ended in ${n} — time for a pass.`:`A session ended — time for a pass.`,titles:[]}}function Ue(e,t){let n=typeof t.requestedBy==`string`?t.requestedBy:void 0;return{action:e,headline:n?`${n} asked for a pass now.`:`Someone asked for a pass now.`,titles:[]}}function We(e,t){let n=r(),i=`/preview${e}${t?`?projectRoot=${encodeURIComponent(t)}`:``}`;if(n){let e=globalThis.chrome?.runtime?.getURL;if(e)return e(i)}let a=`http://localhost:5710`;return typeof window<`u`&&window.location?.origin?a=window.location.origin:typeof self<`u`&&self.location?.origin&&(a=self.location.origin),`${a}${i}`}var Ge={camera:`Camera`,microphone:`Microphone`};function Ke(e,t,n){return(e??``).trim()||`${Ge[n]} ${t+1}`}function qe(e,t){return e.map((e,n)=>({deviceId:e.deviceId,label:Ke(e.label,n,t)}))}function Je(e){return e.length>=2}function Ye(e){if(e.length===0)return null;let t=e.find(e=>e.deviceId==="default");if(t)return t.deviceId;let n=e.find(e=>(e.label??``).trim().toLowerCase().startsWith(`default`));return n?n.deviceId:e[0].deviceId}function Xe(){if(typeof window>`u`)return null;let e=window;return e.SpeechRecognition??e.webkitSpeechRecognition??null}var Ze=3e3,Qe={engine:`builtin`,state:`idle`};function $e(){return{async permission(){try{return(await navigator.permissions.query({name:`microphone`})).state}catch{return`prompt`}},async requestPermission(){if(!navigator.mediaDevices?.getUserMedia)return!1;try{let e=await navigator.mediaDevices.getUserMedia({audio:!0});for(let t of e.getTracks())t.stop();return!0}catch{return!1}},async microphones(){if(!navigator.mediaDevices?.enumerateDevices)return[];try{return qe((await navigator.mediaDevices.enumerateDevices()).filter(e=>e.kind===`audioinput`),`microphone`)}catch{return[]}},async start(e){let t=Xe();if(!t)throw Error(`Speech recognition is not supported in this browser.`);let n=new t;n.continuous=!0,n.interimResults=!0,e.lang&&(n.lang=e.lang);let r=``,i=``,a=!1,o=[],s=()=>{a=!0;let e=o;o=[];for(let t of e)t()};n.onresult=t=>{i=``;for(let e=t.resultIndex;e<t.results.length;e++){let n=t.results[e];n.isFinal?r+=n[0].transcript:i+=n[0].transcript}let n=`${r}${i}`.trim();n&&e.onPartial?.(n)},n.onerror=t=>{t.error!==`no-speech`&&t.error!==`aborted`&&e.onError?.(`Speech recognition error: ${t.error}`)},n.onend=s,n.start();let c=()=>`${r}${i}`.trim();return{stop(){return a?Promise.resolve(c()):new Promise(e=>{let t=setTimeout(()=>e(c()),Ze);o.push(()=>{clearTimeout(t),e(c())});try{n.stop()}catch{clearTimeout(t),e(c())}})},cancel(){n.onresult=null,n.onerror=null,n.onend=null;try{(n.abort??n.stop).call(n)}catch{}s()}}},status(){return Qe},onStatus(e){return e(Qe),()=>{}},warmup(){}}}var et=e({applyDictationMarkers:()=>st,consumeDictationFirst:()=>dt,parseReplyLang:()=>lt,resetDictationPriming:()=>ft,stripDictationMarkers:()=>ct,stripReplyLangMarker:()=>ut}),tt=`◁This message has been sent through text to speech, consider possible phonetic alternatives and transcription errors. Future dictated messages will have the 🎙️ emoji appended. Your responses to dictated messages will be read out loud, avoid urls, acronyms, numbers, formatting. Begin every reply with the language you are replying in as a hidden HTML comment, e.g. <!--lang:en--> for English or <!--lang:de--> for German; it stays hidden from the user and selects a matching voice▷`,nt=/\uD83C\uDF99\uFE0F?/g,rt=/\u25C1[\s\S]*?\u25B7/g,it=/<!--\s*lang:\s*([A-Za-z]{2,3}(?:-[A-Za-z0-9]{1,8})*)\s*-->/i,at=/<!--\s*lang:\s*[A-Za-z]{2,3}(?:-[A-Za-z0-9]{1,8})*\s*-->/gi,ot=!0;function st(e,t){let n=e.endsWith(` `)?e:`${e} `;return t?`${n}\uD83C\uDF99\uFE0F${tt}`:`${n}\uD83C\uDF99\uFE0F`}function ct(e){return e.replace(rt,``).replace(nt,``).replace(/[ \t]+$/g,``).trimEnd()}function lt(e){return it.exec(e)?.[1]}function ut(e){return e.replace(at,``)}function dt(){return ot?(ot=!1,!0):!1}function ft(){ot=!0}var pt={sent:{freq:660,freqSlideTo:990,duration:.12,peakGain:.06,type:`sine`},"tool-start":{freq:520,freq2:780,duration:.07,peakGain:.04,type:`triangle`},"tool-finish":{freq:880,freq2:1320,duration:.07,peakGain:.04,type:`sine`}};function mt(e,t){let n=pt[t],r=e.currentTime,i=r+n.duration,a=e.createGain();a.gain.setValueAtTime(1e-4,r),a.gain.exponentialRampToValueAtTime(n.peakGain,r+n.duration*.2),a.gain.exponentialRampToValueAtTime(1e-4,i),a.connect(e.destination);let o=e.createOscillator();if(o.type=n.type,o.frequency.setValueAtTime(n.freq,r),n.freqSlideTo!==void 0&&o.frequency.linearRampToValueAtTime(n.freqSlideTo,i),o.connect(a),o.start(r),o.stop(i),n.freq2!==void 0){let t=e.createOscillator();t.type=n.type,t.frequency.setValueAtTime(n.freq2,r),t.connect(a),t.start(r),t.stop(i)}}function ht(e){let t=/^\[@[^\]\s]+ (completed|idle)\]/.exec(e);return t?t[1]===`idle`?`scoop-idle`:`scoop-notify`:/^\[@[^\]\s]+ sudo-request\]/.test(e)?`sudo-request`:/^\[scoop_wait [^\]]+\]/.test(e)?`scoop-wait`:e.startsWith(`[Session Reload]`)?`session-reload`:null}var k=e({applyTimestampVisibility:()=>St,formatMessageTimestamp:()=>wt,getShowTimestamps:()=>bt,initTimestampPreference:()=>Ct,setShowTimestamps:()=>xt}),A=`slicc_show_timestamps`,gt=`slicc-show-timestamps`,_t=`slicc-timestamp-visibility`,vt=!1;function yt(e){if(e.getElementById(_t))return;let t=e.createElement(`style`);t.id=_t,t.textContent=[`slicc-user-message::part(timestamp),`,`slicc-agent-message .msg-ts {`,` display: none;`,`}`,`.${gt} slicc-user-message::part(timestamp),`,`.${gt} slicc-agent-message .msg-ts {`,` display: block;`,`}`].join(`
5
5
  `),e.head.appendChild(t)}function bt(){if(typeof localStorage>`u`||typeof localStorage?.getItem!=`function`)return!0;let e=localStorage.getItem(A);return e===null||e===`true`}function xt(e){typeof localStorage<`u`&&typeof localStorage?.setItem==`function`&&localStorage.setItem(A,String(e)),St()}function St(e){if(typeof document>`u`)return;yt(document);let t=e===void 0?bt():e;document.documentElement.classList.toggle(gt,t),vt=!0}function Ct(){vt||St()}function wt(e){return e?new Date(e).toLocaleTimeString(void 0,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`}):null}var j=[`top`,`right`,`bottom`,`left`,`center`];function Tt(e){return e!=null&&j.includes(e)}function M(e){let t=e?.panelMeta;return t&&typeof t.id==`string`?t:void 0}var Et=new Map,Dt=new EventTarget;function Ot(e,t){Dt.dispatchEvent(new CustomEvent(`panel-registry-change`,{detail:{id:e,change:t}}))}function kt(e){let{id:t}=e.meta,n=Et.has(t);return Et.set(t,e),Ot(t,`registered`),!n}function At(e){return Et.delete(e)?(Ot(e,`unregistered`),!0):!1}function jt(){return[...Et.values()]}function Mt(e){return e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`)}var Nt=`.dock-tree__parking, .slicc-layout__parking`;function Pt(e,t){let n=e.querySelector(`[surface-id="${Mt(t)}"]`);return!n||n.closest(Nt)?!1:(n.requestFullscreen?.()?.catch(()=>{}),!0)}var Ft=e({DEFAULT_ZONE_AXIS:()=>Rt,LAYOUT_SCHEMA_VERSION:()=>1,ZONE_NAMES:()=>Lt,cloneLayout:()=>N,emptyLayout:()=>Bt,isPanelLocked:()=>Xt,isSplitNode:()=>Vt,layoutPanelIds:()=>Ut,moveToZone:()=>Gt,parseLayoutDocument:()=>$t,removeFromZones:()=>Kt,resolveLayout:()=>Yt,sizeToFlex:()=>Qt,variantMatches:()=>Ht,walkCenter:()=>Jt,zoneAxis:()=>zt,zoneOfPanel:()=>Wt,zonesFromCenter:()=>qt}),It=1,Lt=[`top`,`left`,`center`,`right`,`bottom`],Rt={top:`row`,bottom:`row`,left:`col`,right:`col`,center:`col`};function zt(e,t){return e.axes?.[t]??Rt[t]}function Bt(e=`empty`){return{version:1,id:e,base:{}}}function N(e){return JSON.parse(JSON.stringify(e))}function Vt(e){return`split`in e}function Ht(e,t){return!(e.minWidth!=null&&t.width<e.minWidth||e.maxWidth!=null&&t.width>e.maxWidth||e.minHeight!=null&&t.height<e.minHeight||e.maxHeight!=null&&t.height>e.maxHeight||e.orientation!=null&&(t.width>=t.height?`landscape`:`portrait`)!==e.orientation||e.platform!=null&&t.platform!=null&&e.platform!==t.platform)}function Ut(e){let t=[],n=new Set,r=e=>{n.has(e)||(n.add(e),t.push(e))};for(let t of e.docks)for(let e of t.panels)r(e);if(e.zones)for(let t of Lt)for(let n of e.zones[t]??[])r(n);else e.center&&Jt(e.center,e=>r(e.panel));for(let t of e.floating)r(t.panel);return t}function Wt(e,t){for(let n of Lt)if((e[n]??[]).includes(t))return n;return null}function Gt(e,t,n){if(Wt(e,t)===n)return e;let r=N(e);for(let e of Lt){let n=r[e];n&&(r[e]=n.filter(e=>e!==t))}return r[n]=[...r[n]??[],t],r}function Kt(e,t){let n=N(e);for(let e of Lt){let r=n[e];r&&(n[e]=r.filter(e=>e!==t))}return n}function qt(e){let t=[];return e&&Jt(e,e=>t.push(e.panel)),{center:t}}function Jt(e,t){if(!Vt(e)){t(e);return}for(let n of e.children)Jt(n,t)}function Yt(e,t){let n={id:e.id,locked:e.locked===!0,docks:N(e.base.docks??[]),zones:N(e.base.zones??null),center:N(e.base.center??null),floating:N(e.base.floating??[]),panels:N(e.panels??{}),appliedVariants:[]};return(e.variants??[]).forEach((e,r)=>{if(Ht(e.when,t)){n.appliedVariants.push(r),e.docks!==void 0&&(n.docks=N(e.docks)),e.zones!==void 0&&(n.zones=N(e.zones)),e.center!==void 0&&(n.center=N(e.center)),e.floating!==void 0&&(n.floating=N(e.floating));for(let[t,r]of Object.entries(e.panels??{}))n.panels[t]={...n.panels[t],...r}}}),n}function Xt(e,t){if(e.locked||e.panels[t]?.locked===!0)return!0;for(let n of e.docks)if(n.panels.includes(t))return n.locked===!0;for(let n of e.floating)if(n.panel===t)return n.locked===!0;if(e.zones){let n=Wt(e.zones,t);return n?(e.zones.locked??[]).includes(n):!1}return e.center?Zt(e.center,t,!1):!1}function Zt(e,t,n){let r=n||e.locked===!0;return Vt(e)?e.children.some(e=>Zt(e,t,r)):e.panel===t&&r}function Qt(e){if(e==null)return`1 1 auto`;if(typeof e==`number`)return`${e} 1 0`;let t=e.trim(),n=/^([\d.]+)fr$/.exec(t);return n?`${n[1]} 1 0`:/^[\d.]+$/.test(t)?`${t} 1 0`:`0 0 ${t}`}function $t(e){if(!e||typeof e!=`object`)return{error:`layout must be an object`};let t=e;if(typeof t.id!=`string`||t.id.trim()===``)return{error:`layout.id must be a non-empty string`};if(typeof t.version!=`number`)return{error:`layout.version must be a number`};if(t.version>1)return{error:`layout.version ${t.version} is newer than supported (1)`};if(!t.base||typeof t.base!=`object`)return{error:`layout.base must be an object`};for(let e of t.base.docks??[]){if(!en(e?.edge))return{error:`invalid dock edge: ${String(e?.edge)}`};if(!Array.isArray(e.panels))return{error:`dock.${e.edge}.panels must be an array`}}if(t.base.center!=null){let e=tn(t.base.center);if(e)return{error:e}}return t}function en(e){return e===`top`||e===`right`||e===`bottom`||e===`left`}function tn(e){if(!e||typeof e!=`object`)return`center node must be an object`;let t=e;if(typeof t.panel==`string`)return null;if(t.split!==`row`&&t.split!==`col`)return'center node needs a `panel` string or a `split` of "row"/"col"';if(!Array.isArray(t.children)||t.children.length===0)return"a split node needs a non-empty `children` array";for(let e of t.children){let t=tn(e);if(t)return t}return null}var nn=[`top-left`,`top-right`,`bottom-left`,`bottom-right`,`top`,`right`,`bottom`,`left`],rn=`top-right`,an=`slicc-launcher-corner`,on=[`disconnected`,`connected`,`error`],sn=`disconnected`,cn=`follower-status`,ln=new Set(nn),un=new Set(on);function dn(e,t=rn){return e&&ln.has(e)?e:t}function fn(e,t=sn){return e&&un.has(e)?e:t}function pn(e){return e>=6}function mn({clientX:e,clientY:t,viewportWidth:n,viewportHeight:r,velocityXPxPerMs:i=0,velocityYPxPerMs:a=0,flickProjectionMs:o=180}){let s=hn(e+i*o,0,n),c=hn(t+a*o,0,r),l=s/n,u=c/r,d=l>1/3&&l<2/3,f=u>1/3&&u<2/3;if(d&&f){let e=u,t=1-u,n=l,r=1-l,i=Math.min(e,t,n,r);return i===e?`top`:i===t?`bottom`:i===n?`left`:`right`}return d?u<.5?`top`:`bottom`:f?l<.5?`left`:`right`:`${u<.5?`top`:`bottom`}-${l<.5?`left`:`right`}`}function hn(e,t,n){return Math.min(Math.max(e,t),n)}var gn=`<?xml version="1.0" encoding="UTF-8"?>
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/legacy-styles-B3nS5QUo.js","assets/preload-helper-Czpn1I53.js","assets/sprinkle-manager-oNv4Dxy0.js","assets/logger-DDBAeTLF.js","assets/sprinkle-renderer-CeGc4B0L.js","assets/wc-shortcuts-BU_YGmdb.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/account-store-igNbS3Ak.js","assets/claude-model-version-CSATLzrT.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/base64-DJRlyqZu.js","assets/proxied-fetch-DyBveeCl.js","assets/fetch-body-1l9I58Vk.js","assets/api-endpoint-DGxXvrur.js","assets/runtime-env-Dlaokqg1.js","assets/float-topology-YtctpJaG.js","assets/secret-topology-DLJBhHOi.js","assets/secrets-bridge-client--VZ3E0yk.js","assets/port-bridge-client-Dn8JtUyP.js","assets/tool-ui-eSQ1g2I1.js","assets/providers-70klvlGo.js","assets/panel-rpc-B3MSVImO.js","assets/bedrock-camp-compat-BeCSBUrZ.js","assets/icons-Df1OSRR-.js","assets/hid-device-registry-B2R-0rNt.js","assets/serial-port-registry-CCqklAEr.js","assets/usb-operations-BsAiCAWF.js","assets/usb-device-registry-DmUBqrA-.js","assets/shared-mBEktoxE.js","assets/mime-types-D0xZwlMO.js","assets/theme-DFKCBK8N.js","assets/theme-engine-B5SkYf3E.js","assets/telemetry-DJyRzh6X.js","assets/feature-flags-CYCRk6Dq.js","assets/bounded-walk-BjxKWNqp.js","assets/path-utils-DNJG-zQf.js","assets/sprinkle-instances-B8n7h-oP.js","assets/setup-sprinkle-exec-BX_Qq-Su.js","assets/wc-live-Ts1bLhjx.js","assets/slugify-BYJ6QVAt.js","assets/transcript-export-DP-r8eDz.js","assets/session-jsonl-BCOxqyX1.js","assets/types-Dgm4REV3.js","assets/tray-runtime-config-B9jN9kUJ.js","assets/bridge-protocol-06nbmp2X.js","assets/messages-zAgr7E2T.js","assets/tray-follower-status-BAjnN7Ar.js","assets/main-0FLLRgpr.js","assets/modulepreload-polyfill-P2Xu9kJm.js","assets/clipboard-eqmn97SP.js","assets/tray-join-url-BIvzbiFR.js","assets/src-BWaKqLvQ.js","assets/provider-budget-LCzMPlKv.js","assets/permissions-surface-registry-CilCRwhh.js","assets/browser-DGwroBSO.js","assets/tray-leader-BmmfZ-wo.js","assets/record-CCQFJXn_.js","assets/wc-shell-S_KQG-ZJ.js","assets/wc-shell-WkeczD9x.css","assets/wc-unit-context-DhQqWVxs.js","assets/quick-llm-Bji5F30H.js","assets/llm-session-id-bZQs6gBN.js"])))=>i.map(i=>d[i]);
2
- import{t as e}from"./preload-helper-Czpn1I53.js";import{k as t}from"./wc-shortcuts-BU_YGmdb.js";import{n}from"./runtime-env-Dlaokqg1.js";import{t as r}from"./wc-unit-context-DhQqWVxs.js";var i=`sprinkle:`,a=`slicc-sprinkle-icons`;function o(){try{let e=localStorage.getItem(a);if(!e)return{};let t=JSON.parse(e);if(typeof t!=`object`||!t)return{};let n={};for(let[e,r]of Object.entries(t))typeof r==`string`&&(n[e]=r);return n}catch{return{}}}function s(e){try{let t=new Set(e),n=Object.fromEntries(Object.entries(o()).filter(([e])=>t.has(e)));localStorage.setItem(a,JSON.stringify(n))}catch{}}function c(e,t){try{localStorage.setItem(a,JSON.stringify({...o(),[e]:t}))}catch{}}function l(e){return typeof e==`string`&&/^[a-z0-9]+(-[a-z0-9]+)*$/.test(e)}function u(e){return`${i}${e}`}function d(e){return e?.startsWith(i)?e.slice(9):null}var f=`chat`,p=new Set([`files`,`term`,`memory`,`monitor`]),m=`right`,h=m;function g(e){return p.has(e)}var _=class{#e;#t=new Map;#n=new Map;#r=new Set;#i=[];#a;constructor(e,t={}){this.#e=e,this.#a=t}#o(){return this.#e.dockTree}applyLayout(e){let t=this.#o();t?.setTree(e);for(let e of this.#i)t?.placeSurface(u(e),h)}placeSurface(e,t){let n=this.#o();if(n&&!this.#a.hostSprinkleSurface)for(let e of n.getSurfaceIds())e!==t&&e!==`chat`&&this.removeSurface(e);if(n?.placeSurface(t,e),!this.#a.hostSprinkleSurface){let e=this.#e.dock;e&&(e.active=t)}g(t)&&this.#a.onToolPanelActivate?.(t)}moveSurfaceToZone(e,t){this.#o()?.moveSurfaceToZone(e,t)}removeSurface(e){this.#o()?.removeSurface(e),g(e)&&this.#a.onToolPanelDeactivate?.(e)}setSurfaceSize(e,t){return this.#o()?.setSurfaceSize(e,t)??!1}seedDockItems(e){let t=o(),n=!1;for(let r of e)this.#t.has(r)||(this.#r.add(r),this.#t.set(r,{id:u(r),icon:t[r]??`sparkles`,label:r,kind:`sprinkle`}),n=!0);n&&this.#p()}dropUnconfirmedSeeds(){let e=!1;for(let t of this.#r)this.#n.has(t)||(this.#t.delete(t),e=!0);this.#r.clear(),e&&this.#p()}callbacks(){return{addSprinkle:(e,t,n,r,i)=>this.#s(e,t,n,i),removeSprinkle:e=>this.#c(e,{keepDockItem:!1}),minimizeSprinkle:e=>this.#l(e),registerSprinkle:(e,t,n)=>this.#u(e,t,n?.icon),unregisterSprinkle:e=>this.#f(e),closeSprinkleContent:e=>this.#c(e,{keepDockItem:!0})}}updateDockIcon(e,t){let n=this.#t.get(e);!n||n.icon===t||(this.#t.set(e,{...n,icon:t}),this.#p())}defaultIconNames(){return[...this.#t.entries()].filter(([,e])=>e.icon===`sparkles`).map(([e])=>e)}isOpen(e){return this.#n.has(e)}#s(e,t,n,r){let i=u(e),a=this.#a.hostSprinkleSurface,o=this.#n.get(e),s=!o;if(o||(o=document.createElement(`slicc-surface`),o.setAttribute(`surface-id`,i),o.setAttribute(`layout`,`flex`),a||this.#e.dockTree?.append(o),this.#n.set(e,o)),o.replaceChildren(n),this.#u(e,t,r?.icon),this.#i.includes(e)||this.#i.push(e),a){s&&a(i,o);return}r?.attention||r?.background||this.placeSurface(h,i)}#c(e,t){let n=u(e);this.#n.get(e)?.remove(),this.#n.delete(e),t.keepDockItem||this.#t.delete(e);let r=this.#i.indexOf(e);if(r>=0&&this.#i.splice(r,1),this.#p(),this.#a.removeSprinkleSurface){this.#a.removeSprinkleSurface(n);return}this.#e.dockTree?.removeSurface(n)}#l(e){this.#e.dock.removeAttribute(`active`),!this.#a.hostSprinkleSurface&&this.removeSurface(u(e))}#u(e,t,n){this.#r.delete(e);let r=this.#d(e,n);this.#t.set(e,{id:u(e),icon:r,label:t,kind:`sprinkle`}),this.#p()}#d(e,t){return l(t)?t:o()[e]??`sparkles`}#f(e){this.#n.has(e)||(this.#t.delete(e),this.#p())}#p(){this.#e.dock.items=[...this.#t.values()]}};function v(e,t){return n=>{n.type!==`sprinkle`||!n.sprinkleName||t?.(n)||e.sendSprinkleLick(n.sprinkleName,n.body,n.targetScoop)}}var y=180;function b(e){e.dock.addEventListener(`slicc-dock-longpress`,n=>{let r=n.detail?.id;if(!r||d(r)===null&&!g(r))return;let i=n=>{t(e.frame??e.dockTree,r)||n<=0||requestAnimationFrame(()=>i(n-1))};i(y)})}async function x(t){let{refs:i,client:a,fs:o,instanceId:c,onAttachImage:l,onToolPanelActivate:u,onToolPanelDeactivate:f,hostSprinkleSurface:p,removeSprinkleSurface:h,log:y}=t,x=new _(i,{onToolPanelActivate:u,onToolPanelDeactivate:f,hostSprinkleSurface:p,removeSprinkleSurface:h}),{loadSprinkleStyles:C}=await e(async()=>{let{loadSprinkleStyles:e}=await import(`./legacy-styles-B3nS5QUo.js`);return{loadSprinkleStyles:e}},__vite__mapDeps([0,1]));await C();let{SprinkleManager:w,readKnownSprinkleNames:T}=await e(async()=>{let{SprinkleManager:e,readKnownSprinkleNames:t}=await import(`./sprinkle-manager-oNv4Dxy0.js`);return{SprinkleManager:e,readKnownSprinkleNames:t}},__vite__mapDeps([2,3,4,1,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41]));x.seedDockItems(T());let{installSprinkleManagerHandlerOverChannel:E}=await e(async()=>{let{installSprinkleManagerHandlerOverChannel:e}=await import(`./sprinkle-bridge-channel-Clwu-X1e.js`);return{installSprinkleManagerHandlerOverChannel:e}},[]),{createSprinkleExecHandler:D}=await e(async()=>{let{createSprinkleExecHandler:e}=await import(`./setup-sprinkle-exec-BX_Qq-Su.js`);return{createSprinkleExecHandler:e}},__vite__mapDeps([42,1])),{setDipExecHandler:O}=await e(async()=>{let{setDipExecHandler:e}=await import(`./wc-live-Ts1bLhjx.js`).then(e=>e.R);return{setDipExecHandler:e}},__vite__mapDeps([43,6,7,1,8,9,10,11,12,13,14,3,15,16,17,18,19,20,21,22,23,24,25,26,27,5,28,4,29,30,31,32,33,34,35,36,44,45,46,47,48,49,50,37,38,51,52,53,54,55,56,57,58,59,60,61,62,63,64])),k=n(),A=D(a),j=new w(o,v(a,t.interceptWelcomeLick),x.callbacks(),()=>{let e=r(t.getUnits());e&&a.stopScoop(e.id)},{...k?{autoOpenBehavior:`attention`}:{},inlineSprinkles:new Set([`welcome`]),execHandler:A,onAttachImage:l??(()=>{})});if(window.__slicc_sprinkleManager=j,O(A),c!==void 0){let e=E(j,{instanceId:c});window.addEventListener(`beforeunload`,()=>e(),{once:!0})}else if(k){let{handleSprinkleOp:t}=await e(async()=>{let{handleSprinkleOp:e}=await import(`./sprinkle-op-handler-Cb1pl8Ok.js`);return{handleSprinkleOp:e}},[]);a.setSprinkleOpHandler(e=>{let{id:n,op:r,name:i,data:a,target:o}=e;t(j,n,r,i,a,o)})}i.dock.addEventListener(`slicc-dock-select`,e=>{let t=e.detail?.id,n=d(t);if(n){j.activate(n).catch(e=>y.error(`WC sprinkle activate failed`,e));return}t&&g(t)&&x.placeSurface(m,t)}),i.dock.addEventListener(`slicc-dock-collapse`,e=>{let t=e.detail?.id;if(!t)return;if(g(t)){x.removeSurface(t);return}let n=d(t);n&&j.minimize(n)}),b(i);let M=!1,N=async()=>{if(await j.refresh(),j.available().length>0){x.dropUnconfirmedSeeds();let t=j.available().map(e=>e.name),{pruneKnownSprinkleNames:n}=await e(async()=>{let{pruneKnownSprinkleNames:e}=await import(`./sprinkle-manager-oNv4Dxy0.js`);return{pruneKnownSprinkleNames:e}},__vite__mapDeps([2,3,4,1,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41]));n(t),s(t)}await j.restoreOpenSprinkles().catch(e=>{y.warn(`WC shell: failed to restore open sprinkles`,e)}),M||(M=!0,e(async()=>{let{pickLucideIcon:e}=await import(`./quick-llm-Bji5F30H.js`).then(e=>e.n);return{pickLucideIcon:e}},__vite__mapDeps([65,6,7,1,8,9,10,11,12,13,14,3,15,16,17,18,19,20,21,22,23,24,25,26,27,66,28])).then(({pickLucideIcon:e})=>S(x,j.available(),t=>e({subject:t}))).catch(()=>void 0).finally(()=>{M=!1}))};return N().catch(e=>y.warn(`WC shell: initial sprinkle resync failed`,e)),{manager:j,zone:x,resync:N}}async function S(e,t,n){let r=new Set(e.defaultIconNames()),i=o();for(let a of t){if(!r.has(a.name)||l(a.icon))continue;let t=i[a.name];if(t){e.updateDockIcon(a.name,t);continue}let o=await n(`"${a.title}" — a SLICC sprinkle panel (${a.name})`);o&&(c(a.name,o),e.updateDockIcon(a.name,o))}}export{f as CHAT_SURFACE_ID,_ as WcSprinkleZone,x as wireWcSprinkles};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/legacy-styles-B3nS5QUo.js","assets/preload-helper-Czpn1I53.js","assets/sprinkle-manager-QQ2CwjdG.js","assets/logger-DDBAeTLF.js","assets/sprinkle-renderer-BlXAU391.js","assets/wc-shortcuts-C6WmikKG.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/account-store-CrlYmBhs.js","assets/claude-model-version-CSATLzrT.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/base64-DJRlyqZu.js","assets/proxied-fetch-DyBveeCl.js","assets/fetch-body-1l9I58Vk.js","assets/api-endpoint-DGxXvrur.js","assets/runtime-env-Dlaokqg1.js","assets/float-topology-YtctpJaG.js","assets/secret-topology-DLJBhHOi.js","assets/secrets-bridge-client--VZ3E0yk.js","assets/port-bridge-client-Dn8JtUyP.js","assets/tool-ui-eSQ1g2I1.js","assets/providers-gJZWlxGR.js","assets/panel-rpc-B3MSVImO.js","assets/bedrock-camp-compat-BeCSBUrZ.js","assets/icons-Df1OSRR-.js","assets/hid-device-registry-B2R-0rNt.js","assets/serial-port-registry-CCqklAEr.js","assets/usb-operations-BsAiCAWF.js","assets/usb-device-registry-DmUBqrA-.js","assets/shared-mBEktoxE.js","assets/mime-types-D0xZwlMO.js","assets/theme-DFKCBK8N.js","assets/theme-engine-B5SkYf3E.js","assets/telemetry-DJyRzh6X.js","assets/feature-flags-CYCRk6Dq.js","assets/bounded-walk-BjxKWNqp.js","assets/path-utils-DNJG-zQf.js","assets/sprinkle-instances-B8n7h-oP.js","assets/setup-sprinkle-exec-BX_Qq-Su.js","assets/wc-live-Cw2LKjtz.js","assets/slugify-BYJ6QVAt.js","assets/transcript-export-DP-r8eDz.js","assets/session-jsonl-on-0nPRn.js","assets/types-Dgm4REV3.js","assets/tray-runtime-config-B9jN9kUJ.js","assets/bridge-protocol-06nbmp2X.js","assets/messages-zAgr7E2T.js","assets/tray-follower-status-BAjnN7Ar.js","assets/main-DpqAB6Xt.js","assets/modulepreload-polyfill-P2Xu9kJm.js","assets/clipboard-eqmn97SP.js","assets/tray-join-url-BIvzbiFR.js","assets/src-BWaKqLvQ.js","assets/provider-budget-LCzMPlKv.js","assets/permissions-surface-registry-CilCRwhh.js","assets/browser-DGwroBSO.js","assets/tray-leader-BmmfZ-wo.js","assets/record-CCQFJXn_.js","assets/wc-shell-rn0tIe5F.js","assets/wc-shell-WkeczD9x.css","assets/wc-unit-context-DhQqWVxs.js","assets/quick-llm-BseHVEV7.js","assets/llm-session-id-bZQs6gBN.js"])))=>i.map(i=>d[i]);
2
+ import{t as e}from"./preload-helper-Czpn1I53.js";import{k as t}from"./wc-shortcuts-C6WmikKG.js";import{n}from"./runtime-env-Dlaokqg1.js";import{t as r}from"./wc-unit-context-DhQqWVxs.js";var i=`sprinkle:`,a=`slicc-sprinkle-icons`;function o(){try{let e=localStorage.getItem(a);if(!e)return{};let t=JSON.parse(e);if(typeof t!=`object`||!t)return{};let n={};for(let[e,r]of Object.entries(t))typeof r==`string`&&(n[e]=r);return n}catch{return{}}}function s(e){try{let t=new Set(e),n=Object.fromEntries(Object.entries(o()).filter(([e])=>t.has(e)));localStorage.setItem(a,JSON.stringify(n))}catch{}}function c(e,t){try{localStorage.setItem(a,JSON.stringify({...o(),[e]:t}))}catch{}}function l(e){return typeof e==`string`&&/^[a-z0-9]+(-[a-z0-9]+)*$/.test(e)}function u(e){return`${i}${e}`}function d(e){return e?.startsWith(i)?e.slice(9):null}var f=`chat`,p=new Set([`files`,`term`,`memory`,`monitor`]),m=`right`,h=m;function g(e){return p.has(e)}var _=class{#e;#t=new Map;#n=new Map;#r=new Set;#i=[];#a;constructor(e,t={}){this.#e=e,this.#a=t}#o(){return this.#e.dockTree}applyLayout(e){let t=this.#o();t?.setTree(e);for(let e of this.#i)t?.placeSurface(u(e),h)}placeSurface(e,t){let n=this.#o();if(n&&!this.#a.hostSprinkleSurface)for(let e of n.getSurfaceIds())e!==t&&e!==`chat`&&this.removeSurface(e);if(n?.placeSurface(t,e),!this.#a.hostSprinkleSurface){let e=this.#e.dock;e&&(e.active=t)}g(t)&&this.#a.onToolPanelActivate?.(t)}moveSurfaceToZone(e,t){this.#o()?.moveSurfaceToZone(e,t)}removeSurface(e){this.#o()?.removeSurface(e),g(e)&&this.#a.onToolPanelDeactivate?.(e)}setSurfaceSize(e,t){return this.#o()?.setSurfaceSize(e,t)??!1}seedDockItems(e){let t=o(),n=!1;for(let r of e)this.#t.has(r)||(this.#r.add(r),this.#t.set(r,{id:u(r),icon:t[r]??`sparkles`,label:r,kind:`sprinkle`}),n=!0);n&&this.#p()}dropUnconfirmedSeeds(){let e=!1;for(let t of this.#r)this.#n.has(t)||(this.#t.delete(t),e=!0);this.#r.clear(),e&&this.#p()}callbacks(){return{addSprinkle:(e,t,n,r,i)=>this.#s(e,t,n,i),removeSprinkle:e=>this.#c(e,{keepDockItem:!1}),minimizeSprinkle:e=>this.#l(e),registerSprinkle:(e,t,n)=>this.#u(e,t,n?.icon),unregisterSprinkle:e=>this.#f(e),closeSprinkleContent:e=>this.#c(e,{keepDockItem:!0})}}updateDockIcon(e,t){let n=this.#t.get(e);!n||n.icon===t||(this.#t.set(e,{...n,icon:t}),this.#p())}defaultIconNames(){return[...this.#t.entries()].filter(([,e])=>e.icon===`sparkles`).map(([e])=>e)}isOpen(e){return this.#n.has(e)}#s(e,t,n,r){let i=u(e),a=this.#a.hostSprinkleSurface,o=this.#n.get(e),s=!o;if(o||(o=document.createElement(`slicc-surface`),o.setAttribute(`surface-id`,i),o.setAttribute(`layout`,`flex`),a||this.#e.dockTree?.append(o),this.#n.set(e,o)),o.replaceChildren(n),this.#u(e,t,r?.icon),this.#i.includes(e)||this.#i.push(e),a){s&&a(i,o);return}r?.attention||r?.background||this.placeSurface(h,i)}#c(e,t){let n=u(e);this.#n.get(e)?.remove(),this.#n.delete(e),t.keepDockItem||this.#t.delete(e);let r=this.#i.indexOf(e);if(r>=0&&this.#i.splice(r,1),this.#p(),this.#a.removeSprinkleSurface){this.#a.removeSprinkleSurface(n);return}this.#e.dockTree?.removeSurface(n)}#l(e){this.#e.dock.removeAttribute(`active`),!this.#a.hostSprinkleSurface&&this.removeSurface(u(e))}#u(e,t,n){this.#r.delete(e);let r=this.#d(e,n);this.#t.set(e,{id:u(e),icon:r,label:t,kind:`sprinkle`}),this.#p()}#d(e,t){return l(t)?t:o()[e]??`sparkles`}#f(e){this.#n.has(e)||(this.#t.delete(e),this.#p())}#p(){this.#e.dock.items=[...this.#t.values()]}};function v(e,t){return n=>{n.type!==`sprinkle`||!n.sprinkleName||t?.(n)||e.sendSprinkleLick(n.sprinkleName,n.body,n.targetScoop)}}var y=180;function b(e){e.dock.addEventListener(`slicc-dock-longpress`,n=>{let r=n.detail?.id;if(!r||d(r)===null&&!g(r))return;let i=n=>{t(e.frame??e.dockTree,r)||n<=0||requestAnimationFrame(()=>i(n-1))};i(y)})}async function x(t){let{refs:i,client:a,fs:o,instanceId:c,onAttachImage:l,onToolPanelActivate:u,onToolPanelDeactivate:f,hostSprinkleSurface:p,removeSprinkleSurface:h,log:y}=t,x=new _(i,{onToolPanelActivate:u,onToolPanelDeactivate:f,hostSprinkleSurface:p,removeSprinkleSurface:h}),{loadSprinkleStyles:C}=await e(async()=>{let{loadSprinkleStyles:e}=await import(`./legacy-styles-B3nS5QUo.js`);return{loadSprinkleStyles:e}},__vite__mapDeps([0,1]));await C();let{SprinkleManager:w,readKnownSprinkleNames:T}=await e(async()=>{let{SprinkleManager:e,readKnownSprinkleNames:t}=await import(`./sprinkle-manager-QQ2CwjdG.js`);return{SprinkleManager:e,readKnownSprinkleNames:t}},__vite__mapDeps([2,3,4,1,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41]));x.seedDockItems(T());let{installSprinkleManagerHandlerOverChannel:E}=await e(async()=>{let{installSprinkleManagerHandlerOverChannel:e}=await import(`./sprinkle-bridge-channel-Clwu-X1e.js`);return{installSprinkleManagerHandlerOverChannel:e}},[]),{createSprinkleExecHandler:D}=await e(async()=>{let{createSprinkleExecHandler:e}=await import(`./setup-sprinkle-exec-BX_Qq-Su.js`);return{createSprinkleExecHandler:e}},__vite__mapDeps([42,1])),{setDipExecHandler:O}=await e(async()=>{let{setDipExecHandler:e}=await import(`./wc-live-Cw2LKjtz.js`).then(e=>e.R);return{setDipExecHandler:e}},__vite__mapDeps([43,6,7,1,8,9,10,11,12,13,14,3,15,16,17,18,19,20,21,22,23,24,25,26,27,5,28,4,29,30,31,32,33,34,35,36,44,45,46,47,48,49,50,37,38,51,52,53,54,55,56,57,58,59,60,61,62,63,64])),k=n(),A=D(a),j=new w(o,v(a,t.interceptWelcomeLick),x.callbacks(),()=>{let e=r(t.getUnits());e&&a.stopScoop(e.id)},{...k?{autoOpenBehavior:`attention`}:{},inlineSprinkles:new Set([`welcome`]),execHandler:A,onAttachImage:l??(()=>{})});if(window.__slicc_sprinkleManager=j,O(A),c!==void 0){let e=E(j,{instanceId:c});window.addEventListener(`beforeunload`,()=>e(),{once:!0})}else if(k){let{handleSprinkleOp:t}=await e(async()=>{let{handleSprinkleOp:e}=await import(`./sprinkle-op-handler-Cb1pl8Ok.js`);return{handleSprinkleOp:e}},[]);a.setSprinkleOpHandler(e=>{let{id:n,op:r,name:i,data:a,target:o}=e;t(j,n,r,i,a,o)})}i.dock.addEventListener(`slicc-dock-select`,e=>{let t=e.detail?.id,n=d(t);if(n){j.activate(n).catch(e=>y.error(`WC sprinkle activate failed`,e));return}t&&g(t)&&x.placeSurface(m,t)}),i.dock.addEventListener(`slicc-dock-collapse`,e=>{let t=e.detail?.id;if(!t)return;if(g(t)){x.removeSurface(t);return}let n=d(t);n&&j.minimize(n)}),b(i);let M=!1,N=async()=>{if(await j.refresh(),j.available().length>0){x.dropUnconfirmedSeeds();let t=j.available().map(e=>e.name),{pruneKnownSprinkleNames:n}=await e(async()=>{let{pruneKnownSprinkleNames:e}=await import(`./sprinkle-manager-QQ2CwjdG.js`);return{pruneKnownSprinkleNames:e}},__vite__mapDeps([2,3,4,1,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41]));n(t),s(t)}await j.restoreOpenSprinkles().catch(e=>{y.warn(`WC shell: failed to restore open sprinkles`,e)}),M||(M=!0,e(async()=>{let{pickLucideIcon:e}=await import(`./quick-llm-BseHVEV7.js`).then(e=>e.n);return{pickLucideIcon:e}},__vite__mapDeps([65,6,7,1,8,9,10,11,12,13,14,3,15,16,17,18,19,20,21,22,23,24,25,26,27,66,28])).then(({pickLucideIcon:e})=>S(x,j.available(),t=>e({subject:t}))).catch(()=>void 0).finally(()=>{M=!1}))};return N().catch(e=>y.warn(`WC shell: initial sprinkle resync failed`,e)),{manager:j,zone:x,resync:N}}async function S(e,t,n){let r=new Set(e.defaultIconNames()),i=o();for(let a of t){if(!r.has(a.name)||l(a.icon))continue;let t=i[a.name];if(t){e.updateDockIcon(a.name,t);continue}let o=await n(`"${a.title}" — a SLICC sprinkle panel (${a.name})`);o&&(c(a.name,o),e.updateDockIcon(a.name,o))}}export{f as CHAT_SURFACE_ID,_ as WcSprinkleZone,x as wireWcSprinkles};