sliccy 1.29.0 → 1.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ import{r as e}from"./index-DpmXhFTV.js";export{e as getLickManager};
@@ -91,4 +91,4 @@ Use this EXACT format:
91
91
  - [Preserve important context, add new if needed]
92
92
 
93
93
  Keep each section concise. Preserve exact file paths, function names, and error messages.`;async function mr(e,t,n,r,i,a,o){let s=Math.floor(.8*n),c=o?pr:fr;a&&(c=`${c}\n\nAdditional focus: ${a}`);let l=`<conversation>\n${sr(ir(e))}\n</conversation>\n\n`;o&&(l+=`<previous-summary>\n${o}\n</previous-summary>\n\n`),l+=c;let u=[{role:`user`,content:[{type:`text`,text:l}],timestamp:Date.now()}],d=t.reasoning?{maxTokens:s,signal:i,apiKey:r,reasoning:`high`}:{maxTokens:s,signal:i,apiKey:r},f=await Le(t,{systemPrompt:cr,messages:u},d);if(f.stopReason===`error`)throw Error(`Summarization failed: ${f.errorMessage||`Unknown error`}`);return f.content.filter(e=>e.type===`text`).map(e=>e.text).join(`
94
- `)}var G=a(`context-compaction`),hr=2e5;function gr(e){let t=e.contextWindow??hr,n=e.reserveTokens??lr.reserveTokens,r=e.keepRecentTokens??lr.keepRecentTokens,i={enabled:!0,reserveTokens:n,keepRecentTokens:r};return async(a,o)=>{if(a.length===0)return a;let s=0;for(let e of a)s+=dr(e);if(!ur(s,t,i))return a;G.info(`Context compaction triggered`,{totalTokens:s,contextWindow:t,threshold:t-n,messageCount:a.length});let c=0,l=a.length;for(let e=a.length-1;e>=0;e--){let t=dr(a[e]);if(c+t>r&&l<a.length)break;c+=t,l=e}for(;l>0&&a[l].role===`toolResult`;)l--;if(l<=0||l>=a.length)return G.warn(`Cannot find valid cut point for compaction`),a;let u=a.slice(0,l),d=a.slice(l);G.info(`Compaction cut point`,{summarizing:u.length,keeping:d.length});let f=e.getApiKey();if(f)try{let t=await mr(u,e.model,n,f,o),r={role:`user`,content:[{type:`text`,text:`<context-summary>\n${t}\n</context-summary>`}]};return G.info(`LLM summarization successful`,{originalMessages:a.length,compactedMessages:1+d.length,summaryLength:t.length}),[r,...d]}catch(e){G.warn(`LLM summarization failed, falling back to naive drop`,{error:e instanceof Error?e.message:String(e)})}else G.warn(`No API key available for LLM summarization, falling back to naive drop`);return G.info(`Naive compaction applied`,{originalMessages:a.length,compactedMessages:1+d.length}),[{role:`user`,content:[{type:`text`,text:`[Earlier conversation messages were compacted to save context space]`}]},...d]}}var _r=`slicc-theme`,vr=new Set([`dark`,`light`,`system`]);function yr(){let e=localStorage.getItem(_r);return e&&vr.has(e)?e:`light`}function br(e){localStorage.setItem(_r,e),xr()}function xr(){let e=yr(),t=e===`light`;e===`system`&&(t=window.matchMedia?.(`(prefers-color-scheme: light)`).matches??!1),document.documentElement.classList.toggle(`theme-light`,t)}var Sr;function Cr(){xr(),Sr=window.matchMedia?.(`(prefers-color-scheme: light)`),Sr?.addEventListener?.(`change`,()=>{yr()===`system`&&xr()})}var wr={include:[`*`],exclude:[]},Tr=r({config:()=>Er}),Er={id:`azure-ai-foundry`,name:`Azure (Claude)`,description:`Claude models via Azure AI Foundry`,requiresApiKey:!0,apiKeyPlaceholder:`Azure API key`,apiKeyEnvVar:`AZURE_API_KEY`,requiresBaseUrl:!0,baseUrlPlaceholder:`https://your-resource.services.ai.azure.com/anthropic`,baseUrlDescription:`Azure AI Foundry endpoint — must end with /anthropic`},Dr=r({config:()=>Or,register:()=>Hr,streamBedrockCamp:()=>q,streamSimpleBedrockCamp:()=>Vr}),Or={id:`bedrock-camp`,name:`AWS Bedrock (CAMP)`,description:`Claude on AWS Bedrock via CAMP Bearer token`,requiresApiKey:!0,apiKeyPlaceholder:`ABSK...`,apiKeyEnvVar:`BEDROCK_CAMP_API_KEY`,requiresBaseUrl:!0,baseUrlPlaceholder:`https://bedrock-runtime.us-west-2.amazonaws.com`,baseUrlDescription:`Bedrock runtime endpoint from CAMP portal`},kr=typeof chrome<`u`&&!!chrome?.runtime?.id;function Ar(e){let t=e.replace(/[^a-zA-Z0-9_-]/g,`_`);return t.length>64?t.slice(0,64):t}function K(e){return e?e.replace(/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g,`�`):``}function jr(e,t){let n=[],r=m(e.messages,t,Ar);for(let e=0;e<r.length;e++){let i=r[e];switch(i.role){case`user`:n.push({role:`user`,content:typeof i.content==`string`?[{text:K(i.content)}]:i.content.map(e=>{if(e.type===`text`)return{text:K(e.text)};if(e.type===`image`)return{image:{source:{bytes:e.data},format:Mr(e.mimeType)}};throw Error(`Unknown user content type: ${e.type}`)})});break;case`assistant`:{if(i.content.length===0)continue;let e=[];for(let n of i.content)switch(n.type){case`text`:if(n.text.trim().length===0)continue;e.push({text:K(n.text)});break;case`toolCall`:e.push({toolUse:{toolUseId:n.id,name:n.name,input:n.arguments}});break;case`thinking`:if(n.thinking.trim().length===0)continue;Nr(t)?e.push({reasoningContent:{reasoningText:{text:K(n.thinking),signature:n.thinkingSignature}}}):e.push({reasoningContent:{reasoningText:{text:K(n.thinking)}}});break}if(e.length===0)continue;n.push({role:`assistant`,content:e});break}case`toolResult`:{let t=[];t.push({toolResult:{toolUseId:i.toolCallId,content:i.content.map(e=>e.type===`image`?{image:{source:{bytes:e.data},format:Mr(e.mimeType)}}:{text:K(e.text??e.json??JSON.stringify(e))}),status:i.isError?`error`:`success`}});let a=e+1;for(;a<r.length&&r[a].role===`toolResult`;){let e=r[a];t.push({toolResult:{toolUseId:e.toolCallId,content:e.content.map(e=>e.type===`image`?{image:{source:{bytes:e.data},format:Mr(e.mimeType)}}:{text:K(e.text??e.json??JSON.stringify(e))}),status:e.isError?`error`:`success`}}),a++}e=a-1,n.push({role:`user`,content:t});break}}}return n}function Mr(e){switch(e){case`image/jpeg`:case`image/jpg`:return`jpeg`;case`image/png`:return`png`;case`image/gif`:return`gif`;case`image/webp`:return`webp`;default:return`png`}}function Nr(e){let t=e.id.toLowerCase();return t.includes(`anthropic.claude`)||t.includes(`anthropic/claude`)}function Pr(e){return e.includes(`opus-4-6`)||e.includes(`opus-4.6`)||e.includes(`sonnet-4-6`)||e.includes(`sonnet-4.6`)}function Fr(e,t){if(!e?.length||t===`none`)return;let n=e.map(e=>({toolSpec:{name:e.name,description:e.description,inputSchema:{json:e.parameters}}})),r;switch(t){case`auto`:r={auto:{}};break;case`any`:r={any:{}};break;default:t&&typeof t==`object`&&t.type===`tool`&&(r={tool:{name:t.name}})}return{tools:n,toolChoice:r}}function Ir(e,t){switch(e){case`minimal`:case`low`:return`low`;case`medium`:return`medium`;case`high`:return`high`;case`xhigh`:return t.includes(`opus-4-6`)||t.includes(`opus-4.6`)?`max`:`high`;default:return`high`}}function Lr(e,t){if(!(!t.reasoning||!e.reasoning)&&(e.id.includes(`anthropic.claude`)||e.id.includes(`anthropic/claude`)))return Pr(e.id)?{thinking:{type:`adaptive`},output_config:{effort:Ir(t.reasoning,e.id)}}:(()=>{let e={minimal:1024,low:2048,medium:8192,high:16384,xhigh:16384},n=t.reasoning===`xhigh`?`high`:t.reasoning;return{thinking:{type:`enabled`,budget_tokens:t.thinkingBudgets?.[n]??e[t.reasoning]}}})()}function Rr(e){if(e)return[{text:K(e)}]}function zr(e){switch(e){case`end_turn`:case`stop_sequence`:return`stop`;case`max_tokens`:case`model_context_window_exceeded`:return`length`;case`tool_use`:return`toolUse`;default:return`error`}}function Br(e,t,n,r){r.push({type:`start`,partial:n});let i=e.output?.message;if(i?.content)for(let e=0;e<i.content.length;e++){let t=i.content[e];if(t.text!==void 0){let e={type:`text`,text:t.text};n.content.push(e);let i=n.content.length-1;r.push({type:`text_start`,contentIndex:i,partial:n}),r.push({type:`text_delta`,contentIndex:i,delta:t.text,partial:n}),r.push({type:`text_end`,contentIndex:i,content:t.text,partial:n})}else if(t.toolUse){let e={type:`toolCall`,id:t.toolUse.toolUseId||``,name:t.toolUse.name||``,arguments:t.toolUse.input||{}};n.content.push(e);let i=n.content.length-1;r.push({type:`toolcall_start`,contentIndex:i,partial:n}),r.push({type:`toolcall_end`,contentIndex:i,toolCall:e,partial:n})}else if(t.reasoningContent?.reasoningText){let e={type:`thinking`,thinking:t.reasoningContent.reasoningText.text||``,thinkingSignature:t.reasoningContent.reasoningText.signature||``};n.content.push(e);let i=n.content.length-1;r.push({type:`thinking_start`,contentIndex:i,partial:n}),r.push({type:`thinking_delta`,contentIndex:i,delta:e.thinking,partial:n}),r.push({type:`thinking_end`,contentIndex:i,content:e.thinking,partial:n})}}e.usage&&(n.usage.input=e.usage.inputTokens||0,n.usage.output=e.usage.outputTokens||0,n.usage.cacheRead=e.usage.cacheReadInputTokens||0,n.usage.cacheWrite=e.usage.cacheWriteInputTokens||0,n.usage.totalTokens=e.usage.totalTokens||n.usage.input+n.usage.output,y(t,n.usage)),n.stopReason=zr(e.stopReason||`end_turn`)}var q=(e,t,n={})=>{let r=_();return(async()=>{let i={role:`assistant`,content:[],api:`bedrock-camp-converse`,provider:e.provider,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`stop`,timestamp:Date.now()};try{let a=n.apiKey;if(!a)throw Error(`API key is required for Bedrock CAMP`);let o=e.baseUrl;if(!o)throw Error(`Base URL is required for Bedrock CAMP`);let s={modelId:e.id,messages:jr(t,e),system:Rr(t.systemPrompt),inferenceConfig:{maxTokens:n.maxTokens,temperature:n.temperature},toolConfig:Fr(t.tools,n.toolChoice),additionalModelRequestFields:Lr(e,n)};s.system||delete s.system,s.toolConfig||delete s.toolConfig,s.additionalModelRequestFields||delete s.additionalModelRequestFields,n?.onPayload?.(s,e);let c=`${o.replace(/\/$/,``)}/model/${encodeURIComponent(e.id)}/converse`,l=kr?c:`/api/fetch-proxy`,u={"Content-Type":`application/json`,Authorization:`Bearer ${a}`};kr||(u[`X-Target-URL`]=c);let d=await fetch(l,{method:`POST`,headers:u,body:JSON.stringify(s),signal:n.signal});if(!d.ok){let e=await d.text();throw Error(`Bedrock CAMP API error (${d.status}): ${e}`)}if(Br(await d.json(),e,i,r),i.stopReason===`error`||i.stopReason===`aborted`)throw Error(`An unknown error occurred`);r.push({type:`done`,reason:i.stopReason,message:i}),r.end()}catch(e){for(let e of i.content)delete e.index,delete e.partialJson;i.stopReason=n.signal?.aborted?`aborted`:`error`,i.errorMessage=e instanceof Error?e.message:JSON.stringify(e),r.push({type:`error`,reason:i.stopReason,error:i}),r.end()}})(),r},Vr=(e,t,n)=>{let r=g(e,n,void 0);if(!n?.reasoning)return q(e,t,{...r,reasoning:void 0});if(e.id.includes(`anthropic.claude`)||e.id.includes(`anthropic/claude`)){if(Pr(e.id))return q(e,t,{...r,reasoning:n.reasoning,thinkingBudgets:n.thinkingBudgets});let i=b(r.maxTokens||0,e.maxTokens,n.reasoning,n.thinkingBudgets);return q(e,t,{...r,maxTokens:i.maxTokens,reasoning:n.reasoning,thinkingBudgets:{...n.thinkingBudgets||{},[v(n.reasoning)]:i.budgetTokens}})}return q(e,t,{...r,reasoning:n.reasoning,thinkingBudgets:n.thinkingBudgets})};function Hr(){T({api:`bedrock-camp-converse`,stream:q,streamSimple:Vr})}var Ur={proxyEndpoint:`https://adobe-llm-proxy.paolo-moz.workers.dev`,redirectUri:`http://localhost:5710/auth/callback`,extensionRedirectUri:`https://akggccfpkleihhemkkikggopnifgelbk.chromiumapp.org/adobe`},Wr=r({config:()=>ri,getAdobeModels:()=>pi,getValidAccessToken:()=>ai,isTokenExpired:()=>oi,register:()=>mi}),J=Object.assign({"/packages/webapp/providers/adobe-config.json":Ur})[`/packages/webapp/providers/adobe-config.json`]??{clientId:``,proxyEndpoint:``,scopes:`openid,profile,email`};function Y(){let e=Hi(`adobe`);if(e)return e.replace(/\/$/,``);if(J.proxyEndpoint)return J.proxyEndpoint.replace(/\/$/,``);throw Error(`Adobe proxy endpoint not configured — set it in Settings or adobe-config.json`)}var Gr=new Map,Kr=new Map;async function qr(e){let t=Gr.get(e);if(t)return t;try{let t=await fetch(`${e}/v1/config`);if(t.ok){let n=await t.json();return Gr.set(e,n),n}console.warn(`[adobe] Proxy /v1/config returned ${t.status}, falling back to build-time config`)}catch(e){console.warn(`[adobe] Failed to fetch proxy config:`,e instanceof Error?e.message:String(e))}let n={};return Gr.set(e,n),n}function Jr(e){let t=e.clientId||J.clientId;if(!t)throw Error(`Could not determine IMS client ID — proxy /v1/config did not return one and adobe-config.json is empty`);return t}function Yr(e){return e.scopes||J.scopes}function Xr(e){return e.imsEnvironment||J.imsEnvironment||`prod`}var Zr={prod:`https://ims-na1.adobelogin.com`,stg1:`https://ims-na1-stg1.adobelogin.com`};function Qr(e){return Zr[e??J.imsEnvironment??`prod`]??Zr.prod}var $r=typeof chrome<`u`&&!!chrome?.runtime?.id;function ei(){return Q().find(e=>e.providerId===`adobe`)}async function ti(e,t){try{let n=await fetch(`${Qr(t)}/ims/userinfo/v2`,{headers:{Authorization:`Bearer ${e}`}});if(n.ok){let e=await n.json();return{name:e.displayName||e.name||e.email,avatar:e.picture||e.avatar_url}}console.warn(`[adobe] User profile fetch returned ${n.status}, account will have no display name`)}catch(e){console.warn(`[adobe] Failed to fetch user profile:`,e instanceof Error?e.message:String(e))}return{}}function ni(e){let t=e.indexOf(`#`);if(t<0)return null;let n=new URLSearchParams(e.slice(t+1)),r=n.get(`access_token`);return r?{accessToken:r,expiresIn:parseInt(n.get(`expires_in`)??`86400`,10)}:null}var ri={id:`adobe`,name:`Adobe`,description:`Claude via Adobe — login with your Adobe ID`,requiresApiKey:!1,requiresBaseUrl:!J.proxyEndpoint,baseUrlPlaceholder:`https://your-proxy.example.com`,baseUrlDescription:`Anthropic-compatible proxy endpoint`,isOAuth:!0,getModelIds:()=>{let e=e=>{let t={id:e.id,name:e.name??e.id},n=Kr.get(e.id);return n?.api&&(t.api=n.api),n?.context_window!==void 0&&(t.context_window=n.context_window),n?.max_tokens!==void 0&&(t.max_tokens=n.max_tokens),n?.reasoning!==void 0&&(t.reasoning=n.reasoning),n?.input&&(t.input=n.input),t};for(let t of fi.values())if(t.length){let n=t.map(t=>e({id:t.id,name:t.name??t.id}));try{localStorage.setItem(`slicc-adobe-models`,JSON.stringify(n))}catch{}return n}for(let t of Gr.values())if(t.models?.length)return t.models.map(e);try{let e=localStorage.getItem(`slicc-adobe-models`);if(e){let t=JSON.parse(e);if(t.length)return t}}catch{}return[{id:`claude-opus-4-6`,name:`Claude Opus 4.6`}]},onOAuthLogin:async(e,t)=>{let n=await qr(Y()),r=Jr(n),i=Yr(n),a=Xr(n),o=$r?J.extensionRedirectUri??`https://${chrome.runtime.id}.chromiumapp.org/`:J.redirectUri??`${window.location.origin}/auth/callback`,s=new URLSearchParams({client_id:r,scope:i,response_type:`token`,redirect_uri:o}),c=await e(`${Qr(a)}/ims/authorize/v2?${s}`);if(!c)return;let l=ni(c);if(!l){console.error(`[adobe] Could not extract token from redirect URL`);return}let u=await ti(l.accessToken,a);Bi({providerId:`adobe`,accessToken:l.accessToken,tokenExpiresAt:Date.now()+l.expiresIn*1e3,userName:u.name,userAvatar:u.avatar}),await pi().catch(e=>console.warn(`[adobe] Failed to fetch models after login:`,e instanceof Error?e.message:String(e))),t()},onOAuthLogout:async()=>{let e=ei();if(e?.accessToken)try{let t=Gr.values().next().value??{},n=t.clientId||J.clientId,r=Xr(t);if(n){let t=await fetch(`${Qr(r)}/ims/revoke`,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:new URLSearchParams({token:e.accessToken,token_type_hint:`access_token`,client_id:n})});t.ok||console.warn(`[adobe] Token revocation returned ${t.status}, token may still be valid server-side`)}}catch(e){console.warn(`[adobe] Failed to revoke token:`,e instanceof Error?e.message:String(e))}Bi({providerId:`adobe`,accessToken:``})}},ii=null;async function ai(){let e=ei();if(!e?.accessToken)throw Error(`Not logged in to Adobe — please log in first`);if((e.tokenExpiresAt??0)-Date.now()>6e4)return e.accessToken;console.log(`[adobe] Token expired or expiring soon, attempting silent renewal...`);try{let e=await si();if(e)return e}catch(e){console.warn(`[adobe] Silent renewal failed:`,e instanceof Error?e.message:String(e))}let t=ei();if((t?.tokenExpiresAt??0)-Date.now()>0&&t?.accessToken)return t.accessToken;throw Error(`Adobe session expired — please log in again`)}function oi(){let e=ei();return e?.tokenExpiresAt?Date.now()>e.tokenExpiresAt-6e4:!0}async function si(){return ii||(ii=(async()=>{try{let e=await qr(Y()),t=Jr(e),n=Yr(e),r=Xr(e),i=$r?J.extensionRedirectUri??`https://${chrome.runtime.id}.chromiumapp.org/`:J.redirectUri??`${window.location.origin}/auth/callback`,a=new URLSearchParams({client_id:t,scope:n,response_type:`token`,redirect_uri:i,prompt:`none`}),o=`${Qr(r)}/ims/authorize/v2?${a}`,{createOAuthLauncher:s}=await d(async()=>{let{createOAuthLauncher:e}=await import(`./oauth-service-CKR4S63v.js`);return{createOAuthLauncher:e}},[]),c=await s()(o);if(!c)return null;let l=ni(c);if(!l)return null;let u=ei();return Bi({providerId:`adobe`,accessToken:l.accessToken,tokenExpiresAt:Date.now()+l.expiresIn*1e3,userName:u?.userName,userAvatar:u?.userAvatar}),console.log(`[adobe] Token renewed silently`),await pi().catch(e=>console.warn(`[adobe] Failed to refresh models after silent renewal:`,e instanceof Error?e.message:String(e))),l.accessToken}catch(e){return console.warn(`[adobe] Silent renewal error:`,e instanceof Error?e.message:String(e)),null}finally{ii=null}})(),ii)}function ci(e,t){return{type:`error`,reason:`error`,error:{role:`assistant`,content:[],api:`adobe-anthropic`,provider:`adobe`,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`error`,errorMessage:t instanceof Error?t.message:String(t),timestamp:Date.now()}}}var li=(e,t,n={})=>{let r=_();return(async()=>{try{let i=await ai();if(String(e.api).includes(`openai`)){let a=Oe({...e,baseUrl:`${Y()}/v1`,api:`openai-completions`,compat:{...e.compat,supportsStore:!1,supportsDeveloperRole:!1}},t,{...n,apiKey:i});for await(let e of a)r.push(e)}else{let a=me({...e,baseUrl:Y(),api:`anthropic-messages`},t,{...n,apiKey:i});for await(let e of a)r.push(e)}r.end()}catch(t){console.error(`[adobe] Stream error:`,t instanceof Error?t.message:String(t)),r.push(ci(e,t)),r.end()}})(),r},ui=(e,t,n)=>{let r=_();return(async()=>{try{let i=await ai();if(String(e.api).includes(`openai`)){let a=ke({...e,baseUrl:`${Y()}/v1`,api:`openai-completions`,compat:{...e.compat,supportsStore:!1,supportsDeveloperRole:!1}},t,{...n,apiKey:i});for await(let e of a)r.push(e)}else{let a=he({...e,baseUrl:Y(),api:`anthropic-messages`},t,{...n,apiKey:i});for await(let e of a)r.push(e)}r.end()}catch(t){console.error(`[adobe] Stream error:`,t instanceof Error?t.message:String(t)),r.push(ci(e,t)),r.end()}})(),r};async function di(){try{let e=await ai(),t=Y(),n=await fetch(`${t}/v1/models`,{headers:{Authorization:`Bearer ${e}`}});if(n.ok){let e=await n.json();if(e.data?.length){for(let t of e.data){let e={id:t.id,name:t.name};t.api!==void 0&&(e.api=t.api),t.context_window!==void 0&&(e.context_window=t.context_window),t.max_tokens!==void 0&&(e.max_tokens=t.max_tokens),t.reasoning!==void 0&&(e.reasoning=t.reasoning),t.input!==void 0&&(e.input=t.input),Kr.set(t.id,e)}let n=new Map;for(let e of x())try{for(let t of h(e))n.set(t.id,t)}catch{}return e.data.map(e=>{let r=n.get(e.id),i=`adobe-${e.api===`openai`?`openai`:`anthropic`}`;return r?{...r,provider:`adobe`,api:i}:{id:e.id,name:e.name??e.id,provider:`adobe`,api:i,baseUrl:t,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}})}}else console.warn(`[adobe] Proxy /v1/models returned ${n.status}, falling back to Anthropic models`)}catch(e){console.warn(`[adobe] Failed to fetch proxy models:`,e instanceof Error?e.message:String(e))}return h(`anthropic`).map(e=>({...e,provider:`adobe`,api:`adobe-anthropic`}))}var fi=new Map;async function pi(){let e=Y(),t=fi.get(e);if(t)return t;let n=await di();return fi.set(e,n),n}function mi(){T({api:`adobe-anthropic`,stream:li,streamSimple:ui}),T({api:`adobe-openai`,stream:li,streamSimple:ui})}var hi=Object.assign({"/packages/dev-tools/providers.build.json":wr})[`/packages/dev-tools/providers.build.json`]??{include:[`*`],exclude:[]};function gi(e){let{include:t,exclude:n}=hi;return n.includes(`*`)||n.includes(e)?!1:!!(t.includes(`*`)||t.includes(e))}var _i=Object.assign({"./built-in/azure-ai-foundry.ts":Tr,"./built-in/bedrock-camp.ts":Dr}),vi=Object.assign({"/packages/webapp/providers/adobe.ts":Wr}),yi=new Map;for(let[e,t]of Object.entries(_i))t.config&&gi(t.config.id)&&(yi.set(t.config.id,t.config),t.register?.());for(let[e,t]of Object.entries(vi))t.config&&(yi.set(t.config.id,t.config),t.register?.());function bi(e){return yi.get(e)}function xi(){return[...yi.keys()]}var Si=p,Ci=h;function wi(){return typeof chrome<`u`&&!!chrome?.runtime?.id}var Ti=`slicc_accounts`,X=`selected-model`,Ei=[`slicc_provider`,`slicc_api_key`,`slicc_base_url`,`anthropic_api_key`,`api_provider`,`azure_resource`,`bedrock_region`],Di=!1;function Oi(){if(!Di){Di=!0;for(let e of Ei)try{localStorage.removeItem(e)}catch{}}}function ki(){let e=x().filter(gi),t=xi();return[...new Set([...e,...t])]}function Z(e){return bi(e)||{id:e,name:e.split(`-`).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `),description:`${e} provider`,requiresApiKey:!0,requiresBaseUrl:!1}}function Ai(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)}function ji(e){try{if(e===`bedrock-camp`)return Ci(`amazon-bedrock`).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 Pi.error(`Provider getModelIds callback failed`,{providerId:e,error:t instanceof Error?t.message:String(t)}),[]}let r=new Map;for(let e of x())try{for(let t of Ci(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&&Ai(o,s),Ai(o,n),o})}if(t.isOAuth){let n=Ci(`anthropic`),r=`${e}-anthropic`;return n.map(n=>{let i={...n,api:r,provider:e},a=t.modelOverrides?.[n.id];return a&&Ai(i,a),i})}return Ci(e===`azure-ai-foundry`?`anthropic`:e)}catch(t){return Pi.error(`Failed to load models`,{providerId:e,error:t instanceof Error?t.message:String(t)}),[]}}function Mi(e){let t=Q().find(t=>t.providerId===e);if(!t?.accessToken)return null;let n=!!t.tokenExpiresAt&&Date.now()>t.tokenExpiresAt-6e4;return{token:t.accessToken,expiresAt:t.tokenExpiresAt,userName:t.userName,userAvatar:t.userAvatar,expired:n}}var Ni=Object.assign({})[`/packages/webapp/providers.json`]??[],Pi=a(`provider-settings`);function Fi(e=Ni){if(e.length===0||Q().length>0)return;let t=new Set(ki());for(let n of e)if(!(!n.providerId||!n.apiKey)){if(!t.has(n.providerId)){Pi.warn(`Unknown provider "${n.providerId}" in providers.json — skipping`);continue}Ri(n.providerId,n.apiKey,n.baseUrl)}let n=e.find(e=>e.providerId&&e.apiKey&&t.has(e.providerId));n?.model&&!localStorage.getItem(X)&&localStorage.setItem(X,`${n.providerId}:${n.model}`)}function Ii(){let e=Q();if(e.length===0)return[];let t=new Map;for(let n of e){if(t.has(n.providerId))continue;let e=ji(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 Q(){Oi();let e=localStorage.getItem(Ti);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 Li(e){localStorage.setItem(Ti,JSON.stringify(e))}function Ri(e,t,n){let r=Q().filter(t=>t.providerId!==e),i={providerId:e,apiKey:t};n&&(i.baseUrl=n),r.push(i),Li(r)}function zi(e){Li(Q().filter(t=>t.providerId!==e))}function Bi(e){let t=Q().find(t=>t.providerId===e.providerId),n=Q().filter(t=>t.providerId!==e.providerId);n.push({providerId:e.providerId,apiKey:``,accessToken:e.accessToken,refreshToken:e.refreshToken,tokenExpiresAt:e.tokenExpiresAt,userName:e.userName,userAvatar:e.userAvatar,baseUrl:e.baseUrl??t?.baseUrl}),Li(n)}function Vi(e){let t=Q().find(t=>t.providerId===e);return t&&(t.accessToken||t.apiKey)||null}function Hi(e){return Q().find(t=>t.providerId===e)?.baseUrl??null}function Ui(){let e=localStorage.getItem(X)||``,t=e.indexOf(`:`);return t>=0?e.slice(t+1):e}function Wi(e){if(e.includes(`:`))localStorage.setItem(X,e);else{let t=$();localStorage.setItem(X,`${t}:${e}`)}}function Gi(){return localStorage.getItem(X)||``}function $(){let e=Gi(),t=e.indexOf(`:`);if(t>0)return e.slice(0,t);let n=Q();return n.length>0?n[0].providerId:`anthropic`}function Ki(){return Vi($())}function qi(){let e=Q(),t=$(),n=Ui();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 Ji(){let e=JSON.stringify(qi(),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)}function Yi(){localStorage.removeItem(Ti),localStorage.removeItem(X);for(let e of Ei)localStorage.removeItem(e)}function Xi(e){if(!e)return Zi();let t=$(),n=Hi(t);try{let r=Z(t),i=Si(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;if(r.isOAuth){let n=ji(t).find(t=>t.id===e)?.api??`${t}-anthropic`;a={...a,api:n,provider:t}}else t===`bedrock-camp`&&(a={...a,api:`bedrock-camp-converse`,provider:`bedrock-camp`});return n&&(a={...a,baseUrl:n}),a}catch{return Zi()}}function Zi(){let e=$(),t=Ui(),n=Hi(e),r=ji(e),i=t||r[0]?.id||`claude-sonnet-4-0`;try{let t=Z(e),a=t.isOAuth||e===`azure-ai-foundry`?`anthropic`:e===`bedrock-camp`?`amazon-bedrock`:e,o=Si(a,i);if(!o?.id)throw Error(`Model ${i} not found in ${a} registry`);let s=o;if(t.isOAuth){let t=r.find(e=>e.id===i)?.api??`${e}-anthropic`;s={...s,api:t,provider:e}}else e===`bedrock-camp`&&(s={...s,api:`bedrock-camp-converse`,provider:`bedrock-camp`});return n&&(s={...s,baseUrl:n}),s}catch{let e=r.find(e=>e.id===i);return e?n?{...e,baseUrl:n}:e:Si(`anthropic`,`claude-sonnet-4-0`)}}function Qi(e){return e.length<=10?`****`:e.slice(0,4)+`...`+e.slice(-4)}function $i(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 ea={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 ta(e){return new Promise(t=>{let n=localStorage.getItem(Ti)??``,r=document.createElement(`div`);r.className=`dialog-overlay`;let i=document.createElement(`div`);i.className=`dialog`,i.style.cssText=`max-width: 480px; width: 90vw; padding: 32px;`,Q().length>0?a():e?.preferTrayJoin?c():o(),r.appendChild(i),document.body.appendChild(r);function a(){i.innerHTML=``;let e=document.createElement(`div`);e.className=`dialog__title`,e.textContent=`Accounts`,i.appendChild(e);let s=Q(),d=`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(s.length===0){let e=document.createElement(`div`);e.className=`dialog__desc`,e.textContent=`No accounts configured.`,i.appendChild(e)}else{let e=document.createElement(`div`);e.style.cssText=`margin-bottom: 16px;`;for(let t of s){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 s=document.createElement(`div`);s.style.cssText=`font-size: 14px; font-weight: 600; color: var(--s2-content-default);`,s.textContent=n.name,i.appendChild(s);let c=document.createElement(`div`);c.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?c.textContent=t.userName:t.accessToken?c.textContent=`Logged in`:c.textContent=Qi(t.apiKey),t.baseUrl&&(c.textContent+=` • `+t.baseUrl),i.appendChild(c),r.appendChild(i);let l=document.createElement(`div`);l.style.cssText=`display: flex; gap: 4px; margin-left: 12px; flex-shrink: 0;`;let u=document.createElement(`button`);u.style.cssText=d,u.setAttribute(`aria-label`,`Edit account`),u.appendChild($i(ea.pen)),u.addEventListener(`mouseenter`,()=>{u.style.color=`var(--s2-accent)`,u.style.borderColor=`var(--s2-accent)`}),u.addEventListener(`mouseleave`,()=>{u.style.color=`var(--s2-content-secondary)`,u.style.borderColor=`var(--s2-border-subtle)`}),u.addEventListener(`click`,()=>{o(t)}),l.appendChild(u);let f=document.createElement(`button`);f.style.cssText=d,f.setAttribute(`aria-label`,`Remove account`),f.appendChild($i(ea.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`,()=>{zi(t.providerId),a()}),l.appendChild(f),r.appendChild(l),e.appendChild(r)}i.appendChild(e)}let f=document.createElement(`div`);f.style.cssText=`display: flex; gap: 8px;`;let p=document.createElement(`button`);p.className=`dialog__btn`,p.style.flex=`1`,p.textContent=`Add Account`,p.addEventListener(`click`,()=>o()),f.appendChild(p);let m=document.createElement(`button`);m.className=`dialog__btn dialog__btn--secondary`,m.style.flex=`1`,m.textContent=`Export`,m.addEventListener(`click`,()=>Ji()),f.appendChild(m),i.appendChild(f);let h=document.createElement(`hr`);h.style.cssText=`border: none; border-top: 1px solid var(--s2-border-subtle); margin: 16px 0;`,i.appendChild(h);let g=document.createElement(`div`);g.className=`dialog__desc`,g.style.cssText=`font-weight: 600; margin-bottom: 8px;`,g.textContent=`Tray`,i.appendChild(g);let _=u(),v=_.state!==`inactive`,y=l(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)`),i.appendChild(e)}let b=document.createElement(`button`);b.className=`dialog__btn dialog__btn--secondary`,b.textContent=v||y?`Rejoin tray`:`Join a tray`,b.addEventListener(`click`,()=>c()),i.appendChild(b);let x=document.createElement(`hr`);x.style.cssText=`border: none; border-top: 1px solid var(--s2-border-subtle); margin: 16px 0;`,i.appendChild(x);let S=document.createElement(`div`);S.className=`dialog__desc`,S.style.cssText=`font-weight: 600; margin-bottom: 8px;`,S.textContent=`Theme`,i.appendChild(S);let C=document.createElement(`div`);C.setAttribute(`role`,`radiogroup`),C.setAttribute(`aria-label`,`Theme`),C.style.cssText=`display: flex; gap: 0; margin-bottom: 16px; border-radius: var(--s2-radius-default); overflow: hidden; border: 1px solid var(--s2-border-subtle);`;let w=[[`system`,`System`],[`light`,`Light`],[`dark`,`Dark`]],T=[];for(let[e,t]of w){let n=document.createElement(`button`);n.type=`button`,n.setAttribute(`role`,`radio`),n.setAttribute(`aria-checked`,String(e===yr())),n.textContent=t,n.dataset.theme=e,n.style.cssText=`flex: 1; padding: 8px 0; border: none; font-size: 13px; font-weight: 600; cursor: pointer; transition: background var(--s2-transition-default), color var(--s2-transition-default);`,T.push(n),C.appendChild(n)}function E(){let e=getComputedStyle(document.documentElement);for(let t of T){let n=t.dataset.theme===yr();t.setAttribute(`aria-checked`,String(n)),t.style.background=n?e.getPropertyValue(`--s2-accent`).trim():e.getPropertyValue(`--s2-bg-layer-2`).trim(),t.style.color=n?`#fff`:e.getPropertyValue(`--s2-content-secondary`).trim()}}E();for(let e of T)e.addEventListener(`click`,()=>{br(e.dataset.theme),E()});i.appendChild(C);let D=document.createElement(`button`);D.className=`dialog__btn dialog__btn--secondary`,D.style.marginTop=`8px`,D.textContent=`Close`,D.addEventListener(`click`,()=>{r.remove(),t((localStorage.getItem(Ti)??``)!==n)}),i.appendChild(D)}function o(e){i.innerHTML=``;let t=!!e,n=document.createElement(`div`);n.className=`dialog__title`,n.textContent=t?`Edit Account`:`Add Account`,i.appendChild(n);let r=document.createElement(`div`);r.className=`dialog__desc`,r.textContent=`Provider:`,i.appendChild(r);let o=document.createElement(`select`);if(o.className=`dialog__input`,o.style.marginBottom=`8px`,t){let t=Z(e.providerId),n=document.createElement(`option`);n.value=e.providerId,n.textContent=t.name,o.appendChild(n),o.disabled=!0,o.style.opacity=`0.7`}else{let e=ki(),t=new Set(Q().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,o.appendChild(r)}}i.appendChild(o);let s=document.createElement(`div`);s.className=`dialog__desc`,s.style.cssText=`font-size: 12px; color: var(--s2-content-tertiary); margin-bottom: 16px; margin-top: -4px;`,i.appendChild(s);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 f=document.createElement(`div`);f.className=`dialog__desc`,f.style.cssText=`font-size: 12px; color: var(--s2-content-secondary); text-align: center;`,l.appendChild(f),u.addEventListener(`click`,async()=>{let e=o.value;if(!e)return;let t=Z(e);if(!t.onOAuthLogin)return;let n=Q().some(t=>t.providerId===e),r=Hi(e);if(t.requiresBaseUrl&&!v.value.trim()&&!r){f.textContent=`Base URL is required.`,f.style.color=`var(--slicc-cone)`,v.focus();return}t.requiresBaseUrl&&v.value.trim()&&Ri(e,``,v.value.trim()),f.textContent=`Opening login window...`;try{let{createOAuthLauncher:e}=await d(async()=>{let{createOAuthLauncher:e}=await import(`./oauth-service-CKR4S63v.js`);return{createOAuthLauncher:e}},[]),n=e();await t.onOAuthLogin(n,a)}catch(t){if(!n)try{zi(e)}catch{}Pi.error(`OAuth login failed`,{providerId:e,error:t instanceof Error?t.message:String(t)}),f.textContent=`Login failed: ${t instanceof Error?t.message:String(t)}`}}),t&&e.userName&&(f.textContent=`Logged in as ${e.userName}`,u.textContent=`Re-login`),i.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),i.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),i.appendChild(g);let b=document.createElement(`div`);b.style.cssText=`color: var(--slicc-cone); font-size: 12px; margin-bottom: 8px; display: none;`,i.appendChild(b);let x=document.createElement(`button`);x.className=`dialog__btn`,x.textContent=t?`Save`:`Add`;function S(){let e=o.value;if(!e)return;let t=Z(e);s.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}`,x.style.display=`none`):(l.style.display=`none`,m.textContent=`API Key${t.apiKeyEnvVar?` (${t.apiKeyEnvVar})`:``}:`,h.placeholder=t.apiKeyPlaceholder||`API key`,p.style.display=t.requiresApiKey?``:`none`,v.placeholder=t.baseUrlPlaceholder||`https://...`,y.textContent=t.baseUrlDescription||``,g.style.display=t.requiresBaseUrl?``:`none`,x.style.display=``)}o.addEventListener(`change`,()=>{b.style.display=`none`,S()}),S();function C(){let e=o.value;if(!e)return;let t=Z(e);if(t.requiresApiKey&&h.value.trim().length<5){b.textContent=`API key is required (at least 5 characters).`,b.style.display=``,h.focus();return}if(t.requiresBaseUrl&&!v.value.trim()){b.textContent=`Base URL is required for this provider.`,b.style.display=``,v.focus();return}Ri(e,h.value.trim(),v.value.trim()||void 0),a()}x.addEventListener(`click`,C);let w=e=>{e.key===`Enter`&&C()};h.addEventListener(`keydown`,w),v.addEventListener(`keydown`,w),i.appendChild(x);let T=Q().length>0;if(!t&&!T){let e=document.createElement(`button`);e.className=`dialog__btn dialog__btn--secondary`,e.style.marginTop=`8px`,e.textContent=`Join a tray`,e.addEventListener(`click`,()=>{c()}),i.appendChild(e)}else if(T){let e=document.createElement(`button`);e.className=`dialog__btn dialog__btn--secondary`,e.style.marginTop=`8px`,e.textContent=`Back`,e.addEventListener(`click`,()=>{a()}),i.appendChild(e)}requestAnimationFrame(()=>{let e=o.value;if(!e)return;let t=Z(e);t.requiresApiKey?h.focus():t.requiresBaseUrl&&v.focus()})}function c(){i.innerHTML=``;let e=document.createElement(`div`);e.className=`dialog__title`,e.textContent=`Join a tray`,i.appendChild(e);let n=document.createElement(`div`);n.className=`dialog__desc`,n.style.marginBottom=`12px`,n.textContent=`Paste the tray join URL shared by the tray leader. It must include a /join/... capability.`,i.appendChild(n);let a=document.createElement(`div`);a.className=`dialog__desc`,a.textContent=`Tray URL:`,i.appendChild(a);let c=document.createElement(`input`);c.className=`dialog__input`,c.type=`text`,c.autocomplete=`off`,c.spellcheck=!1,c.placeholder=`https://tray.example.com/base/join/tray-123.capability-token`,c.style.marginBottom=`12px`,i.appendChild(c);let l=document.createElement(`div`);l.style.cssText=`color: var(--slicc-cone); font-size: 12px; margin-bottom: 8px; display: none;`,i.appendChild(l);let u=document.createElement(`div`);u.style.cssText=`font-size: 12px; color: var(--s2-content-secondary); margin-bottom: 8px; display: none;`;let d=document.createElement(`button`);d.className=`dialog__btn`,d.textContent=`Join tray`,d.addEventListener(`click`,()=>{let e=s(window.localStorage,c.value);if(!e){l.textContent=`Enter a valid tray join URL with a /join/... capability.`,l.style.display=``,c.focus();return}wi()?chrome.runtime.sendMessage({source:`panel`,payload:{type:`refresh-tray-runtime`}}).catch(()=>{}):window.dispatchEvent(new CustomEvent(`slicc:tray-join`,{detail:{joinUrl:e.joinUrl}})),u.textContent=`Connecting to tray...`,u.style.display=``,u.style.color=`var(--s2-content-secondary)`,setTimeout(()=>{r.remove(),t(!1)},800)}),i.appendChild(d),i.appendChild(u);let f=document.createElement(`button`);f.className=`dialog__btn dialog__btn--secondary`,f.style.marginTop=`8px`,f.textContent=`Back`,f.addEventListener(`click`,()=>{o()}),i.appendChild(f),c.addEventListener(`input`,()=>{l.style.display=`none`}),c.addEventListener(`keydown`,e=>{e.key===`Enter`&&d.click()}),requestAnimationFrame(()=>c.focus())}})}export{In as A,bi as C,gr as D,Cr as E,Qn as O,ta as S,gi as T,zi as _,qi as a,Bi as b,Ki as c,Hi as d,Mi as f,$ as g,Ui as h,Ji as i,ze as j,Bn as k,Vi as l,ji as m,Fi as n,Q as o,Z as p,Yi as r,Ii as s,Ri as t,ki as u,Zi as v,xi as w,Wi as x,Xi as y};
94
+ `)}var G=a(`context-compaction`),hr=2e5;function gr(e){let t=e.contextWindow??hr,n=e.reserveTokens??lr.reserveTokens,r=e.keepRecentTokens??lr.keepRecentTokens,i={enabled:!0,reserveTokens:n,keepRecentTokens:r};return async(a,o)=>{if(a.length===0)return a;let s=0;for(let e of a)s+=dr(e);if(!ur(s,t,i))return a;G.info(`Context compaction triggered`,{totalTokens:s,contextWindow:t,threshold:t-n,messageCount:a.length});let c=0,l=a.length;for(let e=a.length-1;e>=0;e--){let t=dr(a[e]);if(c+t>r&&l<a.length)break;c+=t,l=e}for(;l>0&&a[l].role===`toolResult`;)l--;if(l<=0||l>=a.length)return G.warn(`Cannot find valid cut point for compaction`),a;let u=a.slice(0,l),d=a.slice(l);G.info(`Compaction cut point`,{summarizing:u.length,keeping:d.length});let f=e.getApiKey();if(f)try{let t=await mr(u,e.model,n,f,o),r={role:`user`,content:[{type:`text`,text:`<context-summary>\n${t}\n</context-summary>`}]};return G.info(`LLM summarization successful`,{originalMessages:a.length,compactedMessages:1+d.length,summaryLength:t.length}),[r,...d]}catch(e){G.warn(`LLM summarization failed, falling back to naive drop`,{error:e instanceof Error?e.message:String(e)})}else G.warn(`No API key available for LLM summarization, falling back to naive drop`);return G.info(`Naive compaction applied`,{originalMessages:a.length,compactedMessages:1+d.length}),[{role:`user`,content:[{type:`text`,text:`[Earlier conversation messages were compacted to save context space]`}]},...d]}}var _r=`slicc-theme`,vr=new Set([`dark`,`light`,`system`]);function yr(){let e=localStorage.getItem(_r);return e&&vr.has(e)?e:`light`}function br(e){localStorage.setItem(_r,e),xr()}function xr(){let e=yr(),t=e===`light`;e===`system`&&(t=window.matchMedia?.(`(prefers-color-scheme: light)`).matches??!1),document.documentElement.classList.toggle(`theme-light`,t)}var Sr;function Cr(){xr(),Sr=window.matchMedia?.(`(prefers-color-scheme: light)`),Sr?.addEventListener?.(`change`,()=>{yr()===`system`&&xr()})}var wr={include:[`*`],exclude:[]},Tr=r({config:()=>Er}),Er={id:`azure-ai-foundry`,name:`Azure (Claude)`,description:`Claude models via Azure AI Foundry`,requiresApiKey:!0,apiKeyPlaceholder:`Azure API key`,apiKeyEnvVar:`AZURE_API_KEY`,requiresBaseUrl:!0,baseUrlPlaceholder:`https://your-resource.services.ai.azure.com/anthropic`,baseUrlDescription:`Azure AI Foundry endpoint — must end with /anthropic`},Dr=r({config:()=>Or,register:()=>Hr,streamBedrockCamp:()=>q,streamSimpleBedrockCamp:()=>Vr}),Or={id:`bedrock-camp`,name:`AWS Bedrock (CAMP)`,description:`Claude on AWS Bedrock via CAMP Bearer token`,requiresApiKey:!0,apiKeyPlaceholder:`ABSK...`,apiKeyEnvVar:`BEDROCK_CAMP_API_KEY`,requiresBaseUrl:!0,baseUrlPlaceholder:`https://bedrock-runtime.us-west-2.amazonaws.com`,baseUrlDescription:`Bedrock runtime endpoint from CAMP portal`},kr=typeof chrome<`u`&&!!chrome?.runtime?.id;function Ar(e){let t=e.replace(/[^a-zA-Z0-9_-]/g,`_`);return t.length>64?t.slice(0,64):t}function K(e){return e?e.replace(/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g,`�`):``}function jr(e,t){let n=[],r=m(e.messages,t,Ar);for(let e=0;e<r.length;e++){let i=r[e];switch(i.role){case`user`:n.push({role:`user`,content:typeof i.content==`string`?[{text:K(i.content)}]:i.content.map(e=>{if(e.type===`text`)return{text:K(e.text)};if(e.type===`image`)return{image:{source:{bytes:e.data},format:Mr(e.mimeType)}};throw Error(`Unknown user content type: ${e.type}`)})});break;case`assistant`:{if(i.content.length===0)continue;let e=[];for(let n of i.content)switch(n.type){case`text`:if(n.text.trim().length===0)continue;e.push({text:K(n.text)});break;case`toolCall`:e.push({toolUse:{toolUseId:n.id,name:n.name,input:n.arguments}});break;case`thinking`:if(n.thinking.trim().length===0)continue;Nr(t)?e.push({reasoningContent:{reasoningText:{text:K(n.thinking),signature:n.thinkingSignature}}}):e.push({reasoningContent:{reasoningText:{text:K(n.thinking)}}});break}if(e.length===0)continue;n.push({role:`assistant`,content:e});break}case`toolResult`:{let t=[];t.push({toolResult:{toolUseId:i.toolCallId,content:i.content.map(e=>e.type===`image`?{image:{source:{bytes:e.data},format:Mr(e.mimeType)}}:{text:K(e.text??e.json??JSON.stringify(e))}),status:i.isError?`error`:`success`}});let a=e+1;for(;a<r.length&&r[a].role===`toolResult`;){let e=r[a];t.push({toolResult:{toolUseId:e.toolCallId,content:e.content.map(e=>e.type===`image`?{image:{source:{bytes:e.data},format:Mr(e.mimeType)}}:{text:K(e.text??e.json??JSON.stringify(e))}),status:e.isError?`error`:`success`}}),a++}e=a-1,n.push({role:`user`,content:t});break}}}return n}function Mr(e){switch(e){case`image/jpeg`:case`image/jpg`:return`jpeg`;case`image/png`:return`png`;case`image/gif`:return`gif`;case`image/webp`:return`webp`;default:return`png`}}function Nr(e){let t=e.id.toLowerCase();return t.includes(`anthropic.claude`)||t.includes(`anthropic/claude`)}function Pr(e){return e.includes(`opus-4-6`)||e.includes(`opus-4.6`)||e.includes(`sonnet-4-6`)||e.includes(`sonnet-4.6`)}function Fr(e,t){if(!e?.length||t===`none`)return;let n=e.map(e=>({toolSpec:{name:e.name,description:e.description,inputSchema:{json:e.parameters}}})),r;switch(t){case`auto`:r={auto:{}};break;case`any`:r={any:{}};break;default:t&&typeof t==`object`&&t.type===`tool`&&(r={tool:{name:t.name}})}return{tools:n,toolChoice:r}}function Ir(e,t){switch(e){case`minimal`:case`low`:return`low`;case`medium`:return`medium`;case`high`:return`high`;case`xhigh`:return t.includes(`opus-4-6`)||t.includes(`opus-4.6`)?`max`:`high`;default:return`high`}}function Lr(e,t){if(!(!t.reasoning||!e.reasoning)&&(e.id.includes(`anthropic.claude`)||e.id.includes(`anthropic/claude`)))return Pr(e.id)?{thinking:{type:`adaptive`},output_config:{effort:Ir(t.reasoning,e.id)}}:(()=>{let e={minimal:1024,low:2048,medium:8192,high:16384,xhigh:16384},n=t.reasoning===`xhigh`?`high`:t.reasoning;return{thinking:{type:`enabled`,budget_tokens:t.thinkingBudgets?.[n]??e[t.reasoning]}}})()}function Rr(e){if(e)return[{text:K(e)}]}function zr(e){switch(e){case`end_turn`:case`stop_sequence`:return`stop`;case`max_tokens`:case`model_context_window_exceeded`:return`length`;case`tool_use`:return`toolUse`;default:return`error`}}function Br(e,t,n,r){r.push({type:`start`,partial:n});let i=e.output?.message;if(i?.content)for(let e=0;e<i.content.length;e++){let t=i.content[e];if(t.text!==void 0){let e={type:`text`,text:t.text};n.content.push(e);let i=n.content.length-1;r.push({type:`text_start`,contentIndex:i,partial:n}),r.push({type:`text_delta`,contentIndex:i,delta:t.text,partial:n}),r.push({type:`text_end`,contentIndex:i,content:t.text,partial:n})}else if(t.toolUse){let e={type:`toolCall`,id:t.toolUse.toolUseId||``,name:t.toolUse.name||``,arguments:t.toolUse.input||{}};n.content.push(e);let i=n.content.length-1;r.push({type:`toolcall_start`,contentIndex:i,partial:n}),r.push({type:`toolcall_end`,contentIndex:i,toolCall:e,partial:n})}else if(t.reasoningContent?.reasoningText){let e={type:`thinking`,thinking:t.reasoningContent.reasoningText.text||``,thinkingSignature:t.reasoningContent.reasoningText.signature||``};n.content.push(e);let i=n.content.length-1;r.push({type:`thinking_start`,contentIndex:i,partial:n}),r.push({type:`thinking_delta`,contentIndex:i,delta:e.thinking,partial:n}),r.push({type:`thinking_end`,contentIndex:i,content:e.thinking,partial:n})}}e.usage&&(n.usage.input=e.usage.inputTokens||0,n.usage.output=e.usage.outputTokens||0,n.usage.cacheRead=e.usage.cacheReadInputTokens||0,n.usage.cacheWrite=e.usage.cacheWriteInputTokens||0,n.usage.totalTokens=e.usage.totalTokens||n.usage.input+n.usage.output,y(t,n.usage)),n.stopReason=zr(e.stopReason||`end_turn`)}var q=(e,t,n={})=>{let r=_();return(async()=>{let i={role:`assistant`,content:[],api:`bedrock-camp-converse`,provider:e.provider,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`stop`,timestamp:Date.now()};try{let a=n.apiKey;if(!a)throw Error(`API key is required for Bedrock CAMP`);let o=e.baseUrl;if(!o)throw Error(`Base URL is required for Bedrock CAMP`);let s={modelId:e.id,messages:jr(t,e),system:Rr(t.systemPrompt),inferenceConfig:{maxTokens:n.maxTokens,temperature:n.temperature},toolConfig:Fr(t.tools,n.toolChoice),additionalModelRequestFields:Lr(e,n)};s.system||delete s.system,s.toolConfig||delete s.toolConfig,s.additionalModelRequestFields||delete s.additionalModelRequestFields,n?.onPayload?.(s,e);let c=`${o.replace(/\/$/,``)}/model/${encodeURIComponent(e.id)}/converse`,l=kr?c:`/api/fetch-proxy`,u={"Content-Type":`application/json`,Authorization:`Bearer ${a}`};kr||(u[`X-Target-URL`]=c);let d=await fetch(l,{method:`POST`,headers:u,body:JSON.stringify(s),signal:n.signal});if(!d.ok){let e=await d.text();throw Error(`Bedrock CAMP API error (${d.status}): ${e}`)}if(Br(await d.json(),e,i,r),i.stopReason===`error`||i.stopReason===`aborted`)throw Error(`An unknown error occurred`);r.push({type:`done`,reason:i.stopReason,message:i}),r.end()}catch(e){for(let e of i.content)delete e.index,delete e.partialJson;i.stopReason=n.signal?.aborted?`aborted`:`error`,i.errorMessage=e instanceof Error?e.message:JSON.stringify(e),r.push({type:`error`,reason:i.stopReason,error:i}),r.end()}})(),r},Vr=(e,t,n)=>{let r=g(e,n,void 0);if(!n?.reasoning)return q(e,t,{...r,reasoning:void 0});if(e.id.includes(`anthropic.claude`)||e.id.includes(`anthropic/claude`)){if(Pr(e.id))return q(e,t,{...r,reasoning:n.reasoning,thinkingBudgets:n.thinkingBudgets});let i=b(r.maxTokens||0,e.maxTokens,n.reasoning,n.thinkingBudgets);return q(e,t,{...r,maxTokens:i.maxTokens,reasoning:n.reasoning,thinkingBudgets:{...n.thinkingBudgets||{},[v(n.reasoning)]:i.budgetTokens}})}return q(e,t,{...r,reasoning:n.reasoning,thinkingBudgets:n.thinkingBudgets})};function Hr(){T({api:`bedrock-camp-converse`,stream:q,streamSimple:Vr})}var Ur={proxyEndpoint:`https://adobe-llm-proxy.paolo-moz.workers.dev`,redirectUri:`https://www.sliccy.ai/auth/callback`,extensionRedirectUri:`https://akggccfpkleihhemkkikggopnifgelbk.chromiumapp.org/adobe`},Wr=r({config:()=>ri,getAdobeModels:()=>pi,getValidAccessToken:()=>ai,isTokenExpired:()=>oi,register:()=>mi}),J=Object.assign({"/packages/webapp/providers/adobe-config.json":Ur})[`/packages/webapp/providers/adobe-config.json`]??{clientId:``,proxyEndpoint:``,scopes:`openid,profile,email`};function Y(){let e=Hi(`adobe`);if(e)return e.replace(/\/$/,``);if(J.proxyEndpoint)return J.proxyEndpoint.replace(/\/$/,``);throw Error(`Adobe proxy endpoint not configured — set it in Settings or adobe-config.json`)}var Gr=new Map,Kr=new Map;async function qr(e){let t=Gr.get(e);if(t)return t;try{let t=await fetch(`${e}/v1/config`);if(t.ok){let n=await t.json();return Gr.set(e,n),n}console.warn(`[adobe] Proxy /v1/config returned ${t.status}, falling back to build-time config`)}catch(e){console.warn(`[adobe] Failed to fetch proxy config:`,e instanceof Error?e.message:String(e))}let n={};return Gr.set(e,n),n}function Jr(e){let t=e.clientId||J.clientId;if(!t)throw Error(`Could not determine IMS client ID — proxy /v1/config did not return one and adobe-config.json is empty`);return t}function Yr(e){return e.scopes||J.scopes}function Xr(e){return e.imsEnvironment||J.imsEnvironment||`prod`}var Zr={prod:`https://ims-na1.adobelogin.com`,stg1:`https://ims-na1-stg1.adobelogin.com`};function Qr(e){return Zr[e??J.imsEnvironment??`prod`]??Zr.prod}var $r=typeof chrome<`u`&&!!chrome?.runtime?.id;function ei(){return Q().find(e=>e.providerId===`adobe`)}async function ti(e,t){try{let n=await fetch(`${Qr(t)}/ims/userinfo/v2`,{headers:{Authorization:`Bearer ${e}`}});if(n.ok){let e=await n.json();return{name:e.displayName||e.name||e.email,avatar:e.picture||e.avatar_url}}console.warn(`[adobe] User profile fetch returned ${n.status}, account will have no display name`)}catch(e){console.warn(`[adobe] Failed to fetch user profile:`,e instanceof Error?e.message:String(e))}return{}}function ni(e){let t=e.indexOf(`#`);if(t<0)return null;let n=new URLSearchParams(e.slice(t+1)),r=n.get(`access_token`);return r?{accessToken:r,expiresIn:parseInt(n.get(`expires_in`)??`86400`,10)}:null}var ri={id:`adobe`,name:`Adobe`,description:`Claude via Adobe — login with your Adobe ID`,requiresApiKey:!1,requiresBaseUrl:!J.proxyEndpoint,baseUrlPlaceholder:`https://your-proxy.example.com`,baseUrlDescription:`Anthropic-compatible proxy endpoint`,isOAuth:!0,getModelIds:()=>{let e=e=>{let t={id:e.id,name:e.name??e.id},n=Kr.get(e.id);return n?.api&&(t.api=n.api),n?.context_window!==void 0&&(t.context_window=n.context_window),n?.max_tokens!==void 0&&(t.max_tokens=n.max_tokens),n?.reasoning!==void 0&&(t.reasoning=n.reasoning),n?.input&&(t.input=n.input),t};for(let t of fi.values())if(t.length){let n=t.map(t=>e({id:t.id,name:t.name??t.id}));try{localStorage.setItem(`slicc-adobe-models`,JSON.stringify(n))}catch{}return n}for(let t of Gr.values())if(t.models?.length)return t.models.map(e);try{let e=localStorage.getItem(`slicc-adobe-models`);if(e){let t=JSON.parse(e);if(t.length)return t}}catch{}return[{id:`claude-opus-4-6`,name:`Claude Opus 4.6`}]},onOAuthLogin:async(e,t)=>{let n=await qr(Y()),r=Jr(n),i=Yr(n),a=Xr(n),o=$r?J.extensionRedirectUri??`https://${chrome.runtime.id}.chromiumapp.org/`:J.redirectUri??`${window.location.origin}/auth/callback`,s=$r?void 0:btoa(JSON.stringify({port:parseInt(new URL(window.location.href).port||`5710`,10),path:`/auth/callback`,nonce:crypto.randomUUID()})),c=s?JSON.parse(atob(s)).nonce:null,l=new URLSearchParams({client_id:r,scope:i,response_type:`token`,redirect_uri:o});s&&l.set(`state`,s);let u=await e(`${Qr(a)}/ims/authorize/v2?${l}`);if(!u)return;if(c&&u)try{if(new URL(u).searchParams.get(`nonce`)!==c){console.error(`[adobe] OAuth nonce mismatch — possible CSRF`);return}}catch(e){console.warn(`[adobe] Nonce check skipped (URL parse failed):`,e instanceof Error?e.message:String(e))}let d=ni(u);if(!d){console.error(`[adobe] Could not extract token from redirect URL`);return}let f=await ti(d.accessToken,a);Bi({providerId:`adobe`,accessToken:d.accessToken,tokenExpiresAt:Date.now()+d.expiresIn*1e3,userName:f.name,userAvatar:f.avatar}),await pi().catch(e=>console.warn(`[adobe] Failed to fetch models after login:`,e instanceof Error?e.message:String(e))),t()},onOAuthLogout:async()=>{let e=ei();if(e?.accessToken)try{let t=Gr.values().next().value??{},n=t.clientId||J.clientId,r=Xr(t);if(n){let t=await fetch(`${Qr(r)}/ims/revoke`,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:new URLSearchParams({token:e.accessToken,token_type_hint:`access_token`,client_id:n})});t.ok||console.warn(`[adobe] Token revocation returned ${t.status}, token may still be valid server-side`)}}catch(e){console.warn(`[adobe] Failed to revoke token:`,e instanceof Error?e.message:String(e))}Bi({providerId:`adobe`,accessToken:``})}},ii=null;async function ai(){let e=ei();if(!e?.accessToken)throw Error(`Not logged in to Adobe — please log in first`);if((e.tokenExpiresAt??0)-Date.now()>6e4)return e.accessToken;console.log(`[adobe] Token expired or expiring soon, attempting silent renewal...`);try{let e=await si();if(e)return e}catch(e){console.warn(`[adobe] Silent renewal failed:`,e instanceof Error?e.message:String(e))}let t=ei();if((t?.tokenExpiresAt??0)-Date.now()>0&&t?.accessToken)return t.accessToken;throw Error(`Adobe session expired — please log in again`)}function oi(){let e=ei();return e?.tokenExpiresAt?Date.now()>e.tokenExpiresAt-6e4:!0}async function si(){return ii||(ii=(async()=>{try{let e=await qr(Y()),t=Jr(e),n=Yr(e),r=Xr(e),i=$r?J.extensionRedirectUri??`https://${chrome.runtime.id}.chromiumapp.org/`:J.redirectUri??`${window.location.origin}/auth/callback`,a=$r?void 0:btoa(JSON.stringify({port:parseInt(new URL(window.location.href).port||`5710`,10),path:`/auth/callback`,nonce:crypto.randomUUID()})),o=a?JSON.parse(atob(a)).nonce:null,s=new URLSearchParams({client_id:t,scope:n,response_type:`token`,redirect_uri:i,prompt:`none`});a&&s.set(`state`,a);let c=`${Qr(r)}/ims/authorize/v2?${s}`,{createOAuthLauncher:l}=await d(async()=>{let{createOAuthLauncher:e}=await import(`./oauth-service-CKR4S63v.js`);return{createOAuthLauncher:e}},[]),u=await l()(c);if(!u)return null;if(o&&u)try{if(new URL(u).searchParams.get(`nonce`)!==o)return console.error(`[adobe] OAuth nonce mismatch — possible CSRF`),null}catch(e){console.warn(`[adobe] Nonce check skipped (URL parse failed):`,e instanceof Error?e.message:String(e))}let f=ni(u);if(!f)return null;let p=ei();return Bi({providerId:`adobe`,accessToken:f.accessToken,tokenExpiresAt:Date.now()+f.expiresIn*1e3,userName:p?.userName,userAvatar:p?.userAvatar}),console.log(`[adobe] Token renewed silently`),await pi().catch(e=>console.warn(`[adobe] Failed to refresh models after silent renewal:`,e instanceof Error?e.message:String(e))),f.accessToken}catch(e){return console.warn(`[adobe] Silent renewal error:`,e instanceof Error?e.message:String(e)),null}finally{ii=null}})(),ii)}function ci(e,t){return{type:`error`,reason:`error`,error:{role:`assistant`,content:[],api:`adobe-anthropic`,provider:`adobe`,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`error`,errorMessage:t instanceof Error?t.message:String(t),timestamp:Date.now()}}}var li=(e,t,n={})=>{let r=_();return(async()=>{try{let i=await ai();if(String(e.api).includes(`openai`)){let a=Oe({...e,baseUrl:`${Y()}/v1`,api:`openai-completions`,compat:{...e.compat,supportsStore:!1,supportsDeveloperRole:!1}},t,{...n,apiKey:i});for await(let e of a)r.push(e)}else{let a=me({...e,baseUrl:Y(),api:`anthropic-messages`},t,{...n,apiKey:i});for await(let e of a)r.push(e)}r.end()}catch(t){console.error(`[adobe] Stream error:`,t instanceof Error?t.message:String(t)),r.push(ci(e,t)),r.end()}})(),r},ui=(e,t,n)=>{let r=_();return(async()=>{try{let i=await ai();if(String(e.api).includes(`openai`)){let a=ke({...e,baseUrl:`${Y()}/v1`,api:`openai-completions`,compat:{...e.compat,supportsStore:!1,supportsDeveloperRole:!1}},t,{...n,apiKey:i});for await(let e of a)r.push(e)}else{let a=he({...e,baseUrl:Y(),api:`anthropic-messages`},t,{...n,apiKey:i});for await(let e of a)r.push(e)}r.end()}catch(t){console.error(`[adobe] Stream error:`,t instanceof Error?t.message:String(t)),r.push(ci(e,t)),r.end()}})(),r};async function di(){try{let e=await ai(),t=Y(),n=await fetch(`${t}/v1/models`,{headers:{Authorization:`Bearer ${e}`}});if(n.ok){let e=await n.json();if(e.data?.length){for(let t of e.data){let e={id:t.id,name:t.name};t.api!==void 0&&(e.api=t.api),t.context_window!==void 0&&(e.context_window=t.context_window),t.max_tokens!==void 0&&(e.max_tokens=t.max_tokens),t.reasoning!==void 0&&(e.reasoning=t.reasoning),t.input!==void 0&&(e.input=t.input),Kr.set(t.id,e)}let n=new Map;for(let e of x())try{for(let t of h(e))n.set(t.id,t)}catch{}return e.data.map(e=>{let r=n.get(e.id),i=`adobe-${e.api===`openai`?`openai`:`anthropic`}`;return r?{...r,provider:`adobe`,api:i}:{id:e.id,name:e.name??e.id,provider:`adobe`,api:i,baseUrl:t,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}})}}else console.warn(`[adobe] Proxy /v1/models returned ${n.status}, falling back to Anthropic models`)}catch(e){console.warn(`[adobe] Failed to fetch proxy models:`,e instanceof Error?e.message:String(e))}return h(`anthropic`).map(e=>({...e,provider:`adobe`,api:`adobe-anthropic`}))}var fi=new Map;async function pi(){let e=Y(),t=fi.get(e);if(t)return t;let n=await di();return fi.set(e,n),n}function mi(){T({api:`adobe-anthropic`,stream:li,streamSimple:ui}),T({api:`adobe-openai`,stream:li,streamSimple:ui})}var hi=Object.assign({"/packages/dev-tools/providers.build.json":wr})[`/packages/dev-tools/providers.build.json`]??{include:[`*`],exclude:[]};function gi(e){let{include:t,exclude:n}=hi;return n.includes(`*`)||n.includes(e)?!1:!!(t.includes(`*`)||t.includes(e))}var _i=Object.assign({"./built-in/azure-ai-foundry.ts":Tr,"./built-in/bedrock-camp.ts":Dr}),vi=Object.assign({"/packages/webapp/providers/adobe.ts":Wr}),yi=new Map;for(let[e,t]of Object.entries(_i))t.config&&gi(t.config.id)&&(yi.set(t.config.id,t.config),t.register?.());for(let[e,t]of Object.entries(vi))t.config&&(yi.set(t.config.id,t.config),t.register?.());function bi(e){return yi.get(e)}function xi(){return[...yi.keys()]}var Si=p,Ci=h;function wi(){return typeof chrome<`u`&&!!chrome?.runtime?.id}var Ti=`slicc_accounts`,X=`selected-model`,Ei=[`slicc_provider`,`slicc_api_key`,`slicc_base_url`,`anthropic_api_key`,`api_provider`,`azure_resource`,`bedrock_region`],Di=!1;function Oi(){if(!Di){Di=!0;for(let e of Ei)try{localStorage.removeItem(e)}catch{}}}function ki(){let e=x().filter(gi),t=xi();return[...new Set([...e,...t])]}function Z(e){return bi(e)||{id:e,name:e.split(`-`).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `),description:`${e} provider`,requiresApiKey:!0,requiresBaseUrl:!1}}function Ai(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)}function ji(e){try{if(e===`bedrock-camp`)return Ci(`amazon-bedrock`).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 Pi.error(`Provider getModelIds callback failed`,{providerId:e,error:t instanceof Error?t.message:String(t)}),[]}let r=new Map;for(let e of x())try{for(let t of Ci(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&&Ai(o,s),Ai(o,n),o})}if(t.isOAuth){let n=Ci(`anthropic`),r=`${e}-anthropic`;return n.map(n=>{let i={...n,api:r,provider:e},a=t.modelOverrides?.[n.id];return a&&Ai(i,a),i})}return Ci(e===`azure-ai-foundry`?`anthropic`:e)}catch(t){return Pi.error(`Failed to load models`,{providerId:e,error:t instanceof Error?t.message:String(t)}),[]}}function Mi(e){let t=Q().find(t=>t.providerId===e);if(!t?.accessToken)return null;let n=!!t.tokenExpiresAt&&Date.now()>t.tokenExpiresAt-6e4;return{token:t.accessToken,expiresAt:t.tokenExpiresAt,userName:t.userName,userAvatar:t.userAvatar,expired:n}}var Ni=Object.assign({})[`/packages/webapp/providers.json`]??[],Pi=a(`provider-settings`);function Fi(e=Ni){if(e.length===0||Q().length>0)return;let t=new Set(ki());for(let n of e)if(!(!n.providerId||!n.apiKey)){if(!t.has(n.providerId)){Pi.warn(`Unknown provider "${n.providerId}" in providers.json — skipping`);continue}Ri(n.providerId,n.apiKey,n.baseUrl)}let n=e.find(e=>e.providerId&&e.apiKey&&t.has(e.providerId));n?.model&&!localStorage.getItem(X)&&localStorage.setItem(X,`${n.providerId}:${n.model}`)}function Ii(){let e=Q();if(e.length===0)return[];let t=new Map;for(let n of e){if(t.has(n.providerId))continue;let e=ji(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 Q(){Oi();let e=localStorage.getItem(Ti);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 Li(e){localStorage.setItem(Ti,JSON.stringify(e))}function Ri(e,t,n){let r=Q().filter(t=>t.providerId!==e),i={providerId:e,apiKey:t};n&&(i.baseUrl=n),r.push(i),Li(r)}function zi(e){Li(Q().filter(t=>t.providerId!==e))}function Bi(e){let t=Q().find(t=>t.providerId===e.providerId),n=Q().filter(t=>t.providerId!==e.providerId);n.push({providerId:e.providerId,apiKey:``,accessToken:e.accessToken,refreshToken:e.refreshToken,tokenExpiresAt:e.tokenExpiresAt,userName:e.userName,userAvatar:e.userAvatar,baseUrl:e.baseUrl??t?.baseUrl}),Li(n)}function Vi(e){let t=Q().find(t=>t.providerId===e);return t&&(t.accessToken||t.apiKey)||null}function Hi(e){return Q().find(t=>t.providerId===e)?.baseUrl??null}function Ui(){let e=localStorage.getItem(X)||``,t=e.indexOf(`:`);return t>=0?e.slice(t+1):e}function Wi(e){if(e.includes(`:`))localStorage.setItem(X,e);else{let t=$();localStorage.setItem(X,`${t}:${e}`)}}function Gi(){return localStorage.getItem(X)||``}function $(){let e=Gi(),t=e.indexOf(`:`);if(t>0)return e.slice(0,t);let n=Q();return n.length>0?n[0].providerId:`anthropic`}function Ki(){return Vi($())}function qi(){let e=Q(),t=$(),n=Ui();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 Ji(){let e=JSON.stringify(qi(),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)}function Yi(){localStorage.removeItem(Ti),localStorage.removeItem(X);for(let e of Ei)localStorage.removeItem(e)}function Xi(e){if(!e)return Zi();let t=$(),n=Hi(t);try{let r=Z(t),i=Si(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;if(r.isOAuth){let n=ji(t).find(t=>t.id===e)?.api??`${t}-anthropic`;a={...a,api:n,provider:t}}else t===`bedrock-camp`&&(a={...a,api:`bedrock-camp-converse`,provider:`bedrock-camp`});return n&&(a={...a,baseUrl:n}),a}catch{return Zi()}}function Zi(){let e=$(),t=Ui(),n=Hi(e),r=ji(e),i=t||r[0]?.id||`claude-sonnet-4-0`;try{let t=Z(e),a=t.isOAuth||e===`azure-ai-foundry`?`anthropic`:e===`bedrock-camp`?`amazon-bedrock`:e,o=Si(a,i);if(!o?.id)throw Error(`Model ${i} not found in ${a} registry`);let s=o;if(t.isOAuth){let t=r.find(e=>e.id===i)?.api??`${e}-anthropic`;s={...s,api:t,provider:e}}else e===`bedrock-camp`&&(s={...s,api:`bedrock-camp-converse`,provider:`bedrock-camp`});return n&&(s={...s,baseUrl:n}),s}catch{let e=r.find(e=>e.id===i);return e?n?{...e,baseUrl:n}:e:Si(`anthropic`,`claude-sonnet-4-0`)}}function Qi(e){return e.length<=10?`****`:e.slice(0,4)+`...`+e.slice(-4)}function $i(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 ea={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 ta(e){return new Promise(t=>{let n=localStorage.getItem(Ti)??``,r=document.createElement(`div`);r.className=`dialog-overlay`;let i=document.createElement(`div`);i.className=`dialog`,i.style.cssText=`max-width: 480px; width: 90vw; padding: 32px;`,Q().length>0?a():e?.preferTrayJoin?c():o(),r.appendChild(i),document.body.appendChild(r);function a(){i.innerHTML=``;let e=document.createElement(`div`);e.className=`dialog__title`,e.textContent=`Accounts`,i.appendChild(e);let s=Q(),d=`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(s.length===0){let e=document.createElement(`div`);e.className=`dialog__desc`,e.textContent=`No accounts configured.`,i.appendChild(e)}else{let e=document.createElement(`div`);e.style.cssText=`margin-bottom: 16px;`;for(let t of s){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 s=document.createElement(`div`);s.style.cssText=`font-size: 14px; font-weight: 600; color: var(--s2-content-default);`,s.textContent=n.name,i.appendChild(s);let c=document.createElement(`div`);c.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?c.textContent=t.userName:t.accessToken?c.textContent=`Logged in`:c.textContent=Qi(t.apiKey),t.baseUrl&&(c.textContent+=` • `+t.baseUrl),i.appendChild(c),r.appendChild(i);let l=document.createElement(`div`);l.style.cssText=`display: flex; gap: 4px; margin-left: 12px; flex-shrink: 0;`;let u=document.createElement(`button`);u.style.cssText=d,u.setAttribute(`aria-label`,`Edit account`),u.appendChild($i(ea.pen)),u.addEventListener(`mouseenter`,()=>{u.style.color=`var(--s2-accent)`,u.style.borderColor=`var(--s2-accent)`}),u.addEventListener(`mouseleave`,()=>{u.style.color=`var(--s2-content-secondary)`,u.style.borderColor=`var(--s2-border-subtle)`}),u.addEventListener(`click`,()=>{o(t)}),l.appendChild(u);let f=document.createElement(`button`);f.style.cssText=d,f.setAttribute(`aria-label`,`Remove account`),f.appendChild($i(ea.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`,()=>{zi(t.providerId),a()}),l.appendChild(f),r.appendChild(l),e.appendChild(r)}i.appendChild(e)}let f=document.createElement(`div`);f.style.cssText=`display: flex; gap: 8px;`;let p=document.createElement(`button`);p.className=`dialog__btn`,p.style.flex=`1`,p.textContent=`Add Account`,p.addEventListener(`click`,()=>o()),f.appendChild(p);let m=document.createElement(`button`);m.className=`dialog__btn dialog__btn--secondary`,m.style.flex=`1`,m.textContent=`Export`,m.addEventListener(`click`,()=>Ji()),f.appendChild(m),i.appendChild(f);let h=document.createElement(`hr`);h.style.cssText=`border: none; border-top: 1px solid var(--s2-border-subtle); margin: 16px 0;`,i.appendChild(h);let g=document.createElement(`div`);g.className=`dialog__desc`,g.style.cssText=`font-weight: 600; margin-bottom: 8px;`,g.textContent=`Tray`,i.appendChild(g);let _=u(),v=_.state!==`inactive`,y=l(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)`),i.appendChild(e)}let b=document.createElement(`button`);b.className=`dialog__btn dialog__btn--secondary`,b.textContent=v||y?`Rejoin tray`:`Join a tray`,b.addEventListener(`click`,()=>c()),i.appendChild(b);let x=document.createElement(`hr`);x.style.cssText=`border: none; border-top: 1px solid var(--s2-border-subtle); margin: 16px 0;`,i.appendChild(x);let S=document.createElement(`div`);S.className=`dialog__desc`,S.style.cssText=`font-weight: 600; margin-bottom: 8px;`,S.textContent=`Theme`,i.appendChild(S);let C=document.createElement(`div`);C.setAttribute(`role`,`radiogroup`),C.setAttribute(`aria-label`,`Theme`),C.style.cssText=`display: flex; gap: 0; margin-bottom: 16px; border-radius: var(--s2-radius-default); overflow: hidden; border: 1px solid var(--s2-border-subtle);`;let w=[[`system`,`System`],[`light`,`Light`],[`dark`,`Dark`]],T=[];for(let[e,t]of w){let n=document.createElement(`button`);n.type=`button`,n.setAttribute(`role`,`radio`),n.setAttribute(`aria-checked`,String(e===yr())),n.textContent=t,n.dataset.theme=e,n.style.cssText=`flex: 1; padding: 8px 0; border: none; font-size: 13px; font-weight: 600; cursor: pointer; transition: background var(--s2-transition-default), color var(--s2-transition-default);`,T.push(n),C.appendChild(n)}function E(){let e=getComputedStyle(document.documentElement);for(let t of T){let n=t.dataset.theme===yr();t.setAttribute(`aria-checked`,String(n)),t.style.background=n?e.getPropertyValue(`--s2-accent`).trim():e.getPropertyValue(`--s2-bg-layer-2`).trim(),t.style.color=n?`#fff`:e.getPropertyValue(`--s2-content-secondary`).trim()}}E();for(let e of T)e.addEventListener(`click`,()=>{br(e.dataset.theme),E()});i.appendChild(C);let D=document.createElement(`button`);D.className=`dialog__btn dialog__btn--secondary`,D.style.marginTop=`8px`,D.textContent=`Close`,D.addEventListener(`click`,()=>{r.remove(),t((localStorage.getItem(Ti)??``)!==n)}),i.appendChild(D)}function o(e){i.innerHTML=``;let t=!!e,n=document.createElement(`div`);n.className=`dialog__title`,n.textContent=t?`Edit Account`:`Add Account`,i.appendChild(n);let r=document.createElement(`div`);r.className=`dialog__desc`,r.textContent=`Provider:`,i.appendChild(r);let o=document.createElement(`select`);if(o.className=`dialog__input`,o.style.marginBottom=`8px`,t){let t=Z(e.providerId),n=document.createElement(`option`);n.value=e.providerId,n.textContent=t.name,o.appendChild(n),o.disabled=!0,o.style.opacity=`0.7`}else{let e=ki(),t=new Set(Q().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,o.appendChild(r)}}i.appendChild(o);let s=document.createElement(`div`);s.className=`dialog__desc`,s.style.cssText=`font-size: 12px; color: var(--s2-content-tertiary); margin-bottom: 16px; margin-top: -4px;`,i.appendChild(s);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 f=document.createElement(`div`);f.className=`dialog__desc`,f.style.cssText=`font-size: 12px; color: var(--s2-content-secondary); text-align: center;`,l.appendChild(f),u.addEventListener(`click`,async()=>{let e=o.value;if(!e)return;let t=Z(e);if(!t.onOAuthLogin)return;let n=Q().some(t=>t.providerId===e),r=Hi(e);if(t.requiresBaseUrl&&!v.value.trim()&&!r){f.textContent=`Base URL is required.`,f.style.color=`var(--slicc-cone)`,v.focus();return}t.requiresBaseUrl&&v.value.trim()&&Ri(e,``,v.value.trim()),f.textContent=`Opening login window...`;try{let{createOAuthLauncher:e}=await d(async()=>{let{createOAuthLauncher:e}=await import(`./oauth-service-CKR4S63v.js`);return{createOAuthLauncher:e}},[]),n=e();await t.onOAuthLogin(n,a)}catch(t){if(!n)try{zi(e)}catch{}Pi.error(`OAuth login failed`,{providerId:e,error:t instanceof Error?t.message:String(t)}),f.textContent=`Login failed: ${t instanceof Error?t.message:String(t)}`}}),t&&e.userName&&(f.textContent=`Logged in as ${e.userName}`,u.textContent=`Re-login`),i.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),i.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),i.appendChild(g);let b=document.createElement(`div`);b.style.cssText=`color: var(--slicc-cone); font-size: 12px; margin-bottom: 8px; display: none;`,i.appendChild(b);let x=document.createElement(`button`);x.className=`dialog__btn`,x.textContent=t?`Save`:`Add`;function S(){let e=o.value;if(!e)return;let t=Z(e);s.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}`,x.style.display=`none`):(l.style.display=`none`,m.textContent=`API Key${t.apiKeyEnvVar?` (${t.apiKeyEnvVar})`:``}:`,h.placeholder=t.apiKeyPlaceholder||`API key`,p.style.display=t.requiresApiKey?``:`none`,v.placeholder=t.baseUrlPlaceholder||`https://...`,y.textContent=t.baseUrlDescription||``,g.style.display=t.requiresBaseUrl?``:`none`,x.style.display=``)}o.addEventListener(`change`,()=>{b.style.display=`none`,S()}),S();function C(){let e=o.value;if(!e)return;let t=Z(e);if(t.requiresApiKey&&h.value.trim().length<5){b.textContent=`API key is required (at least 5 characters).`,b.style.display=``,h.focus();return}if(t.requiresBaseUrl&&!v.value.trim()){b.textContent=`Base URL is required for this provider.`,b.style.display=``,v.focus();return}Ri(e,h.value.trim(),v.value.trim()||void 0),a()}x.addEventListener(`click`,C);let w=e=>{e.key===`Enter`&&C()};h.addEventListener(`keydown`,w),v.addEventListener(`keydown`,w),i.appendChild(x);let T=Q().length>0;if(!t&&!T){let e=document.createElement(`button`);e.className=`dialog__btn dialog__btn--secondary`,e.style.marginTop=`8px`,e.textContent=`Join a tray`,e.addEventListener(`click`,()=>{c()}),i.appendChild(e)}else if(T){let e=document.createElement(`button`);e.className=`dialog__btn dialog__btn--secondary`,e.style.marginTop=`8px`,e.textContent=`Back`,e.addEventListener(`click`,()=>{a()}),i.appendChild(e)}requestAnimationFrame(()=>{let e=o.value;if(!e)return;let t=Z(e);t.requiresApiKey?h.focus():t.requiresBaseUrl&&v.focus()})}function c(){i.innerHTML=``;let e=document.createElement(`div`);e.className=`dialog__title`,e.textContent=`Join a tray`,i.appendChild(e);let n=document.createElement(`div`);n.className=`dialog__desc`,n.style.marginBottom=`12px`,n.textContent=`Paste the tray join URL shared by the tray leader. It must include a /join/... capability.`,i.appendChild(n);let a=document.createElement(`div`);a.className=`dialog__desc`,a.textContent=`Tray URL:`,i.appendChild(a);let c=document.createElement(`input`);c.className=`dialog__input`,c.type=`text`,c.autocomplete=`off`,c.spellcheck=!1,c.placeholder=`https://tray.example.com/base/join/tray-123.capability-token`,c.style.marginBottom=`12px`,i.appendChild(c);let l=document.createElement(`div`);l.style.cssText=`color: var(--slicc-cone); font-size: 12px; margin-bottom: 8px; display: none;`,i.appendChild(l);let u=document.createElement(`div`);u.style.cssText=`font-size: 12px; color: var(--s2-content-secondary); margin-bottom: 8px; display: none;`;let d=document.createElement(`button`);d.className=`dialog__btn`,d.textContent=`Join tray`,d.addEventListener(`click`,()=>{let e=s(window.localStorage,c.value);if(!e){l.textContent=`Enter a valid tray join URL with a /join/... capability.`,l.style.display=``,c.focus();return}wi()?chrome.runtime.sendMessage({source:`panel`,payload:{type:`refresh-tray-runtime`}}).catch(()=>{}):window.dispatchEvent(new CustomEvent(`slicc:tray-join`,{detail:{joinUrl:e.joinUrl}})),u.textContent=`Connecting to tray...`,u.style.display=``,u.style.color=`var(--s2-content-secondary)`,setTimeout(()=>{r.remove(),t(!1)},800)}),i.appendChild(d),i.appendChild(u);let f=document.createElement(`button`);f.className=`dialog__btn dialog__btn--secondary`,f.style.marginTop=`8px`,f.textContent=`Back`,f.addEventListener(`click`,()=>{o()}),i.appendChild(f),c.addEventListener(`input`,()=>{l.style.display=`none`}),c.addEventListener(`keydown`,e=>{e.key===`Enter`&&d.click()}),requestAnimationFrame(()=>c.focus())}})}export{In as A,bi as C,gr as D,Cr as E,Qn as O,ta as S,gi as T,zi as _,qi as a,Bi as b,Ki as c,Hi as d,Mi as f,$ as g,Ui as h,Ji as i,ze as j,Bn as k,Vi as l,ji as m,Fi as n,Q as o,Z as p,Yi as r,Ii as s,Ri as t,ki as u,Zi as v,xi as w,Wi as x,Xi as y};
@@ -0,0 +1 @@
1
+ import{f as e,g as t,o as n}from"./provider-settings-DxWipiXF.js";export{n as getAccounts,e as getOAuthAccountInfo,t as getSelectedProvider};
@@ -0,0 +1 @@
1
+ import{C as e,w as t}from"./provider-settings-DxWipiXF.js";export{e as getRegisteredProviderConfig,t as getRegisteredProviderIds};
@@ -0,0 +1 @@
1
+ import{i as e}from"./index-DpmXhFTV.js";export{e as WasmShell};
@@ -0,0 +1 @@
1
+ import{c as e}from"./index-DpmXhFTV.js";export{e as collectThemeCSS};
@@ -5,7 +5,7 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>slicc</title>
7
7
  <link rel="icon" type="image/png" href="/logos/sliccy-color-1scoops-32x32.png" />
