sliccy 2.48.0 → 2.49.2

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.
Files changed (144) hide show
  1. package/README.md +1 -1
  2. package/dist/ui/assets/{adobe-f1RkQ2LG.js → adobe-DgFQQrOg.js} +1 -1
  3. package/dist/ui/assets/{adobe-B5JX3vSF.js → adobe-Dreg1wVK.js} +2 -2
  4. package/dist/ui/assets/{agent-bridge-KerdP1oi.js → agent-bridge-DQExUBtZ.js} +1 -1
  5. package/dist/ui/assets/{agent-message-to-chat-rNxH0eRL.js → agent-message-to-chat-CHszPkfe.js} +1 -1
  6. package/dist/ui/assets/anthropic-8dSWvEaO.js +39 -0
  7. package/dist/ui/assets/{anthropic-DXIx8WQZ.js → anthropic-CQXRZrKe.js} +2 -2
  8. package/dist/ui/assets/{azure-openai-Bbb6cKeV.js → azure-openai-DljwQRpg.js} +1 -1
  9. package/dist/ui/assets/{azure-openai-jVgW-OuR.js → azure-openai-Z75yrg_y.js} +1 -1
  10. package/dist/ui/assets/azure-openai-responses-B6VpI3fU.js +1 -0
  11. package/dist/ui/assets/azure-openai-responses-BruPNuxz.js +1 -0
  12. package/dist/ui/assets/backend-local-P05Hg6Af.js +9 -0
  13. package/dist/ui/assets/backend-local-mju0Ps5U.js +9 -0
  14. package/dist/ui/assets/bedrock-camp-9aDiXDk5.js +5 -0
  15. package/dist/ui/assets/bedrock-camp-CqXHYC67.js +4 -0
  16. package/dist/ui/assets/{cdp-C1_c8-E0.js → cdp-D-xyOaeF.js} +2 -2
  17. package/dist/ui/assets/cost-command-BOnG0NY3.js +1 -0
  18. package/dist/ui/assets/{dist-CxsgJFgV.js → dist-6maigE1F.js} +1 -1
  19. package/dist/ui/assets/{dist-BqCqxkrA.js → dist-8qo5XTx8.js} +1 -1
  20. package/dist/ui/assets/{dist-Sngeewv4.js → dist-DGI-KRHb.js} +1 -1
  21. package/dist/ui/assets/{dist-DPNMKo07.js → dist-DTOmXa93.js} +1 -1
  22. package/dist/ui/assets/{dist-USoe4ZIh.js → dist-Nvn9jT7s.js} +1 -1
  23. package/dist/ui/assets/env-api-keys-CH1OdZie.js +1 -0
  24. package/dist/ui/assets/env-api-keys-DxKb6C4Q.js +1 -0
  25. package/dist/ui/assets/{es-CbuIWQjf.js → es-DYpNCglL.js} +1 -1
  26. package/dist/ui/assets/{fs-Ch4z-7e8.js → fs-J4meBUCH.js} +3 -3
  27. package/dist/ui/assets/{fs-C8QxzFK_.js → fs-_TOckX3i.js} +2 -2
  28. package/dist/ui/assets/{github-DnfkA3fV.js → github-Cyp5HOCt.js} +1 -1
  29. package/dist/ui/assets/github-DIojNo8-.js +2 -0
  30. package/dist/ui/assets/google-BszFYcuS.js +1 -0
  31. package/dist/ui/assets/google-CYM-5k2z.js +1 -0
  32. package/dist/ui/assets/{google-shared-b8limp-0.js → google-shared-D_QrelB6.js} +1 -1
  33. package/dist/ui/assets/{google-shared-CEbAcMay.js → google-shared-XoadLsBb.js} +1 -1
  34. package/dist/ui/assets/{google-vertex-nFbLM1jr.js → google-vertex-ByJZJUMR.js} +1 -1
  35. package/dist/ui/assets/{google-vertex-DhlxvV6o.js → google-vertex-qkuMo_cz.js} +1 -1
  36. package/dist/ui/assets/{index-BxaasNW5.js → index-BqTqpjeH.js} +153 -163
  37. package/dist/ui/assets/json-parse-C5jSA6JB.js +3 -0
  38. package/dist/ui/assets/json-parse-Or9qhSeP.js +3 -0
  39. package/dist/ui/assets/{kernel-worker-BTAvhT7r.js → kernel-worker-CQw5MMmq.js} +883 -899
  40. package/dist/ui/assets/{local-llm-DQQUPDay.js → local-llm-CPVFxdug.js} +1 -1
  41. package/dist/ui/assets/{local-llm-BQQV1eUs.js → local-llm-g0wnxbDi.js} +1 -1
  42. package/dist/ui/assets/{magick-wasm-DwA3cs4T.js → magick-wasm-CTqVspRN.js} +1 -1
  43. package/dist/ui/assets/{magick-wasm-Dek2V-_y.js → magick-wasm-VuSQ-PNC.js} +1 -1
  44. package/dist/ui/assets/{mistral-BvJc11au.js → mistral-7vMFlwyv.js} +2 -2
  45. package/dist/ui/assets/{mistral-D_QxZUo3.js → mistral-BZdZwhYA.js} +2 -2
  46. package/dist/ui/assets/mount-B1Yosetn.js +2 -0
  47. package/dist/ui/assets/mount-rVcltyQp.js +1 -0
  48. package/dist/ui/assets/mount-table-store-BDnU4NqG.js +1 -0
  49. package/dist/ui/assets/{nuke-command-CKv7dPLq.js → nuke-command-6I6vn_OB.js} +1 -1
  50. package/dist/ui/assets/{oauth-bootstrap-iOQY9ywE.js → oauth-bootstrap-BhTDTASJ.js} +1 -1
  51. package/dist/ui/assets/{oauth-service-DTHr_ILl.js → oauth-service-BgJZh8oA.js} +1 -1
  52. package/dist/ui/assets/{oauth-service-BynE1niO.js → oauth-service-s6wxPNhT.js} +1 -1
  53. package/dist/ui/assets/offscreen-client-D_yQhOLu.js +1 -0
  54. package/dist/ui/assets/{onboarding-orchestrator-BTbcOsYi.js → onboarding-orchestrator-0jBXpPO0.js} +1 -1
  55. package/dist/ui/assets/{openai-codex-responses-ZTcDLOww.js → openai-codex-responses-BOuesx1c.js} +4 -4
  56. package/dist/ui/assets/{openai-codex-responses-jw3eMyAW.js → openai-codex-responses-DW3ZYFcb.js} +3 -3
  57. package/dist/ui/assets/openai-completions-D5rB4vsV.js +5 -0
  58. package/dist/ui/assets/openai-completions-ytvpg3gQ.js +5 -0
  59. package/dist/ui/assets/openai-responses-8f3sjZ0n.js +1 -0
  60. package/dist/ui/assets/openai-responses-CF3yEStf.js +1 -0
  61. package/dist/ui/assets/openai-responses-shared-DJ_O7os_.js +12 -0
  62. package/dist/ui/assets/{openai-responses-shared-Cb6xPI3z.js → openai-responses-shared-vokXRwgV.js} +1 -1
  63. package/dist/ui/assets/provider-settings-Ug5jEGjw.js +28 -0
  64. package/dist/ui/assets/provider-settings-rnwJD-hi.js +63 -0
  65. package/dist/ui/assets/{providers-DyuaLPXN.js → providers-CM4udL4d.js} +1 -1
  66. package/dist/ui/assets/{py-realm-worker-CiPbLFx2.js → py-realm-worker-Cg-6whKO.js} +1 -1
  67. package/dist/ui/assets/{pyodide-C2X7foBW.js → pyodide-DhfjhWo1.js} +1 -1
  68. package/dist/ui/assets/{pyodide-DM3gAwss.js → pyodide-DwCMl2Ja.js} +1 -1
  69. package/dist/ui/assets/{remote-terminal-view-B3w1XsI8.js → remote-terminal-view-BjoQOWNM.js} +3 -3
  70. package/dist/ui/assets/{slicc-editor-DAgxp34c.js → slicc-editor-DlLebxYv.js} +2 -2
  71. package/dist/ui/assets/{spawn-X9L04o6Q.js → spawn-C0I0kFhe.js} +1 -1
  72. package/dist/ui/assets/{sql-wasm-CqUynK8y.js → sql-wasm-eXBRXMXY.js} +1 -1
  73. package/dist/ui/assets/telemetry-B7l3TtVP.js +1 -0
  74. package/dist/ui/assets/tool-ui-B3Bihlxa.js +1 -0
  75. package/dist/ui/assets/tool-ui-D9h6SJkp.js +1 -0
  76. package/dist/ui/assets/{upgrade-detection-Bllbwwis.js → upgrade-detection-D1m3U6nl.js} +1 -1
  77. package/dist/ui/electron-overlay-entry.js +7 -7
  78. package/dist/ui/index.html +14 -10
  79. package/dist/ui/packages/webapp/index.html +14 -10
  80. package/package.json +3 -3
  81. package/dist/ui/assets/anthropic-DqN-XhOb.js +0 -39
  82. package/dist/ui/assets/azure-openai-responses-BLClomsm.js +0 -1
  83. package/dist/ui/assets/azure-openai-responses-DucvnACK.js +0 -1
  84. package/dist/ui/assets/bedrock-camp-BNzU3faS.js +0 -5
  85. package/dist/ui/assets/bedrock-camp-DAEKkMwP.js +0 -4
  86. package/dist/ui/assets/cost-command-DszplwaG.js +0 -1
  87. package/dist/ui/assets/github-Bm46hrl1.js +0 -2
  88. package/dist/ui/assets/google-D6ha3Lvd.js +0 -1
  89. package/dist/ui/assets/google-DmmMEYi-.js +0 -1
  90. package/dist/ui/assets/mount-CBj4Y0uY.js +0 -1
  91. package/dist/ui/assets/mount-XM0MMGbg.js +0 -2
  92. package/dist/ui/assets/offscreen-client-Bm3MzxIR.js +0 -1
  93. package/dist/ui/assets/openai-completions-DeKhvKno.js +0 -5
  94. package/dist/ui/assets/openai-completions-rPhCMQf6.js +0 -5
  95. package/dist/ui/assets/openai-responses-09Y9u2o-.js +0 -1
  96. package/dist/ui/assets/openai-responses-BYVIjcrN.js +0 -1
  97. package/dist/ui/assets/openai-responses-shared-BSdTPGXk.js +0 -12
  98. package/dist/ui/assets/provider-settings-B88plz7u.js +0 -63
  99. package/dist/ui/assets/provider-settings-YeoYrehC.js +0 -28
  100. /package/dist/ui/assets/{__vite-browser-external-BvI1wG2f.js → __vite-browser-external-ChUuVKj-.js} +0 -0
  101. /package/dist/ui/assets/{addon-fit-DYt1qsAX.js → addon-fit-BCjyTVK7.js} +0 -0
  102. /package/dist/ui/assets/{addon-fit-B0aHsvmX.js → addon-fit-CVV7fTw9.js} +0 -0
  103. /package/dist/ui/assets/{azure-ai-foundry-CaxHzIfg.js → azure-ai-foundry-BS3xCper.js} +0 -0
  104. /package/dist/ui/assets/{azure-ai-foundry-Bcv3AvZm.js → azure-ai-foundry-rmhg6ipI.js} +0 -0
  105. /package/dist/ui/assets/{bsh-watchdog-DEvn8Q9x.js → bsh-watchdog-D59Tbl5E.js} +0 -0
  106. /package/dist/ui/assets/{chat-fixture-5h_JuUYl.js → chat-fixture-CZVZdKyJ.js} +0 -0
  107. /package/dist/ui/assets/{diagnostics-5umns3WY.js → diagnostics-COTIkqqc.js} +0 -0
  108. /package/dist/ui/assets/{diagnostics-BowEoTPl.js → diagnostics-DEZCW87A.js} +0 -0
  109. /package/dist/ui/assets/{dist-Ct5XR8EU.js → dist-BzFg7Vf5.js} +0 -0
  110. /package/dist/ui/assets/{dist-zlAHCcD1.js → dist-DNQ3u_NS.js} +0 -0
  111. /package/dist/ui/assets/{git-config-BMEHAjvp.js → git-config-Bl-XsMb6.js} +0 -0
  112. /package/dist/ui/assets/{git-config-DZUguBxI.js → git-config-CxvDN7N3.js} +0 -0
  113. /package/dist/ui/assets/{github-copilot-headers-C8KSO_i5.js → github-copilot-headers-B6Fvsk-Y.js} +0 -0
  114. /package/dist/ui/assets/{github-copilot-headers-DLK82thn.js → github-copilot-headers-DFUtSIuj.js} +0 -0
  115. /package/dist/ui/assets/{hash-B7CztTb_.js → hash-CQjDwcjR.js} +0 -0
  116. /package/dist/ui/assets/{hash-BwzabXYv.js → hash-CsofV07h.js} +0 -0
  117. /package/dist/ui/assets/{headers-CRXCny-K.js → headers-BCPSYYop.js} +0 -0
  118. /package/dist/ui/assets/{headers-CeeP1wvy.js → headers-DkHU-pcw.js} +0 -0
  119. /package/dist/ui/assets/{lick-manager-proxy-DwmV23nZ.js → lick-manager-proxy-B0RDZsAR.js} +0 -0
  120. /package/dist/ui/assets/{mime-types-CtECiBq5.js → mime-types-DVkB7Eq7.js} +0 -0
  121. /package/dist/ui/assets/{mount-id-BBl3dJu8.js → mount-id-Ccy4_G8i.js} +0 -0
  122. /package/dist/ui/assets/{mount-picker-popup-BLHoVG3y.js → mount-picker-popup-DJJfRF_c.js} +0 -0
  123. /package/dist/ui/assets/{openai-NzrumIkM.js → openai-CRGaNv9i.js} +0 -0
  124. /package/dist/ui/assets/{openai-Cya-48mD.js → openai-D6Fs9zDM.js} +0 -0
  125. /package/dist/ui/assets/{page-storage-sync-DEhI1xEB.js → page-storage-sync-BawH6Tr4.js} +0 -0
  126. /package/dist/ui/assets/{panel-rpc-g85bMVnq.js → panel-rpc-CgCAJfWO.js} +0 -0
  127. /package/dist/ui/assets/{panel-rpc-handlers-Cd0NeWGr.js → panel-rpc-handlers-DQC5qat8.js} +0 -0
  128. /package/dist/ui/assets/{path-utils-B73K5PBp.js → path-utils-CgbXfwyO.js} +0 -0
  129. /package/dist/ui/assets/{path-utils-CNNVZ3-O.js → path-utils-d3qOVZOu.js} +0 -0
  130. /package/dist/ui/assets/{pdfjs-BdNq0_-j.js → pdfjs-jzfXBGiL.js} +0 -0
  131. /package/dist/ui/assets/{remote-cache-BdYCICnT.js → remote-cache-DdfqyJ2A.js} +0 -0
  132. /package/dist/ui/assets/{rum-_zaGz-D7.js → rum-CMSkYNP8.js} +0 -0
  133. /package/dist/ui/assets/{sanitize-unicode-DANurEy1.js → sanitize-unicode-BD2XKRoV.js} +0 -0
  134. /package/dist/ui/assets/{sanitize-unicode-MlE1hQqG.js → sanitize-unicode-ncMKN_SD.js} +0 -0
  135. /package/dist/ui/assets/{secret-env-DES2XPkD.js → secret-env-VITP8dzh.js} +0 -0
  136. /package/dist/ui/assets/{simple-options-B0cR4giT.js → simple-options-imi_RHvn.js} +0 -0
  137. /package/dist/ui/assets/{sprinkle-bridge-channel-DJuNr3kv.js → sprinkle-bridge-channel-C5ki0FNk.js} +0 -0
  138. /package/dist/ui/assets/{sprinkle-bridge-channel-DhKQ_srk.js → sprinkle-bridge-channel-CHgv5aYx.js} +0 -0
  139. /package/dist/ui/assets/{sprinkle-proxy-Ci8JPwa_.js → sprinkle-proxy-8PgiiiqE.js} +0 -0
  140. /package/dist/ui/assets/{src-oRxlT3fT.js → src-BcpYRmFj.js} +0 -0
  141. /package/dist/ui/assets/{transform-messages-DlZklr1h.js → transform-messages-uhk4b6os.js} +0 -0
  142. /package/dist/ui/assets/{tray-follower-status-DmK3Afse.js → tray-follower-status-Bjjx7UWt.js} +0 -0
  143. /package/dist/ui/assets/{xterm-CeGiW_7a.js → xterm-B7kAlFoJ.js} +0 -0
  144. /package/dist/ui/assets/{xterm-D5M9QCcR.js → xterm-ucbPh68r.js} +0 -0
