sliccy 3.9.0 → 3.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/dist/ui/assets/__vite-browser-external-ccPY92C6.js +1 -0
  2. package/dist/ui/assets/adobe-B_4d1GIa.js +2 -0
  3. package/dist/ui/assets/adobe-DixSD4gc.js +1 -0
  4. package/dist/ui/assets/{agent-bridge-jV-wd2rf.js → agent-bridge-BgnzBzBy.js} +1 -1
  5. package/dist/ui/assets/{agent-message-to-chat-B8V1gOsM.js → agent-message-to-chat-DXZVGJxR.js} +1 -1
  6. package/dist/ui/assets/{anthropic-mL3ywMPV.js → anthropic-BnevdpoS.js} +4 -4
  7. package/dist/ui/assets/{anthropic-iVM3-a35.js → anthropic-NzuFTQTW.js} +5 -5
  8. package/dist/ui/assets/{apps-DRVsIBBx.js → apps-lRgud8Fh.js} +1 -1
  9. package/dist/ui/assets/{azure-openai-Cx5Pj5oC.js → azure-openai-B7Pr7m__.js} +1 -1
  10. package/dist/ui/assets/azure-openai-DykC0YtR.js +1 -0
  11. package/dist/ui/assets/{azure-openai-responses-CXt7G9Am.js → azure-openai-responses-Bhb_aioL.js} +1 -1
  12. package/dist/ui/assets/{azure-openai-responses-nU5pAWHz.js → azure-openai-responses-JJr9M-EF.js} +1 -1
  13. package/dist/ui/assets/{bsh-watchdog-CEYald81.js → bsh-watchdog-B_vUSTC5.js} +1 -1
  14. package/dist/ui/assets/{cdp-DgQAS7RO.js → cdp-DXmFwQ4j.js} +4 -4
  15. package/dist/ui/assets/{cloud-CCHD45tb.js → cloud-BDR25NRv.js} +1 -1
  16. package/dist/ui/assets/cost-command-BWXehnvl.js +1 -0
  17. package/dist/ui/assets/{dist-CltZJzbd.js → dist-BBhtjNOt.js} +1 -1
  18. package/dist/ui/assets/{dist-tLLu0PBg.js → dist-CrC-F8vu.js} +1 -1
  19. package/dist/ui/assets/{dist-9RlRmGag.js → dist-DElqKLgF.js} +1 -1
  20. package/dist/ui/assets/{dist-ljtB3O-J.js → dist-DQRYKv91.js} +1 -1
  21. package/dist/ui/assets/{dist-ChvbMSOY.js → dist-Dnh15m1q.js} +1 -1
  22. package/dist/ui/assets/{dist-cZSF0917.js → dist-jdlcYxrm.js} +1 -1
  23. package/dist/ui/assets/{dist-CZcDRTma.js → dist-k2Xmqc09.js} +3 -3
  24. package/dist/ui/assets/{es-B67k6SZx.js → es-YXgEFCr4.js} +5 -5
  25. package/dist/ui/assets/{follower-sprinkle-bridge-DSIoRDT8.js → follower-sprinkle-bridge-pM_9mh8K.js} +1 -1
  26. package/dist/ui/assets/github-BGd7Ze-G.js +2 -0
  27. package/dist/ui/assets/github-CeT5IqOp.js +1 -0
  28. package/dist/ui/assets/google-Bu_dHS7k.js +1 -0
  29. package/dist/ui/assets/{google-CO7YjBwe.js → google-CGKQ3ixr.js} +1 -1
  30. package/dist/ui/assets/{google-shared-BzCwNN5i.js → google-shared-CjxLMtrx.js} +4 -4
  31. package/dist/ui/assets/{google-shared-LxsopJXA.js → google-shared-DbuMfloN.js} +3 -3
  32. package/dist/ui/assets/{google-vertex-DA-3dPhk.js → google-vertex-B4NrC4n7.js} +1 -1
  33. package/dist/ui/assets/{google-vertex-CmQxc5zO.js → google-vertex-CHVJnDpB.js} +1 -1
  34. package/dist/ui/assets/{intercepted-oauth-DiLTU8Ii.js → intercepted-oauth-DBh2Mm3h.js} +1 -1
  35. package/dist/ui/assets/{js-realm-worker-B3OvP1qG.js → js-realm-worker-C2Z2nmxV.js} +1 -1
  36. package/dist/ui/assets/{kernel-worker-BC6z3xjS.js → kernel-worker-Ch_A9Scg.js} +952 -931
  37. package/dist/ui/assets/lick-ws-bridge-B6CkpZVL.js +1 -0
  38. package/dist/ui/assets/{local-llm-RHAVtkGQ.js → local-llm-CxzXCg9G.js} +2 -2
  39. package/dist/ui/assets/{magick-wasm-C7EkxjX-.js → magick-wasm-Bches_n_.js} +1 -1
  40. package/dist/ui/assets/{main-BHLxIMys.js → main-C_dVS7-y.js} +181 -182
  41. package/dist/ui/assets/{mistral-Dx-x1MfD.js → mistral-D0LaZl63.js} +4 -4
  42. package/dist/ui/assets/{mistral-Chz686k5.js → mistral-DWpfhgsB.js} +3 -3
  43. package/dist/ui/assets/{nuke-command-qvwqiQHy.js → nuke-command-Cc6iklUj.js} +1 -1
  44. package/dist/ui/assets/{oauth-CG3epMwm.js → oauth-CEhFWL1c.js} +1 -1
  45. package/dist/ui/assets/{oauth-bootstrap-CollSvx8.js → oauth-bootstrap-BdH4T7WF.js} +2 -2
  46. package/dist/ui/assets/{oauth-service-Bby2XbV9.js → oauth-service-DOEbnD4i.js} +1 -1
  47. package/dist/ui/assets/{oauth-service-CsGFgUI2.js → oauth-service-DPIHRVv7.js} +1 -1
  48. package/dist/ui/assets/{offscreen-client-BgFTGLb6.js → offscreen-client-gxy-5P83.js} +1 -1
  49. package/dist/ui/assets/{onboarding-orchestrator-BdKyK2bb.js → onboarding-orchestrator-D7leZXH1.js} +1 -1
  50. package/dist/ui/assets/{openai-BR_xAflc.js → openai-Cn5LRPCm.js} +4 -4
  51. package/dist/ui/assets/{openai-codex-responses-CYZE7Ri0.js → openai-codex-responses-BHw7XWOx.js} +4 -4
  52. package/dist/ui/assets/{openai-codex-responses-DrQ-9KYF.js → openai-codex-responses-CDYRLhQd.js} +1 -1
  53. package/dist/ui/assets/{openai-completions-Crq53Ayo.js → openai-completions-C0AaFvwW.js} +3 -3
  54. package/dist/ui/assets/{openai-responses-DZWvz_eT.js → openai-responses-B9BXP7cL.js} +1 -1
  55. package/dist/ui/assets/{openai-responses-NpY-7Q9b.js → openai-responses-DRumuMm3.js} +1 -1
  56. package/dist/ui/assets/{openai-responses-shared-D1mo55LS.js → openai-responses-shared-A2w0cKxU.js} +4 -4
  57. package/dist/ui/assets/{openai-responses-shared-D8o41Qqd.js → openai-responses-shared-DgY27N8N.js} +1 -1
  58. package/dist/ui/assets/{openrouter-DZjPMgbr.js → openrouter-B-ud7Vxe.js} +1 -1
  59. package/dist/ui/assets/{openrouter-CatA7kSh.js → openrouter-B_cu1ol4.js} +1 -1
  60. package/dist/ui/assets/{panel-rpc-handlers-BJ-wBZiF.js → panel-rpc-handlers-DEhRuNm8.js} +1 -1
  61. package/dist/ui/assets/{pdfjs-CW51NNE6.js → pdfjs-C3ks1z_T.js} +2 -2
  62. package/dist/ui/assets/provider-BIWdVu7k.js +2 -0
  63. package/dist/ui/assets/provider-C2_eeNbs.js +1 -0
  64. package/dist/ui/assets/provider-store-access-D6Qj8fkB.js +1 -0
  65. package/dist/ui/assets/provider-store-access-E59loJtG.js +1 -0
  66. package/dist/ui/assets/{proxied-fetch-BQDZVMp5.js → proxied-fetch-Q6281hOW.js} +1 -1
  67. package/dist/ui/assets/{py-realm-worker-zrXeREDr.js → py-realm-worker-BDTXsbRf.js} +1 -1
  68. package/dist/ui/assets/{pyodide-CoTxJ1oh.js → pyodide-BX6DPeWg.js} +2 -2
  69. package/dist/ui/assets/{pyodide-Bv1KSh-_.js → pyodide-M7UA50Oh.js} +1 -1
  70. package/dist/ui/assets/{remote-terminal-view-D1HhRHw_.js → remote-terminal-view-DmGgxHAM.js} +3 -3
  71. package/dist/ui/assets/{secret-env-7EK-8pGt.js → secret-env-BzVan238.js} +1 -1
  72. package/dist/ui/assets/{slicc-editor-BySG3JWk.js → slicc-editor-CUZQugi0.js} +2 -2
  73. package/dist/ui/assets/{spawn-Dqw1vU56.js → spawn-DEw_MJS6.js} +1 -1
  74. package/dist/ui/assets/{sql-wasm-1BJYGQai.js → sql-wasm-DvnIUql_.js} +1 -1
  75. package/dist/ui/assets/store-UPMR_zFT.js +1 -0
  76. package/dist/ui/assets/{tray-leave-runtime-oNz7QQtO.js → tray-leave-runtime-wk0kHiSi.js} +1 -1
  77. package/dist/ui/assets/upgrade-detection-_vMRqUBY.js +1 -0
  78. package/dist/ui/assets/xai-grok-CdElFNC4.js +1 -0
  79. package/dist/ui/assets/xai-grok-D5kLpuob.js +1 -0
  80. package/dist/ui/assets/{xai-grok-sanitize-L5nUbDcW.js → xai-grok-sanitize-CR2JoOJd.js} +1 -1
  81. package/dist/ui/assets/{xai-grok-sanitize-C7TgWvwD.js → xai-grok-sanitize-CV6qvaEF.js} +1 -1
  82. package/dist/ui/index.html +2 -2
  83. package/dist/ui/packages/webapp/cloud/index.html +2 -2
  84. package/dist/ui/packages/webapp/index.html +2 -2
  85. package/package.json +2 -2
  86. package/dist/ui/assets/__vite-browser-external-B0Aozsa-.js +0 -1
  87. package/dist/ui/assets/active-transport-DHcaBd4j.js +0 -1
  88. package/dist/ui/assets/adobe-Bt5g8KQ8.js +0 -1
  89. package/dist/ui/assets/adobe-CnR62Zz4.js +0 -2
  90. package/dist/ui/assets/azure-openai-JPzwToVw.js +0 -1
  91. package/dist/ui/assets/cost-command-CSFioZjM.js +0 -1
  92. package/dist/ui/assets/dist-D0kTaNET.js +0 -43
  93. package/dist/ui/assets/github-CK_6pj34.js +0 -2
  94. package/dist/ui/assets/github-vJrAPitt.js +0 -1
  95. package/dist/ui/assets/google-C_70cIVo.js +0 -1
  96. package/dist/ui/assets/hash-iitWbNjK.js +0 -1
  97. package/dist/ui/assets/lick-ws-bridge-BySQiZfZ.js +0 -1
  98. package/dist/ui/assets/provider--7zezZNA.js +0 -1
  99. package/dist/ui/assets/provider-BbarSgl8.js +0 -2
  100. package/dist/ui/assets/provider-store-access-CcWgx9ta.js +0 -1
  101. package/dist/ui/assets/provider-store-access-IMgEIUH6.js +0 -1
  102. package/dist/ui/assets/store-DrwbCi-e.js +0 -1
  103. package/dist/ui/assets/upgrade-detection-CaXKHhN-.js +0 -1
  104. package/dist/ui/assets/xai-grok-5wPTQels.js +0 -1
  105. package/dist/ui/assets/xai-grok-Dw1VTeHT.js +0 -1
  106. /package/dist/ui/assets/{active-transport-Clj9slj7.js → active-transport-BIjzxdwv.js} +0 -0
  107. /package/dist/ui/assets/{addon-fit-CBG3Hsec.js → addon-fit-CuuUKmBe.js} +0 -0
  108. /package/dist/ui/assets/{addon-fit-CUt9lrQO.js → addon-fit-DthTIhi3.js} +0 -0
  109. /package/dist/ui/assets/{azure-ai-foundry-B4QrVklT.js → azure-ai-foundry-Bo0FAJyX.js} +0 -0
  110. /package/dist/ui/assets/{azure-ai-foundry-CGkSI_4f.js → azure-ai-foundry-CzkPLAhp.js} +0 -0
  111. /package/dist/ui/assets/{chat-fixture-ChGRNFda.js → chat-fixture-CLDS_yKK.js} +0 -0
  112. /package/dist/ui/assets/{git-config-DcQbkikl.js → git-config-DLJIrKjL.js} +0 -0
  113. /package/dist/ui/assets/{github-copilot-headers-C5CocKfn.js → github-copilot-headers-DZtWWv8W.js} +0 -0
  114. /package/dist/ui/assets/{global-db-DL3jdM9H.js → global-db-CbuLl-zx.js} +0 -0
  115. /package/dist/ui/assets/{hash-C3GX0Zuo.js → hash-yQufAZII.js} +0 -0
  116. /package/dist/ui/assets/{headers-qDMOQQGF.js → headers-DO1UzNKu.js} +0 -0
  117. /package/dist/ui/assets/{lick-manager-proxy-1L0EGIWD.js → lick-manager-proxy-B749hY0Y.js} +0 -0
  118. /package/dist/ui/assets/{modulepreload-polyfill-wMinxHhO.js → modulepreload-polyfill-Dezn_h7o.js} +0 -0
  119. /package/dist/ui/assets/{page-storage-sync-sv2ogNKh.js → page-storage-sync-BMnuL0eG.js} +0 -0
  120. /package/dist/ui/assets/{rum-z5wz4Dnj.js → rum-DW84CvBs.js} +0 -0
  121. /package/dist/ui/assets/{sanitize-unicode-B1z_Y4Dq.js → sanitize-unicode-DmIE6hZJ.js} +0 -0
  122. /package/dist/ui/assets/{sprinkle-bridge-channel-Bw5UaanD.js → sprinkle-bridge-channel-DwDzRdg8.js} +0 -0
  123. /package/dist/ui/assets/{sprinkle-bridge-channel-ChD0T07C.js → sprinkle-bridge-channel-gvVv6R_O.js} +0 -0
  124. /package/dist/ui/assets/{sprinkle-proxy-D6wqmewK.js → sprinkle-proxy-B4nH2NxC.js} +0 -0
  125. /package/dist/ui/assets/{src-DRmQ1wr-.js → src-C9oNvq2b.js} +0 -0
  126. /package/dist/ui/assets/{worker-B1VFCur7.js → worker-D1KsWRGg.js} +0 -0
  127. /package/dist/ui/assets/{xai-grok-errors-C6VnD_MH.js → xai-grok-errors-ByEMMSoz.js} +0 -0
  128. /package/dist/ui/assets/{xai-grok-errors-BdY43UIn.js → xai-grok-errors-bnlIBeu-.js} +0 -0
  129. /package/dist/ui/assets/{xai-grok-models-BndZgIFZ.js → xai-grok-models-B0Tf--xf.js} +0 -0
  130. /package/dist/ui/assets/{xai-grok-models-C9MIa-Aj.js → xai-grok-models-CeEBaUMC.js} +0 -0
  131. /package/dist/ui/assets/{xterm-DLCsxsB1.js → xterm-B5O_KJMf.js} +0 -0
  132. /package/dist/ui/assets/{xterm-VndicwFp.js → xterm-DooSxjI5.js} +0 -0
