sliccy 6.165.0 → 6.166.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 (172) hide show
  1. package/dist/node-server/_shared/computer-protocol.d.ts +108 -0
  2. package/dist/node-server/_shared/computer-protocol.d.ts.map +1 -0
  3. package/dist/node-server/_shared/computer-protocol.js +10 -0
  4. package/dist/node-server/_shared/computer-protocol.js.map +1 -0
  5. package/dist/node-server/_shared/index.d.ts +1 -0
  6. package/dist/node-server/_shared/index.d.ts.map +1 -1
  7. package/dist/node-server/_shared/index.js +1 -0
  8. package/dist/node-server/_shared/index.js.map +1 -1
  9. package/dist/ui/.vite/manifest.json +184 -174
  10. package/dist/ui/assets/{SKILL-C8DJkgFD.js → SKILL-BGEZa-y0.js} +1 -1
  11. package/dist/ui/assets/SKILL-DB5CVwyu.js +1 -0
  12. package/dist/ui/assets/SKILL-DEFDsScb.js +1 -0
  13. package/dist/ui/assets/{SKILL-0AeLgxT3.js → SKILL-DZoCcID_.js} +1 -1
  14. package/dist/ui/assets/{account-store-lzZlhljv.js → account-store-BEqmysw9.js} +1 -1
  15. package/dist/ui/assets/{account-store-CJHBoL7P.js → account-store-C35GYvum.js} +1 -1
  16. package/dist/ui/assets/{adobe-DbBJWbF9.js → adobe-BDH5oLAN.js} +1 -1
  17. package/dist/ui/assets/{adobe-DUaaJHme.js → adobe-BcTGFCnQ.js} +1 -1
  18. package/dist/ui/assets/{agent-panels-DQh4wRpa.js → agent-panels-DvqNnkLk.js} +1 -1
  19. package/dist/ui/assets/{almost-bash-shell-headless-DdfO5taA.js → almost-bash-shell-headless-DqTtE9CM.js} +506 -508
  20. package/dist/ui/assets/{apply-layout-DeIHdw5o.js → apply-layout-CjYRGs37.js} +1 -1
  21. package/dist/ui/assets/{apps-X6cH7Ngi.js → apps-dzoLZ_5W.js} +1 -1
  22. package/dist/ui/assets/{azure-openai-DS5DA5ql.js → azure-openai-BffwoCtp.js} +1 -1
  23. package/dist/ui/assets/{azure-openai-DoDPxnFq.js → azure-openai-DKGdcr4S.js} +1 -1
  24. package/dist/ui/assets/{backend-hostfs-9Xwjq8kU.js → backend-hostfs-CWIlIhve.js} +1 -1
  25. package/dist/ui/assets/bridge-protocol-31SWTdS5.js +1 -0
  26. package/dist/ui/assets/{cdp-Bi4OGeyp.js → cdp-DXT6yEL1.js} +1 -1
  27. package/dist/ui/assets/{cerebras-D9Xp_f8D.js → cerebras-BF5efkRL.js} +1 -1
  28. package/dist/ui/assets/{cerebras-BzQeaK2Z.js → cerebras-By0l7t0i.js} +1 -1
  29. package/dist/ui/assets/{composer-speech-BVpldTNH.js → composer-speech-DIEePbQC.js} +1 -1
  30. package/dist/ui/assets/{connect-surface-CyUMMhhU.js → connect-surface-DBqs7oHf.js} +1 -1
  31. package/dist/ui/assets/{directed-approval-CaEocD9T.js → directed-approval-D1lGElvD.js} +1 -1
  32. package/dist/ui/assets/{ensure-speech-assets-B9REkBI_.js → ensure-speech-assets-BJXemBO4.js} +1 -1
  33. package/dist/ui/assets/fake-computer-1f2_4vxY.js +65 -0
  34. package/dist/ui/assets/{frozen-archive-writer-BWuT2QtJ.js → frozen-archive-writer-DYPhPMg7.js} +1 -1
  35. package/dist/ui/assets/{fs-C3QG5M_q.js → fs-BapOupIM.js} +2 -2
  36. package/dist/ui/assets/{fs-CmCsE1zE.js → fs-CBH-hQcI.js} +1 -1
  37. package/dist/ui/assets/{gelatiere-store-ijXRupBc.js → gelatiere-store-C2u47uk0.js} +1 -1
  38. package/dist/ui/assets/{gelatiere-unit-BlRXo_Ch.js → gelatiere-unit-wvDEO7gH.js} +1 -1
  39. package/dist/ui/assets/{github-2vLuAY6J.js → github-Bx7_6LBm.js} +2 -2
  40. package/dist/ui/assets/{github-Zcx-gHTn.js → github-Db015Tee.js} +1 -1
  41. package/dist/ui/assets/{github-auth-87ZWWpe-.js → github-auth-DtKS6UIX.js} +1 -1
  42. package/dist/ui/assets/{github-copilot-DaHQ2cTA.js → github-copilot-CtOjxhqK.js} +1 -1
  43. package/dist/ui/assets/{github-copilot-CdwPARvl.js → github-copilot-eCfmryv6.js} +1 -1
  44. package/dist/ui/assets/{github-install-CCQJ7A9f.js → github-install-B6W4-xcc.js} +1 -1
  45. package/dist/ui/assets/{github-zip-D4jSHksq.js → github-zip-Bv1smNmy.js} +1 -1
  46. package/dist/ui/assets/{handoff-link-NCw3cxSG.js → handoff-link-B3It6xQY.js} +1 -1
  47. package/dist/ui/assets/{hear-CovWNOND.js → hear-BZHckZJM.js} +1 -1
  48. package/dist/ui/assets/{help-BmMJZSmm.js → help-BU2Hjl0P.js} +1 -1
  49. package/dist/ui/assets/host-BQ2qKD-D.js +1 -0
  50. package/dist/ui/assets/{installer-BOAaojqu.js → installer-BbtH3u7z.js} +1 -1
  51. package/dist/ui/assets/js-realm-worker-BT3mfq3w.js +50 -0
  52. package/dist/ui/assets/jsh-CrSWPG4t.js +1 -0
  53. package/dist/ui/assets/jsh-executor-BWlgcE2N.js +18 -0
  54. package/dist/ui/assets/jsh-runtime-extensions-BnLXkzqP.js +1 -0
  55. package/dist/ui/assets/{kernel-worker-CrTnmx6N.js → kernel-worker-Dseu067f.js} +38 -38
  56. package/dist/ui/assets/keys-n5_C9sHW.js +1 -0
  57. package/dist/ui/assets/{lick-ws-bridge-56mwSRdV.js → lick-ws-bridge-Cc9sToY7.js} +1 -1
  58. package/dist/ui/assets/{lick-ws-bridge-D4FyZHWP.js → lick-ws-bridge-ChigxI36.js} +1 -1
  59. package/dist/ui/assets/{live-session-snapshot-ZXxxxzvO.js → live-session-snapshot-B70raB09.js} +1 -1
  60. package/dist/ui/assets/{local-llm-B6tgSQ84.js → local-llm-Dcp5IIP-.js} +1 -1
  61. package/dist/ui/assets/{local-llm-BDbJaGUp.js → local-llm-DpSg-Oe3.js} +1 -1
  62. package/dist/ui/assets/{main-Dxem3Ydy.js → main-CfF8CFBr.js} +3 -3
  63. package/dist/ui/assets/{main-cherry-D1lfDTVL.js → main-cherry-VckJPHm5.js} +1 -1
  64. package/dist/ui/assets/{memory-curation-seam-ZGh8tSbe.js → memory-curation-seam-DUaZFZG9.js} +1 -1
  65. package/dist/ui/assets/{memory-health-CZHaK5wO.js → memory-health-D7uEvfAx.js} +1 -1
  66. package/dist/ui/assets/memory-v2-flag-BHVbti6Z.js +1 -0
  67. package/dist/ui/assets/{memory-write-execute-Csx1-nfE.js → memory-write-execute-rXtR1z76.js} +1 -1
  68. package/dist/ui/assets/{mount-DCCYSZwW.js → mount-8lU2iH4k.js} +3 -3
  69. package/dist/ui/assets/{mount-ByktCqqU.js → mount-DoM0CLGG.js} +1 -1
  70. package/dist/ui/assets/{new-session-CG_ht0Kw.js → new-session-DEhAjxP1.js} +2 -2
  71. package/dist/ui/assets/{oauth-bootstrap-CQmrSZN1.js → oauth-bootstrap-DNTgbEZF.js} +2 -2
  72. package/dist/ui/assets/{onboarding-orchestrator-DZFSsW4q.js → onboarding-orchestrator-DzPQ0pVG.js} +1 -1
  73. package/dist/ui/assets/{openai-codex-dKSgjDc_.js → openai-codex-CsAhfz0D.js} +1 -1
  74. package/dist/ui/assets/{openai-codex-ebHt4iSf.js → openai-codex-DYRKYWTe.js} +1 -1
  75. package/dist/ui/assets/{openrouter-CsPQehN8.js → openrouter-D9T6tXUF.js} +1 -1
  76. package/dist/ui/assets/{openrouter-BQhA4-TP.js → openrouter-IyZlRHg4.js} +1 -1
  77. package/dist/ui/assets/{openrouter-free-kxAwjRgT.js → openrouter-free-CPshAgQD.js} +1 -1
  78. package/dist/ui/assets/{openrouter-free-BppbTow1.js → openrouter-free-DfbYsnmf.js} +1 -1
  79. package/dist/ui/assets/{openrouter-oauth-D0vfD1T8.js → openrouter-oauth-hZg6oH0A.js} +1 -1
  80. package/dist/ui/assets/{openrouter-oauth-B3y32yAJ.js → openrouter-oauth-xKlWi_wI.js} +1 -1
  81. package/dist/ui/assets/{opfs-mount-ld8qlksz.js → opfs-mount-C9Iamj6N.js} +1 -1
  82. package/dist/ui/assets/panel-rpc-handlers-Nu-wOrG9.js +2 -0
  83. package/dist/ui/assets/{panelize-shell-BdV-wKTx.js → panelize-shell-tFElgHWF.js} +1 -1
  84. package/dist/ui/assets/{pi-edit-execution-CoRFZcs7.js → pi-edit-execution-D6vx5LyF.js} +1 -1
  85. package/dist/ui/assets/{provider-CNKZIWc1.js → provider-3--cEcAF.js} +1 -1
  86. package/dist/ui/assets/{provider-DE1pR-oR.js → provider-Z5aj7SzG.js} +2 -2
  87. package/dist/ui/assets/{provider-settings-D8qwiWrG.js → provider-settings-D9sjEfYE.js} +1 -1
  88. package/dist/ui/assets/provider-store-access-M0PvJ08M.js +1 -0
  89. package/dist/ui/assets/provider-store-access-RxIHhH6d.js +1 -0
  90. package/dist/ui/assets/{providers-InF4o-U9.js → providers-CnoKdyLc.js} +2 -2
  91. package/dist/ui/assets/{providers-CUF9nsUE.js → providers-DVvrXbtx.js} +1 -1
  92. package/dist/ui/assets/{quick-llm-CQWR6xvc.js → quick-llm-DjWE-wQw.js} +1 -1
  93. package/dist/ui/assets/realm-inprocess-D0iWBQzz.js +30 -0
  94. package/dist/ui/assets/{recovery-screen-DWMb8zIg.js → recovery-screen-Y1CSyfR-.js} +1 -1
  95. package/dist/ui/assets/registry-Bq_j-EXx.js +1 -0
  96. package/dist/ui/assets/{restore-PqiSHlx3.js → restore-DOkDX8BI.js} +1 -1
  97. package/dist/ui/assets/{run-F7Bv3Fcu.js → run-B-fA26ea.js} +1 -1
  98. package/dist/ui/assets/run-BEt0RS3J.js +52 -0
  99. package/dist/ui/assets/{run-DJQAmghw.js → run-BOc9XLhg.js} +1 -1
  100. package/dist/ui/assets/{run-Bqg_NW7f.js → run-BWJSDhS7.js} +2 -2
  101. package/dist/ui/assets/{run-Do5pAlQf.js → run-DgNh1E56.js} +2 -2
  102. package/dist/ui/assets/{run-DoD-L3x8.js → run-a67LpkRp.js} +2 -2
  103. package/dist/ui/assets/{run-w1tdYqAg.js → run-vEDh-Me-.js} +2 -2
  104. package/dist/ui/assets/{session-command-memory-BKzFoCAZ.js → session-command-memory-DB2GmPSU.js} +2 -2
  105. package/dist/ui/assets/{session-jsonl-DjDV9zx6.js → session-jsonl-DFC-2T76.js} +1 -1
  106. package/dist/ui/assets/{session-jsonl-C7a0swa5.js → session-jsonl-D_pTYppB.js} +1 -1
  107. package/dist/ui/assets/{session-search-index-CMRSS2CP.js → session-search-index-CN1zDLlx.js} +1 -1
  108. package/dist/ui/assets/{setup-feature-flags-remote-BmKhybEI.js → setup-feature-flags-remote-BVd31Z12.js} +1 -1
  109. package/dist/ui/assets/{signed-fetch-DDtJ0TE5.js → signed-fetch-BY2Mdjqe.js} +1 -1
  110. package/dist/ui/assets/{silent-renew-backoff-CBUhiIba.js → silent-renew-backoff-CKAAh6GN.js} +1 -1
  111. package/dist/ui/assets/{silent-renew-backoff-DIMz5UqB.js → silent-renew-backoff-Dmz3DJHb.js} +1 -1
  112. package/dist/ui/assets/slicc-version-BZyTvfoc.js +1 -0
  113. package/dist/ui/assets/{snapshot-features-BIG7eB0k.js → snapshot-features-DjMJkCGq.js} +1 -1
  114. package/dist/ui/assets/{snapshot-DyCo7e-C.js → snapshot-gi8tDzvN.js} +1 -1
  115. package/dist/ui/assets/{soundscape-bHynTI4A.js → soundscape-Bl3LhUk9.js} +1 -1
  116. package/dist/ui/assets/{speak-DbL0fEQT.js → speak-BY_fDou2.js} +1 -1
  117. package/dist/ui/assets/{sprinkle-manager-Bhwou11b.js → sprinkle-manager-C-NUJqPy.js} +1 -1
  118. package/dist/ui/assets/{sprinkle-renderer-CEIEQSMS.js → sprinkle-renderer-CcA6ie5u.js} +1 -1
  119. package/dist/ui/assets/{state-BdNtTsoR.js → state-z3wOHLww.js} +1 -1
  120. package/dist/ui/assets/{store-CJD-1zaX.js → store-ByUcAFUa.js} +1 -1
  121. package/dist/ui/assets/{store-BRXCCWDC.js → store-ChWzn_H8.js} +1 -1
  122. package/dist/ui/assets/{sudo-QHJEgCZR.js → sudo-DNZFIZ-H.js} +1 -1
  123. package/dist/ui/assets/{supervisor-DILjXQCB.js → supervisor-BtH2-9sE.js} +1 -1
  124. package/dist/ui/assets/{sync-dialog-8D9LiBVV.js → sync-dialog-Jqz74VkZ.js} +1 -1
  125. package/dist/ui/assets/tab-ToMhjbM4.js +1 -0
  126. package/dist/ui/assets/{transformers-env-jBVeNAIF.js → transformers-env-pq1E2H6B.js} +1 -1
  127. package/dist/ui/assets/{tray-leader-BxfP0EC1.js → tray-leader-Bas0lH9O.js} +1 -1
  128. package/dist/ui/assets/{tray-leave-runtime-1j0s9Yqq.js → tray-leave-runtime-B9aV_guA.js} +1 -1
  129. package/dist/ui/assets/tray-runtime-config-BZoJXfW0.js +1 -0
  130. package/dist/ui/assets/{tray-sidecar-BUsex5hw.js → tray-sidecar-DA8NfCV6.js} +1 -1
  131. package/dist/ui/assets/{upgrade-detection-DCwNWWGX.js → upgrade-detection-B5ym__Gu.js} +1 -1
  132. package/dist/ui/assets/{upskill-lick-skip-C9u8AmfA.js → upskill-lick-skip-CZGM2OFA.js} +1 -1
  133. package/dist/ui/assets/v86-DseFx8Yp.js +1 -0
  134. package/dist/ui/assets/v86-vm-DCm7zA2r.js +2 -0
  135. package/dist/ui/assets/{voice-reply-CgvrHu7l.js → voice-reply-CL5tDo0l.js} +1 -1
  136. package/dist/ui/assets/{wc-attach-CJV3boxa.js → wc-attach-C5yXIQNU.js} +2 -2
  137. package/dist/ui/assets/{wc-detached-BZT3Rtc5.js → wc-detached-f_qit-5b.js} +1 -1
  138. package/dist/ui/assets/{wc-extension-CZ1sQn79.js → wc-extension-DRx21-cq.js} +2 -2
  139. package/dist/ui/assets/{wc-follower-DO4HcEvu.js → wc-follower-DcKt92kM.js} +3 -3
  140. package/dist/ui/assets/{wc-follower-oauth-CEpYsbPr.js → wc-follower-oauth-BF3qXDTt.js} +1 -1
  141. package/dist/ui/assets/{wc-gelatiere-C4XI_usG.js → wc-gelatiere-qAW7lWGW.js} +1 -1
  142. package/dist/ui/assets/{wc-live-Dz2OSXcJ.js → wc-live-DOMCfDT6.js} +6 -6
  143. package/dist/ui/assets/{wc-nav-ClJyDfXq.js → wc-nav-DzPuXq_n.js} +2 -2
  144. package/dist/ui/assets/{wc-onboarding-BUUyiqjJ.js → wc-onboarding-CXM-z-7_.js} +2 -2
  145. package/dist/ui/assets/{wc-placeholder-Sji0t7ST.js → wc-placeholder-BBqbsuml.js} +3 -3
  146. package/dist/ui/assets/{wc-secret-request-IsuAxr4v.js → wc-secret-request-BSUlxVVi.js} +1 -1
  147. package/dist/ui/assets/{wc-settings-lgNdcEqb.js → wc-settings-55mC-jVS.js} +3 -3
  148. package/dist/ui/assets/{wc-shell-Cj705NBI.js → wc-shell-C71iKreG.js} +3 -3
  149. package/dist/ui/assets/{wc-shortcut-config-ByZ7W9gP.js → wc-shortcut-config-Crjq_rF1.js} +1 -1
  150. package/dist/ui/assets/{wc-sprinkles-D7Cv7m3r.js → wc-sprinkles-Caji5y7n.js} +2 -2
  151. package/dist/ui/assets/{wc-transcript-export-IV61nDvZ.js → wc-transcript-export-Dqe3SH1t.js} +2 -2
  152. package/dist/ui/assets/{wc-tray-XTl0wqt5.js → wc-tray-B7ayzT1W.js} +4 -4
  153. package/dist/ui/assets/welcome-detection-CEARSpAq.js +1 -0
  154. package/dist/ui/assets/{whisper-session-FGrrhHcr.js → whisper-session-DfILe4Yb.js} +2 -2
  155. package/dist/ui/assets/{xai-grok-BdK9whs2.js → xai-grok-CVLBrxdD.js} +1 -1
  156. package/dist/ui/assets/{xai-grok-Z7FTSyzw.js → xai-grok-Dp8n52fO.js} +1 -1
  157. package/dist/ui/index.html +3 -3
  158. package/dist/ui/packages/webapp/index.html +3 -3
  159. package/package.json +1 -1
  160. package/dist/ui/assets/SKILL-CtxHowg1.js +0 -96
  161. package/dist/ui/assets/bridge-protocol-DdqxTTSu.js +0 -1
  162. package/dist/ui/assets/js-realm-worker-Dfep1BlZ.js +0 -50
  163. package/dist/ui/assets/jsh-executor-D4Y05hfn.js +0 -18
  164. package/dist/ui/assets/jsh-runtime-extensions-Bcb8_nba.js +0 -1
  165. package/dist/ui/assets/memory-v2-flag-BkWGkfSv.js +0 -1
  166. package/dist/ui/assets/panel-rpc-handlers-DpxMB-do.js +0 -2
  167. package/dist/ui/assets/provider-store-access-BCysAaQ-.js +0 -1
  168. package/dist/ui/assets/provider-store-access-D-QWySrs.js +0 -1
  169. package/dist/ui/assets/realm-inprocess-BdTkrnDI.js +0 -30
  170. package/dist/ui/assets/slicc-version-Cu6HjDRg.js +0 -1
  171. package/dist/ui/assets/tray-runtime-config-CRZxBChd.js +0 -1
  172. package/dist/ui/assets/welcome-detection-B6Zr7LKu.js +0 -1
