sliccy 4.0.2 → 4.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. package/dist/ui/assets/__vite-browser-external-C7iut881.js +1 -0
  2. package/dist/ui/assets/account-store-BcAPWTGv.js +38 -0
  3. package/dist/ui/assets/account-store-CiB6cAel.js +99 -0
  4. package/dist/ui/assets/adobe-B-oaNVGg.js +1 -0
  5. package/dist/ui/assets/adobe-CrAdS9SD.js +2 -0
  6. package/dist/ui/assets/{agent-message-to-chat-2oatz-4r.js → agent-message-to-chat-BAWaR5C4.js} +1 -1
  7. package/dist/ui/assets/{anthropic-DdhoKMtR.js → anthropic-DVpFSsKH.js} +2 -2
  8. package/dist/ui/assets/{apps-BkzP1PLW.js → apps-BHERTKiO.js} +1 -1
  9. package/dist/ui/assets/azure-openai-C-826Dlw.js +1 -0
  10. package/dist/ui/assets/azure-openai-DvGwGsI1.js +1 -0
  11. package/dist/ui/assets/azure-openai-responses-BPLbXfA6.js +1 -0
  12. package/dist/ui/assets/bedrock-camp-D64i9rke.js +1 -0
  13. package/dist/ui/assets/{bsh-watchdog-BFmmHSkm.js → bsh-watchdog-ClOjddgN.js} +1 -1
  14. package/dist/ui/assets/cdn-url-builder-Cq7LLgru.js +1 -0
  15. package/dist/ui/assets/{cdp-Bx-nkPzL.js → cdp-Cbi5Katl.js} +3 -3
  16. package/dist/ui/assets/{clipboard-C2cR8flR.js → clipboard-DgFtRQbq.js} +1 -1
  17. package/dist/ui/assets/composer-speech-BuzPv_Yy.js +1 -0
  18. package/dist/ui/assets/{connect-surface-Dwz7gSuy.js → connect-surface-D6ECkvh5.js} +1 -1
  19. package/dist/ui/assets/context-compaction-DJF_qJZJ.js +27 -0
  20. package/dist/ui/assets/diagnostics-mI-AnKx_.js +1 -0
  21. package/dist/ui/assets/dip-ilEHW-Zu.js +1 -0
  22. package/dist/ui/assets/dist-CSwuvPa6.js +4 -0
  23. package/dist/ui/assets/{dist-DwJ61hEj.js → dist-CvzfEfDj2.js} +1 -1
  24. package/dist/ui/assets/{dist-DU9Hdb6p.js → dist-Dejj5eGe.js} +2 -2
  25. package/dist/ui/assets/{dist-DBjE4kB5.js → dist-l3FWXCp1.js} +1 -1
  26. package/dist/ui/assets/{es-CxV76drH.js → es-BxwKdh2y.js} +1 -1
  27. package/dist/ui/assets/esp8266-BPLrOmN4.js +1 -0
  28. package/dist/ui/assets/{esptool-operations-CXqSawtf.js → esptool-operations-CiX8mbpu.js} +2 -2
  29. package/dist/ui/assets/event-stream-Cs43PhOB.js +1 -0
  30. package/dist/ui/assets/{fs-Dg90t6PY.js → fs-BDe3kEbh.js} +1 -1
  31. package/dist/ui/assets/fs-D2X8IzCo.js +2 -0
  32. package/dist/ui/assets/github-BAqz3bbU.js +1 -0
  33. package/dist/ui/assets/github-BPoxioKX.js +2 -0
  34. package/dist/ui/assets/github-copilot-C7kttkXK.js +1 -0
  35. package/dist/ui/assets/github-copilot-Colai-cF.js +2 -0
  36. package/dist/ui/assets/google-shared-CVRDRmWo.js +11 -0
  37. package/dist/ui/assets/google-syj0sMxL.js +1 -0
  38. package/dist/ui/assets/google-vertex-CzAYHmbM.js +1 -0
  39. package/dist/ui/assets/hear-W4qlQvtc.js +1 -0
  40. package/dist/ui/assets/hear-lee28_gN.js +1 -0
  41. package/dist/ui/assets/hosted-config-apply-uAym2aS5.js +1 -0
  42. package/dist/ui/assets/json-parse-BUunmmNl.js +3 -0
  43. package/dist/ui/assets/{kernel-worker-DpRMAeb1.js → kernel-worker-ic1QU0mg.js} +1055 -1032
  44. package/dist/ui/assets/kokoro-IuvgZkZk.js +4 -0
  45. package/dist/ui/assets/kokoro-engine-B330eLPz.js +2 -0
  46. package/dist/ui/assets/kokoro-engine-C5c0LOmY.js +1 -0
  47. package/dist/ui/assets/kokoro-pZaPWf_-.js +4 -0
  48. package/dist/ui/assets/legacy-styles-4PP74ISo.js +2 -0
  49. package/dist/ui/assets/{lick-ws-bridge-CIdCZl2q.js → lick-ws-bridge-C0dPnE8i.js} +1 -1
  50. package/dist/ui/assets/{local-llm-DgWHei2e.js → local-llm-DzOVooE9.js} +2 -2
  51. package/dist/ui/assets/logger-DDBAeTLF.js +1 -0
  52. package/dist/ui/assets/magick-wasm-BvNy9LFP.js +1 -0
  53. package/dist/ui/assets/main-DqjICHRh.js +22 -0
  54. package/dist/ui/assets/main-cherry-Bap_NTtV.js +1 -0
  55. package/dist/ui/assets/mime-types-BqLkKWa7.js +1 -0
  56. package/dist/ui/assets/mime-types-ugOWOUZ9.js +1 -0
  57. package/dist/ui/assets/{mistral-C8Uiexjg.js → mistral-pCZ0Zm3T.js} +2 -2
  58. package/dist/ui/assets/mount-CCmhX5cE.js +2 -0
  59. package/dist/ui/assets/{mount-CYuBE82h.js → mount-DqjQTDCU.js} +1 -1
  60. package/dist/ui/assets/mount-id-DtHfwjbZ.js +1 -0
  61. package/dist/ui/assets/mount-picker-popup-BORxgnGu.js +1 -0
  62. package/dist/ui/assets/new-session-DeH2bC1U.js +1 -0
  63. package/dist/ui/assets/oauth-bootstrap-B6wP6zi_.js +2 -0
  64. package/dist/ui/assets/oauth-service-CTlktxVj.js +1 -0
  65. package/dist/ui/assets/{oauth-service-CSJo71ct.js → oauth-service-DQVciyk_.js} +1 -1
  66. package/dist/ui/assets/onboarding-orchestrator-MNoD_6wi.js +1 -0
  67. package/dist/ui/assets/openai-codex-C_G8kpA8.js +1 -0
  68. package/dist/ui/assets/openai-codex-DKhn8od8.js +1 -0
  69. package/dist/ui/assets/{openai-codex-responses-iASEGX_4.js → openai-codex-responses-C8xgMZBo.js} +3 -3
  70. package/dist/ui/assets/openai-completions-Dry_mhhJ.js +5 -0
  71. package/dist/ui/assets/openai-responses-Bmov8oh7.js +1 -0
  72. package/dist/ui/assets/{openai-responses-shared-B1lth5mr.js → openai-responses-shared-Ct3FUe7d.js} +4 -4
  73. package/dist/ui/assets/panel-rpc-Ck8CVyMh.js +1 -0
  74. package/dist/ui/assets/panel-rpc-DqT2FG7c.js +1 -0
  75. package/dist/ui/assets/panel-rpc-handlers-CEpB4s-n.js +2 -0
  76. package/dist/ui/assets/{picker-approval-EweLNWgE.js → picker-approval-tzbkMw-e.js} +1 -1
  77. package/dist/ui/assets/preload-helper-zJ_50EbN.js +1 -0
  78. package/dist/ui/assets/provider-Bu84IJif.js +1 -0
  79. package/dist/ui/assets/provider-CkWZObGz.js +2 -0
  80. package/dist/ui/assets/provider-store-access-6diGA3zc.js +1 -0
  81. package/dist/ui/assets/provider-store-access-KstUmZ39.js +1 -0
  82. package/dist/ui/assets/{providers-BmSZZhhm.js → providers-Dqi1y25H.js} +1 -1
  83. package/dist/ui/assets/quick-llm-7TCMcdio.js +1 -0
  84. package/dist/ui/assets/remote-cdp-transport-Cf0sDZ5N.js +1 -0
  85. package/dist/ui/assets/{remote-terminal-view-Hlq3HwiU.js → remote-terminal-view-FVcjc7kw.js} +1 -1
  86. package/dist/ui/assets/secret-env-DcfTe28K.js +1 -0
  87. package/dist/ui/assets/session-freezer-1L0xsBeg.js +1 -0
  88. package/dist/ui/assets/setup-sprinkle-exec-BGXT8k4k.js +1 -0
  89. package/dist/ui/assets/setup-sudo-_cBqLWHH.js +1 -0
  90. package/dist/ui/assets/slicc-editor-BdfBeQCF.js +12 -0
  91. package/dist/ui/assets/speak-C8nGyR-z.js +1 -0
  92. package/dist/ui/assets/speak-lc1xl5Fy.js +1 -0
  93. package/dist/ui/assets/speech-GZe1rUoJ.js +1 -0
  94. package/dist/ui/assets/sprinkle-manager-Pfbc1BH8.js +1 -0
  95. package/dist/ui/assets/{sprinkle-renderer-5HX0pMZZ.js → sprinkle-renderer-GiRRbdBx.js} +3 -3
  96. package/dist/ui/assets/src-DlEHAkLd.js +1 -0
  97. package/dist/ui/assets/{store-CQo5JYZe.js → store-B3VfUVG6.js} +1 -1
  98. package/dist/ui/assets/{sudo-fe6QprlZ.js → sudo-CZTI9OeD.js} +1 -1
  99. package/dist/ui/assets/sync-dialog-BFKWO6DT.js +1 -0
  100. package/dist/ui/assets/tool-ui-YOPqzMmL.js +1 -0
  101. package/dist/ui/assets/transform-messages-DzB_lMo-.js +1 -0
  102. package/dist/ui/assets/transformers-env-6vj5CcH9.js +1 -0
  103. package/dist/ui/assets/transformers-env-CCpYiaIa.js +1 -0
  104. package/dist/ui/assets/transformers.web-C9_H_wuQ.js +37 -0
  105. package/dist/ui/assets/transformers.web-DJfCkvxA.js +43 -0
  106. package/dist/ui/assets/{tray-leave-runtime--Ue08Cke.js → tray-leave-runtime-CdAgBa02.js} +1 -1
  107. package/dist/ui/assets/upgrade-detection--E7KkpNj.js +1 -0
  108. package/dist/ui/assets/voice-reply-BdYE1gSs.js +1 -0
  109. package/dist/ui/assets/{wc-attach-xs9Fh-R8.js → wc-attach-DAWHF0q6.js} +3 -3
  110. package/dist/ui/assets/{wc-detached-ux_E6SNJ.js → wc-detached-DaE992Vl.js} +1 -1
  111. package/dist/ui/assets/wc-extension-CI60x7Bm.js +2 -0
  112. package/dist/ui/assets/{wc-live-DHS3FYU1.js → wc-live-C_qPXh6O.js} +11 -11
  113. package/dist/ui/assets/wc-nav-Fk2p4da7.js +2 -0
  114. package/dist/ui/assets/wc-onboarding-CKZm1pcF.js +2 -0
  115. package/dist/ui/assets/wc-placeholder-DcxEXlT1.js +4 -0
  116. package/dist/ui/assets/{wc-settings-DiYFz75I.js → wc-settings-CrD6Tm6Z.js} +3 -3
  117. package/dist/ui/assets/{wc-shell-9F74yNEh.js → wc-shell-DPYESGkK.js} +233 -110
  118. package/dist/ui/assets/wc-sprinkles-DEfLhO36.js +2 -0
  119. package/dist/ui/assets/wc-tray-CP8sez4_.js +5 -0
  120. package/dist/ui/assets/wc-voice-erm0EtRv.js +1 -0
  121. package/dist/ui/assets/welcome-detection-Cr8mNEkt.js +1 -0
  122. package/dist/ui/assets/whisper-session-DwkDWttW.js +2 -0
  123. package/dist/ui/assets/xai-grok-BpmkOGg0.js +1 -0
  124. package/dist/ui/assets/xai-grok-CUqytO26.js +1 -0
  125. package/dist/ui/index.html +15 -1
  126. package/dist/ui/packages/webapp/index.html +15 -1
  127. package/package.json +1 -1
  128. package/dist/ui/assets/adobe-B4ZijlN3.js +0 -1
  129. package/dist/ui/assets/adobe-CXtz_LR-.js +0 -2
  130. package/dist/ui/assets/azure-openai-C-3E46Ld.js +0 -1
  131. package/dist/ui/assets/azure-openai-DTW6COMC.js +0 -1
  132. package/dist/ui/assets/azure-openai-responses-CdvI3ZMk.js +0 -1
  133. package/dist/ui/assets/dip-_QvZN8wj.js +0 -1
  134. package/dist/ui/assets/esp8266-91jA_HHD.js +0 -1
  135. package/dist/ui/assets/fs-C3bDUkXJ.js +0 -2
  136. package/dist/ui/assets/github-CPCc-EUr.js +0 -1
  137. package/dist/ui/assets/github-DxSzH6PI.js +0 -2
  138. package/dist/ui/assets/github-copilot-BSdH-X0I.js +0 -1
  139. package/dist/ui/assets/github-copilot-C0PA1-T1.js +0 -2
  140. package/dist/ui/assets/google-Cp_gRCg5.js +0 -1
  141. package/dist/ui/assets/google-shared-BoLRjUxb.js +0 -11
  142. package/dist/ui/assets/google-vertex-IdSaJxmx.js +0 -1
  143. package/dist/ui/assets/hosted-config-apply-CizDb9Vw.js +0 -1
  144. package/dist/ui/assets/legacy-styles-Bt2Mk3g2.js +0 -2
  145. package/dist/ui/assets/magick-wasm-BCSDiya9.js +0 -1
  146. package/dist/ui/assets/main-D7K1MTaQ.js +0 -88
  147. package/dist/ui/assets/main-cherry-CXrrVAC-.js +0 -1
  148. package/dist/ui/assets/mime-types-BG9Gw1bq.js +0 -1
  149. package/dist/ui/assets/mount-BYWcec4u.js +0 -2
  150. package/dist/ui/assets/mount-id-Cy4nG68v.js +0 -1
  151. package/dist/ui/assets/mount-picker-popup-B4U0fkZK.js +0 -1
  152. package/dist/ui/assets/new-session-C8X_CG95.js +0 -1
  153. package/dist/ui/assets/oauth-bootstrap-DIqfOl-7.js +0 -2
  154. package/dist/ui/assets/oauth-service-CmHwn7zK.js +0 -1
  155. package/dist/ui/assets/onboarding-orchestrator-DSR8Msku.js +0 -1
  156. package/dist/ui/assets/openai-codex-Bnd4L2L7.js +0 -1
  157. package/dist/ui/assets/openai-codex-DkqkFtKq.js +0 -1
  158. package/dist/ui/assets/openai-completions-CnLJNyQk.js +0 -5
  159. package/dist/ui/assets/openai-responses-TN943MT8.js +0 -1
  160. package/dist/ui/assets/panel-rpc-Bcvr75SR.js +0 -1
  161. package/dist/ui/assets/panel-rpc-handlers-BgzkmaOE.js +0 -2
  162. package/dist/ui/assets/provider-DQ7BvBZw.js +0 -2
  163. package/dist/ui/assets/provider-settings-VV6aNiP5.js +0 -99
  164. package/dist/ui/assets/provider-store-access-BGKXkdbd.js +0 -1
  165. package/dist/ui/assets/provider-store-access-Vtg1yxDc.js +0 -1
  166. package/dist/ui/assets/provider-tWBv0sFX.js +0 -1
  167. package/dist/ui/assets/quick-llm-DdZDN1QH.js +0 -1
  168. package/dist/ui/assets/remote-cdp-transport-B3-CFmk-.js +0 -1
  169. package/dist/ui/assets/secret-env-CkbRu-AG.js +0 -1
  170. package/dist/ui/assets/session-freezer-JMR8P1Lt.js +0 -1
  171. package/dist/ui/assets/setup-sprinkle-exec-ByJwHfyz.js +0 -1
  172. package/dist/ui/assets/setup-sudo-DPXnK0Zw.js +0 -1
  173. package/dist/ui/assets/slicc-editor-BxRqmU98.js +0 -12
  174. package/dist/ui/assets/sprinkle-manager-CqLTFoc9.js +0 -1
  175. package/dist/ui/assets/sync-dialog-C1-e9vyv.js +0 -1
  176. package/dist/ui/assets/tray-runtime-config-BRnpyDNS.js +0 -1
  177. package/dist/ui/assets/upgrade-detection-CHRBJqBB.js +0 -1
  178. package/dist/ui/assets/wc-extension-BLxY1h5k.js +0 -2
  179. package/dist/ui/assets/wc-nav-BZZe3rw8.js +0 -2
  180. package/dist/ui/assets/wc-onboarding-Cz9h4OE8.js +0 -2
  181. package/dist/ui/assets/wc-placeholder-CO111fjo.js +0 -4
  182. package/dist/ui/assets/wc-sprinkles-CUllz5Rn.js +0 -2
  183. package/dist/ui/assets/wc-tray-DnIxlO0o.js +0 -5
  184. package/dist/ui/assets/wc-voice-DyAmRENA.js +0 -1
  185. package/dist/ui/assets/welcome-detection-D-eB9s6-.js +0 -1
  186. package/dist/ui/assets/xai-grok-BNfjuAeJ.js +0 -1
  187. package/dist/ui/assets/xai-grok-D8Dda6Qy.js +0 -1
  188. /package/dist/ui/assets/{dist-C6lFkA1A.js → dist-C6lFkA1A2.js} +0 -0
