sliccy 5.30.1 → 5.31.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 (85) hide show
  1. package/README.md +2 -2
  2. package/dist/ui/assets/{account-store-B1E9Pd8V.js → account-store-BbxGQ0dU.js} +2 -2
  3. package/dist/ui/assets/{account-store-B4wozzzo.js → account-store-cEIxE6ns.js} +1 -1
  4. package/dist/ui/assets/{adobe-BMgtvJUE.js → adobe-DCtZg_my.js} +1 -1
  5. package/dist/ui/assets/{adobe-DlB3Llpn.js → adobe-DedN_7R3.js} +1 -1
  6. package/dist/ui/assets/{adobe-oauth-state-B_mErDyW.js → adobe-oauth-state-BHmEwfGb.js} +1 -1
  7. package/dist/ui/assets/{agent-message-to-chat-C_KsQ6tt.js → agent-message-to-chat-DyEsERsd.js} +1 -1
  8. package/dist/ui/assets/{apps-By2jkvtN.js → apps-DSeh9Q2c.js} +1 -1
  9. package/dist/ui/assets/{azure-openai-B4GgOPSG.js → azure-openai-BXkTdRpw.js} +1 -1
  10. package/dist/ui/assets/{azure-openai-CHHosVyH.js → azure-openai-DnCRZ7SW.js} +1 -1
  11. package/dist/ui/assets/{cerebras-BjFZN3s9.js → cerebras-BMH1b8U-.js} +1 -1
  12. package/dist/ui/assets/{cerebras-goMMH6rX.js → cerebras-DZuBmH3s.js} +1 -1
  13. package/dist/ui/assets/{connect-surface-Becvmnau.js → connect-surface-DMYnrElu.js} +1 -1
  14. package/dist/ui/assets/dip-Cok3ArbE.js +1 -0
  15. package/dist/ui/assets/{dist-B_CQDE9x.js → dist-Cn7S2trV.js} +1 -1
  16. package/dist/ui/assets/{dist-DDqJxY_T.js → dist-bMDLWdCx.js} +1 -1
  17. package/dist/ui/assets/{ensure-speech-assets-WQZ8C_rr.js → ensure-speech-assets-DoClFFc_.js} +1 -1
  18. package/dist/ui/assets/esp8266-BnCoam5s.js +1 -0
  19. package/dist/ui/assets/{esptool-operations-BQJnI0my.js → esptool-operations-BqEtXZ7a.js} +2 -2
  20. package/dist/ui/assets/extension-bridge-transport-WLbnai-d.js +1 -0
  21. package/dist/ui/assets/{fs-D3KOaEAt.js → fs-DaIVQzM5.js} +1 -1
  22. package/dist/ui/assets/{fs-B5CoHWsy.js → fs-y5u3AFDE.js} +2 -2
  23. package/dist/ui/assets/{github-_zb1FUIj.js → github-BrjmuxxF.js} +2 -2
  24. package/dist/ui/assets/{github-GcQbbuN6.js → github-CpYlljHN.js} +1 -1
  25. package/dist/ui/assets/{github-copilot-Bf_MolFn.js → github-copilot-BVqvEJoR.js} +1 -1
  26. package/dist/ui/assets/{github-copilot-CEHMQipR.js → github-copilot-DCiBICOj.js} +1 -1
  27. package/dist/ui/assets/{hear-BS6-tnBX.js → hear-ZnJ6GGKr.js} +1 -1
  28. package/dist/ui/assets/{kernel-worker-DyWWTo8W.js → kernel-worker-CmW_IegT.js} +29 -23
  29. package/dist/ui/assets/{kokoro-engine-GYVOhOZs.js → kokoro-engine-w_CPbmas.js} +1 -1
  30. package/dist/ui/assets/{lick-ws-bridge-CsWfeM1O.js → lick-ws-bridge-9MQUUUw1.js} +1 -1
  31. package/dist/ui/assets/{lick-ws-bridge-s7pVv1kR.js → lick-ws-bridge-B_F4ZMBH.js} +1 -1
  32. package/dist/ui/assets/{local-llm-DSaJsXZP.js → local-llm-CpNFW_QW.js} +1 -1
  33. package/dist/ui/assets/{main-BuAHXeba.js → main-B_-2fO1M.js} +4 -4
  34. package/dist/ui/assets/{main-cherry-BDHnutcx.js → main-cherry-CqL2Gwv5.js} +1 -1
  35. package/dist/ui/assets/{mount-tMTW6qA4.js → mount-9y9nar2A.js} +1 -1
  36. package/dist/ui/assets/{mount-9rGyUTfq.js → mount-BF2ZfZjB.js} +2 -2
  37. package/dist/ui/assets/{new-session-Bw6kMJNx.js → new-session-Br0gFs6u.js} +2 -2
  38. package/dist/ui/assets/{oauth-bootstrap-fOv0jBWV.js → oauth-bootstrap-CRrDgWWH.js} +2 -2
  39. package/dist/ui/assets/{openai-codex-C3ZxKBE4.js → openai-codex-BgEKl3ap.js} +1 -1
  40. package/dist/ui/assets/{openai-codex-CCMojnEv.js → openai-codex-qx28czIc.js} +1 -1
  41. package/dist/ui/assets/{page-follower-tray-Crms35Ue.js → page-follower-tray-nwAGeByK.js} +2 -2
  42. package/dist/ui/assets/{panel-rpc-handlers-AHQKeOCy.js → panel-rpc-handlers-BSYtkSkY.js} +2 -2
  43. package/dist/ui/assets/{provider-CefSwFPK.js → provider-C4B4d1Nl.js} +1 -1
  44. package/dist/ui/assets/{provider-DxKpHqen.js → provider-Cnfhjwy6.js} +2 -2
  45. package/dist/ui/assets/provider-store-access-DdX8ygCN.js +1 -0
  46. package/dist/ui/assets/provider-store-access-atK84POs.js +1 -0
  47. package/dist/ui/assets/{providers-BahN7INd.js → providers-D-PKcw-e.js} +1 -1
  48. package/dist/ui/assets/{providers-BPzpZ20i.js → providers-D4qI_ufr.js} +2 -2
  49. package/dist/ui/assets/{quick-llm-BH0K8OnF.js → quick-llm-g8webD15.js} +1 -1
  50. package/dist/ui/assets/session-freezer-ByTqMFtp.js +1 -0
  51. package/dist/ui/assets/{speak-v7UWfpak.js → speak-tNUYEmiT.js} +1 -1
  52. package/dist/ui/assets/{sprinkle-manager-CwGtrHcL.js → sprinkle-manager-B2pA9CXe.js} +1 -1
  53. package/dist/ui/assets/{sprinkle-renderer-pscpqLrE.js → sprinkle-renderer-Bc0oWiBK.js} +2 -2
  54. package/dist/ui/assets/{store-CbTSaami.js → store-DmamcXpL.js} +1 -1
  55. package/dist/ui/assets/{sudo-DZsEiEIt.js → sudo-C9b6g2E9.js} +1 -1
  56. package/dist/ui/assets/{transformers-env-DhGp-lOp.js → transformers-env-C_4p18bA.js} +1 -1
  57. package/dist/ui/assets/{tray-leader-DKyTxVgp.js → tray-leader-CN3Tkg4X.js} +1 -1
  58. package/dist/ui/assets/{tray-leave-runtime-1IzYZ33d.js → tray-leave-runtime-BwiVRAUE.js} +1 -1
  59. package/dist/ui/assets/{upgrade-detection-B6L9czTT.js → upgrade-detection-CqZgQehW.js} +1 -1
  60. package/dist/ui/assets/{voice-reply-vuufsewo.js → voice-reply-DwwsE-IR.js} +1 -1
  61. package/dist/ui/assets/{wc-attach-0dN2vNj8.js → wc-attach-BiueM4uj.js} +2 -2
  62. package/dist/ui/assets/{wc-extension-CrNcDb69.js → wc-extension--ZDwN5kz.js} +2 -2
  63. package/dist/ui/assets/wc-follower-CP8G3KCa.js +4 -0
  64. package/dist/ui/assets/wc-live-CROgIlLq.js +258 -0
  65. package/dist/ui/assets/{wc-nav-C9KmQwwY.js → wc-nav-CHVb7ysE.js} +2 -2
  66. package/dist/ui/assets/{wc-onboarding-B94FXto0.js → wc-onboarding-CaLUU_Ur.js} +2 -2
  67. package/dist/ui/assets/{wc-placeholder-BDrAeIjs.js → wc-placeholder-BXohlArm.js} +3 -3
  68. package/dist/ui/assets/{wc-settings-nY8Z3cpu.js → wc-settings-DmJ2QuVu.js} +2 -2
  69. package/dist/ui/assets/{wc-shell-DZWH1gWj.js → wc-shell-BrXKFbfk.js} +22 -6
  70. package/dist/ui/assets/{wc-sprinkles-YOKs8tgC.js → wc-sprinkles-BMJ569LR.js} +2 -2
  71. package/dist/ui/assets/{wc-tray-CS-1sZRr.js → wc-tray-DKWMT8HO.js} +2 -2
  72. package/dist/ui/assets/{whisper-engine-ckGpSU4c.js → whisper-engine-CbgJRVYL.js} +1 -1
  73. package/dist/ui/assets/{xai-grok-B7RWdNFP.js → xai-grok-CGo5zoUV.js} +1 -1
  74. package/dist/ui/assets/{xai-grok-BjdHQrZi.js → xai-grok-JGx6syjD.js} +1 -1
  75. package/dist/ui/index.html +3 -3
  76. package/dist/ui/packages/webapp/index.html +3 -3
  77. package/package.json +2 -2
  78. package/dist/ui/assets/dip-BrTZDx_E.js +0 -1
  79. package/dist/ui/assets/esp8266-BRTscDOm.js +0 -1
  80. package/dist/ui/assets/extension-bridge-transport-B4WmKl7n.js +0 -1
  81. package/dist/ui/assets/provider-store-access-CL2ZZ09N.js +0 -1
  82. package/dist/ui/assets/provider-store-access-hV_oM0X7.js +0 -1
  83. package/dist/ui/assets/session-freezer-Bnra4H4s.js +0 -1
  84. package/dist/ui/assets/wc-follower-C_XexVt1.js +0 -4
  85. package/dist/ui/assets/wc-live-BqUf86iQ.js +0 -258