@@ -1,2 +1,2 @@
1
- import{t as e}from"./logger-B-No_qN_.js";import{c as t}from"./provider-settings-YeoYrehC.js";import{u as n}from"./bedrock-camp-DAEKkMwP.js";import{o as r}from"./simple-options-B0cR4giT.js";import{streamOpenAICompletions as i,streamSimpleOpenAICompletions as a}from"./openai-completions-rPhCMQf6.js";var o=e(`local-llm`),s=`local-llm`,c=`local`,l=`${s}-unconfigured`,u={id:s,name:`Local LLM (OpenAI-compatible)`,description:[`Connect to any OpenAI-compatible local model server.`,``,`Common base URLs:`,` • Ollama http://localhost:11434/v1`,` • LM Studio http://localhost:1234/v1`,` • llama.cpp http://localhost:8080/v1`,` • vLLM http://localhost:8000/v1`,` • mlx_lm http://localhost:8080/v1`,` • Jan http://localhost:1337/v1`,``,`Ollama needs OLLAMA_ORIGINS=* (or chrome-extension://*) so the`,`browser can reach it. macOS: launchctl setenv OLLAMA_ORIGINS "*".`].join(`
1
+ import{t as e}from"./logger-B-No_qN_.js";import{c as t}from"./provider-settings-Ug5jEGjw.js";import{u as n}from"./bedrock-camp-CqXHYC67.js";import{o as r}from"./simple-options-imi_RHvn.js";import{streamOpenAICompletions as i,streamSimpleOpenAICompletions as a}from"./openai-completions-D5rB4vsV.js";var o=e(`local-llm`),s=`local-llm`,c=`local`,l=`${s}-unconfigured`,u={id:s,name:`Local LLM (OpenAI-compatible)`,description:[`Connect to any OpenAI-compatible local model server.`,``,`Common base URLs:`,` • Ollama http://localhost:11434/v1`,` • LM Studio http://localhost:1234/v1`,` • llama.cpp http://localhost:8080/v1`,` • vLLM http://localhost:8000/v1`,` • mlx_lm http://localhost:8080/v1`,` • Jan http://localhost:1337/v1`,``,`Ollama needs OLLAMA_ORIGINS=* (or chrome-extension://*) so the`,`browser can reach it. macOS: launchctl setenv OLLAMA_ORIGINS "*".`].join(`
2
2
  `),requiresApiKey:!1,optionalApiKey:!0,apiKeyPlaceholder:`Leave empty for local servers, or paste a key for hosted endpoints`,apiKeyEnvVar:`LOCAL_LLM_API_KEY`,requiresBaseUrl:!0,baseUrlPlaceholder:`http://localhost:11434/v1`,baseUrlDescription:`Ollama: 11434 • LM Studio: 1234 • llama.cpp/mlx: 8080 • vLLM: 8000 • Jan: 1337. Trailing /v1 required.`,requiresDeployment:!0,deploymentPlaceholder:`llama3.1:8b, qwen2.5-coder:14b`,deploymentDescription:`Comma-separated model IDs from your server. List them with: curl <baseUrl>/models | jq -r .data[].id`,getModelIds:()=>{let e=d(t(s));return e.length===0?[{id:l,name:`Local LLM (set base URL + model IDs in Settings)`,api:`openai`}]:e.map(e=>({id:e,name:e,api:`openai`,input:[`text`],context_window:32e3,max_tokens:4096}))}};function d(e){return e?e.split(`,`).map(e=>e.trim()).filter(Boolean):[]}var f=`openai-completions`,p=`${s}-openai`;function m(e){return{...e,api:f}}function h(e){let t=e??{};return!t.apiKey||t.apiKey.length===0?{...t,apiKey:c}:t}var g=(e,t,n={})=>e.id===l?v(e,`Local LLM is not configured. Set base URL and model IDs in Settings.`):e.baseUrl?i(m(e),t,h(n)):v(e,`Local LLM base URL is required (e.g. http://localhost:11434/v1).`),_=(e,t,n)=>e.id===l?v(e,`Local LLM is not configured. Set base URL and model IDs in Settings.`):e.baseUrl?a(m(e),t,h(n)):v(e,`Local LLM base URL is required (e.g. http://localhost:11434/v1).`);function v(e,t){let n=r(),i={role:`assistant`,content:[],api:e.api,provider:e.provider,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`error`,errorMessage:t,timestamp:Date.now()};return queueMicrotask(()=>{n.push({type:`error`,reason:`error`,error:i}),n.end()}),n}function y(){n({api:p,stream:g,streamSimple:_})}function b(e){try{let t=new URL(e);return`${t.protocol}//${t.host}`}catch{return e.replace(/\/v1\/?$/,``).replace(/\/+$/,``)}}function x(e){let t=e.replace(/\/+$/,``);try{let e=new URL(t);if(e.pathname===``||e.pathname===`/`)return`${t}/v1`}catch{}return t}async function S(e,t,n){let r=`${x(e)}/models`,i={Accept:`application/json`};t&&t.length>0&&(i.Authorization=`Bearer ${t}`);let a=await fetch(r,{method:`GET`,headers:i,signal:n});if(!a.ok)throw Error(`GET ${r} -> ${a.status} ${a.statusText}`);let o=await a.json();return Array.isArray(o.data)?o.data.map(e=>e.id??``).filter(e=>e.length>0):[]}async function C(e,t){let n=b(e),r=await T(`${n}/api/version`,t);if(r&&typeof r.version==`string`)return{kind:`ollama`,version:r.version};let i=await T(`${n}/api/v0/models`,t);if(i&&i.object===`list`)return{kind:`lmstudio`};let a=await T(`${n}/props`,t);if(a&&`build_info`in a)return{kind:`llamacpp`,version:a.build_info?.version};let o=w(e);return o===`11434`?{kind:`ollama`}:o===`1234`?{kind:`lmstudio`}:o===`8000`?{kind:`vllm`}:o===`1337`?{kind:`jan`}:{kind:`unknown`}}function w(e){try{return new URL(e).port||null}catch{return null}}async function T(e,t){try{let n=await fetch(e,{method:`GET`,signal:t});return n.ok?await n.json():null}catch{return null}}async function E(e,t,n){let r={kind:`unknown`};try{r=await C(e,n)}catch{}try{let i=await S(e,t,n);return{ok:!0,runtime:r,models:i}}catch(t){let n=t instanceof Error?t.message:String(t),i=D(n,r.kind);return o.warn(`verifyConnection failed`,{baseUrl:e,runtime:r.kind,message:n}),{ok:!1,runtime:r,models:[],error:i}}}function D(e,t){let n=e.toLowerCase();return n.includes(`failed to fetch`)||n.includes(`networkerror`)?t===`ollama`?{kind:`cors`,message:e,hint:'Ollama rejects requests from non-localhost origins by default. Set OLLAMA_ORIGINS=* (or chrome-extension://*) and restart Ollama. macOS: `launchctl setenv OLLAMA_ORIGINS "*"` then quit and relaunch the Ollama app.'}:{kind:`connection`,message:e,hint:`Server unreachable. Check the URL and that the server is running.`}:n.includes(` 401`)||n.includes(` 403`)?{kind:`auth`,message:e,hint:`Server returned an auth error. If your endpoint requires a key, set it in Settings.`}:/-> \d{3} /.test(e)?{kind:`http`,message:e}:{kind:`unknown`,message:e}}export{u as config,C as detectRuntime,S as discoverModels,b as originOf,y as register,E as verifyConnection};
@@ -1,2 +1,2 @@
1
- import{r as e}from"./chunk-jRWAZmH_.js";import{t}from"./logger-BHrAkMIS.js";import{o as n}from"./provider-settings-B88plz7u.js";import{p as r}from"./bedrock-camp-BNzU3faS.js";import{o as i}from"./transform-messages-DlZklr1h.js";import{n as a,r as o}from"./openai-completions-DeKhvKno.js";var s=e({config:()=>d,detectRuntime:()=>C,discoverModels:()=>S,originOf:()=>b,register:()=>y,verifyConnection:()=>E});const c=t(`local-llm`),l=`local-llm`,u=`${l}-unconfigured`,d={id:l,name:`Local LLM (OpenAI-compatible)`,description:[`Connect to any OpenAI-compatible local model server.`,``,`Common base URLs:`,` • Ollama http://localhost:11434/v1`,` • LM Studio http://localhost:1234/v1`,` • llama.cpp http://localhost:8080/v1`,` • vLLM http://localhost:8000/v1`,` • mlx_lm http://localhost:8080/v1`,` • Jan http://localhost:1337/v1`,``,`Ollama needs OLLAMA_ORIGINS=* (or chrome-extension://*) so the`,`browser can reach it. macOS: launchctl setenv OLLAMA_ORIGINS "*".`].join(`
1
+ import{r as e}from"./chunk-jRWAZmH_.js";import{t}from"./logger-BHrAkMIS.js";import{o as n}from"./provider-settings-rnwJD-hi.js";import{p as r}from"./bedrock-camp-9aDiXDk5.js";import{o as i}from"./transform-messages-uhk4b6os.js";import{n as a,r as o}from"./openai-completions-ytvpg3gQ.js";var s=e({config:()=>d,detectRuntime:()=>C,discoverModels:()=>S,originOf:()=>b,register:()=>y,verifyConnection:()=>E});const c=t(`local-llm`),l=`local-llm`,u=`${l}-unconfigured`,d={id:l,name:`Local LLM (OpenAI-compatible)`,description:[`Connect to any OpenAI-compatible local model server.`,``,`Common base URLs:`,` • Ollama http://localhost:11434/v1`,` • LM Studio http://localhost:1234/v1`,` • llama.cpp http://localhost:8080/v1`,` • vLLM http://localhost:8000/v1`,` • mlx_lm http://localhost:8080/v1`,` • Jan http://localhost:1337/v1`,``,`Ollama needs OLLAMA_ORIGINS=* (or chrome-extension://*) so the`,`browser can reach it. macOS: launchctl setenv OLLAMA_ORIGINS "*".`].join(`
2
2
  `),requiresApiKey:!1,optionalApiKey:!0,apiKeyPlaceholder:`Leave empty for local servers, or paste a key for hosted endpoints`,apiKeyEnvVar:`LOCAL_LLM_API_KEY`,requiresBaseUrl:!0,baseUrlPlaceholder:`http://localhost:11434/v1`,baseUrlDescription:`Ollama: 11434 • LM Studio: 1234 • llama.cpp/mlx: 8080 • vLLM: 8000 • Jan: 1337. Trailing /v1 required.`,requiresDeployment:!0,deploymentPlaceholder:`llama3.1:8b, qwen2.5-coder:14b`,deploymentDescription:`Comma-separated model IDs from your server. List them with: curl <baseUrl>/models | jq -r .data[].id`,getModelIds:()=>{let e=f(n(l));return e.length===0?[{id:u,name:`Local LLM (set base URL + model IDs in Settings)`,api:`openai`}]:e.map(e=>({id:e,name:e,api:`openai`,input:[`text`],context_window:32e3,max_tokens:4096}))}};function f(e){return e?e.split(`,`).map(e=>e.trim()).filter(Boolean):[]}const p=`${l}-openai`;function m(e){return{...e,api:`openai-completions`}}function h(e){let t=e??{};return!t.apiKey||t.apiKey.length===0?{...t,apiKey:`local`}:t}const g=(e,t,n={})=>e.id===u?v(e,`Local LLM is not configured. Set base URL and model IDs in Settings.`):e.baseUrl?a(m(e),t,h(n)):v(e,`Local LLM base URL is required (e.g. http://localhost:11434/v1).`),_=(e,t,n)=>e.id===u?v(e,`Local LLM is not configured. Set base URL and model IDs in Settings.`):e.baseUrl?o(m(e),t,h(n)):v(e,`Local LLM base URL is required (e.g. http://localhost:11434/v1).`);function v(e,t){let n=i(),r={role:`assistant`,content:[],api:e.api,provider:e.provider,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`error`,errorMessage:t,timestamp:Date.now()};return queueMicrotask(()=>{n.push({type:`error`,reason:`error`,error:r}),n.end()}),n}function y(){r({api:p,stream:g,streamSimple:_})}function b(e){try{let t=new URL(e);return`${t.protocol}//${t.host}`}catch{return e.replace(/\/v1\/?$/,``).replace(/\/+$/,``)}}function x(e){let t=e.replace(/\/+$/,``);try{let e=new URL(t);if(e.pathname===``||e.pathname===`/`)return`${t}/v1`}catch{}return t}async function S(e,t,n){let r=`${x(e)}/models`,i={Accept:`application/json`};t&&t.length>0&&(i.Authorization=`Bearer ${t}`);let a=await fetch(r,{method:`GET`,headers:i,signal:n});if(!a.ok)throw Error(`GET ${r} -> ${a.status} ${a.statusText}`);let o=await a.json();return Array.isArray(o.data)?o.data.map(e=>e.id??``).filter(e=>e.length>0):[]}async function C(e,t){let n=b(e),r=await T(`${n}/api/version`,t);if(r&&typeof r.version==`string`)return{kind:`ollama`,version:r.version};let i=await T(`${n}/api/v0/models`,t);if(i&&i.object===`list`)return{kind:`lmstudio`};let a=await T(`${n}/props`,t);if(a&&`build_info`in a)return{kind:`llamacpp`,version:a.build_info?.version};let o=w(e);return o===`11434`?{kind:`ollama`}:o===`1234`?{kind:`lmstudio`}:o===`8000`?{kind:`vllm`}:o===`1337`?{kind:`jan`}:{kind:`unknown`}}function w(e){try{return new URL(e).port||null}catch{return null}}async function T(e,t){try{let n=await fetch(e,{method:`GET`,signal:t});return n.ok?await n.json():null}catch{return null}}async function E(e,t,n){let r={kind:`unknown`};try{r=await C(e,n)}catch{}try{let i=await S(e,t,n);return{ok:!0,runtime:r,models:i}}catch(t){let n=t instanceof Error?t.message:String(t),i=D(n,r.kind);return c.warn(`verifyConnection failed`,{baseUrl:e,runtime:r.kind,message:n}),{ok:!1,runtime:r,models:[],error:i}}}function D(e,t){let n=e.toLowerCase();return n.includes(`failed to fetch`)||n.includes(`networkerror`)?t===`ollama`?{kind:`cors`,message:e,hint:'Ollama rejects requests from non-localhost origins by default. Set OLLAMA_ORIGINS=* (or chrome-extension://*) and restart Ollama. macOS: `launchctl setenv OLLAMA_ORIGINS "*"` then quit and relaunch the Ollama app.'}:{kind:`connection`,message:e,hint:`Server unreachable. Check the URL and that the server is running.`}:n.includes(` 401`)||n.includes(` 403`)?{kind:`auth`,message:e,hint:`Server returned an auth error. If your endpoint requires a key, set it in Settings.`}:/-> \d{3} /.test(e)?{kind:`http`,message:e}:{kind:`unknown`,message:e}}export{s as n,d as t};
@@ -1 +1 @@
1
- import{o as e,r as t}from"./chunk-jRWAZmH_.js";import{n}from"./path-utils-B73K5PBp.js";import{t as r}from"./mime-types-CtECiBq5.js";function i(e,t){if(typeof t!=`string`||!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(t))throw Error(`${e} must use an exact semver version in package.json`);return t}const a=`v20.0.0-js-shim`;let o=null;function s(e){let t=e.length>1&&e.endsWith(`/`)?e.slice(0,-1):e,n=t.lastIndexOf(`/`);return n>=0?t.slice(n+1):t}function c(e){let t=e.lastIndexOf(`/`);return t<=0?`/`:e.slice(0,t)}function l(e,t){return e===`/`?`/${t}`:`${e}/${t}`}function u(e){if(/^(https?:\/\/|about:|file:|chrome:)/i.test(e))return!0;try{return new URL(e).protocol.length>0}catch{return!1}}function d(e,t){return e===`/`?t.startsWith(`/`):t===e||t.startsWith(`${e}/`)}function f(e){return Array.from(e).map(e=>e.toString(16).padStart(2,`0`)).join(``)}function p(e){return e==null?``:e instanceof Uint8Array?`x'${f(e)}'`:String(e)}function m(e){return r(e)}function h(e){let t=typeof chrome<`u`&&!!chrome?.runtime?.id,n=`/preview${e}`;return t?chrome.runtime.getURL(n):`${typeof window<`u`&&window.location?.origin?window.location.origin:`http://localhost:5710`}${n}`}function g(e){return e.length===0||e.startsWith(`/`)?!1:!e.split(`/`).some(e=>e===`..`)}function _(e,t){return n(`${e}/${t}`)}function v(e,t){let n=import.meta.resolve;if(typeof n==`function`)try{return new URL(`./`,n(e))}catch{}return new URL(t,import.meta.url)}function y(){return typeof process<`u`&&!!process.versions?.node}function b(){return typeof chrome<`u`&&!!chrome?.runtime?.id}async function x(){return o||=(async()=>{let t=(await import(`./sql-wasm-CqUynK8y.js`).then(t=>e(t.default,1))).default,n=y()?v(`sql.js/dist/sql-wasm.js`,`../../../../../node_modules/sql.js/dist/`).toString():`https://sql.js.org/dist/`;return t({locateFile:e=>`${n}${e}`})})(),o}var S=t({MAGICK_WASM_CDN:()=>T,MIME_TO_MAGICK_FORMAT:()=>C,getMagick:()=>D,isExtension:()=>E});const C={"image/jpeg":`JPEG`,"image/png":`PNG`,"image/gif":`GIF`,"image/webp":`WEBP`,"image/bmp":`BMP`,"image/tiff":`TIFF`,"image/avif":`AVIF`};let w=null;const T=`https://cdn.jsdelivr.net/npm/@imagemagick/magick-wasm@0.0.38/dist/`,E=typeof chrome<`u`&&!!chrome?.runtime?.id;async function D(){return w||=(async()=>{try{let e=await import(`./dist-zlAHCcD1.js`);if(E){let t=chrome.runtime.getURL(`magick.wasm`),n=await fetch(t);if(!n.ok)throw Error(`Failed to fetch magick.wasm: ${n.status} ${n.statusText}`);let r=new Uint8Array(await n.arrayBuffer());await e.initializeImageMagick(r)}else{let t=y()?new URL(`/assets/index-BeMnZBAU.js`,``+import.meta.url).toString():T,n=new URL(`magick.wasm`,t);await e.initializeImageMagick(n)}return e}catch(e){throw w=null,e}})(),w}export{_,m as a,p as c,u as d,y as f,i as g,v as h,s as i,x as l,l as m,S as n,c as o,g as p,a as r,d as s,D as t,b as u,h as v};
1
+ import{o as e,r as t}from"./chunk-jRWAZmH_.js";import{n}from"./path-utils-CgbXfwyO.js";import{t as r}from"./mime-types-DVkB7Eq7.js";function i(e,t){if(typeof t!=`string`||!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(t))throw Error(`${e} must use an exact semver version in package.json`);return t}const a=`v20.0.0-js-shim`;let o=null;function s(e){let t=e.length>1&&e.endsWith(`/`)?e.slice(0,-1):e,n=t.lastIndexOf(`/`);return n>=0?t.slice(n+1):t}function c(e){let t=e.lastIndexOf(`/`);return t<=0?`/`:e.slice(0,t)}function l(e,t){return e===`/`?`/${t}`:`${e}/${t}`}function u(e){if(/^(https?:\/\/|about:|file:|chrome:)/i.test(e))return!0;try{return new URL(e).protocol.length>0}catch{return!1}}function d(e,t){return e===`/`?t.startsWith(`/`):t===e||t.startsWith(`${e}/`)}function f(e){return Array.from(e).map(e=>e.toString(16).padStart(2,`0`)).join(``)}function p(e){return e==null?``:e instanceof Uint8Array?`x'${f(e)}'`:String(e)}function m(e){return r(e)}function h(e){let t=typeof chrome<`u`&&!!chrome?.runtime?.id,n=`/preview${e}`;return t?chrome.runtime.getURL(n):`${typeof window<`u`&&window.location?.origin?window.location.origin:`http://localhost:5710`}${n}`}function g(e){return e.length===0||e.startsWith(`/`)?!1:!e.split(`/`).some(e=>e===`..`)}function _(e,t){return n(`${e}/${t}`)}function v(e,t){let n=import.meta.resolve;if(typeof n==`function`)try{return new URL(`./`,n(e))}catch{}return new URL(t,import.meta.url)}function y(){return typeof process<`u`&&!!process.versions?.node}function b(){return typeof chrome<`u`&&!!chrome?.runtime?.id}async function x(){return o||=(async()=>{let t=(await import(`./sql-wasm-eXBRXMXY.js`).then(t=>e(t.default,1))).default,n=y()?v(`sql.js/dist/sql-wasm.js`,`../../../../../node_modules/sql.js/dist/`).toString():`https://sql.js.org/dist/`;return t({locateFile:e=>`${n}${e}`})})(),o}var S=t({MAGICK_WASM_CDN:()=>T,MIME_TO_MAGICK_FORMAT:()=>C,getMagick:()=>D,isExtension:()=>E});const C={"image/jpeg":`JPEG`,"image/png":`PNG`,"image/gif":`GIF`,"image/webp":`WEBP`,"image/bmp":`BMP`,"image/tiff":`TIFF`,"image/avif":`AVIF`};let w=null;const T=`https://cdn.jsdelivr.net/npm/@imagemagick/magick-wasm@0.0.38/dist/`,E=typeof chrome<`u`&&!!chrome?.runtime?.id;async function D(){return w||=(async()=>{try{let e=await import(`./dist-DNQ3u_NS.js`);if(E){let t=chrome.runtime.getURL(`magick.wasm`),n=await fetch(t);if(!n.ok)throw Error(`Failed to fetch magick.wasm: ${n.status} ${n.statusText}`);let r=new Uint8Array(await n.arrayBuffer());await e.initializeImageMagick(r)}else{let t=y()?new URL(`/assets/index-BeMnZBAU.js`,``+import.meta.url).toString():T,n=new URL(`magick.wasm`,t);await e.initializeImageMagick(n)}return e}catch(e){throw w=null,e}})(),w}export{_,m as a,p as c,u as d,y as f,i as g,v as h,s as i,x as l,l as m,S as n,c as o,g as p,a as r,d as s,D as t,b as u,h as v};
@@ -1 +1 @@
1
- import{t as e}from"./preload-helper-ca-nBW7U.js";import{n as t}from"./index-BxaasNW5.js";var n={"image/jpeg":`JPEG`,"image/png":`PNG`,"image/gif":`GIF`,"image/webp":`WEBP`,"image/bmp":`BMP`,"image/tiff":`TIFF`,"image/avif":`AVIF`},r=null,i=`https://cdn.jsdelivr.net/npm/@imagemagick/magick-wasm@0.0.38/dist/`,a=typeof chrome<`u`&&!!chrome?.runtime?.id;async function o(){return r||=(async()=>{try{let n=await e(()=>import(`./dist-zlAHCcD1.js`),[]);if(a){let e=chrome.runtime.getURL(`magick.wasm`),t=await fetch(e);if(!t.ok)throw Error(`Failed to fetch magick.wasm: ${t.status} ${t.statusText}`);let r=new Uint8Array(await t.arrayBuffer());await n.initializeImageMagick(r)}else{let e=t()?new URL(`/assets/index-BeMnZBAU.js`,``+import.meta.url).toString():i,r=new URL(`magick.wasm`,e);await n.initializeImageMagick(r)}return n}catch(e){throw r=null,e}})(),r}export{i as MAGICK_WASM_CDN,n as MIME_TO_MAGICK_FORMAT,o as getMagick,a as isExtension};
1
+ import{t as e}from"./preload-helper-ca-nBW7U.js";import{n as t}from"./index-BqTqpjeH.js";var n={"image/jpeg":`JPEG`,"image/png":`PNG`,"image/gif":`GIF`,"image/webp":`WEBP`,"image/bmp":`BMP`,"image/tiff":`TIFF`,"image/avif":`AVIF`},r=null,i=`https://cdn.jsdelivr.net/npm/@imagemagick/magick-wasm@0.0.38/dist/`,a=typeof chrome<`u`&&!!chrome?.runtime?.id;async function o(){return r||=(async()=>{try{let n=await e(()=>import(`./dist-DNQ3u_NS.js`),[]);if(a){let e=chrome.runtime.getURL(`magick.wasm`),t=await fetch(e);if(!t.ok)throw Error(`Failed to fetch magick.wasm: ${t.status} ${t.statusText}`);let r=new Uint8Array(await t.arrayBuffer());await n.initializeImageMagick(r)}else{let e=t()?new URL(`/assets/index-BeMnZBAU.js`,``+import.meta.url).toString():i,r=new URL(`magick.wasm`,e);await n.initializeImageMagick(r)}return n}catch(e){throw r=null,e}})(),r}export{i as MAGICK_WASM_CDN,n as MIME_TO_MAGICK_FORMAT,o as getMagick,a as isExtension};