@@ -0,0 +1 @@
1
+ import{n as e}from"./wc-onboarding-CXM-z-7_.js";export{e as hasOnboardingFinalLickInHistory};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/speak-DbL0fEQT.js","assets/preload-helper-Czpn1I53.js","assets/logger-DDBAeTLF.js","assets/runtime-env-Dlaokqg1.js","assets/speech-assets-bridge-CFYafE89.js","assets/transformers-env-jBVeNAIF.js","assets/wc-shell-Cj705NBI.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/mime-types-D0xZwlMO.js","assets/base64-DJRlyqZu.js","assets/bridge-protocol-06nbmp2X.js","assets/account-store-CJHBoL7P.js","assets/core-BMcS6rur.js","assets/compat-qQM4gjF_.js","assets/models-BSkXF4T6.js","assets/diagnostics-DN_idNHx.js","assets/provider-env-CTOcDKrQ.js","assets/__vite-browser-external-5eBdwsFd.js","assets/openrouter.models-B-zmcypy.js","assets/libesm-BypnjKEL.js","assets/proxied-fetch-DyBveeCl.js","assets/fetch-body-1l9I58Vk.js","assets/api-endpoint-DGxXvrur.js","assets/secret-topology-DLJBhHOi.js","assets/float-topology-YtctpJaG.js","assets/secrets-bridge-client--VZ3E0yk.js","assets/port-bridge-client-Dn8JtUyP.js","assets/image-markers-BFDmhPy4.js","assets/tool-ui-eSQ1g2I1.js","assets/providers-InF4o-U9.js","assets/panel-rpc-B3MSVImO.js","assets/bedrock-camp-compat-BeCSBUrZ.js","assets/claude-model-version-aqjj5mtp.js","assets/telemetry-DJyRzh6X.js","assets/same-file-identity-DuEcSmPX.js","assets/icons-BM2l-_K7.js","assets/wc-shell-WkeczD9x.css","assets/shared-mBEktoxE.js","assets/transformers.web-BBJR2ai3.js"])))=>i.map(i=>d[i]);
2
- import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF.js";import{a as n,n as r,o as i,r as a,t as o}from"./transformers-env-jBVeNAIF.js";var s=t(`speech:whisper`),c=null,l=`idle`,u=null,d=new Set;function f(){return l}function p(){return u}function m(e){return e&&d.add(e),c||=(l=`loading`,g().then(e=>(l=`ready`,h(),e),e=>{throw l=`failed`,c=null,s.error(`whisper load failed`,e),e})),c}function h(){e(async()=>{let{kokoroWarmup:e}=await import(`./speak-DbL0fEQT.js`);return{kokoroWarmup: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])).then(({kokoroWarmup:e})=>e()).catch(e=>s.warn(`kokoro warmup (chained after whisper) failed`,e))}async function g(){let{pipeline:t,env:c}=await e(async()=>{let{pipeline:e,env:t}=await import(`./transformers.web-BBJR2ai3.js`);return{pipeline:e,env:t}},__vite__mapDeps([38,7,1]));r(c),await o(n),await a();let l=i(),f=e=>{if(e?.file){if(e.status===`progress`)l.update(e.file,e.loaded??0,e.total??0);else if(e.status===`done`)l.complete(e.file);else return;u=l.snapshot();for(let e of d)e(u)}},p=async e=>await t(`automatic-speech-recognition`,n,{device:e,dtype:e===`webgpu`?`fp32`:`q8`,progress_callback:f}),m=typeof navigator<`u`&&`gpu`in navigator,h;if(m)try{h=await p(`webgpu`)}catch(e){s.warn(`whisper webgpu init failed; retrying on wasm`,e),h=await p(`wasm`)}else h=await p(`wasm`);return s.info(`whisper ready`,{model:n,device:m?`webgpu`:`wasm`}),{async transcribe(e,t){let n=performance.now(),r=await h(e,{chunk_length_s:30,task:`transcribe`,...t?.language?{language:t.language}:{}}),i=Array.isArray(r)?r.map(e=>e.text??``).join(` `):r.text??``;return s.info(`whisper transcribe`,{elapsedMs:Math.round(performance.now()-n),audioSeconds:Math.round(e.length/160)/100,numThreads:c.backends?.onnx?.wasm?.numThreads,device:m?`webgpu`:`wasm`}),i.trim()}}}var _=16e3;async function v(e){if(typeof AudioContext>`u`||typeof OfflineAudioContext>`u`)throw Error(`audio decoding requires a window/page realm (AudioContext unavailable)`);let t=new AudioContext,n;try{n=await t.decodeAudioData(e.slice(0))}finally{await t.close().catch(()=>{})}let r=Math.max(1,Math.ceil(n.duration*_)),i=new OfflineAudioContext(1,r,_),a=i.createBufferSource();return a.buffer=n,a.connect(i.destination),a.start(),(await i.startRendering()).getChannelData(0).slice(0)}var y=t(`speech:whisper-session`),b=2e3,x=500,S=5e3,C=3e4,w=(e,t,n)=>new Promise((r,i)=>{let a=setTimeout(()=>i(Error(`${n} timed out after ${t}ms`)),t);e.then(e=>{clearTimeout(a),r(e)},e=>{clearTimeout(a),i(e)})});function T(e){return e?.split(`-`)[0]?.toLowerCase()||void 0}async function E(e,t){let n;if(t.stream)n=t.stream;else{if(!navigator.mediaDevices?.getUserMedia)throw Error(`microphone capture unavailable in this realm`);n=await navigator.mediaDevices.getUserMedia({audio:t.deviceId&&t.deviceId!=="default"?{deviceId:{exact:t.deviceId}}:!0})}let r=new MediaRecorder(n),i=[],a=T(t.lang),o=!1,s=!1;r.ondataavailable=e=>{e.data.size>0&&i.push(e.data)};let c=async()=>{if(i.length===0)return``;let t=await v(await new Blob(i,{type:r.mimeType||`audio/webm`}).arrayBuffer());return e.transcribe(t,{language:a})},l=Promise.resolve(``),u=()=>{let e=l.catch(()=>``).then(()=>c());return l=e.catch(()=>``),e},d=setInterval(()=>{o||s||i.length===0||(o=!0,u().then(e=>{!s&&e&&t.onPartial?.(e)}).catch(e=>{y.warn(`partial transcription failed`,e)}).finally(()=>{o=!1}))},b),f=()=>{if(clearInterval(d),r.state!==`inactive`)try{r.stop()}catch{}for(let e of n.getTracks())e.stop()},p=()=>new Promise(e=>{if(r.state===`inactive`){e();return}r.onstop=()=>e();try{r.stop()}catch{e()}});return r.start(x),{async stop(){if(s)return``;s=!0,clearInterval(d);try{await w(p(),S,`recorder flush`);for(let e of n.getTracks())e.stop();return await w(u(),C,`transcription`)}catch(e){for(let e of n.getTracks())e.stop();let r=e instanceof Error?e.message:String(e);return t.onError?.(`transcription failed: ${r}`),``}},cancel(){s||(s=!0,f())}}}export{p as a,m as i,T as n,f as o,v as r,E as t};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/speak-BY_fDou2.js","assets/preload-helper-Czpn1I53.js","assets/logger-DDBAeTLF.js","assets/runtime-env-Dlaokqg1.js","assets/speech-assets-bridge-CFYafE89.js","assets/transformers-env-pq1E2H6B.js","assets/wc-shell-C71iKreG.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/mime-types-D0xZwlMO.js","assets/base64-DJRlyqZu.js","assets/bridge-protocol-06nbmp2X.js","assets/account-store-C35GYvum.js","assets/core-BMcS6rur.js","assets/compat-qQM4gjF_.js","assets/models-BSkXF4T6.js","assets/diagnostics-DN_idNHx.js","assets/provider-env-CTOcDKrQ.js","assets/__vite-browser-external-5eBdwsFd.js","assets/openrouter.models-B-zmcypy.js","assets/libesm-BypnjKEL.js","assets/proxied-fetch-DyBveeCl.js","assets/fetch-body-1l9I58Vk.js","assets/api-endpoint-DGxXvrur.js","assets/secret-topology-DLJBhHOi.js","assets/float-topology-YtctpJaG.js","assets/secrets-bridge-client--VZ3E0yk.js","assets/port-bridge-client-Dn8JtUyP.js","assets/image-markers-BFDmhPy4.js","assets/tool-ui-eSQ1g2I1.js","assets/providers-CnoKdyLc.js","assets/panel-rpc-B3MSVImO.js","assets/bedrock-camp-compat-BeCSBUrZ.js","assets/claude-model-version-aqjj5mtp.js","assets/telemetry-DJyRzh6X.js","assets/same-file-identity-DuEcSmPX.js","assets/icons-BM2l-_K7.js","assets/wc-shell-WkeczD9x.css","assets/shared-mBEktoxE.js","assets/transformers.web-BBJR2ai3.js"])))=>i.map(i=>d[i]);
2
+ import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF.js";import{a as n,n as r,o as i,r as a,t as o}from"./transformers-env-pq1E2H6B.js";var s=t(`speech:whisper`),c=null,l=`idle`,u=null,d=new Set;function f(){return l}function p(){return u}function m(e){return e&&d.add(e),c||=(l=`loading`,g().then(e=>(l=`ready`,h(),e),e=>{throw l=`failed`,c=null,s.error(`whisper load failed`,e),e})),c}function h(){e(async()=>{let{kokoroWarmup:e}=await import(`./speak-BY_fDou2.js`);return{kokoroWarmup: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])).then(({kokoroWarmup:e})=>e()).catch(e=>s.warn(`kokoro warmup (chained after whisper) failed`,e))}async function g(){let{pipeline:t,env:c}=await e(async()=>{let{pipeline:e,env:t}=await import(`./transformers.web-BBJR2ai3.js`);return{pipeline:e,env:t}},__vite__mapDeps([38,7,1]));r(c),await o(n),await a();let l=i(),f=e=>{if(e?.file){if(e.status===`progress`)l.update(e.file,e.loaded??0,e.total??0);else if(e.status===`done`)l.complete(e.file);else return;u=l.snapshot();for(let e of d)e(u)}},p=async e=>await t(`automatic-speech-recognition`,n,{device:e,dtype:e===`webgpu`?`fp32`:`q8`,progress_callback:f}),m=typeof navigator<`u`&&`gpu`in navigator,h;if(m)try{h=await p(`webgpu`)}catch(e){s.warn(`whisper webgpu init failed; retrying on wasm`,e),h=await p(`wasm`)}else h=await p(`wasm`);return s.info(`whisper ready`,{model:n,device:m?`webgpu`:`wasm`}),{async transcribe(e,t){let n=performance.now(),r=await h(e,{chunk_length_s:30,task:`transcribe`,...t?.language?{language:t.language}:{}}),i=Array.isArray(r)?r.map(e=>e.text??``).join(` `):r.text??``;return s.info(`whisper transcribe`,{elapsedMs:Math.round(performance.now()-n),audioSeconds:Math.round(e.length/160)/100,numThreads:c.backends?.onnx?.wasm?.numThreads,device:m?`webgpu`:`wasm`}),i.trim()}}}var _=16e3;async function v(e){if(typeof AudioContext>`u`||typeof OfflineAudioContext>`u`)throw Error(`audio decoding requires a window/page realm (AudioContext unavailable)`);let t=new AudioContext,n;try{n=await t.decodeAudioData(e.slice(0))}finally{await t.close().catch(()=>{})}let r=Math.max(1,Math.ceil(n.duration*_)),i=new OfflineAudioContext(1,r,_),a=i.createBufferSource();return a.buffer=n,a.connect(i.destination),a.start(),(await i.startRendering()).getChannelData(0).slice(0)}var y=t(`speech:whisper-session`),b=2e3,x=500,S=5e3,C=3e4,w=(e,t,n)=>new Promise((r,i)=>{let a=setTimeout(()=>i(Error(`${n} timed out after ${t}ms`)),t);e.then(e=>{clearTimeout(a),r(e)},e=>{clearTimeout(a),i(e)})});function T(e){return e?.split(`-`)[0]?.toLowerCase()||void 0}async function E(e,t){let n;if(t.stream)n=t.stream;else{if(!navigator.mediaDevices?.getUserMedia)throw Error(`microphone capture unavailable in this realm`);n=await navigator.mediaDevices.getUserMedia({audio:t.deviceId&&t.deviceId!=="default"?{deviceId:{exact:t.deviceId}}:!0})}let r=new MediaRecorder(n),i=[],a=T(t.lang),o=!1,s=!1;r.ondataavailable=e=>{e.data.size>0&&i.push(e.data)};let c=async()=>{if(i.length===0)return``;let t=await v(await new Blob(i,{type:r.mimeType||`audio/webm`}).arrayBuffer());return e.transcribe(t,{language:a})},l=Promise.resolve(``),u=()=>{let e=l.catch(()=>``).then(()=>c());return l=e.catch(()=>``),e},d=setInterval(()=>{o||s||i.length===0||(o=!0,u().then(e=>{!s&&e&&t.onPartial?.(e)}).catch(e=>{y.warn(`partial transcription failed`,e)}).finally(()=>{o=!1}))},b),f=()=>{if(clearInterval(d),r.state!==`inactive`)try{r.stop()}catch{}for(let e of n.getTracks())e.stop()},p=()=>new Promise(e=>{if(r.state===`inactive`){e();return}r.onstop=()=>e();try{r.stop()}catch{e()}});return r.start(x),{async stop(){if(s)return``;s=!0,clearInterval(d);try{await w(p(),S,`recorder flush`);for(let e of n.getTracks())e.stop();return await w(u(),C,`transcription`)}catch(e){for(let e of n.getTracks())e.stop();let r=e instanceof Error?e.message:String(e);return t.onError?.(`transcription failed: ${r}`),``}},cancel(){s||(s=!0,f())}}}export{p as a,m as i,T as n,f as o,v as r,E as t};
@@ -1 +1 @@
1
- import{_ as e,r as t}from"./account-store-lzZlhljv.js";import{a as n}from"./diagnostics-DN_idNHx.js";import{a as r,r as i}from"./compat-uEPf6-XW.js";import{c as a,i as o,r as s,s as c}from"./legacy-api-aliases-jKEvBgOL.js";import"./provider-settings-D8qwiWrG.js";import{n as l,r as u,t as d}from"./pkce-hGf_TEnP.js";import{XaiErrorCode as f,XaiOAuthError as p}from"./xai-grok-errors-ByEMMSoz.js";function m(e){return typeof e==`object`&&!!e}function h(e){if(!m(e))return null;let t=m(e.config)?e.config:e,n=t.creditUsagePercent;if(typeof n!=`number`||!Number.isFinite(n))return null;let r=Math.min(1e3,Math.max(0,n)),i=m(t.currentPeriod)?t.currentPeriod:{},a=i.type,o=typeof a==`string`?a.replace(`USAGE_PERIOD_TYPE_`,``).toLowerCase():``,s=i.end??t.billingPeriodEnd,c=typeof s==`string`&&Number.isFinite(Date.parse(s))?s:void 0;return{percent:r,status:`ok`,window:o&&o!==`unspecified`?o:`billing`,...c?{resetsAt:c}:{}}}async function g(e,t,n={}){let r=new AbortController,i=setTimeout(()=>r.abort(),n.timeoutMs??8e3);try{let n=await t(`https://cli-chat-proxy.grok.com/v1/billing?format=credits`,{headers:{Authorization:`Bearer ${e}`},signal:r.signal}),{status:i}=n;if(i===404||i===501)return null;if(!n.ok)throw Error(`xAI Grok usage: ${i===401||i===403?`re-login required`:`failed`} (${i})`);let a=await n.text();if(a.length>65536)return null;try{return h(JSON.parse(a))}catch{return null}}finally{clearTimeout(i)}}const _=`xai-grok`,v=`https://auth.x.ai`,y=`${v}/oauth2/authorize`,b=`${v}/oauth2/token`,x=`b1a00492-073a-47ea-816f-4c329264a828`,S=`http://127.0.0.1:56121/callback`,C=`https://api.x.ai/v1`,w=`grok-4.5`,T=`${_}-openai`;function E(){return i(`xai`)}function D(e){return{id:e.id,name:e.name,api:`openai`,reasoning:e.reasoning,input:e.input,context_window:e.contextWindow,max_tokens:e.maxTokens,compat:e.compat,thinkingLevelMap:e.thinkingLevelMap}}function O(e){let t=E(),n=t.find(t=>t.id===e.id);if(!n&&(console.warn(`xAI model "${e.id}" is no longer in the pi-ai catalog; falling back to default "${w}"`),n=t.find(e=>e.id===w),!n))throw Error(`xAI default model "${w}" is not registered by pi-ai`);if(n.api!==`openai-responses`&&n.api!==`openai-completions`)throw Error(`Unsupported pi-ai API "${n.api}" for xAI model "${e.id}"`);return{...e,...n,baseUrl:C}}async function k(e,t){let n=new URLSearchParams({grant_type:`authorization_code`,code:e,redirect_uri:S,client_id:x,code_verifier:t}),r=await fetch(b,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:n});if(!r.ok)throw new p(`xAI token exchange failed: ${r.status} ${await r.text()}`,f.TOKEN_EXCHANGE_FAILED);let i=await r.json();if(!i.access_token)throw new p(`xAI token exchange did not return access_token.`,f.TOKEN_EXCHANGE_INVALID);return i}async function A(e){try{let t=new URLSearchParams({grant_type:`refresh_token`,refresh_token:e,client_id:x}),n=await fetch(b,{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 t().find(e=>e.providerId===_)}async function M(){let t=j();if(!t?.accessToken)throw new p("Not signed in to xAI Grok — run /login or `oauth-token xai-grok`",f.AUTH_MISSING,!0);let n=t.tokenExpiresAt??0;if(n&&Date.now()+6e4<n)return t.accessToken;if(t.refreshToken){let n=await A(t.refreshToken);if(n?.access_token)return await e({providerId:_,accessToken:n.access_token,refreshToken:n.refresh_token??t.refreshToken,tokenExpiresAt:Date.now()+(n.expires_in??21600)*1e3,scopes:n.scope??t.scopes}),n.access_token}return t.accessToken}async function N(){if(!j()?.accessToken)throw Error(`xAI Grok budget: not signed in`);return g(await M(),fetch)}function P(e,t){return{type:`error`,reason:`error`,error:{role:`assistant`,content:[],api:T,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 instanceof Error?t.message:String(t),timestamp:Date.now()}}}function F(e,t){return t?{...e??{},"x-grok-conv-id":t}:e}function I(e){console.error(`[xai-grok] Stream error:`,e instanceof Error?e.message:String(e))}async function L(e,t,n,r){try{let i=await M(),a=r.sessionId,c=O(t),l={...r,apiKey:i,headers:F(r.headers,a)},u=c.api===`openai-responses`?o(c,n,l):s(c,n,l);for await(let t of u)e.push(t);e.end()}catch(n){I(n),e.push(P(t,n)),e.end()}}async function R(e,t,n,r){try{let i=await M(),o=r?.sessionId,s=O(t),l={...r,apiKey:i,headers:F(r?.headers,o)},u=s.api===`openai-responses`?a(s,n,l):c(s,n,l);for await(let t of u)e.push(t);e.end()}catch(n){I(n),e.push(P(t,n)),e.end()}}const z=(e,t,r={})=>{let i=n();return L(i,e,t,r).catch(I),i},B=(e,t,r)=>{let i=n();return R(i,e,t,r).catch(I),i},V={id:_,name:`xAI Grok (SuperGrok OAuth)`,description:`Grok via xAI OAuth — uses your SuperGrok subscription, no API key needed. Default model is Grok 4.5.`,requiresApiKey:!1,requiresBaseUrl:!1,isOAuth:!0,defaultModelId:w,oauthTokenDomains:[`api.x.ai`,`*.x.ai`,`auth.x.ai`,`accounts.x.ai`,`cli-chat-proxy.grok.com`],getModelIds:()=>E().map(D),getBudgetUsage:N,onOAuthLoginIntercepted:async(t,n,r)=>{let i=l(),a=await d(i),o=u(),s=u(),c=new URL(y);c.searchParams.set(`response_type`,`code`),c.searchParams.set(`client_id`,x),c.searchParams.set(`redirect_uri`,S),c.searchParams.set(`scope`,r?.scopes??`openid profile email offline_access grok-cli:access api:access`),c.searchParams.set(`code_challenge`,a),c.searchParams.set(`code_challenge_method`,`S256`),c.searchParams.set(`state`,o),c.searchParams.set(`nonce`,s),c.searchParams.set(`plan`,`generic`),c.searchParams.set(`referrer`,`slicc`);let m=await t({authorizeUrl:c.toString(),redirectUriPattern:`http://127.0.0.1:56121/*`,onCapture:`close`});if(!m)throw new p(`xAI OAuth login was cancelled or timed out`,f.CALLBACK_TIMEOUT);let h=new URL(m),g=h.searchParams.get(`code`),v=h.searchParams.get(`state`);if(!g)throw new p(`xAI OAuth redirect did not include a code`,f.CODE_MISSING);if(v!==o)throw new p(`xAI OAuth state mismatch — possible CSRF, aborting`,f.STATE_MISMATCH);let b=await k(g,i);await e({providerId:_,accessToken:b.access_token,refreshToken:b.refresh_token,tokenExpiresAt:Date.now()+(b.expires_in??21600)*1e3,baseUrl:C,scopes:b.scope}),n()},onOAuthLogout:async()=>{await e({providerId:_,accessToken:``})},onSilentRenew:async()=>{let t=j();if(!t?.refreshToken)return null;let n=await A(t.refreshToken);return n?.access_token?(await e({providerId:_,accessToken:n.access_token,refreshToken:n.refresh_token??t.refreshToken,tokenExpiresAt:Date.now()+(n.expires_in??21600)*1e3,scopes:n.scope??t.scopes}),n.access_token):null}};function H(){r({api:T,stream:z,streamSimple:B})}export{f as XaiErrorCode,p as XaiOAuthError,V as config,H as register};
1
+ import{_ as e,r as t}from"./account-store-BEqmysw9.js";import{a as n}from"./diagnostics-DN_idNHx.js";import{a as r,r as i}from"./compat-uEPf6-XW.js";import{c as a,i as o,r as s,s as c}from"./legacy-api-aliases-jKEvBgOL.js";import"./provider-settings-D9sjEfYE.js";import{n as l,r as u,t as d}from"./pkce-hGf_TEnP.js";import{XaiErrorCode as f,XaiOAuthError as p}from"./xai-grok-errors-ByEMMSoz.js";function m(e){return typeof e==`object`&&!!e}function h(e){if(!m(e))return null;let t=m(e.config)?e.config:e,n=t.creditUsagePercent;if(typeof n!=`number`||!Number.isFinite(n))return null;let r=Math.min(1e3,Math.max(0,n)),i=m(t.currentPeriod)?t.currentPeriod:{},a=i.type,o=typeof a==`string`?a.replace(`USAGE_PERIOD_TYPE_`,``).toLowerCase():``,s=i.end??t.billingPeriodEnd,c=typeof s==`string`&&Number.isFinite(Date.parse(s))?s:void 0;return{percent:r,status:`ok`,window:o&&o!==`unspecified`?o:`billing`,...c?{resetsAt:c}:{}}}async function g(e,t,n={}){let r=new AbortController,i=setTimeout(()=>r.abort(),n.timeoutMs??8e3);try{let n=await t(`https://cli-chat-proxy.grok.com/v1/billing?format=credits`,{headers:{Authorization:`Bearer ${e}`},signal:r.signal}),{status:i}=n;if(i===404||i===501)return null;if(!n.ok)throw Error(`xAI Grok usage: ${i===401||i===403?`re-login required`:`failed`} (${i})`);let a=await n.text();if(a.length>65536)return null;try{return h(JSON.parse(a))}catch{return null}}finally{clearTimeout(i)}}const _=`xai-grok`,v=`https://auth.x.ai`,y=`${v}/oauth2/authorize`,b=`${v}/oauth2/token`,x=`b1a00492-073a-47ea-816f-4c329264a828`,S=`http://127.0.0.1:56121/callback`,C=`https://api.x.ai/v1`,w=`grok-4.5`,T=`${_}-openai`;function E(){return i(`xai`)}function D(e){return{id:e.id,name:e.name,api:`openai`,reasoning:e.reasoning,input:e.input,context_window:e.contextWindow,max_tokens:e.maxTokens,compat:e.compat,thinkingLevelMap:e.thinkingLevelMap}}function O(e){let t=E(),n=t.find(t=>t.id===e.id);if(!n&&(console.warn(`xAI model "${e.id}" is no longer in the pi-ai catalog; falling back to default "${w}"`),n=t.find(e=>e.id===w),!n))throw Error(`xAI default model "${w}" is not registered by pi-ai`);if(n.api!==`openai-responses`&&n.api!==`openai-completions`)throw Error(`Unsupported pi-ai API "${n.api}" for xAI model "${e.id}"`);return{...e,...n,baseUrl:C}}async function k(e,t){let n=new URLSearchParams({grant_type:`authorization_code`,code:e,redirect_uri:S,client_id:x,code_verifier:t}),r=await fetch(b,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:n});if(!r.ok)throw new p(`xAI token exchange failed: ${r.status} ${await r.text()}`,f.TOKEN_EXCHANGE_FAILED);let i=await r.json();if(!i.access_token)throw new p(`xAI token exchange did not return access_token.`,f.TOKEN_EXCHANGE_INVALID);return i}async function A(e){try{let t=new URLSearchParams({grant_type:`refresh_token`,refresh_token:e,client_id:x}),n=await fetch(b,{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 t().find(e=>e.providerId===_)}async function M(){let t=j();if(!t?.accessToken)throw new p("Not signed in to xAI Grok — run /login or `oauth-token xai-grok`",f.AUTH_MISSING,!0);let n=t.tokenExpiresAt??0;if(n&&Date.now()+6e4<n)return t.accessToken;if(t.refreshToken){let n=await A(t.refreshToken);if(n?.access_token)return await e({providerId:_,accessToken:n.access_token,refreshToken:n.refresh_token??t.refreshToken,tokenExpiresAt:Date.now()+(n.expires_in??21600)*1e3,scopes:n.scope??t.scopes}),n.access_token}return t.accessToken}async function N(){if(!j()?.accessToken)throw Error(`xAI Grok budget: not signed in`);return g(await M(),fetch)}function P(e,t){return{type:`error`,reason:`error`,error:{role:`assistant`,content:[],api:T,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 instanceof Error?t.message:String(t),timestamp:Date.now()}}}function F(e,t){return t?{...e??{},"x-grok-conv-id":t}:e}function I(e){console.error(`[xai-grok] Stream error:`,e instanceof Error?e.message:String(e))}async function L(e,t,n,r){try{let i=await M(),a=r.sessionId,c=O(t),l={...r,apiKey:i,headers:F(r.headers,a)},u=c.api===`openai-responses`?o(c,n,l):s(c,n,l);for await(let t of u)e.push(t);e.end()}catch(n){I(n),e.push(P(t,n)),e.end()}}async function R(e,t,n,r){try{let i=await M(),o=r?.sessionId,s=O(t),l={...r,apiKey:i,headers:F(r?.headers,o)},u=s.api===`openai-responses`?a(s,n,l):c(s,n,l);for await(let t of u)e.push(t);e.end()}catch(n){I(n),e.push(P(t,n)),e.end()}}const z=(e,t,r={})=>{let i=n();return L(i,e,t,r).catch(I),i},B=(e,t,r)=>{let i=n();return R(i,e,t,r).catch(I),i},V={id:_,name:`xAI Grok (SuperGrok OAuth)`,description:`Grok via xAI OAuth — uses your SuperGrok subscription, no API key needed. Default model is Grok 4.5.`,requiresApiKey:!1,requiresBaseUrl:!1,isOAuth:!0,defaultModelId:w,oauthTokenDomains:[`api.x.ai`,`*.x.ai`,`auth.x.ai`,`accounts.x.ai`,`cli-chat-proxy.grok.com`],getModelIds:()=>E().map(D),getBudgetUsage:N,onOAuthLoginIntercepted:async(t,n,r)=>{let i=l(),a=await d(i),o=u(),s=u(),c=new URL(y);c.searchParams.set(`response_type`,`code`),c.searchParams.set(`client_id`,x),c.searchParams.set(`redirect_uri`,S),c.searchParams.set(`scope`,r?.scopes??`openid profile email offline_access grok-cli:access api:access`),c.searchParams.set(`code_challenge`,a),c.searchParams.set(`code_challenge_method`,`S256`),c.searchParams.set(`state`,o),c.searchParams.set(`nonce`,s),c.searchParams.set(`plan`,`generic`),c.searchParams.set(`referrer`,`slicc`);let m=await t({authorizeUrl:c.toString(),redirectUriPattern:`http://127.0.0.1:56121/*`,onCapture:`close`});if(!m)throw new p(`xAI OAuth login was cancelled or timed out`,f.CALLBACK_TIMEOUT);let h=new URL(m),g=h.searchParams.get(`code`),v=h.searchParams.get(`state`);if(!g)throw new p(`xAI OAuth redirect did not include a code`,f.CODE_MISSING);if(v!==o)throw new p(`xAI OAuth state mismatch — possible CSRF, aborting`,f.STATE_MISMATCH);let b=await k(g,i);await e({providerId:_,accessToken:b.access_token,refreshToken:b.refresh_token,tokenExpiresAt:Date.now()+(b.expires_in??21600)*1e3,baseUrl:C,scopes:b.scope}),n()},onOAuthLogout:async()=>{await e({providerId:_,accessToken:``})},onSilentRenew:async()=>{let t=j();if(!t?.refreshToken)return null;let n=await A(t.refreshToken);return n?.access_token?(await e({providerId:_,accessToken:n.access_token,refreshToken:n.refresh_token??t.refreshToken,tokenExpiresAt:Date.now()+(n.expires_in??21600)*1e3,scopes:n.scope??t.scopes}),n.access_token):null}};function H(){r({api:T,stream:z,streamSimple:B})}export{f as XaiErrorCode,p as XaiOAuthError,V as config,H as register};
@@ -1 +1 @@
1
- import{a as e}from"./diagnostics-DN_idNHx.js";import{a as t,r as n}from"./compat-qQM4gjF_.js";import{c as r,i,r as a,s as o}from"./legacy-api-aliases-DtQJ5I7w.js";import{G as s,f as c}from"./account-store-CJHBoL7P.js";import"./main-Dxem3Ydy.js";import{n as l,r as u,t as d}from"./pkce-hGf_TEnP.js";import{XaiErrorCode as f,XaiOAuthError as p}from"./xai-grok-errors-bnlIBeu-.js";var m=`https://cli-chat-proxy.grok.com/v1/billing?format=credits`,h=8e3,g=65536,_=1e3;function v(e){return typeof e==`object`&&!!e}function y(e){if(!v(e))return null;let t=v(e.config)?e.config:e,n=t.creditUsagePercent;if(typeof n!=`number`||!Number.isFinite(n))return null;let r=Math.min(_,Math.max(0,n)),i=v(t.currentPeriod)?t.currentPeriod:{},a=i.type,o=typeof a==`string`?a.replace(`USAGE_PERIOD_TYPE_`,``).toLowerCase():``,s=i.end??t.billingPeriodEnd,c=typeof s==`string`&&Number.isFinite(Date.parse(s))?s:void 0;return{percent:r,status:`ok`,window:o&&o!==`unspecified`?o:`billing`,...c?{resetsAt:c}:{}}}async function b(e,t,n={}){let r=new AbortController,i=setTimeout(()=>r.abort(),n.timeoutMs??h);try{let n=await t(m,{headers:{Authorization:`Bearer ${e}`},signal:r.signal}),{status:i}=n;if(i===404||i===501)return null;if(!n.ok)throw Error(`xAI Grok usage: ${i===401||i===403?`re-login required`:`failed`} (${i})`);let a=await n.text();if(a.length>g)return null;try{return y(JSON.parse(a))}catch{return null}}finally{clearTimeout(i)}}var x=`xai-grok`,S=`https://auth.x.ai`,C=`${S}/oauth2/authorize`,w=`${S}/oauth2/token`,T=`b1a00492-073a-47ea-816f-4c329264a828`,E=`openid profile email offline_access grok-cli:access api:access`,D=`http://127.0.0.1:56121/callback`,O=`http://127.0.0.1:56121/*`,k=`https://api.x.ai/v1`,A=`grok-4.5`,j=`${x}-openai`;function M(){return n(`xai`)}function N(e){return{id:e.id,name:e.name,api:`openai`,reasoning:e.reasoning,input:e.input,context_window:e.contextWindow,max_tokens:e.maxTokens,compat:e.compat,thinkingLevelMap:e.thinkingLevelMap}}function P(e){let t=M(),n=t.find(t=>t.id===e.id);if(!n&&(console.warn(`xAI model "${e.id}" is no longer in the pi-ai catalog; falling back to default "${A}"`),n=t.find(e=>e.id===A),!n))throw Error(`xAI default model "${A}" is not registered by pi-ai`);if(n.api!==`openai-responses`&&n.api!==`openai-completions`)throw Error(`Unsupported pi-ai API "${n.api}" for xAI model "${e.id}"`);return{...e,...n,baseUrl:k}}async function F(e,t){let n=new URLSearchParams({grant_type:`authorization_code`,code:e,redirect_uri:D,client_id:T,code_verifier:t}),r=await fetch(w,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:n});if(!r.ok)throw new p(`xAI token exchange failed: ${r.status} ${await r.text()}`,f.TOKEN_EXCHANGE_FAILED);let i=await r.json();if(!i.access_token)throw new p(`xAI token exchange did not return access_token.`,f.TOKEN_EXCHANGE_INVALID);return i}async function I(e){try{let t=new URLSearchParams({grant_type:`refresh_token`,refresh_token:e,client_id:T}),n=await fetch(w,{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 L(){return c().find(e=>e.providerId===x)}async function R(){let e=L();if(!e?.accessToken)throw new p("Not signed in to xAI Grok — run /login or `oauth-token xai-grok`",f.AUTH_MISSING,!0);let t=e.tokenExpiresAt??0;if(t&&Date.now()+6e4<t)return e.accessToken;if(e.refreshToken){let t=await I(e.refreshToken);if(t?.access_token)return await s({providerId:x,accessToken:t.access_token,refreshToken:t.refresh_token??e.refreshToken,tokenExpiresAt:Date.now()+(t.expires_in??21600)*1e3,scopes:t.scope??e.scopes}),t.access_token}return e.accessToken}async function z(){if(!L()?.accessToken)throw Error(`xAI Grok budget: not signed in`);return b(await R(),fetch)}function B(e,t){return{type:`error`,reason:`error`,error:{role:`assistant`,content:[],api:j,provider:x,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 V(e,t){return t?{...e??{},"x-grok-conv-id":t}:e}function H(e){console.error(`[xai-grok] Stream error:`,e instanceof Error?e.message:String(e))}async function U(e,t,n,r){try{let o=await R(),s=r.sessionId,c=P(t),l={...r,apiKey:o,headers:V(r.headers,s)},u=c.api===`openai-responses`?i(c,n,l):a(c,n,l);for await(let t of u)e.push(t);e.end()}catch(n){H(n),e.push(B(t,n)),e.end()}}async function W(e,t,n,i){try{let a=await R(),s=i?.sessionId,c=P(t),l={...i,apiKey:a,headers:V(i?.headers,s)},u=c.api===`openai-responses`?r(c,n,l):o(c,n,l);for await(let t of u)e.push(t);e.end()}catch(n){H(n),e.push(B(t,n)),e.end()}}var G=(t,n,r={})=>{let i=e();return U(i,t,n,r).catch(H),i},K=(t,n,r)=>{let i=e();return W(i,t,n,r).catch(H),i},q={id:x,name:`xAI Grok (SuperGrok OAuth)`,description:`Grok via xAI OAuth — uses your SuperGrok subscription, no API key needed. Default model is Grok 4.5.`,requiresApiKey:!1,requiresBaseUrl:!1,isOAuth:!0,defaultModelId:A,oauthTokenDomains:[`api.x.ai`,`*.x.ai`,`auth.x.ai`,`accounts.x.ai`,`cli-chat-proxy.grok.com`],getModelIds:()=>M().map(N),getBudgetUsage:z,onOAuthLoginIntercepted:async(e,t,n)=>{let r=l(),i=await d(r),a=u(),o=u(),c=new URL(C);c.searchParams.set(`response_type`,`code`),c.searchParams.set(`client_id`,T),c.searchParams.set(`redirect_uri`,D),c.searchParams.set(`scope`,n?.scopes??E),c.searchParams.set(`code_challenge`,i),c.searchParams.set(`code_challenge_method`,`S256`),c.searchParams.set(`state`,a),c.searchParams.set(`nonce`,o),c.searchParams.set(`plan`,`generic`),c.searchParams.set(`referrer`,`slicc`);let m=await e({authorizeUrl:c.toString(),redirectUriPattern:O,onCapture:`close`});if(!m)throw new p(`xAI OAuth login was cancelled or timed out`,f.CALLBACK_TIMEOUT);let h=new URL(m),g=h.searchParams.get(`code`),_=h.searchParams.get(`state`);if(!g)throw new p(`xAI OAuth redirect did not include a code`,f.CODE_MISSING);if(_!==a)throw new p(`xAI OAuth state mismatch — possible CSRF, aborting`,f.STATE_MISMATCH);let v=await F(g,r);await s({providerId:x,accessToken:v.access_token,refreshToken:v.refresh_token,tokenExpiresAt:Date.now()+(v.expires_in??21600)*1e3,baseUrl:k,scopes:v.scope}),t()},onOAuthLogout:async()=>{await s({providerId:x,accessToken:``})},onSilentRenew:async()=>{let e=L();if(!e?.refreshToken)return null;let t=await I(e.refreshToken);return t?.access_token?(await s({providerId:x,accessToken:t.access_token,refreshToken:t.refresh_token??e.refreshToken,tokenExpiresAt:Date.now()+(t.expires_in??21600)*1e3,scopes:t.scope??e.scopes}),t.access_token):null}};function J(){t({api:j,stream:G,streamSimple:K})}export{f as XaiErrorCode,p as XaiOAuthError,q as config,J as register};
1
+ import{a as e}from"./diagnostics-DN_idNHx.js";import{a as t,r as n}from"./compat-qQM4gjF_.js";import{c as r,i,r as a,s as o}from"./legacy-api-aliases-DtQJ5I7w.js";import{G as s,f as c}from"./account-store-C35GYvum.js";import"./main-CfF8CFBr.js";import{n as l,r as u,t as d}from"./pkce-hGf_TEnP.js";import{XaiErrorCode as f,XaiOAuthError as p}from"./xai-grok-errors-bnlIBeu-.js";var m=`https://cli-chat-proxy.grok.com/v1/billing?format=credits`,h=8e3,g=65536,_=1e3;function v(e){return typeof e==`object`&&!!e}function y(e){if(!v(e))return null;let t=v(e.config)?e.config:e,n=t.creditUsagePercent;if(typeof n!=`number`||!Number.isFinite(n))return null;let r=Math.min(_,Math.max(0,n)),i=v(t.currentPeriod)?t.currentPeriod:{},a=i.type,o=typeof a==`string`?a.replace(`USAGE_PERIOD_TYPE_`,``).toLowerCase():``,s=i.end??t.billingPeriodEnd,c=typeof s==`string`&&Number.isFinite(Date.parse(s))?s:void 0;return{percent:r,status:`ok`,window:o&&o!==`unspecified`?o:`billing`,...c?{resetsAt:c}:{}}}async function b(e,t,n={}){let r=new AbortController,i=setTimeout(()=>r.abort(),n.timeoutMs??h);try{let n=await t(m,{headers:{Authorization:`Bearer ${e}`},signal:r.signal}),{status:i}=n;if(i===404||i===501)return null;if(!n.ok)throw Error(`xAI Grok usage: ${i===401||i===403?`re-login required`:`failed`} (${i})`);let a=await n.text();if(a.length>g)return null;try{return y(JSON.parse(a))}catch{return null}}finally{clearTimeout(i)}}var x=`xai-grok`,S=`https://auth.x.ai`,C=`${S}/oauth2/authorize`,w=`${S}/oauth2/token`,T=`b1a00492-073a-47ea-816f-4c329264a828`,E=`openid profile email offline_access grok-cli:access api:access`,D=`http://127.0.0.1:56121/callback`,O=`http://127.0.0.1:56121/*`,k=`https://api.x.ai/v1`,A=`grok-4.5`,j=`${x}-openai`;function M(){return n(`xai`)}function N(e){return{id:e.id,name:e.name,api:`openai`,reasoning:e.reasoning,input:e.input,context_window:e.contextWindow,max_tokens:e.maxTokens,compat:e.compat,thinkingLevelMap:e.thinkingLevelMap}}function P(e){let t=M(),n=t.find(t=>t.id===e.id);if(!n&&(console.warn(`xAI model "${e.id}" is no longer in the pi-ai catalog; falling back to default "${A}"`),n=t.find(e=>e.id===A),!n))throw Error(`xAI default model "${A}" is not registered by pi-ai`);if(n.api!==`openai-responses`&&n.api!==`openai-completions`)throw Error(`Unsupported pi-ai API "${n.api}" for xAI model "${e.id}"`);return{...e,...n,baseUrl:k}}async function F(e,t){let n=new URLSearchParams({grant_type:`authorization_code`,code:e,redirect_uri:D,client_id:T,code_verifier:t}),r=await fetch(w,{method:`POST`,headers:{"Content-Type":`application/x-www-form-urlencoded`},body:n});if(!r.ok)throw new p(`xAI token exchange failed: ${r.status} ${await r.text()}`,f.TOKEN_EXCHANGE_FAILED);let i=await r.json();if(!i.access_token)throw new p(`xAI token exchange did not return access_token.`,f.TOKEN_EXCHANGE_INVALID);return i}async function I(e){try{let t=new URLSearchParams({grant_type:`refresh_token`,refresh_token:e,client_id:T}),n=await fetch(w,{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 L(){return c().find(e=>e.providerId===x)}async function R(){let e=L();if(!e?.accessToken)throw new p("Not signed in to xAI Grok — run /login or `oauth-token xai-grok`",f.AUTH_MISSING,!0);let t=e.tokenExpiresAt??0;if(t&&Date.now()+6e4<t)return e.accessToken;if(e.refreshToken){let t=await I(e.refreshToken);if(t?.access_token)return await s({providerId:x,accessToken:t.access_token,refreshToken:t.refresh_token??e.refreshToken,tokenExpiresAt:Date.now()+(t.expires_in??21600)*1e3,scopes:t.scope??e.scopes}),t.access_token}return e.accessToken}async function z(){if(!L()?.accessToken)throw Error(`xAI Grok budget: not signed in`);return b(await R(),fetch)}function B(e,t){return{type:`error`,reason:`error`,error:{role:`assistant`,content:[],api:j,provider:x,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 V(e,t){return t?{...e??{},"x-grok-conv-id":t}:e}function H(e){console.error(`[xai-grok] Stream error:`,e instanceof Error?e.message:String(e))}async function U(e,t,n,r){try{let o=await R(),s=r.sessionId,c=P(t),l={...r,apiKey:o,headers:V(r.headers,s)},u=c.api===`openai-responses`?i(c,n,l):a(c,n,l);for await(let t of u)e.push(t);e.end()}catch(n){H(n),e.push(B(t,n)),e.end()}}async function W(e,t,n,i){try{let a=await R(),s=i?.sessionId,c=P(t),l={...i,apiKey:a,headers:V(i?.headers,s)},u=c.api===`openai-responses`?r(c,n,l):o(c,n,l);for await(let t of u)e.push(t);e.end()}catch(n){H(n),e.push(B(t,n)),e.end()}}var G=(t,n,r={})=>{let i=e();return U(i,t,n,r).catch(H),i},K=(t,n,r)=>{let i=e();return W(i,t,n,r).catch(H),i},q={id:x,name:`xAI Grok (SuperGrok OAuth)`,description:`Grok via xAI OAuth — uses your SuperGrok subscription, no API key needed. Default model is Grok 4.5.`,requiresApiKey:!1,requiresBaseUrl:!1,isOAuth:!0,defaultModelId:A,oauthTokenDomains:[`api.x.ai`,`*.x.ai`,`auth.x.ai`,`accounts.x.ai`,`cli-chat-proxy.grok.com`],getModelIds:()=>M().map(N),getBudgetUsage:z,onOAuthLoginIntercepted:async(e,t,n)=>{let r=l(),i=await d(r),a=u(),o=u(),c=new URL(C);c.searchParams.set(`response_type`,`code`),c.searchParams.set(`client_id`,T),c.searchParams.set(`redirect_uri`,D),c.searchParams.set(`scope`,n?.scopes??E),c.searchParams.set(`code_challenge`,i),c.searchParams.set(`code_challenge_method`,`S256`),c.searchParams.set(`state`,a),c.searchParams.set(`nonce`,o),c.searchParams.set(`plan`,`generic`),c.searchParams.set(`referrer`,`slicc`);let m=await e({authorizeUrl:c.toString(),redirectUriPattern:O,onCapture:`close`});if(!m)throw new p(`xAI OAuth login was cancelled or timed out`,f.CALLBACK_TIMEOUT);let h=new URL(m),g=h.searchParams.get(`code`),_=h.searchParams.get(`state`);if(!g)throw new p(`xAI OAuth redirect did not include a code`,f.CODE_MISSING);if(_!==a)throw new p(`xAI OAuth state mismatch — possible CSRF, aborting`,f.STATE_MISMATCH);let v=await F(g,r);await s({providerId:x,accessToken:v.access_token,refreshToken:v.refresh_token,tokenExpiresAt:Date.now()+(v.expires_in??21600)*1e3,baseUrl:k,scopes:v.scope}),t()},onOAuthLogout:async()=>{await s({providerId:x,accessToken:``})},onSilentRenew:async()=>{let e=L();if(!e?.refreshToken)return null;let t=await I(e.refreshToken);return t?.access_token?(await s({providerId:x,accessToken:t.access_token,refreshToken:t.refresh_token??e.refreshToken,tokenExpiresAt:Date.now()+(t.expires_in??21600)*1e3,scopes:t.scope??e.scopes}),t.access_token):null}};function J(){t({api:j,stream:G,streamSimple:K})}export{f as XaiErrorCode,p as XaiOAuthError,q as config,J 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-Dxem3Ydy.js"></script>
8
+ <script type="module" crossorigin src="/assets/main-CfF8CFBr.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-Dd_uD5pT.js">
10
10
  <link rel="modulepreload" crossorigin href="/assets/modulepreload-polyfill-P2Xu9kJm.js">
11
11
  <link rel="modulepreload" crossorigin href="/assets/diagnostics-DN_idNHx.js">
@@ -30,11 +30,11 @@
30
30
  <link rel="modulepreload" crossorigin href="/assets/tool-ui-eSQ1g2I1.js">
31
31
  <link rel="modulepreload" crossorigin href="/assets/core-BMcS6rur.js">
32
32
  <link rel="modulepreload" crossorigin href="/assets/bridge-protocol-06nbmp2X.js">
33
- <link rel="modulepreload" crossorigin href="/assets/providers-InF4o-U9.js">
33
+ <link rel="modulepreload" crossorigin href="/assets/providers-CnoKdyLc.js">
34
34
  <link rel="modulepreload" crossorigin href="/assets/panel-rpc-B3MSVImO.js">
35
35
  <link rel="modulepreload" crossorigin href="/assets/bedrock-camp-compat-BeCSBUrZ.js">
36
36
  <link rel="modulepreload" crossorigin href="/assets/claude-model-version-aqjj5mtp.js">
37
- <link rel="modulepreload" crossorigin href="/assets/account-store-CJHBoL7P.js">
37
+ <link rel="modulepreload" crossorigin href="/assets/account-store-C35GYvum.js">
38
38
  <link rel="modulepreload" crossorigin href="/assets/telemetry-DJyRzh6X.js">
39
39
  <link rel="modulepreload" crossorigin href="/assets/tray-follower-status-BAjnN7Ar.js">
40
40
  <link rel="modulepreload" crossorigin href="/assets/clipboard-eqmn97SP.js">
@@ -5,7 +5,7 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>slicc</title>
7
7
  <link rel="icon" type="image/png" href="/logos/sliccy-color-1scoops-32x32.png" />
8
- <script type="module" crossorigin src="/assets/main-Dxem3Ydy.js"></script>
8
+ <script type="module" crossorigin src="/assets/main-CfF8CFBr.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-Dd_uD5pT.js">
10
10
  <link rel="modulepreload" crossorigin href="/assets/modulepreload-polyfill-P2Xu9kJm.js">
11
11
  <link rel="modulepreload" crossorigin href="/assets/diagnostics-DN_idNHx.js">
@@ -30,11 +30,11 @@
30
30
  <link rel="modulepreload" crossorigin href="/assets/tool-ui-eSQ1g2I1.js">
31
31
  <link rel="modulepreload" crossorigin href="/assets/core-BMcS6rur.js">
32
32
  <link rel="modulepreload" crossorigin href="/assets/bridge-protocol-06nbmp2X.js">
33
- <link rel="modulepreload" crossorigin href="/assets/providers-InF4o-U9.js">
33
+ <link rel="modulepreload" crossorigin href="/assets/providers-CnoKdyLc.js">
34
34
  <link rel="modulepreload" crossorigin href="/assets/panel-rpc-B3MSVImO.js">
35
35
  <link rel="modulepreload" crossorigin href="/assets/bedrock-camp-compat-BeCSBUrZ.js">
36
36
  <link rel="modulepreload" crossorigin href="/assets/claude-model-version-aqjj5mtp.js">
37
- <link rel="modulepreload" crossorigin href="/assets/account-store-CJHBoL7P.js">
37
+ <link rel="modulepreload" crossorigin href="/assets/account-store-C35GYvum.js">
38
38
  <link rel="modulepreload" crossorigin href="/assets/telemetry-DJyRzh6X.js">
39
39
  <link rel="modulepreload" crossorigin href="/assets/tray-follower-status-BAjnN7Ar.js">
40
40
  <link rel="modulepreload" crossorigin href="/assets/clipboard-eqmn97SP.js">
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sliccy",
3
- "version": "6.165.0",
3
+ "version": "6.166.0",
4
4
  "description": "Browser-based coding agent with thin CLI server",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -1,96 +0,0 @@
1
- var e=`---
2
- name: v86
3
- description: |
4
- Use this when booting or driving an x86 virtual machine with SLICC's \`v86\`
5
- shell command. Covers the ipk prerequisite, BIOS setup, QEMU-flavored boot
6
- flags, and the screenshot/text/type/mouse interaction loop for agents.
7
- allowed-tools: bash
8
- ---
9
-
10
- # v86 virtual machines
11
-
12
- The \`v86\` shell command boots x86 guests (ISO, raw disk, floppy, or direct Linux kernel) on the v86 wasm engine. Nothing is bundled: install the engine first, then supply BIOS blobs and a guest image as VFS files.
13
-
14
- ## Install prerequisites
15
-
16
- \`\`\`bash
17
- ipk add -g v86@0.5.458
18
- mkdir -p /workspace/.v86
19
- curl -o /workspace/.v86/seabios.bin https://raw.githubusercontent.com/copy/v86/master/bios/seabios.bin
20
- curl -o /workspace/.v86/vgabios.bin https://raw.githubusercontent.com/copy/v86/master/bios/vgabios.bin
21
- \`\`\`
22
-
23
- There is no CDN fallback; missing pieces produce an actionable error with these exact commands.
24
-
25
- ## Boot and lifecycle
26
-
27
- \`\`\`bash
28
- v86 start -cdrom alpine.iso # boot an ISO (prints pid)
29
- v86 start -n dos -fda freedos.img -m 64 # named VM, floppy boot, 64 MiB RAM
30
- v86 start -kernel bzImage -initrd rootfs.img -append "console=ttyS0" -nographic
31
- v86 ls # list running VMs
32
- v86 stop [-n name] [--force] # power off
33
- v86 state [-n name] save|load <file> # snapshot / restore full VM state
34
- \`\`\`
35
-
36
- ## Arch Linux (copy.sh demo image)
37
-
38
- The fastest full-Linux guest is the pre-booted Arch state image from copy.sh (the same one behind https://copy.sh/v86/?profile=archlinux). It resumes straight into a root shell — no BIOS blobs, no boot wait:
39
-
40
- \`\`\`bash
41
- curl -o "$TMPDIR/arch_state.bin.zst" https://i.copy.sh/arch_state-v3.bin.zst # ~15 MB
42
- v86 start -n arch -state "$TMPDIR/arch_state.bin.zst" -fs9p https://i.copy.sh/arch/ -net virtio -m 512
43
- v86 text -n arch # should show a root@localhost prompt
44
- v86 type -n arch "uname -a\\n"
45
- v86 text -n arch
46
- \`\`\`
47
-
48
- \`-state\` resumes a snapshot (\`.zst\` decompresses inside the engine), \`-fs9p\` attaches the network-backed 9p root the guest's files live on (fetched on demand, host must send CORS headers), and \`-net virtio\` matches the NIC the snapshot was saved with.
49
-
50
- ## Guest networking (fetch relay)
51
-
52
- \`-net <model>,relay=fetch\` gives the guest outbound HTTP without a gateway: v86's fetch relay answers guest DNS in-engine and turns guest port-80 connections into host fetches, which SLICC reroutes through its CORS-bypassing fetch proxy. Plain-http requests to external hosts are upgraded to https before hitting the proxy (\`http://localhost\` stays local).
53
-
54
- \`\`\`bash
55
- v86 start -n kolibri -fda kolibri.img -net ne2k,relay=fetch -m 128
56
- \`\`\`
57
-
58
- Inside the guest, configure a static IP on the relay's subnet (VM \`192.168.86.100\`, router/DNS \`192.168.86.1\`) — e.g. KolibriOS NETCFG or \`ip addr add\` in Linux. The guest can then browse \`http://<host>/...\`; https-only sites work because of the upgrade rewrite, but the guest itself only ever speaks plain HTTP on port 80.
59
-
60
- VMs run in the background as ProcessManager-tracked units — \`ps\` shows them and \`kill <pid>\` powers them off. Default VM name is \`vm0\`; every subcommand accepts \`-n <name>\`. RAM defaults to 128 MiB, capped at 512.
61
-
62
- ## Interaction loop
63
-
64
- The VM is not an interactive foreground process. Drive it look-then-act:
65
-
66
- \`\`\`bash
67
- v86 text # text-mode screen as plain text (prefer this)
68
- v86 screenshot [out.png] # VGA framebuffer -> PNG (graphical mode)
69
- v86 type "root\\n" # type on the keyboard ('\\n' = Enter)
70
- v86 key ctrl-alt-del enter f2 # named key chords
71
- v86 mouse move 20 -5 # relative pointer move
72
- v86 mouse click right --double # click; --to x,y is best-effort absolute
73
- v86 serial --send "ls\\n" # write to the guest serial console
74
- v86 serial --tail 25 # read buffered serial output
75
- \`\`\`
76
-
77
- Prefer \`v86 text\` over \`screenshot\` whenever the guest is in text mode — it is cheaper and machine-readable. For \`-nographic\` guests use the \`serial\` subcommands.
78
-
79
- ## Live screen streaming (iframe-able)
80
-
81
- \`v86 serve\` pumps the screen into \`$TMPDIR/v86-serve-<name>/\` — a self-refreshing \`index.html\` viewer plus live \`frame.png\`/\`screen.txt\` + \`state.json\`. Mint an iframe-able preview URL from it with the regular \`serve\` command so a human (or sprinkle) can watch the VM:
82
-
83
- \`\`\`bash
84
- v86 serve -n arch --fps 4 # start the pump (1-10 fps, default 2)
85
- serve "$TMPDIR/v86-serve-arch" # mint a worker-hosted URL to iframe
86
- v86 serve -n arch --stop # stop the pump (directory stays)
87
- \`\`\`
88
-
89
- ## SVGA / high-res video modes
90
-
91
- The guest sees a Bochs-dispi (VBE) SVGA adapter; VESA modes are limited by video memory. The default 8 MiB covers up to 1600x1200x32 — pass \`-vga <MiB>\` at boot for more (e.g. \`-vga 16\`). Inside a Linux guest, pick a mode with \`vga=\` kernel parameters or the guest's own modesetting tools.
92
-
93
- ## Expectations
94
-
95
- x86 emulation without KVM runs at a fraction of native speed. Small guests (Alpine, FreeDOS, Buildroot Linux, KolibriOS) work best; give slow boots time and poll with \`v86 text\` between steps.
96
- `;export{e as default};
@@ -1 +0,0 @@
1
- const e=`https://www.sliccy.ai`,t=`bridge`;export{e as n,t};