sliccy 6.78.3 → 6.78.5
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.
- package/dist/ui/.vite/manifest.json +153 -153
- package/dist/ui/assets/{account-store-Bwe7JMH-.js → account-store-BSkcgqia.js} +1 -1
- package/dist/ui/assets/{account-store-Ch65aCFb.js → account-store-a-RbK7Ji.js} +1 -1
- package/dist/ui/assets/{adobe-DsgfMMl7.js → adobe-Bc5RH4Mm.js} +1 -1
- package/dist/ui/assets/{adobe-Bz9Td5du.js → adobe-Cl5qRv69.js} +1 -1
- package/dist/ui/assets/{apply-layout-CFIXh5fS.js → apply-layout-CLDc-lcp.js} +1 -1
- package/dist/ui/assets/{apps-Cs8oR4Lg.js → apps-BtecDEmW.js} +1 -1
- package/dist/ui/assets/{azure-openai-Cm4-SPmb.js → azure-openai-CBClKEXD.js} +1 -1
- package/dist/ui/assets/{azure-openai-V4ydKR70.js → azure-openai-Q_EJ2jLH.js} +1 -1
- package/dist/ui/assets/{cerebras-Cr72hzB7.js → cerebras-Bpve3E10.js} +1 -1
- package/dist/ui/assets/{cerebras-C51m3zHq.js → cerebras-CdRvo7Xk.js} +1 -1
- package/dist/ui/assets/{connect-surface-BgLFvMBr.js → connect-surface-tiC2OkJL.js} +1 -1
- package/dist/ui/assets/{dip-C4M86p74.js → dip-B58NQGEQ.js} +1 -1
- package/dist/ui/assets/{dist-Bh8-cxgl.js → dist-B6HZAA0r.js} +1 -1
- package/dist/ui/assets/{dist-BQ_FCdJ0.js → dist-BHvDPTv0.js} +1 -1
- package/dist/ui/assets/{dist-Bx8Nuiy3.js → dist-COLaZOxM.js} +2 -2
- package/dist/ui/assets/dist-CPNmKU6m.js +12 -0
- package/dist/ui/assets/{dist-BCutJA5Z.js → dist-mxmkfALf.js} +2 -2
- package/dist/ui/assets/{fs-CrXC-O2d.js → fs-Y-2f9vf-.js} +1 -1
- package/dist/ui/assets/{fs-CHduR_z-.js → fs-xLiyKHAd.js} +2 -2
- package/dist/ui/assets/{github-BIU4tpUD.js → github-CzFPhbtz.js} +2 -2
- package/dist/ui/assets/{github-copilot-DVH5IrYn.js → github-copilot-Bqdui7f_.js} +1 -1
- package/dist/ui/assets/{github-copilot-D9Lwnwqf.js → github-copilot-DQ4pfVdK.js} +1 -1
- package/dist/ui/assets/{github-BGfSga5-.js → github-gTt3IxDW.js} +1 -1
- package/dist/ui/assets/{github-install-BdNHZlYI.js → github-install-XPjKx9g_.js} +1 -1
- package/dist/ui/assets/{github-zip-CpmjWt7A.js → github-zip-DJvZiicY.js} +1 -1
- package/dist/ui/assets/{js-realm-worker-MY0pjZ9h.js → js-realm-worker-50jMxmTJ.js} +1 -1
- package/dist/ui/assets/{kernel-worker-BKxUtfmY.js → kernel-worker-BagFMVvL.js} +27 -27
- package/dist/ui/assets/{local-llm-HqLsF79p.js → local-llm-B6pJb6YF.js} +1 -1
- package/dist/ui/assets/{local-llm-D1NRQkzz.js → local-llm-lLGlIItS.js} +1 -1
- package/dist/ui/assets/{main-BAZcY8aY.js → main-DrJ5tNU4.js} +3 -3
- package/dist/ui/assets/{mount-M6zAHrfJ.js → mount-ClmQt4LR.js} +1 -1
- package/dist/ui/assets/{mount-DG1bfETF.js → mount-Sd514_AB.js} +2 -2
- package/dist/ui/assets/{mount-recovery-_TjykwtG.js → mount-recovery-DXsq8_k_.js} +1 -1
- package/dist/ui/assets/{new-session--SSmR5Ga.js → new-session-DAwoothj.js} +2 -2
- package/dist/ui/assets/{oauth-bootstrap-BsYaFcYA.js → oauth-bootstrap-Cte2WTV3.js} +2 -2
- package/dist/ui/assets/{openai-codex-C5laLxy5.js → openai-codex-Crb4ez8h.js} +1 -1
- package/dist/ui/assets/{openai-codex-ChaoxQtS.js → openai-codex-D6SbNSmj.js} +1 -1
- package/dist/ui/assets/{openrouter-5bo3AK5r.js → openrouter-Cx8OxOop.js} +1 -1
- package/dist/ui/assets/{openrouter-BglEF0gx.js → openrouter-DJStrkuM.js} +1 -1
- package/dist/ui/assets/{openrouter-oauth-lWgqXvCt.js → openrouter-oauth-B9YTXL76.js} +1 -1
- package/dist/ui/assets/{openrouter-oauth-B_qwkZyM.js → openrouter-oauth-Cq2851sO.js} +1 -1
- package/dist/ui/assets/{panel-rpc-handlers-DOaYtEJ2.js → panel-rpc-handlers-BlAuyNMH.js} +2 -2
- package/dist/ui/assets/{provider-D5-Ws4A3.js → provider-348mSHul.js} +1 -1
- package/dist/ui/assets/{provider-DGKy0rlK.js → provider-dDANriNE.js} +2 -2
- package/dist/ui/assets/{provider-settings-DrEGQ7ef.js → provider-settings-2XG8sA8B.js} +1 -1
- package/dist/ui/assets/{provider-settings-BkIna1v7.js → provider-settings-D04MyJwf.js} +1 -1
- package/dist/ui/assets/{provider-store-access-Dr5cJrix.js → provider-store-access-B3OliAke.js} +2 -2
- package/dist/ui/assets/provider-store-access-C0k7xy0T.js +1 -0
- package/dist/ui/assets/{providers-DiWgfJHV.js → providers-CxrVhp4A.js} +2 -2
- package/dist/ui/assets/{providers-B9Tcuh9N.js → providers-mA21pCo6.js} +1 -1
- package/dist/ui/assets/{quick-llm-CSEzJrdv.js → quick-llm-Cf12U18g.js} +1 -1
- package/dist/ui/assets/{recovery-screen-BAeZAnd3.js → recovery-screen-CXxHQkty.js} +1 -1
- package/dist/ui/assets/{redirect-uri-BmNItvHl.js → redirect-uri-CGjQAXw3.js} +1 -1
- package/dist/ui/assets/{session-freezer-BU7ggIXE.js → session-freezer-BWZ8Pda2.js} +3 -3
- package/dist/ui/assets/{setup-feature-flags-remote-B7CMO8xS.js → setup-feature-flags-remote-B6y6hS43.js} +1 -1
- package/dist/ui/assets/{setup-standalone-prelude-Dg0BO-ug.js → setup-standalone-prelude-DwVhWiwy.js} +1 -1
- package/dist/ui/assets/{setup-sudo-w0slorYi.js → setup-sudo-CyS1nNtn.js} +2 -2
- package/dist/ui/assets/{skills-Qu2Xx97d.js → skills-DYa8ohlE.js} +1 -1
- package/dist/ui/assets/slicc-editor-CVftccS9.js +1 -0
- package/dist/ui/assets/{slicc-editor-w0xhQSQY.js → slicc-editor-DsHp_in-.js} +2 -2
- package/dist/ui/assets/slicc-version-BevD4ZHh.js +1 -0
- package/dist/ui/assets/{sprinkle-manager-2UUakPAV.js → sprinkle-manager-EEbsd3wB.js} +1 -1
- package/dist/ui/assets/{sprinkle-renderer-BvgsDBVv.js → sprinkle-renderer-D64E-W2o.js} +2 -2
- package/dist/ui/assets/{store-BY8jHah-.js → store-C-zQM6gR.js} +1 -1
- package/dist/ui/assets/{store-DLe-z7qR.js → store-SbJ_6YJe.js} +1 -1
- package/dist/ui/assets/{sudo-B-8VnvDn.js → sudo-Ik-mGhAY.js} +1 -1
- package/dist/ui/assets/{upgrade-detection-Bsw9PDXL.js → upgrade-detection-X7d39PBZ.js} +1 -1
- package/dist/ui/assets/{wc-extension-DYDuh0JO.js → wc-extension-Bi1mLMkJ.js} +2 -2
- package/dist/ui/assets/{wc-follower-ww51bVZi.js → wc-follower-CPNWIIOy.js} +3 -3
- package/dist/ui/assets/{wc-live-B-tu9Zmf.js → wc-live-CZl29X3Y.js} +5 -5
- package/dist/ui/assets/{wc-nav-DTKff66m.js → wc-nav-CSlOK5OE.js} +2 -2
- package/dist/ui/assets/{wc-onboarding-W9IFk-VE.js → wc-onboarding-DwqnU0M-.js} +2 -2
- package/dist/ui/assets/{wc-placeholder-BHMU_r6O.js → wc-placeholder-Bw4YeVys.js} +2 -2
- package/dist/ui/assets/{wc-settings-DXjEjm0D.js → wc-settings-Dpgi0212.js} +2 -2
- package/dist/ui/assets/{wc-shell-Csh9APE_.js → wc-shell-Da2c3euj.js} +2 -2
- package/dist/ui/assets/{wc-sprinkles-DzajqLC2.js → wc-sprinkles-DJDp5iTv.js} +2 -2
- package/dist/ui/assets/{wc-tray-DNQ32Rxm.js → wc-tray-DwvmqY9e.js} +2 -2
- package/dist/ui/assets/{wc-tray-scoops-bjahDti3.js → wc-tray-scoops-By8pWxvk.js} +1 -1
- package/dist/ui/assets/{xai-grok-Bjjeqaxc.js → xai-grok-BIIEg159.js} +1 -1
- package/dist/ui/assets/{xai-grok-D9twjPSS.js → xai-grok-P7Bkh_zs.js} +1 -1
- package/dist/ui/index.html +6 -6
- package/dist/ui/packages/webapp/index.html +6 -6
- package/dist/ui/slicc-editor.js +1 -1
- package/package.json +1 -1
- package/dist/ui/assets/dist-BXlTVHlX.js +0 -12
- package/dist/ui/assets/provider-store-access-BK4wRKW6.js +0 -1
- package/dist/ui/assets/slicc-editor-ioWYnKcY.js +0 -1
- package/dist/ui/assets/slicc-version-BJsqUhbP.js +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/sudo-
|
|
2
|
-
import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./preload-helper-Czpn1I53.js";var n=e({setupSudoExtension:()=>i,setupSudoStandalone:()=>r});async function r(e){let{installSudoTestHook:n}=await t(async()=>{let{installSudoTestHook:e}=await import(`./sudo-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/sudo-Ik-mGhAY.js","assets/preload-helper-Czpn1I53.js","assets/logger-DDBAeTLF.js","assets/proxied-fetch-B4g-4VbQ.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/base64-DpPqYZJF.js","assets/src-CAWTvdAa.js","assets/runtime-env-Dlaokqg1.js","assets/fetch-body-D2PwksUW.js","assets/runtime-env-CgsZ7LTp.js","assets/runtime-env-E-i2SW1s.js","assets/quick-llm-Cf12U18g.js","assets/account-store-a-RbK7Ji.js","assets/bedrock-camp-qpZqnqLa.js","assets/diagnostics-DN_idNHx.js","assets/transform-messages-N_eMsP2M.js","assets/provider-env-CTOcDKrQ.js","assets/__vite-browser-external-5eBdwsFd.js","assets/openrouter.models-gbjkpjE_.js","assets/libesm-BI4UHVqp.js","assets/float-topology-BgioAcOd.js","assets/secret-topology-xLmXoozo.js","assets/secrets-bridge-client-cWDAnFqs.js","assets/port-bridge-client-BbVs1yhx.js","assets/image-markers-BXtVm4og.js","assets/tool-ui-DfXu6quJ.js","assets/providers-CxrVhp4A.js","assets/panel-rpc-B3MSVImO.js","assets/llm-session-id-bZQs6gBN.js","assets/icons-ZLR7gmJ4.js","assets/page-approval-service-Bbc3_KdK.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./preload-helper-Czpn1I53.js";var n=e({setupSudoExtension:()=>i,setupSudoStandalone:()=>r});async function r(e){let{installSudoTestHook:n}=await t(async()=>{let{installSudoTestHook:e}=await import(`./sudo-Ik-mGhAY.js`);return{installSudoTestHook:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]));n()}async function i(e){let{installPanelSudoResponder:n}=await t(async()=>{let{installPanelSudoResponder:e}=await import(`./sudo-Ik-mGhAY.js`);return{installPanelSudoResponder:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]));n()}export{n,r as t};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./logger-LESFN7Hj.js";import{n,r}from"./path-utils-DNJG-zQf.js";import{t as i}from"./types-idfTVsM8.js";import{i as a}from"./fs-
|
|
1
|
+
import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./logger-LESFN7Hj.js";import{n,r}from"./path-utils-DNJG-zQf.js";import{t as i}from"./types-idfTVsM8.js";import{i as a}from"./fs-Y-2f9vf-.js";const o=t(`sudo:sudoers`),s=`/etc/sudoers`,c=`/etc/sudoers.d`,l=/^\/scoops\/[^/]+\/etc\/sudoers$/;function u(e){return`/scoops/${e}/etc/sudoers`}function d(e,t){return e===`no-match`?t===`require-approval`?`require-approval`:`no-match`:e}function f(){return{cmnd:[],read:[],write:[],export:[]}}function p(e){return`.+^$()[]|\\{}`.includes(e)?`\\${e}`:e}function m(e){let t=``,n=0;for(;n<e.length;){let r=e[n];r===`*`?(t+=`.*`,n+=e[n+1]===`*`?2:1):r===`?`?(t+=`.`,n+=1):(t+=p(r),n+=1)}return RegExp(`^${t}$`,`s`)}function h(e){return e.split(/\r?\n/,1)[0]?.trim()??``}const g=new Set([`Cmnd`,`Read`,`Write`,`Export`]);function _(e){switch(e){case`read`:return`Read`;case`write`:return`Write`;case`export`:return`Export`;default:return`Cmnd`}}function v(e){let t=e.trim(),n=!1,r=t.search(/\s/);(r===-1?t:t.slice(0,r))===`NOPASSWD`&&(n=!0,t=r===-1?``:t.slice(r).trimStart());let i=t.search(/\s/),a=i===-1?t:t.slice(0,i);if(!g.has(a))return null;let o=i===-1?``:t.slice(i).trim();return o?{directive:a,nopasswd:n,pattern:o}:null}function y(e){let t=f();try{if(typeof e!=`string`)return t;for(let n of e.split(`
|
|
2
2
|
`)){let e=n.trim();if(!e||e.startsWith(`#`))continue;let i=v(e);if(!i){o.warn(`Skipping unrecognized sudoers line`,{line:e});continue}let a=i.directive===`Cmnd`||i.directive===`Export`?m:r,s={pattern:i.pattern,nopasswd:i.nopasswd,regex:a(i.pattern)};i.directive===`Cmnd`?t.cmnd.push(s):i.directive===`Read`?t.read.push(s):i.directive===`Export`?t.export.push(s):t.write.push(s)}return t}catch(e){return o.error(`Failed to parse sudoers; falling back to self-protection only`,{err:e}),f()}}const ee=[`NOPASSWD Read /tmp`,`NOPASSWD Read /tmp/**`,`NOPASSWD Write /tmp`,`NOPASSWD Write /tmp/**`].join(`
|
|
3
3
|
`);let b=null;function te(){return b??=y(ee),b}function x(...e){let t=f();for(let n of e)n&&(t.cmnd.push(...n.cmnd),t.read.push(...n.read),t.write.push(...n.write),t.export.push(...n.export??[]));return t}function S(e,t){let n=!1;for(let r of e)if(r.regex.test(t)){if(r.nopasswd)return`nopasswd-allow`;n=!0}return n?`require-approval`:`no-match`}function ne(e,t){return S(e.export??[],t)===`nopasswd-allow`?`nopasswd-allow`:`require-approval`}function re(e,t){return S(e.cmnd,t.trim())}function ie(e){return e===`/etc/sudoers`||e===`/etc/sudoers.d`||e.startsWith(`/etc/sudoers.d/`)||l.test(e)||e===`/etc/slicc/layouts`||e.startsWith(`/etc/slicc/layouts/`)}function C(e,t,r,i){let o=n(r);if(t===`write`){if(ie(o))return`require-approval`;if(i?.isContentWrite&&a(o))return`nopasswd-allow`}return S(t===`read`?e.read:e.write,o)}const w=t(`sudo:timeout`),T={"user-timeout":`no response from the user within 5 minutes. This is a TIMEOUT, not a denial — the user was not there to answer. Do not retry this action; report that the approval request went unanswered and wait for the user before trying again.`,"cone-timeout":`no response from the cone agent within 5 minutes. This is a TIMEOUT, not a denial — no human was ever prompted, the cone simply never resolved the request. Do not retry this action; report that the escalation went unanswered and continue with work that does not need it.`};function E(e){return T[e]}function D(e=`user-timeout`){return{decision:`deny`,reason:e}}function O(e,t){let n=t.decision===`deny`?t.reason:void 0;return n?`${e}: approval request timed out — ${E(n)}`:`${e}: approval denied`}function ae(e,t={}){let n=t.timeoutMs??3e5;if(!Number.isFinite(n)||n<=0)return e;let r=t.setTimer??((e,t)=>setTimeout(e,t)),i=t.clearTimer??(e=>clearTimeout(e));return{requestApproval(t,a){return new Promise(o=>{let s=new AbortController,c=()=>s.abort();a?.signal?.addEventListener(`abort`,c,{once:!0});let l=!1,u=e=>{l=!0,a?.signal?.removeEventListener(`abort`,c),o(e)},d=r(()=>{l||(w.warn(`sudo approval timed out — failing closed`,{kind:t.kind,detail:t.detail,timeoutMs:n}),s.abort(),u(D(`user-timeout`)))},n),f=e=>{if(l){w.warn(`sudo decision arrived after timeout — discarded`,{kind:t.kind,detail:t.detail,decision:e.decision});return}i(d),u(e)};e.requestApproval(t,{signal:s.signal}).then(f,e=>{w.warn(`sudo broker threw — denying`,{error:e instanceof Error?e.message:String(e)}),f({decision:`deny`})})})}}}const oe=t(`sudo:fs`),k=Symbol.for(`slicc.fs.monkeypatchUnsafe`),A=`${c}/granted`;function j(e){return O(`sudo`,e)}const M=[`readFile`,`readTextFile`,`readDir`,`exists`,`stat`],N=[`writeFile`],P=[`mkdir`,`rm`];async function F(e,t,n,a){let o=h(a);if(!o)return;let s=t(),l={pattern:o,nopasswd:!0,regex:r(o)};(n===`read`?s.read:s.write).push(l);let u=`NOPASSWD ${n===`read`?`Read`:`Write`} ${o}\n`;try{await e.mkdir(c,{recursive:!0});let t=``;try{t=await e.readFile(A,{encoding:`utf-8`})}catch(e){if(!(e instanceof i&&e.code===`ENOENT`))throw e}let n=t.length>0&&!t.endsWith(`
|
|
4
4
|
`)?`
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as e}from"./dist-CPNmKU6m.js";import"./slicc-editor-DsHp_in-.js";window.__SLICC_CM6__={StreamLanguage:e};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/dist-
|
|
2
|
-
import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./preload-helper-Czpn1I53.js";import{$ as n,A as r,D as i,E as a,G as o,H as s,J as c,K as l,N as u,Q as d,S as f,U as p,V as m,X as ee,Y as te,Z as ne,at as re,c as ie,ct as h,d as ae,dt as g,et as _,lt as oe,n as se,ot as ce,q as le,st as ue,t as de,tt as fe,ut as v,v as y,w as b,x,y as S}from"./dist-BXlTVHlX.js";import{t as pe}from"./upgrade-own-properties-DI0JKxGt.js";var me=e=>{let{state:t}=e,n=t.doc.lineAt(t.selection.main.from),r=w(e.state,n.from);return r.line?he(e):r.block?_e(e):!1};function C(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 he=C(xe,0),ge=C(be,0),_e=C((e,t)=>be(e,t,ye(t)),0);function w(e,t){let n=e.languageDataAt(`commentTokens`,t,1);return n.length?n[0]:{}}var T=50;function ve(e,{open:t,close:n},r,i){let a=e.sliceDoc(r-T,r),o=e.sliceDoc(i,i+T),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<=100?u=d=e.sliceDoc(r,i):(u=e.sliceDoc(r,r+T),d=e.sliceDoc(i-T,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 ye(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 be(e,t,n=t.selection.ranges){let r=n.map(e=>w(t,e.from).block);if(!r.every(e=>e))return null;let i=n.map((e,n)=>ve(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 xe(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=w(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)}}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 E=te.define(),Se=te.define(),Ce=fe.define(),we=fe.define({combine(e){return oe(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)})}}),Te=ce.define({create(){return P.empty},update(e,t){let n=t.state.facet(we),r=t.annotation(E);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):Ne(o,t.startState.selection),new P(a==0?r.rest:o,a==0?o:r.rest)}let i=t.annotation(Se);if((i==`full`||i==`before`)&&(e=e.isolate()),t.annotation(h.addToHistory)===!1)return t.changes.empty?e:e.addMapping(t.changes.desc);let a=A.fromTransaction(t),o=t.annotation(h.time),s=t.annotation(h.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 Ee(e={}){return[Te,we.of(e),s.domEventHandlers({beforeinput(e,t){let n=e.inputType==`historyUndo`?O:e.inputType==`historyRedo`?k:null;return n?(e.preventDefault(),n(t)):!1}})]}function D(e,t){return function({state:n,dispatch:r}){if(!t&&n.readOnly)return!1;let i=n.field(Te,!1);if(!i)return!1;let a=i.pop(e,n,t);return a?(r(a),!0):!1}}var O=D(0,!1),k=D(1,!1),De=D(0,!0),Oe=D(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&&ne.fromJSON(t.changes),[],t.mapped&&ee.fromJSON(t.mapped),t.startSelection&&n.fromJSON(t.startSelection),t.selectionsAfter.map(n.fromJSON))}static fromTransaction(t,n){let r=M;for(let e of t.startState.facet(Ce)){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 ke(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 Ae(e,t){return e.ranges.length==t.ranges.length&&e.ranges.filter((e,n)=>e.empty!=t.ranges[n].empty).length===0}function je(e,t){return e.length?t.length?e.concat(t):e:t}var M=[],Me=200;function Ne(e,t){if(e.length){let n=e[e.length-1],r=n.selectionsAfter.slice(Math.max(0,n.selectionsAfter.length-Me));return r.length&&r[r.length-1].eq(t)?e:(r.push(t),j(e,e.length-1,1e9,n.setSelAfter(r)))}return[A.selection([t])]}function Pe(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=Fe(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}t=i.mapped,n--,r=i.selectionsAfter}return r.length?[A.selection(r)]:M}function Fe(e,t,n){let r=je(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,re.mapEffects(e.effects,t),o,e.startSelection.map(a),r)}var Ie=/^(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||Ie.test(r))&&(!s.selectionsAfter.length&&n-this.prevTime<i.newGroupDelay&&i.joinToEvent(a,ke(s.changes,t.changes))||r==`input.type.compose`)?j(o,o.length-1,i.minDepth,new A(t.changes.compose(s.changes),je(re.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)&&Ae(a[a.length-1],t)?this:new e(Ne(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:E.of({side:e,rest:Pe(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:E.of({side:e,rest:n,selection:a}),filter:!1,userEvent:e==0?`undo`:`redo`,scrollIntoView:!0})}return null}};P.empty=new P(M,M);var Le=[{key:`Mod-z`,run:O,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:De,preventDefault:!0},{key:`Alt-u`,mac:`Mod-Shift-u`,run:Oe,preventDefault:!0}];function F(e,t){return n.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)&&(t(I(e,r)),!0)}function R(e,t){return n.cursor(t?e.to:e.from)}function z(e,t){return L(e,n=>n.empty?e.moveByChar(n,t):R(n,t))}function B(e){return e.textDirectionAt(e.state.selection.main.head)==m.LTR}var V=e=>z(e,!B(e)),H=e=>z(e,B(e));function U(e,t){return L(e,n=>n.empty?e.moveByGroup(n,t):R(n,t))}var Re=e=>U(e,!B(e)),ze=e=>U(e,B(e));typeof Intl<`u`&&Intl.Segmenter;function Be(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 W(e,t,r){let a=i(e).resolveInner(t.head),o=r?u.closedBy:u.openedBy;for(let n=t.head;;){let t=r?a.childAfter(n):a.childBefore(n);if(!t)break;Be(e,t,o)?a=t:n=r?t.to:t.from}let s=a.type.prop(o),c,l;return l=s&&(c=r?b(e,a.from,1):b(e,a.to,-1))&&c.matched?r?c.end.to:c.end.from:r?a.to:a.from,n.cursor(l,r?-1:1)}var Ve=e=>L(e,t=>W(e.state,t,!B(e))),He=e=>L(e,t=>W(e.state,t,B(e)));function Ue(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 We=e=>Ue(e,!1),G=e=>Ue(e,!0);function Ge(e){let t=e.scrollDOM.clientHeight<e.scrollDOM.scrollHeight-2,n=0,r=0,i;if(t){for(let t of e.state.facet(s.scrollMargins)){let i=t(e);i?.top&&(n=Math.max(i?.top,n)),i?.bottom&&(r=Math.max(i?.bottom,r))}i=e.scrollDOM.clientHeight-n-r}else i=(e.dom.ownerDocument.defaultView||window).innerHeight;return{marginTop:n,marginBottom:r,selfScroll:t,height:Math.max(e.defaultLineHeight,i-5)}}function Ke(e,t){let n=Ge(e),{state:r}=e,i=F(r.selection,r=>r.empty?e.moveVertically(r,t,n.height):R(r,t));if(i.eq(r.selection))return!1;let a;if(n.selfScroll){let t=e.coordsAtPos(r.selection.main.head),o=e.scrollDOM.getBoundingClientRect(),c=o.top+n.marginTop,l=o.bottom-n.marginBottom;t&&t.top>c&&t.bottom<l&&(a=s.scrollIntoView(i.main.head,{y:`start`,yMargin:t.top-c}))}return e.dispatch(I(r,i),{effects:a}),!0}var qe=e=>Ke(e,!1),K=e=>Ke(e,!0);function q(e,t,r){let i=e.lineBlockAt(t.head),a=e.moveToLineBoundary(t,r);if(a.head==t.head&&a.head!=(r?i.to:i.from)&&(a=e.moveToLineBoundary(t,r,!1)),!r&&a.head==i.from&&i.length){let r=/^\s*/.exec(e.state.sliceDoc(i.from,Math.min(i.from+100,i.to)))[0].length;r&&t.head!=i.from+r&&(a=n.cursor(i.from+r))}return a}var Je=e=>L(e,t=>q(e,t,!0)),Ye=e=>L(e,t=>q(e,t,!1)),Xe=e=>L(e,t=>q(e,t,!B(e))),Ze=e=>L(e,t=>q(e,t,B(e))),Qe=e=>L(e,t=>n.cursor(e.lineBlockAt(t.head).from,1)),$e=e=>L(e,t=>n.cursor(e.lineBlockAt(t.head).to,-1));function et(e,t,r){let i=!1,a=F(e.selection,t=>{let a=b(e,t.head,-1)||b(e,t.head,1)||t.head>0&&b(e,t.head-1,1)||t.head<e.doc.length&&b(e,t.head+1,-1);if(!a||!a.end)return t;i=!0;let o=a.start.from==t.head?a.end.to:a.end.from;return r?n.range(t.anchor,o):n.cursor(o)});return i?(t(I(e,a)),!0):!1}var tt=({state:e,dispatch:t})=>et(e,t,!1);function J(e,t){let r=F(e.state.selection,e=>{let r=t(e);return n.range(e.anchor,r.head,r.goalColumn,r.bidiLevel||void 0,r.assoc)});return!r.eq(e.state.selection)&&(e.dispatch(I(e.state,r)),!0)}function nt(e,t){return J(e,n=>e.moveByChar(n,t))}var rt=e=>nt(e,!B(e)),it=e=>nt(e,B(e));function at(e,t){return J(e,n=>e.moveByGroup(n,t))}var ot=e=>at(e,!B(e)),st=e=>at(e,B(e)),ct=e=>J(e,t=>W(e.state,t,!B(e))),lt=e=>J(e,t=>W(e.state,t,B(e)));function ut(e,t){return J(e,n=>e.moveVertically(n,t))}var dt=e=>ut(e,!1),ft=e=>ut(e,!0);function pt(e,t){return J(e,n=>e.moveVertically(n,t,Ge(e).height))}var mt=e=>pt(e,!1),ht=e=>pt(e,!0),gt=e=>J(e,t=>q(e,t,!0)),_t=e=>J(e,t=>q(e,t,!1)),vt=e=>J(e,t=>q(e,t,!B(e))),yt=e=>J(e,t=>q(e,t,B(e))),bt=e=>J(e,t=>n.cursor(e.lineBlockAt(t.head).from)),xt=e=>J(e,t=>n.cursor(e.lineBlockAt(t.head).to)),St=({state:e,dispatch:t})=>(t(I(e,{anchor:0})),!0),Ct=({state:e,dispatch:t})=>(t(I(e,{anchor:e.doc.length})),!0),wt=({state:e,dispatch:t})=>(t(I(e,{anchor:e.selection.main.anchor,head:0})),!0),Tt=({state:e,dispatch:t})=>(t(I(e,{anchor:e.selection.main.anchor,head:e.doc.length})),!0),Et=({state:e,dispatch:t})=>(t(e.update({selection:{anchor:0,head:e.doc.length},userEvent:`select`})),!0),Dt=({state:e,dispatch:t})=>{let r=Q(e).map(({from:t,to:r})=>n.range(t,Math.min(r+1,e.doc.length)));return t(e.update({selection:n.create(r),userEvent:`select`})),!0},Ot=({state:e,dispatch:t})=>{let r=F(e.selection,t=>{let r=i(e),a=r.resolveStack(t.from,1);if(t.empty){let e=r.resolveStack(t.from,-1);e.node.from>=a.node.from&&e.node.to<=a.node.to&&(a=e)}for(let e=a;e;e=e.next){let{node:r}=e;if((r.from<t.from&&r.to>=t.to||r.to>t.to&&r.from<=t.from)&&e.next)return n.range(r.to,r.from)}return t});return!r.eq(e.selection)&&(t(I(e,r)),!0)};function kt(e,t){let{state:r}=e,i=r.selection,a=r.selection.ranges.slice();for(let n of r.selection.ranges){let i=r.doc.lineAt(n.head);if(t?i.to<e.state.doc.length:i.from>0)for(let r=n;;){let n=e.moveVertically(r,t);if(n.head<i.from||n.head>i.to){a.some(e=>e.head==n.head)||a.push(n);break}if(n.head==r.head)break;r=n}}return a.length!=i.ranges.length&&(e.dispatch(I(r,n.create(a,a.length-1))),!0)}var At=e=>kt(e,!1),jt=e=>kt(e,!0),Mt=({state:e,dispatch:t})=>{let r=e.selection,i=null;return r.ranges.length>1?i=n.create([r.main]):r.main.empty||(i=n.create([n.cursor(r.main.head)])),i?(t(I(e,i)),!0):!1};function Y(e,t){if(e.state.readOnly)return!1;let r=`delete.selection`,{state:i}=e,a=i.changeByRange(i=>{let{from:a,to:o}=i;if(a==o){let n=t(i);n<a?(r=`delete.backward`,n=X(e,n,!1)):n>a&&(r=`delete.forward`,n=X(e,n,!0)),a=Math.min(a,n),o=Math.max(o,n)}else a=X(e,a,!1),o=X(e,o,!0);return a==o?{range:i}:{changes:{from:a,to:o},range:n.cursor(a,a<i.head?-1:1)}});return!a.changes.empty&&(e.dispatch(i.update(a,{scrollIntoView:!0,userEvent:r,effects:r==`delete.selection`?s.announce.of(i.phrase(`Selection deleted`)):void 0})),!0)}function X(e,t,n){if(e instanceof s)for(let r of e.state.facet(s.atomicRanges).map(t=>t(e)))r.between(t,t,(e,r)=>{e<t&&r>t&&(t=n?r:e)});return t}var Nt=(e,t,n)=>Y(e,r=>{let i=r.from,{state:a}=e,o=a.doc.lineAt(i),s,c;if(n&&!t&&i>o.from&&i<o.from+200&&!/[^ \t]/.test(s=o.text.slice(0,i-o.from))){if(s[s.length-1]==` `)return i-1;let e=v(s,a.tabSize)%y(a)||y(a);for(let t=0;t<e&&s[s.length-1-t]==` `;t++)i--;c=i}else c=g(o.text,i-o.from,t,t)+o.from,c==i&&o.number!=(t?a.doc.lines:1)?c+=t?1:-1:!t&&/[\ufe00-\ufe0f]/.test(o.text.slice(c-o.from,i-o.from))&&(c=g(o.text,c-o.from,!1,!1)+o.from);return c}),Z=e=>Nt(e,!1,!0),Pt=e=>Nt(e,!0,!1),Ft=(e,t)=>Y(e,n=>{let r=n.head,{state:i}=e,a=i.doc.lineAt(r),o=i.charCategorizer(r);for(let e=null;;){if(r==(t?a.to:a.from)){r==n.head&&a.number!=(t?i.doc.lines:1)&&(r+=t?1:-1);break}let s=g(a.text,r-a.from,t)+a.from,c=a.text.slice(Math.min(r,s)-a.from,Math.max(r,s)-a.from),l=o(c);if(e!=null&&l!=e)break;(c!=` `||r!=n.head)&&(e=l),r=s}return r}),It=e=>Ft(e,!1),Lt=e=>Ft(e,!0),Rt=e=>Y(e,t=>{let n=e.lineBlockAt(t.head).to;return t.head<n?n:Math.min(e.state.doc.length,t.head+1)}),zt=e=>Y(e,t=>{let n=e.moveToLineBoundary(t,!1).head;return t.head>n?n:Math.max(0,t.head-1)}),Bt=e=>Y(e,t=>{let n=e.moveToLineBoundary(t,!0).head;return t.head<n?n:Math.min(e.state.doc.length,t.head+1)}),Vt=({state:e,dispatch:t})=>{if(e.readOnly)return!1;let r=e.changeByRange(e=>({changes:{from:e.from,to:e.to,insert:ue.of([``,``])},range:n.cursor(e.from)}));return t(e.update(r,{scrollIntoView:!0,userEvent:`input`})),!0},Ht=({state:e,dispatch:t})=>{if(e.readOnly)return!1;let r=e.changeByRange(t=>{if(!t.empty||t.from==0||t.from==e.doc.length)return{range:t};let r=t.from,i=e.doc.lineAt(r),a=r==i.from?r-1:g(i.text,r-i.from,!1)+i.from,o=r==i.to?r+1:g(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:n.cursor(o)}});return!r.changes.empty&&(t(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 Ut(e,t,r){if(e.readOnly)return!1;let i=[],a=[];for(let t of Q(e)){if(r?t.to==e.doc.length:t.from==0)continue;let o=e.doc.lineAt(r?t.to+1:t.from-1),s=o.length+1;if(r){i.push({from:t.to,to:o.to},{from:t.from,insert:o.text+e.lineBreak});for(let r of t.ranges)a.push(n.range(Math.min(e.doc.length,r.anchor+s),Math.min(e.doc.length,r.head+s)))}else{i.push({from:o.from,to:t.from},{from:t.to,insert:e.lineBreak+o.text});for(let e of t.ranges)a.push(n.range(e.anchor-s,e.head-s))}}return i.length?(t(e.update({changes:i,scrollIntoView:!0,selection:n.create(a,e.selection.mainIndex),userEvent:`move.line`})),!0):!1}var Wt=({state:e,dispatch:t})=>Ut(e,t,!1),Gt=({state:e,dispatch:t})=>Ut(e,t,!0);function Kt(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 qt=({state:e,dispatch:t})=>Kt(e,t,!1),Jt=({state:e,dispatch:t})=>Kt(e,t,!0),Yt=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 Xt(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(u.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 Zt=$t(!1),Qt=$t(!0);function $t(e){return({state:t,dispatch:r})=>{if(t.readOnly)return!1;let i=t.changeByRange(r=>{let{from:i,to:a}=r,o=t.doc.lineAt(i),s=!e&&i==a&&Xt(t,i);e&&(i=a=(a<=o.to?o:t.doc.lineAt(a)).to);let c=new se(t,{simulateBreak:i,simulateDoubleBreak:!!s}),l=S(c,i);for(l??=v(/^\s*/.exec(t.doc.lineAt(i).text)[0],t.tabSize);a<o.to&&/\s/.test(o.text[a-o.from]);)a++;s?{from:i,to:a}=s:i>o.from&&i<o.from+100&&!/\S/.test(o.text.slice(0,i))&&(i=o.from);let u=[``,x(t,l)];return s&&u.push(x(t,c.lineIndent(o.from,-1))),{changes:{from:i,to:a,insert:ue.of(u)},range:n.cursor(i+1+u[1].length)}});return r(t.update(i,{scrollIntoView:!0,userEvent:`input`})),!0}}function $(e,t){let r=-1;return e.changeByRange(i=>{let a=[];for(let n=i.from;n<=i.to;){let o=e.doc.lineAt(n);o.number>r&&(i.empty||i.to>o.from)&&(t(o,a,i),r=o.number),n=o.to+1}let o=e.changes(a);return{changes:a,range:n.range(o.mapPos(i.anchor,1),o.mapPos(i.head,1))}})}var en=({state:e,dispatch:t})=>{if(e.readOnly)return!1;let n=Object.create(null),r=new se(e,{overrideIndentation:e=>n[e]??-1}),i=$(e,(t,i,a)=>{let o=S(r,t.from);if(o==null)return;/\S/.test(t.text)||(o=0);let s=/^\s*/.exec(t.text)[0],c=x(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},tn=({state:e,dispatch:t})=>!e.readOnly&&(t(e.update($(e,(t,n)=>{n.push({from:t.from,insert:e.facet(f)})}),{userEvent:`input.indent`})),!0),nn=({state:e,dispatch:t})=>!e.readOnly&&(t(e.update($(e,(t,n)=>{let r=/^\s*/.exec(t.text)[0];if(!r)return;let i=v(r,e.tabSize),a=0,o=x(e,Math.max(0,i-y(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),rn=e=>(e.setTabFocusMode(),!0),an=[{key:`Ctrl-b`,run:V,shift:rt,preventDefault:!0},{key:`Ctrl-f`,run:H,shift:it},{key:`Ctrl-p`,run:We,shift:dt},{key:`Ctrl-n`,run:G,shift:ft},{key:`Ctrl-a`,run:Qe,shift:bt},{key:`Ctrl-e`,run:$e,shift:xt},{key:`Ctrl-d`,run:Pt},{key:`Ctrl-h`,run:Z},{key:`Ctrl-k`,run:Rt},{key:`Ctrl-Alt-h`,run:It},{key:`Ctrl-o`,run:Vt},{key:`Ctrl-t`,run:Ht},{key:`Ctrl-v`,run:K}],on=[{key:`ArrowLeft`,run:V,shift:rt,preventDefault:!0},{key:`Mod-ArrowLeft`,mac:`Alt-ArrowLeft`,run:Re,shift:ot,preventDefault:!0},{mac:`Cmd-ArrowLeft`,run:Xe,shift:vt,preventDefault:!0},{key:`ArrowRight`,run:H,shift:it,preventDefault:!0},{key:`Mod-ArrowRight`,mac:`Alt-ArrowRight`,run:ze,shift:st,preventDefault:!0},{mac:`Cmd-ArrowRight`,run:Ze,shift:yt,preventDefault:!0},{key:`ArrowUp`,run:We,shift:dt,preventDefault:!0},{mac:`Cmd-ArrowUp`,run:St,shift:wt},{mac:`Ctrl-ArrowUp`,run:qe,shift:mt},{key:`ArrowDown`,run:G,shift:ft,preventDefault:!0},{mac:`Cmd-ArrowDown`,run:Ct,shift:Tt},{mac:`Ctrl-ArrowDown`,run:K,shift:ht},{key:`PageUp`,run:qe,shift:mt},{key:`PageDown`,run:K,shift:ht},{key:`Home`,run:Ye,shift:_t,preventDefault:!0},{key:`Mod-Home`,run:St,shift:wt},{key:`End`,run:Je,shift:gt,preventDefault:!0},{key:`Mod-End`,run:Ct,shift:Tt},{key:`Enter`,run:Zt,shift:Zt},{key:`Mod-a`,run:Et},{key:`Backspace`,run:Z,shift:Z,preventDefault:!0},{key:`Delete`,run:Pt,preventDefault:!0},{key:`Mod-Backspace`,mac:`Alt-Backspace`,run:It,preventDefault:!0},{key:`Mod-Delete`,mac:`Alt-Delete`,run:Lt,preventDefault:!0},{mac:`Mod-Backspace`,run:zt,preventDefault:!0},{mac:`Mod-Delete`,run:Bt,preventDefault:!0}].concat(an.map(e=>({mac:e.key,run:e.run,shift:e.shift}))),sn=[{key:`Alt-ArrowLeft`,mac:`Ctrl-ArrowLeft`,run:Ve,shift:ct},{key:`Alt-ArrowRight`,mac:`Ctrl-ArrowRight`,run:He,shift:lt},{key:`Alt-ArrowUp`,run:Wt},{key:`Shift-Alt-ArrowUp`,run:qt},{key:`Alt-ArrowDown`,run:Gt},{key:`Shift-Alt-ArrowDown`,run:Jt},{key:`Mod-Alt-ArrowUp`,run:At},{key:`Mod-Alt-ArrowDown`,run:jt},{key:`Escape`,run:Mt},{key:`Mod-Enter`,run:Qt},{key:`Alt-l`,mac:`Ctrl-l`,run:Dt},{key:`Mod-i`,run:Ot,preventDefault:!0},{key:`Mod-[`,run:nn},{key:`Mod-]`,run:tn},{key:`Mod-Alt-\\`,run:en},{key:`Shift-Mod-k`,run:Yt},{key:`Shift-Mod-\\`,run:tt},{key:`Mod-/`,run:me},{key:`Alt-A`,run:ge},{key:`Ctrl-m`,mac:`Shift-Alt-m`,run:rn}].concat(on),cn=e({SliccEditorElement:()=>hn}),ln={json:async()=>{let{json:e}=await t(async()=>{let{json:e}=await import(`./dist-Bh8-cxgl.js`);return{json:e}},__vite__mapDeps([0,1,2]));return e()},markdown:async()=>{let{markdown:e}=await t(async()=>{let{markdown:e}=await import(`./dist-BCutJA5Z.js`);return{markdown:e}},__vite__mapDeps([3,1,4,2]));return e()},html:async()=>{let{html:e}=await t(async()=>{let{html:e}=await import(`./dist-Bx8Nuiy3.js`);return{html:e}},__vite__mapDeps([4,1,2]));return e()}};function un(e){return e?de.define([{tag:r.keyword,color:`#d19afc`},{tag:r.string,color:`#87d68d`},{tag:r.number,color:`#f5a76c`},{tag:r.comment,color:`#8a8a8a`,fontStyle:`italic`},{tag:r.punctuation,color:`#7cc5e9`},{tag:r.function(r.variableName),color:`#7ea8f8`},{tag:r.propertyName,color:`#7ea8f8`},{tag:r.bool,color:`#f5a76c`},{tag:r.null,color:`#f5a76c`},{tag:r.operator,color:`#7cc5e9`},{tag:r.typeName,color:`#d19afc`},{tag:r.tagName,color:`#d19afc`},{tag:r.attributeName,color:`#87d68d`},{tag:r.attributeValue,color:`#87d68d`},{tag:r.heading,fontWeight:`bold`},{tag:r.emphasis,fontStyle:`italic`},{tag:r.strong,fontWeight:`bold`}]):de.define([{tag:r.keyword,color:`#8839ef`},{tag:r.string,color:`#40a02b`},{tag:r.number,color:`#d05d1a`},{tag:r.comment,color:`#8a8a8a`,fontStyle:`italic`},{tag:r.punctuation,color:`#1e66f5`},{tag:r.function(r.variableName),color:`#2b6cb0`},{tag:r.propertyName,color:`#2b6cb0`},{tag:r.bool,color:`#d05d1a`},{tag:r.null,color:`#d05d1a`},{tag:r.operator,color:`#1e66f5`},{tag:r.typeName,color:`#8839ef`},{tag:r.tagName,color:`#8839ef`},{tag:r.attributeName,color:`#40a02b`},{tag:r.attributeValue,color:`#40a02b`},{tag:r.heading,fontWeight:`bold`},{tag:r.emphasis,fontStyle:`italic`},{tag:r.strong,fontWeight:`bold`}])}function dn(e){return!(e.closest?.(`.theme-light`)||document.documentElement.classList.contains(`theme-light`))}function fn(){return s.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 pn=`
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/dist-B6HZAA0r.js","assets/dist-CPNmKU6m.js","assets/dist-BHvDPTv0.js","assets/dist-mxmkfALf.js","assets/dist-COLaZOxM.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./preload-helper-Czpn1I53.js";import{$ as n,A as r,D as i,E as a,G as o,H as s,J as c,K as l,N as u,Q as d,S as f,U as p,V as m,X as ee,Y as te,Z as ne,at as re,c as ie,ct as h,d as ae,dt as g,et as _,lt as oe,n as se,ot as ce,q as le,st as ue,t as de,tt as fe,ut as v,v as y,w as b,x,y as S}from"./dist-CPNmKU6m.js";import{t as pe}from"./upgrade-own-properties-DI0JKxGt.js";var me=e=>{let{state:t}=e,n=t.doc.lineAt(t.selection.main.from),r=w(e.state,n.from);return r.line?he(e):r.block?_e(e):!1};function C(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 he=C(xe,0),ge=C(be,0),_e=C((e,t)=>be(e,t,ye(t)),0);function w(e,t){let n=e.languageDataAt(`commentTokens`,t,1);return n.length?n[0]:{}}var T=50;function ve(e,{open:t,close:n},r,i){let a=e.sliceDoc(r-T,r),o=e.sliceDoc(i,i+T),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<=100?u=d=e.sliceDoc(r,i):(u=e.sliceDoc(r,r+T),d=e.sliceDoc(i-T,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 ye(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 be(e,t,n=t.selection.ranges){let r=n.map(e=>w(t,e.from).block);if(!r.every(e=>e))return null;let i=n.map((e,n)=>ve(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 xe(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=w(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)}}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 E=te.define(),Se=te.define(),Ce=fe.define(),we=fe.define({combine(e){return oe(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)})}}),Te=ce.define({create(){return P.empty},update(e,t){let n=t.state.facet(we),r=t.annotation(E);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):Ne(o,t.startState.selection),new P(a==0?r.rest:o,a==0?o:r.rest)}let i=t.annotation(Se);if((i==`full`||i==`before`)&&(e=e.isolate()),t.annotation(h.addToHistory)===!1)return t.changes.empty?e:e.addMapping(t.changes.desc);let a=A.fromTransaction(t),o=t.annotation(h.time),s=t.annotation(h.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 Ee(e={}){return[Te,we.of(e),s.domEventHandlers({beforeinput(e,t){let n=e.inputType==`historyUndo`?O:e.inputType==`historyRedo`?k:null;return n?(e.preventDefault(),n(t)):!1}})]}function D(e,t){return function({state:n,dispatch:r}){if(!t&&n.readOnly)return!1;let i=n.field(Te,!1);if(!i)return!1;let a=i.pop(e,n,t);return a?(r(a),!0):!1}}var O=D(0,!1),k=D(1,!1),De=D(0,!0),Oe=D(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&&ne.fromJSON(t.changes),[],t.mapped&&ee.fromJSON(t.mapped),t.startSelection&&n.fromJSON(t.startSelection),t.selectionsAfter.map(n.fromJSON))}static fromTransaction(t,n){let r=M;for(let e of t.startState.facet(Ce)){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 ke(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 Ae(e,t){return e.ranges.length==t.ranges.length&&e.ranges.filter((e,n)=>e.empty!=t.ranges[n].empty).length===0}function je(e,t){return e.length?t.length?e.concat(t):e:t}var M=[],Me=200;function Ne(e,t){if(e.length){let n=e[e.length-1],r=n.selectionsAfter.slice(Math.max(0,n.selectionsAfter.length-Me));return r.length&&r[r.length-1].eq(t)?e:(r.push(t),j(e,e.length-1,1e9,n.setSelAfter(r)))}return[A.selection([t])]}function Pe(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=Fe(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}t=i.mapped,n--,r=i.selectionsAfter}return r.length?[A.selection(r)]:M}function Fe(e,t,n){let r=je(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,re.mapEffects(e.effects,t),o,e.startSelection.map(a),r)}var Ie=/^(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||Ie.test(r))&&(!s.selectionsAfter.length&&n-this.prevTime<i.newGroupDelay&&i.joinToEvent(a,ke(s.changes,t.changes))||r==`input.type.compose`)?j(o,o.length-1,i.minDepth,new A(t.changes.compose(s.changes),je(re.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)&&Ae(a[a.length-1],t)?this:new e(Ne(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:E.of({side:e,rest:Pe(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:E.of({side:e,rest:n,selection:a}),filter:!1,userEvent:e==0?`undo`:`redo`,scrollIntoView:!0})}return null}};P.empty=new P(M,M);var Le=[{key:`Mod-z`,run:O,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:De,preventDefault:!0},{key:`Alt-u`,mac:`Mod-Shift-u`,run:Oe,preventDefault:!0}];function F(e,t){return n.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)&&(t(I(e,r)),!0)}function R(e,t){return n.cursor(t?e.to:e.from)}function z(e,t){return L(e,n=>n.empty?e.moveByChar(n,t):R(n,t))}function B(e){return e.textDirectionAt(e.state.selection.main.head)==m.LTR}var V=e=>z(e,!B(e)),H=e=>z(e,B(e));function U(e,t){return L(e,n=>n.empty?e.moveByGroup(n,t):R(n,t))}var Re=e=>U(e,!B(e)),ze=e=>U(e,B(e));typeof Intl<`u`&&Intl.Segmenter;function Be(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 W(e,t,r){let a=i(e).resolveInner(t.head),o=r?u.closedBy:u.openedBy;for(let n=t.head;;){let t=r?a.childAfter(n):a.childBefore(n);if(!t)break;Be(e,t,o)?a=t:n=r?t.to:t.from}let s=a.type.prop(o),c,l;return l=s&&(c=r?b(e,a.from,1):b(e,a.to,-1))&&c.matched?r?c.end.to:c.end.from:r?a.to:a.from,n.cursor(l,r?-1:1)}var Ve=e=>L(e,t=>W(e.state,t,!B(e))),He=e=>L(e,t=>W(e.state,t,B(e)));function Ue(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 We=e=>Ue(e,!1),G=e=>Ue(e,!0);function Ge(e){let t=e.scrollDOM.clientHeight<e.scrollDOM.scrollHeight-2,n=0,r=0,i;if(t){for(let t of e.state.facet(s.scrollMargins)){let i=t(e);i?.top&&(n=Math.max(i?.top,n)),i?.bottom&&(r=Math.max(i?.bottom,r))}i=e.scrollDOM.clientHeight-n-r}else i=(e.dom.ownerDocument.defaultView||window).innerHeight;return{marginTop:n,marginBottom:r,selfScroll:t,height:Math.max(e.defaultLineHeight,i-5)}}function Ke(e,t){let n=Ge(e),{state:r}=e,i=F(r.selection,r=>r.empty?e.moveVertically(r,t,n.height):R(r,t));if(i.eq(r.selection))return!1;let a;if(n.selfScroll){let t=e.coordsAtPos(r.selection.main.head),o=e.scrollDOM.getBoundingClientRect(),c=o.top+n.marginTop,l=o.bottom-n.marginBottom;t&&t.top>c&&t.bottom<l&&(a=s.scrollIntoView(i.main.head,{y:`start`,yMargin:t.top-c}))}return e.dispatch(I(r,i),{effects:a}),!0}var qe=e=>Ke(e,!1),K=e=>Ke(e,!0);function q(e,t,r){let i=e.lineBlockAt(t.head),a=e.moveToLineBoundary(t,r);if(a.head==t.head&&a.head!=(r?i.to:i.from)&&(a=e.moveToLineBoundary(t,r,!1)),!r&&a.head==i.from&&i.length){let r=/^\s*/.exec(e.state.sliceDoc(i.from,Math.min(i.from+100,i.to)))[0].length;r&&t.head!=i.from+r&&(a=n.cursor(i.from+r))}return a}var Je=e=>L(e,t=>q(e,t,!0)),Ye=e=>L(e,t=>q(e,t,!1)),Xe=e=>L(e,t=>q(e,t,!B(e))),Ze=e=>L(e,t=>q(e,t,B(e))),Qe=e=>L(e,t=>n.cursor(e.lineBlockAt(t.head).from,1)),$e=e=>L(e,t=>n.cursor(e.lineBlockAt(t.head).to,-1));function et(e,t,r){let i=!1,a=F(e.selection,t=>{let a=b(e,t.head,-1)||b(e,t.head,1)||t.head>0&&b(e,t.head-1,1)||t.head<e.doc.length&&b(e,t.head+1,-1);if(!a||!a.end)return t;i=!0;let o=a.start.from==t.head?a.end.to:a.end.from;return r?n.range(t.anchor,o):n.cursor(o)});return i?(t(I(e,a)),!0):!1}var tt=({state:e,dispatch:t})=>et(e,t,!1);function J(e,t,r){let i=F(e.state.selection,e=>{e.undirectional&&e.head>=e.anchor!=t&&(e=n.range(e.head,e.anchor));let i=r(e);return n.range(e.anchor,i.head,i.goalColumn,i.bidiLevel||void 0,i.assoc)});return!i.eq(e.state.selection)&&(e.dispatch(I(e.state,i)),!0)}function nt(e,t){return J(e,t,n=>e.moveByChar(n,t))}var rt=e=>nt(e,!B(e)),it=e=>nt(e,B(e));function at(e,t){return J(e,t,n=>e.moveByGroup(n,t))}var ot=e=>at(e,!B(e)),st=e=>at(e,B(e)),ct=e=>{let t=!B(e);return J(e,t,n=>W(e.state,n,t))},lt=e=>{let t=B(e);return J(e,t,n=>W(e.state,n,t))};function ut(e,t){return J(e,t,n=>e.moveVertically(n,t))}var dt=e=>ut(e,!1),ft=e=>ut(e,!0);function pt(e,t){return J(e,t,n=>e.moveVertically(n,t,Ge(e).height))}var mt=e=>pt(e,!1),ht=e=>pt(e,!0),gt=e=>J(e,!0,t=>q(e,t,!0)),_t=e=>J(e,!1,t=>q(e,t,!1)),vt=e=>{let t=!B(e);return J(e,t,n=>q(e,n,t))},yt=e=>{let t=B(e);return J(e,t,n=>q(e,n,t))},bt=e=>J(e,!1,t=>n.cursor(e.lineBlockAt(t.head).from)),xt=e=>J(e,!0,t=>n.cursor(e.lineBlockAt(t.head).to)),St=({state:e,dispatch:t})=>(t(I(e,{anchor:0})),!0),Ct=({state:e,dispatch:t})=>(t(I(e,{anchor:e.doc.length})),!0),wt=({state:e,dispatch:t})=>(t(I(e,{anchor:e.selection.main.anchor,head:0})),!0),Tt=({state:e,dispatch:t})=>(t(I(e,{anchor:e.selection.main.anchor,head:e.doc.length})),!0),Et=({state:e,dispatch:t})=>(t(e.update({selection:{anchor:0,head:e.doc.length},userEvent:`select`})),!0),Dt=({state:e,dispatch:t})=>{let r=Q(e).map(({from:t,to:r})=>n.undirectionalRange(t,Math.min(r+1,e.doc.length)));return t(e.update({selection:n.create(r),userEvent:`select`})),!0},Ot=({state:e,dispatch:t})=>{let r=F(e.selection,t=>{let r=i(e),a=r.resolveStack(t.from,1);if(t.empty){let e=r.resolveStack(t.from,-1);e.node.from>=a.node.from&&e.node.to<=a.node.to&&(a=e)}for(let e=a;e;e=e.next){let{node:r}=e;if((r.from<t.from&&r.to>=t.to||r.to>t.to&&r.from<=t.from)&&e.next)return n.undirectionalRange(r.from,r.to)}return t});return!r.eq(e.selection)&&(t(I(e,r)),!0)};function kt(e,t){let{state:r}=e,i=r.selection,a=r.selection.ranges.slice();for(let n of r.selection.ranges){let i=r.doc.lineAt(n.head);if(t?i.to<e.state.doc.length:i.from>0)for(let r=n;;){let n=e.moveVertically(r,t);if(n.head<i.from||n.head>i.to){a.some(e=>e.head==n.head)||a.push(n);break}if(n.head==r.head)break;r=n}}return a.length!=i.ranges.length&&(e.dispatch(I(r,n.create(a,a.length-1))),!0)}var At=e=>kt(e,!1),jt=e=>kt(e,!0),Mt=({state:e,dispatch:t})=>{let r=e.selection,i=null;return r.ranges.length>1?i=n.create([r.main]):r.main.empty||(i=n.create([n.cursor(r.main.head)])),i?(t(I(e,i)),!0):!1};function Y(e,t){if(e.state.readOnly)return!1;let r=`delete.selection`,{state:i}=e,a=i.changeByRange(i=>{let{from:a,to:o}=i;if(a==o){let n=t(i);n<a?(r=`delete.backward`,n=X(e,n,!1)):n>a&&(r=`delete.forward`,n=X(e,n,!0)),a=Math.min(a,n),o=Math.max(o,n)}else a=X(e,a,!1),o=X(e,o,!0);return a==o?{range:i}:{changes:{from:a,to:o},range:n.cursor(a,a<i.head?-1:1)}});return!a.changes.empty&&(e.dispatch(i.update(a,{scrollIntoView:!0,userEvent:r,effects:r==`delete.selection`?s.announce.of(i.phrase(`Selection deleted`)):void 0})),!0)}function X(e,t,n){if(e instanceof s)for(let r of e.state.facet(s.atomicRanges).map(t=>t(e)))r.between(t,t,(e,r)=>{e<t&&r>t&&(t=n?r:e)});return t}var Nt=(e,t,n)=>Y(e,r=>{let i=r.from,{state:a}=e,o=a.doc.lineAt(i),s,c;if(n&&!t&&i>o.from&&i<o.from+200&&!/[^ \t]/.test(s=o.text.slice(0,i-o.from))){if(s[s.length-1]==` `)return i-1;let e=v(s,a.tabSize)%y(a)||y(a);for(let t=0;t<e&&s[s.length-1-t]==` `;t++)i--;c=i}else c=g(o.text,i-o.from,t,t)+o.from,c==i&&o.number!=(t?a.doc.lines:1)?c+=t?1:-1:!t&&/[\ufe00-\ufe0f]/.test(o.text.slice(c-o.from,i-o.from))&&(c=g(o.text,c-o.from,!1,!1)+o.from);return c}),Z=e=>Nt(e,!1,!0),Pt=e=>Nt(e,!0,!1),Ft=(e,t)=>Y(e,n=>{let r=n.head,{state:i}=e,a=i.doc.lineAt(r),o=i.charCategorizer(r);for(let e=null;;){if(r==(t?a.to:a.from)){r==n.head&&a.number!=(t?i.doc.lines:1)&&(r+=t?1:-1);break}let s=g(a.text,r-a.from,t)+a.from,c=a.text.slice(Math.min(r,s)-a.from,Math.max(r,s)-a.from),l=o(c);if(e!=null&&l!=e)break;(c!=` `||r!=n.head)&&(e=l),r=s}return r}),It=e=>Ft(e,!1),Lt=e=>Ft(e,!0),Rt=e=>Y(e,t=>{let n=e.lineBlockAt(t.head).to;return t.head<n?n:Math.min(e.state.doc.length,t.head+1)}),zt=e=>Y(e,t=>{let n=e.moveToLineBoundary(t,!1).head;return t.head>n?n:Math.max(0,t.head-1)}),Bt=e=>Y(e,t=>{let n=e.moveToLineBoundary(t,!0).head;return t.head<n?n:Math.min(e.state.doc.length,t.head+1)}),Vt=({state:e,dispatch:t})=>{if(e.readOnly)return!1;let r=e.changeByRange(e=>({changes:{from:e.from,to:e.to,insert:ue.of([``,``])},range:n.cursor(e.from)}));return t(e.update(r,{scrollIntoView:!0,userEvent:`input`})),!0},Ht=({state:e,dispatch:t})=>{if(e.readOnly)return!1;let r=e.changeByRange(t=>{if(!t.empty||t.from==0||t.from==e.doc.length)return{range:t};let r=t.from,i=e.doc.lineAt(r),a=r==i.from?r-1:g(i.text,r-i.from,!1)+i.from,o=r==i.to?r+1:g(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:n.cursor(o)}});return!r.changes.empty&&(t(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 Ut(e,t,r){if(e.readOnly)return!1;let i=[],a=[];for(let t of Q(e)){if(r?t.to==e.doc.length:t.from==0)continue;let o=e.doc.lineAt(r?t.to+1:t.from-1),s=o.length+1;if(r){i.push({from:t.to,to:o.to},{from:t.from,insert:o.text+e.lineBreak});for(let r of t.ranges)a.push(n.range(Math.min(e.doc.length,r.anchor+s),Math.min(e.doc.length,r.head+s)))}else{i.push({from:o.from,to:t.from},{from:t.to,insert:e.lineBreak+o.text});for(let e of t.ranges)a.push(n.range(e.anchor-s,e.head-s))}}return i.length?(t(e.update({changes:i,scrollIntoView:!0,selection:n.create(a,e.selection.mainIndex),userEvent:`move.line`})),!0):!1}var Wt=({state:e,dispatch:t})=>Ut(e,t,!1),Gt=({state:e,dispatch:t})=>Ut(e,t,!0);function Kt(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 qt=({state:e,dispatch:t})=>Kt(e,t,!1),Jt=({state:e,dispatch:t})=>Kt(e,t,!0),Yt=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 Xt(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(u.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 Zt=$t(!1),Qt=$t(!0);function $t(e){return({state:t,dispatch:r})=>{if(t.readOnly)return!1;let i=t.changeByRange(r=>{let{from:i,to:a}=r,o=t.doc.lineAt(i),s=!e&&i==a&&Xt(t,i);e&&(i=a=(a<=o.to?o:t.doc.lineAt(a)).to);let c=new se(t,{simulateBreak:i,simulateDoubleBreak:!!s}),l=S(c,i);for(l??=v(/^\s*/.exec(t.doc.lineAt(i).text)[0],t.tabSize);a<o.to&&/\s/.test(o.text[a-o.from]);)a++;s?{from:i,to:a}=s:i>o.from&&i<o.from+100&&!/\S/.test(o.text.slice(0,i))&&(i=o.from);let u=[``,x(t,l)];return s&&u.push(x(t,c.lineIndent(o.from,-1))),{changes:{from:i,to:a,insert:ue.of(u)},range:n.cursor(i+1+u[1].length)}});return r(t.update(i,{scrollIntoView:!0,userEvent:`input`})),!0}}function $(e,t){let r=-1;return e.changeByRange(i=>{let a=[];for(let n=i.from;n<=i.to;){let o=e.doc.lineAt(n);o.number>r&&(i.empty||i.to>o.from)&&(t(o,a,i),r=o.number),n=o.to+1}let o=e.changes(a);return{changes:a,range:n.range(o.mapPos(i.anchor,1),o.mapPos(i.head,1))}})}var en=({state:e,dispatch:t})=>{if(e.readOnly)return!1;let n=Object.create(null),r=new se(e,{overrideIndentation:e=>n[e]??-1}),i=$(e,(t,i,a)=>{let o=S(r,t.from);if(o==null)return;/\S/.test(t.text)||(o=0);let s=/^\s*/.exec(t.text)[0],c=x(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},tn=({state:e,dispatch:t})=>!e.readOnly&&(t(e.update($(e,(t,n)=>{n.push({from:t.from,insert:e.facet(f)})}),{userEvent:`input.indent`})),!0),nn=({state:e,dispatch:t})=>!e.readOnly&&(t(e.update($(e,(t,n)=>{let r=/^\s*/.exec(t.text)[0];if(!r)return;let i=v(r,e.tabSize),a=0,o=x(e,Math.max(0,i-y(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),rn=e=>(e.setTabFocusMode(),!0),an=[{key:`Ctrl-b`,run:V,shift:rt,preventDefault:!0},{key:`Ctrl-f`,run:H,shift:it},{key:`Ctrl-p`,run:We,shift:dt},{key:`Ctrl-n`,run:G,shift:ft},{key:`Ctrl-a`,run:Qe,shift:bt},{key:`Ctrl-e`,run:$e,shift:xt},{key:`Ctrl-d`,run:Pt},{key:`Ctrl-h`,run:Z},{key:`Ctrl-k`,run:Rt},{key:`Ctrl-Alt-h`,run:It},{key:`Ctrl-o`,run:Vt},{key:`Ctrl-t`,run:Ht},{key:`Ctrl-v`,run:K}],on=[{key:`ArrowLeft`,run:V,shift:rt,preventDefault:!0},{key:`Mod-ArrowLeft`,mac:`Alt-ArrowLeft`,run:Re,shift:ot,preventDefault:!0},{mac:`Cmd-ArrowLeft`,run:Xe,shift:vt,preventDefault:!0},{key:`ArrowRight`,run:H,shift:it,preventDefault:!0},{key:`Mod-ArrowRight`,mac:`Alt-ArrowRight`,run:ze,shift:st,preventDefault:!0},{mac:`Cmd-ArrowRight`,run:Ze,shift:yt,preventDefault:!0},{key:`ArrowUp`,run:We,shift:dt,preventDefault:!0},{mac:`Cmd-ArrowUp`,run:St,shift:wt},{mac:`Ctrl-ArrowUp`,run:qe,shift:mt},{key:`ArrowDown`,run:G,shift:ft,preventDefault:!0},{mac:`Cmd-ArrowDown`,run:Ct,shift:Tt},{mac:`Ctrl-ArrowDown`,run:K,shift:ht},{key:`PageUp`,run:qe,shift:mt},{key:`PageDown`,run:K,shift:ht},{key:`Home`,run:Ye,shift:_t,preventDefault:!0},{key:`Mod-Home`,run:St,shift:wt},{key:`End`,run:Je,shift:gt,preventDefault:!0},{key:`Mod-End`,run:Ct,shift:Tt},{key:`Enter`,run:Zt,shift:Zt},{key:`Mod-a`,run:Et},{key:`Backspace`,run:Z,shift:Z,preventDefault:!0},{key:`Delete`,run:Pt,preventDefault:!0},{key:`Mod-Backspace`,mac:`Alt-Backspace`,run:It,preventDefault:!0},{key:`Mod-Delete`,mac:`Alt-Delete`,run:Lt,preventDefault:!0},{mac:`Mod-Backspace`,run:zt,preventDefault:!0},{mac:`Mod-Delete`,run:Bt,preventDefault:!0}].concat(an.map(e=>({mac:e.key,run:e.run,shift:e.shift}))),sn=[{key:`Alt-ArrowLeft`,mac:`Ctrl-ArrowLeft`,run:Ve,shift:ct},{key:`Alt-ArrowRight`,mac:`Ctrl-ArrowRight`,run:He,shift:lt},{key:`Alt-ArrowUp`,run:Wt},{key:`Shift-Alt-ArrowUp`,run:qt},{key:`Alt-ArrowDown`,run:Gt},{key:`Shift-Alt-ArrowDown`,run:Jt},{key:`Mod-Alt-ArrowUp`,run:At},{key:`Mod-Alt-ArrowDown`,run:jt},{key:`Escape`,run:Mt},{key:`Mod-Enter`,run:Qt},{key:`Alt-l`,mac:`Ctrl-l`,run:Dt},{key:`Mod-i`,run:Ot,preventDefault:!0},{key:`Mod-[`,run:nn},{key:`Mod-]`,run:tn},{key:`Mod-Alt-\\`,run:en},{key:`Shift-Mod-k`,run:Yt},{key:`Shift-Mod-\\`,run:tt},{key:`Mod-/`,run:me},{key:`Alt-A`,mac:`Ctrl-A`,run:ge},{key:`Ctrl-m`,mac:`Shift-Alt-m`,run:rn}].concat(on),cn=e({SliccEditorElement:()=>hn}),ln={json:async()=>{let{json:e}=await t(async()=>{let{json:e}=await import(`./dist-B6HZAA0r.js`);return{json:e}},__vite__mapDeps([0,1,2]));return e()},markdown:async()=>{let{markdown:e}=await t(async()=>{let{markdown:e}=await import(`./dist-mxmkfALf.js`);return{markdown:e}},__vite__mapDeps([3,1,4,2]));return e()},html:async()=>{let{html:e}=await t(async()=>{let{html:e}=await import(`./dist-COLaZOxM.js`);return{html:e}},__vite__mapDeps([4,1,2]));return e()}};function un(e){return e?de.define([{tag:r.keyword,color:`#d19afc`},{tag:r.string,color:`#87d68d`},{tag:r.number,color:`#f5a76c`},{tag:r.comment,color:`#8a8a8a`,fontStyle:`italic`},{tag:r.punctuation,color:`#7cc5e9`},{tag:r.function(r.variableName),color:`#7ea8f8`},{tag:r.propertyName,color:`#7ea8f8`},{tag:r.bool,color:`#f5a76c`},{tag:r.null,color:`#f5a76c`},{tag:r.operator,color:`#7cc5e9`},{tag:r.typeName,color:`#d19afc`},{tag:r.tagName,color:`#d19afc`},{tag:r.attributeName,color:`#87d68d`},{tag:r.attributeValue,color:`#87d68d`},{tag:r.heading,fontWeight:`bold`},{tag:r.emphasis,fontStyle:`italic`},{tag:r.strong,fontWeight:`bold`}]):de.define([{tag:r.keyword,color:`#8839ef`},{tag:r.string,color:`#40a02b`},{tag:r.number,color:`#d05d1a`},{tag:r.comment,color:`#8a8a8a`,fontStyle:`italic`},{tag:r.punctuation,color:`#1e66f5`},{tag:r.function(r.variableName),color:`#2b6cb0`},{tag:r.propertyName,color:`#2b6cb0`},{tag:r.bool,color:`#d05d1a`},{tag:r.null,color:`#d05d1a`},{tag:r.operator,color:`#1e66f5`},{tag:r.typeName,color:`#8839ef`},{tag:r.tagName,color:`#8839ef`},{tag:r.attributeName,color:`#40a02b`},{tag:r.attributeValue,color:`#40a02b`},{tag:r.heading,fontWeight:`bold`},{tag:r.emphasis,fontStyle:`italic`},{tag:r.strong,fontWeight:`bold`}])}function dn(e){return!(e.closest?.(`.theme-light`)||document.documentElement.classList.contains(`theme-light`))}function fn(){return s.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 pn=`
|
|
3
3
|
:host {
|
|
4
4
|
display: block;
|
|
5
5
|
background: var(--s2-bg-layer-2, var(--s2-gray-75, #252525));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function e(){return{version:`6.78.5`,releasedAt:`2026-08-22T05:03:23Z`,buildId:`6.78.5-mt3wxglr`}}let t=null;function n(e){t=e}function r(){return t}export{e as n,n as r,r as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./logger-DDBAeTLF.js";import{s as t}from"./telemetry-BVzuNdvW.js";import{n,t as r}from"./panel-rpc-B3MSVImO.js";import{t as i}from"./sprinkle-renderer-BvgsDBVv.js";import{t as a}from"./sprinkle-bridge-CSfksHce.js";import"./sprinkle-instances-B8n7h-oP.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=e(`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;onSprinkleReloaded;registeredSprinkles=new Set;inlineSprinkles;changeListeners=new Set;changeNotifyScheduled=!1;urlWriteScheduled=!1;constructor(e,t,i,o,s={}){this.fs=e;let c=async()=>{let e=`image/png`,t=n(),i=r();if(!t&&!i)throw Error(`Screen capture unavailable in this environment`);if(t&&!navigator.mediaDevices?.getDisplayMedia)throw Error(`Screen capture not supported in this browser`);let a,o,s;if(t){let t=await navigator.mediaDevices.getDisplayMedia({video:!0,audio:!1});try{let n=document.createElement(`video`);n.srcObject=t,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((t,n)=>{r.toBlob(e=>e?t(e):n(Error(`Failed to create image blob`)),e,1)})).arrayBuffer()}finally{for(let e of t.getTracks())e.stop()}}else{let t=await i.call(`screencapture`,{mimeType:e,quality:1},{timeoutMs:3e5});a=t.bytes,o=t.width,s=t.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:e}};this.bridge=new a(e,t,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=i,this.autoOpenBehavior=s.autoOpenBehavior??`activate`,this.onSendToSprinkle=s.onSendToSprinkle,this.onSprinkleReloaded=s.onSprinkleReloaded,this.inlineSprinkles=s.inlineSprinkles??new Set}setSendToSprinkleHook(e){this.onSendToSprinkle&&!e&&g.error(`SprinkleManager broadcast hook detached`),this.onSendToSprinkle=e}setReloadHook(e){this.onSprinkleReloaded=e}async reload(e){let t=this.openSprinkles.get(e);if(!t){g.info(`Cannot reload closed sprinkle`,{name:e});return}let n=this.availableSprinkles.get(e);if(n||=(await this.refresh(),this.availableSprinkles.get(e)),!n){g.warn(`Sprinkle not found during reload`,{name:e});return}let r=await this.fs.readFile(n.path,{encoding:`utf-8`});if(r==null){g.warn(`Failed to read sprinkle content during reload`,{name:e});return}let a=typeof r==`string`?r:new TextDecoder(`utf-8`).decode(r);t.renderer?.dispose(),this.bridge.removeSprinkle(e);let o=this.bridge.createAPI(e),s=new i(t.container,o);if(await s.render(a,e),!this.openSprinkles.has(e)){s.dispose();return}if(t.renderer=s,s.activateBridgeLifecycle(),this.openSprinkles.has(e)&&(g.info(`Sprinkle reloaded`,{name:e}),this.notifyChange(),this.onSprinkleReloaded))try{this.onSprinkleReloaded(e)}catch(t){g.error(`onSprinkleReloaded hook threw`,{name:e,error:t instanceof Error?t.message:String(t)})}}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}),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!==null)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 a=this.availableSprinkles.get(e);if(a||=(await this.refresh(),this.availableSprinkles.get(e)),!a)throw Error(`Sprinkle not found: ${e}`);let o=await this.fs.readFile(a.path,{encoding:`utf-8`});if(o==null)throw Error(`Failed to read sprinkle content: ${a.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-y: auto;`,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,a.title,c,n,{...r,icon:a.icon});let l=this.bridge.createAPI(e),u=new i(c,l);await u.render(s,e);let d=this.openSprinkles.get(e);if(!d){u.dispose();return}d.renderer=u,u.activateBridgeLifecycle(),this.openSprinkles.has(e)&&(this.persistOpenSprinkles(),t(e),g.info(`Sprinkle opened`,{name:e,title:a.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}let n=this.openSprinkles.get(e);if(!n){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)})}return}let r=this.availableSprinkles.get(e);this.callbacks.addSprinkle(e,r?.title??e,n.container,t,{icon:r?.icon})}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=new Map,r=e=>{let r=!1;for(let t of e){let e=this.findOpenSprinkleByPath(t.path);if(e){let t=n.get(e);t&&clearTimeout(t),n.set(e,setTimeout(()=>{n.delete(e),this.reload(e).catch(t=>{g.warn(`Sprinkle reload on watcher event failed`,{name:e,error:t instanceof Error?t.message:String(t)})})},300))}else r=!0}r&&!t&&(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))},i=T.map(t=>e.watch(t,e=>e.endsWith(`.shtml`),r));this.watcherUnsub=()=>{for(let e of i)e();t&&=(clearTimeout(t),null);for(let e of n.values())clearTimeout(e);n.clear()}}findOpenSprinkleByPath(e){for(let[t]of this.openSprinkles){let n=this.availableSprinkles.get(t);if(n&&n.path===e)return t}return null}dispose(){this.watcherUnsub?.()}sendToSprinkle(e,t,n){let r=!n?.runtime||n.runtime===`leader`,i=!n?.runtime||n.runtime!==`leader`,a={leader:!1,followers:[]};if(r){let n=this.openSprinkles.get(e);n?(this.bridge.pushUpdate(e,t),n.renderer.pushUpdate(t),a.leader=!0):g.warn(`Cannot send to closed sprinkle`,{name:e})}if(i&&this.onSendToSprinkle)try{let r=this.onSendToSprinkle(e,t,n);r&&(a.followers=r.followers,r.unknownRuntime&&(a.unknownRuntime=r.unknownRuntime))}catch(t){g.error(`onSendToSprinkle hook threw`,{name:e,error:t instanceof Error?t.message:String(t)})}return a}};export{D as SprinkleManager,S as pruneKnownSprinkleNames,C as readKnownSprinkleNames};
|
|
1
|
+
import{t as e}from"./logger-DDBAeTLF.js";import{s as t}from"./telemetry-BVzuNdvW.js";import{n,t as r}from"./panel-rpc-B3MSVImO.js";import{t as i}from"./sprinkle-renderer-D64E-W2o.js";import{t as a}from"./sprinkle-bridge-CSfksHce.js";import"./sprinkle-instances-B8n7h-oP.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=e(`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;onSprinkleReloaded;registeredSprinkles=new Set;inlineSprinkles;changeListeners=new Set;changeNotifyScheduled=!1;urlWriteScheduled=!1;constructor(e,t,i,o,s={}){this.fs=e;let c=async()=>{let e=`image/png`,t=n(),i=r();if(!t&&!i)throw Error(`Screen capture unavailable in this environment`);if(t&&!navigator.mediaDevices?.getDisplayMedia)throw Error(`Screen capture not supported in this browser`);let a,o,s;if(t){let t=await navigator.mediaDevices.getDisplayMedia({video:!0,audio:!1});try{let n=document.createElement(`video`);n.srcObject=t,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((t,n)=>{r.toBlob(e=>e?t(e):n(Error(`Failed to create image blob`)),e,1)})).arrayBuffer()}finally{for(let e of t.getTracks())e.stop()}}else{let t=await i.call(`screencapture`,{mimeType:e,quality:1},{timeoutMs:3e5});a=t.bytes,o=t.width,s=t.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:e}};this.bridge=new a(e,t,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=i,this.autoOpenBehavior=s.autoOpenBehavior??`activate`,this.onSendToSprinkle=s.onSendToSprinkle,this.onSprinkleReloaded=s.onSprinkleReloaded,this.inlineSprinkles=s.inlineSprinkles??new Set}setSendToSprinkleHook(e){this.onSendToSprinkle&&!e&&g.error(`SprinkleManager broadcast hook detached`),this.onSendToSprinkle=e}setReloadHook(e){this.onSprinkleReloaded=e}async reload(e){let t=this.openSprinkles.get(e);if(!t){g.info(`Cannot reload closed sprinkle`,{name:e});return}let n=this.availableSprinkles.get(e);if(n||=(await this.refresh(),this.availableSprinkles.get(e)),!n){g.warn(`Sprinkle not found during reload`,{name:e});return}let r=await this.fs.readFile(n.path,{encoding:`utf-8`});if(r==null){g.warn(`Failed to read sprinkle content during reload`,{name:e});return}let a=typeof r==`string`?r:new TextDecoder(`utf-8`).decode(r);t.renderer?.dispose(),this.bridge.removeSprinkle(e);let o=this.bridge.createAPI(e),s=new i(t.container,o);if(await s.render(a,e),!this.openSprinkles.has(e)){s.dispose();return}if(t.renderer=s,s.activateBridgeLifecycle(),this.openSprinkles.has(e)&&(g.info(`Sprinkle reloaded`,{name:e}),this.notifyChange(),this.onSprinkleReloaded))try{this.onSprinkleReloaded(e)}catch(t){g.error(`onSprinkleReloaded hook threw`,{name:e,error:t instanceof Error?t.message:String(t)})}}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}),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!==null)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 a=this.availableSprinkles.get(e);if(a||=(await this.refresh(),this.availableSprinkles.get(e)),!a)throw Error(`Sprinkle not found: ${e}`);let o=await this.fs.readFile(a.path,{encoding:`utf-8`});if(o==null)throw Error(`Failed to read sprinkle content: ${a.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-y: auto;`,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,a.title,c,n,{...r,icon:a.icon});let l=this.bridge.createAPI(e),u=new i(c,l);await u.render(s,e);let d=this.openSprinkles.get(e);if(!d){u.dispose();return}d.renderer=u,u.activateBridgeLifecycle(),this.openSprinkles.has(e)&&(this.persistOpenSprinkles(),t(e),g.info(`Sprinkle opened`,{name:e,title:a.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}let n=this.openSprinkles.get(e);if(!n){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)})}return}let r=this.availableSprinkles.get(e);this.callbacks.addSprinkle(e,r?.title??e,n.container,t,{icon:r?.icon})}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=new Map,r=e=>{let r=!1;for(let t of e){let e=this.findOpenSprinkleByPath(t.path);if(e){let t=n.get(e);t&&clearTimeout(t),n.set(e,setTimeout(()=>{n.delete(e),this.reload(e).catch(t=>{g.warn(`Sprinkle reload on watcher event failed`,{name:e,error:t instanceof Error?t.message:String(t)})})},300))}else r=!0}r&&!t&&(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))},i=T.map(t=>e.watch(t,e=>e.endsWith(`.shtml`),r));this.watcherUnsub=()=>{for(let e of i)e();t&&=(clearTimeout(t),null);for(let e of n.values())clearTimeout(e);n.clear()}}findOpenSprinkleByPath(e){for(let[t]of this.openSprinkles){let n=this.availableSprinkles.get(t);if(n&&n.path===e)return t}return null}dispose(){this.watcherUnsub?.()}sendToSprinkle(e,t,n){let r=!n?.runtime||n.runtime===`leader`,i=!n?.runtime||n.runtime!==`leader`,a={leader:!1,followers:[]};if(r){let n=this.openSprinkles.get(e);n?(this.bridge.pushUpdate(e,t),n.renderer.pushUpdate(t),a.leader=!0):g.warn(`Cannot send to closed sprinkle`,{name:e})}if(i&&this.onSendToSprinkle)try{let r=this.onSendToSprinkle(e,t,n);r&&(a.followers=r.followers,r.unknownRuntime&&(a.unknownRuntime=r.unknownRuntime))}catch(t){g.error(`onSendToSprinkle hook threw`,{name:e,error:t instanceof Error?t.message:String(t)})}return a}};export{D as SprinkleManager,S as pruneKnownSprinkleNames,C as readKnownSprinkleNames};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/slicc-editor-
|
|
2
|
-
import{t as e}from"./preload-helper-Czpn1I53.js";import{a as t,n,r}from"./theme-CXRqxpw6.js";function i(){try{return window.self!==window.top}catch{return!0}}var a=new WeakSet;function o(e,t){if(a.has(e)){t?.();return}let n=!1;s(e,t,()=>{n=!0}),setTimeout(()=>{n||e.isConnected&&s(e)},500)}function s(e,t,n){if(a.has(e)){t?.();return}a.add(e);let r=e.style.display;e.style.display=`none`;let i=!1,o=o=>{i||(i=!0,e.style.display=r,a.delete(e),o&&n?.(),t?.())};typeof requestAnimationFrame==`function`&&requestAnimationFrame(()=>{requestAnimationFrame(()=>o(!0))}),setTimeout(()=>o(!1),100)}function c(e){let t=e.trimStart().toLowerCase();return t.startsWith(`<!doctype`)||t.startsWith(`<html`)}function l(e,t,n,r={}){e.contentWindow?.postMessage({type:t,id:n,...r},`*`)}function u(e,t,n,r,i){r.then(r=>l(e,t,n,i(r)),r=>l(e,t,n,{error:r instanceof Error?r.message:String(r)}))}function d(e){return{"sprinkle-lick":(t,n)=>e.lick({action:n.action,data:n.data}),"sprinkle-set-state":(t,n)=>e.setState(n.data),"sprinkle-close":()=>e.close(),"sprinkle-minimize":()=>e.minimize(),"sprinkle-stop-cone":()=>e.stopCone(),"sprinkle-attach-image":(t,n)=>e.attachImage(n.base64,n.name,n.mimeType),"sprinkle-readfile":(t,n)=>u(t,`sprinkle-readfile-response`,n.id,e.readFile(n.path),e=>({content:e})),"sprinkle-writefile":(t,n)=>u(t,`sprinkle-writefile-response`,n.id,e.writeFile(n.path,n.content),()=>({})),"sprinkle-readdir":(t,n)=>u(t,`sprinkle-readdir-response`,n.id,e.readDir(n.path),e=>({entries:e})),"sprinkle-exists":(t,n)=>u(t,`sprinkle-exists-response`,n.id,e.exists(n.path),e=>({exists:e})),"sprinkle-stat":(t,n)=>u(t,`sprinkle-stat-response`,n.id,e.stat(n.path),e=>({stat:e})),"sprinkle-mkdir":(t,n)=>u(t,`sprinkle-mkdir-response`,n.id,e.mkdir(n.path),()=>({})),"sprinkle-rm":(t,n)=>u(t,`sprinkle-rm-response`,n.id,e.rm(n.path),()=>({})),"sprinkle-capture-screen":(t,n)=>u(t,`sprinkle-capture-screen-response`,n.id,e.captureScreen(),e=>({base64:e.base64,width:e.width,height:e.height,mimeType:e.mimeType})),"sprinkle-exec":(t,n)=>u(t,`sprinkle-exec-response`,n.id,e.exec(n.cmd),e=>({result:e})),"sprinkle-agent":(t,n)=>u(t,`sprinkle-agent-response`,n.id,e.agent(n.prompt,n.opts),e=>({result:e})),"sprinkle-jsh":(t,n)=>u(t,`sprinkle-jsh-response`,n.id,e._jsh(n.op,n.args),e=>({result:e})),"sprinkle-device-op":(t,n)=>u(t,`sprinkle-device-op-response`,n.id,e._device(n.channel,n.op,n.args??[]),e=>({result:e}))}}function f(e,t){return n=>{if(n.source!==e.contentWindow)return;let r=n.data;r?.type&&t[r.type]?.(e,r)}}function p(t){if(t.includes(`<slicc-editor`)&&!customElements.get(`slicc-editor`)&&e(()=>import(`./slicc-editor-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/slicc-editor-DsHp_in-.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/preload-helper-Czpn1I53.js","assets/dist-CPNmKU6m.js","assets/upgrade-own-properties-DI0JKxGt.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{t as e}from"./preload-helper-Czpn1I53.js";import{a as t,n,r}from"./theme-CXRqxpw6.js";function i(){try{return window.self!==window.top}catch{return!0}}var a=new WeakSet;function o(e,t){if(a.has(e)){t?.();return}let n=!1;s(e,t,()=>{n=!0}),setTimeout(()=>{n||e.isConnected&&s(e)},500)}function s(e,t,n){if(a.has(e)){t?.();return}a.add(e);let r=e.style.display;e.style.display=`none`;let i=!1,o=o=>{i||(i=!0,e.style.display=r,a.delete(e),o&&n?.(),t?.())};typeof requestAnimationFrame==`function`&&requestAnimationFrame(()=>{requestAnimationFrame(()=>o(!0))}),setTimeout(()=>o(!1),100)}function c(e){let t=e.trimStart().toLowerCase();return t.startsWith(`<!doctype`)||t.startsWith(`<html`)}function l(e,t,n,r={}){e.contentWindow?.postMessage({type:t,id:n,...r},`*`)}function u(e,t,n,r,i){r.then(r=>l(e,t,n,i(r)),r=>l(e,t,n,{error:r instanceof Error?r.message:String(r)}))}function d(e){return{"sprinkle-lick":(t,n)=>e.lick({action:n.action,data:n.data}),"sprinkle-set-state":(t,n)=>e.setState(n.data),"sprinkle-close":()=>e.close(),"sprinkle-minimize":()=>e.minimize(),"sprinkle-stop-cone":()=>e.stopCone(),"sprinkle-attach-image":(t,n)=>e.attachImage(n.base64,n.name,n.mimeType),"sprinkle-readfile":(t,n)=>u(t,`sprinkle-readfile-response`,n.id,e.readFile(n.path),e=>({content:e})),"sprinkle-writefile":(t,n)=>u(t,`sprinkle-writefile-response`,n.id,e.writeFile(n.path,n.content),()=>({})),"sprinkle-readdir":(t,n)=>u(t,`sprinkle-readdir-response`,n.id,e.readDir(n.path),e=>({entries:e})),"sprinkle-exists":(t,n)=>u(t,`sprinkle-exists-response`,n.id,e.exists(n.path),e=>({exists:e})),"sprinkle-stat":(t,n)=>u(t,`sprinkle-stat-response`,n.id,e.stat(n.path),e=>({stat:e})),"sprinkle-mkdir":(t,n)=>u(t,`sprinkle-mkdir-response`,n.id,e.mkdir(n.path),()=>({})),"sprinkle-rm":(t,n)=>u(t,`sprinkle-rm-response`,n.id,e.rm(n.path),()=>({})),"sprinkle-capture-screen":(t,n)=>u(t,`sprinkle-capture-screen-response`,n.id,e.captureScreen(),e=>({base64:e.base64,width:e.width,height:e.height,mimeType:e.mimeType})),"sprinkle-exec":(t,n)=>u(t,`sprinkle-exec-response`,n.id,e.exec(n.cmd),e=>({result:e})),"sprinkle-agent":(t,n)=>u(t,`sprinkle-agent-response`,n.id,e.agent(n.prompt,n.opts),e=>({result:e})),"sprinkle-jsh":(t,n)=>u(t,`sprinkle-jsh-response`,n.id,e._jsh(n.op,n.args),e=>({result:e})),"sprinkle-device-op":(t,n)=>u(t,`sprinkle-device-op-response`,n.id,e._device(n.channel,n.op,n.args??[]),e=>({result:e}))}}function f(e,t){return n=>{if(n.source!==e.contentWindow)return;let r=n.data;r?.type&&t[r.type]?.(e,r)}}function p(t){if(t.includes(`<slicc-editor`)&&!customElements.get(`slicc-editor`)&&e(()=>import(`./slicc-editor-DsHp_in-.js`).then(e=>e.t),__vite__mapDeps([0,1,2,3,4])),t.includes(`<slicc-diff`)&&!customElements.get(`slicc-diff`)){let e=document.createElement(`script`);e.src=`/slicc-diff.js`,document.head.appendChild(e)}}function m(e){for(let t of e.querySelectorAll(`.fill[data-value]`)){let e=parseFloat(t.dataset.value||`0`);e>=0&&e<=100&&(t.style.width=`${e}%`)}}function h(e,t){let n=`window.__slicc_sprinkles[${JSON.stringify(t)}]`;for(let t of e.querySelectorAll(`[onclick]`)){let e=t.getAttribute(`onclick`)||``;/\b(slicc|bridge)\b/.test(e)&&t.setAttribute(`onclick`,e.replace(/\b(slicc|bridge)\b/g,n))}return n}function g(e){let t=new Set;for(let n of e.querySelectorAll(`[onclick]`)){let e=n.getAttribute(`onclick`)||``;for(let n of e.matchAll(/\b(\w+)\s*\(/g)){let e=n[1];[`slicc`,`bridge`,`lick`,`close`,`exec`,`agent`].includes(e)||t.add(e)}}return t}function _(e,t){let n=[];for(let r of Array.from(e.querySelectorAll(`script`))){r.remove();let i=document.createElement(`script`);for(let e of r.attributes)i.setAttribute(e.name,e.value);if(!r.src){let n=[...g(e)].map(e=>`if (typeof ${e} === 'function') window.${e} = ${e};`).join(`
|
|
3
3
|
`);i.textContent=`(function() { var slicc = ${t}; var bridge = slicc;\n`+r.textContent+(n?`
|
|
4
4
|
`+n:``)+`
|
|
5
5
|
})();`}e.appendChild(i),n.push(i)}return n}var v=class{container;bridge;scripts=[];iframe=null;messageHandler=null;visibilityObserver=null;bridgeLifecycleReady=!1;pendingBridgeLifecycle=[];constructor(e,t){this.container=e,this.bridge=t}async render(e,t){if(this.dispose(),c(e))try{await this.renderFullDoc(e,t)}catch(e){throw this.dispose(),e}else this.renderInline(e,t)}activateBridgeLifecycle(){for(this.bridgeLifecycleReady=!0;this.bridgeLifecycleReady&&this.pendingBridgeLifecycle.length>0;)this.pendingBridgeLifecycle.shift()()}pushUpdate(e){this.iframe?.contentWindow&&this.iframe.contentWindow.postMessage({type:`sprinkle-update`,data:e},`*`)}pushDeviceEvent(e,t){this.iframe?.contentWindow&&this.iframe.contentWindow.postMessage({type:`sprinkle-device-event`,channel:e,payload:t},`*`)}collectThemeCSS(){return b()}generateBridgeScript(){return`(function() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./types-idfTVsM8.js";import{t}from"./global-db-DJXlpNui.js";const n=`/workspace/.plugins/plugins.json`;let r=null;async function i(e){if(e)return e;if(r&&r.dbName===`slicc-fs-global`)return r.instance;let{VirtualFS:n}=await import(`./fs-
|
|
1
|
+
import{t as e}from"./types-idfTVsM8.js";import{t}from"./global-db-DJXlpNui.js";const n=`/workspace/.plugins/plugins.json`;let r=null;async function i(e){if(e)return e;if(r&&r.dbName===`slicc-fs-global`)return r.instance;let{VirtualFS:n}=await import(`./fs-Y-2f9vf-.js`).then(e=>e.t),i=await n.create({dbName:t});return r={instance:i,dbName:t},i}function a(){return{version:1,plugins:{}}}function o(e){if(!e||typeof e!=`object`)return null;let t=e;return typeof t.root==`string`?t:null}function s(e){if(!e||typeof e!=`object`)return a();let t=e,n=typeof t.version==`number`?t.version:1,r={};if(t.plugins&&typeof t.plugins==`object`)for(let[e,n]of Object.entries(t.plugins)){let t=o(n);t&&(r[e]=t)}return{version:n,plugins:r}}async function c(t){try{let e=await(await i(t)).readFile(n,{encoding:`utf-8`});try{return s(JSON.parse(e))}catch{return a()}}catch(t){return t instanceof e&&t.code,a()}}async function l(e,t){let r=await i(t);await r.mkdir(`/workspace/.plugins`,{recursive:!0});let a=s({version:e.version||1,plugins:e.plugins??{}});await r.writeFile(n,JSON.stringify(a,null,2))}async function u(e,t){return(await c(t)).plugins[e]??null}async function d(e,t,n){let r=await c(n);r.plugins[e]=t,await l(r,n)}async function f(e,t){let n=await c(t);return e in n.plugins&&(delete n.plugins[e],await l(n,t),!0)}async function p(e){return(await c(e)).plugins}export{f as deleteInstalledPlugin,u as getInstalledPlugin,p as listInstalledPlugins,d as setInstalledPlugin};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./logger-LESFN7Hj.js";import{t as n}from"./types-idfTVsM8.js";import{t as r}from"./global-db-DJXlpNui.js";var i=e({MCP_STORE_PATH:()=>o,deleteServer:()=>v,getServer:()=>g,listServers:()=>y,readMcpAuthEntries:()=>x,readMcpAuthEntry:()=>b,readServersFile:()=>m,setServer:()=>_,writeServersFile:()=>h});const a=t(`mcp-store`),o=`/workspace/.mcp/servers.json`;let s=null,c=null;async function l(){return s||=await import(`./fs-
|
|
1
|
+
import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./logger-LESFN7Hj.js";import{t as n}from"./types-idfTVsM8.js";import{t as r}from"./global-db-DJXlpNui.js";var i=e({MCP_STORE_PATH:()=>o,deleteServer:()=>v,getServer:()=>g,listServers:()=>y,readMcpAuthEntries:()=>x,readMcpAuthEntry:()=>b,readServersFile:()=>m,setServer:()=>_,writeServersFile:()=>h});const a=t(`mcp-store`),o=`/workspace/.mcp/servers.json`;let s=null,c=null;async function l(){return s||=await import(`./fs-Y-2f9vf-.js`).then(e=>e.t),s}async function u(e){if(e)return e;if(c&&c.dbName===`slicc-fs-global`)return c.instance;let{VirtualFS:t}=await l(),n=await t.create({dbName:r});return c={instance:n,dbName:r},n}function d(){return{version:1,servers:{}}}function f(e){if(!e||typeof e!=`object`)return null;let t={...e};return typeof t.url==`string`?(delete t.sessionId,t):null}function p(e){if(!e||typeof e!=`object`)return d();let t=e,n=typeof t.version==`number`?t.version:1,r={};if(t.servers&&typeof t.servers==`object`)for(let[e,n]of Object.entries(t.servers)){let t=f(n);t&&(r[e]=t)}return{version:n,servers:r}}async function m(e){try{let t=await(await u(e)).readFile(o,{encoding:`utf-8`});try{return p(JSON.parse(t))}catch(e){return a.warn(`servers.json is not valid JSON; treating as empty`,{error:e instanceof Error?e.message:String(e)}),d()}}catch(e){return e instanceof n&&e.code===`ENOENT`||a.warn(`Failed to read servers.json`,{error:e instanceof Error?e.message:String(e)}),d()}}async function h(e,t){let n=await u(t);await n.mkdir(`/workspace/.mcp`,{recursive:!0});let r=p({version:e.version||1,servers:e.servers??{}});await n.writeFile(o,JSON.stringify(r,null,2))}async function g(e,t){return(await m(t)).servers[e]??null}async function _(e,t,n){let r=await m(n),i=f({...r.servers[e],...t});if(!i)throw Error(`MCP server entry requires a URL`);return r.servers[e]=i,await h(r,n),i}async function v(e,t){let n=await m(t);return e in n.servers&&(delete n.servers[e],await h(n,t),!0)}async function y(e){return(await m(e)).servers}async function b(e){let t=await g(e);return!t?.url||!t.auth?.clientId?null:{name:e,serverUrl:t.url,auth:t.auth}}async function x(){let e=await y(),t=[];for(let[n,r]of Object.entries(e))!r?.url||!r.auth?.clientId||t.push({name:n,serverUrl:r.url,auth:r.auth});return t}export{b as n,i as r,x as t};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/panel-rpc-B3MSVImO.js","assets/rolldown-runtime-Dd_uD5pT.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF.js";import{i as n,o as r,r as i}from"./proxied-fetch-B4g-4VbQ.js";import{n as a}from"./runtime-env-Dlaokqg1.js";import"./runtime-env-CgsZ7LTp.js";import{t as o}from"./quick-llm-
|
|
2
|
+
import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF.js";import{i as n,o as r,r as i}from"./proxied-fetch-B4g-4VbQ.js";import{n as a}from"./runtime-env-Dlaokqg1.js";import"./runtime-env-CgsZ7LTp.js";import{t as o}from"./quick-llm-Cf12U18g.js";import{i as s,t as c}from"./page-approval-service-Bbc3_KdK.js";var l=t(`sudo:timeout`);function u(e=`user-timeout`){return{decision:`deny`,reason:e}}function d(e,t={}){let n=t.timeoutMs??3e5;if(!Number.isFinite(n)||n<=0)return e;let r=t.setTimer??((e,t)=>setTimeout(e,t)),i=t.clearTimer??(e=>clearTimeout(e));return{requestApproval(t,a){return new Promise(o=>{let s=new AbortController,c=()=>s.abort();a?.signal?.addEventListener(`abort`,c,{once:!0});let d=!1,f=e=>{d=!0,a?.signal?.removeEventListener(`abort`,c),o(e)},p=r(()=>{d||(l.warn(`sudo approval timed out — failing closed`,{kind:t.kind,detail:t.detail,timeoutMs:n}),s.abort(),f(u(`user-timeout`)))},n),m=e=>{if(d){l.warn(`sudo decision arrived after timeout — discarded`,{kind:t.kind,detail:t.detail,decision:e.decision});return}i(p),f(e)};e.requestApproval(t,{signal:s.signal}).then(m,e=>{l.warn(`sudo broker threw — denying`,{error:e instanceof Error?e.message:String(e)}),m({decision:`deny`})})})}}}var f=t(`sudo-suggest`),p=[`You generalize a single shell command into a minimal glob pattern for an`,`allow-list rule. Output ONLY the pattern on one line — no prose, no quotes,`,`no backticks. Keep the leading command/sub-command verbatim and replace only`,`the volatile tail (args, paths, refs) with a single trailing "*".`,`Examples:`,` git push origin main -> git push*`,` rm -rf build/cache -> rm -rf*`,` npm install left-pad -> npm install*`].join(`
|
|
3
3
|
`),m=[`You generalize a single filesystem path into a minimal glob pattern for an`,`allow-list rule. Output ONLY the pattern on one line — no prose, no quotes,`,`no backticks. Keep the meaningful directory prefix and replace the volatile`,`leaf (and below) with "**". Examples:`,` /workspace/.git/config -> /workspace/.git/**`,` /shared/secrets/openai.key -> /shared/secrets/**`,` /workspace/src/app/main.ts -> /workspace/src/**`].join(`
|
|
4
4
|
`);async function h(e,t){if(e.suggestedPattern&&e.suggestedPattern.trim().length>0)return e.suggestedPattern.trim();let n=e.detail.trim(),r=e.kind===`command`?p:m,i=null;try{i=await o({prompt:n,system:r,maxTokens:40,temperature:0,signal:t})}catch(e){f.debug(`suggestPattern: quickLabel threw`,{error:e instanceof Error?e.message:String(e)}),i=null}return g(i)||n}function g(e){if(!e)return null;let t=(e.split(`
|
|
5
5
|
`,1)[0]?.trim()??``).replace(/^`+/,``).replace(/`+$/,``).replace(/^["']/,``).replace(/["']$/,``).trim();return t.length===0?null:t}var _=t(`sudo-ext`);function v(e={}){let t=e.suggest??h;return{async requestApproval(e,n){let r=n?.signal,i;try{i=await t(e,r)}catch{i=e.detail}return r?.aborted?(_.warn(`sudo approval aborted before prompting — denying`,{detail:e.detail}),{decision:`deny`}):y({...e,suggestedPattern:i})}}}function y(e){return new Promise(t=>{let n=globalThis.chrome?.runtime;if(!n||typeof n.sendMessage!=`function`){_.warn(`chrome.runtime.sendMessage unavailable — denying`),t({decision:`deny`});return}let r=r=>{let i=n.lastError;if(i){_.warn(`sudo relay lastError — denying`,{error:i.message}),t({decision:`deny`});return}if(!r||typeof r!=`object`){_.warn(`sudo relay empty response — denying`),t({decision:`deny`});return}let a=r;if(!a.ok||!a.decision){_.warn(`sudo relay error response — denying`,{error:a.error}),t({decision:`deny`});return}t(b(a.decision,e.suggestedPattern??e.detail))};try{n.sendMessage({source:`offscreen`,payload:{type:s,request:e}},r)}catch(e){_.warn(`sudo relay threw — denying`,{error:e instanceof Error?e.message:String(e)}),t({decision:`deny`})}})}function b(e,t){return e.decision===`allow`?{decision:`allow`}:e.decision===`always`?{decision:`always`,pattern:typeof e.pattern==`string`&&e.pattern.trim().length>0?e.pattern.trim():t}:{decision:`deny`}}var x=t(`sudo-http`);function S(e={}){let t=e.fetchImpl??globalThis.fetch.bind(globalThis),n=e.path??`/api/sudo-approve`,a=e.suggest??h;return{async requestApproval(e,o){let s=o?.signal,c;if(e.suggestedPattern)c=e.suggestedPattern;else try{c=await a(e,s)}catch{c=e.detail}if(s?.aborted)return x.warn(`sudo approval aborted before prompting — denying`,{detail:e.detail}),{decision:`deny`};try{let a=await t(r(n),{method:`POST`,headers:i({"Content-Type":`application/json`}),body:JSON.stringify({kind:e.kind,detail:e.detail,suggestedPattern:c}),signal:s});return a.ok?C(await a.json(),c):(x.warn(`sudo endpoint returned non-OK status — denying`,{status:a.status}),{decision:`deny`})}catch(e){return x.warn(`sudo endpoint request failed — denying`,{error:e instanceof Error?e.message:String(e)}),{decision:`deny`}}}}}function C(e,t){if(!e||typeof e!=`object`)return{decision:`deny`};let n=e.decision;if(n===`allow`)return{decision:`allow`};if(n===`always`){let n=e.pattern;return{decision:`always`,pattern:typeof n==`string`&&n.trim().length>0?n.trim():t}}return{decision:`deny`}}var w=t(`sudo-panel-rpc`),T=6e5;function E(t={}){let n=t.suggest??h,r=t.timeoutMs??T,i=t.getClient??(async()=>{let{getPanelRpcClient:t}=await e(async()=>{let{getPanelRpcClient:e}=await import(`./panel-rpc-B3MSVImO.js`).then(e=>e.i);return{getPanelRpcClient:e}},__vite__mapDeps([0,1]));return t()});return{async requestApproval(e,t){let a=t?.signal,o;try{o=await n(e,a)}catch{o=e.detail}let s={...e,suggestedPattern:o},c;try{c=await i()}catch(e){return w.warn(`panel-RPC client lookup threw — denying`,{error:e instanceof Error?e.message:String(e)}),{decision:`deny`}}if(!c)return w.warn(`panel-RPC client unavailable in worker realm — denying`),{decision:`deny`};if(a?.aborted)return w.warn(`sudo approval aborted before prompting — denying`,{detail:e.detail}),{decision:`deny`};try{let{decision:e}=await c.call(`sudo-request`,{request:s},{timeoutMs:r});return D(e,o)}catch(e){return w.warn(`sudo panel-RPC relay failed — denying`,{error:e instanceof Error?e.message:String(e)}),{decision:`deny`}}}}}function D(e,t){if(!e||typeof e!=`object`)return{decision:`deny`};let n=e.decision;if(n===`allow`)return{decision:`allow`};if(n===`always`){let n=e.pattern;return{decision:`always`,pattern:typeof n==`string`&&n.trim().length>0?n.trim():t}}return{decision:`deny`}}var O=t(`sudo:tray-first`),k=6e5;function A(t,n={}){let r=n.suggest??h,i=n.timeoutMs??k,a=n.getClient??(async()=>{let{getPanelRpcClient:t}=await e(async()=>{let{getPanelRpcClient:e}=await import(`./panel-rpc-B3MSVImO.js`).then(e=>e.i);return{getPanelRpcClient:e}},__vite__mapDeps([0,1]));return t()});return{async requestApproval(e,n){if(n?.signal?.aborted)return{decision:`deny`};let o=e.suggestedPattern;if(!o)try{o=await r(e,n?.signal)}catch{o=e.detail}let s={...e,suggestedPattern:o},c=null;try{c=await a()}catch(e){O.debug?.(`panel-RPC client lookup threw — using native broker`,{error:e instanceof Error?e.message:String(e)})}if(c)try{let e=await c.call(`sudo-request`,{request:s,mode:`tray-first`},{timeoutMs:i});if(e?.handled!==!1)return j(e?.decision,o)}catch(e){O.warn(`tray-first sudo probe failed — using native broker`,{error:e instanceof Error?e.message:String(e)})}return t.requestApproval(s,n)}}}function j(e,t){if(!e||typeof e!=`object`)return{decision:`deny`};let n=e,r=n.attestation===`biometric`||n.attestation===`passcode`||n.attestation===`none`?n.attestation:void 0;return n.decision===`allow`?{decision:`allow`,...r?{attestation:r}:{}}:n.decision===`always`?{decision:`always`,pattern:typeof n.pattern==`string`&&n.pattern.trim().length>0?n.pattern.trim():t,...r?{attestation:r}:{}}:{decision:`deny`}}var M=t(`sudo`),N=`__slicc_sudo`;function P(){return a()}function F(){return typeof chrome>`u`&&n()!==null}function I(){return d(L())}function L(){return P()?v():F()?E():A(S())}function R(e=I()){let t={requestApproval:t=>e.requestApproval(t)};return globalThis[N]=t,M.info(`sudo broker test hook published on globalThis.__slicc_sudo`),t}export{c as installPanelSudoResponder,R as installSudoTestHook};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{D as e,g as t}from"./db-DATxPCUz.js";import{n}from"./slicc-version-
|
|
1
|
+
import{D as e,g as t}from"./db-DATxPCUz.js";import{n}from"./slicc-version-BevD4ZHh.js";const r=`slicc:last-seen-version`;function i(){let{version:e,releasedAt:t}=n();return{version:e,releasedAt:t}}async function a(){let e=await t(r);return e&&e.length>0?e:null}async function o(t){await e(r,t)}async function s(){let e=i(),t=await a();return t===null?(await o(e.version),{bundled:e,lastSeen:null,isUpgrade:!1}):t===e.version?{bundled:e,lastSeen:t,isUpgrade:!1}:{bundled:e,lastSeen:t,isUpgrade:!0}}async function c(e){await o(e)}export{s as detectUpgrade,a as getLastSeenVersion,c as recordVersionSeen};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/setup-sudo-
|
|
2
|
-
import{t as e}from"./preload-helper-Czpn1I53.js";import{a as t,n,o as r,t as i}from"./wc-live-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/setup-sudo-CyS1nNtn.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/preload-helper-Czpn1I53.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{t as e}from"./preload-helper-Czpn1I53.js";import{a as t,n,o as r,t as i}from"./wc-live-CZl29X3Y.js";import{wireWcDetached as a}from"./wc-detached-B3WCbbZT.js";async function o(o,s,c=!1){let l=n(o,`extension · wc`),u=new r(t(l.wiring));i(l,u,s),a({client:u,isDetachedSelf:c});let{setupSudoExtension:d}=await e(async()=>{let{setupSudoExtension:e}=await import(`./setup-sudo-CyS1nNtn.js`).then(e=>e.n);return{setupSudoExtension:e}},__vite__mapDeps([0,1,2]));await d({log:s}),u.requestState(),s.info(`WC extension shell connected to offscreen engine`)}export{o as mountWcUiExtension};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/layout-schema-m9_VAwOw.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/panelize-shell-BiuM5F3-.js","assets/logger-DDBAeTLF.js","assets/virtual-device-paths-9EXC9iPp.js","assets/icons-ZLR7gmJ4.js","assets/src-DDn9o2XK.js","assets/preload-helper-Czpn1I53.js","assets/speech-C5U8h4In.js","assets/soundscape-cues-5_sT5Un6.js","assets/panel-registry-CJdOibpf.js","assets/layout-apply-registry-Cw730jao.js","assets/trusted-layer-ghPA1ENf.js","assets/wc-live-
|
|
2
|
-
import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF.js";import{r as n}from"./src-CAWTvdAa.js";import{n as r}from"./tray-sync-protocol-BZ5yhJH9.js";import{i,n as a}from"./wc-live-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/layout-schema-m9_VAwOw.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/panelize-shell-BiuM5F3-.js","assets/logger-DDBAeTLF.js","assets/virtual-device-paths-9EXC9iPp.js","assets/icons-ZLR7gmJ4.js","assets/src-DDn9o2XK.js","assets/preload-helper-Czpn1I53.js","assets/speech-C5U8h4In.js","assets/soundscape-cues-5_sT5Un6.js","assets/panel-registry-CJdOibpf.js","assets/layout-apply-registry-Cw730jao.js","assets/trusted-layer-ghPA1ENf.js","assets/wc-live-CZl29X3Y.js","assets/account-store-a-RbK7Ji.js","assets/bedrock-camp-qpZqnqLa.js","assets/diagnostics-DN_idNHx.js","assets/transform-messages-N_eMsP2M.js","assets/provider-env-CTOcDKrQ.js","assets/__vite-browser-external-5eBdwsFd.js","assets/openrouter.models-gbjkpjE_.js","assets/libesm-BI4UHVqp.js","assets/src-CAWTvdAa.js","assets/proxied-fetch-B4g-4VbQ.js","assets/base64-DpPqYZJF.js","assets/runtime-env-Dlaokqg1.js","assets/fetch-body-D2PwksUW.js","assets/float-topology-BgioAcOd.js","assets/runtime-env-E-i2SW1s.js","assets/secret-topology-xLmXoozo.js","assets/secrets-bridge-client-cWDAnFqs.js","assets/port-bridge-client-BbVs1yhx.js","assets/image-markers-BXtVm4og.js","assets/tool-ui-DfXu6quJ.js","assets/providers-CxrVhp4A.js","assets/panel-rpc-B3MSVImO.js","assets/mime-types-ugOWOUZ9.js","assets/telemetry-BVzuNdvW.js","assets/runtime-env-CgsZ7LTp.js","assets/feature-flags-ByMXaIc4.js","assets/tray-runtime-config-CRGwg9SK.js","assets/messages-BD4p8GuF.js","assets/setup-standalone-prelude-DwVhWiwy.js","assets/bridge-launch-params-zrpWWxT3.js","assets/setup-sudo-CyS1nNtn.js","assets/tray-follower-status-BAjnN7Ar.js","assets/src-BWaKqLvQ.js","assets/html-B_Hg2WOy.js","assets/chat-session-store-pWb1-jNp.js","assets/tray-leader-DcRtwWl-.js","assets/db-DIbBClfy.js","assets/shared-CddfUR6k.js","assets/dictation-priming-CNllGgNq.js","assets/export-provider-BEHTjSYw.js","assets/dip-B58NQGEQ.js","assets/permissions-surface-registry-CilCRwhh.js","assets/hid-device-registry-B2R-0rNt.js","assets/serial-port-registry-B3LG5UIy.js","assets/usb-operations-Cgk-otz-.js","assets/usb-device-registry-CRsCisej.js","assets/sprinkle-renderer-D64E-W2o.js","assets/theme-CXRqxpw6.js","assets/theme-engine-By4GU_Wc.js","assets/sprinkle-bridge-CSfksHce.js","assets/session-freezer-BWZ8Pda2.js","assets/attachments-CByeG2Ru.js","assets/types-idfTVsM8.js","assets/agent-message-to-chat-_cvF5A5g.js","assets/wc-shell-Da2c3euj.js","assets/timestamp-preference-sKwBl5I8.js","assets/wc-scoop-color-CByZNEJo.js","assets/wc-shell-WkeczD9x.css","assets/follower-presentation-DqBw0YiV.js","assets/leader-session-events-C25D3hk0.js","assets/host-command-BsHBnvjR.js","assets/browser-DdY1FBRp.js","assets/legacy-styles-DcRu2WCJ.js","assets/follower-navigate-watcher-CNC7ybEv.js","assets/navigation-watcher-CcKsLKw9.js","assets/handoff-link-BM4ctkE8.js","assets/discovery-preference-fqUhjzeE.js","assets/wc-transcript-export-DKIleW7-.js","assets/export-spool-Eul4J1RP.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF.js";import{r as n}from"./src-CAWTvdAa.js";import{n as r}from"./tray-sync-protocol-BZ5yhJH9.js";import{i,n as a}from"./wc-live-CZl29X3Y.js";import{r as o,t as s}from"./feature-flags-ByMXaIc4.js";import{i as c,m as l,p as u,r as d,u as ee}from"./tray-runtime-config-CRGwg9SK.js";import{n as te}from"./setup-standalone-prelude-DwVhWiwy.js";import{a as ne,f,i as re,l as ie,r as p,t as m}from"./wc-tray-scoops-By8pWxvk.js";import{a as ae,t as oe}from"./tray-follower-status-BAjnN7Ar.js";import{n as se}from"./theme-engine-By4GU_Wc.js";import{i as ce,r as le}from"./dip-B58NQGEQ.js";import{a as ue,i as de}from"./wc-shell-Da2c3euj.js";import{WcSprinkleZone as fe}from"./wc-sprinkles-DJDp5iTv.js";import{wireWcAttach as pe}from"./wc-attach-BsqldTbU.js";import{r as h}from"./leader-session-events-C25D3hk0.js";import{installLeaderPermissionsSurface as me}from"./wc-permissions-gFKCQht9.js";var g=t(`follower-switch-out`);function he(e,t){t.stopFollower();try{t.storage.removeItem(d),e.workerBaseUrl===null?t.storage.removeItem(c):t.storage.setItem(c,e.workerBaseUrl)}catch(e){g.error(`follower switch-out: storage write failed — state may revert on reload`,{error:e instanceof Error?e.message:String(e)})}try{let e=t.getHref(),n=l(e);n!==e&&t.replaceHref(n)}catch(e){g.error(`follower switch-out: URL normalize failed — may re-enter follower on reload`,{error:e instanceof Error?e.message:String(e)})}t.reload()}var _=6;function v(e){let{refs:t,getSync:n,getTargets:r,hasCdpBrowser:i,log:a}=e;if(t.overlaySurfaces.has(`browser`))return{overlay:document.createElement(`slicc-tab-overlay`),refresh:()=>{}};let o=document.createElement(`slicc-tab-overlay`);o.setAttribute(`heading`,`Browser · tabs in this tray`),document.body.append(o);let s=()=>{o.tabs=r().map(e=>({id:e.targetId,title:e.title||e.url||e.targetId,url:e.url}))};return t.overlaySurfaces.add(`browser`),t.dock.addEventListener(`slicc-dock-select`,e=>{e.detail?.id===`browser`&&(s(),o.show(),t.dock.collapse?.())}),o.addEventListener(`tab-activate`,t=>{let r=t.detail.id,s=n(),c=s?.getLeaderProtocolVersion()??0;if(!(s&&i()&&c>=_)){let t=o.tabs.find(e=>e.id===r)?.url;if(!t){a.warn(`WC follower browser: no URL for tab`,{id:r});return}e.window.open(t,`_blank`,`noopener`)||a.warn(`WC follower browser: window.open was blocked`,{id:r}),o.hide();return}s.requestTabTeleport(r).then(e=>{a.info(`WC follower browser: leader teleported a tab here`,{source:r,targetId:e}),o.hide()}).catch(e=>{a.error(`WC follower browser: tab teleport failed`,e)})}),{overlay:o,refresh:s}}var y=new Set([`oauth-attempt`,`connect-attempt`,`device-code-decision`]);function ge(e){return y.has(e)}var b=`slicc-signin-redirect-style`,x=`wc-signin-redirect`,S=`
|
|
3
3
|
.${x}{display:flex;gap:10px;align-items:flex-start;margin:10px 12px;padding:12px 14px;
|
|
4
4
|
border:1px solid var(--line);border-radius:12px;background:var(--ghost);color:var(--ink);
|
|
5
5
|
font-family:var(--ui);font-size:13px;line-height:1.4;}
|
|
@@ -14,4 +14,4 @@ import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF
|
|
|
14
14
|
.${x}__x:hover{color:var(--ink);}
|
|
15
15
|
`;function C(e){if(e.getElementById(b))return;let t=e.createElement(`style`);t.id=b,t.textContent=S,e.head.appendChild(t)}function w(e,t){C(e);let n=e.createElement(`div`);n.className=x,n.setAttribute(`role`,`status`);let r=e.createElement(`div`);r.className=`${x}__body`;let i=e.createElement(`div`);i.className=`${x}__title`,i.textContent=t.title;let a=e.createElement(`div`);a.className=`${x}__sub`,a.textContent=t.sub,r.append(i,a);let o=e.createElement(`button`);if(o.type=`button`,o.className=`${x}__open`,o.textContent=t.buttonLabel,o.addEventListener(`click`,()=>t.onOpenTab()),n.append(r,o),t.dismissible){let t=e.createElement(`button`);t.type=`button`,t.className=`${x}__x`,t.setAttribute(`aria-label`,`Dismiss`),t.textContent=`×`,t.addEventListener(`click`,()=>n.remove()),n.append(t)}return n}function T(e,t){let n=e.ownerDocument;t.onOpenTab();let r=e.querySelector(`.${x}`);if(r)return r.scrollIntoView?.({block:`nearest`}),r;let i=w(n,{title:`Sign in from the SLICC tab`,sub:`The side panel can't complete a provider login — we've switched you to the main SLICC tab. Finish signing in there (Settings › Providers), then come back.`,buttonLabel:`Open SLICC tab`,onOpenTab:t.onOpenTab,dismissible:!0});return e.append(i),i.scrollIntoView?.({block:`nearest`}),i}function E(e,t){return w(e,{title:`Set up SLICC in the main tab`,sub:`SLICC needs a model connected before it can help. Open the main SLICC tab to finish setup and sign in, then come back to the side panel.`,buttonLabel:`Open SLICC tab`,onOpenTab:t.onOpenTab,dismissible:!1})}var D=t(`wc-follower`),O=`/shared/sprinkles/welcome/`,k={sendMessage:()=>{},onEvent:()=>()=>{},stop:()=>{}};function A(e){return e===void 0||e===`active`?{kind:`active`}:e.trim()===``?null:{kind:`frozen`,sessionId:e}}function j(e,t){for(;e.firstChild;)e.removeChild(e.firstChild);let n=document.createElement(`div`);n.style.cssText=`padding:2rem;text-align:center;font-family:system-ui;`;let r=document.createElement(`h1`);r.style.color=`var(--s2-negative, #e34850)`,r.textContent=`Could not start follower`;let i=document.createElement(`p`);i.style.color=`var(--s2-content-tertiary, #717171)`,i.textContent=t,n.append(r,i),e.appendChild(n)}function M(e,t,n,r,i){let a=e=>{let t=document.createElement(`div`);return t.className=`wcui-placeholder`,t.textContent=e,t};i.files?(e.style.display=`none`,e.parentElement?.append(a(`Files live on the leader. A follower mirrors the leader's chat, sprinkles, and browser tabs - not its filesystem.`))):e.closest(`slicc-surface`)?.remove(),i.terminal?t.append(a(`The shell runs on the leader. A follower has no local terminal - drive the session through chat.`)):t.closest(`slicc-surface`)?.remove(),i.memory?n.append(a(`Memory lives on the leader. A follower has no local memory store.`)):n.closest(`slicc-surface`)?.remove(),i.monitor?(r.style.display=`none`,r.parentElement?.append(a(`Monitor reads the leader's kernel state. A follower has no local kernel.`))):r.closest(`slicc-surface`)?.remove()}var N={terminal:!0,files:!0,memory:!0,browser:!0,modelPicker:!0,history:!0,nav:!0,newSprinkle:!0,monitor:!0,showTimestamps:!0};function P(e){let t=[];for(let[n,r]of[[`terminal`,`term`],[`files`,`files`],[`memory`,`memory`],[`browser`,`browser`],[`monitor`,`monitor`],[`newSprinkle`,`new`]])e[n]||t.push(`slicc-dock-item[data-t="${r}"]`);if(e.modelPicker||t.push(`slicc-composer-meta`),e.history||t.push(`slicc-freezer`),e.nav||t.push(`slicc-nav`),!e.terminal&&!e.files&&!e.memory&&!e.browser&&!e.monitor&&t.push(`slicc-dock .div`,`slicc-dock .grow`),t.length||!e.history){let n=document.createElement(`style`),r=t.length?`${t.join(`,
|
|
16
16
|
`)}{display:none!important;}`:``;e.history||(r+=`
|
|
17
|
-
.wcui-appcol{padding-left:0!important;}`),n.textContent=r,document.head.append(n)}}function F(e,t){return e&&!t}async function I(t,n,r){let[{parseLayoutDocument:i},{panelizeShell:a}]=await Promise.all([e(()=>import(`./layout-schema-m9_VAwOw.js`).then(e=>e.s),__vite__mapDeps([0,1])),e(()=>import(`./panelize-shell-BiuM5F3-.js`),__vite__mapDeps([2,3,4,5,1,6,7,8,9,10,0,11,12]))]),o=i(n);if(`error`in o){r.warn(`follower: host-pushed layout failed validation — keeping the default`,{error:o.error});return}a(t.refs,o),r.info(`follower: applied host-pushed layout document`,{id:o.id,locked:o.locked===!0})}async function L(t,c,l){let d=l===`cherry`,g=d&&new URLSearchParams(window.location.search).get(`ui-only`)===`1`,_=window.location.ancestorOrigins?.[0],y=d&&(_?.startsWith(`chrome-extension://`)??!1),b;try{b=await te({runtimeMode:l,envBaseUrl:null,window,log:c})}catch(e){let n=e instanceof Error?e.message:String(e);D.error(`follower prelude failed`,{runtimeMode:l,error:n}),j(t,n);return}let x=d?b.cherryJoinUrl:ee(window.location.href,window.localStorage);if(!x){D.error(`follower mount with no join URL - falling back to live boot`);let{mountWcUiLive:n}=await e(async()=>{let{mountWcUiLive:e}=await import(`./wc-live-
|
|
17
|
+
.wcui-appcol{padding-left:0!important;}`),n.textContent=r,document.head.append(n)}}function F(e,t){return e&&!t}async function I(t,n,r){let[{parseLayoutDocument:i},{panelizeShell:a}]=await Promise.all([e(()=>import(`./layout-schema-m9_VAwOw.js`).then(e=>e.s),__vite__mapDeps([0,1])),e(()=>import(`./panelize-shell-BiuM5F3-.js`),__vite__mapDeps([2,3,4,5,1,6,7,8,9,10,0,11,12]))]),o=i(n);if(`error`in o){r.warn(`follower: host-pushed layout failed validation — keeping the default`,{error:o.error});return}a(t.refs,o),r.info(`follower: applied host-pushed layout document`,{id:o.id,locked:o.locked===!0})}async function L(t,c,l){let d=l===`cherry`,g=d&&new URLSearchParams(window.location.search).get(`ui-only`)===`1`,_=window.location.ancestorOrigins?.[0],y=d&&(_?.startsWith(`chrome-extension://`)??!1),b;try{b=await te({runtimeMode:l,envBaseUrl:null,window,log:c})}catch(e){let n=e instanceof Error?e.message:String(e);D.error(`follower prelude failed`,{runtimeMode:l,error:n}),j(t,n);return}let x=d?b.cherryJoinUrl:ee(window.location.href,window.localStorage);if(!x){D.error(`follower mount with no join URL - falling back to live boot`);let{mountWcUiLive:n}=await e(async()=>{let{mountWcUiLive:e}=await import(`./wc-live-CZl29X3Y.js`).then(e=>e.r);return{mountWcUiLive:e}},__vite__mapDeps([13,1,14,7,15,16,17,18,19,20,21,3,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,5,67,68,69,6,8,9,10,0,12,70,71,72,73,74,75]));return n(t,c,`standalone`)}let S=a(t,d?`cherry · follower`:`follower`);if(d&&b.cherryTransport?.theme&&se(b.cherryTransport.theme),d&&b.cherryTransport?.flags)try{let e=JSON.parse(b.cherryTransport.flags);e&&typeof e==`object`&&!Array.isArray(e)&&s(e)}catch(e){D.warn(`follower: host-pushed flags were not valid JSON — ignoring`,e)}let C=o(`panel-layouts`);if(S.refs.dockTree.tilesMovable=C,d&&b.cherryTransport?.layout)try{let e=JSON.parse(b.cherryTransport.layout);e&&typeof e==`object`&&`base`in e?C?await I(S,e,D):D.warn(`follower: ignoring host-pushed layout — the panel-layouts flag is off`):S.refs.dockTree.setTree(e)}catch(e){D.warn(`follower: host-pushed layout was not valid JSON — keeping the default`,e)}let w=d&&b.cherryTransport?.effortLevel;w?localStorage.setItem(`slicc_locked_effort_level`,w):localStorage.removeItem(`slicc_locked_effort_level`);let L=d&&b.cherryTransport?{...N,...b.cherryTransport.features}:N,_e=S.refs.composerMeta;M(S.refs.fileTree,S.refs.termSurface,S.refs.memoryHost,S.refs.monitor,L),P(L),e(async()=>{let{applyTimestampVisibility:e,initTimestampPreference:t}=await import(`./timestamp-preference-sKwBl5I8.js`).then(e=>e.a);return{applyTimestampVisibility:e,initTimestampPreference:t}},__vite__mapDeps([69,1])).then(({applyTimestampVisibility:e,initTimestampPreference:t})=>{L.showTimestamps?t():e(!1)}),e(async()=>{let{loadDipStyles:e,loadSprinkleStyles:t}=await import(`./legacy-styles-DcRu2WCJ.js`);return{loadDipStyles:e,loadSprinkleStyles:t}},__vite__mapDeps([76,7])).then(({loadDipStyles:e,loadSprinkleStyles:t})=>Promise.all([e(),t()])).catch(()=>void 0);let R=new Map,z=()=>b.cherryTransport?.emitSliccEventToHost(`slicc.open-leader-tab`),B=()=>{y&&T(S.refs.thread,{onOpenTab:z})},ve=e=>{let t=e.querySelectorAll(`img[src^="${O}"]`);return t.length!==0&&(t.forEach((t,n)=>{n===0?t.replaceWith(E(e.ownerDocument,{onOpenTab:z})):t.remove()}),!0)},ye=(e,t)=>{q.currentSync?.sendSprinkleLick(`inline`,{action:e,data:t}),ge(e)&&B()},V=new i({thread:S.refs.thread,agent:k,onQueuedChange:e=>{S.refs.queuedStack.setMessages(e)},onMessageRendered:(e,t)=>{let n=t[0];n&&(y&&ve(n),R.set(e.id,ce(n,ye)))},onMessageDisposed:e=>{let t=R.get(e);t&&(le(t),R.delete(e))},readOnlyToolUi:!0});if(S.setController(V),y)for(let e of[`slicc-error-open-settings`,`slicc-error-login`,`slicc-error-change-model`])S.refs.thread.addEventListener(e,()=>B());let H=`Connecting to leader…`,U=`Ask the leader, or describe a change…`,W=(e,t)=>{S.refs.inputCard.setAttribute(`placeholder`,t),e?S.refs.inputCard.removeAttribute(`disabled`):S.refs.inputCard.setAttribute(`disabled`,``)};W(!1,H),re(S.refs.floatbar),ae(e=>{try{window.localStorage.setItem(f,JSON.stringify(e))}catch{}});try{window.localStorage.setItem(f,JSON.stringify(oe()))}catch{}g||S.refs.composer.setAttribute(`ptt`,``);let be=pe({inputCard:S.refs.inputCard,freezer:S.refs.freezer,composer:S.refs.composer,noCamera:g,log:D});S.refs.switcher.setAttribute(`gaze-target`,`slicc-input-card`),S.refs.inputCard.addEventListener(`input`,()=>{S.refs.switcher.scrutinize(),S.refs.switcher.wake()}),S.refs.inputCard.addEventListener(`submit`,e=>{let t=ue(e)??``,n=be.take();(t.trim()||n.length)&&(V.sendUserMessage(t,n,{steer:de(e)}),S.refs.inputCard.clear?.())});let G=new fe(S.refs).callbacks(),K=null;S.refs.switcher.connection=`disconnected`;let q,J=null,xe=()=>(J||=me({runtimeMode:l})?.element??null,J),Y=[],Se=v({refs:S.refs,getSync:()=>q.currentSync,getTargets:()=>Y,hasCdpBrowser:()=>F(b.hasLocalCdpSurface,g),window,log:D}),X=h({composerMeta:_e,getSync:()=>q.currentSync,getSelectedScoopJid:()=>K,modelPickerEnabled:L.modelPicker,getLockedEffortLevel:()=>localStorage.getItem(`slicc_locked_effort_level`)});q=ne({joinUrl:x,runtime:d?r:`slicc-standalone`,advertisesCdpTargets:F(b.hasLocalCdpSurface,g),onTargetsUpdated:e=>{Y=e,Se.refresh()},...d||g?{}:{onOAuthPopupRequest:(e,t)=>p(e,t,{getPermissionsSurface:xe,window})},browserAPI:b.browser,onSnapshot:(e,t)=>{K=t,V.loadMessages(e),V.setProcessing(e.some(e=>e.isStreaming))},onUserMessage:(e,t,n,r)=>V.addUserMessage(e,r),onStatus:(e,t)=>{ie(t,K)&&V.setProcessing(e===`processing`)},setChatAgent:e=>{V.setAgent(e),e.onEvent(e=>{e.type===`tool_result`&&e.isError&&S.refs.switcher.glower()})},onSudoApprovalRequest:async t=>{let{openSudoApprovalDialog:n}=await e(async()=>{let{openSudoApprovalDialog:e}=await import(`./wc-sudo-approval-C3gSJjkF.js`);return{openSudoApprovalDialog:e}},[]),r=d?b.cherryTransport?.hostOrigin:void 0;return{decision:(await n({kind:t.kind,detail:t.detail,...t.suggestedPattern?{suggestedPattern:t.suggestedPattern}:{}},{allowAlways:!1,signal:t.signal,expiresAt:t.expiresAt,requester:t.scoopName??(r?`via ${r}`:void 0)})).decision,attestation:`none`}},onConnectionChange:e=>{S.refs.switcher.connection=e?`connected`:`disconnected`,W(e,e?U:H),e||X.reset(),d&&b.cherryTransport?.emitSliccEventToHost(e?`slicc.follower.ready`:`slicc.follower.disconnected`)},getSelectedScoopJid:()=>K,onLeaderStalled:e=>{W(!e,e?`The leader is busy — hang on…`:U)},onGaveUp:e=>{D.error(`follower gave up reaching the leader`,{error:e}),S.refs.switcher.connection=`disconnected`,W(!1,`Couldn't reach the leader. Reload to retry.`),X.reset(),d&&b.cherryTransport?.emitSliccEventToHost(`slicc.follower.disconnected`)},...d?{}:{onJoinUrlChanged:e=>{D.info(`follower joinUrl superseded, persisting replacement`,{newJoinUrl:e}),u(window.localStorage,e)}},addSprinkle:G.addSprinkle,removeSprinkle:G.removeSprinkle,onOpen:e=>{/^https?:\/\//.test(e)?window.open(e,`_blank`,`noopener`):D.warn(`follower sprinkle open() of a local path is unavailable`,{path:e})},onScoopsList:(e,t)=>{(!K||!e.some(e=>e.jid===K))&&(K=t),S.refs.switcher.scoops=m(e),S.refs.switcher.setAttribute(`active`,K??t)},onModelsList:X.onModelsList,onModelState:X.onModelState,...d?{onCherrySliccEvent:(e,t)=>b.cherryTransport?.emitSliccEventToHost(e,t)}:{}});for(let e of[`save`,`skip`,`erase`])S.refs.freezer.addEventListener(`new-chat-${e}`,()=>{q.currentSync?.requestNewSession(e)});o(`agentic-memory`)&&S.refs.freezer.querySelector(`slicc-freezer-new`)?.setAttribute(`no-skip`,``),S.refs.switcher.addEventListener(`slicc-scoop-select`,e=>{let t=e.detail?.key;t&&(K=t,S.refs.switcher.setAttribute(`active`,t),q.currentSync?.selectScoop(t))}),d&&b.cherryTransport&&(b.cherryTransport.onHostEvent=(e,t)=>q.currentSync?.sendCherryHostEvent(e,t),b.cherryTransport.onExportRequest=(e,t,r,i)=>{let a=q.currentSync;if(!a)return Promise.reject(new n(`transfer-aborted`));let o=A(t);return o?a.requestTranscriptExport(o,r,i):Promise.reject(new n(`session-not-found`))});let Z=null;if(!d){let{startFollowerNavigateWatcher:t}=await e(async()=>{let{startFollowerNavigateWatcher:e}=await import(`./follower-navigate-watcher-CNC7ybEv.js`);return{startFollowerNavigateWatcher:e}},__vite__mapDeps([77,3,23,1,7,24,22,25,26,78,79,80]));Z=t(b.realCdpTransport,()=>q.currentSync)}let Q=!1,$=()=>{S.refs.avatarMenu.items=[{kind:`separator`},...y?[{id:`focus-leader-tab`,label:`Bring leader to front`,icon:`external-link`}]:[],{id:`export-transcript`,label:Q?`Exporting…`:`Export transcript`,icon:`download`,disabled:Q||void 0},{id:`tray-stop`,label:`Disconnect from leader`,icon:`unplug`,danger:!0}]};$(),S.refs.avatarMenu.addEventListener(`slicc-avatar-action`,t=>{let n=t.detail?.id;if(n===`focus-leader-tab`){b.cherryTransport?.emitSliccEventToHost(`slicc.focus-leader-tab`);return}if(n===`tray-stop`){window.dispatchEvent(new CustomEvent(`slicc:tray-leave`,{detail:{workerBaseUrl:null}}));return}if(n===`export-transcript`&&!Q){Q=!0,$();let t=q.currentSync;if(!t){Q=!1,$();return}let n=new AbortController;t.requestTranscriptExport({kind:`active`},n.signal).then(async t=>{let{downloadTranscriptBlob:n}=await e(async()=>{let{downloadTranscriptBlob:e}=await import(`./wc-transcript-export-DKIleW7-.js`);return{downloadTranscriptBlob:e}},__vite__mapDeps([81,7,82,22,46,1]));await n(t,`slicc-transcript-${new Date().toISOString().slice(0,10)}.zip`)}).catch(e=>{D.error(`follower transcript export failed`,{error:String(e)})}).finally(()=>{Q=!1,$()})}}),window.addEventListener(`slicc:tray-leave`,e=>{he({workerBaseUrl:(e.detail??{}).workerBaseUrl??null},{storage:window.localStorage,stopFollower:()=>{Z?.(),q.stop()},getHref:()=>window.location.href,replaceHref:e=>window.history.replaceState(null,``,e),reload:()=>window.location.reload()})}),D.info(`follower mounted`,{runtimeMode:l,isCherry:d})}export{L as mountWcUiFollower};
|