@@ -1 +0,0 @@
1
- import{$ as e,F as t,G as n,M as r,Q as i,R as a,_ as o,p as s,q as c,v as l}from"./kernel-worker-BC6z3xjS.js";import{getOAuthPageOrigin as u}from"./oauth-service-CsGFgUI2.js";var d={clientId:``,scopes:`repo,read:user,user:email`};function f(){try{let t=localStorage.getItem(e);if(t)return t.replace(/\/$/,``)}catch{}return i}async function p(e){let t=`${f()}/oauth/token`,n=await fetch(t,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({provider:e.provider,code:e.code,redirect_uri:e.redirectUri})}),r;try{r=await n.json()}catch{throw Error(`Token exchange failed (HTTP ${n.status}): non-JSON response`)}if(!n.ok&&n.status!==200){let e=r.error_description??r.error??`Token exchange failed (HTTP ${n.status})`;throw Error(e)}if(r.error){let e=r.error_description??r.error;throw Error(e)}return r}async function m(e){let t=`${f()}/oauth/revoke`,n=await fetch(t,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({provider:e.provider,access_token:e.accessToken})});if(!(n.status===204||n.ok)){if(n.status===400)try{if((await n.json()).error===`unsupported`)return}catch{}throw Error(`Token revocation failed (HTTP ${n.status})`)}}const h=Object.assign({"/packages/webapp/providers/github-config.json":d})[`/packages/webapp/providers/github-config.json`]??{clientId:``,scopes:`repo,read:user,user:email`};let g=null,_=null;async function v(){if(g)return g;if(y){try{let e=await fetch(`${f()}/api/runtime-config`);if(e.ok){let t=await e.json();if(t.oauth?.github)return g=t.oauth.github,g}}catch{}return h.clientId}try{let e=await fetch(`/api/runtime-config`);if(e.ok){let t=await e.json();if(t.oauth?.github)return g=t.oauth.github,g;if(t.trayWorkerBaseUrl){_=t.trayWorkerBaseUrl;let e=await fetch(`${t.trayWorkerBaseUrl}/api/runtime-config`);if(e.ok){let t=await e.json();if(t.oauth?.github)return g=t.oauth.github,g}}}}catch{}return h.clientId}const y=typeof chrome<`u`&&!!chrome?.runtime?.id;function b(){return s().find(e=>e.providerId===`github`)}function x(e){try{return new URL(e).searchParams.get(`code`)}catch{return null}}async function S(e){try{let t=await fetch(`https://api.github.com/user`,{headers:{Authorization:`Bearer ${e}`,Accept:`application/vnd.github+json`}});if(t.ok){let e=await t.json();return{name:e.name||e.login,avatar:e.avatar_url,login:e.login,id:e.id}}}catch(e){console.warn(`[github] Failed to fetch user profile:`,e instanceof Error?e.message:String(e))}return{}}function C(e,t){return`${e}+${t}@users.noreply.github.com`}async function w(e){try{let{VirtualFS:t}=await import(`./kernel-worker-BC6z3xjS.js`);await(await t.create({dbName:c})).writeFile(`/workspace/.git/github-token`,e),typeof window<`u`&&window.dispatchEvent(new CustomEvent(`github-token-changed`))}catch(e){console.warn(`[github] Failed to write git token:`,e instanceof Error?e.message:String(e))}}async function T(){try{let{VirtualFS:e}=await import(`./kernel-worker-BC6z3xjS.js`);await(await e.create({dbName:c})).rm(`/workspace/.git/github-token`),typeof window<`u`&&window.dispatchEvent(new CustomEvent(`github-token-changed`))}catch{}}async function E(e){if(!(!e.login||e.id===void 0))try{let{VirtualFS:t}=await import(`./kernel-worker-BC6z3xjS.js`),{readGlobalGitConfigValue:n,writeGlobalGitConfigValue:r}=await import(`./kernel-worker-BC6z3xjS.js`),i=await t.create({dbName:c}),a=e.name||e.login,o=C(e.id,e.login);!await n(i,`user.name`)&&a&&await r(i,`user.name`,a),await n(i,`user.email`)||await r(i,`user.email`,o)}catch(e){console.warn(`[github] Failed to seed git identity:`,e instanceof Error?e.message:String(e))}}async function D(){let e=b();if(!e?.accessToken)throw Error(`Not logged in to GitHub — please log in first`);return e.accessToken}const O=`https://models.github.ai/inference`,k=[{id:`openai/gpt-4.1`,name:`GPT-4.1`,api:`openai`,context_window:1047576,max_tokens:32768,reasoning:!1,input:[`text`,`image`]},{id:`openai/gpt-4.1-mini`,name:`GPT-4.1 mini`,api:`openai`,context_window:1047576,max_tokens:32768,reasoning:!1,input:[`text`,`image`]}];function A(e,t){return{type:`error`,reason:`error`,error:{role:`assistant`,content:[],api:`github-openai`,provider:`github`,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`error`,errorMessage:t instanceof Error?t.message:String(t),timestamp:Date.now()}}}const j=(e,t,n={})=>{let i=a();return(async()=>{try{let a=await D(),o=r({...e,baseUrl:O,api:`openai-completions`,compat:{...e.compat,supportsStore:!1,supportsDeveloperRole:!1,supportsUsageInStreaming:!1,maxTokensField:`max_tokens`}},t,{...n,apiKey:a});for await(let e of o)i.push(e);i.end()}catch(t){console.error(`[github] Stream error:`,t instanceof Error?t.message:String(t)),i.push(A(e,t)),i.end()}})(),i},M=(e,n,r)=>{let i=a();return(async()=>{try{let a=await D(),o=t({...e,baseUrl:O,api:`openai-completions`,compat:{...e.compat,supportsStore:!1,supportsDeveloperRole:!1,supportsUsageInStreaming:!1,maxTokensField:`max_tokens`}},n,{...r,apiKey:a});for await(let e of o)i.push(e);i.end()}catch(t){console.error(`[github] Stream error:`,t instanceof Error?t.message:String(t)),i.push(A(e,t)),i.end()}})(),i},N={id:`github`,name:`GitHub`,description:`GitHub Models + git authentication — login with your GitHub account`,requiresApiKey:!1,requiresBaseUrl:!1,isOAuth:!0,defaultModelId:`gpt-4.1`,oauthTokenDomains:[`github.com`,`*.github.com`,`api.github.com`,`raw.githubusercontent.com`,`models.github.ai`],getModelIds:()=>k,onOAuthLogin:async(e,t,n)=>{let r=await v();if(!r)throw Error(`GitHub OAuth not configured — no client ID available`);let i=n?.scopes??h.scopes,a=y?null:await u(),s=y?`${f()}/auth/callback`:`${_??a.origin}/auth/callback`,c=crypto.randomUUID(),d=y?chrome.runtime.id:``,m=y?{source:`extension`,extensionId:d,path:`/github`,nonce:c}:{port:parseInt(new URL(a.href).port||`5710`,10),path:`/auth/callback`,nonce:c},g=btoa(JSON.stringify(m)),b=c,C=new URLSearchParams({client_id:r,scope:i,redirect_uri:s});g&&C.set(`state`,g);let D=await e(`https://github.com/login/oauth/authorize?${C}`);if(!D)return;if(b)try{if(new URL(D).searchParams.get(`nonce`)!==b){console.error(`[github] OAuth nonce mismatch — possible CSRF`);return}}catch(e){console.warn(`[github] Nonce check skipped (URL parse failed):`,e instanceof Error?e.message:String(e))}let O=x(D);if(!O){console.error(`[github] Could not extract authorization code from redirect URL`);return}let k=await p({provider:`github`,code:O,redirectUri:s}),A=await S(k.access_token);await l({providerId:`github`,accessToken:k.access_token,userName:A.name,userAvatar:A.avatar});let j=o(`github`)?.maskedValue;j?await w(j):await T(),await E(A),t()},onOAuthLogout:async()=>{let e=b();e?.accessToken&&await m({provider:`github`,accessToken:e.accessToken}).catch(e=>console.warn(`[github] Token revocation failed:`,e instanceof Error?e.message:String(e))),await T(),await l({providerId:`github`,accessToken:``})}};function P(){n({api:`github-openai`,stream:j,streamSimple:M})}export{C as buildNoreplyEmail,N as config,x as extractCodeFromUrl,D as getValidAccessToken,P as register,E as syncGitIdentityFromGitHub};
@@ -1 +0,0 @@
1
- import{G as e,H as t,V as n,y as r,z as i}from"./main-BHLxIMys.js";import{t as a}from"./sanitize-unicode-B1z_Y4Dq.js";import{a as o,i as s,n as c,o as l,r as u,s as d,t as f}from"./google-shared-LxsopJXA.js";var p=0,m=(t,r,a)=>{let o=new i;return(async()=>{let i={role:`assistant`,content:[],api:`google-generative-ai`,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=g(t,a?.apiKey||e(t.provider)||``,a?.headers),d=_(t,r,a),f=await a?.onPayload?.(d,t);f!==void 0&&(d=f);let m=await c.models.generateContentStream(d);o.push({type:`start`,partial:i});let h=null,v=i.content,y=()=>v.length-1;for await(let e of m){i.responseId||=e.responseId;let r=e.candidates?.[0];if(r?.content?.parts)for(let e of r.content.parts){if(e.text!==void 0){let t=u(e);(!h||t&&h.type!==`thinking`||!t&&h.type!==`text`)&&(h&&(h.type===`text`?o.push({type:`text_end`,contentIndex:v.length-1,content:h.text,partial:i}):o.push({type:`thinking_end`,contentIndex:y(),content:h.thinking,partial:i})),t?(h={type:`thinking`,thinking:``,thinkingSignature:void 0},i.content.push(h),o.push({type:`thinking_start`,contentIndex:y(),partial:i})):(h={type:`text`,text:``},i.content.push(h),o.push({type:`text_start`,contentIndex:y(),partial:i}))),h.type===`thinking`?(h.thinking+=e.text,h.thinkingSignature=l(h.thinkingSignature,e.thoughtSignature),o.push({type:`thinking_delta`,contentIndex:y(),delta:e.text,partial:i})):(h.text+=e.text,h.textSignature=l(h.textSignature,e.thoughtSignature),o.push({type:`text_delta`,contentIndex:y(),delta:e.text,partial:i}))}if(e.functionCall){h&&=(h.type===`text`?o.push({type:`text_end`,contentIndex:y(),content:h.text,partial:i}):o.push({type:`thinking_end`,contentIndex:y(),content:h.thinking,partial:i}),null);let t=e.functionCall.id,n={type:`toolCall`,id:!t||i.content.some(e=>e.type===`toolCall`&&e.id===t)?`${e.functionCall.name}_${Date.now()}_${++p}`:t,name:e.functionCall.name||``,arguments:e.functionCall.args??{},...e.thoughtSignature&&{thoughtSignature:e.thoughtSignature}};i.content.push(n),o.push({type:`toolcall_start`,contentIndex:y(),partial:i}),o.push({type:`toolcall_delta`,contentIndex:y(),delta:JSON.stringify(n.arguments),partial:i}),o.push({type:`toolcall_end`,contentIndex:y(),toolCall:n,partial:i})}}r?.finishReason&&(i.stopReason=s(r.finishReason),i.content.some(e=>e.type===`toolCall`)&&(i.stopReason=`toolUse`)),e.usageMetadata&&(i.usage={input:(e.usageMetadata.promptTokenCount||0)-(e.usageMetadata.cachedContentTokenCount||0),output:(e.usageMetadata.candidatesTokenCount||0)+(e.usageMetadata.thoughtsTokenCount||0),cacheRead:e.usageMetadata.cachedContentTokenCount||0,cacheWrite:0,totalTokens:e.usageMetadata.totalTokenCount||0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},n(t,i.usage))}if(h&&(h.type===`text`?o.push({type:`text_end`,contentIndex:y(),content:h.text,partial:i}):o.push({type:`thinking_end`,contentIndex:y(),content:h.thinking,partial:i})),a?.signal?.aborted)throw Error(`Request was aborted`);if(i.stopReason===`aborted`||i.stopReason===`error`)throw Error(`An unknown error occurred`);o.push({type:`done`,reason:i.stopReason,message:i}),o.end()}catch(e){for(let e of i.content)`index`in e&&delete e.index;i.stopReason=a?.signal?.aborted?`aborted`:`error`,i.errorMessage=e instanceof Error?e.message:JSON.stringify(e),o.push({type:`error`,reason:i.stopReason,error:i}),o.end()}})(),o},h=(n,i,a)=>{let o=a?.apiKey||e(n.provider);if(!o)throw Error(`No API key for provider: ${n.provider}`);let s=r(n,a,o);if(!a?.reasoning)return m(n,i,{...s,thinking:{enabled:!1}});let c=t(n,a.reasoning),l=c===`off`?`high`:c,u=n;return y(u)||b(u)||v(u)?m(n,i,{...s,thinking:{enabled:!0,level:S(l,u)}}):m(n,i,{...s,thinking:{enabled:!0,budgetTokens:C(u,l,a.thinkingBudgets)}})};function g(e,t,n){let r={};return e.baseUrl&&(r.baseUrl=e.baseUrl,r.apiVersion=``),(e.headers||n)&&(r.headers={...e.headers,...n}),new d({apiKey:t,httpOptions:Object.keys(r).length>0?r:void 0})}function _(e,t,n={}){let r=f(e,t),i={};n.temperature!==void 0&&(i.temperature=n.temperature),n.maxTokens!==void 0&&(i.maxOutputTokens=n.maxTokens);let s={...Object.keys(i).length>0&&i,...t.systemPrompt&&{systemInstruction:a(t.systemPrompt)},...t.tools&&t.tools.length>0&&{tools:c(t.tools)}};if(t.tools&&t.tools.length>0&&n.toolChoice?s.toolConfig={functionCallingConfig:{mode:o(n.toolChoice)}}:s.toolConfig=void 0,n.thinking?.enabled&&e.reasoning){let e={includeThoughts:!0};n.thinking.level===void 0?n.thinking.budgetTokens!==void 0&&(e.thinkingBudget=n.thinking.budgetTokens):e.thinkingLevel=n.thinking.level,s.thinkingConfig=e}else e.reasoning&&n.thinking&&!n.thinking.enabled&&(s.thinkingConfig=x(e));if(n.signal){if(n.signal.aborted)throw Error(`Request aborted`);s.abortSignal=n.signal}return{model:e.id,contents:r,config:s}}function v(e){return/gemma-?4/.test(e.id.toLowerCase())}function y(e){return/gemini-3(?:\.\d+)?-pro/.test(e.id.toLowerCase())}function b(e){return/gemini-3(?:\.\d+)?-flash/.test(e.id.toLowerCase())}function x(e){return y(e)?{thinkingLevel:`LOW`}:b(e)||v(e)?{thinkingLevel:`MINIMAL`}:{thinkingBudget:0}}function S(e,t){if(y(t))switch(e){case`minimal`:case`low`:return`LOW`;case`medium`:case`high`:return`HIGH`}if(v(t))switch(e){case`minimal`:case`low`:return`MINIMAL`;case`medium`:case`high`:return`HIGH`}switch(e){case`minimal`:return`MINIMAL`;case`low`:return`LOW`;case`medium`:return`MEDIUM`;case`high`:return`HIGH`}}function C(e,t,n){return n?.[t]===void 0?e.id.includes(`2.5-pro`)?{minimal:128,low:2048,medium:8192,high:32768}[t]:e.id.includes(`2.5-flash-lite`)?{minimal:512,low:2048,medium:8192,high:24576}[t]:e.id.includes(`2.5-flash`)?{minimal:128,low:2048,medium:8192,high:24576}[t]:-1:n[t]}export{m as streamGoogle,h as streamSimpleGoogle};
@@ -1 +0,0 @@
1
- function e(e){let t=3735928559,n=1103547991;for(let r=0;r<e.length;r++){let i=e.charCodeAt(r);t=Math.imul(t^i,2654435761),n=Math.imul(n^i,1597334677)}return t=Math.imul(t^t>>>16,2246822507)^Math.imul(n^n>>>13,3266489909),n=Math.imul(n^n>>>16,2246822507)^Math.imul(t^t>>>13,3266489909),(n>>>0).toString(36)+(t>>>0).toString(36)}export{e as t};
@@ -1 +0,0 @@
1
- import{Z as e,d as t,f as n,nt as r,u as i}from"./kernel-worker-BC6z3xjS.js";const a=r(`lick-ws-bridge`);function o(r,o){try{new URL(o.locationHref)}catch(e){throw Error(`startLickWsBridge: invalid locationHref ${JSON.stringify(o.locationHref)}: ${e instanceof Error?e.message:String(e)}`)}let s=o.webSocketFactory??(e=>new WebSocket(e)),c=o.reconnectDelayMs??3e3,l=o.setTimeoutFn??setTimeout,u=o.clearTimeoutFn??clearTimeout,d=!1,f=null,p=null,m=0,h=!1,g=i(o.locationHref),_=()=>{if(d)return;let e;try{e=s(g)}catch(e){a.error(`Failed to construct lick WebSocket`,{url:g,error:e instanceof Error?e.message:String(e)}),v(`construct-threw`);return}f=e,e.onopen=()=>{m>0?a.info(`Lick WebSocket recovered`,{attempts:m}):a.info(`Lick WebSocket connected`),m=0,h=!1},e.onmessage=t=>{b(e,t.data).catch(e=>{let n=typeof t.data==`string`?t.data.slice(0,200):`[non-string payload]`;a.error(`Failed to process lick message`,{error:e instanceof Error?e.message:String(e),preview:n})})},e.onclose=t=>{if(f===e&&(f=null),d)return;let n=t.reason?` reason=${JSON.stringify(t.reason)}`:``;v(`disconnected code=${t.code}${n}`)},e.onerror=e=>{let t=e.target;a.error(`Lick WebSocket error`,{url:g,readyState:t?.readyState,eventType:e.type})}},v=e=>{if(p!=null){a.debug(`Lick WS failure during pending reconnect — keeping existing timer`,{cause:e});return}m++;let t=Math.min(c*2**(m-1),6e4),n={url:g,attempt:m,cause:e,retryInMs:t};if(m>=3?a.error(`Lick WebSocket still down`,n):a.warn(`Lick WebSocket down`,n),m===20&&!h){h=!0;try{r.emitEvent({type:`session-reload`,targetScoop:void 0,timestamp:new Date().toISOString(),body:{reason:`lick-ws-bridge-down`,url:g,attempts:m}})}catch(e){a.error(`Failed to emit lick-ws-bridge-down signal`,{error:e instanceof Error?e.message:String(e)})}}y(t)},y=e=>{d||p!=null||(p=l(()=>{p=null,_()},e))},b=async(e,t)=>{let n=JSON.parse(typeof t==`string`?t:String(t));if(n.requestId){let t=n.requestId,r=await x(n,t);if(d||f!==e||e.readyState!==1){a.warn(`Lick reply dropped — socket changed/closed mid-request`,{type:n.type,requestId:t});return}try{e.send(JSON.stringify(r))}catch(e){a.error(`ws.send() failed delivering lick reply`,{type:n.type,requestId:t,error:e instanceof Error?e.message:String(e)})}return}if(n.type===`webhook_event`){let e=typeof n.webhookId==`string`?n.webhookId:null;if(!e){a.error(`Malformed webhook_event from lick-ws`,{receivedKeys:Object.keys(n)});return}let t=n.headers&&typeof n.headers==`object`?n.headers:{};try{r.handleWebhookEvent(e,t,n.body)}catch(t){a.error(`Webhook event dispatch failed`,{webhookId:e,error:t instanceof Error?t.message:String(t)})}return}if(n.type===`navigate_event`){let e=typeof n.verb==`string`?n.verb:null,t=typeof n.target==`string`?n.target:null,i=typeof n.url==`string`&&n.url.length>0?n.url:null;if(e!==`handoff`&&e!==`upskill`||!t||!i){a.debug(`navigate_event dropped — invalid payload`,{hasVerb:!!e,hasTarget:!!t,hasUrl:!!i});return}let o={url:i,verb:e,target:t};typeof n.instruction==`string`&&(o.instruction=n.instruction),typeof n.branch==`string`&&(o.branch=n.branch),typeof n.path==`string`&&(o.path=n.path),typeof n.title==`string`&&(o.title=n.title),r.emitEvent({type:`navigate`,navigateUrl:i,targetScoop:void 0,timestamp:typeof n.timestamp==`string`?n.timestamp:new Date().toISOString(),body:o})}},x=async(t,n)=>{try{switch(t.type){case`list_webhooks`:return{type:`response`,requestId:n,data:r.listWebhooks().map(e=>({...e,url:S(e.id)}))};case`create_webhook`:{let e=await r.createWebhook(t.name||`default`,t.scoop,t.filter);return{type:`response`,requestId:n,data:{...e,url:S(e.id)}}}case`delete_webhook`:return await r.deleteWebhook(t.id)?{type:`response`,requestId:n,data:{ok:!0}}:{type:`response`,requestId:n,data:{error:`Webhook not found`}};case`list_crontasks`:return{type:`response`,requestId:n,data:r.listCronTasks()};case`create_crontask`:if(!t.name)throw Error(`name is required`);if(!t.cron)throw Error(`cron is required`);return{type:`response`,requestId:n,data:await r.createCronTask(t.name,t.cron,t.scoop,t.filter)};case`delete_crontask`:return await r.deleteCronTask(t.id)?{type:`response`,requestId:n,data:{ok:!0}}:{type:`response`,requestId:n,data:{error:`Cron task not found`}};case`tray_status`:{let t=e();return{type:`response`,requestId:n,data:{state:t.state,joinUrl:t.session?.joinUrl??null,workerBaseUrl:t.session?.workerBaseUrl??null,trayId:t.session?.trayId??null}}}default:return{type:`response`,requestId:n,error:`Unknown request type: ${t.type}`}}}catch(e){return{type:`response`,requestId:n,error:e instanceof Error?e.message:String(e)}}},S=r=>{let i=e().session;return i?.webhookUrl?t(i.webhookUrl,r):n(o.locationHref,r)};return _(),{stop(){if(d)return;d=!0,p!=null&&(u(p),p=null);let e=f;if(f=null,e)try{e.close()}catch(t){e.readyState!==3&&e.readyState!==2&&a.warn(`Lick socket close() threw before terminal state`,{readyState:e.readyState,error:t instanceof Error?t.message:String(t)})}}}}export{o as startLickWsBridge};
@@ -1 +0,0 @@
1
- import{C as e,S as t,_ as n,nt as r,p as i,v as a,w as o}from"./kernel-worker-BC6z3xjS.js";import{discoverAuth as s,refreshAccessToken as c,runAuthFlow as l}from"./oauth-CG3epMwm.js";import{n as u}from"./store-DrwbCi-e.js";const d=r(`mcp-provider`);function f(){return typeof globalThis<`u`&&globalThis.indexedDB!==void 0}function p(e){return`mcp:${e}`}const m=new Map,h=new Set;async function g(){let e=typeof chrome<`u`?chrome:void 0;if(e?.runtime?.id)return e.identity?.getRedirectURL?.(`mcp-callback`)??`https://${e.runtime.id}.chromiumapp.org/mcp-callback`;let{getOAuthPageOrigin:t}=await import(`./oauth-service-CsGFgUI2.js`),{origin:n}=await t();return`${n}/auth/callback`}async function _(e){if(e)return e;let{createProxiedFetch:t}=await import(`./kernel-worker-BC6z3xjS.js`),n=t();return async(e,t)=>{let r=await n(e,{method:t?.method,headers:t?.headers,body:t?.body}),i=new TextDecoder().decode(r.body);return{ok:r.status>=200&&r.status<300,status:r.status,statusText:r.statusText,text:async()=>i,json:async()=>JSON.parse(i),headers:{get:e=>r.headers[e.toLowerCase()]??null}}}}async function v(e){let t=m.get(p(e.name));if(t)return t;let n=await _(e.fetchImpl),r=await s(e.serverUrl,void 0,n);return m.set(p(e.name),r),r}function y(e){let t=p(e.name),r=(()=>{try{return new URL(e.serverUrl).host}catch{return``}})();return{id:t,name:`MCP: ${e.name}`,description:`MCP server at ${e.serverUrl}`,requiresApiKey:!1,requiresBaseUrl:!1,isOAuth:!0,oauthTokenDomains:r?[r]:[],getModelIds:()=>[],onOAuthLogin:async(n,r)=>{let i=e.launcher??n,o=await _(e.fetchImpl),s=await l({asMetadata:await v(e),clientId:e.auth.clientId,scope:e.auth.scope,redirectUri:await g(),launcher:i,fetchImpl:o});await a({providerId:t,accessToken:s.accessToken,refreshToken:s.refreshToken,tokenExpiresAt:s.expiresAt}),r()},onSilentRenew:async()=>{if(!n(t))return null;let r=i().find(e=>e.providerId===t)?.refreshToken;if(!r)return d.info(`No refresh token for MCP provider, skipping silent renewal`,{id:t}),null;try{let n=await v(e),i=n.grantTypes??[];if(i.length>0&&!i.includes(`refresh_token`))return d.info(`AS does not advertise refresh_token grant; skipping silent renewal`,{id:t}),null;let o=await _(e.fetchImpl),s=await c({tokenEndpoint:n.tokenEndpoint,clientId:e.auth.clientId,refreshToken:r,scope:e.auth.scope,fetchImpl:o});return await a({providerId:t,accessToken:s.accessToken,refreshToken:s.refreshToken??r,tokenExpiresAt:s.expiresAt}),s.accessToken}catch(e){return d.warn(`MCP silent renewal failed`,{id:t,error:e instanceof Error?e.message:String(e)}),null}}}}function b(t){let n=p(t.name);h.has(n)||(e(y(t)),h.add(n),d.debug(`Registered MCP provider`,{id:n}))}async function x(e){let n=p(e);if(h.has(n)&&t(n))return!0;if(!f())return!1;let r=await u(e);return r?(b({name:e,serverUrl:r.serverUrl,auth:r.auth}),!0):!1}async function S(){if(!f())return[];let{readMcpAuthEntries:e}=await import(`./provider-store-access-CcWgx9ta.js`),t=await e(),n=[];for(let e of t)b({name:e.name,serverUrl:e.serverUrl,auth:e.auth}),n.push(p(e.name));return n}function C(e){let t=p(e);return h.delete(t),m.delete(t),o(t)}export{S as ensureAllMcpProvidersRegistered,x as ensureMcpProviderRegistered,b as registerMcpProvider,C as removeMcpProvider};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/main-BHLxIMys.js","assets/modulepreload-polyfill-wMinxHhO.js","assets/main-CvlDeETm.css","assets/oauth-service-Bby2XbV9.js","assets/proxied-fetch-BQDZVMp5.js"])))=>i.map(i=>d[i]);
2
- import{S as e,X as t,Y as n,h as r,i,l as a,m as o}from"./main-BHLxIMys.js";import{t as s}from"./global-db-DL3jdM9H.js";var c=t(`mcp-store`),l=`/workspace/.mcp/servers.json`,u=1,d=null,f=null;async function p(){return d||=await n(()=>import(`./main-BHLxIMys.js`),__vite__mapDeps([0,1,2])),d}async function m(e){if(e)return e;if(f&&f.dbName===`slicc-fs-global`)return f.instance;let{VirtualFS:t}=await p(),n=await t.create({dbName:s});return f={instance:n,dbName:s},n}function h(){return{version:u,servers:{}}}function g(e){if(!e||typeof e!=`object`)return h();let t=e,n=typeof t.version==`number`?t.version:u,r={};if(t.servers&&typeof t.servers==`object`)for(let[e,n]of Object.entries(t.servers)){if(!n||typeof n!=`object`)continue;let t=n;typeof t.url==`string`&&(r[e]=t)}return{version:n,servers:r}}async function _(e){try{let t=await(await m(e)).readFile(l,{encoding:`utf-8`});try{return g(JSON.parse(t))}catch(e){return c.warn(`servers.json is not valid JSON; treating as empty`,{error:e instanceof Error?e.message:String(e)}),h()}}catch(e){return e instanceof i&&e.code===`ENOENT`||c.warn(`Failed to read servers.json`,{error:e instanceof Error?e.message:String(e)}),h()}}async function v(e){return(await _(e)).servers}async function y(){let e=await v(),t=[];for(let[n,r]of Object.entries(e))!r?.url||!r.auth?.clientId||t.push({name:n,serverUrl:r.url,auth:r.auth});return t}var b=t(`mcp-oauth`);async function x(e,t,n){let r=new URL(e).origin,i=t??`${r}/.well-known/oauth-protected-resource`,a=null,o=null;b.debug(`Fetching PRM`,{prmUrl:i});try{let e=await n(i,{headers:{Accept:`application/json`}});if(!e.ok)o=`${e.status} ${e.statusText}`;else{let t=await e.json();!t.authorization_servers||t.authorization_servers.length===0?o=`lists no authorization_servers`:a=t}}catch(e){o=e instanceof Error?e.message:String(e)}let s,c,l;a&&a.authorization_servers&&a.authorization_servers.length>0?(s=a.authorization_servers[0].replace(/\/+$/,``),c=`${s}/.well-known/oauth-authorization-server`,l=`prm`,b.debug(`Discovery via PRM`,{prmUrl:i,asmUrl:c})):(s=r,c=`${r}/.well-known/oauth-authorization-server`,l=`asm-origin-fallback`,b.debug(`PRM unavailable; falling back to ASM at server origin`,{prmUrl:i,prmReason:o,asmUrl:c}));let u=null,d=null;b.debug(`Fetching ASM`,{asmUrl:c});try{let e=await n(c,{headers:{Accept:`application/json`}});e.ok?u=await e.json():d=`${e.status} ${e.statusText}`}catch(e){d=e instanceof Error?e.message:String(e)}if(!u)throw Error(l===`asm-origin-fallback`?`MCP OAuth discovery failed. PRM (${i}): ${o}. ASM fallback (${c}): ${d}.`:`ASM fetch failed: ${d} (${c})`);if(!u.authorization_endpoint||!u.token_endpoint)throw Error(l===`asm-origin-fallback`?`MCP OAuth discovery failed. PRM (${i}): ${o}. ASM fallback (${c}) is missing required endpoints (authorization_endpoint, token_endpoint).`:`ASM at ${c} is missing required endpoints`);return{issuer:u.issuer||s,authorizationEndpoint:u.authorization_endpoint,tokenEndpoint:u.token_endpoint,registrationEndpoint:u.registration_endpoint,supportedScopes:u.scopes_supported??a?.scopes_supported,codeChallengeMethods:u.code_challenge_methods_supported,grantTypes:u.grant_types_supported,discoveryPath:l}}function S(e){return!e||e.length===0||e.includes(`S256`)?`S256`:e.includes(`plain`)?`plain`:`S256`}function C(e){let t=``;for(let n of e)t+=String.fromCharCode(n);return btoa(t).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}async function w(e){let t=new Uint8Array(32);crypto.getRandomValues(t);let n=C(t);if(e===`plain`)return{codeVerifier:n,codeChallenge:n,method:e};let r=await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(n));return{codeVerifier:n,codeChallenge:C(new Uint8Array(r)),method:e}}function T(e){try{let t=new URL(e);return{code:t.searchParams.get(`code`),state:t.searchParams.get(`state`)}}catch{return{code:null,state:null}}}async function E(e){let t=await w(S(e.asMetadata.codeChallengeMethods)),n=C(crypto.getRandomValues(new Uint8Array(16))),r=new URLSearchParams({response_type:`code`,client_id:e.clientId,redirect_uri:e.redirectUri,code_challenge:t.codeChallenge,code_challenge_method:t.method,state:n});e.scope&&r.set(`scope`,e.scope);let i=`${e.asMetadata.authorizationEndpoint}?${r.toString()}`,a=await e.launcher(i);if(!a)throw Error(`MCP OAuth flow cancelled or timed out`);let{code:o,state:s}=T(a);if(!o)throw Error("MCP OAuth redirect missing `code` parameter");if(s!==n)throw Error(`MCP OAuth state mismatch — possible CSRF`);return O({tokenEndpoint:e.asMetadata.tokenEndpoint,clientId:e.clientId,code:o,codeVerifier:t.codeVerifier,redirectUri:e.redirectUri,fetchImpl:e.fetchImpl})}function D(e){if(e.error||!e.access_token)throw Error(`Token endpoint error: ${e.error??`no_access_token`}${e.error_description?` — ${e.error_description}`:``}`);return{accessToken:e.access_token,refreshToken:e.refresh_token,expiresAt:e.expires_in?Date.now()+e.expires_in*1e3:void 0,scope:e.scope,tokenType:e.token_type}}async function O(e){let t=new URLSearchParams({grant_type:`authorization_code`,code:e.code,redirect_uri:e.redirectUri,client_id:e.clientId,code_verifier:e.codeVerifier}).toString(),n=await e.fetchImpl(e.tokenEndpoint,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`,Accept:`application/json`},body:t}),r=await n.json();if(!n.ok&&!r.access_token)throw Error(`Token exchange failed: ${n.status} ${n.statusText}${r.error?` (${r.error})`:``}`);return D(r)}async function k(e){let t=new URLSearchParams({grant_type:`refresh_token`,refresh_token:e.refreshToken,client_id:e.clientId});e.scope&&t.set(`scope`,e.scope);let n=await e.fetchImpl(e.tokenEndpoint,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`,Accept:`application/json`},body:t.toString()}),r=await n.json();if(!n.ok&&!r.access_token)throw Error(`Token refresh failed: ${n.status} ${n.statusText}${r.error?` (${r.error})`:``}`);return D(r)}var A=t(`mcp-provider`),j=`mcp:`;function M(){return typeof globalThis<`u`&&globalThis.indexedDB!==void 0}function N(e){return`${j}${e}`}var P=new Map,F=new Set;async function I(){let e=typeof chrome<`u`?chrome:void 0;if(e?.runtime?.id)return e.identity?.getRedirectURL?.(`mcp-callback`)??`https://${e.runtime.id}.chromiumapp.org/mcp-callback`;let{getOAuthPageOrigin:t}=await n(async()=>{let{getOAuthPageOrigin:e}=await import(`./oauth-service-Bby2XbV9.js`);return{getOAuthPageOrigin:e}},__vite__mapDeps([3,0,1,2])),{origin:r}=await t();return`${r}/auth/callback`}async function L(e){if(e)return e;let{createProxiedFetch:t}=await n(async()=>{let{createProxiedFetch:e}=await import(`./proxied-fetch-BQDZVMp5.js`);return{createProxiedFetch:e}},__vite__mapDeps([4,0,1,2])),r=t();return async(e,t)=>{let n=await r(e,{method:t?.method,headers:t?.headers,body:t?.body}),i=new TextDecoder().decode(n.body);return{ok:n.status>=200&&n.status<300,status:n.status,statusText:n.statusText,text:async()=>i,json:async()=>JSON.parse(i),headers:{get:e=>n.headers[e.toLowerCase()]??null}}}}async function R(e){let t=P.get(N(e.name));if(t)return t;let n=await L(e.fetchImpl),r=await x(e.serverUrl,void 0,n);return P.set(N(e.name),r),r}function z(e){let t=N(e.name),n=(()=>{try{return new URL(e.serverUrl).host}catch{return``}})();return{id:t,name:`MCP: ${e.name}`,description:`MCP server at ${e.serverUrl}`,requiresApiKey:!1,requiresBaseUrl:!1,isOAuth:!0,oauthTokenDomains:n?[n]:[],getModelIds:()=>[],onOAuthLogin:async(n,i)=>{let a=e.launcher??n,o=await L(e.fetchImpl),s=await E({asMetadata:await R(e),clientId:e.auth.clientId,scope:e.auth.scope,redirectUri:await I(),launcher:a,fetchImpl:o});await r({providerId:t,accessToken:s.accessToken,refreshToken:s.refreshToken,tokenExpiresAt:s.expiresAt}),i()},onSilentRenew:async()=>{if(!o(t))return null;let n=a().find(e=>e.providerId===t)?.refreshToken;if(!n)return A.info(`No refresh token for MCP provider, skipping silent renewal`,{id:t}),null;try{let i=await R(e),a=i.grantTypes??[];if(a.length>0&&!a.includes(`refresh_token`))return A.info(`AS does not advertise refresh_token grant; skipping silent renewal`,{id:t}),null;let o=await L(e.fetchImpl),s=await k({tokenEndpoint:i.tokenEndpoint,clientId:e.auth.clientId,refreshToken:n,scope:e.auth.scope,fetchImpl:o});return await r({providerId:t,accessToken:s.accessToken,refreshToken:s.refreshToken??n,tokenExpiresAt:s.expiresAt}),s.accessToken}catch(e){return A.warn(`MCP silent renewal failed`,{id:t,error:e instanceof Error?e.message:String(e)}),null}}}}function B(t){let n=N(t.name);F.has(n)||(e(z(t)),F.add(n),A.debug(`Registered MCP provider`,{id:n}))}async function V(){if(!M())return[];let{readMcpAuthEntries:e}=await n(async()=>{let{readMcpAuthEntries:e}=await import(`./provider-store-access-IMgEIUH6.js`);return{readMcpAuthEntries:e}},[]),t=await e(),r=[];for(let e of t)B({name:e.name,serverUrl:e.serverUrl,auth:e.auth}),r.push(N(e.name));return r}export{V as ensureAllMcpProvidersRegistered,y as t};
@@ -1 +0,0 @@
1
- import{t as e}from"./store-DrwbCi-e.js";import"./provider--7zezZNA.js";export{e as readMcpAuthEntries};
@@ -1 +0,0 @@
1
- import{t as e}from"./provider-BbarSgl8.js";export{e as readMcpAuthEntries};
@@ -1 +0,0 @@
1
- import{Y as e,it as t,nt as n,q as r}from"./kernel-worker-BC6z3xjS.js";var i=t({MCP_STORE_PATH:()=>o,deleteServer:()=>_,getServer:()=>h,listServers:()=>v,readMcpAuthEntries:()=>b,readMcpAuthEntry:()=>y,readServersFile:()=>p,setServer:()=>g,writeServersFile:()=>m});const a=n(`mcp-store`),o=`/workspace/.mcp/servers.json`;let s=null,c=null;async function l(){return s||=await import(`./kernel-worker-BC6z3xjS.js`),s}async function u(e){if(e)return e;if(c&&c.dbName===`slicc-fs-global`)return c.instance;let{VirtualFS:t}=await l(),n=await t.create({dbName:r});return c={instance:n,dbName:r},n}function d(){return{version:1,servers:{}}}function f(e){if(!e||typeof e!=`object`)return d();let t=e,n=typeof t.version==`number`?t.version:1,r={};if(t.servers&&typeof t.servers==`object`)for(let[e,n]of Object.entries(t.servers)){if(!n||typeof n!=`object`)continue;let t=n;typeof t.url==`string`&&(r[e]=t)}return{version:n,servers:r}}async function p(t){try{let e=await(await u(t)).readFile(o,{encoding:`utf-8`});try{return f(JSON.parse(e))}catch(e){return a.warn(`servers.json is not valid JSON; treating as empty`,{error:e instanceof Error?e.message:String(e)}),d()}}catch(t){return t instanceof e&&t.code===`ENOENT`||a.warn(`Failed to read servers.json`,{error:t instanceof Error?t.message:String(t)}),d()}}async function m(e,t){let n=await u(t);await n.mkdir(`/workspace/.mcp`,{recursive:!0});let r={version:e.version||1,servers:e.servers??{}};await n.writeFile(o,JSON.stringify(r,null,2))}async function h(e,t){return(await p(t)).servers[e]??null}async function g(e,t,n){let r=await p(n),i={...r.servers[e],...t};return r.servers[e]=i,await m(r,n),i}async function _(e,t){let n=await p(t);return e in n.servers?(delete n.servers[e],await m(n,t),!0):!1}async function v(e){return(await p(e)).servers}async function y(e){let t=await h(e);return!t?.url||!t.auth?.clientId?null:{name:e,serverUrl:t.url,auth:t.auth}}async function b(){let e=await v(),t=[];for(let[n,r]of Object.entries(e))!r?.url||!r.auth?.clientId||t.push({name:n,serverUrl:r.url,auth:r.auth});return t}export{y as n,i as r,b as t};
@@ -1 +0,0 @@
1
- import{et as e,tt as t}from"./kernel-worker-BC6z3xjS.js";const n=`slicc:last-seen-version`;function r(){return{version:`3.9.0`,releasedAt:`2026-05-27T20:41:21Z`}}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};
@@ -1 +0,0 @@
1
- import{G as e,I as t,N as n,R as r,p as i,v as a}from"./kernel-worker-BC6z3xjS.js";import{XaiErrorCode as o,XaiOAuthError as s}from"./xai-grok-errors-C6VnD_MH.js";import{resolveModels as c,toModelMetadata as l}from"./xai-grok-models-BndZgIFZ.js";import{sanitizePayload as u}from"./xai-grok-sanitize-L5nUbDcW.js";const d=`xai-grok`,f=`https://auth.x.ai`,p=`${f}/oauth2/authorize`,m=`${f}/oauth2/token`,h=`b1a00492-073a-47ea-816f-4c329264a828`,g=`http://127.0.0.1:56121/callback`,_=`https://api.x.ai/v1`,v=`openai-responses`,y=`${d}-openai`;function b(){return typeof process>`u`?null:{}?.PI_XAI_OAUTH_MODELS??null}const x=c(b());function S(e){let t=``;for(let n of e)t+=String.fromCharCode(n);return btoa(t).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}function C(e){let t=new Uint8Array(e);return crypto.getRandomValues(t),t}function w(){return S(C(32))}async function T(e){let t=new TextEncoder().encode(e);return S(new Uint8Array(await crypto.subtle.digest(`SHA-256`,t)))}function E(){return S(C(16))}async function D(e,t){let n=new URLSearchParams({grant_type:`authorization_code`,code:e,redirect_uri:g,client_id:h,code_verifier:t}),r=await fetch(m,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:n});if(!r.ok)throw new s(`xAI token exchange failed: ${r.status} ${await r.text()}`,o.TOKEN_EXCHANGE_FAILED);let i=await r.json();if(!i.access_token)throw new s(`xAI token exchange did not return access_token.`,o.TOKEN_EXCHANGE_INVALID);return i}async function O(e){try{let t=new URLSearchParams({grant_type:`refresh_token`,refresh_token:e,client_id:h}),n=await fetch(m,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:t});return n.ok?await n.json():(console.error(`[xai-grok] refresh failed:`,n.status,await n.text()),null)}catch(e){return console.error(`[xai-grok] refresh error:`,e instanceof Error?e.message:String(e)),null}}function k(){return i().find(e=>e.providerId===d)}async function A(){let e=k();if(!e?.accessToken)throw new s("Not signed in to xAI Grok — run /login or `oauth-token xai-grok`",o.AUTH_MISSING,!0);let t=e.tokenExpiresAt??0;if(t&&Date.now()+6e4<t)return e.accessToken;if(e.refreshToken){let t=await O(e.refreshToken);if(t?.access_token)return await a({providerId:d,accessToken:t.access_token,refreshToken:t.refresh_token??e.refreshToken,tokenExpiresAt:Date.now()+(t.expires_in??21600)*1e3}),t.access_token}return e.accessToken}function j(e,t){return{type:`error`,reason:`error`,error:{role:`assistant`,content:[],api:y,provider:d,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`error`,errorMessage:t instanceof Error?t.message:String(t),timestamp:Date.now()}}}function M(e,t){return n=>!n||typeof n!=`object`?n:u(n,e,t)}function N(e,t){return t?{...e??{},"x-grok-conv-id":t}:e}const P=(e,t,i={})=>{let a=r();return(async()=>{try{let r=await A(),o=i.sessionId,s=n({...e,baseUrl:_,api:v},t,{...i,apiKey:r,headers:N(i.headers,o),onPayload:M(e.id,o)});for await(let e of s)a.push(e);a.end()}catch(t){console.error(`[xai-grok] Stream error:`,t instanceof Error?t.message:String(t)),a.push(j(e,t)),a.end()}})(),a},F=(e,n,i)=>{let a=r();return(async()=>{try{let r=await A(),o=i?.sessionId,s=t({...e,baseUrl:_,api:v},n,{...i,apiKey:r,headers:N(i?.headers,o),onPayload:M(e.id,o)});for await(let e of s)a.push(e);a.end()}catch(t){console.error(`[xai-grok] Stream error:`,t instanceof Error?t.message:String(t)),a.push(j(e,t)),a.end()}})(),a},I={id:d,name:`xAI Grok (SuperGrok OAuth)`,description:`Grok via xAI OAuth — uses your SuperGrok subscription, no API key needed. Default model is Grok Heavy.`,requiresApiKey:!1,requiresBaseUrl:!1,isOAuth:!0,defaultModelId:`grok-4.20-multi-agent-0309`,oauthTokenDomains:[`api.x.ai`,`*.x.ai`,`auth.x.ai`,`accounts.x.ai`],getModelIds:()=>x.map(e=>{let t=l(e);return e.thinkingLevelMap?{...t,thinkingLevelMap:e.thinkingLevelMap}:t}),onOAuthLoginIntercepted:async(e,t,n)=>{let r=w(),i=await T(r),c=E(),l=E(),u=new URL(p);u.searchParams.set(`response_type`,`code`),u.searchParams.set(`client_id`,h),u.searchParams.set(`redirect_uri`,g),u.searchParams.set(`scope`,n?.scopes??`openid profile email offline_access grok-cli:access api:access`),u.searchParams.set(`code_challenge`,i),u.searchParams.set(`code_challenge_method`,`S256`),u.searchParams.set(`state`,c),u.searchParams.set(`nonce`,l),u.searchParams.set(`plan`,`generic`),u.searchParams.set(`referrer`,`slicc`);let f=await e({authorizeUrl:u.toString(),redirectUriPattern:`http://127.0.0.1:56121/*`,onCapture:`close`});if(!f)throw new s(`xAI OAuth login was cancelled or timed out`,o.CALLBACK_TIMEOUT);let m=new URL(f),v=m.searchParams.get(`code`),y=m.searchParams.get(`state`);if(!v)throw new s(`xAI OAuth redirect did not include a code`,o.CODE_MISSING);if(y!==c)throw new s(`xAI OAuth state mismatch — possible CSRF, aborting`,o.STATE_MISMATCH);let b=await D(v,r);await a({providerId:d,accessToken:b.access_token,refreshToken:b.refresh_token,tokenExpiresAt:Date.now()+(b.expires_in??21600)*1e3,baseUrl:_}),t()},onOAuthLogout:async()=>{await a({providerId:d,accessToken:``})},onSilentRenew:async()=>{let e=k();if(!e?.refreshToken)return null;let t=await O(e.refreshToken);return t?.access_token?(await a({providerId:d,accessToken:t.access_token,refreshToken:t.refresh_token??e.refreshToken,tokenExpiresAt:Date.now()+(t.expires_in??21600)*1e3}),t.access_token):null}};function L(){e({api:y,stream:P,streamSimple:F})}export{o as XaiErrorCode,s as XaiOAuthError,I as config,L as register};
@@ -1 +0,0 @@
1
- import{B as e,F as t,K as n,R as r,h as i,l as a}from"./main-BHLxIMys.js";import{XaiErrorCode as o,XaiOAuthError as s}from"./xai-grok-errors-BdY43UIn.js";import{resolveModels as c,toModelMetadata as l}from"./xai-grok-models-C9MIa-Aj.js";import{sanitizePayload as u}from"./xai-grok-sanitize-C7TgWvwD.js";var d=`xai-grok`,f=`https://auth.x.ai`,p=`${f}/oauth2/authorize`,m=`${f}/oauth2/token`,h=`b1a00492-073a-47ea-816f-4c329264a828`,g=`openid profile email offline_access grok-cli:access api:access`,_=`http://127.0.0.1:56121/callback`,v=`http://127.0.0.1:56121/*`,y=`https://api.x.ai/v1`,b=`openai-responses`,x=`${d}-openai`;function S(){return typeof process>`u`?null:{}?.PI_XAI_OAUTH_MODELS??null}var C=c(S());function w(e){let t=``;for(let n of e)t+=String.fromCharCode(n);return btoa(t).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}function T(e){let t=new Uint8Array(e);return crypto.getRandomValues(t),t}function E(){return w(T(32))}async function D(e){let t=new TextEncoder().encode(e);return w(new Uint8Array(await crypto.subtle.digest(`SHA-256`,t)))}function O(){return w(T(16))}async function k(e,t){let n=new URLSearchParams({grant_type:`authorization_code`,code:e,redirect_uri:_,client_id:h,code_verifier:t}),r=await fetch(m,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:n});if(!r.ok)throw new s(`xAI token exchange failed: ${r.status} ${await r.text()}`,o.TOKEN_EXCHANGE_FAILED);let i=await r.json();if(!i.access_token)throw new s(`xAI token exchange did not return access_token.`,o.TOKEN_EXCHANGE_INVALID);return i}async function A(e){try{let t=new URLSearchParams({grant_type:`refresh_token`,refresh_token:e,client_id:h}),n=await fetch(m,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:t});return n.ok?await n.json():(console.error(`[xai-grok] refresh failed:`,n.status,await n.text()),null)}catch(e){return console.error(`[xai-grok] refresh error:`,e instanceof Error?e.message:String(e)),null}}function j(){return a().find(e=>e.providerId===d)}async function M(){let e=j();if(!e?.accessToken)throw new s("Not signed in to xAI Grok — run /login or `oauth-token xai-grok`",o.AUTH_MISSING,!0);let t=e.tokenExpiresAt??0;if(t&&Date.now()+6e4<t)return e.accessToken;if(e.refreshToken){let t=await A(e.refreshToken);if(t?.access_token)return await i({providerId:d,accessToken:t.access_token,refreshToken:t.refresh_token??e.refreshToken,tokenExpiresAt:Date.now()+(t.expires_in??21600)*1e3}),t.access_token}return e.accessToken}function N(e,t){return{type:`error`,reason:`error`,error:{role:`assistant`,content:[],api:x,provider:d,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`error`,errorMessage:t instanceof Error?t.message:String(t),timestamp:Date.now()}}}function P(e,t){return n=>!n||typeof n!=`object`?n:u(n,e,t)}function F(e,t){return t?{...e??{},"x-grok-conv-id":t}:e}var I=(n,r,i={})=>{let a=e();return(async()=>{try{let e=await M(),o=i.sessionId,s=t({...n,baseUrl:y,api:b},r,{...i,apiKey:e,headers:F(i.headers,o),onPayload:P(n.id,o)});for await(let e of s)a.push(e);a.end()}catch(e){console.error(`[xai-grok] Stream error:`,e instanceof Error?e.message:String(e)),a.push(N(n,e)),a.end()}})(),a},L=(t,n,i)=>{let a=e();return(async()=>{try{let e=await M(),o=i?.sessionId,s=r({...t,baseUrl:y,api:b},n,{...i,apiKey:e,headers:F(i?.headers,o),onPayload:P(t.id,o)});for await(let e of s)a.push(e);a.end()}catch(e){console.error(`[xai-grok] Stream error:`,e instanceof Error?e.message:String(e)),a.push(N(t,e)),a.end()}})(),a},R={id:d,name:`xAI Grok (SuperGrok OAuth)`,description:`Grok via xAI OAuth — uses your SuperGrok subscription, no API key needed. Default model is Grok Heavy.`,requiresApiKey:!1,requiresBaseUrl:!1,isOAuth:!0,defaultModelId:`grok-4.20-multi-agent-0309`,oauthTokenDomains:[`api.x.ai`,`*.x.ai`,`auth.x.ai`,`accounts.x.ai`],getModelIds:()=>C.map(e=>{let t=l(e);return e.thinkingLevelMap?{...t,thinkingLevelMap:e.thinkingLevelMap}:t}),onOAuthLoginIntercepted:async(e,t,n)=>{let r=E(),a=await D(r),c=O(),l=O(),u=new URL(p);u.searchParams.set(`response_type`,`code`),u.searchParams.set(`client_id`,h),u.searchParams.set(`redirect_uri`,_),u.searchParams.set(`scope`,n?.scopes??g),u.searchParams.set(`code_challenge`,a),u.searchParams.set(`code_challenge_method`,`S256`),u.searchParams.set(`state`,c),u.searchParams.set(`nonce`,l),u.searchParams.set(`plan`,`generic`),u.searchParams.set(`referrer`,`slicc`);let f=await e({authorizeUrl:u.toString(),redirectUriPattern:v,onCapture:`close`});if(!f)throw new s(`xAI OAuth login was cancelled or timed out`,o.CALLBACK_TIMEOUT);let m=new URL(f),b=m.searchParams.get(`code`),x=m.searchParams.get(`state`);if(!b)throw new s(`xAI OAuth redirect did not include a code`,o.CODE_MISSING);if(x!==c)throw new s(`xAI OAuth state mismatch — possible CSRF, aborting`,o.STATE_MISMATCH);let S=await k(b,r);await i({providerId:d,accessToken:S.access_token,refreshToken:S.refresh_token,tokenExpiresAt:Date.now()+(S.expires_in??21600)*1e3,baseUrl:y}),t()},onOAuthLogout:async()=>{await i({providerId:d,accessToken:``})},onSilentRenew:async()=>{let e=j();if(!e?.refreshToken)return null;let t=await A(e.refreshToken);return t?.access_token?(await i({providerId:d,accessToken:t.access_token,refreshToken:t.refresh_token??e.refreshToken,tokenExpiresAt:Date.now()+(t.expires_in??21600)*1e3}),t.access_token):null}};function z(){n({api:x,stream:I,streamSimple:L})}export{o as XaiErrorCode,s as XaiOAuthError,R as config,z as register};