8
- <script type="module" crossorigin src="/assets/index-k0aS_HTh.js"></script>
8
+ <script type="module" crossorigin src="/assets/index-DpmXhFTV.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="/assets/chunk-zsgVPwQN.js">
10
10
  <link rel="modulepreload" crossorigin href="/assets/preload-helper-ca-nBW7U.js">
11
11
  <link rel="modulepreload" crossorigin href="/assets/fs-f8JZDPIF.js">
@@ -14,7 +14,7 @@
14
14
  <link rel="modulepreload" crossorigin href="/assets/json-parse-JW3qhabb.js">
15
15
  <link rel="modulepreload" crossorigin href="/assets/logger-B-No_qN_.js">
16
16
  <link rel="modulepreload" crossorigin href="/assets/tray-follower-status-M8dOhnzY.js">
17
- <link rel="modulepreload" crossorigin href="/assets/provider-settings-CPL91pSg.js">
17
+ <link rel="modulepreload" crossorigin href="/assets/provider-settings-DxWipiXF.js">
18
18
  <link rel="modulepreload" crossorigin href="/assets/browser-DHa7-69Q.js">
19
19
  <link rel="modulepreload" crossorigin href="/assets/cdp-bn5Tu_JK.js">
20
20
  <link rel="modulepreload" crossorigin href="/assets/db-CogIG09c.js">
