@devframes/plugin-inspect--assets 0.9.10 → 0.9.12
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.
|
@@ -5,4 +5,4 @@ var e=Object.defineProperty,t=(t,n)=>{let r={};for(var i in t)e(r,i,{get:t[i],en
|
|
|
5
5
|
`)].join(`
|
|
6
6
|
`))}return()=>i.value||r.value||o.value?Ys(t.default({present:o.value})[0],{ref:e=>{let t=vp(e);return t?.hasAttribute===void 0||(t?.hasAttribute(`data-reka-popper-content-wrapper`)?a.value=t.firstElementChild:a.value=t),t}}):null}}),Fp=z({name:`PrimitiveSlot`,inheritAttrs:!1,setup(e,{attrs:t,slots:n}){return()=>{if(!n.default)return null;let e=wp(n.default()),r=e.findIndex(e=>e.type!==U);if(r===-1)return e;let i=e[r];delete i.props?.ref;let a=i.props?Cs(t,i.props):t,o=vs({...i,props:{}},a);return e.length===1?o:(e[r]=o,e)}}}),Ip=[`area`,`img`,`input`],Lp=z({name:`Primitive`,inheritAttrs:!1,props:{asChild:{type:Boolean,default:!1},as:{type:[String,Object],default:`div`}},setup(e,{attrs:t,slots:n}){let r=e.asChild?`template`:e.as;return typeof r==`string`&&Ip.includes(r)?()=>Ys(r,t):r===`template`?()=>Ys(Fp,t,{default:n.default}):()=>Ys(e.as,t,{default:n.default})}});function Rp(){let e=I();return{primitiveElement:e,currentElement:Z(()=>[`#text`,`#comment`].includes(e.value?.$el.nodeName)?e.value?.$el.nextElementSibling:vp(e))}}var zp=`data-reka-collection-item`;function Bp(e={}){let{key:t=``,isProvider:n=!1}=e,r=`${t}CollectionProvider`,i;n?(i={collectionRef:I(),itemMap:I(new Map)},hr(r,i)):i=gr(r);let a=(e=!1)=>{let t=i.collectionRef.value;if(!t)return[];let n=Array.from(t.querySelectorAll(`[${zp}]`)),r=new Map(n.map((e,t)=>[e,t])),a=Array.from(i.itemMap.value.values()).sort((e,t)=>(r.get(e.ref)??-1)-(r.get(t.ref)??-1));return e?a:a.filter(e=>e.ref.dataset.disabled!==``)},o=z({name:`CollectionSlot`,inheritAttrs:!1,setup(e,{slots:t,attrs:n}){let{primitiveElement:r,currentElement:a}=Rp();return Cr(a,()=>{i.collectionRef.value=a.value}),()=>Ys(Fp,{ref:r,...n},t)}}),s=z({name:`CollectionItem`,inheritAttrs:!1,props:{value:{validator:()=>!0}},setup(e,{slots:t,attrs:n}){let{primitiveElement:r,currentElement:a}=Rp();return br(t=>{if(a.value){let n=rn(a.value);i.itemMap.value.set(n,{ref:a.value,value:e.value}),t(()=>i.itemMap.value.delete(n))}}),()=>Ys(Fp,{...n,[zp]:``,ref:r},t)}});return{getItems:a,reactiveItems:Z(()=>Array.from(i.itemMap.value.values())),itemMapSize:Z(()=>i.itemMap.value.size),CollectionSlot:o,CollectionItem:s}}var Vp=`rovingFocusGroup.onEntryFocus`,Hp={bubbles:!1,cancelable:!0},Up={ArrowLeft:`prev`,ArrowUp:`prev`,ArrowRight:`next`,ArrowDown:`next`,PageUp:`first`,Home:`first`,PageDown:`last`,End:`last`};function Wp(e,t){return t===`rtl`?e===`ArrowLeft`?`ArrowRight`:e===`ArrowRight`?`ArrowLeft`:e:e}function Gp(e,t,n){let r=Wp(e.key,n);if(!(t===`vertical`&&[`ArrowLeft`,`ArrowRight`].includes(r))&&!(t===`horizontal`&&[`ArrowUp`,`ArrowDown`].includes(r)))return Up[r]}function Kp(e,t=!1){let n=pp();for(let r of e)if(r===n||(r.focus({preventScroll:t}),pp()!==n))return}function qp(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var[Jp,Yp]=fp(`RovingFocusGroup`),Xp=z({__name:`RovingFocusGroup`,props:{orientation:{type:String,required:!1,default:void 0},dir:{type:String,required:!1},loop:{type:Boolean,required:!1,default:!1},currentTabStopId:{type:[String,null],required:!1},defaultCurrentTabStopId:{type:String,required:!1},preventScrollOnEntryFocus:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`entryFocus`,`update:currentTabStopId`],setup(e,{expose:t,emit:n}){let r=e,i=n,{loop:a,orientation:o,dir:s}=gn(r),c=Dp(s),l=Cp(r,`currentTabStopId`,i,{defaultValue:r.defaultCurrentTabStopId,passive:r.currentTabStopId===void 0}),u=I(!1),d=I(!1),f=I(0),{getItems:p,CollectionSlot:m}=Bp({isProvider:!0});function h(e){let t=!d.value;if(e.currentTarget&&e.target===e.currentTarget&&t&&!u.value){let t=new CustomEvent(Vp,Hp);if(e.currentTarget.dispatchEvent(t),i(`entryFocus`,t),!t.defaultPrevented){let e=p().map(e=>e.ref).filter(e=>e.dataset.disabled!==``);Kp([e.find(e=>e.getAttribute(`data-active`)===``),e.find(e=>e.getAttribute(`data-highlighted`)===``),e.find(e=>e.id===l.value),...e].filter(Boolean),r.preventScrollOnEntryFocus)}}d.value=!1}function g(){setTimeout(()=>{d.value=!1},1)}return t({getItems:p}),Yp({loop:a,dir:c,orientation:o,currentTabStopId:l,onItemFocus:e=>{l.value=e},onItemShiftTab:()=>{u.value=!0},onFocusableItemAdd:()=>{f.value++},onFocusableItemRemove:()=>{f.value--}}),(e,t)=>(W(),K(L(m),null,{default:R(()=>[J(L(Lp),{tabindex:u.value||f.value===0?-1:0,"data-orientation":L(o),as:e.as,"as-child":e.asChild,dir:L(c),style:{outline:`none`},onMousedown:t[0]||=e=>d.value=!0,onMouseup:g,onFocus:h,onBlur:t[1]||=e=>u.value=!1},{default:R(()=>[B(e.$slots,`default`)]),_:3},8,[`tabindex`,`data-orientation`,`as`,`as-child`,`dir`])]),_:3}))}}),Zp=z({__name:`RovingFocusItem`,props:{tabStopId:{type:String,required:!1},focusable:{type:Boolean,required:!1,default:!0},active:{type:Boolean,required:!1},allowShiftKey:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(e){let t=e,n=Jp(),r=Ap(),i=Z(()=>t.tabStopId||r),a=Z(()=>n.currentTabStopId.value===i.value),{getItems:o,CollectionItem:s}=Bp();Ji(()=>{t.focusable&&n.onFocusableItemAdd()}),Qi(()=>{t.focusable&&n.onFocusableItemRemove()}),Cr(()=>t.focusable,(e,t)=>{e!==t&&(e?n.onFocusableItemAdd():n.onFocusableItemRemove())});function c(e){if(e.key===`Tab`&&e.shiftKey){n.onItemShiftTab();return}if(e.target!==e.currentTarget)return;let r=Gp(e,n.orientation.value,n.dir.value);if(r!==void 0){if(e.metaKey||e.ctrlKey||e.altKey||!t.allowShiftKey&&e.shiftKey)return;e.preventDefault();let i=[...o().map(e=>e.ref).filter(e=>e.dataset.disabled!==``)];if(r===`last`)i.reverse();else if(r===`prev`||r===`next`){r===`prev`&&i.reverse();let t=i.indexOf(e.currentTarget);i=n.loop.value?qp(i,t+1):i.slice(t+1)}Yn(()=>Kp(i))}}return(e,t)=>(W(),K(L(s),null,{default:R(()=>[J(L(Lp),{tabindex:a.value?0:-1,"data-orientation":L(n).orientation.value,"data-active":e.active?``:void 0,"data-disabled":e.focusable?void 0:``,as:e.as,"as-child":e.asChild,onMousedown:t[0]||=t=>{e.focusable?L(n).onItemFocus(i.value):t.preventDefault()},onFocus:t[1]||=e=>L(n).onItemFocus(i.value),onKeydown:c},{default:R(()=>[B(e.$slots,`default`)]),_:3},8,[`tabindex`,`data-orientation`,`data-active`,`data-disabled`,`as`,`as-child`])]),_:3}))}}),[Qp,$p]=fp(`TabsRoot`),em=z({__name:`TabsRoot`,props:{defaultValue:{type:null,required:!1},orientation:{type:String,required:!1,default:`horizontal`},dir:{type:String,required:!1},activationMode:{type:String,required:!1,default:`automatic`},modelValue:{type:null,required:!1},unmountOnHide:{type:Boolean,required:!1,default:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`update:modelValue`],setup(e,{emit:t}){let n=e,r=t,{orientation:i,unmountOnHide:a,dir:o}=gn(n),s=Dp(o);Op();let c=Cp(n,`modelValue`,r,{defaultValue:n.defaultValue,passive:n.modelValue===void 0}),l=I(),u=sn(new Set);return $p({modelValue:c,changeModelValue:e=>{c.value=e},orientation:i,dir:s,unmountOnHide:a,activationMode:n.activationMode,baseId:Ap(void 0,`reka-tabs`),tabsList:l,contentIds:u,registerContent:e=>{u.value=new Set([...u.value,e])},unregisterContent:e=>{let t=new Set(u.value);t.delete(e),u.value=t}}),(e,t)=>(W(),K(L(Lp),{dir:L(s),"data-orientation":L(i),"as-child":e.asChild,as:e.as},{default:R(()=>[B(e.$slots,`default`,{modelValue:L(c)})]),_:3},8,[`dir`,`data-orientation`,`as-child`,`as`]))}});function tm(e,t){return`${e}-trigger-${t}`}function nm(e,t){return`${e}-content-${t}`}var rm=z({__name:`TabsContent`,props:{value:{type:[String,Number],required:!0},forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e,{forwardRef:n}=Op(),r=Qp(),i=Z(()=>tm(r.baseId,t.value)),a=Z(()=>nm(r.baseId,t.value)),o=Z(()=>t.value===r.modelValue.value),s=I(o.value);return Ji(()=>{r.registerContent(t.value),requestAnimationFrame(()=>{s.value=!1})}),Zi(()=>{r.unregisterContent(t.value)}),(e,t)=>(W(),K(L(Pp),{present:e.forceMount||o.value,"force-mount":``},{default:R(({present:t})=>[J(L(Lp),{id:a.value,ref:L(n),"as-child":e.asChild,as:e.as,role:`tabpanel`,"data-state":o.value?`active`:`inactive`,"data-orientation":L(r).orientation.value,"aria-labelledby":i.value,hidden:!t,tabindex:`0`,style:k({animationDuration:s.value?`0s`:void 0})},{default:R(()=>[!L(r).unmountOnHide.value||t?B(e.$slots,`default`,{key:0}):X(`v-if`,!0)]),_:2},1032,[`id`,`as-child`,`as`,`data-state`,`data-orientation`,`aria-labelledby`,`hidden`,`style`])]),_:3},8,[`present`]))}}),im=z({__name:`TabsIndicator`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e,{expose:t}){let n=e,r=Qp();t({updateIndicatorStyle:s}),Op();let i=yp(),a=I({size:null,thickness:null,position:null}),o=I([]);Cr(()=>[r.modelValue.value,r?.dir.value],()=>{s()},{immediate:!0,flush:`post`}),xr(()=>{o.value=Array.from(r.tabsList.value?.querySelectorAll(`[role="tab"]`)||[])}),Sp(Z(()=>[r.tabsList.value,...o.value]),s);function s(){let e=r.tabsList.value?.querySelector(`[role="tab"][data-state="active"]`);e&&(r.orientation.value===`horizontal`?a.value={size:e.offsetWidth,thickness:e.offsetHeight,position:e.offsetLeft}:a.value={size:e.offsetHeight,thickness:e.offsetWidth,position:e.offsetTop})}return(e,t)=>L(i)&&typeof a.value.size==`number`?(W(),K(L(Lp),Cs({key:0},n,{style:{"--reka-tabs-indicator-size":`${a.value.size}px`,"--reka-tabs-indicator-thickness":`${a.value.thickness}px`,"--reka-tabs-indicator-position":`${a.value.position}px`}}),{default:R(()=>[B(e.$slots,`default`)]),_:3},16,[`style`])):X(`v-if`,!0)}}),am=z({__name:`TabsList`,props:{loop:{type:Boolean,required:!1,default:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let{loop:t}=gn(e),{forwardRef:n,currentElement:r}=Op(),i=Qp();return i.tabsList=r,(e,r)=>(W(),K(L(Xp),{"as-child":``,orientation:L(i).orientation.value,dir:L(i).dir.value,loop:L(t)},{default:R(()=>[J(L(Lp),{ref:L(n),role:`tablist`,"as-child":e.asChild,as:e.as,"aria-orientation":L(i).orientation.value},{default:R(()=>[B(e.$slots,`default`)]),_:3},8,[`as-child`,`as`,`aria-orientation`])]),_:3},8,[`orientation`,`dir`,`loop`]))}}),om=z({__name:`TabsTrigger`,props:{value:{type:[String,Number],required:!0},disabled:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e,{forwardRef:n}=Op(),r=Qp(),i=Z(()=>tm(r.baseId,t.value)),a=Z(()=>r.contentIds.value.has(t.value)?nm(r.baseId,t.value):void 0),o=Z(()=>t.value===r.modelValue.value);return(e,t)=>(W(),K(L(Zp),{"as-child":``,focusable:!e.disabled,active:o.value},{default:R(()=>[J(L(Lp),{id:i.value,ref:L(n),role:`tab`,type:e.as===`button`?`button`:void 0,as:e.as,"as-child":e.asChild,"aria-selected":o.value?`true`:`false`,"aria-controls":a.value,"data-state":o.value?`active`:`inactive`,disabled:e.disabled,"data-disabled":e.disabled?``:void 0,"data-orientation":L(r).orientation.value,onMousedown:t[0]||=eu(t=>{!e.disabled&&t.ctrlKey===!1?L(r).changeModelValue(e.value):t.preventDefault()},[`left`]),onKeydown:t[1]||=nu(t=>L(r).changeModelValue(e.value),[`enter`,`space`]),onFocus:t[2]||=()=>{let t=L(r).activationMode!==`manual`;!o.value&&!e.disabled&&t&&L(r).changeModelValue(e.value)}},{default:R(()=>[B(e.$slots,`default`)]),_:3},8,[`id`,`type`,`as`,`as-child`,`aria-selected`,`aria-controls`,`data-state`,`disabled`,`data-disabled`,`data-orientation`])]),_:3},8,[`focusable`,`active`]))}}),sm={key:1,class:`text-micro font-mono px-1.5 rounded-full bg-active inline-flex h-5 min-w-5 items-center justify-center tabular-nums`},cm=z({__name:`LayoutTabs`,props:Ma({tabs:{},variant:{default:`underline`},lazy:{type:Boolean,default:!0}},{modelValue:{},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let t=eo(e,`modelValue`);return(n,r)=>(W(),K(L(em),{modelValue:t.value,"onUpdate:modelValue":r[0]||=e=>t.value=e,class:A(e.variant===`segment`?``:`border-b border-base`)},{default:R(()=>[J(L(am),{class:A([`flex items-center relative`,e.variant===`segment`?`gap-1 p-1 rounded-lg bg-sunken w-max`:`gap-1`])},{default:R(()=>[(W(!0),G(H,null,da(e.tabs,t=>(W(),K(L(om),{key:t.value,value:t.value,as:t.href?`a`:`button`,href:t.href,disabled:t.disabled,class:A([`text-sm color-muted outline-none flex gap-1.5 transition items-center relative disabled:op50 focus-visible:ring-2 focus-visible:ring-primary-500/40`,e.variant===`segment`?`px-3 py-1 rounded-md data-[state=active]:bg-raised data-[state=active]:color-base data-[state=active]:shadow-sm`:`px-3 py-2 -mb-px border-b-2 border-transparent hover:color-base data-[state=active]:color-active data-[state=active]:border-primary-500 dark:data-[state=active]:border-primary-400`])},{default:R(()=>[t.icon?(W(),G(`span`,{key:0,class:A(t.icon),"aria-hidden":`true`},null,2)):X(``,!0),Y(` `+j(t.label??t.value)+` `,1),t.count==null?X(``,!0):(W(),G(`span`,sm,j(t.count),1))]),_:2},1032,[`value`,`as`,`href`,`disabled`,`class`]))),128)),e.variant===`underline`?(W(),K(L(im),{key:0,class:`rounded-full bg-primary-500 h-0.5 w-[--reka-tabs-indicator-size] translate-x-[--reka-tabs-indicator-position] transition-all duration-200 bottom-0 left-0 absolute`})):X(``,!0)]),_:1},8,[`class`]),B(n.$slots,`default`),(W(!0),G(H,null,da(e.tabs,t=>(W(),G(H,{key:`panel-${t.value}`},[n.$slots[t.value]?(W(),K(L(rm),{key:0,value:t.value,"force-mount":!e.lazy||void 0,class:`py-3 outline-none focus-visible:ring-2 focus-visible:ring-primary-500/40`},{default:R(()=>[B(n.$slots,t.value)]),_:2},1032,[`value`,`force-mount`])):X(``,!0)],64))),128))]),_:3},8,[`modelValue`,`class`]))}}),lm={key:0,class:`flex-1 min-w-0`},um={key:1,class:`flex gap-1 items-center`},dm=z({__name:`LayoutToolbar`,props:{sticky:{type:Boolean,default:!0},glass:{type:Boolean,default:!0}},setup(e){return(t,n)=>(W(),G(`div`,{class:A([`px-3 py-2 border-b border-base flex gap-3 items-center`,[e.sticky?`sticky top-0 z-nav`:``,e.glass?`bg-glass`:`bg-base`]])},[B(t.$slots,`start`,{},()=>[B(t.$slots,`default`)]),t.$slots.search?(W(),G(`div`,lm,[B(t.$slots,`search`)])):X(``,!0),t.$slots.end?(W(),G(`div`,um,[B(t.$slots,`end`)])):X(``,!0)],2))}});function fm(...e){return e.filter(Boolean).join(` `)}function pm({variant:e=`primary`,size:t=`md`,class:n}={}){let r={primary:`btn-primary`,secondary:`btn-action`,outline:`btn-action`,ghost:`inline-flex items-center justify-center gap-1.5 rounded px2 py1 op75 hover:op100 hover:bg-active transition disabled:pointer-events-none disabled:op30!`,destructive:`btn-action text-error border-error/30!`,link:`inline-flex items-center gap-1.5 color-active hover:underline underline-offset-2`},i=t===`sm`?e===`primary`?`text-sm px-2.5! py-1!`:`text-sm`:t===`lg`?`text-base px-4! py-2!`:``;return fm(r[e],i,n)}var mm={connecting:{label:`connecting…`,dot:`bg-neutral-400 animate-pulse`},disconnected:{label:`disconnected`,dot:`bg-error`},unauthorized:{label:`unauthorized`,dot:`bg-warning`},error:{label:`error`,dot:`bg-error`}};function hm(e,t){if(e===`connected`)return null;let n=mm[e];return{label:n.label,dot:fm(`inline-block size-1.5 rounded-full shrink-0`,n.dot),class:fm(`flex items-center gap-1.5 shrink-0 text-xs color-muted select-none`,t)}}var gm={connecting:{icon:`i-ph-plugs-connected-duotone`,title:`Connecting…`,body:`Establishing a connection to the devframe server.`,reloadable:!1,spin:!0},disconnected:{icon:`i-ph-plugs-duotone`,title:`Disconnected`,body:`Lost the connection to the devframe server. Reload once it is back up.`,reloadable:!0,spin:!1},unauthorized:{icon:`i-ph-lock-key-duotone`,title:`Not authorized`,body:`This client isn’t authorized. Reopen the link printed by your dev server, then reload.`,reloadable:!0,spin:!1},error:{icon:`i-ph-warning-octagon-duotone`,title:`Connection failed`,body:`Could not reach the devframe server.`,reloadable:!0,spin:!1}};function _m(e){return e===`connected`?null:gm[e]}function vm(e){return fm(`flex flex-col items-center justify-center gap-4 bg-base p-8 text-center`,e)}function ym(e=!1,t){return fm(`text-4xl color-active`,e&&`animate-pulse`,t)}function bm(e){return fm(`text-lg font-medium color-base`,e)}function xm(e){return fm(`max-w-sm text-sm color-muted`,e)}function Sm(e){return fm(`mt-1 max-w-sm break-words font-mono text-xs color-faint`,e)}var Cm=sn(null),wm=I(!1);function Tm(e){Cm.value=e,Pe(()=>{Cm.value===e&&(Cm.value=null)})}function Em(){async function e(){if(!(!Cm.value||wm.value)){wm.value=!0;try{await Cm.value()}finally{wm.value=!1}}}return{refresh:e,loading:wm}}var $={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`}},Dm=`__connection.json`,Om=`__DEVFRAME_CONNECTION__`,km=`x-birpc-session`,Am=`__rpc-dump/index.json`,jm=`devframe:services`,Mm=`devframe_otp`,Nm=`devframe_auth_token`;$.postMessage.remoteAssetsError;function Pm(e){return dp(e)}var Fm=class{cacheMap=new Map;options;keySerializer;constructor(e){this.options=e,this.keySerializer=e.keySerializer||(e=>Pm(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()}};function Im(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}`})}var Lm={blue:Im(34,39),cyan:Im(36,39),gray:Im(90,39),green:Im(32,39),red:Im(31,39),yellow:Im(33,39),bold:Im(1,22),dim:Im(2,22),reset:Im(0,0),underline:Im(4,24)};function Rm(e,...t){return typeof e==`function`?e(...t):e}var zm=Error.captureStackTrace,Bm=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,zm?.(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 Vm(e,t){return typeof e==`string`?`${e}/${t.toLowerCase()}`:e?.(t)}function Hm(e){let t=e.reporters??[],n={},{docsBase:r}=e;for(let i of Object.keys(e.codes)){let a=e.codes[i],o=a.docs===!1?void 0:a.docs||Vm(r,i),s=(e={},n={})=>{let r=new Bm({code:i,why:Rm(a.why,e),fix:Rm(a.fix,e),docs:o,cause:e.cause,sources:e.sources},s);for(let e of t)e(r,n);return r};n[i]=s}return n}function Um(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(`
|
|
7
7
|
`)}}var Wm=Um(Lm);function Gm(e,{method:t=`warn`}={}){console[t](Wm(e))}function Km(e){return Hm({...e,reporters:[Gm,...e.reporters??[]]})}var qm=Km({docsBase:`https://devfra.me/errors`,codes:{DF0019:{why:e=>`RPC function "${e.name}" has \`agent\` set but \`jsonSerializable\` is not \`true\`; MCP requires JSON-serializable data.`,fix:"Set `jsonSerializable: true` if the payload is JSON-safe, 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."}}});async function Jm(e,t){let n=e[`~standard`].validate(t);return n instanceof Promise?await n:n}function Ym(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 Xm(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 Jm(i,n[r]);if(a.issues)throw qm.DF0043({name:e,index:r,issues:Ym(a.issues)})}return r}async function Zm(e,t,n){if(!t)return n;let r=await Jm(t,n);if(r.issues)throw qm.DF0044({name:e,issues:Ym(r.issues)});return n}async function Qm(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 $m(e,t){let n=e.handler;if(!n){let r=await Qm(e,t);if(!r.handler)throw qm.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 Xm(e.name,r,t),o=await a(...n);return await Zm(e.name,i,o)}}var eh=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 $m(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 qm.DF0021({name:e.name});th(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 qm.DF0022({name:e.name});th(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 $m(this.definitions.get(e),this.context)}getSchema(e){let t=this.definitions.get(e);if(!t)throw qm.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 th(e){if(e.agent&&e.jsonSerializable!==!0)throw qm.DF0019({name:e.name})}function nh(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 ih(t,`undefined`,r,e);return n}return i!==null&&rh(i,r,e,t),n})}function rh(e,t,n,r){if(typeof e==`bigint`)throw ih(r,`BigInt`,t,n);if(typeof e!=`object`)return;if(e instanceof Map)throw ih(r,`Map`,t,n);if(e instanceof Set)throw ih(r,`Set`,t,n);if(e instanceof Date)throw ih(r,`Date`,t,n);if(Array.isArray(e))return;let i=Object.getPrototypeOf(e);if(i!==null&&i!==Object.prototype)throw ih(r,e.constructor?.name??`class instance`,t,n)}function ih(e,t,n,r){let i=ah(n,r);return qm.DF0020({name:e||`<anonymous>`,type:t,path:i})}function ah(e,t){return Array.isArray(e)?`[${t}]`:t===``?`<root>`:t}function oh(){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}}String.fromCharCode;var sh=/^[\s\w\0+.-]{2,}:([/\\]{1,2})/,ch=/^[\s\w\0+.-]{2,}:([/\\]{2})?/,lh=/^([/\\]\s*){2,}[^/\\]/,uh=/\/$|\/\?|\/#/,dh=/^\.?\//;function fh(e,t={}){return typeof t==`boolean`&&(t={acceptRelative:t}),t.strict?sh.test(e):ch.test(e)||(t.acceptRelative?lh.test(e):!1)}function ph(e=``,t){return t?uh.test(e):e.endsWith(`/`)}function mh(e=``,t){if(!t)return(ph(e)?e.slice(0,-1):e)||`/`;if(!ph(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 hh(e=``,t){if(!t)return e.endsWith(`/`)?e:e+`/`;if(ph(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 gh(e,t){if(_h(t)||fh(e))return e;let n=mh(t);if(e.startsWith(n)){let t=e[n.length];if(!t||t===`/`||t===`?`)return e}return yh(n,e)}function _h(e){return!e||e===`/`}function vh(e){return e&&e!==`/`}function yh(e,...t){let n=e||``;for(let e of t.filter(e=>vh(e)))if(n){let t=e.replace(dh,``);n=hh(n)+t}else n=e;return n}function bh(e,t){let n=e.match(ch);return n||=e.match(/^\/{2,}/),n?t+e.slice(n[0].length):t+e}var xh=`__DEVFRAME_CONNECTION_META__`,Sh=`__DEVFRAME_CONNECTION_AUTH_TOKEN__`;function Ch(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 wh(){return Ch(Om)}function Th(){return Ch(xh)}function Eh(e){if(e)return e;try{let e=localStorage.getItem(Sh);if(e)return e}catch{}return Ch(Sh)}function Dh(e){globalThis[Om]=e,globalThis[xh]={...e.connectionMeta,baseUrl:e.metaBaseUrl},e.authToken&&Oh(e.authToken)}function Oh(e){try{localStorage.setItem(Sh,e)}catch{}globalThis[Sh]=e;let t=wh();t&&(globalThis[Om]={...t,authToken:e})}function kh(e){let t=gh(Dm,e);try{return new URL(t,globalThis.location?.href).href}catch{return t}}function Ah(e,t){return t&&t!==e.authToken?{...e,authToken:t}:e}function jh(){let e=wh();if(e)return Ah(e,Eh()??e.authToken??e.connectionMeta.authToken);let t=Th();if(t)return{connectionMeta:t,metaBaseUrl:t.baseUrl??kh(`./`),authToken:Eh(t.authToken)}}async function Mh(e={}){if(e.connection){let t=Ah(e.connection,Eh(e.authToken??e.connection.authToken??e.connection.connectionMeta.authToken));return Dh(t),t}let t=Array.isArray(e.baseURL)?e.baseURL:[e.baseURL??`./`];if(e.connectionMeta){let n={connectionMeta:e.connectionMeta,metaBaseUrl:kh(t[0]??`./`),authToken:Eh(e.authToken??e.connectionMeta.authToken)};return Dh(n),n}let n=jh();if(n){let t=Ah(n,Eh(e.authToken??n.authToken??n.connectionMeta.authToken));return Dh(t),t}let r=[];for(let n of t){let t=gh(Dm,n),i=kh(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:Eh(e.authToken??r.authToken)};return Dh(o),o}catch(e){r.push(e)}}throw Error(`Failed to get connection meta from ${t.join(`, `)}`,{cause:r})}var Nh=class extends Error{name=`DevframeConnectionError`;kind;constructor(e,t,n){super(t,n),this.kind=e}};function Ph(e=Mm){try{let t=globalThis.location?.hash?.replace(/^#/,``)??``;return new URLSearchParams(t).get(e)||void 0}catch{return}}function Fh(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 Ih(e=Mm){let t=Ph(e);return t&&Fh(e),t}async function Lh(e,t={}){let n=Ih(t.param??`devframe_otp`);return n?e.isTrusted?!0:e.requestTrustWithCode(n):!1}function Rh(e){let t={},n=new WeakMap,r,i=()=>(r??=e.sharedState.get(jm,{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}}}var zh=Symbol.for(`immer-nothing`),Bh=Symbol.for(`immer-draftable`),Vh=Symbol.for(`immer-state`);function Hh(e,...t){throw Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var Uh=Object,Wh=Uh.getPrototypeOf,Gh=`constructor`,Kh=`prototype`,qh=`configurable`,Jh=`enumerable`,Yh=`writable`,Xh=`value`,Zh=e=>!!e&&!!e[Vh];function Qh(e){return e?tg(e)||cg(e)||!!e[Bh]||!!e[Gh]?.[Bh]||lg(e)||ug(e):!1}var $h=Uh[Kh][Gh].toString(),eg=new WeakMap;function tg(e){if(!e||!dg(e))return!1;let t=Wh(e);if(t===null||t===Uh[Kh])return!0;let n=Uh.hasOwnProperty.call(t,Gh)&&t[Gh];if(n===Object)return!0;if(!fg(n))return!1;let r=eg.get(n);return r===void 0&&(r=Function.toString.call(n),eg.set(n,r)),r===$h}function ng(e,t,n=!0){rg(e)===0?(n?Reflect.ownKeys(e):Uh.keys(e)).forEach(n=>{t(n,e[n],e)}):e.forEach((n,r)=>t(r,n,e))}function rg(e){let t=e[Vh];return t?t.type_:cg(e)?1:lg(e)?2:ug(e)?3:0}var ig=(e,t,n=rg(e))=>n===2?e.has(t):Uh[Kh].hasOwnProperty.call(e,t),ag=(e,t,n=rg(e))=>n===2?e.get(t):e[t],og=(e,t,n,r=rg(e))=>{r===2?e.set(t,n):r===3?e.add(n):e[t]=n};function sg(e,t){return e===t?e!==0||1/e==1/t:e!==e&&t!==t}var cg=Array.isArray,lg=e=>e instanceof Map,ug=e=>e instanceof Set,dg=e=>typeof e==`object`,fg=e=>typeof e==`function`,pg=e=>typeof e==`boolean`;function mg(e){let t=+e;return Number.isInteger(t)&&String(t)===e}var hg=e=>dg(e)?e?.[Vh]:null,gg=e=>e.copy_||e.base_,_g=e=>e.modified_?e.copy_:e.base_;function vg(e,t){if(lg(e))return new Map(e);if(ug(e))return new Set(e);if(cg(e))return Array[Kh].slice.call(e);let n=tg(e);if(t===!0||t===`class_only`&&!n){let t=Uh.getOwnPropertyDescriptors(e);delete t[Vh];let n=Reflect.ownKeys(t);for(let r=0;r<n.length;r++){let i=n[r],a=t[i];a[Yh]===!1&&(a[Yh]=!0,a[qh]=!0),(a.get||a.set)&&(t[i]={[qh]:!0,[Yh]:!0,[Jh]:a[Jh],[Xh]:e[i]})}return Uh.create(Wh(e),t)}{let t=Wh(e);if(t!==null&&n)return{...e};let r=Uh.create(t);return Uh.assign(r,e)}}function yg(e,t=!1){return Sg(e)||Zh(e)||!Qh(e)?e:(rg(e)>1&&Uh.defineProperties(e,{set:xg,add:xg,clear:xg,delete:xg}),Uh.freeze(e),t&&ng(e,(e,t)=>{yg(t,!0)},!1),e)}function bg(){Hh(2)}var xg={[Xh]:bg};function Sg(e){return e===null||!dg(e)||Uh.isFrozen(e)}var Cg=`MapSet`,wg=`Patches`,Tg=`ArrayMethods`,Eg={};function Dg(e){let t=Eg[e];return t||Hh(0,e),t}var Og=e=>!!Eg[e];function kg(e,t){Eg[e]||(Eg[e]=t)}var Ag,jg=()=>Ag,Mg=(e,t)=>({drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:new Set,processedForPatches_:new Set,mapSetPlugin_:Og(Cg)?Dg(Cg):void 0,arrayMethodsPlugin_:Og(Tg)?Dg(Tg):void 0});function Ng(e,t){t&&(e.patchPlugin_=Dg(wg),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function Pg(e){Fg(e),e.drafts_.forEach(Lg),e.drafts_=null}function Fg(e){e===Ag&&(Ag=e.parent_)}var Ig=e=>Ag=Mg(Ag,e);function Lg(e){let t=e[Vh];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function Rg(e,t){t.unfinalizedDrafts_=t.drafts_.length;let n=t.drafts_[0];if(e!==void 0&&e!==n){n[Vh].modified_&&(Pg(t),Hh(4)),Qh(e)&&(e=zg(t,e));let{patchPlugin_:r}=t;r&&r.generateReplacementPatches_(n[Vh].base_,e,t)}else e=zg(t,n);return Bg(t,e,!0),Pg(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e===zh?void 0:e}function zg(e,t){if(Sg(t))return t;let n=t[Vh];if(!n)return Jg(t,e.handledSet_,e);if(!Hg(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);Kg(n,e)}return n.copy_}function Bg(e,t,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&yg(t,n)}function Vg(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var Hg=(e,t)=>e.scope_===t,Ug=[];function Wg(e,t,n,r){let i=gg(e),a=e.type_;if(r!==void 0&&ag(i,r,a)===t){og(i,r,n,a);return}if(!e.draftLocations_){let t=e.draftLocations_=new Map;ng(i,(e,n)=>{if(Zh(n)){let r=t.get(n)||[];r.push(e),t.set(n,r)}})}let o=e.draftLocations_.get(t)??Ug;for(let e of o)og(i,e,n,a)}function Gg(e,t,n){e.callbacks_.push(function(r){let i=t;if(!i||!Hg(i,r))return;r.mapSetPlugin_?.fixSetContents(i);let a=_g(i);Wg(e,i.draft_??i,a,n),Kg(i,r)})}function Kg(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)}Vg(e)}}function qg(e,t,n){let{scope_:r}=e;if(Zh(n)){let i=n[Vh];Hg(i,r)&&i.callbacks_.push(function(){r_(e),Wg(e,n,_g(i),t)})}else Qh(n)&&e.callbacks_.push(function(){let i=gg(e);e.type_===3?i.has(n)&&Jg(n,r.handledSet_,r):ag(i,t,e.type_)===n&&r.drafts_.length>1&&(e.assigned_.get(t)??!1)===!0&&e.copy_&&Jg(ag(e.copy_,t,e.type_),r.handledSet_,r)})}function Jg(e,t,n){return!n.immer_.autoFreeze_&&n.unfinalizedDrafts_<1||Zh(e)||t.has(e)||!Qh(e)||Sg(e)?e:(t.add(e),ng(e,(r,i)=>{if(Zh(i)){let t=i[Vh];Hg(t,n)&&(og(e,r,_g(t),e.type_),Vg(t))}else Qh(i)&&Jg(i,t,n)}),e)}function Yg(e,t){let n=cg(e),r={type_:+!!n,scope_:t?t.scope_:jg(),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=Xg;n&&(i=[r],a=Zg);let{revoke:o,proxy:s}=Proxy.revocable(i,a);return r.draft_=s,r.revoke_=o,[s,r]}var Xg={get(e,t){if(t===Vh)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=gg(e);if(!ig(i,t,e.type_))return e_(e,i,t);let a=i[t];if(e.finalized_||!Qh(a)||r&&e.operationMethod&&n?.isMutatingArrayMethod(e.operationMethod)&&mg(t))return a;if(a===Qg(e.base_,t)||$g(e,t,a)){r_(e);let n=e.type_===1?+t:t,r=a_(e.scope_,a,e,n);return e.copy_[n]=r}return a},has(e,t){return t in gg(e)},ownKeys(e){return Reflect.ownKeys(gg(e))},set(e,t,n){let r=t_(gg(e),t);if(r?.set)return r.set.call(e.draft_,n),!0;if(!e.modified_){let r=Qg(gg(e),t),i=r?.[Vh];if(i&&i.base_===n)return e.copy_[t]=n,e.assigned_.set(t,!1),!0;if(sg(n,r)&&(n!==void 0||ig(e.base_,t,e.type_)))return!0;r_(e),n_(e)}return e.copy_[t]===n&&(n!==void 0||ig(e.copy_,t,e.type_))||Number.isNaN(n)&&Number.isNaN(e.copy_[t])?!0:(e.copy_[t]=n,e.assigned_.set(t,!0),qg(e,t,n),!0)},deleteProperty(e,t){return r_(e),Qg(e.base_,t)!==void 0||t in e.base_?(e.assigned_.set(t,!1),n_(e)):e.assigned_.delete(t),e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){let n=gg(e),r=Reflect.getOwnPropertyDescriptor(n,t);return r&&{[Yh]:!0,[qh]:e.type_!==1||t!==`length`,[Jh]:r[Jh],[Xh]:n[t]}},defineProperty(){Hh(11)},getPrototypeOf(e){return Wh(e.base_)},setPrototypeOf(){Hh(12)}},Zg={};for(let e in Xg){let t=Xg[e];Zg[e]=function(){let e=arguments;return e[0]=e[0][0],t.apply(this,e)}}Zg.deleteProperty=function(e,t){return Zg.set.call(this,e,t,void 0)},Zg.set=function(e,t,n){return Xg.set.call(this,e[0],t,n,e[0])};function Qg(e,t){let n=e[Vh];return(n?gg(n):e)[t]}function $g(e,t,n){return e.type_!==1||!e.allIndicesReassigned_||e.assigned_?.get(t)||!Qh(n)||n[Vh]?!1:e.baseRefs_.has(n)}function e_(e,t,n){let r=t_(t,n);return r?Xh in r?r[Xh]:r.get?.call(e.draft_):void 0}function t_(e,t){if(!(t in e))return;let n=Wh(e);for(;n;){let e=Object.getOwnPropertyDescriptor(n,t);if(e)return e;n=Wh(n)}}function n_(e){e.modified_||(e.modified_=!0,e.parent_&&n_(e.parent_))}function r_(e){e.copy_||=(e.assigned_=new Map,vg(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var i_=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(e,t,n)=>{if(fg(e)&&!fg(t)){let n=t;t=e;let r=this;return function(e=n,...i){return r.produce(e,e=>t.call(this,e,...i))}}fg(t)||Hh(6),n!==void 0&&!fg(n)&&Hh(7);let r;if(Qh(e)){let i=Ig(this),a=a_(i,e,void 0),o=!0;try{r=t(a),o=!1}finally{o?Pg(i):Fg(i)}return Ng(i,n),Rg(r,i)}if(!e||!dg(e)){if(r=t(e),r===void 0&&(r=e),r===zh&&(r=void 0),this.autoFreeze_&&yg(r,!0),n){let t=[],i=[];Dg(wg).generateReplacementPatches_(e,r,{patches_:t,inversePatches_:i}),n(t,i)}return r}Hh(1,e)},this.produceWithPatches=(e,t)=>{if(fg(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]},pg(e?.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),pg(e?.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),pg(e?.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){Qh(e)||Hh(8),Zh(e)&&(e=o_(e));let t=Ig(this),n=a_(t,e,void 0);return n[Vh].isManual_=!0,Fg(t),n}finishDraft(e,t){let n=e&&e[Vh];(!n||!n.isManual_)&&Hh(9);let{scope_:r}=n;return Ng(r,t),Rg(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=Dg(wg).applyPatches_;return Zh(e)?r(e,t):this.produce(e,e=>r(e,t))}};function a_(e,t,n,r){let[i,a]=lg(t)?Dg(Cg).proxyMap_(t,n):ug(t)?Dg(Cg).proxySet_(t,n):Yg(t,n);return(n?.scope_??jg()).drafts_.push(i),a.callbacks_=n?.callbacks_??[],a.key_=r,n&&r!==void 0?Gg(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 o_(e){return Zh(e)||Hh(10,e),s_(e)}function s_(e){if(!Qh(e)||Sg(e))return e;let t=e[Vh],n,r=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,n=vg(e,t.scope_.immer_.useStrictShallowCopy_),r=t.scope_.immer_.shouldUseStrictIteration()}else n=vg(e,!0);return ng(n,(e,t)=>{og(n,e,s_(t))},r),t&&(t.finalized_=!1),n}function c_(){function e(n,r=[]){if(n.key_!==void 0){let e=n.parent_.copy_??n.parent_.base_,t=hg(ag(e,n.key_)),i=ag(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||ig(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=ag(n,r),!dg(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?.[Vh];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;ng(e.assigned_,(e,l)=>{let u=ag(o,e,c),f=ag(s,e,c),p=l?ig(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===zh?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=rg(o),n=i[e];typeof n!=`string`&&typeof n!=`number`&&(n=``+n),(t===0||t===1)&&(n===`__proto__`||n===Gh)&&Hh(19),fg(o)&&n===Kh&&Hh(19),o=ag(o,n),(o===null||!dg(o))&&Hh(18,i.join(`/`))}let s=rg(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:Hh(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:Hh(17,a)}}),e}function u(e){if(!Qh(e))return e;if(cg(e))return e.map(u);if(lg(e))return new Map(Array.from(e.entries()).map(([e,t])=>[e,u(t)]));if(ug(e))return new Set(Array.from(e).map(u));let t=Object.create(Wh(e));for(let n in e)t[n]=u(e[n]);return ig(e,Bh)&&(t[Bh]=e[Bh]),t}function d(e){return Zh(e)?u(e):e}kg(wg,{applyPatches_:l,generatePatches_:i,generateReplacementPatches_:c,getPath:e})}globalThis.Iterator?.from;var l_=new i_,u_=l_.produce,d_=l_.produceWithPatches.bind(l_),f_=l_.applyPatches.bind(l_),p_=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`;function m_(e=21){let t=``,n=e;for(;n--;)t+=p_[Math.random()*64|0];return t}var h_=1e3;function g_(e,t){if(e.add(t),e.size>h_){let t=e.values().next().value;t!==void 0&&e.delete(t)}}function __(e){let{enablePatches:t=!1}=e;t&&c_();let n=oh(),r=e.initialValue,i=new Set;return{on:n.on,value:()=>r,patch:(e,t=m_())=>{i.has(t)||(c_(),r=f_(r,e),g_(i,t),n.emit(`updated`,r,void 0,t))},mutate:(e,a=m_())=>{if(!i.has(a)){if(g_(i,a),t){let[t,i]=d_(r,e);r=t,n.emit(`updated`,r,i,a)}else r=u_(r,e),n.emit(`updated`,r,void 0,a)}},syncIds:i}}function v_(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:$.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:$.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(c,l)=>{if(l?.initialValue!==void 0&&r.set(c,l.initialValue),t.has(c))return t.get(c);let u=__({initialValue:l?.initialValue,enablePatches:!1});async function d(){if(a||e.callEvent(`devframe:rpc:server-state:subscribe`,c),l?.initialValue!==void 0){t.set(c,u);for(let e of i)e(c);return e.call(`devframe:rpc:server-state:get`,c).then(e=>{e!==void 0&&u.mutate(()=>o(c,e))}).catch(e=>{console.error(`Error getting server state`,e)}),n.set(c,s(c,u)),u}{let r=await e.call(`devframe:rpc:server-state:get`,c);u.mutate(()=>o(c,r)),t.set(c,u);for(let e of i)e(c);return n.set(c,s(c,u)),u}}return new Promise(t=>{if(e.isTrusted)d().then(t);else{t(u);let n=!1;e.events.on($.client.isTrustedUpdated,e=>{e&&!n&&(n=!0,d())})}})}}}var y_=typeof self==`object`?self:globalThis,b_=new Set([`Error`,`EvalError`,`RangeError`,`ReferenceError`,`SyntaxError`,`TypeError`,`URIError`,`AggregateError`]),x_=new Set([`Boolean`,`Number`,`String`,`Int8Array`,`Uint8Array`,`Uint8ClampedArray`,`Int16Array`,`Uint16Array`,`Int32Array`,`Uint32Array`,`Float16Array`,`Float32Array`,`Float64Array`,`BigInt64Array`,`BigUint64Array`]);function S_(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=b_.has(e)?y_[e]:void 0;return n(new(r??y_.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`&&x_.has(a))return n(new y_[a](o),i);throw TypeError(`unable to deserialize unsafe or unknown type: ${String(a)}`)};return r}function C_(e){return S_(new Map,e)(0)}var w_=``,{toString:T_}={},{keys:E_}=Object;function D_(e){let t=typeof e;if(t!==`object`||!e)return[0,t];let n=T_.call(e).slice(8,-1);switch(n){case`Array`:return[1,w_];case`Object`:return[2,w_];case`Date`:return[3,w_];case`RegExp`:return[4,w_];case`Map`:return[5,w_];case`Set`:return[6,w_];case`DataView`:return[1,n]}return n.includes(`Array`)?[1,n]:n.includes(`Error`)?[7,n]:[2,n]}function O_([e,t]){return e===0&&(t===`function`||t===`symbol`)}function k_(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]=D_(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 E_(r))(e||!O_(D_(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||!(O_(D_(n))||O_(D_(i))))&&t.push([a(n),a(i)]);return n}case 6:{let t=[],n=i([o,t],r);for(let n of r)(e||!O_(D_(n)))&&t.push(a(n));return n}}let{message:c}=r;return i([o,{name:s,message:c}],r)};return a}function A_(e,t={}){let n=[];return k_(!(t.json||t.lossy),!!t.json,new Map,n)(e),n}var{parse:j_,stringify:M_}=JSON,N_={json:!0,lossy:!0};function P_(e){return C_(j_(e))}function F_(e){return M_(A_(e,N_))}function I_(e){return C_(e)}function L_(e){return F_(e)}function R_(e){return P_(e)}var z_=new Map;function B_(e=z_){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?nh(n,r??``):`s:${L_(n)}`},deserialize:e=>{let n=e.startsWith(`s:`)?R_(e.slice(2)):JSON.parse(e);return n.t===`q`&&n.i&&n.m&&t.set(n.i,n.m),n}}}function V_(){}function H_(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 U_(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 W_(e){let{onConnected:t=V_,onError:n=V_,onDisconnected:r=V_,definitions:i,fetch:a=globalThis.fetch.bind(globalThis)}=e,o=e.url;e.authToken&&(o=`${o}${o.includes(`?`)?`&`:`?`}${Nm}=${encodeURIComponent(e.authToken)}`);let s=B_(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=H_(r);if(!e)break;r=e.rest;let{event:t,data:n}=U_(e.frame);n.length>0&&_(t,n.join(`
|
|
8
|
-
`))}}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`,[km]: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 G_(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}var K_=Math.random.bind(Math),q_=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`;function J_(e=21){let t=``,n=e;for(;n--;)t+=q_[K_()*64|0];return t}var Y_=6e4,X_=e=>e,Z_=X_,{clearTimeout:Q_,setTimeout:$_}=globalThis;function ev(e,t){let{post:n,on:r,off:i=()=>{},eventNames:a=[],serialize:o=X_,deserialize:s=Z_,resolver:c,bind:l=`rpc`,timeout:u=Y_,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}=G_(),_=J_();s.i=_;let v;async function y(n=s){return u>=0&&(v=$_(()=>{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{Q_(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&&(Q_(r.timeoutId),n?r.reject(n):r.resolve(t)),p.delete(e)}}return m=r(b),h}function tv(e,t){let{channel:n,rpcOptions:r={}}=t;return ev(e,{...n,timeout:-1,...r,proxify:!1})}function nv(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}function rv(e){let{transport:t,authToken:n,connectionMeta:r,events:i,clientRpc:a,rpcOptions:o={},callTimeout:s=0}=e,c=!1,l=`connecting`,u=null,d=nv();function f(e,t=null){if(t?u=t:e===`connected`&&(u=null),e===l)return;let n=l;l=e,i.emit($.client.connectionStatus,e,n)}let p=new Set;function m(e){for(let t of[...p])t.reject(e)}function h(){return l===`disconnected`||l===`error`?new Nh(`connection`,`[devframe] Not connected to the devframe server`,{cause:u??void 0}):l===`unauthorized`?new Nh(`auth`,`[devframe] Not authorized by the devframe server`,{cause:u??void 0}):null}function g(e,t){return new Promise((n,r)=>{let a=!1,o,c={reject(e){a||(l(),i.emit($.client.error,e,t),r(e))}};function l(){a=!0,p.delete(c),o&&clearTimeout(o)}p.add(c),s>0&&(o=setTimeout(()=>{c.reject(new Nh(`timeout`,`[devframe] RPC call "${t}" timed out after ${s}ms`))},s)),e.then(e=>{a||(l(),n(e))},e=>{if(a)return;l();let n=e instanceof Error?e:Error(String(e));i.emit($.client.error,n,t),r(n)})})}let _=new Map;for(let e of r.jsonSerializableMethods??[])_.set(e,{jsonSerializable:!0});let v=e.createChannel({definitions:_,onError(e){f(`error`,e),i.emit($.client.connectionError,e),m(new Nh(`connection`,`[devframe] Connection to the devframe server failed`,{cause:e}))},onDisconnected(){l!==`error`&&f(`disconnected`),m(new Nh(`connection`,`[devframe] Disconnected from the devframe server`,{cause:u??void 0}))}}),y=tv(a.functions,{channel:v,rpcOptions:o});a.register({name:$.broadcast.authRevoked,type:`event`,handler:()=>{c=!1;let e=new Nh(`auth`,`[devframe] The devframe server revoked this client's trust`);f(`unauthorized`,e),i.emit($.client.connectionError,e),m(e),i.emit($.client.isTrustedUpdated,!1)}});let b=n;async function x(e){b=e;let t=await y.$call(`anonymous:devframe:auth`,{authToken:e,ua:navigator.userAgent,origin:location.origin});if(c=t.isTrusted,c)d.resolve(!0),f(`connected`);else{let e=new Nh(`auth`,`[devframe] The devframe server refused this client's credentials`);f(`unauthorized`,e),i.emit($.client.connectionError,e)}return i.emit($.client.isTrustedUpdated,c),t.isTrusted}async function S(e){let t=(await y.$call(`anonymous:devframe:auth:exchange`,{code:e,ua:navigator.userAgent,origin:location.origin}))?.authToken??null;return t&&(b=t,c=!0,d.resolve(!0),f(`connected`),i.emit($.client.isTrustedUpdated,!0)),t}async function C(){return c?!0:x(b??``)}async function w(e=6e4){if(c&&d.resolve(!0),e<=0)return d.promise;let t=()=>{};return await Promise.race([d.promise.then(t),new Promise((n,r)=>{let i=setTimeout(()=>{r(Error(`[devframe] Timeout waiting for rpc to be trusted`))},e);t=()=>clearTimeout(i)})]),c}return{transport:t,get isTrusted(){return c},get status(){return l},get connectionError(){return u},requestTrust:C,requestTrustWithToken:x,requestTrustWithCode:S,ensureTrusted:w,call:(...e)=>{let t=String(e[0]),n=h();return n?(i.emit($.client.error,n,t),Promise.reject(n)):g(y.$call(...e),t)},callEvent:(...e)=>{let t=h();if(t){i.emit($.client.error,t,String(e[0]));return}return y.$callEvent(...e)},callOptional:(...e)=>{let t=String(e[0]),n=h();return n?(i.emit($.client.error,n,t),Promise.reject(n)):g(y.$callOptional(...e),t)},close:()=>{v.close()}}}function iv(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 av(e){let{authToken:t,connectionMeta:n,metaBaseUrl:r,events:i,clientRpc:a,rpcOptions:o={},sseOptions:s={},callTimeout:c=0}=e,l=iv(n.sse,r??`./`,location);return rv({transport:`sse`,authToken:t,connectionMeta:n,events:i,clientRpc:a,rpcOptions:o,callTimeout:c,createChannel:e=>W_({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 ov(e){let{name:t,message:n,cause:r,...i}=e,a=r instanceof Error?r:sv(r)?ov(r):r,o=a===void 0?Error(n):Error(n,{cause:a});return o.name=t,Object.assign(o,i),o}function sv(e){return typeof e==`object`&&!!e&&typeof e.message==`string`&&typeof e.name==`string`}function cv(e){return typeof e==`object`&&!!e&&e.type===`static`&&typeof e.path==`string`}function lv(e){return typeof e==`object`&&!!e&&e.type===`query`&&typeof e.records==`object`&&e.records!==null}function uv(e){return typeof e==`object`&&!!e&&(`output`in e||`error`in e)}function dv(e){if(e.error)throw ov(e.error);return e.output}function fv(e){return e.some(e=>e!=null)}function pv(e){return typeof e==`object`&&e&&`serialization`in e&&`data`in e?e.data:e}function mv(e,t){let n=new Map,r=new Map;function i(e,t){return t===`structured-clone`&&Array.isArray(e)?I_(e):e}function a(e,t){return i(pv(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 uv(r)?dv(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(cv(r)){if(fv(n))throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`);return await o(r)}if(lv(r)){let e=Pm(n),i=r.records[e];if(i)return dv(await s(i,r.serialization));if(r.fallback)return dv(await s(r.fallback,r.serialization));throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`)}if(!fv(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 hv(e){let t=mv(await e.fetchJsonFromBases(Am),e.fetchJsonFromBases);return{transport:`static`,isTrusted:!0,status:`connected`,connectionError:null,requestTrust:async()=>!0,requestTrustWithToken:async()=>!0,requestTrustWithCode:async()=>null,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:()=>{}}}var gv=256,_v=class extends Error{name=`StreamClosedError`};function vv(e={}){let t=e.id??m_(),n=Math.max(0,e.replayWindow??0),r=oh(),i=new AbortController,a=[],o=!1,s=0;function c(e){if(o)throw new _v(`Cannot write to a closed stream "${t}"`);s+=1,n>0&&(a.push({seq:s,chunk:e}),a.length>n&&a.splice(0,a.length-n)),r.emit(`chunk`,s,e)}function l(e){if(o)return;o=!0;let t=bv(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 yv(e={}){let t=e.id??m_(),n=Math.max(1,e.highWaterMark??gv),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 bv(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)}}}var xv=``;function Sv(e,t){return`${e}${xv}${t}`}function Cv(e){let t=new Map,n=new Map;e.client.register({name:$.broadcast.streamingChunk,type:`event`,handler(e,n,r,i){t.get(Sv(e,n))?._push(r,i)}}),e.client.register({name:$.broadcast.streamingEnd,type:`event`,handler(e,n,r){let i=Sv(e,n),a=t.get(i);a&&(a._end(r),t.delete(i))}}),e.client.register({name:$.broadcast.streamingUploadCancel,type:`event`,handler(e,t){let r=Sv(e,t),i=n.get(r);i&&(i.abort(`server cancelled upload`),n.delete(r))}}),e.events.on($.client.isTrustedUpdated,n=>{if(n)for(let[n,r]of t){if(r.cancelled||r.done)continue;let t=n.indexOf(xv);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=Sv(n,r),o=t.get(a);if(o)return o;let s=yv({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($.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=Sv(t,r),a=n.get(i);if(a)return a;let o=vv({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 wv(){}var Tv=new Map;function Ev(e){let t=e.url;e.authToken&&(t=`${t}?${Nm}=${encodeURIComponent(e.authToken)}`);let n=new WebSocket(t),{onConnected:r=wv,onError:i=wv,onDisconnected:a=wv,definitions:o=Tv}=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=B_(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 Dv(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 bh(a,/^https/i.test(a)?`wss://`:`ws://`);let o=new URL(a,r);return o.protocol=i,o.href}function Ov(e){let{authToken:t,connectionMeta:n,metaBaseUrl:r,events:i,clientRpc:a,rpcOptions:o={},wsOptions:s={},callTimeout:c=0}=e,l=Dv(n.websocket,r??`./`,location);return rv({transport:`websocket`,authToken:t,connectionMeta:n,events:i,clientRpc:a,rpcOptions:o,callTimeout:c,createChannel:e=>Ev({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 kv(e){return e.includes(`:`)}function Av(e,t){return kv(t)?t:`${e}:${t}`}function jv(e,t,n){let r=`devframe:settings:${n}:${t}`,i;function a(){return i||=e.sharedState.get(r,{initialValue:{}}),i}return{async get(e){return(await a()).value()[e]},async set(e,t){(await a()).mutate(n=>{n[e]=t})},async delete(e){(await a()).mutate(t=>{delete t[e]})},async all(){return(await a()).value()},async onChange(e){return(await a()).on(`updated`,t=>e(t))}}}function Mv(e,t){return{global:jv(e,t,`global`),project:jv(e,t,`project`)}}function Nv(e,t){return{namespace:t,base:e,rpc:{namespace:t,register(n){if(kv(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(Av(t,n),...r)),callEvent:((n,...r)=>e.callEvent(Av(t,n),...r)),callOptional:((n,...r)=>e.callOptional(Av(t,n),...r)),sharedState:((n,r)=>e.sharedState.get(Av(t,n),r)),streaming:{subscribe:(n,r,i)=>e.streaming.subscribe(Av(t,n),r,i),upload:(n,r)=>e.streaming.upload(Av(t,n),r)}},settings:Mv(e,t),scope:e.scope}}function Pv(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 Fv(e={}){let{baseURL:t=`./`,rpcOptions:n={},cacheOptions:r=!1}=e,i=oh(),a=Array.isArray(t)?t:[t],o=await Mh(e),{connectionMeta:s,metaBaseUrl:c,authToken:l}=o,u=a[0]??`./`;try{u=new URL(`.`,c).href}catch{}let d=new Fm({functions:[],...typeof e.cacheOptions==`object`?e.cacheOptions:{}}),f={rpc:void 0},p=new eh(f);async function m(e){let t=[u,...a.filter(e=>e!==u)].filter(e=>e!=null),n=[];for(let r of t)try{return await fetch(gh(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 h={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)}}},g=Pv(e.transport??`auto`,s),_=g===`static`?await hv({fetchJsonFromBases:m}):g===`sse`?av({...h,sseOptions:e.sseOptions}):Ov({...h,wsOptions:e.wsOptions}),v;try{v=new BroadcastChannel(`devframe-auth`)}catch{}let y,b=!1;function x(e){return((...t)=>b||!y?e(...t):y.then(()=>e(...t)))}let S={events:i,get isTrusted(){return _.isTrusted},get status(){return _.status},get connectionError(){return _.connectionError},get transport(){return _.transport??g},get connection(){return o},connectionMeta:s,ensureTrusted:_.ensureTrusted,requestTrust:_.requestTrust,requestTrustWithToken:async e=>(Oh(e),o={...o,authToken:e},_.requestTrustWithToken(e)),requestTrustWithCode:async e=>{let t=await _.requestTrustWithCode(e);if(!t)return!1;Oh(t),o={...o,authToken:t};try{v?.postMessage({type:`auth-update`,authToken:t})}catch{}return!0},call:x(_.call),callEvent:x(_.callEvent),callOptional:x(_.callOptional),client:p,sharedState:void 0,services:void 0,streaming:void 0,cacheManager:d,scope:void 0,close:()=>_.close?.()};S.sharedState=v_(S),S.streaming=Cv(S),S.services=Rh(S);let C=new Map;S.scope=(e=>{if(!e)return S;let t=C.get(e);return t||(t=Nv(S,e),C.set(e,t)),t}),f.rpc=S;function w(){try{return typeof window<`u`&&window.self===window.top}catch{return!1}}async function ee(){if(!(e.simpleAuth===!1||!w())&&typeof globalThis.prompt==`function`)for(;!S.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 S.requestTrustWithCode(t))return}}async function T(){let t=await _.requestTrust(),n=e.otpParam??`devframe_otp`,r=n?await Lh(S,{param:n}):!1;t||r||S.isTrusted||await ee()}return y=T().then(()=>{b=!0},()=>{b=!0}),v&&(v.onmessage=e=>{e.data?.type===`auth-update`&&e.data.authToken&&S.requestTrustWithToken(e.data.authToken)}),S}var Iv=Fv;function Lv(e){return Iv(e)}var Rv=I([]),zv=I(!0),Bv=1;function Vv(e){zv.value&&Rv.value.push({...e,id:Bv++})}function Hv(){Rv.value=[]}var Uv=Jt({connected:!1,status:`connecting`,error:null,backend:null}),Wv=sn(null);function Gv(e){let t=e.call.bind(e);e.call=async(e,...n)=>{let r=Date.now();try{let i=await t(e,...n);return!e.includes(`list-functions`)&&!e.includes(`list-state-keys`)&&e!==`devframe:rpc:server-state:get`&&Vv({type:`call`,method:e,args:n,result:i,duration:Date.now()-r,time:r}),i}catch(t){throw!e.includes(`list-functions`)&&!e.includes(`list-state-keys`)&&e!==`devframe:rpc:server-state:get`&&Vv({type:`call`,method:e,args:n,error:t,duration:Date.now()-r,time:r}),t}};let n=e.callEvent.bind(e);e.callEvent=(e,...t)=>(!e.includes(`list-functions`)&&!e.includes(`list-state-keys`)&&e!==`devframe:rpc:server-state:subscribe`&&Vv({type:`call`,method:e,args:t,duration:0,time:Date.now()}),n(e,...t));let r=e.client.definitions.get(`devframe:rpc:client-state:updated`);if(r&&r.handler){let e=r.handler;r.handler=(t,n,r)=>(Vv({type:`state`,key:t,value:n,syncId:r,time:Date.now()}),e(t,n,r))}let i=e.client.definitions.get(`devframe:rpc:client-state:patch`);if(i&&i.handler){let e=i.handler;i.handler=(t,n,r)=>(Vv({type:`state`,key:t,patches:n,syncId:r,time:Date.now()}),e(t,n,r))}}function Kv(e){Uv.status=e.status,Uv.connected=e.status===`connected`,Uv.error=e.connectionError?.message??null}async function qv(){try{let e=await Lv();Gv(e),Wv.value=e,Uv.backend=e.connectionMeta.backend,Kv(e),e.events.on(`connection:status`,()=>Kv(e)),e.connectionMeta.backend===`websocket`&&e.ensureTrusted(5e3).catch(()=>{})}catch(e){Uv.status=`error`,Uv.error=e?.message??String(e)}}function Jv(){return Wv}function Yv(){return Uv.backend===`static`}var Xv=z({__name:`FeedbackSpinner`,props:{size:{default:`1em`}},setup(e){let t=e,n=Z(()=>typeof t.size==`number`?`${t.size}px`:t.size);return(e,t)=>(W(),G(`span`,{class:`border-2 border-current border-t-transparent rounded-full inline-block animate-spin`,style:k({width:n.value,height:n.value}),role:`status`,"aria-label":`Loading`},null,4))}}),Zv=z({__name:`ActionButton`,props:{as:{},to:{},href:{},icon:{},variant:{default:`action`},size:{default:`md`},loading:{type:Boolean},disabled:{type:Boolean}},setup(e){let t=e,n=Z(()=>t.as?t.as:t.href!=null||t.to!=null?`a`:`button`),r=Z(()=>n.value===`a`),i=Z(()=>n.value===`button`),a=Z(()=>t.size===`sm`),o=Z(()=>t.variant===`primary`?a.value?`btn-primary text-sm`:`btn-primary`:t.variant===`text`?a.value?`btn-text text-sm`:`btn-text`:a.value?`btn-action-sm`:`btn-action`),s=Z(()=>t.disabled||t.loading);return(t,a)=>(W(),K(sa(n.value),{class:A([o.value,{"pointer-events-none op-mute":s.value&&!i.value}]),href:r.value?e.href??e.to:void 0,to:e.as&&e.to!=null?e.to:void 0,disabled:i.value?s.value:void 0,"aria-disabled":s.value||void 0,"aria-busy":e.loading||void 0},{default:R(()=>[e.loading?(W(),K(Xv,{key:0,size:`1em`})):e.icon?(W(),G(`span`,{key:1,class:A(e.icon),"aria-hidden":`true`},null,2)):X(``,!0),B(t.$slots,`default`)]),_:3},8,[`class`,`href`,`to`,`disabled`,`aria-disabled`,`aria-busy`]))}}),Qv=128;function $v(e){return e.replace(/[^\w-]+/g,`_`).slice(0,Qv)}var ey={class:`json`},ty={key:0,class:`json-key`},ny={key:1,class:`json-colon`},ry={key:0,class:`json-key`},iy={key:1,class:`json-colon`},ay={class:`json-meta`},oy={key:2},sy={key:0,class:`json-key`},cy={key:1,class:`json-colon`},ly={key:2,class:`json-meta`},uy={key:3,class:`json-meta`},dy={key:0,class:`json-children`},fy={key:1,class:`json-row`},py={class:`json-meta`},my=z({__name:`JsonView`,props:{value:{},name:{},path:{default:``},depth:{default:0},expandDepth:{default:1},highlightPaths:{}},setup(e){let t=e,n=Z(()=>Array.isArray(t.value)?`array`:t.value!==null&&typeof t.value==`object`?`object`:`primitive`),r=Z(()=>n.value===`array`?t.value.map((e,t)=>[String(t),e]):n.value===`object`?Object.entries(t.value):[]),i=I(t.depth<t.expandDepth),a=Z(()=>r.value.length===0),o=Z(()=>!!t.path&&t.highlightPaths?.has(t.path));function s(e){return t.path?`${t.path}.${e}`:e}function c(e){return e==null?`v-null`:`v-${typeof e}`}function l(e){return e===void 0?`undefined`:e===null?`null`:typeof e==`string`?JSON.stringify(e):String(e)}let u=Z(()=>n.value===`array`?`[`:`{`),d=Z(()=>n.value===`array`?`]`:`}`),f=Z(()=>n.value===`array`?`[${r.value.length}]`:`{${r.value.length}}`);return(t,p)=>{let m=aa(`JsonView`,!0);return W(),G(`div`,ey,[n.value===`primitive`?(W(),G(`div`,{key:0,class:A([`json-row`,{changed:o.value}])},[e.name===void 0?X(``,!0):(W(),G(`span`,ty,j(e.name),1)),e.name===void 0?X(``,!0):(W(),G(`span`,ny,`:`)),q(`span`,{class:A(c(e.value))},j(l(e.value)),3)],2)):a.value?(W(),G(`div`,{key:1,class:A([`json-row`,{changed:o.value}])},[e.name===void 0?X(``,!0):(W(),G(`span`,ry,j(e.name),1)),e.name===void 0?X(``,!0):(W(),G(`span`,iy,`:`)),q(`span`,ay,j(u.value)+j(d.value),1)],2)):(W(),G(`div`,oy,[q(`div`,{class:A([`json-row json-toggle`,{changed:o.value}]),onClick:p[0]||=e=>i.value=!i.value},[q(`span`,{class:A([`json-caret`,{open:i.value}])},`▶`,2),e.name===void 0?X(``,!0):(W(),G(`span`,sy,j(e.name),1)),e.name===void 0?X(``,!0):(W(),G(`span`,cy,`:`)),i.value?(W(),G(`span`,ly,j(u.value),1)):(W(),G(`span`,uy,j(f.value),1))],2),i.value?(W(),G(`div`,dy,[(W(!0),G(H,null,da(r.value,([t,n])=>(W(),K(m,{key:t,name:t,value:n,path:s(t),depth:e.depth+1,"expand-depth":e.expandDepth,"highlight-paths":e.highlightPaths},null,8,[`name`,`value`,`path`,`depth`,`expand-depth`,`highlight-paths`]))),128))])):X(``,!0),i.value?(W(),G(`div`,fy,[q(`span`,py,j(d.value),1)])):X(``,!0)]))])}}}),hy={class:`pane`},gy={key:0,class:`center`},_y={class:`section-title`},vy={key:0,class:`empty`},yy={key:1,class:`cards`},by=[`onClick`],xy={class:`card-title`},Sy={class:`badge flag`},Cy={class:`id`},wy={key:0,class:`id-note`},Ty={class:`desc`},Ey={key:1,class:`tags`},Dy=[`onUpdate:modelValue`],Oy={style:{"margin-top":`8px`,display:`flex`,gap:`8px`,"align-items":`center`}},ky={key:0,class:`note`},Ay={key:3,class:`result`},jy={class:`result-head`},My={key:0,class:`ok`},Ny={key:1,class:`fail`},Py={key:2,class:`muted`},Fy={class:`section-title`},Iy={key:2,class:`empty`},Ly={key:3,class:`cards`},Ry=[`onClick`],zy={class:`card-title`},By={key:0,class:`badge flag`},Vy={class:`id`},Hy={key:0,class:`desc`},Uy={style:{"margin-top":`8px`,display:`flex`,gap:`8px`,"align-items":`center`}},Wy={key:0,class:`note`},Gy={key:0,class:`result`},Ky={class:`result-head`},qy={key:0,class:`ok`},Jy={key:1,class:`fail`},Yy={key:2,class:`muted`},Xy=z({__name:`AgentView`,props:{manifest:{},isStatic:{type:Boolean},results:{},pending:{}},emits:[`invoke`,`read`],setup(e,{emit:t}){let n=t,r=I(null),i=Jt({});function a(e){r.value=r.value===e?null:e,i[e]===void 0&&(i[e]=`{}`)}function o(e){let t;try{t=JSON.parse(i[e]||`{}`)}catch(e){throw Error(`Invalid JSON args: ${e.message}`)}n(`invoke`,e,t)}function s(e){n(`read`,e)}return(t,n)=>(W(),G(`div`,hy,[e.manifest?(W(),G(H,{key:1},[q(`div`,_y,` Tools · `+j(e.manifest.tools.length),1),e.manifest.tools.length===0?(W(),G(`div`,vy,` No agent-exposed tools. `)):(W(),G(`div`,yy,[(W(!0),G(H,null,da(e.manifest.tools,t=>(W(),G(`div`,{key:t.id,class:`card`},[q(`div`,{class:`card-head`,style:{cursor:`pointer`,"user-select":`none`},onClick:e=>a(t.id)},[q(`div`,{class:A([`chev i-ph-caret-right`,{open:r.value===t.id}])},null,2),q(`span`,xy,j(t.title),1),q(`span`,Sy,j(t.kind),1),q(`span`,{class:A([`badge`,`safety-${t.safety}`])},j(t.safety),3)],8,by),q(`div`,Cy,j(L($v)(t.id)),1),L($v)(t.id)===t.id?X(``,!0):(W(),G(`div`,wy,` internal id: `+j(t.id),1)),q(`p`,Ty,j(t.description),1),t.tags&&t.tags.length?(W(),G(`div`,Ey,[(W(!0),G(H,null,da(t.tags,e=>(W(),G(`span`,{key:e,class:`badge flag`},j(e),1))),128))])):X(``,!0),r.value===t.id?(W(),G(H,{key:2},[t.inputSchema?(W(),G(H,{key:0},[n[0]||=q(`div`,{class:`label`},` Input schema `,-1),J(my,{value:t.inputSchema,"expand-depth":1},null,8,[`value`])],64)):X(``,!0),t.outputSchema?(W(),G(H,{key:1},[n[1]||=q(`div`,{class:`label`},` Output schema `,-1),J(my,{value:t.outputSchema,"expand-depth":1},null,8,[`value`])],64)):X(``,!0),t.examples&&t.examples.length?(W(),G(H,{key:2},[n[2]||=q(`div`,{class:`label`},` Examples `,-1),J(my,{value:t.examples,"expand-depth":1},null,8,[`value`])],64)):X(``,!0),n[3]||=q(`div`,{class:`label`},` Invoke (MCP format) `,-1),pr(q(`textarea`,{"onUpdate:modelValue":e=>i[t.id]=e,class:`args`,spellcheck:`false`,placeholder:`{}`},null,8,Dy),[[zl,i[t.id]]]),q(`div`,Oy,[J(Zv,{variant:`primary`,size:`sm`,icon:`i-ph-play-duotone`,loading:e.pending[t.id],disabled:e.pending[t.id]||e.isStatic,onClick:e=>o(t.id)},{default:R(()=>[Y(j(e.pending[t.id]?`Invoking…`:`Invoke`),1)]),_:2},1032,[`loading`,`disabled`,`onClick`]),e.isStatic?(W(),G(`span`,ky,`read-only static backend`)):X(``,!0)]),e.results[t.id]?(W(),G(`div`,Ay,[q(`div`,jy,[e.results[t.id].ok?(W(),G(`span`,My,`✓ resolved`)):(W(),G(`span`,Ny,`✕ threw`)),`durationMs`in e.results[t.id]?(W(),G(`span`,Py,j(e.results[t.id].durationMs)+`ms`,1)):X(``,!0)]),e.results[t.id].ok?(W(),K(my,{key:0,value:e.results[t.id].result,"expand-depth":2},null,8,[`value`])):(W(),K(my,{key:1,value:e.results[t.id].error,"expand-depth":2},null,8,[`value`]))])):X(``,!0)],64)):X(``,!0)]))),128))])),q(`div`,Fy,` Resources · `+j(e.manifest.resources.length),1),e.manifest.resources.length===0?(W(),G(`div`,Iy,` No agent-readable resources. `)):(W(),G(`div`,Ly,[(W(!0),G(H,null,da(e.manifest.resources,t=>(W(),G(`div`,{key:t.id,class:`card`},[q(`div`,{class:`card-head`,style:{cursor:`pointer`,"user-select":`none`},onClick:e=>a(t.id)},[q(`div`,{class:A([`chev i-ph-caret-right`,{open:r.value===t.id}])},null,2),q(`span`,zy,j(t.name),1),t.mimeType?(W(),G(`span`,By,j(t.mimeType),1)):X(``,!0)],8,Ry),q(`div`,Vy,j(t.uri),1),t.description?(W(),G(`p`,Hy,j(t.description),1)):X(``,!0),r.value===t.id?(W(),G(H,{key:1},[q(`div`,Uy,[J(Zv,{variant:`primary`,size:`sm`,icon:`i-ph-book-open-duotone`,loading:e.pending[t.id],disabled:e.pending[t.id]||e.isStatic,onClick:e=>s(t.id)},{default:R(()=>[Y(j(e.pending[t.id]?`Reading…`:`Read Resource`),1)]),_:2},1032,[`loading`,`disabled`,`onClick`]),e.isStatic?(W(),G(`span`,Wy,`read-only static backend`)):X(``,!0)]),e.results[t.id]?(W(),G(`div`,Gy,[q(`div`,Ky,[e.results[t.id].ok?(W(),G(`span`,qy,`✓ resolved`)):(W(),G(`span`,Jy,`✕ threw`)),`durationMs`in e.results[t.id]?(W(),G(`span`,Yy,j(e.results[t.id].durationMs)+`ms`,1)):X(``,!0)]),e.results[t.id].ok?(W(),K(my,{key:0,value:e.results[t.id].result,"expand-depth":2},null,8,[`value`])):(W(),K(my,{key:1,value:e.results[t.id].error,"expand-depth":2},null,8,[`value`]))])):X(``,!0)],64)):X(``,!0)]))),128))]))],64)):(W(),G(`div`,gy,` Loading agent surface… `))]))}}),Zy=z({__name:`AgentSmart`,setup(e){let t=Jv(),n=sn(null),r=Jt({}),i=Jt({});async function a(){t.value&&(n.value=await t.value.call(`devframes:plugin:inspect:describe-agent`))}Tm(a),Ji(a);async function o(e,n){if(t.value){i[e]=!0;try{r[e]=await t.value.call(`devframes:plugin:inspect:invoke-agent-tool`,e,n)}catch(t){let n=t;r[e]={ok:!1,error:{name:n?.name??`Error`,message:n?.message??String(t)}}}finally{i[e]=!1}}}async function s(e){if(t.value){i[e]=!0;try{r[e]=await t.value.call(`devframes:plugin:inspect:read-agent-resource`,e)}catch(t){let n=t;r[e]={ok:!1,error:{name:n?.name??`Error`,message:n?.message??String(t)}}}finally{i[e]=!1}}}return(e,t)=>(W(),K(Xy,{manifest:n.value,"is-static":L(Yv)(),results:r,pending:i,onInvoke:o,onRead:s},null,8,[`manifest`,`is-static`,`results`,`pending`]))}}),Qy={class:`cmd-title`},$y={class:`cmd-id mono`},eb={class:`fn-flags`},tb={key:0,class:`badge flag`},nb={key:1,class:`badge flag`,title:`No handler, a group for its children`},rb={key:2,class:`badge flag`},ib={key:0,class:`fn-detail`},ab={key:0,class:`desc`},ob=[`value`],sb={style:{"margin-top":`8px`,display:`flex`,gap:`8px`,"align-items":`center`}},cb={key:0,class:`note`},lb={key:0,class:`result`},ub={class:`result-head`},db={key:0,class:`ok`},fb={key:1,class:`fail`},pb={key:2,class:`muted`},mb={key:2,class:`note`},hb={class:`cmd-children`},gb=z({name:`CommandRow`,__name:`CommandRow`,props:{cmd:{},argsInput:{},results:{},pending:{},isStatic:{type:Boolean},depth:{}},emits:[`execute`,`updateArgs`],setup(e,{emit:t}){let n=e,r=t,i=I(!1),a=Z(()=>n.cmd.hasHandler||!!n.cmd.description||!!n.cmd.children?.length);function o(){i.value=!i.value}return(t,n)=>{let s=aa(`CommandRow`,!0);return W(),G(`div`,{class:A([`fn-row`,{"cmd-row-child":e.depth}])},[q(`div`,{class:A([`fn-head`,{clickable:a.value}]),onClick:o},[q(`div`,{class:A([`chev i-ph-caret-right`,{open:i.value}])},null,2),e.cmd.icon?(W(),G(`span`,{key:0,class:A([typeof e.cmd.icon==`string`?e.cmd.icon:`i-ph-terminal-window-duotone`,`cmd-icon`])},null,2)):X(``,!0),q(`span`,Qy,j(e.cmd.title),1),q(`span`,$y,j(e.cmd.id),1),q(`span`,eb,[e.cmd.category?(W(),G(`span`,tb,j(e.cmd.category),1)):X(``,!0),e.cmd.hasHandler?X(``,!0):(W(),G(`span`,nb,`group`)),e.cmd.children?.length?(W(),G(`span`,rb,j(e.cmd.children.length)+` children`,1)):X(``,!0)])],2),i.value?(W(),G(`div`,ib,[e.cmd.description?(W(),G(`p`,ab,j(e.cmd.description),1)):X(``,!0),e.cmd.hasHandler?(W(),G(H,{key:1},[n[4]||=q(`div`,{class:`label`},` Execute with positional args as a JSON array `,-1),q(`textarea`,{value:e.argsInput[e.cmd.id],class:`args`,spellcheck:`false`,placeholder:`[]`,onInput:n[0]||=t=>r(`updateArgs`,e.cmd.id,t.target.value)},null,40,ob),q(`div`,sb,[J(Zv,{variant:`primary`,size:`sm`,icon:`i-ph-play-duotone`,loading:e.pending[e.cmd.id],disabled:e.pending[e.cmd.id]||e.isStatic,onClick:n[1]||=eu(t=>r(`execute`,e.cmd),[`stop`])},{default:R(()=>[Y(j(e.pending[e.cmd.id]?`Running…`:`Run`),1)]),_:1},8,[`loading`,`disabled`]),e.isStatic?(W(),G(`span`,cb,`read-only static backend, execution disabled`)):X(``,!0)]),e.results[e.cmd.id]?(W(),G(`div`,lb,[q(`div`,ub,[e.results[e.cmd.id].ok?(W(),G(`span`,db,`✓ resolved`)):(W(),G(`span`,fb,`✕ threw`)),`durationMs`in e.results[e.cmd.id]?(W(),G(`span`,pb,j(e.results[e.cmd.id].durationMs)+`ms`,1)):X(``,!0)]),e.results[e.cmd.id].ok?(W(),K(my,{key:0,value:e.results[e.cmd.id].result,"expand-depth":2},null,8,[`value`])):(W(),K(my,{key:1,value:e.results[e.cmd.id].error,"expand-depth":2},null,8,[`value`]))])):X(``,!0)],64)):e.cmd.children?.length?X(``,!0):(W(),G(`p`,mb,` Group-only command, no handler to run. `)),e.cmd.children?.length?(W(),G(H,{key:3},[n[5]||=q(`div`,{class:`label`},` Children `,-1),q(`div`,hb,[(W(!0),G(H,null,da(e.cmd.children,t=>(W(),K(s,{key:t.id,cmd:t,"args-input":e.argsInput,results:e.results,pending:e.pending,"is-static":e.isStatic,depth:(e.depth??0)+1,onExecute:n[2]||=e=>r(`execute`,e),onUpdateArgs:n[3]||=(e,t)=>r(`updateArgs`,e,t)},null,8,[`cmd`,`args-input`,`results`,`pending`,`is-static`,`depth`]))),128))])],64)):X(``,!0)])):X(``,!0)],2)}}}),_b={class:`pane`},vb={class:`toolbar`},yb={class:`search`},bb={class:`muted`},xb={class:`badge flag`},Sb={key:0,class:`center`},Cb={key:1,class:`empty`},wb={key:2,class:`empty`},Tb={key:3,class:`fn-list`},Eb=z({__name:`CommandsView`,props:{commands:{},isStatic:{type:Boolean},results:{},pending:{}},emits:[`execute`],setup(e,{emit:t}){let n=e,r=t,i=I(``),a=Jt({});function o(e,t){return e.id.toLowerCase().includes(t)||e.title.toLowerCase().includes(t)||e.category?.toLowerCase().includes(t)?!0:e.children?.some(e=>o(e,t))??!1}let s=Z(()=>{let e=n.commands??[],t=i.value.trim().toLowerCase();return[...t?e.filter(e=>o(e,t)):e].sort((e,t)=>e.title.localeCompare(t.title))}),c=Z(()=>{let e={};for(let t of n.commands??[]){let n=t.category??`uncategorized`;e[n]=(e[n]||0)+1}return e});function l(e){let t;try{let n=JSON.parse(a[e.id]||`[]`);t=Array.isArray(n)?n:[n]}catch(e){throw Error(`Invalid JSON args: ${e.message}`)}r(`execute`,e,t)}return(t,n)=>(W(),G(`div`,_b,[q(`div`,vb,[q(`label`,yb,[n[2]||=q(`div`,{class:`i-ph-magnifying-glass-duotone`},null,-1),pr(q(`input`,{"onUpdate:modelValue":n[0]||=e=>i.value=e,placeholder:`Filter commands by id, title, category…`,spellcheck:`false`},null,512),[[zl,i.value]])]),q(`span`,bb,j((e.commands??[]).length)+` commands`,1),(W(!0),G(H,null,da(c.value,(e,t)=>(W(),G(`span`,{key:t,class:`muted`},[q(`span`,xb,j(t),1),Y(` `+j(e),1)]))),128))]),e.commands?e.commands.length===0?(W(),G(`div`,Cb," No commands registered. Commands are a `@devframes/hub` feature; this connection isn't mounted inside a hub. ")):s.value.length===0?(W(),G(`div`,wb,` No commands match "`+j(i.value)+`". `,1)):(W(),G(`div`,Tb,[(W(!0),G(H,null,da(s.value,t=>(W(),K(gb,{key:t.id,cmd:t,"args-input":a,results:e.results,pending:e.pending,"is-static":e.isStatic,onExecute:l,onUpdateArgs:n[1]||=(e,t)=>a[e]=t},null,8,[`cmd`,`args-input`,`results`,`pending`,`is-static`]))),128))])):(W(),G(`div`,Sb,` Loading commands… `))]))}}),Db=z({__name:`CommandsSmart`,setup(e){let t=Jv(),n=sn(null),r=Jt({}),i=Jt({});async function a(){t.value&&(n.value=await t.value.call(`devframes:plugin:inspect:list-commands`))}Tm(a),Ji(a);async function o(e,n){if(t.value){i[e.id]=!0;try{r[e.id]=await t.value.call(`devframes:plugin:inspect:execute-command`,e.id,n)}catch(t){let n=t;r[e.id]={ok:!1,error:{name:n?.name??`Error`,message:n?.message??String(t)}}}finally{i[e.id]=!1}}}return(e,t)=>(W(),K(Eb,{commands:n.value,"is-static":L(Yv)(),results:r,pending:i,onExecute:o},null,8,[`commands`,`is-static`,`results`,`pending`]))}});function Ob(e,t=1){let n=0;for(let t=0;t<e.length;t++)n=e.charCodeAt(t)+((n<<5)-n);return kb(n%360,t)}function kb(e,t=1){return`hsla(${e}, 60%, 50%, ${t})`}function Ab(e){let t=e.split(/([:/])/),n=[],r=``;for(let e=0;e<t.length;e+=2){let i=t[e]??``,a=t[e+1]??``;if(i===``&&a===``)continue;r+=i;let o=a===``;n.push({text:i,separator:a,isLeaf:o,color:o?void 0:Ob(r)}),r+=a}return n}var jb=[`title`],Mb={key:0,class:`ns-sep`},Nb=z({__name:`FunctionName`,props:{name:{}},setup(e){let t=e,n=Z(()=>Ab(t.name));return(t,r)=>(W(),G(`span`,{class:`fn-name`,title:e.name},[(W(!0),G(H,null,da(n.value,(e,t)=>(W(),G(H,{key:t},[q(`span`,{class:`ns-seg`,style:k(e.color?{color:e.color}:void 0)},j(e.text),5),e.separator?(W(),G(`span`,Mb,j(e.separator),1)):X(``,!0)],64))),128))],8,jb))}}),Pb={class:`fn-row`},Fb={class:`fn-flags`},Ib={key:0,class:`badge agent`,title:`Exposed to agents`},Lb={key:1,class:`badge flag`,title:`Strict JSON wire serialization`},Rb={key:2,class:`badge flag`,title:`Baked into the static build dump`},zb={key:3,class:`badge flag`},Bb={key:4,class:`badge flag`},Vb={key:5,class:`badge flag`},Hb={key:0,class:`fn-detail`},Ub={key:0,class:`desc`},Wb=[`value`],Gb={style:{"margin-top":`8px`,display:`flex`,gap:`8px`,"align-items":`center`}},Kb={key:0,class:`note`},qb={key:0,class:`result`},Jb={class:`result-head`},Yb={key:0,class:`ok`},Xb={key:1,class:`fail`},Zb={key:2,class:`muted`},Qb={key:4,class:`note`},$b=z({__name:`FunctionRow`,props:{fn:{},argsInput:{},results:{},pending:{},isStatic:{type:Boolean}},emits:[`invoke`,`updateArgs`],setup(e,{emit:t}){let n=e,r=t,i=I(!1),a=Z(()=>n.fn.invokable||!!n.fn.agent||n.fn.hasArgs||n.fn.hasReturns);function o(){i.value=!i.value}return(t,n)=>(W(),G(`div`,Pb,[q(`div`,{class:A([`fn-head`,{clickable:a.value}]),onClick:o},[q(`div`,{class:A([`chev i-ph-caret-right`,{open:i.value}])},null,2),J(Nb,{name:e.fn.name},null,8,[`name`]),q(`span`,Fb,[q(`span`,{class:A([`badge`,e.fn.type])},j(e.fn.type),3),e.fn.agent?(W(),G(`span`,Ib,`agent`)):X(``,!0),e.fn.jsonSerializable?(W(),G(`span`,Lb,`json`)):X(``,!0),e.fn.snapshot?(W(),G(`span`,Rb,`snapshot`)):X(``,!0),e.fn.hasArgs?(W(),G(`span`,zb,`args`)):X(``,!0),e.fn.hasReturns?(W(),G(`span`,Bb,`returns`)):X(``,!0),e.fn.hasDump?(W(),G(`span`,Vb,`dump`)):X(``,!0)])],2),i.value?(W(),G(`div`,Hb,[e.fn.agent?(W(),G(`p`,Ub,j(e.fn.agent.description),1)):X(``,!0),e.fn.argsSchema?(W(),G(H,{key:1},[n[2]||=q(`div`,{class:`label`},` Args schema `,-1),J(my,{value:e.fn.argsSchema,"expand-depth":0},null,8,[`value`])],64)):X(``,!0),e.fn.returnsSchema?(W(),G(H,{key:2},[n[3]||=q(`div`,{class:`label`},` Returns schema `,-1),J(my,{value:e.fn.returnsSchema,"expand-depth":0},null,8,[`value`])],64)):X(``,!0),e.fn.invokable?(W(),G(H,{key:3},[n[4]||=q(`div`,{class:`label`},` Invoke with positional args as a JSON array `,-1),q(`textarea`,{value:e.argsInput[e.fn.name],class:`args`,spellcheck:`false`,placeholder:`[]`,onInput:n[0]||=t=>r(`updateArgs`,e.fn.name,t.target.value)},null,40,Wb),q(`div`,Gb,[J(Zv,{variant:`primary`,size:`sm`,icon:`i-ph-play-duotone`,loading:e.pending[e.fn.name],disabled:e.pending[e.fn.name]||e.isStatic,onClick:n[1]||=eu(t=>r(`invoke`,e.fn),[`stop`])},{default:R(()=>[Y(j(e.pending[e.fn.name]?`Invoking…`:`Invoke`),1)]),_:1},8,[`loading`,`disabled`]),e.isStatic?(W(),G(`span`,Kb,`read-only static backend, invocation disabled`)):X(``,!0)]),e.results[e.fn.name]?(W(),G(`div`,qb,[q(`div`,Jb,[e.results[e.fn.name].ok?(W(),G(`span`,Yb,`✓ resolved`)):(W(),G(`span`,Xb,`✕ threw`)),`durationMs`in e.results[e.fn.name]?(W(),G(`span`,Zb,j(e.results[e.fn.name].durationMs)+`ms`,1)):X(``,!0)]),e.results[e.fn.name].ok?(W(),K(my,{key:0,value:e.results[e.fn.name].result,"expand-depth":2},null,8,[`value`])):(W(),K(my,{key:1,value:e.results[e.fn.name].error,"expand-depth":2},null,8,[`value`]))])):X(``,!0)],64)):(W(),G(`p`,Qb,j(e.fn.type)+` functions may carry side effects, so the inspector does not invoke them. `,1))])):X(``,!0)]))}}),ex={class:`pane`},tx={class:`toolbar`},nx={class:`search`},rx={class:`muted`},ix={key:0,class:`center`},ax={key:1,class:`empty`},ox={key:2,class:`fn-list`},sx=z({__name:`FunctionsView`,props:{functions:{},isStatic:{type:Boolean},results:{},pending:{}},emits:[`invoke`],setup(e,{emit:t}){let n=e,r=t,i=I(``),a=Jt({}),o=Z(()=>{let e=n.functions??[],t=i.value.trim().toLowerCase();return[...t?e.filter(e=>e.name.toLowerCase().includes(t)):e].sort((e,t)=>e.name.localeCompare(t.name))}),s=Z(()=>{let e={};for(let t of n.functions??[])e[t.type]=(e[t.type]||0)+1;return e});function c(e){let t;try{let n=JSON.parse(a[e.name]||`[]`);t=Array.isArray(n)?n:[n]}catch(e){throw Error(`Invalid JSON args: ${e.message}`)}r(`invoke`,e,t)}return(t,n)=>(W(),G(`div`,ex,[q(`div`,tx,[q(`label`,nx,[n[2]||=q(`div`,{class:`i-ph-magnifying-glass-duotone`},null,-1),pr(q(`input`,{"onUpdate:modelValue":n[0]||=e=>i.value=e,placeholder:`Filter functions by name…`,spellcheck:`false`},null,512),[[zl,i.value]])]),q(`span`,rx,j((e.functions??[]).length)+` functions`,1),(W(!0),G(H,null,da(s.value,(e,t)=>(W(),G(`span`,{key:t,class:`muted`},[q(`span`,{class:A([`badge`,t])},j(t),3),Y(` `+j(e),1)]))),128))]),e.functions?o.value.length===0?(W(),G(`div`,ax,` No functions match “`+j(i.value)+`”. `,1)):(W(),G(`div`,ox,[(W(!0),G(H,null,da(o.value,t=>(W(),K($b,{key:t.name,fn:t,"args-input":a,results:e.results,pending:e.pending,"is-static":e.isStatic,onInvoke:c,onUpdateArgs:n[1]||=(e,t)=>a[e]=t},null,8,[`fn`,`args-input`,`results`,`pending`,`is-static`]))),128))])):(W(),G(`div`,ix,` Loading functions… `))]))}}),cx=z({__name:`FunctionsSmart`,setup(e){let t=Jv(),n=sn(null),r=Jt({}),i=Jt({});async function a(){t.value&&(n.value=await t.value.call(`devframes:plugin:inspect:list-functions`))}Tm(a),Ji(a);async function o(e,n){if(t.value){i[e.name]=!0;try{r[e.name]=await t.value.call(`devframes:plugin:inspect:invoke`,e.name,n)}catch(t){let n=t;r[e.name]={ok:!1,error:{name:n?.name??`Error`,message:n?.message??String(t)}}}finally{i[e.name]=!1}}}return(e,t)=>(W(),K(sx,{functions:n.value,"is-static":L(Yv)(),results:r,pending:i,onInvoke:o},null,8,[`functions`,`is-static`,`results`,`pending`]))}}),lx={class:`pane flex-col`},ux={class:`toolbar`},dx={class:`muted`},fx={key:0,class:`center`},px={key:1,style:{padding:`14px`,display:`flex`,"flex-direction":`column`,gap:`14px`}},mx={style:{display:`flex`,gap:`8px`,"align-items":`center`,"margin-bottom":`8px`,"flex-wrap":`wrap`}},hx={class:`muted`,style:{"font-family":`var(--df-mono)`,"font-size":`11px`}},gx={style:{"font-family":`var(--df-mono)`,"font-weight":`600`,"font-size":`12.5px`}},_x={class:`muted`},vx={style:{"font-family":`var(--df-mono)`,"font-weight":`600`,"font-size":`12.5px`,color:`var(--df-accent)`}},yx={class:`muted`},bx={style:{"padding-left":`8px`,"border-left":`2px solid var(--df-border-soft)`}},xx=((e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n})(z({__name:`HistoryView`,props:{historyRecords:{},isRecording:{type:Boolean}},emits:[`update:isRecording`,`clear`],setup(e,{emit:t}){let n=t;function r(e){let t=new Date(e);return`${t.getHours().toString().padStart(2,`0`)}:${t.getMinutes().toString().padStart(2,`0`)}:${t.getSeconds().toString().padStart(2,`0`)}.${t.getMilliseconds().toString().padStart(3,`0`)}`}return(t,i)=>(W(),G(`div`,lx,[q(`div`,ux,[J(Zv,{variant:e.isRecording?`action`:`text`,size:`sm`,icon:e.isRecording?`i-ph-record-fill text-error`:`i-ph-play-duotone`,title:e.isRecording?`Click to pause recording`:`Click to record`,onClick:i[0]||=t=>n(`update:isRecording`,!e.isRecording)},{default:R(()=>[Y(j(e.isRecording?`Recording`:`Paused`),1)]),_:1},8,[`variant`,`icon`,`title`]),J(Zv,{variant:`text`,size:`sm`,icon:`i-ph-trash-duotone`,onClick:i[1]||=e=>n(`clear`)},{default:R(()=>[...i[2]||=[Y(` Clear `,-1)]]),_:1}),q(`span`,dx,j(e.historyRecords.length)+` records`,1)]),e.historyRecords.length===0?(W(),G(`div`,fx,` No history yet. `)):(W(),G(`div`,px,[(W(!0),G(H,null,da(e.historyRecords,e=>(W(),G(`div`,{key:e.id,style:{border:`1px solid var(--df-border)`,"border-radius":`var(--df-radius)`,background:`var(--df-bg-soft)`,padding:`12px`}},[q(`div`,mx,[q(`span`,hx,j(r(e.time)),1),e.type===`call`?(W(),G(H,{key:0},[i[3]||=q(`span`,{class:`badge action`},`RPC Call`,-1),q(`span`,gx,j(e.method),1),q(`span`,_x,j(e.duration)+`ms`,1)],64)):(W(),G(H,{key:1},[i[4]||=q(`span`,{class:`badge static`},`State Update`,-1),q(`span`,vx,j(e.key),1),q(`span`,yx,`Sync ID: `+j(e.syncId),1)],64))]),q(`div`,bx,[e.type===`call`?(W(),G(H,{key:0},[i[7]||=q(`div`,{class:`label`,style:{"margin-top":`0`}},` Arguments `,-1),J(my,{value:e.args,"expand-depth":1},null,8,[`value`]),`result`in e?(W(),G(H,{key:0},[i[5]||=q(`div`,{class:`label`},` Result `,-1),J(my,{value:e.result,"expand-depth":1},null,8,[`value`])],64)):`error`in e?(W(),G(H,{key:1},[i[6]||=q(`div`,{class:`label`,style:{color:`var(--df-danger)`}},` Error `,-1),J(my,{value:e.error,"expand-depth":1},null,8,[`value`])],64)):X(``,!0)],64)):(W(),G(H,{key:1},[`value`in e?(W(),G(H,{key:0},[i[8]||=q(`div`,{class:`label`,style:{"margin-top":`0`}},` New State `,-1),J(my,{value:e.value,"expand-depth":1},null,8,[`value`])],64)):`patches`in e?(W(),G(H,{key:1},[i[9]||=q(`div`,{class:`label`,style:{"margin-top":`0`}},` Patches `,-1),J(my,{value:e.patches,"expand-depth":1},null,8,[`value`])],64)):X(``,!0)],64))])]))),128))]))]))}}),[[`__scopeId`,`data-v-fa4416fc`]]),Sx=z({__name:`HistorySmart`,setup(e){function t(e){zv.value=e}return(e,n)=>(W(),K(xx,{"history-records":L(Rv),"is-recording":L(zv),"onUpdate:isRecording":t,onClear:L(Hv)},null,8,[`history-records`,`is-recording`,`onClear`]))}}),Cx={class:`pane`},wx={class:`toolbar`},Tx={class:`muted`},Ex={key:0,class:`center`},Dx={key:1,class:`inst-empty`},Ox={key:2,class:`cards`},kx={class:`card-head`},Ax={class:`card-title`},jx={key:0,class:`badge agent`},Mx={key:1,class:`badge`},Nx={class:`id`},Px=[`href`],Fx={class:`inst-url-text`},Ix={class:`inst-meta`},Lx={class:`inst-meta-wide`},Rx=[`title`],zx=z({__name:`InstancesView`,props:{instances:{}},setup(e){let t=e,n=Z(()=>[...t.instances??[]].sort((e,t)=>e.isCurrent===t.isCurrent?t.startedAt-e.startedAt:e.isCurrent?-1:1));function r(e){let t=Math.max(0,Math.round((Date.now()-e)/1e3));if(t<60)return`${t}s`;let n=Math.floor(t/60);if(n<60)return`${n}m ${t%60}s`;let r=Math.floor(n/60);return r<24?`${r}h ${n%60}m`:`${Math.floor(r/24)}d ${r%24}h`}return(t,i)=>(W(),G(`div`,Cx,[q(`div`,wx,[q(`span`,Tx,j((e.instances??[]).length)+` running `+j((e.instances??[]).length===1?`instance`:`instances`),1),i[0]||=q(`span`,{class:`muted`},[Y(`Devframe dev servers running on this machine, discovered via the shared registry (`),q(`code`,null,`~/.devframe/instances/`),Y(`).`)],-1)]),e.instances?e.instances.length===0?(W(),G(`div`,Dx,[...i[1]||=[q(`span`,{class:`i-ph-broadcast-duotone inst-empty-icon`},null,-1),q(`p`,{class:`inst-empty-title`},` No devframe instances discovered `,-1),q(`p`,null,[Y(` This tab lists every devframe dev server running on your machine, so you can jump between them. Each server registers itself in `),q(`code`,null,`~/.devframe/instances/`),Y(` while it runs. `)],-1),q(`p`,null,[Y(` Nothing shows up when only static/build servers are running, when discovery is turned off (`),q(`code`,null,`DEVFRAME_DISABLE_INSTANCE_REGISTRY=1`),Y(`), or when an in-process host hasn't opted in. Start another `),q(`code`,null,`devframe`),Y(` dev server (or a hub host that calls `),q(`code`,null,`registerDevframeInstance()`),Y(`), then hit refresh. `)],-1)]])):(W(),G(`div`,Ox,[(W(!0),G(H,null,da(n.value,e=>(W(),G(`div`,{key:`${e.pid}-${e.port}`,class:`card`},[q(`div`,kx,[i[2]||=q(`span`,{class:`i-ph-broadcast-duotone cmd-icon`},null,-1),q(`span`,Ax,j(e.name??e.id),1),e.isCurrent?(W(),G(`span`,jx,`this instance`)):X(``,!0),e.hasMcp?(W(),G(`span`,Mx,`MCP`)):X(``,!0)]),q(`div`,Nx,j(e.id),1),q(`a`,{class:`inst-url`,href:e.url,target:`_blank`,rel:`noopener noreferrer`},[i[3]||=q(`span`,{class:`i-ph-arrow-square-out-duotone`},null,-1),q(`span`,Fx,j(e.url),1)],8,Px),q(`dl`,Ix,[q(`div`,null,[i[4]||=q(`dt`,null,`Port`,-1),q(`dd`,null,j(e.port),1)]),q(`div`,null,[i[5]||=q(`dt`,null,`PID`,-1),q(`dd`,null,j(e.pid),1)]),q(`div`,null,[i[6]||=q(`dt`,null,`Uptime`,-1),q(`dd`,null,j(r(e.startedAt)),1)]),q(`div`,Lx,[i[7]||=q(`dt`,null,`Root`,-1),q(`dd`,{title:e.rootDir},j(e.rootDir),9,Rx)])])]))),128))])):(W(),G(`div`,Ex,` Discovering instances… `))]))}}),Bx=z({__name:`InstancesSmart`,setup(e){let t=Jv(),n=sn(null);async function r(){t.value&&(n.value=await t.value.call(`devframes:plugin:inspect:list-instances`))}return Tm(r),Ji(r),(e,t)=>(W(),K(zx,{instances:n.value},null,8,[`instances`]))}}),Vx={class:`split`},Hx={class:`keys`},Ux={class:`keys-head`},Wx={class:`checkbox`},Gx={class:`keys-list`},Kx={key:0,class:`empty`},qx={key:1,class:`empty`},Jx=[`title`,`onClick`],Yx={class:`state-main`},Xx={key:0,class:`center`},Zx={key:1,class:`center`},Qx={class:`state-meta`},$x={class:`state-key`},eS={key:0,class:`pulse`},tS={key:1,class:`note`},nS=z({__name:`StateView`,props:{keys:{},selectedKey:{},value:{},loading:{type:Boolean},isStatic:{type:Boolean},updates:{},highlightPaths:{}},emits:[`select`],setup(e,{emit:t}){let n=e,r=t,i=I(!1),a=Z(()=>{let e=n.keys??[];return i.value?e:e.filter(e=>!e.startsWith(`devframe:`)&&!e.startsWith(`__`))});return(t,n)=>(W(),G(`div`,Vx,[q(`aside`,Hx,[q(`div`,Ux,[q(`span`,null,j(a.value.length)+` keys`,1),q(`label`,Wx,[pr(q(`input`,{"onUpdate:modelValue":n[0]||=e=>i.value=e,type:`checkbox`},null,512),[[Bl,i.value]]),n[1]||=Y(` internal `,-1)])]),q(`div`,Gx,[e.keys?a.value.length===0?(W(),G(`div`,qx,` No shared state`+j(e.keys.length?` (toggle internal)`:``)+`. `,1)):X(``,!0):(W(),G(`div`,Kx,` Loading… `)),(W(!0),G(H,null,da(a.value,t=>(W(),G(`button`,{key:t,class:A([`key-item`,{active:e.selectedKey===t}]),title:t,onClick:e=>r(`select`,t)},j(t),11,Jx))),128))])]),q(`section`,Yx,[e.selectedKey?e.loading?(W(),G(`div`,Zx,` Loading state… `)):(W(),G(H,{key:2},[q(`div`,Qx,[q(`span`,$x,j(e.selectedKey),1),e.isStatic?(W(),G(`span`,tS,`static snapshot`)):(W(),G(`span`,eS,`live`+j(e.updates?` · ${e.updates} update${e.updates>1?`s`:``}`:``),1))]),J(my,{value:e.value,"expand-depth":3,"highlight-paths":e.highlightPaths},null,8,[`value`,`highlight-paths`])],64)):(W(),G(`div`,Xx,` Select a shared-state key to inspect its live value. `))])]))}}),rS=z({__name:`StateSmart`,setup(e){let t=Jv(),n=sn(null),r=I(null),i=sn(void 0),a=I(!1),o=sn(new Set),s=I(0),c=null,l=null;async function u(){t.value&&(n.value=await t.value.call(`devframes:plugin:inspect:list-state-keys`))}Tm(u),Ji(u);function d(e,t,n=``,r=new Set){if(e===t)return r;if(!(typeof e==`object`&&e)||!(typeof t==`object`&&t))return r.add(n),r;let i=new Set([...Object.keys(e),...Object.keys(t)]);for(let a of i){let i=n?`${n}.${a}`:a,o=a in e,s=a in t;!o||!s?r.add(i):d(e[a],t[a],i,r)}return r}function f(e){o.value=e,l&&clearTimeout(l),l=setTimeout(()=>{o.value=new Set},1600)}function p(){c?.(),c=null}return Cr(r,async e=>{if(p(),i.value=void 0,s.value=0,o.value=new Set,!(!e||!t.value)){a.value=!0;try{let n=await t.value.sharedState.get(e);i.value=n.value(),c=n.on(`updated`,e=>{let t=d(i.value,e);i.value=e,s.value++,f(t)})}finally{a.value=!1}}}),Pe(()=>{p(),l&&clearTimeout(l)}),(e,t)=>(W(),K(nS,{keys:n.value,"selected-key":r.value,value:i.value,loading:a.value,"is-static":L(Yv)(),updates:s.value,"highlight-paths":o.value,onSelect:t[0]||=e=>r.value=e},null,8,[`keys`,`selected-key`,`value`,`loading`,`is-static`,`updates`,`highlight-paths`]))}}),iS={class:`app`},aS={class:`app-body`},oS={class:`flex flex-col gap-1`},sS=z({__name:`App`,setup(e){let t=I(`functions`),{refresh:n,loading:r}=Em(),i=Z(()=>hm(Uv.status)),a=Z(()=>_m(Uv.status)),o=[{value:`functions`,label:`Functions`,icon:`i-ph-function-duotone`},{value:`state`,label:`State`,icon:`i-ph-database-duotone`},{value:`agent`,label:`Agent`,icon:`i-ph-robot-duotone`},{value:`commands`,label:`Commands`,icon:`i-ph-terminal-window-duotone`},{value:`history`,label:`History`,icon:`i-ph-clock-counter-clockwise-duotone`},{value:`instances`,label:`Instances`,icon:`i-ph-broadcast-duotone`}],s=Z(()=>Yv()?o.filter(e=>e.value!==`instances`):o);Ji(qv);function c(){location.reload()}return(e,o)=>(W(),G(`div`,iS,[J(dm,{glass:!1,class:`h-nav`},{search:R(()=>[...o[1]||=[q(`div`,null,null,-1)]]),end:R(()=>[i.value?(W(),G(`span`,{key:0,class:A(i.value.class)},[q(`span`,{class:A(i.value.dot)},null,2),Y(` `+j(i.value.label),1)],2)):X(``,!0),J(Qf,{class:`text-sm`,icon:L(r)?`i-ph-arrows-clockwise animate-spin`:`i-ph-arrows-clockwise`,tooltip:L(r)?`Refreshing…`:`Refresh`,label:`Refresh`,disabled:L(r)||!L(Uv).connected,onClick:L(n)},null,8,[`icon`,`tooltip`,`disabled`,`onClick`])]),default:R(()=>[o[2]||=q(`div`,{class:`flex items-center gap-1.5 shrink-0 font-semibold text-sm select-none`},[q(`span`,{class:`i-ph-magnifying-glass-duotone text-base color-active`}),q(`span`,null,`Devframe Inspector`)],-1),J(cm,{modelValue:t.value,"onUpdate:modelValue":o[0]||=e=>t.value=e,tabs:s.value,variant:`segment`},null,8,[`modelValue`,`tabs`])]),_:1}),q(`main`,aS,[a.value?(W(),G(`div`,{key:0,class:A(L(vm)(`h-full`))},[q(`span`,{class:A([a.value.icon,L(ym)(a.value.spin)])},null,2),q(`div`,oS,[q(`p`,{class:A(L(bm)())},j(a.value.title),3),q(`p`,{class:A(L(xm)())},j(a.value.body),3),L(Uv).error&&L(Uv).status===`error`?(W(),G(`p`,{key:0,class:A(L(Sm)())},j(L(Uv).error),3)):X(``,!0)]),a.value.reloadable?(W(),G(`button`,{key:0,type:`button`,class:A(L(pm)({variant:`primary`,size:`sm`})),onClick:c},[...o[3]||=[q(`span`,{class:`i-ph-arrow-clockwise`},null,-1),Y(` Reload `,-1)]],2)):X(``,!0)],2)):(W(),G(H,{key:1},[t.value===`functions`?(W(),K(cx,{key:0})):t.value===`state`?(W(),K(rS,{key:1})):t.value===`agent`?(W(),K(Zy,{key:2})):t.value===`commands`?(W(),K(Db,{key:3})):t.value===`history`?(W(),K(Sx,{key:4})):t.value===`instances`?(W(),K(Bx,{key:5})):X(``,!0)],64))])]))}}),cS=window.matchMedia(`(prefers-color-scheme: dark)`);function lS(e){document.documentElement.classList.toggle(`dark`,e),document.documentElement.classList.toggle(`light`,!e)}lS(cS.matches),cS.addEventListener(`change`,e=>lS(e.matches)),uu(sS).mount(`#app`);
|
|
8
|
+
`))}}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`,[km]: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 G_(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}var K_=Math.random.bind(Math),q_=`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`;function J_(e=21){let t=``,n=e;for(;n--;)t+=q_[K_()*64|0];return t}var Y_=6e4,X_=e=>e,Z_=X_,{clearTimeout:Q_,setTimeout:$_}=globalThis;function ev(e,t){let{post:n,on:r,off:i=()=>{},eventNames:a=[],serialize:o=X_,deserialize:s=Z_,resolver:c,bind:l=`rpc`,timeout:u=Y_,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}=G_(),_=J_();s.i=_;let v;async function y(n=s){return u>=0&&(v=$_(()=>{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{Q_(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&&(Q_(r.timeoutId),n?r.reject(n):r.resolve(t)),p.delete(e)}}return m=r(b),h}function tv(e,t){let{channel:n,rpcOptions:r={}}=t;return ev(e,{...n,timeout:-1,...r,proxify:!1})}function nv(e){let{transport:t,authToken:n,connectionMeta:r,events:i,clientRpc:a,rpcOptions:o={},callTimeout:s=0}=e,c=!1,l=`connecting`,u=null,d=Promise.withResolvers();function f(e,t=null){if(t?u=t:e===`connected`&&(u=null),e===l)return;let n=l;l=e,i.emit($.client.connectionStatus,e,n)}let p=new Set;function m(e){for(let t of[...p])t.reject(e)}function h(){return l===`disconnected`||l===`error`?new Nh(`connection`,`[devframe] Not connected to the devframe server`,{cause:u??void 0}):l===`unauthorized`?new Nh(`auth`,`[devframe] Not authorized by the devframe server`,{cause:u??void 0}):null}function g(e,t){return new Promise((n,r)=>{let a=!1,o,c={reject(e){a||(l(),i.emit($.client.error,e,t),r(e))}};function l(){a=!0,p.delete(c),o&&clearTimeout(o)}p.add(c),s>0&&(o=setTimeout(()=>{c.reject(new Nh(`timeout`,`[devframe] RPC call "${t}" timed out after ${s}ms`))},s)),e.then(e=>{a||(l(),n(e))},e=>{if(a)return;l();let n=e instanceof Error?e:Error(String(e));i.emit($.client.error,n,t),r(n)})})}let _=new Map;for(let e of r.jsonSerializableMethods??[])_.set(e,{jsonSerializable:!0});let v=e.createChannel({definitions:_,onError(e){f(`error`,e),i.emit($.client.connectionError,e),m(new Nh(`connection`,`[devframe] Connection to the devframe server failed`,{cause:e}))},onDisconnected(){l!==`error`&&f(`disconnected`),m(new Nh(`connection`,`[devframe] Disconnected from the devframe server`,{cause:u??void 0}))}}),y=tv(a.functions,{channel:v,rpcOptions:o});a.register({name:$.broadcast.authRevoked,type:`event`,handler:()=>{c=!1;let e=new Nh(`auth`,`[devframe] The devframe server revoked this client's trust`);f(`unauthorized`,e),i.emit($.client.connectionError,e),m(e),i.emit($.client.isTrustedUpdated,!1)}});let b=n;async function x(e){b=e;let t=await y.$call(`anonymous:devframe:auth`,{authToken:e,ua:navigator.userAgent,origin:location.origin});if(c=t.isTrusted,c)d.resolve(!0),f(`connected`);else{let e=new Nh(`auth`,`[devframe] The devframe server refused this client's credentials`);f(`unauthorized`,e),i.emit($.client.connectionError,e)}return i.emit($.client.isTrustedUpdated,c),t.isTrusted}async function S(e){let t=(await y.$call(`anonymous:devframe:auth:exchange`,{code:e,ua:navigator.userAgent,origin:location.origin}))?.authToken??null;return t&&(b=t,c=!0,d.resolve(!0),f(`connected`),i.emit($.client.isTrustedUpdated,!0)),t}async function C(){return c?!0:x(b??``)}async function w(e=6e4){if(c&&d.resolve(!0),e<=0)return d.promise;let t=()=>{};return await Promise.race([d.promise.then(t),new Promise((n,r)=>{let i=setTimeout(()=>{r(Error(`[devframe] Timeout waiting for rpc to be trusted`))},e);t=()=>clearTimeout(i)})]),c}return{transport:t,get isTrusted(){return c},get status(){return l},get connectionError(){return u},requestTrust:C,requestTrustWithToken:x,requestTrustWithCode:S,ensureTrusted:w,call:(...e)=>{let t=String(e[0]),n=h();return n?(i.emit($.client.error,n,t),Promise.reject(n)):g(y.$call(...e),t)},callEvent:(...e)=>{let t=h();if(t){i.emit($.client.error,t,String(e[0]));return}return y.$callEvent(...e)},callOptional:(...e)=>{let t=String(e[0]),n=h();return n?(i.emit($.client.error,n,t),Promise.reject(n)):g(y.$callOptional(...e),t)},close:()=>{v.close()}}}function rv(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 iv(e){let{authToken:t,connectionMeta:n,metaBaseUrl:r,events:i,clientRpc:a,rpcOptions:o={},sseOptions:s={},callTimeout:c=0}=e,l=rv(n.sse,r??`./`,location);return nv({transport:`sse`,authToken:t,connectionMeta:n,events:i,clientRpc:a,rpcOptions:o,callTimeout:c,createChannel:e=>W_({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 av(e){let{name:t,message:n,cause:r,...i}=e,a=r instanceof Error?r:ov(r)?av(r):r,o=a===void 0?Error(n):Error(n,{cause:a});return o.name=t,Object.assign(o,i),o}function ov(e){return typeof e==`object`&&!!e&&typeof e.message==`string`&&typeof e.name==`string`}function sv(e){return typeof e==`object`&&!!e&&e.type===`static`&&typeof e.path==`string`}function cv(e){return typeof e==`object`&&!!e&&e.type===`query`&&typeof e.records==`object`&&e.records!==null}function lv(e){return typeof e==`object`&&!!e&&(`output`in e||`error`in e)}function uv(e){if(e.error)throw av(e.error);return e.output}function dv(e){return e.some(e=>e!=null)}function fv(e){return typeof e==`object`&&e&&`serialization`in e&&`data`in e?e.data:e}function pv(e,t){let n=new Map,r=new Map;function i(e,t){return t===`structured-clone`&&Array.isArray(e)?I_(e):e}function a(e,t){return i(fv(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 lv(r)?uv(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(sv(r)){if(dv(n))throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`);return await o(r)}if(cv(r)){let e=Pm(n),i=r.records[e];if(i)return uv(await s(i,r.serialization));if(r.fallback)return uv(await s(r.fallback,r.serialization));throw Error(`[devframe-rpc] No dump match for "${t}" with args: ${JSON.stringify(n)}`)}if(!dv(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 mv(e){let t=pv(await e.fetchJsonFromBases(Am),e.fetchJsonFromBases);return{transport:`static`,isTrusted:!0,status:`connected`,connectionError:null,requestTrust:async()=>!0,requestTrustWithToken:async()=>!0,requestTrustWithCode:async()=>null,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:()=>{}}}var hv=256,gv=class extends Error{name=`StreamClosedError`};function _v(e={}){let t=e.id??m_(),n=Math.max(0,e.replayWindow??0),r=oh(),i=new AbortController,a=[],o=!1,s=0;function c(e){if(o)throw new gv(`Cannot write to a closed stream "${t}"`);s+=1,n>0&&(a.push({seq:s,chunk:e}),a.length>n&&a.splice(0,a.length-n)),r.emit(`chunk`,s,e)}function l(e){if(o)return;o=!0;let t=yv(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 vv(e={}){let t=e.id??m_(),n=Math.max(1,e.highWaterMark??hv),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 yv(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)}}}var bv=``;function xv(e,t){return`${e}${bv}${t}`}function Sv(e){let t=new Map,n=new Map;e.client.register({name:$.broadcast.streamingChunk,type:`event`,handler(e,n,r,i){t.get(xv(e,n))?._push(r,i)}}),e.client.register({name:$.broadcast.streamingEnd,type:`event`,handler(e,n,r){let i=xv(e,n),a=t.get(i);a&&(a._end(r),t.delete(i))}}),e.client.register({name:$.broadcast.streamingUploadCancel,type:`event`,handler(e,t){let r=xv(e,t),i=n.get(r);i&&(i.abort(`server cancelled upload`),n.delete(r))}}),e.events.on($.client.isTrustedUpdated,n=>{if(n)for(let[n,r]of t){if(r.cancelled||r.done)continue;let t=n.indexOf(bv);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=xv(n,r),o=t.get(a);if(o)return o;let s=vv({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($.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=xv(t,r),a=n.get(i);if(a)return a;let o=_v({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 Cv(){}var wv=new Map;function Tv(e){let t=e.url;e.authToken&&(t=`${t}?${Nm}=${encodeURIComponent(e.authToken)}`);let n=new WebSocket(t),{onConnected:r=Cv,onError:i=Cv,onDisconnected:a=Cv,definitions:o=wv}=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=B_(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 Ev(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 bh(a,/^https/i.test(a)?`wss://`:`ws://`);let o=new URL(a,r);return o.protocol=i,o.href}function Dv(e){let{authToken:t,connectionMeta:n,metaBaseUrl:r,events:i,clientRpc:a,rpcOptions:o={},wsOptions:s={},callTimeout:c=0}=e,l=Ev(n.websocket,r??`./`,location);return nv({transport:`websocket`,authToken:t,connectionMeta:n,events:i,clientRpc:a,rpcOptions:o,callTimeout:c,createChannel:e=>Tv({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 Ov(e){return e.includes(`:`)}function kv(e,t){return Ov(t)?t:`${e}:${t}`}function Av(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 jv(e,t,n){let r=`devframe:settings:${n}:${t}`,i;function a(){return i||=e.sharedState.get(r,{initialValue:{}}),i}return Av(a)}function Mv(e,t){return{global:jv(e,t,`global`),project:jv(e,t,`project`)}}function Nv(e,t){return{namespace:t,base:e,rpc:{namespace:t,register(n){if(Ov(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(kv(t,n),...r)),callEvent:((n,...r)=>e.callEvent(kv(t,n),...r)),callOptional:((n,...r)=>e.callOptional(kv(t,n),...r)),sharedState:((n,r)=>e.sharedState.get(kv(t,n),r)),streaming:{subscribe:(n,r,i)=>e.streaming.subscribe(kv(t,n),r,i),upload:(n,r)=>e.streaming.upload(kv(t,n),r)}},settings:Mv(e,t),scope:e.scope}}function Pv(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 Fv(e={}){let{baseURL:t=`./`,rpcOptions:n={},cacheOptions:r=!1}=e,i=oh(),a=Array.isArray(t)?t:[t],o=await Mh(e),{connectionMeta:s,metaBaseUrl:c,authToken:l}=o,u=a[0]??`./`;try{u=new URL(`.`,c).href}catch{}let d=new Fm({functions:[],...typeof e.cacheOptions==`object`?e.cacheOptions:{}}),f={rpc:void 0},p=new eh(f);async function m(e){let t=[u,...a.filter(e=>e!==u)].filter(e=>e!=null),n=[];for(let r of t)try{return await fetch(gh(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 h={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)}}},g=Pv(e.transport??`auto`,s),_=g===`static`?await mv({fetchJsonFromBases:m}):g===`sse`?iv({...h,sseOptions:e.sseOptions}):Dv({...h,wsOptions:e.wsOptions}),v;try{v=new BroadcastChannel(`devframe-auth`)}catch{}let y,b=!1;function x(e){return((...t)=>b||!y?e(...t):y.then(()=>e(...t)))}let S={events:i,get isTrusted(){return _.isTrusted},get status(){return _.status},get connectionError(){return _.connectionError},get transport(){return _.transport??g},get connection(){return o},connectionMeta:s,ensureTrusted:_.ensureTrusted,requestTrust:_.requestTrust,requestTrustWithToken:async e=>(Oh(e),o={...o,authToken:e},_.requestTrustWithToken(e)),requestTrustWithCode:async e=>{let t=await _.requestTrustWithCode(e);if(!t)return!1;Oh(t),o={...o,authToken:t};try{v?.postMessage({type:`auth-update`,authToken:t})}catch{}return!0},call:x(_.call),callEvent:x(_.callEvent),callOptional:x(_.callOptional),client:p,sharedState:void 0,services:void 0,streaming:void 0,cacheManager:d,scope:void 0,close:()=>_.close?.()};S.sharedState=v_(S),S.streaming=Sv(S),S.services=Rh(S);let C=new Map;S.scope=(e=>{if(!e)return S;let t=C.get(e);return t||(t=Nv(S,e),C.set(e,t)),t}),f.rpc=S;function w(){try{return typeof window<`u`&&window.self===window.top}catch{return!1}}async function ee(){if(!(e.simpleAuth===!1||!w())&&typeof globalThis.prompt==`function`)for(;!S.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 S.requestTrustWithCode(t))return}}async function T(){let t=await _.requestTrust(),n=e.otpParam??`devframe_otp`,r=n?await Lh(S,{param:n}):!1;t||r||S.isTrusted||await ee()}return y=T().then(()=>{b=!0},()=>{b=!0}),v&&(v.onmessage=e=>{e.data?.type===`auth-update`&&e.data.authToken&&S.requestTrustWithToken(e.data.authToken)}),S}var Iv=Fv,Lv=I([]),Rv=I(!0),zv=1;function Bv(e){Rv.value&&Lv.value.push({...e,id:zv++})}function Vv(){Lv.value=[]}var Hv=Jt({connected:!1,status:`connecting`,error:null,backend:null}),Uv=sn(null);function Wv(e){let t=e.call.bind(e);e.call=async(e,...n)=>{let r=Date.now();try{let i=await t(e,...n);return!e.includes(`list-functions`)&&!e.includes(`list-state-keys`)&&e!==`devframe:rpc:server-state:get`&&Bv({type:`call`,method:e,args:n,result:i,duration:Date.now()-r,time:r}),i}catch(t){throw!e.includes(`list-functions`)&&!e.includes(`list-state-keys`)&&e!==`devframe:rpc:server-state:get`&&Bv({type:`call`,method:e,args:n,error:t,duration:Date.now()-r,time:r}),t}};let n=e.callEvent.bind(e);e.callEvent=(e,...t)=>(!e.includes(`list-functions`)&&!e.includes(`list-state-keys`)&&e!==`devframe:rpc:server-state:subscribe`&&Bv({type:`call`,method:e,args:t,duration:0,time:Date.now()}),n(e,...t));let r=e.client.definitions.get(`devframe:rpc:client-state:updated`);if(r&&r.handler){let e=r.handler;r.handler=(t,n,r)=>(Bv({type:`state`,key:t,value:n,syncId:r,time:Date.now()}),e(t,n,r))}let i=e.client.definitions.get(`devframe:rpc:client-state:patch`);if(i&&i.handler){let e=i.handler;i.handler=(t,n,r)=>(Bv({type:`state`,key:t,patches:n,syncId:r,time:Date.now()}),e(t,n,r))}}function Gv(e){Hv.status=e.status,Hv.connected=e.status===`connected`,Hv.error=e.connectionError?.message??null}async function Kv(){try{let e=await Iv();Wv(e),Uv.value=e,Hv.backend=e.connectionMeta.backend,Gv(e),e.events.on(`connection:status`,()=>Gv(e)),e.connectionMeta.backend===`websocket`&&e.ensureTrusted(5e3).catch(()=>{})}catch(e){Hv.status=`error`,Hv.error=e?.message??String(e)}}function qv(){return Uv}function Jv(){return Hv.backend===`static`}var Yv=z({__name:`FeedbackSpinner`,props:{size:{default:`1em`}},setup(e){let t=e,n=Z(()=>typeof t.size==`number`?`${t.size}px`:t.size);return(e,t)=>(W(),G(`span`,{class:`border-2 border-current border-t-transparent rounded-full inline-block animate-spin`,style:k({width:n.value,height:n.value}),role:`status`,"aria-label":`Loading`},null,4))}}),Xv=z({__name:`ActionButton`,props:{as:{},to:{},href:{},icon:{},variant:{default:`action`},size:{default:`md`},loading:{type:Boolean},disabled:{type:Boolean}},setup(e){let t=e,n=Z(()=>t.as?t.as:t.href!=null||t.to!=null?`a`:`button`),r=Z(()=>n.value===`a`),i=Z(()=>n.value===`button`),a=Z(()=>t.size===`sm`),o=Z(()=>t.variant===`primary`?a.value?`btn-primary text-sm`:`btn-primary`:t.variant===`text`?a.value?`btn-text text-sm`:`btn-text`:a.value?`btn-action-sm`:`btn-action`),s=Z(()=>t.disabled||t.loading);return(t,a)=>(W(),K(sa(n.value),{class:A([o.value,{"pointer-events-none op-mute":s.value&&!i.value}]),href:r.value?e.href??e.to:void 0,to:e.as&&e.to!=null?e.to:void 0,disabled:i.value?s.value:void 0,"aria-disabled":s.value||void 0,"aria-busy":e.loading||void 0},{default:R(()=>[e.loading?(W(),K(Yv,{key:0,size:`1em`})):e.icon?(W(),G(`span`,{key:1,class:A(e.icon),"aria-hidden":`true`},null,2)):X(``,!0),B(t.$slots,`default`)]),_:3},8,[`class`,`href`,`to`,`disabled`,`aria-disabled`,`aria-busy`]))}}),Zv=128;function Qv(e){return e.replace(/[^\w-]+/g,`_`).slice(0,Zv)}var $v={class:`json`},ey={key:0,class:`json-key`},ty={key:1,class:`json-colon`},ny={key:0,class:`json-key`},ry={key:1,class:`json-colon`},iy={class:`json-meta`},ay={key:2},oy={key:0,class:`json-key`},sy={key:1,class:`json-colon`},cy={key:2,class:`json-meta`},ly={key:3,class:`json-meta`},uy={key:0,class:`json-children`},dy={key:1,class:`json-row`},fy={class:`json-meta`},py=z({__name:`JsonView`,props:{value:{},name:{},path:{default:``},depth:{default:0},expandDepth:{default:1},highlightPaths:{}},setup(e){let t=e,n=Z(()=>Array.isArray(t.value)?`array`:t.value!==null&&typeof t.value==`object`?`object`:`primitive`),r=Z(()=>n.value===`array`?t.value.map((e,t)=>[String(t),e]):n.value===`object`?Object.entries(t.value):[]),i=I(t.depth<t.expandDepth),a=Z(()=>r.value.length===0),o=Z(()=>!!t.path&&t.highlightPaths?.has(t.path));function s(e){return t.path?`${t.path}.${e}`:e}function c(e){return e==null?`v-null`:`v-${typeof e}`}function l(e){return e===void 0?`undefined`:e===null?`null`:typeof e==`string`?JSON.stringify(e):String(e)}let u=Z(()=>n.value===`array`?`[`:`{`),d=Z(()=>n.value===`array`?`]`:`}`),f=Z(()=>n.value===`array`?`[${r.value.length}]`:`{${r.value.length}}`);return(t,p)=>{let m=aa(`JsonView`,!0);return W(),G(`div`,$v,[n.value===`primitive`?(W(),G(`div`,{key:0,class:A([`json-row`,{changed:o.value}])},[e.name===void 0?X(``,!0):(W(),G(`span`,ey,j(e.name),1)),e.name===void 0?X(``,!0):(W(),G(`span`,ty,`:`)),q(`span`,{class:A(c(e.value))},j(l(e.value)),3)],2)):a.value?(W(),G(`div`,{key:1,class:A([`json-row`,{changed:o.value}])},[e.name===void 0?X(``,!0):(W(),G(`span`,ny,j(e.name),1)),e.name===void 0?X(``,!0):(W(),G(`span`,ry,`:`)),q(`span`,iy,j(u.value)+j(d.value),1)],2)):(W(),G(`div`,ay,[q(`div`,{class:A([`json-row json-toggle`,{changed:o.value}]),onClick:p[0]||=e=>i.value=!i.value},[q(`span`,{class:A([`json-caret`,{open:i.value}])},`▶`,2),e.name===void 0?X(``,!0):(W(),G(`span`,oy,j(e.name),1)),e.name===void 0?X(``,!0):(W(),G(`span`,sy,`:`)),i.value?(W(),G(`span`,cy,j(u.value),1)):(W(),G(`span`,ly,j(f.value),1))],2),i.value?(W(),G(`div`,uy,[(W(!0),G(H,null,da(r.value,([t,n])=>(W(),K(m,{key:t,name:t,value:n,path:s(t),depth:e.depth+1,"expand-depth":e.expandDepth,"highlight-paths":e.highlightPaths},null,8,[`name`,`value`,`path`,`depth`,`expand-depth`,`highlight-paths`]))),128))])):X(``,!0),i.value?(W(),G(`div`,dy,[q(`span`,fy,j(d.value),1)])):X(``,!0)]))])}}}),my={class:`pane`},hy={key:0,class:`center`},gy={class:`section-title`},_y={key:0,class:`empty`},vy={key:1,class:`cards`},yy=[`onClick`],by={class:`card-title`},xy={class:`badge flag`},Sy={class:`id`},Cy={key:0,class:`id-note`},wy={class:`desc`},Ty={key:1,class:`tags`},Ey=[`onUpdate:modelValue`],Dy={style:{"margin-top":`8px`,display:`flex`,gap:`8px`,"align-items":`center`}},Oy={key:0,class:`note`},ky={key:3,class:`result`},Ay={class:`result-head`},jy={key:0,class:`ok`},My={key:1,class:`fail`},Ny={key:2,class:`muted`},Py={class:`section-title`},Fy={key:2,class:`empty`},Iy={key:3,class:`cards`},Ly=[`onClick`],Ry={class:`card-title`},zy={key:0,class:`badge flag`},By={class:`id`},Vy={key:0,class:`desc`},Hy={style:{"margin-top":`8px`,display:`flex`,gap:`8px`,"align-items":`center`}},Uy={key:0,class:`note`},Wy={key:0,class:`result`},Gy={class:`result-head`},Ky={key:0,class:`ok`},qy={key:1,class:`fail`},Jy={key:2,class:`muted`},Yy=z({__name:`AgentView`,props:{manifest:{},isStatic:{type:Boolean},results:{},pending:{}},emits:[`invoke`,`read`],setup(e,{emit:t}){let n=t,r=I(null),i=Jt({});function a(e){r.value=r.value===e?null:e,i[e]===void 0&&(i[e]=`{}`)}function o(e){let t;try{t=JSON.parse(i[e]||`{}`)}catch(e){throw Error(`Invalid JSON args: ${e.message}`)}n(`invoke`,e,t)}function s(e){n(`read`,e)}return(t,n)=>(W(),G(`div`,my,[e.manifest?(W(),G(H,{key:1},[q(`div`,gy,` Tools · `+j(e.manifest.tools.length),1),e.manifest.tools.length===0?(W(),G(`div`,_y,` No agent-exposed tools. `)):(W(),G(`div`,vy,[(W(!0),G(H,null,da(e.manifest.tools,t=>(W(),G(`div`,{key:t.id,class:`card`},[q(`div`,{class:`card-head`,style:{cursor:`pointer`,"user-select":`none`},onClick:e=>a(t.id)},[q(`div`,{class:A([`chev i-ph-caret-right`,{open:r.value===t.id}])},null,2),q(`span`,by,j(t.title),1),q(`span`,xy,j(t.kind),1),q(`span`,{class:A([`badge`,`safety-${t.safety}`])},j(t.safety),3)],8,yy),q(`div`,Sy,j(L(Qv)(t.id)),1),L(Qv)(t.id)===t.id?X(``,!0):(W(),G(`div`,Cy,` internal id: `+j(t.id),1)),q(`p`,wy,j(t.description),1),t.tags&&t.tags.length?(W(),G(`div`,Ty,[(W(!0),G(H,null,da(t.tags,e=>(W(),G(`span`,{key:e,class:`badge flag`},j(e),1))),128))])):X(``,!0),r.value===t.id?(W(),G(H,{key:2},[t.inputSchema?(W(),G(H,{key:0},[n[0]||=q(`div`,{class:`label`},` Input schema `,-1),J(py,{value:t.inputSchema,"expand-depth":1},null,8,[`value`])],64)):X(``,!0),t.outputSchema?(W(),G(H,{key:1},[n[1]||=q(`div`,{class:`label`},` Output schema `,-1),J(py,{value:t.outputSchema,"expand-depth":1},null,8,[`value`])],64)):X(``,!0),t.examples&&t.examples.length?(W(),G(H,{key:2},[n[2]||=q(`div`,{class:`label`},` Examples `,-1),J(py,{value:t.examples,"expand-depth":1},null,8,[`value`])],64)):X(``,!0),n[3]||=q(`div`,{class:`label`},` Invoke (MCP format) `,-1),pr(q(`textarea`,{"onUpdate:modelValue":e=>i[t.id]=e,class:`args`,spellcheck:`false`,placeholder:`{}`},null,8,Ey),[[zl,i[t.id]]]),q(`div`,Dy,[J(Xv,{variant:`primary`,size:`sm`,icon:`i-ph-play-duotone`,loading:e.pending[t.id],disabled:e.pending[t.id]||e.isStatic,onClick:e=>o(t.id)},{default:R(()=>[Y(j(e.pending[t.id]?`Invoking…`:`Invoke`),1)]),_:2},1032,[`loading`,`disabled`,`onClick`]),e.isStatic?(W(),G(`span`,Oy,`read-only static backend`)):X(``,!0)]),e.results[t.id]?(W(),G(`div`,ky,[q(`div`,Ay,[e.results[t.id].ok?(W(),G(`span`,jy,`✓ resolved`)):(W(),G(`span`,My,`✕ threw`)),`durationMs`in e.results[t.id]?(W(),G(`span`,Ny,j(e.results[t.id].durationMs)+`ms`,1)):X(``,!0)]),e.results[t.id].ok?(W(),K(py,{key:0,value:e.results[t.id].result,"expand-depth":2},null,8,[`value`])):(W(),K(py,{key:1,value:e.results[t.id].error,"expand-depth":2},null,8,[`value`]))])):X(``,!0)],64)):X(``,!0)]))),128))])),q(`div`,Py,` Resources · `+j(e.manifest.resources.length),1),e.manifest.resources.length===0?(W(),G(`div`,Fy,` No agent-readable resources. `)):(W(),G(`div`,Iy,[(W(!0),G(H,null,da(e.manifest.resources,t=>(W(),G(`div`,{key:t.id,class:`card`},[q(`div`,{class:`card-head`,style:{cursor:`pointer`,"user-select":`none`},onClick:e=>a(t.id)},[q(`div`,{class:A([`chev i-ph-caret-right`,{open:r.value===t.id}])},null,2),q(`span`,Ry,j(t.name),1),t.mimeType?(W(),G(`span`,zy,j(t.mimeType),1)):X(``,!0)],8,Ly),q(`div`,By,j(t.uri),1),t.description?(W(),G(`p`,Vy,j(t.description),1)):X(``,!0),r.value===t.id?(W(),G(H,{key:1},[q(`div`,Hy,[J(Xv,{variant:`primary`,size:`sm`,icon:`i-ph-book-open-duotone`,loading:e.pending[t.id],disabled:e.pending[t.id]||e.isStatic,onClick:e=>s(t.id)},{default:R(()=>[Y(j(e.pending[t.id]?`Reading…`:`Read Resource`),1)]),_:2},1032,[`loading`,`disabled`,`onClick`]),e.isStatic?(W(),G(`span`,Uy,`read-only static backend`)):X(``,!0)]),e.results[t.id]?(W(),G(`div`,Wy,[q(`div`,Gy,[e.results[t.id].ok?(W(),G(`span`,Ky,`✓ resolved`)):(W(),G(`span`,qy,`✕ threw`)),`durationMs`in e.results[t.id]?(W(),G(`span`,Jy,j(e.results[t.id].durationMs)+`ms`,1)):X(``,!0)]),e.results[t.id].ok?(W(),K(py,{key:0,value:e.results[t.id].result,"expand-depth":2},null,8,[`value`])):(W(),K(py,{key:1,value:e.results[t.id].error,"expand-depth":2},null,8,[`value`]))])):X(``,!0)],64)):X(``,!0)]))),128))]))],64)):(W(),G(`div`,hy,` Loading agent surface… `))]))}}),Xy=z({__name:`AgentSmart`,setup(e){let t=qv(),n=sn(null),r=Jt({}),i=Jt({});async function a(){t.value&&(n.value=await t.value.call(`devframes:plugin:inspect:describe-agent`))}Tm(a),Ji(a);async function o(e,n){if(t.value){i[e]=!0;try{r[e]=await t.value.call(`devframes:plugin:inspect:invoke-agent-tool`,e,n)}catch(t){let n=t;r[e]={ok:!1,error:{name:n?.name??`Error`,message:n?.message??String(t)}}}finally{i[e]=!1}}}async function s(e){if(t.value){i[e]=!0;try{r[e]=await t.value.call(`devframes:plugin:inspect:read-agent-resource`,e)}catch(t){let n=t;r[e]={ok:!1,error:{name:n?.name??`Error`,message:n?.message??String(t)}}}finally{i[e]=!1}}}return(e,t)=>(W(),K(Yy,{manifest:n.value,"is-static":L(Jv)(),results:r,pending:i,onInvoke:o,onRead:s},null,8,[`manifest`,`is-static`,`results`,`pending`]))}}),Zy={class:`cmd-title`},Qy={class:`cmd-id mono`},$y={class:`fn-flags`},eb={key:0,class:`badge flag`},tb={key:1,class:`badge flag`,title:`No handler, a group for its children`},nb={key:2,class:`badge flag`},rb={key:0,class:`fn-detail`},ib={key:0,class:`desc`},ab=[`value`],ob={style:{"margin-top":`8px`,display:`flex`,gap:`8px`,"align-items":`center`}},sb={key:0,class:`note`},cb={key:0,class:`result`},lb={class:`result-head`},ub={key:0,class:`ok`},db={key:1,class:`fail`},fb={key:2,class:`muted`},pb={key:2,class:`note`},mb={class:`cmd-children`},hb=z({name:`CommandRow`,__name:`CommandRow`,props:{cmd:{},argsInput:{},results:{},pending:{},isStatic:{type:Boolean},depth:{}},emits:[`execute`,`updateArgs`],setup(e,{emit:t}){let n=e,r=t,i=I(!1),a=Z(()=>n.cmd.hasHandler||!!n.cmd.description||!!n.cmd.children?.length);function o(){i.value=!i.value}return(t,n)=>{let s=aa(`CommandRow`,!0);return W(),G(`div`,{class:A([`fn-row`,{"cmd-row-child":e.depth}])},[q(`div`,{class:A([`fn-head`,{clickable:a.value}]),onClick:o},[q(`div`,{class:A([`chev i-ph-caret-right`,{open:i.value}])},null,2),e.cmd.icon?(W(),G(`span`,{key:0,class:A([typeof e.cmd.icon==`string`?e.cmd.icon:`i-ph-terminal-window-duotone`,`cmd-icon`])},null,2)):X(``,!0),q(`span`,Zy,j(e.cmd.title),1),q(`span`,Qy,j(e.cmd.id),1),q(`span`,$y,[e.cmd.category?(W(),G(`span`,eb,j(e.cmd.category),1)):X(``,!0),e.cmd.hasHandler?X(``,!0):(W(),G(`span`,tb,`group`)),e.cmd.children?.length?(W(),G(`span`,nb,j(e.cmd.children.length)+` children`,1)):X(``,!0)])],2),i.value?(W(),G(`div`,rb,[e.cmd.description?(W(),G(`p`,ib,j(e.cmd.description),1)):X(``,!0),e.cmd.hasHandler?(W(),G(H,{key:1},[n[4]||=q(`div`,{class:`label`},` Execute with positional args as a JSON array `,-1),q(`textarea`,{value:e.argsInput[e.cmd.id],class:`args`,spellcheck:`false`,placeholder:`[]`,onInput:n[0]||=t=>r(`updateArgs`,e.cmd.id,t.target.value)},null,40,ab),q(`div`,ob,[J(Xv,{variant:`primary`,size:`sm`,icon:`i-ph-play-duotone`,loading:e.pending[e.cmd.id],disabled:e.pending[e.cmd.id]||e.isStatic,onClick:n[1]||=eu(t=>r(`execute`,e.cmd),[`stop`])},{default:R(()=>[Y(j(e.pending[e.cmd.id]?`Running…`:`Run`),1)]),_:1},8,[`loading`,`disabled`]),e.isStatic?(W(),G(`span`,sb,`read-only static backend, execution disabled`)):X(``,!0)]),e.results[e.cmd.id]?(W(),G(`div`,cb,[q(`div`,lb,[e.results[e.cmd.id].ok?(W(),G(`span`,ub,`✓ resolved`)):(W(),G(`span`,db,`✕ threw`)),`durationMs`in e.results[e.cmd.id]?(W(),G(`span`,fb,j(e.results[e.cmd.id].durationMs)+`ms`,1)):X(``,!0)]),e.results[e.cmd.id].ok?(W(),K(py,{key:0,value:e.results[e.cmd.id].result,"expand-depth":2},null,8,[`value`])):(W(),K(py,{key:1,value:e.results[e.cmd.id].error,"expand-depth":2},null,8,[`value`]))])):X(``,!0)],64)):e.cmd.children?.length?X(``,!0):(W(),G(`p`,pb,` Group-only command, no handler to run. `)),e.cmd.children?.length?(W(),G(H,{key:3},[n[5]||=q(`div`,{class:`label`},` Children `,-1),q(`div`,mb,[(W(!0),G(H,null,da(e.cmd.children,t=>(W(),K(s,{key:t.id,cmd:t,"args-input":e.argsInput,results:e.results,pending:e.pending,"is-static":e.isStatic,depth:(e.depth??0)+1,onExecute:n[2]||=e=>r(`execute`,e),onUpdateArgs:n[3]||=(e,t)=>r(`updateArgs`,e,t)},null,8,[`cmd`,`args-input`,`results`,`pending`,`is-static`,`depth`]))),128))])],64)):X(``,!0)])):X(``,!0)],2)}}}),gb={class:`pane`},_b={class:`toolbar`},vb={class:`search`},yb={class:`muted`},bb={class:`badge flag`},xb={key:0,class:`center`},Sb={key:1,class:`empty`},Cb={key:2,class:`empty`},wb={key:3,class:`fn-list`},Tb=z({__name:`CommandsView`,props:{commands:{},isStatic:{type:Boolean},results:{},pending:{}},emits:[`execute`],setup(e,{emit:t}){let n=e,r=t,i=I(``),a=Jt({});function o(e,t){return e.id.toLowerCase().includes(t)||e.title.toLowerCase().includes(t)||e.category?.toLowerCase().includes(t)?!0:e.children?.some(e=>o(e,t))??!1}let s=Z(()=>{let e=n.commands??[],t=i.value.trim().toLowerCase();return[...t?e.filter(e=>o(e,t)):e].sort((e,t)=>e.title.localeCompare(t.title))}),c=Z(()=>{let e={};for(let t of n.commands??[]){let n=t.category??`uncategorized`;e[n]=(e[n]||0)+1}return e});function l(e){let t;try{let n=JSON.parse(a[e.id]||`[]`);t=Array.isArray(n)?n:[n]}catch(e){throw Error(`Invalid JSON args: ${e.message}`)}r(`execute`,e,t)}return(t,n)=>(W(),G(`div`,gb,[q(`div`,_b,[q(`label`,vb,[n[2]||=q(`div`,{class:`i-ph-magnifying-glass-duotone`},null,-1),pr(q(`input`,{"onUpdate:modelValue":n[0]||=e=>i.value=e,placeholder:`Filter commands by id, title, category…`,spellcheck:`false`},null,512),[[zl,i.value]])]),q(`span`,yb,j((e.commands??[]).length)+` commands`,1),(W(!0),G(H,null,da(c.value,(e,t)=>(W(),G(`span`,{key:t,class:`muted`},[q(`span`,bb,j(t),1),Y(` `+j(e),1)]))),128))]),e.commands?e.commands.length===0?(W(),G(`div`,Sb," No commands registered. Commands are a `@devframes/hub` feature; this connection isn't mounted inside a hub. ")):s.value.length===0?(W(),G(`div`,Cb,` No commands match "`+j(i.value)+`". `,1)):(W(),G(`div`,wb,[(W(!0),G(H,null,da(s.value,t=>(W(),K(hb,{key:t.id,cmd:t,"args-input":a,results:e.results,pending:e.pending,"is-static":e.isStatic,onExecute:l,onUpdateArgs:n[1]||=(e,t)=>a[e]=t},null,8,[`cmd`,`args-input`,`results`,`pending`,`is-static`]))),128))])):(W(),G(`div`,xb,` Loading commands… `))]))}}),Eb=z({__name:`CommandsSmart`,setup(e){let t=qv(),n=sn(null),r=Jt({}),i=Jt({});async function a(){t.value&&(n.value=await t.value.call(`devframes:plugin:inspect:list-commands`))}Tm(a),Ji(a);async function o(e,n){if(t.value){i[e.id]=!0;try{r[e.id]=await t.value.call(`devframes:plugin:inspect:execute-command`,e.id,n)}catch(t){let n=t;r[e.id]={ok:!1,error:{name:n?.name??`Error`,message:n?.message??String(t)}}}finally{i[e.id]=!1}}}return(e,t)=>(W(),K(Tb,{commands:n.value,"is-static":L(Jv)(),results:r,pending:i,onExecute:o},null,8,[`commands`,`is-static`,`results`,`pending`]))}});function Db(e,t=1){let n=0;for(let t=0;t<e.length;t++)n=e.charCodeAt(t)+((n<<5)-n);return Ob(n%360,t)}function Ob(e,t=1){return`hsla(${e}, 60%, 50%, ${t})`}function kb(e){let t=e.split(/([:/])/),n=[],r=``;for(let e=0;e<t.length;e+=2){let i=t[e]??``,a=t[e+1]??``;if(i===``&&a===``)continue;r+=i;let o=a===``;n.push({text:i,separator:a,isLeaf:o,color:o?void 0:Db(r)}),r+=a}return n}var Ab=[`title`],jb={key:0,class:`ns-sep`},Mb=z({__name:`FunctionName`,props:{name:{}},setup(e){let t=e,n=Z(()=>kb(t.name));return(t,r)=>(W(),G(`span`,{class:`fn-name`,title:e.name},[(W(!0),G(H,null,da(n.value,(e,t)=>(W(),G(H,{key:t},[q(`span`,{class:`ns-seg`,style:k(e.color?{color:e.color}:void 0)},j(e.text),5),e.separator?(W(),G(`span`,jb,j(e.separator),1)):X(``,!0)],64))),128))],8,Ab))}}),Nb={class:`fn-row`},Pb={class:`fn-flags`},Fb={key:0,class:`badge agent`,title:`Exposed to agents`},Ib={key:1,class:`badge flag`,title:`Strict JSON wire serialization`},Lb={key:2,class:`badge flag`,title:`Baked into the static build dump`},Rb={key:3,class:`badge flag`},zb={key:4,class:`badge flag`},Bb={key:5,class:`badge flag`},Vb={key:0,class:`fn-detail`},Hb={key:0,class:`desc`},Ub=[`value`],Wb={style:{"margin-top":`8px`,display:`flex`,gap:`8px`,"align-items":`center`}},Gb={key:0,class:`note`},Kb={key:0,class:`result`},qb={class:`result-head`},Jb={key:0,class:`ok`},Yb={key:1,class:`fail`},Xb={key:2,class:`muted`},Zb={key:4,class:`note`},Qb=z({__name:`FunctionRow`,props:{fn:{},argsInput:{},results:{},pending:{},isStatic:{type:Boolean}},emits:[`invoke`,`updateArgs`],setup(e,{emit:t}){let n=e,r=t,i=I(!1),a=Z(()=>n.fn.invokable||!!n.fn.agent||n.fn.hasArgs||n.fn.hasReturns);function o(){i.value=!i.value}return(t,n)=>(W(),G(`div`,Nb,[q(`div`,{class:A([`fn-head`,{clickable:a.value}]),onClick:o},[q(`div`,{class:A([`chev i-ph-caret-right`,{open:i.value}])},null,2),J(Mb,{name:e.fn.name},null,8,[`name`]),q(`span`,Pb,[q(`span`,{class:A([`badge`,e.fn.type])},j(e.fn.type),3),e.fn.agent?(W(),G(`span`,Fb,`agent`)):X(``,!0),e.fn.jsonSerializable?(W(),G(`span`,Ib,`json`)):X(``,!0),e.fn.snapshot?(W(),G(`span`,Lb,`snapshot`)):X(``,!0),e.fn.hasArgs?(W(),G(`span`,Rb,`args`)):X(``,!0),e.fn.hasReturns?(W(),G(`span`,zb,`returns`)):X(``,!0),e.fn.hasDump?(W(),G(`span`,Bb,`dump`)):X(``,!0)])],2),i.value?(W(),G(`div`,Vb,[e.fn.agent?(W(),G(`p`,Hb,j(e.fn.agent.description),1)):X(``,!0),e.fn.argsSchema?(W(),G(H,{key:1},[n[2]||=q(`div`,{class:`label`},` Args schema `,-1),J(py,{value:e.fn.argsSchema,"expand-depth":0},null,8,[`value`])],64)):X(``,!0),e.fn.returnsSchema?(W(),G(H,{key:2},[n[3]||=q(`div`,{class:`label`},` Returns schema `,-1),J(py,{value:e.fn.returnsSchema,"expand-depth":0},null,8,[`value`])],64)):X(``,!0),e.fn.invokable?(W(),G(H,{key:3},[n[4]||=q(`div`,{class:`label`},` Invoke with positional args as a JSON array `,-1),q(`textarea`,{value:e.argsInput[e.fn.name],class:`args`,spellcheck:`false`,placeholder:`[]`,onInput:n[0]||=t=>r(`updateArgs`,e.fn.name,t.target.value)},null,40,Ub),q(`div`,Wb,[J(Xv,{variant:`primary`,size:`sm`,icon:`i-ph-play-duotone`,loading:e.pending[e.fn.name],disabled:e.pending[e.fn.name]||e.isStatic,onClick:n[1]||=eu(t=>r(`invoke`,e.fn),[`stop`])},{default:R(()=>[Y(j(e.pending[e.fn.name]?`Invoking…`:`Invoke`),1)]),_:1},8,[`loading`,`disabled`]),e.isStatic?(W(),G(`span`,Gb,`read-only static backend, invocation disabled`)):X(``,!0)]),e.results[e.fn.name]?(W(),G(`div`,Kb,[q(`div`,qb,[e.results[e.fn.name].ok?(W(),G(`span`,Jb,`✓ resolved`)):(W(),G(`span`,Yb,`✕ threw`)),`durationMs`in e.results[e.fn.name]?(W(),G(`span`,Xb,j(e.results[e.fn.name].durationMs)+`ms`,1)):X(``,!0)]),e.results[e.fn.name].ok?(W(),K(py,{key:0,value:e.results[e.fn.name].result,"expand-depth":2},null,8,[`value`])):(W(),K(py,{key:1,value:e.results[e.fn.name].error,"expand-depth":2},null,8,[`value`]))])):X(``,!0)],64)):(W(),G(`p`,Zb,j(e.fn.type)+` functions may carry side effects, so the inspector does not invoke them. `,1))])):X(``,!0)]))}}),$b={class:`pane`},ex={class:`toolbar`},tx={class:`search`},nx={class:`muted`},rx={key:0,class:`center`},ix={key:1,class:`empty`},ax={key:2,class:`fn-list`},ox=z({__name:`FunctionsView`,props:{functions:{},isStatic:{type:Boolean},results:{},pending:{}},emits:[`invoke`],setup(e,{emit:t}){let n=e,r=t,i=I(``),a=Jt({}),o=Z(()=>{let e=n.functions??[],t=i.value.trim().toLowerCase();return[...t?e.filter(e=>e.name.toLowerCase().includes(t)):e].sort((e,t)=>e.name.localeCompare(t.name))}),s=Z(()=>{let e={};for(let t of n.functions??[])e[t.type]=(e[t.type]||0)+1;return e});function c(e){let t;try{let n=JSON.parse(a[e.name]||`[]`);t=Array.isArray(n)?n:[n]}catch(e){throw Error(`Invalid JSON args: ${e.message}`)}r(`invoke`,e,t)}return(t,n)=>(W(),G(`div`,$b,[q(`div`,ex,[q(`label`,tx,[n[2]||=q(`div`,{class:`i-ph-magnifying-glass-duotone`},null,-1),pr(q(`input`,{"onUpdate:modelValue":n[0]||=e=>i.value=e,placeholder:`Filter functions by name…`,spellcheck:`false`},null,512),[[zl,i.value]])]),q(`span`,nx,j((e.functions??[]).length)+` functions`,1),(W(!0),G(H,null,da(s.value,(e,t)=>(W(),G(`span`,{key:t,class:`muted`},[q(`span`,{class:A([`badge`,t])},j(t),3),Y(` `+j(e),1)]))),128))]),e.functions?o.value.length===0?(W(),G(`div`,ix,` No functions match “`+j(i.value)+`”. `,1)):(W(),G(`div`,ax,[(W(!0),G(H,null,da(o.value,t=>(W(),K(Qb,{key:t.name,fn:t,"args-input":a,results:e.results,pending:e.pending,"is-static":e.isStatic,onInvoke:c,onUpdateArgs:n[1]||=(e,t)=>a[e]=t},null,8,[`fn`,`args-input`,`results`,`pending`,`is-static`]))),128))])):(W(),G(`div`,rx,` Loading functions… `))]))}}),sx=z({__name:`FunctionsSmart`,setup(e){let t=qv(),n=sn(null),r=Jt({}),i=Jt({});async function a(){t.value&&(n.value=await t.value.call(`devframes:plugin:inspect:list-functions`))}Tm(a),Ji(a);async function o(e,n){if(t.value){i[e.name]=!0;try{r[e.name]=await t.value.call(`devframes:plugin:inspect:invoke`,e.name,n)}catch(t){let n=t;r[e.name]={ok:!1,error:{name:n?.name??`Error`,message:n?.message??String(t)}}}finally{i[e.name]=!1}}}return(e,t)=>(W(),K(ox,{functions:n.value,"is-static":L(Jv)(),results:r,pending:i,onInvoke:o},null,8,[`functions`,`is-static`,`results`,`pending`]))}}),cx={class:`pane flex-col`},lx={class:`toolbar`},ux={class:`muted`},dx={key:0,class:`center`},fx={key:1,style:{padding:`14px`,display:`flex`,"flex-direction":`column`,gap:`14px`}},px={style:{display:`flex`,gap:`8px`,"align-items":`center`,"margin-bottom":`8px`,"flex-wrap":`wrap`}},mx={class:`muted`,style:{"font-family":`var(--df-mono)`,"font-size":`11px`}},hx={style:{"font-family":`var(--df-mono)`,"font-weight":`600`,"font-size":`12.5px`}},gx={class:`muted`},_x={style:{"font-family":`var(--df-mono)`,"font-weight":`600`,"font-size":`12.5px`,color:`var(--df-accent)`}},vx={class:`muted`},yx={style:{"padding-left":`8px`,"border-left":`2px solid var(--df-border-soft)`}},bx=((e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n})(z({__name:`HistoryView`,props:{historyRecords:{},isRecording:{type:Boolean}},emits:[`update:isRecording`,`clear`],setup(e,{emit:t}){let n=t;function r(e){let t=new Date(e);return`${t.getHours().toString().padStart(2,`0`)}:${t.getMinutes().toString().padStart(2,`0`)}:${t.getSeconds().toString().padStart(2,`0`)}.${t.getMilliseconds().toString().padStart(3,`0`)}`}return(t,i)=>(W(),G(`div`,cx,[q(`div`,lx,[J(Xv,{variant:e.isRecording?`action`:`text`,size:`sm`,icon:e.isRecording?`i-ph-record-fill text-error`:`i-ph-play-duotone`,title:e.isRecording?`Click to pause recording`:`Click to record`,onClick:i[0]||=t=>n(`update:isRecording`,!e.isRecording)},{default:R(()=>[Y(j(e.isRecording?`Recording`:`Paused`),1)]),_:1},8,[`variant`,`icon`,`title`]),J(Xv,{variant:`text`,size:`sm`,icon:`i-ph-trash-duotone`,onClick:i[1]||=e=>n(`clear`)},{default:R(()=>[...i[2]||=[Y(` Clear `,-1)]]),_:1}),q(`span`,ux,j(e.historyRecords.length)+` records`,1)]),e.historyRecords.length===0?(W(),G(`div`,dx,` No history yet. `)):(W(),G(`div`,fx,[(W(!0),G(H,null,da(e.historyRecords,e=>(W(),G(`div`,{key:e.id,style:{border:`1px solid var(--df-border)`,"border-radius":`var(--df-radius)`,background:`var(--df-bg-soft)`,padding:`12px`}},[q(`div`,px,[q(`span`,mx,j(r(e.time)),1),e.type===`call`?(W(),G(H,{key:0},[i[3]||=q(`span`,{class:`badge action`},`RPC Call`,-1),q(`span`,hx,j(e.method),1),q(`span`,gx,j(e.duration)+`ms`,1)],64)):(W(),G(H,{key:1},[i[4]||=q(`span`,{class:`badge static`},`State Update`,-1),q(`span`,_x,j(e.key),1),q(`span`,vx,`Sync ID: `+j(e.syncId),1)],64))]),q(`div`,yx,[e.type===`call`?(W(),G(H,{key:0},[i[7]||=q(`div`,{class:`label`,style:{"margin-top":`0`}},` Arguments `,-1),J(py,{value:e.args,"expand-depth":1},null,8,[`value`]),`result`in e?(W(),G(H,{key:0},[i[5]||=q(`div`,{class:`label`},` Result `,-1),J(py,{value:e.result,"expand-depth":1},null,8,[`value`])],64)):`error`in e?(W(),G(H,{key:1},[i[6]||=q(`div`,{class:`label`,style:{color:`var(--df-danger)`}},` Error `,-1),J(py,{value:e.error,"expand-depth":1},null,8,[`value`])],64)):X(``,!0)],64)):(W(),G(H,{key:1},[`value`in e?(W(),G(H,{key:0},[i[8]||=q(`div`,{class:`label`,style:{"margin-top":`0`}},` New State `,-1),J(py,{value:e.value,"expand-depth":1},null,8,[`value`])],64)):`patches`in e?(W(),G(H,{key:1},[i[9]||=q(`div`,{class:`label`,style:{"margin-top":`0`}},` Patches `,-1),J(py,{value:e.patches,"expand-depth":1},null,8,[`value`])],64)):X(``,!0)],64))])]))),128))]))]))}}),[[`__scopeId`,`data-v-fa4416fc`]]),xx=z({__name:`HistorySmart`,setup(e){function t(e){Rv.value=e}return(e,n)=>(W(),K(bx,{"history-records":L(Lv),"is-recording":L(Rv),"onUpdate:isRecording":t,onClear:L(Vv)},null,8,[`history-records`,`is-recording`,`onClear`]))}}),Sx={class:`pane`},Cx={class:`toolbar`},wx={class:`muted`},Tx={key:0,class:`center`},Ex={key:1,class:`inst-empty`},Dx={key:2,class:`cards`},Ox={class:`card-head`},kx={class:`card-title`},Ax={key:0,class:`badge agent`},jx={key:1,class:`badge`},Mx={class:`id`},Nx=[`href`],Px={class:`inst-url-text`},Fx={class:`inst-meta`},Ix={class:`inst-meta-wide`},Lx=[`title`],Rx=z({__name:`InstancesView`,props:{instances:{}},setup(e){let t=e,n=Z(()=>[...t.instances??[]].sort((e,t)=>e.isCurrent===t.isCurrent?t.startedAt-e.startedAt:e.isCurrent?-1:1));function r(e){let t=Math.max(0,Math.round((Date.now()-e)/1e3));if(t<60)return`${t}s`;let n=Math.floor(t/60);if(n<60)return`${n}m ${t%60}s`;let r=Math.floor(n/60);return r<24?`${r}h ${n%60}m`:`${Math.floor(r/24)}d ${r%24}h`}return(t,i)=>(W(),G(`div`,Sx,[q(`div`,Cx,[q(`span`,wx,j((e.instances??[]).length)+` running `+j((e.instances??[]).length===1?`instance`:`instances`),1),i[0]||=q(`span`,{class:`muted`},[Y(`Devframe dev servers running on this machine, discovered via the shared registry (`),q(`code`,null,`~/.devframe/instances/`),Y(`).`)],-1)]),e.instances?e.instances.length===0?(W(),G(`div`,Ex,[...i[1]||=[q(`span`,{class:`i-ph-broadcast-duotone inst-empty-icon`},null,-1),q(`p`,{class:`inst-empty-title`},` No devframe instances discovered `,-1),q(`p`,null,[Y(` This tab lists every devframe dev server running on your machine, so you can jump between them. Each server registers itself in `),q(`code`,null,`~/.devframe/instances/`),Y(` while it runs. `)],-1),q(`p`,null,[Y(` Nothing shows up when only static/build servers are running, when discovery is turned off (`),q(`code`,null,`DEVFRAME_DISABLE_INSTANCE_REGISTRY=1`),Y(`), or when an in-process host hasn't opted in. Start another `),q(`code`,null,`devframe`),Y(` dev server (or a hub host that calls `),q(`code`,null,`registerDevframeInstance()`),Y(`), then hit refresh. `)],-1)]])):(W(),G(`div`,Dx,[(W(!0),G(H,null,da(n.value,e=>(W(),G(`div`,{key:`${e.pid}-${e.port}`,class:`card`},[q(`div`,Ox,[i[2]||=q(`span`,{class:`i-ph-broadcast-duotone cmd-icon`},null,-1),q(`span`,kx,j(e.name??e.id),1),e.isCurrent?(W(),G(`span`,Ax,`this instance`)):X(``,!0),e.hasMcp?(W(),G(`span`,jx,`MCP`)):X(``,!0)]),q(`div`,Mx,j(e.id),1),q(`a`,{class:`inst-url`,href:e.url,target:`_blank`,rel:`noopener noreferrer`},[i[3]||=q(`span`,{class:`i-ph-arrow-square-out-duotone`},null,-1),q(`span`,Px,j(e.url),1)],8,Nx),q(`dl`,Fx,[q(`div`,null,[i[4]||=q(`dt`,null,`Port`,-1),q(`dd`,null,j(e.port),1)]),q(`div`,null,[i[5]||=q(`dt`,null,`PID`,-1),q(`dd`,null,j(e.pid),1)]),q(`div`,null,[i[6]||=q(`dt`,null,`Uptime`,-1),q(`dd`,null,j(r(e.startedAt)),1)]),q(`div`,Ix,[i[7]||=q(`dt`,null,`Root`,-1),q(`dd`,{title:e.rootDir},j(e.rootDir),9,Lx)])])]))),128))])):(W(),G(`div`,Tx,` Discovering instances… `))]))}}),zx=z({__name:`InstancesSmart`,setup(e){let t=qv(),n=sn(null);async function r(){t.value&&(n.value=await t.value.call(`devframes:plugin:inspect:list-instances`))}return Tm(r),Ji(r),(e,t)=>(W(),K(Rx,{instances:n.value},null,8,[`instances`]))}}),Bx={class:`split`},Vx={class:`keys`},Hx={class:`keys-head`},Ux={class:`checkbox`},Wx={class:`keys-list`},Gx={key:0,class:`empty`},Kx={key:1,class:`empty`},qx=[`title`,`onClick`],Jx={class:`state-main`},Yx={key:0,class:`center`},Xx={key:1,class:`center`},Zx={class:`state-meta`},Qx={class:`state-key`},$x={key:0,class:`pulse`},eS={key:1,class:`note`},tS=z({__name:`StateView`,props:{keys:{},selectedKey:{},value:{},loading:{type:Boolean},isStatic:{type:Boolean},updates:{},highlightPaths:{}},emits:[`select`],setup(e,{emit:t}){let n=e,r=t,i=I(!1),a=Z(()=>{let e=n.keys??[];return i.value?e:e.filter(e=>!e.startsWith(`devframe:`)&&!e.startsWith(`__`))});return(t,n)=>(W(),G(`div`,Bx,[q(`aside`,Vx,[q(`div`,Hx,[q(`span`,null,j(a.value.length)+` keys`,1),q(`label`,Ux,[pr(q(`input`,{"onUpdate:modelValue":n[0]||=e=>i.value=e,type:`checkbox`},null,512),[[Bl,i.value]]),n[1]||=Y(` internal `,-1)])]),q(`div`,Wx,[e.keys?a.value.length===0?(W(),G(`div`,Kx,` No shared state`+j(e.keys.length?` (toggle internal)`:``)+`. `,1)):X(``,!0):(W(),G(`div`,Gx,` Loading… `)),(W(!0),G(H,null,da(a.value,t=>(W(),G(`button`,{key:t,class:A([`key-item`,{active:e.selectedKey===t}]),title:t,onClick:e=>r(`select`,t)},j(t),11,qx))),128))])]),q(`section`,Jx,[e.selectedKey?e.loading?(W(),G(`div`,Xx,` Loading state… `)):(W(),G(H,{key:2},[q(`div`,Zx,[q(`span`,Qx,j(e.selectedKey),1),e.isStatic?(W(),G(`span`,eS,`static snapshot`)):(W(),G(`span`,$x,`live`+j(e.updates?` · ${e.updates} update${e.updates>1?`s`:``}`:``),1))]),J(py,{value:e.value,"expand-depth":3,"highlight-paths":e.highlightPaths},null,8,[`value`,`highlight-paths`])],64)):(W(),G(`div`,Yx,` Select a shared-state key to inspect its live value. `))])]))}}),nS=z({__name:`StateSmart`,setup(e){let t=qv(),n=sn(null),r=I(null),i=sn(void 0),a=I(!1),o=sn(new Set),s=I(0),c=null,l=null;async function u(){t.value&&(n.value=await t.value.call(`devframes:plugin:inspect:list-state-keys`))}Tm(u),Ji(u);function d(e,t,n=``,r=new Set){if(e===t)return r;if(!(typeof e==`object`&&e)||!(typeof t==`object`&&t))return r.add(n),r;let i=new Set([...Object.keys(e),...Object.keys(t)]);for(let a of i){let i=n?`${n}.${a}`:a,o=a in e,s=a in t;!o||!s?r.add(i):d(e[a],t[a],i,r)}return r}function f(e){o.value=e,l&&clearTimeout(l),l=setTimeout(()=>{o.value=new Set},1600)}function p(){c?.(),c=null}return Cr(r,async e=>{if(p(),i.value=void 0,s.value=0,o.value=new Set,!(!e||!t.value)){a.value=!0;try{let n=await t.value.sharedState.get(e);i.value=n.value(),c=n.on(`updated`,e=>{let t=d(i.value,e);i.value=e,s.value++,f(t)})}finally{a.value=!1}}}),Pe(()=>{p(),l&&clearTimeout(l)}),(e,t)=>(W(),K(tS,{keys:n.value,"selected-key":r.value,value:i.value,loading:a.value,"is-static":L(Jv)(),updates:s.value,"highlight-paths":o.value,onSelect:t[0]||=e=>r.value=e},null,8,[`keys`,`selected-key`,`value`,`loading`,`is-static`,`updates`,`highlight-paths`]))}}),rS={class:`app`},iS={class:`app-body`},aS={class:`flex flex-col gap-1`},oS=z({__name:`App`,setup(e){let t=I(`functions`),{refresh:n,loading:r}=Em(),i=Z(()=>hm(Hv.status)),a=Z(()=>_m(Hv.status)),o=[{value:`functions`,label:`Functions`,icon:`i-ph-function-duotone`},{value:`state`,label:`State`,icon:`i-ph-database-duotone`},{value:`agent`,label:`Agent`,icon:`i-ph-robot-duotone`},{value:`commands`,label:`Commands`,icon:`i-ph-terminal-window-duotone`},{value:`history`,label:`History`,icon:`i-ph-clock-counter-clockwise-duotone`},{value:`instances`,label:`Instances`,icon:`i-ph-broadcast-duotone`}],s=Z(()=>Jv()?o.filter(e=>e.value!==`instances`):o);Ji(Kv);function c(){location.reload()}return(e,o)=>(W(),G(`div`,rS,[J(dm,{glass:!1,class:`h-nav`},{search:R(()=>[...o[1]||=[q(`div`,null,null,-1)]]),end:R(()=>[i.value?(W(),G(`span`,{key:0,class:A(i.value.class)},[q(`span`,{class:A(i.value.dot)},null,2),Y(` `+j(i.value.label),1)],2)):X(``,!0),J(Qf,{class:`text-sm`,icon:L(r)?`i-ph-arrows-clockwise animate-spin`:`i-ph-arrows-clockwise`,tooltip:L(r)?`Refreshing…`:`Refresh`,label:`Refresh`,disabled:L(r)||!L(Hv).connected,onClick:L(n)},null,8,[`icon`,`tooltip`,`disabled`,`onClick`])]),default:R(()=>[o[2]||=q(`div`,{class:`flex items-center gap-1.5 shrink-0 font-semibold text-sm select-none`},[q(`span`,{class:`i-ph-magnifying-glass-duotone text-base color-active`}),q(`span`,null,`Devframe Inspector`)],-1),J(cm,{modelValue:t.value,"onUpdate:modelValue":o[0]||=e=>t.value=e,tabs:s.value,variant:`segment`},null,8,[`modelValue`,`tabs`])]),_:1}),q(`main`,iS,[a.value?(W(),G(`div`,{key:0,class:A(L(vm)(`h-full`))},[q(`span`,{class:A([a.value.icon,L(ym)(a.value.spin)])},null,2),q(`div`,aS,[q(`p`,{class:A(L(bm)())},j(a.value.title),3),q(`p`,{class:A(L(xm)())},j(a.value.body),3),L(Hv).error&&L(Hv).status===`error`?(W(),G(`p`,{key:0,class:A(L(Sm)())},j(L(Hv).error),3)):X(``,!0)]),a.value.reloadable?(W(),G(`button`,{key:0,type:`button`,class:A(L(pm)({variant:`primary`,size:`sm`})),onClick:c},[...o[3]||=[q(`span`,{class:`i-ph-arrow-clockwise`},null,-1),Y(` Reload `,-1)]],2)):X(``,!0)],2)):(W(),G(H,{key:1},[t.value===`functions`?(W(),K(sx,{key:0})):t.value===`state`?(W(),K(nS,{key:1})):t.value===`agent`?(W(),K(Xy,{key:2})):t.value===`commands`?(W(),K(Eb,{key:3})):t.value===`history`?(W(),K(xx,{key:4})):t.value===`instances`?(W(),K(zx,{key:5})):X(``,!0)],64))])]))}}),sS=window.matchMedia(`(prefers-color-scheme: dark)`);function cS(e){document.documentElement.classList.toggle(`dark`,e),document.documentElement.classList.toggle(`light`,!e)}cS(sS.matches),sS.addEventListener(`change`,e=>cS(e.matches)),uu(oS).mount(`#app`);
|
package/dist/index.html
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width,initial-scale=1" />
|
|
6
6
|
<base href="./" />
|
|
7
7
|
<title>Devframe Inspector</title>
|
|
8
|
-
<script type="module" crossorigin src="./assets/index-
|
|
8
|
+
<script type="module" crossorigin src="./assets/index-DbQGpf74.js"></script>
|
|
9
9
|
<link rel="stylesheet" crossorigin href="./assets/index-DnRzlhNG.css">
|
|
10
10
|
</head>
|
|
11
11
|
<body>
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@devframes/plugin-inspect--assets",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.9.
|
|
4
|
+
"version": "0.9.12",
|
|
5
5
|
"description": "Prebuilt browser assets (SPA) for @devframes/plugin-inspect, served on demand through devframe's remote-assets back-proxy.",
|
|
6
6
|
"author": "Anthony Fu <anthonyfu117@hotmail.com>",
|
|
7
7
|
"license": "MIT",
|