@@ -1 +1 @@
1
- import{a as e,l as t,u as n}from"./dist-D69OmKNn.js";import{n as r}from"./event-stream-BJI_nGaK.js";import{R as i,d as a}from"./account-store-B4wozzzo.js";import"./main-BuAHXeba.js";import{XaiErrorCode as o,XaiOAuthError as s}from"./xai-grok-errors-bnlIBeu-.js";import{resolveModels as c,toModelMetadata as l}from"./xai-grok-models-CeEBaUMC.js";import{sanitizePayload as u}from"./xai-grok-sanitize-CR2JoOJd.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=(t,n,i={})=>{let a=r();return(async()=>{try{let r=await M(),o=i.sessionId,s=e({...t,baseUrl:y,api:b},n,{...i,apiKey:r,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},L=(e,n,i)=>{let a=r();return(async()=>{try{let r=await M(),o=i?.sessionId,s=t({...e,baseUrl:y,api:b},n,{...i,apiKey:r,headers:F(i?.headers,o),onPayload:P(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(N(e,t)),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};
1
+ import{a as e,l as t,u as n}from"./dist-D69OmKNn.js";import{n as r}from"./event-stream-BJI_nGaK.js";import{R as i,d as a}from"./account-store-cEIxE6ns.js";import"./main-B_-2fO1M.js";import{XaiErrorCode as o,XaiOAuthError as s}from"./xai-grok-errors-bnlIBeu-.js";import{resolveModels as c,toModelMetadata as l}from"./xai-grok-models-CeEBaUMC.js";import{sanitizePayload as u}from"./xai-grok-sanitize-CR2JoOJd.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=(t,n,i={})=>{let a=r();return(async()=>{try{let r=await M(),o=i.sessionId,s=e({...t,baseUrl:y,api:b},n,{...i,apiKey:r,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},L=(e,n,i)=>{let a=r();return(async()=>{try{let r=await M(),o=i?.sessionId,s=t({...e,baseUrl:y,api:b},n,{...i,apiKey:r,headers:F(i?.headers,o),onPayload:P(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(N(e,t)),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};
@@ -5,7 +5,7 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>slicc</title>
7
7
  <link rel="icon" type="image/png" href="/logos/sliccy-color-1scoops-32x32.png" />
