sliccy 2.45.3 → 2.45.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ui/assets/{adobe-B6wBtBjn.js → adobe-avKwr7Dm.js} +1 -1
- package/dist/ui/assets/{adobe-B4g7AOSY.js → adobe-tvf67GRq.js} +1 -1
- package/dist/ui/assets/{agent-bridge-BIqfSVu2.js → agent-bridge-DiVkgwz-.js} +1 -1
- package/dist/ui/assets/{agent-message-to-chat-Dnnrujom.js → agent-message-to-chat-Cbt_9_fN.js} +1 -1
- package/dist/ui/assets/{anthropic-BoDcD0xs.js → anthropic-CJwUhBlX.js} +1 -1
- package/dist/ui/assets/{anthropic-vh-aBoE_.js → anthropic-CWEVurmr.js} +1 -1
- package/dist/ui/assets/{azure-openai-CMUTac7w.js → azure-openai-BdX0RC5r.js} +1 -1
- package/dist/ui/assets/{azure-openai-responses-Crk9DqJp.js → azure-openai-responses-BDfegDRI.js} +1 -1
- package/dist/ui/assets/{azure-openai-responses-Bx6yBVfU.js → azure-openai-responses-DJ9LbDv9.js} +1 -1
- package/dist/ui/assets/{azure-openai-DpX78gmt.js → azure-openai-tDQwCw_S.js} +1 -1
- package/dist/ui/assets/{bedrock-camp-CkuZf5jK.js → bedrock-camp-BTPbdI5P.js} +2 -2
- package/dist/ui/assets/{bedrock-camp-tuaApwJn.js → bedrock-camp-DZoSTfJa.js} +3 -3
- package/dist/ui/assets/{cdp-ClOGGuy0.js → cdp-B-G1EOxs.js} +2 -2
- package/dist/ui/assets/cost-command-BtV9Fq05.js +1 -0
- package/dist/ui/assets/{es-Cjr2MR0R.js → es-a26K4k4j.js} +1 -1
- package/dist/ui/assets/{fs-Bnfvl1-T.js → fs-BxaZxvu8.js} +2 -2
- package/dist/ui/assets/{fs-BKcSjdXB.js → fs-C5Bh6SAK.js} +3 -3
- package/dist/ui/assets/{github-Ctpw7yW7.js → github-BdUQG7nB.js} +1 -1
- package/dist/ui/assets/{github-B97_s3v4.js → github-CXH07t6L.js} +2 -2
- package/dist/ui/assets/{google-DMNlmX9j.js → google-BAax5yWz.js} +1 -1
- package/dist/ui/assets/{google-B0fvtsLh.js → google-DtE60DkT.js} +1 -1
- package/dist/ui/assets/index-BPKmYW7p.css +1 -0
- package/dist/ui/assets/{index-BepIlMll.js → index-C59z0nlR.js} +6 -6
- package/dist/ui/assets/{kernel-worker-BulN1Taf.js → kernel-worker-Cpe3B5AZ.js} +599 -599
- package/dist/ui/assets/{local-llm-B4JQAghf.js → local-llm-Cz-Egtek.js} +1 -1
- package/dist/ui/assets/{local-llm-DAt3aDPa.js → local-llm-D6PNDXul.js} +1 -1
- package/dist/ui/assets/{magick-wasm-CQC5E0LF.js → magick-wasm-C0UYrNr8.js} +1 -1
- package/dist/ui/assets/{mistral-CkD2H9Iq.js → mistral-B5chjbWN.js} +1 -1
- package/dist/ui/assets/{mistral-BUFp9pi9.js → mistral-Bm7Flw3U.js} +1 -1
- package/dist/ui/assets/{mount-BeFMKlu0.js → mount-BtuRh1GY.js} +1 -1
- package/dist/ui/assets/{mount-D6dUvorm.js → mount-CeV8nQDH.js} +2 -2
- package/dist/ui/assets/{nuke-command-Dbhl4q0W.js → nuke-command-Kwh9fpJ-.js} +1 -1
- package/dist/ui/assets/{oauth-bootstrap-CGg3ArUs.js → oauth-bootstrap-CJU0rioR.js} +1 -1
- package/dist/ui/assets/{oauth-service-BhR9BE2g.js → oauth-service-OzjrJhvT.js} +1 -1
- package/dist/ui/assets/{offscreen-client-wEL_xW9X.js → offscreen-client-BU_msuje.js} +1 -1
- package/dist/ui/assets/{onboarding-orchestrator-DwHIw7_r.js → onboarding-orchestrator-BK2UqVst.js} +1 -1
- package/dist/ui/assets/{openai-codex-responses-D3Gu9VHn.js → openai-codex-responses-C7dp_KxL.js} +1 -1
- package/dist/ui/assets/{openai-codex-responses-To0VPNpK.js → openai-codex-responses-CZWGyVjG.js} +1 -1
- package/dist/ui/assets/{openai-completions-BLDUKEsm.js → openai-completions-COqqEP8O.js} +1 -1
- package/dist/ui/assets/{openai-completions-BTYtmF5L.js → openai-completions-D9Ykqp6l.js} +1 -1
- package/dist/ui/assets/{openai-responses-Dd1wYcsg.js → openai-responses-rs7x-URy.js} +1 -1
- package/dist/ui/assets/{openai-responses-shared-B2L8aVu0.js → openai-responses-shared-B_MOgAN_.js} +1 -1
- package/dist/ui/assets/{openai-responses-shared-bjmGUfjZ.js → openai-responses-shared-BbssLGOF.js} +1 -1
- package/dist/ui/assets/{openai-responses-rbeRR8Tu.js → openai-responses-trulc-Fw.js} +1 -1
- package/dist/ui/assets/provider-settings-BdZH5Wj1.js +90 -0
- package/dist/ui/assets/{provider-settings-BMhQrltn.js → provider-settings-BzJrOSG3.js} +2 -2
- package/dist/ui/assets/{providers-DOkzveyM.js → providers-BEE1lB4a.js} +1 -1
- package/dist/ui/assets/{spawn-CyLKP0QP.js → spawn-DCVh5mXD.js} +1 -1
- package/dist/ui/assets/{upgrade-detection-5S6RyXlk.js → upgrade-detection-Ce7X_CBC.js} +1 -1
- package/dist/ui/index.html +7 -7
- package/dist/ui/packages/webapp/index.html +7 -7
- package/package.json +1 -1
- package/dist/ui/assets/cost-command-BAD6Qx8Q.js +0 -1
- package/dist/ui/assets/index-RVLUy-Qx.css +0 -1
- package/dist/ui/assets/provider-settings-DoJZgrI1.js +0 -90
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/magick-wasm-
|
|
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{i as r,r as i,t as a}from"./bedrock-camp-tuaApwJn.js";import{d as o,l as s,u as c}from"./simple-options-B0cR4giT.js";import{l,s as u,t as d}from"./tray-follower-status-DmK3Afse.js";import{s as f}from"./index-BepIlMll.js";function p(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 m(e){let t=e.mimeType||`application/octet-stream`;return`${e.name} (${t}, ${p(e.size)})`}var h=t(`image-processor`),g=3932160,_=1568,v=new Set([`image/jpeg`,`image/png`,`image/gif`,`image/webp`]);function y(e){return v.has(e)}function b(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 x(e){if(!y(e.mimeType))return h.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=b(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;h.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-CQC5E0LF.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13]));i=e.getMagick,a=e.MIME_TO_MAGICK_FORMAT}catch(e){return h.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 h.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=_/o,i=Math.round(n*e),a=Math.round(r*e);t.resize(i,a),h.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>g&&s!==`JPEG`?(h.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>g&&(h.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 h.warn(`ImageMagick produced no output`),{type:`text`,text:`[Image removed: could not be processed (empty output from resize)]`};if(i.data.length>g)return h.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 h.info(`Image processed successfully`,{originalBase64:t,newBase64:c.length,mimeType:i.mime}),{type:`image`,data:c,mimeType:i.mime}}catch(n){return h.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`})]`}}}t(`tool-adapter`),t(`context-compaction`);function S(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??C(t.state)??`Mirroring another browser.`}}function C(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 w(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 T=Object.assign({"/packages/dev-tools/providers.build.json":{include:[`*`],exclude:[]}})[`/packages/dev-tools/providers.build.json`]??{include:[`*`],exclude:[]};function E(e){let{include:t,exclude:n}=T;return n.includes(`*`)||n.includes(e)?!1:!!(t.includes(`*`)||t.includes(e))}var D=Object.assign({"./built-in/azure-ai-foundry.ts":()=>n(()=>import(`./azure-ai-foundry-Bcv3AvZm.js`),[]),"./built-in/azure-openai.ts":()=>n(()=>import(`./azure-openai-CMUTac7w.js`),__vite__mapDeps([14,4,2,1,3,5,6,7,8,9,10,11,12,13,15])),"./built-in/bedrock-camp.ts":()=>n(()=>import(`./bedrock-camp-tuaApwJn.js`).then(e=>e.n),__vite__mapDeps([4,2,1,3,5,6,7,8,9,10,11,12,13])),"./built-in/local-llm.ts":()=>n(()=>import(`./local-llm-DAt3aDPa.js`),__vite__mapDeps([16,4,2,1,3,5,6,7,8,9,10,11,12,13,17,18,19,20,15]))}),O=Object.assign({"/packages/webapp/providers/adobe.ts":()=>n(()=>import(`./adobe-B6wBtBjn.js`),__vite__mapDeps([21,3,4,2,1,5,6,7,8,9,10,11,12,13])),"/packages/webapp/providers/github.ts":()=>n(()=>import(`./github-B97_s3v4.js`),__vite__mapDeps([22,3,4,2,1,5,6,7,8,9,10,11,12,13]))}),k=new Map,A=null;function j(){return A||(A=(async()=>{for(let[e,t]of Object.entries(D)){let e=await t();e.config&&E(e.config.id)&&(k.set(e.config.id,e.config),e.register?.())}for(let[e,t]of Object.entries(O)){let e=await t();e.config&&(k.set(e.config.id,e.config),e.register?.())}})(),A)}function M(e){return k.get(e)}function N(){return[...k.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 ee=`slicc_oauth_extra_domains`;function te(e){try{let t=e.getItem(ee);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{}}}var ne=e({addAccount:()=>J,applyProviderDefaults:()=>W,clearAllSettings:()=>Se,describeInvalidJoinUrl:()=>w,downloadProviders:()=>xe,exportProviders:()=>be,getAccounts:()=>K,getAllAvailableModels:()=>ue,getApiKey:()=>ye,getApiKeyForProvider:()=>me,getApiVersionForProvider:()=>ge,getAvailableProviders:()=>R,getBaseUrlForProvider:()=>X,getDeploymentForProvider:()=>he,getExtraOAuthDomains:()=>de,getOAuthAccountInfo:()=>H,getProviderConfig:()=>z,getProviderModels:()=>V,getSelectedModelId:()=>Z,getSelectedProvider:()=>Q,isModelHiddenFromPicker:()=>G,removeAccount:()=>Y,resolveCurrentModel:()=>$,resolveModelById:()=>Ce,saveOAuthAccount:()=>fe,setSelectedModelId:()=>_e,showProviderSettings:()=>De}),P=s,F=c;function re(){return typeof chrome<`u`&&!!chrome?.runtime?.id}var I=`slicc_accounts`,L=`selected-model`,ie=[`slicc_provider`,`slicc_api_key`,`slicc_base_url`,`anthropic_api_key`,`api_provider`,`azure_resource`,`bedrock_region`],ae=!1;function oe(){if(!ae){ae=!0;for(let e of ie)try{localStorage.removeItem(e)}catch{}}}function R(){let e=o().filter(E),t=N();return[...new Set([...e,...t])]}function z(e){return M(e)||{id:e,name:e.split(`-`).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `),description:`${e} provider`,requiresApiKey:!0,requiresBaseUrl:!1}}function B(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 V(e){try{if(e===`bedrock-camp`){let e=a(X(`bedrock-camp`)),t=F(`amazon-bedrock`).filter(t=>r(t,e)),n=new Set(t.map(e=>e.id)),o=i().filter(t=>r(t,e)&&!n.has(t.id));return[...t,...o].map(e=>({...e,api:`bedrock-camp-converse`,provider:`bedrock-camp`}))}let t=z(e);if(t.getModelIds){let n;try{n=t.getModelIds()}catch(t){return U.error(`Provider getModelIds callback failed`,{providerId:e,error:t instanceof Error?t.message:String(t)}),[]}let r=new Map;for(let e of o())try{for(let t of F(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&&B(o,s),B(o,n),o})}if(t.isOAuth){let n=F(`anthropic`),r=`${e}-anthropic`;return n.map(n=>{let i={...n,api:r,provider:e},a=t.modelOverrides?.[n.id];return a&&B(i,a),i})}return F(e===`azure-ai-foundry`?`anthropic`:e)}catch(t){return U.error(`Failed to load models`,{providerId:e,error:t instanceof Error?t.message:String(t)}),[]}}function H(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`]??[],U=t(`provider-settings`);function W(e=se){if(e.length===0||K().length>0)return;let t=new Set(R());for(let n of e)if(!(!n.providerId||!n.apiKey)){if(!t.has(n.providerId)){U.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(L)&&localStorage.setItem(L,`${n.providerId}:${n.model}`)}var ce=[/haiku/i];function G(e){return ce.some(t=>t.test(e))}function le(e){return e.filter(e=>!G(e.id))}function ue(){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=le(V(n.providerId));if(e.length===0)continue;let r=z(n.providerId),i={providerId:n.providerId,providerName:r.name,models:e};t.set(n.providerId,i)}return[...t.values()]}function K(){oe();let e=localStorage.getItem(I);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 de(e){return te(localStorage)[e]??[]}function q(e){localStorage.setItem(I,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&&U.warn(`OAuth replica DELETE non-ok`,{providerId:e,status:t.status})}}catch(n){U.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(L)??``,r=n.indexOf(`:`);r>0&&n.slice(0,r)===e&&localStorage.removeItem(L)}async function fe(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=z(e.providerId)?.oauthTokenDomains??[],i=de(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&&U.error(`SW mask-oauth-token transport failed`,{providerId:e.providerId,error:chrome.runtime.lastError.message}),t(n??{})})});if(t.error&&U.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 U.warn(`OAuth replica POST non-ok`,{providerId:e.providerId,status:t.status})}}catch(t){U.error(`OAuth replica sync failed`,{providerId:e.providerId,isExtension:s,error:t instanceof Error?t.message:String(t)})}}var pe=`local`;function me(e){let t=K().find(t=>t.providerId===e);return t?t.accessToken||t.apiKey||(z(e).optionalApiKey?pe:null):null}function X(e){return K().find(t=>t.providerId===e)?.baseUrl??null}function he(e){return K().find(t=>t.providerId===e)?.deployment??null}function ge(e){return K().find(t=>t.providerId===e)?.apiVersion??null}function Z(){let e=localStorage.getItem(L)||``,t=e.indexOf(`:`);return t>=0?e.slice(t+1):e}function _e(e){if(e.includes(`:`))localStorage.setItem(L,e);else{let t=Q();localStorage.setItem(L,`${t}:${e}`)}}function ve(){return localStorage.getItem(L)||``}function Q(){let e=ve(),t=e.indexOf(`:`);if(t>0)return e.slice(0,t);let n=K();return n.length>0?n[0].providerId:`anthropic`}function ye(){return me(Q())}function be(){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 xe(){let e=JSON.stringify(be(),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 Se(){let e=K();await Promise.allSettled(e.map(e=>Y(e.providerId))),localStorage.removeItem(I),localStorage.removeItem(L);for(let e of ie)localStorage.removeItem(e)}function Ce(e){if(!e)return $();let t=Q(),n=X(t);try{let r=z(t),i=P(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=V(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=V(e),i=z(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=z(e),i=t.isOAuth||e===`azure-ai-foundry`?`anthropic`:e===`bedrock-camp`?`amazon-bedrock`:e,a=P(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:P(`anthropic`,`claude-sonnet-4-0`)}}function we(e){return e.length<=10?`****`:e.slice(0,4)+`...`+e.slice(-4)}function Te(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 Ee={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 De(e){return f(`button`),new Promise(t=>{let r=localStorage.getItem(I)??``,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?f():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=z(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=we(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(Te(Ee.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(Te(Ee.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 l=document.createElement(`div`);l.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()),l.appendChild(p);let m=document.createElement(`button`);m.className=`dialog__btn dialog__btn--secondary`,m.style.flex=`1`,m.textContent=`Export`,m.addEventListener(`click`,()=>xe()),l.appendChild(m),a.appendChild(l);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=u(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`,()=>f()),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(I)??``)!==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=z(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=R(),t=new Set(K().map(e=>e.providerId)),n=[...e].sort((e,t)=>{let n=z(e).name,r=z(t).name;return n.localeCompare(r)});for(let e of n){if(t.has(e))continue;let n=z(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 l=document.createElement(`div`);l.style.cssText=`margin-bottom: 16px; display: none;`;let u=document.createElement(`button`);u.className=`dialog__btn`,u.textContent=`Login`,u.style.cssText=`width: 100%; margin-bottom: 8px;`,l.appendChild(u);let d=document.createElement(`div`);d.className=`dialog__desc`,d.style.cssText=`font-size: 12px; color: var(--s2-content-secondary); text-align: center;`,l.appendChild(d),u.addEventListener(`click`,async()=>{let e=s.value;if(!e)return;let t=z(e);if(!t.onOAuthLogin)return;let r=K().some(t=>t.providerId===e),i=X(e);if(t.requiresBaseUrl&&!v.value.trim()&&!i){d.textContent=`Base URL is required.`,d.style.color=`var(--slicc-cone)`,v.focus();return}t.requiresBaseUrl&&v.value.trim()&&J(e,``,v.value.trim()),d.textContent=`Opening login window...`;try{let{createOAuthLauncher:e}=await n(async()=>{let{createOAuthLauncher:e}=await import(`./oauth-service-DTHr_ILl.js`);return{createOAuthLauncher:e}},__vite__mapDeps([23,24])),r=e();await t.onOAuthLogin(r,o)}catch(t){if(!r)try{await Y(e)}catch{}U.error(`OAuth login failed`,{providerId:e,error:t instanceof Error?t.message:String(t)}),d.textContent=`Login failed: ${t instanceof Error?t.message:String(t)}`}}),t&&e.userName&&(d.textContent=`Logged in as ${e.userName}`,u.textContent=`Re-login`),a.appendChild(l);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=z(e);if(c.textContent=t.description,t.isOAuth)l.style.display=``,p.style.display=`none`,g.style.display=t.requiresBaseUrl?``:`none`,t.requiresBaseUrl&&(v.placeholder=t.baseUrlPlaceholder||`https://...`,y.textContent=t.baseUrlDescription||``),u.textContent=`Login with ${t.name}`,k.style.display=`none`;else{l.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=z(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`,()=>{f()}),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=z(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 u=document.createElement(`button`);u.className=`dialog__btn`,u.textContent=`Connect`,u.addEventListener(`click`,()=>{let n=l(window.localStorage,e);if(!n){c.textContent=`Invalid sync URL.`,c.style.display=``,c.style.color=`var(--slicc-cone)`;return}if(re()){let e={type:`refresh-tray-runtime`,joinUrl:n.joinUrl,workerBaseUrl:n.workerBaseUrl};chrome.runtime.sendMessage({source:`panel`,payload:e}).catch(()=>{})}else window.dispatchEvent(new CustomEvent(`slicc:tray-join`,{detail:{joinUrl:n.joinUrl}}));c.textContent=`Connecting…`,c.style.display=``,c.style.color=`var(--s2-content-secondary)`,setTimeout(()=>{i.remove(),t(!1)},800)}),a.appendChild(u);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 f(){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 u=document.createElement(`ol`);u.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,u.appendChild(t)}c.appendChild(u),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=l(window.localStorage,e);if(!n){p.textContent=w(e),p.style.display=``,f.focus();return}if(re()){let e={type:`refresh-tray-runtime`,joinUrl:n.joinUrl,workerBaseUrl:n.workerBaseUrl};chrome.runtime.sendMessage({source:`panel`,payload:e}).catch(()=>{})}else window.dispatchEvent(new CustomEvent(`slicc:tray-join`,{detail:{joinUrl:n.joinUrl}}));m.textContent=`Connecting…`,m.style.display=``,m.style.color=`var(--s2-content-secondary)`,setTimeout(()=>{i.remove(),t(!1)},800)}),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{S as C,m as D,p as E,j as S,x as T,Ce as _,ye as a,De as b,he as c,V as d,Z as f,$ as g,Y as h,ue as i,H as l,ne as m,Se as n,ge as o,Q as p,K as r,X as s,W as t,z as u,fe as v,y as w,M as x,_e as y};
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/magick-wasm-C0UYrNr8.js","assets/index-C59z0nlR.js","assets/chunk-jRWAZmH_.js","assets/preload-helper-ca-nBW7U.js","assets/bedrock-camp-DZoSTfJa.js","assets/simple-options-B0cR4giT.js","assets/fs-C5Bh6SAK.js","assets/logger-B-No_qN_.js","assets/path-utils-CNNVZ3-O.js","assets/tray-follower-status-DmK3Afse.js","assets/mime-types-DL940yDZ.js","assets/mount-picker-popup-BLHoVG3y.js","assets/mount-CeV8nQDH.js","assets/index-BPKmYW7p.css","assets/azure-openai-BdX0RC5r.js","assets/openai-NzrumIkM.js","assets/local-llm-D6PNDXul.js","assets/openai-completions-D9Ykqp6l.js","assets/github-copilot-headers-DLK82thn.js","assets/headers-CeeP1wvy.js","assets/sanitize-unicode-DANurEy1.js","assets/adobe-avKwr7Dm.js","assets/github-CXH07t6L.js","assets/oauth-service-DTHr_ILl.js","assets/panel-rpc-g85bMVnq.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{i as r,r as i,t as a}from"./bedrock-camp-DZoSTfJa.js";import{d as o,l as s,u as c}from"./simple-options-B0cR4giT.js";import{l,s as u,t as d}from"./tray-follower-status-DmK3Afse.js";import{s as f}from"./index-C59z0nlR.js";function p(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 m(e){let t=e.mimeType||`application/octet-stream`;return`${e.name} (${t}, ${p(e.size)})`}var h=t(`image-processor`),g=3932160,_=1568,v=new Set([`image/jpeg`,`image/png`,`image/gif`,`image/webp`]);function y(e){return v.has(e)}function b(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 x(e){if(!y(e.mimeType))return h.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=b(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;h.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-C0UYrNr8.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13]));i=e.getMagick,a=e.MIME_TO_MAGICK_FORMAT}catch(e){return h.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 h.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=_/o,i=Math.round(n*e),a=Math.round(r*e);t.resize(i,a),h.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>g&&s!==`JPEG`?(h.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>g&&(h.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 h.warn(`ImageMagick produced no output`),{type:`text`,text:`[Image removed: could not be processed (empty output from resize)]`};if(i.data.length>g)return h.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 h.info(`Image processed successfully`,{originalBase64:t,newBase64:c.length,mimeType:i.mime}),{type:`image`,data:c,mimeType:i.mime}}catch(n){return h.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`})]`}}}t(`tool-adapter`),t(`context-compaction`);function S(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??C(t.state)??`Mirroring another browser.`}}function C(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 w(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 T=Object.assign({"/packages/dev-tools/providers.build.json":{include:[`*`],exclude:[]}})[`/packages/dev-tools/providers.build.json`]??{include:[`*`],exclude:[]};function E(e){let{include:t,exclude:n}=T;return n.includes(`*`)||n.includes(e)?!1:!!(t.includes(`*`)||t.includes(e))}var D=Object.assign({"./built-in/azure-ai-foundry.ts":()=>n(()=>import(`./azure-ai-foundry-Bcv3AvZm.js`),[]),"./built-in/azure-openai.ts":()=>n(()=>import(`./azure-openai-BdX0RC5r.js`),__vite__mapDeps([14,4,2,1,3,5,6,7,8,9,10,11,12,13,15])),"./built-in/bedrock-camp.ts":()=>n(()=>import(`./bedrock-camp-DZoSTfJa.js`).then(e=>e.n),__vite__mapDeps([4,2,1,3,5,6,7,8,9,10,11,12,13])),"./built-in/local-llm.ts":()=>n(()=>import(`./local-llm-D6PNDXul.js`),__vite__mapDeps([16,4,2,1,3,5,6,7,8,9,10,11,12,13,17,18,19,20,15]))}),O=Object.assign({"/packages/webapp/providers/adobe.ts":()=>n(()=>import(`./adobe-avKwr7Dm.js`),__vite__mapDeps([21,3,4,2,1,5,6,7,8,9,10,11,12,13])),"/packages/webapp/providers/github.ts":()=>n(()=>import(`./github-CXH07t6L.js`),__vite__mapDeps([22,3,4,2,1,5,6,7,8,9,10,11,12,13]))}),k=new Map,A=null;function j(){return A||(A=(async()=>{for(let[e,t]of Object.entries(D)){let e=await t();e.config&&E(e.config.id)&&(k.set(e.config.id,e.config),e.register?.())}for(let[e,t]of Object.entries(O)){let e=await t();e.config&&(k.set(e.config.id,e.config),e.register?.())}})(),A)}function M(e){return k.get(e)}function N(){return[...k.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 ee=`slicc_oauth_extra_domains`;function te(e){try{let t=e.getItem(ee);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{}}}var ne=e({addAccount:()=>J,applyProviderDefaults:()=>W,clearAllSettings:()=>Se,describeInvalidJoinUrl:()=>w,downloadProviders:()=>xe,exportProviders:()=>be,getAccounts:()=>K,getAllAvailableModels:()=>ue,getApiKey:()=>ye,getApiKeyForProvider:()=>me,getApiVersionForProvider:()=>ge,getAvailableProviders:()=>R,getBaseUrlForProvider:()=>X,getDeploymentForProvider:()=>he,getExtraOAuthDomains:()=>de,getOAuthAccountInfo:()=>H,getProviderConfig:()=>z,getProviderModels:()=>V,getSelectedModelId:()=>Z,getSelectedProvider:()=>Q,isModelHiddenFromPicker:()=>G,removeAccount:()=>Y,resolveCurrentModel:()=>$,resolveModelById:()=>Ce,saveOAuthAccount:()=>fe,setSelectedModelId:()=>_e,showProviderSettings:()=>De}),P=s,F=c;function re(){return typeof chrome<`u`&&!!chrome?.runtime?.id}var I=`slicc_accounts`,L=`selected-model`,ie=[`slicc_provider`,`slicc_api_key`,`slicc_base_url`,`anthropic_api_key`,`api_provider`,`azure_resource`,`bedrock_region`],ae=!1;function oe(){if(!ae){ae=!0;for(let e of ie)try{localStorage.removeItem(e)}catch{}}}function R(){let e=o().filter(E),t=N();return[...new Set([...e,...t])]}function z(e){return M(e)||{id:e,name:e.split(`-`).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `),description:`${e} provider`,requiresApiKey:!0,requiresBaseUrl:!1}}function B(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 V(e){try{if(e===`bedrock-camp`){let e=a(X(`bedrock-camp`)),t=F(`amazon-bedrock`).filter(t=>r(t,e)),n=new Set(t.map(e=>e.id)),o=i().filter(t=>r(t,e)&&!n.has(t.id));return[...t,...o].map(e=>({...e,api:`bedrock-camp-converse`,provider:`bedrock-camp`}))}let t=z(e);if(t.getModelIds){let n;try{n=t.getModelIds()}catch(t){return U.error(`Provider getModelIds callback failed`,{providerId:e,error:t instanceof Error?t.message:String(t)}),[]}let r=new Map;for(let e of o())try{for(let t of F(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&&B(o,s),B(o,n),o})}if(t.isOAuth){let n=F(`anthropic`),r=`${e}-anthropic`;return n.map(n=>{let i={...n,api:r,provider:e},a=t.modelOverrides?.[n.id];return a&&B(i,a),i})}return F(e===`azure-ai-foundry`?`anthropic`:e)}catch(t){return U.error(`Failed to load models`,{providerId:e,error:t instanceof Error?t.message:String(t)}),[]}}function H(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`]??[],U=t(`provider-settings`);function W(e=se){if(e.length===0||K().length>0)return;let t=new Set(R());for(let n of e)if(!(!n.providerId||!n.apiKey)){if(!t.has(n.providerId)){U.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(L)&&localStorage.setItem(L,`${n.providerId}:${n.model}`)}var ce=[/haiku/i];function G(e){return ce.some(t=>t.test(e))}function le(e){return e.filter(e=>!G(e.id))}function ue(){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=le(V(n.providerId));if(e.length===0)continue;let r=z(n.providerId),i={providerId:n.providerId,providerName:r.name,models:e};t.set(n.providerId,i)}return[...t.values()]}function K(){oe();let e=localStorage.getItem(I);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 de(e){return te(localStorage)[e]??[]}function q(e){localStorage.setItem(I,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&&U.warn(`OAuth replica DELETE non-ok`,{providerId:e,status:t.status})}}catch(n){U.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(L)??``,r=n.indexOf(`:`);r>0&&n.slice(0,r)===e&&localStorage.removeItem(L)}async function fe(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=z(e.providerId)?.oauthTokenDomains??[],i=de(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&&U.error(`SW mask-oauth-token transport failed`,{providerId:e.providerId,error:chrome.runtime.lastError.message}),t(n??{})})});if(t.error&&U.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 U.warn(`OAuth replica POST non-ok`,{providerId:e.providerId,status:t.status})}}catch(t){U.error(`OAuth replica sync failed`,{providerId:e.providerId,isExtension:s,error:t instanceof Error?t.message:String(t)})}}var pe=`local`;function me(e){let t=K().find(t=>t.providerId===e);return t?t.accessToken||t.apiKey||(z(e).optionalApiKey?pe:null):null}function X(e){return K().find(t=>t.providerId===e)?.baseUrl??null}function he(e){return K().find(t=>t.providerId===e)?.deployment??null}function ge(e){return K().find(t=>t.providerId===e)?.apiVersion??null}function Z(){let e=localStorage.getItem(L)||``,t=e.indexOf(`:`);return t>=0?e.slice(t+1):e}function _e(e){if(e.includes(`:`))localStorage.setItem(L,e);else{let t=Q();localStorage.setItem(L,`${t}:${e}`)}}function ve(){return localStorage.getItem(L)||``}function Q(){let e=ve(),t=e.indexOf(`:`);if(t>0)return e.slice(0,t);let n=K();return n.length>0?n[0].providerId:`anthropic`}function ye(){return me(Q())}function be(){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 xe(){let e=JSON.stringify(be(),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 Se(){let e=K();await Promise.allSettled(e.map(e=>Y(e.providerId))),localStorage.removeItem(I),localStorage.removeItem(L);for(let e of ie)localStorage.removeItem(e)}function Ce(e){if(!e)return $();let t=Q(),n=X(t);try{let r=z(t),i=P(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=V(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=V(e),i=z(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=z(e),i=t.isOAuth||e===`azure-ai-foundry`?`anthropic`:e===`bedrock-camp`?`amazon-bedrock`:e,a=P(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:P(`anthropic`,`claude-sonnet-4-0`)}}function we(e){return e.length<=10?`****`:e.slice(0,4)+`...`+e.slice(-4)}function Te(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 Ee={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 De(e){return f(`button`),new Promise(t=>{let r=localStorage.getItem(I)??``,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?f():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=z(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=we(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(Te(Ee.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(Te(Ee.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 l=document.createElement(`div`);l.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()),l.appendChild(p);let m=document.createElement(`button`);m.className=`dialog__btn dialog__btn--secondary`,m.style.flex=`1`,m.textContent=`Export`,m.addEventListener(`click`,()=>xe()),l.appendChild(m),a.appendChild(l);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=u(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`,()=>f()),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(I)??``)!==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=z(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=R(),t=new Set(K().map(e=>e.providerId)),n=[...e].sort((e,t)=>{let n=z(e).name,r=z(t).name;return n.localeCompare(r)});for(let e of n){if(t.has(e))continue;let n=z(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 l=document.createElement(`div`);l.style.cssText=`margin-bottom: 16px; display: none;`;let u=document.createElement(`button`);u.className=`dialog__btn`,u.textContent=`Login`,u.style.cssText=`width: 100%; margin-bottom: 8px;`,l.appendChild(u);let d=document.createElement(`div`);d.className=`dialog__desc`,d.style.cssText=`font-size: 12px; color: var(--s2-content-secondary); text-align: center;`,l.appendChild(d),u.addEventListener(`click`,async()=>{let e=s.value;if(!e)return;let t=z(e);if(!t.onOAuthLogin)return;let r=K().some(t=>t.providerId===e),i=X(e);if(t.requiresBaseUrl&&!v.value.trim()&&!i){d.textContent=`Base URL is required.`,d.style.color=`var(--slicc-cone)`,v.focus();return}t.requiresBaseUrl&&v.value.trim()&&J(e,``,v.value.trim()),d.textContent=`Opening login window...`;try{let{createOAuthLauncher:e}=await n(async()=>{let{createOAuthLauncher:e}=await import(`./oauth-service-DTHr_ILl.js`);return{createOAuthLauncher:e}},__vite__mapDeps([23,24])),r=e();await t.onOAuthLogin(r,o)}catch(t){if(!r)try{await Y(e)}catch{}U.error(`OAuth login failed`,{providerId:e,error:t instanceof Error?t.message:String(t)}),d.textContent=`Login failed: ${t instanceof Error?t.message:String(t)}`}}),t&&e.userName&&(d.textContent=`Logged in as ${e.userName}`,u.textContent=`Re-login`),a.appendChild(l);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=z(e);if(c.textContent=t.description,t.isOAuth)l.style.display=``,p.style.display=`none`,g.style.display=t.requiresBaseUrl?``:`none`,t.requiresBaseUrl&&(v.placeholder=t.baseUrlPlaceholder||`https://...`,y.textContent=t.baseUrlDescription||``),u.textContent=`Login with ${t.name}`,k.style.display=`none`;else{l.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=z(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`,()=>{f()}),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=z(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 u=document.createElement(`button`);u.className=`dialog__btn`,u.textContent=`Connect`,u.addEventListener(`click`,()=>{let n=l(window.localStorage,e);if(!n){c.textContent=`Invalid sync URL.`,c.style.display=``,c.style.color=`var(--slicc-cone)`;return}if(re()){let e={type:`refresh-tray-runtime`,joinUrl:n.joinUrl,workerBaseUrl:n.workerBaseUrl};chrome.runtime.sendMessage({source:`panel`,payload:e}).catch(()=>{})}else window.dispatchEvent(new CustomEvent(`slicc:tray-join`,{detail:{joinUrl:n.joinUrl}}));c.textContent=`Connecting…`,c.style.display=``,c.style.color=`var(--s2-content-secondary)`,setTimeout(()=>{i.remove(),t(!1)},800)}),a.appendChild(u);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 f(){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 u=document.createElement(`ol`);u.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,u.appendChild(t)}c.appendChild(u),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=l(window.localStorage,e);if(!n){p.textContent=w(e),p.style.display=``,f.focus();return}if(re()){let e={type:`refresh-tray-runtime`,joinUrl:n.joinUrl,workerBaseUrl:n.workerBaseUrl};chrome.runtime.sendMessage({source:`panel`,payload:e}).catch(()=>{})}else window.dispatchEvent(new CustomEvent(`slicc:tray-join`,{detail:{joinUrl:n.joinUrl}}));m.textContent=`Connecting…`,m.style.display=``,m.style.color=`var(--s2-content-secondary)`,setTimeout(()=>{i.remove(),t(!1)},800)}),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{S as C,m as D,p as E,j as S,x as T,Ce as _,ye as a,De as b,he as c,V as d,Z as f,$ as g,Y as h,ue as i,H as l,ne as m,Se as n,ge as o,Q as p,K as r,X as s,W as t,z as u,fe as v,y as w,M as x,_e as y};
|
|
@@ -1 +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-CaxHzIfg.js`),"./built-in/azure-openai.ts":()=>import(`./azure-openai-
|
|
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-CaxHzIfg.js`),"./built-in/azure-openai.ts":()=>import(`./azure-openai-tDQwCw_S.js`),"./built-in/bedrock-camp.ts":()=>import(`./bedrock-camp-BTPbdI5P.js`).then(e=>e.n),"./built-in/local-llm.ts":()=>import(`./local-llm-Cz-Egtek.js`).then(e=>e.n)}),o=Object.assign({"/packages/webapp/providers/adobe.ts":()=>import(`./adobe-tvf67GRq.js`),"/packages/webapp/providers/github.ts":()=>import(`./github-BdUQG7nB.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-BU_msuje.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-Cpe3B5AZ.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 +1 @@
|
|
|
1
|
-
import{p as e,x as t}from"./db-Cdoacmjm.js";const n=`slicc:last-seen-version`;function r(){return{version:`2.45.
|
|
1
|
+
import{p as e,x as t}from"./db-Cdoacmjm.js";const n=`slicc:last-seen-version`;function r(){return{version:`2.45.4`,releasedAt:`2026-05-13T13:02:05Z`}}async function i(){let t=await e(n);return t&&t.length>0?t:null}async function a(e){await t(n,e)}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};
|
package/dist/ui/index.html
CHANGED
|
@@ -5,21 +5,21 @@
|
|
|
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-C59z0nlR.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/simple-options-B0cR4giT.js">
|
|
12
|
-
<link rel="modulepreload" crossorigin href="/assets/bedrock-camp-
|
|
12
|
+
<link rel="modulepreload" crossorigin href="/assets/bedrock-camp-DZoSTfJa.js">
|
|
13
13
|
<link rel="modulepreload" crossorigin href="/assets/logger-B-No_qN_.js">
|
|
14
14
|
<link rel="modulepreload" crossorigin href="/assets/path-utils-CNNVZ3-O.js">
|
|
15
|
-
<link rel="modulepreload" crossorigin href="/assets/fs-
|
|
15
|
+
<link rel="modulepreload" crossorigin href="/assets/fs-C5Bh6SAK.js">
|
|
16
16
|
<link rel="modulepreload" crossorigin href="/assets/tray-follower-status-DmK3Afse.js">
|
|
17
17
|
<link rel="modulepreload" crossorigin href="/assets/mime-types-DL940yDZ.js">
|
|
18
18
|
<link rel="modulepreload" crossorigin href="/assets/mount-picker-popup-BLHoVG3y.js">
|
|
19
|
-
<link rel="modulepreload" crossorigin href="/assets/mount-
|
|
20
|
-
<link rel="modulepreload" crossorigin href="/assets/index-
|
|
21
|
-
<link rel="modulepreload" crossorigin href="/assets/provider-settings-
|
|
22
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
19
|
+
<link rel="modulepreload" crossorigin href="/assets/mount-CeV8nQDH.js">
|
|
20
|
+
<link rel="modulepreload" crossorigin href="/assets/index-C59z0nlR.js">
|
|
21
|
+
<link rel="modulepreload" crossorigin href="/assets/provider-settings-BzJrOSG3.js">
|
|
22
|
+
<link rel="stylesheet" crossorigin href="/assets/index-BPKmYW7p.css">
|
|
23
23
|
</head>
|
|
24
24
|
<body>
|
|
25
25
|
<div id="app"></div>
|
|
@@ -5,21 +5,21 @@
|
|
|
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-C59z0nlR.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/simple-options-B0cR4giT.js">
|
|
12
|
-
<link rel="modulepreload" crossorigin href="/assets/bedrock-camp-
|
|
12
|
+
<link rel="modulepreload" crossorigin href="/assets/bedrock-camp-DZoSTfJa.js">
|
|
13
13
|
<link rel="modulepreload" crossorigin href="/assets/logger-B-No_qN_.js">
|
|
14
14
|
<link rel="modulepreload" crossorigin href="/assets/path-utils-CNNVZ3-O.js">
|
|
15
|
-
<link rel="modulepreload" crossorigin href="/assets/fs-
|
|
15
|
+
<link rel="modulepreload" crossorigin href="/assets/fs-C5Bh6SAK.js">
|
|
16
16
|
<link rel="modulepreload" crossorigin href="/assets/tray-follower-status-DmK3Afse.js">
|
|
17
17
|
<link rel="modulepreload" crossorigin href="/assets/mime-types-DL940yDZ.js">
|
|
18
18
|
<link rel="modulepreload" crossorigin href="/assets/mount-picker-popup-BLHoVG3y.js">
|
|
19
|
-
<link rel="modulepreload" crossorigin href="/assets/mount-
|
|
20
|
-
<link rel="modulepreload" crossorigin href="/assets/index-
|
|
21
|
-
<link rel="modulepreload" crossorigin href="/assets/provider-settings-
|
|
22
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
19
|
+
<link rel="modulepreload" crossorigin href="/assets/mount-CeV8nQDH.js">
|
|
20
|
+
<link rel="modulepreload" crossorigin href="/assets/index-C59z0nlR.js">
|
|
21
|
+
<link rel="modulepreload" crossorigin href="/assets/provider-settings-BzJrOSG3.js">
|
|
22
|
+
<link rel="stylesheet" crossorigin href="/assets/index-BPKmYW7p.css">
|
|
23
23
|
</head>
|
|
24
24
|
<body>
|
|
25
25
|
<div id="app"></div>
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./index-BepIlMll.js";function e(e){}export{e as registerSessionCostsProvider};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
@font-face{font-family:Adobe Clean;src:url(/fonts/AdobeClean-Regular.otf)format("opentype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Adobe Clean;src:url(/fonts/AdobeClean-Medium.otf)format("opentype");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Adobe Clean;src:url(/fonts/AdobeClean-Bold.otf)format("opentype");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:Adobe Clean;src:url(/fonts/AdobeClean-ExtraBold.otf)format("opentype");font-weight:800;font-style:normal;font-display:swap}:root{--s2-gray-25:#1a1a1a;--s2-gray-50:#1e1e1e;--s2-gray-75:#252525;--s2-gray-100:#2c2c2c;--s2-gray-200:#3a3a3a;--s2-gray-300:#4a4a4a;--s2-gray-400:#5a5a5a;--s2-gray-500:#6e6e6e;--s2-gray-600:#8a8a8a;--s2-gray-700:#a1a1a1;--s2-gray-800:#cfcfcf;--s2-gray-900:#e8e8e8;--s2-gray-1000:#fff;--s2-bg-base:var(--s2-gray-25);--s2-bg-layer-1:var(--s2-gray-50);--s2-bg-layer-2:var(--s2-gray-75);--s2-bg-elevated:var(--s2-gray-100);--s2-bg-sunken:#141414;--s2-content-default:var(--s2-gray-900);--s2-content-secondary:var(--s2-gray-700);--s2-content-tertiary:var(--s2-gray-600);--s2-content-disabled:var(--s2-gray-400);--slicc-cone:#ef7000;--slicc-scoop-blue:#3562ff;--slicc-scoop-purple:#a962e8;--slicc-scoop-teal:#2db9be;--slicc-accent:#15d675;--s2-accent:var(--slicc-scoop-blue);--s2-accent-hover:#4a75ff;--s2-accent-down:#2a52e0;--s2-negative:#e34850;--s2-positive:#2d9d78;--s2-informative:var(--slicc-scoop-blue);--s2-notice:#e68619;--s2-border-default:var(--s2-gray-300);--s2-border-subtle:var(--s2-gray-200);--s2-border-focus:var(--s2-accent);--s2-font-family:"Adobe Clean", "Source Sans Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--s2-font-mono:"Source Code Pro", "JetBrains Mono", "Fira Code", "Cascadia Code", monospace;--s2-font-size-50:11px;--s2-font-size-75:12px;--s2-font-size-100:14px;--s2-font-size-200:16px;--s2-font-size-300:18px;--s2-font-size-400:20px;--s2-font-size-500:22px;--s2-font-size-600:25px;--s2-line-height-50:14px;--s2-line-height-75:16px;--s2-line-height-100:18px;--s2-line-height-200:20px;--s2-line-height-300:22px;--s2-spacing-50:4px;--s2-spacing-75:6px;--s2-spacing-100:8px;--s2-spacing-200:12px;--s2-spacing-300:16px;--s2-spacing-400:24px;--s2-spacing-500:32px;--s2-spacing-600:40px;--s2-radius-s:4px;--s2-radius-default:8px;--s2-radius-l:12px;--s2-radius-xl:16px;--s2-radius-pill:9999px;--s2-shadow-elevated:0 4px 16px #0006, 0 1px 4px #0000004d;--s2-shadow-container:0 1px 4px #0003;--s2-transition-default:.13s ease;--s2-header-height:56px;--uxc-yellow-subtle-bg:#fff197;--uxc-yellow-subtle-text:#9e6600;--uxc-purple-subtle-bg:#f4ebfc;--uxc-purple-subtle-text:#9a47e2;--uxc-cyan-subtle-bg:#d9f4fd;--uxc-cyan-subtle-text:#0b78b3;--uxc-magenta-subtle-bg:#ffe8f0;--uxc-magenta-subtle-text:#d92361;--uxc-indigo-subtle-bg:#ebeeff;--uxc-indigo-subtle-text:#5424db;--uxc-gray-subtle-bg:#efefef;--uxc-gray-subtle-text:#292929;--uxc-positive-subtle-bg:#d7f7e1;--uxc-positive-subtle-text:#079355;--uxc-notice-subtle-bg:#ffeccf;--uxc-notice-subtle-text:#d45b00;--uxc-negative-subtle-bg:#ffe8f0;--uxc-negative-subtle-text:#d92361;--uxc-accent-subtle-bg:#e5f0fe;--uxc-accent-subtle-text:#3b63fb;--uxc-neutral-subtle-bg:#f3f3f3;--uxc-nav-rail-width:58px;--uxc-thread-header-height:56px;--uxc-content-max-width:800px;--slicc-warm-bg:color-mix(in oklch, var(--s2-gray-50) 94%, var(--slicc-cone) 6%);--slicc-brand-gradient:linear-gradient(90deg, var(--slicc-cone) 0%, var(--slicc-scoop-blue) 50%, var(--slicc-scoop-purple) 100%)}:root.theme-light{--s2-gray-25:#fff;--s2-gray-50:#f8f8f8;--s2-gray-75:#f3f3f3;--s2-gray-100:#e9e9e9;--s2-gray-200:#e1e1e1;--s2-gray-300:#dadada;--s2-gray-400:#c6c6c6;--s2-gray-500:#8f8f8f;--s2-gray-600:#717171;--s2-gray-700:#505050;--s2-gray-800:#292929;--s2-gray-900:#131313;--s2-gray-1000:#000;--s2-bg-sunken:#f3f3f3;--s2-accent:#3b63fb;--s2-accent-hover:#2b54db;--s2-accent-down:#1e44c4;--s2-negative:#d92361;--s2-positive:#05834e;--s2-notice:#d45b00;--s2-shadow-elevated:0 4px 12px #00000014, 0 2px 6px #0000000a, 0 0px 2px #0000001f;--s2-shadow-container:0 2px 8px #00000014, 0 1px 4px #0000000a, 0 0px 1px #00000014}.theme-light .tok-keyword{color:#8839ef}.theme-light .tok-string{color:#40a02b}.theme-light .tok-number{color:#d05d1a}.theme-light .tok-comment{color:var(--s2-gray-500)}.theme-light .tok-punct{color:#1e66f5}.theme-light .tok-fn{color:#2b6cb0}.theme-light .s2-tooltip{background:var(--s2-gray-900);color:var(--s2-gray-25)}.theme-light ::-webkit-scrollbar-thumb{background:var(--s2-gray-300)}.theme-light ::-webkit-scrollbar-thumb:hover{background:var(--s2-gray-400)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;overflow:hidden}body{font-family:var(--s2-font-family);background:var(--s2-bg-base);color:var(--s2-content-default);font-size:var(--s2-font-size-100);line-height:1.5}#app{flex-direction:column;height:100%;display:flex}:focus-visible{outline:2px solid var(--s2-accent);outline-offset:2px}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--s2-gray-300);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--s2-gray-400)}.layout{flex:1;min-height:0;display:flex}.layout__scoops{width:var(--uxc-nav-rail-width);min-width:var(--uxc-nav-rail-width);max-width:var(--uxc-nav-rail-width);background:var(--s2-bg-layer-1);flex-direction:column;flex-shrink:0;transition:width .2s,min-width .2s,max-width .2s;display:flex;overflow:visible}.layout__scoops--expanded{width:230px;min-width:230px;max-width:230px}.layout__left{background:var(--s2-bg-layer-1);flex-direction:column;flex:1;min-width:320px;display:flex}.layout__right{background:var(--s2-gray-25);flex-direction:column;flex:1;min-width:240px;display:flex;overflow:hidden}.layout__divider{cursor:col-resize;background:var(--s2-border-subtle);width:1px;transition:background var(--s2-transition-default);flex-shrink:0;position:relative}.layout__divider:after{content:"";position:absolute;inset:0 -3px}.layout__divider:hover,.layout__divider.active{background:var(--s2-accent)}.thread-header{height:var(--uxc-thread-header-height);min-height:var(--uxc-thread-header-height);background:var(--s2-gray-25);border-bottom:none;border-top-left-radius:12px;flex-shrink:0;justify-content:space-between;align-items:center;padding:0 16px;display:flex;position:relative;overflow:hidden}.thread-header:before{content:"";background:var(--slicc-brand-gradient);opacity:.5;height:1px;position:absolute;bottom:0;left:0;right:0}.thread-header:after{content:"";background:var(--s2-accent);transform-origin:0;opacity:0;height:2px;transition:opacity .2s;position:absolute;bottom:0;left:0;right:0;transform:scaleX(0)}.thread-header--processing:after{opacity:1;animation:1.8s ease-in-out infinite thread-progress}@keyframes thread-progress{0%{transform:scaleX(0)translate(0)}50%{transform:scaleX(.4)translate(125%)}to{transform:scaleX(0)translate(300%)}}.thread-header__title{flex:1;align-items:center;gap:8px;min-width:0;display:flex}.thread-header__name{letter-spacing:0;color:var(--s2-gray-900);white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:700;line-height:18px;overflow:hidden}.thread-header__icon{width:20px;height:20px;color:var(--s2-content-default);flex-shrink:0;justify-content:center;align-items:center;display:flex}.thread-header__actions{flex-shrink:0;align-items:center;gap:4px;display:flex}.thread-header--with-switcher{z-index:12;overflow:visible}.thread-header--with-switcher .thread-header__title{gap:0}.thread-header--with-switcher .scoop-switcher{align-items:center;margin-left:0;display:flex}.layout__right-divider{cursor:row-resize;background:var(--s2-border-subtle);height:1px;transition:background var(--s2-transition-default);flex-shrink:0;position:relative}.layout__right-divider:after{content:"";position:absolute;inset:-3px 0}.layout__right-divider:hover,.layout__right-divider.active{background:var(--s2-accent)}.thread-header__panel-toggle{width:32px;height:32px;color:var(--s2-content-secondary);border-radius:var(--s2-radius-pill);cursor:pointer;transition:background var(--s2-transition-default), color var(--s2-transition-default);background:0 0;border:none;justify-content:center;align-items:center;display:inline-flex}.thread-header__panel-toggle:hover{background:var(--s2-gray-200);color:var(--s2-content-default)}.thread-header__panel-toggle svg{width:16px;height:16px}.chat__gradient-top{background:linear-gradient(to bottom, var(--s2-bg-base) 0%, transparent 100%);pointer-events:none;z-index:1;height:80px;position:absolute;top:0;left:0;right:0}.layout__left--fullpage-hidden,.layout__divider--fullpage-hidden,.layout__scoops--fullpage-hidden{display:none!important}.layout__right--fullpage{flex:1;min-width:0;width:auto!important;box-shadow:none!important;position:static!important;transform:none!important}@media (width>=1024px){.thread-header__panel-toggle--right{display:none}}@media (width<=1023px){.layout__right{right:0;top:var(--s2-header-height);z-index:50;width:50vw;min-width:400px;transition:transform .25s;position:fixed;bottom:0;transform:translate(100%);box-shadow:-4px 0 24px #0000001a}.layout__right--open{transform:translate(0)}.layout__divider--vertical{display:none}.layout__left{flex:1;min-width:0}}@media (width<=767px){.layout__scoops{left:0;top:var(--s2-header-height);z-index:60;border-right:1px solid var(--s2-border-subtle);width:var(--uxc-nav-rail-width);min-width:var(--uxc-nav-rail-width);max-width:var(--uxc-nav-rail-width);transition:transform .25s;position:fixed;bottom:0;transform:translate(-100%);box-shadow:4px 0 24px #0000001a}.layout__scoops--expanded{width:200px;min-width:200px;max-width:200px;transform:translate(0)}.layout__divider--scoops{display:none}.layout__right{width:100vw;min-width:100vw}.thread-header{padding:0 var(--s2-spacing-200)}.chat__input-area{padding:var(--s2-spacing-200)}}@media (width>=1440px){.layout__left,.layout__right{flex:1}}.header{height:var(--s2-header-height);min-height:var(--s2-header-height);background:var(--s2-bg-layer-2);z-index:10;flex-shrink:0;justify-content:space-between;align-items:center;padding:8px 16px;display:flex}.header__row{align-items:center;gap:6px;width:100%;display:flex}.header__brand{align-items:center;gap:10px;display:flex}.header__spacer{flex:1}.header__logo{flex-shrink:0;width:32px;height:32px;margin-right:12px;transition:viewBox .3s}.header__brand .scoops-hamburger{width:32px;height:32px;color:var(--s2-content-secondary);cursor:pointer;background:0 0;border:none;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;transition:background .13s,color .13s;display:flex}.header__brand .scoops-hamburger:hover{background:var(--s2-bg-elevated);color:var(--s2-content-default)}.logo-scoop-enter{transform-box:fill-box;transform-origin:50%;animation:.6s cubic-bezier(.34,1.56,.64,1) both scoop-drop}@keyframes scoop-drop{0%{opacity:0;transform:translateY(-18px)scale(.2)}40%{opacity:1;transform:translateY(1px)scale(1.15)}60%{transform:translateY(-2px)scale(.95)}80%{transform:translateY(.5px)scale(1.03)}to{opacity:1;transform:translateY(0)scale(1)}}.logo-scoop-wiggle{transform-box:fill-box;transform-origin:50%;animation:.5s both scoop-wiggle}@keyframes scoop-wiggle{0%{transform:translateY(0)}20%{transform:translateY(1.5px)}40%{transform:translateY(-1px)}60%{transform:translateY(.5px)}to{transform:translateY(0)}}.logo-cone-squash{transform-box:fill-box;transform-origin:top;animation:.5s both cone-squash}@keyframes cone-squash{0%{transform:scaleY(1)scaleX(1)}30%{transform:scaleY(.92)scaleX(1.06)}60%{transform:scaleY(1.03)scaleX(.98)}to{transform:scaleY(1)scaleX(1)}}.header__title{color:var(--s2-gray-900);letter-spacing:-.01em;font-size:18px;font-weight:800;line-height:20px}.header__actions{align-items:center;gap:8px;display:flex}.header__separator{background:var(--s2-border-subtle);width:1px;height:20px;margin:0}.header__btn{color:var(--s2-content-default);width:32px;height:32px;font-size:14px;font-family:var(--s2-font-family);cursor:pointer;transition:background var(--s2-transition-default), color var(--s2-transition-default), transform var(--s2-transition-default);background:0 0;border:none;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex;position:relative}.header__btn:hover{background:var(--s2-bg-elevated);color:var(--s2-content-default)}.header__btn:active{transform:scale(.92)}.header__btn svg{width:20px;height:20px}.header__btn--text{width:auto;padding:var(--s2-spacing-50) var(--s2-spacing-200);font-size:var(--s2-font-size-75);border-radius:var(--s2-radius-default);gap:var(--s2-spacing-75);font-weight:500}.s2-tooltip{background:var(--s2-gray-900);color:var(--s2-gray-25);font-size:11px;font-weight:500;font-family:var(--s2-font-family);white-space:nowrap;text-align:center;border-radius:var(--s2-radius-s);pointer-events:none;opacity:0;z-index:10000;padding:4px 8px;line-height:1.3;transition:opacity .13s;position:fixed}.s2-tooltip--visible{opacity:1}.header__avatar{cursor:pointer;width:28px;height:28px;transition:border-color var(--s2-transition-default), box-shadow var(--s2-transition-default);background:var(--s2-gray-200);color:var(--s2-content-tertiary);border:2px solid #0000;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.header__avatar:hover{border-color:var(--s2-gray-300);box-shadow:0 0 0 2px color-mix(in srgb, var(--s2-accent) 20%, transparent)}.header__avatar img{object-fit:cover;border-radius:50%;width:100%;height:100%}.header__avatar--initials{background:var(--slicc-cone);color:#fff;font-size:11px;font-weight:700;font-family:var(--s2-font-family);line-height:1}.header__avatar--placeholder svg{width:16px;height:16px}.avatar-popover{z-index:10001;background:var(--s2-bg-layer-2);border:1px solid var(--s2-border-subtle);border-radius:var(--s2-radius-default);min-width:220px;font-family:var(--s2-font-family);padding:8px 0;position:fixed;box-shadow:0 8px 24px #0000001f,0 2px 8px #00000014}.avatar-popover__user{border-bottom:1px solid var(--s2-border-subtle);padding:12px 16px}.avatar-popover__name{color:var(--s2-content-default);font-size:14px;font-weight:600}.avatar-popover__provider{color:var(--s2-content-tertiary);margin-top:2px;font-size:11px}.avatar-popover__caption{color:var(--s2-content-tertiary);padding:4px 16px 8px;font-size:11px}.avatar-popover__item{width:100%;color:var(--s2-content-default);font-size:13px;font-family:var(--s2-font-family);cursor:pointer;text-align:left;transition:background var(--s2-transition-default);background:0 0;border:none;align-items:center;gap:8px;padding:8px 16px;display:flex}.avatar-popover__item:hover{background:var(--s2-bg-elevated)}.avatar-popover__item--danger{color:var(--s2-negative)}.avatar-popover__item--danger:hover{background:color-mix(in srgb, var(--s2-negative) 8%, transparent)}.avatar-popover__separator{background:var(--s2-border-subtle);height:1px;margin:4px 0}.chat{background:var(--s2-bg-base);flex-direction:column;flex:1;min-height:0;display:flex;position:relative}.chat__messages{flex-direction:column;flex:1;gap:16px;padding:16px;display:flex;overflow-y:auto}.chat__messages-inner{width:100%;max-width:var(--uxc-content-max-width);flex-direction:column;gap:16px;margin:0 auto;display:flex}.chat__jump-pill{background:var(--s2-bg-layer-2);color:var(--s2-content-default);border:1px solid var(--s2-border-subtle);border-radius:var(--s2-radius-l);cursor:pointer;z-index:10;opacity:0;pointer-events:none;padding:5px 14px;font-size:12px;transition:opacity .2s;position:absolute;bottom:68px;left:50%;transform:translate(-50%)}.chat__jump-pill--visible{opacity:1;pointer-events:auto}.chat__jump-pill:hover{background:var(--s2-bg-elevated)}.msg{word-wrap:break-word;letter-spacing:0;max-width:100%;color:var(--s2-content-default);padding:0;font-size:14px;line-height:1.5}.msg--user{color:#fff;letter-spacing:0;background:#7155fa;border-radius:10px;align-self:flex-end;min-width:80px;max-width:560px;padding:8px 16px;font-size:14px;font-weight:500;line-height:18px}.msg--user .msg__content a,.msg--user .msg__content a:visited{color:#c8bbff!important;text-decoration:underline!important}.msg--user .msg__content a:hover{color:#fff!important}.msg--user :not(pre)>code{color:#fff!important;background:#ffffff2e!important}.msg--user pre{background:#00000040!important;border-color:#ffffff1a!important}.msg--user pre code{color:#e8e0ff!important}.msg--user .msg__attachments{margin-bottom:8px}.msg-group--continuation .msg--user{padding-left:0}.msg--assistant{background:0 0;align-self:stretch}.msg--assistant .msg__content{white-space:normal;color:var(--s2-content-default);font-size:14px;line-height:1.5}.msg--assistant .msg__error{margin:var(--s2-spacing-75) 0}.msg--assistant .msg__error-label{color:var(--s2-negative);font-size:10px;font-weight:600;font-family:var(--s2-font-mono);text-transform:uppercase;letter-spacing:.04em;align-items:center;gap:6px;display:inline-flex}.msg--assistant .msg__error-label:before{content:"!";border-radius:var(--s2-radius-s);background:color-mix(in srgb, var(--s2-negative) 18%, transparent);border:1px solid color-mix(in srgb, var(--s2-negative) 45%, var(--s2-border-subtle));justify-content:center;align-items:center;width:16px;height:16px;display:inline-flex}.msg--assistant .msg__error-body{padding:var(--s2-spacing-75);border-left:2px solid color-mix(in srgb, var(--s2-negative) 60%, var(--s2-border-subtle));background:color-mix(in srgb, var(--s2-negative) 8%, var(--s2-bg-sunken));border-radius:var(--s2-radius-s);color:var(--s2-content-secondary);font-family:var(--s2-font-mono);font-size:var(--s2-font-size-50);white-space:pre-wrap;margin-top:2px;overflow-x:auto}.msg--assistant .msg__error-body code{font-size:inherit}.msg__dip{border-radius:var(--s2-radius-default);min-height:32px;margin:.6em 0;overflow:hidden}.msg__dip iframe{background:0 0;border:none;width:100%;display:block;overflow:hidden}.msg__seg--shtml{cursor:progress;opacity:.92;margin:.6em 0}.msg__dip-pending{background:var(--s2-bg-layer-1);color:var(--s2-content-secondary);font-size:var(--s2-font-size-75);border-radius:8px;align-items:center;gap:8px;margin:.6em 0;padding:8px 12px;line-height:1.4;display:flex}.msg__dip-pending-label{font-family:var(--s2-font-family);color:var(--s2-content-secondary);font-weight:500}.msg__dip-pending-status{background:#e6a23c;border-radius:50%;flex-shrink:0;width:7px;height:7px;margin-left:auto;animation:1.2s ease-in-out infinite tool-status-pulse}@media (prefers-reduced-motion:reduce){.msg__dip-pending-status{animation:none}}.msg-group--continuation .msg{padding-left:0}.msg__role,.msg__icon{display:none}.msg__collapsible{cursor:pointer}.msg__collapsible summary{cursor:pointer;color:var(--s2-content-tertiary);font-size:var(--s2-font-size-75);padding:var(--s2-spacing-50) 0;list-style:none}.msg__collapsible summary::-webkit-details-marker{display:none}.msg__collapsible summary:before{content:"▸";color:var(--s2-content-tertiary);transition:transform var(--s2-transition-default);margin-right:var(--s2-spacing-50);font-size:10px;display:inline-block}.msg__collapsible[open] summary:before{transform:rotate(90deg)}.msg__collapsible[open] .msg__content{margin-top:var(--s2-spacing-100)}.msg-group{flex-direction:column;gap:8px;display:flex}.msg--queued{opacity:.55}.msg__queued-badge{text-transform:uppercase;background:var(--s2-bg-elevated);color:var(--s2-content-disabled);border-radius:var(--s2-radius-s);letter-spacing:.5px;vertical-align:middle;margin-left:8px;padding:1px 6px;font-size:9px;font-weight:600;display:inline-block}.msg__queued-delete{color:var(--s2-content-disabled);cursor:pointer;vertical-align:middle;background:0 0;border:none;margin-left:6px;padding:0 4px;font-size:14px;line-height:1}.msg__queued-delete:hover{color:var(--s2-negative)}.streaming-cursor{background:var(--s2-accent);vertical-align:text-bottom;border-radius:1px;width:2px;height:16px;margin-left:2px;animation:1s step-end infinite blink;display:inline-block}@keyframes blink{50%{opacity:0}}.chat__input-area{padding:var(--s2-spacing-300);background:var(--s2-bg-base);border-top:none}.chat__input-area-inner{max-width:var(--uxc-content-max-width);width:100%;margin:0 auto}.chat__suggested-actions{gap:var(--s2-spacing-100);margin-bottom:var(--s2-spacing-200);flex-wrap:wrap;justify-content:center;display:flex}.chat__suggested-btn{align-items:center;gap:var(--s2-spacing-75);border:1px solid var(--s2-gray-200);border-radius:var(--s2-radius-pill);background:var(--s2-bg-base);height:32px;color:var(--s2-content-default);font-size:var(--s2-font-size-75);font-weight:600;font-family:var(--s2-font-family);cursor:pointer;transition:background var(--s2-transition-default), border-color var(--s2-transition-default);padding:0 16px;display:inline-flex}.chat__suggested-btn:hover{background:var(--s2-gray-75);border-color:var(--s2-gray-300)}.chat__suggested-btn--accent{background:var(--s2-accent);color:#fff;border-color:#0000}.chat__suggested-btn--accent:hover{background:var(--s2-accent-hover)}.chat__input-wrapper{border:1px solid var(--s2-border-subtle);background:var(--s2-gray-25);transition:border-color var(--s2-transition-default), box-shadow var(--s2-transition-default);border-radius:16px;flex-direction:column;min-height:112px;padding:16px;display:flex;box-shadow:0 0 1px #00000014,0 1px 4px #0000000a,0 2px 8px #00000014}.chat__input-wrapper:focus-within{border-color:var(--s2-accent);box-shadow:0 0 1px #00000014,0 1px 4px #0000000a,0 4px 16px #0000001f}.chat__attachments,.msg__attachments{flex-wrap:wrap;gap:8px;display:none}.chat__attachments--visible,.msg__attachments{display:flex}.chat__attachments{margin-bottom:10px}.attachment-chip{border-radius:var(--s2-radius-default);border:1px solid var(--s2-border-subtle);background:var(--s2-bg-base);max-width:min(260px,100%);min-height:36px;color:var(--s2-content-default);align-items:center;gap:8px;padding:5px 8px 5px 6px;font-size:12px;line-height:1.2;display:inline-flex}.msg--user .attachment-chip{color:#fff;background:#ffffff24;border-color:#fff3}.attachment-chip__visual{background:color-mix(in srgb, var(--s2-bg-elevated) 80%, transparent);border-radius:6px;flex:none;justify-content:center;align-items:center;width:26px;height:26px;display:inline-flex;overflow:hidden}.msg--user .attachment-chip__visual{background:#ffffff29}.attachment-chip__visual img{object-fit:cover;width:100%;height:100%}.attachment-chip__body{flex-direction:column;gap:1px;min-width:0;display:flex}.attachment-chip__name,.attachment-chip__meta,.attachment-chip__path{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.attachment-chip__name{font-weight:600}.attachment-chip__meta{color:var(--s2-content-tertiary);font-size:11px}.attachment-chip__path{color:var(--s2-content-tertiary);font-size:11px;font-family:var(--s2-font-mono,ui-monospace, monospace)}.msg--user .attachment-chip__meta,.msg--user .attachment-chip__path{color:#ffffffb3}.attachment-chip__remove{border-radius:var(--s2-radius-s);width:22px;height:22px;color:var(--s2-content-tertiary);cursor:pointer;background:0 0;border:none;flex:none;justify-content:center;align-items:center;display:inline-flex}.attachment-chip__remove:hover{background:var(--s2-bg-elevated);color:var(--s2-content-default)}.chat__textarea{resize:none;min-height:18px;max-height:30vh;color:var(--s2-content-default);font-family:var(--s2-font-family);letter-spacing:0;background:0 0;border:none;outline:none;flex:none;padding:0;font-size:14px;font-weight:400;line-height:18px;overflow-y:auto}.chat__textarea::placeholder{color:var(--s2-content-tertiary)}.chat__action-bar{flex-shrink:0;justify-content:space-between;align-items:center;margin-top:auto;display:flex}.chat__action-bar-left{align-items:center;gap:8px;display:flex}.chat__action-bar-right{align-items:center;gap:8px;margin-left:12px;display:flex}.chat__model-selector{flex:1;justify-content:flex-end;align-items:center;gap:6px;display:flex;position:relative}.chat__thinking-btn{border-radius:var(--s2-radius-default);cursor:pointer;width:28px;height:28px;color:var(--s2-content-default);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;transition:opacity .13s,transform .13s,background .13s,color .13s;display:flex}.chat__thinking-btn svg{width:18px;height:18px}.chat__thinking-btn:hover{background:var(--s2-bg-elevated)}.chat__thinking-btn:active{transform:scale(.92)}.chat__thinking-btn[hidden]{display:none}.chat__thinking-btn[data-level=off]{opacity:.5}.chat__thinking-btn[data-level=minimal],.chat__thinking-btn[data-level=low]{opacity:.75}.chat__thinking-btn[data-level=medium],.chat__thinking-btn[data-level=high]{opacity:1;color:var(--s2-accent,var(--slicc-cone,#6b8afd))}.chat__thinking-btn[data-level=xhigh]{opacity:1;color:#fff;background:linear-gradient(135deg, var(--slicc-cone-mint,#b8e6c9), var(--slicc-cone-strawberry,#ffb3c1), var(--slicc-cone-vanilla,#fff4c2), var(--slicc-cone-blueberry,#b8c9ff));background-size:300% 300%;animation:6s ease-in-out infinite chat-thinking-shimmer}@keyframes chat-thinking-shimmer{0%,to{background-position:0%}50%{background-position:100%}}@media (prefers-reduced-motion:reduce){.chat__thinking-btn[data-level=xhigh]{animation:none}}.chat__model-pill{border:1px solid var(--s2-border-subtle);color:var(--s2-content-secondary);border-radius:var(--s2-radius-pill);font-size:12px;font-family:var(--s2-font-family);cursor:pointer;white-space:nowrap;background:0 0;padding:4px 12px;transition:background .13s,color .13s,border-color .13s}.chat__model-pill:hover{background:var(--s2-bg-elevated);color:var(--s2-content-default)}.chat__model-pill--active{background:var(--s2-accent);color:#fff;border-color:var(--s2-accent)}.chat__model-pill--active:hover{background:var(--s2-accent-hover);border-color:var(--s2-accent-hover)}.chat__model-btn--compact{border:1px solid var(--s2-border-subtle);color:var(--s2-content-secondary);border-radius:var(--s2-radius-pill);font-size:12px;font-family:var(--s2-font-family);cursor:pointer;white-space:nowrap;background:0 0;align-items:center;gap:4px;padding:4px 8px 4px 12px;transition:background .13s,color .13s;display:flex}.chat__model-btn--compact:hover{background:var(--s2-bg-elevated);color:var(--s2-content-default)}.chat__model-chevron{opacity:.6;align-items:center;display:flex}.chat__model-btn-provider{color:var(--s2-content-secondary);border-left:1px solid var(--s2-border-subtle);margin-left:6px;padding-left:6px;font-weight:400}.chat__model-btn--disabled{cursor:default;opacity:.5;pointer-events:none}.chat__model-menu{background:var(--s2-bg-base);border:1px solid var(--s2-border-subtle);z-index:100;border-radius:12px;min-width:200px;max-height:240px;padding:6px;display:none;position:absolute;bottom:calc(100% + 6px);right:0;overflow-y:auto;box-shadow:0 4px 24px #0000001f}.chat__model-menu-item{cursor:pointer;font-size:13px;font-family:var(--s2-font-family);color:var(--s2-content-default);border-radius:8px;justify-content:space-between;align-items:center;gap:12px;padding:8px 12px;transition:background .1s;display:flex}.chat__model-menu-item:hover{background:var(--s2-bg-elevated)}.chat__model-menu-item--active{font-weight:600}.chat__model-menu-left{align-items:baseline;gap:8px;min-width:0;display:flex}.chat__model-menu-provider{color:var(--s2-content-secondary);font-size:11px;font-weight:400}.chat__model-check{color:var(--s2-accent);align-items:center;display:flex}.chat__send-btn{background:var(--s2-gray-100);width:32px;height:32px;color:var(--s2-gray-400);cursor:pointer;transition:background var(--s2-transition-default), color var(--s2-transition-default), transform var(--s2-transition-default);border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:14px;display:flex}.chat__send-btn:not(:disabled){color:#fff;background:#7155fa}.chat__send-btn:not(:disabled):hover{background:#6248e0}.chat__send-btn:active{transform:scale(.92)}.chat__send-btn:disabled{cursor:not-allowed}.chat__stop-btn{background:var(--s2-gray-800);width:32px;height:32px;color:var(--s2-gray-25);cursor:pointer;transition:background var(--s2-transition-default), transform var(--s2-transition-default);border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:14px;display:flex}.chat__stop-btn:hover{background:var(--s2-gray-900)}.chat__stop-btn:active{transform:scale(.92)}.chat__attach-btn,.chat__mic-btn{border-radius:var(--s2-radius-default);width:32px;height:32px;color:var(--s2-content-default);cursor:pointer;transition:background var(--s2-transition-default), color var(--s2-transition-default), transform var(--s2-transition-default);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;display:flex}.chat__attach-btn svg,.chat__mic-btn svg{width:20px;height:20px}.chat__attach-btn:hover,.chat__mic-btn:hover{background:var(--s2-bg-elevated);color:var(--s2-content-default)}.chat__attach-btn:disabled,.chat__mic-btn:disabled{opacity:.3;cursor:not-allowed}.chat__attach-btn--busy{color:var(--s2-accent)}.chat__file-input{display:none}.chat__mic-btn--active{color:var(--slicc-cone)}.chat__mic-btn--active.chat__mic-btn--listening,.chat__mic-btn--listening{background:var(--slicc-cone);color:#fff;animation:1.5s ease-in-out infinite mic-pulse}.chat__mic-btn--listening:hover{background:#d96600}@keyframes mic-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.85;transform:scale(1.06)}}.msg__feedback{align-items:center;gap:8px;padding-top:8px;display:flex}.msg__feedback-btn{width:24px;height:24px;color:var(--s2-content-secondary);cursor:pointer;transition:color var(--s2-transition-default), background var(--s2-transition-default);background:0 0;border:none;border-radius:7px;flex-shrink:0;justify-content:center;align-items:center;padding:4px;display:inline-flex}.msg__feedback-btn:hover{color:var(--s2-content-default);background:var(--s2-bg-elevated)}.msg__feedback-btn svg{width:16px;height:16px}.theme-light .msg__content a{color:#1e66f5}.theme-light .msg__content a:hover{color:#1444b0}.theme-light .msg__content a:visited{color:#1e66f5}.tool-call{font-size:var(--s2-font-size-75);--tool-status-color:var(--s2-gray-500);padding:0}.tool-call--running{--tool-status-color:#e6a23c}.tool-call--success{--tool-status-color:var(--s2-positive)}.tool-call--error{--tool-status-color:var(--s2-negative)}.tool-call--other{--tool-status-color:var(--s2-accent)}.tool-call summary{cursor:pointer;background:var(--s2-bg-layer-1);color:var(--s2-content-secondary);font-weight:400;font-size:var(--s2-font-size-75);transition:background var(--s2-transition-default);border-radius:8px;align-items:center;gap:8px;padding:8px 12px;line-height:1.4;list-style:none;display:flex}.tool-call summary:hover{background:var(--s2-bg-layer-2)}.tool-call summary::-webkit-details-marker{display:none}.tool-call__header{cursor:pointer;align-items:center;gap:8px;width:100%;display:flex}.tool-call__icon{width:16px;height:16px;color:var(--s2-content-secondary);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.tool-call__icon svg{width:14px;height:14px;display:block}.tool-call__name{color:var(--s2-content-secondary);font-weight:500;font-family:var(--s2-font-family);font-size:var(--s2-font-size-75);flex-shrink:0}.tool-call__preview{color:var(--s2-content-tertiary);font-size:var(--s2-font-size-75);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-family:var(--s2-font-mono);flex:1;overflow:hidden}.tool-call__status{background:var(--tool-status-color);border-radius:50%;flex-shrink:0;width:7px;height:7px;margin-left:auto}.tool-call__status--running{animation:1.2s ease-in-out infinite tool-status-pulse}@keyframes tool-status-pulse{0%,to{opacity:.4}50%{opacity:1}}.tool-call--stale .tool-call__status{opacity:.5}.tool-call--stale .tool-call__status--running{animation:none}.tool-call-cluster{font-size:var(--s2-font-size-75);padding:0}.tool-call-cluster>summary{cursor:pointer;background:var(--s2-bg-layer-1);color:var(--s2-content-secondary);font-weight:500;font-size:var(--s2-font-size-75);transition:background var(--s2-transition-default);border-radius:8px;align-items:center;gap:8px;padding:8px 12px;line-height:1.4;list-style:none;display:flex}.tool-call-cluster>summary:hover{background:var(--s2-bg-layer-2)}.tool-call-cluster>summary::-webkit-details-marker{display:none}.tool-call-cluster__dots{flex-wrap:wrap;flex-shrink:0;justify-content:flex-end;align-items:center;gap:4px;max-width:50%;margin-left:auto;display:inline-flex}.tool-call-cluster__dot{margin-left:0}.tool-call-cluster__body{border-left:2px solid var(--s2-border-subtle);flex-direction:column;gap:2px;margin-top:4px;margin-left:10px;padding-left:18px;display:flex}.tool-call-cluster.tool-call--stale>summary .tool-call__status{opacity:.5}.tool-call-cluster.tool-call--stale>summary .tool-call__status--running{animation:none}.tool-call__details{margin-top:2px;padding:8px 12px 12px 30px}.tool-call__body{flex-direction:column;gap:8px;display:flex}.tool-call__yaml{border-radius:var(--s2-radius-s);background:var(--s2-bg-sunken);color:var(--s2-content-default);font-family:var(--s2-font-mono);font-size:var(--s2-font-size-75);white-space:pre;max-height:320px;margin:0;padding:10px 12px;line-height:1.55;overflow-x:auto}.tool-call__yaml-key{color:var(--slicc-scoop-blue);font-weight:600}.tool-call__yaml-string{color:var(--s2-content-default)}.tool-call__yaml-scalar{color:var(--s2-content-tertiary)}.tool-call__yaml-null{color:var(--s2-content-tertiary);font-style:italic}.tool-call__result{border-radius:var(--s2-radius-s);background:var(--s2-bg-sunken);color:var(--s2-content-secondary);font-family:var(--s2-font-mono);font-size:var(--s2-font-size-75);white-space:pre-wrap;word-break:break-word;max-height:240px;margin:0;padding:10px 12px;line-height:1.5;overflow-y:auto}.tool-call__result--error{color:var(--s2-negative);background:color-mix(in oklch, var(--s2-negative) 10%, var(--s2-bg-sunken))}.tool-call__terminal{border-radius:var(--s2-radius-s);color:#e6e6e6;font-family:var(--s2-font-mono);font-size:var(--s2-font-size-75);background:#0d0d0f;border:1px solid #ffffff0f;padding:12px 14px;line-height:1.55;overflow:hidden}.tool-call__terminal-prompt{color:#f5f5f5;word-break:break-word;flex-wrap:wrap;align-items:flex-start;gap:8px;display:flex}.tool-call__terminal-sigil{color:#50d79a;flex-shrink:0;font-weight:600}.tool-call__terminal-cmd{white-space:pre-wrap;word-break:break-word}.tool-call__terminal-output{color:#c8c8c8;font-family:var(--s2-font-mono);font-size:var(--s2-font-size-75);white-space:pre-wrap;word-break:break-word;background:0 0;max-height:280px;margin:8px 0 0;padding:0;overflow-y:auto}.tool-call__terminal-output--error{color:#f38ba8}.tool-call__terminal-pending{color:gray;letter-spacing:2px;margin-top:8px}.tool-call__diff-path{font-family:var(--s2-font-mono);font-size:var(--s2-font-size-75);color:var(--s2-content-secondary);padding:4px 0}.tool-call__diff{font-family:var(--s2-font-mono);font-size:var(--s2-font-size-75);white-space:pre-wrap;word-break:break-word;background:0 0;max-height:320px;margin:0;padding:0;line-height:1.55;overflow:hidden auto}.tool-call__diff-del,.tool-call__diff-add{white-space:pre-wrap;word-break:break-word;border-radius:2px;padding:1px 6px;display:block}.tool-call__diff-del{background:color-mix(in oklch, var(--s2-negative) 15%, transparent);color:var(--s2-negative)}.tool-call__diff-add{background:color-mix(in oklch, var(--s2-positive) 18%, transparent);color:var(--s2-positive)}.tool-call__screenshot{border-radius:var(--s2-radius-default);max-width:100%;max-height:200px;margin-top:var(--s2-spacing-50);cursor:pointer;border:1px solid var(--s2-border-subtle);transition:border-color var(--s2-transition-default)}.tool-call__screenshot:hover{border-color:var(--slicc-cone)}.tool-call__ui{margin-top:8px}.lick{width:100%;max-width:560px;font-size:var(--s2-font-size-75);align-self:flex-end;padding:0}.lick summary{cursor:pointer;background:var(--s2-bg-layer-1);color:var(--s2-content-secondary);border:1px solid var(--s2-border-subtle);transition:background var(--s2-transition-default);border-radius:10px;flex-direction:row;align-items:center;gap:8px;padding:8px 12px;list-style:none;display:flex}.lick summary:hover{background:var(--s2-bg-layer-2)}.lick summary::-webkit-details-marker{display:none}.lick__header{cursor:pointer;justify-content:flex-start;align-items:center;gap:8px;width:100%;display:flex}.lick__type{color:var(--s2-content-secondary);font-weight:500;font-size:var(--s2-font-size-75);flex-shrink:0}.lick__preview{color:var(--s2-content-tertiary);font-size:var(--s2-font-size-75);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-family:var(--s2-font-mono);flex:1;overflow:hidden}.lick__icon{width:16px;height:16px;color:var(--s2-content-secondary);flex-shrink:0;order:99;justify-content:center;align-items:center;margin-left:auto;display:inline-flex}.lick__icon svg{width:14px;height:14px;display:block}.lick__details{border-radius:var(--s2-radius-s);background:var(--s2-bg-sunken);color:var(--s2-content-secondary);font-size:var(--s2-font-size-75);word-break:break-word;margin-top:6px;padding:12px 14px;line-height:1.55}.lick__details>:first-child{margin-top:0}.lick__details>:last-child{margin-bottom:0}.lick__details p,.lick__details ul,.lick__details ol{margin:.5em 0}.lick__details ul,.lick__details ol{padding-left:1.4em}.lick__details pre{font-size:var(--s2-font-size-75);font-family:var(--s2-font-mono);white-space:pre;background:0 0;border:0;max-height:320px;margin:0;padding:0;overflow:auto}.msg__content p,.msg__content ul,.msg__content ol,.msg__content table,.msg__content blockquote{margin:.45em 0}.msg__content h1,.msg__content h2,.msg__content h3,.msg__content h4,.msg__content h5,.msg__content h6{margin:1.2em 0 .35em;font-weight:700}.msg__content>:first-child{margin-top:0}.msg__content>:last-child{margin-bottom:0}.msg__content h1{font-size:22px}.msg__content h2{font-size:var(--s2-font-size-300)}.msg__content h3{font-size:var(--s2-font-size-200)}.msg__content ul,.msg__content ol{padding-left:1.4em}.msg__content table{border-collapse:collapse;font-size:var(--s2-font-size-75)}.msg__content th,.msg__content td{border:1px solid var(--s2-border-subtle);padding:var(--s2-spacing-50) var(--s2-spacing-200);text-align:left}.msg__content th{background:var(--s2-bg-layer-2);font-weight:700}.msg__content blockquote{border-left:3px solid var(--slicc-cone);padding-left:var(--s2-spacing-200);color:var(--s2-content-secondary)}.msg__content a{color:#82aaff;text-decoration:none}.msg__content a:hover{color:#a0c4ff;text-decoration:underline}.msg__content a:visited{color:#82aaff}.msg pre{background:var(--s2-bg-sunken);padding:var(--s2-spacing-200);border-radius:var(--s2-radius-default);margin:var(--s2-spacing-100) 0;font-size:12px;font-family:var(--s2-font-mono);white-space:pre-wrap;border:1px solid var(--s2-border-subtle);overflow-x:auto}.msg code{font-family:var(--s2-font-mono);font-size:12px}.msg :not(pre)>code{background:var(--s2-gray-200);border-radius:var(--s2-radius-s);padding:2px 6px;font-size:.9em}.tok-keyword{color:#d19afc}.tok-string{color:#87d68d}.tok-number{color:#f5a76c}.tok-comment{color:var(--s2-gray-500);font-style:italic}.tok-punct{color:#7cc5e9}.tok-fn{color:#7ea8f8}.panel-header{padding:var(--s2-spacing-100) var(--s2-spacing-300);background:var(--s2-bg-layer-1);border-bottom:1px solid var(--s2-border-subtle);font-size:var(--s2-font-size-50);color:var(--s2-content-tertiary);letter-spacing:.05em;text-transform:uppercase;flex-shrink:0;align-items:center;font-weight:700;display:flex}.terminal-panel{background:var(--s2-bg-layer-1);flex-direction:column;flex:1;min-height:0;display:flex;position:relative}.terminal-panel__view{background:var(--s2-bg-sunken);flex-direction:column;flex:1;min-height:0;padding-bottom:5px;display:flex;overflow:hidden}.terminal-panel__mount{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.terminal-panel__terminal-host{flex:1;min-height:0;padding:8px;overflow:hidden}.terminal-panel__terminal-host .xterm{padding:0}.terminal-panel__terminal-host .xterm-viewport{background-color:var(--s2-bg-sunken)!important}.terminal-panel__terminal-host .xterm-viewport::-webkit-scrollbar{width:6px}.terminal-panel__terminal-host .xterm-viewport::-webkit-scrollbar-thumb{background:var(--s2-gray-300);border-radius:3px}.terminal-panel__preview{min-height:0;padding:var(--s2-spacing-200);background:var(--s2-bg-sunken);flex:1;display:none;overflow:auto}.terminal-panel__preview.terminal-panel__preview--visible{flex-direction:column;display:flex}.terminal-panel__preview-item{gap:var(--s2-spacing-100);flex-direction:column;display:flex}.terminal-panel__preview-item+.terminal-panel__preview-item{margin-top:var(--s2-spacing-200)}.terminal-panel__preview-label{color:var(--s2-content-tertiary);font-size:var(--s2-font-size-50);font-family:var(--s2-font-mono)}.terminal-panel__preview-media{object-fit:contain;border-radius:var(--s2-radius-default);background:var(--s2-bg-sunken);border:1px solid var(--s2-border-subtle);width:100%;max-width:100%;max-height:min(100%,520px);display:block}.terminal-panel__empty-state{min-height:0;padding:var(--s2-spacing-400);color:var(--s2-content-disabled);font-size:var(--s2-font-size-75);flex:1;justify-content:center;align-items:center;display:flex}.file-browser__header{height:32px;min-height:32px;padding:0 var(--s2-spacing-200);border-bottom:1px solid var(--s2-border-subtle);align-items:center;gap:var(--s2-spacing-100);flex-shrink:0;display:flex}.file-browser__header-title{font-size:var(--s2-font-size-50);color:var(--s2-content-tertiary);letter-spacing:.05em;text-transform:uppercase;flex:1;font-weight:700}.file-browser__header-btn{color:var(--s2-content-tertiary);cursor:pointer;border-radius:var(--s2-radius-s);width:24px;height:24px;transition:background var(--s2-transition-default), color var(--s2-transition-default);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex}.file-browser__header-btn:hover{background:var(--s2-gray-200);color:var(--s2-content-default)}.file-browser__header-btn svg{width:14px;height:14px}.file-browser__header-btn--active{color:var(--s2-content-default);background:var(--s2-gray-300)}.file-browser__header-btn--active:hover{background:var(--s2-gray-300)}.file-browser__header-btn:disabled{color:var(--s2-content-disabled);cursor:default}.file-browser__header-btn:disabled:hover{color:var(--s2-content-disabled);background:0 0}.file-browser{flex-direction:column;flex:1;min-height:0;display:flex}.file-browser__body{min-height:0;padding:var(--s2-spacing-50) 0;font-family:var(--s2-font-mono);font-size:var(--s2-font-size-75);flex:1;overflow-y:auto}.file-browser__item{align-items:center;gap:var(--s2-spacing-50);padding:3px var(--s2-spacing-100);color:var(--s2-content-default);white-space:nowrap;text-overflow:ellipsis;border-radius:var(--s2-radius-s);margin:0 var(--s2-spacing-50);transition:background var(--s2-transition-default);display:flex;overflow:hidden}.file-browser__item:hover{background:var(--s2-bg-elevated)}.file-browser__item--selected{background:var(--s2-bg-elevated);box-shadow:inset 2px 0 0 var(--s2-accent)}.file-browser__item--selected:hover{background:var(--s2-bg-elevated)}.file-browser__item--selected.file-browser__item--copy-flash{background:color-mix(in srgb, var(--s2-positive) 20%, transparent)}.file-browser__arrow{width:12px;color:var(--s2-content-tertiary);flex-shrink:0;justify-content:center;align-items:center;display:flex}.file-browser__icon{color:var(--s2-content-tertiary);flex-shrink:0;align-items:center;display:flex}.file-browser__name{text-overflow:ellipsis;overflow:hidden}.file-browser__size{color:var(--s2-content-tertiary);font-size:var(--s2-font-size-50);padding-left:var(--s2-spacing-100);flex-shrink:0;margin-left:auto}.file-browser__action-btn{color:var(--s2-content-tertiary);cursor:pointer;padding:2px var(--s2-spacing-75);border-radius:var(--s2-radius-pill);font-size:9px;line-height:1.2;font-family:var(--s2-font-mono);letter-spacing:.05em;transition:all var(--s2-transition-default);opacity:0;background:0 0;border:none;flex-shrink:0;font-weight:600}.file-browser__item:hover .file-browser__action-btn{opacity:1}.file-browser__action-btn:hover{background:var(--s2-accent);color:#fff}.file-browser__action-btn:active{transform:scale(.92)}.file-browser__action-btn:disabled{opacity:0;cursor:not-allowed}.memory-panel{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.memory-panel__body{min-height:0;padding:var(--s2-spacing-100);font-family:var(--s2-font-mono);font-size:var(--s2-font-size-75);flex:1;height:100%;overflow-y:auto}.memory-panel__section{margin-bottom:var(--s2-spacing-300)}.memory-panel__section-header{font-weight:700;font-family:var(--s2-font-family);color:var(--slicc-cone);margin-bottom:var(--s2-spacing-100);padding-bottom:var(--s2-spacing-50);border-bottom:1px solid var(--s2-border-subtle);font-size:var(--s2-font-size-75)}.memory-panel__memory-content{white-space:pre-wrap;color:var(--s2-content-default);background:var(--s2-bg-sunken);padding:var(--s2-spacing-100);border-radius:var(--s2-radius-default);line-height:1.5}.mini-tabs{gap:var(--s2-spacing-100);padding:var(--s2-spacing-200) var(--s2-spacing-300);flex-shrink:0;align-items:center;display:flex;overflow:hidden}.mini-tabs__scroll{gap:var(--s2-spacing-100);scrollbar-width:none;flex:1;align-items:center;min-width:0;display:flex;overflow-x:auto}.mini-tabs__scroll::-webkit-scrollbar{display:none}.mini-tabs__tab{padding:7px var(--s2-spacing-300);background:var(--s2-gray-100);color:var(--s2-content-default);font-size:14px;font-weight:500;font-family:var(--s2-font-family);letter-spacing:0;cursor:pointer;white-space:nowrap;border-radius:var(--s2-radius-default);transition:color var(--s2-transition-default), background var(--s2-transition-default), border-color var(--s2-transition-default);align-items:center;gap:var(--s2-spacing-75);border:1px solid #0000;flex:none;height:32px;line-height:18px;display:inline-flex;position:relative}.mini-tabs__tab:after{display:none}.mini-tabs__tab:hover{color:var(--s2-content-default);background:var(--s2-gray-300);border-color:#0000}.mini-tabs__tab--active{color:var(--s2-gray-25);background:var(--s2-gray-800);border-color:var(--s2-gray-800)}.mini-tabs__tab--active:hover{background:var(--s2-gray-800);border-color:var(--s2-gray-800);color:var(--s2-gray-25)}.mini-tabs__tab-badge{background:color-mix(in srgb, var(--s2-accent) 20%, #fff);min-width:18px;height:18px;color:var(--s2-accent);border-radius:999px;justify-content:center;align-items:center;padding:0 6px;font-size:11px;font-weight:700;line-height:1;display:inline-flex}.mini-tabs__tab--active .mini-tabs__tab-badge{background:color-mix(in srgb, var(--s2-gray-25) 18%, transparent);color:var(--s2-gray-25)}.mini-tabs__tab:focus-visible{outline:2px solid var(--s2-accent);outline-offset:2px;border-radius:var(--s2-radius-default)}.mini-tabs__tab:disabled{color:var(--s2-content-disabled);cursor:not-allowed}.mini-tabs__tab--add{color:var(--s2-content-tertiary);background:0 0;border-color:#0000;font-size:16px}.mini-tabs__tab--add:hover{border-color:var(--s2-gray-200);background:var(--s2-gray-75);color:var(--s2-content-default)}.mini-tabs__tab--icon{width:32px;height:32px;color:var(--s2-content-default);background:0 0;border-color:#0000;justify-content:center;padding:0}.mini-tabs__tab--icon svg{flex-shrink:0;width:16px;height:16px}.mini-tabs__tab--icon:hover{background:var(--s2-gray-200);border-color:#0000}.mini-tabs__tab--icon.mini-tabs__tab--active,.mini-tabs__tab--icon.mini-tabs__tab--active:hover{background:var(--s2-gray-800);color:var(--s2-gray-25)}.mini-tabs__tab--dimmed{opacity:.3}.mini-tabs__tab--dimmed:hover{opacity:.65}.mini-tabs__separator{background:var(--s2-border-subtle);width:1px;height:20px;margin:0 var(--s2-spacing-75);flex-shrink:0}.mini-tabs__tab--fullpage{color:var(--s2-content-tertiary);background:0 0;border-color:#0000;justify-content:center;width:32px;margin-left:auto;padding:0}.mini-tabs__tab--fullpage:hover{background:var(--s2-gray-75);color:var(--s2-content-default)}.mini-tabs__tab--fullpage svg{flex-shrink:0}.tab-bar{background:var(--s2-bg-layer-1);border-bottom:1px solid var(--s2-border-subtle);flex-shrink:0;display:flex}.tab-bar__tab{padding:var(--s2-spacing-100) 0;color:var(--s2-content-tertiary);font-size:var(--s2-font-size-75);font-weight:600;font-family:var(--s2-font-family);cursor:pointer;text-align:center;transition:color var(--s2-transition-default), border-color var(--s2-transition-default);letter-spacing:.02em;background:0 0;border:none;border-bottom:2px solid #0000;flex:1;justify-content:center;align-items:center;gap:6px;display:flex}.tab-bar__tab-badge{background:color-mix(in srgb, var(--s2-accent) 18%, transparent);min-width:18px;height:18px;color:var(--s2-accent);border-radius:999px;justify-content:center;align-items:center;padding:0 6px;font-size:11px;font-weight:700;line-height:1;display:inline-flex}.tab-bar__tab:hover{color:var(--s2-content-default)}.tab-bar__tab-close{border-radius:var(--s2-radius-s);width:16px;height:16px;color:var(--s2-content-tertiary);opacity:.6;justify-content:center;align-items:center;margin-left:6px;font-size:11px;line-height:1;display:inline-flex}.tab-bar__tab-close:hover{opacity:1;color:var(--s2-negative);background:color-mix(in srgb, var(--s2-negative) 10%, transparent)}.tab-bar__tab--active{color:var(--s2-content-default);border-bottom-color:var(--s2-accent)}.tab-bar__tab--active .tab-bar__tab-badge{background:color-mix(in srgb, var(--s2-accent) 22%, transparent);color:var(--s2-content-default)}.tab-content{flex-direction:column;flex:1;min-height:0;display:flex}.tab-content__panel{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.mini-tabs__tab--utility{color:var(--s2-content-tertiary);background:0 0;border-color:#0000;flex:none;justify-content:center;width:28px;height:28px;padding:0}.mini-tabs__tab--utility:hover{background:var(--s2-gray-200);color:var(--s2-content-default);border-color:#0000}.mini-tabs__tab--utility svg{flex-shrink:0;width:14px;height:14px}.mini-tabs__tab-close{border-radius:var(--s2-radius-s);width:16px;height:16px;color:var(--s2-content-tertiary);justify-content:center;align-items:center;margin-left:6px;font-size:12px;line-height:1;display:inline-flex}.mini-tabs__tab-close:hover{color:var(--s2-negative);background:color-mix(in srgb, var(--s2-negative) 10%, transparent)}.rail{background:var(--s2-bg-layer-1);border-left:1px solid var(--s2-border-subtle);width:48px;padding:var(--s2-spacing-200) var(--s2-spacing-100);gap:var(--s2-spacing-100);flex-direction:column;flex-shrink:0;display:flex}.rail__section{gap:var(--s2-spacing-100);flex-direction:column;align-items:center;display:flex}.rail__section--top{flex:1;min-height:0;overflow:hidden}.rail__section--bottom{flex:none}.rail__section--header{height:var(--uxc-thread-header-height);border-bottom:1px solid var(--s2-border-subtle);margin-bottom:var(--s2-spacing-100);flex:none;justify-content:center;align-items:center;display:flex}.rail__section--header .header__avatar{margin:0 auto}.rail:has(.rail__section--header){padding-top:0}.rail__item{width:32px;height:32px;color:var(--s2-content-default);border-radius:var(--s2-radius-default);cursor:pointer;transition:background var(--s2-transition-default), color var(--s2-transition-default), border-color var(--s2-transition-default);background:0 0;border:1px solid #0000;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex;position:relative}.rail__item svg{z-index:1;flex-shrink:0;width:16px;height:16px;position:relative}.rail__item-press-layer{border-radius:inherit;pointer-events:none;z-index:0;position:absolute;inset:0;overflow:hidden}.rail__item-press{background:var(--s2-accent);opacity:.85;pointer-events:none;will-change:width, height;border-radius:50%;transition-property:width,height;transition-timing-function:cubic-bezier(.4,0,.2,1);position:absolute;transform:translate(-50%,-50%)}.rail__item--active .rail__item-press{background:var(--s2-accent);opacity:1}.rail__item:hover{background:var(--s2-gray-200)}.rail__item--active,.rail__item--active:hover{background:var(--s2-gray-800);color:var(--s2-gray-25)}.rail__item--active img{filter:brightness(0)}:root.theme-light .rail__item--active img{filter:brightness(0)invert()}.rail__item:focus-visible{outline:2px solid var(--s2-accent);outline-offset:2px}.rail__item--add{color:var(--s2-content-tertiary)}.rail__item--add:hover{color:var(--s2-content-default);background:var(--s2-gray-75)}.rail__item--attention{color:var(--s2-accent);animation:1.6s ease-in-out infinite rail-item-attention}.rail__item--attention:hover{background:var(--s2-gray-200);animation:none}.rail__item--attention:after{content:"";background:var(--s2-accent);width:6px;height:6px;box-shadow:0 0 0 2px var(--s2-bg-layer-1);pointer-events:none;z-index:2;border-radius:50%;position:absolute;top:4px;right:4px}@keyframes rail-item-attention{0%,to{opacity:1;transform:scale(1)}50%{opacity:.85;transform:scale(1.06)}}.rail-content{border-left:1px solid var(--s2-border-subtle);background:var(--s2-bg-base);flex-direction:column;flex:none;width:360px;min-width:280px;max-width:50vw;display:flex;overflow:hidden}.rail-content--collapsed{display:none!important}.layout:has(.rail-content--collapsed) .layout__divider--vertical,.layout--rail-fullpage .layout__left,.layout--rail-fullpage .layout__divider--vertical,.layout--rail-fullpage .layout__scoops{display:none}.layout--rail-fullpage .rail-content{flex:1;width:auto;max-width:none}.dialog-overlay{z-index:100;backdrop-filter:blur(4px);background:#0000008c;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.dialog{background:var(--s2-bg-layer-2);border-radius:var(--s2-radius-xl);padding:var(--s2-spacing-500);width:440px;max-width:90vw;box-shadow:var(--s2-shadow-elevated);border:1px solid var(--s2-border-subtle)}.dialog__title{font-size:var(--s2-font-size-300);color:var(--s2-content-default);margin-bottom:var(--s2-spacing-100);font-weight:700}.dialog__desc{font-size:var(--s2-font-size-75);color:var(--s2-content-secondary);margin-bottom:var(--s2-spacing-300);line-height:1.5}.dialog__input{width:100%;padding:var(--s2-spacing-100) var(--s2-spacing-200);border-radius:var(--s2-radius-default);border:1px solid var(--s2-border-default);background:var(--s2-bg-sunken);color:var(--s2-content-default);font-family:var(--s2-font-mono);font-size:var(--s2-font-size-100);margin-bottom:var(--s2-spacing-300);transition:border-color var(--s2-transition-default);outline:none}.dialog__input:focus{border-color:var(--s2-accent)}.dialog__btn{border-radius:var(--s2-radius-pill);background:var(--s2-accent);color:#fff;width:100%;font-size:var(--s2-font-size-100);font-weight:600;font-family:var(--s2-font-family);cursor:pointer;transition:background var(--s2-transition-default), transform var(--s2-transition-default);border:none;padding:10px}.dialog__btn:hover{background:var(--s2-accent-hover)}.dialog__btn:active{transform:scale(.98)}.dialog__btn:disabled{opacity:.4;cursor:not-allowed}.dialog__btn--secondary{border:1px solid var(--s2-border-default);color:var(--s2-content-default);background:0 0}.dialog__btn--secondary:hover{background:var(--s2-gray-200)}.sprinkle-content{padding:var(--s2-spacing-200)}.sprinkle-heading{font-size:var(--s2-font-size-300);color:var(--s2-gray-900);margin:0 0 var(--s2-spacing-100);letter-spacing:0;font-weight:700;line-height:1.3}.sprinkle-heading--m{font-size:var(--s2-font-size-200)}.sprinkle-heading--s{font-size:var(--s2-font-size-100)}.sprinkle-label{font-size:var(--s2-font-size-50);text-transform:uppercase;letter-spacing:.06em;color:var(--s2-gray-600);margin:0;font-weight:600;line-height:1.3}.sprinkle-body{font-size:var(--s2-font-size-100);color:var(--s2-content-default);font-weight:400;line-height:1.5}.sprinkle-detail{font-size:var(--s2-font-size-75);color:var(--s2-gray-600);font-weight:500;line-height:1.3}.sprinkle-icon{stroke-width:2px;vertical-align:middle;width:16px;height:16px;display:inline-block}.sprinkle-icon svg{width:100%;height:100%;display:block}.sprinkle-icon--xs{width:12px;height:12px}.sprinkle-icon--s{width:14px;height:14px}.sprinkle-icon--m{width:16px;height:16px}.sprinkle-icon--l{width:20px;height:20px}.sprinkle-icon--xl{width:24px;height:24px}.sprinkle-btn{justify-content:center;align-items:center;gap:var(--s2-spacing-75);border:1px solid var(--s2-gray-200);border-radius:var(--s2-radius-xl);background:var(--s2-gray-50);height:32px;color:var(--s2-gray-800);font-size:var(--s2-font-size-100);font-weight:700;font-family:var(--s2-font-family);cursor:default;box-shadow:var(--s2-shadow-container);transition:background var(--s2-transition-default), border-color var(--s2-transition-default), transform var(--s2-transition-default);padding:0 16px;display:inline-flex}.sprinkle-btn:hover{background:var(--s2-gray-100)}.sprinkle-btn:active{transform:scale(.98)}.sprinkle-btn:focus-visible{outline:2px solid var(--s2-border-focus);outline-offset:2px}.sprinkle-btn:disabled,.sprinkle-btn[disabled]{opacity:.4;pointer-events:none}.sprinkle-btn--primary{background:var(--s2-accent);color:#fff;border-radius:var(--s2-radius-pill);box-shadow:none;border-color:#0000}.sprinkle-btn--primary:hover{background:var(--s2-accent-hover)}.sprinkle-btn--primary:active{background:var(--s2-accent-down);transform:scale(.98)}.sprinkle-btn--secondary{background:var(--s2-gray-50);border-color:var(--s2-gray-200);color:var(--s2-gray-800)}.sprinkle-btn--secondary:hover{background:var(--s2-gray-100)}.sprinkle-btn--negative{background:var(--s2-negative);color:var(--s2-gray-25);border-radius:var(--s2-radius-pill);box-shadow:none;border-color:#0000}.sprinkle-btn--negative:hover{background:color-mix(in srgb, var(--s2-negative) 85%, #000)}.sprinkle-btn--quiet{box-shadow:none;color:var(--s2-gray-800);background:0 0;border-color:#0000}.sprinkle-btn--quiet:hover{background:var(--s2-gray-100)}.sprinkle-btn-group{gap:var(--s2-spacing-100);display:inline-flex}.sprinkle-badge{white-space:nowrap;background:var(--s2-gray-800);color:var(--s2-gray-25);border-radius:8px;align-items:center;gap:4px;padding:4px 8px;font-size:12px;font-weight:700;line-height:16px;display:inline-flex}.sprinkle-badge--positive{background:var(--s2-positive);color:var(--s2-gray-25)}.sprinkle-badge--negative{background:var(--s2-negative);color:var(--s2-gray-25)}.sprinkle-badge--notice{background:var(--s2-notice);color:var(--s2-gray-25)}.sprinkle-badge--informative{background:var(--s2-informative);color:#fff}.sprinkle-badge--accent{background:var(--s2-accent);color:#fff}.sprinkle-badge--subtle{background:var(--uxc-neutral-subtle-bg);color:var(--s2-gray-700)}.sprinkle-badge--subtle.sprinkle-badge--positive{background:var(--uxc-positive-subtle-bg);color:var(--uxc-positive-subtle-text)}.sprinkle-badge--subtle.sprinkle-badge--negative{background:var(--uxc-negative-subtle-bg);color:var(--uxc-negative-subtle-text)}.sprinkle-badge--subtle.sprinkle-badge--notice{background:var(--uxc-notice-subtle-bg);color:var(--uxc-notice-subtle-text)}.sprinkle-badge--subtle.sprinkle-badge--informative,.sprinkle-badge--subtle.sprinkle-badge--accent{background:var(--uxc-accent-subtle-bg);color:var(--uxc-accent-subtle-text)}.sprinkle-badge--yellow{background:var(--uxc-yellow-subtle-bg);color:var(--uxc-yellow-subtle-text)}.sprinkle-badge--purple{background:var(--uxc-purple-subtle-bg);color:var(--uxc-purple-subtle-text)}.sprinkle-badge--cyan{background:var(--uxc-cyan-subtle-bg);color:var(--uxc-cyan-subtle-text)}.sprinkle-badge--magenta{background:var(--uxc-magenta-subtle-bg);color:var(--uxc-magenta-subtle-text)}.sprinkle-badge--indigo{background:var(--uxc-indigo-subtle-bg);color:var(--uxc-indigo-subtle-text)}.sprinkle-badge--gray{background:var(--uxc-gray-subtle-bg);color:var(--uxc-gray-subtle-text)}.sprinkle-badge--outline{color:var(--s2-content-secondary);box-shadow:inset 0 0 0 1px var(--s2-border-default);background:0 0}.sprinkle-badge--outline.sprinkle-badge--positive{color:var(--s2-positive);box-shadow:inset 0 0 0 1px var(--s2-positive)}.sprinkle-badge--outline.sprinkle-badge--negative{color:var(--s2-negative);box-shadow:inset 0 0 0 1px var(--s2-negative)}.sprinkle-badge--outline.sprinkle-badge--notice{color:var(--s2-notice);box-shadow:inset 0 0 0 1px var(--s2-notice)}.sprinkle-badge--outline.sprinkle-badge--informative{color:var(--s2-informative);box-shadow:inset 0 0 0 1px var(--s2-informative)}.sprinkle-chip{border:1px solid var(--s2-gray-200);border-radius:var(--s2-radius-pill);font-size:var(--s2-font-size-75);color:var(--s2-gray-800);cursor:default;transition:background var(--s2-transition-default);background:#fff;align-items:center;gap:6px;padding:6px 12px;font-weight:500;display:inline-flex}.sprinkle-chip:hover{background:var(--s2-gray-50)}.sprinkle-chip svg{flex-shrink:0;width:14px;height:14px}.sprinkle-status-light{align-items:center;gap:var(--s2-spacing-75);font-size:var(--s2-font-size-75);color:var(--s2-content-default);display:inline-flex}.sprinkle-status-light:before{content:"";background:var(--s2-content-tertiary);border-radius:50%;flex-shrink:0;width:8px;height:8px}.sprinkle-status-light--positive:before{background:var(--s2-positive)}.sprinkle-status-light--negative:before{background:var(--s2-negative)}.sprinkle-status-light--notice:before{background:var(--s2-notice)}.sprinkle-status-light--informative:before{background:var(--s2-informative)}.sprinkle-status-light--m{font-size:var(--s2-font-size-100);color:var(--s2-gray-600)}.sprinkle-status-light--m:before{width:10px;height:10px}.sprinkle-card{background:var(--s2-gray-25);border:1px solid var(--s2-gray-300);border-radius:var(--s2-radius-xl);padding:var(--s2-spacing-400);box-shadow:var(--s2-shadow-container);transition:box-shadow var(--s2-transition-default)}.sprinkle-card:hover{box-shadow:var(--s2-shadow-elevated)}.sprinkle-stat-card{background:var(--s2-gray-25);border:1px solid var(--s2-gray-300);border-radius:var(--s2-radius-xl);padding:var(--s2-spacing-200) var(--s2-spacing-300);text-align:center;box-shadow:var(--s2-shadow-container);transition:box-shadow var(--s2-transition-default)}.sprinkle-stat-card:hover{box-shadow:var(--s2-shadow-elevated)}.sprinkle-stat-card .value{font-size:var(--s2-font-size-500);color:var(--s2-content-default);font-weight:700;line-height:1.2}.sprinkle-stat-card .label{font-size:var(--s2-font-size-75);color:var(--s2-gray-600);margin-top:var(--s2-spacing-50);font-weight:500}.sprinkle-action-card{background:var(--s2-gray-25);border:1px solid var(--s2-gray-200);border-radius:var(--s2-radius-xl);box-shadow:var(--s2-shadow-container);flex-direction:column;display:flex;overflow:hidden}.sprinkle-action-card__header{color:var(--s2-gray-900);align-items:center;gap:12px;padding:16px 24px;font-size:16px;font-weight:700;line-height:1.3;display:flex}.sprinkle-action-card__header .sprinkle-badge{margin-left:auto}.sprinkle-action-card__icon{border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:40px;min-width:40px;height:40px;font-size:18px;display:flex}.sprinkle-action-card__icon--yellow{color:#9e6600;background:#fff197}.sprinkle-action-card__icon--blue{background:var(--uxc-accent-subtle-bg);color:var(--uxc-accent-subtle-text)}.sprinkle-action-card__icon--green{background:var(--uxc-positive-subtle-bg);color:var(--uxc-positive-subtle-text)}.sprinkle-action-card__icon--indigo{background:var(--uxc-indigo-subtle-bg);color:#5424db}.sprinkle-action-card__meta{color:var(--s2-gray-600);margin-top:2px;font-size:12px;font-weight:400}.sprinkle-action-card__header-actions{color:var(--s2-gray-800);align-items:center;gap:12px;margin-left:auto;font-size:12px;font-weight:500;display:flex}.sprinkle-action-card__header-actions a{color:var(--s2-gray-800);align-items:center;gap:4px;text-decoration:none;display:flex}.sprinkle-action-card__body{color:var(--s2-gray-700);padding:0 24px 16px;font-size:14px;line-height:1.5}.sprinkle-action-card__actions{border-top:1px solid var(--s2-gray-200);justify-content:flex-end;gap:8px;padding:12px 24px;display:flex}.sprinkle-list-item{border-top:1px solid var(--s2-gray-100);align-items:center;gap:16px;min-height:56px;padding:16px 24px;display:flex}.sprinkle-list-item__icon{background:var(--s2-gray-75);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:40px;min-width:40px;height:40px;font-size:16px;display:flex}.sprinkle-list-item__content{flex:1;min-width:0}.sprinkle-list-item__title{color:var(--s2-gray-900);align-items:center;gap:6px;font-size:14px;font-weight:700;line-height:1.3;display:flex}.sprinkle-list-item__subtitle{color:var(--s2-gray-600);margin-top:2px;font-size:14px;font-weight:400;line-height:1.5}.sprinkle-list-item__end{flex-shrink:0;align-items:center;gap:8px;display:flex}.sprinkle-table{border-collapse:collapse;border:1px solid var(--s2-gray-100);border-radius:var(--s2-radius-default);width:100%;font-size:14px;overflow:hidden}.sprinkle-table th{text-align:left;border-bottom:1px solid var(--s2-gray-100);color:var(--s2-gray-700);box-sizing:border-box;background:0 0;height:32px;padding:7px 16px;font-size:14px;font-weight:700;line-height:1.3}.sprinkle-table td{border-bottom:1px solid var(--s2-gray-100);color:var(--s2-content-default);box-sizing:border-box;padding:12px 16px;font-size:14px;line-height:1.5}.sprinkle-table tr:last-child td{border-bottom:none}.sprinkle-table tr:hover td{background:var(--s2-gray-50)}.sprinkle-task-group{background:var(--s2-gray-50);border-radius:var(--s2-radius-default);flex-direction:column;gap:8px;padding:16px;display:flex}.sprinkle-task-group__header{justify-content:space-between;align-items:center;display:flex}.sprinkle-task-group__title{color:var(--s2-gray-1000);align-items:center;gap:8px;font-size:16px;font-weight:700;display:flex}.sprinkle-task-group__title svg{flex-shrink:0;width:20px;height:20px}.sprinkle-task-group__meta{color:var(--s2-gray-600);align-items:center;gap:16px;font-size:12px;display:flex}.sprinkle-task-item{align-items:center;gap:8px;height:24px;padding-left:4px;font-size:14px;line-height:18px;display:flex}.sprinkle-task-item--done{color:var(--s2-gray-600)}.sprinkle-task-item--pending{color:var(--s2-gray-800)}.sprinkle-task-item__check{border:1.5px solid var(--s2-gray-400);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:16px;height:16px;display:flex}.sprinkle-task-item--done .sprinkle-task-item__check{background:var(--s2-positive);border-color:var(--s2-positive)}.sprinkle-task-item--done .sprinkle-task-item__check:after{content:"";border-bottom:1.5px solid #fff;border-left:1.5px solid #fff;width:8px;height:5px;transform:rotate(-45deg)translateY(-1px)}.sprinkle-progress-bar{gap:var(--s2-spacing-75);--_bar-color:var(--s2-accent);flex-direction:column;display:flex}.sprinkle-progress-bar--positive{--_bar-color:var(--s2-positive)}.sprinkle-progress-bar--negative{--_bar-color:var(--s2-negative)}.sprinkle-progress-bar--notice{--_bar-color:var(--s2-notice)}.sprinkle-progress-bar--informative{--_bar-color:var(--s2-informative)}.sprinkle-progress-bar__header{font-size:var(--s2-font-size-75);color:var(--s2-content-default);justify-content:space-between;align-items:baseline;display:flex}.sprinkle-progress-bar__header .label{font-weight:400}.sprinkle-progress-bar__header .value{color:var(--s2-gray-600);font-weight:400}.sprinkle-progress-bar__track{border-radius:var(--s2-radius-pill);background:var(--s2-gray-200);height:4px;position:relative;overflow:hidden}.sprinkle-progress-bar__track .fill{border-radius:var(--s2-radius-pill);background:var(--fill-color,var(--_bar-color,var(--s2-accent)));height:100%;transition:width .3s}.sprinkle-progress-bar__track:after{content:"";width:var(--progress,var(--value,0%));border-radius:var(--s2-radius-pill);background:var(--fill-color,var(--_bar-color,var(--s2-accent)));transition:width .3s;position:absolute;inset:0 auto 0 0}.sprinkle-progress-bar__track:has(>.fill):after{display:none}.sprinkle-progress-bar:not(:has(.sprinkle-progress-bar__track)){border-radius:var(--s2-radius-pill);background:var(--s2-gray-200);flex-direction:row;width:100%;height:4px;position:relative;overflow:hidden}.sprinkle-progress-bar:not(:has(.sprinkle-progress-bar__track))>.fill{border-radius:var(--s2-radius-pill);background:var(--fill-color,var(--_bar-color,var(--s2-accent)));height:100%;transition:width .3s}.sprinkle-progress-bar:not(:has(.sprinkle-progress-bar__track)):after{content:"";width:var(--progress,var(--value,0%));border-radius:var(--s2-radius-pill);background:var(--fill-color,var(--_bar-color,var(--s2-accent)));transition:width .3s;position:absolute;inset:0 auto 0 0}.sprinkle-progress-bar:not(:has(.sprinkle-progress-bar__track)):has(>.fill):after{display:none}.sprinkle-meter{gap:var(--s2-spacing-75);--_meter-color:var(--s2-informative);flex-direction:column;display:flex}.sprinkle-meter--positive{--_meter-color:var(--s2-positive)}.sprinkle-meter--notice{--_meter-color:var(--s2-notice)}.sprinkle-meter--negative{--_meter-color:var(--s2-negative)}.sprinkle-meter__header{font-size:var(--s2-font-size-75);color:var(--s2-content-default);justify-content:space-between;align-items:baseline;display:flex}.sprinkle-meter__header .label{font-weight:400}.sprinkle-meter__header .value{color:var(--s2-gray-600);font-weight:400}.sprinkle-meter__track{border-radius:var(--s2-radius-pill);background:var(--s2-gray-200);height:4px;position:relative;overflow:hidden}.sprinkle-meter__track .fill{border-radius:var(--s2-radius-pill);background:var(--fill-color,var(--_meter-color));height:100%;transition:width .3s}.sprinkle-meter__track:after{content:"";width:var(--progress,var(--value,0%));border-radius:var(--s2-radius-pill);background:var(--fill-color,var(--_meter-color));transition:width .3s;position:absolute;inset:0 auto 0 0}.sprinkle-meter__track:has(>.fill):after{display:none}.sprinkle-meter:not(:has(.sprinkle-meter__track)){border-radius:var(--s2-radius-pill);background:var(--s2-gray-200);flex-direction:row;width:100%;height:4px;position:relative;overflow:hidden}.sprinkle-meter:not(:has(.sprinkle-meter__track))>.fill{border-radius:var(--s2-radius-pill);background:var(--fill-color,var(--_meter-color));height:100%;transition:width .3s}.sprinkle-meter:not(:has(.sprinkle-meter__track)):after{content:"";width:var(--progress,var(--value,0%));border-radius:var(--s2-radius-pill);background:var(--fill-color,var(--_meter-color));transition:width .3s;position:absolute;inset:0 auto 0 0}.sprinkle-meter:not(:has(.sprinkle-meter__track)):has(>.fill):after{display:none}.sprinkle-kv-list{margin:0;padding:0;list-style:none}.sprinkle-kv-list li{padding:var(--s2-spacing-100) 0;border-bottom:1px solid var(--s2-border-subtle);font-size:var(--s2-font-size-75);justify-content:space-between;align-items:center;display:flex}.sprinkle-kv-list li:last-child{border-bottom:none}.sprinkle-kv-list .key{color:var(--s2-gray-600);font-weight:400}.sprinkle-kv-list .value{color:var(--s2-content-default);font-weight:700}dl.sprinkle-kv-list{font-size:var(--s2-font-size-75);grid-template-columns:auto 1fr;gap:0;display:grid}dl.sprinkle-kv-list dt,dl.sprinkle-kv-list dd{padding:var(--s2-spacing-100) 0;border-bottom:1px solid var(--s2-border-subtle);margin:0}dl.sprinkle-kv-list dt{color:var(--s2-gray-600);padding-right:var(--s2-spacing-300);font-weight:400}dl.sprinkle-kv-list dd{color:var(--s2-content-default);text-align:right;font-weight:700}dl.sprinkle-kv-list dt:last-of-type,dl.sprinkle-kv-list dd:last-of-type{border-bottom:none}.sprinkle-text-field{width:100%;font-size:var(--s2-font-size-100);font-family:var(--s2-font-family);color:var(--s2-content-default);border:1px solid var(--s2-gray-200);border-radius:var(--s2-radius-default);transition:border-color var(--s2-transition-default);box-sizing:border-box;background:#fff;outline:none;padding:7px 12px}.sprinkle-text-field::placeholder{color:var(--s2-gray-600)}.sprinkle-text-field:hover{border-color:var(--s2-gray-700)}.sprinkle-text-field:focus{border-color:var(--s2-accent);box-shadow:0 0 0 1px var(--s2-accent)}.sprinkle-grid{gap:var(--s2-spacing-200);grid-template-columns:repeat(auto-fit,minmax(180px,1fr));display:grid}.sprinkle-stack{gap:var(--s2-spacing-200);flex-direction:column;display:flex}.sprinkle-row{align-items:center;gap:var(--s2-spacing-200);display:flex}.sprinkle-divider{border:none;border-top:1px solid var(--s2-border-subtle);margin:var(--s2-spacing-200) 0}.sprinkle-divider--medium{border-top-width:2px;border-top-color:var(--s2-border-default);margin:var(--s2-spacing-300) 0}.sprinkle-empty-state{text-align:center;padding:var(--s2-spacing-500) var(--s2-spacing-300);color:var(--s2-content-tertiary);font-size:var(--s2-font-size-100)}.sprinkle-toolbar{align-items:center;gap:var(--s2-spacing-100);padding:var(--s2-spacing-100) var(--s2-spacing-200);border-bottom:1px solid var(--s2-gray-200);background:var(--s2-gray-50);flex-shrink:0;min-height:40px;display:flex}.sprinkle-toolbar__start{align-items:center;gap:var(--s2-spacing-100);display:flex}.sprinkle-toolbar__center{align-items:center;gap:var(--s2-spacing-100);flex:1;justify-content:center;display:flex}.sprinkle-toolbar__end{align-items:center;gap:var(--s2-spacing-100);margin-left:auto;display:flex}.sprinkle-tabs{border-bottom:1px solid var(--s2-gray-200);background:var(--s2-gray-50);flex-shrink:0;gap:0;display:flex;overflow-x:auto}.sprinkle-tabs__tab{padding:var(--s2-spacing-100) var(--s2-spacing-200);font-size:var(--s2-font-size-100);color:var(--s2-gray-600);cursor:default;white-space:nowrap;transition:color var(--s2-transition-default), border-color var(--s2-transition-default);font-weight:500;font-family:var(--s2-font-family);background:0 0;border:none;border-bottom:2px solid #0000}.sprinkle-tabs__tab:hover{color:var(--s2-gray-800)}.sprinkle-tabs__tab--active{color:var(--s2-gray-900);border-bottom-color:var(--s2-gray-900);font-weight:700}.sprinkle-tabs__panel{flex:1;min-height:0;display:none;overflow-y:auto}.sprinkle-tabs__panel--active{flex-direction:column;display:flex}.sprinkle-sidebar{flex:1;gap:0;min-height:0;display:flex}.sprinkle-sidebar__nav{border-right:1px solid var(--s2-gray-200);background:var(--s2-gray-50);width:240px;min-width:240px;padding:var(--s2-spacing-200) 0;overflow-y:auto}.sprinkle-sidebar__nav-item{align-items:center;gap:var(--s2-spacing-100);padding:var(--s2-spacing-100) var(--s2-spacing-200);font-size:var(--s2-font-size-100);color:var(--s2-gray-700);cursor:default;transition:background var(--s2-transition-default);border-radius:0;display:flex}.sprinkle-sidebar__nav-item:hover{background:var(--s2-gray-100)}.sprinkle-sidebar__nav-item--active{background:var(--s2-gray-800);color:var(--s2-gray-25);font-weight:600}.sprinkle-sidebar__nav-label{padding:var(--s2-spacing-200) var(--s2-spacing-200) var(--s2-spacing-50);font-size:var(--s2-font-size-50);text-transform:uppercase;letter-spacing:.04em;color:var(--s2-gray-600);font-weight:700}.sprinkle-sidebar__main{min-width:0;padding:var(--s2-spacing-200);flex:1;overflow-y:auto}.sprinkle-dialog{z-index:100;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.sprinkle-dialog[hidden]{display:none}.sprinkle-dialog__backdrop{backdrop-filter:blur(2px);background:#0006;position:absolute;inset:0}.sprinkle-dialog__content{background:var(--s2-gray-25);border-radius:var(--s2-radius-xl);box-shadow:var(--s2-shadow-elevated);padding:var(--s2-spacing-400);min-width:280px;max-width:min(560px,100% - 32px);max-height:calc(100% - 64px);position:relative;overflow-y:auto}.sprinkle-dialog__header{margin-bottom:var(--s2-spacing-300);justify-content:space-between;align-items:center;display:flex}.sprinkle-dialog__title{font-size:var(--s2-font-size-200);color:var(--s2-content-default);font-weight:700}.sprinkle-dialog__close{border-radius:var(--s2-radius-pill);width:28px;height:28px;color:var(--s2-gray-600);cursor:default;transition:background var(--s2-transition-default);background:0 0;border:none;justify-content:center;align-items:center;font-size:18px;display:flex}.sprinkle-dialog__close:hover{background:var(--s2-gray-100)}.sprinkle-dialog__footer{justify-content:flex-end;gap:var(--s2-spacing-100);margin-top:var(--s2-spacing-300);display:flex}.sprinkle-collapsible__header{align-items:center;gap:var(--s2-spacing-100);padding:var(--s2-spacing-100) var(--s2-spacing-200);cursor:default;font-size:var(--s2-font-size-100);color:var(--s2-content-default);text-align:left;border-radius:var(--s2-radius-default);width:100%;transition:background var(--s2-transition-default);font-weight:600;font-family:var(--s2-font-family);background:0 0;border:none;display:flex}.sprinkle-collapsible__header:hover{background:var(--s2-gray-100)}.sprinkle-collapsible__chevron{flex-shrink:0;width:16px;height:16px;transition:transform .2s;display:inline-block}.sprinkle-collapsible__chevron:before{content:"▶";color:var(--s2-gray-600);font-size:10px}.sprinkle-collapsible--open .sprinkle-collapsible__chevron{transform:rotate(90deg)}.sprinkle-collapsible__body{padding:var(--s2-spacing-100) var(--s2-spacing-200) var(--s2-spacing-200) calc(var(--s2-spacing-200) + 16px + var(--s2-spacing-100));display:none}.sprinkle-collapsible--open .sprinkle-collapsible__body{display:block}.sprinkle-split{flex:1;gap:0;min-height:0;display:flex}.sprinkle-split>*{flex:1;min-width:0;overflow-y:auto}.sprinkle-split>:not(:last-child){border-right:1px solid var(--s2-border-default)}.sprinkle-split--vertical{flex-direction:column}.sprinkle-split--vertical>:not(:last-child){border-right:none;border-bottom:1px solid var(--s2-border-default)}.sprinkle-canvas{border-radius:var(--s2-radius-l);background:var(--s2-bg-layer-1);width:100%;position:relative;overflow:hidden}.sprinkle-canvas--16x9{aspect-ratio:16/9}.sprinkle-canvas--4x3{aspect-ratio:4/3}.sprinkle-canvas--1x1{aspect-ratio:1}.sprinkle-canvas svg,.sprinkle-canvas canvas{width:100%;height:100%;display:block}.sprinkle-density-compact .sprinkle-content{padding:var(--s2-spacing-100)}.sprinkle-density-compact .sprinkle-heading{font-size:var(--s2-font-size-100);margin-bottom:var(--s2-spacing-50)}.sprinkle-density-compact .sprinkle-heading--m{font-size:13px}.sprinkle-density-compact .sprinkle-body{font-size:var(--s2-font-size-75);line-height:1.4}.sprinkle-density-compact .sprinkle-detail{font-size:var(--s2-font-size-50)}.sprinkle-density-compact .sprinkle-table th{font-size:var(--s2-font-size-50);height:28px;padding:5px 12px}.sprinkle-density-compact .sprinkle-table td{font-size:var(--s2-font-size-75);padding:6px 12px}.sprinkle-density-compact .sprinkle-btn{height:26px;font-size:var(--s2-font-size-75);padding:0 10px}.sprinkle-density-compact .sprinkle-badge{padding:2px 6px;font-size:10px}.sprinkle-density-compact .sprinkle-card{padding:var(--s2-spacing-200)}.sprinkle-density-compact .sprinkle-list-item{gap:10px;min-height:40px;padding:8px 16px}.sprinkle-density-compact .sprinkle-list-item__icon{width:28px;min-width:28px;height:28px;font-size:13px}.sprinkle-density-compact .sprinkle-list-item__title{font-size:var(--s2-font-size-75)}.sprinkle-density-compact .sprinkle-list-item__subtitle{font-size:11px}.sprinkle-density-compact .sprinkle-sidebar__nav-item{padding:6px var(--s2-spacing-200);font-size:var(--s2-font-size-75)}.sprinkle-density-compact .sprinkle-text-field{height:28px;font-size:var(--s2-font-size-75);padding:4px 8px}.sprinkle-density-compact .sprinkle-tabs__tab{padding:6px var(--s2-spacing-200);font-size:var(--s2-font-size-75)}.sprinkle-density-compact .sprinkle-kv-list li{font-size:var(--s2-font-size-50);padding:6px 0}.sprinkle-density-compact .sprinkle-chip{padding:3px 8px;font-size:11px}.sprinkle-density-spacious .sprinkle-content{padding:var(--s2-spacing-400)}.sprinkle-density-spacious .sprinkle-heading{font-size:var(--s2-font-size-500);margin-bottom:var(--s2-spacing-200)}.sprinkle-density-spacious .sprinkle-heading--m{font-size:var(--s2-font-size-300)}.sprinkle-density-spacious .sprinkle-body{font-size:15px;line-height:1.65}.sprinkle-density-spacious .sprinkle-card{padding:var(--s2-spacing-500)}.sprinkle-density-spacious .sprinkle-btn{height:36px;padding:0 20px}.sprinkle-density-spacious .sprinkle-action-card__body{padding:0 32px 24px;font-size:15px}.sprinkle-panel{container-type:inline-size}@container (width<=400px){.sprinkle-sidebar{flex-direction:column}.sprinkle-sidebar__nav{border-right:none;border-bottom:1px solid var(--s2-border-default);width:100%;min-width:0;max-height:200px}.sprinkle-grid{grid-template-columns:1fr}.sprinkle-split:not(.sprinkle-split--vertical){flex-direction:column}.sprinkle-split:not(.sprinkle-split--vertical)>:not(:last-child){border-right:none;border-bottom:1px solid var(--s2-border-default)}.sprinkle-toolbar{flex-wrap:wrap}}@container (width>=600px){.sprinkle-sidebar__nav{width:240px;min-width:240px}.sprinkle-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}}.skill-drop-overlay{backdrop-filter:blur(3px);opacity:0;pointer-events:none;transition:opacity var(--s2-transition-default);z-index:180;background:#00000061;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.skill-drop-overlay--visible{opacity:1}.skill-drop-overlay__card{min-width:min(420px,100vw - 32px);max-width:calc(100vw - 32px);padding:var(--s2-spacing-400);border-radius:var(--s2-radius-xl);background:color-mix(in srgb, var(--s2-bg-layer-2) 92%, transparent);border:1px dashed var(--s2-accent);box-shadow:var(--s2-shadow-elevated);text-align:center}.skill-drop-overlay__title{font-size:var(--s2-font-size-300);color:var(--s2-content-default);font-weight:700}.skill-drop-overlay__desc{margin-top:var(--s2-spacing-75);color:var(--s2-content-secondary);font-size:var(--s2-font-size-75);font-family:var(--s2-font-mono);word-break:break-word}.skill-drop-toast-container{top:calc(var(--s2-header-height) + var(--s2-spacing-200));right:var(--s2-spacing-200);gap:var(--s2-spacing-100);z-index:190;pointer-events:none;flex-direction:column;display:flex;position:fixed}.skill-drop-toast{max-width:min(420px,100vw - 32px);padding:var(--s2-spacing-200) var(--s2-spacing-300);border-radius:var(--s2-radius-default);background:var(--s2-bg-layer-2);color:var(--s2-content-default);border:1px solid var(--s2-border-subtle);box-shadow:var(--s2-shadow-elevated);font-size:var(--s2-font-size-75);opacity:0;line-height:1.45;transition:opacity .16s,transform .16s;transform:translateY(-8px)}.skill-drop-toast--visible{opacity:1;transform:translateY(0)}.skill-drop-toast--success{border-color:color-mix(in srgb, var(--s2-positive) 55%, var(--s2-border-subtle))}.skill-drop-toast--error{border-color:color-mix(in srgb, var(--s2-negative) 65%, var(--s2-border-subtle))}
|