sliccy 6.161.0 → 6.162.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ui/.vite/manifest.json +167 -167
- package/dist/ui/assets/CLAUDE-Bzu6oiWk.js +1 -0
- package/dist/ui/assets/{SKILL-GlFKt9hC.js → SKILL-DYIL6DC-.js} +1 -1
- package/dist/ui/assets/{account-store-CLBPaUM6.js → account-store-BwJF_V2e.js} +1 -1
- package/dist/ui/assets/{account-store-BOs-8HiU.js → account-store-D-2d-wgE.js} +1 -1
- package/dist/ui/assets/{adobe-BWBJNC7T.js → adobe-CjbAgmPl.js} +1 -1
- package/dist/ui/assets/{adobe-Df2uaLO-.js → adobe-CwwqYoOU.js} +1 -1
- package/dist/ui/assets/{agent-bridge-Ms4hmwM0.js → agent-bridge-BVKW1qEQ.js} +1 -1
- package/dist/ui/assets/{agent-panels-BhCtFtkg.js → agent-panels-CgbsDe7X.js} +1 -1
- package/dist/ui/assets/{apply-layout-Bkp15i3x.js → apply-layout-DwcfGHFm.js} +1 -1
- package/dist/ui/assets/{apps-CYg4af83.js → apps-DevRtS09.js} +1 -1
- package/dist/ui/assets/{azure-openai-dj0FFpg-.js → azure-openai-BliiJJ3h.js} +1 -1
- package/dist/ui/assets/{azure-openai-BUwA2I8H.js → azure-openai-JgQOdxTB.js} +1 -1
- package/dist/ui/assets/{backend-hostfs-CJ8PuTRM.js → backend-hostfs-BeGMZ35g.js} +1 -1
- package/dist/ui/assets/{budget-usage-source-C-igWdO-.js → budget-usage-source-DtWNqYUy.js} +1 -1
- package/dist/ui/assets/{cdp-Dd0vAJLe.js → cdp-Bt4Tc7Bs.js} +1 -1
- package/dist/ui/assets/{cerebras-g7mxrr4l.js → cerebras-B22qDyni.js} +1 -1
- package/dist/ui/assets/{cerebras-eNZAMhTF.js → cerebras-CjBby1u2.js} +1 -1
- package/dist/ui/assets/{composer-speech-B68BwBZ7.js → composer-speech-BYeMN2uA.js} +1 -1
- package/dist/ui/assets/cone-memory-budget-Cmi9vXV5.js +15 -0
- package/dist/ui/assets/{connect-surface-B0rdf72G.js → connect-surface-CHdfpKbm.js} +1 -1
- package/dist/ui/assets/{directed-approval-BDEG8Yvj.js → directed-approval-DgyI3qOn.js} +1 -1
- package/dist/ui/assets/{ensure-speech-assets-4Id89w5g.js → ensure-speech-assets-B3Nm2ohf.js} +1 -1
- package/dist/ui/assets/{fs-BQw97HDw.js → fs-CAQbIrYC.js} +1 -1
- package/dist/ui/assets/{fs-CpmGDBd5.js → fs-CCWZwfa6.js} +2 -2
- package/dist/ui/assets/{github-CZ61QVHb.js → github-CUN_AUAu.js} +2 -2
- package/dist/ui/assets/{github-azEJfjuR.js → github-DqE3SYB2.js} +1 -1
- package/dist/ui/assets/{github-auth-oVl8G1TU.js → github-auth-E8mpeEdU.js} +1 -1
- package/dist/ui/assets/{github-copilot-CoiuJXt-.js → github-copilot-BuEa5EIS.js} +1 -1
- package/dist/ui/assets/{github-copilot-B6-hib5l.js → github-copilot-u9f-sT4d.js} +1 -1
- package/dist/ui/assets/{github-install-D_oDCP8Z.js → github-install-BO46TS1H.js} +1 -1
- package/dist/ui/assets/{github-zip-Dl68Xtsa.js → github-zip-DeYRWuaP.js} +1 -1
- package/dist/ui/assets/{hear-CSkFbakL.js → hear-Ow1sQFnW.js} +1 -1
- package/dist/ui/assets/{help-CA9uczqR.js → help-7-ZCR2Cf.js} +1 -1
- package/dist/ui/assets/{installer-BtCbzzPk.js → installer-DoomA9a4.js} +1 -1
- package/dist/ui/assets/js-realm-worker-DRvMA0wv.js +50 -0
- package/dist/ui/assets/{kernel-worker-BpOKjpiB.js → kernel-worker-BOn7PAWS.js} +585 -585
- package/dist/ui/assets/{local-llm-C3X98TDD.js → local-llm-B7QocwR-.js} +1 -1
- package/dist/ui/assets/{local-llm-7Hzh4HWH.js → local-llm-ws8kUvz8.js} +1 -1
- package/dist/ui/assets/{main-BvgLEGny.js → main-C3kY4qwt.js} +3 -3
- package/dist/ui/assets/{main-cherry-B1gL_VDF.js → main-cherry-CXJmoiKT.js} +1 -1
- package/dist/ui/assets/memory-budget-Bcf7Eolo.js +1 -0
- package/dist/ui/assets/{memory-curation-seam-CUB_6jbW.js → memory-curation-seam-BeoDnTPF.js} +1 -1
- package/dist/ui/assets/memory-write-execute-BOjUkUIG.js +1 -0
- package/dist/ui/assets/{mount-BIN7tJdn.js → mount-DLXo0YLf.js} +3 -3
- package/dist/ui/assets/{mount-DgNj1j39.js → mount-eaKpsekX.js} +1 -1
- package/dist/ui/assets/{mount-recovery-C4Ehuqzx.js → mount-recovery-LNDCBESm.js} +1 -1
- package/dist/ui/assets/{new-session-CXBi5vVJ.js → new-session-BR07Cwue.js} +2 -2
- package/dist/ui/assets/{oauth-bootstrap-CnxfDeen.js → oauth-bootstrap-CU5n9CrT.js} +2 -2
- package/dist/ui/assets/{onboarding-orchestrator-CGg8HRc7.js → onboarding-orchestrator-DlvPySOw.js} +1 -1
- package/dist/ui/assets/{openai-codex-D1zhc1Bs.js → openai-codex-DVTuUFEt.js} +1 -1
- package/dist/ui/assets/{openai-codex-BTk84T-p.js → openai-codex-zNStwguM.js} +1 -1
- package/dist/ui/assets/{openrouter-CVgy5wc-.js → openrouter-AATG6x2d.js} +1 -1
- package/dist/ui/assets/{openrouter-BAq62K9k.js → openrouter-RXJx-CYE.js} +1 -1
- package/dist/ui/assets/{openrouter-free-BuPYKuVg.js → openrouter-free-3g-OS9Vd.js} +1 -1
- package/dist/ui/assets/{openrouter-free-Bb1qxtvp.js → openrouter-free-BgEXTfii.js} +1 -1
- package/dist/ui/assets/{openrouter-oauth-CahM1JsM.js → openrouter-oauth-6T6RMMKm.js} +1 -1
- package/dist/ui/assets/{openrouter-oauth-CkJNKMCo.js → openrouter-oauth-BrunARs4.js} +1 -1
- package/dist/ui/assets/{opfs-mount-BmLtqGUP.js → opfs-mount-DqcCV6-e.js} +1 -1
- package/dist/ui/assets/{panel-rpc-handlers-CGzH0nFf.js → panel-rpc-handlers-C-ZrezVh.js} +2 -2
- package/dist/ui/assets/{panelize-shell-BCACE9Wk.js → panelize-shell-Dqtsa7Xq.js} +1 -1
- package/dist/ui/assets/{pi-edit-execution-DQakA2_y.js → pi-edit-execution-DqI6084r.js} +1 -1
- package/dist/ui/assets/{provider-v_LIhpsH.js → provider-BzyjK17E.js} +2 -2
- package/dist/ui/assets/{provider-DrXfG5VU.js → provider-DEvcJ1Rc.js} +1 -1
- package/dist/ui/assets/provider-settings-CnvkRFSY.js +1 -0
- package/dist/ui/assets/provider-store-access-DFdeZeqD.js +1 -0
- package/dist/ui/assets/provider-store-access-Dwd6xV_i.js +1 -0
- package/dist/ui/assets/{providers-BrmX66Dh.js → providers-DgV0i5wM.js} +1 -1
- package/dist/ui/assets/{providers-BSpycAJR.js → providers-yJqf8FSl.js} +2 -2
- package/dist/ui/assets/{quick-llm-DYePKmnI.js → quick-llm-C0pknm6K.js} +1 -1
- package/dist/ui/assets/{recovery-screen-B9oRrX47.js → recovery-screen-Drmpqp_Z.js} +1 -1
- package/dist/ui/assets/{run-CNxdgUi7.js → run-BCXMG6On.js} +2 -2
- package/dist/ui/assets/{run-DRVh2azB.js → run-BaLqrV2X.js} +1 -1
- package/dist/ui/assets/{run-Ctrn-cgp.js → run-CokQiUCf.js} +2 -2
- package/dist/ui/assets/{run-BFBSN5JV.js → run-DsHniFDx.js} +1 -1
- package/dist/ui/assets/{session-jsonl-By1-Cpfu.js → session-jsonl-r3PC72gG.js} +1 -1
- package/dist/ui/assets/{setup-feature-flags-remote-BTXIYw3m.js → setup-feature-flags-remote-DvyEZpD7.js} +1 -1
- package/dist/ui/assets/{silent-renew-backoff-WVDDqaaT.js → silent-renew-backoff-GAYBElLu.js} +1 -1
- package/dist/ui/assets/{skills-Cb2UBBFd.js → skills-83dSm0AA.js} +2 -2
- package/dist/ui/assets/slicc-version-C0gkt5sw.js +1 -0
- package/dist/ui/assets/{snapshot-D6-rNhQs.js → snapshot-DIIE5zIj.js} +1 -1
- package/dist/ui/assets/{snapshot-features-ChOEmMO8.js → snapshot-features-CH_5YuGq.js} +1 -1
- package/dist/ui/assets/{soundscape-bAKNOU6l.js → soundscape-CzP0cXwy.js} +1 -1
- package/dist/ui/assets/{speak-Cdcb4cux.js → speak-BYzFS7Ty.js} +1 -1
- package/dist/ui/assets/{sprinkle-manager-ChbaPOhD.js → sprinkle-manager-BLUZduNz.js} +1 -1
- package/dist/ui/assets/{sprinkle-renderer-znrI1A2G.js → sprinkle-renderer-Cb03w_WD.js} +1 -1
- package/dist/ui/assets/{state-0XE2J4uj.js → state-Bj9Ub2SV.js} +1 -1
- package/dist/ui/assets/{store-CGBfhIl1.js → store-8BTj1fD_.js} +1 -1
- package/dist/ui/assets/{store-CKjLWyQb.js → store-tmEfD0Rj.js} +1 -1
- package/dist/ui/assets/{sudo-c4GN8kpF.js → sudo-DAoppDTf.js} +1 -1
- package/dist/ui/assets/{sync-dialog-DsF3H9x1.js → sync-dialog-BWiv-UZX.js} +1 -1
- package/dist/ui/assets/{transformers-env-DupszjpL.js → transformers-env-CZ7GObfi.js} +1 -1
- package/dist/ui/assets/{tray-sidecar-DF5GjHo8.js → tray-sidecar-2VKSK6f1.js} +1 -1
- package/dist/ui/assets/{upgrade-detection-Z5QJPUPs.js → upgrade-detection-CPCrBCMa.js} +1 -1
- package/dist/ui/assets/{upskill-lick-skip-CadbChbG.js → upskill-lick-skip-CfQOyKFq.js} +1 -1
- package/dist/ui/assets/{voice-reply-CUfwNVBo.js → voice-reply-CkUBH04W.js} +1 -1
- package/dist/ui/assets/{wc-attach-KAV3-I5C.js → wc-attach-LnXYOiuQ.js} +2 -2
- package/dist/ui/assets/{wc-extension-Bwlv9a7O.js → wc-extension-BiiJ1PC-.js} +2 -2
- package/dist/ui/assets/{wc-follower-gx7qkEC5.js → wc-follower-BPYn7Q3s.js} +3 -3
- package/dist/ui/assets/{wc-follower-oauth-Dj0BnNjg.js → wc-follower-oauth-CCa8xLk0.js} +1 -1
- package/dist/ui/assets/{wc-gelatiere-BIypqjd-.js → wc-gelatiere-C1nVt4q0.js} +1 -1
- package/dist/ui/assets/{wc-live-BviXz6iU.js → wc-live-yBrQM63g.js} +5 -5
- package/dist/ui/assets/{wc-nav-vGcGHtoG.js → wc-nav-DwwSSgiM.js} +2 -2
- package/dist/ui/assets/{wc-onboarding-C599PuZR.js → wc-onboarding-COGCiwOu.js} +2 -2
- package/dist/ui/assets/{wc-placeholder-DwYO00Ob.js → wc-placeholder-DYKS2mOy.js} +3 -3
- package/dist/ui/assets/{wc-secret-request-BgvHTXv1.js → wc-secret-request-5YT8-1DJ.js} +1 -1
- package/dist/ui/assets/{wc-settings-Dbr4Vd1z.js → wc-settings-C91SZgPn.js} +3 -3
- package/dist/ui/assets/{wc-shell-BKqYEqw6.js → wc-shell-Bk_epkuk.js} +4 -4
- package/dist/ui/assets/{wc-shortcut-config-DbEph-cC.js → wc-shortcut-config-Bs4LcqFL.js} +1 -1
- package/dist/ui/assets/{wc-shortcuts-BA1X4WAm.js → wc-shortcuts-CkiPB7Y_.js} +1 -1
- package/dist/ui/assets/{wc-sprinkles-CJyV0cMu.js → wc-sprinkles-B8NqZJDQ.js} +2 -2
- package/dist/ui/assets/{wc-transcript-export-CJGW38TE.js → wc-transcript-export-BU4kXlKC.js} +2 -2
- package/dist/ui/assets/{wc-tray-OKrLtrMj.js → wc-tray-DZnAKRIm.js} +4 -4
- package/dist/ui/assets/welcome-detection-Cd3WyOoe.js +1 -0
- package/dist/ui/assets/{whisper-session-Dee4VCk3.js → whisper-session-BetvCfEP.js} +2 -2
- package/dist/ui/assets/{xai-grok-BMjRXA0U.js → xai-grok-BF8jP9SN.js} +1 -1
- package/dist/ui/assets/{xai-grok-fRpDJAhe.js → xai-grok-DjlUbdZA.js} +1 -1
- package/dist/ui/index.html +3 -3
- package/dist/ui/packages/webapp/index.html +3 -3
- package/package.json +4 -3
- package/dist/ui/assets/CLAUDE-I9G_dHp6.js +0 -1
- package/dist/ui/assets/cone-memory-budget-h6xoU7al.js +0 -15
- package/dist/ui/assets/js-realm-worker-Dr7QeLUl.js +0 -50
- package/dist/ui/assets/memory-budget-CYFBBTRW.js +0 -1
- package/dist/ui/assets/provider-settings-DjX0tydX.js +0 -1
- package/dist/ui/assets/provider-store-access-BrbUgw2h.js +0 -1
- package/dist/ui/assets/provider-store-access-DCGSGH-M.js +0 -1
- package/dist/ui/assets/slicc-version-CH5UQnZX.js +0 -1
- package/dist/ui/assets/welcome-detection-C0S6jexM.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./wc-onboarding-COGCiwOu.js";export{e as hasOnboardingFinalLickInHistory};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/speak-
|
|
2
|
-
import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF.js";import{a as n,n as r,o as i,r as a,t as o}from"./transformers-env-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/speak-BYzFS7Ty.js","assets/preload-helper-Czpn1I53.js","assets/logger-DDBAeTLF.js","assets/runtime-env-Dlaokqg1.js","assets/speech-assets-bridge-CFYafE89.js","assets/transformers-env-CZ7GObfi.js","assets/wc-shortcuts-CkiPB7Y_.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/account-store-BwJF_V2e.js","assets/claude-model-version-CSATLzrT.js","assets/models-BSkXF4T6.js","assets/diagnostics-DN_idNHx.js","assets/provider-env-CTOcDKrQ.js","assets/__vite-browser-external-5eBdwsFd.js","assets/openrouter.models-B-zmcypy.js","assets/libesm-BypnjKEL.js","assets/base64-DJRlyqZu.js","assets/proxied-fetch-DyBveeCl.js","assets/fetch-body-1l9I58Vk.js","assets/api-endpoint-DGxXvrur.js","assets/float-topology-YtctpJaG.js","assets/secret-topology-DLJBhHOi.js","assets/secrets-bridge-client--VZ3E0yk.js","assets/port-bridge-client-Dn8JtUyP.js","assets/tool-ui-eSQ1g2I1.js","assets/providers-yJqf8FSl.js","assets/panel-rpc-B3MSVImO.js","assets/bedrock-camp-compat-BeCSBUrZ.js","assets/icons-Ce7Vz89o.js","assets/shared-mBEktoxE.js","assets/mime-types-D0xZwlMO.js","assets/transformers.web-B0gi9Hor.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF.js";import{a as n,n as r,o as i,r as a,t as o}from"./transformers-env-CZ7GObfi.js";var s=t(`speech:whisper`),c=null,l=`idle`,u=null,d=new Set;function f(){return l}function p(){return u}function m(e){return e&&d.add(e),c||=(l=`loading`,g().then(e=>(l=`ready`,h(),e),e=>{throw l=`failed`,c=null,s.error(`whisper load failed`,e),e})),c}function h(){e(async()=>{let{kokoroWarmup:e}=await import(`./speak-BYzFS7Ty.js`);return{kokoroWarmup: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])).then(({kokoroWarmup:e})=>e()).catch(e=>s.warn(`kokoro warmup (chained after whisper) failed`,e))}async function g(){let{pipeline:t,env:c}=await e(async()=>{let{pipeline:e,env:t}=await import(`./transformers.web-B0gi9Hor.js`);return{pipeline:e,env:t}},__vite__mapDeps([31,7,1]));r(c),await o(n),await a();let l=i(),f=e=>{if(e?.file){if(e.status===`progress`)l.update(e.file,e.loaded??0,e.total??0);else if(e.status===`done`)l.complete(e.file);else return;u=l.snapshot();for(let e of d)e(u)}},p=async e=>await t(`automatic-speech-recognition`,n,{device:e,dtype:e===`webgpu`?`fp32`:`q8`,progress_callback:f}),m=typeof navigator<`u`&&`gpu`in navigator,h;if(m)try{h=await p(`webgpu`)}catch(e){s.warn(`whisper webgpu init failed; retrying on wasm`,e),h=await p(`wasm`)}else h=await p(`wasm`);return s.info(`whisper ready`,{model:n,device:m?`webgpu`:`wasm`}),{async transcribe(e,t){let n=performance.now(),r=await h(e,{chunk_length_s:30,task:`transcribe`,...t?.language?{language:t.language}:{}}),i=Array.isArray(r)?r.map(e=>e.text??``).join(` `):r.text??``;return s.info(`whisper transcribe`,{elapsedMs:Math.round(performance.now()-n),audioSeconds:Math.round(e.length/160)/100,numThreads:c.backends?.onnx?.wasm?.numThreads,device:m?`webgpu`:`wasm`}),i.trim()}}}var _=16e3;async function v(e){if(typeof AudioContext>`u`||typeof OfflineAudioContext>`u`)throw Error(`audio decoding requires a window/page realm (AudioContext unavailable)`);let t=new AudioContext,n;try{n=await t.decodeAudioData(e.slice(0))}finally{await t.close().catch(()=>{})}let r=Math.max(1,Math.ceil(n.duration*_)),i=new OfflineAudioContext(1,r,_),a=i.createBufferSource();return a.buffer=n,a.connect(i.destination),a.start(),(await i.startRendering()).getChannelData(0).slice(0)}var y=t(`speech:whisper-session`),b=2e3,x=500,S=5e3,C=3e4,w=(e,t,n)=>new Promise((r,i)=>{let a=setTimeout(()=>i(Error(`${n} timed out after ${t}ms`)),t);e.then(e=>{clearTimeout(a),r(e)},e=>{clearTimeout(a),i(e)})});function T(e){return e?.split(`-`)[0]?.toLowerCase()||void 0}async function E(e,t){let n;if(t.stream)n=t.stream;else{if(!navigator.mediaDevices?.getUserMedia)throw Error(`microphone capture unavailable in this realm`);n=await navigator.mediaDevices.getUserMedia({audio:t.deviceId&&t.deviceId!=="default"?{deviceId:{exact:t.deviceId}}:!0})}let r=new MediaRecorder(n),i=[],a=T(t.lang),o=!1,s=!1;r.ondataavailable=e=>{e.data.size>0&&i.push(e.data)};let c=async()=>{if(i.length===0)return``;let t=await v(await new Blob(i,{type:r.mimeType||`audio/webm`}).arrayBuffer());return e.transcribe(t,{language:a})},l=Promise.resolve(``),u=()=>{let e=l.catch(()=>``).then(()=>c());return l=e.catch(()=>``),e},d=setInterval(()=>{o||s||i.length===0||(o=!0,u().then(e=>{!s&&e&&t.onPartial?.(e)}).catch(e=>{y.warn(`partial transcription failed`,e)}).finally(()=>{o=!1}))},b),f=()=>{if(clearInterval(d),r.state!==`inactive`)try{r.stop()}catch{}for(let e of n.getTracks())e.stop()},p=()=>new Promise(e=>{if(r.state===`inactive`){e();return}r.onstop=()=>e();try{r.stop()}catch{e()}});return r.start(x),{async stop(){if(s)return``;s=!0,clearInterval(d);try{await w(p(),S,`recorder flush`);for(let e of n.getTracks())e.stop();return await w(u(),C,`transcription`)}catch(e){for(let e of n.getTracks())e.stop();let r=e instanceof Error?e.message:String(e);return t.onError?.(`transcription failed: ${r}`),``}},cancel(){s||(s=!0,f())}}}export{p as a,m as i,T as n,f as o,v as r,E as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as e,r as t}from"./account-store-
|
|
1
|
+
import{_ as e,r as t}from"./account-store-D-2d-wgE.js";import{a as n}from"./diagnostics-DN_idNHx.js";import{a as r,r as i}from"./compat-uEPf6-XW.js";import{c as a,i as o,r as s,s as c}from"./legacy-api-aliases-jKEvBgOL.js";import"./provider-settings-CnvkRFSY.js";import{n as l,r as u,t as d}from"./pkce-hGf_TEnP.js";import{XaiErrorCode as f,XaiOAuthError as p}from"./xai-grok-errors-ByEMMSoz.js";function m(e){return typeof e==`object`&&!!e}function h(e){if(!m(e))return null;let t=m(e.config)?e.config:e,n=t.creditUsagePercent;if(typeof n!=`number`||!Number.isFinite(n))return null;let r=Math.min(1e3,Math.max(0,n)),i=m(t.currentPeriod)?t.currentPeriod:{},a=i.type,o=typeof a==`string`?a.replace(`USAGE_PERIOD_TYPE_`,``).toLowerCase():``,s=i.end??t.billingPeriodEnd,c=typeof s==`string`&&Number.isFinite(Date.parse(s))?s:void 0;return{percent:r,status:`ok`,window:o&&o!==`unspecified`?o:`billing`,...c?{resetsAt:c}:{}}}async function g(e,t,n={}){let r=new AbortController,i=setTimeout(()=>r.abort(),n.timeoutMs??8e3);try{let n=await t(`https://cli-chat-proxy.grok.com/v1/billing?format=credits`,{headers:{Authorization:`Bearer ${e}`},signal:r.signal}),{status:i}=n;if(i===404||i===501)return null;if(!n.ok)throw Error(`xAI Grok usage: ${i===401||i===403?`re-login required`:`failed`} (${i})`);let a=await n.text();if(a.length>65536)return null;try{return h(JSON.parse(a))}catch{return null}}finally{clearTimeout(i)}}const _=`xai-grok`,v=`https://auth.x.ai`,y=`${v}/oauth2/authorize`,b=`${v}/oauth2/token`,x=`b1a00492-073a-47ea-816f-4c329264a828`,S=`http://127.0.0.1:56121/callback`,C=`https://api.x.ai/v1`,w=`grok-4.5`,T=`${_}-openai`;function E(){return i(`xai`)}function D(e){return{id:e.id,name:e.name,api:`openai`,reasoning:e.reasoning,input:e.input,context_window:e.contextWindow,max_tokens:e.maxTokens,compat:e.compat,thinkingLevelMap:e.thinkingLevelMap}}function O(e){let t=E(),n=t.find(t=>t.id===e.id);if(!n&&(console.warn(`xAI model "${e.id}" is no longer in the pi-ai catalog; falling back to default "${w}"`),n=t.find(e=>e.id===w),!n))throw Error(`xAI default model "${w}" is not registered by pi-ai`);if(n.api!==`openai-responses`&&n.api!==`openai-completions`)throw Error(`Unsupported pi-ai API "${n.api}" for xAI model "${e.id}"`);return{...e,...n,baseUrl:C}}async function k(e,t){let n=new URLSearchParams({grant_type:`authorization_code`,code:e,redirect_uri:S,client_id:x,code_verifier:t}),r=await fetch(b,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:n});if(!r.ok)throw new p(`xAI token exchange failed: ${r.status} ${await r.text()}`,f.TOKEN_EXCHANGE_FAILED);let i=await r.json();if(!i.access_token)throw new p(`xAI token exchange did not return access_token.`,f.TOKEN_EXCHANGE_INVALID);return i}async function A(e){try{let t=new URLSearchParams({grant_type:`refresh_token`,refresh_token:e,client_id:x}),n=await fetch(b,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:t});return n.ok?await n.json():(console.error(`[xai-grok] refresh failed:`,n.status,await n.text()),null)}catch(e){return console.error(`[xai-grok] refresh error:`,e instanceof Error?e.message:String(e)),null}}function j(){return t().find(e=>e.providerId===_)}async function M(){let t=j();if(!t?.accessToken)throw new p("Not signed in to xAI Grok — run /login or `oauth-token xai-grok`",f.AUTH_MISSING,!0);let n=t.tokenExpiresAt??0;if(n&&Date.now()+6e4<n)return t.accessToken;if(t.refreshToken){let n=await A(t.refreshToken);if(n?.access_token)return await e({providerId:_,accessToken:n.access_token,refreshToken:n.refresh_token??t.refreshToken,tokenExpiresAt:Date.now()+(n.expires_in??21600)*1e3,scopes:n.scope??t.scopes}),n.access_token}return t.accessToken}async function N(){if(!j()?.accessToken)throw Error(`xAI Grok budget: not signed in`);return g(await M(),fetch)}function P(e,t){return{type:`error`,reason:`error`,error:{role:`assistant`,content:[],api:T,provider:_,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`error`,errorMessage:t instanceof Error?t.message:String(t),timestamp:Date.now()}}}function F(e,t){return t?{...e??{},"x-grok-conv-id":t}:e}function I(e){console.error(`[xai-grok] Stream error:`,e instanceof Error?e.message:String(e))}async function L(e,t,n,r){try{let i=await M(),a=r.sessionId,c=O(t),l={...r,apiKey:i,headers:F(r.headers,a)},u=c.api===`openai-responses`?o(c,n,l):s(c,n,l);for await(let t of u)e.push(t);e.end()}catch(n){I(n),e.push(P(t,n)),e.end()}}async function R(e,t,n,r){try{let i=await M(),o=r?.sessionId,s=O(t),l={...r,apiKey:i,headers:F(r?.headers,o)},u=s.api===`openai-responses`?a(s,n,l):c(s,n,l);for await(let t of u)e.push(t);e.end()}catch(n){I(n),e.push(P(t,n)),e.end()}}const z=(e,t,r={})=>{let i=n();return L(i,e,t,r).catch(I),i},B=(e,t,r)=>{let i=n();return R(i,e,t,r).catch(I),i},V={id:_,name:`xAI Grok (SuperGrok OAuth)`,description:`Grok via xAI OAuth — uses your SuperGrok subscription, no API key needed. Default model is Grok 4.5.`,requiresApiKey:!1,requiresBaseUrl:!1,isOAuth:!0,defaultModelId:w,oauthTokenDomains:[`api.x.ai`,`*.x.ai`,`auth.x.ai`,`accounts.x.ai`,`cli-chat-proxy.grok.com`],getModelIds:()=>E().map(D),getBudgetUsage:N,onOAuthLoginIntercepted:async(t,n,r)=>{let i=l(),a=await d(i),o=u(),s=u(),c=new URL(y);c.searchParams.set(`response_type`,`code`),c.searchParams.set(`client_id`,x),c.searchParams.set(`redirect_uri`,S),c.searchParams.set(`scope`,r?.scopes??`openid profile email offline_access grok-cli:access api:access`),c.searchParams.set(`code_challenge`,a),c.searchParams.set(`code_challenge_method`,`S256`),c.searchParams.set(`state`,o),c.searchParams.set(`nonce`,s),c.searchParams.set(`plan`,`generic`),c.searchParams.set(`referrer`,`slicc`);let m=await t({authorizeUrl:c.toString(),redirectUriPattern:`http://127.0.0.1:56121/*`,onCapture:`close`});if(!m)throw new p(`xAI OAuth login was cancelled or timed out`,f.CALLBACK_TIMEOUT);let h=new URL(m),g=h.searchParams.get(`code`),v=h.searchParams.get(`state`);if(!g)throw new p(`xAI OAuth redirect did not include a code`,f.CODE_MISSING);if(v!==o)throw new p(`xAI OAuth state mismatch — possible CSRF, aborting`,f.STATE_MISMATCH);let b=await k(g,i);await e({providerId:_,accessToken:b.access_token,refreshToken:b.refresh_token,tokenExpiresAt:Date.now()+(b.expires_in??21600)*1e3,baseUrl:C,scopes:b.scope}),n()},onOAuthLogout:async()=>{await e({providerId:_,accessToken:``})},onSilentRenew:async()=>{let t=j();if(!t?.refreshToken)return null;let n=await A(t.refreshToken);return n?.access_token?(await e({providerId:_,accessToken:n.access_token,refreshToken:n.refresh_token??t.refreshToken,tokenExpiresAt:Date.now()+(n.expires_in??21600)*1e3,scopes:n.scope??t.scopes}),n.access_token):null}};function H(){r({api:T,stream:z,streamSimple:B})}export{f as XaiErrorCode,p as XaiOAuthError,V as config,H as register};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{G as e,f as t}from"./account-store-
|
|
1
|
+
import{G as e,f as t}from"./account-store-BwJF_V2e.js";import{a as n}from"./diagnostics-DN_idNHx.js";import{d as r,l as i}from"./claude-model-version-CSATLzrT.js";import{c as a,i as o,r as s,s as c}from"./legacy-api-aliases-bAJ0Klzq.js";import"./main-C3kY4qwt.js";import{n as l,r as u,t as d}from"./pkce-hGf_TEnP.js";import{XaiErrorCode as f,XaiOAuthError as p}from"./xai-grok-errors-bnlIBeu-.js";var m=`https://cli-chat-proxy.grok.com/v1/billing?format=credits`,h=8e3,g=65536,_=1e3;function v(e){return typeof e==`object`&&!!e}function y(e){if(!v(e))return null;let t=v(e.config)?e.config:e,n=t.creditUsagePercent;if(typeof n!=`number`||!Number.isFinite(n))return null;let r=Math.min(_,Math.max(0,n)),i=v(t.currentPeriod)?t.currentPeriod:{},a=i.type,o=typeof a==`string`?a.replace(`USAGE_PERIOD_TYPE_`,``).toLowerCase():``,s=i.end??t.billingPeriodEnd,c=typeof s==`string`&&Number.isFinite(Date.parse(s))?s:void 0;return{percent:r,status:`ok`,window:o&&o!==`unspecified`?o:`billing`,...c?{resetsAt:c}:{}}}async function b(e,t,n={}){let r=new AbortController,i=setTimeout(()=>r.abort(),n.timeoutMs??h);try{let n=await t(m,{headers:{Authorization:`Bearer ${e}`},signal:r.signal}),{status:i}=n;if(i===404||i===501)return null;if(!n.ok)throw Error(`xAI Grok usage: ${i===401||i===403?`re-login required`:`failed`} (${i})`);let a=await n.text();if(a.length>g)return null;try{return y(JSON.parse(a))}catch{return null}}finally{clearTimeout(i)}}var x=`xai-grok`,S=`https://auth.x.ai`,C=`${S}/oauth2/authorize`,w=`${S}/oauth2/token`,T=`b1a00492-073a-47ea-816f-4c329264a828`,E=`openid profile email offline_access grok-cli:access api:access`,D=`http://127.0.0.1:56121/callback`,O=`http://127.0.0.1:56121/*`,k=`https://api.x.ai/v1`,A=`grok-4.5`,j=`${x}-openai`;function M(){return i(`xai`)}function N(e){return{id:e.id,name:e.name,api:`openai`,reasoning:e.reasoning,input:e.input,context_window:e.contextWindow,max_tokens:e.maxTokens,compat:e.compat,thinkingLevelMap:e.thinkingLevelMap}}function P(e){let t=M(),n=t.find(t=>t.id===e.id);if(!n&&(console.warn(`xAI model "${e.id}" is no longer in the pi-ai catalog; falling back to default "${A}"`),n=t.find(e=>e.id===A),!n))throw Error(`xAI default model "${A}" is not registered by pi-ai`);if(n.api!==`openai-responses`&&n.api!==`openai-completions`)throw Error(`Unsupported pi-ai API "${n.api}" for xAI model "${e.id}"`);return{...e,...n,baseUrl:k}}async function F(e,t){let n=new URLSearchParams({grant_type:`authorization_code`,code:e,redirect_uri:D,client_id:T,code_verifier:t}),r=await fetch(w,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:n});if(!r.ok)throw new p(`xAI token exchange failed: ${r.status} ${await r.text()}`,f.TOKEN_EXCHANGE_FAILED);let i=await r.json();if(!i.access_token)throw new p(`xAI token exchange did not return access_token.`,f.TOKEN_EXCHANGE_INVALID);return i}async function I(e){try{let t=new URLSearchParams({grant_type:`refresh_token`,refresh_token:e,client_id:T}),n=await fetch(w,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:t});return n.ok?await n.json():(console.error(`[xai-grok] refresh failed:`,n.status,await n.text()),null)}catch(e){return console.error(`[xai-grok] refresh error:`,e instanceof Error?e.message:String(e)),null}}function L(){return t().find(e=>e.providerId===x)}async function R(){let t=L();if(!t?.accessToken)throw new p("Not signed in to xAI Grok — run /login or `oauth-token xai-grok`",f.AUTH_MISSING,!0);let n=t.tokenExpiresAt??0;if(n&&Date.now()+6e4<n)return t.accessToken;if(t.refreshToken){let n=await I(t.refreshToken);if(n?.access_token)return await e({providerId:x,accessToken:n.access_token,refreshToken:n.refresh_token??t.refreshToken,tokenExpiresAt:Date.now()+(n.expires_in??21600)*1e3,scopes:n.scope??t.scopes}),n.access_token}return t.accessToken}async function z(){if(!L()?.accessToken)throw Error(`xAI Grok budget: not signed in`);return b(await R(),fetch)}function B(e,t){return{type:`error`,reason:`error`,error:{role:`assistant`,content:[],api:j,provider:x,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`error`,errorMessage:t instanceof Error?t.message:String(t),timestamp:Date.now()}}}function V(e,t){return t?{...e??{},"x-grok-conv-id":t}:e}function H(e){console.error(`[xai-grok] Stream error:`,e instanceof Error?e.message:String(e))}async function U(e,t,n,r){try{let i=await R(),a=r.sessionId,c=P(t),l={...r,apiKey:i,headers:V(r.headers,a)},u=c.api===`openai-responses`?o(c,n,l):s(c,n,l);for await(let t of u)e.push(t);e.end()}catch(n){H(n),e.push(B(t,n)),e.end()}}async function W(e,t,n,r){try{let i=await R(),o=r?.sessionId,s=P(t),l={...r,apiKey:i,headers:V(r?.headers,o)},u=s.api===`openai-responses`?a(s,n,l):c(s,n,l);for await(let t of u)e.push(t);e.end()}catch(n){H(n),e.push(B(t,n)),e.end()}}var G=(e,t,r={})=>{let i=n();return U(i,e,t,r).catch(H),i},K=(e,t,r)=>{let i=n();return W(i,e,t,r).catch(H),i},q={id:x,name:`xAI Grok (SuperGrok OAuth)`,description:`Grok via xAI OAuth — uses your SuperGrok subscription, no API key needed. Default model is Grok 4.5.`,requiresApiKey:!1,requiresBaseUrl:!1,isOAuth:!0,defaultModelId:A,oauthTokenDomains:[`api.x.ai`,`*.x.ai`,`auth.x.ai`,`accounts.x.ai`,`cli-chat-proxy.grok.com`],getModelIds:()=>M().map(N),getBudgetUsage:z,onOAuthLoginIntercepted:async(t,n,r)=>{let i=l(),a=await d(i),o=u(),s=u(),c=new URL(C);c.searchParams.set(`response_type`,`code`),c.searchParams.set(`client_id`,T),c.searchParams.set(`redirect_uri`,D),c.searchParams.set(`scope`,r?.scopes??E),c.searchParams.set(`code_challenge`,a),c.searchParams.set(`code_challenge_method`,`S256`),c.searchParams.set(`state`,o),c.searchParams.set(`nonce`,s),c.searchParams.set(`plan`,`generic`),c.searchParams.set(`referrer`,`slicc`);let m=await t({authorizeUrl:c.toString(),redirectUriPattern:O,onCapture:`close`});if(!m)throw new p(`xAI OAuth login was cancelled or timed out`,f.CALLBACK_TIMEOUT);let h=new URL(m),g=h.searchParams.get(`code`),_=h.searchParams.get(`state`);if(!g)throw new p(`xAI OAuth redirect did not include a code`,f.CODE_MISSING);if(_!==o)throw new p(`xAI OAuth state mismatch — possible CSRF, aborting`,f.STATE_MISMATCH);let v=await F(g,i);await e({providerId:x,accessToken:v.access_token,refreshToken:v.refresh_token,tokenExpiresAt:Date.now()+(v.expires_in??21600)*1e3,baseUrl:k,scopes:v.scope}),n()},onOAuthLogout:async()=>{await e({providerId:x,accessToken:``})},onSilentRenew:async()=>{let t=L();if(!t?.refreshToken)return null;let n=await I(t.refreshToken);return n?.access_token?(await e({providerId:x,accessToken:n.access_token,refreshToken:n.refresh_token??t.refreshToken,tokenExpiresAt:Date.now()+(n.expires_in??21600)*1e3,scopes:n.scope??t.scopes}),n.access_token):null}};function J(){r({api:j,stream:G,streamSimple:K})}export{f as XaiErrorCode,p as XaiOAuthError,q as config,J as register};
|
package/dist/ui/index.html
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<title>slicc</title>
|
|
7
7
|
<link rel="icon" type="image/png" href="/logos/sliccy-color-1scoops-32x32.png" />
|
|
8
|
-
<script type="module" crossorigin src="/assets/main-
|
|
8
|
+
<script type="module" crossorigin src="/assets/main-C3kY4qwt.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-Dd_uD5pT.js">
|
|
10
10
|
<link rel="modulepreload" crossorigin href="/assets/modulepreload-polyfill-P2Xu9kJm.js">
|
|
11
11
|
<link rel="modulepreload" crossorigin href="/assets/preload-helper-Czpn1I53.js">
|
|
@@ -27,10 +27,10 @@
|
|
|
27
27
|
<link rel="modulepreload" crossorigin href="/assets/port-bridge-client-Dn8JtUyP.js">
|
|
28
28
|
<link rel="modulepreload" crossorigin href="/assets/secrets-bridge-client--VZ3E0yk.js">
|
|
29
29
|
<link rel="modulepreload" crossorigin href="/assets/tool-ui-eSQ1g2I1.js">
|
|
30
|
-
<link rel="modulepreload" crossorigin href="/assets/providers-
|
|
30
|
+
<link rel="modulepreload" crossorigin href="/assets/providers-yJqf8FSl.js">
|
|
31
31
|
<link rel="modulepreload" crossorigin href="/assets/panel-rpc-B3MSVImO.js">
|
|
32
32
|
<link rel="modulepreload" crossorigin href="/assets/bedrock-camp-compat-BeCSBUrZ.js">
|
|
33
|
-
<link rel="modulepreload" crossorigin href="/assets/account-store-
|
|
33
|
+
<link rel="modulepreload" crossorigin href="/assets/account-store-BwJF_V2e.js">
|
|
34
34
|
<link rel="modulepreload" crossorigin href="/assets/bridge-protocol-06nbmp2X.js">
|
|
35
35
|
<link rel="modulepreload" crossorigin href="/assets/messages-zAgr7E2T.js">
|
|
36
36
|
<link rel="modulepreload" crossorigin href="/assets/tray-runtime-config-B9jN9kUJ.js">
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<title>slicc</title>
|
|
7
7
|
<link rel="icon" type="image/png" href="/logos/sliccy-color-1scoops-32x32.png" />
|
|
8
|
-
<script type="module" crossorigin src="/assets/main-
|
|
8
|
+
<script type="module" crossorigin src="/assets/main-C3kY4qwt.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-Dd_uD5pT.js">
|
|
10
10
|
<link rel="modulepreload" crossorigin href="/assets/modulepreload-polyfill-P2Xu9kJm.js">
|
|
11
11
|
<link rel="modulepreload" crossorigin href="/assets/preload-helper-Czpn1I53.js">
|
|
@@ -27,10 +27,10 @@
|
|
|
27
27
|
<link rel="modulepreload" crossorigin href="/assets/port-bridge-client-Dn8JtUyP.js">
|
|
28
28
|
<link rel="modulepreload" crossorigin href="/assets/secrets-bridge-client--VZ3E0yk.js">
|
|
29
29
|
<link rel="modulepreload" crossorigin href="/assets/tool-ui-eSQ1g2I1.js">
|
|
30
|
-
<link rel="modulepreload" crossorigin href="/assets/providers-
|
|
30
|
+
<link rel="modulepreload" crossorigin href="/assets/providers-yJqf8FSl.js">
|
|
31
31
|
<link rel="modulepreload" crossorigin href="/assets/panel-rpc-B3MSVImO.js">
|
|
32
32
|
<link rel="modulepreload" crossorigin href="/assets/bedrock-camp-compat-BeCSBUrZ.js">
|
|
33
|
-
<link rel="modulepreload" crossorigin href="/assets/account-store-
|
|
33
|
+
<link rel="modulepreload" crossorigin href="/assets/account-store-BwJF_V2e.js">
|
|
34
34
|
<link rel="modulepreload" crossorigin href="/assets/bridge-protocol-06nbmp2X.js">
|
|
35
35
|
<link rel="modulepreload" crossorigin href="/assets/messages-zAgr7E2T.js">
|
|
36
36
|
<link rel="modulepreload" crossorigin href="/assets/tray-runtime-config-B9jN9kUJ.js">
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sliccy",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.162.0",
|
|
4
4
|
"description": "Browser-based coding agent with thin CLI server",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -73,8 +73,8 @@
|
|
|
73
73
|
"test:server-integration": "vitest run --config packages/node-server/tests/integration/server/vitest.config.ts",
|
|
74
74
|
"test:e2e": "npx playwright test --config packages/webapp/tests/e2e/playwright.config.ts",
|
|
75
75
|
"start:extension": "npm run build -w @slicc/chrome-extension && npm run dev -- --profile=extension",
|
|
76
|
-
"lint": "biome check --write . && prettier --write . && npm run lint:docs && npm run lint:no-comments && npm run lint:skills && npm run lint:skill-router && npm run lint:no-innerhtml && npm run lint:no-ui-in-providers && npm run lint:layer-back-edges && npm run lint:no-float-probes && npm run lint:record-string-unknown && npm run lint:lockfile && npm run lint:patches && npm run lint:swift-pins && npm run lint:no-raw-chrome-runtime-id && npm run lint:hosted-origin && npm run lint:swift-deps && npm run lint:swift-forbidden-imports && npm run lint:ios-ui-tests && npm run lint:dead-flags && npm run lint:duplication",
|
|
77
|
-
"lint:ci": "biome check . && prettier --check . && npm run lint:docs && npm run lint:no-comments && npm run lint:skills -- --strict && npm run lint:skill-router && npm run lint:no-innerhtml && npm run lint:no-ui-in-providers && npm run lint:layer-back-edges && npm run lint:no-float-probes && npm run lint:record-string-unknown && npm run lint:lockfile && npm run lint:patches && npm run lint:swift-pins && npm run lint:no-raw-chrome-runtime-id && npm run lint:hosted-origin && npm run lint:swift-deps && npm run lint:swift-forbidden-imports && npm run lint:ios-ui-tests && npm run lint:dead-flags && npm run lint:duplication",
|
|
76
|
+
"lint": "biome check --write . && prettier --write . && npm run lint:docs && npm run lint:no-comments && npm run lint:skills && npm run lint:skill-router && npm run lint:no-innerhtml && npm run lint:no-ui-in-providers && npm run lint:layer-back-edges && npm run lint:no-float-probes && npm run lint:record-string-unknown && npm run lint:lockfile && npm run lint:patches && npm run lint:swift-pins && npm run lint:no-raw-chrome-runtime-id && npm run lint:hosted-origin && npm run lint:swift-deps && npm run lint:swift-forbidden-imports && npm run lint:ios-ui-tests && npm run lint:ios-test-isolation && npm run lint:dead-flags && npm run lint:duplication",
|
|
77
|
+
"lint:ci": "biome check . && prettier --check . && npm run lint:docs && npm run lint:no-comments && npm run lint:skills -- --strict && npm run lint:skill-router && npm run lint:no-innerhtml && npm run lint:no-ui-in-providers && npm run lint:layer-back-edges && npm run lint:no-float-probes && npm run lint:record-string-unknown && npm run lint:lockfile && npm run lint:patches && npm run lint:swift-pins && npm run lint:no-raw-chrome-runtime-id && npm run lint:hosted-origin && npm run lint:swift-deps && npm run lint:swift-forbidden-imports && npm run lint:ios-ui-tests && npm run lint:ios-test-isolation && npm run lint:dead-flags && npm run lint:duplication",
|
|
78
78
|
"lint:docs": "node packages/dev-tools/tools/check-doc-sizes.mjs && node packages/dev-tools/tools/check-agents-symlinks.mjs && node packages/dev-tools/tools/check-doc-refs.mjs",
|
|
79
79
|
"lint:no-comments": "node packages/dev-tools/no-comment/check.mjs",
|
|
80
80
|
"lint:skills": "node packages/dev-tools/tools/lint-skills.mjs",
|
|
@@ -90,6 +90,7 @@
|
|
|
90
90
|
"lint:swift-deps": "node packages/dev-tools/tools/check-swift-unused-deps.mjs",
|
|
91
91
|
"lint:swift-forbidden-imports": "node packages/dev-tools/tools/check-swift-forbidden-imports.mjs",
|
|
92
92
|
"lint:ios-ui-tests": "node packages/dev-tools/tools/ios-ui-test-exclusions.mjs",
|
|
93
|
+
"lint:ios-test-isolation": "node packages/dev-tools/tools/check-ios-test-isolation.mjs",
|
|
93
94
|
"lint:dead-flags": "node packages/dev-tools/tools/check-dead-flags.mjs",
|
|
94
95
|
"lint:duplication": "jscpd --config jscpd.json --no-tips",
|
|
95
96
|
"lint:duplication:report": "jscpd --config jscpd.json --no-tips --threshold 100 --reporters console,html,json --output dist/jscpd",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e='# sliccy\n\nSLICC is a browser-native runtime for coding, browsing, automation, and parallel agents.\n\n## Roles\n\nYour injected role, policy, workspace and tools are authoritative; this file is not. Cone: a root work unit. Scoop: a delegated child. Root cones may coexist — never assume a singleton `cone`.\n\nSprinkles are persistent `.shtml` panels owned by a long-lived scoop; dips are ephemeral inline `shtml`; licks are events addressed to a work unit; trays are remote runtimes (`host` lists, `--runtime=<id>` targets).\n\n## Explore first\n\n100+ commands. Never say "I can\'t" without checking: `commands`, `<cmd> --help`, `man <topic>`, `skill list`, `upskill search "<query>"`, `upskill tabs`. Manuals and skills define syntax and capability — read them before concluding something is missing.\n\nNew capability = a skill, not a feature: `/workspace/skills/skill-authoring/SKILL.md`.\n\n## Media\n\n`` renders inline in chat: images, video, audio; 2+ per paragraph is a gallery. Absolute paths only. Raw HTML renders too (sanitized), but a fenced html block only shows source.\n\n## Licks\n\nEvents arrive as `[<Event>: <name>]` with a JSON body. Route each to the work unit it addresses; never handle another unit\'s lick yourself. Discovery events are informational — you may act, you are never required to. Handoffs and other privileged actions are human-gated.\n\n## Operating\n\nWhen something fails, preserve the evidence, read the output, and try a different path. After an ambiguous failure verify state before repeating a mutation. A policy denial surfaces as exit 1 or `EACCES`, not a prompt; request the least privilege. `rg` exit 1 is no match; exit 2 is the searchable-byte limit (stderr names the budget) — later commands still run. Local `chmod +x` persists; mounts may return `ENOSYS`. Use `bash file` when direct execution fails. Verify results and artifacts before claiming completion.\n\nKeep only durable facts in memory; prune stale entries.\n\n## Style\n\nProfessional tool, not a chatbot. No emoji.\n';export{e as default};
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./logger-LESFN7Hj.js";import{t}from"./compat-uEPf6-XW.js";import{n}from"./descriptor-D-6Koktu.js";import{r}from"./memory-budget-CYFBBTRW.js";const i=e(`cone-memory-budget`),a=n.memoryPath,o=/^## Auto-extracted/m;function s(e){let t=o.exec(e);if(!t)return{header:e,autoExtracted:``};let n=t.index;return{header:e.slice(0,n),autoExtracted:e.slice(n)}}async function c(e){try{let t=await e.readFile(`/sessions/index.json`,{encoding:`utf-8`}),n=typeof t==`string`?t:new TextDecoder().decode(t),r=JSON.parse(n);return Array.isArray(r)?r.length:0}catch{return 0}}async function l(e){let{header:n,autoExtracted:r}=s(e.currentContent);if(!r.trim())return e.currentContent;let i=`You are a memory consolidation assistant. You are given a markdown file's "auto-extracted" section — a list of memory bullets accumulated across sessions of an AI coding assistant. Your job is to rewrite that section as a tighter, deduplicated set of durable memories that fits well within ${e.budget} characters.
|
|
2
|
-
|
|
3
|
-
<auto-extracted>
|
|
4
|
-
${r}
|
|
5
|
-
</auto-extracted>`,a={role:`user`,content:[{type:`text`,text:`Consolidate the auto-extracted memory bullets below into a single tighter set of durable memories.
|
|
6
|
-
|
|
7
|
-
Rules:
|
|
8
|
-
- Output ONLY a single \`## Auto-extracted (consolidated)\` heading followed by markdown bullets.
|
|
9
|
-
- One fact per bullet. Drop duplicates and superseded facts. Keep the most recent / specific phrasing.
|
|
10
|
-
- Preserve concrete identifiers (file paths, URLs, IDs, names) verbatim.
|
|
11
|
-
- Be terse. Aim well under the original size.
|
|
12
|
-
- Do NOT add preamble, commentary, or any heading other than the single consolidated one.`}],timestamp:Date.now()},o=await t(e.model,{systemPrompt:i,messages:[a]},{apiKey:e.apiKey,maxTokens:4096,headers:e.headers,signal:e.signal});if(o.stopReason===`error`)throw Error(`Restructure call failed: ${o.errorMessage||`Unknown error`}`);let c=o.content.filter(e=>e.type===`text`).map(e=>e.text).join(`
|
|
13
|
-
`).trim();if(!c)throw Error(`Restructure call returned empty content`);return`${n}${n.length===0||n.endsWith(`
|
|
14
|
-
`)?``:`
|
|
15
|
-
`}${c}\n`}async function u(e){if(!e.model||!e.apiKey)return{restructured:!1,reason:`no-llm`};let t=e.memoryPath??a,n=``;try{let r=await e.vfs.readFile(t,{encoding:`utf-8`});n=typeof r==`string`?r:new TextDecoder().decode(r)}catch{return{restructured:!1,reason:`missing-file`}}let o=await c(e.vfs),s=r(o),u=s*1.25;if(n.length<=u)return{restructured:!1,reason:`under-threshold`};i.info(`Cone memory over threshold — restructuring`,{size:n.length,budget:s,threshold:u,sessionCount:o});try{let r=await l({currentContent:n,budget:s,model:e.model,apiKey:e.apiKey,headers:e.headers,signal:e.signal});return await e.vfs.writeFile(t,r),i.info(`Cone memory restructured`,{before:n.length,after:r.length}),{restructured:!0}}catch(e){return i.warn(`Cone memory restructure failed — leaving appended content in place`,{error:e instanceof Error?e.message:String(e)}),{restructured:!1,reason:`error`}}}export{u as n,a as t};
|