8
- <script type="module" crossorigin src="/assets/main-BuAHXeba.js"></script>
8
+ <script type="module" crossorigin src="/assets/main-B_-2fO1M.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-aKtaBQYM.js">
10
10
  <link rel="modulepreload" crossorigin href="/assets/modulepreload-polyfill-Dezn_h7o.js">
11
11
  <link rel="modulepreload" crossorigin href="/assets/preload-helper-CZgWQFsJ.js">
@@ -21,11 +21,11 @@
21
21
  <link rel="modulepreload" crossorigin href="/assets/secret-topology-D6iS4SOH.js">
22
22
  <link rel="modulepreload" crossorigin href="/assets/secrets-bridge-client-DwfYAgDv.js">
23
23
  <link rel="modulepreload" crossorigin href="/assets/tool-ui-DfXu6quJ.js">
24
- <link rel="modulepreload" crossorigin href="/assets/providers-BPzpZ20i.js">
24
+ <link rel="modulepreload" crossorigin href="/assets/providers-D4qI_ufr.js">
25
25
  <link rel="modulepreload" crossorigin href="/assets/panel-rpc-DmJSNs0I.js">
26
26
  <link rel="modulepreload" crossorigin href="/assets/transform-messages-DiIjWKhh.js">
27
27
  <link rel="modulepreload" crossorigin href="/assets/bedrock-camp-DjKgax8m.js">
