sliccy 6.69.0 → 6.70.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.
- package/dist/ui/assets/{account-store-BX7hOagH.js → account-store-CArJESzo.js} +1 -1
- package/dist/ui/assets/{account-store-D-x7K6NF.js → account-store-TRYIJpf5.js} +1 -1
- package/dist/ui/assets/{adobe-Cz0gce4l.js → adobe-BZwdZ2As.js} +1 -1
- package/dist/ui/assets/{adobe-yqzWyDvs.js → adobe-C3bypFyK.js} +1 -1
- package/dist/ui/assets/{apply-layout-iOpMw0kB.js → apply-layout-ByDeGkWN.js} +1 -1
- package/dist/ui/assets/{apps-DDVr0Xb6.js → apps-Dyu5e_aA.js} +1 -1
- package/dist/ui/assets/{azure-openai-CmL8cw4m.js → azure-openai-DWD9iIFu.js} +1 -1
- package/dist/ui/assets/{azure-openai-B8hsAEP7.js → azure-openai-v3YuTD3Q.js} +1 -1
- package/dist/ui/assets/{cerebras-pCb2dqTz.js → cerebras-BylifUY3.js} +1 -1
- package/dist/ui/assets/{cerebras-BveD0phw.js → cerebras-PrVxiq6I.js} +1 -1
- package/dist/ui/assets/{composer-speech-BRDNWlOp.js → composer-speech-B31O0GIg.js} +1 -1
- package/dist/ui/assets/{connect-surface-9RfAdQJE.js → connect-surface-D4Vj5XRs.js} +1 -1
- package/dist/ui/assets/{ensure-speech-assets-BN1ks7Od.js → ensure-speech-assets-SaPIFvTd.js} +1 -1
- package/dist/ui/assets/{fs-C7pyw9lm.js → fs-B9ePDHhx.js} +2 -2
- package/dist/ui/assets/{fs-LMd_Zk_G.js → fs-Do0mt9mn.js} +1 -1
- package/dist/ui/assets/{github-CRRXc9mU.js → github-DHxRsTBc.js} +1 -1
- package/dist/ui/assets/{github-copilot-B1C1N2Nv.js → github-copilot-Bs4NL_Q2.js} +1 -1
- package/dist/ui/assets/{github-copilot-B1SfY6ns.js → github-copilot-BsuSPPV1.js} +1 -1
- package/dist/ui/assets/{github-install-DBysMQ-Z.js → github-install-BdWgtzqE.js} +1 -1
- package/dist/ui/assets/{github-zip-CsOKEi4S.js → github-zip-BeFmzyKk.js} +1 -1
- package/dist/ui/assets/{github-CBs8VW0x.js → github-zl4HUcni.js} +2 -2
- package/dist/ui/assets/{hear-D7GyvY2M.js → hear-BfIzJaKG.js} +1 -1
- package/dist/ui/assets/{hear-xYTkVcOF.js → hear-gw7ynFW0.js} +1 -1
- package/dist/ui/assets/{kernel-worker-DX47Ha10.js → kernel-worker-tGP-30bc.js} +28 -28
- package/dist/ui/assets/{kokoro-engine-Bx78jmwN.js → kokoro-engine-k0nXmrdW.js} +2 -2
- package/dist/ui/assets/{local-llm-CMacLdkK.js → local-llm-Cl_UdzUl.js} +1 -1
- package/dist/ui/assets/{local-llm-CUOZidFw.js → local-llm-RVM_z9ev.js} +1 -1
- package/dist/ui/assets/{main-CygXviOv.js → main-zFRDoasf.js} +3 -3
- package/dist/ui/assets/{mount-DdZ-Wt1j.js → mount-Bk4ziZTj.js} +2 -2
- package/dist/ui/assets/{mount-D8jSBlN8.js → mount-Bk76tsCc.js} +1 -1
- package/dist/ui/assets/{mount-recovery-HuCF-MnE.js → mount-recovery-YO_ix5OC.js} +1 -1
- package/dist/ui/assets/{new-session-BwuEjlex.js → new-session-BLimVZDt.js} +2 -2
- package/dist/ui/assets/{oauth-bootstrap-e3CEnmul.js → oauth-bootstrap-BhHesqgH.js} +2 -2
- package/dist/ui/assets/{openai-codex-DEBWI_JV.js → openai-codex-DX_VPKAJ.js} +1 -1
- package/dist/ui/assets/{openai-codex-CzIbvwZC.js → openai-codex-VpJamkgh.js} +1 -1
- package/dist/ui/assets/{openrouter-DPSLzoFz.js → openrouter-OIfuxci3.js} +1 -1
- package/dist/ui/assets/{openrouter-Byf9-X1f.js → openrouter-grrGppXZ.js} +1 -1
- package/dist/ui/assets/{openrouter-oauth-CVTBmt_X.js → openrouter-oauth-BjrACkoT.js} +1 -1
- package/dist/ui/assets/{openrouter-oauth-B5JS68uk.js → openrouter-oauth-xotUxoRN.js} +1 -1
- package/dist/ui/assets/{panel-rpc-handlers-DrWPXkN_.js → panel-rpc-handlers-CRf_ZFEL.js} +2 -2
- package/dist/ui/assets/{provider-BpUHAHIi.js → provider-B8d8fv3d.js} +2 -2
- package/dist/ui/assets/{provider-Bo8cjySL.js → provider-QmlUXcSp.js} +1 -1
- package/dist/ui/assets/{provider-settings-CEgOhzB0.js → provider-settings-D95jXAH2.js} +1 -1
- package/dist/ui/assets/{provider-settings-CW0jgzyh.js → provider-settings-Du6Oacnr.js} +1 -1
- package/dist/ui/assets/provider-store-access-7lZfhJEm.js +1 -0
- package/dist/ui/assets/{provider-store-access-BOwKLgDt.js → provider-store-access-DMDj_Ge3.js} +2 -2
- package/dist/ui/assets/{providers-B4kc5bj5.js → providers-Bo_rLjJh.js} +2 -2
- package/dist/ui/assets/{providers-CZdsk5IT.js → providers-Fyl_SN58.js} +1 -1
- package/dist/ui/assets/{quick-llm-LgkLHM6S.js → quick-llm-IWm3CEZk.js} +1 -1
- package/dist/ui/assets/{recovery-screen-CkrDNpZe.js → recovery-screen-yiatwQF6.js} +1 -1
- package/dist/ui/assets/{redirect-uri-Dcs5HqUv.js → redirect-uri-l6CHUFK-.js} +1 -1
- package/dist/ui/assets/{session-freezer-BeSmFyZ8.js → session-freezer-DhVtO295.js} +3 -3
- package/dist/ui/assets/{setup-feature-flags-remote-CG35huLI.js → setup-feature-flags-remote-Da7TqEx8.js} +1 -1
- package/dist/ui/assets/{setup-standalone-prelude-CECapXJ1.js → setup-standalone-prelude-CoEZmsoE.js} +1 -1
- package/dist/ui/assets/{setup-sudo-BDiI352v.js → setup-sudo-CkUhIdph.js} +2 -2
- package/dist/ui/assets/{skills-C1j5YI-a.js → skills-DUZe0A7r.js} +1 -1
- package/dist/ui/assets/speak-BU_1au5-.js +3 -0
- package/dist/ui/assets/{speak-C5qq0_gv.js → speak-CPyB70vx.js} +1 -1
- package/dist/ui/assets/{store-DKjw1Y7-.js → store-C063haJI.js} +1 -1
- package/dist/ui/assets/{store-Co7Mx5R0.js → store-C_tLVTuV.js} +1 -1
- package/dist/ui/assets/{sudo-BpGim-Sw.js → sudo-D1Ntjnz5.js} +1 -1
- package/dist/ui/assets/{transformers-env-DUpl9uIa.js → transformers-env-2x0fcgXG.js} +1 -1
- package/dist/ui/assets/{transformers-env-DTXizU3q.js → transformers-env-DQiiTgcj.js} +1 -1
- package/dist/ui/assets/{upgrade-detection-Bb52uGb_.js → upgrade-detection-Bmi_96kV.js} +1 -1
- package/dist/ui/assets/{voice-reply-BZE4Oef7.js → voice-reply-sVHTZ7lW.js} +1 -1
- package/dist/ui/assets/{wc-extension-Sl5Zeapu.js → wc-extension-CFtmkziN.js} +2 -2
- package/dist/ui/assets/{wc-follower-C8ok64zf.js → wc-follower-BuPjGe9O.js} +3 -3
- package/dist/ui/assets/{wc-live-NHjAFKgB.js → wc-live-SiwzGuB3.js} +4 -4
- package/dist/ui/assets/{wc-nav-DX7i8ts6.js → wc-nav-BjNyi6pT.js} +2 -2
- package/dist/ui/assets/{wc-onboarding-Ch3vp-5V.js → wc-onboarding-CftMJ6NU.js} +2 -2
- package/dist/ui/assets/{wc-placeholder-MQUaVSGe.js → wc-placeholder-TyzUNm8e.js} +2 -2
- package/dist/ui/assets/{wc-settings-8fUJ13bg.js → wc-settings-DkdEV918.js} +2 -2
- package/dist/ui/assets/{wc-shell-FtZNOzTE.js → wc-shell-C8TJaaWP.js} +2 -2
- package/dist/ui/assets/{wc-sprinkles-JnnXSp_p.js → wc-sprinkles-CMcP20MY.js} +2 -2
- package/dist/ui/assets/{wc-tray--7cMKNO1.js → wc-tray-8tS3HfPN.js} +2 -2
- package/dist/ui/assets/{whisper-engine-DpO1zPTm.js → whisper-engine-B8PhWzXe.js} +1 -1
- package/dist/ui/assets/whisper-session-CX9bk3dj.js +2 -0
- package/dist/ui/assets/{xai-grok-CJcTUKwN.js → xai-grok-BPXSwKAp.js} +1 -1
- package/dist/ui/assets/{xai-grok-Cbo1W_uG.js → xai-grok-CZDZdwIV.js} +1 -1
- package/dist/ui/index.html +6 -6
- package/dist/ui/packages/webapp/index.html +6 -6
- package/package.json +1 -1
- package/dist/ui/assets/provider-store-access-DH6UutLl.js +0 -1
- package/dist/ui/assets/speak-CB8HMNgD.js +0 -3
- package/dist/ui/assets/whisper-session-B3e5tyiB.js +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
import{H as e,d as t}from"./account-store-
|
|
1
|
+
import{H as e,d as t}from"./account-store-TRYIJpf5.js";import{a as n}from"./diagnostics-DN_idNHx.js";import{d as r,p as i}from"./bedrock-camp-BfNg24Ce.js";import{c as a,i as o,r as s,s as c}from"./legacy-api-aliases-qI5FdR49.js";import"./provider-settings-Du6Oacnr.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";const m=`xai-grok`,h=`https://auth.x.ai`,g=`${h}/oauth2/authorize`,_=`${h}/oauth2/token`,v=`b1a00492-073a-47ea-816f-4c329264a828`,y=`http://127.0.0.1:56121/callback`,b=`https://api.x.ai/v1`,x=`grok-4.5`,S=`${m}-openai`;function C(){return r(`xai`)}function w(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 T(e){let t=C(),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 "${x}"`),n=t.find(e=>e.id===x),!n))throw Error(`xAI default model "${x}" 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:b}}async function E(e,t){let n=new URLSearchParams({grant_type:`authorization_code`,code:e,redirect_uri:y,client_id:v,code_verifier:t}),r=await fetch(_,{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 D(e){try{let t=new URLSearchParams({grant_type:`refresh_token`,refresh_token:e,client_id:v}),n=await fetch(_,{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 O(){return t().find(e=>e.providerId===m)}async function k(){let t=O();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 D(t.refreshToken);if(n?.access_token)return await e({providerId:m,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}function A(e,t){return{type:`error`,reason:`error`,error:{role:`assistant`,content:[],api:S,provider:m,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 j(e,t){return t?{...e??{},"x-grok-conv-id":t}:e}const M=(e,t,r={})=>{let i=n();return(async()=>{try{let n=await k(),a=r.sessionId,c=T(e),l={...r,apiKey:n,headers:j(r.headers,a)},u=c.api===`openai-responses`?o(c,t,l):s(c,t,l);for await(let e of u)i.push(e);i.end()}catch(t){console.error(`[xai-grok] Stream error:`,t instanceof Error?t.message:String(t)),i.push(A(e,t)),i.end()}})(),i},N=(e,t,r)=>{let i=n();return(async()=>{try{let n=await k(),o=r?.sessionId,s=T(e),l={...r,apiKey:n,headers:j(r?.headers,o)},u=s.api===`openai-responses`?a(s,t,l):c(s,t,l);for await(let e of u)i.push(e);i.end()}catch(t){console.error(`[xai-grok] Stream error:`,t instanceof Error?t.message:String(t)),i.push(A(e,t)),i.end()}})(),i},P={id:m,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:x,oauthTokenDomains:[`api.x.ai`,`*.x.ai`,`auth.x.ai`,`accounts.x.ai`],getModelIds:()=>C().map(w),onOAuthLoginIntercepted:async(t,n,r)=>{let i=l(),a=await d(i),o=u(),s=u(),c=new URL(g);c.searchParams.set(`response_type`,`code`),c.searchParams.set(`client_id`,v),c.searchParams.set(`redirect_uri`,y),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 h=await t({authorizeUrl:c.toString(),redirectUriPattern:`http://127.0.0.1:56121/*`,onCapture:`close`});if(!h)throw new p(`xAI OAuth login was cancelled or timed out`,f.CALLBACK_TIMEOUT);let _=new URL(h),x=_.searchParams.get(`code`),S=_.searchParams.get(`state`);if(!x)throw new p(`xAI OAuth redirect did not include a code`,f.CODE_MISSING);if(S!==o)throw new p(`xAI OAuth state mismatch — possible CSRF, aborting`,f.STATE_MISMATCH);let C=await E(x,i);await e({providerId:m,accessToken:C.access_token,refreshToken:C.refresh_token,tokenExpiresAt:Date.now()+(C.expires_in??21600)*1e3,baseUrl:b,scopes:C.scope}),n()},onOAuthLogout:async()=>{await e({providerId:m,accessToken:``})},onSilentRenew:async()=>{let t=O();if(!t?.refreshToken)return null;let n=await D(t.refreshToken);return n?.access_token?(await e({providerId:m,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 F(){i({api:S,stream:M,streamSimple:N})}export{f as XaiErrorCode,p as XaiOAuthError,P as config,F as register};
|
package/dist/ui/index.html
CHANGED
|
@@ -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-
|
|
8
|
+
<script type="module" crossorigin src="/assets/main-zFRDoasf.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/modulepreload-polyfill-P2Xu9kJm.js">
|
|
10
10
|
<link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-Dd_uD5pT.js">
|
|
11
11
|
<link rel="modulepreload" crossorigin href="/assets/preload-helper-Czpn1I53.js">
|
|
@@ -29,21 +29,21 @@
|
|
|
29
29
|
<link rel="modulepreload" crossorigin href="/assets/secrets-bridge-client-Bz8CHwrq.js">
|
|
30
30
|
<link rel="modulepreload" crossorigin href="/assets/image-markers-BXtVm4og.js">
|
|
31
31
|
<link rel="modulepreload" crossorigin href="/assets/tool-ui-DfXu6quJ.js">
|
|
32
|
-
<link rel="modulepreload" crossorigin href="/assets/providers-
|
|
32
|
+
<link rel="modulepreload" crossorigin href="/assets/providers-Bo_rLjJh.js">
|
|
33
33
|
<link rel="modulepreload" crossorigin href="/assets/panel-rpc-B3MSVImO.js">
|
|
34
|
-
<link rel="modulepreload" crossorigin href="/assets/account-store-
|
|
34
|
+
<link rel="modulepreload" crossorigin href="/assets/account-store-CArJESzo.js">
|
|
35
35
|
<link rel="modulepreload" crossorigin href="/assets/bridge-launch-params-zrpWWxT3.js">
|
|
36
36
|
<link rel="modulepreload" crossorigin href="/assets/runtime-env-CgsZ7LTp.js">
|
|
37
37
|
<link rel="modulepreload" crossorigin href="/assets/telemetry-DeLkquP_.js">
|
|
38
38
|
<link rel="modulepreload" crossorigin href="/assets/feature-flags-Cf-Bv5AK.js">
|
|
39
39
|
<link rel="modulepreload" crossorigin href="/assets/messages-BD4p8GuF.js">
|
|
40
40
|
<link rel="modulepreload" crossorigin href="/assets/tray-runtime-config-BDiVOcsu.js">
|
|
41
|
-
<link rel="modulepreload" crossorigin href="/assets/setup-sudo-
|
|
42
|
-
<link rel="modulepreload" crossorigin href="/assets/setup-standalone-prelude-
|
|
41
|
+
<link rel="modulepreload" crossorigin href="/assets/setup-sudo-CkUhIdph.js">
|
|
42
|
+
<link rel="modulepreload" crossorigin href="/assets/setup-standalone-prelude-CoEZmsoE.js">
|
|
43
43
|
<link rel="modulepreload" crossorigin href="/assets/tray-follower-status-5SqDRLX8.js">
|
|
44
44
|
<link rel="modulepreload" crossorigin href="/assets/clipboard-eqmn97SP.js">
|
|
45
45
|
<link rel="modulepreload" crossorigin href="/assets/tray-join-url-BIvzbiFR.js">
|
|
46
|
-
<link rel="modulepreload" crossorigin href="/assets/provider-settings-
|
|
46
|
+
<link rel="modulepreload" crossorigin href="/assets/provider-settings-D95jXAH2.js">
|
|
47
47
|
</head>
|
|
48
48
|
<body>
|
|
49
49
|
<div id="app"></div>
|
|
@@ -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-
|
|
8
|
+
<script type="module" crossorigin src="/assets/main-zFRDoasf.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/modulepreload-polyfill-P2Xu9kJm.js">
|
|
10
10
|
<link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-Dd_uD5pT.js">
|
|
11
11
|
<link rel="modulepreload" crossorigin href="/assets/preload-helper-Czpn1I53.js">
|
|
@@ -29,21 +29,21 @@
|
|
|
29
29
|
<link rel="modulepreload" crossorigin href="/assets/secrets-bridge-client-Bz8CHwrq.js">
|
|
30
30
|
<link rel="modulepreload" crossorigin href="/assets/image-markers-BXtVm4og.js">
|
|
31
31
|
<link rel="modulepreload" crossorigin href="/assets/tool-ui-DfXu6quJ.js">
|
|
32
|
-
<link rel="modulepreload" crossorigin href="/assets/providers-
|
|
32
|
+
<link rel="modulepreload" crossorigin href="/assets/providers-Bo_rLjJh.js">
|
|
33
33
|
<link rel="modulepreload" crossorigin href="/assets/panel-rpc-B3MSVImO.js">
|
|
34
|
-
<link rel="modulepreload" crossorigin href="/assets/account-store-
|
|
34
|
+
<link rel="modulepreload" crossorigin href="/assets/account-store-CArJESzo.js">
|
|
35
35
|
<link rel="modulepreload" crossorigin href="/assets/bridge-launch-params-zrpWWxT3.js">
|
|
36
36
|
<link rel="modulepreload" crossorigin href="/assets/runtime-env-CgsZ7LTp.js">
|
|
37
37
|
<link rel="modulepreload" crossorigin href="/assets/telemetry-DeLkquP_.js">
|
|
38
38
|
<link rel="modulepreload" crossorigin href="/assets/feature-flags-Cf-Bv5AK.js">
|
|
39
39
|
<link rel="modulepreload" crossorigin href="/assets/messages-BD4p8GuF.js">
|
|
40
40
|
<link rel="modulepreload" crossorigin href="/assets/tray-runtime-config-BDiVOcsu.js">
|
|
41
|
-
<link rel="modulepreload" crossorigin href="/assets/setup-sudo-
|
|
42
|
-
<link rel="modulepreload" crossorigin href="/assets/setup-standalone-prelude-
|
|
41
|
+
<link rel="modulepreload" crossorigin href="/assets/setup-sudo-CkUhIdph.js">
|
|
42
|
+
<link rel="modulepreload" crossorigin href="/assets/setup-standalone-prelude-CoEZmsoE.js">
|
|
43
43
|
<link rel="modulepreload" crossorigin href="/assets/tray-follower-status-5SqDRLX8.js">
|
|
44
44
|
<link rel="modulepreload" crossorigin href="/assets/clipboard-eqmn97SP.js">
|
|
45
45
|
<link rel="modulepreload" crossorigin href="/assets/tray-join-url-BIvzbiFR.js">
|
|
46
|
-
<link rel="modulepreload" crossorigin href="/assets/provider-settings-
|
|
46
|
+
<link rel="modulepreload" crossorigin href="/assets/provider-settings-D95jXAH2.js">
|
|
47
47
|
</head>
|
|
48
48
|
<body>
|
|
49
49
|
<div id="app"></div>
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./store-Co7Mx5R0.js";export{e as readMcpAuthEntries};
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/transformers.web-Cg_-cFJu.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/preload-helper-Czpn1I53.js","assets/kokoro-Bs5vU5OU.js","assets/__vite-browser-external-5eBdwsFd.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF.js";import{n}from"./runtime-env-Dlaokqg1.js";import"./runtime-env-CgsZ7LTp.js";import{t as r}from"./speech-assets-bridge-CFYafE89.js";import{i,n as a,r as o,t as s}from"./transformers-env-DUpl9uIa.js";var c=t(`speech:espeak`),l=`/workspace/node_modules/espeak-ng/dist/`,u=`espeak-ng.js`,d=`espeak-ng.wasm`;async function f(e,t,n,r){let i=`phonemes.txt`;return(await e({arguments:[`-q`,`-b=1`,`--ipa`,`-v`,n,`--phonout`,i,t],...r?{locateFile:r}:{}})).FS.readFile(i,{encoding:`utf8`}).split(`
|
|
3
|
-
`).map(e=>e.trim()).filter(e=>e.length>0)}function ee(e,t){return async n=>{let r=URL.createObjectURL(new Blob([new Uint8Array(t)],{type:`application/wasm`}));try{let t=e=>e.endsWith(`.wasm`)?r:n.locateFile?.(e)??e;return await e({...n,locateFile:t})}finally{URL.revokeObjectURL(r)}}}function p(e){if(typeof BroadcastChannel>`u`)return Promise.reject(Error(`Cannot read VFS path ${e}: BroadcastChannel unavailable`));let t=new BroadcastChannel(`preview-vfs`),n=`espeak-${Date.now()}-${Math.random().toString(36).slice(2)}`;return new Promise((r,i)=>{let a=e=>{t.removeEventListener(`message`,c),t.close(),e()},o,s=()=>{clearTimeout(o),o=setTimeout(()=>a(()=>i(Error(`ENOENT: ${e} (timed out)`))),3e4)};s();let c=t=>{let c=t.data;if(!(!c||c.id!==n)){if(c.type===`preview-vfs-start`){s();return}if(c.type===`preview-vfs-response`)if(clearTimeout(o),typeof c.error==`string`)a(()=>i(Error(c.error)));else if(c.content instanceof Uint8Array){let e=c.content;a(()=>r(e))}else if(typeof c.content==`string`){let e=c.content;a(()=>r(new TextEncoder().encode(e)))}else a(()=>i(Error(`Empty preview-vfs response for ${e}`)))}};t.addEventListener(`message`,c),t.postMessage({type:`preview-vfs-read`,id:n,path:e,asText:!1})})}async function te(){let[t,n]=await Promise.all([p(`${l}${u}`),p(`${l}${d}`)]),r=URL.createObjectURL(new Blob([new Uint8Array(t)],{type:`text/javascript`}));try{return{factory:ee((await e(()=>import(r),[])).default,n)}}finally{URL.revokeObjectURL(r)}}var ne=te,m=null;function h(){return m||=ne().then(({factory:e,locateFile:t})=>(c.info(`espeak-ng multilingual phonemizer loaded`),(n,r)=>f(e,n,r,t)),e=>{throw m=null,c.error(`espeak-ng load failed`,e),e}),m}var re=Object.freeze({e:`es`,f:`fr-fr`,i:`it`,h:`hi`,p:`pt-br`});function g(e){return re[e[0]]??null}var _=Object.freeze({a:`en-us`,b:`en-gb`});function v(e){return _[e[0]]??null}function ie(e){let t=e instanceof Error?e.message:String(e);return/Invalid language identifier/i.test(t)&&/Should be one of:\s*\.?\s*$/i.test(t)}var ae=RegExp(`(\\s*[${`;:,.!?¡¿—…"«»“”(){}[]`.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}]+\\s*)+`,`g`);function oe(e){let t=[],n=0;for(let r of e.matchAll(ae)){let i=r[0],a=r.index??0;n<a&&t.push({punct:!1,text:e.slice(n,a)}),i.length>0&&t.push({punct:!0,text:i}),n=a+i.length}return n<e.length&&t.push({punct:!1,text:e.slice(n)}),t}function se(e){return e.replace(/kəkˈoːɹoʊ/g,`kˈoʊkəɹoʊ`).replace(/kəkˈɔːɹəʊ/g,`kˈəʊkəɹəʊ`).replace(/(?<=[a-zɹrː])(?=hˈʌndɹɪd)/g,` `).replace(/ z(?=[;:,.!?¡¿—…"«»“” ]|$)/g,`z`).trim()}async function ce(e,t,n){let r=oe(e);return se((await Promise.all(r.map(async e=>e.punct?e.text:(await n(e.text,t)).join(` `)))).join(``))}var y=t(`speech:kokoro`),b=`onnx-community/Kokoro-82M-v1.0-ONNX`,x={a:`en-US`,b:`en-GB`,e:`es-ES`,f:`fr-FR`,i:`it-IT`,h:`hi-IN`,p:`pt-BR`,j:`ja-JP`,z:`zh-CN`},S=new Set([`en-US`,`en-GB`,`es-ES`,`fr-FR`,`it-IT`,`hi-IN`,`pt-BR`]);function C(e){let[t,n]=e.split(`-`);return n?`${t.toLowerCase()}-${n.toUpperCase()}`:t.toLowerCase()}function w(e,t){if(!t)return!1;if(S.has(t))return!0;if(t.includes(`-`))return!1;let n=x[e[0]];return n!==void 0&&S.has(n)&&n.split(`-`)[0].toLowerCase()===t}function le(e){return Object.entries(e).map(([e,t])=>{let n=t.language?C(t.language):x[e[0]];return{id:e,name:t.name||e,lang:n??`en-US`,onDevice:w(e,n),...t.gender?{gender:t.gender}:{}}})}var ue=Object.freeze({ef_dora:{name:`Dora`,gender:`Female`},em_alex:{name:`Alex`,gender:`Male`},em_santa:{name:`Santa`,gender:`Male`},ff_siwis:{name:`Siwis`,gender:`Female`},hf_alpha:{name:`Alpha`,gender:`Female`},hf_beta:{name:`Beta`,gender:`Female`},hm_omega:{name:`Omega`,gender:`Male`},hm_psi:{name:`Psi`,gender:`Male`},if_sara:{name:`Sara`,gender:`Female`},im_nicola:{name:`Nicola`,gender:`Male`},pf_dora:{name:`Dora`,gender:`Female`},pm_alex:{name:`Alex`,gender:`Male`},pm_santa:{name:`Santa`,gender:`Male`},jf_alpha:{name:`Alpha`,gender:`Female`},jf_gongitsune:{name:`Gongitsune`,gender:`Female`},jf_nezumi:{name:`Nezumi`,gender:`Female`},jf_tebukuro:{name:`Tebukuro`,gender:`Female`},jm_kumo:{name:`Kumo`,gender:`Male`},zf_xiaobei:{name:`Xiaobei`,gender:`Female`},zf_xiaoni:{name:`Xiaoni`,gender:`Female`},zf_xiaoxiao:{name:`Xiaoxiao`,gender:`Female`},zf_xiaoyi:{name:`Xiaoyi`,gender:`Female`},zm_yunjian:{name:`Yunjian`,gender:`Male`},zm_yunxi:{name:`Yunxi`,gender:`Male`},zm_yunxia:{name:`Yunxia`,gender:`Male`},zm_yunyang:{name:`Yunyang`,gender:`Male`}});function de(e){let t={...e};for(let[e,n]of Object.entries(ue))e in t||(t[e]=n);return le(t)}var T=`style_text_to_speech_2`,E=`StyleTextToSpeech2Model`;function fe(e){return e?.model_type===T&&(!Array.isArray(e.architectures)||e.architectures.length===0)&&(e.architectures=[E]),e}var D=Symbol.for(`slicc.kokoro.style-tts2-arch-shim`);function pe(e){let t=e?.AutoConfig,n=t?.from_pretrained;if(!t||typeof n!=`function`){y.debug(`style_text_to_speech_2 shim skipped: AutoConfig.from_pretrained unavailable`);return}if(n[D])return;let r=async(...e)=>{let r=await n.apply(t,e),i=r?.model_type===T&&(!Array.isArray(r.architectures)||r.architectures.length===0);return fe(r),i&&y.debug(`style_text_to_speech_2 architectures injected for "${String(e[0])}": [${E}]`),r};r[D]=!0,t.from_pretrained=r,y.debug(`style_text_to_speech_2 architecture shim installed on AutoConfig.from_pretrained`)}async function O(e,t,n,r,i,a){let o=await ce(t,n,a),s=e.tokenizer,{input_ids:c}=s(o,{truncation:!0}),l=await e.generate_from_ids(c,{voice:r,...i?{speed:i}:{}});return{audio:l.audio,sampleRate:l.sampling_rate}}var me=/(?<=[.!?。!?…])\s+|\n{2,}/u;function k(e,t){let n=t??me,r=e.split(n).map(e=>e.trim()).filter(e=>e.length>0),i=e.trim();return r.length>0?r:i?[i]:[]}var A=null,j=`idle`,M=null,N=null;function P(){return j}function F(){return M}function I(){return N}function L(e){return A||=(j=`loading`,R(e).then(e=>(j=`ready`,N=e,e),e=>{throw j=`failed`,A=null,y.error(`kokoro load failed`,e),e})),A}async function R(t){let n=await e(()=>import(`./transformers.web-Cg_-cFJu.js`),__vite__mapDeps([0,1,2]));a(n.env),pe(n),await s(b),await o();let{KokoroTTS:r,TextSplitterStream:c}=await e(async()=>{let{KokoroTTS:e,TextSplitterStream:t}=await import(`./kokoro-Bs5vU5OU.js`);return{KokoroTTS:e,TextSplitterStream:t}},__vite__mapDeps([3,1,4,0,2])),l=i(),u=typeof navigator<`u`&&`gpu`in navigator,d=await r.from_pretrained(b,{device:u?`webgpu`:`wasm`,dtype:u?`fp32`:`q8`,progress_callback: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;M=l.snapshot(),t?.(M)}}});y.info(`kokoro ready`,{model:b,device:u?`webgpu`:`wasm`});let f=de(d.voices);return{async synthesize(e,t){let n=t?.voice??`af_heart`,r=g(n);if(r){let i=await h();return O(d,e,r,n,t?.speed,i)}try{let n=await d.generate(e,{...t?.voice?{voice:t.voice}:{},...t?.speed?{speed:t.speed}:{}});return{audio:n.audio,sampleRate:n.sampling_rate}}catch(r){let i=await z(r,n);if(!i)throw r;return O(d,e,i.lang,n,t?.speed,i.phonemize)}},async*synthesizeStream(e,t){let n=t?.voice??`af_heart`,r=g(n);if(r){let i=await h();for(let a of k(e,t?.splitPattern))yield await O(d,a,r,n,t?.speed,i);return}let i={...t?.voice?{voice:t.voice}:{},...t?.speed?{speed:t.speed}:{}},a=new c;if(t?.splitPattern){let n=e.split(t.splitPattern).map(e=>e.trim()).filter(e=>e.length>0);a.push(...n)}else a.push(e);a.close();try{for await(let e of d.stream(a,i))yield{audio:e.audio.audio,sampleRate:e.audio.sampling_rate}}catch(r){let i=await z(r,n);if(!i)throw r;for(let r of k(e,t?.splitPattern))yield await O(d,r,i.lang,n,t?.speed,i.phonemize)}},voices:()=>f}}async function z(e,t){if(!ie(e))return null;let n=v(t);if(!n)return null;try{let e=await h();return y.warn(`kokoro bundled phonemizer reported no languages; phonemizing English with the staged espeak-ng`,{voiceId:t,lang:n}),{lang:n,phonemize:e}}catch(e){return y.warn(`staged espeak-ng unavailable, cannot recover English synthesis`,{error:String(e)}),null}}var B=44,V=16,H=1,U=V/8;function W(e,t,n){for(let r=0;r<n.length;r++)e.setUint8(t+r,n.charCodeAt(r))}function he(e){let t=Math.max(-1,Math.min(1,e));return Math.round(t<0?t*32768:t*32767)}function ge(e){if(e.length===0)throw Error(`wav-encode: at least one PCM chunk is required`);let t=e[0].sampleRate;if(!Number.isFinite(t)||t<=0)throw Error(`wav-encode: invalid sample rate ${t}`);let n=0;for(let r of e){if(r.sampleRate!==t)throw Error(`wav-encode: mixed sample rates (${r.sampleRate} vs ${t}) — resample upstream`);n+=r.audio.length}let r=n*H*U,i=new ArrayBuffer(B+r),a=new DataView(i);W(a,0,`RIFF`),a.setUint32(4,36+r,!0),W(a,8,`WAVE`),W(a,12,`fmt `),a.setUint32(16,16,!0),a.setUint16(20,1,!0),a.setUint16(22,H,!0),a.setUint32(24,t,!0),a.setUint32(28,t*H*U,!0),a.setUint16(32,2,!0),a.setUint16(34,V,!0),W(a,36,`data`),a.setUint32(40,r,!0);let o=B;for(let t of e)for(let e=0;e<t.audio.length;e++)a.setInt16(o,he(t.audio[e]),!0),o+=U;return new Uint8Array(i)}var G=t(`speech:speak`),K=2e4;function q(e){return e.toLowerCase().startsWith(`en`)}function _e(e,t){if(!t.ready)return`webspeech`;let n=e=>e.onDevice&&(q(e.lang)||t.nonEnglishOnDevice);if(e.voice){let r=t.voices.find(t=>t.id===e.voice);return r&&n(r)?`kokoro`:`webspeech`}let r=(e.lang?e.lang.split(`-`)[0]:`en`).toLowerCase();return t.voices.some(e=>e.lang.split(`-`)[0].toLowerCase()===r&&n(e))?`kokoro`:`webspeech`}function ve(e,t){if(!e||q(e))return;let n=e.split(`-`)[0].toLowerCase();return t.find(e=>e.onDevice&&e.lang.split(`-`)[0].toLowerCase()===n)?.id}var ye=48;function be(e){let t=e;return t=t.replace(/```[\s\S]*?```/g,` `),t=t.replace(/~~~[\s\S]*?~~~/g,` `),t=t.replace(/(?:```|~~~)[\s\S]*$/,` `),t=t.replace(/!\[([^\]]*)\]\([^)]*\)/g,`$1`),t=t.replace(/\[([^\]]+)\]\([^)]*\)/g,`$1`),t=t.replace(/`([^`]*)`/g,(e,t)=>t.length>ye?` `:t),t=t.replace(/<[^>\n]+>/g,` `),t=t.replace(/^[ \t]{0,3}#{1,6}[ \t]+/gm,``),t=t.replace(/^[ \t]*>[ \t]?/gm,``),t=t.replace(/^[ \t]*(?:[-*+]|\d+[.)])[ \t]+/gm,``),t=t.replace(/[*_~]{1,3}([^*_~]+)[*_~]{1,3}/g,`$1`),t=t.replace(/\s+/g,` `).trim(),t.length>K&&(t=`${t.slice(0,K).replace(/\s+\S*$/,``)}…`),t}var J=n;function xe(e){return e.onDevice&&(q(e.lang)||!J())}function Y(){return I()?.voices().map(e=>({...e,onDevice:xe(e)}))??[]}async function X(){if(typeof speechSynthesis>`u`)return[];let e=speechSynthesis.getVoices();return e.length>0||typeof speechSynthesis.addEventListener!=`function`?e:new Promise(e=>{let t=()=>{clearTimeout(r),speechSynthesis.removeEventListener(`voiceschanged`,n),e(speechSynthesis.getVoices())},n=()=>t(),r=setTimeout(t,2e3);speechSynthesis.addEventListener(`voiceschanged`,n)})}async function Se(e){let t=e.split(`-`)[0]?.toLowerCase();return t?Y().some(e=>e.onDevice&&e.lang.split(`-`)[0].toLowerCase()===t)?!0:(await X()).some(e=>e.lang.split(`-`)[0].toLowerCase()===t):!1}var Z;function Ce(e){Z=e}function Q(){let e=F();return{state:P(),...e?{loaded:e.loaded,total:e.total,etaSeconds:e.etaSeconds}:{}}}async function we(){try{J()||await r({instanceId:Z})}catch(e){G.warn(`kokoro asset staging failed; trying already-present weights`,e)}try{await L()}catch(e){G.warn(`kokoro warmup load failed`,e)}}function Te(){return we(),Q()}var $=null;function Ee(){return(!$||$.state===`closed`)&&($=new AudioContext),$}async function De(e,t,n=1){let r=Ee();r.state===`suspended`&&await r.resume();let i=r.createBuffer(1,e.length,t);i.copyToChannel(new Float32Array(e),0);let a=r.createBufferSource();a.buffer=i;let o=r.createGain();o.gain.value=n,a.connect(o),o.connect(r.destination),await new Promise(e=>{a.onended=()=>e(),a.start()})}async function Oe(e){if(typeof speechSynthesis>`u`)throw Error(`speechSynthesis is unavailable in this realm`);let t=await X();return new Promise((n,r)=>{let i=new SpeechSynthesisUtterance(e.text);if(e.lang!==void 0&&(i.lang=e.lang),e.rate!==void 0&&(i.rate=e.rate),e.pitch!==void 0&&(i.pitch=e.pitch),e.volume!==void 0&&(i.volume=e.volume),e.voice){let n=t.find(t=>t.name===e.voice);n&&(i.voice=n)}else if(e.lang){let n=e.lang.split(`-`)[0].toLowerCase(),r=t.find(e=>e.lang.split(`-`)[0].toLowerCase()===n);r&&(i.voice=r)}i.onend=()=>n(),i.onerror=e=>r(Error(`speak: ${e.error||`utterance failed`}`)),speechSynthesis.speak(i)})}async function ke(e){let t=I(),n=t?.voices()??[];if(_e(e,{ready:t!==null,voices:n,nonEnglishOnDevice:!J()})===`kokoro`&&t){let r=e.voice??ve(e.lang,n),i=0;try{let n=t.synthesizeStream(e.text,{...r?{voice:r}:{},...e.rate?{speed:e.rate}:{}});for await(let t of n)await De(t.audio,t.sampleRate,e.volume),i++;return{engine:`kokoro`}}catch(e){if(i>0)return G.warn(`kokoro stream failed mid-playback; stopping`,e),{engine:`kokoro`};G.warn(`kokoro synthesis failed; falling back to webspeech`,e)}}return await Oe(e),{engine:`webspeech`}}async function Ae(e){let t=I();if(!t)throw Error(`on-device voice not ready — run say --warmup and retry once it reports ready`);if(e.lang&&!e.lang.toLowerCase().startsWith(`en`))throw Error(`-o writes WAV via the on-device voice, which is English-only (got ${e.lang})`);if(e.voice&&!t.voices().map(e=>e.id).includes(e.voice))throw Error(`-o writes WAV via the on-device voice; "${e.voice}" is a Web Speech voice. Pick a kokoro voice (e.g. af_heart) or omit -v.`);let n=[],r=t.synthesizeStream(e.text,{...e.voice?{voice:e.voice}:{},...e.rate?{speed:e.rate}:{}});for await(let e of r)n.push({audio:e.audio,sampleRate:e.sampleRate});if(n.length===0)throw Error(`kokoro produced no audio (text is empty after sentence split?)`);return ge(n)}export{Se as hasVoiceForLang,Q as kokoroStatus,Y as kokoroVoicesIfReady,Te as kokoroWarmup,Ce as setSpeakAssetsInstanceId,ke as speak,be as speechTextFromMarkdown,Ae as synthesizeToWav};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/speak-CB8HMNgD.js","assets/preload-helper-Czpn1I53.js","assets/logger-DDBAeTLF.js","assets/runtime-env-Dlaokqg1.js","assets/runtime-env-CgsZ7LTp.js","assets/runtime-env-E-i2SW1s.js","assets/src-CAWTvdAa.js","assets/speech-assets-bridge-CFYafE89.js","assets/transformers-env-DUpl9uIa.js","assets/proxied-fetch-DLOgqk5A.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/base64-DpPqYZJF.js","assets/fetch-body-D2PwksUW.js","assets/shared-CddfUR6k.js","assets/mime-types-ugOWOUZ9.js","assets/transformers.web-Cg_-cFJu.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{t as e}from"./preload-helper-Czpn1I53.js";import{t}from"./logger-DDBAeTLF.js";import{i as n,n as r,r as i,t as a}from"./transformers-env-DUpl9uIa.js";var o=t(`speech:whisper`),s=`onnx-community/whisper-tiny`,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,o.error(`whisper load failed`,e),e})),c}function h(){e(async()=>{let{kokoroWarmup:e}=await import(`./speak-CB8HMNgD.js`);return{kokoroWarmup:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14])).then(({kokoroWarmup:e})=>e()).catch(e=>o.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-Cg_-cFJu.js`);return{pipeline:e,env:t}},__vite__mapDeps([15,10,1]));r(c),await a(s),await i();let l=n(),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`,s,{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){o.warn(`whisper webgpu init failed; retrying on wasm`,e),h=await p(`wasm`)}else h=await p(`wasm`);return o.info(`whisper ready`,{model:s,device:m?`webgpu`:`wasm`}),{async transcribe(e,t){let n=await h(e,{chunk_length_s:30,task:`transcribe`,...t?.language?{language:t.language}:{}});return(Array.isArray(n)?n.map(e=>e.text??``).join(` `):n.text??``).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};
|