sliccy 2.54.3 → 2.56.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/node-server/chrome-launch.js +9 -0
- package/dist/ui/assets/active-transport-DjJ32qlA.js +1 -0
- package/dist/ui/assets/active-transport-lYMG0Gv5.js +1 -0
- package/dist/ui/assets/{adobe-CAqRDN2w.js → adobe-NRB0tB6W.js} +1 -1
- package/dist/ui/assets/{adobe-DHYuuUb_.js → adobe-QXZCy565.js} +2 -2
- package/dist/ui/assets/{agent-bridge-DBMYb3oa.js → agent-bridge-DxRah7QA.js} +1 -1
- package/dist/ui/assets/{agent-message-to-chat-CFx8_Yp_.js → agent-message-to-chat-BpcmXkzt.js} +1 -1
- package/dist/ui/assets/{azure-openai-C-F1rgxQ.js → azure-openai-C3jQCjj8.js} +1 -1
- package/dist/ui/assets/{azure-openai-DLHmHLi8.js → azure-openai-PWmjqnnu.js} +1 -1
- package/dist/ui/assets/{bedrock-camp-CWKZAe9y.js → bedrock-camp-DChwr7KC.js} +1 -1
- package/dist/ui/assets/bedrock-camp-prTmQ4PG.js +5 -0
- package/dist/ui/assets/{cdp-8PkQbabV.js → cdp-DWT2l8bP.js} +3 -3
- package/dist/ui/assets/cost-command-G_pajegS.js +1 -0
- package/dist/ui/assets/{es-DNDNUd7z.js → es-DNsspHsb.js} +1 -1
- package/dist/ui/assets/{fs-DO22Q01o.js → fs-C9P3Nfvq.js} +2 -2
- package/dist/ui/assets/{fs-CAGfJ57c.js → fs-DSB_5PK0.js} +1 -1
- package/dist/ui/assets/{github-DRd5QUHI.js → github-BthdVOch.js} +1 -1
- package/dist/ui/assets/{github-Cw1vMsHg.js → github-CR01A3Pd.js} +2 -2
- package/dist/ui/assets/{index-BFOr5F9v.js → index-CTzhOMSf.js} +5 -5
- package/dist/ui/assets/intercepted-oauth-CnYe4Pun.js +1 -0
- package/dist/ui/assets/{kernel-worker-CXQhqLoT.js → kernel-worker-DQl_BcO3.js} +482 -261
- package/dist/ui/assets/{local-llm-Brkhi5GB.js → local-llm-4QCHSjR3.js} +1 -1
- package/dist/ui/assets/{local-llm-CPGemF-L.js → local-llm-CjP7smbg.js} +1 -1
- package/dist/ui/assets/{mount-DWGNgrsF.js → mount-D1VXEtPM.js} +2 -2
- package/dist/ui/assets/{mount-CUa5gbTF.js → mount-D7zeWCcE.js} +1 -1
- package/dist/ui/assets/{nuke-command-CZ6U2htK.js → nuke-command-6iDUjrgH.js} +1 -1
- package/dist/ui/assets/{oauth-bootstrap-BFv_Ow7L.js → oauth-bootstrap-CCaF1mhA.js} +1 -1
- package/dist/ui/assets/oauth-service--O2P_cH3.js +1 -0
- package/dist/ui/assets/oauth-service-BXo87SGy.js +1 -0
- package/dist/ui/assets/{offscreen-client-Cie13uMU.js → offscreen-client-BZIuqCtj.js} +1 -1
- package/dist/ui/assets/{onboarding-orchestrator-DvhroO-K.js → onboarding-orchestrator-wblO8A6r.js} +1 -1
- package/dist/ui/assets/{panel-rpc-handlers-hrz5uVN7.js → panel-rpc-handlers-C7GqtNpD.js} +1 -1
- package/dist/ui/assets/{provider-settings-Bfu16H53.js → provider-settings-C_bHAv6F.js} +1 -1
- package/dist/ui/assets/provider-settings-CyRPUAEx.js +28 -0
- package/dist/ui/assets/providers-DSe5NWr6.js +1 -0
- package/dist/ui/assets/{spawn-CoouyTyE.js → spawn-Cg0_PKqL.js} +1 -1
- package/dist/ui/assets/{sprinkle-renderer-D_1WCWtS.js → sprinkle-renderer-sJJO5bqF.js} +2 -2
- package/dist/ui/assets/{telemetry-C9XsVfDg.js → telemetry-D728iVf5.js} +1 -1
- package/dist/ui/assets/{upgrade-detection-m5KWeUgW.js → upgrade-detection-DSxLFlVR.js} +1 -1
- package/dist/ui/assets/xai-grok-CiMn_9LI.js +1 -0
- package/dist/ui/assets/xai-grok-cGh8uXu4.js +1 -0
- package/dist/ui/assets/xai-grok-errors-B7OqxH_0.js +1 -0
- package/dist/ui/assets/xai-grok-errors-DGVLpB4k.js +1 -0
- package/dist/ui/assets/xai-grok-models-0CbvNCeN.js +1 -0
- package/dist/ui/assets/xai-grok-models-DGbQVjGO.js +1 -0
- package/dist/ui/assets/xai-grok-sanitize-DTcvIA0E.js +5 -0
- package/dist/ui/assets/xai-grok-sanitize-DsBfxZb8.js +5 -0
- package/dist/ui/index.html +7 -7
- package/dist/ui/packages/webapp/index.html +7 -7
- package/package.json +2 -2
- package/dist/ui/assets/bedrock-camp-BAGPWCem.js +0 -5
- package/dist/ui/assets/cost-command-B-9U3XU3.js +0 -1
- package/dist/ui/assets/oauth-service-DNPgMPYf.js +0 -1
- package/dist/ui/assets/oauth-service-Dh_zSTTJ.js +0 -1
- package/dist/ui/assets/provider-settings-YvpjXLt2.js +0 -28
- package/dist/ui/assets/providers-Cf_veClN.js +0 -1
- /package/dist/ui/assets/{azure-ai-foundry-D3HkGmef.js → azure-ai-foundry--QIByvkN.js} +0 -0
- /package/dist/ui/assets/{azure-ai-foundry-B5DluKZP.js → azure-ai-foundry-DtrzZiwo.js} +0 -0
- /package/dist/ui/assets/{bsh-watchdog-DKgzntUa.js → bsh-watchdog-0KPLx0BS.js} +0 -0
- /package/dist/ui/assets/{chat-fixture-BKyHtm_z.js → chat-fixture-t_1Cmb9j.js} +0 -0
- /package/dist/ui/assets/{git-config-F_PSsmKc.js → git-config-DIdLP3yo.js} +0 -0
- /package/dist/ui/assets/{magick-wasm-PdWrmLP5.js → magick-wasm-D4Na_fL8.js} +0 -0
- /package/dist/ui/assets/{page-storage-sync-BIXKW7V9.js → page-storage-sync-M2qhyuvc.js} +0 -0
- /package/dist/ui/assets/{remote-terminal-view-BkxZllWt.js → remote-terminal-view-BD1tHNzj.js} +0 -0
- /package/dist/ui/assets/{rum-DPJZsXNh.js → rum-C0g6MAOC.js} +0 -0
- /package/dist/ui/assets/{secret-env-DrzPMa3Z.js → secret-env-LcaaxgBy.js} +0 -0
- /package/dist/ui/assets/{slicc-editor-CmED91Wp.js → slicc-editor-CFqadznu.js} +0 -0
- /package/dist/ui/assets/{sprinkle-bridge-channel-DMXpPm9r.js → sprinkle-bridge-channel-B_tegUwc.js} +0 -0
- /package/dist/ui/assets/{sprinkle-bridge-channel-DTuRl7C8.js → sprinkle-bridge-channel-C2blpBXT.js} +0 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/magick-wasm-D4Na_fL8.js","assets/preload-helper-ca-nBW7U.js","assets/shared-AafAvJaI.js","assets/azure-openai-C3jQCjj8.js","assets/bedrock-camp-DChwr7KC.js","assets/chunk-jRWAZmH_.js","assets/env-api-keys-BoL4zxcb.js","assets/simple-options-D8vGmEnp.js","assets/json-parse-Cu2r6BfV.js","assets/openai-DxnCgV1v.js","assets/local-llm-4QCHSjR3.js","assets/openai-completions-DmV2esrh.js","assets/github-copilot-headers-BKQV7zrp.js","assets/headers-C4jF_HTA.js","assets/sanitize-unicode-BA6bNBBh.js","assets/logger-B-No_qN_.js","assets/adobe-QXZCy565.js","assets/index-CTzhOMSf.js","assets/fs-C9P3Nfvq.js","assets/backend-local-CfhYopTE.js","assets/mount-picker-popup-ys6_YNH0.js","assets/tool-ui-DaAXBPJY.js","assets/path-utils-C99GOg2c.js","assets/tray-follower-status-hrOEFANe.js","assets/mime-types-DL940yDZ.js","assets/mount-D1VXEtPM.js","assets/sprinkle-renderer-sJJO5bqF.js","assets/telemetry-D728iVf5.js","assets/index-eWuuouO-.css","assets/oauth-service--O2P_cH3.js","assets/panel-rpc-DMFq2vU_.js","assets/github-CR01A3Pd.js","assets/xai-grok-sanitize-DsBfxZb8.js","assets/xai-grok-models-DGbQVjGO.js","assets/xai-grok-cGh8uXu4.js","assets/xai-grok-errors-DGVLpB4k.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{r as e}from"./chunk-jRWAZmH_.js";import{t}from"./logger-B-No_qN_.js";import{t as n}from"./preload-helper-ca-nBW7U.js";import"./tool-ui-DaAXBPJY.js";import{a as r,i,r as a,t as o}from"./bedrock-camp-DChwr7KC.js";import{d as s,l as c,u as l}from"./simple-options-D8vGmEnp.js";import{f as u,t as d,u as f}from"./tray-follower-status-hrOEFANe.js";import{i as p}from"./telemetry-D728iVf5.js";function m(e){if(!Number.isFinite(e)||e<=0)return`0 B`;let t=[`B`,`KB`,`MB`,`GB`],n=e,r=0;for(;n>=1024&&r<t.length-1;)n/=1024,r++;return`${n>=10||r===0?Math.round(n):Math.round(n*10)/10} ${t[r]}`}function h(e){let t=e.mimeType||`application/octet-stream`;return`${e.name} (${t}, ${m(e.size)})`}function g(e,t=`The original file lives on a remote runtime and is not accessible here.`){return e?.length?e.map(e=>{if(!e.path)return{...e};let{path:n,...r}=e;return e.kind===`image`&&e.data||e.kind===`text`&&e.text!==void 0?r:{...r,error:r.error??t}}):[]}var _=t(`image-processor`),v=3932160,y=1568,b=new Set([`image/jpeg`,`image/png`,`image/gif`,`image/webp`]);function x(e){return b.has(e)}function S(e,t){try{if(t===`image/png`){if(e.length<32)return null;let t=atob(e.slice(0,32)),n=t.charCodeAt(16)<<24|t.charCodeAt(17)<<16|t.charCodeAt(18)<<8|t.charCodeAt(19),r=t.charCodeAt(20)<<24|t.charCodeAt(21)<<16|t.charCodeAt(22)<<8|t.charCodeAt(23);return n>0&&r>0?{width:n,height:r}:null}if(t===`image/gif`){if(e.length<16)return null;let t=atob(e.slice(0,16)),n=t.charCodeAt(6)|t.charCodeAt(7)<<8,r=t.charCodeAt(8)|t.charCodeAt(9)<<8;return n>0&&r>0?{width:n,height:r}:null}if(t===`image/jpeg`){let t=Math.min(21846*4,e.length),n=atob(e.slice(0,t));for(let e=0;e<n.length-8;e++)if(n.charCodeAt(e)===255){let t=n.charCodeAt(e+1);if(t===192||t===194){let t=n.charCodeAt(e+5)<<8|n.charCodeAt(e+6),r=n.charCodeAt(e+7)<<8|n.charCodeAt(e+8);return r>0&&t>0?{width:r,height:t}:null}}}}catch{}return null}async function C(e){if(!x(e.mimeType))return _.warn(`Unsupported image format`,{mimeType:e.mimeType}),{type:`text`,text:`[Image removed: unsupported format "${e.mimeType}". Supported: JPEG, PNG, GIF, WebP]`};let t=e.data.length,r=S(e.data,e.mimeType);if(!(t>5242880||r!==null&&(r.width>8e3||r.height>8e3)||r!==null&&Math.max(r.width,r.height)>1568))return e;_.info(`Image needs processing`,{base64Size:t,dimensions:r?`${r.width}x${r.height}`:`unknown`,reason:t>5242880?`size`:`dimensions`});let i,a;try{let e=await n(()=>import(`./magick-wasm-D4Na_fL8.js`),__vite__mapDeps([0,1,2]));i=e.getMagick,a=e.MIME_TO_MAGICK_FORMAT}catch(e){return _.error(`ImageMagick WASM module unavailable`,{error:e instanceof Error?e.message:String(e)}),{type:`text`,text:`[Image removed: resize service unavailable (ImageMagick WASM could not be loaded)]`}}let o;try{o=await i()}catch(e){return _.error(`ImageMagick WASM initialization failed`,{error:e instanceof Error?e.message:String(e)}),{type:`text`,text:`[Image removed: resize service unavailable (WASM init failed)]`}}try{let n=atob(e.data),r=new Uint8Array(n.length);for(let e=0;e<n.length;e++)r[e]=n.charCodeAt(e);let i={data:null,mime:e.mimeType};if(await o.ImageMagick.read(r,async t=>{let n=t.width,r=t.height,o=Math.max(n,r);if(o>1568){let e=y/o,i=Math.round(n*e),a=Math.round(r*e);t.resize(i,a),_.info(`Resized image`,{from:`${n}x${r}`,to:`${i}x${a}`})}let s=a[e.mimeType]||`JPEG`;t.write(s,e=>{i.data=new Uint8Array(e)}),i.data&&i.data.length>v&&s!==`JPEG`?(_.info(`Still over 5MB, compressing to JPEG q80`),t.quality=80,t.write(`JPEG`,e=>{i.data=new Uint8Array(e)}),i.mime=`image/jpeg`):i.data&&i.data.length>v&&(_.info(`Still over 5MB as JPEG, reducing quality to 60`),t.quality=60,t.write(`JPEG`,e=>{i.data=new Uint8Array(e)}))}),!i.data)return _.warn(`ImageMagick produced no output`),{type:`text`,text:`[Image removed: could not be processed (empty output from resize)]`};if(i.data.length>v)return _.warn(`Image still over 5MB after resize+compress`,{size:i.data.length}),{type:`text`,text:`[Image removed: still ${Math.round(i.data.length/1024/1024*10)/10}MB after resize and compression, exceeds 5MB API limit]`};let s=``;for(let e=0;e<i.data.length;e++)s+=String.fromCharCode(i.data[e]);let c=btoa(s);return _.info(`Image processed successfully`,{originalBase64:t,newBase64:c.length,mimeType:i.mime}),{type:`image`,data:c,mimeType:i.mime}}catch(n){return _.error(`Image data processing failed (corrupt or unreadable)`,{mimeType:e.mimeType,estimatedBytes:t,error:n instanceof Error?n.message:String(n)}),{type:`text`,text:`[Image removed: image data could not be processed (${n instanceof Error?n.message:`corrupt or unreadable`})]`}}}var w=`agent-sessions`,T=1,E=`sessions`;function D(){return new Promise((e,t)=>{let n=indexedDB.open(w,T);n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(E)||e.createObjectStore(E,{keyPath:`id`})},n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)})}var O=class{dbPromise=null;getDB(){return this.dbPromise||=D(),this.dbPromise}async save(e){let t=await this.getDB();return new Promise((n,r)=>{let i=t.transaction(E,`readwrite`).objectStore(E).put(e);i.onsuccess=()=>n(),i.onerror=()=>r(i.error)})}async load(e){let t=await this.getDB();return new Promise((n,r)=>{let i=t.transaction(E,`readonly`).objectStore(E).get(e);i.onsuccess=()=>n(i.result??null),i.onerror=()=>r(i.error)})}async delete(e){let t=await this.getDB();return new Promise((n,r)=>{let i=t.transaction(E,`readwrite`).objectStore(E).delete(e);i.onsuccess=()=>n(),i.onerror=()=>r(i.error)})}async list(){let e=await this.getDB();return new Promise((t,n)=>{let r=e.transaction(E,`readonly`).objectStore(E).getAll();r.onsuccess=()=>{t((r.result??[]).map(e=>({id:e.id,updatedAt:e.updatedAt})))},r.onerror=()=>n(r.error)})}async clearAll(){let e=await this.getDB();return new Promise((t,n)=>{let r=e.transaction(E,`readwrite`).objectStore(E).clear();r.onsuccess=()=>t(),r.onerror=()=>n(r.error)})}static newId(){return`session-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}static createSession(e,t){let n=Date.now();return{id:e,messages:[],config:t,createdAt:n,updatedAt:n}}static updateMessages(e,t){return{...e,messages:t,updatedAt:Date.now()}}};t(`tool-adapter`),t(`context-compaction`);function k(e){let t=[];for(let n of e){let e=n;switch(e.role){case`user`:t.push(`<user>\n${A(e.content)}\n</user>`);break;case`assistant`:t.push(`<assistant>\n${A(e.content)}\n</assistant>`);break;case`toolResult`:{let n=e.toolName??`tool`;t.push(`<tool-result name="${n}">\n${A(e.content)}\n</tool-result>`);break}case`bashExecution`:t.push(`<bash>\n$ ${e.command??``}\n${e.output??``}\n</bash>`);break;case`branchSummary`:case`compactionSummary`:t.push(`<prior-summary>\n${e.summary??``}\n</prior-summary>`);break;default:t.push(`<${e.role}>\n${A(e.content)}\n</${e.role}>`)}}return t.join(`
|
|
3
|
+
|
|
4
|
+
`)}function A(e){if(typeof e==`string`)return e;if(!Array.isArray(e))return``;let t=[];for(let n of e){let e=n;e.type===`text`&&e.text?t.push(e.text):e.type===`thinking`&&e.thinking?t.push(`[thinking] ${e.thinking}`):e.type===`toolCall`?t.push(`[tool-call ${e.name??`?`}] ${JSON.stringify(e.arguments??{})}`):e.type===`image`&&t.push(`[image]`)}return t.join(`
|
|
5
|
+
`)}var j=`From the conversation above, extract durable memories worth persisting to a global memory file shared across future sessions.
|
|
6
|
+
|
|
7
|
+
Focus on:
|
|
8
|
+
- User preferences, working style, opinions stated explicitly.
|
|
9
|
+
- Stable project facts (architecture decisions, conventions, constraints).
|
|
10
|
+
- Validated approaches the user accepted ("yes, exactly", "perfect"), not just corrections.
|
|
11
|
+
- External resources/links the user named.
|
|
12
|
+
|
|
13
|
+
DO NOT include:
|
|
14
|
+
- Ephemeral state (current task, in-progress work).
|
|
15
|
+
- Information already obvious from the codebase (file paths, function names, framework conventions).
|
|
16
|
+
- Generic restatements of what the conversation was about.
|
|
17
|
+
|
|
18
|
+
If nothing in the conversation is worth persisting, return exactly the single line:
|
|
19
|
+
NONE
|
|
20
|
+
|
|
21
|
+
Otherwise, output ONLY a markdown bullet list (one bullet per memory), no headers, no preamble, no follow-up. Each bullet is one line. Be specific. Prefer one fact per bullet over multi-clause sentences.`;function M(e){return`You are a context compaction assistant. You are shown the prefix of a conversation between a user and an AI coding assistant, and asked to produce either a structured summary, durable memory bullets, or a short title — depending on the user's instruction.
|
|
22
|
+
|
|
23
|
+
Do NOT continue the conversation. Do NOT answer questions inside the conversation. Output ONLY what the user asks for in the format specified.
|
|
24
|
+
|
|
25
|
+
<conversation>
|
|
26
|
+
${e}
|
|
27
|
+
</conversation>`}async function N(e,t,n,i,a,o,s){let c=await r(e,{systemPrompt:n,messages:[{role:`user`,content:[{type:`text`,text:i}],timestamp:Date.now()}]},{maxTokens:a,apiKey:t,headers:o,signal:s});if(c.stopReason===`error`)throw Error(`Compaction call failed: ${c.errorMessage||`Unknown error`}`);return c.content.filter(e=>e.type===`text`).map(e=>e.text).join(`
|
|
28
|
+
`).trim()}async function ee(e){let t=M(k(e.messages));return N(e.model,e.apiKey,t,e.instruction,e.maxTokens,e.headers,e.signal)}var te=j,ne=`Generate a short title (3 to 6 words) summarizing what this conversation was about. Output ONLY the title text — no quotes, no punctuation other than what belongs in the title, no preamble.`;function re(e,t){if(e.state===`inactive`&&t.state===`inactive`)return{kind:`hidden`};if(e.state===`leader`&&e.session?.joinUrl)return{kind:`leader-copy`,joinUrl:e.session.joinUrl,label:`Enable multi-browser sync`,caption:`Share this URL to connect more browsers.`};if(e.state!==`inactive`){let t=e.state===`connecting`?`Setting up multi-browser sync…`:e.state===`reconnecting`?`Reconnecting…`:`Sync service unreachable.`;return{kind:`leader-pending`,label:`Multi-browser sync`,caption:e.error??t}}return{kind:`follower`,label:`Multi-browser sync`,caption:t.error??t.lastError??ie(t.state)??`Mirroring another browser.`}}function ie(e){switch(e){case`connected`:return`Connected — mirroring another browser.`;case`connecting`:return`Connecting to the other browser…`;case`reconnecting`:return`Reconnecting…`;case`disconnected`:return`Disconnected from the other browser.`;default:return null}}function ae(e){let t=e.trim();if(!t)return`Paste a sync URL to continue.`;let n=null;try{n=new URL(t)}catch{return`That doesn’t look like a URL. Paste the full https://… link from the other browser.`}return n.protocol!==`https:`&&n.protocol!==`http:`?`Sync URLs must start with https://.`:n.pathname.includes(`/join/`)?`That sync URL is malformed. Re-copy it from the other browser and try again.`:`This URL is missing the /join/… capability. Use “Enable multi-browser sync” on the other browser.`}var oe=Object.assign({"/packages/dev-tools/providers.build.json":{include:[`*`],exclude:[]}})[`/packages/dev-tools/providers.build.json`]??{include:[`*`],exclude:[]};function se(e){let{include:t,exclude:n}=oe;return n.includes(`*`)||n.includes(e)?!1:!!(t.includes(`*`)||t.includes(e))}var ce=Object.assign({"./built-in/azure-ai-foundry.ts":()=>n(()=>import(`./azure-ai-foundry--QIByvkN.js`),[]),"./built-in/azure-openai.ts":()=>n(()=>import(`./azure-openai-C3jQCjj8.js`),__vite__mapDeps([3,4,5,1,6,7,8,9])),"./built-in/bedrock-camp.ts":()=>n(()=>import(`./bedrock-camp-DChwr7KC.js`).then(e=>e.n),__vite__mapDeps([4,5,1,6,7,8])),"./built-in/local-llm.ts":()=>n(()=>import(`./local-llm-4QCHSjR3.js`),__vite__mapDeps([10,4,5,1,6,7,8,11,12,13,14,9,15]))}),le=Object.assign({"/packages/webapp/providers/adobe.ts":()=>n(()=>import(`./adobe-QXZCy565.js`),__vite__mapDeps([16,17,5,1,4,6,7,8,18,15,19,20,21,22,23,24,25,2,26,27,28,29,30])),"/packages/webapp/providers/github.ts":()=>n(()=>import(`./github-CR01A3Pd.js`),__vite__mapDeps([31,1,4,5,6,7,8,23,29,30])),"/packages/webapp/providers/xai-grok-errors.ts":()=>n(()=>import(`./xai-grok-errors-DGVLpB4k.js`),[]),"/packages/webapp/providers/xai-grok-models.ts":()=>n(()=>import(`./xai-grok-models-DGbQVjGO.js`),[]),"/packages/webapp/providers/xai-grok-sanitize.ts":()=>n(()=>import(`./xai-grok-sanitize-DsBfxZb8.js`),__vite__mapDeps([32,33])),"/packages/webapp/providers/xai-grok.ts":()=>n(()=>import(`./xai-grok-cGh8uXu4.js`),__vite__mapDeps([34,4,5,1,6,7,8,35,33,32]))}),P=new Map,F=null;function ue(){return F||(F=(async()=>{for(let[e,t]of Object.entries(ce)){let e=await t();e.config&&se(e.config.id)&&(P.set(e.config.id,e.config),e.register?.())}for(let[e,t]of Object.entries(le)){let e=await t();e.config&&(P.set(e.config.id,e.config),e.register?.())}})(),F)}function de(e){return P.get(e)}function fe(){return[...P.keys()]}[`ghp_`,`gho_`,`ghu_`,`ghs_`,`ghr_`,`github_pat_`,`sk-`,`pk-`,`xoxb-`,`xoxp-`,`xoxa-`,`xoxs-`,`AKIA`,`ABIA`,`ACCA`,`ASIA`,`sk-ant-`,`Bearer `].sort((e,t)=>t.length-e.length);var pe=`slicc_oauth_extra_domains`;function I(e){try{let t=e.getItem(pe);if(!t)return{};let n=JSON.parse(t);if(typeof n!=`object`||!n||Array.isArray(n))return{};let r={};for(let[e,t]of Object.entries(n)){if(typeof e!=`string`||!Array.isArray(t))continue;let n=t.filter(e=>typeof e==`string`&&e.length>0);n.length>0&&(r[e]=n)}return r}catch{return{}}}function me(e,t){try{e.setItem(pe,JSON.stringify(t))}catch(e){throw Error(`Failed to persist OAuth extras (localStorage quota exceeded?): ${e instanceof Error?e.message:String(e)}`)}}var he=e({addAccount:()=>J,applyProviderDefaults:()=>Ce,clearAllSettings:()=>Ve,describeInvalidJoinUrl:()=>ae,downloadProviders:()=>Be,exportProviders:()=>ze,getAccounts:()=>K,getAllAvailableModels:()=>De,getAllExtraOAuthDomains:()=>Ae,getApiKey:()=>Re,getApiKeyForProvider:()=>Ne,getApiVersionForProvider:()=>Fe,getAvailableProviders:()=>V,getBaseUrlForProvider:()=>X,getDeploymentForProvider:()=>Pe,getExtraOAuthDomains:()=>Oe,getOAuthAccountInfo:()=>xe,getProviderConfig:()=>H,getProviderModels:()=>W,getSelectedModelId:()=>Z,getSelectedProvider:()=>Q,isModelHiddenFromPicker:()=>Te,removeAccount:()=>Y,resolveCurrentModel:()=>$,resolveModelById:()=>He,saveOAuthAccount:()=>je,setExtraOAuthDomains:()=>ke,setSelectedModelId:()=>Ie,showProviderSettings:()=>Ke}),L=c,R=l;function ge(){return typeof chrome<`u`&&!!chrome?.runtime?.id}function _e(e,t){let n=`tray-join-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,r=!1,i,a=()=>{r||(r=!0,i!==void 0&&clearTimeout(i),window.removeEventListener(`slicc:tray-join-failed`,o))},o=r=>{let i=r.detail;if(i.requestId!==void 0&&i.requestId!==n)return;if(a(),!t.isConnected){G.error(`Tray-join failure arrived after dialog dismissed (UX swallowed half-state)`,{joinUrl:e,error:i.error,requestId:n});return}let o=t.dataset.dismissTimer;if(o){let e=Number(o);Number.isFinite(e)&&clearTimeout(e),delete t.dataset.dismissTimer}t.textContent=`Sync failed: ${i.error}. Reload the page and try again.`,t.style.color=`var(--slicc-cone)`};return window.addEventListener(`slicc:tray-join-failed`,o),i=setTimeout(a,1e4),window.dispatchEvent(new CustomEvent(`slicc:tray-join`,{detail:{joinUrl:e,requestId:n}})),a}var z=`slicc_accounts`,B=`selected-model`,ve=[`slicc_provider`,`slicc_api_key`,`slicc_base_url`,`anthropic_api_key`,`api_provider`,`azure_resource`,`bedrock_region`],ye=!1;function be(){if(!ye){ye=!0;for(let e of ve)try{localStorage.removeItem(e)}catch{}}}function V(){let e=s().filter(se),t=fe();return[...new Set([...e,...t])]}function H(e){return de(e)||{id:e,name:e.split(`-`).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `),description:`${e} provider`,requiresApiKey:!0,requiresBaseUrl:!1}}function U(e,t){t.context_window!==void 0&&(e.contextWindow=t.context_window),t.max_tokens!==void 0&&(e.maxTokens=t.max_tokens),t.reasoning!==void 0&&(e.reasoning=t.reasoning),t.input!==void 0&&(e.input=t.input),t.compat!==void 0&&(e.compat={...e.compat??{},...t.compat})}function W(e){try{if(e===`bedrock-camp`){let e=o(X(`bedrock-camp`)),t=R(`amazon-bedrock`).filter(t=>i(t,e)),n=new Set(t.map(e=>e.id)),r=a().filter(t=>i(t,e)&&!n.has(t.id));return[...t,...r].map(e=>({...e,api:`bedrock-camp-converse`,provider:`bedrock-camp`}))}let t=H(e);if(t.getModelIds){let n;try{n=t.getModelIds()}catch(t){return G.error(`Provider getModelIds callback failed`,{providerId:e,error:t instanceof Error?t.message:String(t)}),[]}let r=new Map;for(let e of s())try{for(let t of R(e))r.set(t.id,t)}catch{}return n.map(n=>{let i=`${e}-${n.api===`openai`?`openai`:`anthropic`}`,a=r.get(n.id),o=a?{...a,api:i,provider:e}:{id:n.id,name:n.name??n.id,provider:e,api:i,baseUrl:``,contextWindow:2e5,maxTokens:16384,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},inputCost:0,outputCost:0,cacheReadCost:0,cacheWriteCost:0,reasoning:!0},s=t.modelOverrides?.[n.id];return s&&U(o,s),U(o,n),o})}if(t.isOAuth){let n=R(`anthropic`),r=`${e}-anthropic`;return n.map(n=>{let i={...n,api:r,provider:e},a=t.modelOverrides?.[n.id];return a&&U(i,a),i})}return R(e===`azure-ai-foundry`?`anthropic`:e)}catch(t){return G.error(`Failed to load models`,{providerId:e,error:t instanceof Error?t.message:String(t)}),[]}}function xe(e){let t=K().find(t=>t.providerId===e);if(!t?.accessToken)return null;let n=!!t.tokenExpiresAt&&Date.now()>t.tokenExpiresAt-6e4;return{token:t.accessToken,maskedValue:t.maskedValue,expiresAt:t.tokenExpiresAt,userName:t.userName,userAvatar:t.userAvatar,expired:n}}var Se=Object.assign({})[`/packages/webapp/providers.json`]??[],G=t(`provider-settings`);function Ce(e=Se){if(e.length===0||K().length>0)return;let t=new Set(V());for(let n of e)if(!(!n.providerId||!n.apiKey)){if(!t.has(n.providerId)){G.warn(`Unknown provider "${n.providerId}" in providers.json — skipping`);continue}J(n.providerId,n.apiKey,n.baseUrl)}let n=e.find(e=>e.providerId&&e.apiKey&&t.has(e.providerId));n?.model&&!localStorage.getItem(B)&&localStorage.setItem(B,`${n.providerId}:${n.model}`)}var we=[/haiku/i];function Te(e){return we.some(t=>t.test(e))}function Ee(e){return e.filter(e=>!Te(e.id))}function De(){let e=K();if(e.length===0)return[];let t=new Map;for(let n of e){if(t.has(n.providerId))continue;let e=Ee(W(n.providerId));if(e.length===0)continue;let r=H(n.providerId),i={providerId:n.providerId,providerName:r.name,models:e};t.set(n.providerId,i)}return[...t.values()]}function K(){be();let e=localStorage.getItem(z);if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`object`&&!!e&&typeof e.providerId==`string`&&typeof e.apiKey==`string`):[]}catch{return[]}}function Oe(e){return I(localStorage)[e]??[]}function ke(e,t){let n=I(localStorage),r=t.map(e=>e.trim()).filter(e=>e.length>0);r.length===0?delete n[e]:n[e]=r,me(localStorage,n)}function Ae(){return I(localStorage)}function q(e){localStorage.setItem(z,JSON.stringify(e))}function J(e,t,n,r,i){let a=K().filter(t=>t.providerId!==e),o={providerId:e,apiKey:t};n&&(o.baseUrl=n),r&&(o.deployment=r),i&&(o.apiVersion=i),a.push(o),q(a)}async function Y(e){let t=typeof chrome<`u`&&!!chrome?.runtime?.id;try{if(t)await chrome.storage.local.remove([`oauth.${e}.token`,`oauth.${e}.token_DOMAINS`]);else{let t=await fetch(`/api/secrets/oauth/${e}`,{method:`DELETE`});!t.ok&&t.status!==404&&G.warn(`OAuth replica DELETE non-ok`,{providerId:e,status:t.status})}}catch(n){G.error(`OAuth replica removal failed`,{providerId:e,isExtension:t,error:n instanceof Error?n.message:String(n)})}q(K().filter(t=>t.providerId!==e));let n=localStorage.getItem(B)??``,r=n.indexOf(`:`);r>0&&n.slice(0,r)===e&&localStorage.removeItem(B)}async function je(e){let t=K().find(t=>t.providerId===e.providerId),n=K().filter(t=>t.providerId!==e.providerId);n.push({providerId:e.providerId,apiKey:``,accessToken:e.accessToken,refreshToken:e.refreshToken,tokenExpiresAt:e.tokenExpiresAt,userName:e.userName,userAvatar:e.userAvatar,baseUrl:e.baseUrl??t?.baseUrl}),q(n);let r=H(e.providerId)?.oauthTokenDomains??[],i=Oe(e.providerId),a=new Set,o=[];for(let e of[...r,...i]){let t=e.toLowerCase();a.has(t)||(a.add(t),o.push(e))}if(o.length===0)return;let s=typeof chrome<`u`&&!!chrome?.runtime?.id;try{if(s){await chrome.storage.local.set({[`oauth.${e.providerId}.token`]:e.accessToken,[`oauth.${e.providerId}.token_DOMAINS`]:o.join(`,`)});let t=await new Promise(t=>{chrome.runtime.sendMessage({type:`secrets.mask-oauth-token`,providerId:e.providerId},n=>{chrome.runtime.lastError&&G.error(`SW mask-oauth-token transport failed`,{providerId:e.providerId,error:chrome.runtime.lastError.message}),t(n??{})})});if(t.error&&G.warn(`SW mask-oauth-token returned error`,{providerId:e.providerId,error:t.error}),t.maskedValue){let n=K(),r=n.find(t=>t.providerId===e.providerId);r&&(r.maskedValue=t.maskedValue,q(n))}}else{let t=await fetch(`/api/secrets/oauth-update`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({providerId:e.providerId,accessToken:e.accessToken,domains:o})});if(t.ok){let n=await t.json(),r=K(),i=r.find(t=>t.providerId===e.providerId);i&&typeof n.maskedValue==`string`&&(i.maskedValue=n.maskedValue,q(r))}else G.warn(`OAuth replica POST non-ok`,{providerId:e.providerId,status:t.status})}}catch(t){G.error(`OAuth replica sync failed`,{providerId:e.providerId,isExtension:s,error:t instanceof Error?t.message:String(t)})}}var Me=`local`;function Ne(e){let t=K().find(t=>t.providerId===e);return t?t.accessToken||t.apiKey||(H(e).optionalApiKey?Me:null):null}function X(e){return K().find(t=>t.providerId===e)?.baseUrl??null}function Pe(e){return K().find(t=>t.providerId===e)?.deployment??null}function Fe(e){return K().find(t=>t.providerId===e)?.apiVersion??null}function Z(){let e=localStorage.getItem(B)||``,t=e.indexOf(`:`);return t>=0?e.slice(t+1):e}function Ie(e){if(e.includes(`:`))localStorage.setItem(B,e);else{let t=Q();localStorage.setItem(B,`${t}:${e}`)}}function Le(){return localStorage.getItem(B)||``}function Q(){let e=Le(),t=e.indexOf(`:`);if(t>0)return e.slice(0,t);let n=K();return n.length>0?n[0].providerId:`anthropic`}function Re(){return Ne(Q())}function ze(){let e=K(),t=Q(),n=Z();return e.map(e=>{let r={providerId:e.providerId,apiKey:e.apiKey};return e.baseUrl&&(r.baseUrl=e.baseUrl),e.providerId===t&&n&&(r.model=n),r})}function Be(){let e=JSON.stringify(ze(),null,2),t=new Blob([e],{type:`application/json`}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=`providers.json`,r.click(),URL.revokeObjectURL(n)}async function Ve(){let e=K();await Promise.allSettled(e.map(e=>Y(e.providerId))),localStorage.removeItem(z),localStorage.removeItem(B);for(let e of ve)localStorage.removeItem(e)}function He(e){if(!e)return $();let t=Q(),n=X(t);try{let r=H(t),i=L(r.isOAuth||t===`azure-ai-foundry`?`anthropic`:t===`bedrock-camp`?`amazon-bedrock`:t,e);if(!i?.id)throw Error(`Model ${e} not found`);let a=i;return r.isOAuth?a=W(t).find(t=>t.id===e)||{...a,api:`${t}-anthropic`,provider:t}:t===`bedrock-camp`&&(a={...a,api:`bedrock-camp-converse`,provider:`bedrock-camp`}),n&&(a={...a,baseUrl:n}),a}catch{return $()}}function $(){let e=Q(),t=Z(),n=X(e),r=W(e),i=H(e),a=i.defaultModelId?r.find(e=>e.id.toLowerCase().includes(i.defaultModelId.toLowerCase()))?.id:void 0,o=t||a||r[0]?.id||`claude-sonnet-4-6`;try{let t=H(e),i=t.isOAuth||e===`azure-ai-foundry`?`anthropic`:e===`bedrock-camp`?`amazon-bedrock`:e,a=L(i,o);if(!a?.id)throw Error(`Model ${o} not found in ${i} registry`);let s=a;return t.isOAuth?s=r.find(e=>e.id===o)||{...s,api:`${e}-anthropic`,provider:e}:e===`bedrock-camp`&&(s={...s,api:`bedrock-camp-converse`,provider:`bedrock-camp`}),n&&(s={...s,baseUrl:n}),s}catch{let e=r.find(e=>e.id===o);return e?n?{...e,baseUrl:n}:e:L(`anthropic`,`claude-sonnet-4-0`)}}function Ue(e){return e.length<=10?`****`:e.slice(0,4)+`...`+e.slice(-4)}function We(e){let t=`http://www.w3.org/2000/svg`,n=document.createElementNS(t,`svg`);n.setAttribute(`width`,`14`),n.setAttribute(`height`,`14`),n.setAttribute(`viewBox`,`0 0 20 20`),n.setAttribute(`fill`,`none`),n.setAttribute(`stroke`,`currentColor`),n.setAttribute(`stroke-width`,`1.5`),n.setAttribute(`stroke-linecap`,`round`),n.setAttribute(`stroke-linejoin`,`round`);for(let r of e){let e=document.createElementNS(t,`path`);e.setAttribute(`d`,r),n.appendChild(e)}return n}var Ge={pen:[`M14.3 3.3a1.5 1.5 0 0 1 2.1 0l.3.3a1.5 1.5 0 0 1 0 2.1L7.7 14.8l-3.2.7.7-3.2z`],trash:[`M4 6h12`,`M8 6V4a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2`,`M6 6v10a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V6`]};function Ke(e){return p(`button`),new Promise(t=>{let r=localStorage.getItem(z)??``,i=document.createElement(`div`);i.className=`dialog-overlay`;let a=document.createElement(`div`);a.className=`dialog`,a.style.cssText=`max-width: 480px; width: 90vw; padding: 32px;`,K().length>0?o():e?.autoJoinUrl?c(e.autoJoinUrl):e?.preferTrayJoin?l():s(),i.appendChild(a),document.body.appendChild(i);function o(){a.innerHTML=``;let e=document.createElement(`div`);e.className=`dialog__title`,e.textContent=`Accounts`,a.appendChild(e);let n=K(),c=`background: transparent; border: 1px solid var(--s2-border-subtle); color: var(--s2-content-secondary); border-radius: var(--s2-radius-s); padding: 6px; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: color 0.15s, border-color 0.15s;`;if(n.length===0){let e=document.createElement(`div`);e.className=`dialog__desc`,e.textContent=`No accounts configured.`,a.appendChild(e)}else{let e=document.createElement(`div`);e.style.cssText=`margin-bottom: 16px;`;for(let t of n){let n=H(t.providerId),r=document.createElement(`div`);r.style.cssText=`display: flex; align-items: center; justify-content: space-between; padding: 10px 12px; background: var(--s2-bg-layer-2); border-radius: var(--s2-radius-default); margin-bottom: 8px; border: 1px solid var(--s2-border-subtle);`;let i=document.createElement(`div`);i.style.cssText=`flex: 1; min-width: 0;`;let a=document.createElement(`div`);a.style.cssText=`font-size: 14px; font-weight: 600; color: var(--s2-content-default);`,a.textContent=n.name,i.appendChild(a);let l=document.createElement(`div`);l.style.cssText=`font-size: 11px; color: var(--s2-content-disabled); font-family: monospace; margin-top: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;`,t.userName?l.textContent=t.userName:t.accessToken?l.textContent=`Logged in`:l.textContent=Ue(t.apiKey),t.baseUrl&&(l.textContent+=` • `+t.baseUrl),i.appendChild(l),r.appendChild(i);let u=document.createElement(`div`);u.style.cssText=`display: flex; gap: 4px; margin-left: 12px; flex-shrink: 0;`;let d=document.createElement(`button`);d.style.cssText=c,d.setAttribute(`aria-label`,`Edit account`),d.appendChild(We(Ge.pen)),d.addEventListener(`mouseenter`,()=>{d.style.color=`var(--s2-accent)`,d.style.borderColor=`var(--s2-accent)`}),d.addEventListener(`mouseleave`,()=>{d.style.color=`var(--s2-content-secondary)`,d.style.borderColor=`var(--s2-border-subtle)`}),d.addEventListener(`click`,()=>{s(t)}),u.appendChild(d);let f=document.createElement(`button`);f.style.cssText=c,f.setAttribute(`aria-label`,`Remove account`),f.appendChild(We(Ge.trash)),f.addEventListener(`mouseenter`,()=>{f.style.color=`var(--s2-negative)`,f.style.borderColor=`var(--s2-negative)`}),f.addEventListener(`mouseleave`,()=>{f.style.color=`var(--s2-content-secondary)`,f.style.borderColor=`var(--s2-border-subtle)`}),f.addEventListener(`click`,async()=>{await Y(t.providerId),o()}),u.appendChild(f),r.appendChild(u),e.appendChild(r)}a.appendChild(e)}let u=document.createElement(`div`);u.style.cssText=`display: flex; gap: 8px;`;let p=document.createElement(`button`);p.className=n.length>0?`dialog__btn dialog__btn--secondary`:`dialog__btn`,p.style.flex=`1`,p.textContent=`Add Account`,p.addEventListener(`click`,()=>s()),u.appendChild(p);let m=document.createElement(`button`);m.className=`dialog__btn dialog__btn--secondary`,m.style.flex=`1`,m.textContent=`Export`,m.addEventListener(`click`,()=>Be()),u.appendChild(m),a.appendChild(u);let h=document.createElement(`hr`);h.style.cssText=`border: none; border-top: 1px solid var(--s2-border-subtle); margin: 16px 0;`,a.appendChild(h);let g=document.createElement(`div`);g.className=`dialog__desc`,g.style.cssText=`font-weight: 600; margin-bottom: 8px;`,g.textContent=`Tray`,a.appendChild(g);let _=d(),v=_.state!==`inactive`,y=f(window.localStorage);if(v||y){let e=document.createElement(`div`);e.style.cssText=`font-size: 12px; color: var(--s2-content-secondary); margin-bottom: 8px;`,e.textContent=`Follower: ${v?_.state:`configured`}`,_.error&&(e.textContent+=` — ${_.error}`,e.style.color=`var(--slicc-cone)`),a.appendChild(e)}let b=document.createElement(`button`);b.className=`dialog__btn dialog__btn--secondary`,b.textContent=v||y?`Reconnect to other browser`:`Connect to another browser`,b.addEventListener(`click`,()=>l()),a.appendChild(b);let x=document.createElement(`hr`);x.style.cssText=`border: none; border-top: 1px solid var(--s2-border-subtle); margin: 16px 0;`,a.appendChild(x);let S=document.createElement(`button`);S.className=`dialog__btn`,S.textContent=`Get Started`,S.addEventListener(`click`,()=>{i.remove(),t((localStorage.getItem(z)??``)!==r)}),a.appendChild(S)}function s(e){a.innerHTML=``;let t=!!e,r=document.createElement(`div`);r.className=`dialog__title`,r.textContent=t?`Edit Account`:`Add Account`,a.appendChild(r);let i=document.createElement(`div`);i.className=`dialog__desc`,i.textContent=`Provider:`,a.appendChild(i);let s=document.createElement(`select`);if(s.className=`dialog__input`,s.style.marginBottom=`8px`,t){let t=H(e.providerId),n=document.createElement(`option`);n.value=e.providerId,n.textContent=t.name,s.appendChild(n),s.disabled=!0,s.style.opacity=`0.7`}else{let e=V(),t=new Set(K().map(e=>e.providerId)),n=[...e].sort((e,t)=>{let n=H(e).name,r=H(t).name;return n.localeCompare(r)});for(let e of n){if(t.has(e))continue;let n=H(e),r=document.createElement(`option`);r.value=e,r.textContent=n.name,s.appendChild(r)}}a.appendChild(s);let c=document.createElement(`div`);c.className=`dialog__desc`,c.style.cssText=`font-size: 12px; color: var(--s2-content-tertiary); margin-bottom: 16px; margin-top: -4px;`,a.appendChild(c);let u=document.createElement(`div`);u.style.cssText=`margin-bottom: 16px; display: none;`;let d=document.createElement(`button`);d.className=`dialog__btn`,d.textContent=`Login`,d.style.cssText=`width: 100%; margin-bottom: 8px;`,u.appendChild(d);let f=document.createElement(`div`);f.className=`dialog__desc`,f.style.cssText=`font-size: 12px; color: var(--s2-content-secondary); text-align: center;`,u.appendChild(f),d.addEventListener(`click`,async()=>{let e=s.value;if(!e)return;let t=H(e);if(!t.onOAuthLogin&&!t.onOAuthLoginIntercepted)return;let r=K().some(t=>t.providerId===e),i=X(e);if(t.requiresBaseUrl&&!v.value.trim()&&!i){f.textContent=`Base URL is required.`,f.style.color=`var(--slicc-cone)`,v.focus();return}t.requiresBaseUrl&&v.value.trim()&&J(e,``,v.value.trim()),f.textContent=`Opening login window...`;try{if(t.onOAuthLoginIntercepted){let{createInterceptingOAuthLauncherForCurrentRuntime:e}=await n(async()=>{let{createInterceptingOAuthLauncherForCurrentRuntime:e}=await import(`./oauth-service--O2P_cH3.js`);return{createInterceptingOAuthLauncherForCurrentRuntime:e}},__vite__mapDeps([29,1,30,5])),r=await e();if(!r)throw Error(`No controlled-browser CDP transport available — open SLICC in standalone mode or the Chrome extension.`);await t.onOAuthLoginIntercepted(r,o)}else if(t.onOAuthLogin){let{createOAuthLauncher:e}=await n(async()=>{let{createOAuthLauncher:e}=await import(`./oauth-service--O2P_cH3.js`);return{createOAuthLauncher:e}},__vite__mapDeps([29,1,30,5])),r=e();await t.onOAuthLogin(r,o)}}catch(t){if(!r)try{await Y(e)}catch{}G.error(`OAuth login failed`,{providerId:e,error:t instanceof Error?t.message:String(t)}),f.textContent=`Login failed: ${t instanceof Error?t.message:String(t)}`}}),t&&e.userName&&(f.textContent=`Logged in as ${e.userName}`,d.textContent=`Re-login`),a.appendChild(u);let p=document.createElement(`div`),m=document.createElement(`div`);m.className=`dialog__desc`,p.appendChild(m);let h=document.createElement(`input`);h.className=`dialog__input`,h.type=`password`,h.autocomplete=`off`,h.spellcheck=!1,t&&(h.value=e.apiKey),p.appendChild(h),a.appendChild(p);let g=document.createElement(`div`),_=document.createElement(`div`);_.className=`dialog__desc`,_.textContent=`Base URL:`,g.appendChild(_);let v=document.createElement(`input`);v.className=`dialog__input`,v.type=`text`,v.autocomplete=`off`,v.spellcheck=!1,t&&e.baseUrl&&(v.value=e.baseUrl),g.appendChild(v);let y=document.createElement(`div`);y.className=`dialog__desc`,y.style.cssText=`font-size: 11px; color: var(--s2-content-secondary); margin-top: -12px; margin-bottom: 16px;`,g.appendChild(y),a.appendChild(g);let b=document.createElement(`div`);b.style.display=`none`;let x=document.createElement(`div`);x.className=`dialog__desc`,x.textContent=`Deployment:`,b.appendChild(x);let S=document.createElement(`input`);S.className=`dialog__input`,S.type=`text`,S.autocomplete=`off`,S.spellcheck=!1,t&&e.deployment&&(S.value=e.deployment),b.appendChild(S);let C=document.createElement(`div`);C.className=`dialog__desc`,C.style.cssText=`font-size: 11px; color: var(--s2-content-secondary); margin-top: -12px; margin-bottom: 16px;`,b.appendChild(C),a.appendChild(b);let w=document.createElement(`div`);w.style.display=`none`;let T=document.createElement(`div`);T.className=`dialog__desc`,T.textContent=`API Version:`,w.appendChild(T);let E=document.createElement(`input`);E.className=`dialog__input`,E.type=`text`,E.autocomplete=`off`,E.spellcheck=!1,t&&e.apiVersion&&(E.value=e.apiVersion),w.appendChild(E);let D=document.createElement(`div`);D.className=`dialog__desc`,D.style.cssText=`font-size: 11px; color: var(--s2-content-secondary); margin-top: -12px; margin-bottom: 16px;`,w.appendChild(D),a.appendChild(w);let O=document.createElement(`div`);O.style.cssText=`color: var(--slicc-cone); font-size: 12px; margin-bottom: 8px; display: none;`,a.appendChild(O);let k=document.createElement(`button`);k.className=`dialog__btn`,k.textContent=t?`Save`:`Add`;function A(){let e=s.value;if(!e)return;let t=H(e);if(c.textContent=t.description,t.isOAuth)u.style.display=``,p.style.display=`none`,g.style.display=t.requiresBaseUrl?``:`none`,t.requiresBaseUrl&&(v.placeholder=t.baseUrlPlaceholder||`https://...`,y.textContent=t.baseUrlDescription||``),d.textContent=`Login with ${t.name}`,k.style.display=`none`;else{u.style.display=`none`,m.textContent=`${t.requiresApiKey?`API Key`:`API Key (optional)`}${t.apiKeyEnvVar?` (${t.apiKeyEnvVar})`:``}:`,h.placeholder=t.apiKeyPlaceholder||`API key`;let e=t.requiresApiKey||t.optionalApiKey;p.style.display=e?``:`none`,v.placeholder=t.baseUrlPlaceholder||`https://...`,y.textContent=t.baseUrlDescription||``,g.style.display=t.requiresBaseUrl?``:`none`,k.style.display=``}t.requiresDeployment?(b.style.display=``,S.placeholder=t.deploymentPlaceholder||`deployment-name`,C.textContent=t.deploymentDescription||``):b.style.display=`none`,t.requiresApiVersion?(w.style.display=``,!E.value&&t.apiVersionDefault&&(E.value=t.apiVersionDefault),E.placeholder=t.apiVersionDefault||`api-version`,D.textContent=t.apiVersionDescription||``):w.style.display=`none`}s.addEventListener(`change`,()=>{O.style.display=`none`,A()}),A();function j(){let e=s.value;if(!e)return;let t=H(e);if(t.requiresApiKey&&h.value.trim().length<5){O.textContent=`API key is required (at least 5 characters).`,O.style.display=``,h.focus();return}if(t.requiresBaseUrl&&!v.value.trim()){O.textContent=`Base URL is required for this provider.`,O.style.display=``,v.focus();return}if(t.requiresDeployment&&!S.value.trim()){O.textContent=`Deployment name is required for this provider.`,O.style.display=``,S.focus();return}J(e,h.value.trim(),v.value.trim()||void 0,S.value.trim()||void 0,E.value.trim()||void 0),o()}k.addEventListener(`click`,j);let M=e=>{e.key===`Enter`&&j()};h.addEventListener(`keydown`,M),v.addEventListener(`keydown`,M),S.addEventListener(`keydown`,M),E.addEventListener(`keydown`,M),a.appendChild(k);let N=K().length>0;if(!t&&!N){let e=document.createElement(`button`);e.className=`dialog__btn dialog__btn--secondary`,e.style.marginTop=`8px`,e.textContent=`Connect to another browser`,e.addEventListener(`click`,()=>{l()}),a.appendChild(e)}else if(N){let e=document.createElement(`button`);e.className=`dialog__btn dialog__btn--secondary`,e.style.marginTop=`8px`,e.textContent=`Back`,e.addEventListener(`click`,()=>{o()}),a.appendChild(e)}requestAnimationFrame(()=>{let e=s.value;if(!e)return;let t=H(e);t.requiresApiKey?h.focus():t.requiresBaseUrl&&v.focus()})}function c(e){a.innerHTML=``;let n=document.createElement(`div`);n.className=`dialog__title`,n.textContent=`Connect this browser?`,a.appendChild(n);let r=document.createElement(`div`);r.className=`dialog__desc`,r.style.marginBottom=`12px`,r.textContent=`You’ve been invited to mirror another SLICC browser. Click below to start syncing.`,a.appendChild(r);let o=document.createElement(`div`);o.className=`dialog__desc`,o.style.cssText=`font-family: monospace; font-size: 11px; color: var(--s2-content-secondary); word-break: break-all; margin-bottom: 16px; padding: 8px; background: var(--s2-bg-secondary); border-radius: 4px;`,o.textContent=e.length>80?e.slice(0,40)+`…`+e.slice(-37):e,a.appendChild(o);let c=document.createElement(`div`);c.style.cssText=`font-size: 12px; color: var(--s2-content-secondary); margin-bottom: 8px; display: none;`,a.appendChild(c);let l=document.createElement(`button`);l.className=`dialog__btn`,l.textContent=`Connect`,l.addEventListener(`click`,()=>{let n=u(window.localStorage,e);if(!n){c.textContent=`Invalid sync URL.`,c.style.display=``,c.style.color=`var(--slicc-cone)`;return}if(ge()){let e={type:`refresh-tray-runtime`,joinUrl:n.joinUrl,workerBaseUrl:n.workerBaseUrl};chrome.runtime.sendMessage({source:`panel`,payload:e}).catch(()=>{})}else _e(n.joinUrl,c);c.textContent=`Connecting…`,c.style.display=``,c.style.color=`var(--s2-content-secondary)`;let r=setTimeout(()=>{i.remove(),t(!1)},800);c.dataset.dismissTimer=String(r)}),a.appendChild(l);let d=document.createElement(`button`);d.className=`dialog__btn dialog__btn--secondary`,d.style.marginTop=`8px`,d.textContent=`Set up an account instead`,d.addEventListener(`click`,()=>{s()}),a.appendChild(d)}function l(){a.innerHTML=``;let e=document.createElement(`div`);e.className=`dialog__title`,e.textContent=`Connect to another browser`,a.appendChild(e);let n=document.createElement(`div`);n.className=`dialog__desc`,n.style.marginBottom=`12px`,n.textContent=`Paste a multi-browser sync URL to mirror another SLICC browser.`,a.appendChild(n);let r=document.createElement(`details`);r.style.cssText=`margin-bottom: 12px; font-size: 12px; color: var(--s2-content-secondary);`;let o=document.createElement(`summary`);o.style.cssText=`cursor: pointer; user-select: none; color: var(--s2-content-secondary);`,o.textContent=`How do I get the sync URL?`,r.appendChild(o);let c=document.createElement(`div`);c.style.cssText=`margin-top: 8px; padding: 10px 12px; background: var(--s2-bg-layer-2); border-radius: var(--s2-radius-default); border: 1px solid var(--s2-border-subtle); line-height: 1.5;`;let l=document.createElement(`ol`);l.style.cssText=`margin: 0; padding-left: 20px;`;for(let e of[`On the other SLICC, click the avatar (top right).`,`Choose “Enable multi-browser sync” — the URL is copied automatically.`,`Paste it below. Both browsers must be on the same SLICC version.`]){let t=document.createElement(`li`);t.textContent=e,l.appendChild(t)}c.appendChild(l),r.appendChild(c),a.appendChild(r);let d=document.createElement(`div`);d.className=`dialog__desc`,d.textContent=`Sync URL:`,a.appendChild(d);let f=document.createElement(`input`);f.className=`dialog__input`,f.type=`text`,f.autocomplete=`off`,f.spellcheck=!1,f.placeholder=`https://www.sliccy.ai/join/<token>`,a.appendChild(f);let p=document.createElement(`div`);p.style.cssText=`color: var(--slicc-cone); font-size: 12px; margin-bottom: 8px; display: none;`,a.appendChild(p);let m=document.createElement(`div`);m.style.cssText=`font-size: 12px; color: var(--s2-content-secondary); margin-bottom: 8px; display: none;`;let h=document.createElement(`button`);h.className=`dialog__btn`,h.textContent=`Connect`,h.addEventListener(`click`,()=>{let e=f.value.trim();if(!e){p.textContent=`Paste a sync URL to continue.`,p.style.display=``,f.focus();return}let n=u(window.localStorage,e);if(!n){p.textContent=ae(e),p.style.display=``,f.focus();return}if(ge()){let e={type:`refresh-tray-runtime`,joinUrl:n.joinUrl,workerBaseUrl:n.workerBaseUrl};chrome.runtime.sendMessage({source:`panel`,payload:e}).catch(()=>{})}else _e(n.joinUrl,m);m.textContent=`Connecting…`,m.style.display=``,m.style.color=`var(--s2-content-secondary)`;let r=setTimeout(()=>{i.remove(),t(!1)},800);m.dataset.dismissTimer=String(r)}),a.appendChild(h),a.appendChild(m);let g=document.createElement(`button`);g.className=`dialog__btn dialog__btn--secondary`,g.style.marginTop=`8px`,g.textContent=`Back`,g.addEventListener(`click`,()=>{s()}),a.appendChild(g),f.addEventListener(`input`,()=>{p.style.display=`none`}),f.addEventListener(`keydown`,e=>{e.key===`Enter`&&h.click()}),requestAnimationFrame(()=>f.focus())}})}export{x as A,de as C,ne as D,te as E,m as M,h as N,ee as O,g as P,Ke as S,re as T,$ as _,Ae as a,ke as b,X as c,H as d,W as f,Y as g,he as h,De as i,C as j,O as k,Pe as l,Q as m,Ve as n,Re as o,Z as p,K as r,Fe as s,Ce as t,xe as u,He as v,ue as w,Ie as x,je as y};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e}from"./chunk-jRWAZmH_.js";var t={include:[`*`],exclude:[]},n=e({getRegisteredProviderConfig:()=>u,getRegisteredProviderIds:()=>d,registerProviders:()=>l,shouldIncludeProvider:()=>i});const r=Object.assign({"/packages/dev-tools/providers.build.json":t})[`/packages/dev-tools/providers.build.json`]??{include:[`*`],exclude:[]};function i(e){let{include:t,exclude:n}=r;return n.includes(`*`)||n.includes(e)?!1:!!(t.includes(`*`)||t.includes(e))}const a=Object.assign({"./built-in/azure-ai-foundry.ts":()=>import(`./azure-ai-foundry-DtrzZiwo.js`),"./built-in/azure-openai.ts":()=>import(`./azure-openai-PWmjqnnu.js`),"./built-in/bedrock-camp.ts":()=>import(`./bedrock-camp-prTmQ4PG.js`).then(e=>e.n),"./built-in/local-llm.ts":()=>import(`./local-llm-CjP7smbg.js`).then(e=>e.n)}),o=Object.assign({"/packages/webapp/providers/adobe.ts":()=>import(`./adobe-NRB0tB6W.js`),"/packages/webapp/providers/github.ts":()=>import(`./github-BthdVOch.js`),"/packages/webapp/providers/xai-grok-errors.ts":()=>import(`./xai-grok-errors-B7OqxH_0.js`),"/packages/webapp/providers/xai-grok-models.ts":()=>import(`./xai-grok-models-0CbvNCeN.js`),"/packages/webapp/providers/xai-grok-sanitize.ts":()=>import(`./xai-grok-sanitize-DTcvIA0E.js`),"/packages/webapp/providers/xai-grok.ts":()=>import(`./xai-grok-CiMn_9LI.js`)}),s=new Map;let c=null;function l(){return c||(c=(async()=>{for(let[e,t]of Object.entries(a)){let e=await t();e.config&&i(e.config.id)&&(s.set(e.config.id,e.config),e.register?.())}for(let[e,t]of Object.entries(o)){let e=await t();e.config&&(s.set(e.config.id,e.config),e.register?.())}})(),c)}function u(e){return s.get(e)}function d(){return[...s.keys()]}export{i as a,l as i,d as n,n as r,u as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{OffscreenClient as e}from"./offscreen-client-
|
|
1
|
+
import{OffscreenClient as e}from"./offscreen-client-BZIuqCtj.js";function t(e){let t=!1,n=()=>{t||(t=!0,typeof e.start==`function`&&e.start())};return{onMessage:t=>{let r=e=>{t(e.data)};return e.addEventListener(`message`,r),n(),()=>{e.removeEventListener(`message`,r)}},send:t=>{e.postMessage(t)}}}function n(e){let n=t(e);return{onMessage:e=>n.onMessage(e),send:e=>{n.send({source:`panel`,payload:e})}}}function r(e,n){let r=t(e),i=new Map,a=r.onMessage(async e=>{let t=e;if(t?.type){if(t.type===`cdp-cmd`){let t=e;try{let e=await n.send(t.method,t.params,t.sessionId);r.send({type:`cdp-response`,id:t.id,result:e})}catch(e){r.send({type:`cdp-response`,id:t.id,error:e instanceof Error?e.message:String(e)})}return}if(t.type===`cdp-subscribe`){let t=e;if(i.has(t.event))return;let a=e=>{r.send({type:`cdp-event`,method:t.event,params:e})};i.set(t.event,a),n.on(t.event,a);return}if(t.type===`cdp-unsubscribe`){let t=e,r=i.get(t.event);if(!r)return;i.delete(t.event),n.off(t.event,r);return}}});return()=>{a();for(let[e,t]of i)n.off(e,t);i.clear()}}function i(){let e={};if(typeof localStorage>`u`)return e;for(let t=0;t<localStorage.length;t++){let n=localStorage.key(t);if(n===null)continue;let r=localStorage.getItem(n);r!==null&&(e[n]=r)}return e}function a(t){let{worker:i,realCdpTransport:a,callbacks:o}=t,s=t.readyTimeoutMs??3e4,c=t.localStorageSeed??{},l=new MessageChannel,u=new MessageChannel,d=new e(o,n(l.port1)),f=r(u.port1,a),p=null,m=new Promise((e,t)=>{let n=null,r=null;p=()=>{r!==null&&(l.port1.removeEventListener(`message`,r),r=null),n!==null&&(clearTimeout(n),n=null)},r=t=>{t.data?.type===`kernel-worker-ready`&&(p?.(),e())},l.port1.addEventListener(`message`,r),n=setTimeout(()=>{p?.(),t(Error(`Kernel worker did not signal ready within ${s}ms`))},s)}),h={type:`kernel-worker-init`,kernelPort:l.port2,cdpPort:u.port2,localStorageSeed:c,instanceId:t.instanceId};i.postMessage(h,[l.port2,u.port2]);let g=!1;return{client:d,ready:m,dispose(){if(!g){g=!0,p?.(),f();try{i.postMessage({type:`kernel-worker-shutdown`})}catch{}i.terminate(),l.port1.close(),u.port1.close()}}}}function o(e){return a({worker:e.workerUrl?new Worker(e.workerUrl,{type:`module`}):new Worker(new URL(`/assets/kernel-worker-DQl_BcO3.js`,``+import.meta.url),{type:`module`}),realCdpTransport:e.realCdpTransport,callbacks:e.callbacks,readyTimeoutMs:e.readyTimeoutMs,localStorageSeed:e.localStorageSeed??i(),instanceId:e.instanceId})}export{o as spawnKernelWorker};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/slicc-editor-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/slicc-editor-CFqadznu.js","assets/preload-helper-ca-nBW7U.js","assets/dist-B-Md2rjs.js"])))=>i.map(i=>d[i]);
|
|
2
2
|
import{t as e}from"./preload-helper-ca-nBW7U.js";var t=`slicc-theme`,n=new Set([`dark`,`light`,`system`]);function r(){let e=localStorage.getItem(t);return e&&n.has(e)?e:`system`}function i(){return document.documentElement.classList.contains(`theme-light`)}var a=new Set;function o(e){e&&a.add(e)}function s(e){e&&a.delete(e)}function c(){let e=i();for(let t of a)try{t.postMessage({type:`slicc-theme`,isLight:e},`*`)}catch{a.delete(t)}}function l(){let e=r(),t=e===`light`;e===`system`&&(t=window.matchMedia?.(`(prefers-color-scheme: light)`).matches??!1),document.documentElement.classList.toggle(`theme-light`,t),c()}var u,d;function f(){l(),u=window.matchMedia?.(`(prefers-color-scheme: light)`),u?.addEventListener?.(`change`,()=>{r()===`system`&&l()}),typeof MutationObserver<`u`&&!d&&(d=new MutationObserver(()=>c()),d.observe(document.documentElement,{attributes:!0,attributeFilter:[`class`]}))}var p=typeof chrome<`u`&&!!chrome?.runtime?.id,m=/<script\b([^>]*)\bsrc\s*=\s*["'](https?:\/\/[^"']+)["']([^>]*)><\/script>/gi;async function h(e){let t=[],n;for(;(n=m.exec(e))!==null;)t.push({full:n[0],url:n[2],index:n.index});if(m.lastIndex=0,t.length===0)return e;let r=await Promise.all(t.map(async e=>{try{let t=await fetch(e.url);if(!t.ok)throw Error(`HTTP ${t.status}`);return{...e,text:await t.text()}}catch(t){let n=t instanceof Error?t.message:String(t);return{...e,text:`console.error('[sprinkle] Failed to load ${e.url}: ${n}')`}}})),i=e;for(let e=r.length-1;e>=0;e--){let{full:t,text:n}=r[e],a=n.replace(/<\/script/gi,`<\\/script`);i=i.replace(t,()=>`<script>${a}<\/script>`)}return i}function g(e){let t=e.trimStart().toLowerCase();return t.startsWith(`<!doctype`)||t.startsWith(`<html`)}var _=class t{container;bridge;scripts=[];iframe=null;static cachedLucideScript=null;static lucideScriptPromise=null;messageHandler=null;constructor(e,t){this.container=e,this.bridge=t}async render(e,t){this.dispose(),p?await this.renderInSandbox(e,t,g(e)):g(e)?await this.renderFullDoc(e,t):this.renderInline(e,t)}async renderInSandbox(e,t,n=!1){let r=document.createElement(`iframe`);r.src=chrome.runtime.getURL(`sprinkle-sandbox.html`),r.style.cssText=`width: 100%; flex: 1; border: none; min-height: 0;`,this.iframe=r,console.log(`[sprinkle-renderer] creating sandbox iframe`,r.src),await new Promise((e,t)=>{let n=setTimeout(()=>{console.error(`[sprinkle-renderer] iframe load timed out after 5s`),t(Error(`sprinkle sandbox iframe load timed out`))},5e3);r.addEventListener(`load`,()=>{clearTimeout(n),console.log(`[sprinkle-renderer] iframe loaded, contentWindow:`,!!r.contentWindow),o(r.contentWindow),e()},{once:!0}),r.addEventListener(`error`,e=>{clearTimeout(n),console.error(`[sprinkle-renderer] iframe error:`,e),t(Error(`sprinkle sandbox iframe failed to load`))},{once:!0}),this.container.appendChild(r)}),this.messageHandler=e=>{if(e.source!==r.contentWindow)return;let n=e.data;if(n?.type){if(n.type===`sprinkle-lick`)this.bridge.lick({action:n.action,data:n.data});else if(n.type===`sprinkle-set-state`)this.bridge.setState(n.data);else if(n.type===`sprinkle-close`)this.bridge.close();else if(n.type===`sprinkle-stop-cone`)this.bridge.stopCone();else if(n.type===`sprinkle-storage-set`)try{localStorage.setItem(`slicc-sprinkle-ls:${t}:${n.key}`,n.value)}catch(e){console.warn(`[sprinkle-renderer] localStorage setItem failed:`,n.key,e)}else if(n.type===`sprinkle-storage-remove`)try{localStorage.removeItem(`slicc-sprinkle-ls:${t}:${n.key}`)}catch(e){console.warn(`[sprinkle-renderer] localStorage removeItem failed:`,n.key,e)}else if(n.type===`sprinkle-storage-clear`){let e=`slicc-sprinkle-ls:${t}:`;for(let t=localStorage.length-1;t>=0;t--){let n=localStorage.key(t);n?.startsWith(e)&&localStorage.removeItem(n)}}else if(n.type===`sprinkle-open`)this.bridge.open(n.path,n.projectRoot?{projectRoot:n.projectRoot}:void 0);else if(n.type===`sprinkle-readfile`)this.bridge.readFile(n.path).then(e=>r.contentWindow?.postMessage({type:`sprinkle-readfile-response`,id:n.id,content:e},`*`),e=>r.contentWindow?.postMessage({type:`sprinkle-readfile-response`,id:n.id,error:e instanceof Error?e.message:String(e)},`*`));else if(n.type===`sprinkle-writefile`)this.bridge.writeFile(n.path,n.content).then(()=>r.contentWindow?.postMessage({type:`sprinkle-writefile-response`,id:n.id},`*`),e=>r.contentWindow?.postMessage({type:`sprinkle-writefile-response`,id:n.id,error:e instanceof Error?e.message:String(e)},`*`));else if(n.type===`sprinkle-readdir`)this.bridge.readDir(n.path).then(e=>r.contentWindow?.postMessage({type:`sprinkle-readdir-response`,id:n.id,entries:e},`*`),e=>r.contentWindow?.postMessage({type:`sprinkle-readdir-response`,id:n.id,error:e instanceof Error?e.message:String(e)},`*`));else if(n.type===`sprinkle-exists`)this.bridge.exists(n.path).then(e=>r.contentWindow?.postMessage({type:`sprinkle-exists-response`,id:n.id,exists:e},`*`),e=>r.contentWindow?.postMessage({type:`sprinkle-exists-response`,id:n.id,error:e instanceof Error?e.message:String(e)},`*`));else if(n.type===`sprinkle-stat`)this.bridge.stat(n.path).then(e=>r.contentWindow?.postMessage({type:`sprinkle-stat-response`,id:n.id,stat:e},`*`),e=>r.contentWindow?.postMessage({type:`sprinkle-stat-response`,id:n.id,error:e instanceof Error?e.message:String(e)},`*`));else if(n.type===`sprinkle-mkdir`)this.bridge.mkdir(n.path).then(()=>r.contentWindow?.postMessage({type:`sprinkle-mkdir-response`,id:n.id},`*`),e=>r.contentWindow?.postMessage({type:`sprinkle-mkdir-response`,id:n.id,error:e instanceof Error?e.message:String(e)},`*`));else if(n.type===`sprinkle-rm`)this.bridge.rm(n.path).then(()=>r.contentWindow?.postMessage({type:`sprinkle-rm-response`,id:n.id},`*`),e=>r.contentWindow?.postMessage({type:`sprinkle-rm-response`,id:n.id,error:e instanceof Error?e.message:String(e)},`*`));else if(n.type===`sprinkle-fetch-script`){let e=n.url,t=n.id;fetch(e).then(e=>e.ok?e.text():Promise.reject(Error(`HTTP ${e.status}`))).then(n=>{r.contentWindow?.postMessage({type:`sprinkle-fetch-script-response`,id:t,url:e,text:n},`*`)}).catch(n=>{r.contentWindow?.postMessage({type:`sprinkle-fetch-script-response`,id:t,url:e,error:n instanceof Error?n.message:String(n)},`*`)})}}},window.addEventListener(`message`,this.messageHandler);let a=this.collectThemeCSS(),s={},c=`slicc-sprinkle-ls:${t}:`;for(let e=0;e<localStorage.length;e++){let t=localStorage.key(e);t?.startsWith(c)&&(s[t.slice(c.length)]=localStorage.getItem(t)??``)}let l=this.bridge.getState(),u=``,d=``;if(n){let t=[];e.includes(`<slicc-editor`)&&t.push(fetch(chrome.runtime.getURL(`slicc-editor.js`)).then(e=>e.ok?e.text():``).then(e=>{u=e}).catch(()=>{})),e.includes(`<slicc-diff`)&&t.push(fetch(chrome.runtime.getURL(`slicc-diff.js`)).then(e=>e.ok?e.text():``).then(e=>{d=e}).catch(()=>{})),await Promise.all(t)}let f=await this.getLucideScript(),p=n?await h(e):e;r.contentWindow.postMessage({type:`sprinkle-render`,content:p,name:t,themeCSS:a,savedState:l,savedStorage:s,fullDoc:n,editorScript:u,diffScript:d,lucideScript:f,isLight:i()},`*`)}pushUpdate(e){this.iframe?.contentWindow&&this.iframe.contentWindow.postMessage({type:`sprinkle-update`,data:e},`*`)}collectThemeCSS(){return y()}generateBridgeScript(){return`(function() {
|
|
3
3
|
var _updateListeners = new Set();
|
|
4
4
|
var _sprinkleName = '';
|
|
@@ -101,7 +101,7 @@ import{t as e}from"./preload-helper-ca-nBW7U.js";var t=`slicc-theme`,n=new Set([
|
|
|
101
101
|
};
|
|
102
102
|
window.slicc = api;
|
|
103
103
|
window.bridge = api;
|
|
104
|
-
})();`}async renderFullDoc(e,t){let n=`<script>${this.generateBridgeScript()}<\/script>`,r=this.collectThemeCSS(),a=r?`<style>${r}</style>`:``,s=e.includes(`<slicc-editor`)?`<script src="/slicc-editor.js"><\/script>`:``,c=e.includes(`<slicc-diff`)?`<script src="/slicc-diff.js"><\/script>`:``,l=`<script>(function(){try{if(${i()?`true`:`false`})document.documentElement.classList.add('theme-light');}catch(e){}})();<\/script>`+n+a+s+c+`<script src="/lucide-icons.js"><\/script>`,u,d=e.match(/<head\b[^>]*>/i);if(d){let t=d.index+d[0].length;u=e.slice(0,t)+l+e.slice(t)}else{let t=e.match(/<script\b/i);if(t)u=e.slice(0,t.index)+l+e.slice(t.index);else{let t=e.match(/<html\b[^>]*>/i);if(t){let n=t.index+t[0].length;u=e.slice(0,n)+l+e.slice(n)}else u=l+e}}let f=document.createElement(`iframe`);f.setAttribute(`sandbox`,`allow-scripts allow-same-origin`),f.style.cssText=`width: 100%; flex: 1; border: none; min-height: 0;`,f.srcdoc=u,this.iframe=f,await new Promise((e,n)=>{let r=setTimeout(()=>{n(Error(`full-doc iframe load timed out`))},5e3);f.addEventListener(`load`,()=>{clearTimeout(r),o(f.contentWindow);let n=this.bridge.getState();f.contentWindow?.postMessage({type:`sprinkle-init`,name:t,savedState:n},`*`),e()},{once:!0}),f.addEventListener(`error`,e=>{clearTimeout(r),n(Error(`full-doc iframe failed to load`))},{once:!0}),this.container.appendChild(f)}),this.messageHandler=e=>{if(e.source!==f.contentWindow)return;let t=e.data;t?.type&&(t.type===`sprinkle-lick`?this.bridge.lick({action:t.action,data:t.data}):t.type===`sprinkle-set-state`?this.bridge.setState(t.data):t.type===`sprinkle-close`?this.bridge.close():t.type===`sprinkle-stop-cone`?this.bridge.stopCone():t.type===`sprinkle-readfile`?this.bridge.readFile(t.path).then(e=>f.contentWindow?.postMessage({type:`sprinkle-readfile-response`,id:t.id,content:e},`*`),e=>f.contentWindow?.postMessage({type:`sprinkle-readfile-response`,id:t.id,error:e instanceof Error?e.message:String(e)},`*`)):t.type===`sprinkle-writefile`?this.bridge.writeFile(t.path,t.content).then(()=>f.contentWindow?.postMessage({type:`sprinkle-writefile-response`,id:t.id},`*`),e=>f.contentWindow?.postMessage({type:`sprinkle-writefile-response`,id:t.id,error:e instanceof Error?e.message:String(e)},`*`)):t.type===`sprinkle-readdir`?this.bridge.readDir(t.path).then(e=>f.contentWindow?.postMessage({type:`sprinkle-readdir-response`,id:t.id,entries:e},`*`),e=>f.contentWindow?.postMessage({type:`sprinkle-readdir-response`,id:t.id,error:e instanceof Error?e.message:String(e)},`*`)):t.type===`sprinkle-exists`?this.bridge.exists(t.path).then(e=>f.contentWindow?.postMessage({type:`sprinkle-exists-response`,id:t.id,exists:e},`*`),e=>f.contentWindow?.postMessage({type:`sprinkle-exists-response`,id:t.id,error:e instanceof Error?e.message:String(e)},`*`)):t.type===`sprinkle-stat`?this.bridge.stat(t.path).then(e=>f.contentWindow?.postMessage({type:`sprinkle-stat-response`,id:t.id,stat:e},`*`),e=>f.contentWindow?.postMessage({type:`sprinkle-stat-response`,id:t.id,error:e instanceof Error?e.message:String(e)},`*`)):t.type===`sprinkle-mkdir`?this.bridge.mkdir(t.path).then(()=>f.contentWindow?.postMessage({type:`sprinkle-mkdir-response`,id:t.id},`*`),e=>f.contentWindow?.postMessage({type:`sprinkle-mkdir-response`,id:t.id,error:e instanceof Error?e.message:String(e)},`*`)):t.type===`sprinkle-rm`&&this.bridge.rm(t.path).then(()=>f.contentWindow?.postMessage({type:`sprinkle-rm-response`,id:t.id},`*`),e=>f.contentWindow?.postMessage({type:`sprinkle-rm-response`,id:t.id,error:e instanceof Error?e.message:String(e)},`*`)))},window.addEventListener(`message`,this.messageHandler)}renderInline(t,n){if(t.includes(`<slicc-editor`)&&!customElements.get(`slicc-editor`)&&e(()=>import(`./slicc-editor-
|
|
104
|
+
})();`}async renderFullDoc(e,t){let n=`<script>${this.generateBridgeScript()}<\/script>`,r=this.collectThemeCSS(),a=r?`<style>${r}</style>`:``,s=e.includes(`<slicc-editor`)?`<script src="/slicc-editor.js"><\/script>`:``,c=e.includes(`<slicc-diff`)?`<script src="/slicc-diff.js"><\/script>`:``,l=`<script>(function(){try{if(${i()?`true`:`false`})document.documentElement.classList.add('theme-light');}catch(e){}})();<\/script>`+n+a+s+c+`<script src="/lucide-icons.js"><\/script>`,u,d=e.match(/<head\b[^>]*>/i);if(d){let t=d.index+d[0].length;u=e.slice(0,t)+l+e.slice(t)}else{let t=e.match(/<script\b/i);if(t)u=e.slice(0,t.index)+l+e.slice(t.index);else{let t=e.match(/<html\b[^>]*>/i);if(t){let n=t.index+t[0].length;u=e.slice(0,n)+l+e.slice(n)}else u=l+e}}let f=document.createElement(`iframe`);f.setAttribute(`sandbox`,`allow-scripts allow-same-origin`),f.style.cssText=`width: 100%; flex: 1; border: none; min-height: 0;`,f.srcdoc=u,this.iframe=f,await new Promise((e,n)=>{let r=setTimeout(()=>{n(Error(`full-doc iframe load timed out`))},5e3);f.addEventListener(`load`,()=>{clearTimeout(r),o(f.contentWindow);let n=this.bridge.getState();f.contentWindow?.postMessage({type:`sprinkle-init`,name:t,savedState:n},`*`),e()},{once:!0}),f.addEventListener(`error`,e=>{clearTimeout(r),n(Error(`full-doc iframe failed to load`))},{once:!0}),this.container.appendChild(f)}),this.messageHandler=e=>{if(e.source!==f.contentWindow)return;let t=e.data;t?.type&&(t.type===`sprinkle-lick`?this.bridge.lick({action:t.action,data:t.data}):t.type===`sprinkle-set-state`?this.bridge.setState(t.data):t.type===`sprinkle-close`?this.bridge.close():t.type===`sprinkle-stop-cone`?this.bridge.stopCone():t.type===`sprinkle-readfile`?this.bridge.readFile(t.path).then(e=>f.contentWindow?.postMessage({type:`sprinkle-readfile-response`,id:t.id,content:e},`*`),e=>f.contentWindow?.postMessage({type:`sprinkle-readfile-response`,id:t.id,error:e instanceof Error?e.message:String(e)},`*`)):t.type===`sprinkle-writefile`?this.bridge.writeFile(t.path,t.content).then(()=>f.contentWindow?.postMessage({type:`sprinkle-writefile-response`,id:t.id},`*`),e=>f.contentWindow?.postMessage({type:`sprinkle-writefile-response`,id:t.id,error:e instanceof Error?e.message:String(e)},`*`)):t.type===`sprinkle-readdir`?this.bridge.readDir(t.path).then(e=>f.contentWindow?.postMessage({type:`sprinkle-readdir-response`,id:t.id,entries:e},`*`),e=>f.contentWindow?.postMessage({type:`sprinkle-readdir-response`,id:t.id,error:e instanceof Error?e.message:String(e)},`*`)):t.type===`sprinkle-exists`?this.bridge.exists(t.path).then(e=>f.contentWindow?.postMessage({type:`sprinkle-exists-response`,id:t.id,exists:e},`*`),e=>f.contentWindow?.postMessage({type:`sprinkle-exists-response`,id:t.id,error:e instanceof Error?e.message:String(e)},`*`)):t.type===`sprinkle-stat`?this.bridge.stat(t.path).then(e=>f.contentWindow?.postMessage({type:`sprinkle-stat-response`,id:t.id,stat:e},`*`),e=>f.contentWindow?.postMessage({type:`sprinkle-stat-response`,id:t.id,error:e instanceof Error?e.message:String(e)},`*`)):t.type===`sprinkle-mkdir`?this.bridge.mkdir(t.path).then(()=>f.contentWindow?.postMessage({type:`sprinkle-mkdir-response`,id:t.id},`*`),e=>f.contentWindow?.postMessage({type:`sprinkle-mkdir-response`,id:t.id,error:e instanceof Error?e.message:String(e)},`*`)):t.type===`sprinkle-rm`&&this.bridge.rm(t.path).then(()=>f.contentWindow?.postMessage({type:`sprinkle-rm-response`,id:t.id},`*`),e=>f.contentWindow?.postMessage({type:`sprinkle-rm-response`,id:t.id,error:e instanceof Error?e.message:String(e)},`*`)))},window.addEventListener(`message`,this.messageHandler)}renderInline(t,n){if(t.includes(`<slicc-editor`)&&!customElements.get(`slicc-editor`)&&e(()=>import(`./slicc-editor-CFqadznu.js`),__vite__mapDeps([0,1,2])),t.includes(`<slicc-diff`)&&!customElements.get(`slicc-diff`)){let e=document.createElement(`script`);e.src=`/slicc-diff.js`,document.head.appendChild(e)}window.__slicc_sprinkles||(window.__slicc_sprinkles={}),window.__slicc_sprinkles[n]=this.bridge,this.bridge._container=this.container;let r=document.createElement(`div`);r.className=`sprinkle-content`,r.innerHTML=t,this.container.appendChild(r);for(let e of r.querySelectorAll(`.fill[data-value]`)){let t=parseFloat(e.dataset.value||`0`);t>=0&&t<=100&&(e.style.width=`${t}%`)}let i=`window.__slicc_sprinkles[${JSON.stringify(n)}]`;for(let e of r.querySelectorAll(`[onclick]`)){let t=e.getAttribute(`onclick`)||``;/\b(slicc|bridge)\b/.test(t)&&e.setAttribute(`onclick`,t.replace(/\b(slicc|bridge)\b/g,i))}let a=Array.from(r.querySelectorAll(`script`));for(let e of a){e.remove();let t=document.createElement(`script`);for(let n of e.attributes)t.setAttribute(n.name,n.value);if(!e.src){let n=new Set;for(let e of r.querySelectorAll(`[onclick]`)){let t=e.getAttribute(`onclick`)||``;for(let e of t.matchAll(/\b(\w+)\s*\(/g)){let t=e[1];[`slicc`,`bridge`,`lick`,`close`].includes(t)||n.add(t)}}let a=[...n].map(e=>`if (typeof ${e} === 'function') window.${e} = ${e};`).join(`
|
|
105
105
|
`);t.textContent=`(function() { var slicc = ${i}; var bridge = slicc;\n`+e.textContent+(a?`
|
|
106
106
|
`+a:``)+`
|
|
107
107
|
})();`}r.appendChild(t),this.scripts.push(t)}}dispose(){this.messageHandler&&=(window.removeEventListener(`message`,this.messageHandler),null),this.iframe&&=(s(this.iframe.contentWindow),this.iframe.remove(),null);for(let e of this.scripts)e.remove();this.scripts=[];let e=this.container.querySelector(`.sprinkle-content`);e&&e.remove(),window.__slicc_sprinkles&&delete window.__slicc_sprinkles[this.bridge.name]}async getLucideScript(){return t.cachedLucideScript===null?(t.lucideScriptPromise===null&&(t.lucideScriptPromise=(async()=>{try{let e=await fetch(chrome.runtime.getURL(`lucide-icons.js`));if(e.ok){let n=await e.text();return t.cachedLucideScript=n,n}}catch{}return t.cachedLucideScript=``,``})()),t.lucideScriptPromise):t.cachedLucideScript}};function v(e,t){return e.replace(/url\(\s*['"]?([^'")]+)['"]?\s*\)/g,(e,n)=>{if(/^(https?:|data:|blob:)/i.test(n))return`url('${n}')`;try{return`url('${new URL(n,t).href}')`}catch{return`url('${n}')`}})}function y(){if(typeof getComputedStyle!=`function`)return``;let e=[],t=[],n=[],r=location.href,i=e=>e===`:root`||e===`:root.theme-light`||e.startsWith(`.theme-light `)||e===`.theme-light`||e.split(`,`).some(e=>{let t=e.trim();return t===`:root`||t===`:root.theme-light`||t.startsWith(`.theme-light `)||t===`.theme-light`});for(let a of document.styleSheets)try{for(let o of a.cssRules)if(o instanceof CSSFontFaceRule)e.push(v(o.cssText,r));else if(o instanceof CSSStyleRule){let e=o.selectorText;i(e)&&t.push(o.cssText),(e.includes(`.sprinkle-`)||e.includes(`.fill`))&&n.push(o.cssText)}}catch{}return e.join(`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./preload-helper-ca-nBW7U.js";var t=null,n=!1;function r(){return typeof chrome<`u`&&chrome?.runtime?.id?`extension`:typeof document<`u`&&document.documentElement?.dataset?.electronOverlay?`electron`:`cli`}async function i(){if(!n&&!(typeof localStorage<`u`&&localStorage.getItem(`telemetry-disabled`)===`true`))try{let i=r();typeof window<`u`&&(window.RUM_GENERATION=`slicc-${i}`),i===`extension`?(t=(await e(()=>import(`./rum-
|
|
1
|
+
import{t as e}from"./preload-helper-ca-nBW7U.js";var t=null,n=!1;function r(){return typeof chrome<`u`&&chrome?.runtime?.id?`extension`:typeof document<`u`&&document.documentElement?.dataset?.electronOverlay?`electron`:`cli`}async function i(){if(!n&&!(typeof localStorage<`u`&&localStorage.getItem(`telemetry-disabled`)===`true`))try{let i=r();typeof window<`u`&&(window.RUM_GENERATION=`slicc-${i}`),i===`extension`?(t=(await e(()=>import(`./rum-C0g6MAOC.js`),[])).default,typeof window<`u`&&(window.addEventListener(`error`,e=>{c(`js`,u(e.message??``))}),window.addEventListener(`unhandledrejection`,e=>{let t=e.reason;c(`js`,u(t instanceof Error?t.message:String(t)))}))):(typeof window<`u`&&(window.SAMPLE_PAGEVIEWS_AT_RATE=`high`),t=(await e(()=>import(`./src-lJxZtwWF.js`),[])).sampleRUM),n=!0,t&&t(`navigate`,{source:typeof document<`u`?document.referrer:``,target:i})}catch{}}function a(e,n){t?.(`formsubmit`,{source:e,target:n})}function o(e){t?.(`viewblock`,{source:e})}function s(e){t?.(`viewmedia`,{source:e})}function c(e,n){t?.(`error`,{source:e,target:n})}function l(e){t?.(`signup`,{source:e})}function u(e){return(e??``).slice(0,200).replace(/(\/[a-z]+)(?:\/[^\s/]+)+/gi,`$1/.../`)}export{o as a,l as i,a as n,s as r,i as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{S as e,m as t}from"./db-DPvmo9md.js";const n=`slicc:last-seen-version`;function r(){return{version:`2.
|
|
1
|
+
import{S as e,m as t}from"./db-DPvmo9md.js";const n=`slicc:last-seen-version`;function r(){return{version:`2.56.0`,releasedAt:`2026-05-20T14:20:58Z`}}async function i(){let e=await t(n);return e&&e.length>0?e:null}async function a(t){await e(n,t)}async function o(){let e=r(),t=await i();return t===null?(await a(e.version),{bundled:e,lastSeen:null,isUpgrade:!1}):t===e.version?{bundled:e,lastSeen:t,isUpgrade:!1}:{bundled:e,lastSeen:t,isUpgrade:!0}}async function s(e){await a(e)}export{o as detectUpgrade,s as recordVersionSeen};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{f as e,t}from"./provider-settings-C_bHAv6F.js";import{d as n,h as r,m as i}from"./bedrock-camp-prTmQ4PG.js";import{o as a}from"./simple-options-CVJdKrCb.js";import{XaiErrorCode as o,XaiOAuthError as s}from"./xai-grok-errors-B7OqxH_0.js";import{resolveModels as c,toModelMetadata as l}from"./xai-grok-models-0CbvNCeN.js";import{sanitizePayload as u}from"./xai-grok-sanitize-DTcvIA0E.js";const d=`xai-grok`,f=`https://auth.x.ai`,p=`${f}/oauth2/authorize`,m=`${f}/oauth2/token`,h=`b1a00492-073a-47ea-816f-4c329264a828`,g=`http://127.0.0.1:56121/callback`,_=`https://api.x.ai/v1`,v=`openai-responses`,y=`${d}-openai`;function b(){return typeof process>`u`?null:{}?.PI_XAI_OAUTH_MODELS??null}const x=c(b());function S(e){let t=``;for(let n of e)t+=String.fromCharCode(n);return btoa(t).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}function C(e){let t=new Uint8Array(e);return crypto.getRandomValues(t),t}function w(){return S(C(32))}async function T(e){let t=new TextEncoder().encode(e);return S(new Uint8Array(await crypto.subtle.digest(`SHA-256`,t)))}function E(){return S(C(16))}async function D(e,t){let n=new URLSearchParams({grant_type:`authorization_code`,code:e,redirect_uri:g,client_id:h,code_verifier:t}),r=await fetch(m,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:n});if(!r.ok)throw new s(`xAI token exchange failed: ${r.status} ${await r.text()}`,o.TOKEN_EXCHANGE_FAILED);let i=await r.json();if(!i.access_token)throw new s(`xAI token exchange did not return access_token.`,o.TOKEN_EXCHANGE_INVALID);return i}async function O(e){try{let t=new URLSearchParams({grant_type:`refresh_token`,refresh_token:e,client_id:h}),n=await fetch(m,{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 k(){return t().find(e=>e.providerId===d)}async function A(){let t=k();if(!t?.accessToken)throw new s("Not signed in to xAI Grok — run /login or `oauth-token xai-grok`",o.AUTH_MISSING,!0);let n=t.tokenExpiresAt??0;if(n&&Date.now()+6e4<n)return t.accessToken;if(t.refreshToken){let n=await O(t.refreshToken);if(n?.access_token)return await e({providerId:d,accessToken:n.access_token,refreshToken:n.refresh_token??t.refreshToken,tokenExpiresAt:Date.now()+(n.expires_in??21600)*1e3}),n.access_token}return t.accessToken}function j(e,t){return{type:`error`,reason:`error`,error:{role:`assistant`,content:[],api:y,provider:d,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 M(e,t){return n=>!n||typeof n!=`object`?n:u(n,e,t)}function N(e,t){return t?{...e??{},"x-grok-conv-id":t}:e}const P=(e,t,r={})=>{let i=a();return(async()=>{try{let a=await A(),o=r.sessionId,s=n({...e,baseUrl:_,api:v},t,{...r,apiKey:a,headers:N(r.headers,o),onPayload:M(e.id,o)});for await(let e of s)i.push(e);i.end()}catch(t){console.error(`[xai-grok] Stream error:`,t instanceof Error?t.message:String(t)),i.push(j(e,t)),i.end()}})(),i},F=(e,t,n)=>{let r=a();return(async()=>{try{let a=await A(),o=n?.sessionId,s=i({...e,baseUrl:_,api:v},t,{...n,apiKey:a,headers:N(n?.headers,o),onPayload:M(e.id,o)});for await(let e of s)r.push(e);r.end()}catch(t){console.error(`[xai-grok] Stream error:`,t instanceof Error?t.message:String(t)),r.push(j(e,t)),r.end()}})(),r},I={id:d,name:`xAI Grok (SuperGrok OAuth)`,description:`Grok via xAI OAuth — uses your SuperGrok subscription, no API key needed. Default model is Grok Heavy.`,requiresApiKey:!1,requiresBaseUrl:!1,isOAuth:!0,defaultModelId:`grok-4.20-multi-agent-0309`,oauthTokenDomains:[`api.x.ai`,`*.x.ai`,`auth.x.ai`,`accounts.x.ai`],getModelIds:()=>x.map(e=>{let t=l(e);return e.thinkingLevelMap?{...t,thinkingLevelMap:e.thinkingLevelMap}:t}),onOAuthLoginIntercepted:async(t,n,r)=>{let i=w(),a=await T(i),c=E(),l=E(),u=new URL(p);u.searchParams.set(`response_type`,`code`),u.searchParams.set(`client_id`,h),u.searchParams.set(`redirect_uri`,g),u.searchParams.set(`scope`,r?.scopes??`openid profile email offline_access grok-cli:access api:access`),u.searchParams.set(`code_challenge`,a),u.searchParams.set(`code_challenge_method`,`S256`),u.searchParams.set(`state`,c),u.searchParams.set(`nonce`,l),u.searchParams.set(`plan`,`generic`),u.searchParams.set(`referrer`,`slicc`);let f=await t({authorizeUrl:u.toString(),redirectUriPattern:`http://127.0.0.1:56121/*`,onCapture:`close`});if(!f)throw new s(`xAI OAuth login was cancelled or timed out`,o.CALLBACK_TIMEOUT);let m=new URL(f),v=m.searchParams.get(`code`),y=m.searchParams.get(`state`);if(!v)throw new s(`xAI OAuth redirect did not include a code`,o.CODE_MISSING);if(y!==c)throw new s(`xAI OAuth state mismatch — possible CSRF, aborting`,o.STATE_MISMATCH);let b=await D(v,i);await e({providerId:d,accessToken:b.access_token,refreshToken:b.refresh_token,tokenExpiresAt:Date.now()+(b.expires_in??21600)*1e3,baseUrl:_}),n()},onOAuthLogout:async()=>{await e({providerId:d,accessToken:``})},onSilentRenew:async()=>{let t=k();if(!t?.refreshToken)return null;let n=await O(t.refreshToken);return n?.access_token?(await e({providerId:d,accessToken:n.access_token,refreshToken:n.refresh_token??t.refreshToken,tokenExpiresAt:Date.now()+(n.expires_in??21600)*1e3}),n.access_token):null}};function L(){r({api:y,stream:P,streamSimple:F})}export{o as XaiErrorCode,s as XaiOAuthError,I as config,L as register};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e,y as t}from"./provider-settings-CyRPUAEx.js";import{c as n,d as r,f as i}from"./bedrock-camp-DChwr7KC.js";import{o as a}from"./simple-options-D8vGmEnp.js";import{XaiErrorCode as o,XaiOAuthError as s}from"./xai-grok-errors-DGVLpB4k.js";import{resolveModels as c,toModelMetadata as l}from"./xai-grok-models-DGbQVjGO.js";import{sanitizePayload as u}from"./xai-grok-sanitize-DsBfxZb8.js";var d=`xai-grok`,f=`https://auth.x.ai`,p=`${f}/oauth2/authorize`,m=`${f}/oauth2/token`,h=`b1a00492-073a-47ea-816f-4c329264a828`,g=`openid profile email offline_access grok-cli:access api:access`,_=`http://127.0.0.1:56121/callback`,v=`http://127.0.0.1:56121/*`,y=`https://api.x.ai/v1`,b=`openai-responses`,x=`${d}-openai`;function S(){return typeof process>`u`?null:{}?.PI_XAI_OAUTH_MODELS??null}var C=c(S());function w(e){let t=``;for(let n of e)t+=String.fromCharCode(n);return btoa(t).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}function T(e){let t=new Uint8Array(e);return crypto.getRandomValues(t),t}function E(){return w(T(32))}async function D(e){let t=new TextEncoder().encode(e);return w(new Uint8Array(await crypto.subtle.digest(`SHA-256`,t)))}function O(){return w(T(16))}async function k(e,t){let n=new URLSearchParams({grant_type:`authorization_code`,code:e,redirect_uri:_,client_id:h,code_verifier:t}),r=await fetch(m,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:n});if(!r.ok)throw new s(`xAI token exchange failed: ${r.status} ${await r.text()}`,o.TOKEN_EXCHANGE_FAILED);let i=await r.json();if(!i.access_token)throw new s(`xAI token exchange did not return access_token.`,o.TOKEN_EXCHANGE_INVALID);return i}async function A(e){try{let t=new URLSearchParams({grant_type:`refresh_token`,refresh_token:e,client_id:h}),n=await fetch(m,{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 e().find(e=>e.providerId===d)}async function M(){let e=j();if(!e?.accessToken)throw new s("Not signed in to xAI Grok — run /login or `oauth-token xai-grok`",o.AUTH_MISSING,!0);let n=e.tokenExpiresAt??0;if(n&&Date.now()+6e4<n)return e.accessToken;if(e.refreshToken){let n=await A(e.refreshToken);if(n?.access_token)return await t({providerId:d,accessToken:n.access_token,refreshToken:n.refresh_token??e.refreshToken,tokenExpiresAt:Date.now()+(n.expires_in??21600)*1e3}),n.access_token}return e.accessToken}function N(e,t){return{type:`error`,reason:`error`,error:{role:`assistant`,content:[],api:x,provider:d,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 P(e,t){return n=>!n||typeof n!=`object`?n:u(n,e,t)}function F(e,t){return t?{...e??{},"x-grok-conv-id":t}:e}var I=(e,t,r={})=>{let i=a();return(async()=>{try{let a=await M(),o=r.sessionId,s=n({...e,baseUrl:y,api:b},t,{...r,apiKey:a,headers:F(r.headers,o),onPayload:P(e.id,o)});for await(let e of s)i.push(e);i.end()}catch(t){console.error(`[xai-grok] Stream error:`,t instanceof Error?t.message:String(t)),i.push(N(e,t)),i.end()}})(),i},L=(e,t,n)=>{let i=a();return(async()=>{try{let a=await M(),o=n?.sessionId,s=r({...e,baseUrl:y,api:b},t,{...n,apiKey:a,headers:F(n?.headers,o),onPayload:P(e.id,o)});for await(let e of s)i.push(e);i.end()}catch(t){console.error(`[xai-grok] Stream error:`,t instanceof Error?t.message:String(t)),i.push(N(e,t)),i.end()}})(),i},R={id:d,name:`xAI Grok (SuperGrok OAuth)`,description:`Grok via xAI OAuth — uses your SuperGrok subscription, no API key needed. Default model is Grok Heavy.`,requiresApiKey:!1,requiresBaseUrl:!1,isOAuth:!0,defaultModelId:`grok-4.20-multi-agent-0309`,oauthTokenDomains:[`api.x.ai`,`*.x.ai`,`auth.x.ai`,`accounts.x.ai`],getModelIds:()=>C.map(e=>{let t=l(e);return e.thinkingLevelMap?{...t,thinkingLevelMap:e.thinkingLevelMap}:t}),onOAuthLoginIntercepted:async(e,n,r)=>{let i=E(),a=await D(i),c=O(),l=O(),u=new URL(p);u.searchParams.set(`response_type`,`code`),u.searchParams.set(`client_id`,h),u.searchParams.set(`redirect_uri`,_),u.searchParams.set(`scope`,r?.scopes??g),u.searchParams.set(`code_challenge`,a),u.searchParams.set(`code_challenge_method`,`S256`),u.searchParams.set(`state`,c),u.searchParams.set(`nonce`,l),u.searchParams.set(`plan`,`generic`),u.searchParams.set(`referrer`,`slicc`);let f=await e({authorizeUrl:u.toString(),redirectUriPattern:v,onCapture:`close`});if(!f)throw new s(`xAI OAuth login was cancelled or timed out`,o.CALLBACK_TIMEOUT);let m=new URL(f),b=m.searchParams.get(`code`),x=m.searchParams.get(`state`);if(!b)throw new s(`xAI OAuth redirect did not include a code`,o.CODE_MISSING);if(x!==c)throw new s(`xAI OAuth state mismatch — possible CSRF, aborting`,o.STATE_MISMATCH);let S=await k(b,i);await t({providerId:d,accessToken:S.access_token,refreshToken:S.refresh_token,tokenExpiresAt:Date.now()+(S.expires_in??21600)*1e3,baseUrl:y}),n()},onOAuthLogout:async()=>{await t({providerId:d,accessToken:``})},onSilentRenew:async()=>{let e=j();if(!e?.refreshToken)return null;let n=await A(e.refreshToken);return n?.access_token?(await t({providerId:d,accessToken:n.access_token,refreshToken:n.refresh_token??e.refreshToken,tokenExpiresAt:Date.now()+(n.expires_in??21600)*1e3}),n.access_token):null}};function z(){i({api:x,stream:I,streamSimple:L})}export{o as XaiErrorCode,s as XaiOAuthError,R as config,z as register};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=class extends Error{code;reloginRequired;constructor(e,t,n=!1){super(e),this.code=t,this.reloginRequired=n,this.name=`XaiOAuthError`}};const t={AUTHORIZATION_FAILED:`authorization_failed`,STATE_MISMATCH:`state_mismatch`,CODE_MISSING:`code_missing`,TOKEN_EXCHANGE_FAILED:`token_exchange_failed`,TOKEN_EXCHANGE_INVALID:`token_exchange_invalid`,REFRESH_MISSING:`refresh_missing`,REFRESH_FAILED:`refresh_failed`,AUTH_MISSING:`auth_missing`,CALLBACK_TIMEOUT:`callback_timeout`};export{t as XaiErrorCode,e as XaiOAuthError};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=class extends Error{code;reloginRequired;constructor(e,t,n=!1){super(e),this.code=t,this.reloginRequired=n,this.name=`XaiOAuthError`}},t={AUTHORIZATION_FAILED:`authorization_failed`,STATE_MISMATCH:`state_mismatch`,CODE_MISSING:`code_missing`,TOKEN_EXCHANGE_FAILED:`token_exchange_failed`,TOKEN_EXCHANGE_INVALID:`token_exchange_invalid`,REFRESH_MISSING:`refresh_missing`,REFRESH_FAILED:`refresh_failed`,AUTH_MISSING:`auth_missing`,CALLBACK_TIMEOUT:`callback_timeout`};export{t as XaiErrorCode,e as XaiOAuthError};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e={input:0,output:0,cacheRead:0,cacheWrite:0},t={input:1.25,output:2.5,cacheRead:.2,cacheWrite:0},n={input:2,output:6,cacheRead:.2,cacheWrite:0},r=[{id:`grok-build`,name:`Grok Build`,reasoning:!0,input:[`text`,`image`],cost:e,contextWindow:1e6,maxTokens:3e4},{id:`grok-4.3`,name:`Grok 4.3`,reasoning:!0,input:[`text`,`image`],cost:t,contextWindow:1e6,maxTokens:3e4},{id:`grok-4.20-0309-reasoning`,name:`Grok 4.20 Reasoning`,reasoning:!0,input:[`text`,`image`],cost:n,contextWindow:2e6,maxTokens:3e4},{id:`grok-4.20-0309-non-reasoning`,name:`Grok 4.20 Non-Reasoning`,reasoning:!1,input:[`text`,`image`],cost:n,contextWindow:2e6,maxTokens:3e4,thinkingLevelMap:{off:`none`,minimal:null,low:null,medium:null,high:null,xhigh:null}},{id:`grok-4.20-multi-agent-0309`,name:`Grok Heavy`,reasoning:!0,input:[`text`,`image`],cost:n,contextWindow:2e6,maxTokens:3e4}],i=[`grok-3-mini`,`grok-4.20-multi-agent`,`grok-4.3`];function a(e){let t=e.includes(`/`)?e.split(`/`).pop():e;return i.some(e=>t.toLowerCase().startsWith(e))}function o(t){let n=(t??``).split(`,`).map(e=>e.trim()).filter(Boolean);if(n.length===0)return r;let i=new Map(r.map(e=>[e.id,e]));return n.map(t=>i.get(t)??{id:t,name:t,reasoning:!0,input:[`text`],cost:e,contextWindow:1e6,maxTokens:3e4})}function s(e){return{id:e.id,name:e.name,api:`openai`,reasoning:e.reasoning,input:e.input,context_window:e.contextWindow,max_tokens:e.maxTokens}}export{r as FALLBACK_MODELS,o as resolveModels,a as supportsReasoningEffort,s as toModelMetadata};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={input:0,output:0,cacheRead:0,cacheWrite:0},t={input:1.25,output:2.5,cacheRead:.2,cacheWrite:0},n={input:2,output:6,cacheRead:.2,cacheWrite:0},r=[{id:`grok-build`,name:`Grok Build`,reasoning:!0,input:[`text`,`image`],cost:e,contextWindow:1e6,maxTokens:3e4},{id:`grok-4.3`,name:`Grok 4.3`,reasoning:!0,input:[`text`,`image`],cost:t,contextWindow:1e6,maxTokens:3e4},{id:`grok-4.20-0309-reasoning`,name:`Grok 4.20 Reasoning`,reasoning:!0,input:[`text`,`image`],cost:n,contextWindow:2e6,maxTokens:3e4},{id:`grok-4.20-0309-non-reasoning`,name:`Grok 4.20 Non-Reasoning`,reasoning:!1,input:[`text`,`image`],cost:n,contextWindow:2e6,maxTokens:3e4,thinkingLevelMap:{off:`none`,minimal:null,low:null,medium:null,high:null,xhigh:null}},{id:`grok-4.20-multi-agent-0309`,name:`Grok Heavy`,reasoning:!0,input:[`text`,`image`],cost:n,contextWindow:2e6,maxTokens:3e4}],i=[`grok-3-mini`,`grok-4.20-multi-agent`,`grok-4.3`];function a(e){let t=e.includes(`/`)?e.split(`/`).pop():e;return i.some(e=>t.toLowerCase().startsWith(e))}function o(t){let n=(t??``).split(`,`).map(e=>e.trim()).filter(Boolean);if(n.length===0)return r;let i=new Map(r.map(e=>[e.id,e]));return n.map(t=>i.get(t)??{id:t,name:t,reasoning:!0,input:[`text`],cost:e,contextWindow:1e6,maxTokens:3e4})}function s(e){return{id:e.id,name:e.name,api:`openai`,reasoning:e.reasoning,input:e.input,context_window:e.contextWindow,max_tokens:e.maxTokens}}export{r as FALLBACK_MODELS,o as resolveModels,a as supportsReasoningEffort,s as toModelMetadata};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import{supportsReasoningEffort as e}from"./xai-grok-models-0CbvNCeN.js";function t(e){return typeof e==`string`?e:Array.isArray(e)?e.map(e=>{if(typeof e==`string`)return e;if(!e||typeof e!=`object`)return``;let t=e,n=typeof t.type==`string`?t.type:``;return[`text`,`input_text`,`output_text`].includes(n)&&typeof t.text==`string`?t.text:``}).filter(Boolean).join(`
|
|
2
|
+
`):``}function n(e){let t=e.trim();return t.length>=2&&(t.startsWith(`"`)&&t.endsWith(`"`)||t.startsWith(`'`)&&t.endsWith(`'`))?t.slice(1,-1):t}function r(e){if(typeof e!=`string`||!e.trim())return;let t=n(e);if(/^https?:\/\//i.test(t)||/^data:image\//i.test(t))return t;console.warn(`[xai-grok] Dropping non-http/data image reference (slicc cannot resolve local paths in the browser):`,t)}function i(e){return!!e&&typeof e==`object`&&e.type===`input_image`}function a(e){if(Array.isArray(e))return e.map(a).filter(e=>e!==null);if(!e||typeof e!=`object`)return e;let t={...e};if(t.type===`image`&&typeof t.data==`string`&&typeof t.mimeType==`string`)return{type:`input_image`,image_url:`data:${t.mimeType};base64,${t.data}`,detail:typeof t.detail==`string`&&t.detail?t.detail:`auto`};if(t.type===`image_url`){let e=typeof t.image_url==`object`&&t.image_url?t.image_url.url:t.image_url,n=typeof t.image_url==`object`&&t.image_url?t.image_url.detail:t.detail;t.type=`input_image`,t.image_url=e,typeof n==`string`&&n&&(t.detail=n)}if(t.type===`input_image`){let e=typeof t.image_url==`object`&&t.image_url?t.image_url.url:t.image_url,n=typeof t.image_url==`object`&&t.image_url?t.image_url.detail:t.detail,i=r(e);if(i)t.image_url=i;else return null;typeof n==`string`&&n&&(t.detail=n),(typeof t.detail!=`string`||!t.detail)&&(t.detail=`auto`)}return Array.isArray(t.content)&&(t.content=a(t.content)),Array.isArray(t.output)&&(t.output=a(t.output)),t}function o(e){let t=[];for(let n of e){if(!n||typeof n!=`object`||n.type!==`function_call_output`||!Array.isArray(n.output)){t.push(n);continue}let e=n.output,r=e.filter(i),a=e.filter(e=>!i(e)),o=[];for(let e of a)if(typeof e==`string`)o.push(e);else if(e&&typeof e==`object`){let t=e;typeof t.text==`string`&&o.push(t.text)}let s=o.join(`
|
|
3
|
+
`)||`(tool returned no text output)`;if(t.push({...n,output:s}),r.length>0){let e=`The previous tool result${n.call_id?` (${String(n.call_id)})`:``} included ${r.length} image${r.length===1?``:`s`}. Use the attached image${r.length===1?``:`s`} as the visual output from that tool.`;t.push({role:`user`,content:[{type:`input_text`,text:e},...r]})}}return t}function s(n,r,i){let s=n;if(Array.isArray(s.input)){let e=s.input.map(e=>{if(!e||typeof e!=`object`)return e;let t=e;return t.type===`reasoning`||typeof t.content==`string`&&t.content.length===0?null:t}).filter(Boolean),n=[];for(;e.length>0;){let r=e[0];if(!r||typeof r!=`object`)break;let i=r.role;if(i!==`developer`&&i!==`system`)break;let a=t(r.content).trim();a&&n.push(a),e.shift()}n.length>0&&(s.instructions=[typeof s.instructions==`string`&&s.instructions?s.instructions:``,...n].filter(e=>e.length>0).join(`
|
|
4
|
+
|
|
5
|
+
`)),e=a(e).filter(e=>e!==null),e=o(e),s.input=e}if(s.response_format&&!s.text&&(s.text={format:s.response_format},delete s.response_format),e(r)){let e=s.reasoning;e&&e.effort===`minimal`&&(s.reasoning={...e,effort:`low`}),e&&e.summary!==void 0&&(s.reasoning={effort:s.reasoning.effort})}else delete s.reasoning;return Array.isArray(s.include)&&(s.include=s.include.filter(e=>e!==`reasoning.encrypted_content`),s.include.length===0&&delete s.include),delete s.prompt_cache_retention,i&&!s.prompt_cache_key&&(s.prompt_cache_key=i),s}export{s as sanitizePayload};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import{supportsReasoningEffort as e}from"./xai-grok-models-DGbQVjGO.js";function t(e){return typeof e==`string`?e:Array.isArray(e)?e.map(e=>{if(typeof e==`string`)return e;if(!e||typeof e!=`object`)return``;let t=e,n=typeof t.type==`string`?t.type:``;return[`text`,`input_text`,`output_text`].includes(n)&&typeof t.text==`string`?t.text:``}).filter(Boolean).join(`
|
|
2
|
+
`):``}function n(e){let t=e.trim();return t.length>=2&&(t.startsWith(`"`)&&t.endsWith(`"`)||t.startsWith(`'`)&&t.endsWith(`'`))?t.slice(1,-1):t}function r(e){if(typeof e!=`string`||!e.trim())return;let t=n(e);if(/^https?:\/\//i.test(t)||/^data:image\//i.test(t))return t;console.warn(`[xai-grok] Dropping non-http/data image reference (slicc cannot resolve local paths in the browser):`,t)}function i(e){return!!e&&typeof e==`object`&&e.type===`input_image`}function a(e){if(Array.isArray(e))return e.map(a).filter(e=>e!==null);if(!e||typeof e!=`object`)return e;let t={...e};if(t.type===`image`&&typeof t.data==`string`&&typeof t.mimeType==`string`)return{type:`input_image`,image_url:`data:${t.mimeType};base64,${t.data}`,detail:typeof t.detail==`string`&&t.detail?t.detail:`auto`};if(t.type===`image_url`){let e=typeof t.image_url==`object`&&t.image_url?t.image_url.url:t.image_url,n=typeof t.image_url==`object`&&t.image_url?t.image_url.detail:t.detail;t.type=`input_image`,t.image_url=e,typeof n==`string`&&n&&(t.detail=n)}if(t.type===`input_image`){let e=typeof t.image_url==`object`&&t.image_url?t.image_url.url:t.image_url,n=typeof t.image_url==`object`&&t.image_url?t.image_url.detail:t.detail,i=r(e);if(i)t.image_url=i;else return null;typeof n==`string`&&n&&(t.detail=n),(typeof t.detail!=`string`||!t.detail)&&(t.detail=`auto`)}return Array.isArray(t.content)&&(t.content=a(t.content)),Array.isArray(t.output)&&(t.output=a(t.output)),t}function o(e){let t=[];for(let n of e){if(!n||typeof n!=`object`||n.type!==`function_call_output`||!Array.isArray(n.output)){t.push(n);continue}let e=n.output,r=e.filter(i),a=e.filter(e=>!i(e)),o=[];for(let e of a)if(typeof e==`string`)o.push(e);else if(e&&typeof e==`object`){let t=e;typeof t.text==`string`&&o.push(t.text)}let s=o.join(`
|
|
3
|
+
`)||`(tool returned no text output)`;if(t.push({...n,output:s}),r.length>0){let e=`The previous tool result${n.call_id?` (${String(n.call_id)})`:``} included ${r.length} image${r.length===1?``:`s`}. Use the attached image${r.length===1?``:`s`} as the visual output from that tool.`;t.push({role:`user`,content:[{type:`input_text`,text:e},...r]})}}return t}function s(n,r,i){let s=n;if(Array.isArray(s.input)){let e=s.input.map(e=>{if(!e||typeof e!=`object`)return e;let t=e;return t.type===`reasoning`||typeof t.content==`string`&&t.content.length===0?null:t}).filter(Boolean),n=[];for(;e.length>0;){let r=e[0];if(!r||typeof r!=`object`)break;let i=r.role;if(i!==`developer`&&i!==`system`)break;let a=t(r.content).trim();a&&n.push(a),e.shift()}n.length>0&&(s.instructions=[typeof s.instructions==`string`&&s.instructions?s.instructions:``,...n].filter(e=>e.length>0).join(`
|
|
4
|
+
|
|
5
|
+
`)),e=a(e).filter(e=>e!==null),e=o(e),s.input=e}if(s.response_format&&!s.text&&(s.text={format:s.response_format},delete s.response_format),e(r)){let e=s.reasoning;e&&e.effort===`minimal`&&(s.reasoning={...e,effort:`low`}),e&&e.summary!==void 0&&(s.reasoning={effort:s.reasoning.effort})}else delete s.reasoning;return Array.isArray(s.include)&&(s.include=s.include.filter(e=>e!==`reasoning.encrypted_content`),s.include.length===0&&delete s.include),delete s.prompt_cache_retention,i&&!s.prompt_cache_key&&(s.prompt_cache_key=i),s}export{s as sanitizePayload};
|
package/dist/ui/index.html
CHANGED
|
@@ -5,26 +5,26 @@
|
|
|
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/index-
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-CTzhOMSf.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/chunk-jRWAZmH_.js">
|
|
10
10
|
<link rel="modulepreload" crossorigin href="/assets/preload-helper-ca-nBW7U.js">
|
|
11
11
|
<link rel="modulepreload" crossorigin href="/assets/env-api-keys-BoL4zxcb.js">
|
|
12
12
|
<link rel="modulepreload" crossorigin href="/assets/simple-options-D8vGmEnp.js">
|
|
13
13
|
<link rel="modulepreload" crossorigin href="/assets/json-parse-Cu2r6BfV.js">
|
|
14
|
-
<link rel="modulepreload" crossorigin href="/assets/bedrock-camp-
|
|
14
|
+
<link rel="modulepreload" crossorigin href="/assets/bedrock-camp-DChwr7KC.js">
|
|
15
15
|
<link rel="modulepreload" crossorigin href="/assets/tray-follower-status-hrOEFANe.js">
|
|
16
16
|
<link rel="modulepreload" crossorigin href="/assets/logger-B-No_qN_.js">
|
|
17
17
|
<link rel="modulepreload" crossorigin href="/assets/tool-ui-DaAXBPJY.js">
|
|
18
|
-
<link rel="modulepreload" crossorigin href="/assets/telemetry-
|
|
19
|
-
<link rel="modulepreload" crossorigin href="/assets/provider-settings-
|
|
18
|
+
<link rel="modulepreload" crossorigin href="/assets/telemetry-D728iVf5.js">
|
|
19
|
+
<link rel="modulepreload" crossorigin href="/assets/provider-settings-CyRPUAEx.js">
|
|
20
20
|
<link rel="modulepreload" crossorigin href="/assets/mount-picker-popup-ys6_YNH0.js">
|
|
21
21
|
<link rel="modulepreload" crossorigin href="/assets/backend-local-CfhYopTE.js">
|
|
22
22
|
<link rel="modulepreload" crossorigin href="/assets/path-utils-C99GOg2c.js">
|
|
23
|
-
<link rel="modulepreload" crossorigin href="/assets/fs-
|
|
23
|
+
<link rel="modulepreload" crossorigin href="/assets/fs-C9P3Nfvq.js">
|
|
24
24
|
<link rel="modulepreload" crossorigin href="/assets/mime-types-DL940yDZ.js">
|
|
25
|
-
<link rel="modulepreload" crossorigin href="/assets/mount-
|
|
25
|
+
<link rel="modulepreload" crossorigin href="/assets/mount-D1VXEtPM.js">
|
|
26
26
|
<link rel="modulepreload" crossorigin href="/assets/shared-AafAvJaI.js">
|
|
27
|
-
<link rel="modulepreload" crossorigin href="/assets/sprinkle-renderer-
|
|
27
|
+
<link rel="modulepreload" crossorigin href="/assets/sprinkle-renderer-sJJO5bqF.js">
|
|
28
28
|
<link rel="stylesheet" crossorigin href="/assets/index-eWuuouO-.css">
|
|
29
29
|
</head>
|
|
30
30
|
<body>
|
|
@@ -5,26 +5,26 @@
|
|
|
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/index-
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-CTzhOMSf.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/chunk-jRWAZmH_.js">
|
|
10
10
|
<link rel="modulepreload" crossorigin href="/assets/preload-helper-ca-nBW7U.js">
|
|
11
11
|
<link rel="modulepreload" crossorigin href="/assets/env-api-keys-BoL4zxcb.js">
|
|
12
12
|
<link rel="modulepreload" crossorigin href="/assets/simple-options-D8vGmEnp.js">
|
|
13
13
|
<link rel="modulepreload" crossorigin href="/assets/json-parse-Cu2r6BfV.js">
|
|
14
|
-
<link rel="modulepreload" crossorigin href="/assets/bedrock-camp-
|
|
14
|
+
<link rel="modulepreload" crossorigin href="/assets/bedrock-camp-DChwr7KC.js">
|
|
15
15
|
<link rel="modulepreload" crossorigin href="/assets/tray-follower-status-hrOEFANe.js">
|
|
16
16
|
<link rel="modulepreload" crossorigin href="/assets/logger-B-No_qN_.js">
|
|
17
17
|
<link rel="modulepreload" crossorigin href="/assets/tool-ui-DaAXBPJY.js">
|
|
18
|
-
<link rel="modulepreload" crossorigin href="/assets/telemetry-
|
|
19
|
-
<link rel="modulepreload" crossorigin href="/assets/provider-settings-
|
|
18
|
+
<link rel="modulepreload" crossorigin href="/assets/telemetry-D728iVf5.js">
|
|
19
|
+
<link rel="modulepreload" crossorigin href="/assets/provider-settings-CyRPUAEx.js">
|
|
20
20
|
<link rel="modulepreload" crossorigin href="/assets/mount-picker-popup-ys6_YNH0.js">
|
|
21
21
|
<link rel="modulepreload" crossorigin href="/assets/backend-local-CfhYopTE.js">
|
|
22
22
|
<link rel="modulepreload" crossorigin href="/assets/path-utils-C99GOg2c.js">
|
|
23
|
-
<link rel="modulepreload" crossorigin href="/assets/fs-
|
|
23
|
+
<link rel="modulepreload" crossorigin href="/assets/fs-C9P3Nfvq.js">
|
|
24
24
|
<link rel="modulepreload" crossorigin href="/assets/mime-types-DL940yDZ.js">
|
|
25
|
-
<link rel="modulepreload" crossorigin href="/assets/mount-
|
|
25
|
+
<link rel="modulepreload" crossorigin href="/assets/mount-D1VXEtPM.js">
|
|
26
26
|
<link rel="modulepreload" crossorigin href="/assets/shared-AafAvJaI.js">
|
|
27
|
-
<link rel="modulepreload" crossorigin href="/assets/sprinkle-renderer-
|
|
27
|
+
<link rel="modulepreload" crossorigin href="/assets/sprinkle-renderer-sJJO5bqF.js">
|
|
28
28
|
<link rel="stylesheet" crossorigin href="/assets/index-eWuuouO-.css">
|
|
29
29
|
</head>
|
|
30
30
|
<body>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sliccy",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.56.0",
|
|
4
4
|
"description": "Browser-based coding agent with thin CLI server",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
"globals": "17.6.0",
|
|
82
82
|
"husky": "9.1.7",
|
|
83
83
|
"knip": "^6.11.0",
|
|
84
|
-
"lint-staged": "
|
|
84
|
+
"lint-staged": "17.0.4",
|
|
85
85
|
"prettier": "3.8.3",
|
|
86
86
|
"semantic-release": "25.0.3",
|
|
87
87
|
"tsx": "4.21.0",
|