28
- <link rel="modulepreload" crossorigin href="/assets/account-store-B4wozzzo.js">
28
+ <link rel="modulepreload" crossorigin href="/assets/account-store-cEIxE6ns.js">
29
29
  <link rel="modulepreload" crossorigin href="/assets/messages-BD4p8GuF.js">
30
30
  <link rel="modulepreload" crossorigin href="/assets/clipboard-DuHpK59o.js">
31
31
  </head>
@@ -5,7 +5,7 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>slicc</title>
7
7
  <link rel="icon" type="image/png" href="/logos/sliccy-color-1scoops-32x32.png" />
8
- <script type="module" crossorigin src="/assets/main-BuAHXeba.js"></script>
8
+ <script type="module" crossorigin src="/assets/main-B_-2fO1M.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-aKtaBQYM.js">
10
10
  <link rel="modulepreload" crossorigin href="/assets/modulepreload-polyfill-Dezn_h7o.js">
11
11
  <link rel="modulepreload" crossorigin href="/assets/preload-helper-CZgWQFsJ.js">
@@ -21,11 +21,11 @@
21
21
  <link rel="modulepreload" crossorigin href="/assets/secret-topology-D6iS4SOH.js">
22
22
  <link rel="modulepreload" crossorigin href="/assets/secrets-bridge-client-DwfYAgDv.js">
23
23
  <link rel="modulepreload" crossorigin href="/assets/tool-ui-DfXu6quJ.js">
24
- <link rel="modulepreload" crossorigin href="/assets/providers-BPzpZ20i.js">
24
+ <link rel="modulepreload" crossorigin href="/assets/providers-D4qI_ufr.js">
25
25
  <link rel="modulepreload" crossorigin href="/assets/panel-rpc-DmJSNs0I.js">
26
26
  <link rel="modulepreload" crossorigin href="/assets/transform-messages-DiIjWKhh.js">
27
27
  <link rel="modulepreload" crossorigin href="/assets/bedrock-camp-DjKgax8m.js">
28
- <link rel="modulepreload" crossorigin href="/assets/account-store-B4wozzzo.js">
28
+ <link rel="modulepreload" crossorigin href="/assets/account-store-cEIxE6ns.js">
29
29
  <link rel="modulepreload" crossorigin href="/assets/messages-BD4p8GuF.js">
30
30
  <link rel="modulepreload" crossorigin href="/assets/clipboard-DuHpK59o.js">
31
31
  </head>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sliccy",
3
- "version": "5.30.1",
3
+ "version": "5.31.0",
4
4
  "description": "Browser-based coding agent with thin CLI server",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -84,7 +84,7 @@
84
84
  "package:release": "node dist/node-server/release-package.js",
85
85
  "publish:chrome": "node dist/node-server/publish-chrome-web-store.js",
86
86
  "publish:worker": "bash packages/cloudflare-worker/scripts/publish-worker.sh",