@@ -5,7 +5,7 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>slicc</title>
7
7
  <link rel="icon" type="image/png" href="/logos/sliccy-color-1scoops-32x32.png" />
8
- <script type="module" crossorigin src="/assets/index-k0aS_HTh.js"></script>
8
+ <script type="module" crossorigin src="/assets/index-DpmXhFTV.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="/assets/chunk-zsgVPwQN.js">
10
10
  <link rel="modulepreload" crossorigin href="/assets/preload-helper-ca-nBW7U.js">
11
11
  <link rel="modulepreload" crossorigin href="/assets/fs-f8JZDPIF.js">
@@ -14,7 +14,7 @@
14
14
  <link rel="modulepreload" crossorigin href="/assets/json-parse-JW3qhabb.js">
15
15
  <link rel="modulepreload" crossorigin href="/assets/logger-B-No_qN_.js">
16
16
  <link rel="modulepreload" crossorigin href="/assets/tray-follower-status-M8dOhnzY.js">
17
- <link rel="modulepreload" crossorigin href="/assets/provider-settings-CPL91pSg.js">
17
+ <link rel="modulepreload" crossorigin href="/assets/provider-settings-DxWipiXF.js">
18
18
  <link rel="modulepreload" crossorigin href="/assets/browser-DHa7-69Q.js">
