sliccy 2.41.3 → 2.41.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-DEWuHFse.js → adobe-BsSm3jFi.js} +1 -1
- package/dist/ui/assets/{adobe-CH2L4W6h.js → adobe-CXSEcJ7K.js} +1 -1
- package/dist/ui/assets/{agent-bridge-zA0Ev9gp.js → agent-bridge-BlJXkod_.js} +1 -1
- package/dist/ui/assets/{agent-message-to-chat-DTeEu8-L.js → agent-message-to-chat-MNM38dyt.js} +1 -1
- package/dist/ui/assets/{anthropic-rJPW2O12.js → anthropic-D0T8mqRV.js} +1 -1
- package/dist/ui/assets/{anthropic-C2TXpozA.js → anthropic-DIK0AGND.js} +1 -1
- package/dist/ui/assets/{azure-openai-Bp-0Xcsq.js → azure-openai-DiTytjhJ.js} +1 -1
- package/dist/ui/assets/{azure-openai-KAoRKaJ2.js → azure-openai-DojHdJL3.js} +1 -1
- package/dist/ui/assets/{azure-openai-responses-DD7oqs8R.js → azure-openai-responses-C3mV0HRP.js} +1 -1
- package/dist/ui/assets/{azure-openai-responses-D6_PN55T.js → azure-openai-responses-CV1ipjUS.js} +1 -1
- package/dist/ui/assets/{bedrock-camp-BUaVLUkX.js → bedrock-camp-CSnbcnRX.js} +2 -2
- package/dist/ui/assets/{bedrock-camp-BdP76xIG.js → bedrock-camp-CkDNhlzI.js} +3 -3
- package/dist/ui/assets/cost-command-HWF_AGaW.js +1 -0
- package/dist/ui/assets/{es-C_ffrbst.js → es-Bu6eKDug.js} +1 -1
- package/dist/ui/assets/{fs-C24mGi62.js → fs-DLmF36ib.js} +3 -3
- package/dist/ui/assets/{fs-DNQsNm4m.js → fs-gdBGOI77.js} +2 -2
- package/dist/ui/assets/{github-BNgNrxNK.js → github-B32rSqUy.js} +2 -2
- package/dist/ui/assets/{github-BNbefD1y.js → github-BQrJLgkA.js} +1 -1
- package/dist/ui/assets/{google-DIN3PdVg.js → google-Cbh4PPo4.js} +1 -1
- package/dist/ui/assets/{google-w6hFUWTs.js → google-O7ym9XvO.js} +1 -1
- package/dist/ui/assets/{index-DgpEf1ai.js → index-9RNwBuQi.js} +153 -153
- package/dist/ui/assets/{kernel-worker-CTDGZQ-9.js → kernel-worker-D5nK6-Lp.js} +7 -7
- package/dist/ui/assets/{local-llm-CrY4zo6D.js → local-llm-D3sFAL4U.js} +1 -1
- package/dist/ui/assets/{local-llm-DypPzJOJ.js → local-llm-DLpX9b2N.js} +1 -1
- package/dist/ui/assets/{mistral-C7VnXhNV.js → mistral-BYAsX48J.js} +1 -1
- package/dist/ui/assets/{mistral-CpPS-t-f.js → mistral-C0WEyWP1.js} +1 -1
- package/dist/ui/assets/{mount-UPc-Yzt_.js → mount-5yZEk140.js} +1 -1
- package/dist/ui/assets/{mount-D5v-EQOi.js → mount-CYLV7YdV.js} +2 -2
- package/dist/ui/assets/{nuke-command-Dz3yTV_Q.js → nuke-command-DZ_jreqt.js} +1 -1
- package/dist/ui/assets/{offscreen-client-D-03EtPp.js → offscreen-client-D6Tnw-Q6.js} +1 -1
- package/dist/ui/assets/{onboarding-orchestrator-DYgO_F5N.js → onboarding-orchestrator-BSkXArrf.js} +1 -1
- package/dist/ui/assets/{openai-codex-responses-0QAdRT8o.js → openai-codex-responses-BXWvnlPi.js} +1 -1
- package/dist/ui/assets/{openai-codex-responses-BVWxiojY.js → openai-codex-responses-Dp-5SEuz.js} +1 -1
- package/dist/ui/assets/{openai-completions-CXOhvu4T.js → openai-completions-BE9W0d4w.js} +1 -1
- package/dist/ui/assets/{openai-completions-AkqWeeEZ.js → openai-completions-D2C4y3qd.js} +1 -1
- package/dist/ui/assets/{openai-responses-BUlnD83Q.js → openai-responses-B_9yL_Y1.js} +1 -1
- package/dist/ui/assets/{openai-responses-BFwC5JqN.js → openai-responses-BvAlkAlM.js} +1 -1
- package/dist/ui/assets/{openai-responses-shared-B9id-zQc.js → openai-responses-shared-Cn97lSlK.js} +1 -1
- package/dist/ui/assets/{openai-responses-shared-B6jGECcG.js → openai-responses-shared-RmEhlV31.js} +1 -1
- package/dist/ui/assets/provider-settings-CNuleEei.js +2 -0
- package/dist/ui/assets/{provider-settings-h-kRNJ35.js → provider-settings-oSgrKsb-.js} +1 -1
- package/dist/ui/assets/{providers-lxjVkr6c.js → providers-BXn6VB-n.js} +1 -1
- package/dist/ui/assets/{spawn-AxN2wGU7.js → spawn-Cz9T1Juk.js} +1 -1
- package/dist/ui/assets/tray-follower-status-DmK3Afse.js +1 -0
- package/dist/ui/assets/{upgrade-detection-BlY-hwQ2.js → upgrade-detection-DPUv129B.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-u41z5zYF.js +0 -1
- package/dist/ui/assets/provider-settings-BR2V82gY.js +0 -2
- package/dist/ui/assets/tray-follower-status-BrSKMPaE.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as e,c as t,i as n,n as r,s as i}from"./simple-options-B0cR4giT.js";import{c as a,l as o}from"./index-
|
|
1
|
+
import{a as e,c as t,i as n,n as r,s as i}from"./simple-options-B0cR4giT.js";import{c as a,l as o}from"./index-9RNwBuQi.js";import{t as s}from"./headers-CeeP1wvy.js";import{t as c}from"./sanitize-unicode-DANurEy1.js";import{i as l,n as u,r as d,t as f}from"./github-copilot-headers-DLK82thn.js";import{n as p}from"./openai-NzrumIkM.js";function m(e){for(let t of e)if(t.role===`toolResult`||t.role===`assistant`&&t.content.some(e=>e.type===`toolCall`))return!0;return!1}function h(e){return e.type===`text`}function g(e){return e.type===`thinking`}function _(e){return e.type===`toolCall`}function v(e){return e.type===`image`}function y(e){return e||(typeof process<`u`&&{}.PI_CACHE_RETENTION===`long`?`long`:`short`)}var b=(t,n,r)=>{let i=new e;return(async()=>{let e={role:`assistant`,content:[],api:t.api,provider:t.provider,model:t.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 c=r?.apiKey||o(t.provider)||``,l=L(t),u=y(r?.cacheRetention),d=u===`none`?void 0:r?.sessionId,f=S(t,n,c,r?.headers,d,l),p=C(t,n,r,l,u),m=await r?.onPayload?.(p,t);m!==void 0&&(p=m);let h={...r?.signal?{signal:r.signal}:{},...r?.timeoutMs===void 0?{}:{timeout:r.timeoutMs},...r?.maxRetries===void 0?{}:{maxRetries:r.maxRetries}},{data:g,response:_}=await f.chat.completions.create(p,h).withResponse();await r?.onResponse?.({status:_.status,headers:s(_.headers)},t),i.push({type:`start`,partial:e});let v=null,b=null,x=new Map,w=new Map,T=e.content,E=e=>T.indexOf(e),D=t=>{let n=E(t);n!==-1&&(t.type===`text`?i.push({type:`text_end`,contentIndex:n,content:t.text,partial:e}):t.type===`thinking`?i.push({type:`thinking_end`,contentIndex:n,content:t.thinking,partial:e}):t.type===`toolCall`&&(t.arguments=a(t.partialArgs),delete t.partialArgs,delete t.streamIndex,i.push({type:`toolcall_end`,contentIndex:n,toolCall:t,partial:e})))},O=()=>(v||(v={type:`text`,text:``},T.push(v),i.push({type:`text_start`,contentIndex:E(v),partial:e})),v),k=t=>(b||(b={type:`thinking`,thinking:``,thinkingSignature:t},T.push(b),i.push({type:`thinking_start`,contentIndex:E(b),partial:e})),b),A=t=>{let n=typeof t.index==`number`?t.index:void 0,r=n===void 0?void 0:x.get(n);return!r&&t.id&&(r=w.get(t.id)),r||(r={type:`toolCall`,id:t.id||``,name:t.function?.name||``,arguments:{},partialArgs:``,streamIndex:n},n!==void 0&&x.set(n,r),t.id&&w.set(t.id,r),T.push(r),i.push({type:`toolcall_start`,contentIndex:E(r),partial:e})),n!==void 0&&r.streamIndex===void 0&&(r.streamIndex=n,x.set(n,r)),t.id&&w.set(t.id,r),r};for await(let n of g){if(!n||typeof n!=`object`)continue;e.responseId||=n.id,typeof n.model==`string`&&n.model.length>0&&n.model!==t.id&&(e.responseModel||=n.model),n.usage&&(e.usage=P(n.usage,t));let r=Array.isArray(n.choices)?n.choices[0]:void 0;if(r){if(!n.usage&&r.usage&&(e.usage=P(r.usage,t)),r.finish_reason){let t=F(r.finish_reason);e.stopReason=t.stopReason,t.errorMessage&&(e.errorMessage=t.errorMessage)}if(r.delta){if(r.delta.content!==null&&r.delta.content!==void 0&&r.delta.content.length>0){let t=O();t.text+=r.delta.content,i.push({type:`text_delta`,contentIndex:E(t),delta:r.delta.content,partial:e})}let t=[`reasoning_content`,`reasoning`,`reasoning_text`],n=r.delta,o=null;for(let e of t){let t=n[e];if(typeof t==`string`&&t.length>0){o=e;break}}if(o){let t=n[o];if(typeof t==`string`&&t.length>0){let n=k(o);n.thinking+=t,i.push({type:`thinking_delta`,contentIndex:E(n),delta:t,partial:e})}}if(r?.delta?.tool_calls)for(let t of r.delta.tool_calls){let n=A(t);!n.id&&t.id&&(n.id=t.id,w.set(t.id,n)),!n.name&&t.function?.name&&(n.name=t.function.name);let r=``;t.function?.arguments&&(r=t.function.arguments,n.partialArgs=(n.partialArgs??``)+t.function.arguments,n.arguments=a(n.partialArgs)),i.push({type:`toolcall_delta`,contentIndex:E(n),delta:r,partial:e})}let s=r.delta.reasoning_details;if(s&&Array.isArray(s)){for(let t of s)if(t.type===`reasoning.encrypted`&&t.id&&t.data){let n=e.content.find(e=>e.type===`toolCall`&&e.id===t.id);n&&(n.thoughtSignature=JSON.stringify(t))}}}}}for(let e of T)D(e);if(r?.signal?.aborted||e.stopReason===`aborted`)throw Error(`Request was aborted`);if(e.stopReason===`error`)throw Error(e.errorMessage||`Provider returned an error stop reason`);i.push({type:`done`,reason:e.stopReason,message:e}),i.end()}catch(t){for(let t of e.content)delete t.index,delete t.partialArgs,delete t.streamIndex;e.stopReason=r?.signal?.aborted?`aborted`:`error`,e.errorMessage=t instanceof Error?t.message:JSON.stringify(t);let n=t?.error?.metadata?.raw;n&&(e.errorMessage+=`\n${n}`),i.push({type:`error`,reason:e.stopReason,error:e}),i.end()}})(),i},x=(e,n,i)=>{let a=i?.apiKey||o(e.provider);if(!a)throw Error(`No API key for provider: ${e.provider}`);let s=r(e,i,a),c=i?.reasoning?t(e,i.reasoning):void 0,l=c===`off`?void 0:c,u=i?.toolChoice;return b(e,n,{...s,reasoningEffort:l,toolChoice:u})};function S(e,t,n,r,i,a=L(e)){if(!n){if(!{}.OPENAI_API_KEY)throw Error(`OpenAI API key is required. Set OPENAI_API_KEY environment variable or pass it as an argument.`);n={}.OPENAI_API_KEY}let o={...e.headers};if(e.provider===`github-copilot`){let e=u(t.messages),n=f({messages:t.messages,hasImages:e});Object.assign(o,n)}i&&a.sendSessionAffinityHeaders&&(o.session_id=i,o[`x-client-request-id`]=i,o[`x-session-affinity`]=i),r&&Object.assign(o,r);let s=e.provider===`cloudflare-ai-gateway`?{...o,Authorization:o.Authorization??null,"cf-aig-authorization":`Bearer ${n}`}:o;return new p({apiKey:n,baseURL:d(e.provider)?l(e):e.baseUrl,dangerouslyAllowBrowser:!0,defaultHeaders:s})}function C(e,t,n,r=L(e),i=y(n?.cacheRetention)){let a=M(e,t,r),o=w(r,i),s={model:e.id,messages:a,stream:!0,prompt_cache_key:e.baseUrl.includes(`api.openai.com`)&&i!==`none`||i===`long`&&r.supportsLongCacheRetention?n?.sessionId:void 0,prompt_cache_retention:i===`long`&&r.supportsLongCacheRetention?`24h`:void 0};if(r.supportsUsageInStreaming!==!1&&(s.stream_options={include_usage:!0}),r.supportsStore&&(s.store=!1),n?.maxTokens&&(r.maxTokensField===`max_tokens`?s.max_tokens=n.maxTokens:s.max_completion_tokens=n.maxTokens),n?.temperature!==void 0&&(s.temperature=n.temperature),t.tools&&t.tools.length>0?(s.tools=N(t.tools,r),r.zaiToolStream&&(s.tool_stream=!0)):m(t.messages)&&(s.tools=[]),o&&T(a,s.tools,o),n?.toolChoice&&(s.tool_choice=n.toolChoice),r.thinkingFormat===`zai`&&e.reasoning)s.enable_thinking=!!n?.reasoningEffort;else if(r.thinkingFormat===`qwen`&&e.reasoning)s.enable_thinking=!!n?.reasoningEffort;else if(r.thinkingFormat===`qwen-chat-template`&&e.reasoning)s.chat_template_kwargs={enable_thinking:!!n?.reasoningEffort,preserve_thinking:!0};else if(r.thinkingFormat===`deepseek`&&e.reasoning)s.thinking={type:n?.reasoningEffort?`enabled`:`disabled`},n?.reasoningEffort&&(s.reasoning_effort=e.thinkingLevelMap?.[n.reasoningEffort]??n.reasoningEffort);else if(r.thinkingFormat===`openrouter`&&e.reasoning){let t=s;n?.reasoningEffort?t.reasoning={effort:e.thinkingLevelMap?.[n.reasoningEffort]??n.reasoningEffort}:e.thinkingLevelMap?.off!==null&&(t.reasoning={effort:e.thinkingLevelMap?.off??`none`})}else if(n?.reasoningEffort&&e.reasoning&&r.supportsReasoningEffort)s.reasoning_effort=e.thinkingLevelMap?.[n.reasoningEffort]??n.reasoningEffort;else if(!n?.reasoningEffort&&e.reasoning&&r.supportsReasoningEffort){let t=e.thinkingLevelMap?.off;typeof t==`string`&&(s.reasoning_effort=t)}if(e.baseUrl.includes(`openrouter.ai`)&&e.compat?.openRouterRouting&&(s.provider=e.compat.openRouterRouting),e.baseUrl.includes(`ai-gateway.vercel.sh`)&&e.compat?.vercelGatewayRouting){let t=e.compat.vercelGatewayRouting;if(t.only||t.order){let e={};t.only&&(e.only=t.only),t.order&&(e.order=t.order),s.providerOptions={gateway:e}}}return s}function w(e,t){if(e.cacheControlFormat!==`anthropic`||t===`none`)return;let n=t===`long`&&e.supportsLongCacheRetention?`1h`:void 0;return{type:`ephemeral`,...n?{ttl:n}:{}}}function T(e,t,n){E(e,n),O(t,n),D(e,n)}function E(e,t){for(let n of e)if(n.role===`system`||n.role===`developer`){k(n,t);return}}function D(e,t){for(let n=e.length-1;n>=0;n--){let r=e[n];if((r.role===`user`||r.role===`assistant`)&&A(r,t))return}}function O(e,t){if(!e||e.length===0)return;let n=e[e.length-1];n.cache_control=t}function k(e,t){return j(e,t)}function A(e,t){return e.role===`user`||e.role===`assistant`?j(e,t):!1}function j(e,t){let n=e.content;if(typeof n==`string`)return n.length===0?!1:(e.content=[{type:`text`,text:n,cache_control:t}],!0);if(!Array.isArray(n))return!1;for(let e=n.length-1;e>=0;e--){let r=n[e];if(r?.type===`text`){let e=r;return e.cache_control=t,!0}}return!1}function M(e,t,r){let i=[],a=t=>{if(t.includes(`|`)){let[e]=t.split(`|`);return e.replace(/[^a-zA-Z0-9_-]/g,`_`).slice(0,40)}return e.provider===`openai`&&t.length>40?t.slice(0,40):t},o=n(t.messages,e,e=>a(e));if(t.systemPrompt){let n=e.reasoning&&r.supportsDeveloperRole?`developer`:`system`;i.push({role:n,content:c(t.systemPrompt)})}let s=null;for(let t=0;t<o.length;t++){let n=o[t];if(r.requiresAssistantAfterToolResult&&s===`toolResult`&&n.role===`user`&&i.push({role:`assistant`,content:`I have processed the tool results.`}),n.role===`user`)if(typeof n.content==`string`)i.push({role:`user`,content:c(n.content)});else{let e=n.content.map(e=>e.type===`text`?{type:`text`,text:c(e.text)}:{type:`image_url`,image_url:{url:`data:${e.mimeType};base64,${e.data}`}});if(e.length===0)continue;i.push({role:`user`,content:e})}else if(n.role===`assistant`){let t={role:`assistant`,content:r.requiresAssistantAfterToolResult?``:null},a=n.content.filter(h).filter(e=>e.text.trim().length>0).map(e=>({type:`text`,text:c(e.text)})),o=a.map(e=>e.text).join(``),s=n.content.filter(g).filter(e=>e.thinking.trim().length>0);if(s.length>0)if(r.requiresThinkingAsText)t.content=[{type:`text`,text:s.map(e=>c(e.thinking)).join(`
|
|
2
2
|
|
|
3
3
|
`)},...a];else{o.length>0&&(t.content=o);let e=s[0].thinkingSignature;e&&e.length>0&&(t[e]=s.map(e=>e.thinking).join(`
|
|
4
4
|
`))}else o.length>0&&(t.content=o);let l=n.content.filter(_);if(l.length>0){t.tool_calls=l.map(e=>({id:e.id,type:`function`,function:{name:e.name,arguments:JSON.stringify(e.arguments)}}));let e=l.filter(e=>e.thoughtSignature).map(e=>{try{return JSON.parse(e.thoughtSignature)}catch{return null}}).filter(Boolean);e.length>0&&(t.reasoning_details=e)}r.requiresReasoningContentOnAssistantMessages&&e.reasoning&&t.reasoning_content===void 0&&(t.reasoning_content=``);let u=t.content;if(!(u!=null&&u.length>0)&&!t.tool_calls)continue;i.push(t)}else if(n.role===`toolResult`){let n=[],a=t;for(;a<o.length&&o[a].role===`toolResult`;a++){let t=o[a],s=t.content.filter(h).map(e=>e.text).join(`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e,c as t,n}from"./simple-options-B0cR4giT.js";import{l as r}from"./index-
|
|
1
|
+
import{a as e,c as t,n}from"./simple-options-B0cR4giT.js";import{l as r}from"./index-9RNwBuQi.js";import{t as i}from"./headers-CeeP1wvy.js";import{i as a,n as o,r as s,t as c}from"./github-copilot-headers-DLK82thn.js";import{n as l}from"./openai-NzrumIkM.js";import{n as u,r as d,t as f}from"./openai-responses-shared-Cn97lSlK.js";var p=new Set([`openai`,`openai-codex`,`opencode`]);function m(e){return e||(typeof process<`u`&&{}.PI_CACHE_RETENTION===`long`?`long`:`short`)}function h(e){return{sendSessionIdHeader:e.compat?.sendSessionIdHeader??!0,supportsLongCacheRetention:e.compat?.supportsLongCacheRetention??!0}}function g(e,t){return t===`long`&&e.supportsLongCacheRetention?`24h`:void 0}var _=(t,n,a)=>{let o=new e;return(async()=>{let e={role:`assistant`,content:[],api:t.api,provider:t.provider,model:t.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 s=a?.apiKey||r(t.provider)||``,c=m(a?.cacheRetention)===`none`?void 0:a?.sessionId,l=y(t,n,s,a?.headers,c),u=b(t,n,a),f=await a?.onPayload?.(u,t);f!==void 0&&(u=f);let p={...a?.signal?{signal:a.signal}:{},...a?.timeoutMs===void 0?{}:{timeout:a.timeoutMs},...a?.maxRetries===void 0?{}:{maxRetries:a.maxRetries}},{data:h,response:g}=await l.responses.create(u,p).withResponse();if(await a?.onResponse?.({status:g.status,headers:i(g.headers)},t),o.push({type:`start`,partial:e}),await d(h,e,o,t,{serviceTier:a?.serviceTier,applyServiceTierPricing:(e,n)=>S(e,n,t)}),a?.signal?.aborted)throw Error(`Request was aborted`);if(e.stopReason===`aborted`||e.stopReason===`error`)throw Error(`An unknown error occurred`);o.push({type:`done`,reason:e.stopReason,message:e}),o.end()}catch(t){for(let t of e.content)delete t.index,delete t.partialJson;e.stopReason=a?.signal?.aborted?`aborted`:`error`,e.errorMessage=t instanceof Error?t.message:JSON.stringify(t),o.push({type:`error`,reason:e.stopReason,error:e}),o.end()}})(),o},v=(e,i,a)=>{let o=a?.apiKey||r(e.provider);if(!o)throw Error(`No API key for provider: ${e.provider}`);let s=n(e,a,o),c=a?.reasoning?t(e,a.reasoning):void 0,l=c===`off`?void 0:c;return _(e,i,{...s,reasoningEffort:l})};function y(e,t,n,r,i){if(!n){if(!{}.OPENAI_API_KEY)throw Error(`OpenAI API key is required. Set OPENAI_API_KEY environment variable or pass it as an argument.`);n={}.OPENAI_API_KEY}let u=h(e),d={...e.headers};if(e.provider===`github-copilot`){let e=o(t.messages),n=c({messages:t.messages,hasImages:e});Object.assign(d,n)}i&&(u.sendSessionIdHeader&&(d.session_id=i),d[`x-client-request-id`]=i),r&&Object.assign(d,r);let f=e.provider===`cloudflare-ai-gateway`?{...d,Authorization:d.Authorization??null,"cf-aig-authorization":`Bearer ${n}`}:d;return new l({apiKey:n,baseURL:s(e.provider)?a(e):e.baseUrl,dangerouslyAllowBrowser:!0,defaultHeaders:f})}function b(e,t,n){let r=f(e,t,p),i=m(n?.cacheRetention),a=h(e),o={model:e.id,input:r,stream:!0,prompt_cache_key:i===`none`?void 0:n?.sessionId,prompt_cache_retention:g(a,i),store:!1};return n?.maxTokens&&(o.max_output_tokens=n?.maxTokens),n?.temperature!==void 0&&(o.temperature=n?.temperature),n?.serviceTier!==void 0&&(o.service_tier=n.serviceTier),t.tools&&t.tools.length>0&&(o.tools=u(t.tools)),e.reasoning&&(n?.reasoningEffort||n?.reasoningSummary?(o.reasoning={effort:n?.reasoningEffort?e.thinkingLevelMap?.[n.reasoningEffort]??n.reasoningEffort:`medium`,summary:n?.reasoningSummary||`auto`},o.include=[`reasoning.encrypted_content`]):e.provider!==`github-copilot`&&e.thinkingLevelMap?.off!==null&&(o.reasoning={effort:e.thinkingLevelMap?.off??`none`})),o}function x(e,t){switch(t){case`flex`:return .5;case`priority`:return e.id===`gpt-5.5`?2.5:2;default:return 1}}function S(e,t,n){let r=x(n,t);r!==1&&(e.cost.input*=r,e.cost.output*=r,e.cost.cacheRead*=r,e.cost.cacheWrite*=r,e.cost.total=e.cost.input+e.cost.output+e.cost.cacheRead+e.cost.cacheWrite)}export{_ as streamOpenAIResponses,v as streamSimpleOpenAIResponses};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e,c as t,r as n}from"./transform-messages-BdxHijhT.js";import{n as r}from"./openai-BHyrBS3D.js";import{t as i}from"./headers-1z24dq00.js";import{i as a,n as o,r as s,t as c}from"./github-copilot-headers-CnBwk0a7.js";import{r as l}from"./kernel-worker-
|
|
1
|
+
import{a as e,c as t,r as n}from"./transform-messages-BdxHijhT.js";import{n as r}from"./openai-BHyrBS3D.js";import{t as i}from"./headers-1z24dq00.js";import{i as a,n as o,r as s,t as c}from"./github-copilot-headers-CnBwk0a7.js";import{r as l}from"./kernel-worker-D5nK6-Lp.js";import{n as u,r as d,t as f}from"./openai-responses-shared-RmEhlV31.js";const p=new Set([`openai`,`openai-codex`,`opencode`]);function m(e){return e||(typeof process<`u`&&{}.PI_CACHE_RETENTION===`long`?`long`:`short`)}function h(e){return{sendSessionIdHeader:e.compat?.sendSessionIdHeader??!0,supportsLongCacheRetention:e.compat?.supportsLongCacheRetention??!0}}function g(e,t){return t===`long`&&e.supportsLongCacheRetention?`24h`:void 0}const _=(t,n,r)=>{let a=new e;return(async()=>{let e={role:`assistant`,content:[],api:t.api,provider:t.provider,model:t.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 o=r?.apiKey||l(t.provider)||``,s=m(r?.cacheRetention)===`none`?void 0:r?.sessionId,c=y(t,n,o,r?.headers,s),u=b(t,n,r),f=await r?.onPayload?.(u,t);f!==void 0&&(u=f);let p={...r?.signal?{signal:r.signal}:{},...r?.timeoutMs===void 0?{}:{timeout:r.timeoutMs},...r?.maxRetries===void 0?{}:{maxRetries:r.maxRetries}},{data:h,response:g}=await c.responses.create(u,p).withResponse();if(await r?.onResponse?.({status:g.status,headers:i(g.headers)},t),a.push({type:`start`,partial:e}),await d(h,e,a,t,{serviceTier:r?.serviceTier,applyServiceTierPricing:(e,n)=>S(e,n,t)}),r?.signal?.aborted)throw Error(`Request was aborted`);if(e.stopReason===`aborted`||e.stopReason===`error`)throw Error(`An unknown error occurred`);a.push({type:`done`,reason:e.stopReason,message:e}),a.end()}catch(t){for(let t of e.content)delete t.index,delete t.partialJson;e.stopReason=r?.signal?.aborted?`aborted`:`error`,e.errorMessage=t instanceof Error?t.message:JSON.stringify(t),a.push({type:`error`,reason:e.stopReason,error:e}),a.end()}})(),a},v=(e,r,i)=>{let a=i?.apiKey||l(e.provider);if(!a)throw Error(`No API key for provider: ${e.provider}`);let o=n(e,i,a),s=i?.reasoning?t(e,i.reasoning):void 0,c=s===`off`?void 0:s;return _(e,r,{...o,reasoningEffort:c})};function y(e,t,n,i,l){if(!n){if(!{}.OPENAI_API_KEY)throw Error(`OpenAI API key is required. Set OPENAI_API_KEY environment variable or pass it as an argument.`);n={}.OPENAI_API_KEY}let u=h(e),d={...e.headers};if(e.provider===`github-copilot`){let e=o(t.messages),n=c({messages:t.messages,hasImages:e});Object.assign(d,n)}l&&(u.sendSessionIdHeader&&(d.session_id=l),d[`x-client-request-id`]=l),i&&Object.assign(d,i);let f=e.provider===`cloudflare-ai-gateway`?{...d,Authorization:d.Authorization??null,"cf-aig-authorization":`Bearer ${n}`}:d;return new r({apiKey:n,baseURL:s(e.provider)?a(e):e.baseUrl,dangerouslyAllowBrowser:!0,defaultHeaders:f})}function b(e,t,n){let r=f(e,t,p),i=m(n?.cacheRetention),a=h(e),o={model:e.id,input:r,stream:!0,prompt_cache_key:i===`none`?void 0:n?.sessionId,prompt_cache_retention:g(a,i),store:!1};return n?.maxTokens&&(o.max_output_tokens=n?.maxTokens),n?.temperature!==void 0&&(o.temperature=n?.temperature),n?.serviceTier!==void 0&&(o.service_tier=n.serviceTier),t.tools&&t.tools.length>0&&(o.tools=u(t.tools)),e.reasoning&&(n?.reasoningEffort||n?.reasoningSummary?(o.reasoning={effort:n?.reasoningEffort?e.thinkingLevelMap?.[n.reasoningEffort]??n.reasoningEffort:`medium`,summary:n?.reasoningSummary||`auto`},o.include=[`reasoning.encrypted_content`]):e.provider!==`github-copilot`&&e.thinkingLevelMap?.off!==null&&(o.reasoning={effort:e.thinkingLevelMap?.off??`none`})),o}function x(e,t){switch(t){case`flex`:return .5;case`priority`:return e.id===`gpt-5.5`?2.5:2;default:return 1}}function S(e,t,n){let r=x(n,t);r!==1&&(e.cost.input*=r,e.cost.output*=r,e.cost.cacheRead*=r,e.cost.cacheWrite*=r,e.cost.total=e.cost.input+e.cost.output+e.cost.cacheRead+e.cost.cacheWrite)}export{_ as streamOpenAIResponses,v as streamSimpleOpenAIResponses};
|
package/dist/ui/assets/{openai-responses-shared-B9id-zQc.js → openai-responses-shared-Cn97lSlK.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{i as e,s as t}from"./simple-options-B0cR4giT.js";import{c as n}from"./index-
|
|
1
|
+
import{i as e,s as t}from"./simple-options-B0cR4giT.js";import{c as n}from"./index-9RNwBuQi.js";import{t as r}from"./sanitize-unicode-DANurEy1.js";import{t as i}from"./hash-BwzabXYv.js";function a(e,t){let n={v:1,id:e};return t&&(n.phase=t),JSON.stringify(n)}function o(e){if(e){if(e.startsWith(`{`))try{let t=JSON.parse(e);if(t.v===1&&typeof t.id==`string`)return t.phase===`commentary`||t.phase===`final_answer`?{id:t.id,phase:t.phase}:{id:t.id}}catch{}return{id:e}}}function s(t,n,a,s){let c=[],l=e=>{let t=e.replace(/[^a-zA-Z0-9_-]/g,`_`);return(t.length>64?t.slice(0,64):t).replace(/_+$/,``)},u=e=>{let t=`fc_${i(e)}`;return t.length>64?t.slice(0,64):t},d=e(n.messages,t,(e,n,r)=>{if(!a.has(t.provider)||!e.includes(`|`))return l(e);let[i,o]=e.split(`|`),s=l(i),c=r.provider!==t.provider||r.api!==t.api?u(o):l(o);return c.startsWith(`fc_`)||(c=l(`fc_${c}`)),`${s}|${c}`});if((s?.includeSystemPrompt??!0)&&n.systemPrompt){let e=t.reasoning?`developer`:`system`;c.push({role:e,content:r(n.systemPrompt)})}let f=0;for(let e of d){if(e.role===`user`)if(typeof e.content==`string`)c.push({role:`user`,content:[{type:`input_text`,text:r(e.content)}]});else{let t=e.content.map(e=>e.type===`text`?{type:`input_text`,text:r(e.text)}:{type:`input_image`,detail:`auto`,image_url:`data:${e.mimeType};base64,${e.data}`});if(t.length===0)continue;c.push({role:`user`,content:t})}else if(e.role===`assistant`){let n=[],a=e,s=a.model!==t.id&&a.provider===t.provider&&a.api===t.api;for(let t of e.content)if(t.type===`thinking`){if(t.thinkingSignature){let e=JSON.parse(t.thinkingSignature);n.push(e)}}else if(t.type===`text`){let e=t,a=o(e.textSignature),s=a?.id;s?s.length>64&&(s=`msg_${i(s)}`):s=`msg_${f}`,n.push({type:`message`,role:`assistant`,content:[{type:`output_text`,text:r(e.text),annotations:[]}],status:`completed`,id:s,phase:a?.phase})}else if(t.type===`toolCall`){let e=t,[r,i]=e.id.split(`|`),a=i;s&&a?.startsWith(`fc_`)&&(a=void 0),n.push({type:`function_call`,id:a,call_id:r,name:e.name,arguments:JSON.stringify(e.arguments)})}if(n.length===0)continue;c.push(...n)}else if(e.role===`toolResult`){let n=e.content.filter(e=>e.type===`text`).map(e=>e.text).join(`
|
|
2
2
|
`),i=e.content.some(e=>e.type===`image`),a=n.length>0,[o]=e.toolCallId.split(`|`),s;if(i&&t.input.includes(`image`)){let t=[];a&&t.push({type:`input_text`,text:r(n)});for(let n of e.content)n.type===`image`&&t.push({type:`input_image`,detail:`auto`,image_url:`data:${n.mimeType};base64,${n.data}`});s=t}else s=r(a?n:`(see attached image)`);c.push({type:`function_call_output`,call_id:o,output:s})}f++}return c}function c(e,t){let n=t?.strict===void 0?!1:t.strict;return e.map(e=>({type:`function`,name:e.name,description:e.description,parameters:e.parameters,strict:n}))}async function l(e,r,i,o,s){let c=null,l=null,d=r.content,f=()=>d.length-1;for await(let d of e)if(d.type===`response.created`)r.responseId=d.response.id;else if(d.type===`response.output_item.added`){let e=d.item;e.type===`reasoning`?(c=e,l={type:`thinking`,thinking:``},r.content.push(l),i.push({type:`thinking_start`,contentIndex:f(),partial:r})):e.type===`message`?(c=e,l={type:`text`,text:``},r.content.push(l),i.push({type:`text_start`,contentIndex:f(),partial:r})):e.type===`function_call`&&(c=e,l={type:`toolCall`,id:`${e.call_id}|${e.id}`,name:e.name,arguments:{},partialJson:e.arguments||``},r.content.push(l),i.push({type:`toolcall_start`,contentIndex:f(),partial:r}))}else if(d.type===`response.reasoning_summary_part.added`)c&&c.type===`reasoning`&&(c.summary=c.summary||[],c.summary.push(d.part));else if(d.type===`response.reasoning_summary_text.delta`){if(c?.type===`reasoning`&&l?.type===`thinking`){c.summary=c.summary||[];let e=c.summary[c.summary.length-1];e&&(l.thinking+=d.delta,e.text+=d.delta,i.push({type:`thinking_delta`,contentIndex:f(),delta:d.delta,partial:r}))}}else if(d.type===`response.reasoning_summary_part.done`){if(c?.type===`reasoning`&&l?.type===`thinking`){c.summary=c.summary||[];let e=c.summary[c.summary.length-1];e&&(l.thinking+=`
|
|
3
3
|
|
|
4
4
|
`,e.text+=`
|
package/dist/ui/assets/{openai-responses-shared-B6jGECcG.js → openai-responses-shared-RmEhlV31.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{s as e,t}from"./transform-messages-BdxHijhT.js";import{t as n}from"./sanitize-unicode-BzRhXPLL.js";import{n as r}from"./kernel-worker-
|
|
1
|
+
import{s as e,t}from"./transform-messages-BdxHijhT.js";import{t as n}from"./sanitize-unicode-BzRhXPLL.js";import{n as r}from"./kernel-worker-D5nK6-Lp.js";import{t as i}from"./hash-BwzabXYv.js";function a(e,t){let n={v:1,id:e};return t&&(n.phase=t),JSON.stringify(n)}function o(e){if(e){if(e.startsWith(`{`))try{let t=JSON.parse(e);if(t.v===1&&typeof t.id==`string`)return t.phase===`commentary`||t.phase===`final_answer`?{id:t.id,phase:t.phase}:{id:t.id}}catch{}return{id:e}}}function s(e,r,a,s){let c=[],l=e=>{let t=e.replace(/[^a-zA-Z0-9_-]/g,`_`);return(t.length>64?t.slice(0,64):t).replace(/_+$/,``)},u=e=>{let t=`fc_${i(e)}`;return t.length>64?t.slice(0,64):t},d=t(r.messages,e,(t,n,r)=>{if(!a.has(e.provider)||!t.includes(`|`))return l(t);let[i,o]=t.split(`|`),s=l(i),c=r.provider!==e.provider||r.api!==e.api?u(o):l(o);return c.startsWith(`fc_`)||(c=l(`fc_${c}`)),`${s}|${c}`});if((s?.includeSystemPrompt??!0)&&r.systemPrompt){let t=e.reasoning?`developer`:`system`;c.push({role:t,content:n(r.systemPrompt)})}let f=0;for(let t of d){if(t.role===`user`)if(typeof t.content==`string`)c.push({role:`user`,content:[{type:`input_text`,text:n(t.content)}]});else{let e=t.content.map(e=>e.type===`text`?{type:`input_text`,text:n(e.text)}:{type:`input_image`,detail:`auto`,image_url:`data:${e.mimeType};base64,${e.data}`});if(e.length===0)continue;c.push({role:`user`,content:e})}else if(t.role===`assistant`){let r=[],a=t,s=a.model!==e.id&&a.provider===e.provider&&a.api===e.api;for(let e of t.content)if(e.type===`thinking`){if(e.thinkingSignature){let t=JSON.parse(e.thinkingSignature);r.push(t)}}else if(e.type===`text`){let t=e,a=o(t.textSignature),s=a?.id;s?s.length>64&&(s=`msg_${i(s)}`):s=`msg_${f}`,r.push({type:`message`,role:`assistant`,content:[{type:`output_text`,text:n(t.text),annotations:[]}],status:`completed`,id:s,phase:a?.phase})}else if(e.type===`toolCall`){let t=e,[n,i]=t.id.split(`|`),a=i;s&&a?.startsWith(`fc_`)&&(a=void 0),r.push({type:`function_call`,id:a,call_id:n,name:t.name,arguments:JSON.stringify(t.arguments)})}if(r.length===0)continue;c.push(...r)}else if(t.role===`toolResult`){let r=t.content.filter(e=>e.type===`text`).map(e=>e.text).join(`
|
|
2
2
|
`),i=t.content.some(e=>e.type===`image`),a=r.length>0,[o]=t.toolCallId.split(`|`),s;if(i&&e.input.includes(`image`)){let e=[];a&&e.push({type:`input_text`,text:n(r)});for(let n of t.content)n.type===`image`&&e.push({type:`input_image`,detail:`auto`,image_url:`data:${n.mimeType};base64,${n.data}`});s=e}else s=n(a?r:`(see attached image)`);c.push({type:`function_call_output`,call_id:o,output:s})}f++}return c}function c(e,t){let n=t?.strict===void 0?!1:t.strict;return e.map(e=>({type:`function`,name:e.name,description:e.description,parameters:e.parameters,strict:n}))}async function l(t,n,i,o,s){let c=null,l=null,d=n.content,f=()=>d.length-1;for await(let d of t)if(d.type===`response.created`)n.responseId=d.response.id;else if(d.type===`response.output_item.added`){let e=d.item;e.type===`reasoning`?(c=e,l={type:`thinking`,thinking:``},n.content.push(l),i.push({type:`thinking_start`,contentIndex:f(),partial:n})):e.type===`message`?(c=e,l={type:`text`,text:``},n.content.push(l),i.push({type:`text_start`,contentIndex:f(),partial:n})):e.type===`function_call`&&(c=e,l={type:`toolCall`,id:`${e.call_id}|${e.id}`,name:e.name,arguments:{},partialJson:e.arguments||``},n.content.push(l),i.push({type:`toolcall_start`,contentIndex:f(),partial:n}))}else if(d.type===`response.reasoning_summary_part.added`)c&&c.type===`reasoning`&&(c.summary=c.summary||[],c.summary.push(d.part));else if(d.type===`response.reasoning_summary_text.delta`){if(c?.type===`reasoning`&&l?.type===`thinking`){c.summary=c.summary||[];let e=c.summary[c.summary.length-1];e&&(l.thinking+=d.delta,e.text+=d.delta,i.push({type:`thinking_delta`,contentIndex:f(),delta:d.delta,partial:n}))}}else if(d.type===`response.reasoning_summary_part.done`){if(c?.type===`reasoning`&&l?.type===`thinking`){c.summary=c.summary||[];let e=c.summary[c.summary.length-1];e&&(l.thinking+=`
|
|
3
3
|
|
|
4
4
|
`,e.text+=`
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/magick-wasm-BnlzD3um.js","assets/preload-helper-ca-nBW7U.js","assets/azure-openai-DiTytjhJ.js","assets/bedrock-camp-CkDNhlzI.js","assets/chunk-jRWAZmH_.js","assets/index-9RNwBuQi.js","assets/simple-options-B0cR4giT.js","assets/fs-DLmF36ib.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-CYLV7YdV.js","assets/index-RVLUy-Qx.css","assets/openai-NzrumIkM.js","assets/local-llm-DLpX9b2N.js","assets/openai-completions-D2C4y3qd.js","assets/github-copilot-headers-DLK82thn.js","assets/headers-CeeP1wvy.js","assets/sanitize-unicode-DANurEy1.js","assets/adobe-CXSEcJ7K.js","assets/github-B32rSqUy.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-CkDNhlzI.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{o as f}from"./index-9RNwBuQi.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-BnlzD3um.js`),__vite__mapDeps([0,1]));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-B1O-wE_V.js`),[]),"./built-in/azure-openai.ts":()=>n(()=>import(`./azure-openai-DiTytjhJ.js`),__vite__mapDeps([2,3,4,5,1,6,7,8,9,10,11,12,13,14,15])),"./built-in/bedrock-camp.ts":()=>n(()=>import(`./bedrock-camp-CkDNhlzI.js`).then(e=>e.n),__vite__mapDeps([3,4,5,1,6,7,8,9,10,11,12,13,14])),"./built-in/local-llm.ts":()=>n(()=>import(`./local-llm-DLpX9b2N.js`),__vite__mapDeps([16,3,4,5,1,6,7,8,9,10,11,12,13,14,17,18,19,20,15]))}),O=Object.assign({"/packages/webapp/providers/adobe.ts":()=>n(()=>import(`./adobe-CXSEcJ7K.js`),__vite__mapDeps([21,1,3,4,5,6,7,8,9,10,11,12,13,14])),"/packages/webapp/providers/github.ts":()=>n(()=>import(`./github-B32rSqUy.js`),__vite__mapDeps([22,1,3,4,5,6,7,8,9,10,11,12,13,14]))}),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()]}var ee=e({addAccount:()=>J,applyProviderDefaults:()=>W,clearAllSettings:()=>ve,describeInvalidJoinUrl:()=>w,downloadProviders:()=>_e,exportProviders:()=>ge,getAccounts:()=>K,getAllAvailableModels:()=>se,getApiKey:()=>he,getApiKeyForProvider:()=>ue,getApiVersionForProvider:()=>fe,getAvailableProviders:()=>z,getBaseUrlForProvider:()=>X,getDeploymentForProvider:()=>de,getProviderConfig:()=>B,getProviderModels:()=>H,getSelectedModelId:()=>Z,getSelectedProvider:()=>Q,isModelHiddenFromPicker:()=>G,removeAccount:()=>Y,resolveCurrentModel:()=>$,resolveModelById:()=>ye,saveOAuthAccount:()=>ce,setSelectedModelId:()=>pe,showProviderSettings:()=>Ce}),P=s,F=c;function I(){return typeof chrome<`u`&&!!chrome?.runtime?.id}var L=`slicc_accounts`,R=`selected-model`,te=[`slicc_provider`,`slicc_api_key`,`slicc_base_url`,`anthropic_api_key`,`api_provider`,`azure_resource`,`bedrock_region`],ne=!1;function re(){if(!ne){ne=!0;for(let e of te)try{localStorage.removeItem(e)}catch{}}}function z(){let e=o().filter(E),t=N();return[...new Set([...e,...t])]}function B(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 V(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 H(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=B(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&&V(o,s),V(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&&V(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)}),[]}}var ie=Object.assign({})[`/packages/webapp/providers.json`]??[],U=t(`provider-settings`);function W(e=ie){if(e.length===0||K().length>0)return;let t=new Set(z());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(R)&&localStorage.setItem(R,`${n.providerId}:${n.model}`)}var ae=[/haiku/i];function G(e){return ae.some(t=>t.test(e))}function oe(e){return e.filter(e=>!G(e.id))}function se(){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=oe(H(n.providerId));if(e.length===0)continue;let r=B(n.providerId),i={providerId:n.providerId,providerName:r.name,models:e};t.set(n.providerId,i)}return[...t.values()]}function K(){re();let e=localStorage.getItem(L);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 q(e){localStorage.setItem(L,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)}function Y(e){q(K().filter(t=>t.providerId!==e));let t=localStorage.getItem(R)??``,n=t.indexOf(`:`);n>0&&t.slice(0,n)===e&&localStorage.removeItem(R)}function ce(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)}var le=`local`;function ue(e){let t=K().find(t=>t.providerId===e);return t?t.accessToken||t.apiKey||(B(e).optionalApiKey?le:null):null}function X(e){return K().find(t=>t.providerId===e)?.baseUrl??null}function de(e){return K().find(t=>t.providerId===e)?.deployment??null}function fe(e){return K().find(t=>t.providerId===e)?.apiVersion??null}function Z(){let e=localStorage.getItem(R)||``,t=e.indexOf(`:`);return t>=0?e.slice(t+1):e}function pe(e){if(e.includes(`:`))localStorage.setItem(R,e);else{let t=Q();localStorage.setItem(R,`${t}:${e}`)}}function me(){return localStorage.getItem(R)||``}function Q(){let e=me(),t=e.indexOf(`:`);if(t>0)return e.slice(0,t);let n=K();return n.length>0?n[0].providerId:`anthropic`}function he(){return ue(Q())}function ge(){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 _e(){let e=JSON.stringify(ge(),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 ve(){localStorage.removeItem(L),localStorage.removeItem(R);for(let e of te)localStorage.removeItem(e)}function ye(e){if(!e)return $();let t=Q(),n=X(t);try{let r=B(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=H(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=H(e),i=B(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=B(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 be(e){return e.length<=10?`****`:e.slice(0,4)+`...`+e.slice(-4)}function xe(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 Se={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 Ce(e){return f(`button`),new Promise(t=>{let r=localStorage.getItem(L)??``,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=B(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=be(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(xe(Se.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(xe(Se.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`,()=>{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`,()=>_e()),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(L)??``)!==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=B(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=z(),t=new Set(K().map(e=>e.providerId)),n=[...e].sort((e,t)=>{let n=B(e).name,r=B(t).name;return n.localeCompare(r)});for(let e of n){if(t.has(e))continue;let n=B(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=B(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-CfTUWB9P.js`);return{createOAuthLauncher:e}},[]),r=e();await t.onOAuthLogin(r,o)}catch(t){if(!r)try{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=B(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=B(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=B(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(I()){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(I()){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{x as C,y as S,m as T,ce as _,he as a,j as b,de as c,Z as d,Q as f,ye as g,$ as h,se as i,B as l,Y as m,ve as n,fe as o,ee as p,K as r,X as s,W as t,H as u,pe as v,p as w,S as x,Ce as y};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{r as e}from"./chunk-jRWAZmH_.js";import{t}from"./logger-BHrAkMIS.js";import{a as n,c as r,i,r as a,s as o,t as s}from"./bedrock-camp-BUaVLUkX.js";import{d as c,l,u}from"./transform-messages-BdxHijhT.js";import{a as d,n as f,t as p}from"./providers-lxjVkr6c.js";import{f as m,p as h}from"./kernel-worker-CTDGZQ-9.js";const ee=`slicc.trayWorkerBaseUrl`,te=`https://www.sliccy.ai`;let ne={state:`inactive`,joinUrl:null,trayId:null,error:null,lastPingTime:null,reconnectAttempts:0,attachAttempts:0,lastAttachCode:null,connectingSince:null,lastError:null};function re(){return{...ne}}const g=new Set;function ie(e){return g.add(e),()=>{g.delete(e)}}async function ae(e,t,n,r,i,a){let o=[...e],s={...t,messages:[...t.messages,...e]};await r({type:`agent_start`}),await r({type:`turn_start`});for(let t of e)await r({type:`message_start`,message:t}),await r({type:`message_end`,message:t});return await _(s,o,n,i,r,a),o}async function oe(e,t,n,r,i){if(e.messages.length===0)throw Error(`Cannot continue: no messages in context`);if(e.messages[e.messages.length-1].role===`assistant`)throw Error(`Cannot continue from message role: assistant`);let a=[],o={...e};return await n({type:`agent_start`}),await n({type:`turn_start`}),await _(o,a,t,r,n,i),a}async function _(e,t,n,r,i,a){let o=!0,s=await n.getSteeringMessages?.()||[];for(;;){let c=!0;for(;c||s.length>0;){if(o?o=!1:await i({type:`turn_start`}),s.length>0){for(let n of s)await i({type:`message_start`,message:n}),await i({type:`message_end`,message:n}),e.messages.push(n),t.push(n);s=[]}let l=await se(e,n,r,i,a);if(t.push(l),l.stopReason===`error`||l.stopReason===`aborted`){await i({type:`turn_end`,message:l,toolResults:[]}),await i({type:`agent_end`,messages:t});return}let u=l.content.filter(e=>e.type===`toolCall`),d=[];if(c=!1,u.length>0){let a=await ce(e,l,n,r,i);d.push(...a.messages),c=!a.terminate;for(let n of d)e.messages.push(n),t.push(n)}if(await i({type:`turn_end`,message:l,toolResults:d}),await n.shouldStopAfterTurn?.({message:l,toolResults:d,context:e,newMessages:t})){await i({type:`agent_end`,messages:t});return}s=await n.getSteeringMessages?.()||[]}let l=await n.getFollowUpMessages?.()||[];if(l.length>0){s=l;continue}break}await i({type:`agent_end`,messages:t})}async function se(e,t,n,i,a){let o=e.messages;t.transformContext&&(o=await t.transformContext(o,n));let s=await t.convertToLlm(o),c={systemPrompt:e.systemPrompt,messages:s,tools:e.tools},l=a||r,u=(t.getApiKey?await t.getApiKey(t.model.provider):void 0)||t.apiKey,d=await l(t.model,c,{...t,apiKey:u,signal:n}),f=null,p=!1;for await(let t of d)switch(t.type){case`start`:f=t.partial,e.messages.push(f),p=!0,await i({type:`message_start`,message:{...f}});break;case`text_start`:case`text_delta`:case`text_end`:case`thinking_start`:case`thinking_delta`:case`thinking_end`:case`toolcall_start`:case`toolcall_delta`:case`toolcall_end`:f&&(f=t.partial,e.messages[e.messages.length-1]=f,await i({type:`message_update`,assistantMessageEvent:t,message:{...f}}));break;case`done`:case`error`:{let t=await d.result();return p?e.messages[e.messages.length-1]=t:e.messages.push(t),p||await i({type:`message_start`,message:{...t}}),await i({type:`message_end`,message:t}),t}}let m=await d.result();return p?e.messages[e.messages.length-1]=m:(e.messages.push(m),await i({type:`message_start`,message:{...m}})),await i({type:`message_end`,message:m}),m}async function ce(e,t,n,r,i){let a=t.content.filter(e=>e.type===`toolCall`),o=a.some(t=>e.tools?.find(e=>e.name===t.name)?.executionMode===`sequential`);return n.toolExecution===`sequential`||o?le(e,t,a,n,r,i):ue(e,t,a,n,r,i)}async function le(e,t,n,r,i,a){let o=[],s=[];for(let c of n){await a({type:`tool_execution_start`,toolCallId:c.id,toolName:c.name,args:c.arguments});let n=await fe(e,t,c,r,i),l;l=n.kind===`immediate`?{toolCall:c,result:n.result,isError:n.isError}:await b(e,t,n,await y(n,i,a),r,i),await S(l,a);let u=C(l);await w(u,a),o.push(l),s.push(u)}return{messages:s,terminate:v(o)}}async function ue(e,t,n,r,i,a){let o=[];for(let s of n){await a({type:`tool_execution_start`,toolCallId:s.id,toolName:s.name,args:s.arguments});let n=await fe(e,t,s,r,i);if(n.kind===`immediate`){let e={toolCall:s,result:n.result,isError:n.isError};await S(e,a),o.push(e);continue}o.push(async()=>{let o=await b(e,t,n,await y(n,i,a),r,i);return await S(o,a),o})}let s=await Promise.all(o.map(e=>typeof e==`function`?e():Promise.resolve(e))),c=[];for(let e of s){let t=C(e);await w(t,a),c.push(t)}return{messages:c,terminate:v(s)}}function v(e){return e.length>0&&e.every(e=>e.result.terminate===!0)}function de(e,t){if(!e.prepareArguments)return t;let n=e.prepareArguments(t.arguments);return n===t.arguments?t:{...t,arguments:n}}async function fe(e,t,r,i,a){let o=e.tools?.find(e=>e.name===r.name);if(!o)return{kind:`immediate`,result:x(`Tool ${r.name} not found`),isError:!0};try{let s=n(o,de(o,r));if(i.beforeToolCall){let n=await i.beforeToolCall({assistantMessage:t,toolCall:r,args:s,context:e},a);if(n?.block)return{kind:`immediate`,result:x(n.reason||`Tool execution was blocked`),isError:!0}}return{kind:`prepared`,toolCall:r,tool:o,args:s}}catch(e){return{kind:`immediate`,result:x(e instanceof Error?e.message:String(e)),isError:!0}}}async function y(e,t,n){let r=[];try{let i=await e.tool.execute(e.toolCall.id,e.args,t,t=>{r.push(Promise.resolve(n({type:`tool_execution_update`,toolCallId:e.toolCall.id,toolName:e.toolCall.name,args:e.toolCall.arguments,partialResult:t})))});return await Promise.all(r),{result:i,isError:!1}}catch(e){return await Promise.all(r),{result:x(e instanceof Error?e.message:String(e)),isError:!0}}}async function b(e,t,n,r,i,a){let o=r.result,s=r.isError;if(i.afterToolCall)try{let r=await i.afterToolCall({assistantMessage:t,toolCall:n.toolCall,args:n.args,result:o,isError:s,context:e},a);r&&(o={content:r.content??o.content,details:r.details??o.details,terminate:r.terminate??o.terminate},s=r.isError??s)}catch(e){o=x(e instanceof Error?e.message:String(e)),s=!0}return{toolCall:n.toolCall,result:o,isError:s}}function x(e){return{content:[{type:`text`,text:e}],details:{}}}async function S(e,t){await t({type:`tool_execution_end`,toolCallId:e.toolCall.id,toolName:e.toolCall.name,result:e.result,isError:e.isError})}function C(e){return{role:`toolResult`,toolCallId:e.toolCall.id,toolName:e.toolCall.name,content:e.result.content,details:e.result.details,isError:e.isError,timestamp:Date.now()}}async function w(e,t){await t({type:`message_start`,message:e}),await t({type:`message_end`,message:e})}function pe(e){return e.filter(e=>e.role===`user`||e.role===`assistant`||e.role===`toolResult`)}const me={input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},he={id:`unknown`,name:`unknown`,api:`unknown`,provider:`unknown`,baseUrl:``,reasoning:!1,input:[],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:0,maxTokens:0};function ge(e){let t=e?.tools?.slice()??[],n=e?.messages?.slice()??[];return{systemPrompt:e?.systemPrompt??``,model:e?.model??he,thinkingLevel:e?.thinkingLevel??`off`,get tools(){return t},set tools(e){t=e.slice()},get messages(){return n},set messages(e){n=e.slice()},isStreaming:!1,streamingMessage:void 0,pendingToolCalls:new Set,errorMessage:void 0}}var T=class{mode;messages=[];constructor(e){this.mode=e}enqueue(e){this.messages.push(e)}hasItems(){return this.messages.length>0}drain(){if(this.mode===`all`){let e=this.messages.slice();return this.messages=[],e}let e=this.messages[0];return e?(this.messages=this.messages.slice(1),[e]):[]}clear(){this.messages=[]}},_e=class{_state;listeners=new Set;steeringQueue;followUpQueue;convertToLlm;transformContext;streamFn;getApiKey;onPayload;onResponse;beforeToolCall;afterToolCall;activeRun;sessionId;thinkingBudgets;transport;maxRetryDelayMs;toolExecution;constructor(e={}){this._state=ge(e.initialState),this.convertToLlm=e.convertToLlm??pe,this.transformContext=e.transformContext,this.streamFn=e.streamFn??r,this.getApiKey=e.getApiKey,this.onPayload=e.onPayload,this.onResponse=e.onResponse,this.beforeToolCall=e.beforeToolCall,this.afterToolCall=e.afterToolCall,this.steeringQueue=new T(e.steeringMode??`one-at-a-time`),this.followUpQueue=new T(e.followUpMode??`one-at-a-time`),this.sessionId=e.sessionId,this.thinkingBudgets=e.thinkingBudgets,this.transport=e.transport??`auto`,this.maxRetryDelayMs=e.maxRetryDelayMs,this.toolExecution=e.toolExecution??`parallel`}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}get state(){return this._state}set steeringMode(e){this.steeringQueue.mode=e}get steeringMode(){return this.steeringQueue.mode}set followUpMode(e){this.followUpQueue.mode=e}get followUpMode(){return this.followUpQueue.mode}steer(e){this.steeringQueue.enqueue(e)}followUp(e){this.followUpQueue.enqueue(e)}clearSteeringQueue(){this.steeringQueue.clear()}clearFollowUpQueue(){this.followUpQueue.clear()}clearAllQueues(){this.clearSteeringQueue(),this.clearFollowUpQueue()}hasQueuedMessages(){return this.steeringQueue.hasItems()||this.followUpQueue.hasItems()}get signal(){return this.activeRun?.abortController.signal}abort(){this.activeRun?.abortController.abort()}waitForIdle(){return this.activeRun?.promise??Promise.resolve()}reset(){this._state.messages=[],this._state.isStreaming=!1,this._state.streamingMessage=void 0,this._state.pendingToolCalls=new Set,this._state.errorMessage=void 0,this.clearFollowUpQueue(),this.clearSteeringQueue()}async prompt(e,t){if(this.activeRun)throw Error(`Agent is already processing a prompt. Use steer() or followUp() to queue messages, or wait for completion.`);let n=this.normalizePromptInput(e,t);await this.runPromptMessages(n)}async continue(){if(this.activeRun)throw Error(`Agent is already processing. Wait for completion before continuing.`);let e=this._state.messages[this._state.messages.length-1];if(!e)throw Error(`No messages to continue from`);if(e.role===`assistant`){let e=this.steeringQueue.drain();if(e.length>0){await this.runPromptMessages(e,{skipInitialSteeringPoll:!0});return}let t=this.followUpQueue.drain();if(t.length>0){await this.runPromptMessages(t);return}throw Error(`Cannot continue from message role: assistant`)}await this.runContinuation()}normalizePromptInput(e,t){if(Array.isArray(e))return e;if(typeof e!=`string`)return[e];let n=[{type:`text`,text:e}];return t&&t.length>0&&n.push(...t),[{role:`user`,content:n,timestamp:Date.now()}]}async runPromptMessages(e,t={}){await this.runWithLifecycle(async n=>{await ae(e,this.createContextSnapshot(),this.createLoopConfig(t),e=>this.processEvents(e),n,this.streamFn)})}async runContinuation(){await this.runWithLifecycle(async e=>{await oe(this.createContextSnapshot(),this.createLoopConfig(),e=>this.processEvents(e),e,this.streamFn)})}createContextSnapshot(){return{systemPrompt:this._state.systemPrompt,messages:this._state.messages.slice(),tools:this._state.tools.slice()}}createLoopConfig(e={}){let t=e.skipInitialSteeringPoll===!0;return{model:this._state.model,reasoning:this._state.thinkingLevel===`off`?void 0:this._state.thinkingLevel,sessionId:this.sessionId,onPayload:this.onPayload,onResponse:this.onResponse,transport:this.transport,thinkingBudgets:this.thinkingBudgets,maxRetryDelayMs:this.maxRetryDelayMs,toolExecution:this.toolExecution,beforeToolCall:this.beforeToolCall,afterToolCall:this.afterToolCall,convertToLlm:this.convertToLlm,transformContext:this.transformContext,getApiKey:this.getApiKey,getSteeringMessages:async()=>t?(t=!1,[]):this.steeringQueue.drain(),getFollowUpMessages:async()=>this.followUpQueue.drain()}}async runWithLifecycle(e){if(this.activeRun)throw Error(`Agent is already processing.`);let t=new AbortController,n=()=>{},r=new Promise(e=>{n=e});this.activeRun={promise:r,resolve:n,abortController:t},this._state.isStreaming=!0,this._state.streamingMessage=void 0,this._state.errorMessage=void 0;try{await e(t.signal)}catch(e){await this.handleRunFailure(e,t.signal.aborted)}finally{this.finishRun()}}async handleRunFailure(e,t){let n={role:`assistant`,content:[{type:`text`,text:``}],api:this._state.model.api,provider:this._state.model.provider,model:this._state.model.id,usage:me,stopReason:t?`aborted`:`error`,errorMessage:e instanceof Error?e.message:String(e),timestamp:Date.now()};this._state.messages.push(n),this._state.errorMessage=n.errorMessage,await this.processEvents({type:`agent_end`,messages:[n]})}finishRun(){this._state.isStreaming=!1,this._state.streamingMessage=void 0,this._state.pendingToolCalls=new Set,this.activeRun?.resolve(),this.activeRun=void 0}async processEvents(e){switch(e.type){case`message_start`:this._state.streamingMessage=e.message;break;case`message_update`:this._state.streamingMessage=e.message;break;case`message_end`:this._state.streamingMessage=void 0,this._state.messages.push(e.message);break;case`tool_execution_start`:{let t=new Set(this._state.pendingToolCalls);t.add(e.toolCallId),this._state.pendingToolCalls=t;break}case`tool_execution_end`:{let t=new Set(this._state.pendingToolCalls);t.delete(e.toolCallId),this._state.pendingToolCalls=t;break}case`turn_end`:e.message.role===`assistant`&&e.message.errorMessage&&(this._state.errorMessage=e.message.errorMessage);break;case`agent_end`:this._state.streamingMessage=void 0;break}let t=this.activeRun?.abortController.signal;if(!t)throw Error(`Agent listener invoked outside active run`);for(let n of this.listeners)await n(e,t)}};const E=`sessions`;function ve(){return new Promise((e,t)=>{let n=indexedDB.open(`agent-sessions`,1);n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(E)||e.createObjectStore(E,{keyPath:`id`})},n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)})}var ye=class{dbPromise=null;getDB(){return this.dbPromise||=ve(),this.dbPromise}async save(e){let t=await this.getDB();return new Promise((n,r)=>{let i=t.transaction(E,`readwrite`).objectStore(E).put(e);i.onsuccess=()=>n(),i.onerror=()=>r(i.error)})}async load(e){let t=await this.getDB();return new Promise((n,r)=>{let i=t.transaction(E,`readonly`).objectStore(E).get(e);i.onsuccess=()=>n(i.result??null),i.onerror=()=>r(i.error)})}async delete(e){let t=await this.getDB();return new Promise((n,r)=>{let i=t.transaction(E,`readwrite`).objectStore(E).delete(e);i.onsuccess=()=>n(),i.onerror=()=>r(i.error)})}async list(){let e=await this.getDB();return new Promise((t,n)=>{let r=e.transaction(E,`readonly`).objectStore(E).getAll();r.onsuccess=()=>{t((r.result??[]).map(e=>({id:e.id,updatedAt:e.updatedAt})))},r.onerror=()=>n(r.error)})}async clearAll(){let e=await this.getDB();return new Promise((t,n)=>{let r=e.transaction(E,`readwrite`).objectStore(E).clear();r.onsuccess=()=>t(),r.onerror=()=>n(r.error)})}static newId(){return`session-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}static createSession(e,t){let n=Date.now();return{id:e,messages:[],config:t,createdAt:n,updatedAt:n}}static updateMessages(e,t){return{...e,messages:t,updatedAt:Date.now()}}};const D=t(`image-processor`),O=3932160,be=new Set([`image/jpeg`,`image/png`,`image/gif`,`image/webp`]);function xe(e){return be.has(e)}function Se(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 Ce(e){if(!xe(e.mimeType))return D.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,n=Se(e.data,e.mimeType);if(!(t>5242880||n!==null&&(n.width>8e3||n.height>8e3)||n!==null&&Math.max(n.width,n.height)>1568))return e;D.info(`Image needs processing`,{base64Size:t,dimensions:n?`${n.width}x${n.height}`:`unknown`,reason:t>5242880?`size`:`dimensions`});let r,i;try{let e=await import(`./magick-wasm-2iwpLX2j.js`).then(e=>e.n);r=e.getMagick,i=e.MIME_TO_MAGICK_FORMAT}catch(e){return D.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 a;try{a=await r()}catch(e){return D.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 o={data:null,mime:e.mimeType};if(await a.ImageMagick.read(r,async t=>{let n=t.width,r=t.height,a=Math.max(n,r);if(a>1568){let e=1568/a,i=Math.round(n*e),o=Math.round(r*e);t.resize(i,o),D.info(`Resized image`,{from:`${n}x${r}`,to:`${i}x${o}`})}let s=i[e.mimeType]||`JPEG`;t.write(s,e=>{o.data=new Uint8Array(e)}),o.data&&o.data.length>O&&s!==`JPEG`?(D.info(`Still over 5MB, compressing to JPEG q80`),t.quality=80,t.write(`JPEG`,e=>{o.data=new Uint8Array(e)}),o.mime=`image/jpeg`):o.data&&o.data.length>O&&(D.info(`Still over 5MB as JPEG, reducing quality to 60`),t.quality=60,t.write(`JPEG`,e=>{o.data=new Uint8Array(e)}))}),!o.data)return D.warn(`ImageMagick produced no output`),{type:`text`,text:`[Image removed: could not be processed (empty output from resize)]`};if(o.data.length>O)return D.warn(`Image still over 5MB after resize+compress`,{size:o.data.length}),{type:`text`,text:`[Image removed: still ${Math.round(o.data.length/1024/1024*10)/10}MB after resize and compression, exceeds 5MB API limit]`};let s=``;for(let e=0;e<o.data.length;e++)s+=String.fromCharCode(o.data[e]);let c=btoa(s);return D.info(`Image processed successfully`,{originalBase64:t,newBase64:c.length,mimeType:o.mime}),{type:`image`,data:c,mimeType:o.mime}}catch(n){return D.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`})]`}}}const we=t(`tool-adapter`),Te=/<img:(data:(image\/[^;]+);base64,([^>]+))>/g;function k(e){let t=[],n=0;for(let r of e.matchAll(Te)){let i=e.slice(n,r.index);i.trim()&&t.push({type:`text`,text:i.trimEnd()}),t.push({type:`image`,mimeType:r[2],data:r[3]}),n=r.index+r[0].length}let r=e.slice(n);return(r.trim()||t.length===0)&&t.push({type:`text`,text:r||e}),t}async function Ee(e){let t=k(e),n=[];for(let e of t)e.type===`image`?n.push(await Ce(e)):n.push(e);return n}function De(e,t){return{name:e.name,label:e.name,description:e.description,parameters:e.inputSchema,async execute(n,r,i,a){let o;a&&(o=h({onUpdate:a,toolName:e.name,toolCallId:n}));let s=t?t.processManager.spawn({kind:`tool`,argv:[e.name,...ke(r)],owner:t.owner,ppid:t.getParentPid?.()}):null,c=null;s&&t&&i&&(i.aborted?t.processManager.signal(s.pid,`SIGINT`):i.addEventListener(`abort`,()=>t.processManager.signal(s.pid,`SIGINT`),{once:!0})),s&&t&&(c=t.processManager.onSignal((e,n)=>{e.pid!==s.pid||n!==`SIGKILL`||t.processManager.exit(s.pid,null)}));let l=s?s.abort.signal:i;try{let n=await e.execute(r??{},l),i;try{i=await Ee(n.content)}catch(t){we.warn(`Image processing failed, falling back to raw content`,{tool:e.name,error:t instanceof Error?t.message:String(t)}),i=k(n.content)}return s&&t&&t.processManager.exit(s.pid,+!!n.isError),{content:i,details:{isError:n.isError}}}catch(e){throw s&&t&&t.processManager.exit(s.pid,s.abort.signal.aborted?null:1),e}finally{o&&m(o),c?.()}}}}function Oe(e,t){return e.map(e=>De(e,t))}function ke(e){if(typeof e!=`object`||!e)return[];let t=e;for(let e of[`command`,`file_path`,`path`,`pattern`,`url`,`key`,`name`,`query`,`message`]){let n=t[e];if(typeof n==`string`&&n.length>0)return[n]}for(let e of Object.values(t))if(typeof e==`string`&&e.length>0)return[e];return[]}function Ae(e){let t=`Ran \`${e.command}\`\n`;return e.output?t+=`\`\`\`\n${e.output}\n\`\`\``:t+=`(no output)`,e.cancelled?t+=`
|
|
1
|
+
import{r as e}from"./chunk-jRWAZmH_.js";import{t}from"./logger-BHrAkMIS.js";import{a as n,c as r,i,r as a,s as o,t as s}from"./bedrock-camp-CSnbcnRX.js";import{d as c,l,u}from"./transform-messages-BdxHijhT.js";import{a as d,n as f,t as p}from"./providers-BXn6VB-n.js";import{f as m,p as h}from"./kernel-worker-D5nK6-Lp.js";const ee=`slicc.trayWorkerBaseUrl`,te=`https://www.sliccy.ai`;let ne={state:`inactive`,joinUrl:null,trayId:null,error:null,lastPingTime:null,reconnectAttempts:0,attachAttempts:0,lastAttachCode:null,connectingSince:null,lastError:null};function re(){return{...ne}}const g=new Set;function ie(e){return g.add(e),()=>{g.delete(e)}}async function ae(e,t,n,r,i,a){let o=[...e],s={...t,messages:[...t.messages,...e]};await r({type:`agent_start`}),await r({type:`turn_start`});for(let t of e)await r({type:`message_start`,message:t}),await r({type:`message_end`,message:t});return await _(s,o,n,i,r,a),o}async function oe(e,t,n,r,i){if(e.messages.length===0)throw Error(`Cannot continue: no messages in context`);if(e.messages[e.messages.length-1].role===`assistant`)throw Error(`Cannot continue from message role: assistant`);let a=[],o={...e};return await n({type:`agent_start`}),await n({type:`turn_start`}),await _(o,a,t,r,n,i),a}async function _(e,t,n,r,i,a){let o=!0,s=await n.getSteeringMessages?.()||[];for(;;){let c=!0;for(;c||s.length>0;){if(o?o=!1:await i({type:`turn_start`}),s.length>0){for(let n of s)await i({type:`message_start`,message:n}),await i({type:`message_end`,message:n}),e.messages.push(n),t.push(n);s=[]}let l=await se(e,n,r,i,a);if(t.push(l),l.stopReason===`error`||l.stopReason===`aborted`){await i({type:`turn_end`,message:l,toolResults:[]}),await i({type:`agent_end`,messages:t});return}let u=l.content.filter(e=>e.type===`toolCall`),d=[];if(c=!1,u.length>0){let a=await ce(e,l,n,r,i);d.push(...a.messages),c=!a.terminate;for(let n of d)e.messages.push(n),t.push(n)}if(await i({type:`turn_end`,message:l,toolResults:d}),await n.shouldStopAfterTurn?.({message:l,toolResults:d,context:e,newMessages:t})){await i({type:`agent_end`,messages:t});return}s=await n.getSteeringMessages?.()||[]}let l=await n.getFollowUpMessages?.()||[];if(l.length>0){s=l;continue}break}await i({type:`agent_end`,messages:t})}async function se(e,t,n,i,a){let o=e.messages;t.transformContext&&(o=await t.transformContext(o,n));let s=await t.convertToLlm(o),c={systemPrompt:e.systemPrompt,messages:s,tools:e.tools},l=a||r,u=(t.getApiKey?await t.getApiKey(t.model.provider):void 0)||t.apiKey,d=await l(t.model,c,{...t,apiKey:u,signal:n}),f=null,p=!1;for await(let t of d)switch(t.type){case`start`:f=t.partial,e.messages.push(f),p=!0,await i({type:`message_start`,message:{...f}});break;case`text_start`:case`text_delta`:case`text_end`:case`thinking_start`:case`thinking_delta`:case`thinking_end`:case`toolcall_start`:case`toolcall_delta`:case`toolcall_end`:f&&(f=t.partial,e.messages[e.messages.length-1]=f,await i({type:`message_update`,assistantMessageEvent:t,message:{...f}}));break;case`done`:case`error`:{let t=await d.result();return p?e.messages[e.messages.length-1]=t:e.messages.push(t),p||await i({type:`message_start`,message:{...t}}),await i({type:`message_end`,message:t}),t}}let m=await d.result();return p?e.messages[e.messages.length-1]=m:(e.messages.push(m),await i({type:`message_start`,message:{...m}})),await i({type:`message_end`,message:m}),m}async function ce(e,t,n,r,i){let a=t.content.filter(e=>e.type===`toolCall`),o=a.some(t=>e.tools?.find(e=>e.name===t.name)?.executionMode===`sequential`);return n.toolExecution===`sequential`||o?le(e,t,a,n,r,i):ue(e,t,a,n,r,i)}async function le(e,t,n,r,i,a){let o=[],s=[];for(let c of n){await a({type:`tool_execution_start`,toolCallId:c.id,toolName:c.name,args:c.arguments});let n=await fe(e,t,c,r,i),l;l=n.kind===`immediate`?{toolCall:c,result:n.result,isError:n.isError}:await b(e,t,n,await y(n,i,a),r,i),await S(l,a);let u=C(l);await w(u,a),o.push(l),s.push(u)}return{messages:s,terminate:v(o)}}async function ue(e,t,n,r,i,a){let o=[];for(let s of n){await a({type:`tool_execution_start`,toolCallId:s.id,toolName:s.name,args:s.arguments});let n=await fe(e,t,s,r,i);if(n.kind===`immediate`){let e={toolCall:s,result:n.result,isError:n.isError};await S(e,a),o.push(e);continue}o.push(async()=>{let o=await b(e,t,n,await y(n,i,a),r,i);return await S(o,a),o})}let s=await Promise.all(o.map(e=>typeof e==`function`?e():Promise.resolve(e))),c=[];for(let e of s){let t=C(e);await w(t,a),c.push(t)}return{messages:c,terminate:v(s)}}function v(e){return e.length>0&&e.every(e=>e.result.terminate===!0)}function de(e,t){if(!e.prepareArguments)return t;let n=e.prepareArguments(t.arguments);return n===t.arguments?t:{...t,arguments:n}}async function fe(e,t,r,i,a){let o=e.tools?.find(e=>e.name===r.name);if(!o)return{kind:`immediate`,result:x(`Tool ${r.name} not found`),isError:!0};try{let s=n(o,de(o,r));if(i.beforeToolCall){let n=await i.beforeToolCall({assistantMessage:t,toolCall:r,args:s,context:e},a);if(n?.block)return{kind:`immediate`,result:x(n.reason||`Tool execution was blocked`),isError:!0}}return{kind:`prepared`,toolCall:r,tool:o,args:s}}catch(e){return{kind:`immediate`,result:x(e instanceof Error?e.message:String(e)),isError:!0}}}async function y(e,t,n){let r=[];try{let i=await e.tool.execute(e.toolCall.id,e.args,t,t=>{r.push(Promise.resolve(n({type:`tool_execution_update`,toolCallId:e.toolCall.id,toolName:e.toolCall.name,args:e.toolCall.arguments,partialResult:t})))});return await Promise.all(r),{result:i,isError:!1}}catch(e){return await Promise.all(r),{result:x(e instanceof Error?e.message:String(e)),isError:!0}}}async function b(e,t,n,r,i,a){let o=r.result,s=r.isError;if(i.afterToolCall)try{let r=await i.afterToolCall({assistantMessage:t,toolCall:n.toolCall,args:n.args,result:o,isError:s,context:e},a);r&&(o={content:r.content??o.content,details:r.details??o.details,terminate:r.terminate??o.terminate},s=r.isError??s)}catch(e){o=x(e instanceof Error?e.message:String(e)),s=!0}return{toolCall:n.toolCall,result:o,isError:s}}function x(e){return{content:[{type:`text`,text:e}],details:{}}}async function S(e,t){await t({type:`tool_execution_end`,toolCallId:e.toolCall.id,toolName:e.toolCall.name,result:e.result,isError:e.isError})}function C(e){return{role:`toolResult`,toolCallId:e.toolCall.id,toolName:e.toolCall.name,content:e.result.content,details:e.result.details,isError:e.isError,timestamp:Date.now()}}async function w(e,t){await t({type:`message_start`,message:e}),await t({type:`message_end`,message:e})}function pe(e){return e.filter(e=>e.role===`user`||e.role===`assistant`||e.role===`toolResult`)}const me={input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},he={id:`unknown`,name:`unknown`,api:`unknown`,provider:`unknown`,baseUrl:``,reasoning:!1,input:[],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:0,maxTokens:0};function ge(e){let t=e?.tools?.slice()??[],n=e?.messages?.slice()??[];return{systemPrompt:e?.systemPrompt??``,model:e?.model??he,thinkingLevel:e?.thinkingLevel??`off`,get tools(){return t},set tools(e){t=e.slice()},get messages(){return n},set messages(e){n=e.slice()},isStreaming:!1,streamingMessage:void 0,pendingToolCalls:new Set,errorMessage:void 0}}var T=class{mode;messages=[];constructor(e){this.mode=e}enqueue(e){this.messages.push(e)}hasItems(){return this.messages.length>0}drain(){if(this.mode===`all`){let e=this.messages.slice();return this.messages=[],e}let e=this.messages[0];return e?(this.messages=this.messages.slice(1),[e]):[]}clear(){this.messages=[]}},_e=class{_state;listeners=new Set;steeringQueue;followUpQueue;convertToLlm;transformContext;streamFn;getApiKey;onPayload;onResponse;beforeToolCall;afterToolCall;activeRun;sessionId;thinkingBudgets;transport;maxRetryDelayMs;toolExecution;constructor(e={}){this._state=ge(e.initialState),this.convertToLlm=e.convertToLlm??pe,this.transformContext=e.transformContext,this.streamFn=e.streamFn??r,this.getApiKey=e.getApiKey,this.onPayload=e.onPayload,this.onResponse=e.onResponse,this.beforeToolCall=e.beforeToolCall,this.afterToolCall=e.afterToolCall,this.steeringQueue=new T(e.steeringMode??`one-at-a-time`),this.followUpQueue=new T(e.followUpMode??`one-at-a-time`),this.sessionId=e.sessionId,this.thinkingBudgets=e.thinkingBudgets,this.transport=e.transport??`auto`,this.maxRetryDelayMs=e.maxRetryDelayMs,this.toolExecution=e.toolExecution??`parallel`}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}get state(){return this._state}set steeringMode(e){this.steeringQueue.mode=e}get steeringMode(){return this.steeringQueue.mode}set followUpMode(e){this.followUpQueue.mode=e}get followUpMode(){return this.followUpQueue.mode}steer(e){this.steeringQueue.enqueue(e)}followUp(e){this.followUpQueue.enqueue(e)}clearSteeringQueue(){this.steeringQueue.clear()}clearFollowUpQueue(){this.followUpQueue.clear()}clearAllQueues(){this.clearSteeringQueue(),this.clearFollowUpQueue()}hasQueuedMessages(){return this.steeringQueue.hasItems()||this.followUpQueue.hasItems()}get signal(){return this.activeRun?.abortController.signal}abort(){this.activeRun?.abortController.abort()}waitForIdle(){return this.activeRun?.promise??Promise.resolve()}reset(){this._state.messages=[],this._state.isStreaming=!1,this._state.streamingMessage=void 0,this._state.pendingToolCalls=new Set,this._state.errorMessage=void 0,this.clearFollowUpQueue(),this.clearSteeringQueue()}async prompt(e,t){if(this.activeRun)throw Error(`Agent is already processing a prompt. Use steer() or followUp() to queue messages, or wait for completion.`);let n=this.normalizePromptInput(e,t);await this.runPromptMessages(n)}async continue(){if(this.activeRun)throw Error(`Agent is already processing. Wait for completion before continuing.`);let e=this._state.messages[this._state.messages.length-1];if(!e)throw Error(`No messages to continue from`);if(e.role===`assistant`){let e=this.steeringQueue.drain();if(e.length>0){await this.runPromptMessages(e,{skipInitialSteeringPoll:!0});return}let t=this.followUpQueue.drain();if(t.length>0){await this.runPromptMessages(t);return}throw Error(`Cannot continue from message role: assistant`)}await this.runContinuation()}normalizePromptInput(e,t){if(Array.isArray(e))return e;if(typeof e!=`string`)return[e];let n=[{type:`text`,text:e}];return t&&t.length>0&&n.push(...t),[{role:`user`,content:n,timestamp:Date.now()}]}async runPromptMessages(e,t={}){await this.runWithLifecycle(async n=>{await ae(e,this.createContextSnapshot(),this.createLoopConfig(t),e=>this.processEvents(e),n,this.streamFn)})}async runContinuation(){await this.runWithLifecycle(async e=>{await oe(this.createContextSnapshot(),this.createLoopConfig(),e=>this.processEvents(e),e,this.streamFn)})}createContextSnapshot(){return{systemPrompt:this._state.systemPrompt,messages:this._state.messages.slice(),tools:this._state.tools.slice()}}createLoopConfig(e={}){let t=e.skipInitialSteeringPoll===!0;return{model:this._state.model,reasoning:this._state.thinkingLevel===`off`?void 0:this._state.thinkingLevel,sessionId:this.sessionId,onPayload:this.onPayload,onResponse:this.onResponse,transport:this.transport,thinkingBudgets:this.thinkingBudgets,maxRetryDelayMs:this.maxRetryDelayMs,toolExecution:this.toolExecution,beforeToolCall:this.beforeToolCall,afterToolCall:this.afterToolCall,convertToLlm:this.convertToLlm,transformContext:this.transformContext,getApiKey:this.getApiKey,getSteeringMessages:async()=>t?(t=!1,[]):this.steeringQueue.drain(),getFollowUpMessages:async()=>this.followUpQueue.drain()}}async runWithLifecycle(e){if(this.activeRun)throw Error(`Agent is already processing.`);let t=new AbortController,n=()=>{},r=new Promise(e=>{n=e});this.activeRun={promise:r,resolve:n,abortController:t},this._state.isStreaming=!0,this._state.streamingMessage=void 0,this._state.errorMessage=void 0;try{await e(t.signal)}catch(e){await this.handleRunFailure(e,t.signal.aborted)}finally{this.finishRun()}}async handleRunFailure(e,t){let n={role:`assistant`,content:[{type:`text`,text:``}],api:this._state.model.api,provider:this._state.model.provider,model:this._state.model.id,usage:me,stopReason:t?`aborted`:`error`,errorMessage:e instanceof Error?e.message:String(e),timestamp:Date.now()};this._state.messages.push(n),this._state.errorMessage=n.errorMessage,await this.processEvents({type:`agent_end`,messages:[n]})}finishRun(){this._state.isStreaming=!1,this._state.streamingMessage=void 0,this._state.pendingToolCalls=new Set,this.activeRun?.resolve(),this.activeRun=void 0}async processEvents(e){switch(e.type){case`message_start`:this._state.streamingMessage=e.message;break;case`message_update`:this._state.streamingMessage=e.message;break;case`message_end`:this._state.streamingMessage=void 0,this._state.messages.push(e.message);break;case`tool_execution_start`:{let t=new Set(this._state.pendingToolCalls);t.add(e.toolCallId),this._state.pendingToolCalls=t;break}case`tool_execution_end`:{let t=new Set(this._state.pendingToolCalls);t.delete(e.toolCallId),this._state.pendingToolCalls=t;break}case`turn_end`:e.message.role===`assistant`&&e.message.errorMessage&&(this._state.errorMessage=e.message.errorMessage);break;case`agent_end`:this._state.streamingMessage=void 0;break}let t=this.activeRun?.abortController.signal;if(!t)throw Error(`Agent listener invoked outside active run`);for(let n of this.listeners)await n(e,t)}};const E=`sessions`;function ve(){return new Promise((e,t)=>{let n=indexedDB.open(`agent-sessions`,1);n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(E)||e.createObjectStore(E,{keyPath:`id`})},n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)})}var ye=class{dbPromise=null;getDB(){return this.dbPromise||=ve(),this.dbPromise}async save(e){let t=await this.getDB();return new Promise((n,r)=>{let i=t.transaction(E,`readwrite`).objectStore(E).put(e);i.onsuccess=()=>n(),i.onerror=()=>r(i.error)})}async load(e){let t=await this.getDB();return new Promise((n,r)=>{let i=t.transaction(E,`readonly`).objectStore(E).get(e);i.onsuccess=()=>n(i.result??null),i.onerror=()=>r(i.error)})}async delete(e){let t=await this.getDB();return new Promise((n,r)=>{let i=t.transaction(E,`readwrite`).objectStore(E).delete(e);i.onsuccess=()=>n(),i.onerror=()=>r(i.error)})}async list(){let e=await this.getDB();return new Promise((t,n)=>{let r=e.transaction(E,`readonly`).objectStore(E).getAll();r.onsuccess=()=>{t((r.result??[]).map(e=>({id:e.id,updatedAt:e.updatedAt})))},r.onerror=()=>n(r.error)})}async clearAll(){let e=await this.getDB();return new Promise((t,n)=>{let r=e.transaction(E,`readwrite`).objectStore(E).clear();r.onsuccess=()=>t(),r.onerror=()=>n(r.error)})}static newId(){return`session-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}static createSession(e,t){let n=Date.now();return{id:e,messages:[],config:t,createdAt:n,updatedAt:n}}static updateMessages(e,t){return{...e,messages:t,updatedAt:Date.now()}}};const D=t(`image-processor`),O=3932160,be=new Set([`image/jpeg`,`image/png`,`image/gif`,`image/webp`]);function xe(e){return be.has(e)}function Se(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 Ce(e){if(!xe(e.mimeType))return D.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,n=Se(e.data,e.mimeType);if(!(t>5242880||n!==null&&(n.width>8e3||n.height>8e3)||n!==null&&Math.max(n.width,n.height)>1568))return e;D.info(`Image needs processing`,{base64Size:t,dimensions:n?`${n.width}x${n.height}`:`unknown`,reason:t>5242880?`size`:`dimensions`});let r,i;try{let e=await import(`./magick-wasm-2iwpLX2j.js`).then(e=>e.n);r=e.getMagick,i=e.MIME_TO_MAGICK_FORMAT}catch(e){return D.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 a;try{a=await r()}catch(e){return D.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 o={data:null,mime:e.mimeType};if(await a.ImageMagick.read(r,async t=>{let n=t.width,r=t.height,a=Math.max(n,r);if(a>1568){let e=1568/a,i=Math.round(n*e),o=Math.round(r*e);t.resize(i,o),D.info(`Resized image`,{from:`${n}x${r}`,to:`${i}x${o}`})}let s=i[e.mimeType]||`JPEG`;t.write(s,e=>{o.data=new Uint8Array(e)}),o.data&&o.data.length>O&&s!==`JPEG`?(D.info(`Still over 5MB, compressing to JPEG q80`),t.quality=80,t.write(`JPEG`,e=>{o.data=new Uint8Array(e)}),o.mime=`image/jpeg`):o.data&&o.data.length>O&&(D.info(`Still over 5MB as JPEG, reducing quality to 60`),t.quality=60,t.write(`JPEG`,e=>{o.data=new Uint8Array(e)}))}),!o.data)return D.warn(`ImageMagick produced no output`),{type:`text`,text:`[Image removed: could not be processed (empty output from resize)]`};if(o.data.length>O)return D.warn(`Image still over 5MB after resize+compress`,{size:o.data.length}),{type:`text`,text:`[Image removed: still ${Math.round(o.data.length/1024/1024*10)/10}MB after resize and compression, exceeds 5MB API limit]`};let s=``;for(let e=0;e<o.data.length;e++)s+=String.fromCharCode(o.data[e]);let c=btoa(s);return D.info(`Image processed successfully`,{originalBase64:t,newBase64:c.length,mimeType:o.mime}),{type:`image`,data:c,mimeType:o.mime}}catch(n){return D.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`})]`}}}const we=t(`tool-adapter`),Te=/<img:(data:(image\/[^;]+);base64,([^>]+))>/g;function k(e){let t=[],n=0;for(let r of e.matchAll(Te)){let i=e.slice(n,r.index);i.trim()&&t.push({type:`text`,text:i.trimEnd()}),t.push({type:`image`,mimeType:r[2],data:r[3]}),n=r.index+r[0].length}let r=e.slice(n);return(r.trim()||t.length===0)&&t.push({type:`text`,text:r||e}),t}async function Ee(e){let t=k(e),n=[];for(let e of t)e.type===`image`?n.push(await Ce(e)):n.push(e);return n}function De(e,t){return{name:e.name,label:e.name,description:e.description,parameters:e.inputSchema,async execute(n,r,i,a){let o;a&&(o=h({onUpdate:a,toolName:e.name,toolCallId:n}));let s=t?t.processManager.spawn({kind:`tool`,argv:[e.name,...ke(r)],owner:t.owner,ppid:t.getParentPid?.()}):null,c=null;s&&t&&i&&(i.aborted?t.processManager.signal(s.pid,`SIGINT`):i.addEventListener(`abort`,()=>t.processManager.signal(s.pid,`SIGINT`),{once:!0})),s&&t&&(c=t.processManager.onSignal((e,n)=>{e.pid!==s.pid||n!==`SIGKILL`||t.processManager.exit(s.pid,null)}));let l=s?s.abort.signal:i;try{let n=await e.execute(r??{},l),i;try{i=await Ee(n.content)}catch(t){we.warn(`Image processing failed, falling back to raw content`,{tool:e.name,error:t instanceof Error?t.message:String(t)}),i=k(n.content)}return s&&t&&t.processManager.exit(s.pid,+!!n.isError),{content:i,details:{isError:n.isError}}}catch(e){throw s&&t&&t.processManager.exit(s.pid,s.abort.signal.aborted?null:1),e}finally{o&&m(o),c?.()}}}}function Oe(e,t){return e.map(e=>De(e,t))}function ke(e){if(typeof e!=`object`||!e)return[];let t=e;for(let e of[`command`,`file_path`,`path`,`pattern`,`url`,`key`,`name`,`query`,`message`]){let n=t[e];if(typeof n==`string`&&n.length>0)return[n]}for(let e of Object.values(t))if(typeof e==`string`&&e.length>0)return[e];return[]}function Ae(e){let t=`Ran \`${e.command}\`\n`;return e.output?t+=`\`\`\`\n${e.output}\n\`\`\``:t+=`(no output)`,e.cancelled?t+=`
|
|
2
2
|
|
|
3
3
|
(command cancelled)`:e.exitCode!==null&&e.exitCode!==void 0&&e.exitCode!==0&&(t+=`\n\nCommand exited with code ${e.exitCode}`),e.truncated&&e.fullOutputPath&&(t+=`\n\n[Output truncated. Full output: ${e.fullOutputPath}]`),t}function je(e){return e.map(e=>{switch(e.role){case`bashExecution`:return e.excludeFromContext?void 0:{role:`user`,content:[{type:`text`,text:Ae(e)}],timestamp:e.timestamp};case`custom`:return{role:`user`,content:typeof e.content==`string`?[{type:`text`,text:e.content}]:e.content,timestamp:e.timestamp};case`branchSummary`:return{role:`user`,content:[{type:`text`,text:`The following is a summary of a branch that this conversation came back from:
|
|
4
4
|
|
|
@@ -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-DojHdJL3.js`),"./built-in/bedrock-camp.ts":()=>import(`./bedrock-camp-CSnbcnRX.js`).then(e=>e.n),"./built-in/local-llm.ts":()=>import(`./local-llm-D3sFAL4U.js`).then(e=>e.n)}),o=Object.assign({"/packages/webapp/providers/adobe.ts":()=>import(`./adobe-BsSm3jFi.js`),"/packages/webapp/providers/github.ts":()=>import(`./github-BQrJLgkA.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-D6Tnw-Q6.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-D5nK6-Lp.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};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=`tray`,t=`trayWorkerUrl`,n=`lead`;function r(e){if(!e)return null;try{let t=new URL(e.trim());t.search=``,t.hash=``,t.pathname!==`/`&&(t.pathname=t.pathname.replace(/\/+$/,``)||`/`);let n=t.toString();return n.endsWith(`/`)?n.slice(0,-1):n}catch{return null}}function i(e){if(!e)return null;try{let t=new URL(e.trim());t.search=``,t.hash=``;let n=t.toString(),i=t.pathname.split(`/`).filter(Boolean);if(i.length<2||i.at(-2)!==`join`)return null;let[a,o,...s]=decodeURIComponent(i.at(-1)).split(`.`);if(!a||!o||s.length>0)return null;i.splice(-2,2),t.pathname=i.length>0?`/${i.join(`/`)}`:`/`;let c=r(t.toString());return c?{workerBaseUrl:c,trayId:a,joinUrl:n}:null}catch{return null}}var a=`slicc.trayWorkerBaseUrl`,o=`slicc.trayJoinUrl`,s=`https://www.sliccy.ai`;function c(e){if(!e)return null;try{let t=new URL(e.trim());t.search=``,t.hash=``;let n=t.pathname.split(`/`).filter(Boolean),a=null;if(n.length>=2&&n.at(-2)===`tray`)a=decodeURIComponent(n.at(-1)),n.splice(-2,2),t.pathname=n.length>0?`/${n.join(`/`)}`:`/`;else if(n.length>=2&&n.at(-2)===`join`)return i(t.toString());let o=r(t.toString());return o?{workerBaseUrl:o,trayId:a,joinUrl:null}:null}catch{return null}}function l(e){let t=c(e);return t?.joinUrl?t:null}function u(e,t){let n=l(t);return n?(e.setItem(o,n.joinUrl),e.setItem(a,n.workerBaseUrl),n):null}function d(e){return!!l(e?.getItem(`slicc.trayJoinUrl`)??null)}async function f(e){let t=m(e.locationHref);if(t)return e.storage&&(t.joinUrl&&e.storage.setItem(o,t.joinUrl),e.storage.setItem(a,t.workerBaseUrl)),t;let n=l(e.storage?.getItem(`slicc.trayJoinUrl`)??null);if(n)return e.storage&&e.storage.setItem(a,n.workerBaseUrl),n;let i=e.runtimeConfigFetcher?await h(e.runtimeConfigFetcher):null;if(i?.joinConfig)return e.storage&&(e.storage.setItem(o,i.joinConfig.joinUrl),e.storage.setItem(a,i.joinConfig.workerBaseUrl)),i.joinConfig;let s=i?.workerBaseUrl??null,c=r(e.storage?.getItem(`slicc.trayWorkerBaseUrl`)??null),u=r(e.envBaseUrl??null),d=r(e.defaultWorkerBaseUrl??null),f=s??c??u??d;return f?(e.storage&&e.storage.setItem(a,f),{workerBaseUrl:f,trayId:null,joinUrl:null}):null}async function p(e=fetch){try{let t=await e(`/api/runtime-config`,{cache:`no-store`});return t.ok?await t.json():null}catch{return null}}function m(a){try{let o=new URL(a),s=c(o.searchParams.get(e));if(s)return s;let l=c(o.searchParams.get(n));if(l)return l;let u=r(o.searchParams.get(t));return u?{workerBaseUrl:u,trayId:null,joinUrl:null}:i(a)||null}catch{return null}}async function h(e){let t=await e();if(!t)return null;let n=l(t.trayJoinUrl??null);return{workerBaseUrl:r(t.trayWorkerBaseUrl??null),joinConfig:n}}var g={state:`inactive`,joinUrl:null,trayId:null,error:null,lastPingTime:null,reconnectAttempts:0,attachAttempts:0,lastAttachCode:null,connectingSince:null,lastError:null};function _(){return{...g}}var v=new Set;function y(){if(v.size!==0)for(let e of[...v])try{e({...g})}catch{}}function b(e){g={...e},y()}export{a,f as c,o as i,u as l,b as n,p as o,s as r,d as s,_ as t};
|
|
@@ -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.41.
|
|
1
|
+
import{p as e,x as t}from"./db-Cdoacmjm.js";const n=`slicc:last-seen-version`;function r(){return{version:`2.41.4`,releasedAt:`2026-05-11T16:55:52Z`}}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,20 +5,20 @@
|
|
|
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-9RNwBuQi.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-CkDNhlzI.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-
|
|
16
|
-
<link rel="modulepreload" crossorigin href="/assets/tray-follower-status-
|
|
15
|
+
<link rel="modulepreload" crossorigin href="/assets/fs-DLmF36ib.js">
|
|
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-
|
|
19
|
+
<link rel="modulepreload" crossorigin href="/assets/mount-CYLV7YdV.js">
|
|
20
|
+
<link rel="modulepreload" crossorigin href="/assets/index-9RNwBuQi.js">
|
|
21
|
+
<link rel="modulepreload" crossorigin href="/assets/provider-settings-CNuleEei.js">
|
|
22
22
|
<link rel="stylesheet" crossorigin href="/assets/index-RVLUy-Qx.css">
|
|
23
23
|
</head>
|
|
24
24
|
<body>
|
|
@@ -5,20 +5,20 @@
|
|
|
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-9RNwBuQi.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-CkDNhlzI.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-
|
|
16
|
-
<link rel="modulepreload" crossorigin href="/assets/tray-follower-status-
|
|
15
|
+
<link rel="modulepreload" crossorigin href="/assets/fs-DLmF36ib.js">
|
|
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-
|
|
19
|
+
<link rel="modulepreload" crossorigin href="/assets/mount-CYLV7YdV.js">
|
|
20
|
+
<link rel="modulepreload" crossorigin href="/assets/index-9RNwBuQi.js">
|
|
21
|
+
<link rel="modulepreload" crossorigin href="/assets/provider-settings-CNuleEei.js">
|
|
22
22
|
<link rel="stylesheet" crossorigin href="/assets/index-RVLUy-Qx.css">
|
|
23
23
|
</head>
|
|
24
24
|
<body>
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./index-DgpEf1ai.js";function e(e){}export{e as registerSessionCostsProvider};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/magick-wasm-BnlzD3um.js","assets/preload-helper-ca-nBW7U.js","assets/azure-openai-Bp-0Xcsq.js","assets/bedrock-camp-BdP76xIG.js","assets/chunk-jRWAZmH_.js","assets/index-DgpEf1ai.js","assets/simple-options-B0cR4giT.js","assets/fs-C24mGi62.js","assets/logger-B-No_qN_.js","assets/path-utils-CNNVZ3-O.js","assets/tray-follower-status-BrSKMPaE.js","assets/mime-types-DL940yDZ.js","assets/mount-picker-popup-BLHoVG3y.js","assets/mount-D5v-EQOi.js","assets/index-RVLUy-Qx.css","assets/openai-NzrumIkM.js","assets/local-llm-DypPzJOJ.js","assets/openai-completions-AkqWeeEZ.js","assets/github-copilot-headers-DLK82thn.js","assets/headers-CeeP1wvy.js","assets/sanitize-unicode-DANurEy1.js","assets/adobe-CH2L4W6h.js","assets/github-BNgNrxNK.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-BdP76xIG.js";import{d as o,l as s,u as c}from"./simple-options-B0cR4giT.js";import{o as l,s as u,t as d}from"./tray-follower-status-BrSKMPaE.js";import{o as f}from"./index-DgpEf1ai.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-BnlzD3um.js`),__vite__mapDeps([0,1]));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-B1O-wE_V.js`),[]),"./built-in/azure-openai.ts":()=>n(()=>import(`./azure-openai-Bp-0Xcsq.js`),__vite__mapDeps([2,3,4,5,1,6,7,8,9,10,11,12,13,14,15])),"./built-in/bedrock-camp.ts":()=>n(()=>import(`./bedrock-camp-BdP76xIG.js`).then(e=>e.n),__vite__mapDeps([3,4,5,1,6,7,8,9,10,11,12,13,14])),"./built-in/local-llm.ts":()=>n(()=>import(`./local-llm-DypPzJOJ.js`),__vite__mapDeps([16,3,4,5,1,6,7,8,9,10,11,12,13,14,17,18,19,20,15]))}),O=Object.assign({"/packages/webapp/providers/adobe.ts":()=>n(()=>import(`./adobe-CH2L4W6h.js`),__vite__mapDeps([21,1,3,4,5,6,7,8,9,10,11,12,13,14])),"/packages/webapp/providers/github.ts":()=>n(()=>import(`./github-BNgNrxNK.js`),__vite__mapDeps([22,1,3,4,5,6,7,8,9,10,11,12,13,14]))}),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()]}var ee=e({addAccount:()=>J,applyProviderDefaults:()=>W,clearAllSettings:()=>ve,describeInvalidJoinUrl:()=>w,downloadProviders:()=>_e,exportProviders:()=>ge,getAccounts:()=>K,getAllAvailableModels:()=>se,getApiKey:()=>he,getApiKeyForProvider:()=>ue,getApiVersionForProvider:()=>fe,getAvailableProviders:()=>z,getBaseUrlForProvider:()=>X,getDeploymentForProvider:()=>de,getProviderConfig:()=>B,getProviderModels:()=>H,getSelectedModelId:()=>Z,getSelectedProvider:()=>Q,isModelHiddenFromPicker:()=>G,removeAccount:()=>Y,resolveCurrentModel:()=>$,resolveModelById:()=>ye,saveOAuthAccount:()=>ce,setSelectedModelId:()=>pe,showProviderSettings:()=>Ce}),P=s,F=c;function I(){return typeof chrome<`u`&&!!chrome?.runtime?.id}var L=`slicc_accounts`,R=`selected-model`,te=[`slicc_provider`,`slicc_api_key`,`slicc_base_url`,`anthropic_api_key`,`api_provider`,`azure_resource`,`bedrock_region`],ne=!1;function re(){if(!ne){ne=!0;for(let e of te)try{localStorage.removeItem(e)}catch{}}}function z(){let e=o().filter(E),t=N();return[...new Set([...e,...t])]}function B(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 V(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 H(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=B(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&&V(o,s),V(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&&V(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)}),[]}}var ie=Object.assign({})[`/packages/webapp/providers.json`]??[],U=t(`provider-settings`);function W(e=ie){if(e.length===0||K().length>0)return;let t=new Set(z());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(R)&&localStorage.setItem(R,`${n.providerId}:${n.model}`)}var ae=[/haiku/i];function G(e){return ae.some(t=>t.test(e))}function oe(e){return e.filter(e=>!G(e.id))}function se(){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=oe(H(n.providerId));if(e.length===0)continue;let r=B(n.providerId),i={providerId:n.providerId,providerName:r.name,models:e};t.set(n.providerId,i)}return[...t.values()]}function K(){re();let e=localStorage.getItem(L);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 q(e){localStorage.setItem(L,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)}function Y(e){q(K().filter(t=>t.providerId!==e));let t=localStorage.getItem(R)??``,n=t.indexOf(`:`);n>0&&t.slice(0,n)===e&&localStorage.removeItem(R)}function ce(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)}var le=`local`;function ue(e){let t=K().find(t=>t.providerId===e);return t?t.accessToken||t.apiKey||(B(e).optionalApiKey?le:null):null}function X(e){return K().find(t=>t.providerId===e)?.baseUrl??null}function de(e){return K().find(t=>t.providerId===e)?.deployment??null}function fe(e){return K().find(t=>t.providerId===e)?.apiVersion??null}function Z(){let e=localStorage.getItem(R)||``,t=e.indexOf(`:`);return t>=0?e.slice(t+1):e}function pe(e){if(e.includes(`:`))localStorage.setItem(R,e);else{let t=Q();localStorage.setItem(R,`${t}:${e}`)}}function me(){return localStorage.getItem(R)||``}function Q(){let e=me(),t=e.indexOf(`:`);if(t>0)return e.slice(0,t);let n=K();return n.length>0?n[0].providerId:`anthropic`}function he(){return ue(Q())}function ge(){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 _e(){let e=JSON.stringify(ge(),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 ve(){localStorage.removeItem(L),localStorage.removeItem(R);for(let e of te)localStorage.removeItem(e)}function ye(e){if(!e)return $();let t=Q(),n=X(t);try{let r=B(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=H(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=H(e),i=B(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=B(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 be(e){return e.length<=10?`****`:e.slice(0,4)+`...`+e.slice(-4)}function xe(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 Se={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 Ce(e){return f(`button`),new Promise(t=>{let r=localStorage.getItem(L)??``,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=B(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=be(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(xe(Se.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(xe(Se.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`,()=>{Y(t.providerId),o()}),u.appendChild(f),r.appendChild(u),e.appendChild(r)}a.appendChild(e)}let u=document.createElement(`div`);u.style.cssText=`display: flex; gap: 8px;`;let p=document.createElement(`button`);p.className=n.length>0?`dialog__btn dialog__btn--secondary`:`dialog__btn`,p.style.flex=`1`,p.textContent=`Add Account`,p.addEventListener(`click`,()=>s()),u.appendChild(p);let m=document.createElement(`button`);m.className=`dialog__btn dialog__btn--secondary`,m.style.flex=`1`,m.textContent=`Export`,m.addEventListener(`click`,()=>_e()),u.appendChild(m),a.appendChild(u);let h=document.createElement(`hr`);h.style.cssText=`border: none; border-top: 1px solid var(--s2-border-subtle); margin: 16px 0;`,a.appendChild(h);let g=document.createElement(`div`);g.className=`dialog__desc`,g.style.cssText=`font-weight: 600; margin-bottom: 8px;`,g.textContent=`Tray`,a.appendChild(g);let _=d(),v=_.state!==`inactive`,y=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)`),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(L)??``)!==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=B(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=z(),t=new Set(K().map(e=>e.providerId)),n=[...e].sort((e,t)=>{let n=B(e).name,r=B(t).name;return n.localeCompare(r)});for(let e of n){if(t.has(e))continue;let n=B(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=B(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-CfTUWB9P.js`);return{createOAuthLauncher:e}},[]),r=e();await t.onOAuthLogin(r,o)}catch(t){if(!r)try{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=B(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=B(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=B(e);t.requiresApiKey?h.focus():t.requiresBaseUrl&&v.focus()})}function c(e){a.innerHTML=``;let n=document.createElement(`div`);n.className=`dialog__title`,n.textContent=`Connect this browser?`,a.appendChild(n);let r=document.createElement(`div`);r.className=`dialog__desc`,r.style.marginBottom=`12px`,r.textContent=`You’ve been invited to mirror another SLICC browser. Click below to start syncing.`,a.appendChild(r);let o=document.createElement(`div`);o.className=`dialog__desc`,o.style.cssText=`font-family: monospace; font-size: 11px; color: var(--s2-content-secondary); word-break: break-all; margin-bottom: 16px; padding: 8px; background: var(--s2-bg-secondary); border-radius: 4px;`,o.textContent=e.length>80?e.slice(0,40)+`…`+e.slice(-37):e,a.appendChild(o);let c=document.createElement(`div`);c.style.cssText=`font-size: 12px; color: var(--s2-content-secondary); margin-bottom: 8px; display: none;`,a.appendChild(c);let l=document.createElement(`button`);l.className=`dialog__btn`,l.textContent=`Connect`,l.addEventListener(`click`,()=>{let n=u(window.localStorage,e);if(!n){c.textContent=`Invalid sync URL.`,c.style.display=``,c.style.color=`var(--slicc-cone)`;return}if(I()){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(l);let d=document.createElement(`button`);d.className=`dialog__btn dialog__btn--secondary`,d.style.marginTop=`8px`,d.textContent=`Set up an account instead`,d.addEventListener(`click`,()=>{s()}),a.appendChild(d)}function 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 l=document.createElement(`ol`);l.style.cssText=`margin: 0; padding-left: 20px;`;for(let e of[`On the other SLICC, click the avatar (top right).`,`Choose “Enable multi-browser sync” — the URL is copied automatically.`,`Paste it below. Both browsers must be on the same SLICC version.`]){let t=document.createElement(`li`);t.textContent=e,l.appendChild(t)}c.appendChild(l),r.appendChild(c),a.appendChild(r);let d=document.createElement(`div`);d.className=`dialog__desc`,d.textContent=`Sync URL:`,a.appendChild(d);let f=document.createElement(`input`);f.className=`dialog__input`,f.type=`text`,f.autocomplete=`off`,f.spellcheck=!1,f.placeholder=`https://www.sliccy.ai/join/<token>`,a.appendChild(f);let p=document.createElement(`div`);p.style.cssText=`color: var(--slicc-cone); font-size: 12px; margin-bottom: 8px; display: none;`,a.appendChild(p);let m=document.createElement(`div`);m.style.cssText=`font-size: 12px; color: var(--s2-content-secondary); margin-bottom: 8px; display: none;`;let h=document.createElement(`button`);h.className=`dialog__btn`,h.textContent=`Connect`,h.addEventListener(`click`,()=>{let e=f.value.trim();if(!e){p.textContent=`Paste a sync URL to continue.`,p.style.display=``,f.focus();return}let n=u(window.localStorage,e);if(!n){p.textContent=w(e),p.style.display=``,f.focus();return}if(I()){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{x as C,y as S,m as T,ce as _,he as a,j as b,de as c,Z as d,Q as f,ye as g,$ as h,se as i,B as l,Y as m,ve as n,fe as o,ee as p,K as r,X as s,W as t,H as u,pe as v,p as w,S as x,Ce as y};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function e(e){if(!e)return null;try{let t=new URL(e.trim());t.search=``,t.hash=``,t.pathname!==`/`&&(t.pathname=t.pathname.replace(/\/+$/,``)||`/`);let n=t.toString();return n.endsWith(`/`)?n.slice(0,-1):n}catch{return null}}function t(t){if(!t)return null;try{let n=new URL(t.trim());n.search=``,n.hash=``;let r=n.toString(),i=n.pathname.split(`/`).filter(Boolean);if(i.length<2||i.at(-2)!==`join`)return null;let[a,o,...s]=decodeURIComponent(i.at(-1)).split(`.`);if(!a||!o||s.length>0)return null;i.splice(-2,2),n.pathname=i.length>0?`/${i.join(`/`)}`:`/`;let c=e(n.toString());return c?{workerBaseUrl:c,trayId:a,joinUrl:r}:null}catch{return null}}var n=`slicc.trayWorkerBaseUrl`,r=`slicc.trayJoinUrl`,i=`https://www.sliccy.ai`;function a(n){if(!n)return null;try{let r=new URL(n.trim());r.search=``,r.hash=``;let i=r.pathname.split(`/`).filter(Boolean),a=null;if(i.length>=2&&i.at(-2)===`tray`)a=decodeURIComponent(i.at(-1)),i.splice(-2,2),r.pathname=i.length>0?`/${i.join(`/`)}`:`/`;else if(i.length>=2&&i.at(-2)===`join`)return t(r.toString());let o=e(r.toString());return o?{workerBaseUrl:o,trayId:a,joinUrl:null}:null}catch{return null}}function o(e){let t=a(e);return t?.joinUrl?t:null}function s(e,t){let i=o(t);return i?(e.setItem(r,i.joinUrl),e.setItem(n,i.workerBaseUrl),i):null}function c(e){return!!o(e?.getItem(`slicc.trayJoinUrl`)??null)}var l={state:`inactive`,joinUrl:null,trayId:null,error:null,lastPingTime:null,reconnectAttempts:0,attachAttempts:0,lastAttachCode:null,connectingSince:null,lastError:null};function u(){return{...l}}var d=new Set;function f(){if(d.size!==0)for(let e of[...d])try{e({...l})}catch{}}function p(e){l={...e},f()}export{n as a,r as i,p as n,c as o,i as r,s,u as t};
|