87
- "postinstall": "if [ -d patches ]; then npx --no-install patch-package || { echo \"ERROR: patches/ present but patch-package not installed (run a full 'npm ci' incl. devDependencies)\"; exit 1; }; fi && if [ -d packages/shared-ts ]; then npm run build -w @slicc/shared-ts; fi && if [ -d packages/cloud-core ]; then npm run build -w @slicc/cloud-core; fi && if [ -d packages/spoon ]; then npm run build -w @ai-ecoverse/spoon; fi && if [ -d packages/webcomponents ]; then npm run build -w @slicc/webcomponents; fi",
87
+ "postinstall": "if [ -d patches ]; then npx --no-install patch-package || { echo \"ERROR: patches/ present but patch-package not installed (run a full 'npm ci' incl. devDependencies)\"; exit 1; }; fi && if [ -d packages/shared-ts ]; then npm run build -w @slicc/shared-ts; fi && if [ -d packages/cloud-core ]; then npm run build -w @slicc/cloud-core; fi && if [ -d packages/spoon ]; then npm run build -w @ai-ecoverse/spoon; fi && if [ -d packages/webcomponents ]; then npm run build -w @slicc/webcomponents; fi && if [ -d packages/cherry ]; then npm run build -w @ai-ecoverse/cherry; fi",
88
88
  "prepare": "husky"
89
89
  },