@@ -1,99 +0,0 @@
1
- import{r as e,t}from"./chunk-CMxvf4Kt.js";import{t as n}from"./logger-LESFN7Hj.js";import{n as r,r as i}from"./tool-ui-N76-EdVc.js";import{n as a,r as o}from"./src-CpdsjHiA.js";import{n as s,r as c}from"./panel-rpc-Bcvr75SR.js";import{n as l,o as u,t as d}from"./providers-BmSZZhhm.js";import{c as f,d as p,r as m,t as h,u as g}from"./bedrock-camp-wxdDcDkR.js";import{d as _,l as v,u as y}from"./transform-messages-C1X1O3BY.js";let b={state:`inactive`,joinUrl:null,trayId:null,error:null,lastPingTime:null,reconnectAttempts:0,attachAttempts:0,lastAttachCode:null,connectingSince:null,lastError:null};function x(){return{...b}}const S=new Set;function ee(e){return S.add(e),()=>{S.delete(e)}}async function te(e,t,n,r,i,a){let o=[...e],s={...t,messages:[...t.messages,...e]};await r({type:`agent_start`}),await r({type:`turn_start`});for(let t of e)await r({type:`message_start`,message:t}),await r({type:`message_end`,message:t});return await re(s,o,n,i,r,a),o}async function ne(e,t,n,r,i){if(e.messages.length===0)throw Error(`Cannot continue: no messages in context`);if(e.messages[e.messages.length-1].role===`assistant`)throw Error(`Cannot continue from message role: assistant`);let a=[],o={...e};return await n({type:`agent_start`}),await n({type:`turn_start`}),await re(o,a,t,r,n,i),a}async function re(e,t,n,r,i,a){let o=e,s=n,c=!0,l=await s.getSteeringMessages?.()||[];for(;;){let e=!0;for(;e||l.length>0;){if(c?c=!1:await i({type:`turn_start`}),l.length>0){for(let e of l)await i({type:`message_start`,message:e}),await i({type:`message_end`,message:e}),o.messages.push(e),t.push(e);l=[]}let n=await ie(o,s,r,i,a);if(t.push(n),n.stopReason===`error`||n.stopReason===`aborted`){await i({type:`turn_end`,message:n,toolResults:[]}),await i({type:`agent_end`,messages:t});return}let u=n.content.filter(e=>e.type===`toolCall`),d=[];if(e=!1,u.length>0){let a=await ae(o,n,s,r,i);d.push(...a.messages),e=!a.terminate;for(let e of d)o.messages.push(e),t.push(e)}await i({type:`turn_end`,message:n,toolResults:d});let f={message:n,toolResults:d,context:o,newMessages:t},p=await s.prepareNextTurn?.(f);if(p&&(o=p.context??o,s={...s,model:p.model??s.model,reasoning:p.thinkingLevel===void 0?s.reasoning:p.thinkingLevel===`off`?void 0:p.thinkingLevel}),await s.shouldStopAfterTurn?.({message:n,toolResults:d,context:o,newMessages:t})){await i({type:`agent_end`,messages:t});return}l=await s.getSteeringMessages?.()||[]}let n=await s.getFollowUpMessages?.()||[];if(n.length>0){l=n;continue}break}await i({type:`agent_end`,messages:t})}async function ie(e,t,n,r,i){let a=e.messages;t.transformContext&&(a=await t.transformContext(a,n));let o=await t.convertToLlm(a),s={systemPrompt:e.systemPrompt,messages:o,tools:e.tools},c=i||p,l=(t.getApiKey?await t.getApiKey(t.model.provider):void 0)||t.apiKey,u=await c(t.model,s,{...t,apiKey:l,signal:n}),d=null,f=!1;for await(let t of u)switch(t.type){case`start`:d=t.partial,e.messages.push(d),f=!0,await r({type:`message_start`,message:{...d}});break;case`text_start`:case`text_delta`:case`text_end`:case`thinking_start`:case`thinking_delta`:case`thinking_end`:case`toolcall_start`:case`toolcall_delta`:case`toolcall_end`:d&&(d=t.partial,e.messages[e.messages.length-1]=d,await r({type:`message_update`,assistantMessageEvent:t,message:{...d}}));break;case`done`:case`error`:{let t=await u.result();return f?e.messages[e.messages.length-1]=t:e.messages.push(t),f||await r({type:`message_start`,message:{...t}}),await r({type:`message_end`,message:t}),t}}let m=await u.result();return f?e.messages[e.messages.length-1]=m:(e.messages.push(m),await r({type:`message_start`,message:{...m}})),await r({type:`message_end`,message:m}),m}async function ae(e,t,n,r,i){let a=t.content.filter(e=>e.type===`toolCall`),o=a.some(t=>e.tools?.find(e=>e.name===t.name)?.executionMode===`sequential`);return n.toolExecution===`sequential`||o?oe(e,t,a,n,r,i):C(e,t,a,n,r,i)}async function oe(e,t,n,r,i,a){let o=[],s=[];for(let c of n){await a({type:`tool_execution_start`,toolCallId:c.id,toolName:c.name,args:c.arguments});let n=await w(e,t,c,r,i),l;l=n.kind===`immediate`?{toolCall:c,result:n.result,isError:n.isError}:await ue(e,t,n,await le(n,i,a),r,i),await de(l,a);let u=fe(l);if(await pe(u,a),o.push(l),s.push(u),i?.aborted)break}return{messages:s,terminate:se(o)}}async function C(e,t,n,r,i,a){let o=[];for(let s of n){await a({type:`tool_execution_start`,toolCallId:s.id,toolName:s.name,args:s.arguments});let n=await w(e,t,s,r,i);if(n.kind===`immediate`){let e={toolCall:s,result:n.result,isError:n.isError};if(await de(e,a),o.push(e),i?.aborted)break;continue}if(o.push(async()=>{let o=await ue(e,t,n,await le(n,i,a),r,i);return await de(o,a),o}),i?.aborted)break}let s=await Promise.all(o.map(e=>typeof e==`function`?e():Promise.resolve(e))),c=[];for(let e of s){let t=fe(e);await pe(t,a),c.push(t)}return{messages:c,terminate:se(s)}}function se(e){return e.length>0&&e.every(e=>e.result.terminate===!0)}function ce(e,t){if(!e.prepareArguments)return t;let n=e.prepareArguments(t.arguments);return n===t.arguments?t:{...t,arguments:n}}async function w(e,t,n,r,i){let a=e.tools?.find(e=>e.name===n.name);if(!a)return{kind:`immediate`,result:T(`Tool ${n.name} not found`),isError:!0};try{let o=f(a,ce(a,n));if(r.beforeToolCall){let a=await r.beforeToolCall({assistantMessage:t,toolCall:n,args:o,context:e},i);if(i?.aborted)return{kind:`immediate`,result:T(`Operation aborted`),isError:!0};if(a?.block)return{kind:`immediate`,result:T(a.reason||`Tool execution was blocked`),isError:!0}}return i?.aborted?{kind:`immediate`,result:T(`Operation aborted`),isError:!0}:{kind:`prepared`,toolCall:n,tool:a,args:o}}catch(e){return{kind:`immediate`,result:T(e instanceof Error?e.message:String(e)),isError:!0}}}async function le(e,t,n){let r=[];try{let i=await e.tool.execute(e.toolCall.id,e.args,t,t=>{r.push(Promise.resolve(n({type:`tool_execution_update`,toolCallId:e.toolCall.id,toolName:e.toolCall.name,args:e.toolCall.arguments,partialResult:t})))});return await Promise.all(r),{result:i,isError:!1}}catch(e){return await Promise.all(r),{result:T(e instanceof Error?e.message:String(e)),isError:!0}}}async function ue(e,t,n,r,i,a){let o=r.result,s=r.isError;if(i.afterToolCall)try{let r=await i.afterToolCall({assistantMessage:t,toolCall:n.toolCall,args:n.args,result:o,isError:s,context:e},a);r&&(o={content:r.content??o.content,details:r.details??o.details,terminate:r.terminate??o.terminate},s=r.isError??s)}catch(e){o=T(e instanceof Error?e.message:String(e)),s=!0}return{toolCall:n.toolCall,result:o,isError:s}}function T(e){return{content:[{type:`text`,text:e}],details:{}}}async function de(e,t){await t({type:`tool_execution_end`,toolCallId:e.toolCall.id,toolName:e.toolCall.name,result:e.result,isError:e.isError})}function fe(e){return{role:`toolResult`,toolCallId:e.toolCall.id,toolName:e.toolCall.name,content:e.result.content,details:e.result.details,isError:e.isError,timestamp:Date.now()}}async function pe(e,t){await t({type:`message_start`,message:e}),await t({type:`message_end`,message:e})}function me(e){return e.filter(e=>e.role===`user`||e.role===`assistant`||e.role===`toolResult`)}const he={input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},ge={id:`unknown`,name:`unknown`,api:`unknown`,provider:`unknown`,baseUrl:``,reasoning:!1,input:[],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:0,maxTokens:0};function _e(e){let t=e?.tools?.slice()??[],n=e?.messages?.slice()??[];return{systemPrompt:e?.systemPrompt??``,model:e?.model??ge,thinkingLevel:e?.thinkingLevel??`off`,get tools(){return t},set tools(e){t=e.slice()},get messages(){return n},set messages(e){n=e.slice()},isStreaming:!1,streamingMessage:void 0,pendingToolCalls:new Set,errorMessage:void 0}}var ve=class{messages=[];mode;constructor(e){this.mode=e}enqueue(e){this.messages.push(e)}hasItems(){return this.messages.length>0}drain(){if(this.mode===`all`){let e=this.messages.slice();return this.messages=[],e}let e=this.messages[0];return e?(this.messages=this.messages.slice(1),[e]):[]}clear(){this.messages=[]}},ye=class{_state;listeners=new Set;steeringQueue;followUpQueue;convertToLlm;transformContext;streamFn;getApiKey;onPayload;onResponse;beforeToolCall;afterToolCall;prepareNextTurn;activeRun;sessionId;thinkingBudgets;transport;maxRetryDelayMs;toolExecution;constructor(e={}){this._state=_e(e.initialState),this.convertToLlm=e.convertToLlm??me,this.transformContext=e.transformContext,this.streamFn=e.streamFn??p,this.getApiKey=e.getApiKey,this.onPayload=e.onPayload,this.onResponse=e.onResponse,this.beforeToolCall=e.beforeToolCall,this.afterToolCall=e.afterToolCall,this.prepareNextTurn=e.prepareNextTurn,this.steeringQueue=new ve(e.steeringMode??`one-at-a-time`),this.followUpQueue=new ve(e.followUpMode??`one-at-a-time`),this.sessionId=e.sessionId,this.thinkingBudgets=e.thinkingBudgets,this.transport=e.transport??`auto`,this.maxRetryDelayMs=e.maxRetryDelayMs,this.toolExecution=e.toolExecution??`parallel`}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}get state(){return this._state}set steeringMode(e){this.steeringQueue.mode=e}get steeringMode(){return this.steeringQueue.mode}set followUpMode(e){this.followUpQueue.mode=e}get followUpMode(){return this.followUpQueue.mode}steer(e){this.steeringQueue.enqueue(e)}followUp(e){this.followUpQueue.enqueue(e)}clearSteeringQueue(){this.steeringQueue.clear()}clearFollowUpQueue(){this.followUpQueue.clear()}clearAllQueues(){this.clearSteeringQueue(),this.clearFollowUpQueue()}hasQueuedMessages(){return this.steeringQueue.hasItems()||this.followUpQueue.hasItems()}get signal(){return this.activeRun?.abortController.signal}abort(){this.activeRun?.abortController.abort()}waitForIdle(){return this.activeRun?.promise??Promise.resolve()}reset(){this._state.messages=[],this._state.isStreaming=!1,this._state.streamingMessage=void 0,this._state.pendingToolCalls=new Set,this._state.errorMessage=void 0,this.clearFollowUpQueue(),this.clearSteeringQueue()}async prompt(e,t){if(this.activeRun)throw Error(`Agent is already processing a prompt. Use steer() or followUp() to queue messages, or wait for completion.`);let n=this.normalizePromptInput(e,t);await this.runPromptMessages(n)}async continue(){if(this.activeRun)throw Error(`Agent is already processing. Wait for completion before continuing.`);let e=this._state.messages[this._state.messages.length-1];if(!e)throw Error(`No messages to continue from`);if(e.role===`assistant`){let e=this.steeringQueue.drain();if(e.length>0){await this.runPromptMessages(e,{skipInitialSteeringPoll:!0});return}let t=this.followUpQueue.drain();if(t.length>0){await this.runPromptMessages(t);return}throw Error(`Cannot continue from message role: assistant`)}await this.runContinuation()}normalizePromptInput(e,t){if(Array.isArray(e))return e;if(typeof e!=`string`)return[e];let n=[{type:`text`,text:e}];return t&&t.length>0&&n.push(...t),[{role:`user`,content:n,timestamp:Date.now()}]}async runPromptMessages(e,t={}){await this.runWithLifecycle(async n=>{await te(e,this.createContextSnapshot(),this.createLoopConfig(t),e=>this.processEvents(e),n,this.streamFn)})}async runContinuation(){await this.runWithLifecycle(async e=>{await ne(this.createContextSnapshot(),this.createLoopConfig(),e=>this.processEvents(e),e,this.streamFn)})}createContextSnapshot(){return{systemPrompt:this._state.systemPrompt,messages:this._state.messages.slice(),tools:this._state.tools.slice()}}createLoopConfig(e={}){let t=e.skipInitialSteeringPoll===!0;return{model:this._state.model,reasoning:this._state.thinkingLevel===`off`?void 0:this._state.thinkingLevel,sessionId:this.sessionId,onPayload:this.onPayload,onResponse:this.onResponse,transport:this.transport,thinkingBudgets:this.thinkingBudgets,maxRetryDelayMs:this.maxRetryDelayMs,toolExecution:this.toolExecution,beforeToolCall:this.beforeToolCall,afterToolCall:this.afterToolCall,prepareNextTurn:this.prepareNextTurn?async()=>await this.prepareNextTurn?.(this.signal):void 0,convertToLlm:this.convertToLlm,transformContext:this.transformContext,getApiKey:this.getApiKey,getSteeringMessages:async()=>t?(t=!1,[]):this.steeringQueue.drain(),getFollowUpMessages:async()=>this.followUpQueue.drain()}}async runWithLifecycle(e){if(this.activeRun)throw Error(`Agent is already processing.`);let t=new AbortController,n=()=>{},r=new Promise(e=>{n=e});this.activeRun={promise:r,resolve:n,abortController:t},this._state.isStreaming=!0,this._state.streamingMessage=void 0,this._state.errorMessage=void 0;try{await e(t.signal)}catch(e){await this.handleRunFailure(e,t.signal.aborted)}finally{this.finishRun()}}async handleRunFailure(e,t){let n={role:`assistant`,content:[{type:`text`,text:``}],api:this._state.model.api,provider:this._state.model.provider,model:this._state.model.id,usage:he,stopReason:t?`aborted`:`error`,errorMessage:e instanceof Error?e.message:String(e),timestamp:Date.now()};await this.processEvents({type:`message_start`,message:n}),await this.processEvents({type:`message_end`,message:n}),await this.processEvents({type:`turn_end`,message:n,toolResults:[]}),await this.processEvents({type:`agent_end`,messages:[n]})}finishRun(){this._state.isStreaming=!1,this._state.streamingMessage=void 0,this._state.pendingToolCalls=new Set,this.activeRun?.resolve(),this.activeRun=void 0}async processEvents(e){switch(e.type){case`message_start`:this._state.streamingMessage=e.message;break;case`message_update`:this._state.streamingMessage=e.message;break;case`message_end`:this._state.streamingMessage=void 0,this._state.messages.push(e.message);break;case`tool_execution_start`:{let t=new Set(this._state.pendingToolCalls);t.add(e.toolCallId),this._state.pendingToolCalls=t;break}case`tool_execution_end`:{let t=new Set(this._state.pendingToolCalls);t.delete(e.toolCallId),this._state.pendingToolCalls=t;break}case`turn_end`:e.message.role===`assistant`&&e.message.errorMessage&&(this._state.errorMessage=e.message.errorMessage);break;case`agent_end`:this._state.streamingMessage=void 0;break}let t=this.activeRun?.abortController.signal;if(!t)throw Error(`Agent listener invoked outside active run`);for(let n of this.listeners)await n(e,t)}};const be=Symbol.for(`yaml.alias`),xe=Symbol.for(`yaml.document`),E=Symbol.for(`yaml.map`),Se=Symbol.for(`yaml.pair`),Ce=Symbol.for(`yaml.scalar`),we=Symbol.for(`yaml.seq`),D=Symbol.for(`yaml.node.type`),O=e=>!!e&&typeof e==`object`&&e[D]===be,Te=e=>!!e&&typeof e==`object`&&e[D]===xe,Ee=e=>!!e&&typeof e==`object`&&e[D]===E,k=e=>!!e&&typeof e==`object`&&e[D]===Se,A=e=>!!e&&typeof e==`object`&&e[D]===Ce,De=e=>!!e&&typeof e==`object`&&e[D]===we;function j(e){if(e&&typeof e==`object`)switch(e[D]){case E:case we:return!0}return!1}function M(e){if(e&&typeof e==`object`)switch(e[D]){case be:case E:case Ce:case we:return!0}return!1}const Oe=e=>(A(e)||j(e))&&!!e.anchor,N=Symbol(`break visit`),ke=Symbol(`skip children`),P=Symbol(`remove node`);function Ae(e,t){let n=Me(t);Te(e)?F(null,e.contents,n,Object.freeze([e]))===P&&(e.contents=null):F(null,e,n,Object.freeze([]))}Ae.BREAK=N,Ae.SKIP=ke,Ae.REMOVE=P;function F(e,t,n,r){let i=Ne(e,t,n,r);if(M(i)||k(i))return Pe(e,r,i),F(e,i,n,r);if(typeof i!=`symbol`){if(j(t)){r=Object.freeze(r.concat(t));for(let e=0;e<t.items.length;++e){let i=F(e,t.items[e],n,r);if(typeof i==`number`)e=i-1;else if(i===N)return N;else i===P&&(t.items.splice(e,1),--e)}}else if(k(t)){r=Object.freeze(r.concat(t));let e=F(`key`,t.key,n,r);if(e===N)return N;e===P&&(t.key=null);let i=F(`value`,t.value,n,r);if(i===N)return N;i===P&&(t.value=null)}}return i}async function je(e,t){let n=Me(t);Te(e)?await I(null,e.contents,n,Object.freeze([e]))===P&&(e.contents=null):await I(null,e,n,Object.freeze([]))}je.BREAK=N,je.SKIP=ke,je.REMOVE=P;async function I(e,t,n,r){let i=await Ne(e,t,n,r);if(M(i)||k(i))return Pe(e,r,i),I(e,i,n,r);if(typeof i!=`symbol`){if(j(t)){r=Object.freeze(r.concat(t));for(let e=0;e<t.items.length;++e){let i=await I(e,t.items[e],n,r);if(typeof i==`number`)e=i-1;else if(i===N)return N;else i===P&&(t.items.splice(e,1),--e)}}else if(k(t)){r=Object.freeze(r.concat(t));let e=await I(`key`,t.key,n,r);if(e===N)return N;e===P&&(t.key=null);let i=await I(`value`,t.value,n,r);if(i===N)return N;i===P&&(t.value=null)}}return i}function Me(e){return typeof e==`object`&&(e.Collection||e.Node||e.Value)?Object.assign({Alias:e.Node,Map:e.Node,Scalar:e.Node,Seq:e.Node},e.Value&&{Map:e.Value,Scalar:e.Value,Seq:e.Value},e.Collection&&{Map:e.Collection,Seq:e.Collection},e):e}function Ne(e,t,n,r){if(typeof n==`function`)return n(e,t,r);if(Ee(t))return n.Map?.(e,t,r);if(De(t))return n.Seq?.(e,t,r);if(k(t))return n.Pair?.(e,t,r);if(A(t))return n.Scalar?.(e,t,r);if(O(t))return n.Alias?.(e,t,r)}function Pe(e,t,n){let r=t[t.length-1];if(j(r))r.items[e]=n;else if(k(r))e===`key`?r.key=n:r.value=n;else if(Te(r))r.contents=n;else{let e=O(r)?`alias`:`scalar`;throw Error(`Cannot replace node with ${e} parent`)}}const Fe={"!":`%21`,",":`%2C`,"[":`%5B`,"]":`%5D`,"{":`%7B`,"}":`%7D`},Ie=e=>e.replace(/[!,[\]{}]/g,e=>Fe[e]);var Le=class e{constructor(t,n){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},e.defaultYaml,t),this.tags=Object.assign({},e.defaultTags,n)}clone(){let t=new e(this.yaml,this.tags);return t.docStart=this.docStart,t}atDocument(){let t=new e(this.yaml,this.tags);switch(this.yaml.version){case`1.1`:this.atNextDocument=!0;break;case`1.2`:this.atNextDocument=!1,this.yaml={explicit:e.defaultYaml.explicit,version:`1.2`},this.tags=Object.assign({},e.defaultTags);break}return t}add(t,n){this.atNextDocument&&=(this.yaml={explicit:e.defaultYaml.explicit,version:`1.1`},this.tags=Object.assign({},e.defaultTags),!1);let r=t.trim().split(/[ \t]+/),i=r.shift();switch(i){case`%TAG`:{if(r.length!==2&&(n(0,`%TAG directive should contain exactly two parts`),r.length<2))return!1;let[e,t]=r;return this.tags[e]=t,!0}case`%YAML`:{if(this.yaml.explicit=!0,r.length!==1)return n(0,`%YAML directive should contain exactly one part`),!1;let[e]=r;if(e===`1.1`||e===`1.2`)return this.yaml.version=e,!0;{let t=/^\d+\.\d+$/.test(e);return n(6,`Unsupported YAML version ${e}`,t),!1}}default:return n(0,`Unknown directive ${i}`,!0),!1}}tagName(e,t){if(e===`!`)return`!`;if(e[0]!==`!`)return t(`Not a valid tag: ${e}`),null;if(e[1]===`<`){let n=e.slice(2,-1);return n===`!`||n===`!!`?(t(`Verbatim tags aren't resolved, so ${e} is invalid.`),null):(e[e.length-1]!==`>`&&t(`Verbatim tags must end with a >`),n)}let[,n,r]=e.match(/^(.*!)([^!]*)$/s);r||t(`The ${e} tag has no suffix`);let i=this.tags[n];if(i)try{return i+decodeURIComponent(r)}catch(e){return t(String(e)),null}return n===`!`?e:(t(`Could not resolve tag: ${e}`),null)}tagString(e){for(let[t,n]of Object.entries(this.tags))if(e.startsWith(n))return t+Ie(e.substring(n.length));return e[0]===`!`?e:`!<${e}>`}toString(e){let t=this.yaml.explicit?[`%YAML ${this.yaml.version||`1.2`}`]:[],n=Object.entries(this.tags),r;if(e&&n.length>0&&M(e.contents)){let t={};Ae(e.contents,(e,n)=>{M(n)&&n.tag&&(t[n.tag]=!0)}),r=Object.keys(t)}else r=[];for(let[i,a]of n)i===`!!`&&a===`tag:yaml.org,2002:`||(!e||r.some(e=>e.startsWith(a)))&&t.push(`%TAG ${i} ${a}`);return t.join(`
2
- `)}};Le.defaultYaml={explicit:!1,version:`1.2`},Le.defaultTags={"!!":`tag:yaml.org,2002:`};function Re(e){if(/[\x00-\x19\s,[\]{}]/.test(e)){let t=`Anchor must not contain whitespace or control characters: ${JSON.stringify(e)}`;throw Error(t)}return!0}function ze(e,t,n,r){if(r&&typeof r==`object`)if(Array.isArray(r))for(let t=0,n=r.length;t<n;++t){let n=r[t],i=ze(e,r,String(t),n);i===void 0?delete r[t]:i!==n&&(r[t]=i)}else if(r instanceof Map)for(let t of Array.from(r.keys())){let n=r.get(t),i=ze(e,r,t,n);i===void 0?r.delete(t):i!==n&&r.set(t,i)}else if(r instanceof Set)for(let t of Array.from(r)){let n=ze(e,r,t,t);n===void 0?r.delete(t):n!==t&&(r.delete(t),r.add(n))}else for(let[t,n]of Object.entries(r)){let i=ze(e,r,t,n);i===void 0?delete r[t]:i!==n&&(r[t]=i)}return e.call(t,n,r)}function L(e,t,n){if(Array.isArray(e))return e.map((e,t)=>L(e,String(t),n));if(e&&typeof e.toJSON==`function`){if(!n||!Oe(e))return e.toJSON(t,n);let r={aliasCount:0,count:1,res:void 0};n.anchors.set(e,r),n.onCreate=e=>{r.res=e,delete n.onCreate};let i=e.toJSON(t,n);return n.onCreate&&n.onCreate(i),i}return typeof e==`bigint`&&!n?.keep?Number(e):e}var Be=class{constructor(e){Object.defineProperty(this,D,{value:e})}clone(){let e=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return this.range&&(e.range=this.range.slice()),e}toJS(e,{mapAsMap:t,maxAliasCount:n,onAnchor:r,reviver:i}={}){if(!Te(e))throw TypeError(`A document argument is required`);let a={anchors:new Map,doc:e,keep:!0,mapAsMap:t===!0,mapKeyWarned:!1,maxAliasCount:typeof n==`number`?n:100},o=L(this,``,a);if(typeof r==`function`)for(let{count:e,res:t}of a.anchors.values())r(t,e);return typeof i==`function`?ze(i,{"":o},``,o):o}},Ve=class extends Be{constructor(e){super(be),this.source=e,Object.defineProperty(this,"tag",{set(){throw Error(`Alias nodes cannot have tags`)}})}resolve(e,t){if(t?.maxAliasCount===0)throw ReferenceError(`Alias resolution is disabled`);let n;t?.aliasResolveCache?n=t.aliasResolveCache:(n=[],Ae(e,{Node:(e,t)=>{(O(t)||Oe(t))&&n.push(t)}}),t&&(t.aliasResolveCache=n));let r;for(let e of n){if(e===this)break;e.anchor===this.source&&(r=e)}return r}toJSON(e,t){if(!t)return{source:this.source};let{anchors:n,doc:r,maxAliasCount:i}=t,a=this.resolve(r,t);if(!a){let e=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw ReferenceError(e)}let o=n.get(a);if(o||=(L(a,null,t),n.get(a)),o?.res===void 0)throw ReferenceError(`This should not happen: Alias anchor was not resolved?`);if(i>=0&&(o.count+=1,o.aliasCount===0&&(o.aliasCount=He(r,a,n)),o.count*o.aliasCount>i))throw ReferenceError(`Excessive alias count indicates a resource exhaustion attack`);return o.res}toString(e,t,n){let r=`*${this.source}`;if(e){if(Re(this.source),e.options.verifyAliasOrder&&!e.anchors.has(this.source)){let e=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw Error(e)}if(e.implicitKey)return`${r} `}return r}};function He(e,t,n){if(O(t)){let r=t.resolve(e),i=n&&r&&n.get(r);return i?i.count*i.aliasCount:0}else if(j(t)){let r=0;for(let i of t.items){let t=He(e,i,n);t>r&&(r=t)}return r}else if(k(t)){let r=He(e,t.key,n),i=He(e,t.value,n);return Math.max(r,i)}return 1}const Ue=e=>!e||typeof e!=`function`&&typeof e!=`object`;var R=class extends Be{constructor(e){super(Ce),this.value=e}toJSON(e,t){return t?.keep?this.value:L(this.value,e,t)}toString(){return String(this.value)}};R.BLOCK_FOLDED=`BLOCK_FOLDED`,R.BLOCK_LITERAL=`BLOCK_LITERAL`,R.PLAIN=`PLAIN`,R.QUOTE_DOUBLE=`QUOTE_DOUBLE`,R.QUOTE_SINGLE=`QUOTE_SINGLE`;function We(e,t,n){if(t){let e=n.filter(e=>e.tag===t),r=e.find(e=>!e.format)??e[0];if(!r)throw Error(`Tag ${t} not found`);return r}return n.find(t=>t.identify?.(e)&&!t.format)}function Ge(e,t,n){if(Te(e)&&(e=e.contents),M(e))return e;if(k(e)){let t=n.schema[E].createNode?.(n.schema,null,n);return t.items.push(e),t}(e instanceof String||e instanceof Number||e instanceof Boolean||typeof BigInt<`u`&&e instanceof BigInt)&&(e=e.valueOf());let{aliasDuplicateObjects:r,onAnchor:i,onTagObj:a,schema:o,sourceObjects:s}=n,c;if(r&&e&&typeof e==`object`){if(c=s.get(e),c)return c.anchor??=i(e),new Ve(c.anchor);c={anchor:null,node:null},s.set(e,c)}t?.startsWith(`!!`)&&(t=`tag:yaml.org,2002:`+t.slice(2));let l=We(e,t,o.tags);if(!l){if(e&&typeof e.toJSON==`function`&&(e=e.toJSON()),!e||typeof e!=`object`){let t=new R(e);return c&&(c.node=t),t}l=e instanceof Map?o[E]:Symbol.iterator in Object(e)?o[we]:o[E]}a&&(a(l),delete n.onTagObj);let u=l?.createNode?l.createNode(n.schema,e,n):typeof l?.nodeClass?.from==`function`?l.nodeClass.from(n.schema,e,n):new R(e);return t?u.tag=t:l.default||(u.tag=l.tag),c&&(c.node=u),u}function Ke(e,t,n){let r=n;for(let e=t.length-1;e>=0;--e){let n=t[e];if(typeof n==`number`&&Number.isInteger(n)&&n>=0){let e=[];e[n]=r,r=e}else r=new Map([[n,r]])}return Ge(r,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:()=>{throw Error(`This should not happen, please report a bug.`)},schema:e,sourceObjects:new Map})}const qe=e=>e==null||typeof e==`object`&&!!e[Symbol.iterator]().next().done;var Je=class extends Be{constructor(e,t){super(e),Object.defineProperty(this,"schema",{value:t,configurable:!0,enumerable:!1,writable:!0})}clone(e){let t=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return e&&(t.schema=e),t.items=t.items.map(t=>M(t)||k(t)?t.clone(e):t),this.range&&(t.range=this.range.slice()),t}addIn(e,t){if(qe(e))this.add(t);else{let[n,...r]=e,i=this.get(n,!0);if(j(i))i.addIn(r,t);else if(i===void 0&&this.schema)this.set(n,Ke(this.schema,r,t));else throw Error(`Expected YAML collection at ${n}. Remaining path: ${r}`)}}deleteIn(e){let[t,...n]=e;if(n.length===0)return this.delete(t);let r=this.get(t,!0);if(j(r))return r.deleteIn(n);throw Error(`Expected YAML collection at ${t}. Remaining path: ${n}`)}getIn(e,t){let[n,...r]=e,i=this.get(n,!0);return r.length===0?!t&&A(i)?i.value:i:j(i)?i.getIn(r,t):void 0}hasAllNullValues(e){return this.items.every(t=>{if(!k(t))return!1;let n=t.value;return n==null||e&&A(n)&&n.value==null&&!n.commentBefore&&!n.comment&&!n.tag})}hasIn(e){let[t,...n]=e;if(n.length===0)return this.has(t);let r=this.get(t,!0);return j(r)?r.hasIn(n):!1}setIn(e,t){let[n,...r]=e;if(r.length===0)this.set(n,t);else{let e=this.get(n,!0);if(j(e))e.setIn(r,t);else if(e===void 0&&this.schema)this.set(n,Ke(this.schema,r,t));else throw Error(`Expected YAML collection at ${n}. Remaining path: ${r}`)}}};const Ye=e=>e.replace(/^(?!$)(?: $)?/gm,`#`);function Xe(e,t){return/^\n+$/.test(e)?e.substring(1):t?e.replace(/^(?! *$)/gm,t):e}const z=(e,t,n)=>e.endsWith(`
3
- `)?Xe(n,t):n.includes(`
4
- `)?`
5
- `+Xe(n,t):(e.endsWith(` `)?``:` `)+n,Ze=`flow`;function Qe(e,t,n=`flow`,{indentAtStart:r,lineWidth:i=80,minContentWidth:a=20,onFold:o,onOverflow:s}={}){if(!i||i<0)return e;i<a&&(a=0);let c=Math.max(1+a,1+i-t.length);if(e.length<=c)return e;let l=[],u={},d=i-t.length;typeof r==`number`&&(r>i-Math.max(2,a)?l.push(0):d=i-r);let f,p,m=!1,h=-1,g=-1,_=-1;n===`block`&&(h=$e(e,h,t.length),h!==-1&&(d=h+c));for(let r;r=e[h+=1];){if(n===`quoted`&&r===`\\`){switch(g=h,e[h+1]){case`x`:h+=3;break;case`u`:h+=5;break;case`U`:h+=9;break;default:h+=1}_=h}if(r===`
6
- `)n===`block`&&(h=$e(e,h,t.length)),d=h+t.length+c,f=void 0;else{if(r===` `&&p&&p!==` `&&p!==`
7
- `&&p!==` `){let t=e[h+1];t&&t!==` `&&t!==`
8
- `&&t!==` `&&(f=h)}if(h>=d)if(f)l.push(f),d=f+c,f=void 0;else if(n===`quoted`){for(;p===` `||p===` `;)p=r,r=e[h+=1],m=!0;let t=h>_+1?h-2:g-1;if(u[t])return e;l.push(t),u[t]=!0,d=t+c,f=void 0}else m=!0}p=r}if(m&&s&&s(),l.length===0)return e;o&&o();let v=e.slice(0,l[0]);for(let r=0;r<l.length;++r){let i=l[r],a=l[r+1]||e.length;i===0?v=`\n${t}${e.slice(0,a)}`:(n===`quoted`&&u[i]&&(v+=`${e[i]}\\`),v+=`\n${t}${e.slice(i+1,a)}`)}return v}function $e(e,t,n){let r=t,i=t+1,a=e[i];for(;a===` `||a===` `;)if(t<i+n)a=e[++t];else{do a=e[++t];while(a&&a!==`
9
- `);r=t,i=t+1,a=e[i]}return r}const et=(e,t)=>({indentAtStart:t?e.indent.length:e.indentAtStart,lineWidth:e.options.lineWidth,minContentWidth:e.options.minContentWidth}),tt=e=>/^(%|---|\.\.\.)/m.test(e);function nt(e,t,n){if(!t||t<0)return!1;let r=t-n,i=e.length;if(i<=r)return!1;for(let t=0,n=0;t<i;++t)if(e[t]===`
10
- `){if(t-n>r)return!0;if(n=t+1,i-n<=r)return!1}return!0}function rt(e,t){let n=JSON.stringify(e);if(t.options.doubleQuotedAsJSON)return n;let{implicitKey:r}=t,i=t.options.doubleQuotedMinMultiLineLength,a=t.indent||(tt(e)?` `:``),o=``,s=0;for(let e=0,t=n[e];t;t=n[++e])if(t===` `&&n[e+1]===`\\`&&n[e+2]===`n`&&(o+=n.slice(s,e)+`\\ `,e+=1,s=e,t=`\\`),t===`\\`)switch(n[e+1]){case`u`:{o+=n.slice(s,e);let t=n.substr(e+2,4);switch(t){case`0000`:o+=`\\0`;break;case`0007`:o+=`\\a`;break;case`000b`:o+=`\\v`;break;case`001b`:o+=`\\e`;break;case`0085`:o+=`\\N`;break;case`00a0`:o+=`\\_`;break;case`2028`:o+=`\\L`;break;case`2029`:o+=`\\P`;break;default:t.substr(0,2)===`00`?o+=`\\x`+t.substr(2):o+=n.substr(e,6)}e+=5,s=e+1}break;case`n`:if(r||n[e+2]===`"`||n.length<i)e+=1;else{for(o+=n.slice(s,e)+`
11
-
12
- `;n[e+2]===`\\`&&n[e+3]===`n`&&n[e+4]!==`"`;)o+=`
13
- `,e+=2;o+=a,n[e+2]===` `&&(o+=`\\`),e+=1,s=e+1}break;default:e+=1}return o=s?o+n.slice(s):n,r?o:Qe(o,a,`quoted`,et(t,!1))}function it(e,t){if(t.options.singleQuote===!1||t.implicitKey&&e.includes(`
14
- `)||/[ \t]\n|\n[ \t]/.test(e))return rt(e,t);let n=t.indent||(tt(e)?` `:``),r=`'`+e.replace(/'/g,`''`).replace(/\n+/g,`$&\n${n}`)+`'`;return t.implicitKey?r:Qe(r,n,Ze,et(t,!1))}function B(e,t){let{singleQuote:n}=t.options,r;if(n===!1)r=rt;else{let t=e.includes(`"`),i=e.includes(`'`);r=t&&!i?it:i&&!t?rt:n?it:rt}return r(e,t)}let at;try{at=RegExp(`(^|(?<!
15
- ))
16
- +(?!
17
- |$)`,`g`)}catch{at=/\n+(?!\n|$)/g}function ot({comment:e,type:t,value:n},r,i,a){let{blockQuote:o,commentString:s,lineWidth:c}=r.options;if(!o||/\n[\t ]+$/.test(n))return B(n,r);let l=r.indent||(r.forceBlockIndent||tt(n)?` `:``),u=o===`literal`?!0:o===`folded`||t===R.BLOCK_FOLDED?!1:t===R.BLOCK_LITERAL?!0:!nt(n,c,l.length);if(!n)return u?`|
18
- `:`>
19
- `;let d,f;for(f=n.length;f>0;--f){let e=n[f-1];if(e!==`
20
- `&&e!==` `&&e!==` `)break}let p=n.substring(f),m=p.indexOf(`
21
- `);m===-1?d=`-`:n===p||m!==p.length-1?(d=`+`,a&&a()):d=``,p&&=(n=n.slice(0,-p.length),p[p.length-1]===`
22
- `&&(p=p.slice(0,-1)),p.replace(at,`$&${l}`));let h=!1,g,_=-1;for(g=0;g<n.length;++g){let e=n[g];if(e===` `)h=!0;else if(e===`
23
- `)_=g;else break}let v=n.substring(0,_<g?_+1:g);v&&=(n=n.substring(v.length),v.replace(/\n+/g,`$&${l}`));let y=(h?l?`2`:`1`:``)+d;if(e&&(y+=` `+s(e.replace(/ ?[\r\n]+/g,` `)),i&&i()),!u){let e=n.replace(/\n+/g,`
24
- $&`).replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g,`$1$2`).replace(/\n+/g,`$&${l}`),i=!1,a=et(r,!0);o!==`folded`&&t!==R.BLOCK_FOLDED&&(a.onOverflow=()=>{i=!0});let s=Qe(`${v}${e}${p}`,l,`block`,a);if(!i)return`>${y}\n${l}${s}`}return n=n.replace(/\n+/g,`$&${l}`),`|${y}\n${l}${v}${n}${p}`}function st(e,t,n,r){let{type:i,value:a}=e,{actualString:o,implicitKey:s,indent:c,indentStep:l,inFlow:u}=t;if(s&&a.includes(`
25
- `)||u&&/[[\]{},]/.test(a))return B(a,t);if(/^[\n\t ,[\]{}#&*!|>'"%@`]|^[?-]$|^[?-][ \t]|[\n:][ \t]|[ \t]\n|[\n\t ]#|[\n\t :]$/.test(a))return s||u||!a.includes(`
26
- `)?B(a,t):ot(e,t,n,r);if(!s&&!u&&i!==R.PLAIN&&a.includes(`
27
- `))return ot(e,t,n,r);if(tt(a)){if(c===``)return t.forceBlockIndent=!0,ot(e,t,n,r);if(s&&c===l)return B(a,t)}let d=a.replace(/\n+/g,`$&\n${c}`);if(o){let e=e=>e.default&&e.tag!==`tag:yaml.org,2002:str`&&e.test?.test(d),{compat:n,tags:r}=t.doc.schema;if(r.some(e)||n?.some(e))return B(a,t)}return s?d:Qe(d,c,Ze,et(t,!1))}function ct(e,t,n,r){let{implicitKey:i,inFlow:a}=t,o=typeof e.value==`string`?e:Object.assign({},e,{value:String(e.value)}),{type:s}=e;s!==R.QUOTE_DOUBLE&&/[\x00-\x08\x0b-\x1f\x7f-\x9f\u{D800}-\u{DFFF}]/u.test(o.value)&&(s=R.QUOTE_DOUBLE);let c=e=>{switch(e){case R.BLOCK_FOLDED:case R.BLOCK_LITERAL:return i||a?B(o.value,t):ot(o,t,n,r);case R.QUOTE_DOUBLE:return rt(o.value,t);case R.QUOTE_SINGLE:return it(o.value,t);case R.PLAIN:return st(o,t,n,r);default:return null}},l=c(s);if(l===null){let{defaultKeyType:e,defaultStringType:n}=t.options,r=i&&e||n;if(l=c(r),l===null)throw Error(`Unsupported default string type ${r}`)}return l}function lt(e,t){let n=Object.assign({blockQuote:!0,commentString:Ye,defaultKeyType:null,defaultStringType:`PLAIN`,directives:null,doubleQuotedAsJSON:!1,doubleQuotedMinMultiLineLength:40,falseStr:`false`,flowCollectionPadding:!0,indentSeq:!0,lineWidth:80,minContentWidth:20,nullStr:`null`,simpleKeys:!1,singleQuote:null,trailingComma:!1,trueStr:`true`,verifyAliasOrder:!0},e.schema.toStringOptions,t),r;switch(n.collectionStyle){case`block`:r=!1;break;case`flow`:r=!0;break;default:r=null}return{anchors:new Set,doc:e,flowCollectionPadding:n.flowCollectionPadding?` `:``,indent:``,indentStep:typeof n.indent==`number`?` `.repeat(n.indent):` `,inFlow:r,options:n}}function ut(e,t){if(t.tag){let n=e.filter(e=>e.tag===t.tag);if(n.length>0)return n.find(e=>e.format===t.format)??n[0]}let n,r;if(A(t)){r=t.value;let i=e.filter(e=>e.identify?.(r));if(i.length>1){let e=i.filter(e=>e.test);e.length>0&&(i=e)}n=i.find(e=>e.format===t.format)??i.find(e=>!e.format)}else r=t,n=e.find(e=>e.nodeClass&&r instanceof e.nodeClass);if(!n){let e=r?.constructor?.name??(r===null?`null`:typeof r);throw Error(`Tag not resolved for ${e} value`)}return n}function dt(e,t,{anchors:n,doc:r}){if(!r.directives)return``;let i=[],a=(A(e)||j(e))&&e.anchor;a&&Re(a)&&(n.add(a),i.push(`&${a}`));let o=e.tag??(t.default?null:t.tag);return o&&i.push(r.directives.tagString(o)),i.join(` `)}function ft(e,t,n,r){if(k(e))return e.toString(t,n,r);if(O(e)){if(t.doc.directives)return e.toString(t);if(t.resolvedAliases?.has(e))throw TypeError(`Cannot stringify circular structure without alias nodes`);t.resolvedAliases?t.resolvedAliases.add(e):t.resolvedAliases=new Set([e]),e=e.resolve(t.doc)}let i,a=M(e)?e:t.doc.createNode(e,{onTagObj:e=>i=e});i??=ut(t.doc.schema.tags,a);let o=dt(a,i,t);o.length>0&&(t.indentAtStart=(t.indentAtStart??0)+o.length+1);let s=typeof i.stringify==`function`?i.stringify(a,t,n,r):A(a)?ct(a,t,n,r):a.toString(t,n,r);return o?A(a)||s[0]===`{`||s[0]===`[`?`${o} ${s}`:`${o}\n${t.indent}${s}`:s}function pt({key:e,value:t},n,r,i){let{allNullValues:a,doc:o,indent:s,indentStep:c,options:{commentString:l,indentSeq:u,simpleKeys:d}}=n,f=M(e)&&e.comment||null;if(d){if(f)throw Error(`With simple keys, key nodes cannot have comments`);if(j(e)||!M(e)&&typeof e==`object`)throw Error(`With simple keys, collection cannot be used as a key value`)}let p=!d&&(!e||f&&t==null&&!n.inFlow||j(e)||(A(e)?e.type===R.BLOCK_FOLDED||e.type===R.BLOCK_LITERAL:typeof e==`object`));n=Object.assign({},n,{allNullValues:!1,implicitKey:!p&&(d||!a),indent:s+c});let m=!1,h=!1,g=ft(e,n,()=>m=!0,()=>h=!0);if(!p&&!n.inFlow&&g.length>1024){if(d)throw Error(`With simple keys, single line scalar must not span more than 1024 characters`);p=!0}if(n.inFlow){if(a||t==null)return m&&r&&r(),g===``?`?`:p?`? ${g}`:g}else if(a&&!d||t==null&&p)return g=`? ${g}`,f&&!m?g+=z(g,n.indent,l(f)):h&&i&&i(),g;m&&(f=null),p?(f&&(g+=z(g,n.indent,l(f))),g=`? ${g}\n${s}:`):(g=`${g}:`,f&&(g+=z(g,n.indent,l(f))));let _,v,y;M(t)?(_=!!t.spaceBefore,v=t.commentBefore,y=t.comment):(_=!1,v=null,y=null,t&&typeof t==`object`&&(t=o.createNode(t))),n.implicitKey=!1,!p&&!f&&A(t)&&(n.indentAtStart=g.length+1),h=!1,!u&&c.length>=2&&!n.inFlow&&!p&&De(t)&&!t.flow&&!t.tag&&!t.anchor&&(n.indent=n.indent.substring(2));let b=!1,x=ft(t,n,()=>b=!0,()=>h=!0),S=` `;if(f||_||v){if(S=_?`
28
- `:``,v){let e=l(v);S+=`\n${Xe(e,n.indent)}`}x===``&&!n.inFlow?S===`
29
- `&&y&&(S=`
30
-
31
- `):S+=`\n${n.indent}`}else if(!p&&j(t)){let e=x[0],r=x.indexOf(`
32
- `),i=r!==-1,a=n.inFlow??t.flow??t.items.length===0;if(i||!a){let t=!1;if(i&&(e===`&`||e===`!`)){let n=x.indexOf(` `);e===`&`&&n!==-1&&n<r&&x[n+1]===`!`&&(n=x.indexOf(` `,n+1)),(n===-1||r<n)&&(t=!0)}t||(S=`\n${n.indent}`)}}else (x===``||x[0]===`
33
- `)&&(S=``);return g+=S+x,n.inFlow?b&&r&&r():y&&!b?g+=z(g,n.indent,l(y)):h&&i&&i(),g}function mt(e,t){(e===`debug`||e===`warn`)&&console.warn(t)}const ht={identify:e=>e===`<<`||typeof e==`symbol`&&e.description===`<<`,default:`key`,tag:`tag:yaml.org,2002:merge`,test:/^<<$/,resolve:()=>Object.assign(new R(Symbol(`<<`)),{addToJSMap:_t}),stringify:()=>`<<`},gt=(e,t)=>(ht.identify(t)||A(t)&&(!t.type||t.type===R.PLAIN)&&ht.identify(t.value))&&e?.doc.schema.tags.some(e=>e.tag===ht.tag&&e.default);function _t(e,t,n){let r=yt(e,n);if(De(r))for(let n of r.items)vt(e,t,n);else if(Array.isArray(r))for(let n of r)vt(e,t,n);else vt(e,t,r)}function vt(e,t,n){let r=yt(e,n);if(!Ee(r))throw Error(`Merge sources must be maps or map aliases`);let i=r.toJSON(null,e,Map);for(let[e,n]of i)t instanceof Map?t.has(e)||t.set(e,n):t instanceof Set?t.add(e):Object.prototype.hasOwnProperty.call(t,e)||Object.defineProperty(t,e,{value:n,writable:!0,enumerable:!0,configurable:!0});return t}function yt(e,t){return e&&O(t)?t.resolve(e.doc,e):t}function bt(e,t,{key:n,value:r}){if(M(n)&&n.addToJSMap)n.addToJSMap(e,t,r);else if(gt(e,n))_t(e,t,r);else{let i=L(n,``,e);if(t instanceof Map)t.set(i,L(r,i,e));else if(t instanceof Set)t.add(i);else{let a=xt(n,i,e),o=L(r,a,e);a in t?Object.defineProperty(t,a,{value:o,writable:!0,enumerable:!0,configurable:!0}):t[a]=o}}return t}function xt(e,t,n){if(t===null)return``;if(typeof t!=`object`)return String(t);if(M(e)&&n?.doc){let t=lt(n.doc,{});t.anchors=new Set;for(let e of n.anchors.keys())t.anchors.add(e.anchor);t.inFlow=!0,t.inStringifyKey=!0;let r=e.toString(t);if(!n.mapKeyWarned){let e=JSON.stringify(r);e.length>40&&(e=e.substring(0,36)+`..."`),mt(n.doc.options.logLevel,`Keys with collection values will be stringified due to JS Object restrictions: ${e}. Set mapAsMap: true to use object keys.`),n.mapKeyWarned=!0}return r}return JSON.stringify(t)}function St(e,t,n){return new V(Ge(e,void 0,n),Ge(t,void 0,n))}var V=class e{constructor(e,t=null){Object.defineProperty(this,D,{value:Se}),this.key=e,this.value=t}clone(t){let{key:n,value:r}=this;return M(n)&&(n=n.clone(t)),M(r)&&(r=r.clone(t)),new e(n,r)}toJSON(e,t){return bt(t,t?.mapAsMap?new Map:{},this)}toString(e,t,n){return e?.doc?pt(this,e,t,n):JSON.stringify(this)}};function Ct(e,t,n){return(t.inFlow??e.flow?Tt:wt)(e,t,n)}function wt({comment:e,items:t},n,{blockItemPrefix:r,flowChars:i,itemIndent:a,onChompKeep:o,onComment:s}){let{indent:c,options:{commentString:l}}=n,u=Object.assign({},n,{indent:a,type:null}),d=!1,f=[];for(let e=0;e<t.length;++e){let i=t[e],o=null;if(M(i))!d&&i.spaceBefore&&f.push(``),Et(n,f,i.commentBefore,d),i.comment&&(o=i.comment);else if(k(i)){let e=M(i.key)?i.key:null;e&&(!d&&e.spaceBefore&&f.push(``),Et(n,f,e.commentBefore,d))}d=!1;let s=ft(i,u,()=>o=null,()=>d=!0);o&&(s+=z(s,a,l(o))),d&&o&&(d=!1),f.push(r+s)}let p;if(f.length===0)p=i.start+i.end;else{p=f[0];for(let e=1;e<f.length;++e){let t=f[e];p+=t?`\n${c}${t}`:`
34
- `}}return e?(p+=`
35
- `+Xe(l(e),c),s&&s()):d&&o&&o(),p}function Tt({items:e},t,{flowChars:n,itemIndent:r}){let{indent:i,indentStep:a,flowCollectionPadding:o,options:{commentString:s}}=t;r+=a;let c=Object.assign({},t,{indent:r,inFlow:!0,type:null}),l=!1,u=0,d=[];for(let n=0;n<e.length;++n){let i=e[n],a=null;if(M(i))i.spaceBefore&&d.push(``),Et(t,d,i.commentBefore,!1),i.comment&&(a=i.comment);else if(k(i)){let e=M(i.key)?i.key:null;e&&(e.spaceBefore&&d.push(``),Et(t,d,e.commentBefore,!1),e.comment&&(l=!0));let n=M(i.value)?i.value:null;n?(n.comment&&(a=n.comment),n.commentBefore&&(l=!0)):i.value==null&&e?.comment&&(a=e.comment)}a&&(l=!0);let o=ft(i,c,()=>a=null);l||=d.length>u||o.includes(`
36
- `),n<e.length-1?o+=`,`:t.options.trailingComma&&(t.options.lineWidth>0&&(l||=d.reduce((e,t)=>e+t.length+2,2)+(o.length+2)>t.options.lineWidth),l&&(o+=`,`)),a&&(o+=z(o,r,s(a))),d.push(o),u=d.length}let{start:f,end:p}=n;if(d.length===0)return f+p;if(!l){let e=d.reduce((e,t)=>e+t.length+2,2);l=t.options.lineWidth>0&&e>t.options.lineWidth}if(l){let e=f;for(let t of d)e+=t?`\n${a}${i}${t}`:`
37
- `;return`${e}\n${i}${p}`}else return`${f}${o}${d.join(` `)}${o}${p}`}function Et({indent:e,options:{commentString:t}},n,r,i){if(r&&i&&(r=r.replace(/^\n+/,``)),r){let i=Xe(t(r),e);n.push(i.trimStart())}}function H(e,t){let n=A(t)?t.value:t;for(let r of e)if(k(r)&&(r.key===t||r.key===n||A(r.key)&&r.key.value===n))return r}var U=class extends Je{static get tagName(){return`tag:yaml.org,2002:map`}constructor(e){super(E,e),this.items=[]}static from(e,t,n){let{keepUndefined:r,replacer:i}=n,a=new this(e),o=(e,o)=>{if(typeof i==`function`)o=i.call(t,e,o);else if(Array.isArray(i)&&!i.includes(e))return;(o!==void 0||r)&&a.items.push(St(e,o,n))};if(t instanceof Map)for(let[e,n]of t)o(e,n);else if(t&&typeof t==`object`)for(let e of Object.keys(t))o(e,t[e]);return typeof e.sortMapEntries==`function`&&a.items.sort(e.sortMapEntries),a}add(e,t){let n;n=k(e)?e:!e||typeof e!=`object`||!(`key`in e)?new V(e,e?.value):new V(e.key,e.value);let r=H(this.items,n.key),i=this.schema?.sortMapEntries;if(r){if(!t)throw Error(`Key ${n.key} already set`);A(r.value)&&Ue(n.value)?r.value.value=n.value:r.value=n.value}else if(i){let e=this.items.findIndex(e=>i(n,e)<0);e===-1?this.items.push(n):this.items.splice(e,0,n)}else this.items.push(n)}delete(e){let t=H(this.items,e);return t?this.items.splice(this.items.indexOf(t),1).length>0:!1}get(e,t){let n=H(this.items,e)?.value;return(!t&&A(n)?n.value:n)??void 0}has(e){return!!H(this.items,e)}set(e,t){this.add(new V(e,t),!0)}toJSON(e,t,n){let r=n?new n:t?.mapAsMap?new Map:{};t?.onCreate&&t.onCreate(r);for(let e of this.items)bt(t,r,e);return r}toString(e,t,n){if(!e)return JSON.stringify(this);for(let e of this.items)if(!k(e))throw Error(`Map items must all be pairs; found ${JSON.stringify(e)} instead`);return!e.allNullValues&&this.hasAllNullValues(!1)&&(e=Object.assign({},e,{allNullValues:!0})),Ct(this,e,{blockItemPrefix:``,flowChars:{start:`{`,end:`}`},itemIndent:e.indent||``,onChompKeep:n,onComment:t})}};const Dt={collection:`map`,default:!0,nodeClass:U,tag:`tag:yaml.org,2002:map`,resolve(e,t){return Ee(e)||t(`Expected a mapping for this tag`),e},createNode:(e,t,n)=>U.from(e,t,n)};var Ot=class extends Je{static get tagName(){return`tag:yaml.org,2002:seq`}constructor(e){super(we,e),this.items=[]}add(e){this.items.push(e)}delete(e){let t=kt(e);return typeof t==`number`?this.items.splice(t,1).length>0:!1}get(e,t){let n=kt(e);if(typeof n!=`number`)return;let r=this.items[n];return!t&&A(r)?r.value:r}has(e){let t=kt(e);return typeof t==`number`&&t<this.items.length}set(e,t){let n=kt(e);if(typeof n!=`number`)throw Error(`Expected a valid index, not ${e}.`);let r=this.items[n];A(r)&&Ue(t)?r.value=t:this.items[n]=t}toJSON(e,t){let n=[];t?.onCreate&&t.onCreate(n);let r=0;for(let e of this.items)n.push(L(e,String(r++),t));return n}toString(e,t,n){return e?Ct(this,e,{blockItemPrefix:`- `,flowChars:{start:`[`,end:`]`},itemIndent:(e.indent||``)+` `,onChompKeep:n,onComment:t}):JSON.stringify(this)}static from(e,t,n){let{replacer:r}=n,i=new this(e);if(t&&Symbol.iterator in Object(t)){let e=0;for(let a of t){if(typeof r==`function`){let n=t instanceof Set?a:String(e++);a=r.call(t,n,a)}i.items.push(Ge(a,void 0,n))}}return i}};function kt(e){let t=A(e)?e.value:e;return t&&typeof t==`string`&&(t=Number(t)),typeof t==`number`&&Number.isInteger(t)&&t>=0?t:null}const At={collection:`seq`,default:!0,nodeClass:Ot,tag:`tag:yaml.org,2002:seq`,resolve(e,t){return De(e)||t(`Expected a sequence for this tag`),e},createNode:(e,t,n)=>Ot.from(e,t,n)};function jt(e){return typeof e==`bigint`||Number.isInteger(e)}const Mt=({value:e})=>JSON.stringify(e),Nt=[{identify:e=>typeof e==`string`,default:!0,tag:`tag:yaml.org,2002:str`,resolve:e=>e,stringify:Mt},{identify:e=>e==null,createNode:()=>new R(null),default:!0,tag:`tag:yaml.org,2002:null`,test:/^null$/,resolve:()=>null,stringify:Mt},{identify:e=>typeof e==`boolean`,default:!0,tag:`tag:yaml.org,2002:bool`,test:/^true$|^false$/,resolve:e=>e===`true`,stringify:Mt},{identify:jt,default:!0,tag:`tag:yaml.org,2002:int`,test:/^-?(?:0|[1-9][0-9]*)$/,resolve:(e,t,{intAsBigInt:n})=>n?BigInt(e):parseInt(e,10),stringify:({value:e})=>jt(e)?e.toString():JSON.stringify(e)},{identify:e=>typeof e==`number`,default:!0,tag:`tag:yaml.org,2002:float`,test:/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,resolve:e=>parseFloat(e),stringify:Mt}];[Dt,At].concat(Nt,{default:!0,tag:``,test:/^/,resolve(e,t){return t(`Unresolved plain scalar ${JSON.stringify(e)}`),e}});function Pt(e,t,n){let{replacer:r}=n,i=new Ot(e);i.tag=`tag:yaml.org,2002:pairs`;let a=0;if(t&&Symbol.iterator in Object(t))for(let e of t){typeof r==`function`&&(e=r.call(t,String(a++),e));let o,s;if(Array.isArray(e))if(e.length===2)o=e[0],s=e[1];else throw TypeError(`Expected [key, value] tuple: ${e}`);else if(e&&e instanceof Object){let t=Object.keys(e);if(t.length===1)o=t[0],s=e[o];else throw TypeError(`Expected tuple with one key, not ${t.length} keys`)}else o=e;i.items.push(St(o,s,n))}return i}var Ft=class e extends Ot{constructor(){super(),this.add=U.prototype.add.bind(this),this.delete=U.prototype.delete.bind(this),this.get=U.prototype.get.bind(this),this.has=U.prototype.has.bind(this),this.set=U.prototype.set.bind(this),this.tag=e.tag}toJSON(e,t){if(!t)return super.toJSON(e);let n=new Map;t?.onCreate&&t.onCreate(n);for(let e of this.items){let r,i;if(k(e)?(r=L(e.key,``,t),i=L(e.value,r,t)):r=L(e,``,t),n.has(r))throw Error(`Ordered maps must not include duplicate keys`);n.set(r,i)}return n}static from(e,t,n){let r=Pt(e,t,n),i=new this;return i.items=r.items,i}};Ft.tag=`tag:yaml.org,2002:omap`;var It=class e extends U{constructor(t){super(t),this.tag=e.tag}add(e){let t;t=k(e)?e:e&&typeof e==`object`&&`key`in e&&`value`in e&&e.value===null?new V(e.key,null):new V(e,null),H(this.items,t.key)||this.items.push(t)}get(e,t){let n=H(this.items,e);return!t&&k(n)?A(n.key)?n.key.value:n.key:n}set(e,t){if(typeof t!=`boolean`)throw Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof t}`);let n=H(this.items,e);n&&!t?this.items.splice(this.items.indexOf(n),1):!n&&t&&this.items.push(new V(e))}toJSON(e,t){return super.toJSON(e,t,Set)}toString(e,t,n){if(!e)return JSON.stringify(this);if(this.hasAllNullValues(!0))return super.toString(Object.assign({},e,{allNullValues:!0}),t,n);throw Error(`Set items must all have null values`)}static from(e,t,n){let{replacer:r}=n,i=new this(e);if(t&&Symbol.iterator in Object(t))for(let e of t)typeof r==`function`&&(e=r.call(t,e,e)),i.items.push(St(e,null,n));return i}};It.tag=`tag:yaml.org,2002:set`;const Lt=Symbol(`break visit`),Rt=Symbol(`skip children`),zt=Symbol(`remove item`);function W(e,t){`type`in e&&e.type===`document`&&(e={start:e.start,value:e.value}),Bt(Object.freeze([]),e,t)}W.BREAK=Lt,W.SKIP=Rt,W.REMOVE=zt,W.itemAtPath=(e,t)=>{let n=e;for(let[e,r]of t){let t=n?.[e];if(t&&`items`in t)n=t.items[r];else return}return n},W.parentCollection=(e,t)=>{let n=W.itemAtPath(e,t.slice(0,-1)),r=t[t.length-1][0],i=n?.[r];if(i&&`items`in i)return i;throw Error(`Parent collection not found`)};function Bt(e,t,n){let r=n(t,e);if(typeof r==`symbol`)return r;for(let i of[`key`,`value`]){let a=t[i];if(a&&`items`in a){for(let t=0;t<a.items.length;++t){let r=Bt(Object.freeze(e.concat([[i,t]])),a.items[t],n);if(typeof r==`number`)t=r-1;else if(r===Lt)return Lt;else r===zt&&(a.items.splice(t,1),--t)}typeof r==`function`&&i===`key`&&(r=r(t,e))}}return typeof r==`function`?r(t,e):r}t(((e,t)=>{function n(e){return Array.isArray(e)?e:[e]}let r=/^\s+$/,i=/(?:[^\\]|^)\\$/,a=/^\\!/,o=/^\\#/,s=/\r?\n/g,c=/^\.{0,2}\/|^\.{1,2}$/,l=/\/$/,u=`node-ignore`;typeof Symbol<`u`&&(u=Symbol.for(`node-ignore`));let d=u,f=(e,t,n)=>(Object.defineProperty(e,t,{value:n}),n),p=/([0-z])-([0-z])/g,m=()=>!1,h=e=>e.replace(p,(e,t,n)=>t.charCodeAt(0)<=n.charCodeAt(0)?e:``),g=e=>{let{length:t}=e;return e.slice(0,t-t%2)},_=[[/^\uFEFF/,()=>``],[/((?:\\\\)*?)(\\?\s+)$/,(e,t,n)=>t+(n.indexOf(`\\`)===0?` `:``)],[/(\\+?)\s/g,(e,t)=>{let{length:n}=t;return t.slice(0,n-n%2)+` `}],[/[\\$.|*+(){^]/g,e=>`\\${e}`],[/(?!\\)\?/g,()=>`[^/]`],[/^\//,()=>`^`],[/\//g,()=>`\\/`],[/^\^*\\\*\\\*\\\//,()=>`^(?:.*\\/)?`],[/^(?=[^^])/,function(){return/\/(?!$)/.test(this)?`^`:`(?:^|\\/)`}],[/\\\/\\\*\\\*(?=\\\/|$)/g,(e,t,n)=>t+6<n.length?`(?:\\/[^\\/]+)*`:`\\/.+`],[/(^|[^\\]+)(\\\*)+(?=.+)/g,(e,t,n)=>t+n.replace(/\\\*/g,`[^\\/]*`)],[/\\\\\\(?=[$.|*+(){^])/g,()=>`\\`],[/\\\\/g,()=>`\\`],[/(\\)?\[([^\]/]*?)(\\*)($|\])/g,(e,t,n,r,i)=>t===`\\`?`\\[${n}${g(r)}${i}`:i===`]`&&r.length%2==0?`[${h(n)}${r}]`:`[]`],[/(?:[^*])$/,e=>/\/$/.test(e)?`${e}$`:`${e}(?=$|\\/$)`]],v=/(^|\\\/)?\\\*$/,y=`regex`,b=`checkRegex`,x={[y](e,t){return`${t?`${t}[^/]+`:`[^/]*`}(?=$|\\/$)`},[b](e,t){return`${t?`${t}[^/]*`:`[^/]*`}(?=$|\\/$)`}},S=e=>_.reduce((t,[n,r])=>t.replace(n,r.bind(e)),e),ee=e=>typeof e==`string`,te=e=>e&&ee(e)&&!r.test(e)&&!i.test(e)&&e.indexOf(`#`)!==0,ne=e=>e.split(s).filter(Boolean);var re=class{constructor(e,t,n,r,i,a){this.pattern=e,this.mark=t,this.negative=i,f(this,`body`,n),f(this,`ignoreCase`,r),f(this,`regexPrefix`,a)}get regex(){let e=`_regex`;return this[e]?this[e]:this._make(y,e)}get checkRegex(){let e=`_checkRegex`;return this[e]?this[e]:this._make(b,e)}_make(e,t){let n=this.regexPrefix.replace(v,x[e]),r=this.ignoreCase?new RegExp(n,`i`):new RegExp(n);return f(this,t,r)}};let ie=({pattern:e,mark:t},n)=>{let r=!1,i=e;i.indexOf(`!`)===0&&(r=!0,i=i.substr(1)),i=i.replace(a,`!`).replace(o,`#`);let s=S(i);return new re(e,t,i,n,r,s)};var ae=class{constructor(e){this._ignoreCase=e,this._rules=[]}_add(e){if(e&&e[d]){this._rules=this._rules.concat(e._rules._rules),this._added=!0;return}if(ee(e)&&(e={pattern:e}),te(e.pattern)){let t=ie(e,this._ignoreCase);this._added=!0,this._rules.push(t)}}add(e){return this._added=!1,n(ee(e)?ne(e):e).forEach(this._add,this),this._added}test(e,t,n){let r=!1,i=!1,a;this._rules.forEach(o=>{let{negative:s}=o;i===s&&r!==i||s&&!r&&!i&&!t||o[n].test(e)&&(r=!s,i=s,a=s?void 0:o)});let o={ignored:r,unignored:i};return a&&(o.rule=a),o}};let oe=(e,t)=>{throw new t(e)},C=(e,t,n)=>ee(e)?e?C.isNotRelative(e)?n(`path should be a \`path.relative()\`d string, but got "${t}"`,RangeError):!0:n(`path must not be empty`,TypeError):n(`path must be a string, but got \`${t}\``,TypeError),se=e=>c.test(e);C.isNotRelative=se,C.convert=e=>e;var ce=class{constructor({ignorecase:e=!0,ignoreCase:t=e,allowRelativePaths:n=!1}={}){f(this,d,!0),this._rules=new ae(t),this._strictPathCheck=!n,this._initCache()}_initCache(){this._ignoreCache=Object.create(null),this._testCache=Object.create(null)}add(e){return this._rules.add(e)&&this._initCache(),this}addPattern(e){return this.add(e)}_test(e,t,n,r){let i=e&&C.convert(e);return C(i,e,this._strictPathCheck?oe:m),this._t(i,t,n,r)}checkIgnore(e){if(!l.test(e))return this.test(e);let t=e.split(`/`).filter(Boolean);if(t.pop(),t.length){let e=this._t(t.join(`/`)+`/`,this._testCache,!0,t);if(e.ignored)return e}return this._rules.test(e,!1,b)}_t(e,t,n,r){if(e in t)return t[e];if(r||=e.split(`/`).filter(Boolean),r.pop(),!r.length)return t[e]=this._rules.test(e,n,y);let i=this._t(r.join(`/`)+`/`,t,n,r);return t[e]=i.ignored?i:this._rules.test(e,n,y)}ignores(e){return this._test(e,this._ignoreCache,!1).ignored}createFilter(){return e=>!this.ignores(e)}filter(e){return n(e).filter(this.createFilter())}test(e){return this._test(e,this._testCache,!0)}};let w=e=>new ce(e),le=e=>C(e&&C.convert(e),e,m),ue=()=>{C.convert=e=>/^\\\\\?\\/.test(e)||/["<>|\u0000-\u001F]+/u.test(e)?e:e.replace(/\\/g,`/`);let e=/^[a-z]:\//i;C.isNotRelative=t=>e.test(t)||se(t)};typeof process<`u`&&process.platform===`win32`&&ue(),t.exports=w,w.default=w,t.exports.isPathValid=le,f(t.exports,Symbol.for(`setupWindows`),ue)}))(),globalThis.Buffer;function Vt(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 Ht(e){let t=e.mimeType||`application/octet-stream`;return`${e.name} (${t}, ${Vt(e.size)})`}function Ut(e){let t=Ht(e);return e.kind===`image`&&e.data?e.path?`[Attached image: ${t} — full-resolution copy saved to ${e.path}]`:`[Attached image: ${t}]`:e.kind===`text`&&e.text!==void 0?[`----- BEGIN ATTACHMENT ${t} -----`,e.text,`----- END ATTACHMENT ${e.name} -----`].join(`
38
- `):e.path?`[Attached ${e.kind===`image`?`image`:e.kind===`text`?`text file`:`file`} saved to ${e.path} — ${t}. Read it from the virtual filesystem when you need its contents.]`:e.error?`[Attachment not included: ${t}. ${e.error}]`:`[Attachment not included: ${t}. Unsupported binary attachment.]`}function Wt(e,t){if(!t?.length)return e;let n=t.map(Ut),r=e.trim();return r?`${r}\n\n${n.join(`
39
-
40
- `)}`:n.join(`
41
-
42
- `)}function Gt(e){return e?.length?e.filter(e=>e.kind===`image`&&e.data).map(e=>({type:`image`,data:e.data,mimeType:e.mimeType})):[]}const Kt={enabled:!0,reserveTokens:16384,keepRecentTokens:2e4};function qt(e,t,n){return n.enabled?e>t-n.reserveTokens:!1}function Jt(e){if(typeof e==`string`)return e.length;let t=0;for(let n of e)n.type===`text`&&n.text?t+=n.text.length:n.type===`image`&&(t+=4800);return t}function Yt(e){let t=0;switch(e.role){case`user`:return t=Jt(e.content),Math.ceil(t/4);case`assistant`:{let n=e;for(let e of n.content)e.type===`text`?t+=e.text.length:e.type===`thinking`?t+=e.thinking.length:e.type===`toolCall`&&(t+=e.name.length+JSON.stringify(e.arguments).length);return Math.ceil(t/4)}case`custom`:case`toolResult`:return t=Jt(e.content),Math.ceil(t/4);case`bashExecution`:return t=e.command.length+e.output.length,Math.ceil(t/4);case`branchSummary`:case`compactionSummary`:return t=e.summary.length,Math.ceil(t/4)}return 0}const G=n(`context-compaction`);function Xt(e,t){return e.role===t}function Zt(e){let t=0;for(;t<e.length&&Xt(e[t],`toolResult`);){let n=e[t];G.warn(`Dropping orphaned toolResult (no preceding assistant message)`,{toolCallId:n.toolCallId}),t++}return t>0?e.slice(t):e}function Qt(e){let t=[];for(let n of e){let e=n;switch(e.role){case`user`:t.push(`<user>\n${$t(e.content)}\n</user>`);break;case`assistant`:t.push(`<assistant>\n${$t(e.content)}\n</assistant>`);break;case`toolResult`:{let n=e.toolName??`tool`;t.push(`<tool-result name="${n}">\n${$t(e.content)}\n</tool-result>`);break}case`bashExecution`:t.push(`<bash>\n$ ${e.command??``}\n${e.output??``}\n</bash>`);break;case`branchSummary`:case`compactionSummary`:t.push(`<prior-summary>\n${e.summary??``}\n</prior-summary>`);break;default:t.push(`<${e.role}>\n${$t(e.content)}\n</${e.role}>`)}}return t.join(`
43
-
44
- `)}function $t(e){if(typeof e==`string`)return e;if(!Array.isArray(e))return``;let t=[];for(let n of e){let e=n;e.type===`text`&&e.text?t.push(e.text):e.type===`thinking`&&e.thinking?t.push(`[thinking] ${e.thinking}`):e.type===`toolCall`?t.push(`[tool-call ${e.name??`?`}] ${JSON.stringify(e.arguments??{})}`):e.type===`image`&&t.push(`[image]`)}return t.join(`
45
- `)}function en(e){return`You are a context compaction assistant. You are shown the prefix of a conversation between a user and an AI coding assistant, and asked to produce either a structured summary, durable memory bullets, or a short title — depending on the user's instruction.
46
-
47
- Do NOT continue the conversation. Do NOT answer questions inside the conversation. Output ONLY what the user asks for in the format specified.
48
-
49
- <conversation>
50
- ${e}
51
- </conversation>`}async function tn(e,t,n,r,i,a,o){let s=await g(e,{systemPrompt:n,messages:[{role:`user`,content:[{type:`text`,text:r}],timestamp:Date.now()}]},{maxTokens:i,apiKey:t,headers:a,signal:o});if(s.stopReason===`error`)throw Error(`Compaction call failed: ${s.errorMessage||`Unknown error`}`);return s.content.filter(e=>e.type===`text`).map(e=>e.text).join(`
52
- `).trim()}function nn(e){if(typeof e==`string`)return e.length;if(!Array.isArray(e))return 0;let t=0;for(let n of e){let e=n;if(e.type===`text`&&e.text)t+=e.text.length;else if(e.type===`thinking`&&e.thinking)t+=e.thinking.length;else if(e.type===`toolCall`&&e.arguments!==void 0)try{t+=JSON.stringify(e.arguments).length}catch{}else e.type===`image`&&e.source?.data&&(t+=e.source.data.length)}return t}function rn(e,t){let n=Math.max(1,Math.round(e/1024));return`[${t===`assistant`?`Assistant message elided`:`Tool result elided`}: ${n} KB, exceeds half the context window. Re-run with smaller arguments — e.g. open --view --size low.]`}function an(e,t,n){let r=(t-n)/2,i=0,a=0;return{messages:e.map(e=>{if(Yt(e)<=r)return e;let t=e.role;if(t!==`toolResult`&&t!==`assistant`)return e;let n=e,o=nn(n.content);if(t===`toolResult`)return i++,a+=o,{...e,content:[{type:`text`,text:rn(o,`toolResult`)}]};let s=(Array.isArray(n.content)?n.content:[]).filter(e=>e.type===`toolCall`);if(s.length===0)return e;let c=s.map(e=>{let t=0;if(e.arguments!==void 0)try{t=JSON.stringify(e.arguments).length}catch{}return{type:e.type,id:e.id,name:e.name,arguments:{elided:!0,originalBytes:t}}});return i++,a+=o,{...e,content:[{type:`text`,text:rn(o,`assistant`)},...c]}}),elidedCount:i,elidedBytes:a}}function on(e){let t=e.contextWindow??2e5,n=e.reserveTokens??Kt.reserveTokens,r=e.keepRecentTokens??Kt.keepRecentTokens,i=e.hopelessMultiplier??4,a={enabled:!0,reserveTokens:n,keepRecentTokens:r};return async(o,s)=>{if(o.length===0)return o;let c=0;for(let e of o)c+=Yt(e);if(!qt(c,t,a))return o;let l=o,u=!1;if(c>t*i){u=!0;let e=an(o,t,n);l=e.messages,G.warn(`Compaction hopeless branch`,{totalTokens:c,contextWindow:t,multiplier:i,elidedCount:e.elidedCount,elidedBytes:e.elidedBytes});let r=0;for(let e of l)r+=Yt(e);if(!qt(r,t,a))return l}G.info(`Context compaction triggered`,{totalTokens:c,contextWindow:t,threshold:t-n,messageCount:l.length});let d=0,f=l.length;for(let e=l.length-1;e>=0;e--){let t=Yt(l[e]);if(d+t>r&&f<l.length)break;d+=t,f=e}for(;f>0&&Xt(l[f],`toolResult`);)f--;if(f<=0||f>=l.length)return G.warn(`Cannot find valid cut point for compaction`),l;let p=l.slice(0,f),m=Zt(l.slice(f));G.info(`Compaction cut point`,{summarizing:p.length,keeping:m.length});let h=t=>{try{e.onCompactionStateChange?.(t)}catch(e){G.warn(`onCompactionStateChange listener threw`,{error:e instanceof Error?e.message:String(e)})}},g=u?void 0:e.getApiKey();if(g)try{let t=en(Qt(p)),r=Math.floor(.8*n);h(`summarizing`);let i=await tn(e.model,g,t,`Produce a structured context checkpoint summary of the conversation above that another LLM can use to continue the work.
53
-
54
- Use this EXACT format:
55
-
56
- ## Goal
57
- [What is the user trying to accomplish? Can be multiple items if the session covers different tasks.]
58
-
59
- ## Constraints & Preferences
60
- - [Any constraints, preferences, or requirements mentioned by user]
61
- - [Or "(none)" if none were mentioned]
62
-
63
- ## Progress
64
- ### Done
65
- - [x] [Completed tasks/changes]
66
-
67
- ### In Progress
68
- - [ ] [Current work]
69
-
70
- ### Blocked
71
- - [Issues preventing progress, if any]
72
-
73
- ## Key Decisions
74
- - **[Decision]**: [Brief rationale]
75
-
76
- ## Next Steps
77
- 1. [Ordered list of what should happen next]
78
-
79
- ## Critical Context
80
- - [Any data, examples, or references needed to continue]
81
- - [Or "(none)" if not applicable]
82
-
83
- Keep each section concise. Preserve exact file paths, function names, and error messages. Output ONLY the summary, with no preamble or follow-up.`,r,e.headers,s),a={role:`user`,content:[{type:`text`,text:`<context-summary>\n${i}\n</context-summary>`}],timestamp:Date.now()};if(G.info(`LLM summarization successful`,{originalMessages:o.length,compactedMessages:1+m.length,summaryLength:i.length}),e.onMemoryUpdates)try{h(`extracting-memory`);let n=await tn(e.model,g,t,`From the conversation above, extract durable memories worth persisting to a global memory file shared across future sessions.
84
-
85
- Focus on:
86
- - User preferences, working style, opinions stated explicitly.
87
- - Stable project facts (architecture decisions, conventions, constraints).
88
- - Validated approaches the user accepted ("yes, exactly", "perfect"), not just corrections.
89
- - External resources/links the user named.
90
-
91
- DO NOT include:
92
- - Ephemeral state (current task, in-progress work).
93
- - Information already obvious from the codebase (file paths, function names, framework conventions).
94
- - Generic restatements of what the conversation was about.
95
-
96
- If nothing in the conversation is worth persisting, return exactly the single line:
97
- NONE
98
-
99
- Otherwise, output ONLY a markdown bullet list (one bullet per memory), no headers, no preamble, no follow-up. Each bullet is one line. Be specific. Prefer one fact per bullet over multi-clause sentences.`,2048,e.headers,s);if(n?.trim()&&n.trim()!==`NONE`)try{await e.onMemoryUpdates(n.trim()),G.info(`Memory extraction applied`,{bulletsLength:n.length})}catch(e){G.warn(`onMemoryUpdates callback threw`,{error:e instanceof Error?e.message:String(e)})}else G.info(`Memory extraction returned no durable memories`)}catch(e){G.warn(`Memory extraction call failed (compaction still applied)`,{error:e instanceof Error?e.message:String(e)})}return h(`idle`),[a,...m]}catch(e){G.warn(`LLM summarization failed, falling back to naive drop`,{error:e instanceof Error?e.message:String(e)})}else u||G.warn(`No API key available for LLM summarization, falling back to naive drop`);h(`idle`);let _={role:`user`,content:[{type:`text`,text:`[Earlier conversation messages were compacted to save context space]`}],timestamp:Date.now()};return G.info(`Naive compaction applied`,{originalMessages:o.length,compactedMessages:1+m.length}),[_,...m]}}const sn=n(`secret-scrub`);function cn(){return typeof chrome<`u`&&chrome?.runtime?.id?async e=>{if(!e)return e;try{let t=await new Promise(t=>{chrome.runtime.sendMessage({type:`secrets.scrub-tool-result`,text:e},e=>t(e??{}))});return t.error?(sn.debug(`SW scrub-tool-result returned error`,{error:t.error}),e):typeof t.text==`string`?t.text:e}catch(t){return sn.debug(`SW scrub-tool-result failed`,{error:t instanceof Error?t.message:String(t)}),e}}:async e=>{if(!e)return e;try{let t=await fetch(`/api/secrets/scrub`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({text:e})});if(!t.ok)return sn.debug(`Server scrub-tool-result returned non-ok`,{status:t.status}),e;let n=await t.json();return typeof n.text==`string`?n.text:e}catch(t){return sn.debug(`Server scrub-tool-result failed`,{error:t instanceof Error?t.message:String(t)}),e}}}const K=`sessions`;function ln(){return new Promise((e,t)=>{let n=indexedDB.open(`agent-sessions`,1);n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(K)||e.createObjectStore(K,{keyPath:`id`})},n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)})}var un=class{dbPromise=null;getDB(){return this.dbPromise||=ln(),this.dbPromise}async save(e){let t=await this.getDB();return new Promise((n,r)=>{let i=t.transaction(K,`readwrite`).objectStore(K).put(e);i.onsuccess=()=>n(),i.onerror=()=>r(i.error)})}async load(e){let t=await this.getDB();return new Promise((n,r)=>{let i=t.transaction(K,`readonly`).objectStore(K).get(e);i.onsuccess=()=>n(i.result??null),i.onerror=()=>r(i.error)})}async delete(e){let t=await this.getDB();return new Promise((n,r)=>{let i=t.transaction(K,`readwrite`).objectStore(K).delete(e);i.onsuccess=()=>n(),i.onerror=()=>r(i.error)})}async list(){let e=await this.getDB();return new Promise((t,n)=>{let r=e.transaction(K,`readonly`).objectStore(K).getAll();r.onsuccess=()=>{t((r.result??[]).map(e=>({id:e.id,updatedAt:e.updatedAt})))},r.onerror=()=>n(r.error)})}async clearAll(){let e=await this.getDB();return new Promise((t,n)=>{let r=e.transaction(K,`readwrite`).objectStore(K).clear();r.onsuccess=()=>t(),r.onerror=()=>n(r.error)})}static newId(){return`session-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}static createSession(e,t){let n=Date.now();return{id:e,messages:[],config:t,createdAt:n,updatedAt:n}}static updateMessages(e,t){return{...e,messages:t,updatedAt:Date.now()}}};const q=n(`image-processor`),dn=3932160,fn=new Set([`image/jpeg`,`image/png`,`image/gif`,`image/webp`]);function pn(e){return fn.has(e)}function mn(e,t){try{if(t===`image/png`){if(e.length<32)return null;let t=atob(e.slice(0,32)),n=t.charCodeAt(16)<<24|t.charCodeAt(17)<<16|t.charCodeAt(18)<<8|t.charCodeAt(19),r=t.charCodeAt(20)<<24|t.charCodeAt(21)<<16|t.charCodeAt(22)<<8|t.charCodeAt(23);return n>0&&r>0?{width:n,height:r}:null}if(t===`image/gif`){if(e.length<16)return null;let t=atob(e.slice(0,16)),n=t.charCodeAt(6)|t.charCodeAt(7)<<8,r=t.charCodeAt(8)|t.charCodeAt(9)<<8;return n>0&&r>0?{width:n,height:r}:null}if(t===`image/jpeg`){let t=Math.min(21846*4,e.length),n=atob(e.slice(0,t));for(let e=0;e<n.length-8;e++)if(n.charCodeAt(e)===255){let t=n.charCodeAt(e+1);if(t===192||t===194){let t=n.charCodeAt(e+5)<<8|n.charCodeAt(e+6),r=n.charCodeAt(e+7)<<8|n.charCodeAt(e+8);return r>0&&t>0?{width:r,height:t}:null}}}}catch{}return null}async function hn(e){if(!pn(e.mimeType))return q.warn(`Unsupported image format`,{mimeType:e.mimeType}),{type:`text`,text:`[Image removed: unsupported format "${e.mimeType}". Supported: JPEG, PNG, GIF, WebP]`};let t=e.data.length,n=mn(e.data,e.mimeType);if(!(t>5242880||n!==null&&(n.width>8e3||n.height>8e3)||n!==null&&Math.max(n.width,n.height)>1568))return e;q.info(`Image needs processing`,{base64Size:t,dimensions:n?`${n.width}x${n.height}`:`unknown`,reason:t>5242880?`size`:`dimensions`});let r,i;try{let e=await import(`./kernel-worker-DpRMAeb1.js`).then(e=>e.a);r=e.getMagick,i=e.MIME_TO_MAGICK_FORMAT}catch(e){return q.error(`ImageMagick WASM module unavailable`,{error:e instanceof Error?e.message:String(e)}),{type:`text`,text:`[Image removed: resize service unavailable (ImageMagick WASM could not be loaded)]`}}let a;try{a=await r()}catch(e){return q.error(`ImageMagick WASM initialization failed`,{error:e instanceof Error?e.message:String(e)}),{type:`text`,text:`[Image removed: resize service unavailable (WASM init failed)]`}}try{let n=atob(e.data),r=new Uint8Array(n.length);for(let e=0;e<n.length;e++)r[e]=n.charCodeAt(e);let o={data:null,mime:e.mimeType};if(await a.ImageMagick.read(r,async t=>{let n=t.width,r=t.height,a=Math.max(n,r);if(a>1568){let e=1568/a,i=Math.round(n*e),o=Math.round(r*e);t.resize(i,o),q.info(`Resized image`,{from:`${n}x${r}`,to:`${i}x${o}`})}let s=i[e.mimeType]||`JPEG`;t.write(s,e=>{o.data=new Uint8Array(e)}),o.data&&o.data.length>dn&&s!==`JPEG`?(q.info(`Still over 5MB, compressing to JPEG q80`),t.quality=80,t.write(`JPEG`,e=>{o.data=new Uint8Array(e)}),o.mime=`image/jpeg`):o.data&&o.data.length>dn&&(q.info(`Still over 5MB as JPEG, reducing quality to 60`),t.quality=60,t.write(`JPEG`,e=>{o.data=new Uint8Array(e)}))}),!o.data)return q.warn(`ImageMagick produced no output`),{type:`text`,text:`[Image removed: could not be processed (empty output from resize)]`};if(o.data.length>dn)return q.warn(`Image still over 5MB after resize+compress`,{size:o.data.length}),{type:`text`,text:`[Image removed: still ${Math.round(o.data.length/1024/1024*10)/10}MB after resize and compression, exceeds 5MB API limit]`};let s=``;for(let e=0;e<o.data.length;e++)s+=String.fromCharCode(o.data[e]);let c=btoa(s);return q.info(`Image processed successfully`,{originalBase64:t,newBase64:c.length,mimeType:o.mime}),{type:`image`,data:c,mimeType:o.mime}}catch(n){return q.error(`Image data processing failed (corrupt or unreadable)`,{mimeType:e.mimeType,estimatedBytes:t,error:n instanceof Error?n.message:String(n)}),{type:`text`,text:`[Image removed: image data could not be processed (${n instanceof Error?n.message:`corrupt or unreadable`})]`}}}const gn=n(`tool-adapter`),_n=/<img:(data:(image\/[^;]+);base64,([^>]+))>/g;function vn(e){let t=[],n=0;for(let r of e.matchAll(_n)){let i=e.slice(n,r.index);i.trim()&&t.push({type:`text`,text:i.trimEnd()}),t.push({type:`image`,mimeType:r[2],data:r[3]}),n=r.index+r[0].length}let r=e.slice(n);return(r.trim()||t.length===0)&&t.push({type:`text`,text:r||e}),t}async function yn(e){let t=vn(e),n=[];for(let e of t)e.type===`image`?n.push(await hn(e)):n.push(e);return n}function bn(e,t,n){return{name:e.name,label:e.name,description:e.description,parameters:e.inputSchema,async execute(a,o,s,c){let l;c&&(l=i({onUpdate:c,toolName:e.name,toolCallId:a}));let u=t?t.processManager.spawn({kind:`tool`,argv:[e.name,...Sn(o)],owner:t.owner,ppid:t.getParentPid?.()}):null,d=null;u&&t&&s&&(s.aborted?t.processManager.signal(u.pid,`SIGINT`):s.addEventListener(`abort`,()=>t.processManager.signal(u.pid,`SIGINT`),{once:!0})),u&&t&&(d=t.processManager.onSignal((e,n)=>{e.pid!==u.pid||n!==`SIGKILL`||t.processManager.exit(u.pid,null)}));let f=u?u.abort.signal:s;try{let r=await e.execute(o??{},f),i=r.content;if(n&&typeof i==`string`&&i.length>0)try{i=await n.scrubToolResult(i)}catch(t){gn.warn(`Tool-result scrub failed, falling back to unscrubbed content`,{tool:e.name,error:t instanceof Error?t.message:String(t)}),i=r.content}let a;try{a=await yn(i)}catch(t){gn.warn(`Image processing failed, falling back to raw content`,{tool:e.name,error:t instanceof Error?t.message:String(t)}),a=vn(i)}return u&&t&&t.processManager.exit(u.pid,+!!r.isError),{content:a,details:{isError:r.isError}}}catch(e){throw u&&t&&t.processManager.exit(u.pid,u.abort.signal.aborted?null:1),e}finally{l&&r(l),d?.()}}}}function xn(e,t,n){return e.map(e=>bn(e,t,n))}function Sn(e){if(typeof e!=`object`||!e)return[];let t=e;for(let e of[`command`,`file_path`,`path`,`pattern`,`url`,`key`,`name`,`query`,`message`]){let n=t[e];if(typeof n==`string`&&n.length>0)return[n]}for(let e of Object.values(t))if(typeof e==`string`&&e.length>0)return[e];return[]}var Cn=e({addAccount:()=>Hn,getAccounts:()=>Q,getAllExtraOAuthDomains:()=>zn,getApiKey:()=>nr,getApiKeyForProvider:()=>Xn,getApiVersionForProvider:()=>$n,getAvailableProviders:()=>Mn,getBaseUrlForProvider:()=>Zn,getDeploymentForProvider:()=>Qn,getExtraOAuthDomains:()=>In,getOAuthAccountInfo:()=>Fn,getProviderConfig:()=>X,getProviderModels:()=>Pn,getRawApiKeyForProvider:()=>Yn,getSelectedModelId:()=>er,getSelectedProvider:()=>$,logoutOAuthAccount:()=>Gn,maskOAuthTokenWithRetry:()=>Kn,migrateLegacyAuthOnlySelection:()=>jn,persistOAuthMaskViaServiceWorker:()=>qn,removeAccount:()=>Wn,resolveCurrentModel:()=>or,resolveModelById:()=>ar,saveOAuthAccount:()=>Jn,setExtraOAuthDomains:()=>Ln,setExtraOAuthDomainsAsync:()=>Rn});const wn=v,Tn=y,J=`slicc_accounts`,Y=`selected-model`,En=[`slicc_provider`,`slicc_api_key`,`slicc_base_url`,`anthropic_api_key`,`api_provider`,`azure_resource`,`bedrock_region`],Dn=new Set([`github`]);function On(e){let t;try{t=_()}catch{return!1}return t.includes(e)&&!u(e)}let kn=!1;function An(){if(!kn){kn=!0;for(let e of En)try{localStorage.removeItem(e)}catch{}jn()}}function jn(){try{let e=localStorage.getItem(Y);if(e){let t=e.indexOf(`:`);if(t>0){let n=e.slice(0,t);(Dn.has(n)||On(n))&&localStorage.removeItem(Y)}}}catch{}try{let e=localStorage.getItem(J);if(!e)return;let t=JSON.parse(e);if(!Array.isArray(t))return;let n=t.filter(e=>!(typeof e==`object`&&e&&typeof e.providerId==`string`&&On(e.providerId)));n.length!==t.length&&localStorage.setItem(J,JSON.stringify(n))}catch{}}function Mn(){let e=_().filter(u),t=l();return[...new Set([...e,...t])].filter(e=>!d(e)?.hidden)}function X(e){return d(e)||{id:e,name:e.split(`-`).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `),description:`${e} provider`,requiresApiKey:!0,requiresBaseUrl:!1}}function Nn(e,t){t.context_window!==void 0&&(e.contextWindow=t.context_window),t.max_tokens!==void 0&&(e.maxTokens=t.max_tokens),t.reasoning!==void 0&&(e.reasoning=t.reasoning),t.input!==void 0&&(e.input=t.input),t.compat!==void 0&&(e.compat={...e.compat??{},...t.compat}),t.thinkingLevelMap!==void 0&&(e.thinkingLevelMap={...e.thinkingLevelMap??{},...t.thinkingLevelMap})}function Pn(e){try{if(e===`bedrock-camp`){let e=h(Zn(`bedrock-camp`));return Tn(`amazon-bedrock`).filter(t=>m(t,e)).map(e=>({...e,api:`bedrock-camp-converse`,provider:`bedrock-camp`}))}let t=X(e);if(t.getModelIds){let n;try{n=t.getModelIds()}catch(t){return Z.error(`Provider getModelIds callback failed`,{providerId:e,error:t instanceof Error?t.message:String(t)}),[]}let r=new Map;for(let e of _())try{for(let t of Tn(e))r.set(t.id,t)}catch{}return n.map(n=>{let i=`${e}-${n.api===`openai`?`openai`:`anthropic`}`,a=r.get(n.id),o;a?o={...a,api:i,provider:e}:(o=ir(e,n.id,``,i),n.name&&(o.name=n.name));let s=t.modelOverrides?.[n.id];return s&&Nn(o,s),Nn(o,n),o})}if(t.isOAuth){let n=Tn(`anthropic`),r=`${e}-anthropic`;return n.map(n=>{let i={...n,api:r,provider:e},a=t.modelOverrides?.[n.id];return a&&Nn(i,a),i})}return Tn(e===`azure-ai-foundry`?`anthropic`:e)}catch(t){return Z.error(`Failed to load models`,{providerId:e,error:t instanceof Error?t.message:String(t)}),[]}}function Fn(e){let t=Q().find(t=>t.providerId===e);if(!t?.accessToken)return null;let n=!!t.tokenExpiresAt&&Date.now()>t.tokenExpiresAt-6e4;return{token:t.accessToken,maskedValue:t.maskedValue,expiresAt:t.tokenExpiresAt,userName:t.userName,userAvatar:t.userAvatar,expired:n}}Object.assign({})[`/packages/webapp/providers.json`];const Z=n(`provider-settings`);function Q(){An();let e=localStorage.getItem(J);if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`object`&&!!e&&typeof e.providerId==`string`&&typeof e.apiKey==`string`):[]}catch{return[]}}function In(e){return a(localStorage)[e]??[]}function Ln(e,t){let n=a(localStorage),r=t.map(e=>e.trim()).filter(e=>e.length>0);r.length===0?delete n[e]:n[e]=r,o(localStorage,n)}async function Rn(e,t){if(c()){Ln(e,t);return}let n=s();if(!n)throw Error(`setExtraOAuthDomainsAsync: no DOM and no panel-rpc client — cannot persist to page localStorage`);let{storeAfter:r}=await n.call(`oauth-extras-set`,{providerId:e,domains:t});try{o(localStorage,r)}catch(t){Z.warn(`worker-shim mirror failed after successful page write — reload to refresh`,{providerId:e,error:t instanceof Error?t.message:String(t)})}}function zn(){return a(localStorage)}function Bn(e){localStorage.setItem(J,JSON.stringify(e))}async function Vn(e){if(c()){Bn(e);return}let t=s();if(!t)throw Error(`saveAccountsAsync: no DOM and no panel-rpc client — cannot persist to page localStorage`);let n=JSON.stringify(e),{storedJson:r}=await t.call(`save-oauth-accounts`,{accountsJson:n});try{localStorage.setItem(J,r)}catch(e){Z.warn(`worker-shim mirror failed after successful page write — reload to refresh`,{error:e instanceof Error?e.message:String(e)})}}function Hn(e,t,n,r,i){let a=Q().filter(t=>t.providerId!==e),o={providerId:e,apiKey:t};n&&(o.baseUrl=n),r&&(o.deployment=r),i&&(o.apiVersion=i),a.push(o),Bn(a)}async function Un(e){let t=typeof chrome<`u`&&!!chrome?.runtime?.id;try{if(t){let t=await new Promise(t=>{chrome.runtime.sendMessage({type:`secrets.delete`,name:`oauth.${e}.token`},n=>{chrome.runtime.lastError&&Z.error(`SW secrets.delete transport failed`,{providerId:e,error:chrome.runtime.lastError.message}),t(n??{})})});t.error&&Z.error(`SW secrets.delete returned error`,{providerId:e,error:t.error})}else{let t=await fetch(`/api/secrets/oauth/${e}`,{method:`DELETE`});!t.ok&&t.status!==404&&Z.warn(`OAuth replica DELETE non-ok`,{providerId:e,status:t.status})}}catch(n){Z.error(`OAuth replica removal failed`,{providerId:e,isExtension:t,error:n instanceof Error?n.message:String(n)})}}async function Wn(e){let t=Q().find(t=>t.providerId===e),n=X(e);t&&n?.isOAuth&&await Gn(e),await Un(e),await Vn(Q().filter(t=>t.providerId!==e));let r=localStorage.getItem(Y)??``,i=r.indexOf(`:`);i>0&&r.slice(0,i)===e&&localStorage.removeItem(Y)}async function Gn(e){let t=Q().find(t=>t.providerId===e);if(!t)return;let n=X(e);if(n?.isOAuth){if(n.onOAuthLogout)try{await n.onOAuthLogout()}catch(t){Z.warn(`onOAuthLogout failed`,{providerId:e,error:t instanceof Error?t.message:String(t)})}if(n.getOAuthLogoutUrl){let r=n.getOAuthLogoutUrl(t);if(r){let{openIdpLogoutUrl:t}=await import(`./oauth-service-CSJo71ct.js`);await t(r).catch(t=>{Z.warn(`IdP logout popup failed`,{providerId:e,error:t instanceof Error?t.message:String(t)})})}}await Vn(Q().map(t=>t.providerId===e?{providerId:t.providerId,apiKey:``,baseUrl:t.baseUrl,userName:t.userName,userAvatar:t.userAvatar,loggedOut:!0}:t)),await Un(e)}}async function Kn(e,t={}){let n=Math.max(1,t.attempts??3),r=t.delayMs??150,i=t.sleep??(e=>new Promise(t=>setTimeout(t,e))),a;for(let t=0;t<n;t++){let o=await e();if(o.maskedValue)return{maskedValue:o.maskedValue};o.error&&(a=o.error),t<n-1&&await i(r)}return{lastError:a}}async function qn(e,t,n){let r={providerId:e.providerId,accessToken:e.accessToken,domains:e.domains.join(`,`)},{maskedValue:i,lastError:a}=await Kn(()=>t.sendMaskRequest(r),n);if(!i){Z.error(`OAuth mask give-up: no masked value after retries`,{providerId:e.providerId,reason:a??`no error reported (cold SW or empty reply)`});return}let o=t.getAccounts(),s=o.find(t=>t.providerId===e.providerId);s&&(s.maskedValue=i,await t.saveAccounts(o))}async function Jn(e){let t=Q().find(t=>t.providerId===e.providerId),n=Q().filter(t=>t.providerId!==e.providerId);n.push({providerId:e.providerId,apiKey:``,accessToken:e.accessToken,refreshToken:e.refreshToken,tokenExpiresAt:e.tokenExpiresAt,userName:e.userName,userAvatar:e.userAvatar,baseUrl:e.baseUrl??t?.baseUrl}),await Vn(n);let r=X(e.providerId)?.oauthTokenDomains??[],i=In(e.providerId),a=new Set,o=[];for(let e of[...r,...i]){let t=e.toLowerCase();a.has(t)||(a.add(t),o.push(e))}if(o.length===0)return;let s=typeof chrome<`u`&&!!chrome?.runtime?.id;try{if(s)await qn({providerId:e.providerId,accessToken:e.accessToken,domains:o},{sendMaskRequest:t=>new Promise(n=>{chrome.runtime.sendMessage({type:`secrets.mask-oauth-token`,...t},t=>{chrome.runtime.lastError&&Z.error(`SW mask-oauth-token transport failed`,{providerId:e.providerId,error:chrome.runtime.lastError.message}),t?.error&&Z.warn(`SW mask-oauth-token returned error`,{providerId:e.providerId,error:t.error}),n(t??{})})}),getAccounts:Q,saveAccounts:Vn});else if(!globalThis.__slicc_connect_mode){let t=await fetch(`/api/secrets/oauth-update`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({providerId:e.providerId,accessToken:e.accessToken,domains:o})});if(t.ok){let n=await t.json(),r=Q(),i=r.find(t=>t.providerId===e.providerId);i&&typeof n.maskedValue==`string`&&(i.maskedValue=n.maskedValue,await Vn(r))}else Z.warn(`OAuth replica POST non-ok`,{providerId:e.providerId,status:t.status})}}catch(t){Z.error(`OAuth replica sync failed`,{providerId:e.providerId,isExtension:s,error:t instanceof Error?t.message:String(t)})}}function Yn(e){let t=Q().find(t=>t.providerId===e);return t&&(t.accessToken||t.apiKey)||null}function Xn(e){let t=Q().find(t=>t.providerId===e);return t?t.accessToken||t.apiKey||(X(e).optionalApiKey?`local`:null):null}function Zn(e){return Q().find(t=>t.providerId===e)?.baseUrl??null}function Qn(e){return Q().find(t=>t.providerId===e)?.deployment??null}function $n(e){return Q().find(t=>t.providerId===e)?.apiVersion??null}function er(){let e=localStorage.getItem(Y)||``,t=e.indexOf(`:`);return t>=0?e.slice(t+1):e}function tr(){return localStorage.getItem(Y)||``}function $(){let e=tr(),t=e.indexOf(`:`);if(t>0)return e.slice(0,t);let n=Q();return n.length>0?n[0].providerId:`anthropic`}function nr(){return Xn($())}function rr(e){return/^(?:gpt[-.]?|o[0-9]|chatgpt)/i.test(e)?`openai`:`anthropic`}function ir(e,t,n,r){return{id:t,name:t,provider:e,api:r??`${e}-${rr(t)}`,baseUrl:n??``,contextWindow:2e5,maxTokens:16384,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},reasoning:!0}}function ar(e){if(!e)return or();let t=$(),n=Zn(t),r=X(t);try{let i=wn(r.isOAuth||t===`azure-ai-foundry`?`anthropic`:t===`bedrock-camp`?`amazon-bedrock`:t,e);if(!i?.id)throw Error(`Model ${e} not found`);let a=i;return r.isOAuth?a=Pn(t).find(t=>t.id===e)||{...a,api:`${t}-anthropic`,provider:t}:t===`bedrock-camp`&&(a={...a,api:`bedrock-camp-converse`,provider:`bedrock-camp`}),n&&(a={...a,baseUrl:n}),a}catch(i){if(Z.debug(`resolveModelById: pi-ai lookup miss, using provider fallback`,{providerId:t,modelId:e,error:i instanceof Error?i.message:String(i)}),r.isOAuth){let r=Pn(t).find(t=>t.id===e);return r?n?{...r,baseUrl:n}:r:ir(t,e,n)}return or()}}function or(){let e=$(),t=er(),n=Zn(e),r=Pn(e),i=X(e),a=i.defaultModelId?r.find(e=>e.id.toLowerCase().includes(i.defaultModelId.toLowerCase()))?.id:void 0,o=t||a||r[0]?.id||`claude-sonnet-4-6`;try{let t=X(e),i=t.isOAuth||e===`azure-ai-foundry`?`anthropic`:e===`bedrock-camp`?`amazon-bedrock`:e,a=wn(i,o);if(!a?.id)throw Error(`Model ${o} not found in ${i} registry`);let s=a;return t.isOAuth?s=r.find(e=>e.id===o)||{...s,api:`${e}-anthropic`,provider:e}:e===`bedrock-camp`&&(s={...s,api:`bedrock-camp-converse`,provider:`bedrock-camp`}),n&&(s={...s,baseUrl:n}),s}catch(t){Z.debug(`resolveCurrentModel: pi-ai lookup miss, using provider fallback`,{providerId:e,effectiveModelId:o,error:t instanceof Error?t.message:String(t)});let a=r.find(e=>e.id===o);return a?n?{...a,baseUrl:n}:a:i.isOAuth?ir(e,o,n):wn(`anthropic`,`claude-sonnet-4-0`)}}export{ee as C,x as S,on as _,Qn as a,Gt as b,er as c,or as d,ar as f,cn as g,un as h,Zn as i,$ as l,xn as m,nr as n,Fn as o,Jn as p,$n as r,Pn as s,Q as t,Cn as u,Zt as v,ye as x,Wt as y};
@@ -1 +0,0 @@
1
- import{t as e}from"./store-CQo5JYZe.js";import"./provider-tWBv0sFX.js";export{e as readMcpAuthEntries};
@@ -1 +0,0 @@
1
- import{t as e}from"./provider-DQ7BvBZw.js";export{e as readMcpAuthEntries};
@@ -1 +0,0 @@
1
- import{t as e}from"./logger-LESFN7Hj.js";import{o as t,p as n,t as r}from"./provider-settings-VV6aNiP5.js";import{i,s as a,t as o}from"./providers-BmSZZhhm.js";import{discoverAuth as s,refreshAccessToken as c,runAuthFlow as l}from"./oauth-Czw-MuuR.js";import{n as u}from"./store-CQo5JYZe.js";const d=e(`mcp-provider`);function f(){return typeof globalThis<`u`&&globalThis.indexedDB!==void 0}function p(e){return`mcp:${e}`}const m=new Map,h=new Set;async function g(){let e=typeof chrome<`u`?chrome:void 0;if(e?.runtime?.id)return e.identity?.getRedirectURL?.(`mcp-callback`)??`https://${e.runtime.id}.chromiumapp.org/mcp-callback`;let{getOAuthPageOrigin:t}=await import(`./oauth-service-CSJo71ct.js`),{origin:n}=await t();return`${n}/auth/callback`}async function _(e){if(e)return e;let{createProxiedFetch:t}=await import(`./kernel-worker-DpRMAeb1.js`).then(e=>e.f),n=t();return async(e,t)=>{let r=await n(e,{method:t?.method,headers:t?.headers,body:t?.body}),i=new TextDecoder().decode(r.body);return{ok:r.status>=200&&r.status<300,status:r.status,statusText:r.statusText,text:async()=>i,json:async()=>JSON.parse(i),headers:{get:e=>r.headers[e.toLowerCase()]??null}}}}async function v(e){let t=m.get(p(e.name));if(t)return t;let n=await _(e.fetchImpl),r=await s(e.serverUrl,void 0,n);return m.set(p(e.name),r),r}function y(e){let i=p(e.name),a=(()=>{try{return new URL(e.serverUrl).host}catch{return``}})();return{id:i,name:`MCP: ${e.name}`,description:`MCP server at ${e.serverUrl}`,requiresApiKey:!1,requiresBaseUrl:!1,isOAuth:!0,oauthTokenDomains:a?[a]:[],getModelIds:()=>[],onOAuthLogin:async(t,r)=>{let a=e.launcher??t,o=await _(e.fetchImpl),s=await l({asMetadata:await v(e),clientId:e.auth.clientId,scope:e.auth.scope,redirectUri:await g(),launcher:a,fetchImpl:o});await n({providerId:i,accessToken:s.accessToken,refreshToken:s.refreshToken,tokenExpiresAt:s.expiresAt}),r()},onSilentRenew:async()=>{if(!t(i))return null;let a=r().find(e=>e.providerId===i)?.refreshToken;if(!a)return d.info(`No refresh token for MCP provider, skipping silent renewal`,{id:i}),null;try{let t=await v(e),r=t.grantTypes??[];if(r.length>0&&!r.includes(`refresh_token`))return d.info(`AS does not advertise refresh_token grant; skipping silent renewal`,{id:i}),null;let o=await _(e.fetchImpl),s=await c({tokenEndpoint:t.tokenEndpoint,clientId:e.auth.clientId,refreshToken:a,scope:e.auth.scope,fetchImpl:o});return await n({providerId:i,accessToken:s.accessToken,refreshToken:s.refreshToken??a,tokenExpiresAt:s.expiresAt}),s.accessToken}catch(e){return d.warn(`MCP silent renewal failed`,{id:i,error:e instanceof Error?e.message:String(e)}),null}}}}function b(e){let t=p(e.name);h.has(t)||(i(y(e)),h.add(t),d.debug(`Registered MCP provider`,{id:t}))}async function x(e){let t=p(e);if(h.has(t)&&o(t))return!0;if(!f())return!1;let n=await u(e);return n?(b({name:e,serverUrl:n.serverUrl,auth:n.auth}),!0):!1}async function S(){if(!f())return[];let{readMcpAuthEntries:e}=await import(`./provider-store-access-BGKXkdbd.js`),t=await e(),n=[];for(let e of t)b({name:e.name,serverUrl:e.serverUrl,auth:e.auth}),n.push(p(e.name));return n}function C(e){let t=p(e);return h.delete(t),m.delete(t),a(t)}export{S as ensureAllMcpProvidersRegistered,x as ensureMcpProviderRegistered,b as registerMcpProvider,C as removeMcpProvider};
@@ -1 +0,0 @@
1
- import{n as e}from"./chunk-aKtaBQYM.js";import{f as t,m as n,nt as r,o as i,p as a,ut as o}from"./main-D7K1MTaQ.js";import{t as s}from"./llm-session-id-DVmZ9C2t.js";import{t as c}from"./iconsAndAliases-Bzj1tGpU.js";var l=e({lucideIconNames:()=>m,pickLucideIcon:()=>h,quickLabel:()=>d}),u=r(`quick-llm`);async function d(e){let t=i();if(!t)return u.debug(`No API key for active provider — skipping`),null;let r=n(),s=a(),c;if(c=e.modelId?y(r,e.modelId)??y(r,s):g(r,s),!c)return u.debug(`No model available for provider`,{providerId:r}),null;let l={role:`user`,content:e.prompt,timestamp:Date.now()},d={};c.provider===`adobe`&&(d[`X-Session-Id`]=x());try{let n=(await o(c,{systemPrompt:e.system,messages:[l]},{apiKey:t,maxTokens:e.maxTokens??60,temperature:e.temperature??.3,signal:e.signal,headers:Object.keys(d).length>0?d:void 0})).content.filter(e=>e.type===`text`).map(e=>e.text).join(``).trim();return n.length>0?n:null}catch(e){return u.debug(`Quick label call failed`,{error:e instanceof Error?e.message:String(e)}),null}}var f=null;function p(e){return e.replace(/([A-Z]+)([A-Z][a-z])/g,`$1-$2`).replace(/([a-z0-9])([A-Z])/g,`$1-$2`).replace(/([A-Za-z])(\d)/g,`$1-$2`).toLowerCase()}function m(){return f||=Object.keys(c).map(p).sort(),f}async function h(e){let t=m(),n=await(e.labelFn??d)({system:`You pick ONE icon for a UI element. Respond with exactly one icon name from the provided list — lowercase, no quotes, no punctuation, nothing else.`,prompt:`Pick the single most fitting icon for: ${e.subject}\n\nValid icon names:\n${t.join(` `)}`,maxTokens:16,temperature:.2,signal:e.signal});if(!n)return null;let r=n.trim().toLowerCase().replace(/[^a-z0-9-]/g,``);return t.includes(r)?r:null}function g(e,n){let r=t(e);if(r.length===0)return;let i=r.find(e=>e.id===n)??r[0],a=v(i.id),o=r.filter(e=>_(e,i,a));return o.length===0?i:(o.sort((e,t)=>(e.cost?.input??0)-(t.cost?.input??0)),o[0])}function _(e,t,n){if(e.id===t.id)return!1;let r=t.cost?.input??1/0;if((e.cost?.input??1/0)>=r)return!1;let i=e.id.toLowerCase();switch(n){case`claude`:return i.includes(`haiku`);case`gpt`:return/(^|-)mini(-|$)|(^|-)nano(-|$)/.test(i);case`gemini`:return i.includes(`flash`);case`grok`:return/(^|-)mini(-|$)|(^|-)fast(-|$)/.test(i);case`unknown`:return!0}}function v(e){let t=e.toLowerCase();return t.includes(`claude`)?`claude`:t.includes(`gemini`)?`gemini`:t.includes(`grok`)?`grok`:/^(gpt|o\d)/.test(t)?`gpt`:`unknown`}function y(e,n){return t(e).find(e=>e.id===n)}var b=`ui-quick-llm`;function x(){return s(b)}export{l as n,d as t};
@@ -1 +0,0 @@
1
- import{nt as e}from"./main-D7K1MTaQ.js";var t=e(`tray-sync`),n=`slicc-cherry`;function r(e){return typeof e==`object`&&!!e&&e.type===`cherry.host_event`}var i=32*1024;function a(e,t,n,r){if(r||!n)return e.send({type:`cdp.response`,requestId:t,result:n,error:r});let a=JSON.stringify(n);if(a.length<=65536)return e.send({type:`cdp.response`,requestId:t,result:n});let o=Math.ceil(a.length/i),s=!0;for(let n=0;n<o;n++){let r=a.slice(n*i,(n+1)*i);if(!e.send({type:`cdp.response`,requestId:t,chunkData:r,chunkIndex:n,totalChunks:o})){s=!1,e.send({type:`cdp.response`,requestId:t,error:`Failed to send CDP response chunk ${n}/${o} (response was ${a.length} bytes)`});break}}return s}function o(e,t){if(t.chunkIndex===void 0||t.totalChunks===void 0)return{result:t.result,error:t.error};if(t.error)return e.delete(t.requestId),{error:t.error};let n=t.requestId,r=e.get(n);if(r||(r={chunks:Array(t.totalChunks),received:0,totalChunks:t.totalChunks},e.set(n,r)),r.chunks[t.chunkIndex]||(r.chunks[t.chunkIndex]=t.chunkData,r.received++),r.received>=r.totalChunks){e.delete(n);try{return{result:JSON.parse(r.chunks.join(``))}}catch(e){return{error:`Failed to reassemble CDP response: ${e instanceof Error?e.message:String(e)}`}}}return null}var s=32*1024;function c(e,n,r){let i=JSON.stringify({messages:n,scoopJid:r});if(i.length<=65536)return e.send({type:`snapshot`,messages:n,scoopJid:r});let a=Math.ceil(i.length/s),o=!0;for(let n=0;n<a;n++){let c=i.slice(n*s,(n+1)*s);if(!e.send({type:`snapshot_chunk`,chunkData:c,chunkIndex:n,totalChunks:a,scoopJid:r})){o=!1,t.error(`Failed to send snapshot chunk`,{chunkIndex:n,totalChunks:a,totalSize:i.length});break}}return t.debug(`Snapshot sent in chunks`,{totalChunks:a,totalSize:i.length}),o}function l(e,n){if(e||={chunks:Array(n.totalChunks),received:0,totalChunks:n.totalChunks},e.chunks[n.chunkIndex]||(e.chunks[n.chunkIndex]=n.chunkData,e.received++),e.received>=e.totalChunks)try{return{result:JSON.parse(e.chunks.join(``)),buffer:null}}catch(e){return t.error(`Failed to reassemble snapshot`,{error:e instanceof Error?e.message:String(e)}),{result:{messages:[],scoopJid:n.scoopJid},buffer:null}}return{result:null,buffer:e}}var u=class{channel;listeners=[];closed=!1;constructor(e){this.channel=e,this.channel.addEventListener(`message`,e=>{if(!this.closed)try{let t=JSON.parse(e.data);for(let e of this.listeners)e(t)}catch(e){t.warn(`Failed to parse tray sync message`,{error:e instanceof Error?e.message:String(e)})}})}send(e){if(this.closed)return!1;try{return this.channel.send(JSON.stringify(e)),!0}catch(n){return t.error(`Failed to send tray sync message`,{type:e.type,error:n instanceof Error?n.message:String(n)}),!1}}onMessage(e){return this.listeners.push(e),()=>{let t=this.listeners.indexOf(e);t>=0&&this.listeners.splice(t,1)}}close(){this.closed=!0,this.listeners.length=0,this.channel.close()}get isOpen(){return!this.closed&&this.channel.readyState===`open`}};function d(e){return new u(e)}function f(e){return new u(e)}var p=class{sender;timeoutMs;pending=new Map;eventListeners=new Map;chunkBuffers=new Map;_state=`connected`;requestCounter=0;constructor(e,t=3e4){this.sender=e,this.timeoutMs=t}get state(){return this._state}async connect(){}disconnect(){this._state=`disconnected`;for(let[,{reject:e,timer:t}]of this.pending)clearTimeout(t),e(Error(`Transport disconnected`));this.pending.clear()}async send(e,t,n,r){if(this._state===`disconnected`)throw Error(`Transport disconnected`);let i=`remote-${++this.requestCounter}-${Date.now()}`,a=r??this.timeoutMs;return new Promise((r,o)=>{let s=setTimeout(()=>{this.pending.delete(i),o(Error(`Remote CDP request timed out after ${a}ms: ${e}`))},a);this.pending.set(i,{resolve:r,reject:o,timer:s}),this.sender.sendCDPRequest(i,e,t,n)})}on(e,t){let n=this.eventListeners.get(e);n||(n=new Set,this.eventListeners.set(e,n)),n.add(t)}off(e,t){this.eventListeners.get(e)?.delete(t)}once(e,t){return new Promise((n,r)=>{let i=t??this.timeoutMs,a=setTimeout(()=>{this.off(e,o),r(Error(`Remote CDP event timed out: ${e}`))},i),o=t=>{clearTimeout(a),this.off(e,o),n(t)};this.on(e,o)})}handleResponse(e,t,n,r,i,a){let s=this.pending.get(e);if(!s)return;let c=o(this.chunkBuffers,{type:`cdp.response`,requestId:e,result:t,error:n,chunkData:r,chunkIndex:i,totalChunks:a});c&&(this.pending.delete(e),clearTimeout(s.timer),c.error?s.reject(Error(c.error)):s.resolve(c.result??{}))}handleEvent(e,t){let n=this.eventListeners.get(e);if(n)for(let e of n)e(t)}};export{r as a,a as c,d as i,c as l,n,o,f as r,l as s,p as t};
@@ -1 +0,0 @@
1
- import{nt as e}from"./main-D7K1MTaQ.js";var t=e(`secret-env`);function n(e){return/^[A-Za-z_][A-Za-z0-9_]*$/.test(e)}function r(e){let t={},r;for(let i of e)!i?.name||!i?.maskedValue||(i.name===`oauth.github.token`&&(r=i.maskedValue),n(i.name)&&(t[i.name]=i.maskedValue));return r&&(t.GITHUB_TOKEN===void 0&&(t.GITHUB_TOKEN=r),t.GH_TOKEN===void 0&&(t.GH_TOKEN=r)),t}async function i(){if(typeof chrome<`u`&&chrome?.runtime?.id)return new Promise(e=>{chrome.runtime.sendMessage({type:`secrets.list-masked-entries`},n=>{let i=r(n?.entries??[]);Object.keys(i).length>0&&t.info(`Loaded masked secrets into shell env from SW`,{count:Object.keys(i).length}),e(i)})});try{let e=await fetch(`/api/secrets/masked`);if(!e.ok)return t.warn(`Failed to fetch masked secrets`,{status:e.status}),{};let n=await e.json();if(!Array.isArray(n)||n.length===0)return{};let i=r(n);return Object.keys(i).length>0&&t.info(`Loaded masked secrets into shell env`,{count:Object.keys(i).length}),i}catch(e){return t.debug(`Could not fetch masked secrets (server may be unavailable)`,{error:e instanceof Error?e.message:String(e)}),{}}}export{i as fetchSecretEnvVars};
@@ -1 +0,0 @@
1
- import{l as e}from"./wc-live-DHS3FYU1.js";export{e as readSessionsIndex};
@@ -1 +0,0 @@
1
- import{Dt as e}from"./main-D7K1MTaQ.js";function t(t){let n=null,r=Promise.resolve(),i=async()=>{let{TerminalSessionClient:n}=await e(async()=>{let{TerminalSessionClient:e}=await import(`./terminal-session-client-C_tYJ1IB.js`);return{TerminalSessionClient:e}},[]),r=new n({client:t,sid:`sprinkle-exec-${Date.now()}`});return await r.open({cwd:`/`}),r},a=()=>(n||=i().catch(e=>{throw n=null,e}),n);return async e=>{let t=r.then(()=>a().then(t=>t.exec(e)),()=>a().then(t=>t.exec(e)));return r=t.catch(()=>void 0),t}}export{t as createSprinkleExecHandler};
@@ -1 +0,0 @@
1
- import{g as e,h as t}from"./wc-live-DHS3FYU1.js";export{t as setupSudoExtension,e as setupSudoStandalone};
@@ -1,12 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/dist-Dnh15m1q.js","assets/dist-k2Xmqc09.js","assets/dist-BBhtjNOt.js","assets/dist-DQRYKv91.js","assets/dist-jdlcYxrm.js"])))=>i.map(i=>d[i]);
2
- import{Dt as e}from"./main-D7K1MTaQ.js";import{$ as t,A as n,B as r,D as i,E as a,F as o,H as s,I as c,J as l,L as u,N as d,P as f,Q as p,R as m,S as ee,U as te,V as h,X as g,Y as ne,Z as re,at as _,c as ie,d as ae,j as oe,k as se,n as ce,nt as v,q as y,t as le,v as b,w as x,x as S,y as C,z as ue}from"./dist-k2Xmqc09.js";var de=e=>{let{state:t}=e,n=t.doc.lineAt(t.selection.main.from),r=T(e.state,n.from);return r.line?fe(e):r.block?me(e):!1};function w(e,t){return({state:n,dispatch:r})=>{if(n.readOnly)return!1;let i=e(t,n);return i?(r(n.update(i)),!0):!1}}var fe=w(ve,0),pe=w(_e,0),me=w((e,t)=>_e(e,t,ge(t)),0);function T(e,t){let n=e.languageDataAt(`commentTokens`,t,1);return n.length?n[0]:{}}var E=50;function he(e,{open:t,close:n},r,i){let a=e.sliceDoc(r-E,r),o=e.sliceDoc(i,i+E),s=/\s*$/.exec(a)[0].length,c=/^\s*/.exec(o)[0].length,l=a.length-s;if(a.slice(l-t.length,l)==t&&o.slice(c,c+n.length)==n)return{open:{pos:r-s,margin:s&&1},close:{pos:i+c,margin:c&&1}};let u,d;i-r<=2*E?u=d=e.sliceDoc(r,i):(u=e.sliceDoc(r,r+E),d=e.sliceDoc(i-E,i));let f=/^\s*/.exec(u)[0].length,p=/\s*$/.exec(d)[0].length,m=d.length-p-n.length;return u.slice(f,f+t.length)==t&&d.slice(m,m+n.length)==n?{open:{pos:r+f+t.length,margin:+!!/\s/.test(u.charAt(f+t.length))},close:{pos:i-p-n.length,margin:+!!/\s/.test(d.charAt(m-1))}}:null}function ge(e){let t=[];for(let n of e.selection.ranges){let r=e.doc.lineAt(n.from),i=n.to<=r.to?r:e.doc.lineAt(n.to);i.from>r.from&&i.from==n.to&&(i=n.to==r.to+1?r:e.doc.lineAt(n.to-1));let a=t.length-1;a>=0&&t[a].to>r.from?t[a].to=i.to:t.push({from:r.from+/^\s*/.exec(r.text)[0].length,to:i.to})}return t}function _e(e,t,n=t.selection.ranges){let r=n.map(e=>T(t,e.from).block);if(!r.every(e=>e))return null;let i=n.map((e,n)=>he(t,r[n],e.from,e.to));if(e!=2&&!i.every(e=>e))return{changes:t.changes(n.map((e,t)=>i[t]?[]:[{from:e.from,insert:r[t].open+` `},{from:e.to,insert:` `+r[t].close}]))};if(e!=1&&i.some(e=>e)){let e=[];for(let t=0,n;t<i.length;t++)if(n=i[t]){let i=r[t],{open:a,close:o}=n;e.push({from:a.pos-i.open.length,to:a.pos+a.margin},{from:o.pos-o.margin,to:o.pos+i.close.length})}return{changes:e}}return null}function ve(e,t,n=t.selection.ranges){let r=[],i=-1;ranges:for(let{from:e,to:a}of n){let n=r.length,o=1e9,s;for(let n=e;n<=a;){let c=t.doc.lineAt(n);if(s==null&&(s=T(t,c.from).line,!s))continue ranges;if(c.from>i&&(e==a||a>c.from)){i=c.from;let e=/^\s*/.exec(c.text)[0].length,t=e==c.length,n=c.text.slice(e,e+s.length)==s?e:-1;e<c.text.length&&e<o&&(o=e),r.push({line:c,comment:n,token:s,indent:e,empty:t,single:!1})}n=c.to+1}if(o<1e9)for(let e=n;e<r.length;e++)r[e].indent<r[e].line.text.length&&(r[e].indent=o);r.length==n+1&&(r[n].single=!0)}if(e!=2&&r.some(e=>e.comment<0&&(!e.empty||e.single))){let e=[];for(let{line:t,token:n,indent:i,empty:a,single:o}of r)(o||!a)&&e.push({from:t.from+i,insert:n+` `});let n=t.changes(e);return{changes:n,selection:t.selection.map(n,1)}}else if(e!=1&&r.some(e=>e.comment>=0)){let e=[];for(let{line:t,comment:n,token:i}of r)if(n>=0){let r=t.from+n,a=r+i.length;t.text[a-t.from]==` `&&a++,e.push({from:r,to:a})}return{changes:e}}return null}var D=u.define(),ye=u.define(),be=te.define(),xe=te.define({combine(e){return re(e,{minDepth:100,newGroupDelay:500,joinToEvent:(e,t)=>t},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(e,t)=>(n,r)=>e(n,r)||t(n,r)})}}),Se=l.define({create(){return P.empty},update(e,t){let n=t.state.facet(xe),r=t.annotation(D);if(r){let i=A.fromTransaction(t,r.selection),a=r.side,o=a==0?e.undone:e.done;return o=i?j(o,o.length,n.minDepth,i):je(o,t.startState.selection),new P(a==0?r.rest:o,a==0?o:r.rest)}let i=t.annotation(ye);if((i==`full`||i==`before`)&&(e=e.isolate()),t.annotation(g.addToHistory)===!1)return t.changes.empty?e:e.addMapping(t.changes.desc);let a=A.fromTransaction(t),o=t.annotation(g.time),s=t.annotation(g.userEvent);return a?e=e.addChanges(a,o,s,n,t):t.selection&&(e=e.addSelection(t.startState.selection,o,s,n.newGroupDelay)),(i==`full`||i==`after`)&&(e=e.isolate()),e},toJSON(e){return{done:e.done.map(e=>e.toJSON()),undone:e.undone.map(e=>e.toJSON())}},fromJSON(e){return new P(e.done.map(A.fromJSON),e.undone.map(A.fromJSON))}});function Ce(e={}){return[Se,xe.of(e),n.domEventHandlers({beforeinput(e,t){let n=e.inputType==`historyUndo`?we:e.inputType==`historyRedo`?k:null;return n?(e.preventDefault(),n(t)):!1}})]}function O(e,t){return function({state:n,dispatch:r}){if(!t&&n.readOnly)return!1;let i=n.field(Se,!1);if(!i)return!1;let a=i.pop(e,n,t);return a?(r(a),!0):!1}}var we=O(0,!1),k=O(1,!1),Te=O(0,!0),Ee=O(1,!0),A=class e{constructor(e,t,n,r,i){this.changes=e,this.effects=t,this.mapped=n,this.startSelection=r,this.selectionsAfter=i}setSelAfter(t){return new e(this.changes,this.effects,this.mapped,this.startSelection,t)}toJSON(){return{changes:this.changes?.toJSON(),mapped:this.mapped?.toJSON(),startSelection:this.startSelection?.toJSON(),selectionsAfter:this.selectionsAfter.map(e=>e.toJSON())}}static fromJSON(t){return new e(t.changes&&ue.fromJSON(t.changes),[],t.mapped&&m.fromJSON(t.mapped),t.startSelection&&h.fromJSON(t.startSelection),t.selectionsAfter.map(h.fromJSON))}static fromTransaction(t,n){let r=M;for(let e of t.startState.facet(be)){let n=e(t);n.length&&(r=r.concat(n))}return!r.length&&t.changes.empty?null:new e(t.changes.invert(t.startState.doc),r,void 0,n||t.startState.selection,M)}static selection(t){return new e(void 0,M,void 0,void 0,t)}};function j(e,t,n,r){let i=t+1>n+20?t-n-1:0,a=e.slice(i,t);return a.push(r),a}function De(e,t){let n=[],r=!1;return e.iterChangedRanges((e,t)=>n.push(e,t)),t.iterChangedRanges((e,t,i,a)=>{for(let e=0;e<n.length;){let t=n[e++],o=n[e++];a>=t&&i<=o&&(r=!0)}}),r}function Oe(e,t){return e.ranges.length==t.ranges.length&&e.ranges.filter((e,n)=>e.empty!=t.ranges[n].empty).length===0}function ke(e,t){return e.length?t.length?e.concat(t):e:t}var M=[],Ae=200;function je(e,t){if(e.length){let n=e[e.length-1],r=n.selectionsAfter.slice(Math.max(0,n.selectionsAfter.length-Ae));return r.length&&r[r.length-1].eq(t)?e:(r.push(t),j(e,e.length-1,1e9,n.setSelAfter(r)))}else return[A.selection([t])]}function Me(e){let t=e[e.length-1],n=e.slice();return n[e.length-1]=t.setSelAfter(t.selectionsAfter.slice(0,t.selectionsAfter.length-1)),n}function N(e,t){if(!e.length)return e;let n=e.length,r=M;for(;n;){let i=Ne(e[n-1],t,r);if(i.changes&&!i.changes.empty||i.effects.length){let t=e.slice(0,n);return t[n-1]=i,t}else t=i.mapped,n--,r=i.selectionsAfter}return r.length?[A.selection(r)]:M}function Ne(e,t,n){let r=ke(e.selectionsAfter.length?e.selectionsAfter.map(e=>e.map(t)):M,n);if(!e.changes)return A.selection(r);let i=e.changes.map(t),a=t.mapDesc(e.changes,!0),o=e.mapped?e.mapped.composeDesc(a):a;return new A(i,y.mapEffects(e.effects,t),o,e.startSelection.map(a),r)}var Pe=/^(input\.type|delete)($|\.)/,P=class e{constructor(e,t,n=0,r=void 0){this.done=e,this.undone=t,this.prevTime=n,this.prevUserEvent=r}isolate(){return this.prevTime?new e(this.done,this.undone):this}addChanges(t,n,r,i,a){let o=this.done,s=o[o.length-1];return o=s&&s.changes&&!s.changes.empty&&t.changes&&(!r||Pe.test(r))&&(!s.selectionsAfter.length&&n-this.prevTime<i.newGroupDelay&&i.joinToEvent(a,De(s.changes,t.changes))||r==`input.type.compose`)?j(o,o.length-1,i.minDepth,new A(t.changes.compose(s.changes),ke(y.mapEffects(t.effects,s.changes),s.effects),s.mapped,s.startSelection,M)):j(o,o.length,i.minDepth,t),new e(o,M,n,r)}addSelection(t,n,r,i){let a=this.done.length?this.done[this.done.length-1].selectionsAfter:M;return a.length>0&&n-this.prevTime<i&&r==this.prevUserEvent&&r&&/^select($|\.)/.test(r)&&Oe(a[a.length-1],t)?this:new e(je(this.done,t),this.undone,n,r)}addMapping(t){return new e(N(this.done,t),N(this.undone,t),this.prevTime,this.prevUserEvent)}pop(e,t,n){let r=e==0?this.done:this.undone;if(r.length==0)return null;let i=r[r.length-1],a=i.selectionsAfter[0]||(i.startSelection?i.startSelection.map(i.changes.invertedDesc,1):t.selection);if(n&&i.selectionsAfter.length)return t.update({selection:i.selectionsAfter[i.selectionsAfter.length-1],annotations:D.of({side:e,rest:Me(r),selection:a}),userEvent:e==0?`select.undo`:`select.redo`,scrollIntoView:!0});if(i.changes){let n=r.length==1?M:r.slice(0,r.length-1);return i.mapped&&(n=N(n,i.mapped)),t.update({changes:i.changes,selection:i.startSelection,effects:i.effects,annotations:D.of({side:e,rest:n,selection:a}),filter:!1,userEvent:e==0?`undo`:`redo`,scrollIntoView:!0})}else return null}};P.empty=new P(M,M);var Fe=[{key:`Mod-z`,run:we,preventDefault:!0},{key:`Mod-y`,mac:`Mod-Shift-z`,run:k,preventDefault:!0},{linux:`Ctrl-Shift-z`,run:k,preventDefault:!0},{key:`Mod-u`,run:Te,preventDefault:!0},{key:`Alt-u`,mac:`Mod-Shift-u`,run:Ee,preventDefault:!0}];function F(e,t){return h.create(e.ranges.map(t),e.mainIndex)}function I(e,t){return e.update({selection:t,scrollIntoView:!0,userEvent:`select`})}function L({state:e,dispatch:t},n){let r=F(e.selection,n);return r.eq(e.selection,!0)?!1:(t(I(e,r)),!0)}function R(e,t){return h.cursor(t?e.to:e.from)}function Ie(e,t){return L(e,n=>n.empty?e.moveByChar(n,t):R(n,t))}function z(e){return e.textDirectionAt(e.state.selection.main.head)==se.LTR}var B=e=>Ie(e,!z(e)),V=e=>Ie(e,z(e));function H(e,t){return L(e,n=>n.empty?e.moveByGroup(n,t):R(n,t))}var Le=e=>H(e,!z(e)),Re=e=>H(e,z(e));typeof Intl<`u`&&Intl.Segmenter;function ze(e,t,n){if(t.type.prop(n))return!0;let r=t.to-t.from;return r&&(r>2||/[^\s,.;:]/.test(e.sliceDoc(t.from,t.to)))||t.firstChild}function U(e,t,n){let r=i(e).resolveInner(t.head),a=n?_.closedBy:_.openedBy;for(let i=t.head;;){let t=n?r.childAfter(i):r.childBefore(i);if(!t)break;ze(e,t,a)?r=t:i=n?t.to:t.from}let o=r.type.prop(a),s,c;return c=o&&(s=n?x(e,r.from,1):x(e,r.to,-1))&&s.matched?n?s.end.to:s.end.from:n?r.to:r.from,h.cursor(c,n?-1:1)}var Be=e=>L(e,t=>U(e.state,t,!z(e))),Ve=e=>L(e,t=>U(e.state,t,z(e)));function W(e,t){return L(e,n=>{if(!n.empty)return R(n,t);let r=e.moveVertically(n,t);return r.head==n.head?e.moveToLineBoundary(n,t):r})}var He=e=>W(e,!1),Ue=e=>W(e,!0);function We(e){let t=e.scrollDOM.clientHeight<e.scrollDOM.scrollHeight-2,r=0,i=0,a;if(t){for(let t of e.state.facet(n.scrollMargins)){let n=t(e);n?.top&&(r=Math.max(n?.top,r)),n?.bottom&&(i=Math.max(n?.bottom,i))}a=e.scrollDOM.clientHeight-r-i}else a=(e.dom.ownerDocument.defaultView||window).innerHeight;return{marginTop:r,marginBottom:i,selfScroll:t,height:Math.max(e.defaultLineHeight,a-5)}}function Ge(e,t){let r=We(e),{state:i}=e,a=F(i.selection,n=>n.empty?e.moveVertically(n,t,r.height):R(n,t));if(a.eq(i.selection))return!1;let o;if(r.selfScroll){let t=e.coordsAtPos(i.selection.main.head),s=e.scrollDOM.getBoundingClientRect(),c=s.top+r.marginTop,l=s.bottom-r.marginBottom;t&&t.top>c&&t.bottom<l&&(o=n.scrollIntoView(a.main.head,{y:`start`,yMargin:t.top-c}))}return e.dispatch(I(i,a),{effects:o}),!0}var Ke=e=>Ge(e,!1),G=e=>Ge(e,!0);function K(e,t,n){let r=e.lineBlockAt(t.head),i=e.moveToLineBoundary(t,n);if(i.head==t.head&&i.head!=(n?r.to:r.from)&&(i=e.moveToLineBoundary(t,n,!1)),!n&&i.head==r.from&&r.length){let n=/^\s*/.exec(e.state.sliceDoc(r.from,Math.min(r.from+100,r.to)))[0].length;n&&t.head!=r.from+n&&(i=h.cursor(r.from+n))}return i}var qe=e=>L(e,t=>K(e,t,!0)),Je=e=>L(e,t=>K(e,t,!1)),Ye=e=>L(e,t=>K(e,t,!z(e))),Xe=e=>L(e,t=>K(e,t,z(e))),Ze=e=>L(e,t=>h.cursor(e.lineBlockAt(t.head).from,1)),Qe=e=>L(e,t=>h.cursor(e.lineBlockAt(t.head).to,-1));function $e(e,t,n){let r=!1,i=F(e.selection,t=>{let i=x(e,t.head,-1)||x(e,t.head,1)||t.head>0&&x(e,t.head-1,1)||t.head<e.doc.length&&x(e,t.head+1,-1);if(!i||!i.end)return t;r=!0;let a=i.start.from==t.head?i.end.to:i.end.from;return n?h.range(t.anchor,a):h.cursor(a)});return r?(t(I(e,i)),!0):!1}var et=({state:e,dispatch:t})=>$e(e,t,!1);function q(e,t){let n=F(e.state.selection,e=>{let n=t(e);return h.range(e.anchor,n.head,n.goalColumn,n.bidiLevel||void 0,n.assoc)});return n.eq(e.state.selection)?!1:(e.dispatch(I(e.state,n)),!0)}function tt(e,t){return q(e,n=>e.moveByChar(n,t))}var nt=e=>tt(e,!z(e)),rt=e=>tt(e,z(e));function it(e,t){return q(e,n=>e.moveByGroup(n,t))}var at=e=>it(e,!z(e)),ot=e=>it(e,z(e)),st=e=>q(e,t=>U(e.state,t,!z(e))),ct=e=>q(e,t=>U(e.state,t,z(e)));function lt(e,t){return q(e,n=>e.moveVertically(n,t))}var ut=e=>lt(e,!1),dt=e=>lt(e,!0);function ft(e,t){return q(e,n=>e.moveVertically(n,t,We(e).height))}var pt=e=>ft(e,!1),mt=e=>ft(e,!0),ht=e=>q(e,t=>K(e,t,!0)),gt=e=>q(e,t=>K(e,t,!1)),_t=e=>q(e,t=>K(e,t,!z(e))),vt=e=>q(e,t=>K(e,t,z(e))),yt=e=>q(e,t=>h.cursor(e.lineBlockAt(t.head).from)),bt=e=>q(e,t=>h.cursor(e.lineBlockAt(t.head).to)),xt=({state:e,dispatch:t})=>(t(I(e,{anchor:0})),!0),St=({state:e,dispatch:t})=>(t(I(e,{anchor:e.doc.length})),!0),Ct=({state:e,dispatch:t})=>(t(I(e,{anchor:e.selection.main.anchor,head:0})),!0),wt=({state:e,dispatch:t})=>(t(I(e,{anchor:e.selection.main.anchor,head:e.doc.length})),!0),Tt=({state:e,dispatch:t})=>(t(e.update({selection:{anchor:0,head:e.doc.length},userEvent:`select`})),!0),Et=({state:e,dispatch:t})=>{let n=Q(e).map(({from:t,to:n})=>h.range(t,Math.min(n+1,e.doc.length)));return t(e.update({selection:h.create(n),userEvent:`select`})),!0},Dt=({state:e,dispatch:t})=>{let n=F(e.selection,t=>{let n=i(e),r=n.resolveStack(t.from,1);if(t.empty){let e=n.resolveStack(t.from,-1);e.node.from>=r.node.from&&e.node.to<=r.node.to&&(r=e)}for(let e=r;e;e=e.next){let{node:n}=e;if((n.from<t.from&&n.to>=t.to||n.to>t.to&&n.from<=t.from)&&e.next)return h.range(n.to,n.from)}return t});return n.eq(e.selection)?!1:(t(I(e,n)),!0)};function Ot(e,t){let{state:n}=e,r=n.selection,i=n.selection.ranges.slice();for(let r of n.selection.ranges){let a=n.doc.lineAt(r.head);if(t?a.to<e.state.doc.length:a.from>0)for(let n=r;;){let r=e.moveVertically(n,t);if(r.head<a.from||r.head>a.to){i.some(e=>e.head==r.head)||i.push(r);break}else if(r.head==n.head)break;else n=r}}return i.length==r.ranges.length?!1:(e.dispatch(I(n,h.create(i,i.length-1))),!0)}var kt=e=>Ot(e,!1),At=e=>Ot(e,!0),jt=({state:e,dispatch:t})=>{let n=e.selection,r=null;return n.ranges.length>1?r=h.create([n.main]):n.main.empty||(r=h.create([h.cursor(n.main.head)])),r?(t(I(e,r)),!0):!1};function J(e,t){if(e.state.readOnly)return!1;let r=`delete.selection`,{state:i}=e,a=i.changeByRange(n=>{let{from:i,to:a}=n;if(i==a){let o=t(n);o<i?(r=`delete.backward`,o=Y(e,o,!1)):o>i&&(r=`delete.forward`,o=Y(e,o,!0)),i=Math.min(i,o),a=Math.max(a,o)}else i=Y(e,i,!1),a=Y(e,a,!0);return i==a?{range:n}:{changes:{from:i,to:a},range:h.cursor(i,i<n.head?-1:1)}});return a.changes.empty?!1:(e.dispatch(i.update(a,{scrollIntoView:!0,userEvent:r,effects:r==`delete.selection`?n.announce.of(i.phrase(`Selection deleted`)):void 0})),!0)}function Y(e,t,r){if(e instanceof n)for(let i of e.state.facet(n.atomicRanges).map(t=>t(e)))i.between(t,t,(e,n)=>{e<t&&n>t&&(t=r?n:e)});return t}var Mt=(e,n,r)=>J(e,i=>{let a=i.from,{state:o}=e,s=o.doc.lineAt(a),c,l;if(r&&!n&&a>s.from&&a<s.from+200&&!/[^ \t]/.test(c=s.text.slice(0,a-s.from))){if(c[c.length-1]==` `)return a-1;let e=p(c,o.tabSize)%b(o)||b(o);for(let t=0;t<e&&c[c.length-1-t]==` `;t++)a--;l=a}else l=t(s.text,a-s.from,n,n)+s.from,l==a&&s.number!=(n?o.doc.lines:1)?l+=n?1:-1:!n&&/[\ufe00-\ufe0f]/.test(s.text.slice(l-s.from,a-s.from))&&(l=t(s.text,l-s.from,!1,!1)+s.from);return l}),X=e=>Mt(e,!1,!0),Nt=e=>Mt(e,!0,!1),Pt=(e,n)=>J(e,r=>{let i=r.head,{state:a}=e,o=a.doc.lineAt(i),s=a.charCategorizer(i);for(let e=null;;){if(i==(n?o.to:o.from)){i==r.head&&o.number!=(n?a.doc.lines:1)&&(i+=n?1:-1);break}let c=t(o.text,i-o.from,n)+o.from,l=o.text.slice(Math.min(i,c)-o.from,Math.max(i,c)-o.from),u=s(l);if(e!=null&&u!=e)break;(l!=` `||i!=r.head)&&(e=u),i=c}return i}),Z=e=>Pt(e,!1),Ft=e=>Pt(e,!0),It=e=>J(e,t=>{let n=e.lineBlockAt(t.head).to;return t.head<n?n:Math.min(e.state.doc.length,t.head+1)}),Lt=e=>J(e,t=>{let n=e.moveToLineBoundary(t,!1).head;return t.head>n?n:Math.max(0,t.head-1)}),Rt=e=>J(e,t=>{let n=e.moveToLineBoundary(t,!0).head;return t.head<n?n:Math.min(e.state.doc.length,t.head+1)}),zt=({state:e,dispatch:t})=>{if(e.readOnly)return!1;let n=e.changeByRange(e=>({changes:{from:e.from,to:e.to,insert:ne.of([``,``])},range:h.cursor(e.from)}));return t(e.update(n,{scrollIntoView:!0,userEvent:`input`})),!0},Bt=({state:e,dispatch:n})=>{if(e.readOnly)return!1;let r=e.changeByRange(n=>{if(!n.empty||n.from==0||n.from==e.doc.length)return{range:n};let r=n.from,i=e.doc.lineAt(r),a=r==i.from?r-1:t(i.text,r-i.from,!1)+i.from,o=r==i.to?r+1:t(i.text,r-i.from,!0)+i.from;return{changes:{from:a,to:o,insert:e.doc.slice(r,o).append(e.doc.slice(a,r))},range:h.cursor(o)}});return r.changes.empty?!1:(n(e.update(r,{scrollIntoView:!0,userEvent:`move.character`})),!0)};function Q(e){let t=[],n=-1;for(let r of e.selection.ranges){let i=e.doc.lineAt(r.from),a=e.doc.lineAt(r.to);if(!r.empty&&r.to==a.from&&(a=e.doc.lineAt(r.to-1)),n>=i.number){let e=t[t.length-1];e.to=a.to,e.ranges.push(r)}else t.push({from:i.from,to:a.to,ranges:[r]});n=a.number+1}return t}function Vt(e,t,n){if(e.readOnly)return!1;let r=[],i=[];for(let t of Q(e)){if(n?t.to==e.doc.length:t.from==0)continue;let a=e.doc.lineAt(n?t.to+1:t.from-1),o=a.length+1;if(n){r.push({from:t.to,to:a.to},{from:t.from,insert:a.text+e.lineBreak});for(let n of t.ranges)i.push(h.range(Math.min(e.doc.length,n.anchor+o),Math.min(e.doc.length,n.head+o)))}else{r.push({from:a.from,to:t.from},{from:t.to,insert:e.lineBreak+a.text});for(let e of t.ranges)i.push(h.range(e.anchor-o,e.head-o))}}return r.length?(t(e.update({changes:r,scrollIntoView:!0,selection:h.create(i,e.selection.mainIndex),userEvent:`move.line`})),!0):!1}var Ht=({state:e,dispatch:t})=>Vt(e,t,!1),Ut=({state:e,dispatch:t})=>Vt(e,t,!0);function Wt(e,t,n){if(e.readOnly)return!1;let r=[];for(let t of Q(e))n?r.push({from:t.from,insert:e.doc.slice(t.from,t.to)+e.lineBreak}):r.push({from:t.to,insert:e.lineBreak+e.doc.slice(t.from,t.to)});let i=e.changes(r);return t(e.update({changes:i,selection:e.selection.map(i,n?1:-1),scrollIntoView:!0,userEvent:`input.copyline`})),!0}var Gt=({state:e,dispatch:t})=>Wt(e,t,!1),Kt=({state:e,dispatch:t})=>Wt(e,t,!0),qt=e=>{if(e.state.readOnly)return!1;let{state:t}=e,n=t.changes(Q(t).map(({from:e,to:n})=>(e>0?e--:n<t.doc.length&&n++,{from:e,to:n}))),r=F(t.selection,t=>{let n;if(e.lineWrapping){let r=e.lineBlockAt(t.head),i=e.coordsAtPos(t.head,t.assoc||1);i&&(n=r.bottom+e.documentTop-i.bottom+e.defaultLineHeight/2)}return e.moveVertically(t,!0,n)}).map(n);return e.dispatch({changes:n,selection:r,scrollIntoView:!0,userEvent:`delete.line`}),!0};function Jt(e,t){if(/\(\)|\[\]|\{\}/.test(e.sliceDoc(t-1,t+1)))return{from:t,to:t};let n=i(e).resolveInner(t),r=n.childBefore(t),a=n.childAfter(t),o;return r&&a&&r.to<=t&&a.from>=t&&(o=r.type.prop(_.closedBy))&&o.indexOf(a.name)>-1&&e.doc.lineAt(r.to).from==e.doc.lineAt(a.from).from&&!/\S/.test(e.sliceDoc(r.to,a.from))?{from:r.to,to:a.from}:null}var Yt=Zt(!1),Xt=Zt(!0);function Zt(e){return({state:t,dispatch:n})=>{if(t.readOnly)return!1;let r=t.changeByRange(n=>{let{from:r,to:i}=n,a=t.doc.lineAt(r),o=!e&&r==i&&Jt(t,r);e&&(r=i=(i<=a.to?a:t.doc.lineAt(i)).to);let s=new ce(t,{simulateBreak:r,simulateDoubleBreak:!!o}),c=C(s,r);for(c??=p(/^\s*/.exec(t.doc.lineAt(r).text)[0],t.tabSize);i<a.to&&/\s/.test(a.text[i-a.from]);)i++;o?{from:r,to:i}=o:r>a.from&&r<a.from+100&&!/\S/.test(a.text.slice(0,r))&&(r=a.from);let l=[``,S(t,c)];return o&&l.push(S(t,s.lineIndent(a.from,-1))),{changes:{from:r,to:i,insert:ne.of(l)},range:h.cursor(r+1+l[1].length)}});return n(t.update(r,{scrollIntoView:!0,userEvent:`input`})),!0}}function $(e,t){let n=-1;return e.changeByRange(r=>{let i=[];for(let a=r.from;a<=r.to;){let o=e.doc.lineAt(a);o.number>n&&(r.empty||r.to>o.from)&&(t(o,i,r),n=o.number),a=o.to+1}let a=e.changes(i);return{changes:i,range:h.range(a.mapPos(r.anchor,1),a.mapPos(r.head,1))}})}var Qt=({state:e,dispatch:t})=>{if(e.readOnly)return!1;let n=Object.create(null),r=new ce(e,{overrideIndentation:e=>n[e]??-1}),i=$(e,(t,i,a)=>{let o=C(r,t.from);if(o==null)return;/\S/.test(t.text)||(o=0);let s=/^\s*/.exec(t.text)[0],c=S(e,o);(s!=c||a.from<t.from+s.length)&&(n[t.from]=o,i.push({from:t.from,to:t.from+s.length,insert:c}))});return i.changes.empty||t(e.update(i,{userEvent:`indent`})),!0},$t=({state:e,dispatch:t})=>e.readOnly?!1:(t(e.update($(e,(t,n)=>{n.push({from:t.from,insert:e.facet(ee)})}),{userEvent:`input.indent`})),!0),en=({state:e,dispatch:t})=>e.readOnly?!1:(t(e.update($(e,(t,n)=>{let r=/^\s*/.exec(t.text)[0];if(!r)return;let i=p(r,e.tabSize),a=0,o=S(e,Math.max(0,i-b(e)));for(;a<r.length&&a<o.length&&r.charCodeAt(a)==o.charCodeAt(a);)a++;n.push({from:t.from+a,to:t.from+r.length,insert:o.slice(a)})}),{userEvent:`delete.dedent`})),!0),tn=e=>(e.setTabFocusMode(),!0),nn=[{key:`Ctrl-b`,run:B,shift:nt,preventDefault:!0},{key:`Ctrl-f`,run:V,shift:rt},{key:`Ctrl-p`,run:He,shift:ut},{key:`Ctrl-n`,run:Ue,shift:dt},{key:`Ctrl-a`,run:Ze,shift:yt},{key:`Ctrl-e`,run:Qe,shift:bt},{key:`Ctrl-d`,run:Nt},{key:`Ctrl-h`,run:X},{key:`Ctrl-k`,run:It},{key:`Ctrl-Alt-h`,run:Z},{key:`Ctrl-o`,run:zt},{key:`Ctrl-t`,run:Bt},{key:`Ctrl-v`,run:G}],rn=[{key:`ArrowLeft`,run:B,shift:nt,preventDefault:!0},{key:`Mod-ArrowLeft`,mac:`Alt-ArrowLeft`,run:Le,shift:at,preventDefault:!0},{mac:`Cmd-ArrowLeft`,run:Ye,shift:_t,preventDefault:!0},{key:`ArrowRight`,run:V,shift:rt,preventDefault:!0},{key:`Mod-ArrowRight`,mac:`Alt-ArrowRight`,run:Re,shift:ot,preventDefault:!0},{mac:`Cmd-ArrowRight`,run:Xe,shift:vt,preventDefault:!0},{key:`ArrowUp`,run:He,shift:ut,preventDefault:!0},{mac:`Cmd-ArrowUp`,run:xt,shift:Ct},{mac:`Ctrl-ArrowUp`,run:Ke,shift:pt},{key:`ArrowDown`,run:Ue,shift:dt,preventDefault:!0},{mac:`Cmd-ArrowDown`,run:St,shift:wt},{mac:`Ctrl-ArrowDown`,run:G,shift:mt},{key:`PageUp`,run:Ke,shift:pt},{key:`PageDown`,run:G,shift:mt},{key:`Home`,run:Je,shift:gt,preventDefault:!0},{key:`Mod-Home`,run:xt,shift:Ct},{key:`End`,run:qe,shift:ht,preventDefault:!0},{key:`Mod-End`,run:St,shift:wt},{key:`Enter`,run:Yt,shift:Yt},{key:`Mod-a`,run:Tt},{key:`Backspace`,run:X,shift:X,preventDefault:!0},{key:`Delete`,run:Nt,preventDefault:!0},{key:`Mod-Backspace`,mac:`Alt-Backspace`,run:Z,preventDefault:!0},{key:`Mod-Delete`,mac:`Alt-Delete`,run:Ft,preventDefault:!0},{mac:`Mod-Backspace`,run:Lt,preventDefault:!0},{mac:`Mod-Delete`,run:Rt,preventDefault:!0}].concat(nn.map(e=>({mac:e.key,run:e.run,shift:e.shift}))),an=[{key:`Alt-ArrowLeft`,mac:`Ctrl-ArrowLeft`,run:Be,shift:st},{key:`Alt-ArrowRight`,mac:`Ctrl-ArrowRight`,run:Ve,shift:ct},{key:`Alt-ArrowUp`,run:Ht},{key:`Shift-Alt-ArrowUp`,run:Gt},{key:`Alt-ArrowDown`,run:Ut},{key:`Shift-Alt-ArrowDown`,run:Kt},{key:`Mod-Alt-ArrowUp`,run:kt},{key:`Mod-Alt-ArrowDown`,run:At},{key:`Escape`,run:jt},{key:`Mod-Enter`,run:Xt},{key:`Alt-l`,mac:`Ctrl-l`,run:Et},{key:`Mod-i`,run:Dt,preventDefault:!0},{key:`Mod-[`,run:en},{key:`Mod-]`,run:$t},{key:`Mod-Alt-\\`,run:Qt},{key:`Shift-Mod-k`,run:qt},{key:`Shift-Mod-\\`,run:et},{key:`Mod-/`,run:de},{key:`Alt-A`,run:pe},{key:`Ctrl-m`,mac:`Shift-Alt-m`,run:tn}].concat(rn),on={json:async()=>{let{json:t}=await e(async()=>{let{json:e}=await import(`./dist-Dnh15m1q.js`);return{json:e}},__vite__mapDeps([0,1,2]));return t()},markdown:async()=>{let{markdown:t}=await e(async()=>{let{markdown:e}=await import(`./dist-DQRYKv91.js`);return{markdown:e}},__vite__mapDeps([3,4,1,2]));return t()},html:async()=>{let{html:t}=await e(async()=>{let{html:e}=await import(`./dist-jdlcYxrm.js`);return{html:e}},__vite__mapDeps([4,1,2]));return t()}};function sn(e){return e?le.define([{tag:v.keyword,color:`#d19afc`},{tag:v.string,color:`#87d68d`},{tag:v.number,color:`#f5a76c`},{tag:v.comment,color:`#8a8a8a`,fontStyle:`italic`},{tag:v.punctuation,color:`#7cc5e9`},{tag:v.function(v.variableName),color:`#7ea8f8`},{tag:v.propertyName,color:`#7ea8f8`},{tag:v.bool,color:`#f5a76c`},{tag:v.null,color:`#f5a76c`},{tag:v.operator,color:`#7cc5e9`},{tag:v.typeName,color:`#d19afc`},{tag:v.tagName,color:`#d19afc`},{tag:v.attributeName,color:`#87d68d`},{tag:v.attributeValue,color:`#87d68d`},{tag:v.heading,fontWeight:`bold`},{tag:v.emphasis,fontStyle:`italic`},{tag:v.strong,fontWeight:`bold`}]):le.define([{tag:v.keyword,color:`#8839ef`},{tag:v.string,color:`#40a02b`},{tag:v.number,color:`#d05d1a`},{tag:v.comment,color:`#8a8a8a`,fontStyle:`italic`},{tag:v.punctuation,color:`#1e66f5`},{tag:v.function(v.variableName),color:`#2b6cb0`},{tag:v.propertyName,color:`#2b6cb0`},{tag:v.bool,color:`#d05d1a`},{tag:v.null,color:`#d05d1a`},{tag:v.operator,color:`#1e66f5`},{tag:v.typeName,color:`#8839ef`},{tag:v.tagName,color:`#8839ef`},{tag:v.attributeName,color:`#40a02b`},{tag:v.attributeValue,color:`#40a02b`},{tag:v.heading,fontWeight:`bold`},{tag:v.emphasis,fontStyle:`italic`},{tag:v.strong,fontWeight:`bold`}])}function cn(e){return!(e.closest?.(`.theme-light`)||document.documentElement.classList.contains(`theme-light`))}function ln(){return n.theme({"&":{fontSize:`13px`,border:`1px solid var(--s2-border-subtle, #333)`,borderRadius:`var(--s2-radius-default, 8px)`,overflow:`hidden`},"&.cm-focused":{outline:`none`,borderColor:`var(--s2-border-focus, var(--s2-accent, #3562ff))`},".cm-content":{fontFamily:`var(--s2-font-mono, "SF Mono", "Fira Code", Consolas, monospace)`,caretColor:`var(--s2-accent, #3562ff)`,padding:`8px 0`},".cm-scroller":{overflow:`auto`},".cm-cursor, .cm-dropCursor":{borderLeftColor:`var(--s2-accent, #3562ff)`},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground":{background:`color-mix(in srgb, var(--s2-accent, #3562ff) 20%, transparent)`},".cm-activeLine":{background:`color-mix(in srgb, var(--s2-accent, #3562ff) 5%, transparent)`},".cm-gutters":{backgroundColor:`var(--s2-bg-layer-1, #1a1a1a)`,color:`var(--s2-content-tertiary, #5a5a5a)`,borderRight:`none`,borderRadius:`var(--s2-radius-default, 8px) 0 0 var(--s2-radius-default, 8px)`},".cm-lineNumbers .cm-gutterElement":{padding:`0 8px 0 12px`,minWidth:`32px`},".cm-placeholder":{color:`var(--s2-content-tertiary, #5a5a5a)`,fontStyle:`italic`}})}var un=`
3
- :host {
4
- display: block;
5
- background: var(--s2-bg-layer-2, var(--s2-gray-75, #252525));
6
- border-radius: var(--s2-radius-default, 8px);
7
- color: var(--s2-content-default, #cfcfcf);
8
- }
9
- .cm-editor {
10
- background: var(--s2-bg-layer-2, var(--s2-gray-75, #252525));
11
- }
12
- `,dn=class extends oe{color;tooltip;constructor(e,t){super(),this.color=e,this.tooltip=t}toDOM(){let e=document.createElement(`span`);return e.style.cssText=`display:inline-block;width:8px;height:8px;border-radius:50%;background:${this.color};`,this.tooltip&&(e.title=this.tooltip),e}},fn=class extends HTMLElement{view=null;langCompartment=new r;highlightCompartment=new r;lineNumberCompartment=new r;readonlyCompartment=new r;gutterCompartment=new r;placeholderCompartment=new r;shadowRoot_;placeholderText=``;connected=!1;langRequestId=0;static get observedAttributes(){return[`language`,`line-numbers`,`readonly`]}constructor(){super(),this.shadowRoot_=this.attachShadow({mode:`open`})}connectedCallback(){if(this.connected)return;this.connected=!0,this.placeholderText=this.textContent?.trim()??``,this.textContent=``;let e=sn(cn(this)),t=[ln(),this.highlightCompartment.of(a(e)),a(ae,{fallback:!0}),this.langCompartment.of([]),this.lineNumberCompartment.of(this.hasAttribute(`line-numbers`)?o():[]),this.readonlyCompartment.of(s.readOnly.of(this.hasAttribute(`readonly`))),this.gutterCompartment.of([]),this.placeholderCompartment.of(this.placeholderText?c(this.placeholderText):[]),Ce(),f.of([...an,...Fe]),n.updateListener.of(e=>{e.docChanged&&this.dispatchEvent(new CustomEvent(`change`,{detail:{value:e.state.doc.toString()},bubbles:!0}))})],r=document.createElement(`style`);r.textContent=un,this.shadowRoot_.appendChild(r);let i=document.createElement(`div`);this.shadowRoot_.appendChild(i),this.view=new n({state:s.create({extensions:t}),parent:i,root:this.shadowRoot_});let l=this.getAttribute(`language`);l&&this.loadLanguage(l)}disconnectedCallback(){this.view?.destroy(),this.view=null,this.connected=!1}attributeChangedCallback(e,t,n){if(this.view)switch(e){case`language`:n?this.loadLanguage(n):this.view.dispatch({effects:this.langCompartment.reconfigure([])});break;case`line-numbers`:this.view.dispatch({effects:this.lineNumberCompartment.reconfigure(n===null?[]:o())});break;case`readonly`:this.view.dispatch({effects:this.readonlyCompartment.reconfigure(s.readOnly.of(n!==null))});break}}get value(){return this.view?.state.doc.toString()??``}set value(e){this.view&&this.view.dispatch({changes:{from:0,to:this.view.state.doc.length,insert:e}})}setHighlighter(e){if(!this.view)return;let t=ie.define(e);this.view.dispatch({effects:this.langCompartment.reconfigure(t)})}setGutterMarkers(e){if(!this.view)return;let t=new Map;for(let[n,r]of Object.entries(e))t.set(Number(n),new dn(r.color,r.tooltip));let n=d({class:`cm-slicc-markers`,lineMarker:(e,n)=>{let r=e.state.doc.lineAt(n.from).number;return t.get(r)??null}});this.view.dispatch({effects:this.gutterCompartment.reconfigure(n)})}async loadLanguage(e){let t=++this.langRequestId,n=on[e.toLowerCase()];if(!n){this.langRequestId===t&&this.view?.dispatch({effects:this.langCompartment.reconfigure([])});return}let r=await n();this.langRequestId===t&&this.view?.dispatch({effects:this.langCompartment.reconfigure(r)})}};customElements.get(`slicc-editor`)||customElements.define(`slicc-editor`,fn);export{fn as SliccEditorElement};
@@ -1 +0,0 @@
1
- import{S as e,T as t,nt as n,x as r}from"./main-D7K1MTaQ.js";import{t as i}from"./sprinkle-bridge-DrAUCEC_.js";import{t as a}from"./sprinkle-renderer-5HX0pMZZ.js";var o=[`/shared/sprinkles`],s=new Set([`welcome`,`connect-llm`]);async function c(e){let t=new Map;for(let n of o)await e.exists(n)&&await l(e,n,t);return await l(e,`/`,t),t}async function l(e,t,n){for await(let r of e.walk(t)){if(!r.endsWith(`.shtml`))continue;let t=u(r);if(!s.has(t)&&!n.has(t)){let i;try{i=await e.readFile(r,{encoding:`utf-8`})??``}catch{i=``}n.set(t,{name:t,path:r,title:d(i,t),autoOpen:f(i),icon:p(i)})}}}function u(e){let t=e.split(`/`).pop()??e;return t.endsWith(`.shtml`)?t.slice(0,-6):t}function d(e,t){let n=e.match(/data-sprinkle-title=["']([^"']+)["']/);if(n)return n[1];let r=e.match(/<title>([^<]+)<\/title>/i);return r?r[1].trim():t}function f(e){return/data-sprinkle-autoopen\b/.test(e)}function p(e){let t=/<link\b/gi,n;for(;(n=t.exec(e))!==null;){let t=n.index+n[0].length,r=m(e,t);if(r<0)continue;let i=e.slice(t,r);if(!/\brel\s*=\s*("|')\s*(?:shortcut\s+)?icon\s*\1/i.test(i))continue;let a=h(i,`href`);if(a!==void 0)return a.trim()}let r=h(e,`data-sprinkle-icon`);if(r!==void 0)return r.trim()}function m(e,t){let n=!1,r=!1;for(let i=t;i<e.length;i++){let t=e.charCodeAt(i);if(n)t===34&&(n=!1);else if(r)t===39&&(r=!1);else if(t===34)n=!0;else if(t===39)r=!0;else if(t===62)return i}return-1}function h(e,t){let n=RegExp(`\\b${t}\\s*=\\s*(?:"([^"]*)"|'([^']*)')`,`i`),r=e.match(n);if(r)return r[1]??r[2]??void 0}var g=n(`sprinkle-manager`),_=`slicc-open-sprinkles`,v=`sprinkles`;function y(){try{if(typeof window>`u`||!window.location)return null;let e=new URLSearchParams(window.location.search).get(v);return e===null?null:e===``?[]:e.split(`,`).map(e=>e.trim()).filter(e=>e.length>0)}catch{return null}}function b(e){try{if(typeof window>`u`||!window.location||typeof history>`u`||typeof history.replaceState!=`function`)return;let t=new URL(window.location.href);e.length===0?t.searchParams.delete(v):t.searchParams.set(v,e.join(`,`));let n=t.pathname+t.search+t.hash;history.replaceState(history.state??null,``,n)}catch{}}var x=`slicc-known-sprinkles`;function S(e){try{let t=new Set(e),n=C().filter(e=>t.has(e));localStorage.setItem(x,JSON.stringify(n))}catch{}}function C(){try{let e=localStorage.getItem(x);if(!e)return[];let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`string`):[]}catch{return[]}}var w=`slicc-autoopened-once`,T=[`/workspace`,`/shared`,`/scoops`],E=250,D=class{fs;bridge;callbacks;availableSprinkles=new Map;watcherUnsub;openSprinkles=new Map;attentionOnly=new Set;inflightRefresh=null;lastRefreshAt=0;autoOpenBehavior;onSendToSprinkle;registeredSprinkles=new Set;inlineSprinkles;changeListeners=new Set;changeNotifyScheduled=!1;urlWriteScheduled=!1;constructor(t,n,a,o,s={}){this.fs=t;let c=async()=>{let t=`image/png`,n=e(),i=r();if(!n&&!i)throw Error(`Screen capture unavailable in this environment`);if(n&&!navigator.mediaDevices?.getDisplayMedia)throw Error(`Screen capture not supported in this browser`);let a,o,s;if(n){let e=await navigator.mediaDevices.getDisplayMedia({video:!0,audio:!1});try{let n=document.createElement(`video`);n.srcObject=e,n.muted=!0,n.playsInline=!0,await new Promise((e,t)=>{n.onloadedmetadata=()=>n.play().then(()=>e()).catch(t),n.onerror=()=>t(Error(`Failed to load video stream`))}),await new Promise(e=>setTimeout(e,100)),o=n.videoWidth,s=n.videoHeight;let r=document.createElement(`canvas`);r.width=o,r.height=s;let i=r.getContext(`2d`);if(!i)throw Error(`Failed to get canvas context`);i.drawImage(n,0,0,o,s),a=await(await new Promise((e,n)=>{r.toBlob(t=>t?e(t):n(Error(`Failed to create image blob`)),t,1)})).arrayBuffer()}finally{for(let t of e.getTracks())t.stop()}}else{let e=await i.call(`screencapture`,{mimeType:t,quality:1},{timeoutMs:5*6e4});a=e.bytes,o=e.width,s=e.height}let c=new Uint8Array(a),l=[],u=8192;for(let e=0;e<c.length;e+=u)l.push(String.fromCharCode(...c.subarray(e,e+u)));return{base64:btoa(l.join(``)),width:o,height:s,mimeType:t}};this.bridge=new i(t,n,e=>this.close(e),e=>this.minimize(e),o,s.onAttachImage??(()=>{}),c,s.execHandler,(e,t,n)=>{this.openSprinkles.get(e)?.renderer.pushDeviceEvent(t,n)}),this.callbacks=a,this.autoOpenBehavior=s.autoOpenBehavior??`activate`,this.onSendToSprinkle=s.onSendToSprinkle,this.inlineSprinkles=s.inlineSprinkles??new Set}setSendToSprinkleHook(e){this.onSendToSprinkle&&!e&&g.error(`SprinkleManager broadcast hook detached`),this.onSendToSprinkle=e}async restoreOpenSprinkles(){try{let e=y();if(e!==null){await this.reopenInBackground(e);return}let t=localStorage.getItem(_);t?await this.restoreFromLegacyStorage(t):await this.autoOpenFirstRun()}catch{}await this.surfaceUnseenSprinkles()}async reopenInBackground(e){for(let t of e)try{await this.open(t,void 0,{background:!0})}catch{g.warn(`Failed to restore sprinkle`,{name:t})}}async restoreFromLegacyStorage(e){try{await this.reopenInBackground(JSON.parse(e))}finally{try{localStorage.removeItem(_)}catch{}}}async autoOpenFirstRun(){let e=this.autoOpenBehavior===`attention`,t=this.loadAutoOpenedOnce(),n=new Set;for(let r of this.availableSprinkles.values())if(!(!r.autoOpen||t.has(r.name)))try{await this.open(r.name,void 0,{attention:e}),n.add(r.name)}catch{g.warn(`Failed to auto-open sprinkle`,{name:r.name})}n.size>0&&this.persistAutoOpenedOnce(n)}async surfaceUnseenSprinkles(){let e=this.loadKnownSprinkles(),t=this.loadAutoOpenedOnce(),n=this.autoOpenBehavior===`attention`,r=new Set;for(let i of this.availableSprinkles.values())if(!e.has(i.name)&&!this.openSprinkles.has(i.name)&&!(i.autoOpen&&t.has(i.name)))try{await this.open(i.name,void 0,{attention:i.autoOpen?n:!0}),i.autoOpen&&r.add(i.name),g.info(`Surfaced previously-unseen sprinkle`,{name:i.name})}catch{g.warn(`Failed to surface unseen sprinkle`,{name:i.name})}this.persistKnownSprinkles(new Set(this.availableSprinkles.keys())),r.size>0&&this.persistAutoOpenedOnce(r)}loadKnownSprinkles(){return new Set(C())}persistKnownSprinkles(e){try{let t=new Set([...this.loadKnownSprinkles(),...e]);localStorage.setItem(x,JSON.stringify([...t]))}catch{}}loadAutoOpenedOnce(){try{let e=localStorage.getItem(w);if(!e)return new Set;let t=JSON.parse(e);return Array.isArray(t)?new Set(t.filter(e=>typeof e==`string`)):new Set}catch{return new Set}}persistAutoOpenedOnce(e){try{let t=new Set([...this.loadAutoOpenedOnce(),...e]);localStorage.setItem(w,JSON.stringify([...t]))}catch{}}persistOpenSprinkles(){try{let e=[...this.openSprinkles.keys()].filter(e=>!this.attentionOnly.has(e));localStorage.setItem(_,JSON.stringify(e))}catch{}this.schedulePersistOpenSprinklesToUrl()}schedulePersistOpenSprinklesToUrl(){this.urlWriteScheduled||(this.urlWriteScheduled=!0,queueMicrotask(()=>{this.urlWriteScheduled=!1,b([...this.openSprinkles.keys()].filter(e=>!this.attentionOnly.has(e)))}))}async openNewAutoOpenSprinkles(){if(this.inflightRefresh)return this.inflightRefresh;if(!(Date.now()-this.lastRefreshAt<E))return this.inflightRefresh=this.runOpenNewAutoOpenSprinkles().finally(()=>{this.lastRefreshAt=Date.now(),this.inflightRefresh=null}),this.inflightRefresh}async runOpenNewAutoOpenSprinkles(){let e=new Set(this.availableSprinkles.keys());await this.refresh();let t=this.autoOpenBehavior===`attention`,n=this.loadAutoOpenedOnce(),r=new Set,i=!1;for(let a of this.availableSprinkles.values())if(!this.openSprinkles.has(a.name)&&!e.has(a.name))if(i=!0,a.autoOpen){if(n.has(a.name)){g.info(`Skipped one-shot auto-open for previously-consumed sprinkle`,{name:a.name});continue}try{await this.open(a.name,void 0,{attention:t}),r.add(a.name),g.info(`Auto-opened new sprinkle after install`,{name:a.name,attention:t})}catch{g.warn(`Failed to auto-open new sprinkle`,{name:a.name})}}else try{await this.open(a.name,void 0,{attention:!0}),g.info(`Surfaced newly-installed sprinkle in rail`,{name:a.name})}catch{g.warn(`Failed to surface newly-installed sprinkle`,{name:a.name})}i&&this.persistKnownSprinkles(new Set(this.availableSprinkles.keys())),r.size>0&&this.persistAutoOpenedOnce(r)}async refresh(){this.availableSprinkles=await c(this.fs),g.info(`Discovered sprinkles`,{count:this.availableSprinkles.size}),this.syncRegisteredIcons(),this.notifyChange()}syncRegisteredIcons(){if(!this.callbacks.registerSprinkle)return;let e=new Set;for(let t of this.availableSprinkles.values())this.inlineSprinkles.has(t.name)||e.add(t.name);for(let t of this.availableSprinkles.values())if(e.has(t.name)&&!this.registeredSprinkles.has(t.name))try{this.callbacks.registerSprinkle(t.name,t.title,{icon:t.icon}),this.registeredSprinkles.add(t.name)}catch(e){g.warn(`registerSprinkle callback threw`,{name:t.name,error:e instanceof Error?e.message:String(e)})}for(let t of[...this.registeredSprinkles])if(!e.has(t)){this.openSprinkles.has(t)&&this.close(t);try{this.callbacks.unregisterSprinkle?.(t)}catch(e){g.warn(`unregisterSprinkle callback threw`,{name:t,error:e instanceof Error?e.message:String(e)})}this.registeredSprinkles.delete(t)}}onChange(e){return this.changeListeners.add(e),()=>{this.changeListeners.delete(e)}}notifyChange(){this.changeNotifyScheduled||(this.changeNotifyScheduled=!0,queueMicrotask(()=>{this.changeNotifyScheduled=!1;for(let e of this.changeListeners)try{e()}catch(e){g.error(`SprinkleManager.onChange handler threw`,{error:e instanceof Error?e.message:String(e)})}}))}async open(e,n,r={}){if(this.openSprinkles.has(e)){g.info(`Sprinkle already open`,{name:e});return}let i=this.availableSprinkles.get(e);if(i||=(await this.refresh(),this.availableSprinkles.get(e)),!i)throw Error(`Sprinkle not found: ${e}`);let o=await this.fs.readFile(i.path,{encoding:`utf-8`});if(o==null)throw Error(`Failed to read sprinkle content: ${i.path} (file may be corrupted or missing)`);let s=typeof o==`string`?o:new TextDecoder(`utf-8`).decode(o),c=document.createElement(`div`);c.className=`sprinkle-panel`,c.style.cssText=`width: 100%; height: 100%; display: flex; flex-direction: column; overflow: hidden;`,c.dataset.sprinkle=e,this.openSprinkles.set(e,{renderer:null,container:c}),r.attention?this.attentionOnly.add(e):this.attentionOnly.delete(e),this.callbacks.addSprinkle(e,i.title,c,n,{...r,icon:i.icon});let l=new a(c,this.bridge.createAPI(e));await l.render(s,e),this.openSprinkles.get(e).renderer=l,this.persistOpenSprinkles(),t(e),g.info(`Sprinkle opened`,{name:e,title:i.title}),this.notifyChange()}markActivated(e){this.attentionOnly.has(e)&&(this.attentionOnly.delete(e),this.persistOpenSprinkles(),g.info(`Sprinkle promoted from attention to user-opened`,{name:e}),this.notifyChange())}async activate(e,t){if(this.attentionOnly.has(e)){this.markActivated(e);return}if(!this.openSprinkles.has(e))try{await this.open(e,t)}catch(t){g.warn(`Failed to open sprinkle from rail-icon click`,{name:e,error:t instanceof Error?t.message:String(t)})}}close(e){let t=this.openSprinkles.get(e);t&&(t.renderer?.dispose(),t.container.remove(),this.bridge.removeSprinkle(e),this.openSprinkles.delete(e),this.attentionOnly.delete(e),this.callbacks.closeSprinkleContent?this.callbacks.closeSprinkleContent(e):this.callbacks.removeSprinkle(e),this.persistOpenSprinkles(),g.info(`Sprinkle closed`,{name:e}),this.notifyChange())}minimize(e){this.openSprinkles.has(e)&&(this.callbacks.minimizeSprinkle(e),g.info(`Sprinkle minimized`,{name:e}))}available(){return Array.from(this.availableSprinkles.values())}opened(){return Array.from(this.openSprinkles.keys())}setupWatcher(e){let t=null,n=()=>{t||=setTimeout(()=>{t=null,this.openNewAutoOpenSprinkles().catch(e=>{g.warn(`Sprinkle refresh on watcher event failed`,{error:e instanceof Error?e.message:String(e)})})},150)},r=T.map(t=>e.watch(t,e=>e.endsWith(`.shtml`),n));this.watcherUnsub=()=>{for(let e of r)e();t&&=(clearTimeout(t),null)}}dispose(){this.watcherUnsub?.()}sendToSprinkle(e,t){let n=this.openSprinkles.get(e);if(!n){g.warn(`Cannot send to closed sprinkle`,{name:e});return}if(this.bridge.pushUpdate(e,t),n.renderer.pushUpdate(t),this.onSendToSprinkle)try{this.onSendToSprinkle(e,t)}catch(t){g.error(`onSendToSprinkle hook threw`,{name:e,error:t instanceof Error?t.message:String(t)})}}};export{D as SprinkleManager,S as pruneKnownSprinkleNames,C as readKnownSprinkleNames};
@@ -1 +0,0 @@
1
- import{D as e}from"./main-D7K1MTaQ.js";function t(t){document.querySelectorAll(`.dialog-overlay[data-sync-dialog]`).forEach(e=>{e.remove()});let n=document.createElement(`div`);n.className=`dialog-overlay`,n.dataset.syncDialog=`1`;let r=document.createElement(`div`);r.className=`dialog`,n.appendChild(r);let i=document.createElement(`div`);i.className=`dialog__title`,i.textContent=`Multi-browser sync is on`,r.appendChild(i);let a=document.createElement(`div`);a.className=`dialog__desc`,a.textContent=t.copied?`The sync URL is copied to your clipboard. Paste it into another SLICC browser to mirror this one.`:`Couldn’t copy automatically. Use the button below to copy the sync URL, then paste it into another SLICC browser.`,r.appendChild(a);let o=document.createElement(`div`);o.style.cssText=`margin-bottom: 12px; padding: 10px 12px; background: var(--s2-bg-layer-1); border-radius: var(--s2-radius-default); border: 1px solid var(--s2-border-subtle); line-height: 1.5; font-size: 12px; color: var(--s2-content-secondary);`;let s=document.createElement(`ol`);s.style.cssText=`margin: 0; padding-left: 20px;`;for(let e of[`Open SLICC in another browser.`,`Click the avatar (top right) → “Connect to another browser”.`,`Paste the URL there. Both browsers must be on the same SLICC version.`]){let t=document.createElement(`li`);t.textContent=e,s.appendChild(t)}o.appendChild(s),r.appendChild(o);let c=document.createElement(`div`);c.style.cssText=`font-family: var(--s2-font-mono); font-size: 11px; color: var(--s2-content-secondary); word-break: break-all; margin-bottom: 12px; padding: 8px 12px; background: var(--s2-bg-sunken); border-radius: var(--s2-radius-default); border: 1px solid var(--s2-border-subtle);`,c.textContent=t.joinUrl,r.appendChild(c);let l=document.createElement(`div`);l.style.cssText=`font-size: 12px; color: var(--s2-content-secondary); margin-bottom: 8px; display: none;`,r.appendChild(l),t.copied&&(l.textContent=`URL copied to clipboard.`,l.style.display=``);let u=document.createElement(`button`);u.className=`dialog__btn dialog__btn--secondary`,u.style.marginBottom=`8px`,u.textContent=t.copied?`Copy again`:`Copy URL`,u.addEventListener(`click`,async()=>{let n=await e(t.joinUrl);l.textContent=n?`URL copied to clipboard.`:`Couldn’t copy. Select and copy manually.`,l.style.color=n?`var(--s2-content-secondary)`:`var(--slicc-cone)`,l.style.display=``}),r.appendChild(u);let d=document.createElement(`button`);if(d.className=`dialog__btn`,d.textContent=`Done`,d.addEventListener(`click`,()=>n.remove()),r.appendChild(d),t.onReset){let e=document.createElement(`button`);e.className=`dialog__btn dialog__btn--secondary`,e.style.marginTop=`8px`,e.textContent=`Reset URL (disconnect connected browsers)`,e.addEventListener(`click`,async()=>{e.disabled=!0,d.disabled=!0,u.disabled=!0,l.textContent=`Resetting sync URL…`,l.style.color=`var(--s2-content-secondary)`,l.style.display=``;try{await t.onReset(),l.textContent=`Sync URL reset. Reopen this dialog from the avatar to share the new URL.`,l.style.color=`var(--s2-content-secondary)`,c.textContent=`—`,u.disabled=!0}catch(t){l.textContent=`Reset failed: ${t instanceof Error?t.message:String(t)}`,l.style.color=`var(--slicc-cone)`,e.disabled=!1,d.disabled=!1,u.disabled=!1}}),r.appendChild(e)}n.addEventListener(`click`,e=>{e.target===n&&n.remove()}),document.body.appendChild(n)}export{t as showSyncEnabledDialog};
@@ -1 +0,0 @@
1
- function e(e){if(!e)return null;try{let t=new URL(e.trim());t.search=``,t.hash=``,t.pathname!==`/`&&(t.pathname=t.pathname.replace(/\/+$/,``)||`/`);let n=t.toString();return n.endsWith(`/`)?n.slice(0,-1):n}catch{return null}}const t=`slicc.trayWorkerBaseUrl`,n=`slicc.trayJoinUrl`,r=`https://www.sliccy.ai`;export{e as i,n,t as r,r as t};
@@ -1 +0,0 @@
1
- import{_ as e,g as t}from"./kernel-worker-DpRMAeb1.js";const n=`slicc:last-seen-version`;function r(){return{version:`4.0.2`,releasedAt:`2026-06-12T17:29:48Z`}}async function i(){let e=await t(n);return e&&e.length>0?e:null}async function a(t){await e(n,t)}async function o(){let e=r(),t=await i();return t===null?(await a(e.version),{bundled:e,lastSeen:null,isUpgrade:!1}):t===e.version?{bundled:e,lastSeen:t,isUpgrade:!1}:{bundled:e,lastSeen:t,isUpgrade:!0}}async function s(e){await a(e)}export{o as detectUpgrade,s as recordVersionSeen};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/setup-sudo-DPXnK0Zw.js","assets/wc-live-DHS3FYU1.js","assets/main-D7K1MTaQ.js","assets/chunk-aKtaBQYM.js","assets/modulepreload-polyfill-Dezn_h7o.js","assets/wc-shell-9F74yNEh.js","assets/iconsAndAliases-Bzj1tGpU.js","assets/wc-shell-WkeczD9x.css","assets/proxy-error-9UvXMpzG.js","assets/hid-device-registry-D2LsJCRr.js","assets/usb-operations-CkcrNzZw.js","assets/serial-port-registry-Bc4wlwED.js","assets/usb-device-registry-BP58Vi0S.js","assets/sprinkle-bridge-DrAUCEC_.js","assets/shared-B7TdM-Ik.js","assets/sprinkle-renderer-5HX0pMZZ.js","assets/theme-BBwuyzvz.js"])))=>i.map(i=>d[i]);
2
- import{Dt as e}from"./main-D7K1MTaQ.js";import{wireWcDetached as t}from"./wc-detached-ux_E6SNJ.js";import{attachWcClient as n,createWcLiveCallbacks as r,prepareWcShell as i,t as a}from"./wc-live-DHS3FYU1.js";async function o(o,s,c=!1){let l=i(o,`extension · wc`),u=new a(r(l.wiring));n(l,u,s),t({client:u,isDetachedSelf:c});let{setupSudoExtension:d}=await e(async()=>{let{setupSudoExtension:e}=await import(`./setup-sudo-DPXnK0Zw.js`);return{setupSudoExtension:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]));await d({log:s}),u.requestState(),s.info(`WC extension shell connected to offscreen engine`)}export{o as mountWcUiExtension};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/main-D7K1MTaQ.js","assets/chunk-aKtaBQYM.js","assets/modulepreload-polyfill-Dezn_h7o.js","assets/legacy-styles-Bt2Mk3g2.js","assets/sync-dialog-C1-e9vyv.js","assets/wc-settings-DiYFz75I.js","assets/wc-detached-ux_E6SNJ.js"])))=>i.map(i=>d[i]);
2
- import{D as e,Dt as t,O as n,R as r,q as i,z as a}from"./main-D7K1MTaQ.js";import{r as o}from"./wc-live-DHS3FYU1.js";function s(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 c(e){return e.flatMap(e=>e.models.map(t=>({name:t.name??t.id,provider:e.providerName,id:t.id})))}async function l(l){let{refs:f,client:p,log:m}=l,{getAllAvailableModels:h,getAccounts:g}=await t(async()=>{let{getAllAvailableModels:e,getAccounts:t}=await import(`./main-D7K1MTaQ.js`).then(e=>e.h);return{getAllAvailableModels:e,getAccounts:t}},__vite__mapDeps([0,1,2])),_=()=>{f.composerMeta.models=c(h())};_(),await u(f,p);let v=typeof chrome<`u`&&!!chrome?.runtime?.id,y=()=>{let e=s(g()),t=f.avatarMenu.querySelector(`slicc-avatar`),n=f.inputCard.querySelector(`slicc-send-button`);e?(t?.removeAttribute(`initials`),t?.setAttribute(`name`,e.name),e.avatarUrl&&(t?.setAttribute(`src`,e.avatarUrl),n?.setAttribute(`src`,e.avatarUrl)),f.avatarMenu.user={name:e.name,provider:e.provider}):(t?.removeAttribute(`name`),t?.removeAttribute(`src`),t?.removeAttribute(`initials`),n?.removeAttribute(`src`),f.avatarMenu.user={name:`SLICC`,provider:v?`extension`:`standalone`})};y();let b=()=>{if(v)return[];let e=r(o(),n()),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},x=new URLSearchParams(window.location.search).has(`detached`),S=()=>v&&!x?[{id:`popout`,label:`Pop out into a tab`,icon:`external-link`}]:[],C=()=>{f.avatarMenu.items=[{id:`settings`,label:`Account settings…`,icon:`settings`},...S(),...b()]};C(),f.avatarMenu.addEventListener(`slicc-avatar-menu-toggle`,e=>{e.detail?.open&&C()});let w=n=>{if(n===`tray-enable`)return i({locationHref:window.location.href,storage:window.localStorage,envBaseUrl:null,defaultWorkerBaseUrl:a}).then(e=>{if(!e)return m.error(`tray enable: no worker base URL resolvable`);window.dispatchEvent(new CustomEvent(`slicc:tray-leave`,{detail:{workerBaseUrl:e}}))}),!0;if(n===`tray-copy`){let n=o().session?.joinUrl;return n&&(e(n).catch(()=>void 0),t(async()=>{let{loadLegacyDialogStyles:e}=await import(`./legacy-styles-Bt2Mk3g2.js`);return{loadLegacyDialogStyles:e}},__vite__mapDeps([3,0,1,2])).then(({loadLegacyDialogStyles:e})=>e()).then(async()=>{let{showSyncEnabledDialog:e}=await t(async()=>{let{showSyncEnabledDialog:e}=await import(`./sync-dialog-C1-e9vyv.js`);return{showSyncEnabledDialog:e}},__vite__mapDeps([4,0,1,2]));e({joinUrl:n,copied:!0})}).catch(e=>m.error(`sync dialog failed`,e))),!0}return n===`tray-stop`?(window.dispatchEvent(new CustomEvent(`slicc:tray-leave`,{detail:{workerBaseUrl:null}})),!0):!1},T=()=>{t(async()=>{let{showWcSettings:e}=await import(`./wc-settings-DiYFz75I.js`);return{showWcSettings:e}},__vite__mapDeps([5,0,1,2])).then(({showWcSettings:e})=>e(m)).then(()=>{_(),y(),p.updateModel()}).catch(e=>m.error(`WC settings dialog failed`,e))};f.avatarMenu.addEventListener(`slicc-avatar-action`,e=>{let n=e.detail?.id;if(n&&w(n)){C();return}if(n===`popout`){t(async()=>{let{requestDetachedPopout:e}=await import(`./wc-detached-ux_E6SNJ.js`);return{requestDetachedPopout:e}},__vite__mapDeps([6,0,1,2])).then(({requestDetachedPopout:e})=>e()).catch(e=>m.error(`detached popout request failed`,e));return}n===`settings`&&T()}),f.composerMeta.addEventListener(`add-ai`,T),d({refreshModels:_,applyIdentity:y,client:p})}async function u(e,n){let{resolveModelById:r,resolveCurrentModel:i}=await t(async()=>{let{resolveModelById:e,resolveCurrentModel:t}=await import(`./main-D7K1MTaQ.js`).then(e=>e.h);return{resolveModelById:e,resolveCurrentModel:t}},__vite__mapDeps([0,1,2])),a=t=>{try{let n=t?r(t):i();e.composerMeta.toggleAttribute(`no-thinking`,n.reasoning!==!0)}catch{}};a(),e.composerMeta.addEventListener(`model-change`,e=>{let t=e.detail?.id;t&&(localStorage.setItem(`selected-model`,t),a(t),n.updateModel())})}async function d(e){let{refreshModels:n,applyIdentity:r,client:i}=e,{getAccounts:a,getProviderConfig:o}=await t(async()=>{let{getAccounts:e,getProviderConfig:t}=await import(`./main-D7K1MTaQ.js`).then(e=>e.h);return{getAccounts:e,getProviderConfig:t}},__vite__mapDeps([0,1,2]));window.addEventListener(`slicc:accounts-changed`,()=>{n(),r(),i.updateModel();for(let e of a()){let t=o(e.providerId)?.refreshModels;t&&t().then(()=>{n(),i.updateModel()}).catch(()=>void 0)}})}export{l as wireWcNav};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/onboarding-orchestrator-DSR8Msku.js","assets/main-D7K1MTaQ.js","assets/chunk-aKtaBQYM.js","assets/modulepreload-polyfill-Dezn_h7o.js","assets/welcome-detection-D-eB9s6-.js","assets/oauth-service-CmHwn7zK.js"])))=>i.map(i=>d[i]);
2
- import{Dt as e,G as t}from"./main-D7K1MTaQ.js";import{t as n}from"./welcome-detection-D-eB9s6-.js";import{u as r}from"./wc-live-DHS3FYU1.js";function i(e){let{vfs:r,storage:i,firedWelcomeActions:a,persistFiredWelcomeActions:o,getOrchestrator:s,log:c}=e;t(i)||n(r).then(e=>{if(e.isFirstRun){if(a.has(`first-run`)){c.debug(`Suppressing welcome re-fire: first-run already in dedup ledger`);return}a.add(`first-run`),o(a),s().handleFirstRun()}}).catch(e=>c.warn(`Welcome detection failed`,e))}function a(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 o(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 s(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 c(t){let{OnboardingOrchestrator:n}=await e(async()=>{let{OnboardingOrchestrator:e}=await import(`./onboarding-orchestrator-DSR8Msku.js`);return{OnboardingOrchestrator:e}},__vite__mapDeps([0,1,2,3,4])),r=null;return{get:()=>r||(r=new n({fs:t.fs,postSystemMessage:t.postSystemMessage,postDipReference:t.postDipReference,getProviderCatalogue:()=>s(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),launchOAuth:async(e,n)=>await l(e,n??null,t)}),r),peek:()=>r,buildCatalogue:()=>s(t.providers)}}async function l(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-CmHwn7zK.js`);return{createInterceptingOAuthLauncherForCurrentRuntime:e}},__vite__mapDeps([5,1,2,3])),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-CmHwn7zK.js`);return{createOAuthLauncher:e}},__vite__mapDeps([5,1,2,3])),n=t();await i.onOAuthLogin(n,()=>void 0)}return{ok:!0,model:o(t,i,r.providers.getProviderModels,r.providers.isModelHiddenFromPicker)}}catch(e){return{ok:!1,message:e instanceof Error?e.message:`OAuth login failed.`}}}var u=new Set([`first-run`,`onboarding-complete`,`onboarding-complete-with-provider`,`shortcut-migrate`]),d=`slicc:welcome-flow-fired`;function f(){try{let e=typeof localStorage<`u`?localStorage.getItem(d):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 p(e){try{if(typeof localStorage>`u`)return;localStorage.setItem(d,JSON.stringify([...e]))}catch{}}function m(e,t,n,r,i){if(u.has(e)&&t.has(e)){i.debug(`Suppressing duplicate welcome lick (${r})`,{action:e});return}u.has(e)&&(t.add(e),p(t)),n()}var h=new Set([`first-run`,`onboarding-complete`,`connect-ready`,`connect-attempt`,`oauth-attempt`,`device-code-decision`,`shortcut-migrate`]);function g(e){let{firedWelcomeActions:t,getAccounts:n,getProviderConfig:r,resolveDeviceCodeDecision:i,getOnboardingOrchestrator:a,applyPendingMount:o,fastForward:s,onShortcutMigrate:c,contextLabel:l,vfs:d,log:f}=e;return e=>{if(e.type!==`sprinkle`)return!1;let m=e.sprinkleName===`welcome`||e.sprinkleName===`inline`?e.body?.action:void 0;if(m&&u.has(m)){if(t.has(m))return f.debug(`Suppressing duplicate welcome lick (${l})`,{action:m}),!0;t.add(m),p(t)}if(!m||!h.has(m))return!1;let g=e.body;return S(m,g,{getAccounts:n,getProviderConfig:r,resolveDeviceCodeDecision:i,getOnboardingOrchestrator:a,applyPendingMount:o,fastForward:s,onShortcutMigrate:c,vfs:d,log:f})}}function _(e,t){let n=e[t];return typeof n==`string`&&n?n:null}function v(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 y(e,t){let n=e?.data;return n&&t.getOnboardingOrchestrator().handleConnectAttempt({provider:String(n.provider??``),apiKey:String(n.apiKey??``),baseUrl:_(n,`baseUrl`),deployment:_(n,`deployment`),apiVersion:_(n,`apiVersion`),model:n.model==null?null:String(n.model)}).catch(e=>t.log.warn(`handleConnectAttempt failed`,e)),!0}function b(e,t){let n=e?.data;return n&&t.getOnboardingOrchestrator().handleOAuthAttempt({provider:String(n.provider??``),baseUrl:_(n,`baseUrl`)}).catch(e=>t.log.warn(`handleOAuthAttempt failed`,e)),!0}var x={"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":v,"connect-ready":(e,t)=>C(t),"connect-attempt":y,"oauth-attempt":b,"shortcut-migrate":(e,t)=>(t.onShortcutMigrate(),!0)};function S(e,t,n){return x[e]?.(t,n)??!1}function C(e){let t=e.getAccounts();if(t.length===0)return e.getOnboardingOrchestrator().handleConnectReady(),!0;let n=t[0];return e.fastForward.broadcastAlreadyConnected(n.providerId),w(e.vfs,n.providerId,e.fastForward.fire).catch(t=>e.log.warn(`Failed to fire fast-forward final lick`,t)),!0}async function w(t,n,r){let{hasOnboardingFinalLickInHistory:i}=await e(async()=>{let{hasOnboardingFinalLickInHistory:e}=await import(`./welcome-detection-D-eB9s6-.js`).then(e=>e.r);return{hasOnboardingFinalLickInHistory:e}},__vite__mapDeps([4,2,1,3]));if(await i())return;let a=t?await T(t):{},{getSelectedModelId:o,getProviderConfig:s,getProviderModels:c}=await e(async()=>{let{getSelectedModelId:e,getProviderConfig:t,getProviderModels:n}=await import(`./main-D7K1MTaQ.js`).then(e=>e.h);return{getSelectedModelId:e,getProviderConfig:t,getProviderModels:n}},__vite__mapDeps([1,2,3])),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 T(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 E(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 D(t){let{client:n,getController:o,openVfs:s,log:l}=t,u=await e(()=>import(`./main-D7K1MTaQ.js`).then(e=>e.h),__vite__mapDeps([1,2,3])),{createSprinkleDeviceCodePrompter:d,resolveDeviceCodeDecision:h}=await e(async()=>{let{createSprinkleDeviceCodePrompter:e,resolveDeviceCodeDecision:t}=await import(`./device-code-bridge-CbHxw098.js`);return{createSprinkleDeviceCodePrompter:e,resolveDeviceCodeDecision:t}},[]),_=E(await s()),v=f(),y=e=>{let t=o();t?t.addAssistantMessage(e):l.warn(`WC onboarding: no controller to post welcome line`)},b=await c({fs:_,log:l,providers:u,deviceCode:{createSprinkleDeviceCodePrompter:d},postSystemMessage:y,postDipReference:y,broadcastToDip:e=>r(e),onFireFinalLick:e=>{a(n),m(String(e?.action??``),v,()=>n.sendSprinkleLick(`welcome`,e),`orchestrator-wc`,l)}}),x=g({firedWelcomeActions:v,getAccounts:u.getAccounts,getProviderConfig:u.getProviderConfig,resolveDeviceCodeDecision:h,getOnboardingOrchestrator:()=>b.get(),fastForward:{fire:e=>{m(String(e.action??``),v,()=>n.sendSprinkleLick(`welcome`,e),`fast-forward-wc`,l)},broadcastAlreadyConnected:e=>{let t=(()=>{try{return u.getProviderConfig(e)?.name??null}catch{return null}})();r({type:`slicc-already-connected`,provider:e,note:t?`Already connected to ${t}.`:`Already connected.`})}},onShortcutMigrate:()=>{_.writeFile(`/shared/.welcomed`,`1`).catch(e=>l.warn(`Failed to persist welcome completion marker`,e))},contextLabel:`wc`,vfs:_,log:l});return i({vfs:_,storage:window.localStorage,firedWelcomeActions:v,persistFiredWelcomeActions:p,getOrchestrator:()=>b.get(),log:l}),{interceptWelcomeLick:x}}export{D as wireWcOnboarding};
@@ -1,4 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/quick-llm-DdZDN1QH.js","assets/chunk-aKtaBQYM.js","assets/main-D7K1MTaQ.js","assets/modulepreload-polyfill-Dezn_h7o.js","assets/iconsAndAliases-Bzj1tGpU.js","assets/llm-session-id-DVmZ9C2t.js"])))=>i.map(i=>d[i]);
2
- import{Dt as e}from"./main-D7K1MTaQ.js";var t=400,n=800,r=`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 i(e,t){return e.length>t?`${e.slice(0,t)}…`:e}function a(e){let r=e.filter(e=>!e.isStreaming&&!e.queued&&e.source!==`lick`),a=[...r].reverse().find(e=>e.role===`assistant`),o=r.filter(e=>e.role===`user`).slice(-3);return!a||o.length===0?null:[...o.map(e=>`[user]: ${i(e.content,t)}`),`[assistant]: ${i(a.content,n)}`].join(`
3
-
4
- `)}async function o(t){if(t.currentValue.length>0)return;let n=a(t.messages);if(!n){t.setPlaceholder(t.defaultPlaceholder);return}let i=await(t.quickLabelFn??(await e(async()=>{let{quickLabel:e}=await import(`./quick-llm-DdZDN1QH.js`).then(e=>e.n);return{quickLabel:e}},__vite__mapDeps([0,1,2,3,4,5]))).quickLabel)({system:r,prompt:`Recent conversation:\n${n}`,maxTokens:40,signal:t.signal});t.signal?.aborted||t.currentValue.length>0||t.setPlaceholder(i&&i.length>0?i:t.defaultPlaceholder)}function s(e){let t=null;return()=>{e.inputCard.hasAttribute(`disabled`)||(t?.abort(),t=new AbortController,o({messages:e.getMessages(),currentValue:e.inputCard.value??``,setPlaceholder:t=>e.inputCard.setAttribute(`placeholder`,t),defaultPlaceholder:e.defaultPlaceholder,signal:t.signal}).catch(()=>void 0))}}export{s as createPlaceholderRefresher};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/legacy-styles-Bt2Mk3g2.js","assets/main-D7K1MTaQ.js","assets/chunk-aKtaBQYM.js","assets/modulepreload-polyfill-Dezn_h7o.js","assets/sprinkle-manager-CqLTFoc9.js","assets/sprinkle-bridge-DrAUCEC_.js","assets/hid-device-registry-D2LsJCRr.js","assets/usb-operations-CkcrNzZw.js","assets/serial-port-registry-Bc4wlwED.js","assets/usb-device-registry-BP58Vi0S.js","assets/shared-B7TdM-Ik.js","assets/sprinkle-renderer-5HX0pMZZ.js","assets/theme-BBwuyzvz.js","assets/setup-sprinkle-exec-ByJwHfyz.js","assets/dip-_QvZN8wj.js","assets/wc-live-DHS3FYU1.js","assets/wc-shell-9F74yNEh.js","assets/iconsAndAliases-Bzj1tGpU.js","assets/wc-shell-WkeczD9x.css","assets/proxy-error-9UvXMpzG.js","assets/quick-llm-DdZDN1QH.js","assets/llm-session-id-DVmZ9C2t.js"])))=>i.map(i=>d[i]);
2
- import{Dt as e}from"./main-D7K1MTaQ.js";var t=`sprinkle:`,n=`slicc-sprinkle-icons`;function r(){try{let e=localStorage.getItem(n);if(!e)return{};let t=JSON.parse(e);if(typeof t!=`object`||!t)return{};let r={};for(let[e,n]of Object.entries(t))typeof n==`string`&&(r[e]=n);return r}catch{return{}}}function i(e){try{let t=new Set(e),i=Object.fromEntries(Object.entries(r()).filter(([e])=>t.has(e)));localStorage.setItem(n,JSON.stringify(i))}catch{}}function a(e,t){try{localStorage.setItem(n,JSON.stringify({...r(),[e]:t}))}catch{}}function o(e){return typeof e==`string`&&/^[a-z0-9]+(-[a-z0-9]+)*$/.test(e)}function s(e){return`${t}${e}`}function c(e){return e?.startsWith(t)?e.slice(9):null}var l=[{id:`files`,label:`files`,kind:`tool`},{id:`term`,label:`terminal`,kind:`tool`},{id:`memory`,label:`memory`,kind:`tool`}],u=class{#e;#t=new Map;#n=new Map;#r=new Map;#i=new Set;constructor(e){this.#e=e}seedDockItems(e){let t=r(),n=!1;for(let r of e)this.#n.has(r)||(this.#i.add(r),this.#n.set(r,{id:s(r),icon:t[r]??`sparkles`,label:r,kind:`sprinkle`}),n=!0);n&&this.#u()}dropUnconfirmedSeeds(){let e=!1;for(let t of this.#i)this.#r.has(t)||(this.#n.delete(t),e=!0);this.#i.clear(),e&&this.#u()}callbacks(){return{addSprinkle:(e,t,n,r,i)=>this.#a(e,t,n,i),removeSprinkle:e=>this.#o(e,{keepDockItem:!1}),minimizeSprinkle:e=>this.#s(e),registerSprinkle:(e,t,n)=>this.#c(e,t,n?.icon),unregisterSprinkle:e=>this.#l(e),closeSprinkleContent:e=>this.#o(e,{keepDockItem:!0})}}updateDockIcon(e,t){let n=this.#n.get(e);!n||n.icon===t||(this.#n.set(e,{...n,icon:t}),this.#u())}defaultIconNames(){return[...this.#n.entries()].filter(([,e])=>e.icon===`sparkles`).map(([e])=>e)}isOpen(e){return this.#r.has(e)}#a(e,t,n,r){let i=s(e),a=this.#r.get(e);a||(a=document.createElement(`slicc-surface`),a.setAttribute(`surface-id`,i),a.setAttribute(`layout`,`flex`),this.#e.workbenchBody.append(a),this.#r.set(e,a)),a.replaceChildren(n),this.#t.set(e,{id:i,label:t,kind:`sprinkle`,closable:!0}),this.#c(e,t,r?.icon),this.#u(),!r?.attention&&!r?.background&&this.#d(i)}#o(e,t){let n=s(e);this.#r.get(e)?.remove(),this.#r.delete(e),this.#t.delete(e),t.keepDockItem||this.#n.delete(e),this.#u(),this.#e.workbenchBody.getAttribute(`active`)===n&&this.#d(`files`)}#s(e){this.#e.workbenchBody.getAttribute(`active`)===s(e)&&(this.#e.shell.removeAttribute(`open`),this.#e.dock.removeAttribute(`active`))}#c(e,t,n){this.#i.delete(e);let i=o(n)?n:r()[e]??`sparkles`;this.#n.set(e,{id:s(e),icon:i,label:t,kind:`sprinkle`}),this.#u()}#l(e){this.#r.has(e)||(this.#n.delete(e),this.#u())}#u(){this.#e.tabBar.tabs=[...l,...this.#t.values()],this.#e.dock.items=[...this.#n.values()],this.#e.workbenchHeader.toggleAttribute(`hidden`,this.#t.size===0)}#d(e){this.#e.shell.setAttribute(`open`,``),this.#e.workbenchBody.setAttribute(`active`,e),this.#e.dock.setAttribute(`active`,e),this.#e.tabBar.setAttribute(`active`,e)}};async function d(t){let{refs:n,client:r,fs:a,instanceId:o,log:s}=t,l=new u(n),{loadSprinkleStyles:d}=await e(async()=>{let{loadSprinkleStyles:e}=await import(`./legacy-styles-Bt2Mk3g2.js`);return{loadSprinkleStyles:e}},__vite__mapDeps([0,1,2,3]));await d();let{SprinkleManager:m,readKnownSprinkleNames:h}=await e(async()=>{let{SprinkleManager:e,readKnownSprinkleNames:t}=await import(`./sprinkle-manager-CqLTFoc9.js`);return{SprinkleManager:e,readKnownSprinkleNames:t}},__vite__mapDeps([4,1,2,3,5,6,7,8,9,10,11,12]));l.seedDockItems(h());let{installSprinkleManagerHandlerOverChannel:g}=await e(async()=>{let{installSprinkleManagerHandlerOverChannel:e}=await import(`./sprinkle-bridge-channel-gxatjtur.js`);return{installSprinkleManagerHandlerOverChannel:e}},[]),{createSprinkleExecHandler:_}=await e(async()=>{let{createSprinkleExecHandler:e}=await import(`./setup-sprinkle-exec-ByJwHfyz.js`);return{createSprinkleExecHandler:e}},__vite__mapDeps([13,1,2,3])),{setDipExecHandler:v}=await e(async()=>{let{setDipExecHandler:e}=await import(`./dip-_QvZN8wj.js`);return{setDipExecHandler:e}},__vite__mapDeps([14,15,1,2,3,16,17,18,19,6,7,8,9,5,10,11,12])),y=typeof chrome<`u`&&!!chrome?.runtime?.id,b=_(r),x=new m(a,e=>{e.type===`sprinkle`&&e.sprinkleName&&r.sendSprinkleLick(e.sprinkleName,e.body,e.targetScoop)},l.callbacks(),()=>{let e=r.getScoops().find(e=>e.isCone);e&&r.stopScoop(e.jid)},{...y?{autoOpenBehavior:`attention`}:{},inlineSprinkles:new Set([`welcome`]),execHandler:b,onAttachImage:()=>{s.warn(`WC shell: image attachments from sprinkles are not wired yet`)}});if(window.__slicc_sprinkleManager=x,v(b),o!==void 0){let e=g(x,{instanceId:o});window.addEventListener(`beforeunload`,()=>e(),{once:!0})}else if(y){let{handleSprinkleOp:t}=await e(async()=>{let{handleSprinkleOp:e}=await import(`./sprinkle-op-handler-Dta4p7Tc.js`);return{handleSprinkleOp:e}},[]);r.setSprinkleOpHandler(e=>{let{id:n,op:r,name:i,data:a}=e;t(x,n,r,i,a)})}p(n.tabBar,e=>x.close(e)),n.dock.addEventListener(`slicc-dock-select`,e=>{let t=c(e.detail?.id);t&&x.activate(t).catch(e=>s.error(`WC sprinkle activate failed`,e))});let S=!1,C=async()=>{if(await x.refresh(),x.available().length>0){l.dropUnconfirmedSeeds();let t=x.available().map(e=>e.name),{pruneKnownSprinkleNames:n}=await e(async()=>{let{pruneKnownSprinkleNames:e}=await import(`./sprinkle-manager-CqLTFoc9.js`);return{pruneKnownSprinkleNames:e}},__vite__mapDeps([4,1,2,3,5,6,7,8,9,10,11,12]));n(t),i(t)}await x.restoreOpenSprinkles().catch(e=>{s.warn(`WC shell: failed to restore open sprinkles`,e)}),S||(S=!0,e(async()=>{let{pickLucideIcon:e}=await import(`./quick-llm-DdZDN1QH.js`).then(e=>e.n);return{pickLucideIcon:e}},__vite__mapDeps([20,2,1,3,17,21])).then(({pickLucideIcon:e})=>f(l,x.available(),t=>e({subject:t}))).catch(()=>void 0).finally(()=>{S=!1}))};return await C(),{manager:x,zone:l,resync:C}}async function f(e,t,n){let i=new Set(e.defaultIconNames()),s=r();for(let r of t){if(!i.has(r.name)||o(r.icon))continue;let t=s[r.name];if(t){e.updateDockIcon(r.name,t);continue}let c=await n(`"${r.title}" — a SLICC sprinkle panel (${r.name})`);c&&(a(r.name,c),e.updateDockIcon(r.name,c))}}function p(e,t){e.addEventListener(`tab-close`,e=>{let n=c(e.detail?.id);n&&t(n)})}export{d as wireWcSprinkles};