19
19
  <link rel="modulepreload" crossorigin href="/assets/cdp-bn5Tu_JK.js">
20
20
  <link rel="modulepreload" crossorigin href="/assets/db-CogIG09c.js">
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sliccy",
3
- "version": "1.29.0",
3
+ "version": "1.30.0",
4
4
  "description": "Browser-based coding agent with thin CLI server",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -68,7 +68,7 @@
68
68
  "lint-staged": "16.4.0",
69
69
  "prettier": "3.8.1",
70
70
  "semantic-release": "25.0.3",
71
- "typescript": "^5.7.3",
71
+ "typescript": "^6.0.0",
72
72
  "typescript-eslint": "8.57.2",
73
73
  "vite": "8.0.3",
74
74
  "vitest": "4.1.1"
@@ -1 +0,0 @@
1
- import{r as e}from"./index-k0aS_HTh.js";export{e as getLickManager};
@@ -1 +0,0 @@
1
- import{f as e,g as t,o as n}from"./provider-settings-CPL91pSg.js";export{n as getAccounts,e as getOAuthAccountInfo,t as getSelectedProvider};
@@ -1 +0,0 @@
1
- import{C as e,w as t}from"./provider-settings-CPL91pSg.js";export{e as getRegisteredProviderConfig,t as getRegisteredProviderIds};
@@ -1 +0,0 @@
1
- import{i as e}from"./index-k0aS_HTh.js";export{e as WasmShell};
@@ -1 +0,0 @@
1
- import{c as e}from"./index-k0aS_HTh.js";export{e as collectThemeCSS};