sliccy 6.120.2 → 6.121.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/.vite/manifest.json +141 -141
- package/dist/ui/assets/SKILL-CxxQT4Lx.js +75 -0
- package/dist/ui/assets/{account-store-SfugZBaZ.js → account-store-DOO-iMlc.js} +1 -1
- package/dist/ui/assets/{account-store-D8X8RQZj.js → account-store-GZNeAxlf.js} +1 -1
- package/dist/ui/assets/{adobe-DgFjVD8s.js → adobe-BIAA5KYW.js} +1 -1
- package/dist/ui/assets/{adobe-B1_spvgg.js → adobe-DJfnOLdC.js} +1 -1
- package/dist/ui/assets/{agent-bridge-4QgeYgVw.js → agent-bridge-bZCbGUcH.js} +1 -1
- package/dist/ui/assets/{agent-panels-CLOQvNwx.js → agent-panels-8KrKAHES.js} +1 -1
- package/dist/ui/assets/{apply-layout-DtyAl0hp.js → apply-layout-Cqm0TGkD.js} +1 -1
- package/dist/ui/assets/{apps-BEPPgN9K.js → apps-K6hXR6ju.js} +1 -1
- package/dist/ui/assets/{azure-openai-CyZ9Ui4d.js → azure-openai-Bz2vt94R.js} +1 -1
- package/dist/ui/assets/{azure-openai-B9P8QsP6.js → azure-openai-_94Jgzp2.js} +1 -1
- package/dist/ui/assets/{cost-command-XUDMFE1u.js → browser-q8slJ96R.js} +645 -659
- package/dist/ui/assets/{bsh-watchdog-COvv_9Ni.js → bsh-watchdog-ClhQZQ2p.js} +1 -1
- package/dist/ui/assets/{cerebras-D7-dD3gu.js → cerebras-D1Apre8T.js} +1 -1
- package/dist/ui/assets/{cerebras-CRXRLx94.js → cerebras-O60DvZyF.js} +1 -1
- package/dist/ui/assets/{connect-surface-6rLgBphF.js → connect-surface-DP5mM-bF.js} +1 -1
- package/dist/ui/assets/{core-Bh-r--NI.js → core-C2Fzha9I.js} +1 -1
- package/dist/ui/assets/cost-command-Ds2LwRkA.js +15 -0
- package/dist/ui/assets/{directed-approval-DVuDWoI8.js → directed-approval-Da6XAVk1.js} +1 -1
- package/dist/ui/assets/{ensure-speech-assets-CmarhXRU.js → ensure-speech-assets-BBbl4aXA.js} +1 -1
- package/dist/ui/assets/{esbuild-wasm-Dl3vgXvq.js → esbuild-wasm-PXHRTefD.js} +1 -1
- package/dist/ui/assets/ffmpeg-command-eHNhx1yC.js +66 -0
- package/dist/ui/assets/{fs-BTApuFnn.js → fs-BqSLRfz-.js} +1 -1
- package/dist/ui/assets/{fs-ChWHUqpw.js → fs-DApoUa2-.js} +2 -2
- package/dist/ui/assets/{github-Bhe4r8yT.js → github-CA3IdMUJ.js} +2 -2
- package/dist/ui/assets/{github-D-jaY3WO.js → github-CFjoSo6a.js} +1 -1
- package/dist/ui/assets/{github-copilot-DlCLP45Y.js → github-copilot-BOZd5yAF.js} +1 -1
- package/dist/ui/assets/{github-copilot-BJLiYTwN.js → github-copilot-Cx3ZHFMu.js} +1 -1
- package/dist/ui/assets/{github-install-DRi0MxS5.js → github-install-C5wElfQ3.js} +1 -1
- package/dist/ui/assets/{github-zip-49aLHvK_.js → github-zip-BFwpqlBz.js} +1 -1
- package/dist/ui/assets/{guest-tool-gate-DHUAohY8.js → guest-tool-gate-CW5Twbdj.js} +1 -1
- package/dist/ui/assets/{help-Cejd-G4M.js → help-DSF7BBT1.js} +1 -1
- package/dist/ui/assets/{installer-VcJEC2uC.js → installer-CPS-l1D-.js} +1 -1
- package/dist/ui/assets/{js-realm-worker-v2sDXVV_.js → js-realm-worker-CXr6J4vY.js} +1 -1
- package/dist/ui/assets/{kernel-worker-BOCtSlib.js → kernel-worker-cWdIUemI.js} +590 -655
- package/dist/ui/assets/{local-llm-DJoZEkZd.js → local-llm-C3dbX6a4.js} +1 -1
- package/dist/ui/assets/{local-llm-CXdmEK1l.js → local-llm-hgnPZx-H.js} +1 -1
- package/dist/ui/assets/{magick-wasm-Cjkds07K.js → magick-wasm-nq7J_5Mo.js} +1 -1
- package/dist/ui/assets/{main-CCHqhiJh.js → main-D8SDPj3z.js} +3 -3
- package/dist/ui/assets/{mount-D-wnvlrs.js → mount-DI_xLCzu.js} +1 -1
- package/dist/ui/assets/{mount-pXCQxF8h.js → mount-DVtaQthf.js} +3 -3
- package/dist/ui/assets/{mount-recovery-CyIGmO6c.js → mount-recovery-D3B0Bv1f.js} +1 -1
- package/dist/ui/assets/{new-session-5m_j1Lxi.js → new-session-jXqDPwUT.js} +2 -2
- package/dist/ui/assets/{oauth-bootstrap-CvcoHHSK.js → oauth-bootstrap-DqFUDVT2.js} +2 -2
- package/dist/ui/assets/{openai-codex-DeaaiupD.js → openai-codex-B9JdTpQd.js} +1 -1
- package/dist/ui/assets/{openai-codex-B49_Vaav.js → openai-codex-C88ZKeur.js} +1 -1
- package/dist/ui/assets/{openrouter-_anKkItD.js → openrouter-BtjCKN4k.js} +1 -1
- package/dist/ui/assets/{openrouter-D5lnyZIJ.js → openrouter-CJrmhs4K.js} +1 -1
- package/dist/ui/assets/{openrouter-oauth-8Eifd0jg.js → openrouter-oauth-B1B_iSo1.js} +1 -1
- package/dist/ui/assets/{openrouter-oauth-C32O4TGi.js → openrouter-oauth-ksgI8bdX.js} +1 -1
- package/dist/ui/assets/{panel-rpc-handlers-B2rQwK-2.js → panel-rpc-handlers-HfvTaTS9.js} +2 -2
- package/dist/ui/assets/{panelize-shell-rCfy6UTW.js → panelize-shell-DH6nL0Zz.js} +1 -1
- package/dist/ui/assets/{provider-BaPrv5Xx.js → provider-CLcf0ETw.js} +1 -1
- package/dist/ui/assets/{provider-settings-DdUjJgCk.js → provider-settings-9ki2xaWs.js} +1 -1
- package/dist/ui/assets/{provider-settings--fUWXqNi.js → provider-settings-PY2cQKhO.js} +1 -1
- package/dist/ui/assets/provider-store-access-B1Fguhkj.js +1 -0
- package/dist/ui/assets/{provider-store-access-KNXv1l8_.js → provider-store-access-KFh8CAfZ.js} +2 -2
- package/dist/ui/assets/{provider-BXp0BGZ2.js → provider-ziDu_x4r.js} +2 -2
- package/dist/ui/assets/{providers-BArdfPc3.js → providers-B0NteJYi.js} +1 -1
- package/dist/ui/assets/{providers-5omoknr0.js → providers-BHlZaHnd.js} +2 -2
- package/dist/ui/assets/{quick-llm-BTT8VKf1.js → quick-llm-BToeUTdb.js} +1 -1
- package/dist/ui/assets/{recovery-screen-CgEKoDNt.js → recovery-screen-D_qQCZ81.js} +1 -1
- package/dist/ui/assets/{redirect-uri-DgtoEJmu.js → redirect-uri-DEWLoW8H.js} +1 -1
- package/dist/ui/assets/{run-DkPJk9Ps.js → run-3-pYNmCw.js} +2 -2
- package/dist/ui/assets/run-B0Qw82nE.js +42 -0
- package/dist/ui/assets/{run-DT1YSMf5.js → run-Buva4bON.js} +1 -1
- package/dist/ui/assets/{session-freezer-Cju1rG12.js → session-freezer-Dn6R7xsr.js} +3 -3
- package/dist/ui/assets/{setup-feature-flags-remote-D3SmmUZq.js → setup-feature-flags-remote-D9Db8KWI.js} +1 -1
- package/dist/ui/assets/{setup-standalone-prelude-Xd3afxoD.js → setup-standalone-prelude-BS7nz2go.js} +1 -1
- package/dist/ui/assets/{setup-sudo-OGVmwMl-.js → setup-sudo-BOhxYxT1.js} +2 -2
- package/dist/ui/assets/{shared-CPVZc-MN.js → shared-URkGo6WP.js} +4 -4
- package/dist/ui/assets/{skills-CxfRrpAT.js → skills-CPGF21zl.js} +1 -1
- package/dist/ui/assets/slicc-version-CCgiALra.js +1 -0
- package/dist/ui/assets/{snapshot-D2clR32B.js → snapshot-DM-KjI80.js} +1 -1
- package/dist/ui/assets/{snapshot-features-5xPjvu_j.js → snapshot-features-DEpZYIai.js} +1 -1
- package/dist/ui/assets/{state-CGXdxknG.js → state-BGdDojUn.js} +1 -1
- package/dist/ui/assets/{store-DjqBL5CO.js → store-BCbAhCLm.js} +1 -1
- package/dist/ui/assets/{store-Cl6xmSWa.js → store-KOit628z.js} +1 -1
- package/dist/ui/assets/{sudo-Ce04Ty7p.js → sudo-BjifOPS9.js} +1 -1
- package/dist/ui/assets/{upgrade-detection-CJVRd1Xz.js → upgrade-detection-D9m7lYEl.js} +1 -1
- package/dist/ui/assets/{wc-attach-CDWiDrxB.js → wc-attach-Q9-07Rxi.js} +2 -2
- package/dist/ui/assets/{wc-extension-D5QaEq9K.js → wc-extension-Clb3nSvj.js} +2 -2
- package/dist/ui/assets/{wc-float-label-CyWrTj5p.js → wc-float-label-BKBlh0l-.js} +1 -1
- package/dist/ui/assets/{wc-floatbar-online-f81QZ57b.js → wc-floatbar-online-CS5bFqcv.js} +1 -1
- package/dist/ui/assets/{wc-follower-Di5kkRYo.js → wc-follower-DrIkd7YL.js} +3 -3
- package/dist/ui/assets/{wc-follower-oauth-CstFIMRH.js → wc-follower-oauth-CLs4kmaF.js} +1 -1
- package/dist/ui/assets/{wc-live-CxM9G2_r.js → wc-live-BT_yPglr.js} +4 -4
- package/dist/ui/assets/{wc-nav-DDcPc4RZ.js → wc-nav-IkgEGwNo.js} +2 -2
- package/dist/ui/assets/{wc-onboarding-gdwRiuno.js → wc-onboarding-8UM255gu.js} +2 -2
- package/dist/ui/assets/{wc-placeholder-DWyjjnMo.js → wc-placeholder-B7YjhtoA.js} +2 -2
- package/dist/ui/assets/{wc-settings-BqpXd3aC.js → wc-settings-BFkbaSvi.js} +2 -2
- package/dist/ui/assets/{wc-shell-zAMezdgn.js → wc-shell-Bg-z4U28.js} +226 -174
- package/dist/ui/assets/{wc-shortcut-config-C4_oA-Bw.js → wc-shortcut-config-DlNfETRw.js} +1 -1
- package/dist/ui/assets/{wc-sprinkles-Cot4K4eb.js → wc-sprinkles-D6xsOZDy.js} +2 -2
- package/dist/ui/assets/{wc-tray-J1eWS9EM.js → wc-tray-Cay5MKzH.js} +4 -4
- package/dist/ui/assets/{xai-grok-CqlBiLGH.js → xai-grok-BLd7VHuC.js} +1 -1
- package/dist/ui/assets/{xai-grok-Bxqaozwj.js → xai-grok-BQuzzGSm.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-CP9d_CSa.js +0 -1
- package/dist/ui/assets/slicc-version-D7xLOkdb.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{t as e}from"./logger-LESFN7Hj.js";import{t}from"./esbuild-wasm-
|
|
1
|
+
import{t as e}from"./logger-LESFN7Hj.js";import{t}from"./esbuild-wasm-PXHRTefD.js";const n=e(`bsh-watchdog`),r=`.bsh scripts must be pre-bundled. Install deps via \`ipk add <pkg>\`, then bootstrap esbuild via \`ipk add esbuild-wasm@${t}\` and bundle with \`esbuild --bundle <script>.bsh --outfile=<script>.bundled.bsh\`. Drop the bundled file in place. There is no runtime resolver in the target page.`;var i=class{transport;browserAPI;fs;scriptCatalog;running=!1;executing=new Set;constructor(e){if(!e.transport&&!e.browserAPI)throw Error(`BshWatchdog requires either transport or browserAPI`);if(!e.scriptCatalog)throw Error(`BshWatchdog requires a ScriptCatalog`);this.browserAPI=e.browserAPI,this.transport=e.transport??e.browserAPI.getTransport(),this.fs=e.fs,this.scriptCatalog=e.scriptCatalog}async start(){if(this.running)return;this.running=!0,this.transport.on(`Page.frameNavigated`,this.onFrameNavigated),this.browserAPI&&this.browserAPI.setSessionChangeCallback((e,t)=>{t!==this.transport&&this.setTransport(t)});let e;try{e=(await this.scriptCatalog.getBshEntries()).length}catch(e){n.warn(`BSH watchdog startup discovery failed`,{error:e instanceof Error?e.message:String(e)})}n.info(`BSH watchdog started`,e===void 0?void 0:{scriptCount:e})}stop(){this.running&&(this.running=!1,this.transport.off(`Page.frameNavigated`,this.onFrameNavigated),this.browserAPI&&this.browserAPI.setSessionChangeCallback(void 0),this.executing.clear(),n.info(`BSH watchdog stopped`))}setTransport(e){e!==this.transport&&(this.transport.off(`Page.frameNavigated`,this.onFrameNavigated),this.transport=e,this.running&&this.transport.on(`Page.frameNavigated`,this.onFrameNavigated),n.info(`BSH watchdog transport swapped`))}async discover(){this.scriptCatalog.invalidateBsh(),await this.scriptCatalog.getBshEntries()}async getEntries(){return this.scriptCatalog.getBshEntries()}onFrameNavigated=e=>{let t=e.frame;if(t?.parentId||!t?.url)return;let r=t.url,i=e.sessionId;if(!(!r.startsWith(`http://`)&&!r.startsWith(`https://`))){if(!i){n.warn(`BSH watchdog: no sessionId in Page.frameNavigated params, skipping`,{url:r});return}this.scriptCatalog.findMatchingBshScripts(r).then(e=>{if(e.length!==0)for(let t of e){let e=`${t.path}::${r}`;this.executing.has(e)||(this.executing.add(e),n.info(`BSH watchdog executing script`,{script:t.path,url:r}),this.executeInTargetPage(t.path,r,i).then(()=>{n.info(`BSH script completed`,{script:t.path,url:r})}).catch(e=>{n.error(`BSH script execution error`,{script:t.path,url:r,error:e instanceof Error?e.message:String(e)})}).finally(()=>{this.executing.delete(e)}))}}).catch(e=>{n.error(`BSH discovery failed`,{url:r,error:e instanceof Error?e.message:String(e)})})}};async executeInTargetPage(e,t,i){let a=await this.fs.readFile(e),o=typeof a==`string`?a:new TextDecoder().decode(a),s=`(async () => {
|
|
2
2
|
const __requireSpecifiers = (function() {
|
|
3
3
|
const re = /require\\s*\\(\\s*['"]([^'"]+)['"]\\s*\\)/g;
|
|
4
4
|
const code = ${JSON.stringify(o)};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as e}from"./account-store-
|
|
1
|
+
import{i as e}from"./account-store-GZNeAxlf.js";import{a as t}from"./diagnostics-DN_idNHx.js";import{a as n}from"./compat-uEPf6-XW.js";import{r,s as i}from"./legacy-api-aliases-jKEvBgOL.js";const a=`cerebras`,o=`https://api.cerebras.ai/v1`,s=`openai-completions`,c=`${a}-openai`,l=`slicc-cerebras-models`;let u=[];const d=[{id:`gpt-oss-120b`,name:`GPT OSS 120B`,api:`openai`,reasoning:!0,input:[`text`],context_window:131072,max_tokens:40960},{id:`gemma-4-31b`,name:`Gemma 4 31B`,api:`openai`,reasoning:!1,input:[`text`,`image`],context_window:131072,max_tokens:40960},{id:`zai-glm-4.7`,name:`Z.AI GLM-4.7`,api:`openai`,reasoning:!1,input:[`text`],context_window:131072,max_tokens:40960}];function f(e){try{localStorage.setItem(l,JSON.stringify(e))}catch{}}function p(){try{let e=localStorage.getItem(l);if(!e)return[];let t=JSON.parse(e);return Array.isArray(t)&&t.length>0?t:[]}catch{return[]}}function m(e){let t=e.id??``,n=d.find(e=>e.id===t);return{id:t,name:e.name??n?.name??t,api:`openai`,reasoning:e.capabilities?.reasoning??n?.reasoning??!1,input:e.capabilities?.vision?[`text`,`image`]:n?.input??[`text`],context_window:e.limits?.max_context_length??n?.context_window??8192,max_tokens:e.limits?.max_completion_tokens??n?.max_tokens??4096}}async function h(e){let t=await fetch(`${o}/models`,{headers:{Authorization:`Bearer ${e}`}});if(!t.ok)throw Error(`GET /v1/models → ${t.status} ${t.statusText}`);let n=((await t.json()).data??[]).map(m).filter(e=>e.id.length>0);n.length>0&&(u=n,f(n))}function g(e,t){return{type:`error`,reason:`error`,error:{role:`assistant`,content:[],api:c,provider:a,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 _(e){console.error(`[cerebras] Stream error:`,e instanceof Error?e.message:String(e))}const v=(e,n,r={})=>{let i=t();return y(i,e,n,r).catch(_),i};async function y(e,t,n,i){try{let a={...t,baseUrl:o,api:s},c=r(a,n,i);for await(let t of c)e.push(t);e.end()}catch(n){_(n),e.push(g(t,n)),e.end()}}const b=(e,n,r)=>{let i=t();return x(i,e,n,r).catch(_),i};async function x(e,t,n,r){try{let a={...t,baseUrl:o,api:s},c=i(a,n,r);for await(let t of c)e.push(t);e.end()}catch(n){_(n),e.push(g(t,n)),e.end()}}const S={id:a,name:`Cerebras`,description:`Ultra-fast inference on Cerebras hardware. Get an API key at cloud.cerebras.ai.`,requiresApiKey:!0,requiresBaseUrl:!1,getModelIds:()=>{if(u.length>0)return u;let e=p();return e.length>0?e:d},refreshModels:async t=>{let n=t??e(a)??``;if(n)try{await h(n)}catch(e){console.warn(`[cerebras] Failed to refresh model list:`,e instanceof Error?e.message:String(e))}}};function C(){n({api:c,stream:v,streamSimple:b})}export{S as config,C as register};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{h as e}from"./account-store-
|
|
1
|
+
import{h as e}from"./account-store-DOO-iMlc.js";import{a as t}from"./diagnostics-DN_idNHx.js";import{u as n}from"./claude-model-version-BJLrDjmH.js";import{r,s as i}from"./legacy-api-aliases-45zvHmpJ.js";var a=`cerebras`,o=`https://api.cerebras.ai/v1`,s=`openai-completions`,c=`${a}-openai`,l=`slicc-cerebras-models`,u=[],d=[{id:`gpt-oss-120b`,name:`GPT OSS 120B`,api:`openai`,reasoning:!0,input:[`text`],context_window:131072,max_tokens:40960},{id:`gemma-4-31b`,name:`Gemma 4 31B`,api:`openai`,reasoning:!1,input:[`text`,`image`],context_window:131072,max_tokens:40960},{id:`zai-glm-4.7`,name:`Z.AI GLM-4.7`,api:`openai`,reasoning:!1,input:[`text`],context_window:131072,max_tokens:40960}];function f(e){try{localStorage.setItem(l,JSON.stringify(e))}catch{}}function p(){try{let e=localStorage.getItem(l);if(!e)return[];let t=JSON.parse(e);return Array.isArray(t)&&t.length>0?t:[]}catch{return[]}}function m(e){let t=e.id??``,n=d.find(e=>e.id===t);return{id:t,name:e.name??n?.name??t,api:`openai`,reasoning:e.capabilities?.reasoning??n?.reasoning??!1,input:e.capabilities?.vision?[`text`,`image`]:n?.input??[`text`],context_window:e.limits?.max_context_length??n?.context_window??8192,max_tokens:e.limits?.max_completion_tokens??n?.max_tokens??4096}}async function h(e){let t=await fetch(`${o}/models`,{headers:{Authorization:`Bearer ${e}`}});if(!t.ok)throw Error(`GET /v1/models → ${t.status} ${t.statusText}`);let n=((await t.json()).data??[]).map(m).filter(e=>e.id.length>0);n.length>0&&(u=n,f(n))}function g(e,t){return{type:`error`,reason:`error`,error:{role:`assistant`,content:[],api:c,provider:a,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 _(e){console.error(`[cerebras] Stream error:`,e instanceof Error?e.message:String(e))}var v=(e,n,r={})=>{let i=t();return y(i,e,n,r).catch(_),i};async function y(e,t,n,i){try{let a={...t,baseUrl:o,api:s},c=r(a,n,i);for await(let t of c)e.push(t);e.end()}catch(n){_(n),e.push(g(t,n)),e.end()}}var b=(e,n,r)=>{let i=t();return x(i,e,n,r).catch(_),i};async function x(e,t,n,r){try{let a={...t,baseUrl:o,api:s},c=i(a,n,r);for await(let t of c)e.push(t);e.end()}catch(n){_(n),e.push(g(t,n)),e.end()}}var S={id:a,name:`Cerebras`,description:`Ultra-fast inference on Cerebras hardware. Get an API key at cloud.cerebras.ai.`,requiresApiKey:!0,requiresBaseUrl:!1,getModelIds:()=>{if(u.length>0)return u;let e=p();return e.length>0?e:d},refreshModels:async t=>{let n=t??e(a)??``;if(n)try{await h(n)}catch(e){console.warn(`[cerebras] Failed to refresh model list:`,e instanceof Error?e.message:String(e))}}};function C(){n({api:c,stream:v,streamSimple:b})}export{S as config,C as register};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{C as e,I as t,d as n,f as r}from"./account-store-
|
|
1
|
+
import{C as e,I as t,d as n,f as r}from"./account-store-DOO-iMlc.js";import{n as i}from"./provider-settings-PY2cQKhO.js";var a=`slicc_cloud_model_catalog`,o=`adobe`;function s(t){if(t===o)return!1;let n=e(t);return!(n.hidden||n.onOAuthLoginIntercepted)}function c(){try{let e=r().map(e=>({providerId:e.providerId,providerName:e.providerName,models:e.models.map(e=>({id:e.id,name:e.name}))}));localStorage.setItem(a,JSON.stringify(e))}catch{}}async function l(r){for(;r.firstChild;)r.removeChild(r.firstChild);r.className=`connect-surface`;let a=document.createElement(`h1`);a.className=`connect-surface__title`,a.textContent=`Connect providers`,r.appendChild(a);let l=document.createElement(`p`);l.className=`connect-surface__desc`,l.textContent=`Log in or add API keys for the providers your cone should use, then click Done to return to the dashboard.`,r.appendChild(l);let u=document.createElement(`div`);u.className=`connect-surface__accounts`,r.appendChild(u);function d(){for(;u.firstChild;)u.removeChild(u.firstChild);let r=n().filter(e=>e.providerId!==o);if(r.length===0){let e=document.createElement(`div`);e.className=`connect-surface__empty`,e.textContent=`No providers connected yet.`,u.appendChild(e)}else{let n=document.createElement(`div`);n.className=`connect-surface__accounts-list`;for(let i of r){let r=e(i.providerId),a=document.createElement(`div`);a.className=`connect-surface__account-row`;let o=document.createElement(`div`);o.className=`connect-surface__account-info`;let s=document.createElement(`div`);s.className=`connect-surface__account-name`,s.textContent=r.name,o.appendChild(s);let l=document.createElement(`div`);l.className=`connect-surface__account-detail`,l.textContent=i.userName?i.userName:i.accessToken?`Logged in`:i.apiKey?`API key set`:`No credentials`,o.appendChild(l),a.appendChild(o);let u=document.createElement(`button`);u.className=`connect-surface__remove-btn`,u.textContent=`Remove`,u.onclick=async()=>{await t(i.providerId),c(),d()},a.appendChild(u),n.appendChild(a)}u.appendChild(n)}let a=document.createElement(`button`);a.className=`connect-surface__add-btn`,a.textContent=r.length===0?`Add provider`:`Manage providers`,a.onclick=async()=>{await i({startInAddAccount:!0,providerFilter:s})&&(c(),d())},u.appendChild(a)}d(),c();let f=document.createElement(`div`);f.className=`connect-surface__footer`;let p=document.createElement(`button`);if(p.className=`connect-surface__done-btn`,p.textContent=`Done — return to dashboard`,p.onclick=()=>{c(),window.close()},f.appendChild(p),r.appendChild(f),!document.getElementById(`connect-surface-style`)){let e=document.createElement(`style`);e.id=`connect-surface-style`,e.textContent=`
|
|
2
2
|
.connect-surface {
|
|
3
3
|
padding: 2rem;
|
|
4
4
|
max-width: 560px;
|
|
@@ -35,4 +35,4 @@ $&`).replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g,`$1$2`).replace(/\
|
|
|
35
35
|
`}}return e?(p+=`
|
|
36
36
|
`+qf(l(e),c),s&&s()):d&&o&&o(),p}function Tp({items:e},t,{flowChars:n,itemIndent:r}){let{indent:i,indentStep:a,flowCollectionPadding:o,options:{commentString:s}}=t;r+=a;let c=Object.assign({},t,{indent:r,inFlow:!0,type:null}),l=!1,u=0,d=[];for(let n=0;n<e.length;++n){let i=e[n],a=null;if(Q(i))i.spaceBefore&&d.push(``),Ep(t,d,i.commentBefore,!1),i.comment&&(a=i.comment);else if(X(i)){let e=Q(i.key)?i.key:null;e&&(e.spaceBefore&&d.push(``),Ep(t,d,e.commentBefore,!1),e.comment&&(l=!0));let n=Q(i.value)?i.value:null;n?(n.comment&&(a=n.comment),n.commentBefore&&(l=!0)):i.value==null&&e?.comment&&(a=e.comment)}a&&(l=!0);let o=dp(i,c,()=>a=null);l||=d.length>u||o.includes(`
|
|
37
37
|
`),n<e.length-1?o+=`,`:t.options.trailingComma&&(t.options.lineWidth>0&&(l||=d.reduce((e,t)=>e+t.length+2,2)+(o.length+2)>t.options.lineWidth),l&&(o+=`,`)),a&&(o+=Jf(o,r,s(a))),d.push(o),u=d.length}let{start:f,end:p}=n;if(d.length===0)return f+p;if(!l){let e=d.reduce((e,t)=>e+t.length+2,2);l=t.options.lineWidth>0&&e>t.options.lineWidth}if(l){let e=f;for(let t of d)e+=t?`\n${a}${i}${t}`:`
|
|
38
|
-
`;return`${e}\n${i}${p}`}return`${f}${o}${d.join(` `)}${o}${p}`}function Ep({indent:e,options:{commentString:t}},n,r,i){if(r&&i&&(r=r.replace(/^\n+/,``)),r){let i=qf(t(r),e);n.push(i.trimStart())}}function Dp(e,t){let n=Z(t)?t.value:t;for(let r of e)if(X(r)&&(r.key===t||r.key===n||Z(r.key)&&r.key.value===n))return r}var Op=class extends Gf{static get tagName(){return`tag:yaml.org,2002:map`}constructor(e){super(hf,e),this.items=[]}static from(e,t,n){let{keepUndefined:r,replacer:i}=n,a=new this(e),o=(e,o)=>{if(typeof i==`function`)o=i.call(t,e,o);else if(Array.isArray(i)&&!i.includes(e))return;(o!==void 0||r)&&a.items.push(xp(e,o,n))};if(t instanceof Map)for(let[e,n]of t)o(e,n);else if(t&&typeof t==`object`)for(let e of Object.keys(t))o(e,t[e]);return typeof e.sortMapEntries==`function`&&a.items.sort(e.sortMapEntries),a}add(e,t){let n;n=X(e)?e:!e||typeof e!=`object`||!(`key`in e)?new Sp(e,e?.value):new Sp(e.key,e.value);let r=Dp(this.items,n.key),i=this.schema?.sortMapEntries;if(r){if(!t)throw Error(`Key ${n.key} already set`);Z(r.value)&&Bf(n.value)?r.value.value=n.value:r.value=n.value}else if(i){let e=this.items.findIndex(e=>i(n,e)<0);e===-1?this.items.push(n):this.items.splice(e,0,n)}else this.items.push(n)}delete(e){let t=Dp(this.items,e);return t?this.items.splice(this.items.indexOf(t),1).length>0:!1}get(e,t){let n=Dp(this.items,e)?.value;return(!t&&Z(n)?n.value:n)??void 0}has(e){return!!Dp(this.items,e)}set(e,t){this.add(new Sp(e,t),!0)}toJSON(e,t,n){let r=n?new n:t?.mapAsMap?new Map:{};t?.onCreate&&t.onCreate(r);for(let e of this.items)yp(t,r,e);return r}toString(e,t,n){if(!e)return JSON.stringify(this);for(let e of this.items)if(!X(e))throw Error(`Map items must all be pairs; found ${JSON.stringify(e)} instead`);return!e.allNullValues&&this.hasAllNullValues(!1)&&(e=Object.assign({},e,{allNullValues:!0})),Cp(this,e,{blockItemPrefix:``,flowChars:{start:`{`,end:`}`},itemIndent:e.indent||``,onChompKeep:n,onComment:t})}};const kp={collection:`map`,default:!0,nodeClass:Op,tag:`tag:yaml.org,2002:map`,resolve(e,t){return Sf(e)||t(`Expected a mapping for this tag`),e},createNode:(e,t,n)=>Op.from(e,t,n)};var Ap=class extends Gf{static get tagName(){return`tag:yaml.org,2002:seq`}constructor(e){super(vf,e),this.items=[]}add(e){this.items.push(e)}delete(e){let t=jp(e);return typeof t==`number`&&this.items.splice(t,1).length>0}get(e,t){let n=jp(e);if(typeof n!=`number`)return;let r=this.items[n];return!t&&Z(r)?r.value:r}has(e){let t=jp(e);return typeof t==`number`&&t<this.items.length}set(e,t){let n=jp(e);if(typeof n!=`number`)throw Error(`Expected a valid index, not ${e}.`);let r=this.items[n];Z(r)&&Bf(t)?r.value=t:this.items[n]=t}toJSON(e,t){let n=[];t?.onCreate&&t.onCreate(n);let r=0;for(let e of this.items)n.push(If(e,String(r++),t));return n}toString(e,t,n){return e?Cp(this,e,{blockItemPrefix:`- `,flowChars:{start:`[`,end:`]`},itemIndent:(e.indent||``)+` `,onChompKeep:n,onComment:t}):JSON.stringify(this)}static from(e,t,n){let{replacer:r}=n,i=new this(e);if(t&&Symbol.iterator in Object(t)){let e=0;for(let a of t){if(typeof r==`function`){let n=t instanceof Set?a:String(e++);a=r.call(t,n,a)}i.items.push(Hf(a,void 0,n))}}return i}};function jp(e){let t=Z(e)?e.value:e;return t&&typeof t==`string`&&(t=Number(t)),typeof t==`number`&&Number.isInteger(t)&&t>=0?t:null}const Mp={collection:`seq`,default:!0,nodeClass:Ap,tag:`tag:yaml.org,2002:seq`,resolve(e,t){return Cf(e)||t(`Expected a sequence for this tag`),e},createNode:(e,t,n)=>Ap.from(e,t,n)};function Np(e){return typeof e==`bigint`||Number.isInteger(e)}const Pp=({value:e})=>JSON.stringify(e),Fp=[{identify:e=>typeof e==`string`,default:!0,tag:`tag:yaml.org,2002:str`,resolve:e=>e,stringify:Pp},{identify:e=>e==null,createNode:()=>new $(null),default:!0,tag:`tag:yaml.org,2002:null`,test:/^null$/,resolve:()=>null,stringify:Pp},{identify:e=>typeof e==`boolean`,default:!0,tag:`tag:yaml.org,2002:bool`,test:/^true$|^false$/,resolve:e=>e===`true`,stringify:Pp},{identify:Np,default:!0,tag:`tag:yaml.org,2002:int`,test:/^-?(?:0|[1-9][0-9]*)$/,resolve:(e,t,{intAsBigInt:n})=>n?BigInt(e):parseInt(e,10),stringify:({value:e})=>Np(e)?e.toString():JSON.stringify(e)},{identify:e=>typeof e==`number`,default:!0,tag:`tag:yaml.org,2002:float`,test:/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,resolve:e=>parseFloat(e),stringify:Pp}];[kp,Mp].concat(Fp,{default:!0,tag:``,test:/^/,resolve(e,t){return t(`Unresolved plain scalar ${JSON.stringify(e)}`),e}});function Ip(e,t,n){let{replacer:r}=n,i=new Ap(e);i.tag=`tag:yaml.org,2002:pairs`;let a=0;if(t&&Symbol.iterator in Object(t))for(let e of t){typeof r==`function`&&(e=r.call(t,String(a++),e));let o,s;if(Array.isArray(e)){if(e.length===2)o=e[0],s=e[1];else throw TypeError(`Expected [key, value] tuple: ${e}`)}else if(e&&e instanceof Object){let t=Object.keys(e);if(t.length===1)o=t[0],s=e[o];else throw TypeError(`Expected tuple with one key, not ${t.length} keys`)}else o=e;i.items.push(xp(o,s,n))}return i}var Lp=class e extends Ap{constructor(){super(),this.add=Op.prototype.add.bind(this),this.delete=Op.prototype.delete.bind(this),this.get=Op.prototype.get.bind(this),this.has=Op.prototype.has.bind(this),this.set=Op.prototype.set.bind(this),this.tag=e.tag}toJSON(e,t){if(!t)return super.toJSON(e);let n=new Map;t?.onCreate&&t.onCreate(n);for(let e of this.items){let r,i;if(X(e)?(r=If(e.key,``,t),i=If(e.value,r,t)):r=If(e,``,t),n.has(r))throw Error(`Ordered maps must not include duplicate keys`);n.set(r,i)}return n}static from(e,t,n){let r=Ip(e,t,n),i=new this;return i.items=r.items,i}};Lp.tag=`tag:yaml.org,2002:omap`;var Rp=class e extends Op{constructor(t){super(t),this.tag=e.tag}add(e){let t;t=X(e)?e:e&&typeof e==`object`&&`key`in e&&`value`in e&&e.value===null?new Sp(e.key,null):new Sp(e,null),Dp(this.items,t.key)||this.items.push(t)}get(e,t){let n=Dp(this.items,e);return!t&&X(n)?Z(n.key)?n.key.value:n.key:n}set(e,t){if(typeof t!=`boolean`)throw Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof t}`);let n=Dp(this.items,e);n&&!t?this.items.splice(this.items.indexOf(n),1):!n&&t&&this.items.push(new Sp(e))}toJSON(e,t){return super.toJSON(e,t,Set)}toString(e,t,n){if(!e)return JSON.stringify(this);if(this.hasAllNullValues(!0))return super.toString(Object.assign({},e,{allNullValues:!0}),t,n);throw Error(`Set items must all have null values`)}static from(e,t,n){let{replacer:r}=n,i=new this(e);if(t&&Symbol.iterator in Object(t))for(let e of t)typeof r==`function`&&(e=r.call(t,e,e)),i.items.push(xp(e,null,n));return i}};Rp.tag=`tag:yaml.org,2002:set`;const zp=Symbol(`break visit`),Bp=Symbol(`skip children`),Vp=Symbol(`remove item`);function Hp(e,t){`type`in e&&e.type===`document`&&(e={start:e.start,value:e.value}),Up(Object.freeze([]),e,t)}Hp.BREAK=zp,Hp.SKIP=Bp,Hp.REMOVE=Vp,Hp.itemAtPath=(e,t)=>{let n=e;for(let[e,r]of t){let t=n?.[e];if(t&&`items`in t)n=t.items[r];else return}return n},Hp.parentCollection=(e,t)=>{let n=Hp.itemAtPath(e,t.slice(0,-1)),r=t[t.length-1][0],i=n?.[r];if(i&&`items`in i)return i;throw Error(`Parent collection not found`)};function Up(e,t,n){let r=n(t,e);if(typeof r==`symbol`)return r;for(let i of[`key`,`value`]){let a=t[i];if(a&&`items`in a){for(let t=0;t<a.items.length;++t){let r=Up(Object.freeze(e.concat([[i,t]])),a.items[t],n);if(typeof r==`number`)t=r-1;else if(r===zp)return zp;else r===Vp&&(a.items.splice(t,1),--t)}typeof r==`function`&&i===`key`&&(r=r(t,e))}}return typeof r==`function`?r(t,e):r}t(((e,t)=>{function n(e){return Array.isArray(e)?e:[e]}let r=/^\s+$/,i=/(?:[^\\]|^)\\$/,a=/^\\!/,o=/^\\#/,s=/\r?\n/g,c=/^\.{0,2}\/|^\.{1,2}$/,l=/\/$/,u=`node-ignore`;typeof Symbol<`u`&&(u=Symbol.for(`node-ignore`));let d=u,f=(e,t,n)=>(Object.defineProperty(e,t,{value:n}),n),p=/([0-z])-([0-z])/g,m=()=>!1,h=e=>e.replace(p,(e,t,n)=>t.charCodeAt(0)<=n.charCodeAt(0)?e:``),g=e=>{let{length:t}=e;return e.slice(0,t-t%2)},ee=[[/^\uFEFF/,()=>``],[/((?:\\\\)*?)(\\?\s+)$/,(e,t,n)=>t+(n.indexOf(`\\`)===0?` `:``)],[/(\\+?)\s/g,(e,t)=>{let{length:n}=t;return t.slice(0,n-n%2)+` `}],[/[\\$.|*+(){^]/g,e=>`\\${e}`],[/(?!\\)\?/g,()=>`[^/]`],[/^\//,()=>`^`],[/\//g,()=>`\\/`],[/^\^*\\\*\\\*\\\//,()=>`^(?:.*\\/)?`],[/^(?=[^^])/,function(){return/\/(?!$)/.test(this)?`^`:`(?:^|\\/)`}],[/\\\/\\\*\\\*(?=\\\/|$)/g,(e,t,n)=>t+6<n.length?`(?:\\/[^\\/]+)*`:`\\/.+`],[/(^|[^\\]+)(\\\*)+(?=.+)/g,(e,t,n)=>t+n.replace(/\\\*/g,`[^\\/]*`)],[/\\\\\\(?=[$.|*+(){^])/g,()=>`\\`],[/\\\\/g,()=>`\\`],[/(\\)?\[([^\]/]*?)(\\*)($|\])/g,(e,t,n,r,i)=>t===`\\`?`\\[${n}${g(r)}${i}`:i===`]`&&r.length%2==0?`[${h(n)}${r}]`:`[]`],[/(?:[^*])$/,e=>/\/$/.test(e)?`${e}$`:`${e}(?=$|\\/$)`]],_=/(^|\\\/)?\\\*$/,v=`regex`,te=`checkRegex`,ne={[v](e,t){return`${t?`${t}[^/]+`:`[^/]*`}(?=$|\\/$)`},[te](e,t){return`${t?`${t}[^/]*`:`[^/]*`}(?=$|\\/$)`}},re=e=>ee.reduce((t,[n,r])=>t.replace(n,r.bind(e)),e),ie=e=>typeof e==`string`,ae=e=>e&&ie(e)&&!r.test(e)&&!i.test(e)&&e.indexOf(`#`)!==0,oe=e=>e.split(s).filter(Boolean);var se=class{constructor(e,t,n,r,i,a){this.pattern=e,this.mark=t,this.negative=i,f(this,`body`,n),f(this,`ignoreCase`,r),f(this,`regexPrefix`,a)}get regex(){let e=`_regex`;return this[e]?this[e]:this._make(v,e)}get checkRegex(){let e=`_checkRegex`;return this[e]?this[e]:this._make(te,e)}_make(e,t){let n=this.regexPrefix.replace(_,ne[e]),r=this.ignoreCase?new RegExp(n,`i`):new RegExp(n);return f(this,t,r)}};let ce=({pattern:e,mark:t},n)=>{let r=!1,i=e;i.indexOf(`!`)===0&&(r=!0,i=i.substr(1)),i=i.replace(a,`!`).replace(o,`#`);let s=re(i);return new se(e,t,i,n,r,s)};var le=class{constructor(e){this._ignoreCase=e,this._rules=[]}_add(e){if(e&&e[d]){this._rules=this._rules.concat(e._rules._rules),this._added=!0;return}if(ie(e)&&(e={pattern:e}),ae(e.pattern)){let t=ce(e,this._ignoreCase);this._added=!0,this._rules.push(t)}}add(e){return this._added=!1,n(ie(e)?oe(e):e).forEach(this._add,this),this._added}test(e,t,n){let r=!1,i=!1,a;this._rules.forEach(o=>{let{negative:s}=o;i===s&&r!==i||s&&!r&&!i&&!t||o[n].test(e)&&(r=!s,i=s,a=s?void 0:o)});let o={ignored:r,unignored:i};return a&&(o.rule=a),o}};let ue=(e,t)=>{throw new t(e)},y=(e,t,n)=>ie(e)?e?!y.isNotRelative(e)||n(`path should be a \`path.relative()\`d string, but got "${t}"`,RangeError):n(`path must not be empty`,TypeError):n(`path must be a string, but got \`${t}\``,TypeError),de=e=>c.test(e);y.isNotRelative=de,y.convert=e=>e;var fe=class{constructor({ignorecase:e=!0,ignoreCase:t=e,allowRelativePaths:n=!1}={}){f(this,d,!0),this._rules=new le(t),this._strictPathCheck=!n,this._initCache()}_initCache(){this._ignoreCache=Object.create(null),this._testCache=Object.create(null)}add(e){return this._rules.add(e)&&this._initCache(),this}addPattern(e){return this.add(e)}_test(e,t,n,r){let i=e&&y.convert(e);return y(i,e,this._strictPathCheck?ue:m),this._t(i,t,n,r)}checkIgnore(e){if(!l.test(e))return this.test(e);let t=e.split(`/`).filter(Boolean);if(t.pop(),t.length){let e=this._t(t.join(`/`)+`/`,this._testCache,!0,t);if(e.ignored)return e}return this._rules.test(e,!1,te)}_t(e,t,n,r){if(e in t)return t[e];if(r||=e.split(`/`).filter(Boolean),r.pop(),!r.length)return t[e]=this._rules.test(e,n,v);let i=this._t(r.join(`/`)+`/`,t,n,r);return t[e]=i.ignored?i:this._rules.test(e,n,v)}ignores(e){return this._test(e,this._ignoreCache,!1).ignored}createFilter(){return e=>!this.ignores(e)}filter(e){return n(e).filter(this.createFilter())}test(e){return this._test(e,this._testCache,!0)}};let pe=e=>new fe(e),me=e=>y(e&&y.convert(e),e,m),he=()=>{y.convert=e=>/^\\\\\?\\/.test(e)||/["<>|\u0000-\u001F]+/u.test(e)?e:e.replace(/\\/g,`/`);let e=/^[a-z]:\//i;y.isNotRelative=t=>e.test(t)||de(t)};typeof process<`u`&&process.platform===`win32`&&he(),t.exports=pe,pe.default=pe,t.exports.isPathValid=me,f(t.exports,Symbol.for(`setupWindows`),he)}))();const Wp={"pi.session.id":{type:`string`,required:!0,cardinality:`high`,description:`Session id`},"pi.lane.name":{type:`string`,required:!0,cardinality:`high`,description:`Lane name`},"pi.operation.id":{type:`string`,required:!0,cardinality:`high`,description:`Durable operation id`},"pi.operation.recovery":{type:`boolean`,required:!0,description:`Whether this invocation resumes durable work`}},Gp={"pi.error.code":{type:`string`,cardinality:`low`,description:`Stable operation error code`},"pi.error.type":{type:`string`,cardinality:`low`,description:`Low-cardinality operation error class`}};({...Wp}),{...Gp},{...Wp},{...Gp},{...Wp},{...Gp},globalThis.Buffer,j({command:R({description:`Bash command to execute`}),timeout:Lt(Zn({description:`Timeout in seconds (optional, no default timeout)`}))});const Kp=j({oldText:R({description:`Exact text for one targeted replacement. It must be unique in the original file and must not overlap with any other edits[].oldText in the same call.`}),newText:R({description:`Replacement text for this targeted edit.`})},{});j({path:R({description:`Path to the file to edit (relative or absolute)`}),edits:xt(Kp,{description:`One or more targeted replacements. Each edit is matched against the original file, not incrementally. Do not include overlapping or nested edits. If two changes touch the same block or nearby lines, merge them into one edit instead.`})},{}),j({path:R({description:`Path to the file to read (relative or absolute)`}),offset:Lt(Zn({description:`Line number to start reading from (1-indexed)`})),limit:Lt(Zn({description:`Maximum number of lines to read`}))}),j({path:R({description:`Path to the file to write (relative or absolute)`}),content:R({description:`Content to write to the file`})});function qp(){return a()?`extension-direct`:s()?`extension-delegate`:globalThis.__slicc_connect_mode?`connect`:`node-rest`}function Jp(){return qp()===`node-rest`}const Yp=l({portName:`secrets.crud`,panelRpcOp:`secrets-bridge`,timeoutMs:1e4,onUnavailable:`resolve-undefined`,makeError:e=>Error(e),logNamespace:`secrets-bridge`,toPortMessage:({type:e,payload:t})=>({type:e,...t}),toPanelRpcPayload:({type:e,payload:t})=>({type:e,payload:t})});function Xp(e,t){return Yp({type:e,payload:t})}const Zp=n(`secret-scrub`),Qp=`[tool output withheld: secret scrub unavailable]`,$p=async e=>e;function em(){let e=qp();return e===`extension-direct`?async e=>{if(!e)return e;try{let t=await new Promise(t=>{chrome.runtime.sendMessage({type:`secrets.scrub-tool-result`,text:e},e=>t(e??{}))});return t.error?(Zp.debug(`SW scrub-tool-result returned error`),Qp):typeof t.text==`string`?t.text:Qp}catch{return Zp.debug(`SW scrub-tool-result failed`),Qp}}:e===`extension-delegate`?async e=>{if(!e)return e;try{let t=await Xp(`secrets.scrub-tool-result`,{text:e});return t?.error?(Zp.debug(`Bridge scrub-tool-result returned error`),Qp):typeof t?.text==`string`?t.text:Qp}catch{return Zp.debug(`Bridge scrub-tool-result failed`),Qp}}:e===`connect`?$p:async e=>{if(!e)return e;try{let t=await fetch(o(`/api/secrets/scrub`),{method:`POST`,headers:c({"content-type":`application/json`}),body:JSON.stringify({text:e})});if(!t.ok)return Zp.debug(`Server scrub-tool-result returned non-ok`,{status:t.status}),e;let n=await t.json();return typeof n.text==`string`?n.text:e}catch(t){return Zp.debug(`Server scrub-tool-result failed`,{error:t instanceof Error?t.message:String(t)}),e}}}const tm=[];function nm(e){return tm.push(e),e}function rm(e){let t=tm.lastIndexOf(e);t!==-1&&tm.splice(t,1)}function im(){return tm.length>0?tm[tm.length-1]:null}const am=n(`tool-ui`),om=`__mounted`,sm=new class{pending=new Map;idCounter=0;mounted=new Set;mountWaiters=new Map;generateId(){return`tool-ui-${++this.idCounter}-${Date.now().toString(36)}`}register(e,t,n,r){this.mounted.delete(e),this.pending.set(e,{request:t,resolve:n,reject:r}),am.info(`Tool UI registered`,{id:e})}async handleAction(e,t){let n=this.pending.get(e);if(!n){am.warn(`Action for unknown tool UI`,{id:e,action:t.action});return}am.info(`Tool UI action`,{id:e,action:t.action});try{let e;e=n.request.onAction?await n.request.onAction(t.action,t.data):t,n.resolve(e)}catch(e){n.reject(e instanceof Error?e:Error(String(e)))}finally{this.pending.delete(e),this.clearMountWaiter(e,`tool ui completed`)}}cancel(e,t=`cancelled`){let n=this.pending.get(e);n&&(n.reject(Error(t)),this.pending.delete(e),am.info(`Tool UI cancelled`,{id:e,reason:t})),this.clearMountWaiter(e,t),this.mounted.delete(e)}cancelAll(e=`cancelled`){let t=this.pending.size;for(let[t,n]of this.pending)n.reject(Error(e));this.pending.clear();for(let t of[...this.mountWaiters.keys()])this.clearMountWaiter(t,e);this.mounted.clear(),t>0&&am.info(`All tool UIs cancelled`,{reason:e,count:t})}isPending(e){return this.pending.has(e)}getPendingIds(){return[...this.pending.keys()]}markMounted(e){this.mounted.add(e);let t=this.mountWaiters.get(e);t&&(clearTimeout(t.timeoutHandle),this.mountWaiters.delete(e),t.resolve())}waitForMount(e,t){return this.mounted.has(e)?Promise.resolve():new Promise((n,r)=>{let i=setTimeout(()=>{this.mountWaiters.delete(e),r(Error(`tool UI ${e} was not mounted by any panel within ${t}ms — check the chat panel`))},t);this.mountWaiters.set(e,{resolve:n,reject:r,timeoutHandle:i})})}clearMountWaiter(e,t){let n=this.mountWaiters.get(e);n&&(clearTimeout(n.timeoutHandle),this.mountWaiters.delete(e),n.reject(Error(t)))}};async function cm(e,t){let n=e.id??sm.generateId(),r,i,a=new Promise((e,t)=>{r=e,i=t});return sm.register(n,e,r,i),t?t({content:[{type:`tool_ui`,requestId:n,html:e.html}]}):am.warn(`showToolUI called without onUpdate callback — UI may not render`),a.finally(()=>{t&&t({content:[{type:`tool_ui_done`,requestId:n}]})})}async function lm(e){let t=im();return t?cm(e,t.onUpdate):(am.warn(`showToolUIFromContext called without execution context`),null)}const um=n(`image-processor`),dm=3932160;function fm(e){let t=e.replace(/[\t\n\f\r ]/g,``),n=t.length%4;return n===2?`${t}==`:n===3?`${t}=`:t}function pm(e,t){let n=i(fm(e.slice(0,t)));return new DataView(n.buffer,n.byteOffset,n.byteLength)}function mm(e,t){return e>0&&t>0?{width:e,height:t}:null}function hm(e){if(e.length<32)return null;let t=pm(e,32);return mm(t.getUint32(16,!1),t.getUint32(20,!1))}function gm(e){if(e.length<16)return null;let t=pm(e,16);return mm(t.getUint16(6,!0),t.getUint16(8,!0))}function _m(e){let t=pm(e,Math.min(87384,e.length));for(let e=0;e<t.byteLength-8;e++){if(t.getUint8(e)!==255)continue;let n=t.getUint8(e+1);if(n===192||n===194)return mm(t.getUint16(e+7,!1),t.getUint16(e+5,!1))}return null}function vm(e,t){try{let n=fm(e);if(t===`image/png`)return hm(n);if(t===`image/gif`)return gm(n);if(t===`image/jpeg`)return _m(n)}catch{}return null}async function ym(e){if(!u(e.mimeType))return um.warn(`Unsupported image format`,{mimeType:e.mimeType}),{type:`text`,text:`[Image removed: unsupported format "${e.mimeType}". Supported: JPEG, PNG, GIF, WebP]`};let t=e.data.length,n=vm(e.data,e.mimeType);if(!(t>5242880||n!==null&&(n.width>8e3||n.height>8e3)||n!==null&&Math.max(n.width,n.height)>1568))return e;um.info(`Image needs processing`,{base64Size:t,dimensions:n?`${n.width}x${n.height}`:`unknown`,reason:t>5242880?`size`:`dimensions`});let a,o;try{let e=await import(`./magick-wasm-Cjkds07K.js`).then(e=>e.r);a=e.getMagick,o=e.MIME_TO_MAGICK_FORMAT}catch(e){return um.error(`ImageMagick WASM module unavailable`,{error:e instanceof Error?e.message:String(e)}),{type:`text`,text:`[Image removed: resize service unavailable (ImageMagick WASM could not be loaded)]`}}let s;try{s=await a()}catch(e){return um.error(`ImageMagick WASM initialization failed`,{error:e instanceof Error?e.message:String(e)}),{type:`text`,text:`[Image removed: resize service unavailable (WASM init failed)]`}}try{let n=i(fm(e.data)),a={data:null,mime:e.mimeType};if(await s.ImageMagick.read(n,async t=>{let n=t.width,r=t.height,i=Math.max(n,r);if(i>1568){let e=1568/i,a=Math.round(n*e),o=Math.round(r*e);t.resize(a,o),um.info(`Resized image`,{from:`${n}x${r}`,to:`${a}x${o}`})}let s=o[e.mimeType]||`JPEG`;t.write(s,e=>{a.data=new Uint8Array(e)}),a.data&&a.data.length>dm&&s!==`JPEG`?(um.info(`Still over 5MB, compressing to JPEG q80`),t.quality=80,t.write(`JPEG`,e=>{a.data=new Uint8Array(e)}),a.mime=`image/jpeg`):a.data&&a.data.length>dm&&(um.info(`Still over 5MB as JPEG, reducing quality to 60`),t.quality=60,t.write(`JPEG`,e=>{a.data=new Uint8Array(e)}))}),!a.data)return um.warn(`ImageMagick produced no output`),{type:`text`,text:`[Image removed: could not be processed (empty output from resize)]`};if(a.data.length>dm)return um.warn(`Image still over 5MB after resize+compress`,{size:a.data.length}),{type:`text`,text:`[Image removed: still ${Math.round(a.data.length/1024/1024*10)/10}MB after resize and compression, exceeds 5MB API limit]`};let c=r(a.data);return um.info(`Image processed successfully`,{originalBase64:t,newBase64:c.length,mimeType:a.mime}),{type:`image`,data:c,mimeType:a.mime}}catch(n){return um.error(`Image data processing failed (corrupt or unreadable)`,{mimeType:e.mimeType,estimatedBytes:t,error:n instanceof Error?n.message:String(n)}),{type:`text`,text:`[Image removed: image data could not be processed (${n instanceof Error?n.message:`corrupt or unreadable`})]`}}}const bm=n(`tool-adapter`);function xm(e){let t=[],n=0;for(let r of d(e)){if(r.kind===`inert`||!r.parsed)continue;let i=e.slice(n,r.index);i.trim()&&t.push({type:`text`,text:i.trimEnd()}),t.push({type:`image`,mimeType:r.parsed.mimeType,data:r.parsed.data}),n=r.index+r.marker.length}let r=e.slice(n);return(r.trim()||t.length===0)&&t.push({type:`text`,text:r||e}),t}async function Sm(e){let t=xm(e),n=[];for(let e of t)e.type===`image`?n.push(await ym(e)):n.push(e);return n}function Cm(e,t,n,r){if(!r)return{tracked:null,effectiveSignal:n};let i=r.processManager.spawn({kind:`tool`,argv:[e.name,...Am(t)],owner:r.owner,ppid:r.getParentPid?.()});n?.aborted?r.processManager.signal(i.pid,`SIGINT`):n&&n.addEventListener(`abort`,()=>r.processManager.signal(i.pid,`SIGINT`),{once:!0});let a=r.processManager.onSignal((e,t)=>{e.pid===i.pid&&t===`SIGKILL`&&r.processManager.exit(i.pid,null)});return{tracked:{record:i,manager:r.processManager,unsubscribeKill:a},effectiveSignal:i.abort.signal}}function wm(e,t){e&&e.manager.exit(e.record.pid,t)}async function Tm(e,t,n){if(!n||typeof e!=`string`||e.length===0)return e;try{return await n.scrubToolResult(e)}catch(n){return bm.warn(`Tool-result scrub failed, falling back to unscrubbed content`,{tool:t,error:n instanceof Error?n.message:String(n)}),e}}async function Em(e,t){try{return await Sm(e)}catch(n){return bm.warn(`Image processing failed, falling back to raw content`,{tool:t,error:n instanceof Error?n.message:String(n)}),xm(e)}}async function Dm(e,t,n,r){let i=n?.currentGate();if(!i)return!0;if(r?.aborted)return!1;try{return await i.approve(e.name,t)&&r?.aborted!==!0}catch(t){return bm.warn(`Tool-call gate threw — refusing the call`,{tool:e.name,error:t instanceof Error?t.message:String(t)}),!1}}function Om(e,t,n,r){return{name:e.name,label:e.name,description:e.description,parameters:e.inputSchema,async execute(i,a,o,s){let c;if(s&&(c=nm({onUpdate:s,toolName:e.name,toolCallId:i})),!await Dm(e,a,r,o))return c&&rm(c),{content:[{type:`text`,text:`${e.name}: not approved (guest-caused turn).`}],details:{isError:!0}};let l=Cm(e,a,o,t);try{let t=await e.execute(a??{},l.effectiveSignal),r=await Em(await Tm(t.content,e.name,n),e.name);return wm(l.tracked,+!!t.isError),{content:r,details:{isError:t.isError}}}catch(e){throw wm(l.tracked,l.tracked?.record.abort.signal.aborted?null:1),e}finally{c&&rm(c),l.tracked?.unsubscribeKill()}}}}function km(e,t,n,r){return e.map(e=>Om(e,t,n,r))}function Am(e){if(typeof e!=`object`||!e)return[];let t=e;for(let e of[`command`,`file_path`,`path`,`pattern`,`url`,`key`,`name`,`query`,`message`]){let n=t[e];if(typeof n==`string`&&n.length>0)return[n]}for(let e of Object.values(t))if(typeof e==`string`&&e.length>0)return[e];return[]}export{j as $,R as A,je as At,Bn as B,Oe as Bt,ji as C,me as Ct,B as D,we as Dt,yr as E,he as Et,Wn as F,ve as Ft,nn as G,In as H,ue as Ht,Gn as I,ye as It,N as J,tn as K,Kn as L,be as Lt,Qn as M,ge as Mt,Yn as N,_e as Nt,z as O,Ce as Ot,L as P,b as Pt,M as Q,qn as R,xe as Rt,ki as S,x as St,Cr as T,Se as Tt,jn as U,Ln as V,w as Vt,An as W,Kt as X,Qt as Y,Ut as Z,Ri as _,y as _t,lm as a,wt as at,Ei as b,pe as bt,em as c,xt as ct,qp as d,st as dt,Rt as et,uf as f,Ie as ft,qa as g,C as gt,Hd as h,Ne as ht,cm as i,Dt as it,er as j,Ee as jt,tr as k,Ae as kt,Xp as l,pt as lt,ef as m,Me as mt,Am as n,At as nt,sm as o,St as ot,of as p,Fe as pt,$t as q,om as r,kt as rt,im as s,k as st,km as t,Ft as tt,Jp as u,lt as ut,Li as v,de as vt,V as w,Te as wt,Ai as x,Ve as xt,Mi as y,fe as yt,I as z,Pe as zt};
|
|
38
|
+
`;return`${e}\n${i}${p}`}return`${f}${o}${d.join(` `)}${o}${p}`}function Ep({indent:e,options:{commentString:t}},n,r,i){if(r&&i&&(r=r.replace(/^\n+/,``)),r){let i=qf(t(r),e);n.push(i.trimStart())}}function Dp(e,t){let n=Z(t)?t.value:t;for(let r of e)if(X(r)&&(r.key===t||r.key===n||Z(r.key)&&r.key.value===n))return r}var Op=class extends Gf{static get tagName(){return`tag:yaml.org,2002:map`}constructor(e){super(hf,e),this.items=[]}static from(e,t,n){let{keepUndefined:r,replacer:i}=n,a=new this(e),o=(e,o)=>{if(typeof i==`function`)o=i.call(t,e,o);else if(Array.isArray(i)&&!i.includes(e))return;(o!==void 0||r)&&a.items.push(xp(e,o,n))};if(t instanceof Map)for(let[e,n]of t)o(e,n);else if(t&&typeof t==`object`)for(let e of Object.keys(t))o(e,t[e]);return typeof e.sortMapEntries==`function`&&a.items.sort(e.sortMapEntries),a}add(e,t){let n;n=X(e)?e:!e||typeof e!=`object`||!(`key`in e)?new Sp(e,e?.value):new Sp(e.key,e.value);let r=Dp(this.items,n.key),i=this.schema?.sortMapEntries;if(r){if(!t)throw Error(`Key ${n.key} already set`);Z(r.value)&&Bf(n.value)?r.value.value=n.value:r.value=n.value}else if(i){let e=this.items.findIndex(e=>i(n,e)<0);e===-1?this.items.push(n):this.items.splice(e,0,n)}else this.items.push(n)}delete(e){let t=Dp(this.items,e);return t?this.items.splice(this.items.indexOf(t),1).length>0:!1}get(e,t){let n=Dp(this.items,e)?.value;return(!t&&Z(n)?n.value:n)??void 0}has(e){return!!Dp(this.items,e)}set(e,t){this.add(new Sp(e,t),!0)}toJSON(e,t,n){let r=n?new n:t?.mapAsMap?new Map:{};t?.onCreate&&t.onCreate(r);for(let e of this.items)yp(t,r,e);return r}toString(e,t,n){if(!e)return JSON.stringify(this);for(let e of this.items)if(!X(e))throw Error(`Map items must all be pairs; found ${JSON.stringify(e)} instead`);return!e.allNullValues&&this.hasAllNullValues(!1)&&(e=Object.assign({},e,{allNullValues:!0})),Cp(this,e,{blockItemPrefix:``,flowChars:{start:`{`,end:`}`},itemIndent:e.indent||``,onChompKeep:n,onComment:t})}};const kp={collection:`map`,default:!0,nodeClass:Op,tag:`tag:yaml.org,2002:map`,resolve(e,t){return Sf(e)||t(`Expected a mapping for this tag`),e},createNode:(e,t,n)=>Op.from(e,t,n)};var Ap=class extends Gf{static get tagName(){return`tag:yaml.org,2002:seq`}constructor(e){super(vf,e),this.items=[]}add(e){this.items.push(e)}delete(e){let t=jp(e);return typeof t==`number`&&this.items.splice(t,1).length>0}get(e,t){let n=jp(e);if(typeof n!=`number`)return;let r=this.items[n];return!t&&Z(r)?r.value:r}has(e){let t=jp(e);return typeof t==`number`&&t<this.items.length}set(e,t){let n=jp(e);if(typeof n!=`number`)throw Error(`Expected a valid index, not ${e}.`);let r=this.items[n];Z(r)&&Bf(t)?r.value=t:this.items[n]=t}toJSON(e,t){let n=[];t?.onCreate&&t.onCreate(n);let r=0;for(let e of this.items)n.push(If(e,String(r++),t));return n}toString(e,t,n){return e?Cp(this,e,{blockItemPrefix:`- `,flowChars:{start:`[`,end:`]`},itemIndent:(e.indent||``)+` `,onChompKeep:n,onComment:t}):JSON.stringify(this)}static from(e,t,n){let{replacer:r}=n,i=new this(e);if(t&&Symbol.iterator in Object(t)){let e=0;for(let a of t){if(typeof r==`function`){let n=t instanceof Set?a:String(e++);a=r.call(t,n,a)}i.items.push(Hf(a,void 0,n))}}return i}};function jp(e){let t=Z(e)?e.value:e;return t&&typeof t==`string`&&(t=Number(t)),typeof t==`number`&&Number.isInteger(t)&&t>=0?t:null}const Mp={collection:`seq`,default:!0,nodeClass:Ap,tag:`tag:yaml.org,2002:seq`,resolve(e,t){return Cf(e)||t(`Expected a sequence for this tag`),e},createNode:(e,t,n)=>Ap.from(e,t,n)};function Np(e){return typeof e==`bigint`||Number.isInteger(e)}const Pp=({value:e})=>JSON.stringify(e),Fp=[{identify:e=>typeof e==`string`,default:!0,tag:`tag:yaml.org,2002:str`,resolve:e=>e,stringify:Pp},{identify:e=>e==null,createNode:()=>new $(null),default:!0,tag:`tag:yaml.org,2002:null`,test:/^null$/,resolve:()=>null,stringify:Pp},{identify:e=>typeof e==`boolean`,default:!0,tag:`tag:yaml.org,2002:bool`,test:/^true$|^false$/,resolve:e=>e===`true`,stringify:Pp},{identify:Np,default:!0,tag:`tag:yaml.org,2002:int`,test:/^-?(?:0|[1-9][0-9]*)$/,resolve:(e,t,{intAsBigInt:n})=>n?BigInt(e):parseInt(e,10),stringify:({value:e})=>Np(e)?e.toString():JSON.stringify(e)},{identify:e=>typeof e==`number`,default:!0,tag:`tag:yaml.org,2002:float`,test:/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,resolve:e=>parseFloat(e),stringify:Pp}];[kp,Mp].concat(Fp,{default:!0,tag:``,test:/^/,resolve(e,t){return t(`Unresolved plain scalar ${JSON.stringify(e)}`),e}});function Ip(e,t,n){let{replacer:r}=n,i=new Ap(e);i.tag=`tag:yaml.org,2002:pairs`;let a=0;if(t&&Symbol.iterator in Object(t))for(let e of t){typeof r==`function`&&(e=r.call(t,String(a++),e));let o,s;if(Array.isArray(e)){if(e.length===2)o=e[0],s=e[1];else throw TypeError(`Expected [key, value] tuple: ${e}`)}else if(e&&e instanceof Object){let t=Object.keys(e);if(t.length===1)o=t[0],s=e[o];else throw TypeError(`Expected tuple with one key, not ${t.length} keys`)}else o=e;i.items.push(xp(o,s,n))}return i}var Lp=class e extends Ap{constructor(){super(),this.add=Op.prototype.add.bind(this),this.delete=Op.prototype.delete.bind(this),this.get=Op.prototype.get.bind(this),this.has=Op.prototype.has.bind(this),this.set=Op.prototype.set.bind(this),this.tag=e.tag}toJSON(e,t){if(!t)return super.toJSON(e);let n=new Map;t?.onCreate&&t.onCreate(n);for(let e of this.items){let r,i;if(X(e)?(r=If(e.key,``,t),i=If(e.value,r,t)):r=If(e,``,t),n.has(r))throw Error(`Ordered maps must not include duplicate keys`);n.set(r,i)}return n}static from(e,t,n){let r=Ip(e,t,n),i=new this;return i.items=r.items,i}};Lp.tag=`tag:yaml.org,2002:omap`;var Rp=class e extends Op{constructor(t){super(t),this.tag=e.tag}add(e){let t;t=X(e)?e:e&&typeof e==`object`&&`key`in e&&`value`in e&&e.value===null?new Sp(e.key,null):new Sp(e,null),Dp(this.items,t.key)||this.items.push(t)}get(e,t){let n=Dp(this.items,e);return!t&&X(n)?Z(n.key)?n.key.value:n.key:n}set(e,t){if(typeof t!=`boolean`)throw Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof t}`);let n=Dp(this.items,e);n&&!t?this.items.splice(this.items.indexOf(n),1):!n&&t&&this.items.push(new Sp(e))}toJSON(e,t){return super.toJSON(e,t,Set)}toString(e,t,n){if(!e)return JSON.stringify(this);if(this.hasAllNullValues(!0))return super.toString(Object.assign({},e,{allNullValues:!0}),t,n);throw Error(`Set items must all have null values`)}static from(e,t,n){let{replacer:r}=n,i=new this(e);if(t&&Symbol.iterator in Object(t))for(let e of t)typeof r==`function`&&(e=r.call(t,e,e)),i.items.push(xp(e,null,n));return i}};Rp.tag=`tag:yaml.org,2002:set`;const zp=Symbol(`break visit`),Bp=Symbol(`skip children`),Vp=Symbol(`remove item`);function Hp(e,t){`type`in e&&e.type===`document`&&(e={start:e.start,value:e.value}),Up(Object.freeze([]),e,t)}Hp.BREAK=zp,Hp.SKIP=Bp,Hp.REMOVE=Vp,Hp.itemAtPath=(e,t)=>{let n=e;for(let[e,r]of t){let t=n?.[e];if(t&&`items`in t)n=t.items[r];else return}return n},Hp.parentCollection=(e,t)=>{let n=Hp.itemAtPath(e,t.slice(0,-1)),r=t[t.length-1][0],i=n?.[r];if(i&&`items`in i)return i;throw Error(`Parent collection not found`)};function Up(e,t,n){let r=n(t,e);if(typeof r==`symbol`)return r;for(let i of[`key`,`value`]){let a=t[i];if(a&&`items`in a){for(let t=0;t<a.items.length;++t){let r=Up(Object.freeze(e.concat([[i,t]])),a.items[t],n);if(typeof r==`number`)t=r-1;else if(r===zp)return zp;else r===Vp&&(a.items.splice(t,1),--t)}typeof r==`function`&&i===`key`&&(r=r(t,e))}}return typeof r==`function`?r(t,e):r}t(((e,t)=>{function n(e){return Array.isArray(e)?e:[e]}let r=/^\s+$/,i=/(?:[^\\]|^)\\$/,a=/^\\!/,o=/^\\#/,s=/\r?\n/g,c=/^\.{0,2}\/|^\.{1,2}$/,l=/\/$/,u=`node-ignore`;typeof Symbol<`u`&&(u=Symbol.for(`node-ignore`));let d=u,f=(e,t,n)=>(Object.defineProperty(e,t,{value:n}),n),p=/([0-z])-([0-z])/g,m=()=>!1,h=e=>e.replace(p,(e,t,n)=>t.charCodeAt(0)<=n.charCodeAt(0)?e:``),g=e=>{let{length:t}=e;return e.slice(0,t-t%2)},ee=[[/^\uFEFF/,()=>``],[/((?:\\\\)*?)(\\?\s+)$/,(e,t,n)=>t+(n.indexOf(`\\`)===0?` `:``)],[/(\\+?)\s/g,(e,t)=>{let{length:n}=t;return t.slice(0,n-n%2)+` `}],[/[\\$.|*+(){^]/g,e=>`\\${e}`],[/(?!\\)\?/g,()=>`[^/]`],[/^\//,()=>`^`],[/\//g,()=>`\\/`],[/^\^*\\\*\\\*\\\//,()=>`^(?:.*\\/)?`],[/^(?=[^^])/,function(){return/\/(?!$)/.test(this)?`^`:`(?:^|\\/)`}],[/\\\/\\\*\\\*(?=\\\/|$)/g,(e,t,n)=>t+6<n.length?`(?:\\/[^\\/]+)*`:`\\/.+`],[/(^|[^\\]+)(\\\*)+(?=.+)/g,(e,t,n)=>t+n.replace(/\\\*/g,`[^\\/]*`)],[/\\\\\\(?=[$.|*+(){^])/g,()=>`\\`],[/\\\\/g,()=>`\\`],[/(\\)?\[([^\]/]*?)(\\*)($|\])/g,(e,t,n,r,i)=>t===`\\`?`\\[${n}${g(r)}${i}`:i===`]`&&r.length%2==0?`[${h(n)}${r}]`:`[]`],[/(?:[^*])$/,e=>/\/$/.test(e)?`${e}$`:`${e}(?=$|\\/$)`]],_=/(^|\\\/)?\\\*$/,v=`regex`,te=`checkRegex`,ne={[v](e,t){return`${t?`${t}[^/]+`:`[^/]*`}(?=$|\\/$)`},[te](e,t){return`${t?`${t}[^/]*`:`[^/]*`}(?=$|\\/$)`}},re=e=>ee.reduce((t,[n,r])=>t.replace(n,r.bind(e)),e),ie=e=>typeof e==`string`,ae=e=>e&&ie(e)&&!r.test(e)&&!i.test(e)&&e.indexOf(`#`)!==0,oe=e=>e.split(s).filter(Boolean);var se=class{constructor(e,t,n,r,i,a){this.pattern=e,this.mark=t,this.negative=i,f(this,`body`,n),f(this,`ignoreCase`,r),f(this,`regexPrefix`,a)}get regex(){let e=`_regex`;return this[e]?this[e]:this._make(v,e)}get checkRegex(){let e=`_checkRegex`;return this[e]?this[e]:this._make(te,e)}_make(e,t){let n=this.regexPrefix.replace(_,ne[e]),r=this.ignoreCase?new RegExp(n,`i`):new RegExp(n);return f(this,t,r)}};let ce=({pattern:e,mark:t},n)=>{let r=!1,i=e;i.indexOf(`!`)===0&&(r=!0,i=i.substr(1)),i=i.replace(a,`!`).replace(o,`#`);let s=re(i);return new se(e,t,i,n,r,s)};var le=class{constructor(e){this._ignoreCase=e,this._rules=[]}_add(e){if(e&&e[d]){this._rules=this._rules.concat(e._rules._rules),this._added=!0;return}if(ie(e)&&(e={pattern:e}),ae(e.pattern)){let t=ce(e,this._ignoreCase);this._added=!0,this._rules.push(t)}}add(e){return this._added=!1,n(ie(e)?oe(e):e).forEach(this._add,this),this._added}test(e,t,n){let r=!1,i=!1,a;this._rules.forEach(o=>{let{negative:s}=o;i===s&&r!==i||s&&!r&&!i&&!t||o[n].test(e)&&(r=!s,i=s,a=s?void 0:o)});let o={ignored:r,unignored:i};return a&&(o.rule=a),o}};let ue=(e,t)=>{throw new t(e)},y=(e,t,n)=>ie(e)?e?!y.isNotRelative(e)||n(`path should be a \`path.relative()\`d string, but got "${t}"`,RangeError):n(`path must not be empty`,TypeError):n(`path must be a string, but got \`${t}\``,TypeError),de=e=>c.test(e);y.isNotRelative=de,y.convert=e=>e;var fe=class{constructor({ignorecase:e=!0,ignoreCase:t=e,allowRelativePaths:n=!1}={}){f(this,d,!0),this._rules=new le(t),this._strictPathCheck=!n,this._initCache()}_initCache(){this._ignoreCache=Object.create(null),this._testCache=Object.create(null)}add(e){return this._rules.add(e)&&this._initCache(),this}addPattern(e){return this.add(e)}_test(e,t,n,r){let i=e&&y.convert(e);return y(i,e,this._strictPathCheck?ue:m),this._t(i,t,n,r)}checkIgnore(e){if(!l.test(e))return this.test(e);let t=e.split(`/`).filter(Boolean);if(t.pop(),t.length){let e=this._t(t.join(`/`)+`/`,this._testCache,!0,t);if(e.ignored)return e}return this._rules.test(e,!1,te)}_t(e,t,n,r){if(e in t)return t[e];if(r||=e.split(`/`).filter(Boolean),r.pop(),!r.length)return t[e]=this._rules.test(e,n,v);let i=this._t(r.join(`/`)+`/`,t,n,r);return t[e]=i.ignored?i:this._rules.test(e,n,v)}ignores(e){return this._test(e,this._ignoreCache,!1).ignored}createFilter(){return e=>!this.ignores(e)}filter(e){return n(e).filter(this.createFilter())}test(e){return this._test(e,this._testCache,!0)}};let pe=e=>new fe(e),me=e=>y(e&&y.convert(e),e,m),he=()=>{y.convert=e=>/^\\\\\?\\/.test(e)||/["<>|\u0000-\u001F]+/u.test(e)?e:e.replace(/\\/g,`/`);let e=/^[a-z]:\//i;y.isNotRelative=t=>e.test(t)||de(t)};typeof process<`u`&&process.platform===`win32`&&he(),t.exports=pe,pe.default=pe,t.exports.isPathValid=me,f(t.exports,Symbol.for(`setupWindows`),he)}))();const Wp={"pi.session.id":{type:`string`,required:!0,cardinality:`high`,description:`Session id`},"pi.lane.name":{type:`string`,required:!0,cardinality:`high`,description:`Lane name`},"pi.operation.id":{type:`string`,required:!0,cardinality:`high`,description:`Durable operation id`},"pi.operation.recovery":{type:`boolean`,required:!0,description:`Whether this invocation resumes durable work`}},Gp={"pi.error.code":{type:`string`,cardinality:`low`,description:`Stable operation error code`},"pi.error.type":{type:`string`,cardinality:`low`,description:`Low-cardinality operation error class`}};({...Wp}),{...Gp},{...Wp},{...Gp},{...Wp},{...Gp},globalThis.Buffer,j({command:R({description:`Bash command to execute`}),timeout:Lt(Zn({description:`Timeout in seconds (optional, no default timeout)`}))});const Kp=j({oldText:R({description:`Exact text for one targeted replacement. It must be unique in the original file and must not overlap with any other edits[].oldText in the same call.`}),newText:R({description:`Replacement text for this targeted edit.`})},{});j({path:R({description:`Path to the file to edit (relative or absolute)`}),edits:xt(Kp,{description:`One or more targeted replacements. Each edit is matched against the original file, not incrementally. Do not include overlapping or nested edits. If two changes touch the same block or nearby lines, merge them into one edit instead.`})},{}),j({path:R({description:`Path to the file to read (relative or absolute)`}),offset:Lt(Zn({description:`Line number to start reading from (1-indexed)`})),limit:Lt(Zn({description:`Maximum number of lines to read`}))}),j({path:R({description:`Path to the file to write (relative or absolute)`}),content:R({description:`Content to write to the file`})});function qp(){return a()?`extension-direct`:s()?`extension-delegate`:globalThis.__slicc_connect_mode?`connect`:`node-rest`}function Jp(){return qp()===`node-rest`}const Yp=l({portName:`secrets.crud`,panelRpcOp:`secrets-bridge`,timeoutMs:1e4,onUnavailable:`resolve-undefined`,makeError:e=>Error(e),logNamespace:`secrets-bridge`,toPortMessage:({type:e,payload:t})=>({type:e,...t}),toPanelRpcPayload:({type:e,payload:t})=>({type:e,payload:t})});function Xp(e,t){return Yp({type:e,payload:t})}const Zp=n(`secret-scrub`),Qp=`[tool output withheld: secret scrub unavailable]`,$p=async e=>e;function em(){let e=qp();return e===`extension-direct`?async e=>{if(!e)return e;try{let t=await new Promise(t=>{chrome.runtime.sendMessage({type:`secrets.scrub-tool-result`,text:e},e=>t(e??{}))});return t.error?(Zp.debug(`SW scrub-tool-result returned error`),Qp):typeof t.text==`string`?t.text:Qp}catch{return Zp.debug(`SW scrub-tool-result failed`),Qp}}:e===`extension-delegate`?async e=>{if(!e)return e;try{let t=await Xp(`secrets.scrub-tool-result`,{text:e});return t?.error?(Zp.debug(`Bridge scrub-tool-result returned error`),Qp):typeof t?.text==`string`?t.text:Qp}catch{return Zp.debug(`Bridge scrub-tool-result failed`),Qp}}:e===`connect`?$p:async e=>{if(!e)return e;try{let t=await fetch(o(`/api/secrets/scrub`),{method:`POST`,headers:c({"content-type":`application/json`}),body:JSON.stringify({text:e})});if(!t.ok)return Zp.debug(`Server scrub-tool-result returned non-ok`,{status:t.status}),e;let n=await t.json();return typeof n.text==`string`?n.text:e}catch(t){return Zp.debug(`Server scrub-tool-result failed`,{error:t instanceof Error?t.message:String(t)}),e}}}const tm=[];function nm(e){return tm.push(e),e}function rm(e){let t=tm.lastIndexOf(e);t!==-1&&tm.splice(t,1)}function im(){return tm.length>0?tm[tm.length-1]:null}const am=n(`tool-ui`),om=`__mounted`,sm=new class{pending=new Map;idCounter=0;mounted=new Set;mountWaiters=new Map;generateId(){return`tool-ui-${++this.idCounter}-${Date.now().toString(36)}`}register(e,t,n,r){this.mounted.delete(e),this.pending.set(e,{request:t,resolve:n,reject:r}),am.info(`Tool UI registered`,{id:e})}async handleAction(e,t){let n=this.pending.get(e);if(!n){am.warn(`Action for unknown tool UI`,{id:e,action:t.action});return}am.info(`Tool UI action`,{id:e,action:t.action});try{let e;e=n.request.onAction?await n.request.onAction(t.action,t.data):t,n.resolve(e)}catch(e){n.reject(e instanceof Error?e:Error(String(e)))}finally{this.pending.delete(e),this.clearMountWaiter(e,`tool ui completed`)}}cancel(e,t=`cancelled`){let n=this.pending.get(e);n&&(n.reject(Error(t)),this.pending.delete(e),am.info(`Tool UI cancelled`,{id:e,reason:t})),this.clearMountWaiter(e,t),this.mounted.delete(e)}cancelAll(e=`cancelled`){let t=this.pending.size;for(let[t,n]of this.pending)n.reject(Error(e));this.pending.clear();for(let t of[...this.mountWaiters.keys()])this.clearMountWaiter(t,e);this.mounted.clear(),t>0&&am.info(`All tool UIs cancelled`,{reason:e,count:t})}isPending(e){return this.pending.has(e)}getPendingIds(){return[...this.pending.keys()]}markMounted(e){this.mounted.add(e);let t=this.mountWaiters.get(e);t&&(clearTimeout(t.timeoutHandle),this.mountWaiters.delete(e),t.resolve())}waitForMount(e,t){return this.mounted.has(e)?Promise.resolve():new Promise((n,r)=>{let i=setTimeout(()=>{this.mountWaiters.delete(e),r(Error(`tool UI ${e} was not mounted by any panel within ${t}ms — check the chat panel`))},t);this.mountWaiters.set(e,{resolve:n,reject:r,timeoutHandle:i})})}clearMountWaiter(e,t){let n=this.mountWaiters.get(e);n&&(clearTimeout(n.timeoutHandle),this.mountWaiters.delete(e),n.reject(Error(t)))}};async function cm(e,t){let n=e.id??sm.generateId(),r,i,a=new Promise((e,t)=>{r=e,i=t});return sm.register(n,e,r,i),t?t({content:[{type:`tool_ui`,requestId:n,html:e.html}]}):am.warn(`showToolUI called without onUpdate callback — UI may not render`),a.finally(()=>{t&&t({content:[{type:`tool_ui_done`,requestId:n}]})})}async function lm(e){let t=im();return t?cm(e,t.onUpdate):(am.warn(`showToolUIFromContext called without execution context`),null)}const um=n(`image-processor`),dm=3932160;function fm(e){let t=e.replace(/[\t\n\f\r ]/g,``),n=t.length%4;return n===2?`${t}==`:n===3?`${t}=`:t}function pm(e,t){let n=i(fm(e.slice(0,t)));return new DataView(n.buffer,n.byteOffset,n.byteLength)}function mm(e,t){return e>0&&t>0?{width:e,height:t}:null}function hm(e){if(e.length<32)return null;let t=pm(e,32);return mm(t.getUint32(16,!1),t.getUint32(20,!1))}function gm(e){if(e.length<16)return null;let t=pm(e,16);return mm(t.getUint16(6,!0),t.getUint16(8,!0))}function _m(e){let t=pm(e,Math.min(87384,e.length));for(let e=0;e<t.byteLength-8;e++){if(t.getUint8(e)!==255)continue;let n=t.getUint8(e+1);if(n===192||n===194)return mm(t.getUint16(e+7,!1),t.getUint16(e+5,!1))}return null}function vm(e,t){try{let n=fm(e);if(t===`image/png`)return hm(n);if(t===`image/gif`)return gm(n);if(t===`image/jpeg`)return _m(n)}catch{}return null}async function ym(e){if(!u(e.mimeType))return um.warn(`Unsupported image format`,{mimeType:e.mimeType}),{type:`text`,text:`[Image removed: unsupported format "${e.mimeType}". Supported: JPEG, PNG, GIF, WebP]`};let t=e.data.length,n=vm(e.data,e.mimeType);if(!(t>5242880||n!==null&&(n.width>8e3||n.height>8e3)||n!==null&&Math.max(n.width,n.height)>1568))return e;um.info(`Image needs processing`,{base64Size:t,dimensions:n?`${n.width}x${n.height}`:`unknown`,reason:t>5242880?`size`:`dimensions`});let a,o;try{let e=await import(`./magick-wasm-nq7J_5Mo.js`).then(e=>e.r);a=e.getMagick,o=e.MIME_TO_MAGICK_FORMAT}catch(e){return um.error(`ImageMagick WASM module unavailable`,{error:e instanceof Error?e.message:String(e)}),{type:`text`,text:`[Image removed: resize service unavailable (ImageMagick WASM could not be loaded)]`}}let s;try{s=await a()}catch(e){return um.error(`ImageMagick WASM initialization failed`,{error:e instanceof Error?e.message:String(e)}),{type:`text`,text:`[Image removed: resize service unavailable (WASM init failed)]`}}try{let n=i(fm(e.data)),a={data:null,mime:e.mimeType};if(await s.ImageMagick.read(n,async t=>{let n=t.width,r=t.height,i=Math.max(n,r);if(i>1568){let e=1568/i,a=Math.round(n*e),o=Math.round(r*e);t.resize(a,o),um.info(`Resized image`,{from:`${n}x${r}`,to:`${a}x${o}`})}let s=o[e.mimeType]||`JPEG`;t.write(s,e=>{a.data=new Uint8Array(e)}),a.data&&a.data.length>dm&&s!==`JPEG`?(um.info(`Still over 5MB, compressing to JPEG q80`),t.quality=80,t.write(`JPEG`,e=>{a.data=new Uint8Array(e)}),a.mime=`image/jpeg`):a.data&&a.data.length>dm&&(um.info(`Still over 5MB as JPEG, reducing quality to 60`),t.quality=60,t.write(`JPEG`,e=>{a.data=new Uint8Array(e)}))}),!a.data)return um.warn(`ImageMagick produced no output`),{type:`text`,text:`[Image removed: could not be processed (empty output from resize)]`};if(a.data.length>dm)return um.warn(`Image still over 5MB after resize+compress`,{size:a.data.length}),{type:`text`,text:`[Image removed: still ${Math.round(a.data.length/1024/1024*10)/10}MB after resize and compression, exceeds 5MB API limit]`};let c=r(a.data);return um.info(`Image processed successfully`,{originalBase64:t,newBase64:c.length,mimeType:a.mime}),{type:`image`,data:c,mimeType:a.mime}}catch(n){return um.error(`Image data processing failed (corrupt or unreadable)`,{mimeType:e.mimeType,estimatedBytes:t,error:n instanceof Error?n.message:String(n)}),{type:`text`,text:`[Image removed: image data could not be processed (${n instanceof Error?n.message:`corrupt or unreadable`})]`}}}const bm=n(`tool-adapter`);function xm(e){let t=[],n=0;for(let r of d(e)){if(r.kind===`inert`||!r.parsed)continue;let i=e.slice(n,r.index);i.trim()&&t.push({type:`text`,text:i.trimEnd()}),t.push({type:`image`,mimeType:r.parsed.mimeType,data:r.parsed.data}),n=r.index+r.marker.length}let r=e.slice(n);return(r.trim()||t.length===0)&&t.push({type:`text`,text:r||e}),t}async function Sm(e){let t=xm(e),n=[];for(let e of t)e.type===`image`?n.push(await ym(e)):n.push(e);return n}function Cm(e,t,n,r){if(!r)return{tracked:null,effectiveSignal:n};let i=r.processManager.spawn({kind:`tool`,argv:[e.name,...Am(t)],owner:r.owner,ppid:r.getParentPid?.()});n?.aborted?r.processManager.signal(i.pid,`SIGINT`):n&&n.addEventListener(`abort`,()=>r.processManager.signal(i.pid,`SIGINT`),{once:!0});let a=r.processManager.onSignal((e,t)=>{e.pid===i.pid&&t===`SIGKILL`&&r.processManager.exit(i.pid,null)});return{tracked:{record:i,manager:r.processManager,unsubscribeKill:a},effectiveSignal:i.abort.signal}}function wm(e,t){e&&e.manager.exit(e.record.pid,t)}async function Tm(e,t,n){if(!n||typeof e!=`string`||e.length===0)return e;try{return await n.scrubToolResult(e)}catch(n){return bm.warn(`Tool-result scrub failed, falling back to unscrubbed content`,{tool:t,error:n instanceof Error?n.message:String(n)}),e}}async function Em(e,t){try{return await Sm(e)}catch(n){return bm.warn(`Image processing failed, falling back to raw content`,{tool:t,error:n instanceof Error?n.message:String(n)}),xm(e)}}async function Dm(e,t,n,r){let i=n?.currentGate();if(!i)return!0;if(r?.aborted)return!1;try{return await i.approve(e.name,t)&&r?.aborted!==!0}catch(t){return bm.warn(`Tool-call gate threw — refusing the call`,{tool:e.name,error:t instanceof Error?t.message:String(t)}),!1}}function Om(e,t,n,r){return{name:e.name,label:e.name,description:e.description,parameters:e.inputSchema,async execute(i,a,o,s){let c;if(s&&(c=nm({onUpdate:s,toolName:e.name,toolCallId:i})),!await Dm(e,a,r,o))return c&&rm(c),{content:[{type:`text`,text:`${e.name}: not approved (guest-caused turn).`}],details:{isError:!0}};let l=Cm(e,a,o,t);try{let t=await e.execute(a??{},l.effectiveSignal),r=await Em(await Tm(t.content,e.name,n),e.name);return wm(l.tracked,+!!t.isError),{content:r,details:{isError:t.isError}}}catch(e){throw wm(l.tracked,l.tracked?.record.abort.signal.aborted?null:1),e}finally{c&&rm(c),l.tracked?.unsubscribeKill()}}}}function km(e,t,n,r){return e.map(e=>Om(e,t,n,r))}function Am(e){if(typeof e!=`object`||!e)return[];let t=e;for(let e of[`command`,`file_path`,`path`,`pattern`,`url`,`key`,`name`,`query`,`message`]){let n=t[e];if(typeof n==`string`&&n.length>0)return[n]}for(let e of Object.values(t))if(typeof e==`string`&&e.length>0)return[e];return[]}export{j as $,R as A,je as At,Bn as B,Oe as Bt,ji as C,me as Ct,B as D,we as Dt,yr as E,he as Et,Wn as F,ve as Ft,nn as G,In as H,ue as Ht,Gn as I,ye as It,N as J,tn as K,Kn as L,be as Lt,Qn as M,ge as Mt,Yn as N,_e as Nt,z as O,Ce as Ot,L as P,b as Pt,M as Q,qn as R,xe as Rt,ki as S,x as St,Cr as T,Se as Tt,jn as U,Ln as V,w as Vt,An as W,Kt as X,Qt as Y,Ut as Z,Ri as _,y as _t,lm as a,wt as at,Ei as b,pe as bt,em as c,xt as ct,qp as d,st as dt,Rt as et,uf as f,Ie as ft,qa as g,C as gt,Hd as h,Ne as ht,cm as i,Dt as it,er as j,Ee as jt,tr as k,Ae as kt,Xp as l,pt as lt,ef as m,Me as mt,Am as n,At as nt,sm as o,St as ot,of as p,Fe as pt,$t as q,om as r,kt as rt,im as s,k as st,km as t,Ft as tt,Jp as u,lt as ut,Li as v,de as vt,V as w,Te as wt,Ai as x,Ve as xt,Mi as y,fe as yt,I as z,Pe as zt};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{n as t}from"./browser-q8slJ96R.js";import{t as n}from"./subcommand-flags-BZi7j78Q.js";import{t as r}from"./subcommand-help-CgO7wRS5.js";var i=e({createCostCommand:()=>g,frozenSessionToCostData:()=>l,registerSessionCostsProvider:()=>s});const a=[`--all`,`--json`];let o=null;function s(e){o=e}function c(e){return typeof e==`number`&&Number.isFinite(e)?e:0}function l(e){let t=Array.isArray(e.models)?e.models:[],n=t.map(e=>typeof e?.model==`string`?e.model:``).filter(Boolean),r=Number.isFinite(e.cost?.total);return{name:typeof e.title==`string`&&e.title.length>0?e.title:e.filename,type:`cone`,model:n[0]??`-`,models:n,source:`frozen`,costAvailable:r,usage:{input:null,output:null,cacheRead:null,cacheWrite:null,totalTokens:t.reduce((e,t)=>e+c(t?.tokens),0),cost:{input:c(e.cost?.input),output:c(e.cost?.output),cacheRead:c(e.cost?.cacheRead),cacheWrite:c(e.cost?.cacheWrite),total:c(e.cost?.total)}},turns:t.reduce((e,t)=>e+c(t?.turns),0)}}function u(){return`cost - show session cost breakdown
|
|
2
|
+
|
|
3
|
+
Usage: cost [options]
|
|
4
|
+
|
|
5
|
+
Options:
|
|
6
|
+
--all Include dropped scoops and frozen sessions
|
|
7
|
+
--json Output as JSON (for programmatic use)
|
|
8
|
+
-h, --help Show this help message
|
|
9
|
+
`}function d(e){if(e===null)return`-`;let t=e/1e6;return t<.01?`<0.01`:t.toFixed(2)}function f(e){return`$${e.toFixed(2)}`}function p(e,t){if(!t||t===0)return`-`;let n=t/36e5;return n===0?`-`:`$${(e/n).toFixed(2)}`}function m(e,t){return e.length<=t?e:e.slice(0,t-3)+`...`}function h(e){let t=[];t.push(`Session Cost Breakdown:
|
|
10
|
+
`);let n=` `+`Agent`.padEnd(16)+`Source`.padEnd(10)+`Model`.padEnd(18)+`MTok (in/out)`.padEnd(15)+`Cache (r/w)`.padEnd(15)+`Cost`.padStart(10)+`$/hour`.padStart(10),r=` `+`─`.repeat(94);t.push(n),t.push(r);let i=0,a=0,o=0,s=0,c=0;for(let n of e){let e=m(n.name,16).padEnd(16),r=n.source.padEnd(10),l=m(n.model,18).padEnd(18),u=`${d(n.usage.input).padStart(5)} / ${d(n.usage.output).padStart(5)}`.padEnd(15),h=`${d(n.usage.cacheRead).padStart(5)} / ${d(n.usage.cacheWrite).padStart(5)}`.padEnd(15),g=(n.costAvailable===!1?`-`:f(n.usage.cost.total)).padStart(10),_=n.costAvailable===!1?`-`.padStart(10):p(n.usage.cost.total,n.activeTimeMs).padStart(10);t.push(` ${e}${r}${l}${u}${h}${g}${_}`),i=i===null||n.usage.input===null?null:i+n.usage.input,a=a===null||n.usage.output===null?null:a+n.usage.output,o=o===null||n.usage.cacheRead===null?null:o+n.usage.cacheRead,s=s===null||n.usage.cacheWrite===null?null:s+n.usage.cacheWrite,c=c===null||n.costAvailable===!1?null:c+n.usage.cost.total}t.push(r);let l=`Total`.padEnd(16),u=``.padEnd(10),h=``.padEnd(18),g=`${d(i).padStart(5)} / ${d(a).padStart(5)}`.padEnd(15),_=`${d(o).padStart(5)} / ${d(s).padStart(5)}`.padEnd(15),v=(c===null?`-`:f(c)).padStart(10),y=``.padStart(10);return t.push(` ${l}${u}${h}${g}${_}${v}${y}`),t.join(`
|
|
11
|
+
`)+`
|
|
12
|
+
`}function g(){return t(`cost`,async e=>{if(r(e))return{stdout:u(),stderr:``,exitCode:0};let t=n(e,{bool:a});if(`error`in t)return{stdout:``,stderr:`cost: ${t.error}\n`,exitCode:1};if(!o)return{stdout:``,stderr:`Cost data not available.
|
|
13
|
+
`,exitCode:1};let i=t.bools.has(`--all`)?`all`:`live`,s=await o(i);return s.length===0?{stdout:`No session cost data yet.
|
|
14
|
+
`,stderr:``,exitCode:0}:t.bools.has(`--json`)?{stdout:JSON.stringify(s,null,2)+`
|
|
15
|
+
`,stderr:``,exitCode:0}:{stdout:h(s),stderr:``,exitCode:0}})}export{s as i,g as n,l as r,i as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./logger-LESFN7Hj.js";import{t}from"./agent-bridge-
|
|
1
|
+
import{t as e}from"./logger-LESFN7Hj.js";import{t}from"./agent-bridge-bZCbGUcH.js";import{x as n}from"./record-BwBrkUBq.js";const r=e(`directed-approval`);function i(e,t){if(e.kind===`user`)return a(`the user tier is not a directed approval`);if(e.kind===`agent`)return a(`agent approvals are not enqueued to a unit`);let r=e.unitJid;if(!t.scoops.has(r))return a(`the requesting unit is not registered`);let i=t.ownerRootOf(r);if(!i)return a(`no owning cone for the requesting unit`);let o=e.kind===`cone`?i:[...t.scoops.values()].find(t=>t.parentJid===i.jid&&(t.name===e.scoopName||t.folder===e.scoopName));return o?n(o).canResolveApprovals?{ok:!0,requesterJid:r,approver:o}:a(`the named approver cannot resolve approvals`):a(`delegated approver not found under this cone`)}function a(e){return r.warn(`Directed approval failing closed`,{reason:e}),{ok:!1,reason:e}}const o={decision:`deny`};async function s(e,n){let a=e.approver;if(a?.kind===`agent`){let i=globalThis[t];if(!i)return r.warn(`No agent bridge available for an approver agent — denying`),o;let{approverRunnerFor:s}=await import(`./approver-agent-BUwJ9xk5.js`),c=n.getSharedFs(),l=await s({spawn:e=>i.spawn(e),readSharedFile:async e=>{if(!c)return null;try{let t=await c.readFile(e,{encoding:`utf-8`});return typeof t==`string`?t:null}catch{return null}},findUnit:e=>{let t=n.scoops.get(e);return t?{workspace:n.workspaceFor(t),folder:t.folder}:void 0}})({kind:e.kind===`guest-tool`?`guest-tool`:`guest-message`,requester:e.requester??`an unidentified requester`,detail:e.detail},a.unitJid);return r.info(`Approver agent verdict`,{decision:l.decision,reason:l.reason}),l.decision===`allow`?{decision:`allow`}:o}if(a&&a.kind!==`user`){let t=i(a,n);return t.ok?n.enqueue(t.requesterJid,e,{approver:t.approver}):o}return n.approveAsUser(e)}export{s as runDirectedApproval};
|
package/dist/ui/assets/{ensure-speech-assets-CmarhXRU.js → ensure-speech-assets-BBbl4aXA.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./logger-LESFN7Hj.js";import"./proxied-fetch-BduXImRw.js";import{t}from"./runtime-env-DadgceZk.js";import"./runtime-env-DVGQx9p3.js";import"./shared-
|
|
1
|
+
import{t as e}from"./logger-LESFN7Hj.js";import"./proxied-fetch-BduXImRw.js";import{t}from"./runtime-env-DadgceZk.js";import"./runtime-env-DVGQx9p3.js";import"./shared-URkGo6WP.js";import{f as n,p as r,r as i}from"./installer-CPS-l1D-.js";e(`speech:espeak`);const a=[`ort-wasm-simd-threaded.jsep.mjs`,`https://${["cdn","jsdelivr","net"].join(".")}/npm/onnxruntime-web@1.26.0-dev.20260416-b7804b056c/dist/ort-wasm-simd-threaded.jsep.wasm`,`ort-wasm-simd-threaded.mjs`,`https://${["cdn","jsdelivr","net"].join(".")}/npm/onnxruntime-web@1.26.0-dev.20260416-b7804b056c/dist/ort.wasm`,`ort-wasm-simd-threaded.asyncify.mjs`,`https://${["cdn","jsdelivr","net"].join(".")}/npm/onnxruntime-web@1.26.0-dev.20260416-b7804b056c/dist/ort-wasm-simd-threaded.asyncify.wasm`],o=e(`speech:ensure-assets`),s=`onnxruntime-web`,c=`espeak-ng`,l=[`espeak-ng.js`,`espeak-ng.wasm`],u=`/workspace`,d=t,f=a.filter(e=>!/\.(asyncify|jspi)\./.test(e));async function p(e,t){if((await Promise.all(f.map(t=>e.fs.exists(`/workspace/node_modules/onnxruntime-web/dist/${t}`)))).every(Boolean))return t?.({asset:s,phase:`present`}),!1;t?.({asset:s,phase:`staging`});let{errors:n}=await i([s],{fs:e.fs,fetch:e.fetch,cwd:u});if(n.length>0)throw Error(`failed to stage ${s} wasm runtime: ${n[0].error.message}`);return t?.({asset:s,phase:`done`}),!0}async function m(e,t){if((await Promise.all(l.map(t=>e.fs.exists(`/workspace/node_modules/espeak-ng/dist/${t}`)))).every(Boolean))return t?.({asset:c,phase:`present`}),!1;t?.({asset:c,phase:`staging`});let{errors:n}=await i([c],{fs:e.fs,fetch:e.fetch,cwd:u});if(n.length>0)throw Error(`failed to stage ${c} wasm: ${n[0].error.message}`);return t?.({asset:c,phase:`done`}),!0}async function h(e,t){try{return await m(e,t)}catch(e){return o.warn(`optional espeak-ng staging failed; non-English Kokoro voices may fall back`,e),!1}}async function g(e,t,i){let a=r(t,null,u),o=0,s=await n({fetch:e.fetch,fs:e.fs,repo:t,targetDir:a,progress:{onListed:({files:e,totalBytes:n})=>i?.({asset:t,phase:`listing`,filesLoaded:0,filesTotal:e.length,bytesLoaded:0,bytesTotal:n}),onFile:e=>{o+=e.bytes,i?.({asset:t,phase:e.status,file:e.file,filesLoaded:e.index,filesTotal:e.total,bytesLoaded:o})}}});return i?.({asset:t,phase:`done`,filesLoaded:s.files.length,filesTotal:s.files.length,bytesLoaded:o,bytesTotal:o}),{repo:t,downloaded:s.downloaded,skipped:s.skipped}}async function _(e,t){if(d())return{skipped:!0,ortStaged:!1,espeakStaged:!1,repos:[]};let n=await p(e,t),r=e.repos??[`onnx-community/whisper-tiny`,`onnx-community/Kokoro-82M-v1.0-ONNX`],i=[];for(let n of r)i.push(await g(e,n,t));let a=await h(e,t);return o.info(`speech assets staged`,{ortStaged:n,espeakStaged:a,repos:i.length}),{skipped:!1,ortStaged:n,espeakStaged:a,repos:i}}export{_ as ensureSpeechAssetsStaged};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{i as e,t}from"./rolldown-runtime-Dd_uD5pT.js";import{a as n}from"./path-utils-DNJG-zQf.js";import{C as r,p as i,t as a,w as o}from"./shared-
|
|
1
|
+
import{i as e,t}from"./rolldown-runtime-Dd_uD5pT.js";import{a as n}from"./path-utils-DNJG-zQf.js";import{C as r,p as i,t as a,w as o}from"./shared-URkGo6WP.js";import{n as s}from"./wasm-compiler-Ct7QZURL.js";var c=e(t(((e,t)=>{(e=>{var t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.prototype.hasOwnProperty,a=(e,n)=>{for(var r in n)t(e,r,{get:n[r],enumerable:!0})},o=(e,a,o,s)=>{if(a&&typeof a==`object`||typeof a==`function`)for(let c of r(a))!i.call(e,c)&&c!==o&&t(e,c,{get:()=>a[c],enumerable:!(s=n(a,c))||s.enumerable});return e},s=e=>o(t({},`__esModule`,{value:!0}),e),c=(e,t,n)=>new Promise((r,i)=>{var a=e=>{try{s(n.next(e))}catch(e){i(e)}},o=e=>{try{s(n.throw(e))}catch(e){i(e)}},s=e=>e.done?r(e.value):Promise.resolve(e.value).then(a,o);s((n=n.apply(e,t)).next())}),l={};a(l,{analyzeMetafile:()=>xe,analyzeMetafileSync:()=>Te,build:()=>_e,buildSync:()=>Se,context:()=>ve,default:()=>je,formatMessages:()=>be,formatMessagesSync:()=>we,initialize:()=>ke,stop:()=>Ee,transform:()=>ye,transformSync:()=>Ce,version:()=>ge}),e.exports=s(l);function u(e){let t=e=>{if(e===null)n.write8(0);else if(typeof e==`boolean`)n.write8(1),n.write8(+e);else if(typeof e==`number`)n.write8(2),n.write32(e|0);else if(typeof e==`string`)n.write8(3),n.write(p(e));else if(e instanceof Uint8Array)n.write8(4),n.write(e);else if(e instanceof Array){n.write8(5),n.write32(e.length);for(let n of e)t(n)}else{let r=Object.keys(e);n.write8(6),n.write32(r.length);for(let i of r)n.write(p(i)),t(e[i])}},n=new f;return n.write32(0),n.write32(e.id<<1|!e.isRequest),t(e.value),_(n.buf,n.len-4,0),n.buf.subarray(0,n.len)}function d(e){let t=()=>{switch(n.read8()){case 0:return null;case 1:return!!n.read8();case 2:return n.read32();case 3:return m(n.read());case 4:return n.read();case 5:{let e=n.read32(),r=[];for(let n=0;n<e;n++)r.push(t());return r}case 6:{let e=n.read32(),r={};for(let i=0;i<e;i++)r[m(n.read())]=t();return r}default:throw Error(`Invalid packet`)}},n=new f(e),r=n.read32(),i=!(r&1);r>>>=1;let a=t();if(n.ptr!==e.length)throw Error(`Invalid packet`);return{id:r,isRequest:i,value:a}}var f=class{constructor(e=new Uint8Array(1024)){this.buf=e,this.len=0,this.ptr=0}_write(e){if(this.len+e>this.buf.length){let t=new Uint8Array((this.len+e)*2);t.set(this.buf),this.buf=t}return this.len+=e,this.len-e}write8(e){let t=this._write(1);this.buf[t]=e}write32(e){let t=this._write(4);_(this.buf,e,t)}write(e){let t=this._write(4+e.length);_(this.buf,e.length,t),this.buf.set(e,t+4)}_read(e){if(this.ptr+e>this.buf.length)throw Error(`Invalid packet`);return this.ptr+=e,this.ptr-e}read8(){return this.buf[this._read(1)]}read32(){return g(this.buf,this._read(4))}read(){let e=this.read32(),t=new Uint8Array(e),n=this._read(t.length);return t.set(this.buf.subarray(n,n+e)),t}},p,m,h;if(typeof TextEncoder<`u`&&typeof TextDecoder<`u`){let e=new TextEncoder,t=new TextDecoder;p=t=>e.encode(t),m=e=>t.decode(e),h=`new TextEncoder().encode("")`}else if(typeof Buffer<`u`)p=e=>Buffer.from(e),m=e=>{let{buffer:t,byteOffset:n,byteLength:r}=e;return Buffer.from(t,n,r).toString()},h=`Buffer.from("")`;else throw Error(`No UTF-8 codec found`);if(!(p(``)instanceof Uint8Array))throw Error(`Invariant violation: "${h} instanceof Uint8Array" is incorrectly false
|
|
2
2
|
|
|
3
3
|
This indicates that your JavaScript environment is broken. You cannot use
|
|
4
4
|
esbuild in this environment because esbuild relies on this invariant. This
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import{n as e,r as t}from"./panel-rpc-BPwAqRch.js";import{t as n}from"./runtime-env-DadgceZk.js";import{a as r}from"./path-utils-DNJG-zQf.js";import"./runtime-env-Dtj99aNH.js";import{n as i}from"./browser-q8slJ96R.js";import{p as a,t as o,w as s}from"./shared-URkGo6WP.js";import{t as c}from"./permissions-surface-registry-BqPdUk9w.js";function l(){return n()}function u(e){return{bytes:m(e.bytesBase64),mimeType:e.mimeType??`application/octet-stream`,width:e.width??0,height:e.height??0,...typeof e.durationMs==`number`?{durationMs:e.durationMs}:{}}}async function d(e,t={}){if(!n())throw Error(`media capture popup requires the extension runtime`);let r=t.timeoutMs??3e5,i=f(),a=p(JSON.stringify({...e,requestId:i})),o=chrome.runtime.getURL(`capture-popup.html?req=${a}`);return await new Promise((e,t)=>{let n=!1,a=()=>{if(!n){n=!0,clearTimeout(c);try{chrome.runtime.onMessage.removeListener(s)}catch{}}},s=n=>{let r=n;if(r?.source===`capture-popup`&&r.requestId===i){if(a(),r.ok&&r.bytesBase64!==void 0)try{e(u(r))}catch(e){t(e instanceof Error?e:Error(String(e)))}else t(Error(r.error||`media capture failed`))}},c=setTimeout(()=>{try{chrome.runtime.sendMessage({target:`capture-popup`,type:`capture-abort`,requestId:i})}catch{}a(),t(Error(`media capture timed out waiting for the capture window`))},r);chrome.runtime.onMessage.addListener(s);try{chrome.runtime.sendMessage({type:`capture-open-window`,url:o,requestId:i})}catch(e){a(),t(e instanceof Error?e:Error(String(e)))}})}function f(){return typeof crypto<`u`&&typeof crypto.randomUUID==`function`?`cap-${crypto.randomUUID()}`:`cap-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,12)}`}function p(e){let t=new TextEncoder().encode(e),n=``,r=32768;for(let e=0;e<t.length;e+=r)n+=String.fromCharCode(...t.subarray(e,e+r));return btoa(n).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}function m(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}var h;(function(e){e.LOAD=`LOAD`,e.EXEC=`EXEC`,e.FFPROBE=`FFPROBE`,e.WRITE_FILE=`WRITE_FILE`,e.READ_FILE=`READ_FILE`,e.DELETE_FILE=`DELETE_FILE`,e.RENAME=`RENAME`,e.CREATE_DIR=`CREATE_DIR`,e.LIST_DIR=`LIST_DIR`,e.DELETE_DIR=`DELETE_DIR`,e.ERROR=`ERROR`,e.DOWNLOAD=`DOWNLOAD`,e.PROGRESS=`PROGRESS`,e.LOG=`LOG`,e.MOUNT=`MOUNT`,e.UNMOUNT=`UNMOUNT`})(h||={});const ee=(()=>{let e=0;return()=>e++})(),te=Error("ffmpeg is not loaded, call `await ffmpeg.load()` first"),g=Error(`called FFmpeg.terminate()`);var _=class{#e=null;#t={};#n={};#r=[];#i=[];loaded=!1;#a=()=>{this.#e&&(this.#e.onmessage=({data:{id:e,type:t,data:n}})=>{switch(t){case h.LOAD:this.loaded=!0,this.#t[e](n);break;case h.MOUNT:case h.UNMOUNT:case h.EXEC:case h.FFPROBE:case h.WRITE_FILE:case h.READ_FILE:case h.DELETE_FILE:case h.RENAME:case h.CREATE_DIR:case h.LIST_DIR:case h.DELETE_DIR:this.#t[e](n);break;case h.LOG:this.#r.forEach(e=>e(n));break;case h.PROGRESS:this.#i.forEach(e=>e(n));break;case h.ERROR:this.#n[e](n)}delete this.#t[e],delete this.#n[e]})};#o=({type:e,data:t},n=[],r)=>this.#e?new Promise((i,a)=>{let o=ee();this.#e&&this.#e.postMessage({id:o,type:e,data:t},n),this.#t[o]=i,this.#n[o]=a,r?.addEventListener(`abort`,()=>{a(new DOMException(`Message # ${o} was aborted`,`AbortError`))},{once:!0})}):Promise.reject(te);on(e,t){e===`log`?this.#r.push(t):e===`progress`&&this.#i.push(t)}off(e,t){e===`log`?this.#r=this.#r.filter(e=>e!==t):e===`progress`&&(this.#i=this.#i.filter(e=>e!==t))}load=({classWorkerURL:e,...t}={},{signal:n}={})=>(this.#e||(this.#e=e?new Worker(new URL(e,import.meta.url),{type:`module`}):new Worker(new URL(`/assets/worker-D1KsWRGg.js`,``+import.meta.url),{type:`module`}),this.#a()),this.#o({type:h.LOAD,data:t},void 0,n));exec=(e,t=-1,{signal:n}={})=>this.#o({type:h.EXEC,data:{args:e,timeout:t}},void 0,n);ffprobe=(e,t=-1,{signal:n}={})=>this.#o({type:h.FFPROBE,data:{args:e,timeout:t}},void 0,n);terminate=()=>{let e=Object.keys(this.#n);for(let t of e)this.#n[t](g),delete this.#n[t],delete this.#t[t];this.#e&&(this.#e.terminate(),this.#e=null,this.loaded=!1)};writeFile=(e,t,{signal:n}={})=>{let r=[];return t instanceof Uint8Array&&r.push(t.buffer),this.#o({type:h.WRITE_FILE,data:{path:e,data:t}},r,n)};mount=(e,t,n)=>this.#o({type:h.MOUNT,data:{fsType:e,options:t,mountPoint:n}},[]);unmount=e=>this.#o({type:h.UNMOUNT,data:{mountPoint:e}},[]);readFile=(e,t=`binary`,{signal:n}={})=>this.#o({type:h.READ_FILE,data:{path:e,encoding:t}},void 0,n);deleteFile=(e,{signal:t}={})=>this.#o({type:h.DELETE_FILE,data:{path:e}},void 0,t);rename=(e,t,{signal:n}={})=>this.#o({type:h.RENAME,data:{oldPath:e,newPath:t}},void 0,n);createDir=(e,{signal:t}={})=>this.#o({type:h.CREATE_DIR,data:{path:e}},void 0,t);listDir=(e,{signal:t}={})=>this.#o({type:h.LIST_DIR,data:{path:e}},void 0,t);deleteDir=(e,{signal:t}={})=>this.#o({type:h.DELETE_DIR,data:{path:e}},void 0,t)},v;(function(e){e.MEMFS=`MEMFS`,e.NODEFS=`NODEFS`,e.NODERAWFS=`NODERAWFS`,e.IDBFS=`IDBFS`,e.WORKERFS=`WORKERFS`,e.PROXYFS=`PROXYFS`})(v||={});const y=`0.12.10`,b=`@ffmpeg/core is not installed in node_modules: run \`${o} @ffmpeg/core@${y}\` (no network fallback)`,ne=[`dist/esm`];async function re(e,t,n){for(let r of ne){let i=`${e}/${r}`,a={core:`${i}/ffmpeg-core.js`,wasm:`${i}/ffmpeg-core.wasm`,worker:t===`@ffmpeg/core-mt`?`${i}/ffmpeg-core.worker.js`:null};if(await n.exists(a.core)&&await n.exists(a.wasm)&&!(a.worker&&!await n.exists(a.worker)))return a}return null}let x=null,S=null,C=[];function w(e){for(let t of e)try{URL.revokeObjectURL(t)}catch{}}async function T(e={}){return x||=ie(e.onProgress,e.ipk).catch(e=>{throw x=null,e}),x}async function ie(e,t){let n=e??(()=>{}),r=new _,i=await ae(t,n),a=[i.coreURL,i.wasmURL,i.workerURL,i.classWorkerURL].filter(e=>typeof e==`string`);n(`initializing ffmpeg-core...`);try{await r.load({coreURL:i.coreURL,wasmURL:i.wasmURL,...i.workerURL?{workerURL:i.workerURL}:{},...i.classWorkerURL?{classWorkerURL:i.classWorkerURL}:{}})}catch(e){throw w(a),e}return n(`ffmpeg ready`),S=r,C=a,r}async function E(e,t){if(t===void 0)return D(e,globalThis.crossOriginIsolated===!0);let n;try{n=await s(`${t}/package.json`,e.fromDir,e.reader)}catch{return null}if(n.type!==`file`)return null;let i=await re(r(n.path).dir,t,e.reader);if(!i)return null;try{let n=await e.reader.readFile(i.core),r=await e.readBytes(i.wasm),a=i.worker?await e.reader.readFile(i.worker):void 0;return{pkg:t,coreSource:n,wasmBytes:r,...a===void 0?{}:{workerSource:a}}}catch{return null}}async function D(e,t){if(t){let t=await E(e,`@ffmpeg/core-mt`);if(t)return t}return E(e,`@ffmpeg/core`)}async function ae(e,t){if(a())throw Error(`ffmpeg-wasm is not available in Node runtime`);if(!e)throw Error(b);let n=await D(e,globalThis.crossOriginIsolated===!0);if(!n)throw Error(b);t(`${n.pkg} loaded from ipk node_modules (js: ${n.coreSource.length} chars, wasm: ${n.wasmBytes.byteLength} bytes${n.workerSource?`, multi-threaded`:``})`);let r=oe(n.wasmBytes,`application/wasm`);return{coreURL:O(n.coreSource,`text/javascript`),wasmURL:r,...n.workerSource===void 0?{}:{workerURL:O(n.workerSource,`text/javascript`)}}}function oe(e,t){let n=new ArrayBuffer(e.byteLength);return new Uint8Array(n).set(e),URL.createObjectURL(new Blob([n],{type:t}))}function O(e,t){return URL.createObjectURL(new Blob([e],{type:t}))}function k(e){if(typeof WebAssembly<`u`&&e instanceof WebAssembly.RuntimeError||e instanceof RangeError)return!0;let t=e instanceof Error?e.message:String(e);return/RuntimeError|memory access out of bounds|unreachable|Aborted|out of memory|allocation failed|table index is out of bounds|function signature mismatch/i.test(t)}function A(e){if(e!==void 0&&S!==e)return;let t=S,n=C;if(x=null,S=null,C=[],t)try{t.terminate()}catch{}w(n)}function j(){return{stdout:`ffmpeg - WASM build, downloaded on demand
|
|
2
|
+
|
|
3
|
+
Usage:
|
|
4
|
+
ffmpeg [global-opts] -i input [input-opts] ... output [output-opts]
|
|
5
|
+
|
|
6
|
+
Common flags pass through to ffmpeg unchanged. Inputs/outputs are
|
|
7
|
+
resolved against the current VFS working directory.
|
|
8
|
+
|
|
9
|
+
Concatenating (concat demuxer):
|
|
10
|
+
printf "file 'a.mp4'\\nfile 'b.mp4'\\n" > list.txt
|
|
11
|
+
ffmpeg -f concat -safe 0 -i list.txt -c copy joined.mp4
|
|
12
|
+
|
|
13
|
+
Files named inside the list are read from the VFS too, resolved
|
|
14
|
+
against the LIST FILE's directory. As in ffmpeg, absolute and
|
|
15
|
+
parent-traversing members need -safe 0. The \`concat:\` protocol
|
|
16
|
+
form (-i "concat:a.ts|b.ts") is not supported — use -f concat.
|
|
17
|
+
|
|
18
|
+
Webcam capture (avfoundation-style):
|
|
19
|
+
ffmpeg -f avfoundation -video_size 1280x720 -framerate 30 \\
|
|
20
|
+
-i "0" -frames:v 1 -update 1 -y photo.jpg
|
|
21
|
+
ffmpeg -f avfoundation -i "0" -t 5 clip.webm
|
|
22
|
+
ffmpeg -f avfoundation -i "0:0" -t 5 clip.webm # video + audio
|
|
23
|
+
ffmpeg -f avfoundation -i ":0" -t 5 audio.webm # audio only
|
|
24
|
+
ffmpeg -f avfoundation -list_devices true -i "" # list devices
|
|
25
|
+
|
|
26
|
+
Avfoundation-specific options:
|
|
27
|
+
-warmup MS Photo mode: ms to wait for auto-exposure to settle
|
|
28
|
+
before grabbing the frame. Default 1500. Pass 0 to
|
|
29
|
+
capture immediately (will look dark / noisy on most
|
|
30
|
+
webcams because the AE algorithm hasn't converged).
|
|
31
|
+
-exact_size Use exact:{w,h,frameRate} constraints rather than
|
|
32
|
+
ideal:. Falls back to ideal: with a warning if the
|
|
33
|
+
camera can't deliver the requested mode.
|
|
34
|
+
|
|
35
|
+
Captured streams can be transcoded through the WASM core in the same
|
|
36
|
+
invocation. Output options like -c:v, -c:a, -crf, -preset, -pix_fmt,
|
|
37
|
+
-vf, -b:v, -b:a, and a mismatched output extension all trigger a
|
|
38
|
+
post-capture wasm pass so the produced file matches what the user asked
|
|
39
|
+
for (e.g. real H.264 mp4 instead of webm bytes in a .mp4 wrapper).
|
|
40
|
+
|
|
41
|
+
Analysis sinks (no output file — results are on stderr):
|
|
42
|
+
ffmpeg -i in.mp4 -af silencedetect=noise=-30dB:d=0.5 -f null -
|
|
43
|
+
ffmpeg -i in.mp4 -af loudnorm=print_format=json -f null /dev/null
|
|
44
|
+
ffmpeg -i in.mp4 -af loudnorm /dev/null
|
|
45
|
+
With output \`-\` or \`/dev/null\`, the wrapper skips VFS writeback
|
|
46
|
+
and returns the core log (filter measurements) on stderr. \`-\`
|
|
47
|
+
requires \`-f null\` (stdout is not emulated). Bare \`/dev/null\`
|
|
48
|
+
is accepted and gets \`-f null\` injected (MEMFS has no /dev/null).
|
|
49
|
+
|
|
50
|
+
Notes:
|
|
51
|
+
- First run downloads ~31 MB of ffmpeg-core; subsequent runs reuse
|
|
52
|
+
the cached copy.
|
|
53
|
+
- The browser will prompt for camera/mic permission on first capture.
|
|
54
|
+
- Numeric -i values index into the per-kind enumerateDevices() list,
|
|
55
|
+
matching ffmpeg's native avfoundation device numbering on macOS.
|
|
56
|
+
`,stderr:``,exitCode:0}}async function M(e){return await E(X(e))?{stdout:`ffmpeg (wasm via @ffmpeg/ffmpeg)
|
|
57
|
+
`,stderr:``,exitCode:0}:{stdout:``,stderr:`ffmpeg: ${b}\n`,exitCode:1}}function N(e){if(!e.includes(`:`))return{video:e};let t=e.indexOf(`:`),n=e.slice(0,t),r=e.slice(t+1);return{...n?{video:n}:{},...r?{audio:r}:{}}}const P=new Set(`-f.-safe.-i.-c.-c:v.-c:a.-vf.-af.-filter:v.-filter:a.-filter_complex.-r.-b:v.-b:a.-s.-t.-ss.-to.-pix_fmt.-vcodec.-acodec.-ar.-ac.-frames:v.-frames:a.-q:v.-q:a.-crf.-preset.-tune.-movflags.-map.-metadata.-loglevel.-threads.-video_size.-framerate.-pixel_format.-update.-list_devices.-warmup.-bsf.-bsf:v.-bsf:a.-profile:v.-level.-g.-keyint_min.-sc_threshold.-max_muxing_queue_size.-fflags.-avoid_negative_ts.-start_number.-strict.-vsync.-fps_mode.-async.-disposition.-map_metadata.-c:s.-scodec.-ab.-aspect`.split(`.`)),F=new Set(`-y.-n.-vn.-an.-sn.-dn.-re.-stats.-nostats.-nostdin.-shortest.-copyts.-hide_banner.-autorotate.-noautorotate.-ignore_unknown.-exact_size.-bitexact.-xerror.-benchmark.-benchmark_all.-dump.-hex.-stdin.-noautoscale.-accurate_seek.-noaccurate_seek.-fix_sub_duration.-recast_media`.split(`.`));function I(){return{inputs:[],outputOpts:[],outputPath:null,listDevices:!1,exactSize:!1,pendingOpts:[]}}function L(e,t,n){let r=e[t+1];if(typeof r!=`string`)throw Error(`ffmpeg: ${n} requires a value`);return r}function R(e,t,n){let r=L(t,n,`-i`);return e.inputs.push({path:r,format:e.pendingFormat,videoSize:e.pendingVideoSize,frameRate:e.pendingFrameRate,raw:[...e.pendingOpts,`-i`,r]}),e.pendingFormat=void 0,e.pendingVideoSize=void 0,e.pendingFrameRate=void 0,e.pendingOpts=[],n+2}function z(e,t,n){let r=L(t,n,`-video_size`),i=/^(\d+)x(\d+)$/.exec(r);return i&&(e.pendingVideoSize={width:parseInt(i[1],10),height:parseInt(i[2],10)}),e.pendingOpts.push(`-video_size`,r),n+2}function B(e,t,n){let r=L(t,n,`-framerate`),i=parseFloat(r);return Number.isNaN(i)||(e.pendingFrameRate=i),e.pendingOpts.push(`-framerate`,r),n+2}function V(e,t,n){let r=L(t,n,`-list_devices`);return/^(true|1|yes)$/i.test(r)&&(e.listDevices=!0),e.pendingOpts.push(`-list_devices`,r),n+2}function H(e,t,n){let r=L(t,n,`-warmup`),i=parseInt(r,10);return!Number.isNaN(i)&&i>=0&&(e.warmupMs=i),n+2}function U(e,t){for(let n=t;n<e.length;n++){let t=e[n];if(!t.startsWith(`-`)||t===`-`)return!0;P.has(t)&&(n+=1)}return!1}function W(e,t){let n=e[t+1];return typeof n!=`string`||n.startsWith(`-`)?!1:U(e,t+2)}function G(e,t,n,r){if(P.has(r)){let i=L(t,n,r);return e.pendingOpts.push(r,i),n+2}return!F.has(r)&&W(t,n)?(e.pendingOpts.push(r,t[n+1]),n+2):(e.pendingOpts.push(r),n+1)}function K(e,t,n){return e.outputPath=t,e.outputOpts=e.pendingOpts,e.pendingOpts=[],n+1}function q(e){let t=I(),n=0;for(;n<e.length;){let r=e[n];if(r===`-i`){n=R(t,e,n);continue}if(r===`-f`){let r=L(e,n,`-f`);t.pendingFormat=r,t.pendingOpts.push(`-f`,r),n+=2;continue}if(r===`-video_size`){n=z(t,e,n);continue}if(r===`-framerate`){n=B(t,e,n);continue}if(r===`-list_devices`){n=V(t,e,n);continue}if(r===`-warmup`){n=H(t,e,n);continue}if(r===`-exact_size`){t.exactSize=!0,n+=1;continue}if(r===`-`&&Y(t.pendingOpts)){n=K(t,r,n);continue}if(r.startsWith(`-`)){n=G(t,e,n,r);continue}n=K(t,r,n)}return{inputs:t.inputs,outputOpts:t.outputOpts,outputPath:t.outputPath,listDevices:t.listDevices,...t.warmupMs===void 0?{}:{warmupMs:t.warmupMs},exactSize:t.exactSize}}function J(e){return e.inputs.some(e=>e.format===`avfoundation`)}const se=new Set([`-`,`/dev/null`]);function Y(e){for(let t=0;t<e.length-1;t++)if(e[t]===`-f`&&e[t+1]===`null`)return!0;return!1}function ce(e){let t=e.outputPath;return t===null||!se.has(t)?!1:t===`/dev/null`||Y(e.outputOpts)}function le(e){return Y(e)?e:[...e,`-f`,`null`]}function X(e){return{reader:{exists:t=>e.fs.exists(t),isDirectory:async t=>{try{return(await e.fs.stat(t)).isDirectory}catch{return!1}},readFile:t=>e.fs.readFile(t)},readBytes:t=>e.fs.readFileBuffer(t),fromDir:e.cwd}}function ue(e){let t=[];return(e.mode===`photo`||e.captureVideo!==!1)&&t.push(`camera`),e.mode===`video`&&e.captureAudio&&t.push(`microphone`),t}function de(e){return e.length===0?`media devices`:e.length===1?e[0]:`${e.slice(0,-1).join(`, `)} and ${e[e.length-1]}`}function fe(e){for(let t of e){let e=t.stream;if(e)for(let t of e.getTracks())t.stop()}}async function pe(e,t){let n=c();if(!n)return null;try{let r=await n.prompt({kinds:e,description:t,skipIfGranted:!0});if(fe(r.grants),r.status===`granted`)return{ok:!0};let i=r.message?`: ${r.message}`:``;return{ok:!1,message:`${r.reason??r.status}${i}`}}catch{return null}}async function me(t){if(t.length===0)return{ok:!0};let n=`ffmpeg is requesting access to your ${de(t)}.`,r=await pe(t,n);if(r)return r;let i=e();if(i)try{return await i.call(`permission-request`,{kinds:t,description:n,skipIfGranted:!0},{timeoutMs:3e5}),{ok:!0}}catch(e){let t=e instanceof Error?e.message:String(e);return/permission surface unavailable/i.test(t)?{ok:!0}:{ok:!1,message:t}}return{ok:!0}}function he(e){let t=e.inputs.find(e=>e.format===`avfoundation`);if(!t)throw Error(`ffmpeg: no avfoundation input found`);if(!e.outputPath)throw Error(`ffmpeg: output path is required`);let n=e.outputOpts.indexOf(`-frames:v`),r=n>=0&&e.outputOpts[n+1]===`1`,i=e.outputOpts.indexOf(`-update`),a=i>=0&&e.outputOpts[i+1]===`1`,o=e.outputOpts.indexOf(`-t`),s=o>=0?parseFloat(e.outputOpts[o+1]):NaN,c=N(t.path),l=ge(e.outputPath),u=/^image\//.test(l),d=!c.video&&!!c.audio;if(!d&&(r||a||u)){let n=u&&/^image\/(jpeg|png|webp)$/.test(l)?l:`image/jpeg`;return{outputPath:e.outputPath,captureMime:n,needsTranscode:Z(e.outputOpts,`photo`)||n!==l,request:{mode:`photo`,deviceId:c.video,width:t.videoSize?.width,height:t.videoSize?.height,frameRate:t.frameRate,exactSize:e.exactSize,mimeType:n,quality:.92,...e.warmupMs===void 0?{}:{warmupMs:e.warmupMs}}}}let f=d||!!c.audio,p=`video/webm`;return{outputPath:e.outputPath,captureMime:p,needsTranscode:Z(e.outputOpts,`video`)||p!==l,request:{mode:`video`,deviceId:c.video,captureVideo:!d,...f?{captureAudio:!0}:{},...c.audio?{audioDeviceId:c.audio}:{},width:t.videoSize?.width,height:t.videoSize?.height,frameRate:t.frameRate,exactSize:e.exactSize,mimeType:p,durationMs:Number.isFinite(s)?s*1e3:void 0}}}function Z(e,t){let n=t===`photo`?new Set([`-vf`,`-filter:v`,`-filter_complex`,`-pix_fmt`,`-q:v`,`-vcodec`,`-c:v`]):new Set([`-c`,`-c:v`,`-c:a`,`-vcodec`,`-acodec`,`-vf`,`-af`,`-filter:v`,`-filter:a`,`-filter_complex`,`-pix_fmt`,`-pixel_format`,`-crf`,`-preset`,`-tune`,`-b:v`,`-b:a`,`-ar`,`-ac`,`-q:v`,`-q:a`,`-movflags`,`-r`]);return e.some(e=>n.has(e))}function ge(e){let t=e.toLowerCase();return t.endsWith(`.jpg`)||t.endsWith(`.jpeg`)?`image/jpeg`:t.endsWith(`.png`)?`image/png`:t.endsWith(`.webp`)?`image/webp`:t.endsWith(`.gif`)?`image/gif`:t.endsWith(`.webm`)?`video/webm`:t.endsWith(`.mp4`)?`video/mp4`:t.endsWith(`.mov`)?`video/quicktime`:t.endsWith(`.mkv`)?`video/x-matroska`:t.endsWith(`.m4a`)?`audio/mp4`:t.endsWith(`.mp3`)?`audio/mpeg`:t.endsWith(`.wav`)?`audio/wav`:t.endsWith(`.ogg`)?`audio/ogg`:`application/octet-stream`}function _e(e){return e===`image/jpeg`?`jpg`:e===`image/png`?`png`:e===`image/webp`?`webp`:e===`video/webm`?`webm`:e===`video/mp4`?`mp4`:e===`audio/webm`?`webm`:`bin`}function ve(e,t){let n=e.path.lastIndexOf(`/`),r=n>=0?e.path.slice(n+1):e.path;return r?`__in${t}_${r}`:`__in${t}.bin`}function ye(){return i(`ffmpeg`,async(e,t)=>{if(e.length===0||e.includes(`--help`))return j();if(e.includes(`-version`)||e.includes(`--version`))return M(t);let n;try{n=q(e)}catch(e){return{stdout:``,stderr:`${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}return n.listDevices&&J(n)?be():n.outputPath?n.inputs.length===0?{stdout:``,stderr:`ffmpeg: at least one input file must be specified
|
|
58
|
+
`,exitCode:1}:J(n)?Ee(n,t):We(n,t):{stdout:``,stderr:`ffmpeg: at least one output file must be specified
|
|
59
|
+
`,exitCode:1}})}async function be(){let e;try{e=await xe()}catch(e){return{stdout:``,stderr:`ffmpeg: failed to enumerate devices: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}let t=[];return t.push(`[AVFoundation indev @ 0x0] AVFoundation video devices:`),e.videoinputs.length===0?t.push(`[AVFoundation indev @ 0x0] (none)`):e.videoinputs.forEach((e,n)=>{t.push(`[AVFoundation indev @ 0x0] [${n}] ${e.label||`Camera ${n}`}`)}),t.push(`[AVFoundation indev @ 0x0] AVFoundation audio devices:`),e.audioinputs.length===0?t.push(`[AVFoundation indev @ 0x0] (none)`):e.audioinputs.forEach((e,n)=>{t.push(`[AVFoundation indev @ 0x0] [${n}] ${e.label||`Microphone ${n}`}`)}),{stdout:``,stderr:`${t.join(`
|
|
60
|
+
`)}\n`,exitCode:0}}async function xe(){if(t()&&typeof navigator<`u`&&navigator.mediaDevices?.enumerateDevices){let e=await navigator.mediaDevices.enumerateDevices(),t=e=>({deviceId:e.deviceId,label:e.label||``,...e.groupId?{groupId:e.groupId}:{}});return{videoinputs:e.filter(e=>e.kind===`videoinput`).map(t),audioinputs:e.filter(e=>e.kind===`audioinput`).map(t)}}let n=e();if(!n)throw Error(`device enumeration requires a browser context`);return n.call(`enumerate-media-devices`,void 0,{timeoutMs:1e4})}async function Se(e){let t=await d({kind:`camera`,...e.request}),n=new ArrayBuffer(t.bytes.byteLength);return new Uint8Array(n).set(t.bytes),{bytes:n,mimeType:t.mimeType,width:t.width,height:t.height,...t.durationMs===void 0?{}:{durationMs:t.durationMs}}}async function Ce(t){let n=e();if(!n)return null;let r=await n.call(`capture-camera`,t.request,{timeoutMs:3e5});return{bytes:r.bytes,mimeType:r.mimeType,width:r.width,height:r.height,durationMs:r.durationMs}}async function we(e){try{if(l())return{result:await Se(e)};let t=await Ce(e);return t?{result:t}:{error:{stdout:``,stderr:`ffmpeg: camera capture requires a browser context — not available in this runtime
|
|
61
|
+
`,exitCode:1}}}catch(e){return{error:{stdout:``,stderr:Te(e),exitCode:1}}}}function Te(e){let t=e instanceof Error?e.message:String(e);return/NotAllowedError|Permission denied/i.test(t)?`ffmpeg: camera permission denied
|
|
62
|
+
`:/NotFoundError/i.test(t)?`ffmpeg: no camera device found
|
|
63
|
+
`:`ffmpeg: ${t}\n`}async function Ee(e,t){let n;try{n=he(e)}catch(e){return{stdout:``,stderr:`${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}let r=await me(ue(n.request));if(!r.ok)return{stdout:``,stderr:`ffmpeg: camera permission denied (${r.message})\n`,exitCode:1};let i=await we(n);if(`error`in i)return i.error;let a=i.result,o=Math.round(a.bytes.byteLength/1024),s=`${a.width}x${a.height}`,c=n.request.mode===`video`&&a.durationMs?`${s}, ${Math.round(a.durationMs)}ms`:s,l=new Uint8Array(a.bytes),u=``;if(n.needsTranscode)try{let r=await De({bytes:l,captureMime:n.captureMime,outputName:n.outputPath,outputOpts:e.outputOpts,ipk:X(t),onLog:e=>{u+=`${e}\n`}});l=new Uint8Array(r.byteLength),l.set(r)}catch(e){let t=e instanceof Error?e.message:String(e);return{stdout:``,stderr:`${u}ffmpeg: captured ${c} (${o} KB) but transcode failed: ${t}\n`,exitCode:1}}let d=t.fs.resolvePath(t.cwd,n.outputPath);try{await t.fs.writeFile(d,l)}catch(e){return{stdout:``,stderr:`ffmpeg: failed to write ${n.outputPath}: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}let f=Math.round(l.byteLength/1024),p=n.needsTranscode?`${o} KB → ${f} KB`:`${o} KB`;return{stdout:``,stderr:`${u}ffmpeg: captured ${c} (${p}) to ${n.outputPath}\n`,exitCode:0}}async function De(e){let t=`__capture.${_e(e.captureMime)}`,n=`__out_${e.outputName.split(`/`).pop()||`out.bin`}`;e.onLog(`transcoding captured stream...`);let r=await T({onProgress:e.onLog,ipk:e.ipk}),i=t=>{e.onLog(t.message)};r.on(`log`,i);let a=!1;try{await r.writeFile(t,e.bytes);let i=[`-i`,t,...e.outputOpts,n],a=await r.exec(i);if(a!==0)throw Error(`ffmpeg-core exited with code ${a}`);let o=await r.readFile(n);if(o instanceof Uint8Array)return o;if(typeof o==`string`)return new TextEncoder().encode(o);throw Error(`ffmpeg-core returned an unknown payload type`)}catch(e){throw k(e)&&(a=!0,A(r)),e}finally{try{r.off(`log`,i)}catch{}if(!a){try{await r.deleteFile(t)}catch{}try{await r.deleteFile(n)}catch{}}}}function Oe(e){return e.format===`concat`}function ke(e){return e.split(`
|
|
64
|
+
`).map(e=>{let t=e.trim();if(!t.startsWith(`file `))return{raw:e};let n=Ae(t.slice(4).trim());return n?{raw:e,file:n}:{raw:e}})}function Ae(e){let t=e[0];if(t!==`'`&&t!==`"`)return e.replace(/\\(.)/g,`$1`);let n=``;for(let r=1;r<e.length;r++){let i=e[r];if(i===`\\`&&t===`"`&&r+1<e.length){n+=e[r+1],r+=1;continue}if(i!==t){n+=i;continue}if(t===`'`&&e.slice(r,r+4)===`'\\''`){n+=`'`,r+=3;continue}return n}return n}function je(e,t,n){return`__cat${t}_${n}_${e.slice(e.lastIndexOf(`/`)+1).replace(/[^A-Za-z0-9._-]/g,`_`)||`part.bin`}`}function Me(e){return e.startsWith(`/`)||/^[A-Za-z]:/.test(e)?!1:!e.split(`/`).includes(`..`)}function Ne(e){let t=e.raw.lastIndexOf(`-safe`);if(t<0)return!0;let n=e.raw[t+1];return!(n===`0`||n?.startsWith(`-`))}async function Pe(e,t,n,r,i){let a=ke(new TextDecoder().decode(t)),o=e.slice(0,e.lastIndexOf(`/`))||`/`,s=[],c=[];for(let e of a){if(e.file===void 0){c.push(e.raw);continue}if(r&&!Me(e.file))return{error:{kind:`unsafe`,file:e.file}};let t=i.fs.resolvePath(o,e.file);if(!await i.fs.exists(t))return{error:{kind:`missing`,file:e.file}};let a=je(e.file,n,s.length);s.push({ffmpegName:a,bytes:await i.fs.readFileBuffer(t)}),c.push(`file '${a}'`)}return{listBytes:new TextEncoder().encode(c.join(`
|
|
65
|
+
`)),extraFiles:s}}function Fe(e){return e.format===`lavfi`}async function Q(e,t){let n=[];for(let[r,i]of e.inputs.entries()){if(Fe(i)){n.push({ffmpegName:i.path,bytes:null,virtual:!0});continue}let e=t.fs.resolvePath(t.cwd,i.path);if(!await t.fs.exists(e))return{error:{stdout:``,stderr:`ffmpeg: input file not found: ${i.path}\n`,exitCode:1}};let a=await t.fs.readFileBuffer(e),o=ve(i,r);if(Oe(i)){let s=await Pe(e,a,r,Ne(i),t);if(`error`in s){let{kind:e,file:t}=s.error,n=e===`unsafe`?`unsafe file name: ${t} (pass -safe 0 to allow it)`:`file not found: ${t}`;return{error:{stdout:``,stderr:`ffmpeg: concat list ${i.path}: ${n}\n`,exitCode:1}}}n.push({ffmpegName:o,bytes:s.listBytes,virtual:!1,extraFiles:s.extraFiles});continue}n.push({ffmpegName:o,bytes:a,virtual:!1})}return{inputs:n}}function Ie(e,t,n){let r=[];for(let[n,i]of e.inputs.entries()){let e=t[n],a=i.raw;for(let t=0;t<a.length;t++){if(a[t]===`-i`){r.push(`-i`,e.virtual?a[t+1]:e.ffmpegName),t+=1;continue}r.push(a[t])}}return r.push(...e.outputOpts),r.push(n),r}async function Le(e,t){for(let n of t)if(n.bytes!==null){for(let t of n.extraFiles??[])await e.writeFile(t.ffmpegName,t.bytes);await e.writeFile(n.ffmpegName,n.bytes)}}async function Re(e){let t=`__health_probe`;try{await e.writeFile(t,new Uint8Array([0])),await e.deleteFile(t)}catch(e){if(k(e))throw e}}async function ze(e,t,n){for(let n of t)if(n.bytes!==null){for(let t of n.extraFiles??[])try{await e.deleteFile(t.ffmpegName)}catch(e){if(k(e))throw e}try{await e.deleteFile(n.ffmpegName)}catch(e){if(k(e))throw e}}try{await e.deleteFile(n)}catch(e){if(k(e))throw e}}async function Be(e,t,n,r){let i;try{i=await e.readFile(t)}catch(e){if(k(e))throw e;return{error:{stdout:``,stderr:r||`ffmpeg: produced no output file for ${n}\n`,exitCode:1}}}let a=i instanceof Uint8Array?i:new TextEncoder().encode(typeof i==`string`?i:``);return a.byteLength===0?{error:{stdout:``,stderr:r||`ffmpeg: produced an empty output file for ${n}\n`,exitCode:1}}:{bytes:a}}function Ve(e,t){return t?`__null_sink`:`__out_${e.split(`/`).pop()||`out.bin`}`}function $(e,t){return{stdout:``,stderr:`${e}ffmpeg: ${t instanceof Error?t.message:String(t)}\nffmpeg: the wasm core faulted and was recycled; retry the command (a large input may need to be split into smaller passes)
|
|
66
|
+
`,exitCode:1}}async function He(e){let{ffmpeg:t,parsed:n,resolvedInputs:r,outputName:i,outputPath:a,analysisSink:o,stderr:s}=e;await Le(t,r);let c=Ie(o?{...n,outputOpts:le(n.outputOpts)}:n,r,i),l=await t.exec(c);if(l!==0)return{early:{stdout:``,stderr:s||`ffmpeg: exited with code ${l}\n`,exitCode:l||1},outputBytes:null};if(o)return await Re(t),{early:{stdout:``,stderr:s,exitCode:0},outputBytes:null};let u=await Be(t,i,a,s);return`error`in u?{early:u.error,outputBytes:null}:{early:null,outputBytes:u.bytes}}async function Ue(e){let{ffmpeg:t,logHandler:n,resolvedInputs:r,outputName:i,stderr:a,faulted:o}=e;try{t.off(`log`,n)}catch{}if(o)return null;try{return await ze(t,r,i),null}catch(e){return k(e)?(A(t),$(a,e)):null}}async function We(e,t){let n=await Q(e,t);if(`error`in n)return n.error;let r=n.inputs,i=e.outputPath,a=ce(e),o=Ve(i,a),s=``,c;try{c=await T({onProgress:e=>{s+=`${e}\n`},ipk:X(t)})}catch(e){return{stdout:``,stderr:`${s}ffmpeg: failed to load wasm: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}let l=e=>{s+=`${e.message}\n`};c.on(`log`,l);let u=!1,d=null,f=null;try{let t=await He({ffmpeg:c,parsed:e,resolvedInputs:r,outputName:o,outputPath:i,analysisSink:a,stderr:s});d=t.early,f=t.outputBytes}catch(e){u=!0,A(c),d=$(s,e)}finally{let e=await Ue({ffmpeg:c,logHandler:l,resolvedInputs:r,outputName:o,stderr:s,faulted:u});e&&(d=e)}if(d)return d;try{await t.fs.writeFile(t.fs.resolvePath(t.cwd,i),f??new Uint8Array)}catch(e){return{stdout:``,stderr:`${s}ffmpeg: cannot write ${i}: ${e instanceof Error?e.message:String(e)}\n`,exitCode:1}}return{stdout:``,stderr:s,exitCode:0}}export{T as a,E as c,b as i,d as l,X as n,k as o,y as r,A as s,ye as t,l as u};
|