nuxt-files-sdk 0.0.5 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +35 -9
  3. package/dist/config/load.js +67 -0
  4. package/dist/config/load.js.map +1 -0
  5. package/dist/config/merge.d.ts +5 -0
  6. package/dist/config/merge.js +22 -0
  7. package/dist/config/merge.js.map +1 -0
  8. package/dist/config/prune.js +57 -0
  9. package/dist/config/prune.js.map +1 -0
  10. package/dist/config.d.ts +101 -103
  11. package/dist/config.js +2 -2
  12. package/dist/config.js.map +1 -1
  13. package/dist/devtools/auth.js +49 -0
  14. package/dist/devtools/auth.js.map +1 -0
  15. package/dist/devtools/client/app.js +6 -4
  16. package/dist/devtools/client/browser-agent-rpc-BXhoSh1z-DRoP5jHQ.js +1 -0
  17. package/dist/devtools/client/index.html +4 -1
  18. package/dist/devtools/devframe.js +7 -1
  19. package/dist/devtools/devframe.js.map +1 -1
  20. package/dist/devtools/diagnostics.d.ts +1 -1
  21. package/dist/devtools/diagnostics.js +1 -1
  22. package/dist/devtools/diagnostics.js.map +1 -1
  23. package/dist/devtools/files-read.d.ts +1 -1
  24. package/dist/devtools/files-write.d.ts +1 -1
  25. package/dist/devtools/files.js +7 -4
  26. package/dist/devtools/files.js.map +1 -1
  27. package/dist/devtools/index.js +24 -6
  28. package/dist/devtools/index.js.map +1 -1
  29. package/dist/devtools/nuxt-v3-handler.js +1 -1
  30. package/dist/devtools/nuxt-v3-handler.js.map +1 -1
  31. package/dist/devtools/nuxt-v3.js +1 -1
  32. package/dist/devtools/nuxt-v3.js.map +1 -1
  33. package/dist/devtools/nuxt-v4.js.map +1 -1
  34. package/dist/devtools/snapshot.d.ts +8 -2
  35. package/dist/devtools/snapshot.js +13 -3
  36. package/dist/devtools/snapshot.js.map +1 -1
  37. package/dist/devtools/token.d.ts +14 -0
  38. package/dist/devtools/token.js +17 -0
  39. package/dist/devtools/token.js.map +1 -0
  40. package/dist/integration/nitro.d.ts +6 -0
  41. package/dist/integration/nitro.js +160 -63
  42. package/dist/integration/nitro.js.map +1 -1
  43. package/dist/module.d.ts +1 -4
  44. package/dist/module.js +31 -20
  45. package/dist/module.js.map +1 -1
  46. package/dist/nitro.d.ts +2 -4
  47. package/dist/nitro.js +2 -4
  48. package/dist/nitro.js.map +1 -1
  49. package/dist/package.js +1 -1
  50. package/dist/runtime/internal.d.ts +11 -0
  51. package/dist/runtime/internal.js +30 -0
  52. package/dist/runtime/internal.js.map +1 -0
  53. package/dist/runtime/normalize.js +29 -0
  54. package/dist/runtime/normalize.js.map +1 -0
  55. package/dist/runtime/provider-types.d.ts +53 -0
  56. package/dist/runtime/registry.d.ts +55 -8
  57. package/dist/runtime/registry.js +125 -89
  58. package/dist/runtime/registry.js.map +1 -1
  59. package/dist/runtime.d.ts +8 -9
  60. package/dist/runtime.js +8 -25
  61. package/dist/runtime.js.map +1 -1
  62. package/package.json +26 -15