90
90
  "dependencies": {
@@ -1 +0,0 @@
1
- import{m as e}from"./wc-live-BqUf86iQ.js";export{e as setDipExecHandler};
@@ -1 +0,0 @@
1
- import{t as e}from"./esptool-operations-BQJnI0my.js";export{e as ESP8266ROM};
@@ -1 +0,0 @@
1
- import{t as e}from"./logger-DDBAeTLF.js";import{t}from"./cdp-bridge-CUqQUcaF.js";var n=`slicc.cdp-bridge`,r=new Set([`handshake.hello`,`handshake.welcome`,`handshake.rejected`,`cdp.request`,`cdp.response`,`cdp.event`,`extension.lick`]);function i(e){if(typeof e!=`object`||!e)return!1;let t=e;return t.bridge===1&&typeof t.channelId==`string`&&typeof t.kind==`string`&&r.has(t.kind)}var a=e(`cdp:extension-bridge`),o=1e4;function s(e,t){let n=globalThis.chrome?.runtime;if(!n?.connect)throw Error(`chrome.runtime.connect is not available in this realm — the page must be in the extension externally_connectable allowlist`);return n.connect(e,t)}var c=class extends t{isExtensionBridge=!0;bridgeOpts;channelId;portHolder;resolveWelcome=null;rejectWelcome=null;welcomeTimer=null;intentionalDisconnect=!1;constructor(e){let t=`bridge-${crypto.randomUUID()}`,n={port:null};super(l(t,n)),this.bridgeOpts=e,this.channelId=t,this.portHolder=n}async connect(e){this.intentionalDisconnect=!1;let t=(this.bridgeOpts.connect??s)(this.bridgeOpts.extensionId,{name:n});this.portHolder.port=t;let r=new Promise((e,t)=>{this.resolveWelcome=e,this.rejectWelcome=t});t.onMessage.addListener(e=>this.handleHandshake(e)),t.onDisconnect.addListener(()=>this.handlePortDisconnect(t)),t.postMessage({bridge:1,channelId:this.channelId,kind:`handshake.hello`});let i=e?.timeout??this.bridgeOpts.handshakeTimeoutMs??o;this.welcomeTimer=setTimeout(()=>{if(this.rejectWelcome){this.rejectWelcome(Error(`Extension bridge handshake timed out after ${i}ms`)),this.cleanupHandshake();try{t.disconnect()}catch{}this.portHolder.port=null}},i),await r,await super.connect(e)}disconnect(){this.intentionalDisconnect=!0,this.cleanupHandshake();let e=this.portHolder.port;if(e){try{e.disconnect()}catch{}this.portHolder.port=null}super.disconnect()}handlePortDisconnect(e){if(!(this.portHolder.port!==e&&this.portHolder.port!==null)){if(this.portHolder.port=null,this.rejectWelcome){this.rejectWelcome(Error(`Extension bridge port disconnected before welcome`)),this.cleanupHandshake();return}!this.intentionalDisconnect&&this.state===`connected`&&super.disconnect()}}__test_receive(e){this.handleHandshake(e)}handleHandshake(e){if(!i(e))return;let t=e;if(t.channelId===this.channelId){if(t.kind===`handshake.welcome`){this.resolveWelcome?.(),this.cleanupHandshake();return}if(t.kind===`handshake.rejected`){a.warn(`Extension bridge handshake rejected`,{reason:t.reason}),this.rejectWelcome?.(Error(`Extension bridge handshake rejected: ${t.reason}`)),this.cleanupHandshake();return}t.kind===`extension.lick`&&this.bridgeOpts.onLick?.(t)}}cleanupHandshake(){this.welcomeTimer!==null&&(clearTimeout(this.welcomeTimer),this.welcomeTimer=null),this.resolveWelcome=null,this.rejectWelcome=null}};function l(e,t){return{label:`ExtensionBridgeTransport`,buildCommandEnvelope:(t,n,r,i)=>({bridge:1,channelId:e,kind:`cdp.request`,id:t,method:n,params:r,sessionId:i}),sendEnvelope:async e=>{let n=t.port;if(!n)throw Error(`Extension bridge port not connected`);n.postMessage(e)},subscribeIncoming:e=>{let n=t.port;if(!n)throw Error(`Extension bridge subscribeIncoming called without an open port`);return n.onMessage.addListener(t=>e(t)),()=>{}},parseResponse:t=>{if(!i(t))return null;let n=t;return n.channelId!==e||n.kind!==`cdp.response`?null:{id:n.id,result:n.result,error:n.error}},parseEvent:t=>{if(!i(t))return null;let n=t;if(n.channelId!==e||n.kind!==`cdp.event`)return null;let r=n.sessionId?{...n.params??{},sessionId:n.sessionId}:n.params;return{method:n.method,params:r}},onListenerError:(e,t)=>{a.warn(`Extension bridge listener error`,{event:e,error:t instanceof Error?t.message:String(t)})}}}export{c as ExtensionBridgeTransport};
@@ -1 +0,0 @@
1
- import{t as e}from"./provider-DxKpHqen.js";export{e as readMcpAuthEntries};
@@ -1 +0,0 @@
1
- import{t as e}from"./store-CbTSaami.js";import"./provider-CefSwFPK.js";export{e as readMcpAuthEntries};
@@ -1 +0,0 @@
1
- import{c as e}from"./wc-live-BqUf86iQ.js";export{e as readSessionsIndex};
@@ -1,4 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/wc-live-BqUf86iQ.js","assets/dist-D69OmKNn.js","assets/preload-helper-CZgWQFsJ.js","assets/__vite-browser-external-SwrSgYTf.js","assets/rolldown-runtime-aKtaBQYM.js","assets/event-stream-BJI_nGaK.js","assets/json-parse-C7d6hyOc.js","assets/account-store-B4wozzzo.js","assets/context-compaction-DvlXtgVG.js","assets/logger-DDBAeTLF.js","assets/src-x0cJ68Fe.js","assets/proxied-fetch-Bht31_rT.js","assets/fetch-body-D2PwksUW.js","assets/secret-topology-D6iS4SOH.js","assets/secrets-bridge-client-DwfYAgDv.js","assets/tool-ui-DfXu6quJ.js","assets/providers-BPzpZ20i.js","assets/panel-rpc-DmJSNs0I.js","assets/bedrock-camp-DjKgax8m.js","assets/transform-messages-DiIjWKhh.js","assets/main-BuAHXeba.js","assets/modulepreload-polyfill-Dezn_h7o.js","assets/messages-BD4p8GuF.js","assets/clipboard-DuHpK59o.js","assets/wc-permissions-registry-Blyunq37.js","assets/hid-device-registry-6w-g8ZpF.js","assets/serial-port-registry-DsPZvGpT.js","assets/usb-operations-D-YdmmuG.js","assets/usb-device-registry-k6vTKonT.js","assets/icons-C5g936Qd.js","assets/tray-leader-DKyTxVgp.js","assets/shared-BtKwD6I9.js","assets/mime-types-ugOWOUZ9.js","assets/wc-shell-DZWH1gWj.js","assets/speech-C5U8h4In.js","assets/soundscape-cues-5_sT5Un6.js","assets/wc-shell-WkeczD9x.css","assets/sprinkle-bridge-CZr9Wcf7.js","assets/sprinkle-renderer-pscpqLrE.js","assets/theme-Bgsl5v2i.js","assets/theme-engine-DqVfCCym.js","assets/follower-navigate-watcher-quUh7-CS.js","assets/navigation-watcher-C2s0i0h4.js","assets/handoff-link-w8LYa3Ua.js"])))=>i.map(i=>d[i]);
2
- import{t as e}from"./preload-helper-CZgWQFsJ.js";import{t}from"./logger-DDBAeTLF.js";import{D as n,b as r,g as i,w as a,y as o}from"./main-BuAHXeba.js";import{n as s}from"./remote-cdp-transport-DTCu2BgA.js";import{d as c,i as l}from"./wc-shell-DZWH1gWj.js";import{wireWcAttach as u}from"./wc-attach-0dN2vNj8.js";import{prepareWcShell as d,t as f}from"./wc-live-BqUf86iQ.js";import{t as p}from"./page-follower-tray-Crms35Ue.js";import{WcSprinkleZone as m}from"./wc-sprinkles-YOKs8tgC.js";var h=t(`follower-switch-out`);function g(e,t){t.stopFollower();try{t.storage.removeItem(o),e.workerBaseUrl===null?t.storage.removeItem(r):t.storage.setItem(r,e.workerBaseUrl)}catch(e){h.error(`follower switch-out: storage write failed — state may revert on reload`,{error:e instanceof Error?e.message:String(e)})}try{let e=t.getHref(),r=n(e);r!==e&&t.replaceHref(r)}catch(e){h.error(`follower switch-out: URL normalize failed — may re-enter follower on reload`,{error:e instanceof Error?e.message:String(e)})}t.reload()}var _=t(`wc-follower`),v={sendMessage:()=>{},onEvent:()=>()=>{},stop:()=>{}};function y(e,t){for(;e.firstChild;)e.removeChild(e.firstChild);let n=document.createElement(`div`);n.style.cssText=`padding:2rem;text-align:center;font-family:system-ui;`;let r=document.createElement(`h1`);r.style.color=`var(--s2-negative, #e34850)`,r.textContent=`Could not start follower`;let i=document.createElement(`p`);i.style.color=`var(--s2-content-tertiary, #717171)`,i.textContent=t,n.append(r,i),e.appendChild(n)}function b(e,t,n,r,i){let a=e=>{let t=document.createElement(`div`);return t.className=`wcui-placeholder`,t.textContent=e,t};i.files?(e.style.display=`none`,e.parentElement?.append(a(`Files live on the leader. A follower mirrors the leader's chat, sprinkles, and browser tabs - not its filesystem.`))):e.closest(`slicc-surface`)?.remove(),i.terminal?t.append(a(`The shell runs on the leader. A follower has no local terminal - drive the session through chat.`)):t.closest(`slicc-surface`)?.remove(),i.memory?n.append(a(`Memory lives on the leader. A follower has no local memory store.`)):n.closest(`slicc-surface`)?.remove(),i.monitor?(r.style.display=`none`,r.parentElement?.append(a(`Monitor reads the leader's kernel state. A follower has no local kernel.`))):r.closest(`slicc-surface`)?.remove()}var x={terminal:!0,files:!0,memory:!0,browser:!0,modelPicker:!0,history:!0,nav:!0,newSprinkle:!0,monitor:!0};function S(e){let t=[];for(let[n,r]of[[`terminal`,`term`],[`files`,`files`],[`memory`,`memory`],[`browser`,`browser`],[`monitor`,`monitor`],[`newSprinkle`,`new`]])e[n]||t.push(`slicc-dock-item[data-t="${r}"]`);if(e.modelPicker||t.push(`slicc-composer-meta`),e.history||t.push(`slicc-freezer`),e.nav||t.push(`slicc-nav`),!e.terminal&&!e.files&&!e.memory&&!e.browser&&!e.monitor&&t.push(`slicc-dock .div`,`slicc-dock .grow`),t.length||!e.history){let n=document.createElement(`style`),r=t.length?`${t.join(`,
3
- `)}{display:none!important;}`:``;e.history||(r+=`
4
- .wcui-appcol{padding-left:0!important;}`),n.textContent=r,document.head.append(n)}}async function C(t,n,r){let o=r===`cherry`,h;try{h=await i({runtimeMode:r,envBaseUrl:null,window,log:n})}catch(e){let n=e instanceof Error?e.message:String(e);_.error(`follower prelude failed`,{runtimeMode:r,error:n}),y(t,n);return}let C=o?h.cherryJoinUrl:a(window.location.href,window.localStorage);if(!C){_.error(`follower mount with no join URL - falling back to live boot`);let{mountWcUiLive:r}=await e(async()=>{let{mountWcUiLive:e}=await import(`./wc-live-BqUf86iQ.js`);return{mountWcUiLive:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40]));return r(t,n,`standalone`)}let w=d(t,o?`cherry · follower`:`follower`),T=o&&h.cherryTransport?h.cherryTransport.features:x;if(b(w.refs.fileTree,w.refs.termSurface,w.refs.memoryHost,w.refs.monitor,T),S(T),o&&h.cherryTransport?.theme){let{applyCherryTheme:t}=await e(async()=>{let{applyCherryTheme:e}=await import(`./theme-engine-DqVfCCym.js`).then(e=>e.f);return{applyCherryTheme:e}},__vite__mapDeps([40,4,9]));t(h.cherryTransport.theme)}let E=new f({thread:w.refs.thread,agent:v,onQueuedChange:e=>{w.refs.queuedStack.setMessages(e)},readOnlyToolUi:!0});w.setController(E);let D=`Connecting to leader…`,O=(e,t)=>{w.refs.inputCard.setAttribute(`placeholder`,t),e?w.refs.inputCard.removeAttribute(`disabled`):w.refs.inputCard.setAttribute(`disabled`,``)};O(!1,D);let k=u({inputCard:w.refs.inputCard,freezer:w.refs.freezer,composer:w.refs.composer,log:_});w.refs.inputCard.addEventListener(`submit`,e=>{let t=l(e)??``,n=k.take();(t.trim()||n.length)&&(E.sendUserMessage(t,n),w.refs.inputCard.clear?.())});let A=new m(w.refs).callbacks(),j=null,M=p({joinUrl:C,runtime:o?s:`slicc-standalone`,browserAPI:h.browser,onSnapshot:e=>E.loadMessages(e),onUserMessage:(e,t,n,r)=>E.addUserMessage(e,r),onStatus:e=>E.setProcessing(e===`processing`),setChatAgent:e=>E.setAgent(e),onConnectionChange:e=>{O(e,e?`Ask the leader, or describe a change…`:D),o&&h.cherryTransport?.emitSliccEventToHost(e?`slicc.follower.ready`:`slicc.follower.disconnected`)},onGaveUp:e=>{_.error(`follower gave up reaching the leader`,{error:e}),O(!1,`Couldn't reach the leader. Reload to retry.`),o&&h.cherryTransport?.emitSliccEventToHost(`slicc.follower.disconnected`)},addSprinkle:A.addSprinkle,removeSprinkle:A.removeSprinkle,onOpen:e=>{/^https?:\/\//.test(e)?window.open(e,`_blank`,`noopener`):_.warn(`follower sprinkle open() of a local path is unavailable`,{path:e})},onScoopsList:(e,t)=>{w.refs.switcher.scoops=e.map(e=>({key:e.jid,type:e.isCone?`cone`:`scoop`,color:c(e),label:e.isCone?`sliccy`:e.name,eyes:`open`})),w.refs.switcher.setAttribute(`active`,j??t)},...o?{onCherrySliccEvent:(e,t)=>h.cherryTransport?.emitSliccEventToHost(e,t)}:{}});w.refs.switcher.addEventListener(`slicc-scoop-select`,e=>{let t=e.detail?.key;t&&(j=t,w.refs.switcher.setAttribute(`active`,t),M.currentSync?.selectScoop(t))}),o&&h.cherryTransport&&(h.cherryTransport.onHostEvent=(e,t)=>M.currentSync?.sendCherryHostEvent(e,t));let N=null;if(!o){let{startFollowerNavigateWatcher:t}=await e(async()=>{let{startFollowerNavigateWatcher:e}=await import(`./follower-navigate-watcher-quUh7-CS.js`);return{startFollowerNavigateWatcher:e}},__vite__mapDeps([41,9,42,43]));N=t(h.realCdpTransport,()=>M.currentSync)}w.refs.avatarMenu.items=[{kind:`separator`},{id:`tray-stop`,label:`Disconnect from leader`,icon:`unplug`,danger:!0}],w.refs.avatarMenu.addEventListener(`slicc-avatar-action`,e=>{e.detail?.id===`tray-stop`&&window.dispatchEvent(new CustomEvent(`slicc:tray-leave`,{detail:{workerBaseUrl:null}}))}),window.addEventListener(`slicc:tray-leave`,e=>{g({workerBaseUrl:(e.detail??{}).workerBaseUrl??null},{storage:window.localStorage,stopFollower:()=>{N?.(),M.stop()},getHref:()=>window.location.href,replaceHref:e=>window.history.replaceState(null,``,e),reload:()=>window.location.reload()})}),_.info(`follower mounted`,{runtimeMode:r,isCherry:o})}export{C as mountWcUiFollower};