@@ -1,6 +1,8 @@
1
- function e(e,t){let n=`\x1B[${e}m`,r=`\x1B[${t}m`;return((e,...t)=>{if(Array.isArray(e)&&`raw`in e){let i=e,a=``;for(let e=0;e<i.length;e++)a+=i[e],e<t.length&&(a+=String(t[e]));return`${n}${a}${r}`}return`${n}${String(e)}${r}`})}const t={blue:e(34,39),cyan:e(36,39),gray:e(90,39),green:e(32,39),red:e(31,39),yellow:e(33,39),bold:e(1,22),dim:e(2,22),reset:e(0,0),underline:e(4,24)};function n(e,...t){return typeof e==`function`?e(...t):e}const r=Error.captureStackTrace;var i=class e extends Error{name;code;docs;fix;sources;get why(){return this.message}constructor(t,n=e){super(t.why,{cause:t.cause}),this.code=this.name=t.code,this.fix=t.fix,this.docs=t.docs,this.sources=t.sources,r?.(this,n)}toJSON(){return{name:this.name,why:this.why,fix:this.fix,docs:this.docs,sources:this.sources,cause:this.cause,stack:this.stack}}};function a(e,t){return typeof e==`string`?`${e}/${t.toLowerCase()}`:e?.(t)}function o(e){let t=e.reporters??[],r={},{docsBase:o}=e;for(let s of Object.keys(e.codes)){let c=e.codes[s],l=c.docs===!1?void 0:c.docs||a(o,s),u=(e={},r={})=>{let a=new i({code:s,why:n(c.why,e),fix:n(c.fix,e),docs:l,cause:e.cause,sources:e.sources},u);for(let e of t)e(a,r);return a};r[s]=u}return r}function s(e){return t=>{let n=`${e.bold(e.red(`[${t.name}]`))} ${t.message}`,r=[];return t.fix&&r.push(`${e.dim(`fix:`)} ${t.fix}`),t.sources?.length&&r.push(`${e.dim(`sources:`)} ${t.sources.join(`, `)}`),t.docs&&r.push(`${e.dim(`see:`)} ${e.cyan(t.docs)}`),r.length===0?n:[n,...r.map((t,n)=>`${e.dim(n<r.length-1?`├▶`:`╰▶`)} ${t}`)].join(`
2
- `)}}const c={bus:{agentManifestChanged:`agent:manifest:changed`,agentToolRegistered:`agent:tool:registered`,agentToolUnregistered:`agent:tool:unregistered`,agentResourceRegistered:`agent:resource:registered`,agentResourceUnregistered:`agent:resource:unregistered`},client:{isTrustedUpdated:`rpc:is-trusted:updated`,error:`rpc:error`,connectionStatus:`connection:status`,connectionError:`connection:error`},broadcast:{authRevoked:`devframe:auth:revoked`,clientStateUpdated:`devframe:rpc:client-state:updated`,clientStatePatch:`devframe:rpc:client-state:patch`,streamingChunk:`devframe:streaming:chunk`,streamingEnd:`devframe:streaming:end`,streamingUploadCancel:`devframe:streaming:upload-cancel`},inPageChannel:{panelStateUpdated:`devframe:in-page:panel-state:updated`,panelStatePatch:`devframe:in-page:panel-state:patch`},postMessage:{remoteAssetsError:`devframe:remote-assets-error`,inPageChannel:`devframe:in-page-channel`}},l=s(t);function u(e,{method:t=`warn`}={}){console[t](l(e))}function d(e){return o({...e,reporters:[u,...e.reporters??[]]})}function f(e){return typeof e==`string`?`'${e}'`:new h().serialize(e)}const p=(function(){let e=new Uint8Array(128);for(let t=0;t<69;t++)e[` _-,;:!?.'"()[]{}@*/\\&#%\`^+<=>|~$0123456789abcdefghijklmnopqrstuvwxyz`.charCodeAt(t)]=t+1;for(let t=65;t<=90;t++)e[t]=e[t+32];return e})();function m(e,t){if(e===t)return 0;let n=Math.min(e.length,t.length),r=0;for(let i=0;i<n;i++){let n=e.charCodeAt(i),a=t.charCodeAt(i);if(n===a)continue;let o=n<128&&p[n]?p[n]:n+128,s=a<128&&p[a]?p[a]:a+128;if(o!==s)return o<s?-1:1;r===0&&(r=n>a?-1:1)}return e.length===t.length?r:e.length<t.length?-1:1}const h=(function(){class e{#e=new Map;compare(e,t){let n=typeof e,r=typeof t;return n===`string`&&r===`string`?m(e,t):n===`number`&&r===`number`?e-t:m(this.serialize(e,!0),this.serialize(t,!0))}serialize(e,t){if(e===null)return`null`;switch(typeof e){case`string`:return t?e:`'${e}'`;case`bigint`:return`${e}n`;case`object`:return this.$object(e);case`function`:return this.$function(e)}return String(e)}serializeObject(e){let t=Object.prototype.toString.call(e);if(t!==`[object Object]`)return this.serializeBuiltInType(t.length<10?`unknown:${t}`:t.slice(8,-1),e);let n=e.constructor,r=n===Object||n===void 0?``:n.name;if(r!==``&&globalThis[r]===n)return this.serializeBuiltInType(r,e);if(`toJSON`in e&&typeof e.toJSON==`function`){let t=e.toJSON();return r+(typeof t==`object`&&t?this.$object(t):`(${this.serialize(t)})`)}let i=Object.keys(e).sort(m),a=`${r}{`;for(let t=0;t<i.length;t++){let n=i[t];a+=`${n}:${this.serialize(e[n])}`,t<i.length-1&&(a+=`,`)}return a+`}`}serializeBuiltInType(e,t){let n=this[`$`+e];if(n)return n.call(this,t);if(typeof t.entries==`function`)return this.serializeObjectEntries(e,t.entries());throw Error(`Cannot serialize ${e}`)}serializeObjectEntries(e,t){let n=Array.from(t).sort((e,t)=>this.compare(e[0],t[0])),r=`${e}{`;for(let e=0;e<n.length;e++){let[t,i]=n[e];r+=`${this.serialize(t,!0)}:${this.serialize(i)}`,e<n.length-1&&(r+=`,`)}return r+`}`}$object(e){let t=this.#e.get(e);return t===void 0&&(this.#e.set(e,`#${this.#e.size}`),t=this.serializeObject(e),this.#e.set(e,t)),t}$function(e){let t=Function.prototype.toString.call(e);return t.slice(-15)===`[native code] }`?`${e.name||``}()[native]`:`${e.name}(${e.length})${t.replace(/\s*\n\s*/g,``)}`}$Array(e){let t=`[`;for(let n=0;n<e.length;n++)t+=this.serialize(e[n]),n<e.length-1&&(t+=`,`);return t+`]`}$Date(e){try{return`Date(${e.toISOString()})`}catch{return`Date(null)`}}$ArrayBuffer(e){return`ArrayBuffer[${new Uint8Array(e).join(`,`)}]`}$Set(e){return`Set${this.$Array(Array.from(e).sort((e,t)=>this.compare(e,t)))}`}$Map(e){return this.serializeObjectEntries(`Map`,e.entries())}}for(let t of[`Error`,`RegExp`,`URL`])e.prototype[`$`+t]=function(e){return`${t}(${e})`};for(let t of[`Int8Array`,`Uint8Array`,`Uint8ClampedArray`,`Int16Array`,`Uint16Array`,`Int32Array`,`Uint32Array`,`Float32Array`,`Float64Array`])e.prototype[`$`+t]=function(e){return`${t}[${e.join(`,`)}]`};for(let t of[`BigInt64Array`,`BigUint64Array`])e.prototype[`$`+t]=function(e){return`${t}[${e.join(`n,`)}${e.length>0?`n`:``}]`};return e})(),g=[1779033703,-1150833019,1013904242,-1521486534,1359893119,-1694144372,528734635,1541459225],_=[1116352408,1899447441,-1245643825,-373957723,961987163,1508970993,-1841331548,-1424204075,-670586216,310598401,607225278,1426881987,1925078388,-2132889090,-1680079193,-1046744716,-459576895,-272742522,264347078,604807628,770255983,1249150122,1555081692,1996064986,-1740746414,-1473132947,-1341970488,-1084653625,-958395405,-710438585,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,-2117940946,-1838011259,-1564481375,-1474664885,-1035236496,-949202525,-778901479,-694614492,-200395387,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,-2067236844,-1933114872,-1866530822,-1538233109,-1090935817,-965641998],v=[];var y=class{_data=new b;_hash=new b([...g]);_nDataBytes=0;_minBufferSize=0;finalize(e){e&&this._append(e);let t=this._nDataBytes*8,n=this._data.sigBytes*8;return this._data.words[n>>>5]|=128<<24-n%32,this._data.words[(n+64>>>9<<4)+14]=Math.floor(t/4294967296),this._data.words[(n+64>>>9<<4)+15]=t,this._data.sigBytes=this._data.words.length*4,this._process(),this._hash}_doProcessBlock(e,t){let n=this._hash.words,r=n[0],i=n[1],a=n[2],o=n[3],s=n[4],c=n[5],l=n[6],u=n[7];for(let n=0;n<64;n++){if(n<16)v[n]=e[t+n]|0;else{let e=v[n-15],t=(e<<25|e>>>7)^(e<<14|e>>>18)^e>>>3,r=v[n-2],i=(r<<15|r>>>17)^(r<<13|r>>>19)^r>>>10;v[n]=t+v[n-7]+i+v[n-16]}let d=s&c^~s&l,f=r&i^r&a^i&a,p=(r<<30|r>>>2)^(r<<19|r>>>13)^(r<<10|r>>>22),m=(s<<26|s>>>6)^(s<<21|s>>>11)^(s<<7|s>>>25),h=u+m+d+_[n]+v[n],g=p+f;u=l,l=c,c=s,s=o+h|0,o=a,a=i,i=r,r=h+g|0}n[0]=n[0]+r|0,n[1]=n[1]+i|0,n[2]=n[2]+a|0,n[3]=n[3]+o|0,n[4]=n[4]+s|0,n[5]=n[5]+c|0,n[6]=n[6]+l|0,n[7]=n[7]+u|0}_append(e){typeof e==`string`&&(e=b.fromUtf8(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes}_process(e){let t,n=this._data.sigBytes/64;n=e?Math.ceil(n):Math.max((n|0)-this._minBufferSize,0);let r=n*16,i=Math.min(r*4,this._data.sigBytes);if(r){for(let e=0;e<r;e+=16)this._doProcessBlock(this._data.words,e);t=this._data.words.splice(0,r),this._data.sigBytes-=i}return new b(t,i)}},b=class e{words;sigBytes;constructor(e,t){e=this.words=e||[],this.sigBytes=t===void 0?e.length*4:t}static fromUtf8(t){let n=unescape(encodeURIComponent(t)),r=n.length,i=[];for(let e=0;e<r;e++)i[e>>>2]|=(n.charCodeAt(e)&255)<<24-e%4*8;return new e(i,r)}toBase64(){let e=[];for(let t=0;t<this.sigBytes;t+=3){let n=this.words[t>>>2]>>>24-t%4*8&255,r=this.words[t+1>>>2]>>>24-(t+1)%4*8&255,i=this.words[t+2>>>2]>>>24-(t+2)%4*8&255,a=n<<16|r<<8|i;for(let n=0;n<4&&t*8+n*6<this.sigBytes*8;n++)e.push(`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_`.charAt(a>>>6*(3-n)&63))}return e.join(``)}concat(e){if(this.words[this.sigBytes>>>2]&=4294967295<<32-this.sigBytes%4*8,this.words.length=Math.ceil(this.sigBytes/4),this.sigBytes%4)for(let t=0;t<e.sigBytes;t++){let n=e.words[t>>>2]>>>24-t%4*8&255;this.words[this.sigBytes+t>>>2]|=n<<24-(this.sigBytes+t)%4*8}else for(let t=0;t<e.sigBytes;t+=4)this.words[this.sigBytes+t>>>2]=e.words[t>>>2];this.sigBytes+=e.sigBytes}};function x(e){return new y().finalize(e).toBase64()}function S(e){return x(f(e))}function ee(e){return S(e)}function te(){let e={};function t(t,...n){let r=e[t]||[];for(let e=0,t=r.length;e<t;e++){let t=r[e];t&&t(...n)}}function n(n,...r){t(n,...r),delete e[n]}function r(t,n){return(e[t]||=[]).push(n),()=>{e[t]=e[t]?.filter(e=>n!==e)}}function i(e,t){let n=r(e,((...e)=>(n(),t(...e))));return n}return{_listeners:e,emit:t,emitOnce:n,on:r,once:i}}function C(e=21){let t=``,n=e;for(;n--;)t+=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`[Math.random()*64|0];return t}var w=Symbol.for(`immer-nothing`),T=Symbol.for(`immer-draftable`),E=Symbol.for(`immer-state`),ne=[function(e){return`The plugin for '${e}' has not been loaded into Immer. To enable the plugin, import and call \`enable${e}()\` when initializing your application.`},function(e){return`produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${e}'`},`This object has been frozen and should not be mutated`,function(e){return`Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? `+e},`An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.`,`Immer forbids circular references`,"The first or second argument to `produce` must be a function","The third argument to `produce` must be a function or undefined","First argument to `createDraft` must be a plain object, an array, or an immerable object","First argument to `finishDraft` must be a draft returned by `createDraft`",function(e){return`'current' expects a draft, got: ${e}`},`Object.defineProperty() cannot be used on an Immer draft`,`Object.setPrototypeOf() cannot be used on an Immer draft`,`Immer only supports deleting array indices`,`Immer only supports setting array indices and the 'length' property`,function(e){return`'original' expects a draft, got: ${e}`}];function D(e,...t){{let n=ne[e],r=I(n)?n.apply(null,t):n;throw Error(`[Immer] ${r}`)}}var O=Object,k=O.getPrototypeOf,re=`constructor`,ie=`prototype`,ae=`configurable`,oe=`enumerable`,se=`writable`,ce=`value`,A=e=>!!e&&!!e[E];function j(e){return e?de(e)||he(e)||!!e[T]||!!e[re]?.[T]||ge(e)||_e(e):!1}var le=O[ie][re].toString(),ue=new WeakMap;function de(e){if(!e||!F(e))return!1;let t=k(e);if(t===null||t===O[ie])return!0;let n=O.hasOwnProperty.call(t,re)&&t[re];if(n===Object)return!0;if(!I(n))return!1;let r=ue.get(n);return r===void 0&&(r=Function.toString.call(n),ue.set(n,r)),r===le}function fe(e,t,n=!0){M(e)===0?(n?Reflect.ownKeys(e):O.keys(e)).forEach(n=>{t(n,e[n],e)}):e.forEach((n,r)=>t(r,n,e))}function M(e){let t=e[E];return t?t.type_:he(e)?1:ge(e)?2:_e(e)?3:0}var N=(e,t,n=M(e))=>n===2?e.has(t):O[ie].hasOwnProperty.call(e,t),P=(e,t,n=M(e))=>n===2?e.get(t):e[t],pe=(e,t,n,r=M(e))=>{r===2?e.set(t,n):r===3?e.add(n):e[t]=n};function me(e,t){return e===t?e!==0||1/e==1/t:e!==e&&t!==t}var he=Array.isArray,ge=e=>e instanceof Map,_e=e=>e instanceof Set,F=e=>typeof e==`object`,I=e=>typeof e==`function`,ve=e=>typeof e==`boolean`;function ye(e){let t=+e;return Number.isInteger(t)&&String(t)===e}var be=e=>F(e)?e?.[E]:null,L=e=>e.copy_||e.base_,xe=e=>e.modified_?e.copy_:e.base_;function Se(e,t){if(ge(e))return new Map(e);if(_e(e))return new Set(e);if(he(e))return Array[ie].slice.call(e);let n=de(e);if(t===!0||t===`class_only`&&!n){let t=O.getOwnPropertyDescriptors(e);delete t[E];let n=Reflect.ownKeys(t);for(let r=0;r<n.length;r++){let i=n[r],a=t[i];a[se]===!1&&(a[se]=!0,a[ae]=!0),(a.get||a.set)&&(t[i]={[ae]:!0,[se]:!0,[oe]:a[oe],[ce]:e[i]})}return O.create(k(e),t)}{let t=k(e);if(t!==null&&n)return{...e};let r=O.create(t);return O.assign(r,e)}}function Ce(e,t=!1){return Ee(e)||A(e)||!j(e)?e:(M(e)>1&&O.defineProperties(e,{set:Te,add:Te,clear:Te,delete:Te}),O.freeze(e),t&&fe(e,(e,t)=>{Ce(t,!0)},!1),e)}function we(){D(2)}var Te={[ce]:we};function Ee(e){return e===null||!F(e)||O.isFrozen(e)}var De=`MapSet`,Oe=`Patches`,ke=`ArrayMethods`,Ae={};function R(e){let t=Ae[e];return t||D(0,e),t}var je=e=>!!Ae[e];function Me(e,t){Ae[e]||(Ae[e]=t)}var Ne,Pe=()=>Ne,Fe=(e,t)=>({drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:new Set,processedForPatches_:new Set,mapSetPlugin_:je(De)?R(De):void 0,arrayMethodsPlugin_:je(ke)?R(ke):void 0});function Ie(e,t){t&&(e.patchPlugin_=R(Oe),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function Le(e){Re(e),e.drafts_.forEach(Be),e.drafts_=null}function Re(e){e===Ne&&(Ne=e.parent_)}var ze=e=>Ne=Fe(Ne,e);function Be(e){let t=e[E];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function Ve(e,t){t.unfinalizedDrafts_=t.drafts_.length;let n=t.drafts_[0];if(e!==void 0&&e!==n){n[E].modified_&&(Le(t),D(4)),j(e)&&(e=He(t,e));let{patchPlugin_:r}=t;r&&r.generateReplacementPatches_(n[E].base_,e,t)}else e=He(t,n);return Ue(t,e,!0),Le(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e===w?void 0:e}function He(e,t){if(Ee(t))return t;let n=t[E];if(!n)return Ze(t,e.handledSet_,e);if(!Ge(n,e))return t;if(!n.modified_)return n.base_;if(!n.finalized_){let{callbacks_:t}=n;if(t)for(;t.length>0;)t.pop()(e);Ye(n,e)}return n.copy_}function Ue(e,t,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&Ce(t,n)}function We(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var Ge=(e,t)=>e.scope_===t,Ke=[];function qe(e,t,n,r){let i=L(e),a=e.type_;if(r!==void 0&&P(i,r,a)===t){pe(i,r,n,a);return}if(!e.draftLocations_){let t=e.draftLocations_=new Map;fe(i,(e,n)=>{if(A(n)){let r=t.get(n)||[];r.push(e),t.set(n,r)}})}let o=e.draftLocations_.get(t)??Ke;for(let e of o)pe(i,e,n,a)}function Je(e,t,n){e.callbacks_.push(function(r){let i=t;if(!i||!Ge(i,r))return;r.mapSetPlugin_?.fixSetContents(i);let a=xe(i);qe(e,i.draft_??i,a,n),Ye(i,r)})}function Ye(e,t){if(e.modified_&&!e.finalized_&&(e.type_===3||e.type_===1&&e.allIndicesReassigned_||(e.assigned_?.size??0)>0)){let{patchPlugin_:n}=t;if(n){let r=n.getPath(e);r&&n.generatePatches_(e,r,t)}We(e)}}function Xe(e,t,n){let{scope_:r}=e;if(A(n)){let i=n[E];Ge(i,r)&&i.callbacks_.push(function(){at(e),qe(e,n,xe(i),t)})}else j(n)&&e.callbacks_.push(function(){let i=L(e);e.type_===3?i.has(n)&&Ze(n,r.handledSet_,r):P(i,t,e.type_)===n&&r.drafts_.length>1&&(e.assigned_.get(t)??!1)===!0&&e.copy_&&Ze(P(e.copy_,t,e.type_),r.handledSet_,r)})}function Ze(e,t,n){return!n.immer_.autoFreeze_&&n.unfinalizedDrafts_<1||A(e)||t.has(e)||!j(e)||Ee(e)?e:(t.add(e),fe(e,(r,i)=>{if(A(i)){let t=i[E];Ge(t,n)&&(pe(e,r,xe(t),e.type_),We(t))}else j(i)&&Ze(i,t,n)}),e)}function Qe(e,t){let n=he(e),r={type_:+!!n,scope_:t?t.scope_:Pe(),modified_:!1,finalized_:!1,assigned_:void 0,parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1,callbacks_:void 0},i=r,a=$e;n&&(i=[r],a=z);let{revoke:o,proxy:s}=Proxy.revocable(i,a);return r.draft_=s,r.revoke_=o,[s,r]}var $e={get(e,t){if(t===E)return e;let n=e.scope_.arrayMethodsPlugin_,r=e.type_===1&&typeof t==`string`;if(r&&n?.isArrayOperationMethod(t))return n.createMethodInterceptor(e,t);let i=L(e);if(!N(i,t,e.type_))return nt(e,i,t);let a=i[t];if(e.finalized_||!j(a)||r&&e.operationMethod&&n?.isMutatingArrayMethod(e.operationMethod)&&ye(t))return a;if(a===et(e.base_,t)||tt(e,t,a)){at(e);let n=e.type_===1?+t:t,r=st(e.scope_,a,e,n);return e.copy_[n]=r}return a},has(e,t){return t in L(e)},ownKeys(e){return Reflect.ownKeys(L(e))},set(e,t,n){let r=rt(L(e),t);if(r?.set)return r.set.call(e.draft_,n),!0;if(!e.modified_){let r=et(L(e),t),i=r?.[E];if(i&&i.base_===n)return e.copy_[t]=n,e.assigned_.set(t,!1),!0;if(me(n,r)&&(n!==void 0||N(e.base_,t,e.type_)))return!0;at(e),it(e)}return e.copy_[t]===n&&(n!==void 0||N(e.copy_,t,e.type_))||Number.isNaN(n)&&Number.isNaN(e.copy_[t])?!0:(e.copy_[t]=n,e.assigned_.set(t,!0),Xe(e,t,n),!0)},deleteProperty(e,t){return at(e),et(e.base_,t)!==void 0||t in e.base_?(e.assigned_.set(t,!1),it(e)):e.assigned_.delete(t),e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){let n=L(e),r=Reflect.getOwnPropertyDescriptor(n,t);return r&&{[se]:!0,[ae]:e.type_!==1||t!==`length`,[oe]:r[oe],[ce]:n[t]}},defineProperty(){D(11)},getPrototypeOf(e){return k(e.base_)},setPrototypeOf(){D(12)}},z={};for(let e in $e){let t=$e[e];z[e]=function(){let e=arguments;return e[0]=e[0][0],t.apply(this,e)}}z.deleteProperty=function(e,t){return isNaN(parseInt(t))&&D(13),z.set.call(this,e,t,void 0)},z.set=function(e,t,n){return t!==`length`&&isNaN(parseInt(t))&&D(14),$e.set.call(this,e[0],t,n,e[0])};function et(e,t){let n=e[E];return(n?L(n):e)[t]}function tt(e,t,n){return e.type_!==1||!e.allIndicesReassigned_||e.assigned_?.get(t)||!j(n)||n[E]?!1:e.baseRefs_.has(n)}function nt(e,t,n){let r=rt(t,n);return r?ce in r?r[ce]:r.get?.call(e.draft_):void 0}function rt(e,t){if(!(t in e))return;let n=k(e);for(;n;){let e=Object.getOwnPropertyDescriptor(n,t);if(e)return e;n=k(n)}}function it(e){e.modified_||(e.modified_=!0,e.parent_&&it(e.parent_))}function at(e){e.copy_||=(e.assigned_=new Map,Se(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var ot=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(e,t,n)=>{if(I(e)&&!I(t)){let n=t;t=e;let r=this;return function(e=n,...i){return r.produce(e,e=>t.call(this,e,...i))}}I(t)||D(6),n!==void 0&&!I(n)&&D(7);let r;if(j(e)){let i=ze(this),a=st(i,e,void 0),o=!0;try{r=t(a),o=!1}finally{o?Le(i):Re(i)}return Ie(i,n),Ve(r,i)}if(!e||!F(e)){if(r=t(e),r===void 0&&(r=e),r===w&&(r=void 0),this.autoFreeze_&&Ce(r,!0),n){let t=[],i=[];R(Oe).generateReplacementPatches_(e,r,{patches_:t,inversePatches_:i}),n(t,i)}return r}D(1,e)},this.produceWithPatches=(e,t)=>{if(I(e))return(t,...n)=>this.produceWithPatches(t,t=>e(t,...n));let n,r;return[this.produce(e,t,(e,t)=>{n=e,r=t}),n,r]},ve(e?.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),ve(e?.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),ve(e?.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){j(e)||D(8),A(e)&&(e=ct(e));let t=ze(this),n=st(t,e,void 0);return n[E].isManual_=!0,Re(t),n}finishDraft(e,t){let n=e&&e[E];(!n||!n.isManual_)&&D(9);let{scope_:r}=n;return Ie(r,t),Ve(void 0,r)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let n;for(n=t.length-1;n>=0;n--){let r=t[n];if(r.path.length===0&&r.op===`replace`){e=r.value;break}}n>-1&&(t=t.slice(n+1));let r=R(Oe).applyPatches_;return A(e)?r(e,t):this.produce(e,e=>r(e,t))}};function st(e,t,n,r){let[i,a]=ge(t)?R(De).proxyMap_(t,n):_e(t)?R(De).proxySet_(t,n):Qe(t,n);return(n?.scope_??Pe()).drafts_.push(i),a.callbacks_=n?.callbacks_??[],a.key_=r,n&&r!==void 0?Je(n,a,r):a.callbacks_.push(function(e){e.mapSetPlugin_?.fixSetContents(a);let{patchPlugin_:t}=e;a.modified_&&t&&t.generatePatches_(a,[],e)}),i}function ct(e){return A(e)||D(10,e),lt(e)}function lt(e){if(!j(e)||Ee(e))return e;let t=e[E],n,r=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,n=Se(e,t.scope_.immer_.useStrictShallowCopy_),r=t.scope_.immer_.shouldUseStrictIteration()}else n=Se(e,!0);return fe(n,(e,t)=>{pe(n,e,lt(t))},r),t&&(t.finalized_=!1),n}function ut(){ne.push(`Sets cannot have "replace" patches.`,function(e){return`Unsupported patch operation: `+e},function(e){return`Cannot apply patch, path doesn't resolve: `+e},`Patching reserved attributes like __proto__, prototype and constructor is not allowed`);function e(n,r=[]){if(n.key_!==void 0){let e=n.parent_.copy_??n.parent_.base_,t=be(P(e,n.key_)),i=P(e,n.key_);if(i===void 0||i!==n.draft_&&i!==n.base_&&i!==n.copy_||t!=null&&t.base_!==n.base_)return null;let a=n.parent_.type_===3,o;if(a){let e=n.parent_;o=Array.from(e.drafts_.keys()).indexOf(n.key_)}else o=n.key_;if(!(a&&e.size>o||N(e,o)))return null;r.push(o)}if(n.parent_)return e(n.parent_,r);r.reverse();try{t(n.copy_,r)}catch{return null}return r}function t(e,t){let n=e;for(let e=0;e<t.length-1;e++){let r=t[e];if(n=P(n,r),!F(n)||n===null)throw Error(`Cannot resolve path at '${t.join(`/`)}'`)}return n}let n=`replace`,r=`remove`;function i(e,t,n){if(e.scope_.processedForPatches_.has(e))return;e.scope_.processedForPatches_.add(e);let{patches_:r,inversePatches_:i}=n;switch(e.type_){case 0:case 2:return o(e,t,r,i);case 1:return a(e,t,r,i);case 3:return s(e,t,r,i)}}function a(e,t,i,a){let{base_:o,assigned_:s}=e,c=e.copy_;c.length<o.length&&([o,c]=[c,o],[i,a]=[a,i]);let l=e.allIndicesReassigned_===!0;for(let e=0;e<o.length;e++){let r=c[e],u=o[e];if((l||s?.get(e.toString()))&&r!==u){let o=r?.[E];if(o&&o.modified_)continue;let s=t.concat([e]);i.push({op:n,path:s,value:d(r)}),a.push({op:n,path:s,value:d(u)})}}for(let e=o.length;e<c.length;e++){let n=t.concat([e]);i.push({op:`add`,path:n,value:d(c[e])})}for(let e=c.length-1;o.length<=e;--e){let n=t.concat([e]);a.push({op:r,path:n})}}function o(e,t,i,a){let{base_:o,copy_:s,type_:c}=e;fe(e.assigned_,(e,l)=>{let u=P(o,e,c),f=P(s,e,c),p=l?N(o,e)?n:`add`:r;if(u===f&&p===n)return;let m=t.concat(e);i.push(p===r?{op:p,path:m}:{op:p,path:m,value:d(f)}),a.push(p===`add`?{op:r,path:m}:p===r?{op:`add`,path:m,value:d(u)}:{op:n,path:m,value:d(u)})})}function s(e,t,n,i){let{base_:a,copy_:o}=e,s=0;a.forEach(e=>{if(!o.has(e)){let a=t.concat([s]);n.push({op:r,path:a,value:e}),i.unshift({op:`add`,path:a,value:e})}s++}),s=0,o.forEach(e=>{if(!a.has(e)){let a=t.concat([s]);n.push({op:`add`,path:a,value:e}),i.unshift({op:r,path:a,value:e})}s++})}function c(e,t,r){let{patches_:i,inversePatches_:a}=r;i.push({op:n,path:[],value:t===w?void 0:t}),a.push({op:n,path:[],value:e})}function l(e,t){return t.forEach(t=>{let{path:i,op:a}=t,o=e;for(let e=0;e<i.length-1;e++){let t=M(o),n=i[e];typeof n!=`string`&&typeof n!=`number`&&(n=``+n),(t===0||t===1)&&(n===`__proto__`||n===re)&&D(19),I(o)&&n===ie&&D(19),o=P(o,n),(o===null||!F(o))&&D(18,i.join(`/`))}let s=M(o),c=u(t.value),l=i[i.length-1];switch(a){case n:switch(s){case 2:return o.set(l,c);case 3:D(16);default:return o[l]=c}case`add`:switch(s){case 1:return l===`-`?o.push(c):o.splice(l,0,c);case 2:return o.set(l,c);case 3:return o.add(c);default:return o[l]=c}case r:switch(s){case 1:return o.splice(l,1);case 2:return o.delete(l);case 3:return o.delete(t.value);default:return delete o[l]}default:D(17,a)}}),e}function u(e){if(!j(e))return e;if(he(e))return e.map(u);if(ge(e))return new Map(Array.from(e.entries()).map(([e,t])=>[e,u(t)]));if(_e(e))return new Set(Array.from(e).map(u));let t=Object.create(k(e));for(let n in e)t[n]=u(e[n]);return N(e,T)&&(t[T]=e[T]),t}function d(e){return A(e)?u(e):e}Me(Oe,{applyPatches_:l,generatePatches_:i,generateReplacementPatches_:c,getPath:e})}globalThis.Iterator?.from;var dt=new ot,ft=dt.produce,pt=dt.produceWithPatches.bind(dt),mt=dt.applyPatches.bind(dt);function ht(e,t){if(e.add(t),e.size>1e3){let t=e.values().next().value;t!==void 0&&e.delete(t)}}function gt(e){let{enablePatches:t=!1}=e;t&&ut();let n=te(),r=e.initialValue,i=new Set;return{on:n.on,value:()=>r,patch:(e,t=C())=>{i.has(t)||(ut(),r=mt(r,e),ht(i,t),n.emit(`updated`,r,void 0,t))},mutate:(e,a=C())=>{if(!i.has(a)){if(ht(i,a),t){let[t,i]=pt(r,e);if(t===r)return;r=t,n.emit(`updated`,r,i,a)}else{let t=ft(r,e);if(t===r)return;r=t,n.emit(`updated`,r,void 0,a)}}},syncIds:i}}const _t=typeof self==`object`?self:globalThis,vt=new Set([`Error`,`EvalError`,`RangeError`,`ReferenceError`,`SyntaxError`,`TypeError`,`URIError`,`AggregateError`]),yt=new Set([`Boolean`,`Number`,`String`,`Int8Array`,`Uint8Array`,`Uint8ClampedArray`,`Int16Array`,`Uint16Array`,`Int32Array`,`Uint32Array`,`Float16Array`,`Float32Array`,`Float64Array`,`BigInt64Array`,`BigUint64Array`]);function bt(e,t){let n=(t,n)=>(e.set(n,t),t),r=i=>{if(e.has(i))return e.get(i);let[a,o]=t[i];switch(a){case 0:case-1:return n(o,i);case 1:{let e=n([],i);for(let t of o)e.push(r(t));return e}case 2:{let e=n({},i);for(let[t,n]of o)e[r(t)]=r(n);return e}case 3:return n(new Date(o),i);case 4:{let{source:e,flags:t}=o;return n(new RegExp(e,t),i)}case 5:{let e=n(new Map,i);for(let[t,n]of o)e.set(r(t),r(n));return e}case 6:{let e=n(new Set,i);for(let t of o)e.add(r(t));return e}case 7:{let{name:e,message:t}=o,r=vt.has(e)?_t[e]:void 0;return n(new(r??_t.Error)(t),i)}case 8:return n(BigInt(o),i);case`BigInt`:return n(Object(BigInt(o)),i);case`ArrayBuffer`:return n(new Uint8Array(o).buffer,o);case`DataView`:{let{buffer:e}=new Uint8Array(o);return n(new DataView(e),o)}}if(typeof a==`string`&&yt.has(a))return n(new _t[a](o),i);throw TypeError(`unable to deserialize unsafe or unknown type: ${String(a)}`)};return r}function xt(e){return bt(new Map,e)(0)}const{toString:St}={},{keys:Ct}=Object;function wt(e){let t=typeof e;if(t!==`object`||!e)return[0,t];let n=St.call(e).slice(8,-1);switch(n){case`Array`:return[1,``];case`Object`:return[2,``];case`Date`:return[3,``];case`RegExp`:return[4,``];case`Map`:return[5,``];case`Set`:return[6,``];case`DataView`:return[1,n]}return n.includes(`Array`)?[1,n]:n.includes(`Error`)?[7,n]:[2,n]}function Tt([e,t]){return e===0&&(t===`function`||t===`symbol`)}function Et(e,t,n,r){let i=(e,t)=>{let i=r.push(e)-1;return n.set(t,i),i},a=r=>{if(n.has(r))return n.get(r);let[o,s]=wt(r);switch(o){case 0:{let t=r;switch(s){case`bigint`:o=8,t=r.toString();break;case`function`:case`symbol`:if(e)throw TypeError(`unable to serialize ${s}`);t=null;break;case`undefined`:return i([-1],r)}return i([o,t],r)}case 1:{if(s){let e=r;return s===`DataView`?e=new Uint8Array(r.buffer):s===`ArrayBuffer`&&(e=new Uint8Array(r)),i([s,[...e]],r)}let e=[],t=i([o,e],r);for(let t of r)e.push(a(t));return t}case 2:{if(s)switch(s){case`BigInt`:return i([s,r.toString()],r);case`Boolean`:case`Number`:case`String`:return i([s,r.valueOf()],r)}if(t&&`toJSON`in r)return a(r.toJSON());let n=[],c=i([o,n],r);for(let t of Ct(r))(e||!Tt(wt(r[t])))&&n.push([a(t),a(r[t])]);return c}case 3:return i([o,r.toISOString()],r);case 4:{let{source:e,flags:t}=r;return i([o,{source:e,flags:t}],r)}case 5:{let t=[],n=i([o,t],r);for(let[n,i]of r)(e||!(Tt(wt(n))||Tt(wt(i))))&&t.push([a(n),a(i)]);return n}case 6:{let t=[],n=i([o,t],r);for(let n of r)(e||!Tt(wt(n)))&&t.push(a(n));return n}}let{message:c}=r;return i([o,{name:s,message:c}],r)};return a}function Dt(e,t={}){let n=[];return Et(!(t.json||t.lossy),!!t.json,new Map,n)(e),n}const{parse:Ot,stringify:kt}=JSON,At={json:!0,lossy:!0};function jt(e){return xt(Ot(e))}function Mt(e){return kt(Dt(e,At))}function Nt(e){return xt(e)}function Pt(e){return Mt(e)}function Ft(e){return jt(e)}var It=class extends Error{name=`StreamClosedError`};function Lt(e={}){let t=e.id??C(),n=Math.max(0,e.replayWindow??0),r=te(),i=new AbortController,a=[],o=!1,s=0;function c(e){if(o)throw new It(`Cannot write to a closed stream "${t}"`);s+=1,n>0&&(a.push({seq:s,chunk:e}),a.length>n&&(a.length-n===1?a.shift():a.splice(0,a.length-n))),r.emit(`chunk`,s,e)}function l(e){if(o)return;o=!0;let t=zt(e);i.abort(e),r.emit(`end`,t)}function u(){o||(o=!0,i.signal.aborted||i.abort(`stream closed`),r.emit(`end`,void 0))}function d(e){o||i.signal.aborted||i.abort(e??`aborted`)}let f=new WritableStream({write(e){c(e)},close(){u()},abort(e){l(e)}});return{id:t,signal:i.signal,get closed(){return o},get lastSeq(){return s},write:c,error:l,close:u,abort:d,writable:f,events:r,buffer:a}}function Rt(e={}){let t=e.id??C(),n=Math.max(1,e.highWaterMark??256),r=[],i=0,a=!1,o=!1,s,c,l,u;function d(){if(c){if(r.length>0){let e=r.shift(),t=c;c=void 0,t.resolve({value:e,done:!1});return}if(a){let e=c;if(c=void 0,s){let t=Error(s.message);t.name=s.name,e.reject(t)}else e.resolve({value:void 0,done:!0})}}}function f(){if(l){for(;r.length>0;){let e=r.shift();try{l.enqueue(e)}catch{break}}if(a&&l){try{if(s){let e=Error(s.message);e.name=s.name,l.error(e)}else l.close()}catch{}l=void 0}}}function p(t,s){if(!(a||o)&&!(t<=i)){if(i=t,r.push(s),r.length>n){let t=r.length-n;r.splice(0,t),e.onOverflow?.(t)}d(),u&&f()}}function m(e){a||(a=!0,s=e,d(),u&&f())}function h(){o||a||(o=!0,e.onCancel?.(),m(void 0))}function g(){return u||(u=new ReadableStream({start(e){l=e,f()},cancel(){h()}}),u)}return{id:t,get cancelled(){return o},get done(){return a},get lastSeenSeq(){return i},get readable(){return g()},cancel:h,_push:p,_end:m,[Symbol.asyncIterator](){return{next(){if(r.length>0)return Promise.resolve({value:r.shift(),done:!1});if(a){if(s){let e=Error(s.message);return e.name=s.name,Promise.reject(e)}return Promise.resolve({value:void 0,done:!0})}return new Promise((e,t)=>{c={resolve:e,reject:t}})},return(){return h(),Promise.resolve({value:void 0,done:!0})}}}}}function zt(e){if(e instanceof Error)return{name:e.name||`Error`,message:e.message};if(typeof e==`string`)return{name:`Error`,message:e};try{return{name:`Error`,message:JSON.stringify(e)}}catch{return{name:`Error`,message:String(e)}}}function Bt(e){return e.replace(/[^\w-]+/g,`_`).slice(0,128)}String.fromCharCode;const Vt=/^[\s\w\0+.-]{2,}:([/\\]{1,2})/,Ht=/^[\s\w\0+.-]{2,}:([/\\]{2})?/,Ut=/^([/\\]\s*){2,}[^/\\]/,Wt=/\/$|\/\?|\/#/,Gt=/^\.?\//;function Kt(e,t={}){return typeof t==`boolean`&&(t={acceptRelative:t}),t.strict?Vt.test(e):Ht.test(e)||(t.acceptRelative?Ut.test(e):!1)}function qt(e=``,t){return t?Wt.test(e):e.endsWith(`/`)}function Jt(e=``,t){if(!t)return(qt(e)?e.slice(0,-1):e)||`/`;if(!qt(e,!0))return e||`/`;let n=e,r=``,i=e.indexOf(`#`);i!==-1&&(n=e.slice(0,i),r=e.slice(i));let[a,...o]=n.split(`?`);return((a.endsWith(`/`)?a.slice(0,-1):a)||`/`)+(o.length>0?`?${o.join(`?`)}`:``)+r}function Yt(e=``,t){if(!t)return e.endsWith(`/`)?e:e+`/`;if(qt(e,!0))return e||`/`;let n=e,r=``,i=e.indexOf(`#`);if(i!==-1&&(n=e.slice(0,i),r=e.slice(i),!n))return r;let[a,...o]=n.split(`?`);return a+`/`+(o.length>0?`?${o.join(`?`)}`:``)+r}function Xt(e,t){if(Zt(t)||Kt(e))return e;let n=Jt(t);if(e.startsWith(n)){let t=e[n.length];if(!t||t===`/`||t===`?`)return e}return $t(n,e)}function Zt(e){return!e||e===`/`}function Qt(e){return e&&e!==`/`}function $t(e,...t){let n=e||``;for(let e of t.filter(e=>Qt(e)))if(n){let t=e.replace(Gt,``);n=Yt(n)+t}else n=e;return n}function en(e,t){let n=e.match(Ht);return n||=e.match(/^\/{2,}/),n?t+e.slice(n[0].length):t+e}function tn(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}const nn=Math.random.bind(Math);function rn(e=21){let t=``,n=e;for(;n--;)t+=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`[nn()*64|0];return t}const an=e=>e,on=an,{clearTimeout:sn,setTimeout:cn}=globalThis;function ln(e,t){let{post:n,on:r,off:i=()=>{},eventNames:a=[],serialize:o=an,deserialize:s=on,resolver:c,bind:l=`rpc`,timeout:u=6e4,proxify:d=!0}=t,f=!1,p=new Map,m,h;async function g(e,r,i,a){if(f)throw Error(`[birpc] rpc is closed, cannot call "${e}"`);let s={m:e,a:r,t:`q`};a&&(s.o=!0);let c=async e=>n(o(e));if(i){await c(s);return}if(m)try{await m}finally{m=void 0}let{promise:l,resolve:d,reject:g}=tn(),_=rn();s.i=_;let v;async function y(n=s){return u>=0&&(v=cn(()=>{try{if(t.onTimeoutError?.call(h,e,r)!==!0)throw Error(`[birpc] timeout on calling "${e}"`)}catch(e){g(e)}p.delete(_)},u),typeof v==`object`&&(v=v.unref?.())),p.set(_,{resolve:d,reject:g,timeoutId:v,method:e}),await c(n),l}try{t.onRequest?await t.onRequest.call(h,s,y,d):await y()}catch(e){if(t.onGeneralError?.call(h,e)!==!0)throw e;return}finally{sn(v),p.delete(_)}return l}let _={$call:(e,...t)=>g(e,t,!1),$callOptional:(e,...t)=>g(e,t,!1,!0),$callEvent:(e,...t)=>g(e,t,!0),$callRaw:e=>g(e.method,e.args,e.event,e.optional),$rejectPendingCalls:y,get $closed(){return f},get $meta(){return t.meta},$close:v,$functions:e};h=d?new Proxy({},{get(t,n){if(Object.hasOwn(_,n))return _[n];if(n===`then`&&!a.includes(`then`)&&!(`then`in e))return;let r=(...e)=>g(n,e,!0);if(a.includes(n))return r.asEvent=r,r;let i=(...e)=>g(n,e,!1);return i.asEvent=r,i}}):_;function v(e){f=!0,p.forEach(({reject:t,method:n})=>{let r=Error(`[birpc] rpc is closed, cannot call "${n}"`);if(e)return e.cause??=r,t(e);t(r)}),p.clear(),i(b)}function y(e){let t=Array.from(p.values()).map(({method:t,reject:n})=>e?e({method:t,reject:n}):n(Error(`[birpc]: rejected pending call "${t}".`)));return p.clear(),t}async function b(r,...i){let a;try{a=s(r)}catch(e){if(t.onGeneralError?.call(h,e)!==!0)throw e;return}if(a.t===`q`){let{m:r,a:s,o:u}=a,d,f,p=await(c?c.call(h,r,e[r]):e[r]);if(u&&(p||=()=>void 0),!p)f=Error(`[birpc] function "${r}" not found`);else try{d=await p.apply(l===`rpc`?h:e,s)}catch(e){f=e}if(a.i){if(f&&t.onFunctionError&&t.onFunctionError.call(h,f,r,s)===!0)return;if(!f)try{await n(o({t:`s`,i:a.i,r:d}),...i);return}catch(e){if(f=e,t.onGeneralError?.call(h,e,r,s)!==!0)throw e}try{await n(o({t:`s`,i:a.i,e:f}),...i)}catch(e){if(t.onGeneralError?.call(h,e,r,s)!==!0)throw e}}}else{let{i:e,r:t,e:n}=a,r=p.get(e);r&&(sn(r.timeoutId),n?r.reject(n):r.resolve(t)),p.delete(e)}}return m=r(b),h}const un=`__connection.json`,dn=`__DEVFRAME_CONNECTION__`,fn=`devframe_otp`,pn=`devframe_auth_token`;c.postMessage.remoteAssetsError;var mn=class{cacheMap=new Map;options;keySerializer;constructor(e){this.options=e,this.keySerializer=e.keySerializer||(e=>ee(e))}updateOptions(e){this.options={...this.options,...e}}cached(e,t){let n=this.cacheMap.get(e);if(n)return n.get(this.keySerializer(t))}has(e,t){return this.cacheMap.get(e)?.has(this.keySerializer(t))??!1}apply(e,t){let n=this.cacheMap.get(e.m)||new Map;n.set(this.keySerializer(e.a),t),this.cacheMap.set(e.m,n)}validate(e){return this.options.functions.includes(e)}clear(e){e?this.cacheMap.delete(e):this.cacheMap.clear()}};const B=d({docsBase:`https://devfra.me/errors`,codes:{DF0019:{why:e=>`RPC function "${e.name}" has \`agent\` set but \`jsonSerializable\` is \`false\`; MCP requires JSON-serializable data.`,fix:"Remove `jsonSerializable: false`, or remove `agent` to keep it RPC-only."},DF0020:{why:e=>`RPC function "${e.name}" declares \`jsonSerializable: true\` but the value at "${e.path}" is a ${e.type}.`,fix:"Either drop `jsonSerializable: true` (falls back to structured-clone) or change the value to a JSON-safe shape."},DF0021:{why:e=>`RPC function "${e.name}" is already registered`,fix:"Use the `force` parameter to overwrite an existing registration."},DF0022:{why:e=>`RPC function "${e.name}" is not registered. Use register() to add new functions.`},DF0023:{why:e=>`RPC function "${e.name}" is not registered`},DF0024:{why:e=>`Either handler or setup function must be provided for RPC function "${e.name}"`},DF0025:{why:e=>`Function "${e.name}" not found in dump store`},DF0026:{why:e=>`No dump match for "${e.name}" with args: ${e.args}`},DF0027:{why:e=>`Function "${e.name}" with type "${e.type}" cannot have dump configuration. Only "static" and "query" types support dumps.`},DF0028:{why:e=>`Function "${e.name}" with type "${e.type}" cannot use \`snapshot: true\`. Only "query" functions support this sugar; "static" functions have equivalent default behavior already.`,fix:"Remove `snapshot: true`, or change the function type to `query`."},DF0043:{why:e=>`RPC function "${e.name}" received an invalid argument at position ${e.index}: ${e.issues}`,fix:"Pass a value that satisfies the `args` schema declared for this function."},DF0044:{why:e=>`RPC function "${e.name}" returned a value that failed its \`returns\` schema: ${e.issues}`,fix:"Make the handler return a value that satisfies the `returns` schema, or relax the schema."}}});function hn(e){if(e.agent&&e.jsonSerializable===!1)throw B.DF0019({name:e.name});e.agent&&!e.jsonSerializable&&(e.jsonSerializable=!0)}async function gn(e,t){let n=e[`~standard`].validate(t);return n instanceof Promise?await n:n}function _n(e){return e.map(e=>{let t=e.path?.map(e=>typeof e==`object`?e.key:e).join(`.`);return t?`${t}: ${e.message}`:e.message}).join(`; `)}async function vn(e,t,n){let r=n.slice();if(!t||t.length===0)return r;for(let r=0;r<t.length;r++){let i=t[r];if(!i)continue;let a=await gn(i,n[r]);if(a.issues)throw B.DF0043({name:e,index:r,issues:_n(a.issues)})}return r}async function yn(e,t,n){if(!t)return n;let r=await gn(t,n);if(r.issues)throw B.DF0044({name:e,issues:_n(r.issues)});return n}async function bn(e,t){if(!e.setup)return{};if(typeof t==`object`&&t){e.__cache??=new WeakMap;let n=e.__cache,r=n.get(t);return r||(r=Promise.resolve(e.setup(t)),r.catch(()=>{n.get(t)===r&&n.delete(t)}),n.set(t,r)),await r}if(!e.__promise){let n=Promise.resolve(e.setup(t));n.catch(()=>{e.__promise===n&&(e.__promise=void 0)}),e.__promise=n}return await e.__promise}async function xn(e,t){let n=e.handler;if(!n){let r=await bn(e,t);if(!r.handler)throw B.DF0024({name:e.name});n=r.handler}let r=e.args,i=e.returns;if(!r&&!i)return n;let a=n;return async(...t)=>{let n=await vn(e.name,r,t),o=await a(...n);return await yn(e.name,i,o)}}var Sn=class{context;definitions=new Map;functions;_onChanged=[];constructor(e){this.context=e;let t=this.definitions,n=this;this.functions=new Proxy({},{get(e,r){let i=t.get(r);if(i)return xn(i,n.context)},has(e,n){return t.has(n)},getOwnPropertyDescriptor(e,n){return{value:t.get(n)?.handler,configurable:!0,enumerable:!0}},ownKeys(){return Array.from(t.keys())}})}register(e,t=!1){if(this.definitions.has(e.name)&&!t)throw B.DF0021({name:e.name});hn(e),this.definitions.set(e.name,e),this._onChanged.forEach(t=>t(e.name))}update(e,t=!1){if(!this.definitions.has(e.name)&&!t)throw B.DF0022({name:e.name});hn(e),this.definitions.set(e.name,e),this._onChanged.forEach(t=>t(e.name))}onChanged(e){return this._onChanged.push(e),()=>{let t=this._onChanged.indexOf(e);t!==-1&&this._onChanged.splice(t,1)}}async getHandler(e){return await xn(this.definitions.get(e),this.context)}getSchema(e){let t=this.definitions.get(e);if(!t)throw B.DF0023({name:String(e)});return{args:t.args,returns:t.returns}}has(e){return this.definitions.has(e)}get(e){return this.definitions.get(e)}list(){return Array.from(this.definitions.keys())}};function Cn(e,t=``){return JSON.stringify(e,function(e,n){let r=this,i=r==null?n:r[e];if(i===void 0){if(Array.isArray(r))throw V(t,`undefined`,r,e);return n}return i!==null&&wn(i,r,e,t),n})}function wn(e,t,n,r){if(typeof e==`bigint`)throw V(r,`BigInt`,t,n);if(typeof e!=`object`)return;if(e instanceof Map)throw V(r,`Map`,t,n);if(e instanceof Set)throw V(r,`Set`,t,n);if(e instanceof Date)throw V(r,`Date`,t,n);if(Array.isArray(e))return;let i=Object.getPrototypeOf(e);if(i!==null&&i!==Object.prototype)throw V(r,e.constructor?.name??`class instance`,t,n)}function V(e,t,n,r){let i=Tn(n,r);return B.DF0020({name:e||`<anonymous>`,type:t,path:i})}function Tn(e,t){return Array.isArray(e)?`[${t}]`:t===``?`<root>`:t}const En=`__DEVFRAME_CONNECTION_META__`,Dn=`__DEVFRAME_CONNECTION_AUTH_TOKEN__`;function On(e){let t=[()=>window?.[e],()=>globalThis?.[e],()=>parent.window?.[e]];for(let e of t)try{let t=e();if(t)return t}catch{}}function kn(){return On(dn)}function An(){return On(En)}function H(e){if(e)return e;try{let e=localStorage.getItem(Dn);if(e)return e}catch{}return On(Dn)}function jn(e){globalThis[dn]=e,globalThis[En]={...e.connectionMeta,baseUrl:e.metaBaseUrl},e.authToken&&Mn(e.authToken)}function Mn(e){try{localStorage.setItem(Dn,e)}catch{}globalThis[Dn]=e;let t=kn();t&&(globalThis[dn]={...t,authToken:e})}function Nn(e){let t=Xt(un,e);try{return new URL(t,globalThis.location?.href).href}catch{return t}}function Pn(e,t){return t&&t!==e.authToken?{...e,authToken:t}:e}function Fn(){let e=kn();if(e)return Pn(e,H()??e.authToken??e.connectionMeta.authToken);let t=An();if(t)return{connectionMeta:t,metaBaseUrl:t.baseUrl??Nn(`./`),authToken:H(t.authToken)}}async function In(e={}){if(e.connection){let t=Pn(e.connection,H(e.authToken??e.connection.authToken??e.connection.connectionMeta.authToken));return jn(t),t}let t=Array.isArray(e.baseURL)?e.baseURL:[e.baseURL??`./`];if(e.connectionMeta){let n={connectionMeta:e.connectionMeta,metaBaseUrl:Nn(t[0]??`./`),authToken:H(e.authToken??e.connectionMeta.authToken)};return jn(n),n}let n=Fn();if(n){let t=Pn(n,H(e.authToken??n.authToken??n.connectionMeta.authToken));return jn(t),t}let r=[];for(let n of t){let t=Xt(un,n),i=Nn(n);try{let n=await fetch(t);if(!n.ok)throw Error(`Failed to fetch connection meta from ${i}: ${n.status}`);let r=await n.json(),a=n.url||i,o={connectionMeta:r,metaBaseUrl:r.baseUrl?new URL(r.baseUrl,a).href:a,authToken:H(e.authToken??r.authToken)};return jn(o),o}catch(e){r.push(e)}}throw Error(`Failed to get connection meta from ${t.join(`, `)}`,{cause:r})}var U=class extends Error{name=`DevframeConnectionError`;kind;constructor(e,t,n){super(t,n),this.kind=e}};function Ln(e=fn){try{let t=globalThis.location?.hash?.replace(/^#/,``)??``;return new URLSearchParams(t).get(e)||void 0}catch{return}}function Rn(e){try{let t=new URL(globalThis.location.href),n=new URLSearchParams(t.hash.replace(/^#/,``));if(!n.has(e))return;n.delete(e),t.hash=n.toString(),globalThis.history?.replaceState(globalThis.history.state,``,t.href)}catch{}}function zn(e=fn){let t=Ln(e);return t&&Rn(e),t}async function Bn(e,t={}){let n=zn(t.param??`devframe_otp`);return n?e.isTrusted?!0:e.requestTrustWithCode(n):!1}function Vn(e){let t={},n=new WeakMap,r,i=()=>(r??=e.sharedState.get(`devframe:services`,{initialValue:{}}).then(e=>(t=e.value(),e.on(`updated`,e=>{t=e}),e)),r);return i(),{state:i,has:e=>e in t,keys:()=>Object.keys(t),get:r=>{let i=t[r];if(!i)return;let a=n.get(i);return a||(a={...i,rpc:e.scope(i.scope).rpc},n.set(i,a)),a}}}function Hn(e){let t=new Map,n=new Map,r=new Map,i=new Set,a=e.connectionMeta.backend===`static`;function o(e,t){let n=r.get(e);return n&&typeof n==`object`&&!Array.isArray(n)&&typeof t==`object`&&!Array.isArray(t)?{...n,...t}:t}e.client.register({name:c.broadcast.clientStateUpdated,type:`event`,handler:(e,n,r)=>{let i=t.get(e);i&&!i.syncIds.has(r)&&i.mutate(()=>o(e,n),r)}}),e.client.register({name:c.broadcast.clientStatePatch,type:`event`,handler:(e,n,r)=>{let i=t.get(e);i&&!i.syncIds.has(r)&&i.patch(n,r)}});function s(t,n){let r=[];return r.push(n.on(`updated`,(n,r,i)=>{a||(r?e.callEvent(`devframe:rpc:server-state:patch`,t,r,i):e.callEvent(`devframe:rpc:server-state:set`,t,n,i))})),()=>{for(let e of r)e()}}return{keys:()=>Array.from(t.keys()),onKeyAdded(e){return i.add(e),()=>{i.delete(e)}},delete(e){let i=n.get(e);n.delete(e);let a=t.delete(e);return r.delete(e),i?.(),a},get:async(l,u)=>{if(u?.initialValue!==void 0&&r.set(l,u.initialValue),t.has(l))return t.get(l);let d=gt({initialValue:u?.initialValue,enablePatches:!1});async function f(){if(a||e.callEvent(`devframe:rpc:server-state:subscribe`,l),u?.initialValue!==void 0){t.set(l,d);for(let e of i)e(l);return e.call(`devframe:rpc:server-state:get`,l).then(e=>{e!==void 0&&d.mutate(()=>o(l,e))}).catch(e=>{console.error(`Error getting server state`,e)}),n.set(l,s(l,d)),d}{let r=await e.call(`devframe:rpc:server-state:get`,l);d.mutate(()=>o(l,r)),t.set(l,d);for(let e of i)e(l);return n.set(l,s(l,d)),d}}return new Promise(t=>{if(e.isTrusted)f().then(t);else{t(d);let n=!1;e.events.on(c.client.isTrustedUpdated,e=>{e&&!n&&(n=!0,f())})}})}}}const Un=new Map;function Wn(e=Un){let t=new Map;return{serialize:n=>{let r;return n.t===`q`?r=n.m:(r=t.get(n.i),t.delete(n.i)),!(n.t===`s`&&`e`in n)&&r&&e.get(r)?.jsonSerializable===!0?Cn(n,r??``):`s:${Pt(n)}`},deserialize:e=>{let n=e.startsWith(`s:`)?Ft(e.slice(2)):JSON.parse(e);return n.t===`q`&&n.i&&n.m&&t.set(n.i,n.m),n}}}function Gn(){}function Kn(e){let t=e.search(/\n\n|\r\n\r\n/);if(!(t<0))return{frame:e.slice(0,t),rest:e.slice(t+(e[t]===`\r`?4:2))}}function qn(e){let t=`message`,n=[];for(let r of e.split(/\r?\n/))r.startsWith(`:`)||(r.startsWith(`event:`)?t=r.slice(6).trimStart():r.startsWith(`data:`)&&n.push(r.slice(5).replace(/^ /,``)));return{event:t,data:n}}function Jn(e){let{onConnected:t=Gn,onError:n=Gn,onDisconnected:r=Gn,definitions:i,fetch:a=globalThis.fetch.bind(globalThis)}=e,o=e.url;e.authToken&&(o=`${o}${o.includes(`?`)?`&`:`?`}${pn}=${encodeURIComponent(e.authToken)}`);let s=Wn(i),c=new AbortController,l=!1,u,d,f,p,m=new Promise((e,t)=>{f=e,p=t});m.catch(()=>{});function h(e){l||(l=!0,p(e),n(e),r())}function g(){l||(l=!0,p(Error(`Devframe SSE stream closed`)),r())}function _(e,n){if(e===`session`){f(n),t();return}u?.(n)}async function v(e){let t=e.getReader();d=t;let n=new TextDecoder,r=``;for(;;){let{done:e,value:i}=await t.read();if(e)break;for(r+=n.decode(i,{stream:!0});;){let e=Kn(r);if(!e)break;r=e.rest;let{event:t,data:n}=qn(e.frame);n.length>0&&_(t,n.join(`
3
- `))}}g()}return(async()=>{try{let e=await a(o,{headers:{accept:`text/event-stream`},signal:c.signal});if(!e.ok||!e.body)throw Error(`Devframe SSE stream request failed: ${e.status}`);await v(e.body)}catch(e){if(c.signal.aborted){g();return}h(e instanceof Error?e:Error(String(e)))}})(),{close:()=>{l=!0,c.abort(),d?.cancel().catch(()=>{})},on:e=>{u=e},post:async e=>{let t;try{t=await m}catch{return}if(l){n(Error(`Devframe SSE channel is closed; message dropped`));return}try{let n=await a(o,{method:`POST`,headers:{"content-type":`text/plain; charset=utf-8`,"x-birpc-session":t},body:e});if(n.status===200){let e=await n.text();e&&u?.(e);return}if(!n.ok)throw Error(`Devframe SSE POST failed: ${n.status}`)}catch(e){n(e instanceof Error?e:Error(String(e)))}},serialize:s.serialize,deserialize:s.deserialize}}function Yn(e,t){let{channel:n,rpcOptions:r={}}=t;return ln(e,{...n,timeout:-1,...r,proxify:!1})}function Xn(e){let{transport:t,authToken:n,connectionMeta:r,events:i,clientRpc:a,rpcOptions:o={},callTimeout:s=0}=e,l=!1,u=`connecting`,d=null,f=Promise.withResolvers();function p(e,t=null){if(t?d=t:e===`connected`&&(d=null),e===u)return;let n=u;u=e,i.emit(c.client.connectionStatus,e,n)}let m=new Set;function h(e){for(let t of[...m])t.reject(e)}function g(){return u===`disconnected`||u===`error`?new U(`connection`,`[devframe] Not connected to the devframe server`,{cause:d??void 0}):u===`unauthorized`?new U(`auth`,`[devframe] Not authorized by the devframe server`,{cause:d??void 0}):null}function _(e,t){return new Promise((n,r)=>{let a=!1,o,l={reject(e){a||(u(),i.emit(c.client.error,e,t),r(e))}};function u(){a=!0,m.delete(l),o&&clearTimeout(o)}m.add(l),s>0&&(o=setTimeout(()=>{l.reject(new U(`timeout`,`[devframe] RPC call "${t}" timed out after ${s}ms`))},s)),e.then(e=>{a||(u(),n(e))},e=>{if(a)return;u();let n=e instanceof Error?e:Error(String(e));i.emit(c.client.error,n,t),r(n)})})}let v=new Map;for(let e of r.jsonSerializableMethods??[])v.set(e,{jsonSerializable:!0});let y=e.createChannel({definitions:v,onError(e){p(`error`,e),i.emit(c.client.connectionError,e),h(new U(`connection`,`[devframe] Connection to the devframe server failed`,{cause:e}))},onDisconnected(){u!==`error`&&p(`disconnected`),h(new U(`connection`,`[devframe] Disconnected from the devframe server`,{cause:d??void 0}))}}),b=Yn(a.functions,{channel:y,rpcOptions:o});a.register({name:c.broadcast.authRevoked,type:`event`,handler:()=>{l=!1;let e=new U(`auth`,`[devframe] The devframe server revoked this client's trust`);p(`unauthorized`,e),i.emit(c.client.connectionError,e),h(e),i.emit(c.client.isTrustedUpdated,!1)}});let x=n;async function S(e){x=e;let t=await b.$call(`anonymous:devframe:auth`,{authToken:e,ua:navigator.userAgent,origin:location.origin});if(l=t.isTrusted,l)f.resolve(!0),p(`connected`);else{let e=new U(`auth`,`[devframe] The devframe server refused this client's credentials`);p(`unauthorized`,e),i.emit(c.client.connectionError,e)}return i.emit(c.client.isTrustedUpdated,l),t.isTrusted}async function ee(e){let t=(await b.$call(`anonymous:devframe:auth:exchange`,{code:e,ua:navigator.userAgent,origin:location.origin}))?.authToken??null;return t&&(x=t,l=!0,f.resolve(!0),p(`connected`),i.emit(c.client.isTrustedUpdated,!0)),t}async function te(e={}){await b.$call(`anonymous:devframe:auth:request-code`,{ua:navigator.userAgent,origin:location.origin,...e.reissue?{reissue:!0}:{}})}async function C(){return l?!0:S(x??``)}async function w(e=6e4){if(l&&f.resolve(!0),e<=0)return f.promise;let t;try{return await Promise.race([f.promise,new Promise((n,r)=>{t=setTimeout(()=>{r(Error(`[devframe] Timeout waiting for rpc to be trusted`))},e)})]),l}finally{clearTimeout(t)}}return{transport:t,get isTrusted(){return l},get status(){return u},get connectionError(){return d},requestTrust:C,requestTrustWithToken:S,requestTrustWithCode:ee,requestAuthCode:te,ensureTrusted:w,call:(...e)=>{let t=String(e[0]),n=g();return n?(i.emit(c.client.error,n,t),Promise.reject(n)):_(b.$call(...e),t)},callEvent:(...e)=>{let t=g();if(t){i.emit(c.client.error,t,String(e[0]));return}return b.$callEvent(...e)},callOptional:(...e)=>{let t=String(e[0]),n=g();return n?(i.emit(c.client.error,n,t),Promise.reject(n)):_(b.$callOptional(...e),t)},close:()=>{y.close()}}}function Zn(e,t,n){let r=(()=>{try{return new URL(t,n.href)}catch{return new URL(n.href)}})();if(e&&typeof e==`object`){if(e.host!=null||e.port!=null){let t=e.host??`${r.hostname}:${e.port}`;return new URL(e.path??`/`,`${r.protocol}//${t}`).href}return new URL(e.path??``,r).href}let i=e??``;return/^https?:\/\//i.test(i)?i:new URL(i,r).href}function Qn(e){let{authToken:t,connectionMeta:n,metaBaseUrl:r,events:i,clientRpc:a,rpcOptions:o={},sseOptions:s={},callTimeout:c=0}=e,l=Zn(n.sse,r??`./`,location);return Xn({transport:`sse`,authToken:t,connectionMeta:n,events:i,clientRpc:a,rpcOptions:o,callTimeout:c,createChannel:e=>Jn({url:l,authToken:t,definitions:e.definitions,...s,onConnected(){s.onConnected?.()},onError(t){e.onError(t),s.onError?.(t)},onDisconnected(){e.onDisconnected(),s.onDisconnected?.()}})})}function $n(e){let{name:t,message:n,cause:r,...i}=e,a=r instanceof Error?r:er(r)?$n(r):r,o=a===void 0?Error(n):Error(n,{cause:a});return o.name=t,Object.assign(o,i),o}function er(e){return typeof e==`object`&&!!e&&typeof e.message==`string`&&typeof e.name==`string`}function tr(e){return typeof e==`object`&&!!e&&e.type===`static`&&typeof e.path==`string`}function nr(e){return typeof e==`object`&&!!e&&e.type===`query`&&typeof e.records==`object`&&e.records!==null}function rr(e){return typeof e==`object`&&!!e&&(`output`in e||`error`in e)}function ir(e){if(e.error)throw $n(e.error);return e.output}function ar(e){return e.some(e=>e!=null)}function or(e){return typeof e==`object`&&e&&`serialization`in e&&`data`in e?e.data:e}function sr(e,t){let n=new Map,r=new Map;function i(e,t){return t===`structured-clone`&&Array.isArray(e)?Nt(e):e}function a(e,t){return i(or(e),t)}async function o(e){n.has(e.path)||n.set(e.path,t(e.path).then(t=>a(t,e.serialization)));let r=await n.get(e.path);return rr(r)?ir(r):r}async function s(e,n){return r.has(e)||r.set(e,t(e).then(e=>a(e,n))),await r.get(e)}async function c(t,n){if(!(t in e))throw Error(`[devframe-rpc] Function "${t}" not found in dump store`);let r=e[t];if(tr(r)){if(ar(n))throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`);return await o(r)}if(nr(r)){let e=ee(n),i=r.records[e];if(i)return ir(await s(i,r.serialization));if(r.fallback)return ir(await s(r.fallback,r.serialization));throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`)}if(!ar(n))return r;throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`)}return{call:async(e,t)=>await c(e,t),callOptional:async(t,n)=>{if(t in e)return await c(t,n)},callEvent:async(e,t)=>{}}}async function cr(e){let t=sr(await e.fetchJsonFromBases(`__rpc-dump/index.json`),e.fetchJsonFromBases);return{transport:`static`,isTrusted:!0,status:`connected`,connectionError:null,requestTrust:async()=>!0,requestTrustWithToken:async()=>!0,requestTrustWithCode:async()=>null,requestAuthCode:async()=>{},ensureTrusted:async()=>!0,call:(...e)=>t.call(e[0],e.slice(1)),callEvent:(...e)=>t.callEvent(e[0],e.slice(1)),callOptional:(...e)=>t.callOptional(e[0],e.slice(1)),close:()=>{}}}function lr(e,t){return`${e}${t}`}function ur(e){let t=new Map,n=new Map;e.client.register({name:c.broadcast.streamingChunk,type:`event`,handler(e,n,r,i){t.get(lr(e,n))?._push(r,i)}}),e.client.register({name:c.broadcast.streamingEnd,type:`event`,handler(e,n,r){let i=lr(e,n),a=t.get(i);a&&(a._end(r),t.delete(i))}}),e.client.register({name:c.broadcast.streamingUploadCancel,type:`event`,handler(e,t){let r=lr(e,t),i=n.get(r);i&&(i.abort(`server cancelled upload`),n.delete(r))}}),e.events.on(c.client.isTrustedUpdated,n=>{if(n)for(let[n,r]of t){if(r.cancelled||r.done)continue;let t=n.indexOf(``);if(t<0)continue;let i=n.slice(0,t),a=n.slice(t+1);e.callEvent(`devframe:streaming:subscribe`,i,a,{afterSeq:r.lastSeenSeq})}});function r(n,r,i={}){let a=lr(n,r),o=t.get(a);if(o)return o;let s=Rt({id:r,highWaterMark:i.highWaterMark,onOverflow(e){console.warn(`[devframe] DF0029: Stream "${n}#${r}" dropped ${e} chunk(s) after exceeding the client high-water mark.`)},onCancel(){e.callEvent(`devframe:streaming:cancel`,n,r),t.delete(a)}});if(t.set(a,s),e.isTrusted)e.callEvent(`devframe:streaming:subscribe`,n,r,{afterSeq:0});else{let i=e.events.on(c.client.isTrustedUpdated,o=>{o&&(i(),t.has(a)&&!s.cancelled&&!s.done&&e.callEvent(`devframe:streaming:subscribe`,n,r,{afterSeq:s.lastSeenSeq}))})}return s}function i(t,r){let i=lr(t,r),a=n.get(i);if(a)return a;let o=Lt({id:r});return o.events.on(`chunk`,(n,i)=>{e.callEvent(`devframe:streaming:upload-chunk`,t,r,n,i)}),o.events.on(`end`,a=>{e.callEvent(`devframe:streaming:upload-end`,t,r,a),n.delete(i)}),n.set(i,o),o}return{subscribe:r,upload:i}}function dr(){}const fr=new Map;function pr(e){let t=e.url;e.authToken&&(t=`${t}?${pn}=${encodeURIComponent(e.authToken)}`);let n=new WebSocket(t),{onConnected:r=dr,onError:i=dr,onDisconnected:a=dr,definitions:o=fr}=e;n.addEventListener(`open`,e=>{r(e)}),n.addEventListener(`error`,e=>{let t=e instanceof Error?e:Error(e.type);i(t)}),n.addEventListener(`close`,e=>{a(e)});let s=Wn(o);return{close:()=>{n.close()},on:e=>{n.addEventListener(`message`,t=>{e(t.data)})},post:e=>{if(n.readyState===WebSocket.OPEN){n.send(e);return}if(n.readyState===WebSocket.CONNECTING){let t=()=>{i(),n.readyState===WebSocket.OPEN&&n.send(e)},r=()=>i();function i(){n.removeEventListener(`open`,t),n.removeEventListener(`close`,r)}n.addEventListener(`open`,t),n.addEventListener(`close`,r);return}i(Error(`Devframe WebSocket is not open; message dropped`))},serialize:s.serialize,deserialize:s.deserialize}}function mr(e,t,n){let r=(()=>{try{return new URL(t,n.href)}catch{return new URL(n.href)}})(),i=r.protocol===`https:`?`wss:`:`ws:`;if(e&&typeof e==`object`){if(e.host!=null||e.port!=null){let t=e.host??`${r.hostname}:${e.port}`,n=new URL(e.path??`/`,`${i}//${t}`);return n.protocol=i,n.href}let t=new URL(e.path??``,r);return t.protocol=i,t.href}if(typeof e==`number`)return`${i}//${r.hostname}:${e}`;let a=e??``;if(/^wss?:\/\//i.test(a))return a;if(/^https?:\/\//i.test(a))return en(a,/^https/i.test(a)?`wss://`:`ws://`);let o=new URL(a,r);return o.protocol=i,o.href}function hr(e){let{authToken:t,connectionMeta:n,metaBaseUrl:r,events:i,clientRpc:a,rpcOptions:o={},wsOptions:s={},callTimeout:c=0}=e,l=mr(n.websocket,r??`./`,location);return Xn({transport:`websocket`,authToken:t,connectionMeta:n,events:i,clientRpc:a,rpcOptions:o,callTimeout:c,createChannel:e=>pr({url:l,authToken:t,definitions:e.definitions,...s,onConnected(e){s.onConnected?.(e)},onError(t){e.onError(t),s.onError?.(t)},onDisconnected(t){e.onDisconnected(),s.onDisconnected?.(t)}})})}function gr(e){return e.includes(`:`)}function W(e,t){return gr(t)?t:`${e}:${t}`}function _r(e){return{async get(t){return(await e()).value()[t]},async set(t,n){(await e()).mutate(e=>{e[t]=n})},async delete(t){(await e()).mutate(e=>{delete e[t]})},async all(){return(await e()).value()},async onChange(t){return(await e()).on(`updated`,e=>t(e))}}}function vr(e,t,n){let r=`devframe:settings:${n}:${t}`,i;function a(){return i||=e.sharedState.get(r,{initialValue:{}}),i}return _r(a)}function yr(e,t){return{global:vr(e,t,`global`),project:vr(e,t,`project`)}}function br(e,t){return{namespace:t,base:e,rpc:{namespace:t,register(n){if(gr(n.name))throw Error(`[devframe] Scoped client RPC registration for namespace "${t}" received an already-namespaced function name "${n.name}". Pass a bare name without a ":" separator.`);e.client.register({...n,name:`${t}:${n.name}`})},call:((n,...r)=>e.call(W(t,n),...r)),callEvent:((n,...r)=>e.callEvent(W(t,n),...r)),callOptional:((n,...r)=>e.callOptional(W(t,n),...r)),sharedState:((n,r)=>e.sharedState.get(W(t,n),r)),streaming:{subscribe:(n,r,i)=>e.streaming.subscribe(W(t,n),r,i),upload:(n,r)=>e.streaming.upload(W(t,n),r)}},settings:yr(e,t),scope:e.scope}}const xr=Object.freeze({type:`object`,additionalProperties:!0});function Sr(e){let t=e[`~standard`];if(t.jsonSchema)try{return t.jsonSchema.input({target:`draft-2020-12`})}catch{return xr}return xr}function Cr(e){if(!e||e.length===0)return{type:`object`,properties:{}};let t={},n=[];for(let r=0;r<e.length;r++){let i=`arg${r}`;t[i]=Sr(e[r]),n.push(i)}return{type:`object`,properties:t,required:n,additionalProperties:!1}}function wr(e,t){if(Array.isArray(e))return e;if(e==null)return[];if(typeof e!=`object`)return;let n=e;if(t!=null)return Array.from({length:t},(e,t)=>n[`arg${t}`]);if(`arg0`in n){let e=[];for(;`arg${e.length}`in n;)e.push(n[`arg${e.length}`]);return e}return Object.keys(n).length===0?[]:void 0}function Tr(e,t){return wr(e,t)??[e]}function Er(){if(typeof document<`u`){let e=document.modelContext;if(e)return e}if(typeof navigator<`u`){let e=navigator.modelContext;if(e)return e}}function Dr(e,t={}){let n=t.modelContext??Er();if(!n)return()=>{};let r=n,i=new Map,a=new Map;function o(t,n){let o=Bt(t.name),s=a.get(o);if(s&&s!==t.name){console.warn(`[devframe] WebMCP tool name "${o}" (from "${t.name}") collides with "${s}"; keeping the first registration.`);return}let c=new AbortController,l=r.registerTool({name:o,description:n.description,inputSchema:Cr(t.args),annotations:{title:n.title??t.name,readOnlyHint:Or(t,n)===`read`,destructiveHint:Or(t,n)===`destructive`},execute:n=>kr(t,e.context,n)},{signal:c.signal});l&&`then`in l&&l.then(()=>{},()=>{}),a.set(o,t.name),i.set(t.name,()=>{c.abort(),l&&`unregister`in l&&typeof l.unregister==`function`&&l.unregister(),a.delete(o)})}function s(t){let n=t?[t]:[...e.definitions.keys()];for(let t of n){i.get(t)?.(),i.delete(t);let n=e.definitions.get(t),r=n?.agent;n&&r&&o(n,r)}}s();let c=e.onChanged(e=>s(e));return()=>{c();for(let e of i.values())e();i.clear()}}function Or(e,t){if(t.safety)return t.safety;let n=e.type??`query`;return n===`static`||n===`query`?`read`:`action`}async function kr(e,t,n){try{let r=Tr(n,e.args?.length);return{content:[{type:`text`,text:Ar(await(await xn(e,t))(...r))}]}}catch(e){return{isError:!0,content:[{type:`text`,text:jr(e)}]}}}function Ar(e){return e===void 0?`undefined`:typeof e==`string`?e:JSON.stringify(e,null,2)}function jr(e){if(!(e instanceof Error))return String(e);let t=e.cause instanceof Error?` (cause: ${e.cause.message})`:``;return`${e.name}: ${e.message}${t}`}function Mr(e,t){if(t.backend===`static`)return`static`;let n=t.websocket!==void 0,r=t.sse!==void 0;if(e===`websocket`){if(!n)throw Error(`[devframe] transport: 'websocket' was requested, but this server does not advertise a WebSocket endpoint`);return`websocket`}if(e===`sse`){if(!r)throw Error(`[devframe] transport: 'sse' was requested, but this server does not advertise an SSE endpoint`);return`sse`}if(t.backend===`sse`&&r)return`sse`;if(n)return`websocket`;if(r)return`sse`;throw Error(`[devframe] This server advertises no RPC transport (backend "none"), so there is nothing to connect to. Enable the WebSocket or SSE endpoint on the server, or use its static/MCP surfaces instead.`)}async function Nr(e={}){let{baseURL:t=`./`,rpcOptions:n={},cacheOptions:r=!1}=e,i=te(),a=Array.isArray(t)?t:[t],o=await In(e),{connectionMeta:s,metaBaseUrl:c,authToken:l}=o,u=a[0]??`./`;try{u=new URL(`.`,c).href}catch{}let d=new mn({functions:[],...typeof e.cacheOptions==`object`?e.cacheOptions:{}}),f={rpc:void 0},p=new Sn(f),m=e.webmcp===!1?void 0:Dr(p);async function h(e){let t=[u,...a.filter(e=>e!==u)].filter(e=>e!=null),n=[];for(let r of t)try{return await fetch(Xt(e,r)).then(t=>{if(!t.ok)throw Error(`Failed to fetch ${e} from ${r}: ${t.status}`);return t.json()})}catch(e){n.push(e)}throw Error(`Failed to load ${e} from ${t.join(`, `)}`,{cause:n})}let g={authToken:l,connectionMeta:s,metaBaseUrl:c,events:i,clientRpc:p,callTimeout:e.callTimeout,rpcOptions:{...n,async onRequest(e,t,i){if(await n.onRequest?.call(this,e,t,i),r&&d?.validate(e.m)){if(d.has(e.m,e.a))return i(d.cached(e.m,e.a));let n=await t(e);d.apply(e,n)}else await t(e)}}},_=Mr(e.transport??`auto`,s),v=_===`static`?await cr({fetchJsonFromBases:h}):_===`sse`?Qn({...g,sseOptions:e.sseOptions}):hr({...g,wsOptions:e.wsOptions}),y;try{y=new BroadcastChannel(`devframe-auth`)}catch{}let b,x=!1;function S(e){return((...t)=>x||!b?e(...t):b.then(()=>e(...t)))}function ee(){try{m?.()}finally{try{y?.close()}finally{v.close?.()}}}let C={events:i,get isTrusted(){return v.isTrusted},get status(){return v.status},get connectionError(){return v.connectionError},get transport(){return v.transport??_},get connection(){return o},connectionMeta:s,ensureTrusted:v.ensureTrusted,requestTrust:v.requestTrust,requestTrustWithToken:async e=>(Mn(e),o={...o,authToken:e},v.requestTrustWithToken(e)),requestTrustWithCode:async e=>{let t=await v.requestTrustWithCode(e);if(!t)return!1;Mn(t),o={...o,authToken:t};try{y?.postMessage({type:`auth-update`,authToken:t})}catch{}return!0},requestAuthCode:e=>v.requestAuthCode(e),call:S(v.call),callEvent:S(v.callEvent),callOptional:S(v.callOptional),client:p,sharedState:void 0,services:void 0,streaming:void 0,cacheManager:d,scope:void 0,close:ee};C.sharedState=Hn(C),C.streaming=ur(C),C.services=Vn(C);let w=new Map;C.scope=(e=>{if(!e)return C;let t=w.get(e);return t||(t=br(C,e),w.set(e,t)),t}),f.rpc=C;function T(){try{return typeof window<`u`&&window.self===window.top}catch{return!1}}async function E(){if(e.simpleAuth!==!1&&T()&&typeof globalThis.prompt==`function`)for(await C.requestAuthCode().catch(()=>{});!C.isTrusted;){let e=globalThis.prompt(`devframe: enter the authentication code shown in your terminal`);if(e==null)return;let t=e.trim();if(t&&await C.requestTrustWithCode(t))return}}async function ne(){let t=await v.requestTrust(),n=e.otpParam??`devframe_otp`,r=n?await Bn(C,{param:n}):!1;t||r||C.isTrusted||await E()}return b=ne().then(()=>{x=!0},()=>{x=!0}),y&&(y.onmessage=e=>{e.data?.type===`auth-update`&&e.data.authToken&&C.requestTrustWithToken(e.data.authToken)}),C}const Pr=Nr;var Fr=e=>typeof e==`string`,Ir=e=>typeof e==`function`,Lr=e=>typeof e==`object`&&!!e,G=class e extends Error{code;aborted;timedOut;permanent;applied;appliedEtag;cause;constructor(e,t,n,r){super(t),this.name=`FilesError`,this.code=e,this.aborted=r?.aborted===!0,this.timedOut=r?.timedOut===!0,this.permanent=r?.permanent===!0,this.applied=r?.applied===!0,r?.appliedEtag!==void 0&&(this.appliedEtag=r.appliedEtag),this.cause=n}static applied(t,n){let r=e.wrap(t);return new e(r.code,r.message,t,{aborted:r.aborted,applied:!0,...n!==void 0&&{appliedEtag:n},permanent:r.permanent,timedOut:r.timedOut})}static wrap(t,n=`Provider`){if(t instanceof e)return t;let r=t instanceof Error?t.message:String(t);return new e(n,r,t)}};async function Rr(e,t,{concurrency:n=1/0,stopOnError:r=!0,signal:i}={}){return new Promise((a,o)=>{if(e[Symbol.iterator]===void 0&&e[Symbol.asyncIterator]===void 0)throw TypeError(`Expected \`input\` to be either an \`Iterable\` or \`AsyncIterable\`, got (${typeof e})`);if(typeof t!=`function`)throw TypeError(`Mapper function is required`);if(!(Number.isSafeInteger(n)&&n>=1||n===1/0))throw TypeError(`Expected \`concurrency\` to be an integer from 1 and up or \`Infinity\`, got \`${n}\` (${typeof n})`);let s=[],c=[],l=new Map,u=!1,d=!1,f=!1,p=0,m=0,h=e[Symbol.asyncIterator]===void 0?e[Symbol.iterator]():e[Symbol.asyncIterator](),g=()=>{y(i.reason)},_=()=>{i?.removeEventListener(`abort`,g)},v=e=>{a(e),_()},y=e=>{d||(u=!0,d=!0,o(e),_(),f||Br(h))};if(i){if(i.aborted){y(i.reason);return}i.addEventListener(`abort`,g,{once:!0})}let b=async()=>{if(d)return;let e=f?{done:!0}:await h.next(),n=m;if(m++,e.done){if(f=!0,p===0&&!d){if(!r&&c.length>0){y(AggregateError(c));return}if(d=!0,l.size===0){v(s);return}let e=[];for(let[t,n]of s.entries())l.get(t)!==zr&&e.push(n);v(e)}return}p++,(async()=>{try{let r=await e.value;if(d)return;let i=await t(r,n);i===zr&&l.set(n,i),s[n]=i}catch(e){if(r){y(e);return}c.push(e)}p--;try{await b()}catch(e){y(e)}})()};(async()=>{for(let e=0;e<n;e++){try{await b()}catch(e){y(e);break}if(f||u)break}})()})}const zr=Symbol(`skip`);async function Br(e){try{await e.return?.()}catch{}}var Vr=async e=>{let t=e.getReader(),n=[],r=0;for(;;){let{done:e,value:i}=await t.read();if(e)break;i&&(n.push(i),r+=i.byteLength)}let i=new Uint8Array(r),a=0;for(let e of n)i.set(e,a),a+=e.byteLength;return i},Hr=e=>new ReadableStream({start(t){t.enqueue(e),t.close()}}),Ur=e=>new ReadableStream({async start(t){let n=await e;t.enqueue(n),t.close()}}),Wr=()=>new G(`Provider`,`StoredFile body was already consumed via stream(). For multi-format access, call text()/arrayBuffer()/blob() before stream() — those drain into a cache.`),Gr=()=>{try{return new Blob([new Uint8Array]).size===0}catch{return!1}},Kr=async e=>Ir(e.arrayBuffer)?new Uint8Array(await e.arrayBuffer()):await new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(new Uint8Array(r.result)),r.onerror=()=>n(r.error??Error(`FileReader failed`)),r.readAsArrayBuffer(e)}),qr=(e,t,n)=>{let r,i,a=!1,o,s=async e=>{let t=await e();return r=t,t},c=()=>{if(r)return Promise.resolve(r);if(i)return i;if(o){let e=o;return i=s(async()=>Kr(await e)),i}if(t.kind===`buffer`)return r=t.data,Promise.resolve(r);if(t.kind===`lazy`)return i=s(t.factory),i;if(a)return Promise.reject(Wr());let e=t.factory();return i=s(()=>Vr(e)),i};return{async arrayBuffer(){let e=await c();return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)},async blob(){if(o)return await o;if(n&&r===void 0&&i===void 0&&!Gr())return o=n(),await o;let t=await c();try{return new Blob([t],{type:e.type})}catch(e){throw new G(`Provider`,`this runtime's Blob cannot wrap bytes (React Native). Call blob() before text()/arrayBuffer(), or read the download with arrayBuffer() instead.`,e)}},etag:e.etag,key:e.key,lastModified:e.lastModified,metadata:e.metadata,name:e.key,size:e.size,stream(){if(r)return Hr(r);if(i)return Ur(i);if(t.kind===`stream`){if(a)throw Wr();return a=!0,t.factory()}return Ur(c())},async text(){let e=await c();return new TextDecoder().decode(e)},type:e.type}},Jr=e=>{if(!e)return{};try{let t=Uint8Array.from(atob(e),e=>e.codePointAt(0)??0);return JSON.parse(new TextDecoder().decode(t))}catch{return{}}},Yr=(e,t)=>{let n=Jr(e.headers.get(`x-files-meta`)),r=e.headers.get(`content-length`),i=r===null?0:Number(r),{body:a}=e;return qr({etag:e.headers.get(`etag`)??n.etag,key:n.key??t,lastModified:n.lastModified,metadata:n.metadata,size:i,type:e.headers.get(`content-type`)??`application/octet-stream`},a?{factory:()=>a,kind:`stream`}:{factory:async()=>new Uint8Array(await e.arrayBuffer()),kind:`lazy`},a?void 0:()=>e.blob())},K=e=>Lr(e)&&!(e instanceof Blob)&&`uri`in e&&Fr(e.uri),Xr=e=>{let t=0,n=0;for(let r of e)t+=r.loaded,n+=r.total;return{fraction:n===0?0:t/n,loaded:t,total:n}},Zr=e=>e.name?e.name:e.uri.split(`?`)[0]?.split(`/`).pop()||`blob`,Qr=e=>e instanceof File?e.name:K(e)?Zr(e):`blob`,$r=e=>e instanceof Blob?{size:e.size,type:e.type}:K(e)?{size:e.size??0,type:e.type??``}:{size:e.byteLength,type:``},ei=e=>{let{size:t,type:n}=$r(e);return{file:e,loaded:0,name:Qr(e),progress:0,size:t,status:`pending`,total:t,type:n||`application/octet-stream`}};AbortSignal.any;var ti=e=>e instanceof G?e:e instanceof Error?new G(`Provider`,`Operation aborted: ${e.message}`,e,{aborted:!0}):new G(`Provider`,e===void 0?`Operation aborted`:`Operation aborted: ${String(e)}`,e,{aborted:!0}),ni=e=>e instanceof Blob?e.size:K(e)?e.size??0:e.byteLength,ri=e=>e instanceof Blob||K(e)?e:new Blob([e]),ii=e=>{if(K(e))throw new G(`Provider`,`a NativeFileRef body requires a presigned-POST target; resolve it to a Blob first`);return e},ai=e=>{if(e.method===`POST`&&e.fields){let t=new FormData;for(let[n,r]of Object.entries(e.fields))t.append(n,r);return e.body&&t.append(`file`,ri(e.body)),t}return ii(e.body)},oi=e=>new Promise((t,n)=>{if(e.signal?.aborted){n(ti(e.signal.reason));return}let r=new XMLHttpRequest;if(r.open(e.method,e.url,!0),e.headers&&!(e.method===`POST`&&e.fields))for(let[t,n]of Object.entries(e.headers))r.setRequestHeader(t,n);e.onProgress&&r.upload.addEventListener(`progress`,t=>{t.lengthComputable&&e.onProgress?.(t.loaded,t.total)}),r.addEventListener(`load`,()=>t({status:r.status,text:r.responseText})),r.addEventListener(`error`,()=>n(new G(`Provider`,`network error during upload`))),r.addEventListener(`abort`,()=>n(ti(e.signal?.reason))),e.signal?.addEventListener(`abort`,()=>r.abort(),{once:!0}),r.send(ai(e))}),si=e=>async t=>{let n=t.body?ni(t.body):0;t.onProgress?.(0,n);let r;if(t.method===`POST`&&t.fields){let e=new FormData;for(let[n,r]of Object.entries(t.fields))e.append(n,r);t.body&&e.append(`file`,ri(t.body)),r=e}else r=ii(t.body);let i=await e(t.url,{body:r,headers:t.method===`POST`&&t.fields?void 0:t.headers,method:t.method,signal:t.signal});return t.onProgress?.(n,n),{status:i.status,text:await i.text()}},ci=e=>typeof XMLHttpRequest>`u`?si(e):oi,li=`/api/files`,ui=4,di=e=>{switch(e){case`NotFound`:return`NotFound`;case`Unauthorized`:case`Forbidden`:return`Unauthorized`;case`Conflict`:return`Conflict`;case`ReadOnly`:return`ReadOnly`;default:return`Provider`}},fi=e=>new G(di(e.code),e.message,void 0,{aborted:e.aborted,permanent:e.code===`Validation`,timedOut:e.timedOut}),pi=e=>e?.length?e.map(e=>({error:fi(e.error),key:e.key})):void 0,mi=(e,t)=>{let n=pi(t);return n?{...e,errors:n}:e},hi=e=>({body:e,size:e.size,type:e.type}),gi=e=>e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength),_i=(e,t)=>{if(e instanceof Blob)return hi(t&&e.type!==t?new Blob([e],{type:t}):e);if(Fr(e))return hi(new Blob([e],t?{type:t}:void 0));let n=gi(e);try{return hi(new Blob([n],t?{type:t}:void 0))}catch{return{body:n,size:n.byteLength,type:t??``}}},vi=(e={})=>{let t=e.endpoint??li,n=e.fetchImpl??fetch,r=e.transport??ci(n),i=e.concurrency??ui,a=t.includes(`?`)?`&`:`?`,o=async e=>{let t=await n(e.uri);if(!t.ok)throw new G(`Provider`,`could not read upload source ${e.uri} (${t.status})`);return t.blob()},s=async()=>{let t=Ir(e.headers)?await e.headers():e.headers;return t?Object.fromEntries(new Headers(t).entries()):{}},c=async e=>{try{let t=await e.json();if(t.error?.code)return fi(t.error)}catch{}return new G(`Provider`,`gateway responded ${e.status}`)},l=async(e,r)=>{let i=await n(t,{body:JSON.stringify(e),headers:{"content-type":`application/json`,...await s()},method:`POST`,signal:r});if(!i.ok)throw await c(i);return await i.json()},u=async(e,r)=>{let i=await s();r?.range&&(i.range=`bytes=${r.range.start}-${r.range.end??``}`);let o=await n(`${t}${a}op=download&key=${encodeURIComponent(e)}`,{headers:i,method:`GET`,signal:r?.signal});if(!o.ok)throw await c(o);return Yr(o,e)},d=e=>qr({etag:e.etag,key:e.key,lastModified:e.lastModified,metadata:e.metadata,size:e.size,type:e.type},{factory:async()=>{let t=await u(e.key);return new Uint8Array(await t.arrayBuffer())},kind:`lazy`}),f=(e,t)=>{let n;try{n=JSON.parse(t)}catch{n=void 0}if(e<200||e>=300){let t=n?.error;throw t?fi(t):new G(`Provider`,`upload failed (${e})`)}return n},p=async(e,t,n,i)=>{let a=await r({body:t,method:e.method,onProgress:i,signal:n,url:e.url,...e.method===`PUT`?{headers:e.headers}:{fields:e.fields}});if(a.status<200||a.status>=300)throw new G(`Provider`,`upload failed (${a.status})`)},m=async(e,t)=>{let n={name:Qr(e),size:e.size??0,type:e.type||`application/octet-stream`},[r]=(await l({files:[n],op:`presign`,...t?.expiresIn&&{expiresIn:t.expiresIn}},t?.signal)).uploads;if(!r)throw new G(`Provider`,`presign returned no upload target`);let{id:i,key:a,target:s}=r,c=K(e)&&s.method===`PUT`?await o(e):e,u=ei(e);u.status=`uploading`,u.key=a;let d=[u];await p(s,c,t?.signal,(e,n)=>{u.loaded=e,u.total=n||u.size,u.progress=u.total?e/u.total:0,t?.onProgress?.(Xr(d),d)});let f=await l({completions:[{id:i,key:a}],op:`complete`},t?.signal),[m]=f.files;if(!m){let e=f.errors?.[0];throw e?fi(e.error):new G(`Provider`,`upload did not complete`)}return u.status=`success`,u.progress=1,{etag:m.etag,key:m.key,lastModified:m.lastModified,size:m.size,type:m.type}},h=async(e,n,i)=>{let c=K(n)?_i(await o(n),i?.contentType??n.type):_i(n,i?.contentType),l=await r({body:c.body,headers:{"content-type":c.type||`application/octet-stream`,...await s()},method:`PUT`,onProgress:i?.onProgress?(t,n)=>{let r=ei(c.body);r.key=e,r.status=`uploading`,r.loaded=t,r.total=n||c.size,r.progress=r.total?t/r.total:0,i.onProgress?.(Xr([r]),[r])}:void 0,signal:i?.signal,url:`${t}${a}op=upload&key=${encodeURIComponent(e)}`});return f(l.status,l.text).file},g=async(e,t)=>{let n=await Rr(e,async e=>{try{return{ok:!0,out:await h(e.key,e.body,{contentType:e.contentType,signal:t?.signal})}}catch(n){if(t?.stopOnError)throw n;return{error:G.wrap(n),key:e.key,ok:!1}}},{concurrency:t?.concurrency??i}),r=[],a=[];for(let e of n)e.ok?r.push({contentType:e.out.type,etag:e.out.etag,key:e.out.key,lastModified:e.out.lastModified,size:e.out.size}):a.push({error:e.error,key:e.key});return a.length?{errors:a,uploaded:r}:{uploaded:r}},_=async(e,t)=>{let n=await Rr(e,async e=>{try{return{file:await u(e,{as:t?.as,signal:t?.signal}),ok:!0}}catch(n){if(t?.stopOnError)throw n;return{error:G.wrap(n),key:e,ok:!1}}},{concurrency:t?.concurrency??i}),r=[],a=[];for(let e of n)e.ok?r.push(e.file):a.push({error:e.error,key:e.key});return a.length?{downloaded:r,errors:a}:{downloaded:r}},v={capabilities:async e=>(await l({op:`capabilities`},e?.signal)).capabilities,copy:async(e,t,n)=>{await l({from:e,op:`copy`,to:t},n?.signal)},delete:async(e,t)=>{if(Array.isArray(e)){let n=await l({concurrency:t?.concurrency,keys:e,op:`delete-many`,stopOnError:t?.stopOnError},t?.signal);return mi({deleted:n.deleted},n.errors)}await l({key:e,op:`delete`},t?.signal)},download:(e,t)=>Array.isArray(e)?_(e,t):u(e,t),exists:async(e,t)=>{if(Array.isArray(e)){let n=await l({concurrency:t?.concurrency,keys:e,op:`exists-many`,stopOnError:t?.stopOnError},t?.signal);return mi({existing:n.existing,missing:n.missing},n.errors)}return(await l({key:e,op:`exists`},t?.signal)).exists},head:async(e,t)=>{if(Array.isArray(e)){let n=await l({concurrency:t?.concurrency,keys:e,op:`head-many`,stopOnError:t?.stopOnError},t?.signal);return mi({files:n.files.map(d)},n.errors)}let n=await l({key:e,op:`head`},t?.signal);return d(n.file)},list:async e=>{let t=await l({op:`list`,...e?.prefix!==void 0&&{prefix:e.prefix},...e?.cursor!==void 0&&{cursor:e.cursor},...e?.limit!==void 0&&{limit:e.limit},...e?.delimiter!==void 0&&{delimiter:e.delimiter}},e?.signal);return{items:t.items.map(d),...t.prefixes&&{prefixes:t.prefixes},...t.cursor&&{cursor:t.cursor}}},async*listAll(e){let t=e?.cursor;do{let n=await v.list({...e,cursor:t});for(let e of n.items)yield e;({cursor:t}=n)}while(t)},move:async(e,t,n)=>{await l({from:e,op:`move`,to:t},n?.signal)},purge:async(e,t)=>{await l({op:`purge`,...e!==void 0&&{key:e}},t?.signal)},restoreTrashed:async(e,t)=>{let n=await l({key:e,op:`restore-trashed`},t?.signal);return d(n.file)},restoreVersion:async(e,t,n)=>{let r=await l({key:e,op:`restore-version`,...t!==void 0&&{versionId:t}},n?.signal);return d(r.file)},async*search(e,t){let n=e instanceof RegExp?{flags:e.flags,isRegex:!0,pattern:e.source}:{pattern:e},r=await l({op:`search`,...n,...t?.match&&{match:t.match},...t?.prefix!==void 0&&{prefix:t.prefix},...t?.limit!==void 0&&{limit:t.limit},...t?.maxResults!==void 0&&{maxResults:t.maxResults},...t?.caseInsensitive!==void 0&&{caseInsensitive:t.caseInsensitive}},t?.signal);for(let e of r.matches)yield d(e)},signedUploadUrl:async(e,t)=>(await l({expiresIn:t.expiresIn,key:e,op:`signed-upload-url`,...t.contentType&&{contentType:t.contentType},...t.maxSize!==void 0&&{maxSize:t.maxSize},...t.minSize!==void 0&&{minSize:t.minSize}},t.signal)).signed,trashed:async e=>(await l({op:`trashed`},e?.signal)).trashed,upload:(e,t,n)=>Array.isArray(e)?g(e,t):Fr(e)?h(e,t,n):m(e,t),url:async(e,t)=>(await l({key:e,op:`url`,...t?.expiresIn!==void 0&&{expiresIn:t.expiresIn},...t?.responseContentDisposition!==void 0&&{responseContentDisposition:t.responseContentDisposition}},t?.signal)).url,versions:async(e,t)=>(await l({key:e,op:`versions`},t?.signal)).versions};return v};const yi=`https://github.com/liria24/nuxt-files-sdk/blob/main/docs/content/4.reference/4.troubleshooting.md`,bi={NUXT_FILES_NOT_CONFIGURED:{level:`warning`,message:`The Files registry has not been configured.`,hint:`Check that files.config.ts is loaded by the Nuxt or Nitro integration.`,docs:yi},NUXT_FILES_INVALID_CONFIG:{level:`error`,message:`The Files registry rejected the storage configuration.`,hint:`Check the storage and devStorage shapes in files.config.ts.`,docs:yi},NUXT_FILES_ADAPTER_INIT_FAILED:{level:`error`,message:`A configured storage adapter could not be initialized.`,hint:`Check the provider package, runtime support, and required configuration.`,docs:yi},NUXT_FILES_GATEWAY_FAILED:{level:`error`,message:`The Files DevTools gateway could not complete a request.`,hint:`Check the Nitro development server and the Files registry diagnostics.`,docs:yi}},xi=e=>!!(e&&typeof e==`object`&&`code`in e&&typeof e.code==`string`&&Object.hasOwn(bi,e.code)&&`level`in e&&(e.level===`info`||e.level===`warning`||e.level===`error`)&&`message`in e&&typeof e.message==`string`),q=(e,t)=>{let n=document.querySelector(e);if(!(n instanceof t))throw Error(`Missing DevTools element: ${e}`);return n},Si=q(`#summary`,HTMLElement),Ci=q(`#storage-select`,HTMLSelectElement),wi=q(`#breadcrumbs`,HTMLElement),Ti=q(`#files`,HTMLTableSectionElement),Ei=q(`#browser-status`,HTMLElement),Di=q(`#access-badge`,HTMLElement),Oi=q(`#refresh`,HTMLButtonElement),ki=q(`#upload`,HTMLInputElement),Ai=q(`.upload-button`,HTMLElement);let J,Y,X,Z=``,ji=0,Mi,Ni;const Pi=new Map,Fi=e=>typeof e==`object`&&!!e,Ii=e=>Fi(e)&&Array.isArray(e.storages)&&e.storages.every(e=>Fi(e)&&(e.name===void 0||typeof e.name==`string`)&&typeof e.adapter==`string`&&Array.isArray(e.plugins)&&e.plugins.every(e=>typeof e==`string`)&&(e.source===`storage`||e.source===`devStorage`)&&typeof e.initialized==`boolean`)&&Array.isArray(e.diagnostics)&&e.diagnostics.every(xi),Li=e=>Fi(e)&&typeof e.write==`boolean`&&typeof e.maxUploadSize==`number`,Ri=async e=>{let t=await fetch(e);if(!t.ok)throw Error(`DevTools request failed (${t.status}).`);return t.json()},zi=()=>X===void 0?`./files`:`./files?storage=${encodeURIComponent(X)}`,Bi=()=>vi({endpoint:zi()}),Vi=()=>X??``,Q=(e,t=!1)=>{Ei.textContent=e,Ei.classList.toggle(`error-text`,t)},Hi=async e=>{await Ni,Mi?.scope(`nuxt-files-sdk`).rpc.callEvent(`report-failure`,e)},Ui=async()=>{await Ni,Mi?.scope(`nuxt-files-sdk`).rpc.callEvent(`report-diagnostics`,J.diagnostics)},Wi=e=>{if(e<1024)return`${e} B`;let t=[`KB`,`MB`,`GB`,`TB`],n=e,r=-1;do n/=1024,r++;while(n>=1024&&r<t.length-1);return`${n.toFixed(n>=10?0:1)} ${t[r]}`},Gi=e=>e.slice(Z.length).replace(/\/$/u,``)||e,Ki=(e,t)=>{let n=document.createElement(`button`);return n.type=`button`,n.className=`row-action`,n.textContent=e,n.addEventListener(`click`,t),n},qi=()=>{let e=Z.split(`/`).filter(Boolean),t=[],n=Ki(`Root`,()=>{Z=``,$()});n.className=`breadcrumb`,t.push(n);let r=``;for(let n of e){t.push(document.createTextNode(`/`)),r+=`${n}/`;let e=r,i=Ki(n,()=>{Z=e,$()});i.className=`breadcrumb`,t.push(i)}wi.replaceChildren(...t)},Ji=e=>{let t=document.createElement(`tr`),n=document.createElement(`td`);n.className=`file-name`,n.textContent=Gi(e.key);let r=document.createElement(`td`);r.textContent=Wi(e.size);let i=document.createElement(`td`);i.textContent=e.type||`application/octet-stream`;let a=document.createElement(`td`);a.textContent=e.lastModified?new Date(e.lastModified).toLocaleString():`—`;let o=document.createElement(`td`);return o.className=`actions`,o.append(Ki(`Download`,()=>void Xi(e.key)),...Y.write?[Ki(`Delete`,()=>void Zi(e.key))]:[]),t.append(n,r,i,a,o),t},Yi=e=>{let t=document.createElement(`tr`),n=document.createElement(`td`);n.className=`file-name`;let r=Ki(`📁 ${Gi(e)}`,()=>{Z=e,$()});r.className=`folder`,n.append(r);let i=document.createElement(`td`);return i.colSpan=4,i.className=`folder-detail`,i.textContent=`Folder`,t.append(n,i),t},$=async()=>{let e=++ji,t=!Pi.has(Vi());qi(),Ti.innerHTML=`<tr><td colspan="5" class="empty-state">Loading files…</td></tr>`,Q(`Loading…`);try{let t=Bi(),n=Pi.get(Vi());n||(n=await t.capabilities(),Pi.set(Vi(),n));let r=await t.list({prefix:Z,limit:1e3,...n.delimiter?{delimiter:`/`}:{}});if(e!==ji)return;let i=[...(r.prefixes??[]).toSorted().map(Yi),...r.items.toSorted((e,t)=>e.key.localeCompare(t.key)).map(Ji)];i.length?Ti.replaceChildren(...i):Ti.innerHTML=`<tr><td colspan="5" class="empty-state">No files in this location.</td></tr>`,Q(`${i.length} item${i.length===1?``:`s`}${r.cursor?` · first page`:``}`)}catch(n){if(e!==ji)return;Ti.innerHTML=`<tr><td colspan="5" class="empty-state">Unable to load files.</td></tr>`;let r=n instanceof Error?n.message:String(n);Q(r,!0),Hi({kind:t?`initialization`:`gateway`,message:r,...X===void 0?{}:{target:X}});try{let e=await Ri(`./snapshot`);Ii(e)&&(J=e,$i(),Ui())}catch{}}},Xi=async e=>{Q(`Downloading ${e}…`);try{let t=await Bi().download(e,{as:`blob`}),n=URL.createObjectURL(await t.blob()),r=document.createElement(`a`);r.href=n,r.download=e.split(`/`).at(-1)||e,r.click(),setTimeout(()=>URL.revokeObjectURL(n)),Q(`Downloaded ${e}`)}catch(e){Q(e instanceof Error?e.message:String(e),!0)}},Zi=async e=>{if(window.confirm(`Delete ${e}? This cannot be undone.`)){Q(`Deleting ${e}…`);try{await Bi().delete(e),await $()}catch(t){let n=t instanceof Error?t.message:String(t);Q(n,!0),Hi({kind:`delete`,message:n,target:e})}}},Qi=async e=>{let t=`${Z}${e.name}`;if(e.size>Y.maxUploadSize){let n=`${e.name} exceeds the ${Wi(Y.maxUploadSize)} development upload limit.`;Q(n,!0),Hi({kind:`upload`,message:n,target:t});return}let n=Bi();try{if(await n.exists(t)&&!window.confirm(`Replace the existing file ${t}?`))return;Q(`Uploading ${t}…`),await n.upload(t,e,{contentType:e.type||`application/octet-stream`}),await $()}catch(e){let n=e instanceof Error?e.message:String(e);Q(n,!0),Hi({kind:`upload`,message:n,target:t})}},$i=()=>{Si.textContent=`${J.storages.length} configured storage${J.storages.length===1?``:`s`}`,q(`#storages`,HTMLTableSectionElement).replaceChildren(...J.storages.map(e=>{let t=document.createElement(`tr`);for(let n of[e.name??`Single storage`,e.adapter,e.plugins.join(`, `)||`—`,e.source]){let e=document.createElement(`td`);e.textContent=n,t.append(e)}let n=document.createElement(`td`),r=document.createElement(`span`);return r.className=`status ${e.initialized?`success`:`idle`}`,r.textContent=e.initialized?`Initialized`:`Not initialized`,n.append(r),t.append(n),t}));let e=q(`#diagnostics`,HTMLElement);J.diagnostics.length?e.replaceChildren(...J.diagnostics.map(e=>{let t=document.createElement(`p`);t.className=e.level;let n=document.createElement(`strong`);if(n.textContent=`${e.code}: ${e.message}`,t.append(n),e.hint&&t.append(document.createElement(`br`),e.hint),e.docs){let n=document.createElement(`a`);n.href=e.docs,n.target=`_blank`,n.rel=`noreferrer`,n.textContent=`Troubleshooting`,t.append(document.createElement(`br`),n)}return t})):e.textContent=`No integration diagnostics.`},ea=async()=>{try{let[e,t]=await Promise.all([Ri(`./snapshot`),Ri(`./files?op=devtools`)]);if(!Ii(e)||!Li(t))throw Error(`Files development tools returned an invalid response.`);J=e,Y=t,$i(),Ui();let n=X;Ci.replaceChildren(...J.storages.map(e=>{let t=document.createElement(`option`);return t.value=e.name??``,t.textContent=e.name??`Single storage`,t})),Ci.hidden=J.storages.length<2,X=J.storages.some(({name:e})=>e===n)?n:J.storages[0]?.name,Ci.value=X??``,Di.textContent=Y.write?`Read & write`:`Read only`,Di.className=`access-badge ${Y.write?`write`:``}`,Di.hidden=!1,ki.disabled=!Y.write,Ai.hidden=!Y.write,J.storages.length?await $():Q(`No configured storage.`,!0)}catch(e){Si.textContent=`Unable to load Files development tools`;let t=e instanceof Error?e.message:String(e);Q(t,!0),Hi({kind:`gateway`,message:t})}},ta=async()=>{try{let e=J.diagnostics.length?J.diagnostics.map(e=>[`${e.code} [${e.level}]: ${e.message}`,e.hint?`Hint: ${e.hint}`:``,e.docs?`Docs: ${e.docs}`:``].filter(Boolean).join(`
1
+ function e(e,t){let n=`\x1B[${e}m`,r=`\x1B[${t}m`;return((e,...t)=>{if(Array.isArray(e)&&`raw`in e){let i=e,a=``;for(let e=0;e<i.length;e++)a+=i[e],e<t.length&&(a+=String(t[e]));return`${n}${a}${r}`}return`${n}${String(e)}${r}`})}const t={blue:e(34,39),cyan:e(36,39),gray:e(90,39),green:e(32,39),red:e(31,39),yellow:e(33,39),bold:e(1,22),dim:e(2,22),reset:e(0,0),underline:e(4,24)};function n(e,...t){return typeof e==`function`?e(...t):e}const r=Error.captureStackTrace;var i=class e extends Error{name;code;docs;fix;sources;data;get why(){return this.message}constructor(t,n=e){super(t.why,{cause:t.cause}),this.code=this.name=t.code,this.fix=t.fix,this.docs=t.docs,this.sources=t.sources,this.data=t.data,r?.(this,n)}toJSON(){return{name:this.name,why:this.why,fix:this.fix,docs:this.docs,sources:this.sources,cause:this.cause,data:this.data,stack:this.stack}}};function a(e,t){return typeof e==`string`?`${e}/${t.toLowerCase()}`:e?.(t)}/* @__NO_SIDE_EFFECTS__ */
2
+ function o(e){let t=e.reporters??[],r={},{docsBase:o}=e;for(let s of Object.keys(e.codes)){let c=e.codes[s],l=c.docs===!1?void 0:c.docs||a(o,s),u=(e={},r={})=>{let a=new i({code:s,why:n(c.why,e),fix:n(c.fix,e),docs:l,cause:e.cause,sources:e.sources,data:n(c.data,e)},u);for(let e of t)e(a,r);return a};r[s]=u}return r}/* @__NO_SIDE_EFFECTS__ */
3
+ function s(e){return t=>{let n=`${e.bold(e.red(`[${t.name}]`))} ${t.message}`,r=[];return t.fix&&r.push(`${e.dim(`fix:`)} ${t.fix}`),t.sources?.length&&r.push(`${e.dim(`sources:`)} ${t.sources.join(`, `)}`),t.docs&&r.push(`${e.dim(`see:`)} ${e.cyan(t.docs)}`),r.length===0?n:[n,...r.map((t,n)=>`${e.dim(n<r.length-1?`├▶`:`╰▶`)} ${t}`)].join(`
4
+ `)}}const c={bus:{agentManifestChanged:`agent:manifest:changed`,agentToolRegistered:`agent:tool:registered`,agentToolUnregistered:`agent:tool:unregistered`,agentResourceRegistered:`agent:resource:registered`,agentResourceUnregistered:`agent:resource:unregistered`},client:{isTrustedUpdated:`rpc:is-trusted:updated`,error:`rpc:error`,connectionStatus:`connection:status`,connectionError:`connection:error`},broadcast:{authRevoked:`devframe:auth:revoked`,clientStateUpdated:`devframe:rpc:client-state:updated`,clientStatePatch:`devframe:rpc:client-state:patch`,streamingChunk:`devframe:streaming:chunk`,streamingEnd:`devframe:streaming:end`,streamingUploadCancel:`devframe:streaming:upload-cancel`},inPageChannel:{panelStateUpdated:`devframe:in-page:panel-state:updated`,panelStatePatch:`devframe:in-page:panel-state:patch`},postMessage:{remoteAssetsError:`devframe:remote-assets-error`,inPageChannel:`devframe:in-page-channel`}},l=/* @__PURE__ */ s(t);function u(e,{method:t=`warn`}={}){console[t](l(e))}function d(e){return/* @__PURE__ */ o({...e,reporters:[u,...e.reporters??[]]})}function f(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}const p=Math.random.bind(Math);function m(e=21){let t=``,n=e;for(;n--;)t+=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`[p()*64|0];return t}const h=e=>e,g=h,{clearTimeout:_,setTimeout:v}=globalThis;function y(e,t){let{post:n,on:r,off:i=()=>{},eventNames:a=[],serialize:o=h,deserialize:s=g,resolver:c,bind:l=`rpc`,timeout:u=6e4,proxify:d=!0}=t,p=!1,y=/* @__PURE__ */ new Map,b,x;async function S(e,r,i,a){if(p)throw Error(`[birpc] rpc is closed, cannot call "${e}"`);let s={m:e,a:r,t:`q`};a&&(s.o=!0);let c=async e=>n(o(e));if(i){await c(s);return}if(b)try{await b}finally{b=void 0}let{promise:l,resolve:d,reject:h}=f(),g=m();s.i=g;let S;async function C(n=s){return u>=0&&(S=v(()=>{try{if(t.onTimeoutError?.call(x,e,r)!==!0)throw Error(`[birpc] timeout on calling "${e}"`)}catch(e){h(e)}y.delete(g)},u),typeof S==`object`&&(S=S.unref?.())),y.set(g,{resolve:d,reject:h,timeoutId:S,method:e}),await c(n),l}try{t.onRequest?await t.onRequest.call(x,s,C,d):await C()}catch(e){if(t.onGeneralError?.call(x,e)!==!0)throw e;return}finally{_(S),y.delete(g)}return l}let C={$call:(e,...t)=>S(e,t,!1),$callOptional:(e,...t)=>S(e,t,!1,!0),$callEvent:(e,...t)=>S(e,t,!0),$callRaw:e=>S(e.method,e.args,e.event,e.optional),$rejectPendingCalls:ee,get $closed(){return p},get $meta(){return t.meta},$close:w,$functions:e};x=d?new Proxy({},{get(t,n){if(Object.hasOwn(C,n))return C[n];if(n===`then`&&!a.includes(`then`)&&!(`then`in e))return;let r=(...e)=>S(n,e,!0);if(a.includes(n))return r.asEvent=r,r;let i=(...e)=>S(n,e,!1);return i.asEvent=r,i}}):C;function w(e){p=!0,y.forEach(({reject:t,method:n})=>{let r=/* @__PURE__ */ Error(`[birpc] rpc is closed, cannot call "${n}"`);if(e)return e.cause??=r,t(e);t(r)}),y.clear(),i(T)}function ee(e){let t=Array.from(y.values()).map(({method:t,reject:n})=>e?e({method:t,reject:n}):n(/* @__PURE__ */ Error(`[birpc]: rejected pending call "${t}".`)));return y.clear(),t}async function T(r,...i){let a;try{a=s(r)}catch(e){if(t.onGeneralError?.call(x,e)!==!0)throw e;return}if(a.t===`q`){let{m:r,a:s,o:u}=a,d,f,p=await(c?c.call(x,r,e[r]):e[r]);if(u&&(p||=()=>void 0),!p)f=/* @__PURE__ */ Error(`[birpc] function "${r}" not found`);else try{d=await p.apply(l===`rpc`?x:e,s)}catch(e){f=e}if(a.i){if(f&&t.onFunctionError&&t.onFunctionError.call(x,f,r,s)===!0)return;if(!f)try{await n(o({t:`s`,i:a.i,r:d}),...i);return}catch(e){if(f=e,t.onGeneralError?.call(x,e,r,s)!==!0)throw e}try{await n(o({t:`s`,i:a.i,e:f}),...i)}catch(e){if(t.onGeneralError?.call(x,e,r,s)!==!0)throw e}}}else{let{i:e,r:t,e:n}=a,r=y.get(e);r&&(_(r.timeoutId),n?r.reject(n):r.resolve(t)),y.delete(e)}}return b=r(T),x}function b(e,t){return t.safety?t.safety:e===`static`||e===`query`||e==null?`read`:`action`}const x=Object.freeze({type:`object`,additionalProperties:!0});function S(e){let t=e[`~standard`];if(t.jsonSchema)try{return t.jsonSchema.input({target:`draft-2020-12`})}catch{return x}return x}function C(e){if(!e||e.length===0)return{type:`object`,properties:{}};let t={},n=[];for(let r=0;r<e.length;r++){let i=`arg${r}`;t[i]=S(e[r]),n.push(i)}return{type:`object`,properties:t,required:n,additionalProperties:!1}}function w(e,t){if(Array.isArray(e))return e;if(e==null)return[];if(typeof e!=`object`)return;let n=e;if(t!=null)return Array.from({length:t},(e,t)=>n[`arg${t}`]);if(`arg0`in n){let e=[];for(;`arg${e.length}`in n;)e.push(n[`arg${e.length}`]);return e}return Object.keys(n).length===0?[]:void 0}function ee(e,t){return w(e,t)??[e]}function T(e){return typeof e==`string`?`'${e}'`:new ne().serialize(e)}const E=/*@__PURE__*/ (function(){let e=/* @__PURE__ */ new Uint8Array(128);for(let t=0;t<69;t++)e[` _-,;:!?.'"()[]{}@*/\\&#%\`^+<=>|~$0123456789abcdefghijklmnopqrstuvwxyz`.charCodeAt(t)]=t+1;for(let t=65;t<=90;t++)e[t]=e[t+32];return e})();function te(e,t){if(e===t)return 0;let n=Math.min(e.length,t.length),r=0;for(let i=0;i<n;i++){let n=e.charCodeAt(i),a=t.charCodeAt(i);if(n===a)continue;let o=n<128&&E[n]?E[n]:n+128,s=a<128&&E[a]?E[a]:a+128;if(o!==s)return o<s?-1:1;r===0&&(r=n>a?-1:1)}return e.length===t.length?r:e.length<t.length?-1:1}const ne=/*@__PURE__*/ (function(){class e{#e=/* @__PURE__ */ new Map;compare(e,t){let n=typeof e,r=typeof t;return n===`string`&&r===`string`?te(e,t):n===`number`&&r===`number`?e-t:te(this.serialize(e,!0),this.serialize(t,!0))}serialize(e,t){if(e===null)return`null`;switch(typeof e){case`string`:return t?e:`'${e}'`;case`bigint`:return`${e}n`;case`object`:return this.$object(e);case`function`:return this.$function(e)}return String(e)}serializeObject(e){let t=Object.prototype.toString.call(e);if(t!==`[object Object]`)return this.serializeBuiltInType(t.length<10?`unknown:${t}`:t.slice(8,-1),e);let n=e.constructor,r=n===Object||n===void 0?``:n.name;if(r!==``&&globalThis[r]===n)return this.serializeBuiltInType(r,e);if(`toJSON`in e&&typeof e.toJSON==`function`){let t=e.toJSON();return r+(typeof t==`object`&&t?this.$object(t):`(${this.serialize(t)})`)}let i=Object.keys(e).sort(te),a=`${r}{`;for(let t=0;t<i.length;t++){let n=i[t];a+=`${n}:${this.serialize(e[n])}`,t<i.length-1&&(a+=`,`)}return a+`}`}serializeBuiltInType(e,t){let n=this[`$`+e];if(n)return n.call(this,t);if(typeof t.entries==`function`)return this.serializeObjectEntries(e,t.entries());throw Error(`Cannot serialize ${e}`)}serializeObjectEntries(e,t){let n=Array.from(t).sort((e,t)=>this.compare(e[0],t[0])),r=`${e}{`;for(let e=0;e<n.length;e++){let[t,i]=n[e];r+=`${this.serialize(t,!0)}:${this.serialize(i)}`,e<n.length-1&&(r+=`,`)}return r+`}`}$object(e){let t=this.#e.get(e);return t===void 0&&(this.#e.set(e,`#${this.#e.size}`),t=this.serializeObject(e),this.#e.set(e,t)),t}$function(e){let t=Function.prototype.toString.call(e);return t.slice(-15)===`[native code] }`?`${e.name||``}()[native]`:`${e.name}(${e.length})${t.replace(/\s*\n\s*/g,``)}`}$Array(e){let t=`[`;for(let n=0;n<e.length;n++)t+=this.serialize(e[n]),n<e.length-1&&(t+=`,`);return t+`]`}$Date(e){try{return`Date(${e.toISOString()})`}catch{return`Date(null)`}}$ArrayBuffer(e){return`ArrayBuffer[${new Uint8Array(e).join(`,`)}]`}$Set(e){return`Set${this.$Array(Array.from(e).sort((e,t)=>this.compare(e,t)))}`}$Map(e){return this.serializeObjectEntries(`Map`,e.entries())}}for(let t of[`Error`,`RegExp`,`URL`])e.prototype[`$`+t]=function(e){return`${t}(${e})`};for(let t of[`Int8Array`,`Uint8Array`,`Uint8ClampedArray`,`Int16Array`,`Uint16Array`,`Int32Array`,`Uint32Array`,`Float32Array`,`Float64Array`])e.prototype[`$`+t]=function(e){return`${t}[${e.join(`,`)}]`};for(let t of[`BigInt64Array`,`BigUint64Array`])e.prototype[`$`+t]=function(e){return`${t}[${e.join(`n,`)}${e.length>0?`n`:``}]`};return e})(),re=[1779033703,-1150833019,1013904242,-1521486534,1359893119,-1694144372,528734635,1541459225],ie=[1116352408,1899447441,-1245643825,-373957723,961987163,1508970993,-1841331548,-1424204075,-670586216,310598401,607225278,1426881987,1925078388,-2132889090,-1680079193,-1046744716,-459576895,-272742522,264347078,604807628,770255983,1249150122,1555081692,1996064986,-1740746414,-1473132947,-1341970488,-1084653625,-958395405,-710438585,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,-2117940946,-1838011259,-1564481375,-1474664885,-1035236496,-949202525,-778901479,-694614492,-200395387,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,-2067236844,-1933114872,-1866530822,-1538233109,-1090935817,-965641998],D=[];var ae=class{_data=new oe;_hash=new oe([...re]);_nDataBytes=0;_minBufferSize=0;finalize(e){e&&this._append(e);let t=this._nDataBytes*8,n=this._data.sigBytes*8;return this._data.words[n>>>5]|=128<<24-n%32,this._data.words[(n+64>>>9<<4)+14]=Math.floor(t/4294967296),this._data.words[(n+64>>>9<<4)+15]=t,this._data.sigBytes=this._data.words.length*4,this._process(),this._hash}_doProcessBlock(e,t){let n=this._hash.words,r=n[0],i=n[1],a=n[2],o=n[3],s=n[4],c=n[5],l=n[6],u=n[7];for(let n=0;n<64;n++){if(n<16)D[n]=e[t+n]|0;else{let e=D[n-15],t=(e<<25|e>>>7)^(e<<14|e>>>18)^e>>>3,r=D[n-2],i=(r<<15|r>>>17)^(r<<13|r>>>19)^r>>>10;D[n]=t+D[n-7]+i+D[n-16]}let d=s&c^~s&l,f=r&i^r&a^i&a,p=(r<<30|r>>>2)^(r<<19|r>>>13)^(r<<10|r>>>22),m=(s<<26|s>>>6)^(s<<21|s>>>11)^(s<<7|s>>>25),h=u+m+d+ie[n]+D[n],g=p+f;u=l,l=c,c=s,s=o+h|0,o=a,a=i,i=r,r=h+g|0}n[0]=n[0]+r|0,n[1]=n[1]+i|0,n[2]=n[2]+a|0,n[3]=n[3]+o|0,n[4]=n[4]+s|0,n[5]=n[5]+c|0,n[6]=n[6]+l|0,n[7]=n[7]+u|0}_append(e){typeof e==`string`&&(e=oe.fromUtf8(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes}_process(e){let t,n=this._data.sigBytes/64;n=e?Math.ceil(n):Math.max((n|0)-this._minBufferSize,0);let r=n*16,i=Math.min(r*4,this._data.sigBytes);if(r){for(let e=0;e<r;e+=16)this._doProcessBlock(this._data.words,e);t=this._data.words.splice(0,r),this._data.sigBytes-=i}return new oe(t,i)}},oe=class e{words;sigBytes;constructor(e,t){e=this.words=e||[],this.sigBytes=t===void 0?e.length*4:t}static fromUtf8(t){let n=unescape(encodeURIComponent(t)),r=n.length,i=[];for(let e=0;e<r;e++)i[e>>>2]|=(n.charCodeAt(e)&255)<<24-e%4*8;return new e(i,r)}toBase64(){let e=[];for(let t=0;t<this.sigBytes;t+=3){let n=this.words[t>>>2]>>>24-t%4*8&255,r=this.words[t+1>>>2]>>>24-(t+1)%4*8&255,i=this.words[t+2>>>2]>>>24-(t+2)%4*8&255,a=n<<16|r<<8|i;for(let n=0;n<4&&t*8+n*6<this.sigBytes*8;n++)e.push(`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_`.charAt(a>>>6*(3-n)&63))}return e.join(``)}concat(e){if(this.words[this.sigBytes>>>2]&=4294967295<<32-this.sigBytes%4*8,this.words.length=Math.ceil(this.sigBytes/4),this.sigBytes%4)for(let t=0;t<e.sigBytes;t++){let n=e.words[t>>>2]>>>24-t%4*8&255;this.words[this.sigBytes+t>>>2]|=n<<24-(this.sigBytes+t)%4*8}else for(let t=0;t<e.sigBytes;t+=4)this.words[this.sigBytes+t>>>2]=e.words[t>>>2];this.sigBytes+=e.sigBytes}};function se(e){return new ae().finalize(e).toBase64()}function ce(e){return se(T(e))}function le(e){return ce(e)}function ue(){let e={};function t(t,...n){let r=e[t]||[];for(let e=0,t=r.length;e<t;e++){let t=r[e];t&&t(...n)}}function n(n,...r){t(n,...r),delete e[n]}function r(t,n){return(e[t]||=[]).push(n),()=>{e[t]=e[t]?.filter(e=>n!==e)}}function i(e,t){let n=r(e,((...e)=>(n(),t(...e))));return n}return{_listeners:e,emit:t,emitOnce:n,on:r,once:i}}const de=/^[\w+.-]{2,}:\/\//;function fe(e){return e.endsWith(`/`)?e:`${e}/`}function pe(e){return(e.endsWith(`/`)?e.slice(0,-1):e)||`/`}function me(e,...t){let n=e;for(let e of t)e&&e!==`/`&&(n=n?fe(n)+e.replace(/^\.?\//,``):e);return n}function he(e,t){if(!t||t===`/`||de.test(e))return e;let n=pe(t);return e.startsWith(n)?e:me(n,e)}function ge(e,t){let n=e.match(de);return t+(n?e.slice(n[0].length):e)}function _e(e=21){let t=``,n=e;for(;n--;)t+=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`[Math.random()*64|0];return t}var ve=Symbol.for(`immer-nothing`),ye=Symbol.for(`immer-draftable`),O=Symbol.for(`immer-state`),be=[function(e){return`The plugin for '${e}' has not been loaded into Immer. To enable the plugin, import and call \`enable${e}()\` when initializing your application.`},function(e){return`produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${e}'`},`This object has been frozen and should not be mutated`,function(e){return`Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? `+e},`An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.`,`Immer forbids circular references`,"The first or second argument to `produce` must be a function","The third argument to `produce` must be a function or undefined","First argument to `createDraft` must be a plain object, an array, or an immerable object","First argument to `finishDraft` must be a draft returned by `createDraft`",function(e){return`'current' expects a draft, got: ${e}`},`Object.defineProperty() cannot be used on an Immer draft`,`Object.setPrototypeOf() cannot be used on an Immer draft`,`Immer only supports deleting array indices`,`Immer only supports setting array indices and the 'length' property`,function(e){return`'original' expects a draft, got: ${e}`}];function k(e,...t){{let n=be[e],r=R(n)?n.apply(null,t):n;throw Error(`[Immer] ${r}`)}}var A=Object,j=A.getPrototypeOf,xe=`constructor`,Se=`prototype`,Ce=`configurable`,we=`enumerable`,Te=`writable`,Ee=`value`,M=e=>!!e&&!!e[O];function N(e){return e?ke(e)||Ne(e)||!!e[ye]||!!e[xe]?.[ye]||Pe(e)||Fe(e):!1}var De=A[Se][xe].toString(),Oe=/* @__PURE__ */ new WeakMap;function ke(e){if(!e||!L(e))return!1;let t=j(e);if(t===null||t===A[Se])return!0;let n=A.hasOwnProperty.call(t,xe)&&t[xe];if(n===Object)return!0;if(!R(n))return!1;let r=Oe.get(n);return r===void 0&&(r=Function.toString.call(n),Oe.set(n,r)),r===De}function Ae(e,t,n=!0){P(e)===0?(n?Reflect.ownKeys(e):A.keys(e)).forEach(n=>{t(n,e[n],e)}):e.forEach((n,r)=>t(r,n,e))}function P(e){let t=e[O];return t?t.type_:Ne(e)?1:Pe(e)?2:Fe(e)?3:0}var F=(e,t,n=P(e))=>n===2?e.has(t):A[Se].hasOwnProperty.call(e,t),I=(e,t,n=P(e))=>n===2?e.get(t):e[t],je=(e,t,n,r=P(e))=>{r===2?e.set(t,n):r===3?e.add(n):e[t]=n};function Me(e,t){return e===t?e!==0||1/e==1/t:e!==e&&t!==t}var Ne=Array.isArray,Pe=e=>e instanceof Map,Fe=e=>e instanceof Set,L=e=>typeof e==`object`,R=e=>typeof e==`function`,Ie=e=>typeof e==`boolean`;function Le(e){let t=+e;return Number.isInteger(t)&&String(t)===e}var Re=e=>L(e)?e?.[O]:null,z=e=>e.copy_||e.base_,ze=e=>e.modified_?e.copy_:e.base_;function Be(e,t){if(Pe(e))return new Map(e);if(Fe(e))return new Set(e);if(Ne(e))return Array[Se].slice.call(e);let n=ke(e);if(t===!0||t===`class_only`&&!n){let t=A.getOwnPropertyDescriptors(e);delete t[O];let n=Reflect.ownKeys(t);for(let r=0;r<n.length;r++){let i=n[r],a=t[i];a[Te]===!1&&(a[Te]=!0,a[Ce]=!0),(a.get||a.set)&&(t[i]={[Ce]:!0,[Te]:!0,[we]:a[we],[Ee]:e[i]})}return A.create(j(e),t)}{let t=j(e);if(t!==null&&n)return{...e};let r=A.create(t);return A.assign(r,e)}}function Ve(e,t=!1){return We(e)||M(e)||!N(e)?e:(P(e)>1&&A.defineProperties(e,{set:Ue,add:Ue,clear:Ue,delete:Ue}),A.freeze(e),t&&Ae(e,(e,t)=>{Ve(t,!0)},!1),e)}function He(){k(2)}var Ue={[Ee]:He};function We(e){return e===null||!L(e)||A.isFrozen(e)}var Ge=`MapSet`,Ke=`Patches`,qe=`ArrayMethods`,Je={};function B(e){let t=Je[e];return t||k(0,e),t}var Ye=e=>!!Je[e];function Xe(e,t){Je[e]||(Je[e]=t)}var Ze,Qe=()=>Ze,$e=(e,t)=>({drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:/* @__PURE__ */ new Set,processedForPatches_:/* @__PURE__ */ new Set,mapSetPlugin_:Ye(Ge)?B(Ge):void 0,arrayMethodsPlugin_:Ye(qe)?B(qe):void 0});function et(e,t){t&&(e.patchPlugin_=B(Ke),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function tt(e){nt(e),e.drafts_.forEach(it),e.drafts_=null}function nt(e){e===Ze&&(Ze=e.parent_)}var rt=e=>Ze=$e(Ze,e);function it(e){let t=e[O];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function at(e,t){t.unfinalizedDrafts_=t.drafts_.length;let n=t.drafts_[0];if(e!==void 0&&e!==n){n[O].modified_&&(tt(t),k(4)),N(e)&&(e=ot(t,e));let{patchPlugin_:r}=t;r&&r.generateReplacementPatches_(n[O].base_,e,t)}else e=ot(t,n);return st(t,e,!0),tt(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e===ve?void 0:e}function ot(e,t){if(We(t))return t;let n=t[O];if(!n)return ht(t,e.handledSet_,e);if(!lt(n,e))return t;if(!n.modified_)return n.base_;if(!n.finalized_){let{callbacks_:t}=n;if(t)for(;t.length>0;)t.pop()(e);pt(n,e)}return n.copy_}function st(e,t,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&Ve(t,n)}function ct(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var lt=(e,t)=>e.scope_===t,ut=[];function dt(e,t,n,r){let i=z(e),a=e.type_;if(r!==void 0&&I(i,r,a)===t){je(i,r,n,a);return}if(!e.draftLocations_){let t=e.draftLocations_=/* @__PURE__ */ new Map;Ae(i,(e,n)=>{if(M(n)){let r=t.get(n)||[];r.push(e),t.set(n,r)}})}let o=e.draftLocations_.get(t)??ut;for(let e of o)je(i,e,n,a)}function ft(e,t,n){e.callbacks_.push(function(r){let i=t;if(!i||!lt(i,r))return;r.mapSetPlugin_?.fixSetContents(i);let a=ze(i);dt(e,i.draft_??i,a,n),pt(i,r)})}function pt(e,t){if(e.modified_&&!e.finalized_&&(e.type_===3||e.type_===1&&e.allIndicesReassigned_||(e.assigned_?.size??0)>0)){let{patchPlugin_:n}=t;if(n){let r=n.getPath(e);r&&n.generatePatches_(e,r,t)}ct(e)}}function mt(e,t,n){let{scope_:r}=e;if(M(n)){let i=n[O];lt(i,r)&&i.callbacks_.push(function(){wt(e),dt(e,n,ze(i),t)})}else N(n)&&e.callbacks_.push(function(){let i=z(e);e.type_===3?i.has(n)&&ht(n,r.handledSet_,r):I(i,t,e.type_)===n&&r.drafts_.length>1&&(e.assigned_.get(t)??!1)===!0&&e.copy_&&ht(I(e.copy_,t,e.type_),r.handledSet_,r)})}function ht(e,t,n){return!n.immer_.autoFreeze_&&n.unfinalizedDrafts_<1||M(e)||t.has(e)||!N(e)||We(e)?e:(t.add(e),Ae(e,(r,i)=>{if(M(i)){let t=i[O];lt(t,n)&&(je(e,r,ze(t),e.type_),ct(t))}else N(i)&&ht(i,t,n)}),e)}function gt(e,t){let n=Ne(e),r={type_:+!!n,scope_:t?t.scope_:Qe(),modified_:!1,finalized_:!1,assigned_:void 0,parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1,callbacks_:void 0},i=r,a=_t;n&&(i=[r],a=vt);let{revoke:o,proxy:s}=Proxy.revocable(i,a);return r.draft_=s,r.revoke_=o,[s,r]}var _t={get(e,t){if(t===O)return e;let n=e.scope_.arrayMethodsPlugin_,r=e.type_===1&&typeof t==`string`;if(r&&n?.isArrayOperationMethod(t))return n.createMethodInterceptor(e,t);let i=z(e);if(!F(i,t,e.type_))return xt(e,i,t);let a=i[t];if(e.finalized_||!N(a)||r&&e.operationMethod&&n?.isMutatingArrayMethod(e.operationMethod)&&Le(t))return a;if(a===yt(e.base_,t)||bt(e,t,a)){wt(e);let n=e.type_===1?+t:t,r=Et(e.scope_,a,e,n);return e.copy_[n]=r}return a},has(e,t){return t in z(e)},ownKeys(e){return Reflect.ownKeys(z(e))},set(e,t,n){let r=St(z(e),t);if(r?.set)return r.set.call(e.draft_,n),!0;if(!e.modified_){let r=yt(z(e),t),i=r?.[O];if(i&&i.base_===n)return e.copy_[t]=n,e.assigned_.set(t,!1),!0;if(Me(n,r)&&(n!==void 0||F(e.base_,t,e.type_)))return!0;wt(e),Ct(e)}return e.copy_[t]===n&&(n!==void 0||F(e.copy_,t,e.type_))||Number.isNaN(n)&&Number.isNaN(e.copy_[t])?!0:(e.copy_[t]=n,e.assigned_.set(t,!0),mt(e,t,n),!0)},deleteProperty(e,t){return wt(e),yt(e.base_,t)!==void 0||t in e.base_?(e.assigned_.set(t,!1),Ct(e)):e.assigned_.delete(t),e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){let n=z(e),r=Reflect.getOwnPropertyDescriptor(n,t);return r&&{[Te]:!0,[Ce]:e.type_!==1||t!==`length`,[we]:r[we],[Ee]:n[t]}},defineProperty(){k(11)},getPrototypeOf(e){return j(e.base_)},setPrototypeOf(){k(12)}},vt={};for(let e in _t){let t=_t[e];vt[e]=function(){let e=arguments;return e[0]=e[0][0],t.apply(this,e)}}vt.deleteProperty=function(e,t){return isNaN(parseInt(t))&&k(13),vt.set.call(this,e,t,void 0)},vt.set=function(e,t,n){return t!==`length`&&isNaN(parseInt(t))&&k(14),_t.set.call(this,e[0],t,n,e[0])};function yt(e,t){let n=e[O];return(n?z(n):e)[t]}function bt(e,t,n){return e.type_!==1||!e.allIndicesReassigned_||e.assigned_?.get(t)||!N(n)||n[O]?!1:e.baseRefs_.has(n)}function xt(e,t,n){let r=St(t,n);return r?Ee in r?r[Ee]:r.get?.call(e.draft_):void 0}function St(e,t){if(!(t in e))return;let n=j(e);for(;n;){let e=Object.getOwnPropertyDescriptor(n,t);if(e)return e;n=j(n)}}function Ct(e){e.modified_||(e.modified_=!0,e.parent_&&Ct(e.parent_))}function wt(e){e.copy_||=(e.assigned_=/* @__PURE__ */ new Map,Be(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var Tt=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(e,t,n)=>{if(R(e)&&!R(t)){let n=t;t=e;let r=this;return function(e=n,...i){return r.produce(e,e=>t.call(this,e,...i))}}R(t)||k(6),n!==void 0&&!R(n)&&k(7);let r;if(N(e)){let i=rt(this),a=Et(i,e,void 0),o=!0;try{r=t(a),o=!1}finally{o?tt(i):nt(i)}return et(i,n),at(r,i)}if(!e||!L(e)){if(r=t(e),r===void 0&&(r=e),r===ve&&(r=void 0),this.autoFreeze_&&Ve(r,!0),n){let t=[],i=[];B(Ke).generateReplacementPatches_(e,r,{patches_:t,inversePatches_:i}),n(t,i)}return r}k(1,e)},this.produceWithPatches=(e,t)=>{if(R(e))return(t,...n)=>this.produceWithPatches(t,t=>e(t,...n));let n,r;return[this.produce(e,t,(e,t)=>{n=e,r=t}),n,r]},Ie(e?.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),Ie(e?.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),Ie(e?.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){N(e)||k(8),M(e)&&(e=Dt(e));let t=rt(this),n=Et(t,e,void 0);return n[O].isManual_=!0,nt(t),n}finishDraft(e,t){let n=e&&e[O];(!n||!n.isManual_)&&k(9);let{scope_:r}=n;return et(r,t),at(void 0,r)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let n;for(n=t.length-1;n>=0;n--){let r=t[n];if(r.path.length===0&&r.op===`replace`){e=r.value;break}}n>-1&&(t=t.slice(n+1));let r=B(Ke).applyPatches_;return M(e)?r(e,t):this.produce(e,e=>r(e,t))}};function Et(e,t,n,r){let[i,a]=Pe(t)?B(Ge).proxyMap_(t,n):Fe(t)?B(Ge).proxySet_(t,n):gt(t,n);return(n?.scope_??Qe()).drafts_.push(i),a.callbacks_=n?.callbacks_??[],a.key_=r,n&&r!==void 0?ft(n,a,r):a.callbacks_.push(function(e){e.mapSetPlugin_?.fixSetContents(a);let{patchPlugin_:t}=e;a.modified_&&t&&t.generatePatches_(a,[],e)}),i}function Dt(e){return M(e)||k(10,e),Ot(e)}function Ot(e){if(!N(e)||We(e))return e;let t=e[O],n,r=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,n=Be(e,t.scope_.immer_.useStrictShallowCopy_),r=t.scope_.immer_.shouldUseStrictIteration()}else n=Be(e,!0);return Ae(n,(e,t)=>{je(n,e,Ot(t))},r),t&&(t.finalized_=!1),n}function kt(){be.push(`Sets cannot have "replace" patches.`,function(e){return`Unsupported patch operation: `+e},function(e){return`Cannot apply patch, path doesn't resolve: `+e},`Patching reserved attributes like __proto__, prototype and constructor is not allowed`);function e(n,r=[]){if(n.key_!==void 0){let e=n.parent_.copy_??n.parent_.base_,t=Re(I(e,n.key_)),i=I(e,n.key_);if(i===void 0||i!==n.draft_&&i!==n.base_&&i!==n.copy_||t!=null&&t.base_!==n.base_)return null;let a=n.parent_.type_===3,o;if(a){let e=n.parent_;o=Array.from(e.drafts_.keys()).indexOf(n.key_)}else o=n.key_;if(!(a&&e.size>o||F(e,o)))return null;r.push(o)}if(n.parent_)return e(n.parent_,r);r.reverse();try{t(n.copy_,r)}catch{return null}return r}function t(e,t){let n=e;for(let e=0;e<t.length-1;e++){let r=t[e];if(n=I(n,r),!L(n)||n===null)throw Error(`Cannot resolve path at '${t.join(`/`)}'`)}return n}let n=`replace`,r=`remove`;function i(e,t,n){if(e.scope_.processedForPatches_.has(e))return;e.scope_.processedForPatches_.add(e);let{patches_:r,inversePatches_:i}=n;switch(e.type_){case 0:case 2:return o(e,t,r,i);case 1:return a(e,t,r,i);case 3:return s(e,t,r,i)}}function a(e,t,i,a){let{base_:o,assigned_:s}=e,c=e.copy_;c.length<o.length&&([o,c]=[c,o],[i,a]=[a,i]);let l=e.allIndicesReassigned_===!0;for(let e=0;e<o.length;e++){let r=c[e],u=o[e];if((l||s?.get(e.toString()))&&r!==u){let o=r?.[O];if(o&&o.modified_)continue;let s=t.concat([e]);i.push({op:n,path:s,value:d(r)}),a.push({op:n,path:s,value:d(u)})}}for(let e=o.length;e<c.length;e++){let n=t.concat([e]);i.push({op:`add`,path:n,value:d(c[e])})}for(let e=c.length-1;o.length<=e;--e){let n=t.concat([e]);a.push({op:r,path:n})}}function o(e,t,i,a){let{base_:o,copy_:s,type_:c}=e;Ae(e.assigned_,(e,l)=>{let u=I(o,e,c),f=I(s,e,c),p=l?F(o,e)?n:`add`:r;if(u===f&&p===n)return;let m=t.concat(e);i.push(p===r?{op:p,path:m}:{op:p,path:m,value:d(f)}),a.push(p===`add`?{op:r,path:m}:p===r?{op:`add`,path:m,value:d(u)}:{op:n,path:m,value:d(u)})})}function s(e,t,n,i){let{base_:a,copy_:o}=e,s=0;a.forEach(e=>{if(!o.has(e)){let a=t.concat([s]);n.push({op:r,path:a,value:e}),i.unshift({op:`add`,path:a,value:e})}s++}),s=0,o.forEach(e=>{if(!a.has(e)){let a=t.concat([s]);n.push({op:`add`,path:a,value:e}),i.unshift({op:r,path:a,value:e})}s++})}function c(e,t,r){let{patches_:i,inversePatches_:a}=r;i.push({op:n,path:[],value:t===ve?void 0:t}),a.push({op:n,path:[],value:e})}function l(e,t){return t.forEach(t=>{let{path:i,op:a}=t,o=e;for(let e=0;e<i.length-1;e++){let t=P(o),n=i[e];typeof n!=`string`&&typeof n!=`number`&&(n=``+n),(t===0||t===1)&&(n===`__proto__`||n===xe)&&k(19),R(o)&&n===Se&&k(19),o=I(o,n),(o===null||!L(o))&&k(18,i.join(`/`))}let s=P(o),c=u(t.value),l=i[i.length-1];switch(a){case n:switch(s){case 2:return o.set(l,c);case 3:k(16);default:return o[l]=c}case`add`:switch(s){case 1:return l===`-`?o.push(c):o.splice(l,0,c);case 2:return o.set(l,c);case 3:return o.add(c);default:return o[l]=c}case r:switch(s){case 1:return o.splice(l,1);case 2:return o.delete(l);case 3:return o.delete(t.value);default:return delete o[l]}default:k(17,a)}}),e}function u(e){if(!N(e))return e;if(Ne(e))return e.map(u);if(Pe(e))return new Map(Array.from(e.entries()).map(([e,t])=>[e,u(t)]));if(Fe(e))return new Set(Array.from(e).map(u));let t=Object.create(j(e));for(let n in e)t[n]=u(e[n]);return F(e,ye)&&(t[ye]=e[ye]),t}function d(e){return M(e)?u(e):e}Xe(Ke,{applyPatches_:l,generatePatches_:i,generateReplacementPatches_:c,getPath:e})}globalThis.Iterator?.from;var At=new Tt,jt=At.produce,Mt=/* @__PURE__ */ At.produceWithPatches.bind(At),Nt=/* @__PURE__ */ At.applyPatches.bind(At);function Pt(e,t){if(e.add(t),e.size>1e3){let t=e.values().next().value;t!==void 0&&e.delete(t)}}function Ft(e){let{enablePatches:t=!1}=e;t&&kt();let n=ue(),r=e.initialValue,i=/* @__PURE__ */ new Set;return{on:n.on,value:()=>r,patch:(e,t=_e())=>{i.has(t)||(kt(),r=Nt(r,e),Pt(i,t),n.emit(`updated`,r,void 0,t))},mutate:(e,a=_e())=>{if(!i.has(a)){if(Pt(i,a),t){let[t,i]=Mt(r,e);if(t===r)return;r=t,n.emit(`updated`,r,i,a)}else{let t=jt(r,e);if(t===r)return;r=t,n.emit(`updated`,r,void 0,a)}}},syncIds:i}}const It=typeof self==`object`?self:globalThis,Lt=/* @__PURE__ */ new Set([`Error`,`EvalError`,`RangeError`,`ReferenceError`,`SyntaxError`,`TypeError`,`URIError`,`AggregateError`]),Rt=/* @__PURE__ */ new Set([`Boolean`,`Number`,`String`,`Int8Array`,`Uint8Array`,`Uint8ClampedArray`,`Int16Array`,`Uint16Array`,`Int32Array`,`Uint32Array`,`Float16Array`,`Float32Array`,`Float64Array`,`BigInt64Array`,`BigUint64Array`]);function zt(e,t){let n=(t,n)=>(e.set(n,t),t),r=i=>{if(e.has(i))return e.get(i);let[a,o]=t[i];switch(a){case 0:case-1:return n(o,i);case 1:{let e=n([],i);for(let t of o)e.push(r(t));return e}case 2:{let e=n({},i);for(let[t,n]of o)e[r(t)]=r(n);return e}case 3:return n(new Date(o),i);case 4:{let{source:e,flags:t}=o;return n(new RegExp(e,t),i)}case 5:{let e=n(/* @__PURE__ */ new Map,i);for(let[t,n]of o)e.set(r(t),r(n));return e}case 6:{let e=n(/* @__PURE__ */ new Set,i);for(let t of o)e.add(r(t));return e}case 7:{let{name:e,message:t}=o,r=Lt.has(e)?It[e]:void 0;return n(new(r??It.Error)(t),i)}case 8:return n(BigInt(o),i);case`BigInt`:return n(Object(BigInt(o)),i);case`ArrayBuffer`:return n(new Uint8Array(o).buffer,o);case`DataView`:{let{buffer:e}=new Uint8Array(o);return n(new DataView(e),o)}}if(typeof a==`string`&&Rt.has(a))return n(new It[a](o),i);throw TypeError(`unable to deserialize unsafe or unknown type: ${String(a)}`)};return r}function Bt(e){return zt(/* @__PURE__ */ new Map,e)(0)}const{toString:Vt}={},{keys:Ht}=Object;function Ut(e){let t=typeof e;if(t!==`object`||!e)return[0,t];let n=Vt.call(e).slice(8,-1);switch(n){case`Array`:return[1,``];case`Object`:return[2,``];case`Date`:return[3,``];case`RegExp`:return[4,``];case`Map`:return[5,``];case`Set`:return[6,``];case`DataView`:return[1,n]}return n.includes(`Array`)?[1,n]:n.includes(`Error`)?[7,n]:[2,n]}function Wt([e,t]){return e===0&&(t===`function`||t===`symbol`)}function Gt(e,t,n,r){let i=(e,t)=>{let i=r.push(e)-1;return n.set(t,i),i},a=r=>{if(n.has(r))return n.get(r);let[o,s]=Ut(r);switch(o){case 0:{let t=r;switch(s){case`bigint`:o=8,t=r.toString();break;case`function`:case`symbol`:if(e)throw TypeError(`unable to serialize ${s}`);t=null;break;case`undefined`:return i([-1],r)}return i([o,t],r)}case 1:{if(s){let e=r;return s===`DataView`?e=new Uint8Array(r.buffer):s===`ArrayBuffer`&&(e=new Uint8Array(r)),i([s,[...e]],r)}let e=[],t=i([o,e],r);for(let t of r)e.push(a(t));return t}case 2:{if(s)switch(s){case`BigInt`:return i([s,r.toString()],r);case`Boolean`:case`Number`:case`String`:return i([s,r.valueOf()],r)}if(t&&`toJSON`in r)return a(r.toJSON());let n=[],c=i([o,n],r);for(let t of Ht(r))(e||!Wt(Ut(r[t])))&&n.push([a(t),a(r[t])]);return c}case 3:return i([o,r.toISOString()],r);case 4:{let{source:e,flags:t}=r;return i([o,{source:e,flags:t}],r)}case 5:{let t=[],n=i([o,t],r);for(let[n,i]of r)(e||!(Wt(Ut(n))||Wt(Ut(i))))&&t.push([a(n),a(i)]);return n}case 6:{let t=[],n=i([o,t],r);for(let n of r)(e||!Wt(Ut(n)))&&t.push(a(n));return n}}let{message:c}=r;return i([o,{name:s,message:c}],r)};return a}function Kt(e,t={}){let n=[];return Gt(!(t.json||t.lossy),!!t.json,/* @__PURE__ */ new Map,n)(e),n}const{parse:qt,stringify:Jt}=JSON,Yt={json:!0,lossy:!0};function Xt(e){return Bt(qt(e))}function Zt(e){return Jt(Kt(e,Yt))}function Qt(e){return Bt(e)}function $t(e){return Zt(e)}function en(e){return Xt(e)}var tn=class extends Error{name=`StreamClosedError`};function nn(e={}){let t=e.id??_e(),n=Math.max(0,e.replayWindow??0),r=ue(),i=new AbortController,a=[],o=!1,s=0;function c(e){if(o)throw new tn(`Cannot write to a closed stream "${t}"`);s+=1,n>0&&(a.push({seq:s,chunk:e}),a.length>n&&(a.length-n===1?a.shift():a.splice(0,a.length-n))),r.emit(`chunk`,s,e)}function l(e){if(o)return;o=!0;let t=an(e);i.abort(e),r.emit(`end`,t)}function u(){o||(o=!0,i.signal.aborted||i.abort(`stream closed`),r.emit(`end`,void 0))}function d(e){o||i.signal.aborted||i.abort(e??`aborted`)}let f=new WritableStream({write(e){c(e)},close(){u()},abort(e){l(e)}});return{id:t,signal:i.signal,get closed(){return o},get lastSeq(){return s},write:c,error:l,close:u,abort:d,writable:f,events:r,buffer:a}}function rn(e={}){let t=e.id??_e(),n=Math.max(1,e.highWaterMark??256),r=[],i=0,a=!1,o=!1,s,c,l,u;function d(){if(c){if(r.length>0){let e=r.shift(),t=c;c=void 0,t.resolve({value:e,done:!1});return}if(a){let e=c;if(c=void 0,s){let t=Error(s.message);t.name=s.name,e.reject(t)}else e.resolve({value:void 0,done:!0})}}}function f(){if(l){for(;r.length>0;){let e=r.shift();try{l.enqueue(e)}catch{break}}if(a&&l){try{if(s){let e=Error(s.message);e.name=s.name,l.error(e)}else l.close()}catch{}l=void 0}}}function p(t,s){if(!(a||o)&&!(t<=i)){if(i=t,r.push(s),r.length>n){let t=r.length-n;r.splice(0,t),e.onOverflow?.(t)}d(),u&&f()}}function m(e){a||(a=!0,s=e,d(),u&&f())}function h(){o||a||(o=!0,e.onCancel?.(),m(void 0))}function g(){return u||(u=new ReadableStream({start(e){l=e,f()},cancel(){h()}}),u)}return{id:t,get cancelled(){return o},get done(){return a},get lastSeenSeq(){return i},get readable(){return g()},cancel:h,_push:p,_end:m,[Symbol.asyncIterator](){return{next(){if(r.length>0)return Promise.resolve({value:r.shift(),done:!1});if(a){if(s){let e=Error(s.message);return e.name=s.name,Promise.reject(e)}return Promise.resolve({value:void 0,done:!0})}return new Promise((e,t)=>{c={resolve:e,reject:t}})},return(){return h(),Promise.resolve({value:void 0,done:!0})}}}}}function an(e){if(e instanceof Error)return{name:e.name||`Error`,message:e.message};if(typeof e==`string`)return{name:`Error`,message:e};try{return{name:`Error`,message:JSON.stringify(e)}}catch{return{name:`Error`,message:String(e)}}}function on(e){return e.replace(/[^\w-]+/g,`_`).slice(0,128)}const sn=`__connection.json`,cn=`__DEVFRAME_CONNECTION__`,ln=`devframe_otp`,un=`devframe_auth_token`;c.postMessage.remoteAssetsError;var dn=class{cacheMap=/* @__PURE__ */ new Map;options;keySerializer;constructor(e){this.options=e,this.keySerializer=e.keySerializer||(e=>le(e))}updateOptions(e){this.options={...this.options,...e}}cached(e,t){let n=this.cacheMap.get(e);if(n)return n.get(this.keySerializer(t))}has(e,t){return this.cacheMap.get(e)?.has(this.keySerializer(t))??!1}apply(e,t){let n=this.cacheMap.get(e.m)||/* @__PURE__ */ new Map;n.set(this.keySerializer(e.a),t),this.cacheMap.set(e.m,n)}validate(e){return this.options.functions.includes(e)}clear(e){e?this.cacheMap.delete(e):this.cacheMap.clear()}};const V=d({docsBase:`https://devfra.me/errors`,codes:{DF0019:{why:e=>`RPC function "${e.name}" has \`agent\` set but \`jsonSerializable\` is \`false\`; MCP requires JSON-serializable data.`,fix:"Remove `jsonSerializable: false`, or remove `agent` to keep it RPC-only."},DF0020:{why:e=>`RPC function "${e.name}" declares \`jsonSerializable: true\` but the value at "${e.path}" is a ${e.type}.`,fix:"Either drop `jsonSerializable: true` (falls back to structured-clone) or change the value to a JSON-safe shape."},DF0021:{why:e=>`RPC function "${e.name}" is already registered`,fix:"Use the `force` parameter to overwrite an existing registration."},DF0022:{why:e=>`RPC function "${e.name}" is not registered. Use register() to add new functions.`},DF0023:{why:e=>`RPC function "${e.name}" is not registered`},DF0024:{why:e=>`Either handler or setup function must be provided for RPC function "${e.name}"`},DF0025:{why:e=>`Function "${e.name}" not found in dump store`},DF0026:{why:e=>`No dump match for "${e.name}" with args: ${e.args}`},DF0027:{why:e=>`Function "${e.name}" with type "${e.type}" cannot have dump configuration. Only "static" and "query" types support dumps.`},DF0028:{why:e=>`Function "${e.name}" with type "${e.type}" cannot use \`snapshot: true\`. Only "query" functions support this sugar; "static" functions have equivalent default behavior already.`,fix:"Remove `snapshot: true`, or change the function type to `query`."},DF0043:{why:e=>`RPC function "${e.name}" received an invalid argument at position ${e.index}: ${e.issues}`,fix:"Pass a value that satisfies the `args` schema declared for this function."},DF0044:{why:e=>`RPC function "${e.name}" returned a value that failed its \`returns\` schema: ${e.issues}`,fix:"Make the handler return a value that satisfies the `returns` schema, or relax the schema."}}});function fn(e){if(e.agent&&e.jsonSerializable===!1)throw V.DF0019({name:e.name});e.agent&&!e.jsonSerializable&&(e.jsonSerializable=!0)}async function pn(e,t){let n=e[`~standard`].validate(t);return n instanceof Promise?await n:n}function mn(e){return e.map(e=>{let t=e.path?.map(e=>typeof e==`object`?e.key:e).join(`.`);return t?`${t}: ${e.message}`:e.message}).join(`; `)}async function hn(e,t,n){let r=n.slice();if(!t||t.length===0)return r;for(let r=0;r<t.length;r++){let i=t[r];if(!i)continue;let a=await pn(i,n[r]);if(a.issues)throw V.DF0043({name:e,index:r,issues:mn(a.issues)})}return r}async function gn(e,t,n){if(!t)return n;let r=await pn(t,n);if(r.issues)throw V.DF0044({name:e,issues:mn(r.issues)});return n}async function _n(e,t){if(!e.setup)return{};if(typeof t==`object`&&t){e.__cache??=/* @__PURE__ */ new WeakMap;let n=e.__cache,r=n.get(t);return r||(r=Promise.resolve(e.setup(t)),r.catch(()=>{n.get(t)===r&&n.delete(t)}),n.set(t,r)),await r}if(!e.__promise){let n=Promise.resolve(e.setup(t));n.catch(()=>{e.__promise===n&&(e.__promise=void 0)}),e.__promise=n}return await e.__promise}async function vn(e,t){let n=e.handler;if(!n){let r=await _n(e,t);if(!r.handler)throw V.DF0024({name:e.name});n=r.handler}let r=e.args,i=e.returns;if(!r&&!i)return n;let a=n;return async(...t)=>{let n=await hn(e.name,r,t),o=await a(...n);return await gn(e.name,i,o)}}var yn=class{context;definitions=/* @__PURE__ */ new Map;functions;_onChanged=[];constructor(e){this.context=e;let t=this.definitions,n=this;this.functions=new Proxy({},{get(e,r){let i=t.get(r);if(i)return vn(i,n.context)},has(e,n){return t.has(n)},getOwnPropertyDescriptor(e,n){return{value:t.get(n)?.handler,configurable:!0,enumerable:!0}},ownKeys(){return Array.from(t.keys())}})}register(e,t=!1){if(this.definitions.has(e.name)&&!t)throw V.DF0021({name:e.name});fn(e),this.definitions.set(e.name,e),this._onChanged.forEach(t=>t(e.name))}update(e,t=!1){if(!this.definitions.has(e.name)&&!t)throw V.DF0022({name:e.name});fn(e),this.definitions.set(e.name,e),this._onChanged.forEach(t=>t(e.name))}onChanged(e){return this._onChanged.push(e),()=>{let t=this._onChanged.indexOf(e);t!==-1&&this._onChanged.splice(t,1)}}async getHandler(e){return await vn(this.definitions.get(e),this.context)}getSchema(e){let t=this.definitions.get(e);if(!t)throw V.DF0023({name:String(e)});return{args:t.args,returns:t.returns}}has(e){return this.definitions.has(e)}get(e){return this.definitions.get(e)}list(){return Array.from(this.definitions.keys())}};function bn(e,t=``){return JSON.stringify(e,function(e,n){let r=this,i=r==null?n:r[e];if(i===void 0){if(Array.isArray(r))throw H(t,`undefined`,r,e);return n}return i!==null&&xn(i,r,e,t),n})}function xn(e,t,n,r){if(typeof e==`bigint`)throw H(r,`BigInt`,t,n);if(typeof e!=`object`)return;if(e instanceof Map)throw H(r,`Map`,t,n);if(e instanceof Set)throw H(r,`Set`,t,n);if(e instanceof Date)throw H(r,`Date`,t,n);if(Array.isArray(e))return;let i=Object.getPrototypeOf(e);if(i!==null&&i!==Object.prototype)throw H(r,e.constructor?.name??`class instance`,t,n)}function H(e,t,n,r){let i=Sn(n,r);return V.DF0020({name:e||`<anonymous>`,type:t,path:i})}function Sn(e,t){return Array.isArray(e)?`[${t}]`:t===``?`<root>`:t}const Cn=`__DEVFRAME_CONNECTION_META__`,wn=`__DEVFRAME_CONNECTION_AUTH_TOKEN__`;function Tn(e){let t=[()=>window?.[e],()=>globalThis?.[e],()=>parent.window?.[e]];for(let e of t)try{let t=e();if(t)return t}catch{}}function En(){return Tn(cn)}function Dn(){return Tn(Cn)}function U(e){if(e)return e;try{let e=localStorage.getItem(wn);if(e)return e}catch{}return Tn(wn)}function On(e){globalThis[cn]=e,globalThis[Cn]={...e.connectionMeta,baseUrl:e.metaBaseUrl},e.authToken&&kn(e.authToken)}function kn(e){try{localStorage.setItem(wn,e)}catch{}globalThis[wn]=e;let t=En();t&&(globalThis[cn]={...t,authToken:e})}function An(e){let t=he(sn,e);try{return new URL(t,globalThis.location?.href).href}catch{return t}}function jn(e,t){return t&&t!==e.authToken?{...e,authToken:t}:e}function Mn(){let e=En();if(e)return jn(e,U()??e.authToken??e.connectionMeta.authToken);let t=Dn();if(t)return{connectionMeta:t,metaBaseUrl:t.baseUrl??An(`./`),authToken:U(t.authToken)}}async function Nn(e={}){if(e.connection){let t=jn(e.connection,U(e.authToken??e.connection.authToken??e.connection.connectionMeta.authToken));return On(t),t}let t=Array.isArray(e.baseURL)?e.baseURL:[e.baseURL??`./`];if(e.connectionMeta){let n={connectionMeta:e.connectionMeta,metaBaseUrl:An(t[0]??`./`),authToken:U(e.authToken??e.connectionMeta.authToken)};return On(n),n}let n=Mn();if(n){let t=jn(n,U(e.authToken??n.authToken??n.connectionMeta.authToken));return On(t),t}let r=[];for(let n of t){let t=he(sn,n),i=An(n);try{let n=await fetch(t);if(!n.ok)throw Error(`Failed to fetch connection meta from ${i}: ${n.status}`);let r=await n.json(),a=n.url||i,o={connectionMeta:r,metaBaseUrl:r.baseUrl?new URL(r.baseUrl,a).href:a,authToken:U(e.authToken??r.authToken)};return On(o),o}catch(e){r.push(e)}}throw Error(`Failed to get connection meta from ${t.join(`, `)}`,{cause:r})}var W=class extends Error{name=`DevframeConnectionError`;kind;constructor(e,t,n){super(t,n),this.kind=e}};function Pn(e=ln){try{let t=globalThis.location?.hash?.replace(/^#/,``)??``;return new URLSearchParams(t).get(e)||void 0}catch{return}}function Fn(e){try{let t=new URL(globalThis.location.href),n=new URLSearchParams(t.hash.replace(/^#/,``));if(!n.has(e))return;n.delete(e),t.hash=n.toString(),globalThis.history?.replaceState(globalThis.history.state,``,t.href)}catch{}}function In(e=ln){let t=Pn(e);return t&&Fn(e),t}async function Ln(e,t={}){let n=In(t.param??`devframe_otp`);return n?e.isTrusted?!0:e.requestTrustWithCode(n):!1}function Rn(e){let t={},n=/* @__PURE__ */ new WeakMap,r,i=()=>(r??=e.sharedState.get(`devframe:services`,{initialValue:{}}).then(e=>(t=e.value(),e.on(`updated`,e=>{t=e}),e)),r);return i(),{state:i,has:e=>e in t,keys:()=>Object.keys(t),get:r=>{let i=t[r];if(!i)return;let a=n.get(i);return a||(a={...i,rpc:e.scope(i.scope).rpc},n.set(i,a)),a}}}function zn(e){let t=/* @__PURE__ */ new Map,n=/* @__PURE__ */ new Map,r=/* @__PURE__ */ new Map,i=/* @__PURE__ */ new Set,a=e.connectionMeta.backend===`static`;function o(e,t){let n=r.get(e);return n&&typeof n==`object`&&!Array.isArray(n)&&typeof t==`object`&&!Array.isArray(t)?{...n,...t}:t}e.client.register({name:c.broadcast.clientStateUpdated,type:`event`,handler:(e,n,r)=>{let i=t.get(e);i&&!i.syncIds.has(r)&&i.mutate(()=>o(e,n),r)}}),e.client.register({name:c.broadcast.clientStatePatch,type:`event`,handler:(e,n,r)=>{let i=t.get(e);i&&!i.syncIds.has(r)&&i.patch(n,r)}});function s(t,n){let r=[];return r.push(n.on(`updated`,(n,r,i)=>{a||(r?e.callEvent(`devframe:rpc:server-state:patch`,t,r,i):e.callEvent(`devframe:rpc:server-state:set`,t,n,i))})),()=>{for(let e of r)e()}}return{keys:()=>Array.from(t.keys()),onKeyAdded(e){return i.add(e),()=>{i.delete(e)}},delete(e){let i=n.get(e);n.delete(e);let a=t.delete(e);return r.delete(e),i?.(),a},get:async(l,u)=>{if(u?.initialValue!==void 0&&r.set(l,u.initialValue),t.has(l))return t.get(l);let d=Ft({initialValue:u?.initialValue,enablePatches:!1});async function f(){if(a||e.callEvent(`devframe:rpc:server-state:subscribe`,l),u?.initialValue!==void 0){t.set(l,d);for(let e of i)e(l);return e.call(`devframe:rpc:server-state:get`,l).then(e=>{e!==void 0&&d.mutate(()=>o(l,e))}).catch(e=>{console.error(`Error getting server state`,e)}),n.set(l,s(l,d)),d}{let r=await e.call(`devframe:rpc:server-state:get`,l);d.mutate(()=>o(l,r)),t.set(l,d);for(let e of i)e(l);return n.set(l,s(l,d)),d}}return new Promise(t=>{if(e.isTrusted)f().then(t);else{t(d);let n=!1;e.events.on(c.client.isTrustedUpdated,e=>{e&&!n&&(n=!0,f())})}})}}}const Bn=/* @__PURE__ */ new Map;function Vn(e=Bn){let t=/* @__PURE__ */ new Map;return{serialize:n=>{let r;return n.t===`q`?r=n.m:(r=t.get(n.i),t.delete(n.i)),!(n.t===`s`&&`e`in n)&&r&&e.get(r)?.jsonSerializable===!0?bn(n,r??``):`s:${$t(n)}`},deserialize:e=>{let n=e.startsWith(`s:`)?en(e.slice(2)):JSON.parse(e);return n.t===`q`&&n.i&&n.m&&t.set(n.i,n.m),n}}}function Hn(){}function Un(e){let t=e.search(/\n\n|\r\n\r\n/);if(!(t<0))return{frame:e.slice(0,t),rest:e.slice(t+(e[t]===`\r`?4:2))}}function Wn(e){let t=`message`,n=[];for(let r of e.split(/\r?\n/))r.startsWith(`:`)||(r.startsWith(`event:`)?t=r.slice(6).trimStart():r.startsWith(`data:`)&&n.push(r.slice(5).replace(/^ /,``)));return{event:t,data:n}}function Gn(e){let{onConnected:t=Hn,onError:n=Hn,onDisconnected:r=Hn,definitions:i,fetch:a=globalThis.fetch.bind(globalThis)}=e,o=e.url;e.authToken&&(o=`${o}${o.includes(`?`)?`&`:`?`}${un}=${encodeURIComponent(e.authToken)}`);let s=Vn(i),c=new AbortController,l=!1,u,d,f,p,m=new Promise((e,t)=>{f=e,p=t});m.catch(()=>{});function h(e){l||(l=!0,p(e),n(e),r())}function g(){l||(l=!0,p(/* @__PURE__ */ Error(`Devframe SSE stream closed`)),r())}function _(e,n){if(e===`session`){f(n),t();return}u?.(n)}async function v(e){let t=e.getReader();d=t;let n=new TextDecoder,r=``;for(;;){let{done:e,value:i}=await t.read();if(e)break;for(r+=n.decode(i,{stream:!0});;){let e=Un(r);if(!e)break;r=e.rest;let{event:t,data:n}=Wn(e.frame);n.length>0&&_(t,n.join(`
5
+ `))}}g()}return(async()=>{try{let e=await a(o,{headers:{accept:`text/event-stream`},signal:c.signal});if(!e.ok||!e.body)throw Error(`Devframe SSE stream request failed: ${e.status}`);await v(e.body)}catch(e){if(c.signal.aborted){g();return}h(e instanceof Error?e:Error(String(e)))}})(),{close:()=>{l=!0,c.abort(),d?.cancel().catch(()=>{})},on:e=>{u=e},post:async e=>{let t;try{t=await m}catch{return}if(l){n(/* @__PURE__ */ Error(`Devframe SSE channel is closed; message dropped`));return}try{let n=await a(o,{method:`POST`,headers:{"content-type":`text/plain; charset=utf-8`,"x-birpc-session":t},body:e});if(n.status===200){let e=await n.text();e&&u?.(e);return}if(!n.ok)throw Error(`Devframe SSE POST failed: ${n.status}`)}catch(e){n(e instanceof Error?e:Error(String(e)))}},serialize:s.serialize,deserialize:s.deserialize}}function Kn(e,t){let{channel:n,rpcOptions:r={}}=t;return y(e,{...n,timeout:-1,...r,proxify:!1})}function qn(e){let{transport:t,authToken:n,connectionMeta:r,events:i,clientRpc:a,rpcOptions:o={},callTimeout:s=0}=e,l=!1,u=`connecting`,d=null,f=Promise.withResolvers();function p(e,t=null){if(t?d=t:e===`connected`&&(d=null),e===u)return;let n=u;u=e,i.emit(c.client.connectionStatus,e,n)}let m=/* @__PURE__ */ new Set;function h(e){for(let t of[...m])t.reject(e)}function g(){return u===`disconnected`||u===`error`?new W(`connection`,`[devframe] Not connected to the devframe server`,{cause:d??void 0}):u===`unauthorized`?new W(`auth`,`[devframe] Not authorized by the devframe server`,{cause:d??void 0}):null}function _(e,t){return new Promise((n,r)=>{let a=!1,o,l={reject(e){a||(u(),i.emit(c.client.error,e,t),r(e))}};function u(){a=!0,m.delete(l),o&&clearTimeout(o)}m.add(l),s>0&&(o=setTimeout(()=>{l.reject(new W(`timeout`,`[devframe] RPC call "${t}" timed out after ${s}ms`))},s)),e.then(e=>{a||(u(),n(e))},e=>{if(a)return;u();let n=e instanceof Error?e:Error(String(e));i.emit(c.client.error,n,t),r(n)})})}let v=/* @__PURE__ */ new Map;for(let e of r.jsonSerializableMethods??[])v.set(e,{jsonSerializable:!0});let y=e.createChannel({definitions:v,onError(e){p(`error`,e),i.emit(c.client.connectionError,e),h(new W(`connection`,`[devframe] Connection to the devframe server failed`,{cause:e}))},onDisconnected(){u!==`error`&&p(`disconnected`),h(new W(`connection`,`[devframe] Disconnected from the devframe server`,{cause:d??void 0}))}}),b=Kn(a.functions,{channel:y,rpcOptions:o});a.register({name:c.broadcast.authRevoked,type:`event`,handler:()=>{l=!1;let e=new W(`auth`,`[devframe] The devframe server revoked this client's trust`);p(`unauthorized`,e),i.emit(c.client.connectionError,e),h(e),i.emit(c.client.isTrustedUpdated,!1)}});let x=n;async function S(e){x=e;let t=await b.$call(`anonymous:devframe:auth`,{authToken:e,ua:navigator.userAgent,origin:location.origin});if(l=t.isTrusted,l)f.resolve(!0),p(`connected`);else{let e=new W(`auth`,`[devframe] The devframe server refused this client's credentials`);p(`unauthorized`,e),i.emit(c.client.connectionError,e)}return i.emit(c.client.isTrustedUpdated,l),t.isTrusted}async function C(e){let t=(await b.$call(`anonymous:devframe:auth:exchange`,{code:e,ua:navigator.userAgent,origin:location.origin}))?.authToken??null;return t&&(x=t,l=!0,f.resolve(!0),p(`connected`),i.emit(c.client.isTrustedUpdated,!0)),t}async function w(e={}){await b.$call(`anonymous:devframe:auth:request-code`,{ua:navigator.userAgent,origin:location.origin,...e.reissue?{reissue:!0}:{}})}async function ee(){return l?!0:S(x??``)}async function T(e=6e4){if(l&&f.resolve(!0),e<=0)return f.promise;let t;try{return await Promise.race([f.promise,new Promise((n,r)=>{t=setTimeout(()=>{r(/* @__PURE__ */ Error(`[devframe] Timeout waiting for rpc to be trusted`))},e)})]),l}finally{clearTimeout(t)}}return{transport:t,get isTrusted(){return l},get status(){return u},get connectionError(){return d},requestTrust:ee,requestTrustWithToken:S,requestTrustWithCode:C,requestAuthCode:w,ensureTrusted:T,call:(...e)=>{let t=String(e[0]),n=g();return n?(i.emit(c.client.error,n,t),Promise.reject(n)):_(b.$call(...e),t)},callEvent:(...e)=>{let t=g();if(t){i.emit(c.client.error,t,String(e[0]));return}return b.$callEvent(...e)},callOptional:(...e)=>{let t=String(e[0]),n=g();return n?(i.emit(c.client.error,n,t),Promise.reject(n)):_(b.$callOptional(...e),t)},close:()=>{y.close()}}}function Jn(e,t,n){let r=(()=>{try{return new URL(t,n.href)}catch{return new URL(n.href)}})();if(e&&typeof e==`object`){if(e.host!=null||e.port!=null){let t=e.host??`${r.hostname}:${e.port}`;return new URL(e.path??`/`,`${r.protocol}//${t}`).href}return new URL(e.path??``,r).href}let i=e??``;return/^https?:\/\//i.test(i)?i:new URL(i,r).href}function Yn(e){let{authToken:t,connectionMeta:n,metaBaseUrl:r,events:i,clientRpc:a,rpcOptions:o={},sseOptions:s={},callTimeout:c=0}=e,l=Jn(n.sse,r??`./`,location);return qn({transport:`sse`,authToken:t,connectionMeta:n,events:i,clientRpc:a,rpcOptions:o,callTimeout:c,createChannel:e=>Gn({url:l,authToken:t,definitions:e.definitions,...s,onConnected(){s.onConnected?.()},onError(t){e.onError(t),s.onError?.(t)},onDisconnected(){e.onDisconnected(),s.onDisconnected?.()}})})}function Xn(e){let{name:t,message:n,cause:r,...i}=e,a=r instanceof Error?r:Zn(r)?Xn(r):r,o=a===void 0?Error(n):Error(n,{cause:a});return o.name=t,Object.assign(o,i),o}function Zn(e){return typeof e==`object`&&!!e&&typeof e.message==`string`&&typeof e.name==`string`}function Qn(e){return typeof e==`object`&&!!e&&e.type===`static`&&typeof e.path==`string`}function $n(e){return typeof e==`object`&&!!e&&e.type===`query`&&typeof e.records==`object`&&e.records!==null}function er(e){return typeof e==`object`&&!!e&&(`output`in e||`error`in e)}function tr(e){if(e.error)throw Xn(e.error);return e.output}function nr(e){return e.some(e=>e!=null)}function rr(e){return typeof e==`object`&&e&&`serialization`in e&&`data`in e?e.data:e}function ir(e,t){let n=/* @__PURE__ */ new Map,r=/* @__PURE__ */ new Map;function i(e,t){return t===`structured-clone`&&Array.isArray(e)?Qt(e):e}function a(e,t){return i(rr(e),t)}async function o(e){n.has(e.path)||n.set(e.path,t(e.path).then(t=>a(t,e.serialization)));let r=await n.get(e.path);return er(r)?tr(r):r}async function s(e,n){return r.has(e)||r.set(e,t(e).then(e=>a(e,n))),await r.get(e)}async function c(t,n){if(!(t in e))throw Error(`[devframe-rpc] Function "${t}" not found in dump store`);let r=e[t];if(Qn(r)){if(nr(n))throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`);return await o(r)}if($n(r)){let e=le(n),i=r.records[e];if(i)return tr(await s(i,r.serialization));if(r.fallback)return tr(await s(r.fallback,r.serialization));throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`)}if(!nr(n))return r;throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`)}return{call:async(e,t)=>await c(e,t),callOptional:async(t,n)=>{if(t in e)return await c(t,n)},callEvent:async(e,t)=>{}}}async function ar(e){let t=ir(await e.fetchJsonFromBases(`__rpc-dump/index.json`),e.fetchJsonFromBases);return{transport:`static`,isTrusted:!0,status:`connected`,connectionError:null,requestTrust:async()=>!0,requestTrustWithToken:async()=>!0,requestTrustWithCode:async()=>null,requestAuthCode:async()=>{},ensureTrusted:async()=>!0,call:(...e)=>t.call(e[0],e.slice(1)),callEvent:(...e)=>t.callEvent(e[0],e.slice(1)),callOptional:(...e)=>t.callOptional(e[0],e.slice(1)),close:()=>{}}}function or(e,t){return`${e}${t}`}function sr(e){let t=/* @__PURE__ */ new Map,n=/* @__PURE__ */ new Map;e.client.register({name:c.broadcast.streamingChunk,type:`event`,handler(e,n,r,i){t.get(or(e,n))?._push(r,i)}}),e.client.register({name:c.broadcast.streamingEnd,type:`event`,handler(e,n,r){let i=or(e,n),a=t.get(i);a&&(a._end(r),t.delete(i))}}),e.client.register({name:c.broadcast.streamingUploadCancel,type:`event`,handler(e,t){let r=or(e,t),i=n.get(r);i&&(i.abort(`server cancelled upload`),n.delete(r))}}),e.events.on(c.client.isTrustedUpdated,n=>{if(n)for(let[n,r]of t){if(r.cancelled||r.done)continue;let t=n.indexOf(``);if(t<0)continue;let i=n.slice(0,t),a=n.slice(t+1);e.callEvent(`devframe:streaming:subscribe`,i,a,{afterSeq:r.lastSeenSeq})}});function r(n,r,i={}){let a=or(n,r),o=t.get(a);if(o)return o;let s=rn({id:r,highWaterMark:i.highWaterMark,onOverflow(e){console.warn(`[devframe] DF0029: Stream "${n}#${r}" dropped ${e} chunk(s) after exceeding the client high-water mark.`)},onCancel(){e.callEvent(`devframe:streaming:cancel`,n,r),t.delete(a)}});if(t.set(a,s),e.isTrusted)e.callEvent(`devframe:streaming:subscribe`,n,r,{afterSeq:0});else{let i=e.events.on(c.client.isTrustedUpdated,o=>{o&&(i(),t.has(a)&&!s.cancelled&&!s.done&&e.callEvent(`devframe:streaming:subscribe`,n,r,{afterSeq:s.lastSeenSeq}))})}return s}function i(t,r){let i=or(t,r),a=n.get(i);if(a)return a;let o=nn({id:r});return o.events.on(`chunk`,(n,i)=>{e.callEvent(`devframe:streaming:upload-chunk`,t,r,n,i)}),o.events.on(`end`,a=>{e.callEvent(`devframe:streaming:upload-end`,t,r,a),n.delete(i)}),n.set(i,o),o}return{subscribe:r,upload:i}}function cr(){}const lr=/* @__PURE__ */ new Map;function ur(e){let t=e.url;e.authToken&&(t=`${t}?${un}=${encodeURIComponent(e.authToken)}`);let n=new WebSocket(t),{onConnected:r=cr,onError:i=cr,onDisconnected:a=cr,definitions:o=lr}=e;n.addEventListener(`open`,e=>{r(e)}),n.addEventListener(`error`,e=>{let t=e instanceof Error?e:Error(e.type);i(t)}),n.addEventListener(`close`,e=>{a(e)});let s=Vn(o);return{close:()=>{n.close()},on:e=>{n.addEventListener(`message`,t=>{e(t.data)})},post:e=>{if(n.readyState===WebSocket.OPEN){n.send(e);return}if(n.readyState===WebSocket.CONNECTING){let t=()=>{i(),n.readyState===WebSocket.OPEN&&n.send(e)},r=()=>i();function i(){n.removeEventListener(`open`,t),n.removeEventListener(`close`,r)}n.addEventListener(`open`,t),n.addEventListener(`close`,r);return}i(/* @__PURE__ */ Error(`Devframe WebSocket is not open; message dropped`))},serialize:s.serialize,deserialize:s.deserialize}}function dr(e,t,n){let r=(()=>{try{return new URL(t,n.href)}catch{return new URL(n.href)}})(),i=r.protocol===`https:`?`wss:`:`ws:`;if(e&&typeof e==`object`){if(e.host!=null||e.port!=null){let t=e.host??`${r.hostname}:${e.port}`,n=new URL(e.path??`/`,`${i}//${t}`);return n.protocol=i,n.href}let t=new URL(e.path??``,r);return t.protocol=i,t.href}if(typeof e==`number`)return`${i}//${r.hostname}:${e}`;let a=e??``;if(/^wss?:\/\//i.test(a))return a;if(/^https?:\/\//i.test(a))return ge(a,/^https/i.test(a)?`wss://`:`ws://`);let o=new URL(a,r);return o.protocol=i,o.href}function fr(e){let{authToken:t,connectionMeta:n,metaBaseUrl:r,events:i,clientRpc:a,rpcOptions:o={},wsOptions:s={},callTimeout:c=0}=e,l=dr(n.websocket,r??`./`,location);return qn({transport:`websocket`,authToken:t,connectionMeta:n,events:i,clientRpc:a,rpcOptions:o,callTimeout:c,createChannel:e=>ur({url:l,authToken:t,definitions:e.definitions,...s,onConnected(e){s.onConnected?.(e)},onError(t){e.onError(t),s.onError?.(t)},onDisconnected(t){e.onDisconnected(),s.onDisconnected?.(t)}})})}function pr(e){return e.includes(`:`)}function G(e,t){return pr(t)?t:`${e}:${t}`}function mr(e){return{async get(t){return(await e()).value()[t]},async set(t,n){(await e()).mutate(e=>{e[t]=n})},async delete(t){(await e()).mutate(e=>{delete e[t]})},async all(){return(await e()).value()},async onChange(t){return(await e()).on(`updated`,e=>t(e))}}}function hr(e,t,n){let r=`devframe:settings:${n}:${t}`,i;function a(){return i||=e.sharedState.get(r,{initialValue:{}}),i}return mr(a)}function gr(e,t){return{global:hr(e,t,`global`),project:hr(e,t,`project`)}}function _r(e,t){return{namespace:t,base:e,rpc:{namespace:t,register(n){if(pr(n.name))throw Error(`[devframe] Scoped client RPC registration for namespace "${t}" received an already-namespaced function name "${n.name}". Pass a bare name without a ":" separator.`);e.client.register({...n,name:`${t}:${n.name}`})},call:((n,...r)=>e.call(G(t,n),...r)),callEvent:((n,...r)=>e.callEvent(G(t,n),...r)),callOptional:((n,...r)=>e.callOptional(G(t,n),...r)),sharedState:((n,r)=>e.sharedState.get(G(t,n),r)),streaming:{subscribe:(n,r,i)=>e.streaming.subscribe(G(t,n),r,i),upload:(n,r)=>e.streaming.upload(G(t,n),r)}},settings:gr(e,t),scope:e.scope}}function vr(){if(typeof document<`u`){let e=document.modelContext;if(e)return e}if(typeof navigator<`u`){let e=navigator.modelContext;if(e)return e}}function yr(e,t={}){let n=t.modelContext??vr();if(!n)return()=>{};let r=n,i=/* @__PURE__ */ new Map,a=/* @__PURE__ */ new Map;function o(t,n){let o=on(t.name),s=a.get(o);if(s&&s!==t.name){console.warn(`[devframe] WebMCP tool name "${o}" (from "${t.name}") collides with "${s}"; keeping the first registration.`);return}let c=new AbortController,l=b(t.type,n),u=r.registerTool({name:o,description:n.description,inputSchema:C(t.args),annotations:{title:n.title??t.name,readOnlyHint:l===`read`,destructiveHint:l===`destructive`},execute:n=>br(t,e.context,n)},{signal:c.signal});u&&`then`in u&&u.then(()=>{},()=>{}),a.set(o,t.name),i.set(t.name,()=>{c.abort(),u&&`unregister`in u&&typeof u.unregister==`function`&&u.unregister(),a.delete(o)})}function s(t){let n=t?[t]:[...e.definitions.keys()];for(let t of n){i.get(t)?.(),i.delete(t);let n=e.definitions.get(t),r=n?.agent;n&&r&&o(n,r)}}s();let c=e.onChanged(e=>s(e));return()=>{c();for(let e of i.values())e();i.clear()}}async function br(e,t,n){try{let r=ee(n,e.args?.length);return{content:[{type:`text`,text:xr(await(await vn(e,t))(...r))}]}}catch(e){return{isError:!0,content:[{type:`text`,text:Sr(e)}]}}}function xr(e){return e===void 0?`undefined`:typeof e==`string`?e:JSON.stringify(e,null,2)}function Sr(e){if(!(e instanceof Error))return String(e);let t=e.cause instanceof Error?` (cause: ${e.cause.message})`:``;return`${e.name}: ${e.message}${t}`}function Cr(e,t){if(t.backend===`static`)return`static`;let n=t.websocket!==void 0,r=t.sse!==void 0;if(e===`websocket`){if(!n)throw Error(`[devframe] transport: 'websocket' was requested, but this server does not advertise a WebSocket endpoint`);return`websocket`}if(e===`sse`){if(!r)throw Error(`[devframe] transport: 'sse' was requested, but this server does not advertise an SSE endpoint`);return`sse`}if(t.backend===`sse`&&r)return`sse`;if(n)return`websocket`;if(r)return`sse`;throw Error(`[devframe] This server advertises no RPC transport (backend "none"), so there is nothing to connect to. Enable the WebSocket or SSE endpoint on the server, or use its static/MCP surfaces instead.`)}async function wr(e={}){let{baseURL:t=`./`,rpcOptions:n={},cacheOptions:r=!1}=e,i=ue(),a=Array.isArray(t)?t:[t],o=await Nn(e),{connectionMeta:s,metaBaseUrl:c,authToken:l}=o,u=a[0]??`./`;try{u=new URL(`.`,c).href}catch{}let d=new dn({functions:[],...typeof e.cacheOptions==`object`?e.cacheOptions:{}}),f={rpc:void 0},p=new yn(f),m=e.webmcp===!1?void 0:yr(p),h,g=!1;async function _(e){let t=[u,...a.filter(e=>e!==u)].filter(e=>e!=null),n=[];for(let r of t)try{return await fetch(he(e,r)).then(t=>{if(!t.ok)throw Error(`Failed to fetch ${e} from ${r}: ${t.status}`);return t.json()})}catch(e){n.push(e)}throw Error(`Failed to load ${e} from ${t.join(`, `)}`,{cause:n})}let v={authToken:l,connectionMeta:s,metaBaseUrl:c,events:i,clientRpc:p,callTimeout:e.callTimeout,rpcOptions:{...n,async onRequest(e,t,i){if(await n.onRequest?.call(this,e,t,i),r&&d?.validate(e.m)){if(d.has(e.m,e.a))return i(d.cached(e.m,e.a));let n=await t(e);d.apply(e,n)}else await t(e)}}},y=Cr(e.transport??`auto`,s),b=y===`static`?await ar({fetchJsonFromBases:_}):y===`sse`?Yn({...v,sseOptions:e.sseOptions}):fr({...v,wsOptions:e.wsOptions}),x;try{x=new BroadcastChannel(`devframe-auth`)}catch{}let S,C=!1;function w(e){return((...t)=>C||!S?e(...t):S.then(()=>e(...t)))}function ee(){g=!0;try{h?.(),m?.()}finally{try{x?.close()}finally{b.close?.()}}}let T={events:i,get isTrusted(){return b.isTrusted},get status(){return b.status},get connectionError(){return b.connectionError},get transport(){return b.transport??y},get connection(){return o},connectionMeta:s,ensureTrusted:b.ensureTrusted,requestTrust:b.requestTrust,requestTrustWithToken:async e=>(kn(e),o={...o,authToken:e},b.requestTrustWithToken(e)),requestTrustWithCode:async e=>{let t=await b.requestTrustWithCode(e);if(!t)return!1;kn(t),o={...o,authToken:t};try{x?.postMessage({type:`auth-update`,authToken:t})}catch{}return!0},requestAuthCode:e=>b.requestAuthCode(e),call:w(b.call),callEvent:w(b.callEvent),callOptional:w(b.callOptional),client:p,sharedState:void 0,services:void 0,streaming:void 0,cacheManager:d,scope:void 0,close:ee};T.sharedState=zn(T),T.streaming=sr(T),T.services=Rn(T);let E=/* @__PURE__ */ new Map;T.scope=(e=>{if(!e)return T;let t=E.get(e);return t||(t=_r(T,e),E.set(e,t)),t}),f.rpc=T;function te(){try{return typeof window<`u`&&window.self===window.top}catch{return!1}}async function ne(){if(e.simpleAuth!==!1&&te()&&typeof globalThis.prompt==`function`)for(await T.requestAuthCode().catch(()=>{});!T.isTrusted;){let e=globalThis.prompt(`devframe: enter the authentication code shown in your terminal`);if(e==null)return;let t=e.trim();if(t&&await T.requestTrustWithCode(t))return}}async function re(){let t=await b.requestTrust(),n=e.otpParam??`devframe_otp`,r=n?await Ln(T,{param:n}):!1;t||r||T.isTrusted||await ne()}return S=re().then(()=>{C=!0},()=>{C=!0}),s.mcp&&import(`./browser-agent-rpc-BXhoSh1z-DRoP5jHQ.js`).then(({setupBrowserAgentRpcBridge:e})=>{g||(h=e(T))}).catch(()=>{}),x&&(x.onmessage=e=>{e.data?.type===`auth-update`&&e.data.authToken&&T.requestTrustWithToken(e.data.authToken)}),T}const Tr=wr;var Er=e=>typeof e==`string`,Dr=e=>typeof e==`function`,Or=e=>typeof e==`object`&&!!e,K=class e extends Error{code;aborted;timedOut;permanent;applied;appliedEtag;cause;constructor(e,t,n,r){super(t),this.name=`FilesError`,this.code=e,this.aborted=r?.aborted===!0,this.timedOut=r?.timedOut===!0,this.permanent=r?.permanent===!0,this.applied=r?.applied===!0,r?.appliedEtag!==void 0&&(this.appliedEtag=r.appliedEtag),this.cause=n}static applied(t,n){let r=e.wrap(t);return new e(r.code,r.message,t,{aborted:r.aborted,applied:!0,...n!==void 0&&{appliedEtag:n},permanent:r.permanent,timedOut:r.timedOut})}static wrap(t,n=`Provider`){if(t instanceof e)return t;let r=t instanceof Error?t.message:String(t);return new e(n,r,t)}};async function kr(e,t,{concurrency:n=1/0,stopOnError:r=!0,signal:i}={}){return new Promise((a,o)=>{if(e[Symbol.iterator]===void 0&&e[Symbol.asyncIterator]===void 0)throw TypeError(`Expected \`input\` to be either an \`Iterable\` or \`AsyncIterable\`, got (${typeof e})`);if(typeof t!=`function`)throw TypeError(`Mapper function is required`);if(!(Number.isSafeInteger(n)&&n>=1||n===1/0))throw TypeError(`Expected \`concurrency\` to be an integer from 1 and up or \`Infinity\`, got \`${n}\` (${typeof n})`);let s=[],c=[],l=/* @__PURE__ */ new Map,u=!1,d=!1,f=!1,p=0,m=0,h=e[Symbol.asyncIterator]===void 0?e[Symbol.iterator]():e[Symbol.asyncIterator](),g=()=>{y(i.reason)},_=()=>{i?.removeEventListener(`abort`,g)},v=e=>{a(e),_()},y=e=>{d||(u=!0,d=!0,o(e),_(),f||jr(h))};if(i){if(i.aborted){y(i.reason);return}i.addEventListener(`abort`,g,{once:!0})}let b=async()=>{if(d)return;let e=f?{done:!0}:await h.next(),n=m;if(m++,e.done){if(f=!0,p===0&&!d){if(!r&&c.length>0){y(AggregateError(c));return}if(d=!0,l.size===0){v(s);return}let e=[];for(let[t,n]of s.entries())l.get(t)!==Ar&&e.push(n);v(e)}return}p++,(async()=>{try{let r=await e.value;if(d)return;let i=await t(r,n);i===Ar&&l.set(n,i),s[n]=i}catch(e){if(r){y(e);return}c.push(e)}p--;try{await b()}catch(e){y(e)}})()};(async()=>{for(let e=0;e<n;e++){try{await b()}catch(e){y(e);break}if(f||u)break}})()})}const Ar=Symbol(`skip`);async function jr(e){try{await e.return?.()}catch{}}var Mr=async e=>{let t=e.getReader(),n=[],r=0;for(;;){let{done:e,value:i}=await t.read();if(e)break;i&&(n.push(i),r+=i.byteLength)}let i=new Uint8Array(r),a=0;for(let e of n)i.set(e,a),a+=e.byteLength;return i},Nr=e=>new ReadableStream({start(t){t.enqueue(e),t.close()}}),Pr=e=>new ReadableStream({async start(t){let n=await e;t.enqueue(n),t.close()}}),Fr=()=>new K(`Provider`,`StoredFile body was already consumed via stream(). For multi-format access, call text()/arrayBuffer()/blob() before stream() — those drain into a cache.`),Ir=()=>{try{return new Blob([/* @__PURE__ */ new Uint8Array]).size===0}catch{return!1}},Lr=async e=>Dr(e.arrayBuffer)?new Uint8Array(await e.arrayBuffer()):await new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(new Uint8Array(r.result)),r.onerror=()=>n(r.error??/* @__PURE__ */ Error(`FileReader failed`)),r.readAsArrayBuffer(e)}),Rr=(e,t,n)=>{let r,i,a=!1,o,s=async e=>{let t=await e();return r=t,t},c=()=>{if(r)return Promise.resolve(r);if(i)return i;if(o){let e=o;return i=s(async()=>Lr(await e)),i}if(t.kind===`buffer`)return r=t.data,Promise.resolve(r);if(t.kind===`lazy`)return i=s(t.factory),i;if(a)return Promise.reject(Fr());let e=t.factory();return i=s(()=>Mr(e)),i};return{async arrayBuffer(){let e=await c();return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)},async blob(){if(o)return await o;if(n&&r===void 0&&i===void 0&&!Ir())return o=n(),await o;let t=await c();try{return new Blob([t],{type:e.type})}catch(e){throw new K(`Provider`,`this runtime's Blob cannot wrap bytes (React Native). Call blob() before text()/arrayBuffer(), or read the download with arrayBuffer() instead.`,e)}},etag:e.etag,key:e.key,lastModified:e.lastModified,metadata:e.metadata,name:e.key,size:e.size,stream(){if(r)return Nr(r);if(i)return Pr(i);if(t.kind===`stream`){if(a)throw Fr();return a=!0,t.factory()}return Pr(c())},async text(){let e=await c();return new TextDecoder().decode(e)},type:e.type}},zr=e=>{if(!e)return{};try{let t=Uint8Array.from(atob(e),e=>e.codePointAt(0)??0);return JSON.parse(new TextDecoder().decode(t))}catch{return{}}},Br=(e,t)=>{let n=zr(e.headers.get(`x-files-meta`)),r=e.headers.get(`content-length`),i=r===null?0:Number(r),{body:a}=e;return Rr({etag:e.headers.get(`etag`)??n.etag,key:n.key??t,lastModified:n.lastModified,metadata:n.metadata,size:i,type:e.headers.get(`content-type`)??`application/octet-stream`},a?{factory:()=>a,kind:`stream`}:{factory:async()=>new Uint8Array(await e.arrayBuffer()),kind:`lazy`},a?void 0:()=>e.blob())},q=e=>Or(e)&&!(e instanceof Blob)&&`uri`in e&&Er(e.uri),Vr=e=>{let t=0,n=0;for(let r of e)t+=r.loaded,n+=r.total;return{fraction:n===0?0:t/n,loaded:t,total:n}},Hr=e=>e.name?e.name:e.uri.split(`?`)[0]?.split(`/`).pop()||`blob`,Ur=e=>e instanceof File?e.name:q(e)?Hr(e):`blob`,Wr=e=>e instanceof Blob?{size:e.size,type:e.type}:q(e)?{size:e.size??0,type:e.type??``}:{size:e.byteLength,type:``},Gr=e=>{let{size:t,type:n}=Wr(e);return{file:e,loaded:0,name:Ur(e),progress:0,size:t,status:`pending`,total:t,type:n||`application/octet-stream`}};AbortSignal.any;var Kr=e=>e instanceof K?e:e instanceof Error?new K(`Provider`,`Operation aborted: ${e.message}`,e,{aborted:!0}):new K(`Provider`,e===void 0?`Operation aborted`:`Operation aborted: ${String(e)}`,e,{aborted:!0}),qr=e=>e instanceof Blob?e.size:q(e)?e.size??0:e.byteLength,Jr=e=>e instanceof Blob||q(e)?e:new Blob([e]),Yr=e=>{if(q(e))throw new K(`Provider`,`a NativeFileRef body requires a presigned-POST target; resolve it to a Blob first`);return e},Xr=e=>{if(e.method===`POST`&&e.fields){let t=new FormData;for(let[n,r]of Object.entries(e.fields))t.append(n,r);return e.body&&t.append(`file`,Jr(e.body)),t}return Yr(e.body)},Zr=e=>new Promise((t,n)=>{if(e.signal?.aborted){n(Kr(e.signal.reason));return}let r=new XMLHttpRequest;if(r.open(e.method,e.url,!0),e.headers&&!(e.method===`POST`&&e.fields))for(let[t,n]of Object.entries(e.headers))r.setRequestHeader(t,n);e.onProgress&&r.upload.addEventListener(`progress`,t=>{t.lengthComputable&&e.onProgress?.(t.loaded,t.total)}),r.addEventListener(`load`,()=>t({status:r.status,text:r.responseText})),r.addEventListener(`error`,()=>n(new K(`Provider`,`network error during upload`))),r.addEventListener(`abort`,()=>n(Kr(e.signal?.reason))),e.signal?.addEventListener(`abort`,()=>r.abort(),{once:!0}),r.send(Xr(e))}),Qr=e=>async t=>{let n=t.body?qr(t.body):0;t.onProgress?.(0,n);let r;if(t.method===`POST`&&t.fields){let e=new FormData;for(let[n,r]of Object.entries(t.fields))e.append(n,r);t.body&&e.append(`file`,Jr(t.body)),r=e}else r=Yr(t.body);let i=await e(t.url,{body:r,headers:t.method===`POST`&&t.fields?void 0:t.headers,method:t.method,signal:t.signal});return t.onProgress?.(n,n),{status:i.status,text:await i.text()}},$r=e=>typeof XMLHttpRequest>`u`?Qr(e):Zr,ei=`/api/files`,ti=4,ni=e=>{switch(e){case`NotFound`:return`NotFound`;case`Unauthorized`:case`Forbidden`:return`Unauthorized`;case`Conflict`:return`Conflict`;case`ReadOnly`:return`ReadOnly`;default:return`Provider`}},ri=e=>new K(ni(e.code),e.message,void 0,{aborted:e.aborted,permanent:e.code===`Validation`,timedOut:e.timedOut}),ii=e=>e?.length?e.map(e=>({error:ri(e.error),key:e.key})):void 0,ai=(e,t)=>{let n=ii(t);return n?{...e,errors:n}:e},oi=e=>({body:e,size:e.size,type:e.type}),si=e=>e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength),ci=(e,t)=>{if(e instanceof Blob)return oi(t&&e.type!==t?new Blob([e],{type:t}):e);if(Er(e))return oi(new Blob([e],t?{type:t}:void 0));let n=si(e);try{return oi(new Blob([n],t?{type:t}:void 0))}catch{return{body:n,size:n.byteLength,type:t??``}}},li=(e={})=>{let t=e.endpoint??ei,n=e.fetchImpl??fetch,r=e.transport??$r(n),i=e.concurrency??ti,a=t.includes(`?`)?`&`:`?`,o=async e=>{let t=await n(e.uri);if(!t.ok)throw new K(`Provider`,`could not read upload source ${e.uri} (${t.status})`);return t.blob()},s=async()=>{let t=Dr(e.headers)?await e.headers():e.headers;return t?Object.fromEntries(new Headers(t).entries()):{}},c=async e=>{try{let t=await e.json();if(t.error?.code)return ri(t.error)}catch{}return new K(`Provider`,`gateway responded ${e.status}`)},l=async(e,r)=>{let i=await n(t,{body:JSON.stringify(e),headers:{"content-type":`application/json`,...await s()},method:`POST`,signal:r});if(!i.ok)throw await c(i);return await i.json()},u=async(e,r)=>{let i=await s();r?.range&&(i.range=`bytes=${r.range.start}-${r.range.end??``}`);let o=await n(`${t}${a}op=download&key=${encodeURIComponent(e)}`,{headers:i,method:`GET`,signal:r?.signal});if(!o.ok)throw await c(o);return Br(o,e)},d=e=>Rr({etag:e.etag,key:e.key,lastModified:e.lastModified,metadata:e.metadata,size:e.size,type:e.type},{factory:async()=>{let t=await u(e.key);return new Uint8Array(await t.arrayBuffer())},kind:`lazy`}),f=(e,t)=>{let n;try{n=JSON.parse(t)}catch{n=void 0}if(e<200||e>=300){let t=n?.error;throw t?ri(t):new K(`Provider`,`upload failed (${e})`)}return n},p=async(e,t,n,i)=>{let a=await r({body:t,method:e.method,onProgress:i,signal:n,url:e.url,...e.method===`PUT`?{headers:e.headers}:{fields:e.fields}});if(a.status<200||a.status>=300)throw new K(`Provider`,`upload failed (${a.status})`)},m=async(e,t)=>{let n={name:Ur(e),size:e.size??0,type:e.type||`application/octet-stream`},[r]=(await l({files:[n],op:`presign`,...t?.expiresIn&&{expiresIn:t.expiresIn}},t?.signal)).uploads;if(!r)throw new K(`Provider`,`presign returned no upload target`);let{id:i,key:a,target:s}=r,c=q(e)&&s.method===`PUT`?await o(e):e,u=Gr(e);u.status=`uploading`,u.key=a;let d=[u];await p(s,c,t?.signal,(e,n)=>{u.loaded=e,u.total=n||u.size,u.progress=u.total?e/u.total:0,t?.onProgress?.(Vr(d),d)});let f=await l({completions:[{id:i,key:a}],op:`complete`},t?.signal),[m]=f.files;if(!m){let e=f.errors?.[0];throw e?ri(e.error):new K(`Provider`,`upload did not complete`)}return u.status=`success`,u.progress=1,{etag:m.etag,key:m.key,lastModified:m.lastModified,size:m.size,type:m.type}},h=async(e,n,i)=>{let c=q(n)?ci(await o(n),i?.contentType??n.type):ci(n,i?.contentType),l=await r({body:c.body,headers:{"content-type":c.type||`application/octet-stream`,...await s()},method:`PUT`,onProgress:i?.onProgress?(t,n)=>{let r=Gr(c.body);r.key=e,r.status=`uploading`,r.loaded=t,r.total=n||c.size,r.progress=r.total?t/r.total:0,i.onProgress?.(Vr([r]),[r])}:void 0,signal:i?.signal,url:`${t}${a}op=upload&key=${encodeURIComponent(e)}`});return f(l.status,l.text).file},g=async(e,t)=>{let n=await kr(e,async e=>{try{return{ok:!0,out:await h(e.key,e.body,{contentType:e.contentType,signal:t?.signal})}}catch(n){if(t?.stopOnError)throw n;return{error:K.wrap(n),key:e.key,ok:!1}}},{concurrency:t?.concurrency??i}),r=[],a=[];for(let e of n)e.ok?r.push({contentType:e.out.type,etag:e.out.etag,key:e.out.key,lastModified:e.out.lastModified,size:e.out.size}):a.push({error:e.error,key:e.key});return a.length?{errors:a,uploaded:r}:{uploaded:r}},_=async(e,t)=>{let n=await kr(e,async e=>{try{return{file:await u(e,{as:t?.as,signal:t?.signal}),ok:!0}}catch(n){if(t?.stopOnError)throw n;return{error:K.wrap(n),key:e,ok:!1}}},{concurrency:t?.concurrency??i}),r=[],a=[];for(let e of n)e.ok?r.push(e.file):a.push({error:e.error,key:e.key});return a.length?{downloaded:r,errors:a}:{downloaded:r}},v={capabilities:async e=>(await l({op:`capabilities`},e?.signal)).capabilities,copy:async(e,t,n)=>{await l({from:e,op:`copy`,to:t},n?.signal)},delete:async(e,t)=>{if(Array.isArray(e)){let n=await l({concurrency:t?.concurrency,keys:e,op:`delete-many`,stopOnError:t?.stopOnError},t?.signal);return ai({deleted:n.deleted},n.errors)}await l({key:e,op:`delete`},t?.signal)},download:(e,t)=>Array.isArray(e)?_(e,t):u(e,t),exists:async(e,t)=>{if(Array.isArray(e)){let n=await l({concurrency:t?.concurrency,keys:e,op:`exists-many`,stopOnError:t?.stopOnError},t?.signal);return ai({existing:n.existing,missing:n.missing},n.errors)}return(await l({key:e,op:`exists`},t?.signal)).exists},head:async(e,t)=>{if(Array.isArray(e)){let n=await l({concurrency:t?.concurrency,keys:e,op:`head-many`,stopOnError:t?.stopOnError},t?.signal);return ai({files:n.files.map(d)},n.errors)}let n=await l({key:e,op:`head`},t?.signal);return d(n.file)},list:async e=>{let t=await l({op:`list`,...e?.prefix!==void 0&&{prefix:e.prefix},...e?.cursor!==void 0&&{cursor:e.cursor},...e?.limit!==void 0&&{limit:e.limit},...e?.delimiter!==void 0&&{delimiter:e.delimiter}},e?.signal);return{items:t.items.map(d),...t.prefixes&&{prefixes:t.prefixes},...t.cursor&&{cursor:t.cursor}}},async*listAll(e){let t=e?.cursor;do{let n=await v.list({...e,cursor:t});for(let e of n.items)yield e;({cursor:t}=n)}while(t)},move:async(e,t,n)=>{await l({from:e,op:`move`,to:t},n?.signal)},purge:async(e,t)=>{await l({op:`purge`,...e!==void 0&&{key:e}},t?.signal)},restoreTrashed:async(e,t)=>{let n=await l({key:e,op:`restore-trashed`},t?.signal);return d(n.file)},restoreVersion:async(e,t,n)=>{let r=await l({key:e,op:`restore-version`,...t!==void 0&&{versionId:t}},n?.signal);return d(r.file)},async*search(e,t){let n=e instanceof RegExp?{flags:e.flags,isRegex:!0,pattern:e.source}:{pattern:e},r=await l({op:`search`,...n,...t?.match&&{match:t.match},...t?.prefix!==void 0&&{prefix:t.prefix},...t?.limit!==void 0&&{limit:t.limit},...t?.maxResults!==void 0&&{maxResults:t.maxResults},...t?.caseInsensitive!==void 0&&{caseInsensitive:t.caseInsensitive}},t?.signal);for(let e of r.matches)yield d(e)},signedUploadUrl:async(e,t)=>(await l({expiresIn:t.expiresIn,key:e,op:`signed-upload-url`,...t.contentType&&{contentType:t.contentType},...t.maxSize!==void 0&&{maxSize:t.maxSize},...t.minSize!==void 0&&{minSize:t.minSize}},t.signal)).signed,trashed:async e=>(await l({op:`trashed`},e?.signal)).trashed,upload:(e,t,n)=>Array.isArray(e)?g(e,t):Er(e)?h(e,t,n):m(e,t),url:async(e,t)=>(await l({key:e,op:`url`,...t?.expiresIn!==void 0&&{expiresIn:t.expiresIn},...t?.responseContentDisposition!==void 0&&{responseContentDisposition:t.responseContentDisposition}},t?.signal)).url,versions:async(e,t)=>(await l({key:e,op:`versions`},t?.signal)).versions};return v};const ui=`https://github.com/liria24/nuxt-files-sdk/blob/main/docs/content/4.reference/4.troubleshooting.md`,di={NUXT_FILES_NOT_CONFIGURED:{level:`warning`,message:`The Files registry has not been configured.`,hint:`Check that files.config.ts is loaded by the Nuxt or Nitro integration.`,docs:ui},NUXT_FILES_INVALID_CONFIG:{level:`error`,message:`The Files registry rejected the storage configuration.`,hint:`Check the storage shape in the active files.config.ts environment.`,docs:ui},NUXT_FILES_ADAPTER_INIT_FAILED:{level:`error`,message:`A configured storage adapter could not be initialized.`,hint:`Check the provider package, runtime support, and required configuration.`,docs:ui},NUXT_FILES_GATEWAY_FAILED:{level:`error`,message:`The Files DevTools gateway could not complete a request.`,hint:`Check the Nitro development server and the Files registry diagnostics.`,docs:ui}},fi=e=>!!(e&&typeof e==`object`&&`code`in e&&typeof e.code==`string`&&Object.hasOwn(di,e.code)&&`level`in e&&(e.level===`info`||e.level===`warning`||e.level===`error`)&&`message`in e&&typeof e.message==`string`);var pi=class{storage;prefix=``;#e;#t=/* @__PURE__ */ new Map;#n;#r=0;#i=[void 0];#a;constructor(e){this.#e=e}get hasPrevious(){return this.#i.length>1}get hasNext(){return this.#a!==void 0}get initializing(){return!this.#t.has(this.storage)}navigate(e,t=``){this.storage=e,this.prefix=t,this.reset()}reset(e=!1){this.#o(),this.#i=[void 0],this.#a=void 0,e&&this.#t.clear()}next(){this.hasNext&&(this.#i.push(this.#a),this.#a=void 0,this.#o())}previous(){this.hasPrevious&&(this.#i.pop(),this.#a=void 0,this.#o())}#o(){this.#n?.abort(),this.#r++}capture(){let e=this.#r;return{storage:this.storage,prefix:this.prefix,client:this.#e(this.storage),current:()=>e===this.#r}}async list(){this.#o();let e=this.#n=new AbortController,t=this.capture(),n=this.#i.at(-1);try{let r=this.#t.get(t.storage);if(!r){if(r=await t.client.capabilities({signal:e.signal}),!t.current())return;this.#t.set(t.storage,r)}let i=await t.client.list({prefix:t.prefix,limit:1e3,...n===void 0?{}:{cursor:n},...r.delimiter?{delimiter:`/`}:{},signal:e.signal});return t.current()?(this.#a=i.cursor||void 0,i):void 0}catch(e){if(t.current())throw e;return}}};const J=(e,t)=>{let n=document.querySelector(e);if(!(n instanceof t))throw Error(`Missing DevTools element: ${e}`);return n},mi=J(`#summary`,HTMLElement),hi=J(`#storage-select`,HTMLSelectElement),gi=J(`#breadcrumbs`,HTMLElement),_i=J(`#files`,HTMLTableSectionElement),vi=J(`#browser-status`,HTMLElement),yi=J(`#access-badge`,HTMLElement),bi=J(`#refresh`,HTMLButtonElement),xi=J(`#upload`,HTMLInputElement),Si=J(`.upload-button`,HTMLElement);let Y,X,Ci=0,wi,Ti,Ei,Di,Oi,ki;const Ai=J(`#previous-page`,HTMLButtonElement),ji=J(`#next-page`,HTMLButtonElement),Mi=e=>typeof e==`object`&&!!e,Ni=e=>Mi(e)&&Array.isArray(e.storages)&&e.storages.every(e=>Mi(e)&&(e.name===void 0||typeof e.name==`string`)&&typeof e.adapter==`string`&&Array.isArray(e.plugins)&&e.plugins.every(e=>typeof e==`string`)&&typeof e.initialized==`boolean`)&&Array.isArray(e.diagnostics)&&e.diagnostics.every(fi),Pi=e=>Mi(e)&&typeof e.write==`boolean`&&typeof e.maxUploadSize==`number`,Fi=e=>Mi(e)&&typeof e.token==`string`&&typeof e.expiresAt==`number`,Ii=async()=>{if(new URL(window.location.href).searchParams.get(`host`)===`nuxt-v3`){let e=localStorage.getItem(`__nuxt_dev_token__`);if(!e)throw Error(`Authorize this browser in Nuxt DevTools, then refresh Files.`);let t=await fetch(`./token`,{headers:{"x-nuxt-devtools-token":e}});if(!t.ok)throw Error(`DevTools authentication failed (${t.status}).`);let n=await t.json();if(Fi(n))return n;throw Error(`Files development tools returned an invalid access token.`)}await Di;let e=await Ei?.scope(`nuxt-files-sdk`).rpc.call(`issue-http-token`);if(Fi(e))return e;throw Error(`Files development tools require a trusted DevFrame connection.`)},Li=async()=>Oi&&Oi.expiresAt-Date.now()>1e4?Oi.token:(ki??=Ii().finally(()=>ki=void 0),Oi=await ki,Oi.token),Ri=async()=>({authorization:`Bearer ${await Li()}`}),zi=async(e,t)=>{let n=await fetch(e,{headers:await Ri(),...t&&{signal:t}});if(!n.ok)throw Error(`DevTools request failed (${n.status}).`);return n.json()},Z=new pi(e=>li({endpoint:e===void 0?`./files`:`./files?storage=`+encodeURIComponent(e),headers:Ri})),Q=(e,t=!1)=>{vi.textContent=e,vi.classList.toggle(`error-text`,t)},Bi=async(e,t)=>{await Di,t()&&Ei?.scope(`nuxt-files-sdk`).rpc.callEvent(`report-failure`,e)},Vi=async()=>{let e=Y;await Di,Y===e&&Ei?.scope(`nuxt-files-sdk`).rpc.callEvent(`report-diagnostics`,e.diagnostics)},Hi=e=>{if(e<1024)return`${e} B`;let t=[`KB`,`MB`,`GB`,`TB`],n=e,r=-1;do n/=1024,r++;while(n>=1024&&r<t.length-1);return`${n.toFixed(n>=10?0:1)} ${t[r]}`},Ui=e=>e.slice(Z.prefix.length).replace(/\/$/u,``)||e,Wi=(e,t)=>{let n=document.createElement(`button`);return n.type=`button`,n.className=`row-action`,n.textContent=e,n.addEventListener(`click`,t),n},Gi=()=>{let e=Z.prefix.split(`/`).filter(Boolean),t=[],n=Wi(`Root`,()=>{Z.navigate(Z.storage),$()});n.className=`breadcrumb`,t.push(n);let r=``;for(let n of e){t.push(document.createTextNode(`/`)),r+=`${n}/`;let e=r,i=Wi(n,()=>{Z.navigate(Z.storage,e),$()});i.className=`breadcrumb`,t.push(i)}gi.replaceChildren(...t)},Ki=e=>{let t=document.createElement(`tr`),n=document.createElement(`td`);n.className=`file-name`,n.textContent=Ui(e.key);let r=document.createElement(`td`);r.textContent=Hi(e.size);let i=document.createElement(`td`);i.textContent=e.type||`application/octet-stream`;let a=document.createElement(`td`);a.textContent=e.lastModified?new Date(e.lastModified).toLocaleString():`—`;let o=document.createElement(`td`);return o.className=`actions`,o.append(Wi(`Download`,()=>void Yi(e.key)),...X.write?[Wi(`Delete`,()=>void Xi(e.key))]:[]),t.append(n,r,i,a,o),t},qi=e=>{let t=document.createElement(`tr`),n=document.createElement(`td`);n.className=`file-name`;let r=Wi(`📁 ${Ui(e)}`,()=>{Z.navigate(Z.storage,e),$()});r.className=`folder`,n.append(r);let i=document.createElement(`td`);return i.colSpan=4,i.className=`folder-detail`,i.textContent=`Folder`,t.append(n,i),t},Ji=async(e,t=!1)=>{if(!t&&Y.storages.find(({name:t})=>t===e.storage)?.initialized)return;Ti?.abort();let n=Ti=new AbortController;try{let t=await zi(`./snapshot`,n.signal);e.current()&&!n.signal.aborted&&Ni(t)&&(Y=t,Qi(),Vi())}catch{}},$=async()=>{Ti?.abort();let e=Z.initializing;Gi(),_i.innerHTML=`<tr><td colspan="5" class="empty-state">Loading files…</td></tr>`,Q(`Loading…`),Ai.disabled=!0,ji.disabled=!0;let t=Z.list(),n=Z.capture();try{let e=await t;if(!n.current()||!e)return;let r=[...(e.prefixes??[]).toSorted().map(qi),...e.items.toSorted((e,t)=>e.key.localeCompare(t.key)).map(Ki)];r.length?_i.replaceChildren(...r):_i.innerHTML=`<tr><td colspan="5" class="empty-state">No files in this location.</td></tr>`,Q(`${r.length} item${r.length===1?``:`s`}`),Ai.disabled=!Z.hasPrevious,ji.disabled=!Z.hasNext,Ji(n)}catch(t){if(!n.current())return;_i.innerHTML=`<tr><td colspan="5" class="empty-state">Unable to load files.</td></tr>`;let r=t instanceof Error?t.message:String(t);Q(r,!0),Bi({kind:e?`initialization`:`gateway`,message:r,...Z.storage===void 0?{}:{target:Z.storage}},n.current),Ai.disabled=!Z.hasPrevious,await Ji(n,!0)}},Yi=async e=>{let t=Z.capture();Q(`Downloading ${e}…`);try{let n=window.showSaveFilePicker,r=e.split(`/`).at(-1)||e,i=n?await n({suggestedName:r}):void 0,a=await t.client.download(e,{as:`stream`});if(i){await a.stream().pipeTo(await i.createWritable()),t.current()&&Q(`Downloaded ${e}`);return}if(a.size>67108864)throw Error(`Large downloads require a browser with streaming file save support.`);let o=URL.createObjectURL(await a.blob()),s=document.createElement(`a`);s.href=o,s.download=r,s.click(),setTimeout(()=>URL.revokeObjectURL(o),6e4),t.current()&&Q(`Downloaded ${e}`)}catch(e){if(!t.current())return;Q(e instanceof Error?e.message:String(e),!0)}},Xi=async e=>{let t=Z.capture();if(window.confirm(`Delete ${e}? This cannot be undone.`)){Q(`Deleting ${e}…`);try{if(await t.client.delete(e),!t.current())return;Z.reset(),await $()}catch(n){if(!t.current())return;let r=n instanceof Error?n.message:String(n);Q(r,!0),Bi({kind:`delete`,message:r,target:e},t.current)}}},Zi=async e=>{let t=Z.capture(),n=`${t.prefix}${e.name}`;if(e.size>X.maxUploadSize){let r=`${e.name} exceeds the ${Hi(X.maxUploadSize)} development upload limit.`;Q(r,!0),Bi({kind:`upload`,message:r,target:n},t.current);return}let r=t.client;try{if(!window.confirm(`Upload ${n}? This may replace an existing file.`)||(Q(`Uploading ${n}…`),await r.upload(n,e,{contentType:e.type||`application/octet-stream`}),!t.current()))return;Z.reset(),await $()}catch(e){if(!t.current())return;let r=e instanceof Error?e.message:String(e);Q(r,!0),Bi({kind:`upload`,message:r,target:n},t.current)}},Qi=()=>{mi.textContent=`${Y.storages.length} configured storage${Y.storages.length===1?``:`s`}`,J(`#storages`,HTMLTableSectionElement).replaceChildren(...Y.storages.map(e=>{let t=document.createElement(`tr`);for(let n of[e.name??`Single storage`,e.adapter,e.plugins.join(`, `)||`—`]){let e=document.createElement(`td`);e.textContent=n,t.append(e)}let n=document.createElement(`td`),r=document.createElement(`span`);return r.className=`status ${e.initialized?`success`:`idle`}`,r.textContent=e.initialized?`Initialized`:`Not initialized`,n.append(r),t.append(n),t}));let e=J(`#diagnostics`,HTMLElement);Y.diagnostics.length?e.replaceChildren(...Y.diagnostics.map(e=>{let t=document.createElement(`p`);t.className=e.level;let n=document.createElement(`strong`);if(n.textContent=`${e.code}: ${e.message}`,t.append(n),e.hint&&t.append(document.createElement(`br`),e.hint),e.docs){let n=document.createElement(`a`);n.href=e.docs,n.target=`_blank`,n.rel=`noreferrer`,n.textContent=`Troubleshooting`,t.append(document.createElement(`br`),n)}return t})):e.textContent=`No integration diagnostics.`},$i=async()=>{let e=++Ci;wi?.abort(),Ti?.abort();let t=wi=new AbortController;Z.reset(!0);let n=Z.capture();try{let[r,i]=await Promise.all([zi(`./snapshot`,t.signal),zi(`./files?op=devtools`,t.signal)]);if(e!==Ci||!n.current())return;if(!Ni(r)||!Pi(i))throw Error(`Files development tools returned an invalid response.`);Y=r,X=i,Qi(),Vi();let a=Z.storage;hi.replaceChildren(...Y.storages.map(e=>{let t=document.createElement(`option`);return t.value=e.name??``,t.textContent=e.name??`Single storage`,t})),hi.hidden=Y.storages.length<2;let o=Y.storages.some(({name:e})=>e===a)?a:Y.storages[0]?.name;Z.navigate(o,o===a?Z.prefix:``),hi.value=Z.storage??``,yi.textContent=X.write?`Read & write`:`Read only`,yi.className=`access-badge ${X.write?`write`:``}`,yi.hidden=!1,xi.disabled=!X.write,Si.hidden=!X.write,Y.storages.length?await $():Q(`No configured storage.`,!0)}catch(t){if(e!==Ci||!n.current())return;mi.textContent=`Unable to load Files development tools`;let r=t instanceof Error?t.message:String(t);Q(r,!0),Bi({kind:`gateway`,message:r},n.current)}},ea=async()=>{try{let e=Y.diagnostics.length?Y.diagnostics.map(e=>[`${e.code} [${e.level}]: ${e.message}`,e.hint?`Hint: ${e.hint}`:``,e.docs?`Docs: ${e.docs}`:``].filter(Boolean).join(`
4
6
  `)).join(`
5
7
 
6
- `):`No integration diagnostics.`;await navigator.clipboard.writeText(e),Q(`Copied diagnostics.`)}catch(e){Q(e instanceof Error?e.message:String(e),!0)}};Ci.addEventListener(`change`,()=>{X=Ci.value||void 0,Z=``,$()}),Oi.addEventListener(`click`,()=>void ea()),ki.addEventListener(`change`,()=>{let e=ki.files?.[0];ki.value=``,e&&Qi(e)}),Ni=(async()=>{try{Mi=await Pr({simpleAuth:!1});let e=Mi.scope(`nuxt-files-sdk`).rpc;e.register({name:`refresh`,type:`event`,handler:()=>void ea()}),e.register({name:`copy-diagnostics`,type:`event`,handler:()=>void ta()})}catch{}})(),ea();
8
+ `):`No integration diagnostics.`;await navigator.clipboard.writeText(e),Q(`Copied diagnostics.`)}catch(e){Q(e instanceof Error?e.message:String(e),!0)}};hi.addEventListener(`change`,()=>{Ci++,wi?.abort(),Ti?.abort(),Z.navigate(Y.storages[hi.selectedIndex]?.name),$()}),Ai.addEventListener(`click`,()=>{Z.previous(),$()}),ji.addEventListener(`click`,()=>{Z.next(),$()}),bi.addEventListener(`click`,()=>void $i()),xi.addEventListener(`change`,()=>{let e=xi.files?.[0];xi.value=``,e&&Zi(e)}),Di=(async()=>{if(new URL(window.location.href).searchParams.get(`host`)!==`nuxt-v3`)try{Ei=await Tr({simpleAuth:!1});let e=Ei.scope(`nuxt-files-sdk`).rpc;e.register({name:`refresh`,type:`event`,handler:()=>void $i()}),e.register({name:`copy-diagnostics`,type:`event`,handler:()=>void ea()})}catch{}})(),$i();export{_e as t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./app.js";const t=Symbol.for(`devframe:browser-agent-registry`),{tools:n,listeners:r}=globalThis[t]??={tools:/* @__PURE__ */ new Map,listeners:/* @__PURE__ */ new Set};function i(){return[...n.values()]}function a(e){return r.add(e),()=>r.delete(e)}const o=`devframe:client-id`;let s;function c(t=globalThis.window){try{let n=t?.sessionStorage;if(n){let t=n.getItem(o);return t||(t=e(),n.setItem(o,t)),t}}catch{}return s??=e(),s}function l(e){e.client.register({name:`devframe:agent:invoke-client-tool`,type:`action`,jsonSerializable:!0,handler:async(e,t)=>{let n=i().find(t=>t.id===e);if(!n)throw Error(`[devframe/agent] browser tool "${e}" not found`);return await n.invoke(t)}});let t=!1,n=!1,r=0,o=()=>{t||n||(t=!0,queueMicrotask(async()=>{if(t=!1,n)return;let a=i().map(({invoke:e,...t})=>t);(a.length!==0||r!==0)&&(r=a.length,await e.callOptional(`devframe:agent:sync-client-tools`,c(),a).catch(()=>{}))}))},s=a(o),l=e.events.on(`connection:status`,e=>{e===`connected`&&o()});return o(),()=>{n=!0,s(),l()}}export{l as setupBrowserAgentRpcBridge};
@@ -391,6 +391,10 @@
391
391
  <tbody id="files"></tbody>
392
392
  </table>
393
393
  </div>
394
+ <div aria-label="File pages">
395
+ <button id="previous-page" type="button" disabled>Previous</button>
396
+ <button id="next-page" type="button" disabled>Next</button>
397
+ </div>
394
398
  <p id="browser-status" aria-live="polite">Loading…</p>
395
399
  </section>
396
400
  <section class="panel" aria-labelledby="storages-heading">
@@ -407,7 +411,6 @@
407
411
  <th>Name</th>
408
412
  <th>Adapter</th>
409
413
  <th>Plugins</th>
410
- <th>Source</th>
411
414
  <th>Status</th>
412
415
  </tr>
413
416
  </thead>
@@ -1,3 +1,4 @@
1
+ import { createFilesDevtoolsToken } from "./auth.js";
1
2
  import { FILES_DEVTOOLS_DIAGNOSTICS, createFilesDevtoolsDiagnostic, isFilesDevtoolsDiagnostic, isFilesDevtoolsFailure } from "./diagnostics.js";
2
3
  import { FILES_DEVTOOLS_PATH } from "./snapshot.js";
3
4
  import { version } from "../package.js";
@@ -11,7 +12,7 @@ const messageTitles = {
11
12
  initialization: "Files storage initialization failed",
12
13
  gateway: "Files DevTools gateway failed"
13
14
  };
14
- const createFilesDevframe = ({ write, maxUploadSize, notifyFailure }) => defineDevframe({
15
+ const createFilesDevframe = ({ write, maxUploadSize, tokenSecret, notifyFailure }) => defineDevframe({
15
16
  id: "nuxt-files-sdk",
16
17
  name: "Files",
17
18
  version,
@@ -42,6 +43,11 @@ const createFilesDevframe = ({ write, maxUploadSize, notifyFailure }) => defineD
42
43
  }, { method: diagnostic.level === "info" ? "log" : diagnostic.level === "warning" ? "warn" : "error" });
43
44
  };
44
45
  const scoped = context.scope("nuxt-files-sdk");
46
+ scoped.rpc.register(defineRpcFunction({
47
+ name: "issue-http-token",
48
+ type: "query",
49
+ handler: () => createFilesDevtoolsToken(tokenSecret)
50
+ }));
45
51
  scoped.rpc.register(defineRpcFunction({
46
52
  name: "report-diagnostics",
47
53
  type: "event",
@@ -1 +1 @@
1
- {"version":3,"file":"devframe.js","names":[],"sources":["../../src/devtools/devframe.ts"],"sourcesContent":["import { fileURLToPath } from 'node:url'\n\nimport { defineDevframe, defineRpcFunction } from 'devframe'\n\nimport { version } from '../../package.json'\nimport {\n createFilesDevtoolsDiagnostic,\n FILES_DEVTOOLS_DIAGNOSTICS,\n isFilesDevtoolsDiagnostic,\n isFilesDevtoolsFailure,\n type FilesDevtoolsDiagnostic,\n} from './diagnostics'\nimport { FILES_DEVTOOLS_PATH } from './snapshot'\n\ninterface FilesDevframeMessage {\n id: string\n message: string\n level: 'error'\n description: string\n category: string\n labels: string[]\n notify: true\n}\n\nexport interface FilesDevframeOptions {\n write: boolean\n maxUploadSize: number\n notifyFailure: (message: FilesDevframeMessage) => unknown\n}\n\nconst clientAssets = fileURLToPath(new URL('./client', import.meta.url))\nconst messageTitles = {\n upload: 'Files upload failed',\n delete: 'Files delete failed',\n initialization: 'Files storage initialization failed',\n gateway: 'Files DevTools gateway failed',\n} as const\n\nexport const createFilesDevframe = ({ write, maxUploadSize, notifyFailure }: FilesDevframeOptions) =>\n defineDevframe({\n id: 'nuxt-files-sdk',\n name: 'Files',\n version,\n packageName: 'nuxt-files-sdk',\n importMetaUrl: import.meta.url,\n homepage: 'https://github.com/liria24/nuxt-files-sdk',\n description: 'Files SDK storage and integration diagnostics for Nuxt.',\n icon: 'ph:files-duotone',\n clientAssets,\n async setup(context) {\n await context.host.mountConnectionMeta?.(FILES_DEVTOOLS_PATH)\n context.views.hostStatic(FILES_DEVTOOLS_PATH, clientAssets)\n\n const definitions = Object.fromEntries(\n Object.entries(FILES_DEVTOOLS_DIAGNOSTICS).map(([code, diagnostic]) => [\n code,\n {\n why: ({ message }: { message?: string }) => message ?? diagnostic.message,\n fix: diagnostic.hint,\n docs: diagnostic.docs,\n },\n ]),\n )\n const diagnostics = context.diagnostics.defineDiagnostics({ codes: definitions })\n context.diagnostics.register(diagnostics)\n const reported = new Set<string>()\n const reportDiagnostic = (diagnostic: FilesDevtoolsDiagnostic, cause?: unknown): void => {\n const key = `${diagnostic.code}:${diagnostic.message}`\n if (reported.has(key)) return\n reported.add(key)\n diagnostics[diagnostic.code]?.(\n { message: diagnostic.message, ...(cause === undefined ? {} : { cause }) },\n { method: diagnostic.level === 'info' ? 'log' : diagnostic.level === 'warning' ? 'warn' : 'error' },\n )\n }\n\n const scoped = context.scope('nuxt-files-sdk')\n scoped.rpc.register(\n defineRpcFunction({\n name: 'report-diagnostics',\n type: 'event',\n handler(value: unknown) {\n if (Array.isArray(value))\n value.filter(isFilesDevtoolsDiagnostic).forEach((item) => reportDiagnostic(item))\n },\n }),\n )\n scoped.rpc.register(\n defineRpcFunction({\n name: 'report-failure',\n type: 'event',\n handler(value: unknown) {\n if (!isFilesDevtoolsFailure(value)) return\n if (!write && (value.kind === 'upload' || value.kind === 'delete')) return\n const description =\n value.kind === 'upload'\n ? `${value.message}\\nMaximum upload size: ${maxUploadSize} bytes.`\n : value.message\n void notifyFailure({\n id: `nuxt-files-sdk:${value.kind}:${value.target ?? 'default'}`,\n message: messageTitles[value.kind],\n level: 'error',\n description,\n category: 'nuxt-files-sdk',\n labels: ['nuxt-files-sdk', value.kind],\n notify: true,\n })\n if (value.kind === 'initialization') {\n reportDiagnostic(\n createFilesDevtoolsDiagnostic('NUXT_FILES_ADAPTER_INIT_FAILED'),\n value.message,\n )\n } else if (value.kind === 'gateway') {\n reportDiagnostic(createFilesDevtoolsDiagnostic('NUXT_FILES_GATEWAY_FAILED'), value.message)\n }\n },\n }),\n )\n },\n })\n"],"mappings":";;;;;;AA8BA,MAAM,eAAe,cAAc,IAAI,IAAI,YAAY,YAAY,GAAG,CAAC;AACvE,MAAM,gBAAgB;CAClB,QAAQ;CACR,QAAQ;CACR,gBAAgB;CAChB,SAAS;AACb;AAEA,MAAa,uBAAuB,EAAE,OAAO,eAAe,oBACxD,eAAe;CACX,IAAI;CACJ,MAAM;CACN;CACA,aAAa;CACb,eAAe,YAAY;CAC3B,UAAU;CACV,aAAa;CACb,MAAM;CACN;CACA,MAAM,MAAM,SAAS;EACjB,MAAM,QAAQ,KAAK,sBAAsB,mBAAmB;EAC5D,QAAQ,MAAM,WAAW,qBAAqB,YAAY;EAE1D,MAAM,cAAc,OAAO,YACvB,OAAO,QAAQ,0BAA0B,CAAC,CAAC,KAAK,CAAC,MAAM,gBAAgB,CACnE,MACA;GACI,MAAM,EAAE,cAAoC,WAAW,WAAW;GAClE,KAAK,WAAW;GAChB,MAAM,WAAW;EACrB,CACJ,CAAC,CACL;EACA,MAAM,cAAc,QAAQ,YAAY,kBAAkB,EAAE,OAAO,YAAY,CAAC;EAChF,QAAQ,YAAY,SAAS,WAAW;EACxC,MAAM,2BAAW,IAAI,IAAY;EACjC,MAAM,oBAAoB,YAAqC,UAA0B;GACrF,MAAM,MAAM,GAAG,WAAW,KAAK,GAAG,WAAW;GAC7C,IAAI,SAAS,IAAI,GAAG,GAAG;GACvB,SAAS,IAAI,GAAG;GAChB,YAAY,WAAW,KAAK,GACxB;IAAE,SAAS,WAAW;IAAS,GAAI,UAAU,KAAA,IAAY,CAAC,IAAI,EAAE,MAAM;GAAG,GACzE,EAAE,QAAQ,WAAW,UAAU,SAAS,QAAQ,WAAW,UAAU,YAAY,SAAS,QAAQ,CACtG;EACJ;EAEA,MAAM,SAAS,QAAQ,MAAM,gBAAgB;EAC7C,OAAO,IAAI,SACP,kBAAkB;GACd,MAAM;GACN,MAAM;GACN,QAAQ,OAAgB;IACpB,IAAI,MAAM,QAAQ,KAAK,GACnB,MAAM,OAAO,yBAAyB,CAAC,CAAC,SAAS,SAAS,iBAAiB,IAAI,CAAC;GACxF;EACJ,CAAC,CACL;EACA,OAAO,IAAI,SACP,kBAAkB;GACd,MAAM;GACN,MAAM;GACN,QAAQ,OAAgB;IACpB,IAAI,CAAC,uBAAuB,KAAK,GAAG;IACpC,IAAI,CAAC,UAAU,MAAM,SAAS,YAAY,MAAM,SAAS,WAAW;IACpE,MAAM,cACF,MAAM,SAAS,WACT,GAAG,MAAM,QAAQ,yBAAyB,cAAc,WACxD,MAAM;IAChB,cAAmB;KACf,IAAI,kBAAkB,MAAM,KAAK,GAAG,MAAM,UAAU;KACpD,SAAS,cAAc,MAAM;KAC7B,OAAO;KACP;KACA,UAAU;KACV,QAAQ,CAAC,kBAAkB,MAAM,IAAI;KACrC,QAAQ;IACZ,CAAC;IACD,IAAI,MAAM,SAAS,kBACf,iBACI,8BAA8B,gCAAgC,GAC9D,MAAM,OACV;SACG,IAAI,MAAM,SAAS,WACtB,iBAAiB,8BAA8B,2BAA2B,GAAG,MAAM,OAAO;GAElG;EACJ,CAAC,CACL;CACJ;AACJ,CAAC"}
1
+ {"version":3,"file":"devframe.js","names":[],"sources":["../../src/devtools/devframe.ts"],"sourcesContent":["import { fileURLToPath } from 'node:url'\n\nimport { defineDevframe, defineRpcFunction } from 'devframe'\n\nimport { version } from '../../package.json'\nimport { createFilesDevtoolsToken } from './auth'\nimport {\n createFilesDevtoolsDiagnostic,\n FILES_DEVTOOLS_DIAGNOSTICS,\n isFilesDevtoolsDiagnostic,\n isFilesDevtoolsFailure,\n type FilesDevtoolsDiagnostic,\n} from './diagnostics'\nimport { FILES_DEVTOOLS_PATH } from './snapshot'\n\ninterface FilesDevframeMessage {\n id: string\n message: string\n level: 'error'\n description: string\n category: string\n labels: string[]\n notify: true\n}\n\nexport interface FilesDevframeOptions {\n write: boolean\n maxUploadSize: number\n tokenSecret: string\n notifyFailure: (message: FilesDevframeMessage) => unknown\n}\n\nconst clientAssets = fileURLToPath(new URL('./client', import.meta.url))\nconst messageTitles = {\n upload: 'Files upload failed',\n delete: 'Files delete failed',\n initialization: 'Files storage initialization failed',\n gateway: 'Files DevTools gateway failed',\n} as const\n\nexport const createFilesDevframe = ({ write, maxUploadSize, tokenSecret, notifyFailure }: FilesDevframeOptions) =>\n defineDevframe({\n id: 'nuxt-files-sdk',\n name: 'Files',\n version,\n packageName: 'nuxt-files-sdk',\n importMetaUrl: import.meta.url,\n homepage: 'https://github.com/liria24/nuxt-files-sdk',\n description: 'Files SDK storage and integration diagnostics for Nuxt.',\n icon: 'ph:files-duotone',\n clientAssets,\n async setup(context) {\n await context.host.mountConnectionMeta?.(FILES_DEVTOOLS_PATH)\n context.views.hostStatic(FILES_DEVTOOLS_PATH, clientAssets)\n\n const definitions = Object.fromEntries(\n Object.entries(FILES_DEVTOOLS_DIAGNOSTICS).map(([code, diagnostic]) => [\n code,\n {\n why: ({ message }: { message?: string }) => message ?? diagnostic.message,\n fix: diagnostic.hint,\n docs: diagnostic.docs,\n },\n ]),\n )\n const diagnostics = context.diagnostics.defineDiagnostics({ codes: definitions })\n context.diagnostics.register(diagnostics)\n const reported = new Set<string>()\n const reportDiagnostic = (diagnostic: FilesDevtoolsDiagnostic, cause?: unknown): void => {\n const key = `${diagnostic.code}:${diagnostic.message}`\n if (reported.has(key)) return\n reported.add(key)\n diagnostics[diagnostic.code]?.(\n { message: diagnostic.message, ...(cause === undefined ? {} : { cause }) },\n { method: diagnostic.level === 'info' ? 'log' : diagnostic.level === 'warning' ? 'warn' : 'error' },\n )\n }\n\n const scoped = context.scope('nuxt-files-sdk')\n scoped.rpc.register(\n defineRpcFunction({\n name: 'issue-http-token',\n type: 'query',\n handler: () => createFilesDevtoolsToken(tokenSecret),\n }),\n )\n scoped.rpc.register(\n defineRpcFunction({\n name: 'report-diagnostics',\n type: 'event',\n handler(value: unknown) {\n if (Array.isArray(value))\n value.filter(isFilesDevtoolsDiagnostic).forEach((item) => reportDiagnostic(item))\n },\n }),\n )\n scoped.rpc.register(\n defineRpcFunction({\n name: 'report-failure',\n type: 'event',\n handler(value: unknown) {\n if (!isFilesDevtoolsFailure(value)) return\n if (!write && (value.kind === 'upload' || value.kind === 'delete')) return\n const description =\n value.kind === 'upload'\n ? `${value.message}\\nMaximum upload size: ${maxUploadSize} bytes.`\n : value.message\n void notifyFailure({\n id: `nuxt-files-sdk:${value.kind}:${value.target ?? 'default'}`,\n message: messageTitles[value.kind],\n level: 'error',\n description,\n category: 'nuxt-files-sdk',\n labels: ['nuxt-files-sdk', value.kind],\n notify: true,\n })\n if (value.kind === 'initialization') {\n reportDiagnostic(\n createFilesDevtoolsDiagnostic('NUXT_FILES_ADAPTER_INIT_FAILED'),\n value.message,\n )\n } else if (value.kind === 'gateway') {\n reportDiagnostic(createFilesDevtoolsDiagnostic('NUXT_FILES_GATEWAY_FAILED'), value.message)\n }\n },\n }),\n )\n },\n })\n"],"mappings":";;;;;;;AAgCA,MAAM,eAAe,cAAc,IAAI,IAAI,YAAY,YAAY,GAAG,CAAC;AACvE,MAAM,gBAAgB;CAClB,QAAQ;CACR,QAAQ;CACR,gBAAgB;CAChB,SAAS;AACb;AAEA,MAAa,uBAAuB,EAAE,OAAO,eAAe,aAAa,oBACrE,eAAe;CACX,IAAI;CACJ,MAAM;CACN;CACA,aAAa;CACb,eAAe,YAAY;CAC3B,UAAU;CACV,aAAa;CACb,MAAM;CACN;CACA,MAAM,MAAM,SAAS;EACjB,MAAM,QAAQ,KAAK,sBAAsB,mBAAmB;EAC5D,QAAQ,MAAM,WAAW,qBAAqB,YAAY;EAE1D,MAAM,cAAc,OAAO,YACvB,OAAO,QAAQ,0BAA0B,CAAC,CAAC,KAAK,CAAC,MAAM,gBAAgB,CACnE,MACA;GACI,MAAM,EAAE,cAAoC,WAAW,WAAW;GAClE,KAAK,WAAW;GAChB,MAAM,WAAW;EACrB,CACJ,CAAC,CACL;EACA,MAAM,cAAc,QAAQ,YAAY,kBAAkB,EAAE,OAAO,YAAY,CAAC;EAChF,QAAQ,YAAY,SAAS,WAAW;EACxC,MAAM,2BAAW,IAAI,IAAY;EACjC,MAAM,oBAAoB,YAAqC,UAA0B;GACrF,MAAM,MAAM,GAAG,WAAW,KAAK,GAAG,WAAW;GAC7C,IAAI,SAAS,IAAI,GAAG,GAAG;GACvB,SAAS,IAAI,GAAG;GAChB,YAAY,WAAW,KAAK,GACxB;IAAE,SAAS,WAAW;IAAS,GAAI,UAAU,KAAA,IAAY,CAAC,IAAI,EAAE,MAAM;GAAG,GACzE,EAAE,QAAQ,WAAW,UAAU,SAAS,QAAQ,WAAW,UAAU,YAAY,SAAS,QAAQ,CACtG;EACJ;EAEA,MAAM,SAAS,QAAQ,MAAM,gBAAgB;EAC7C,OAAO,IAAI,SACP,kBAAkB;GACd,MAAM;GACN,MAAM;GACN,eAAe,yBAAyB,WAAW;EACvD,CAAC,CACL;EACA,OAAO,IAAI,SACP,kBAAkB;GACd,MAAM;GACN,MAAM;GACN,QAAQ,OAAgB;IACpB,IAAI,MAAM,QAAQ,KAAK,GACnB,MAAM,OAAO,yBAAyB,CAAC,CAAC,SAAS,SAAS,iBAAiB,IAAI,CAAC;GACxF;EACJ,CAAC,CACL;EACA,OAAO,IAAI,SACP,kBAAkB;GACd,MAAM;GACN,MAAM;GACN,QAAQ,OAAgB;IACpB,IAAI,CAAC,uBAAuB,KAAK,GAAG;IACpC,IAAI,CAAC,UAAU,MAAM,SAAS,YAAY,MAAM,SAAS,WAAW;IACpE,MAAM,cACF,MAAM,SAAS,WACT,GAAG,MAAM,QAAQ,yBAAyB,cAAc,WACxD,MAAM;IAChB,cAAmB;KACf,IAAI,kBAAkB,MAAM,KAAK,GAAG,MAAM,UAAU;KACpD,SAAS,cAAc,MAAM;KAC7B,OAAO;KACP;KACA,UAAU;KACV,QAAQ,CAAC,kBAAkB,MAAM,IAAI;KACrC,QAAQ;IACZ,CAAC;IACD,IAAI,MAAM,SAAS,kBACf,iBACI,8BAA8B,gCAAgC,GAC9D,MAAM,OACV;SACG,IAAI,MAAM,SAAS,WACtB,iBAAiB,8BAA8B,2BAA2B,GAAG,MAAM,OAAO;GAElG;EACJ,CAAC,CACL;CACJ;AACJ,CAAC"}
@@ -16,7 +16,7 @@ export declare const FILES_DEVTOOLS_DIAGNOSTICS: {
16
16
  readonly NUXT_FILES_INVALID_CONFIG: {
17
17
  readonly level: 'error';
18
18
  readonly message: 'The Files registry rejected the storage configuration.';
19
- readonly hint: 'Check the storage and devStorage shapes in files.config.ts.';
19
+ readonly hint: 'Check the storage shape in the active files.config.ts environment.';
20
20
  readonly docs: "https://github.com/liria24/nuxt-files-sdk/blob/main/docs/content/4.reference/4.troubleshooting.md";
21
21
  };
22
22
  readonly NUXT_FILES_ADAPTER_INIT_FAILED: {
@@ -10,7 +10,7 @@ const FILES_DEVTOOLS_DIAGNOSTICS = {
10
10
  NUXT_FILES_INVALID_CONFIG: {
11
11
  level: "error",
12
12
  message: "The Files registry rejected the storage configuration.",
13
- hint: "Check the storage and devStorage shapes in files.config.ts.",
13
+ hint: "Check the storage shape in the active files.config.ts environment.",
14
14
  docs: troubleshooting
15
15
  },
16
16
  NUXT_FILES_ADAPTER_INIT_FAILED: {
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostics.js","names":[],"sources":["../../src/devtools/diagnostics.ts"],"sourcesContent":["const troubleshooting =\n 'https://github.com/liria24/nuxt-files-sdk/blob/main/docs/content/4.reference/4.troubleshooting.md'\n\nexport interface FilesDevtoolsDiagnostic {\n code: FilesDevtoolsDiagnosticCode\n level: 'info' | 'warning' | 'error'\n message: string\n hint?: string\n docs?: string\n}\n\nexport const FILES_DEVTOOLS_DIAGNOSTICS = {\n NUXT_FILES_NOT_CONFIGURED: {\n level: 'warning',\n message: 'The Files registry has not been configured.',\n hint: 'Check that files.config.ts is loaded by the Nuxt or Nitro integration.',\n docs: troubleshooting,\n },\n NUXT_FILES_INVALID_CONFIG: {\n level: 'error',\n message: 'The Files registry rejected the storage configuration.',\n hint: 'Check the storage and devStorage shapes in files.config.ts.',\n docs: troubleshooting,\n },\n NUXT_FILES_ADAPTER_INIT_FAILED: {\n level: 'error',\n message: 'A configured storage adapter could not be initialized.',\n hint: 'Check the provider package, runtime support, and required configuration.',\n docs: troubleshooting,\n },\n NUXT_FILES_GATEWAY_FAILED: {\n level: 'error',\n message: 'The Files DevTools gateway could not complete a request.',\n hint: 'Check the Nitro development server and the Files registry diagnostics.',\n docs: troubleshooting,\n },\n} as const satisfies Record<string, Omit<FilesDevtoolsDiagnostic, 'code'>>\n\nexport type FilesDevtoolsDiagnosticCode = keyof typeof FILES_DEVTOOLS_DIAGNOSTICS\n\nexport const createFilesDevtoolsDiagnostic = (\n code: FilesDevtoolsDiagnosticCode,\n message?: string,\n): FilesDevtoolsDiagnostic => ({ code, ...FILES_DEVTOOLS_DIAGNOSTICS[code], ...(message ? { message } : {}) })\n\nexport const isFilesDevtoolsDiagnostic = (value: unknown): value is FilesDevtoolsDiagnostic =>\n Boolean(\n value &&\n typeof value === 'object' &&\n 'code' in value &&\n typeof value.code === 'string' &&\n Object.hasOwn(FILES_DEVTOOLS_DIAGNOSTICS, value.code) &&\n 'level' in value &&\n (value.level === 'info' || value.level === 'warning' || value.level === 'error') &&\n 'message' in value &&\n typeof value.message === 'string',\n )\n\nexport type FilesDevtoolsFailureKind = 'upload' | 'delete' | 'initialization' | 'gateway'\n\nexport interface FilesDevtoolsFailure {\n kind: FilesDevtoolsFailureKind\n message: string\n target?: string\n}\n\nexport const isFilesDevtoolsFailure = (value: unknown): value is FilesDevtoolsFailure =>\n Boolean(\n value &&\n typeof value === 'object' &&\n 'kind' in value &&\n (value.kind === 'upload' ||\n value.kind === 'delete' ||\n value.kind === 'initialization' ||\n value.kind === 'gateway') &&\n 'message' in value &&\n typeof value.message === 'string' &&\n (!('target' in value) || value.target === undefined || typeof value.target === 'string'),\n )\n"],"mappings":";AAAA,MAAM,kBACF;AAUJ,MAAa,6BAA6B;CACtC,2BAA2B;EACvB,OAAO;EACP,SAAS;EACT,MAAM;EACN,MAAM;CACV;CACA,2BAA2B;EACvB,OAAO;EACP,SAAS;EACT,MAAM;EACN,MAAM;CACV;CACA,gCAAgC;EAC5B,OAAO;EACP,SAAS;EACT,MAAM;EACN,MAAM;CACV;CACA,2BAA2B;EACvB,OAAO;EACP,SAAS;EACT,MAAM;EACN,MAAM;CACV;AACJ;AAIA,MAAa,iCACT,MACA,aAC2B;CAAE;CAAM,GAAG,2BAA2B;CAAO,GAAI,UAAU,EAAE,QAAQ,IAAI,CAAC;AAAG;AAE5G,MAAa,6BAA6B,UACtC,QACI,SACA,OAAO,UAAU,YACjB,UAAU,SACV,OAAO,MAAM,SAAS,YACtB,OAAO,OAAO,4BAA4B,MAAM,IAAI,KACpD,WAAW,UACV,MAAM,UAAU,UAAU,MAAM,UAAU,aAAa,MAAM,UAAU,YACxE,aAAa,SACb,OAAO,MAAM,YAAY,QAC7B;AAUJ,MAAa,0BAA0B,UACnC,QACI,SACA,OAAO,UAAU,YACjB,UAAU,UACT,MAAM,SAAS,YACZ,MAAM,SAAS,YACf,MAAM,SAAS,oBACf,MAAM,SAAS,cACnB,aAAa,SACb,OAAO,MAAM,YAAY,aACxB,EAAE,YAAY,UAAU,MAAM,WAAW,KAAA,KAAa,OAAO,MAAM,WAAW,SACnF"}
1
+ {"version":3,"file":"diagnostics.js","names":[],"sources":["../../src/devtools/diagnostics.ts"],"sourcesContent":["const troubleshooting =\n 'https://github.com/liria24/nuxt-files-sdk/blob/main/docs/content/4.reference/4.troubleshooting.md'\n\nexport interface FilesDevtoolsDiagnostic {\n code: FilesDevtoolsDiagnosticCode\n level: 'info' | 'warning' | 'error'\n message: string\n hint?: string\n docs?: string\n}\n\nexport const FILES_DEVTOOLS_DIAGNOSTICS = {\n NUXT_FILES_NOT_CONFIGURED: {\n level: 'warning',\n message: 'The Files registry has not been configured.',\n hint: 'Check that files.config.ts is loaded by the Nuxt or Nitro integration.',\n docs: troubleshooting,\n },\n NUXT_FILES_INVALID_CONFIG: {\n level: 'error',\n message: 'The Files registry rejected the storage configuration.',\n hint: 'Check the storage shape in the active files.config.ts environment.',\n docs: troubleshooting,\n },\n NUXT_FILES_ADAPTER_INIT_FAILED: {\n level: 'error',\n message: 'A configured storage adapter could not be initialized.',\n hint: 'Check the provider package, runtime support, and required configuration.',\n docs: troubleshooting,\n },\n NUXT_FILES_GATEWAY_FAILED: {\n level: 'error',\n message: 'The Files DevTools gateway could not complete a request.',\n hint: 'Check the Nitro development server and the Files registry diagnostics.',\n docs: troubleshooting,\n },\n} as const satisfies Record<string, Omit<FilesDevtoolsDiagnostic, 'code'>>\n\nexport type FilesDevtoolsDiagnosticCode = keyof typeof FILES_DEVTOOLS_DIAGNOSTICS\n\nexport const createFilesDevtoolsDiagnostic = (\n code: FilesDevtoolsDiagnosticCode,\n message?: string,\n): FilesDevtoolsDiagnostic => ({ code, ...FILES_DEVTOOLS_DIAGNOSTICS[code], ...(message ? { message } : {}) })\n\nexport const isFilesDevtoolsDiagnostic = (value: unknown): value is FilesDevtoolsDiagnostic =>\n Boolean(\n value &&\n typeof value === 'object' &&\n 'code' in value &&\n typeof value.code === 'string' &&\n Object.hasOwn(FILES_DEVTOOLS_DIAGNOSTICS, value.code) &&\n 'level' in value &&\n (value.level === 'info' || value.level === 'warning' || value.level === 'error') &&\n 'message' in value &&\n typeof value.message === 'string',\n )\n\nexport type FilesDevtoolsFailureKind = 'upload' | 'delete' | 'initialization' | 'gateway'\n\nexport interface FilesDevtoolsFailure {\n kind: FilesDevtoolsFailureKind\n message: string\n target?: string\n}\n\nexport const isFilesDevtoolsFailure = (value: unknown): value is FilesDevtoolsFailure =>\n Boolean(\n value &&\n typeof value === 'object' &&\n 'kind' in value &&\n (value.kind === 'upload' ||\n value.kind === 'delete' ||\n value.kind === 'initialization' ||\n value.kind === 'gateway') &&\n 'message' in value &&\n typeof value.message === 'string' &&\n (!('target' in value) || value.target === undefined || typeof value.target === 'string'),\n )\n"],"mappings":";AAAA,MAAM,kBACF;AAUJ,MAAa,6BAA6B;CACtC,2BAA2B;EACvB,OAAO;EACP,SAAS;EACT,MAAM;EACN,MAAM;CACV;CACA,2BAA2B;EACvB,OAAO;EACP,SAAS;EACT,MAAM;EACN,MAAM;CACV;CACA,gCAAgC;EAC5B,OAAO;EACP,SAAS;EACT,MAAM;EACN,MAAM;CACV;CACA,2BAA2B;EACvB,OAAO;EACP,SAAS;EACT,MAAM;EACN,MAAM;CACV;AACJ;AAIA,MAAa,iCACT,MACA,aAC2B;CAAE;CAAM,GAAG,2BAA2B;CAAO,GAAI,UAAU,EAAE,QAAQ,IAAI,CAAC;AAAG;AAE5G,MAAa,6BAA6B,UACtC,QACI,SACA,OAAO,UAAU,YACjB,UAAU,SACV,OAAO,MAAM,SAAS,YACtB,OAAO,OAAO,4BAA4B,MAAM,IAAI,KACpD,WAAW,UACV,MAAM,UAAU,UAAU,MAAM,UAAU,aAAa,MAAM,UAAU,YACxE,aAAa,SACb,OAAO,MAAM,YAAY,QAC7B;AAUJ,MAAa,0BAA0B,UACnC,QACI,SACA,OAAO,UAAU,YACjB,UAAU,UACT,MAAM,SAAS,YACZ,MAAM,SAAS,YACf,MAAM,SAAS,oBACf,MAAM,SAAS,cACnB,aAAa,SACb,OAAO,MAAM,YAAY,aACxB,EAAE,YAAY,UAAU,MAAM,WAAW,KAAA,KAAa,OAAO,MAAM,WAAW,SACnF"}
@@ -1,5 +1,5 @@
1
1
  //#region src/devtools/files-read.d.ts
2
- declare const _default: (event: Parameters<import("files-sdk/nitro").NitroRouteHandler>[0]) => Promise<Response>;
2
+ declare const _default: (event: Parameters<import("files-sdk/nitro").NitroRouteHandler>[0], secret: string) => Promise<Response>;
3
3
  //#endregion
4
4
  export { _default as default };
5
5
  //# sourceMappingURL=files-read.d.ts.map
@@ -1,5 +1,5 @@
1
1
  //#region src/devtools/files-write.d.ts
2
- declare const _default: (event: Parameters<import("files-sdk/nitro").NitroRouteHandler>[0]) => Promise<Response>;
2
+ declare const _default: (event: Parameters<import("files-sdk/nitro").NitroRouteHandler>[0], secret: string) => Promise<Response>;
3
3
  //#endregion
4
4
  export { _default as default };
5
5
  //# sourceMappingURL=files-write.d.ts.map