@omniviewdev/runtime 0.8.1 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/api.cjs +1 -1
  2. package/dist/api.js +183 -186
  3. package/dist/calls-Bg_uMVc9.cjs +1 -0
  4. package/dist/{calls-C1yoW06C.js → calls-BvZkVSse.js} +11 -5
  5. package/dist/context/drawer/types.d.ts +3 -2
  6. package/dist/context/settings/SettingsContext.d.ts +1 -1
  7. package/dist/{events-CtgYnKmS.cjs → events-DnLqUWri.cjs} +1 -1
  8. package/dist/{events-Bcx6NsMp.js → events-uBheGmqm.js} +1 -1
  9. package/dist/hooks/exec/useExecSession.d.ts +11 -1
  10. package/dist/hooks/resource/useResource.d.ts +1 -1
  11. package/dist/index-BVi9X4oU.cjs +6 -0
  12. package/dist/{index-D2mKAO8s.js → index-zyAgCXOO.js} +52 -52
  13. package/dist/index.cjs +4 -4
  14. package/dist/index.js +2934 -2089
  15. package/dist/{legacyEnum-DORXlU_y.js → legacyEnum-CKqyRmbX.js} +3 -1
  16. package/dist/models-CT4kHj47.js +2444 -0
  17. package/dist/models-DQl7tqts.cjs +1 -0
  18. package/dist/models-DU8pTcoZ.js +142 -0
  19. package/dist/models-KV9f8Ceh.cjs +1 -0
  20. package/dist/models.cjs +1 -1
  21. package/dist/models.js +229 -232
  22. package/dist/resourceIcons.d.ts +2 -2
  23. package/dist/router/Link.d.ts +1 -1
  24. package/dist/router/index.d.ts +1 -1
  25. package/dist/router/usePluginRouter.d.ts +1 -1
  26. package/dist/runtime.cjs +1 -1
  27. package/dist/runtime.js +6 -6
  28. package/dist/servicewrapper-CCW7kIVs.cjs +1 -0
  29. package/dist/servicewrapper-Q1ww3DUo.js +849 -0
  30. package/dist/types/app.d.ts +1 -1
  31. package/package.json +22 -16
  32. package/dist/calls-DUhq86Ki.cjs +0 -1
  33. package/dist/graphservice-1J8q3eeL.cjs +0 -1
  34. package/dist/graphservice-CUg1PUsC.js +0 -852
  35. package/dist/index-D_aIcqH0.cjs +0 -6
  36. package/dist/models-4EtitZnM.js +0 -2447
  37. package/dist/models-BQsuB2Lj.cjs +0 -1
  38. package/dist/models-BpVWHqlF.cjs +0 -1
  39. package/dist/models-C5sf8GNY.js +0 -145
package/dist/index.cjs CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";var dt=Object.defineProperty;var ft=(t,e,n)=>e in t?dt(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var F=(t,e,n)=>ft(t,typeof e!="symbol"?e+"":e,n);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const m=require("react/jsx-runtime"),u=require("react"),V=require("react-router-dom");require("./index-D_aIcqH0.cjs");const S=require("./graphservice-1J8q3eeL.cjs"),k=require("./models-BQsuB2Lj.cjs"),D=require("./events-CtgYnKmS.cjs"),v=require("@tanstack/react-query"),L=require("@omniviewdev/base-ui"),pt=require("./legacyEnum-DkV5yRdA.cjs"),se=u.createContext(void 0),N={PLUGIN_NOT_FOUND:"omniview:plugin/not-found",PLUGIN_NOT_LOADED:"omniview:plugin/not-loaded",PLUGIN_ALREADY_LOADED:"omniview:plugin/already-loaded",PLUGIN_INSTALL_FAILED:"omniview:plugin/install-failed",PLUGIN_LOAD_FAILED:"omniview:plugin/load-failed",PLUGIN_BUILD_FAILED:"omniview:plugin/build-failed",PLUGIN_COMMITTED_CLEANUP_PENDING:"omniview:plugin/committed-cleanup-pending",PLUGIN_COMMIT_UNCERTAIN:"omniview:plugin/commit-uncertain",SETTINGS_MISSING_CONFIG:"omniview:settings/missing-config",SETTINGS_INVALID_CONFIG:"omniview:settings/invalid-config",RESOURCE_NOT_FOUND:"omniview:resource/not-found",RESOURCE_FORBIDDEN:"omniview:resource/forbidden",RESOURCE_UNAUTHORIZED:"omniview:resource/unauthorized",RESOURCE_CONFLICT:"omniview:resource/conflict",RESOURCE_TIMEOUT:"omniview:resource/timeout",RESOURCE_LIMIT:"omniview:resource/limit",RESOURCE_CONTINUATION_EXPIRED:"omniview:resource/continuation-expired",RESOURCE_RESET_REQUIRED:"omniview:resource/reset-required",RESOURCE_PARTIAL:"omniview:resource/partial",RESOURCE_PROVIDER_ERROR:"omniview:resource/provider-error",CONNECTION_NOT_FOUND:"omniview:connection/not-found",CONNECTION_FAILED:"omniview:connection/failed",SESSION_NOT_FOUND:"omniview:session/not-found",SESSION_FAILED:"omniview:session/failed",CANCELLED:"omniview:cancelled",INTERNAL:"omniview:internal",VALIDATION:"omniview:validation",NOT_IMPLEMENTED:"omniview:not-implemented"},xe={INVALID_REQUEST:[N.VALIDATION,400,"correctRequest"],UNSUPPORTED:[N.NOT_IMPLEMENTED,501,"refreshContract"],FORBIDDEN:[N.RESOURCE_FORBIDDEN,403,"none"],UNAUTHORIZED:[N.RESOURCE_UNAUTHORIZED,401,"none"],NOT_FOUND:[N.RESOURCE_NOT_FOUND,404,"none"],CONFLICT:[N.RESOURCE_CONFLICT,409,"refreshContract"],ALREADY_EXISTS:[N.RESOURCE_CONFLICT,409,"refreshContract"],CANCELLED:[N.CANCELLED,499,"none"],TIMEOUT:[N.RESOURCE_TIMEOUT,408,"none"],UNAVAILABLE:[N.CONNECTION_FAILED,503,"reconnect"],CONNECTION_ERROR:[N.CONNECTION_FAILED,503,"reconnect"],CERTIFICATE_ERROR:[N.CONNECTION_FAILED,502,"reconnect"],RESOURCE_LIMIT:[N.RESOURCE_LIMIT,429,"correctRequest"],CONTINUATION_EXPIRED:[N.RESOURCE_CONTINUATION_EXPIRED,410,"restartQuery"],RESET_REQUIRED:[N.RESOURCE_RESET_REQUIRED,409,"restartQuery"],PARTIAL_RESULT:[N.RESOURCE_PARTIAL,422,"none"],PROVIDER_ERROR:[N.RESOURCE_PROVIDER_ERROR,502,"none"],INTERNAL:[N.INTERNAL,500,"none"]};function le(t){return typeof t=="object"&&t!==null?t:void 0}function Q(t,e){return typeof t=="string"&&t.length>0&&t.length<=e}function de(){return{type:N.CANCELLED,code:"CANCELLED",title:"Cancelled",status:499,detail:"The operation was cancelled.",recovery:"none"}}function te(t,e){if(e>4)return;if(t==="cancelled")return de();if(typeof t=="string"){const r=t.trim();if(!r.startsWith("{"))return;try{return te(JSON.parse(r),e+1)}catch{return}}const n=le(t);if(n){if(n.name==="AbortError"||n.name==="CancelError")return de();if(Q(n.type,256)&&Q(n.title,256)&&typeof n.status=="number"&&Number.isInteger(n.status)&&n.status>=100&&n.status<=599&&typeof n.detail=="string"&&n.detail.length<=4096){const r={type:n.type,title:n.title,status:n.status,detail:n.detail};Q(n.code,64)&&(r.code=n.code),Q(n.requestId,256)&&(r.requestId=n.requestId),Q(n.instance,512)&&(r.instance=n.instance),Array.isArray(n.suggestions)&&(r.suggestions=n.suggestions.filter(i=>Q(i,512)).slice(0,8)),Array.isArray(n.actions)&&(r.actions=n.actions.filter(i=>{const o=le(i);return!!o&&["navigate","retry","open-url","copy"].includes(String(o.type))&&Q(o.label,256)&&(o.target===void 0||Q(o.target,4096))}).slice(0,8)),["correctRequest","refreshContract","restartQuery","reconnect","none"].includes(String(n.recovery))&&(r.recovery=n.recovery);const s=le(n.location);return(s==null?void 0:s.unit)==="utf8-byte"&&typeof s.start=="number"&&typeof s.end=="number"&&Number.isSafeInteger(s.start)&&Number.isSafeInteger(s.end)&&s.start>=0&&s.end>=s.start&&(r.location={start:s.start,end:s.end,unit:"utf8-byte"}),r}if(typeof n.code=="string"&&typeof n.title=="string"&&typeof n.message=="string"){let r=n.code;if(r==="PERMISSION_DENIED"&&(r="FORBIDDEN"),["INVALID_INPUT","FILTER_UNKNOWN_FIELD","FILTER_INVALID_OPERATOR"].includes(r)&&(r="INVALID_REQUEST"),Object.prototype.hasOwnProperty.call(xe,r)||(r="INTERNAL"),r==="CANCELLED")return de();const[s,i,o]=xe[r],a=r==="FORBIDDEN"||r==="UNAUTHORIZED"||r==="INTERNAL"||r==="PROVIDER_ERROR";return{type:s,status:i,code:r,recovery:o,title:a?r==="FORBIDDEN"?"Access denied":r==="UNAUTHORIZED"?"Authentication required":"Operation failed":Q(n.title,256)?n.title:"Operation failed",detail:a?"The operation could not be completed.":Q(n.message,4096)?n.message:"The operation could not be completed.",...!a&&Array.isArray(n.suggestions)?{suggestions:n.suggestions.filter(c=>Q(c,512)).slice(0,8)}:{}}}return te(n.message,e+1)??te(n.cause,e+1)}}function W(t){return te(t,0)??{type:N.INTERNAL,title:t==null?"Unknown error":"Error",status:500,detail:t==null?"An unknown error occurred.":"The operation could not be completed."}}function Y(t){return W(t).type===N.CANCELLED}function De(t){switch(t.type){case"navigate":return{label:t.label,onClick:()=>{window.location.hash=t.target??""}};case"open-url":return{label:t.label,onClick:()=>{window.open(t.target,"_blank")}};case"copy":return{label:t.label,onClick:()=>{navigator.clipboard.writeText(t.target??"")}};case"retry":return{label:t.label,onClick:()=>{}};default:return{label:t.label,onClick:()=>{}}}}function Ne(t,e){var s,i;const n=[t.detail,...((s=t.suggestions)==null?void 0:s.map(o=>`• ${o}`))??[]].join(`
2
- `);return{message:e||(t.title!=="Error"?t.title:"Operation failed"),status:"error",details:n,actions:(i=t.actions)==null?void 0:i.map(De)}}function G(t,e,n){if(Y(e))return;const r=W(e);t(Ne(r,n))}function j(t,e){return n=>{if(Y(n))return;const r=W(n);t(Ne(r,r.title!=="Error"?r.title:e))}}function ht(t){const{children:e,pluginId:n,headless:r=!1}=t,[s,i]=u.useState({}),[o,a]=u.useState(new k.PluginMeta),[c,p]=u.useState(!1),[l,h]=u.useState(null),g=u.useRef(0),y=u.useRef(0);console.debug("[PluginContextProvider] render",{pluginId:n,metaLoaded:c,metaError:!!l});const C=u.useCallback(()=>{if(n===void 0||n==="")return;const d=++g.current;console.debug(`[PluginContextProvider] fetching settings for "${n}"`),S.PluginValues(n).then(f=>{d===g.current&&(console.debug(`[PluginContextProvider] settings loaded for "${n}"`,Object.keys(f)),i(f))}).catch(f=>{if(d!==g.current)return;const _=W(f);console.error(`[PluginContextProvider] error fetching settings for "${n}":`,_.detail)})},[n]),R=u.useCallback(()=>{if(n===void 0||n===""){console.debug("[PluginContextProvider] skipping meta fetch — empty pluginId");return}const d=++y.current;console.debug(`[PluginContextProvider] fetching meta for "${n}"`),h(null),S.GetPluginMeta(n).then(f=>{d===y.current&&(console.debug(`[PluginContextProvider] meta loaded for "${n}"`,{name:f==null?void 0:f.name,version:f==null?void 0:f.version}),a(f),p(!0))}).catch(f=>{if(d!==y.current)return;const _=W(f);console.error(`[PluginContextProvider] error fetching meta for "${n}":`,_.detail),h(_.detail),p(!1)})},[n]);if(u.useEffect(()=>{if(c)return;const d=()=>{C(),R()},f=[D.On("plugin/init_complete",d),D.On("plugin/dev_install_complete",_=>{var E;((E=_.data)==null?void 0:E.id)===n&&d()}),D.On("plugin/inventory_changed",d)];return()=>{for(const _ of f)_()}},[n,c,C,R]),u.useEffect(()=>(console.debug(`[PluginContextProvider] useEffect — pluginId changed to "${n}"`),p(!1),h(null),i({}),C(),R(),()=>{++g.current,++y.current}),[n,C,R]),l){if(r)throw new Error(l);return m.jsx("div",{style:{display:"flex",flex:1,alignItems:"center",justifyContent:"center",padding:24},children:m.jsxs("div",{style:{maxWidth:480,width:"100%",border:"1px solid #7F1D1D",borderRadius:8,backgroundColor:"#1C1917",padding:20,fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif'},children:[m.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,marginBottom:12},children:[m.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"#EF4444",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[m.jsx("circle",{cx:"12",cy:"12",r:"10"}),m.jsx("line",{x1:"12",y1:"8",x2:"12",y2:"12"}),m.jsx("line",{x1:"12",y1:"16",x2:"12.01",y2:"16"})]}),m.jsx("span",{style:{fontSize:14,fontWeight:600,color:"#FECACA"},children:"Plugin failed to load"})]}),m.jsx("p",{style:{fontSize:13,color:"#A1A1AA",margin:"0 0 16px"},children:l}),m.jsx("button",{onClick:()=>R(),style:{background:"transparent",color:"#F87171",border:"1px solid #7F1D1D",borderRadius:6,padding:"6px 14px",fontSize:13,fontWeight:500,cursor:"pointer"},children:"Retry"})]})})}return c?m.jsx(se.Provider,{value:{pluginId:n,settings:s,meta:o},children:e}):r?null:m.jsxs("div",{style:{display:"flex",flex:1,alignItems:"center",justifyContent:"center"},children:[m.jsx("div",{style:{width:24,height:24,border:"2px solid #3F3F46",borderTopColor:"#A1A1AA",borderRadius:"50%",animation:"plugin-spin 0.8s linear infinite"}}),m.jsx("style",{children:"@keyframes plugin-spin { to { transform: rotate(360deg); } }"})]})}function oe(){const t=u.useContext(se);if(!t)throw new Error("usePluginContext must be used within a PluginContextProvider");return t}function gt(){return oe().settings}const Ee=u.createContext(void 0),yt=({children:t})=>{const[e,n]=u.useState({}),r=u.useRef(0),s=u.useCallback(()=>{const o=r.current+1;r.current=o,S.Values().then(a=>{o===r.current&&n(a)}).catch(a=>{o===r.current&&console.error("Error fetching settings:",a)})},[]);u.useEffect(()=>{const o=D.On("settings/changed",()=>s());return s(),()=>{r.current+=1,o()}},[s]);const i=u.useCallback(()=>{s()},[s]);return m.jsx(Ee.Provider,{value:{settings:e,reload:i},children:t})},Fe={height:32,focused:0,tabs:[],createTab:()=>{},createTabs:()=>{},updateTab:()=>{},focusTab:()=>{},reorderTab:()=>{},closeTab:()=>{},closeTabs:()=>{},resizeDrawer:()=>{},closeDrawer:()=>{},fullscreenDrawer:()=>{}},Le=u.createContext(Fe),ke=u.createContext(void 0),Me=u.createContext(void 0),Se=u.createContext(void 0),mt=3e4,Et=({children:t})=>{const[e,n]=u.useState([]),r=u.useCallback(a=>{n(c=>[a,...c])},[]),s=u.useCallback((a,c)=>{n(p=>p.map(l=>l.id===a?{...l,...c}:l))},[]),i=u.useCallback(a=>{n(c=>c.filter(p=>p.id!==a))},[]);u.useEffect(()=>{const a=[];for(const c of e)if(c.status!=="running"){const p=Date.now()-(c.completedAt??c.startedAt),l=Math.max(0,mt-p);a.push(setTimeout(()=>i(c.id),l))}return()=>a.forEach(clearTimeout)},[e,i]);const o=u.useMemo(()=>({operations:e,addOperation:r,updateOperation:s,removeOperation:i}),[e,r,s,i]);return m.jsx(Se.Provider,{value:o,children:t})};var ge=function(t,e){return ge=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(n[s]=r[s])},ge(t,e)};function St(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");ge(t,e);function n(){this.constructor=t}t.prototype=e===null?Object.create(e):(n.prototype=e.prototype,new n)}var fe="Invariant Violation",Ie=Object.setPrototypeOf,Ct=Ie===void 0?function(t,e){return t.__proto__=e,t}:Ie,vt=function(t){St(e,t);function e(n){n===void 0&&(n=fe);var r=t.call(this,typeof n=="number"?fe+": "+n+" (see https://github.com/apollographql/invariant-packages)":n)||this;return r.framesToPop=1,r.name=fe,Ct(r,e.prototype),r}return e}(Error);function ye(t,e){if(!t)throw new vt(e)}var je=["debug","log","warn","error","silent"],_t=je.indexOf("log");function J(t){return function(){if(je.indexOf(t)>=_t){var e=console[t]||console.log;return e.apply(console,arguments)}}}(function(t){t.debug=J("debug"),t.log=J("log"),t.warn=J("warn"),t.error=J("error")})(ye||(ye={}));const qe=u.createContext(void 0),Ue=()=>u.useContext(qe);function $e(t){const e=Ue(),n=u.useRef(null),r=e==null?void 0:e.getExtensionPoint(t),s=u.useCallback(o=>{const a=[];return e&&a.push(e.subscribe(o)),r&&a.push(r.subscribe(o)),()=>{for(const c of a)c()}},[e,t,r]),i=u.useCallback(()=>{const o=e==null?void 0:e.getExtensionPoint(t);if(!o){if(n.current&&n.current.store===void 0)return n.current.sentinel;const p={};return n.current={store:void 0,version:-1,sentinel:p},p}const a=n.current;if(a&&a.store===o&&a.version===o.version)return a.sentinel;const c={};return n.current={store:o,version:o.version,sentinel:c},c},[e,t]);return u.useSyncExternalStore(s,i),e==null?void 0:e.getExtensionPoint(t)}const wt=({registry:t,children:e})=>{const n=u.useRef(t);return ye(n.current===t,"You can't change the extension registry after it has been rendered"),m.jsx(qe.Provider,{value:n.current,children:e})},pe=t=>{if(!t||typeof t!="string")throw new TypeError(`extensionName is required to be a string and can't be: "${t}" (${typeof t})`);return t.trim()};class Qe{constructor(e){F(this,"id");F(this,"mode");F(this,"_pluginId");F(this,"_version",0);F(this,"_contributions",new Map);F(this,"_lookupCache",new Map);F(this,"_matcher");F(this,"_select");F(this,"_listeners",new Set);this.id=e.id,this.mode=e.mode??"multiple",this._pluginId=e.pluginId,this._matcher=e.matcher,this._select=e.select}get pluginId(){return this._pluginId}get version(){return this._version}register(e){if(this._contributions.has(e.id))throw new Error(`Contribution with id "${e.id}" already exists in extension point "${this.id}"`);this._contributions.set(e.id,e),this._invalidateCache(),this._notify()}unregister(e){this._contributions.delete(e)&&(this._invalidateCache(),this._notify())}provide(e){return this._getMatched(e).map(r=>r.value)}list(e){return this._getMatched(e)}listAll(){return Array.from(this._contributions.values())}subscribe(e){return this._listeners.add(e),()=>{this._listeners.delete(e)}}removeContributionsByPlugin(e){let n=!1;for(const[r,s]of this._contributions)s.plugin===e&&(this._contributions.delete(r),n=!0);n&&(this._invalidateCache(),this._notify())}_getMatched(e){const n=this._getCacheKey(e);if(n!=null){const s=this._lookupCache.get(n);if(s){const i=s.map(o=>this._contributions.get(o)).filter(o=>o!=null);return this._applyMode(i,e)}}let r=this._sortDeterministic(Array.from(this._contributions.values()));return this._matcher&&e!==void 0&&(r=r.filter(s=>this._matcher(s,e))),n!=null&&this._lookupCache.set(n,r.map(s=>s.id)),this._applyMode(r,e)}_applyMode(e,n){if(this.mode==="single"){if(this._select){const r=this._select(e,n);return r?[r]:[]}return e.length>0?[e[0]]:[]}return e}_sortDeterministic(e){return[...e].sort((n,r)=>{const s=n.plugin.localeCompare(r.plugin);return s!==0?s:n.id.localeCompare(r.id)})}_getCacheKey(e){if(e!=null&&typeof e=="object"&&"getCacheKey"in e){const n=e.getCacheKey;if(typeof n=="function")return n()}}_invalidateCache(){this._lookupCache.clear()}_notify(){this._version++;for(const e of this._listeners)e()}}class bt{constructor(e){F(this,"_stores",new Map);F(this,"_storeUnsubs",new Map);F(this,"_listeners",new Set);if(e!=null&&e.initialStores)for(const n of e.initialStores)this.addExtensionPoint(n)}addExtensionPoint(e){const n=pe(e.id);if(this._stores.has(n)){const s=this._stores.get(n);throw new Error(`Extension point "${n}" already exists (owned by "${s.pluginId??"unknown"}")`)}const r=new Qe({...e,id:n});this._stores.set(n,r),this._storeUnsubs.set(n,r.subscribe(()=>this._notify())),this._notify()}getExtensionPoint(e){const n=pe(e);return this._stores.get(n)}hasExtensionPoint(e){const n=pe(e);return this._stores.has(n)}listExtensionPoints(){return Array.from(this._stores.keys())}removeExtensionPoints(e){var r;let n=!1;for(const[s,i]of this._stores)i.pluginId===e&&((r=this._storeUnsubs.get(s))==null||r(),this._storeUnsubs.delete(s),this._stores.delete(s),n=!0);n&&this._notify()}removeContributions(e){for(const n of this._stores.values())n.removeContributionsByPlugin(e);this._notify()}subscribe(e){return this._listeners.add(e),()=>{this._listeners.delete(e)}}_notify(){for(const e of this._listeners)e()}}const U={Panel:{position:"fixed",right:"var(--ov-space-3)",bottom:36,zIndex:"calc(var(--ov-z-toast, 9999) + 1)",width:"min(480px, calc(100vw - 24px))",minWidth:0,maxHeight:"min(560px, calc(100dvh - 64px))",display:"flex",flexDirection:"column",overflow:"hidden",padding:0},Header:{flex:"none",gap:"var(--ov-space-2)",paddingInline:"var(--ov-space-3)",background:"var(--ov-color-bg-surface-raised)",borderBottom:"1px solid var(--ov-color-border-muted)"},HeaderActions:{marginLeft:"auto"},List:{minHeight:0,overflowY:"auto",overscrollBehavior:"contain"},Notice:{borderTop:"1px solid var(--ov-color-border-muted)"},Row:{display:"flex",alignItems:"center",gap:"var(--ov-space-1)",padding:"var(--ov-space-2) var(--ov-space-2) var(--ov-space-2) var(--ov-space-3)"},ErrorIcon:{flex:"none",color:"var(--ov-color-danger)"},Message:{flex:1,minWidth:0,justifyContent:"flex-start",textAlign:"left"},MessageText:{minWidth:0,overflowWrap:"anywhere"},Details:{padding:"0 var(--ov-space-3) var(--ov-space-3) 36px"},Code:{display:"block",margin:"var(--ov-space-2) 0",padding:"var(--ov-space-3)",maxHeight:240,overflow:"auto",whiteSpace:"pre-wrap",overflowWrap:"anywhere",lineHeight:1.5,userSelect:"text"},Actions:{display:"flex",flexWrap:"wrap",gap:"var(--ov-space-2)"},CopyError:{margin:0,padding:"var(--ov-space-3)",borderTop:"1px solid var(--ov-color-border-muted)"}},We=u.createContext(void 0),Rt={default:"info",info:"info",success:"success",warning:"warning",error:"danger"},xt=({children:t})=>{const{toast:e}=L.useToast(),[n,r]=u.useState([]),[s,i]=u.useState([]),[o,a]=u.useState(!1),[c,p]=u.useState(),[l,h]=u.useState(""),g=u.useRef(Date.now()),y=u.useRef(null);u.useEffect(()=>{var _;if(!o)return;const d=document.activeElement;(_=y.current)==null||_.focus();const f=E=>{E.key==="Escape"&&(E.stopPropagation(),a(!1))};return document.addEventListener("keydown",f),()=>{document.removeEventListener("keydown",f),d instanceof HTMLElement&&d.isConnected&&d.focus()}},[o]);const C=d=>{r(f=>[...f,d])},R=(d,f,_)=>{const E=typeof d=="object";let w="",x="info",b,I=5e3,O;if(E){if(w=d.message,d.showOnce){if(n.includes(w))return;C(w)}x=d.status,b=d.details,I=d.autoHideDuration??5e3,O=d.actions}else w=d,x=f,b=_;let P;if(x==="error"){const q={id:++g.current,message:w,details:b,created:new Date().toISOString(),actions:O};i(M=>[...M,q].slice(-20)),P={label:"Details",onClick:()=>{p(q.id),a(!0)}}}e(x==="error"?w:b??w,{severity:Rt[x]??"info",title:x!=="error"&&b?w:void 0,duration:I,action:P??(O==null?void 0:O[0])})};return m.jsxs(We.Provider,{value:{showSnackbar:R,openNotifications:()=>{a(!0)},notificationCount:s.length},children:[t,o&&m.jsxs(L.Card,{ref:y,style:U.Panel,size:"sm",variant:"outline",surface:"overlay",elevation:3,"aria-label":"Notifications",tabIndex:-1,children:[m.jsxs(L.Toolbar,{size:"sm",style:U.Header,children:[m.jsx(L.Text,{size:"sm",weight:"semibold",children:"Notifications"}),m.jsx(L.Text,{size:"xs",tone:"muted",children:s.length}),m.jsxs(L.Toolbar.Group,{style:U.HeaderActions,children:[m.jsx(L.IconButton,{size:"sm",variant:"ghost","aria-label":"Clear history",title:"Clear history",disabled:s.length===0,onClick:()=>{i([]),p(void 0),h("")},children:m.jsx("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-hidden":"true",children:m.jsx("path",{d:"m3 3 6 6m0-6L3 9M13 6h8M3 14h18M3 20h18"})})}),m.jsx(L.IconButton,{size:"sm",variant:"ghost","aria-label":"Close notifications",title:"Close notifications",onClick:()=>{a(!1)},children:m.jsx("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-hidden":"true",children:m.jsx("path",{d:"m6 9 6 6 6-6"})})})]})]}),m.jsxs("div",{style:U.List,children:[s.length===0&&m.jsx(L.EmptyState,{size:"sm",title:"No recent errors",description:"Error details will appear here."}),s.slice().reverse().map(d=>{var _,E;const f=c===d.id;return m.jsxs("div",{style:U.Notice,children:[m.jsxs("div",{style:U.Row,children:[m.jsxs("svg",{style:U.ErrorIcon,width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-label":"Error",role:"img",children:[m.jsx("circle",{cx:"12",cy:"12",r:"9"}),m.jsx("path",{d:"m9 9 6 6m0-6-6 6"})]}),m.jsx(L.Button,{size:"sm",variant:"ghost",style:U.Message,"aria-expanded":f,"aria-controls":`notification-${d.id}`,title:d.message,onClick:()=>{p(f?void 0:d.id),h("")},children:m.jsx(L.Text,{size:"sm",style:U.MessageText,truncate:!f,children:d.message})}),m.jsx(L.IconButton,{size:"sm",variant:"ghost","aria-label":f?"Collapse details":"Expand details",title:f?"Collapse details":"Expand details","aria-expanded":f,"aria-controls":`notification-${d.id}`,onClick:()=>{p(f?void 0:d.id),h("")},children:m.jsx("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-hidden":"true",children:m.jsx("path",{d:f?"m6 15 6-6 6 6":"m6 9 6 6 6-6"})})}),m.jsx(L.IconButton,{size:"sm",variant:"ghost","aria-label":`Dismiss ${d.message}`,title:"Dismiss notification",onClick:()=>{i(w=>w.filter(x=>x.id!==d.id)),f&&(p(void 0),h(""))},children:m.jsx("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-hidden":"true",children:m.jsx("path",{d:"m6 6 12 12m0-12L6 18"})})})]}),m.jsx("div",{id:`notification-${d.id}`,hidden:!f,style:U.Details,children:f&&m.jsxs(m.Fragment,{children:[m.jsx(L.Text,{size:"xs",tone:"muted",children:m.jsx("time",{dateTime:d.created,children:new Date(d.created).toLocaleString()})}),m.jsx(L.Code,{size:"sm",style:U.Code,children:(_=d.details)!=null&&_.length?d.details:d.message}),m.jsxs("div",{style:U.Actions,children:[m.jsx(L.Button,{size:"sm",variant:"ghost",onClick:async()=>{h("");try{await navigator.clipboard.writeText(`${d.message}
3
- ${d.created}
4
- ${d.details??""}`)}catch{h("Copy failed. Select the diagnostic text and copy it manually.")}},children:"Copy details"}),(E=d.actions)==null?void 0:E.map((w,x)=>m.jsx(L.Button,{size:"sm",variant:"outline",onClick:w.onClick,children:w.label},`${w.label}-${x}`))]})]})})]},d.id)})]}),l&&m.jsx(L.Text,{as:"p",size:"sm",role:"status",style:U.CopyError,children:l})]})]})},$=()=>{const t=u.useContext(We);if(t===void 0)throw new Error("useCustomSnackbar must be used within a CustomSnackbarProvider");return t};function A(t){const e=u.useContext(se),n=(e==null?void 0:e.pluginId)??t;if(!n)throw new Error("pluginID must be provided either via PluginContext or as an explicit parameter");return n}const It=({pluginID:t,connectionID:e})=>{const n=A(t),r=v.useQueryClient(),{showSnackbar:s}=$(),i=[n,"connection","detail",e],{mutateAsync:o}=v.useMutation({mutationFn:async()=>S.StartConnection(n,e),onSuccess(h){r.setQueryData(i,h),r.invalidateQueries({queryKey:["EDITOR_SCHEMAS",n,e]})},onError:j(s,"Failed to start connection")}),{mutateAsync:a}=v.useMutation({mutationFn:async()=>S.StopConnection(n,e),onSuccess(h){r.setQueryData(i,h)},onError:j(s,"Failed to stop connection")}),{mutateAsync:c}=v.useMutation({mutationFn:async h=>S.UpdateConnection(n,h),onSuccess(h,{name:g}){s({message:`Connection ${g} successfully updated`,status:"success"}),r.setQueryData(i,h),r.setQueriesData({queryKey:[n,"connection","list"]},y=>y==null?void 0:y.map(C=>C.id===e?h:C))},onError:j(s,"Failed to update connection")}),{mutateAsync:p}=v.useMutation({mutationFn:async()=>S.RemoveConnection(n,e),onSuccess(){s({message:"Connection successfully removed",status:"success"}),r.setQueryData(i,void 0),r.setQueriesData({queryKey:[n,"connection","list"]},h=>h==null?void 0:h.filter(g=>g.id!==e))},onError:j(s,"Failed to remove connection")});return{connection:v.useQuery({queryKey:i,queryFn:async()=>S.GetConnection(n,e)}),startConnection:o,stopConnection:a,updateConnection:c,deleteConnection:p}},Ge=t=>[t,"connection","list"],Ot=({plugin:t})=>{const e=A(t),n=v.useQueryClient(),{showSnackbar:r}=$(),s=Ge(e),{mutateAsync:i}=v.useMutation({mutationFn:async p=>S.StartConnectionWatch(e,p.id),onError:j(r,"Failed to start connection watch")}),{mutateAsync:o}=v.useMutation({mutationFn:async p=>S.StopConnectionWatch(e,p.id),onError:j(r,"Failed to stop connection watch")}),a=u.useCallback(p=>{const l=p.data;console.log("got update to connections",l),n.setQueryData(s,l)},[n,s]);return u.useEffect(()=>{const p=D.On(`${e}/connection/sync`,a);return()=>{p()}},[e,a]),{connections:v.useQuery({queryKey:s,queryFn:async()=>{try{return await S.ListConnections(e)}catch(p){console.log(p),j(r,"Failed to load connections")(p)}return[]},staleTime:3e4,placeholderData:v.keepPreviousData}),startWatch:i,stopWatch:o}},Tt=({pluginID:t,connectionID:e})=>{const n=A(t),r=[n,"connection","namespaces",e];return{namespaces:v.useQuery({queryKey:r,queryFn:async()=>S.GetConnectionNamespaces(n,e)})}},T=pt.withLegacyNames(k.WatchState,"WatchState");function me(t){const e=Object.values(t.states),n=e.length;let r=0,s=0,i=0,o=0;for(const l of e)l===T.WatchStateSynced&&r++,(l===T.WatchStateError||l===T.WatchStateFailed)&&s++,l===T.WatchStateForbidden&&i++,l===T.WatchStateSkipped&&o++;const a=n-o,c=e.filter(l=>l===T.WatchStateSynced||l===T.WatchStateError||l===T.WatchStateStopped||l===T.WatchStateFailed||l===T.WatchStateForbidden).length,p=a>0?c/a:0;return{pluginID:t.pluginID,connectionID:t.connectionID,totalResources:n,watchedTotal:a,syncedCount:r,errorCount:s,forbiddenCount:i,skippedCount:o,doneCount:c,progress:p}}function ne(t){return t.watchedTotal>0&&t.doneCount>=t.watchedTotal}function Be(t){return t.some(e=>!ne(e))}function He(t){const e=t.reduce((r,s)=>r+s.watchedTotal,0);return e===0?0:t.reduce((r,s)=>r+s.doneCount,0)/e}function Ce(t){return`${t.pluginId}/${t.connection}`}function Ke(t,e){const n=Ce(e);t.has(n)||t.set(n,{states:{},pluginID:e.pluginId,connectionID:e.connection});const r=t.get(n);return r.states[e.resourceKey]=e.state,r}function Pt(){const[t,e]=u.useState(new Set),[n,r]=u.useState({}),[s,i]=u.useState(new Map),o=u.useRef(new Map),[a,c]=u.useState(new Map);u.useEffect(()=>{const E=D.On("plugin/crash_recovery_failed",x=>{const b=x.data,I=b==null?void 0:b.pluginID;I&&c(O=>{const P=new Map(O);return P.set(I,b.error??"Crash recovery failed"),P})}),w=D.On("plugin/recovered",x=>{const b=x.data,I=b==null?void 0:b.pluginID;I&&c(O=>{if(!O.has(I))return O;const P=new Map(O);return P.delete(I),P})});return()=>{E(),w()}},[]),u.useEffect(()=>{S.GetAllConnectionStates().then(E=>{if(!E)return;const w={},x=new Set,b=new Map;for(const[I,O]of Object.entries(E))if(O){w[I]=O.map(P=>P.connection);for(const P of O){if(!P.started)continue;const q=`${I}/${P.connection.id}`;x.add(q);const M={pluginID:I,connectionID:P.connection.id,states:{}};if(P.resources)for(const[ue,lt]of Object.entries(P.resources))M.states[ue]=lt;o.current.set(q,M),b.set(q,me(M))}}r(w),e(x),i(b)}).catch(()=>{})},[]),u.useEffect(()=>D.On("connection/status",w=>{const x=w.data,b=`${x.pluginID}/${x.connectionID}`;x.status==="DISCONNECTED"?(e(I=>{const O=new Set(I);return O.delete(b),O}),i(I=>{const O=new Map(I);return O.delete(b),O}),o.current.delete(b)):e(I=>{const O=new Set(I);return O.add(b),O}),S.ListAllConnections().then(I=>{if(!I)return;const O={};for(const[P,q]of Object.entries(I))q!=null&&(O[P]=q);r(O)}).catch(()=>{})}),[]);const p=u.useCallback(E=>{const w=E.data,x=Ce(w);e(O=>{if(O.has(x))return O;const P=new Set(O);return P.add(x),P});const b=Ke(o.current,w),I=me(b);i(O=>{const P=new Map(O);return P.set(x,I),P})},[]);u.useEffect(()=>D.On("watch/STATE",p),[p]);const l=u.useCallback(async(E,w)=>{await S.StopConnection(E,w)},[]),h=u.useCallback(async(E,w)=>{await S.StartConnectionWatch(E,w)},[]),g=u.useCallback(async E=>{const w=a.get(E);c(x=>{if(!x.has(E))return x;const b=new Map(x);return b.delete(E),b});try{await S.RetryFailedPlugin(E)}catch(x){throw c(b=>{const I=new Map(b);return I.set(E,w??"Reload failed"),I}),x}},[a]),y=[];for(const E of t){const[w,x]=E.split("/",2),I=(n[w]??[]).find(ue=>ue.id===x),O=s.get(E),P=O!=null&&!ne(O),q=O!=null&&O.errorCount>0,M=a.get(w);y.push({pluginID:w,connectionID:x,name:(I==null?void 0:I.name)??x,avatar:(I==null?void 0:I.avatar)??"",isStarted:!0,sync:O,isSyncing:P,hasErrors:q||M!=null,pluginFailed:M!=null,pluginError:M})}const C=new Map;for(const E of y){const w=C.get(E.pluginID)??[];w.push(E),C.set(E.pluginID,w)}const R=Array.from(s.values()),d=y.filter(E=>E.isSyncing),f=y.filter(E=>E.hasErrors),_=y.filter(E=>E.pluginFailed);return{entries:y,grouped:C,connectedCount:y.length,syncingCount:d.length,errorCount:f.length,failedCount:_.length,hasSyncing:Be(R),aggregateProgress:He(R),disconnect:l,retryWatch:h,retryPlugin:g}}function At(t,e){return e===null?t===null:Array.isArray(e)?Array.isArray(t):typeof e=="object"?typeof t=="object"&&t!==null&&!Array.isArray(t):typeof t==typeof e}function Dt(t,e,n){const r=A(t),s=v.useQueryClient(),i=[r,"data",e],o=v.useQuery({queryKey:i,queryFn:async()=>{const c=await S.Get(r,e);return c==null?n:At(c,n)?c:(console.warn(`[usePluginData] stored value for "${e}" has unexpected type (expected ${Array.isArray(n)?"array":typeof n}, got ${Array.isArray(c)?"array":typeof c}). Using default.`),n)}}),a=v.useMutation({mutationFn:async c=>{await S.Set(r,e,c)},onMutate:async c=>{await s.cancelQueries({queryKey:i});const p=s.getQueryData(i);return s.setQueryData(i,c),{previous:p}},onError:(c,p,l)=>{(l==null?void 0:l.previous)!==void 0&&s.setQueryData(i,l.previous)},onSettled:()=>{s.invalidateQueries({queryKey:i})}});return{data:o.data??n,update:async c=>{await a.mutateAsync(c)},isLoading:o.isLoading}}const Nt=()=>{const t=u.useContext(ke);if(!t)throw new Error("useRightDrawer must be used within a RightDrawerProvider");return t},ve=()=>{const t=u.useContext(Le);if(t===void 0)throw new Error("useBottomDrawer must be used within a BottomDrawerProvider");return t},Ft=({pluginID:t})=>{const e=A(t),{showSnackbar:n}=$(),{createTab:r,updateTab:s}=ve();return{createSession:v.useMutation({mutationFn:async({connectionID:o,icon:a,label:c,opts:p})=>{const l=`pending-${crypto.randomUUID()}`;r({id:l,title:c??"Connecting...",variant:"terminal",icon:a??"LuSquareTerminal",properties:{status:"connecting",pluginID:e,connectionID:o,opts:{...p}}});const h=k.SessionOptions.createFrom({command:["/bin/bash"],tty:!0,...p});try{const g=await S.CreateSession(e,o,h);if(!g)throw new Error("Failed to create session: null response");s({id:l},{id:g.id,title:c??`Session ${g.id.substring(0,8)}`,properties:{status:"connected",pluginID:e,connectionID:o,opts:{...p}}})}catch(g){const y=W(g);s({id:l},{properties:{status:"error",error:y.detail,pluginID:e,connectionID:o,opts:{...p}}}),G(n,g,"Failed to start session")}}}).mutateAsync}},Lt=({pluginID:t})=>{const e=A(t),{showSnackbar:n}=$(),{createTab:r}=ve(),s=v.useMutation({mutationFn:async({connectionID:o,resourceKey:a,resourceID:c,resourceData:p,icon:l,label:h,target:g,follow:y=!0,tailLines:C=1e3,params:R})=>{const d=k.CreateSessionOptions.createFrom({resource_key:a,resource_id:c,resource_data:p,options:k.LogSessionOptions.createFrom({target:g??"",follow:y,include_previous:!1,include_timestamps:!0,tail_lines:C,since_seconds:0,limit_bytes:0,include_source_events:!0,params:R??{}})}),f=await S.CreateSession$1(e,o,d);if(!f)throw new Error("Failed to create log session: null response");return r({id:f.id,title:h??`Logs ${f.id.substring(0,8)}`,variant:"logs",icon:l??"LuLogs"}),f},onError:j(n,"Failed to start log session")}),i=v.useMutation({mutationFn:async o=>{await S.CloseSession(o)},onError:j(n,"Failed to close log session")});return{createLogSession:s.mutateAsync,closeLogSession:i.mutateAsync}},kt=()=>v.useQuery({queryKey:["metric","providers"],queryFn:S.GetProviders,staleTime:3e4}),ze=t=>v.useQuery({queryKey:["metric","providers",t],queryFn:()=>S.GetProvidersForResource(t),enabled:!!t,staleTime:3e4}),Mt=t=>{var d,f;const{connectionID:e,resourceKey:n,resourceID:r,resourceNamespace:s="",resourceData:i={},metricIDs:o=[],shape:a=0,timeRange:c,refreshInterval:p=0,enabled:l=!0}=t,{data:h,isLoading:g}=ze(n),y=h??[],C=c?Math.max(Math.floor((c.end.getTime()-c.start.getTime())/250),15e3)*1e6:0,R=v.useQuery({queryKey:["metric","query",e,n,r,s,o,a,(d=c==null?void 0:c.start)==null?void 0:d.getTime(),(f=c==null?void 0:c.end)==null?void 0:f.getTime()],queryFn:async()=>{const _=await S.QueryAll(e,n,r,s,i,o,a,((c==null?void 0:c.start)??new Date(0)).toISOString(),((c==null?void 0:c.end)??new Date(0)).toISOString(),C),E={};for(const[w,x]of Object.entries(_))x!=null&&(E[w]=x);return E},enabled:l&&!!e&&!!n&&(n.startsWith("cluster::")||!!r)&&y.length>0,refetchInterval:p>0?p:void 0,staleTime:5e3,placeholderData:v.keepPreviousData});return{data:R.data??void 0,providers:y,isLoading:g||R.isLoading,error:R.error,refetch:R.refetch}},jt=t=>{const{pluginID:e,connectionID:n,resourceKey:r,resourceID:s,resourceNamespace:i="",resourceData:o={},metricIDs:a=[],interval:c=1e4,enabled:p=!0}=t,l=A(e),[h,g]=u.useState(null),[y,C]=u.useState(null),[R,d]=u.useState(!1),[f,_]=u.useState(null),E=u.useRef(null),w=u.useCallback(async()=>{if(!(!p||!l||!n||!r||!s))try{const b=await S.Subscribe(l,n,{resource_key:r,resource_id:s,resource_namespace:i,resource_data:o,metric_ids:a,interval:c*1e6});C(b),d(!0),_(null);const I=D.On(`core/metrics/data/${b}`,P=>{const q=P.data;try{const M=JSON.parse(q);M.results&&g(M.results)}catch(M){console.error("Failed to parse metric stream data:",M)}}),O=D.On(`core/metrics/error/${b}`,P=>{const q=P.data;try{const M=JSON.parse(q);_(M.error||"Unknown error")}catch{_("Failed to parse metric stream error")}});E.current=()=>{I(),O()}}catch(b){_(b instanceof Error?b.message:String(b))}},[l,n,r,s,i,a,c,p]),x=u.useCallback(async()=>{if(y)try{await S.Unsubscribe(y)}catch(b){console.error("Failed to unsubscribe:",b)}E.current&&(E.current(),E.current=null),C(null),d(!1)},[y]);return u.useEffect(()=>()=>{y&&S.Unsubscribe(y).catch(console.error),E.current&&E.current()},[y]),{data:h,subscriptionID:y,isStreaming:R,error:f,start:w,stop:x}},B=["networker","portforward","all-sessions"];function qt(){const{showSnackbar:t}=$(),e=v.useQueryClient(),n=v.useQuery({queryKey:[...B],queryFn:async()=>S.ListAllPortForwardSessions().catch(i=>{if(W(i).detail.includes("not found"))return[];throw i}),retry:!1});u.useEffect(()=>{const i=D.On("core/networker/portforward/created",()=>{e.invalidateQueries({queryKey:[...B]})}),o=D.On("core/networker/portforward/closed",()=>{e.invalidateQueries({queryKey:[...B]})});return()=>{i(),o()}},[e]);const r=n.data??[],s=v.useMutation({mutationFn:async i=>S.ClosePortForwardSession(i),onError:j(t,"Failed to close port forwarding session"),onSuccess:async()=>{await e.invalidateQueries({queryKey:[...B]})}});return{sessions:n,activeSessions:r,closeSession:s.mutateAsync,openInBrowser:i=>D.OpenURL(`http://localhost:${i}`)}}function Ut({pluginID:t,connectionID:e,resourceID:n}){const r=A(t),s=["networker","portforward","sessions",r,e,n],{showSnackbar:i}=$(),o=v.useQueryClient(),a=v.useQuery({queryKey:s,queryFn:async()=>S.FindPortForwardSessions(r,e,k.FindPortForwardSessionRequest.createFrom({resource_id:n,connection_id:e})).catch(l=>{const h=W(l);return h.detail.includes("not found")?[]:(i({message:"Failed to fetch port forward sessions",status:"error",details:h.detail}),[])}),retry:!1}),c=v.useMutation({mutationFn:async({opts:l})=>{const h=k.PortForwardSessionOptions.createFrom({local_port:l.localPort||0,remote_port:l.remotePort,protocol:l.protocol||"TCP",connection_type:"RESOURCE",connection:{resource_data:l.resource,connection_id:e,plugin_id:r,resource_id:l.resourceId,resource_key:l.resourceKey},labels:l.labels??{},params:l.parameters??{}}),g=await S.StartResourcePortForwardingSession(r,e,h);if(!g)throw new Error("Failed to start port forwarding: null response");return l.openInBrowser&&D.OpenURL(`http://localhost:${g.local_port}`),g},onError:j(i,"Failed to start port forwarding session"),onSuccess:async()=>{await Promise.all([o.invalidateQueries({queryKey:s}),o.invalidateQueries({queryKey:[...B]})])}}),p=v.useMutation({mutationFn:async({opts:l})=>S.ClosePortForwardSession(l.sessionID),onError:j(i,"Failed to close port forwarding session"),onSuccess:async()=>{await Promise.all([o.invalidateQueries({queryKey:s}),o.invalidateQueries({queryKey:[...B]})])}});return{sessions:a,forward:c.mutateAsync,close:p.mutateAsync}}const $t=()=>{const t=u.useContext(Me);if(!t)throw new Error("useConfirmationModal must be used within a ConfirmationModalProvider");return t},re={scope:(t,e,n)=>[t,e,n],list:(t,e,n,r=[])=>[t,e,n,r,"list"],resource:(t,e,n,r,s="")=>[t,e,n,s,r]},Qt=({pluginID:t,connectionID:e,resourceKey:n,resourceID:r,namespace:s=""})=>{const i=A(t),o=v.useQueryClient(),{showSnackbar:a}=$(),c=re.resource(i,e,n,r,s),{mutateAsync:p}=v.useMutation({mutationFn:async g=>S.Update(i,e,n,k.UpdateInput.createFrom({input:g.input,id:r,namespace:s})),onSuccess:async()=>{a(`Resource ${r} updated`,"success"),await o.invalidateQueries({queryKey:c})},onError:j(a,`Failed to update resource ${r}`)}),{mutateAsync:l}=v.useMutation({mutationFn:async(g={})=>S.Delete(i,e,n,k.DeleteInput.createFrom({id:r,namespace:s,gracePeriodSeconds:g.gracePeriodSeconds})),onSuccess:async()=>{a(`Resource ${r} deleted`,"success"),await o.invalidateQueries({queryKey:c})},onError:j(a,`Failed to delete resource ${r}`)});return{resource:v.useQuery({queryKey:c,queryFn:async()=>S.Get$1(i,e,n,k.GetInput.createFrom({id:r,namespace:s})),retry:!1}),update:p,remove:l}},Wt=t=>{const e=["component",t.plugin,t.resource,t.area];return{component:v.useQuery({queryKey:e,queryFn:async()=>S.GetResourceAreaComponent(t)})}},Gt=({pluginID:t,connectionID:e})=>{const n=A(t),r=[n,"resource_groups","list"];return{groups:v.useQuery({queryKey:r,queryFn:async()=>S.GetResourceGroups(n,e),retry:!1})}},Bt=({pluginID:t,connectionID:e,searches:n})=>{const r=A(t),s=o=>[r,e,o.key,o.namespaces,"list"];return v.useQueries({queries:n.map(o=>({queryKey:s(o),queryFn:async()=>S.List(r,e,o.key,k.ListInput.createFrom({order:[{field:"name",descending:!1}],pagination:{page:1,pageSize:200},namespaces:o.namespaces})).then(a=>a?(console.log(a.result),a.result&&o.postFilter?Object.values(a.result).filter(o.postFilter):Object.values(a.result||{})):[]),retry:!1}))})},Ht=({pluginID:t,resourceKey:e})=>{const n=A(t),r=[n,"resources",e];return{resourceType:v.useQuery({queryKey:r,queryFn:async()=>S.GetResourceType(n,e),retry:!1})}},Kt=({pluginID:t,connectionID:e})=>{const n=A(t),r=[n,"resources","list",e];return{types:v.useQuery({queryKey:r,queryFn:async()=>S.GetResourceTypes(n,e),retry:!1})}};var Z=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function zt(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var Vt="Expected a function",Ve="__lodash_hash_undefined__",Yt="[object Function]",Xt="[object GeneratorFunction]",Jt="[object Symbol]",Zt=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,en=/^\w*$/,tn=/^\./,nn=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,rn=/[\\^$.*+?()[\]{}|]/g,sn=/\\(\\)?/g,on=/^\[object .+?Constructor\]$/,an=typeof Z=="object"&&Z&&Z.Object===Object&&Z,cn=typeof self=="object"&&self&&self.Object===Object&&self,_e=an||cn||Function("return this")();function un(t,e){return t==null?void 0:t[e]}function ln(t){var e=!1;if(t!=null&&typeof t.toString!="function")try{e=!!(t+"")}catch{}return e}var dn=Array.prototype,fn=Function.prototype,Ye=Object.prototype,he=_e["__core-js_shared__"],Oe=function(){var t=/[^.]+$/.exec(he&&he.keys&&he.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}(),Xe=fn.toString,we=Ye.hasOwnProperty,Je=Ye.toString,pn=RegExp("^"+Xe.call(we).replace(rn,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Te=_e.Symbol,hn=dn.splice,gn=Ze(_e,"Map"),X=Ze(Object,"create"),Pe=Te?Te.prototype:void 0,Ae=Pe?Pe.toString:void 0;function H(t){var e=-1,n=t?t.length:0;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function yn(){this.__data__=X?X(null):{}}function mn(t){return this.has(t)&&delete this.__data__[t]}function En(t){var e=this.__data__;if(X){var n=e[t];return n===Ve?void 0:n}return we.call(e,t)?e[t]:void 0}function Sn(t){var e=this.__data__;return X?e[t]!==void 0:we.call(e,t)}function Cn(t,e){var n=this.__data__;return n[t]=X&&e===void 0?Ve:e,this}H.prototype.clear=yn;H.prototype.delete=mn;H.prototype.get=En;H.prototype.has=Sn;H.prototype.set=Cn;function z(t){var e=-1,n=t?t.length:0;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function vn(){this.__data__=[]}function _n(t){var e=this.__data__,n=ie(e,t);if(n<0)return!1;var r=e.length-1;return n==r?e.pop():hn.call(e,n,1),!0}function wn(t){var e=this.__data__,n=ie(e,t);return n<0?void 0:e[n][1]}function bn(t){return ie(this.__data__,t)>-1}function Rn(t,e){var n=this.__data__,r=ie(n,t);return r<0?n.push([t,e]):n[r][1]=e,this}z.prototype.clear=vn;z.prototype.delete=_n;z.prototype.get=wn;z.prototype.has=bn;z.prototype.set=Rn;function K(t){var e=-1,n=t?t.length:0;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function xn(){this.__data__={hash:new H,map:new(gn||z),string:new H}}function In(t){return ae(this,t).delete(t)}function On(t){return ae(this,t).get(t)}function Tn(t){return ae(this,t).has(t)}function Pn(t,e){return ae(this,t).set(t,e),this}K.prototype.clear=xn;K.prototype.delete=In;K.prototype.get=On;K.prototype.has=Tn;K.prototype.set=Pn;function ie(t,e){for(var n=t.length;n--;)if($n(t[n][0],e))return n;return-1}function An(t,e){e=Ln(e,t)?[e]:Fn(e);for(var n=0,r=e.length;t!=null&&n<r;)t=t[qn(e[n++])];return n&&n==r?t:void 0}function Dn(t){if(!tt(t)||Mn(t))return!1;var e=Qn(t)||ln(t)?pn:on;return e.test(Un(t))}function Nn(t){if(typeof t=="string")return t;if(Re(t))return Ae?Ae.call(t):"";var e=t+"";return e=="0"&&1/t==-1/0?"-0":e}function Fn(t){return et(t)?t:jn(t)}function ae(t,e){var n=t.__data__;return kn(e)?n[typeof e=="string"?"string":"hash"]:n.map}function Ze(t,e){var n=un(t,e);return Dn(n)?n:void 0}function Ln(t,e){if(et(t))return!1;var n=typeof t;return n=="number"||n=="symbol"||n=="boolean"||t==null||Re(t)?!0:en.test(t)||!Zt.test(t)||e!=null&&t in Object(e)}function kn(t){var e=typeof t;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?t!=="__proto__":t===null}function Mn(t){return!!Oe&&Oe in t}var jn=be(function(t){t=Gn(t);var e=[];return tn.test(t)&&e.push(""),t.replace(nn,function(n,r,s,i){e.push(s?i.replace(sn,"$1"):r||n)}),e});function qn(t){if(typeof t=="string"||Re(t))return t;var e=t+"";return e=="0"&&1/t==-1/0?"-0":e}function Un(t){if(t!=null){try{return Xe.call(t)}catch{}try{return t+""}catch{}}return""}function be(t,e){if(typeof t!="function"||e&&typeof e!="function")throw new TypeError(Vt);var n=function(){var r=arguments,s=e?e.apply(this,r):r[0],i=n.cache;if(i.has(s))return i.get(s);var o=t.apply(this,r);return n.cache=i.set(s,o),o};return n.cache=new(be.Cache||K),n}be.Cache=K;function $n(t,e){return t===e||t!==t&&e!==e}var et=Array.isArray;function Qn(t){var e=tt(t)?Je.call(t):"";return e==Yt||e==Xt}function tt(t){var e=typeof t;return!!t&&(e=="object"||e=="function")}function Wn(t){return!!t&&typeof t=="object"}function Re(t){return typeof t=="symbol"||Wn(t)&&Je.call(t)==Jt}function Gn(t){return t==null?"":Nn(t)}function Bn(t,e,n){var r=t==null?void 0:An(t,e);return r===void 0?n:r}var Hn=Bn;const ee=zt(Hn);function nt(t,e,n){const r=t??{result:[],success:!0,totalCount:0},s=[...r.result??[]];for(const i of e){const o=ee(i.payload.data,n);switch(i.type){case"ADD":{s.findIndex(c=>ee(c,n)===o)===-1&&s.push(i.payload.data);break}case"UPDATE":{const a=s.findIndex(c=>ee(c,n)===o);a!==-1&&(s[a]=i.payload.data);break}case"DELETE":{const a=s.findIndex(c=>ee(c,n)===o);a!==-1&&s.splice(a,1);break}}}return{...r,result:s}}function rt(t,e,n,r,s,i){const o=(i==null?void 0:i.syncWindowMs)??500,a=u.useRef([]),c=u.useRef(null),p=u.useRef(null),l=u.useRef(s);l.current=s;const h=u.useCallback(()=>{const y=a.current;if(a.current=[],c.current!==null&&(clearTimeout(c.current),c.current=null),p.current!==null&&(cancelAnimationFrame(p.current),p.current=null),!(y.length===0||!r)){t.setQueryData(e,C=>nt(C,y,r));for(const C of y)(C.type==="ADD"||C.type==="UPDATE")&&t.setQueryData(n(C.payload.id,C.payload.namespace),{success:!0,result:C.payload.data})}},[t,e,n,r]),g=u.useCallback(y=>{a.current.push(y),!(c.current!==null||p.current!==null)&&(c.current=setTimeout(h,o),l.current!==1&&(p.current=requestAnimationFrame(h)))},[h,o]);return u.useEffect(()=>()=>{c.current!==null&&(clearTimeout(c.current),c.current=null),p.current!==null&&(cancelAnimationFrame(p.current),p.current=null)},[]),g}const Kn=({pluginID:t,connectionID:e,resourceKey:n,idAccessor:r,namespaces:s})=>{const i=A(t),o=v.useQueryClient(),{showSnackbar:a}=$(),c=u.useMemo(()=>s??[],[s]),p=u.useMemo(()=>re.list(i,e,n,c),[i,e,n,c]),l=u.useCallback((d,f)=>re.resource(i,e,n,d,f),[i,e,n]),{mutateAsync:h}=v.useMutation({mutationFn:async d=>S.Create(i,e,n,k.CreateInput.createFrom({input:d.input,namespace:d.namespace??(c.length===1?c[0]:"")})),onSuccess:async d=>{var w;const f=d==null?void 0:d.result;let _="";(w=f==null?void 0:f.metadata)!=null&&w.name?_=f.metadata.name:f!=null&&f.id?_=f.id:f!=null&&f.name?_=f.name:f!=null&&f.ID?_=f.ID:f!=null&&f.Name&&(_=f.Name);const E=_?`Resource ${_} created`:"Resource created";a(E,"success"),await o.invalidateQueries({queryKey:p})},onError:j(a,"Failed to create resource")}),g=v.useQuery({queryKey:p,queryFn:async()=>S.List(i,e,n,k.ListInput.createFrom({order:[{field:"name",descending:!1}],pagination:{page:1,pageSize:200},namespaces:c})),placeholderData:(d,f)=>d,retry:!1}),[y,C]=u.useState(T.WatchStateIdle);u.useEffect(()=>D.On(`${i}/${e}/watch/STATE`,f=>{const _=f.data;_.resourceKey===n&&C(_.state)}),[i,e,n]);const R=rt(o,p,l,r,y);return u.useEffect(()=>{if(!r)return;S.SubscribeResource(i,e,n);const d=D.On(`${i}/${e}/${n}/ADD`,E=>R({type:"ADD",payload:E.data})),f=D.On(`${i}/${e}/${n}/UPDATE`,E=>R({type:"UPDATE",payload:E.data})),_=D.On(`${i}/${e}/${n}/DELETE`,E=>R({type:"DELETE",payload:E.data}));return()=>{d(),f(),_(),S.UnsubscribeResource(i,e,n)}},[i,e,n,R]),{resources:g,create:h,watchState:y,isSyncing:y===T.WatchStateSyncing,isSynced:y===T.WatchStateSynced,watchError:y===T.WatchStateError}},zn=({pluginID:t})=>{const e=A(t),{showSnackbar:n}=$(),r=v.useMutation({mutationFn:async({opts:o,input:a})=>S.Create(e,o.connectionID,o.resourceKey,k.CreateInput.createFrom({input:a.input,namespace:a.namespace??o.namespace??""})),onSuccess:(o,{opts:a})=>{n(`Resource ${a.resourceID} created`,"success")},onError(o,{opts:a}){G(n,o,`Failed to create resource ${a.resourceID}`)}}),s=v.useMutation({mutationFn:async({opts:o,input:a})=>S.Update(e,o.connectionID,o.resourceKey,k.UpdateInput.createFrom({input:a.input,id:o.resourceID,namespace:o.namespace??""})),onSuccess:(o,{opts:a})=>{n(`Resource ${a.resourceID} updated`,"success")},onError(o,{opts:a}){G(n,o,`Failed to update resource ${a.resourceID}`)}}),i=v.useMutation({mutationFn:async({opts:o,input:a})=>S.Delete(e,o.connectionID,o.resourceKey,k.DeleteInput.createFrom({id:o.resourceID,namespace:o.namespace??"",gracePeriodSeconds:a.gracePeriodSeconds})),onSuccess:(o,{opts:a})=>{n(`Resource ${a.resourceID} deleted`,"success")},onError(o,{opts:a}){G(n,o,`Failed to delete resource ${a.resourceID}`)}});return{create:r.mutateAsync,update:s.mutateAsync,remove:i.mutateAsync}},Vn=({pluginID:t,connectionID:e,resourceKey:n,enabled:r=!0})=>{const s=A(t),i=v.useQuery({queryKey:["RESOURCE_ACTIONS",s,e,n],queryFn:()=>S.GetActions(s,e,n),enabled:r&&!!s&&!!e&&!!n,staleTime:5*60*1e3});return{actions:i.data??[],isLoading:i.isLoading,error:i.error}},Yn=({pluginID:t,connectionID:e,resourceKey:n})=>{const r=A(t),s=v.useQueryClient(),{showSnackbar:i}=$(),o=v.useMutation({mutationFn:async({actionID:a,id:c="",namespace:p="",params:l={}})=>S.ExecuteAction(r,e,n,a,k.ActionInput.createFrom({id:c,namespace:p,params:l})),onSuccess:a=>{a!=null&&a.message&&i(a.message,"success"),s.invalidateQueries({queryKey:["RESOURCES",r,e,n]})},onError:(a,c)=>{G(i,a,`Failed to execute action "${c.actionID}"`)}});return{executeAction:o.mutateAsync,isExecuting:o.isPending,error:o.error}},Xn=({pluginID:t,connectionID:e,enabled:n=!0})=>{const r=A(t),s=v.useQuery({queryKey:["EDITOR_SCHEMAS",r,e],queryFn:()=>S.GetEditorSchemas(r,e),enabled:n&&!!r&&!!e,staleTime:10*60*1e3,retry:1});return{schemas:s.data??[],isLoading:s.isLoading,error:s.error,refetch:s.refetch}},Jn=({pluginID:t,connectionID:e,enabled:n=!0})=>{const r=A(t),s=v.useQueryClient(),i=[r,e,"watch-state"],o=u.useRef([]),a=u.useRef(!1),c=u.useCallback(g=>{s.setQueryData(i,y=>{if(!y)return y;const C={...y.resources,[g.resourceKey]:g.state},R={...y.resourceCounts,[g.resourceKey]:g.resourceCount};let d=0,f=0;for(const _ of Object.values(C))_===T.WatchStateSynced&&d++,(_===T.WatchStateError||_===T.WatchStateFailed)&&f++;return{...y,resources:C,resourceCounts:R,totalResources:Object.keys(C).length,syncedCount:d,errorCount:f}})},[s,r,e]),p=v.useQuery({queryKey:i,queryFn:async()=>{const g=await S.GetWatchState(r,e);if(!g)throw new Error("Failed to get watch state: null response");const y={};let C=0,R=0;for(const[f,_]of Object.entries(g.resources??{}))_!=null&&(y[f]=_,_===T.WatchStateSynced&&C++,_===T.WatchStateError&&R++);const d={};for(const[f,_]of Object.entries(g.resourceCounts??{}))_!=null&&(d[f]=_);return{connection:g.connectionId,resources:y,resourceCounts:d,totalResources:Object.keys(y).length,syncedCount:C,errorCount:R}},enabled:n&&!!r&&!!e,refetchInterval:g=>{const y=g.state.data;if(!y||y.totalResources===0)return 3e3;let C=0;for(const R of Object.values(y.resources))(R===T.WatchStateSynced||R===T.WatchStateError||R===T.WatchStateStopped||R===T.WatchStateFailed||R===T.WatchStateForbidden||R===T.WatchStateSkipped)&&C++;return C>=y.totalResources?!1:3e3}});u.useEffect(()=>{if(!p.data||a.current)return;a.current=!0;const g=o.current;o.current=[];for(const y of g)c(y)},[p.data,c]),u.useEffect(()=>{if(!n||!r||!e)return;a.current=!1,o.current=[];const g=D.On(`${r}/${e}/watch/STATE`,y=>{const C=y.data;a.current?c(C):o.current.push(C)});return()=>{g(),a.current=!1,o.current=[]}},[r,e,n,c]);const l=p.data;let h=0;if(l!=null&&l.resources)for(const g of Object.values(l.resources))(g===T.WatchStateSynced||g===T.WatchStateError||g===T.WatchStateStopped||g===T.WatchStateFailed||g===T.WatchStateForbidden||g===T.WatchStateSkipped)&&h++;return{summary:p,getResourceState:g=>l==null?void 0:l.resources[g],isFullySynced:l?l.totalResources>0&&h===l.totalResources:!1,syncProgress:l&&l.totalResources>0?h/l.totalResources:0,errorCount:(l==null?void 0:l.errorCount)??0}},Zn=()=>{const[t,e]=u.useState(new Map),n=u.useRef(new Map),r=u.useRef(new Map),s=u.useCallback(p=>{const l=p.data,h=Ce(l),g=Ke(n.current,l),y=me(g);if(e(C=>{const R=new Map(C);return R.set(h,y),R}),r.current.has(h)&&(clearTimeout(r.current.get(h)),r.current.delete(h)),ne(y)){const C=setTimeout(()=>{e(R=>{const d=new Map(R);return d.delete(h),d}),n.current.delete(h),r.current.delete(h)},5e3);r.current.set(h,C)}},[]);u.useEffect(()=>{const p=D.On("watch/STATE",s);return()=>{p();for(const l of r.current.values())clearTimeout(l)}},[s]);const i=Array.from(t.values()),o=Be(i),a=i.find(p=>!ne(p))??i[0]??null,c=He(i);return{syncs:i,hasSyncing:o,primarySync:a,aggregateProgress:c}},st=()=>{const t=u.useContext(Se);if(!t)throw new Error("useOperations must be used within an OperationsProvider");return t},er=({pluginID:t,connectionID:e,resourceKey:n})=>{const r=A(t),{showSnackbar:s}=$(),{addOperation:i,updateOperation:o}=st(),a=u.useRef(new Set),c=u.useCallback((h,g=!1)=>{var y,C,R;h.disposed||(h.disposed=!0,(y=h.unsubscribe)==null||y.call(h),(C=h.open)==null||C.cancel(),(R=h.attach)==null||R.cancel(),h.handle&&(S.CancelStreamAction(h.handle).catch(()=>{}),g&&o(h.handle,{status:"cancelled",message:"Cancelled",completedAt:Date.now()})),a.current.delete(h))},[o]);u.useEffect(()=>()=>{for(const h of a.current)c(h,!0)},[r,e,n,c]);const p=u.useCallback(async({actionID:h,id:g,namespace:y,label:C,params:R={}})=>{const d={disposed:!1,terminal:!1,sequence:0};a.current.add(d);try{d.open=S.StreamAction(r,e,n,h,k.ActionInput.createFrom({id:g,namespace:y,params:R}));const f=await d.open;if(d.open=void 0,d.disposed)return S.CancelStreamAction(f).catch(()=>{}),f;d.handle=f,i({id:f,label:C,resourceKey:n,resourceName:g,namespace:y,connectionID:e,status:"running",startedAt:Date.now()});const _=w=>{if(d.disposed||!Number.isSafeInteger(w.sequence)||w.sequence<=d.sequence)return;d.sequence=w.sequence;const x=w.event,b=x.data??{};if(x.type==="error"){d.terminal=!0;const I=W(x.error);o(f,{status:Y(I)?"cancelled":"error",message:I.title,completedAt:Date.now()}),G(s,I,C),c(d)}else if(x.type==="complete"){d.terminal=!0;const I=typeof b.message=="string"?b.message:`${C} completed`;o(f,{status:"completed",message:I,completedAt:Date.now()}),s(I,"success"),c(d)}else o(f,{message:typeof b.message=="string"?b.message:void 0,progress:typeof b.ready=="number"&&typeof b.desired=="number"?{ready:b.ready,desired:b.desired}:void 0})};d.unsubscribe=D.On(`action/stream/${f}`,w=>_(w.data)),d.attach=S.AttachStreamAction(f);const E=await d.attach;return d.attach=void 0,_(E),f}catch(f){if(d.terminal&&d.handle)return d.handle;throw d.disposed||(d.handle&&o(d.handle,{status:Y(f)?"cancelled":"error",message:W(f).title,completedAt:Date.now()}),G(s,f,`Failed to start "${h}"`)),c(d),f}},[r,e,n,i,o,s,c]),l=u.useCallback(h=>{for(const g of a.current)if(g.handle===h){c(g,!0);return}},[c]);return{startStreamAction:p,cancelStreamAction:l}};function ot(t,e){return`${t}/${e}/graph/CHANGED`}function ce(t,e,n,r){const s=v.useQueryClient(),i=u.useRef(n);i.current=n;const o=JSON.stringify(n);u.useEffect(()=>{if(!r||!t||!e)return;const a=D.On(ot(t,e),()=>{s.invalidateQueries({queryKey:i.current,exact:!0})});return()=>{a()}},[s,t,e,o,r])}const tr={owns:{outgoing:"Owns",incoming:"Owned by"},runs_on:{outgoing:"Runs on",incoming:"Running here"},uses:{outgoing:"Uses",incoming:"Used by"},exposes:{outgoing:"Exposes",incoming:"Exposed by"},manages:{outgoing:"Manages",incoming:"Managed by"},member_of:{outgoing:"Member of",incoming:"Members"},selects:{outgoing:"Selects",incoming:"Selected by"}};function nr(t,e){const n=tr[t];if(n)return n[e];const r=t.replace(/_/g," ");return e==="outgoing"?r:`${r} (incoming)`}function rr(t,e){return t.pluginId===e.pluginId&&t.connectionId===e.connectionId&&t.resourceKey===e.resourceKey&&t.id===e.id&&(t.namespace??"")===(e.namespace??"")}function it(t,e){return e.map(n=>{const r=rr(n.source,t);return{resource:r?n.target:n.source,type:n.type,direction:r?"outgoing":"incoming",label:n.label}})}const sr=({pluginID:t,connectionID:e,resourceKey:n,resourceID:r,namespace:s="",direction:i="both",relationshipType:o,enabled:a=!0,refetchInterval:c=!1})=>{const p=A(t),l=["RESOURCE_RELATED",p,e,n,s,r,i,o??null],h=a&&!!p&&!!e&&!!n&&!!r;ce(p,e,l,h);const g=v.useQuery({queryKey:l,queryFn:async()=>S.GetRelated(p,e,n,s,r,i,o??null),enabled:h,refetchInterval:c}),y={pluginId:p,connectionId:e,resourceKey:n,id:r,namespace:s},C=g.data??[];return{related:it(y,C),edges:C,isLoading:g.isLoading,isFetching:g.isFetching,error:g.error,refetch:g.refetch}},or=({pluginID:t,connectionID:e,resourceKey:n,resourceID:r,namespace:s="",maxDepth:i=3,enabled:o=!0,refetchInterval:a=!1})=>{const c=A(t),p=["RESOURCE_DEPENDENCY_TREE",c,e,n,s,r,i],l=o&&!!c&&!!e&&!!n&&!!r;ce(c,e,p,l);const h=v.useQuery({queryKey:p,queryFn:async()=>S.GetDependencyTree(c,e,n,s,r,i),enabled:l,refetchInterval:a});return{tree:h.data??null,isLoading:h.isLoading,isFetching:h.isFetching,error:h.error,refetch:h.refetch}},ir=({pluginID:t,connectionID:e,resourceKey:n,resourceID:r,namespace:s="",upDepth:i=2,downDepth:o=3,enabled:a=!0})=>{const c=A(t),p=["RESOURCE_GRAPH",c,e,n,s,r,i,o],l=a&&!!c&&!!e&&!!n&&!!r;ce(c,e,p,l);const h=v.useQuery({queryKey:p,queryFn:async()=>S.GetSubgraph(c,e,n,s,r,i,o),enabled:l});return{graph:h.data??null,isLoading:h.isLoading,isFetching:h.isFetching,error:h.error,refetch:h.refetch}},ar=()=>{const t=u.useContext(Ee);if(!t)throw new Error("useSettings must be used within a SettingsProvider");return t},cr=({to:t,withinContext:e,...n})=>{const{pluginId:r}=oe();r||console.error("Link used outside of a plugin context");const s=`/_plugin/${r}${t.startsWith("/")?"":"/"}${t}`;return u.useMemo(()=>m.jsx(V.Link,{style:{textDecoration:"none",color:"inherit"},...n,to:s}),[n,s])};function ur(){const t=V.useNavigate(),e=V.useLocation(),{pluginId:n}=oe();n||console.error("usePluginRouter used outside of a plugin context");const r=`/_plugin/${n}`,s=e.pathname.startsWith(r)?e.pathname.slice(r.length)||"/":e.pathname,i=u.useCallback((o,a)=>{const{...c}=a??{};o.startsWith("/")?t(`${r}${o}`,c):t(o,c)},[t,r]);return u.useMemo(()=>({location:e,navigate:i,pluginPath:s}),[e,i,s])}class lr{}class dr{constructor(){F(this,"_extensions");F(this,"root");F(this,"pages");F(this,"_routes")}get extensions(){return this._extensions||[]}get Routes(){var e;if(!this._routes&&this.root)return[{path:"",index:!0,Component:this.root}];if(!((e=this._routes)!=null&&e.length))throw new Error("cannot use plugin without a root page or router");return this._routes}get Window(){if(!this._routes&&this.root)return m.jsx(this.root,{});const e=V.createMemoryRouter(this._routes||[]);return m.jsx(V.RouterProvider,{router:e})}registerExtensionPoints(e){return this._extensions=e||[],this}setRootPage(e){return this.root=e,this}withPage(e,n){return this.pages||(this.pages={}),this.pages[e]?(console.warn("Cannot register page with the same name. Please use a different name."),this):(this.pages[e]=n,this)}withRoutes(e){return this._routes=e,this}}var at=(t=>(t.MISSING_MANIFEST="MISSING_MANIFEST",t.MISSING_PLUGIN="MISSING_PLUGIN",t.MISSING_ENTRYPOINT="MISSING_ENTRYPOINT",t))(at||{});const fr=t=>{const e=t.split("::");return e.length===1?{group:"core",version:"",kind:e[0]}:{group:e[0]||"core",version:e[1]||"",kind:e[2]||e[0]}},pr=t=>!t||t==="core"?"Core":t.charAt(0).toUpperCase()+t.slice(1),ct="omniview/global-search/open";function hr(t={}){window.dispatchEvent(new CustomEvent(ct,{detail:t}))}const ut="omniview/resource/icons";class gr extends u.Component{constructor(){super(...arguments);F(this,"state",{failed:!1,resetToken:this.props.resetToken})}static getDerivedStateFromProps(n,r){return n.resetToken!==r.resetToken?{failed:!1,resetToken:n.resetToken}:null}static getDerivedStateFromError(){return{failed:!0}}render(){return this.state.failed?this.props.fallback:this.props.children}}function yr({pluginId:t,resourceKey:e,fallback:n,...r}){const s=$e(ut),i=n===void 0?m.jsx("svg",{width:r.size??16,height:r.size??16,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",className:r.className,"aria-hidden":r["aria-hidden"]??!0,children:m.jsx("path",{d:"m12 3 9 5v8l-9 5-9-5V8l9-5Zm0 9 9-4M12 12 3 8m9 4v9"})}):n;for(const o of(s==null?void 0:s.listAll())??[])if(o.plugin===t)try{const a=o.value;if((a==null?void 0:a.schemaVersion)!==1||typeof a.resolve!="function")continue;const c=a.resolve(e);if(!c)continue;return m.jsx(gr,{resetToken:o,fallback:i,children:m.jsx(u.Suspense,{fallback:i,children:m.jsx(c,{...r,"aria-hidden":r["aria-hidden"]??!0})})},JSON.stringify([t,e,s==null?void 0:s.version,o.id]))}catch{}return m.jsx(m.Fragment,{children:i})}exports.ALL_SESSIONS_KEY=B;exports.BottomDrawerContext=Le;exports.ConfirmationModalContext=Me;exports.ErrorTypes=N;exports.ExtensionPointRegistry=bt;exports.ExtensionPointStore=Qe;exports.ExtensionProvider=wt;exports.GLOBAL_SEARCH_OPEN_EVENT=ct;exports.Link=cr;exports.OperationsContext=Se;exports.OperationsProvider=Et;exports.PluginContext=se;exports.PluginContextProvider=ht;exports.PluginErrorCode=at;exports.PluginWindow=dr;exports.PluginWindowRootProps=lr;exports.RESOURCE_ICON_EXTENSION_POINT_ID=ut;exports.ResourceIcon=yr;exports.RightDrawerContext=ke;exports.SettingsContext=Ee;exports.SettingsProvider=yt;exports.SnackbarProvider=xt;exports.WatchState=T;exports.actionToSnackbar=De;exports.applyBatch=nt;exports.connectionListQueryKey=Ge;exports.createErrorHandler=j;exports.defaultState=Fe;exports.formatGroup=pr;exports.graphChangedEvent=ot;exports.isCancelledError=Y;exports.openGlobalSearch=hr;exports.parseAppError=W;exports.parseResourceKey=fr;exports.relationshipLabel=nr;exports.resourceQueryKeys=re;exports.showAppError=G;exports.toRelatedResources=it;exports.useActiveSyncs=Zn;exports.useBottomDrawer=ve;exports.useConfirmationModal=$t;exports.useConnection=It;exports.useConnectionNamespaces=Tt;exports.useConnectionStatus=Pt;exports.useConnections=Ot;exports.useDependencyTree=or;exports.useEditorSchemas=Xn;exports.useEventBatcher=rt;exports.useExec=Ft;exports.useExecuteAction=Yn;exports.useExtensionPoint=$e;exports.useExtensionRegistry=Ue;exports.useLogs=Lt;exports.useMetricProviders=kt;exports.useMetricProvidersForResource=ze;exports.useMetricStream=jt;exports.useOperations=st;exports.usePluginContext=oe;exports.usePluginData=Dt;exports.usePluginRouter=ur;exports.usePluginSettings=gt;exports.usePortForwardSessions=qt;exports.useRefetchOnGraphChange=ce;exports.useRelatedResources=sr;exports.useResolvedPluginId=A;exports.useResource=Qt;exports.useResourceActions=Vn;exports.useResourceAreaComponent=Wt;exports.useResourceGraph=ir;exports.useResourceGroups=Gt;exports.useResourceMetrics=Mt;exports.useResourceMutations=zn;exports.useResourcePortForwarder=Ut;exports.useResourceSearch=Bt;exports.useResourceType=Ht;exports.useResourceTypes=Kt;exports.useResources=Kn;exports.useRightDrawer=Nt;exports.useSettings=ar;exports.useSnackbar=$;exports.useStreamAction=er;exports.useWatchState=Jn;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const A=require("react/jsx-runtime"),j=require("react/compiler-runtime"),w=require("react"),xe=require("react-router"),L=require("@tanstack/react-query"),N=require("./servicewrapper-CCW7kIVs.cjs");require("./index-BVi9X4oU.cjs");const oe=require("@omniviewdev/base-ui"),re=require("./events-DnLqUWri.cjs"),ie=require("./models-DQl7tqts.cjs"),Ut=require("react-router/dom"),qt=require("./legacyEnum-DkV5yRdA.cjs"),Oe=w.createContext(void 0),se={PLUGIN_NOT_FOUND:"omniview:plugin/not-found",PLUGIN_NOT_LOADED:"omniview:plugin/not-loaded",PLUGIN_ALREADY_LOADED:"omniview:plugin/already-loaded",PLUGIN_INSTALL_FAILED:"omniview:plugin/install-failed",PLUGIN_LOAD_FAILED:"omniview:plugin/load-failed",PLUGIN_BUILD_FAILED:"omniview:plugin/build-failed",PLUGIN_COMMITTED_CLEANUP_PENDING:"omniview:plugin/committed-cleanup-pending",PLUGIN_COMMIT_UNCERTAIN:"omniview:plugin/commit-uncertain",SETTINGS_MISSING_CONFIG:"omniview:settings/missing-config",SETTINGS_INVALID_CONFIG:"omniview:settings/invalid-config",RESOURCE_NOT_FOUND:"omniview:resource/not-found",RESOURCE_FORBIDDEN:"omniview:resource/forbidden",RESOURCE_UNAUTHORIZED:"omniview:resource/unauthorized",RESOURCE_CONFLICT:"omniview:resource/conflict",RESOURCE_TIMEOUT:"omniview:resource/timeout",RESOURCE_LIMIT:"omniview:resource/limit",RESOURCE_CONTINUATION_EXPIRED:"omniview:resource/continuation-expired",RESOURCE_RESET_REQUIRED:"omniview:resource/reset-required",RESOURCE_PARTIAL:"omniview:resource/partial",RESOURCE_PROVIDER_ERROR:"omniview:resource/provider-error",CONNECTION_NOT_FOUND:"omniview:connection/not-found",CONNECTION_FAILED:"omniview:connection/failed",SESSION_NOT_FOUND:"omniview:session/not-found",SESSION_FAILED:"omniview:session/failed",CANCELLED:"omniview:cancelled",INTERNAL:"omniview:internal",VALIDATION:"omniview:validation",NOT_IMPLEMENTED:"omniview:not-implemented"},Xe={INVALID_REQUEST:[se.VALIDATION,400,"correctRequest"],UNSUPPORTED:[se.NOT_IMPLEMENTED,501,"refreshContract"],FORBIDDEN:[se.RESOURCE_FORBIDDEN,403,"none"],UNAUTHORIZED:[se.RESOURCE_UNAUTHORIZED,401,"none"],NOT_FOUND:[se.RESOURCE_NOT_FOUND,404,"none"],CONFLICT:[se.RESOURCE_CONFLICT,409,"refreshContract"],ALREADY_EXISTS:[se.RESOURCE_CONFLICT,409,"refreshContract"],CANCELLED:[se.CANCELLED,499,"none"],TIMEOUT:[se.RESOURCE_TIMEOUT,408,"none"],UNAVAILABLE:[se.CONNECTION_FAILED,503,"reconnect"],CONNECTION_ERROR:[se.CONNECTION_FAILED,503,"reconnect"],CERTIFICATE_ERROR:[se.CONNECTION_FAILED,502,"reconnect"],RESOURCE_LIMIT:[se.RESOURCE_LIMIT,429,"correctRequest"],CONTINUATION_EXPIRED:[se.RESOURCE_CONTINUATION_EXPIRED,410,"restartQuery"],RESET_REQUIRED:[se.RESOURCE_RESET_REQUIRED,409,"restartQuery"],PARTIAL_RESULT:[se.RESOURCE_PARTIAL,422,"none"],PROVIDER_ERROR:[se.RESOURCE_PROVIDER_ERROR,502,"none"],INTERNAL:[se.INTERNAL,500,"none"]};function Le(t){return typeof t=="object"&&t!==null?t:void 0}function ue(t,e){return typeof t=="string"&&t.length>0&&t.length<=e}function $e(){return{type:se.CANCELLED,code:"CANCELLED",title:"Cancelled",status:499,detail:"The operation was cancelled.",recovery:"none"}}function De(t,e){if(e>4)return;if(t==="cancelled")return $e();if(typeof t=="string"){const n=t.trim();if(!n.startsWith("{"))return;try{return De(JSON.parse(n),e+1)}catch{return}}const s=Le(t);if(s){if(s.name==="AbortError"||s.name==="CancelError")return $e();if(ue(s.type,256)&&ue(s.title,256)&&typeof s.status=="number"&&Number.isInteger(s.status)&&s.status>=100&&s.status<=599&&typeof s.detail=="string"&&s.detail.length<=4096){const n={type:s.type,title:s.title,status:s.status,detail:s.detail};ue(s.code,64)&&(n.code=s.code),ue(s.requestId,256)&&(n.requestId=s.requestId),ue(s.instance,512)&&(n.instance=s.instance),Array.isArray(s.suggestions)&&(n.suggestions=s.suggestions.filter(o=>ue(o,512)).slice(0,8)),Array.isArray(s.actions)&&(n.actions=s.actions.filter(o=>{const c=Le(o);return!!c&&["navigate","retry","open-url","copy"].includes(String(c.type))&&ue(c.label,256)&&(c.target===void 0||ue(c.target,4096))}).slice(0,8)),["correctRequest","refreshContract","restartQuery","reconnect","none"].includes(String(s.recovery))&&(n.recovery=s.recovery);const r=Le(s.location);return r?.unit==="utf8-byte"&&typeof r.start=="number"&&typeof r.end=="number"&&Number.isSafeInteger(r.start)&&Number.isSafeInteger(r.end)&&r.start>=0&&r.end>=r.start&&(n.location={start:r.start,end:r.end,unit:"utf8-byte"}),n}if(typeof s.code=="string"&&typeof s.title=="string"&&typeof s.message=="string"){let n=s.code;if(n==="PERMISSION_DENIED"&&(n="FORBIDDEN"),["INVALID_INPUT","FILTER_UNKNOWN_FIELD","FILTER_INVALID_OPERATOR"].includes(n)&&(n="INVALID_REQUEST"),Object.prototype.hasOwnProperty.call(Xe,n)||(n="INTERNAL"),n==="CANCELLED")return $e();const[r,o,c]=Xe[n],i=n==="FORBIDDEN"||n==="UNAUTHORIZED"||n==="INTERNAL"||n==="PROVIDER_ERROR";return{type:r,status:o,code:n,recovery:c,title:i?n==="FORBIDDEN"?"Access denied":n==="UNAUTHORIZED"?"Authentication required":"Operation failed":ue(s.title,256)?s.title:"Operation failed",detail:i?"The operation could not be completed.":ue(s.message,4096)?s.message:"The operation could not be completed.",...!i&&Array.isArray(s.suggestions)?{suggestions:s.suggestions.filter(a=>ue(a,512)).slice(0,8)}:{}}}return De(s.message,e+1)??De(s.cause,e+1)}}function de(t){return De(t,0)??{type:se.INTERNAL,title:t==null?"Unknown error":"Error",status:500,detail:t==null?"An unknown error occurred.":"The operation could not be completed."}}function ve(t){return de(t).type===se.CANCELLED}function et(t){switch(t.type){case"navigate":return{label:t.label,onClick:()=>{window.location.hash=t.target??""}};case"open-url":return{label:t.label,onClick:()=>{window.open(t.target,"_blank")}};case"copy":return{label:t.label,onClick:()=>{navigator.clipboard.writeText(t.target??"")}};case"retry":return{label:t.label,onClick:()=>{}};default:return{label:t.label,onClick:()=>{}}}}function tt(t,e){const s=[t.detail,...t.suggestions?.map(r=>`• ${r}`)??[]].join(`
2
+ `);return{message:e||(t.title!=="Error"?t.title:"Operation failed"),status:"error",details:s,actions:t.actions?.map(et)}}function ye(t,e,s){if(ve(e))return;const n=de(e);t(tt(n,s))}function ce(t,e){return s=>{if(ve(s))return;const n=de(s);t(tt(n,n.title!=="Error"?n.title:e))}}function Qt(t){const e=j.c(2);let s;return e[0]!==t?(s=A.jsx(Wt,{...t},t.pluginId),e[0]=t,e[1]=s):s=e[1],s}function Wt(t){const e=j.c(40),{children:s,pluginId:n,headless:r}=t,o=r===void 0?!1:r;let c;e[0]===Symbol.for("react.memo_cache_sentinel")?(c={},e[0]=c):c=e[0];const[i,a]=w.useState(c);let d;e[1]===Symbol.for("react.memo_cache_sentinel")?(d=new ie.PluginMeta,e[1]=d):d=e[1];const[l,f]=w.useState(d),[u,p]=w.useState(!1),[y,v]=w.useState(null),g=w.useRef(0),E=w.useRef(0);console.debug("[PluginContextProvider] render",{pluginId:n,metaLoaded:u,metaError:!!y});let m;e[2]!==n?(m=()=>{if(n===void 0||n==="")return;const P=g.current=g.current+1;console.debug(`[PluginContextProvider] fetching settings for "${n}"`),N.PluginValues(n).then(O=>{P===g.current&&(console.debug(`[PluginContextProvider] settings loaded for "${n}"`,Object.keys(O)),a(O))}).catch(O=>{if(P!==g.current)return;const k=de(O);console.error(`[PluginContextProvider] error fetching settings for "${n}":`,k.detail)})},e[2]=n,e[3]=m):m=e[3];const S=m;let h;e[4]!==n?(h=()=>{if(n===void 0||n===""){console.debug("[PluginContextProvider] skipping meta fetch — empty pluginId");return}const P=E.current=E.current+1;console.debug(`[PluginContextProvider] fetching meta for "${n}"`),N.GetPluginMeta(n).then(O=>{P===E.current&&(console.debug(`[PluginContextProvider] meta loaded for "${n}"`,{name:O?.name,version:O?.version}),f(O),p(!0))}).catch(O=>{if(P!==E.current)return;const k=de(O);console.error(`[PluginContextProvider] error fetching meta for "${n}":`,k.detail),v(k.detail),p(!1)})},e[4]=n,e[5]=h):h=e[5];const I=h;let C,T;e[6]!==I||e[7]!==S||e[8]!==u||e[9]!==n?(C=()=>{if(u)return;const P=()=>{v(null),S(),I()},O=[re.On("plugin/init_complete",P),re.On("plugin/dev_install_complete",k=>{k.data?.id===n&&P()}),re.On("plugin/inventory_changed",P)];return()=>{for(const k of O)k()}},T=[n,u,S,I],e[6]=I,e[7]=S,e[8]=u,e[9]=n,e[10]=C,e[11]=T):(C=e[10],T=e[11]),w.useEffect(C,T);let D,x;if(e[12]!==I||e[13]!==S||e[14]!==n?(D=()=>(console.debug(`[PluginContextProvider] useEffect — pluginId changed to "${n}"`),S(),I(),()=>{g.current=g.current+1,E.current=E.current+1}),x=[n,S,I],e[12]=I,e[13]=S,e[14]=n,e[15]=D,e[16]=x):(D=e[15],x=e[16]),w.useEffect(D,x),y){if(o)throw new Error(y);let P,O,k;e[17]===Symbol.for("react.memo_cache_sentinel")?(k={display:"flex",flex:1,alignItems:"center",justifyContent:"center",padding:24},P={maxWidth:480,width:"100%",border:"1px solid #7F1D1D",borderRadius:8,backgroundColor:"#1C1917",padding:20,fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif'},O={display:"flex",alignItems:"center",gap:8,marginBottom:12},e[17]=P,e[18]=O,e[19]=k):(P=e[17],O=e[18],k=e[19]);let B,Q;e[20]===Symbol.for("react.memo_cache_sentinel")?(B=A.jsxs("div",{style:O,children:[A.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"#EF4444",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[A.jsx("circle",{cx:"12",cy:"12",r:"10"}),A.jsx("line",{x1:"12",y1:"8",x2:"12",y2:"12"}),A.jsx("line",{x1:"12",y1:"16",x2:"12.01",y2:"16"})]}),A.jsx("span",{style:{fontSize:14,fontWeight:600,color:"#FECACA"},children:"Plugin failed to load"})]}),Q={fontSize:13,color:"#A1A1AA",margin:"0 0 16px"},e[20]=B,e[21]=Q):(B=e[20],Q=e[21]);let W;e[22]!==y?(W=A.jsx("p",{style:Q,children:y}),e[22]=y,e[23]=W):W=e[23];let K;e[24]!==I?(K=()=>{v(null),I()},e[24]=I,e[25]=K):K=e[25];let Y;e[26]===Symbol.for("react.memo_cache_sentinel")?(Y={background:"transparent",color:"#F87171",border:"1px solid #7F1D1D",borderRadius:6,padding:"6px 14px",fontSize:13,fontWeight:500,cursor:"pointer"},e[26]=Y):Y=e[26];let U;e[27]!==K?(U=A.jsx("button",{onClick:K,style:Y,children:"Retry"}),e[27]=K,e[28]=U):U=e[28];let z;return e[29]!==W||e[30]!==U?(z=A.jsx("div",{style:k,children:A.jsxs("div",{style:P,children:[B,W,U]})}),e[29]=W,e[30]=U,e[31]=z):z=e[31],z}if(!u){if(o)return null;let P;return e[32]===Symbol.for("react.memo_cache_sentinel")?(P=A.jsxs("div",{style:{display:"flex",flex:1,alignItems:"center",justifyContent:"center"},children:[A.jsx("div",{style:{width:24,height:24,border:"2px solid #3F3F46",borderTopColor:"#A1A1AA",borderRadius:"50%",animation:"plugin-spin 0.8s linear infinite"}}),A.jsx("style",{children:"@keyframes plugin-spin { to { transform: rotate(360deg); } }"})]}),e[32]=P):P=e[32],P}let F;e[33]!==l||e[34]!==n||e[35]!==i?(F={pluginId:n,settings:i,meta:l},e[33]=l,e[34]=n,e[35]=i,e[36]=F):F=e[36];let R;return e[37]!==s||e[38]!==F?(R=A.jsx(Oe.Provider,{value:F,children:s}),e[37]=s,e[38]=F,e[39]=R):R=e[39],R}function Pe(){const t=w.useContext(Oe);if(!t)throw new Error("usePluginContext must be used within a PluginContextProvider");return t}function Gt(){return Pe().settings}const We=w.createContext(void 0),Kt=t=>{const e=j.c(10),{children:s}=t;let n;e[0]===Symbol.for("react.memo_cache_sentinel")?(n={},e[0]=n):n=e[0];const[r,o]=w.useState(n),c=w.useRef(0);let i;e[1]===Symbol.for("react.memo_cache_sentinel")?(i=()=>{const v=c.current+1;c.current=v,N.Values().then(g=>{v===c.current&&o(g)}).catch(g=>{v===c.current&&console.error("Error fetching settings:",g)})},e[1]=i):i=e[1];const a=i;let d,l;e[2]===Symbol.for("react.memo_cache_sentinel")?(d=()=>{const v=re.On("settings/changed",()=>a());return a(),()=>{c.current=c.current+1,v()}},l=[a],e[2]=d,e[3]=l):(d=e[2],l=e[3]),w.useEffect(d,l);let f;e[4]===Symbol.for("react.memo_cache_sentinel")?(f=()=>{a()},e[4]=f):f=e[4];const u=f;let p;e[5]!==r?(p={settings:r,reload:u},e[5]=r,e[6]=p):p=e[6];let y;return e[7]!==s||e[8]!==p?(y=A.jsx(We.Provider,{value:p,children:s}),e[7]=s,e[8]=p,e[9]=y):y=e[9],y},nt={height:32,focused:0,tabs:[],createTab:()=>{},createTabs:()=>{},updateTab:()=>{},focusTab:()=>{},reorderTab:()=>{},closeTab:()=>{},closeTabs:()=>{},resizeDrawer:()=>{},closeDrawer:()=>{},fullscreenDrawer:()=>{}},rt=w.createContext(nt),st=w.createContext(void 0),ot=w.createContext(void 0),Ge=w.createContext(void 0),Bt=3e4,Ht=t=>{const e=j.c(12),{children:s}=t;let n;e[0]===Symbol.for("react.memo_cache_sentinel")?(n=[],e[0]=n):n=e[0];const[r,o]=w.useState(n);let c;e[1]===Symbol.for("react.memo_cache_sentinel")?(c=E=>{o(m=>[E,...m])},e[1]=c):c=e[1];const i=c;let a;e[2]===Symbol.for("react.memo_cache_sentinel")?(a=(E,m)=>{o(S=>S.map(h=>h.id===E?{...h,...m}:h))},e[2]=a):a=e[2];const d=a;let l;e[3]===Symbol.for("react.memo_cache_sentinel")?(l=E=>{o(m=>m.filter(S=>S.id!==E))},e[3]=l):l=e[3];const f=l;let u,p;e[4]!==r?(u=()=>{const E=[];for(const m of r)if(m.status!=="running"){const S=Date.now()-(m.completedAt??m.startedAt),h=Math.max(0,Bt-S);E.push(setTimeout(()=>f(m.id),h))}return()=>E.forEach(clearTimeout)},p=[r,f],e[4]=r,e[5]=u,e[6]=p):(u=e[5],p=e[6]),w.useEffect(u,p);let y;e[7]!==r?(y={operations:r,addOperation:i,updateOperation:d,removeOperation:f},e[7]=r,e[8]=y):y=e[8];const v=y;let g;return e[9]!==s||e[10]!==v?(g=A.jsx(Ge.Provider,{value:v,children:s}),e[9]=s,e[10]=v,e[11]=g):g=e[11],g};var Ue=function(t,e){return Ue=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(s,n){s.__proto__=n}||function(s,n){for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(s[r]=n[r])},Ue(t,e)};function zt(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");Ue(t,e);function s(){this.constructor=t}t.prototype=e===null?Object.create(e):(s.prototype=e.prototype,new s)}var Me="Invariant Violation",Je=Object.setPrototypeOf,Vt=Je===void 0?function(t,e){return t.__proto__=e,t}:Je,Yt=(function(t){zt(e,t);function e(s){s===void 0&&(s=Me);var n=t.call(this,typeof s=="number"?Me+": "+s+" (see https://github.com/apollographql/invariant-packages)":s)||this;return n.framesToPop=1,n.name=Me,Vt(n,e.prototype),n}return e})(Error);function qe(t,e){if(!t)throw new Yt(e)}var it=["debug","log","warn","error","silent"],Xt=it.indexOf("log");function Ie(t){return function(){if(it.indexOf(t)>=Xt){var e=console[t]||console.log;return e.apply(console,arguments)}}}(function(t){t.debug=Ie("debug"),t.log=Ie("log"),t.warn=Ie("warn"),t.error=Ie("error")})(qe||(qe={}));const ct=w.createContext(void 0),at=()=>w.useContext(ct);function lt(t){const e=j.c(12),s=at(),n=w.useRef(null);let r;e[0]!==t||e[1]!==s?(r=s?.getExtensionPoint(t),e[0]=t,e[1]=s,e[2]=r):r=e[2];const o=r;let c;e[3]!==s||e[4]!==o?(c=f=>{const u=[];return s&&u.push(s.subscribe(f)),o&&u.push(o.subscribe(f)),()=>{for(const p of u)p()}},e[3]=s,e[4]=o,e[5]=c):c=e[5];const i=c;let a;e[6]!==t||e[7]!==s?(a=()=>{const f=s?.getExtensionPoint(t);if(!f){if(n.current&&n.current.store===void 0)return n.current.sentinel;const y={};return n.current={store:void 0,version:-1,sentinel:y},y}const u=n.current;if(u&&u.store===f&&u.version===f.version)return u.sentinel;const p={};return n.current={store:f,version:f.version,sentinel:p},p},e[6]=t,e[7]=s,e[8]=a):a=e[8];const d=a;w.useSyncExternalStore(i,d);let l;return e[9]!==t||e[10]!==s?(l=s?.getExtensionPoint(t),e[9]=t,e[10]=s,e[11]=l):l=e[11],l}const Jt=t=>{const e=j.c(5),{registry:s,children:n}=t;let r;e[0]!==s?(r=()=>s,e[0]=s,e[1]=r):r=e[1];const[o]=w.useState(r);qe(o===s,"You can't change the extension registry after it has been rendered");let c;return e[2]!==n||e[3]!==o?(c=A.jsx(ct.Provider,{value:o,children:n}),e[2]=n,e[3]=o,e[4]=c):c=e[4],c},ke=t=>{if(!t||typeof t!="string")throw new TypeError(`extensionName is required to be a string and can't be: "${t}" (${typeof t})`);return t.trim()};class ut{id;mode;_pluginId;_version=0;_contributions=new Map;_lookupCache=new Map;_matcher;_select;_listeners=new Set;constructor(e){this.id=e.id,this.mode=e.mode??"multiple",this._pluginId=e.pluginId,this._matcher=e.matcher,this._select=e.select}get pluginId(){return this._pluginId}get version(){return this._version}register(e){if(this._contributions.has(e.id))throw new Error(`Contribution with id "${e.id}" already exists in extension point "${this.id}"`);this._contributions.set(e.id,e),this._invalidateCache(),this._notify()}unregister(e){this._contributions.delete(e)&&(this._invalidateCache(),this._notify())}provide(e){return this._getMatched(e).map(n=>n.value)}list(e){return this._getMatched(e)}listAll(){return Array.from(this._contributions.values())}subscribe(e){return this._listeners.add(e),()=>{this._listeners.delete(e)}}removeContributionsByPlugin(e){let s=!1;for(const[n,r]of this._contributions)r.plugin===e&&(this._contributions.delete(n),s=!0);s&&(this._invalidateCache(),this._notify())}_getMatched(e){const s=this._getCacheKey(e);if(s!=null){const r=this._lookupCache.get(s);if(r){const o=r.map(c=>this._contributions.get(c)).filter(c=>c!=null);return this._applyMode(o,e)}}let n=this._sortDeterministic(Array.from(this._contributions.values()));return this._matcher&&e!==void 0&&(n=n.filter(r=>this._matcher(r,e))),s!=null&&this._lookupCache.set(s,n.map(r=>r.id)),this._applyMode(n,e)}_applyMode(e,s){if(this.mode==="single"){if(this._select){const n=this._select(e,s);return n?[n]:[]}return e.length>0?[e[0]]:[]}return e}_sortDeterministic(e){return[...e].sort((s,n)=>{const r=s.plugin.localeCompare(n.plugin);return r!==0?r:s.id.localeCompare(n.id)})}_getCacheKey(e){if(e!=null&&typeof e=="object"&&"getCacheKey"in e){const s=e.getCacheKey;if(typeof s=="function")return s()}}_invalidateCache(){this._lookupCache.clear()}_notify(){this._version++;for(const e of this._listeners)e()}}class Zt{_stores=new Map;_storeUnsubs=new Map;_listeners=new Set;constructor(e){if(e?.initialStores)for(const s of e.initialStores)this.addExtensionPoint(s)}addExtensionPoint(e){const s=ke(e.id);if(this._stores.has(s)){const r=this._stores.get(s);throw new Error(`Extension point "${s}" already exists (owned by "${r.pluginId??"unknown"}")`)}const n=new ut({...e,id:s});this._stores.set(s,n),this._storeUnsubs.set(s,n.subscribe(()=>this._notify())),this._notify()}getExtensionPoint(e){const s=ke(e);return this._stores.get(s)}hasExtensionPoint(e){const s=ke(e);return this._stores.has(s)}listExtensionPoints(){return Array.from(this._stores.keys())}removeExtensionPoints(e){let s=!1;for(const[n,r]of this._stores)r.pluginId===e&&(this._storeUnsubs.get(n)?.(),this._storeUnsubs.delete(n),this._stores.delete(n),s=!0);s&&this._notify()}removeContributions(e){for(const s of this._stores.values())s.removeContributionsByPlugin(e);this._notify()}subscribe(e){return this._listeners.add(e),()=>{this._listeners.delete(e)}}_notify(){for(const e of this._listeners)e()}}const ae={Panel:{position:"fixed",right:"var(--ov-space-3)",bottom:36,zIndex:"calc(var(--ov-z-toast, 9999) + 1)",width:"min(480px, calc(100vw - 24px))",minWidth:0,maxHeight:"min(560px, calc(100dvh - 64px))",display:"flex",flexDirection:"column",overflow:"hidden",padding:0},Header:{flex:"none",gap:"var(--ov-space-2)",paddingInline:"var(--ov-space-3)",background:"var(--ov-color-bg-surface-raised)",borderBottom:"1px solid var(--ov-color-border-muted)"},HeaderActions:{marginLeft:"auto"},List:{minHeight:0,overflowY:"auto",overscrollBehavior:"contain"},Notice:{borderTop:"1px solid var(--ov-color-border-muted)"},Row:{display:"flex",alignItems:"center",gap:"var(--ov-space-1)",padding:"var(--ov-space-2) var(--ov-space-2) var(--ov-space-2) var(--ov-space-3)"},ErrorIcon:{flex:"none",color:"var(--ov-color-danger)"},Message:{flex:1,minWidth:0,justifyContent:"flex-start",textAlign:"left"},MessageText:{minWidth:0,overflowWrap:"anywhere"},Details:{padding:"0 var(--ov-space-3) var(--ov-space-3) 36px"},Code:{display:"block",margin:"var(--ov-space-2) 0",padding:"var(--ov-space-3)",maxHeight:240,overflow:"auto",whiteSpace:"pre-wrap",overflowWrap:"anywhere",lineHeight:1.5,userSelect:"text"},Actions:{display:"flex",flexWrap:"wrap",gap:"var(--ov-space-2)"},CopyError:{margin:0,padding:"var(--ov-space-3)",borderTop:"1px solid var(--ov-color-border-muted)"}},dt=w.createContext(void 0),en={default:"info",info:"info",success:"success",warning:"warning",error:"danger"},tn=({children:t})=>{const{toast:e}=oe.useToast(),[s,n]=w.useState([]),[r,o]=w.useState([]),[c,i]=w.useState(!1),[a,d]=w.useState(),[l,f]=w.useState(""),u=w.useRef(0),p=w.useRef(null);w.useEffect(()=>{if(!c)return;const g=document.activeElement;p.current?.focus();const E=m=>{m.key==="Escape"&&(m.stopPropagation(),i(!1))};return document.addEventListener("keydown",E),()=>{document.removeEventListener("keydown",E),g instanceof HTMLElement&&g.isConnected&&g.focus()}},[c]);const y=g=>{n(E=>[...E,g])},v=(g,E,m)=>{const S=typeof g=="object";let h="",I="info",C,T=5e3,D;if(S){if(h=g.message,g.showOnce){if(s.includes(h))return;y(h)}I=g.status,C=g.details,T=g.autoHideDuration??5e3,D=g.actions}else h=g,I=E,C=m;let x;if(I==="error"){const F={id:++u.current,message:h,details:C,created:new Date().toISOString(),actions:D};o(R=>[...R,F].slice(-20)),x={label:"Details",onClick:()=>{d(F.id),i(!0)}}}e(I==="error"?h:C??h,{severity:en[I]??"info",title:I!=="error"&&C?h:void 0,duration:T,action:x??D?.[0]})};return A.jsxs(dt.Provider,{value:{showSnackbar:v,openNotifications:()=>{i(!0)},notificationCount:r.length},children:[t,c&&A.jsxs(oe.Card,{ref:p,style:ae.Panel,size:"sm",variant:"outline",surface:"overlay",elevation:3,"aria-label":"Notifications",tabIndex:-1,children:[A.jsxs(oe.Toolbar,{size:"sm",style:ae.Header,children:[A.jsx(oe.Text,{size:"sm",weight:"semibold",children:"Notifications"}),A.jsx(oe.Text,{size:"xs",tone:"muted",children:r.length}),A.jsxs(oe.Toolbar.Group,{style:ae.HeaderActions,children:[A.jsx(oe.IconButton,{size:"sm",variant:"ghost","aria-label":"Clear history",title:"Clear history",disabled:r.length===0,onClick:()=>{o([]),d(void 0),f("")},children:A.jsx("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-hidden":"true",children:A.jsx("path",{d:"m3 3 6 6m0-6L3 9M13 6h8M3 14h18M3 20h18"})})}),A.jsx(oe.IconButton,{size:"sm",variant:"ghost","aria-label":"Close notifications",title:"Close notifications",onClick:()=>{i(!1)},children:A.jsx("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-hidden":"true",children:A.jsx("path",{d:"m6 9 6 6 6-6"})})})]})]}),A.jsxs("div",{style:ae.List,children:[r.length===0&&A.jsx(oe.EmptyState,{size:"sm",title:"No recent errors",description:"Error details will appear here."}),r.slice().reverse().map(g=>{const E=a===g.id;return A.jsxs("div",{style:ae.Notice,children:[A.jsxs("div",{style:ae.Row,children:[A.jsxs("svg",{style:ae.ErrorIcon,width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-label":"Error",role:"img",children:[A.jsx("circle",{cx:"12",cy:"12",r:"9"}),A.jsx("path",{d:"m9 9 6 6m0-6-6 6"})]}),A.jsx(oe.Button,{size:"sm",variant:"ghost",style:ae.Message,"aria-expanded":E,"aria-controls":`notification-${g.id}`,title:g.message,onClick:()=>{d(E?void 0:g.id),f("")},children:A.jsx(oe.Text,{size:"sm",style:ae.MessageText,truncate:!E,children:g.message})}),A.jsx(oe.IconButton,{size:"sm",variant:"ghost","aria-label":E?"Collapse details":"Expand details",title:E?"Collapse details":"Expand details","aria-expanded":E,"aria-controls":`notification-${g.id}`,onClick:()=>{d(E?void 0:g.id),f("")},children:A.jsx("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-hidden":"true",children:A.jsx("path",{d:E?"m6 15 6-6 6 6":"m6 9 6 6 6-6"})})}),A.jsx(oe.IconButton,{size:"sm",variant:"ghost","aria-label":`Dismiss ${g.message}`,title:"Dismiss notification",onClick:()=>{o(m=>m.filter(S=>S.id!==g.id)),E&&(d(void 0),f(""))},children:A.jsx("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5","aria-hidden":"true",children:A.jsx("path",{d:"m6 6 12 12m0-12L6 18"})})})]}),A.jsx("div",{id:`notification-${g.id}`,hidden:!E,style:ae.Details,children:E&&A.jsxs(A.Fragment,{children:[A.jsx(oe.Text,{size:"xs",tone:"muted",children:A.jsx("time",{dateTime:g.created,children:new Date(g.created).toLocaleString()})}),A.jsx(oe.Code,{size:"sm",style:ae.Code,children:g.details?.length?g.details:g.message}),A.jsxs("div",{style:ae.Actions,children:[A.jsx(oe.Button,{size:"sm",variant:"ghost",onClick:async()=>{f("");try{await navigator.clipboard.writeText(`${g.message}
3
+ ${g.created}
4
+ ${g.details??""}`)}catch{f("Copy failed. Select the diagnostic text and copy it manually.")}},children:"Copy details"}),g.actions?.map((m,S)=>A.jsx(oe.Button,{size:"sm",variant:"outline",onClick:m.onClick,children:m.label},`${m.label}-${S}`))]})]})})]},g.id)})]}),l&&A.jsx(oe.Text,{as:"p",size:"sm",role:"status",style:ae.CopyError,children:l})]})]})},le=()=>{const t=w.useContext(dt);if(t===void 0)throw new Error("useCustomSnackbar must be used within a CustomSnackbarProvider");return t};function ne(t){const s=w.useContext(Oe)?.pluginId??t;if(!s)throw new Error("pluginID must be provided either via PluginContext or as an explicit parameter");return s}const nn=t=>{const e=j.c(60),{pluginID:s,connectionID:n}=t,r=ne(s),o=L.useQueryClient(),{showSnackbar:c}=le();let i;e[0]!==n||e[1]!==r?(i=[r,"connection","detail",n],e[0]=n,e[1]=r,e[2]=i):i=e[2];const a=i;let d;e[3]!==n||e[4]!==r?(d=async()=>N.StartConnection(r,n),e[3]=n,e[4]=r,e[5]=d):d=e[5];let l;if(e[6]!==n||e[7]!==r||e[8]!==o||e[9]!==a||e[10]!==c||e[11]!==d){let x;e[13]!==c?(x=ce(c,"Failed to start connection"),e[13]=c,e[14]=x):x=e[14],l={mutationFn:d,onSuccess(F){o.setQueryData(a,F),o.invalidateQueries({queryKey:["EDITOR_SCHEMAS",r,n]})},onError:x},e[6]=n,e[7]=r,e[8]=o,e[9]=a,e[10]=c,e[11]=d,e[12]=l}else l=e[12];const{mutateAsync:f}=L.useMutation(l);let u;e[15]!==n||e[16]!==r?(u=async()=>N.StopConnection(r,n),e[15]=n,e[16]=r,e[17]=u):u=e[17];let p;if(e[18]!==o||e[19]!==a||e[20]!==c||e[21]!==u){let x;e[23]!==c?(x=ce(c,"Failed to stop connection"),e[23]=c,e[24]=x):x=e[24],p={mutationFn:u,onSuccess(F){o.setQueryData(a,F)},onError:x},e[18]=o,e[19]=a,e[20]=c,e[21]=u,e[22]=p}else p=e[22];const{mutateAsync:y}=L.useMutation(p);let v;e[25]!==r?(v=async x=>N.UpdateConnection(r,x),e[25]=r,e[26]=v):v=e[26];let g;if(e[27]!==n||e[28]!==r||e[29]!==o||e[30]!==a||e[31]!==c||e[32]!==v){let x;e[34]!==c?(x=ce(c,"Failed to update connection"),e[34]=c,e[35]=x):x=e[35],g={mutationFn:v,onSuccess(F,R){const{name:P}=R;c({message:`Connection ${P} successfully updated`,status:"success"}),o.setQueryData(a,F),o.setQueriesData({queryKey:[r,"connection","list"]},O=>O?.map(k=>k.id===n?F:k))},onError:x},e[27]=n,e[28]=r,e[29]=o,e[30]=a,e[31]=c,e[32]=v,e[33]=g}else g=e[33];const{mutateAsync:E}=L.useMutation(g);let m;e[36]!==n||e[37]!==r?(m=async()=>N.RemoveConnection(r,n),e[36]=n,e[37]=r,e[38]=m):m=e[38];let S;if(e[39]!==n||e[40]!==r||e[41]!==o||e[42]!==a||e[43]!==c||e[44]!==m){let x;e[46]!==c?(x=ce(c,"Failed to remove connection"),e[46]=c,e[47]=x):x=e[47],S={mutationFn:m,onSuccess(){c({message:"Connection successfully removed",status:"success"}),o.setQueryData(a,void 0),o.setQueriesData({queryKey:[r,"connection","list"]},F=>F?.filter(R=>R.id!==n))},onError:x},e[39]=n,e[40]=r,e[41]=o,e[42]=a,e[43]=c,e[44]=m,e[45]=S}else S=e[45];const{mutateAsync:h}=L.useMutation(S);let I;e[48]!==n||e[49]!==r?(I=async()=>N.GetConnection(r,n),e[48]=n,e[49]=r,e[50]=I):I=e[50];let C;e[51]!==a||e[52]!==I?(C={queryKey:a,queryFn:I},e[51]=a,e[52]=I,e[53]=C):C=e[53];const T=L.useQuery(C);let D;return e[54]!==T||e[55]!==h||e[56]!==f||e[57]!==y||e[58]!==E?(D={connection:T,startConnection:f,stopConnection:y,updateConnection:E,deleteConnection:h},e[54]=T,e[55]=h,e[56]=f,e[57]=y,e[58]=E,e[59]=D):D=e[59],D},ft=t=>[t,"connection","list"],rn=t=>{const e=j.c(33),{plugin:s}=t,n=ne(s),r=L.useQueryClient(),{showSnackbar:o}=le();let c;e[0]!==n?(c=ft(n),e[0]=n,e[1]=c):c=e[1];const i=c;let a;e[2]!==n?(a=async D=>N.StartConnectionWatch(n,D.id),e[2]=n,e[3]=a):a=e[3];let d;e[4]!==o?(d=ce(o,"Failed to start connection watch"),e[4]=o,e[5]=d):d=e[5];let l;e[6]!==a||e[7]!==d?(l={mutationFn:a,onError:d},e[6]=a,e[7]=d,e[8]=l):l=e[8];const{mutateAsync:f}=L.useMutation(l);let u;e[9]!==n?(u=async D=>N.StopConnectionWatch(n,D.id),e[9]=n,e[10]=u):u=e[10];let p;e[11]!==o?(p=ce(o,"Failed to stop connection watch"),e[11]=o,e[12]=p):p=e[12];let y;e[13]!==u||e[14]!==p?(y={mutationFn:u,onError:p},e[13]=u,e[14]=p,e[15]=y):y=e[15];const{mutateAsync:v}=L.useMutation(y);let g;e[16]!==r||e[17]!==i?(g=D=>{const x=D.data;console.log("got update to connections",x),r.setQueryData(i,x)},e[16]=r,e[17]=i,e[18]=g):g=e[18];const E=g;let m,S;e[19]!==E||e[20]!==n?(S=()=>{const D=re.On(`${n}/connection/sync`,E);return()=>{D()}},m=[n,E],e[19]=E,e[20]=n,e[21]=m,e[22]=S):(m=e[21],S=e[22]),w.useEffect(S,m);let h;e[23]!==n||e[24]!==o?(h=async()=>{try{return await N.ListConnections(n)}catch(D){const x=D;console.log(x),ce(o,"Failed to load connections")(x)}return[]},e[23]=n,e[24]=o,e[25]=h):h=e[25];let I;e[26]!==i||e[27]!==h?(I={queryKey:i,queryFn:h,staleTime:3e4,placeholderData:L.keepPreviousData},e[26]=i,e[27]=h,e[28]=I):I=e[28];const C=L.useQuery(I);let T;return e[29]!==C||e[30]!==f||e[31]!==v?(T={connections:C,startWatch:f,stopWatch:v},e[29]=C,e[30]=f,e[31]=v,e[32]=T):T=e[32],T},sn=t=>{const e=j.c(11),{pluginID:s,connectionID:n}=t,r=ne(s);let o;e[0]!==n||e[1]!==r?(o=[r,"connection","namespaces",n],e[0]=n,e[1]=r,e[2]=o):o=e[2];const c=o;let i;e[3]!==n||e[4]!==r?(i=async()=>N.GetConnectionNamespaces(r,n),e[3]=n,e[4]=r,e[5]=i):i=e[5];let a;e[6]!==c||e[7]!==i?(a={queryKey:c,queryFn:i},e[6]=c,e[7]=i,e[8]=a):a=e[8];const d=L.useQuery(a);let l;return e[9]!==d?(l={namespaces:d},e[9]=d,e[10]=l):l=e[10],l},G=qt.withLegacyNames(ie.WatchState,"WatchState");function Qe(t){const e=Object.values(t.states),s=e.length;let n=0,r=0,o=0,c=0;for(const l of e)l===G.WatchStateSynced&&n++,(l===G.WatchStateError||l===G.WatchStateFailed)&&r++,l===G.WatchStateForbidden&&o++,l===G.WatchStateSkipped&&c++;const i=s-c,a=e.filter(l=>l===G.WatchStateSynced||l===G.WatchStateError||l===G.WatchStateStopped||l===G.WatchStateFailed||l===G.WatchStateForbidden).length,d=i>0?a/i:0;return{pluginID:t.pluginID,connectionID:t.connectionID,totalResources:s,watchedTotal:i,syncedCount:n,errorCount:r,forbiddenCount:o,skippedCount:c,doneCount:a,progress:d}}function Ae(t){return t.watchedTotal>0&&t.doneCount>=t.watchedTotal}function pt(t){return t.some(e=>!Ae(e))}function ht(t){const e=t.reduce((n,r)=>n+r.watchedTotal,0);return e===0?0:t.reduce((n,r)=>n+r.doneCount,0)/e}function Ke(t){return`${t.pluginId}/${t.connection}`}function yt(t,e){const s=Ke(e);t.has(s)||t.set(s,{states:{},pluginID:e.pluginId,connectionID:e.connection});const n=t.get(s);return n.states[e.resourceKey]=e.state,n}function on(){const t=j.c(49);let e;t[0]===Symbol.for("react.memo_cache_sentinel")?(e=new Set,t[0]=e):e=t[0];const[s,n]=w.useState(e);let r;t[1]===Symbol.for("react.memo_cache_sentinel")?(r={},t[1]=r):r=t[1];const[o,c]=w.useState(r);let i;t[2]===Symbol.for("react.memo_cache_sentinel")?(i=new Map,t[2]=i):i=t[2];const[a,d]=w.useState(i);let l;t[3]===Symbol.for("react.memo_cache_sentinel")?(l=new Map,t[3]=l):l=t[3];const f=w.useRef(l);let u;t[4]===Symbol.for("react.memo_cache_sentinel")?(u=new Map,t[4]=u):u=t[4];const[p,y]=w.useState(u);let v,g;t[5]===Symbol.for("react.memo_cache_sentinel")?(v=()=>{const H=re.On("plugin/crash_recovery_failed",V=>{const X=V.data,q=X?.pluginID;q&&y(M=>{const Z=new Map(M);return Z.set(q,X.error??"Crash recovery failed"),Z})}),J=re.On("plugin/recovered",V=>{const q=V.data?.pluginID;q&&y(M=>{if(!M.has(q))return M;const Z=new Map(M);return Z.delete(q),Z})});return()=>{H(),J()}},g=[],t[5]=v,t[6]=g):(v=t[5],g=t[6]),w.useEffect(v,g);let E,m;t[7]===Symbol.for("react.memo_cache_sentinel")?(E=()=>{N.GetAllConnectionStates().then(H=>{if(!H)return;const J={},V=new Set,X=new Map;for(const[q,M]of Object.entries(H))if(M){J[q]=M.map(hn);for(const Z of M){if(!Z.started)continue;const fe=`${q}/${Z.connection.id}`;V.add(fe);const pe={pluginID:q,connectionID:Z.connection.id,states:{}};if(Z.resources)for(const[_e,me]of Object.entries(Z.resources))pe.states[_e]=me;f.current.set(fe,pe),X.set(fe,Qe(pe))}}c(J),n(V),d(X)}).catch(pn)},m=[],t[7]=E,t[8]=m):(E=t[7],m=t[8]),w.useEffect(E,m);let S,h;t[9]===Symbol.for("react.memo_cache_sentinel")?(h=()=>re.On("connection/status",J=>{const V=J.data,X=`${V.pluginID}/${V.connectionID}`;V.status==="DISCONNECTED"?(n(q=>{const M=new Set(q);return M.delete(X),M}),d(q=>{const M=new Map(q);return M.delete(X),M}),f.current.delete(X)):n(q=>{const M=new Set(q);return M.add(X),M}),N.ListAllConnections().then(q=>{if(!q)return;const M={};for(const[Z,fe]of Object.entries(q))fe!=null&&(M[Z]=fe);c(M)}).catch(fn)}),S=[],t[9]=S,t[10]=h):(S=t[9],h=t[10]),w.useEffect(h,S);let I;t[11]===Symbol.for("react.memo_cache_sentinel")?(I=H=>{const J=H.data,V=Ke(J);n(M=>{if(M.has(V))return M;const Z=new Set(M);return Z.add(V),Z});const X=yt(f.current,J),q=Qe(X);d(M=>{const Z=new Map(M);return Z.set(V,q),Z})},t[11]=I):I=t[11];const C=I;let T,D;t[12]===Symbol.for("react.memo_cache_sentinel")?(T=()=>re.On("watch/STATE",C),D=[C],t[12]=T,t[13]=D):(T=t[12],D=t[13]),w.useEffect(T,D);const x=dn,F=un;let R;t[14]!==p?(R=async H=>{const J=p.get(H);y(V=>{if(!V.has(H))return V;const X=new Map(V);return X.delete(H),X});try{await N.RetryFailedPlugin(H)}catch(V){const X=V;throw y(q=>{const M=new Map(q);return M.set(H,J??"Reload failed"),M}),X}},t[14]=p,t[15]=R):R=t[15];const P=R;let O,k;if(t[16]!==o||t[17]!==p||t[18]!==s||t[19]!==a){O=[];for(const H of s){const[J,V]=H.split("/",2),q=(o[J]??[]).find(_e=>_e.id===V),M=a.get(H),Z=M!=null&&!Ae(M),fe=M!=null&&M.errorCount>0,pe=p.get(J);O.push({pluginID:J,connectionID:V,name:q?.name??V,avatar:q?.avatar??"",isStarted:!0,sync:M,isSyncing:Z,hasErrors:fe||pe!=null,pluginFailed:pe!=null,pluginError:pe})}k=new Map;for(const H of O){const J=k.get(H.pluginID)??[];J.push(H),k.set(H.pluginID,J)}t[16]=o,t[17]=p,t[18]=s,t[19]=a,t[20]=O,t[21]=k}else O=t[20],k=t[21];let B,Q,W,K,Y,U,z,te;if(t[22]!==O||t[23]!==k||t[24]!==a){const H=Array.from(a.values());let J;t[33]!==O?(J=O.filter(ln),t[33]=O,t[34]=J):J=t[34];const V=J;let X;t[35]!==O?(X=O.filter(an),t[35]=O,t[36]=X):X=t[36];const q=X;let M;t[37]!==O?(M=O.filter(cn),t[37]=O,t[38]=M):M=t[38];const Z=M;B=O,Q=k,W=O.length,K=V.length,Y=q.length,U=Z.length,z=pt(H),te=ht(H),t[22]=O,t[23]=k,t[24]=a,t[25]=B,t[26]=Q,t[27]=W,t[28]=K,t[29]=Y,t[30]=U,t[31]=z,t[32]=te}else B=t[25],Q=t[26],W=t[27],K=t[28],Y=t[29],U=t[30],z=t[31],te=t[32];let he;return t[39]!==P||t[40]!==B||t[41]!==Q||t[42]!==W||t[43]!==K||t[44]!==Y||t[45]!==U||t[46]!==z||t[47]!==te?(he={entries:B,grouped:Q,connectedCount:W,syncingCount:K,errorCount:Y,failedCount:U,hasSyncing:z,aggregateProgress:te,disconnect:x,retryWatch:F,retryPlugin:P},t[39]=P,t[40]=B,t[41]=Q,t[42]=W,t[43]=K,t[44]=Y,t[45]=U,t[46]=z,t[47]=te,t[48]=he):he=t[48],he}function cn(t){return t.pluginFailed}function an(t){return t.hasErrors}function ln(t){return t.isSyncing}async function un(t,e){await N.StartConnectionWatch(t,e)}async function dn(t,e){await N.StopConnection(t,e)}function fn(){}function pn(){}function hn(t){return t.connection}function yn(t,e){return e===null?t===null:Array.isArray(e)?Array.isArray(t):typeof e=="object"?typeof t=="object"&&t!==null&&!Array.isArray(t):typeof t==typeof e}function gn(t,e,s){const n=j.c(29),r=ne(t),o=L.useQueryClient();let c;n[0]!==e||n[1]!==r?(c=[r,"data",e],n[0]=e,n[1]=r,n[2]=c):c=n[2];const i=c;let a;n[3]!==s||n[4]!==e||n[5]!==r?(a=async()=>{const h=await N.Get(r,e);return h==null?s:yn(h,s)?h:(console.warn(`[usePluginData] stored value for "${e}" has unexpected type (expected ${Array.isArray(s)?"array":typeof s}, got ${Array.isArray(h)?"array":typeof h}). Using default.`),s)},n[3]=s,n[4]=e,n[5]=r,n[6]=a):a=n[6];let d;n[7]!==i||n[8]!==a?(d={queryKey:i,queryFn:a},n[7]=i,n[8]=a,n[9]=d):d=n[9];const l=L.useQuery(d);let f;n[10]!==e||n[11]!==r?(f=async h=>{await N.Set(r,e,h)},n[10]=e,n[11]=r,n[12]=f):f=n[12];let u,p,y;n[13]!==o||n[14]!==i?(u=async h=>{await o.cancelQueries({queryKey:i});const I=o.getQueryData(i);return o.setQueryData(i,h),{previous:I}},p=(h,I,C)=>{C?.previous!==void 0&&o.setQueryData(i,C.previous)},y=()=>{o.invalidateQueries({queryKey:i})},n[13]=o,n[14]=i,n[15]=u,n[16]=p,n[17]=y):(u=n[15],p=n[16],y=n[17]);let v;n[18]!==f||n[19]!==u||n[20]!==p||n[21]!==y?(v={mutationFn:f,onMutate:u,onError:p,onSettled:y},n[18]=f,n[19]=u,n[20]=p,n[21]=y,n[22]=v):v=n[22];const g=L.useMutation(v),E=l.data??s;let m;n[23]!==g?(m=async h=>{await g.mutateAsync(h)},n[23]=g,n[24]=m):m=n[24];let S;return n[25]!==l.isLoading||n[26]!==E||n[27]!==m?(S={data:E,update:m,isLoading:l.isLoading},n[25]=l.isLoading,n[26]=E,n[27]=m,n[28]=S):S=n[28],S}const mn=()=>{const t=w.useContext(st);if(!t)throw new Error("useRightDrawer must be used within a RightDrawerProvider");return t},Be=()=>{const t=w.useContext(rt);if(t===void 0)throw new Error("useBottomDrawer must be used within a BottomDrawerProvider");return t},_n=({pluginID:t})=>{const e=ne(t),{showSnackbar:s}=le(),{createTab:n,updateTab:r}=Be();return{createSession:L.useMutation({mutationFn:async({connectionID:c,icon:i,label:a,opts:d,recovery:l})=>{const f=`pending-${crypto.randomUUID()}`;n({id:f,title:a??"Connecting...",variant:"terminal",icon:i??"LuSquareTerminal",properties:{status:"connecting",pluginID:e,connectionID:c,opts:{...d},recovery:l}});const u=ie.SessionOptions.createFrom({command:["/bin/bash"],tty:!0,...d});try{const p=await N.CreateSession(e,c,u);if(!p)throw new Error("Failed to create session: null response");return r({id:f},{id:p.id,title:a??`Session ${p.id.substring(0,8)}`,properties:{status:"connected",pluginID:e,connectionID:c,opts:{...d},recovery:l}}),p}catch(p){const y=de(p);return r({id:f},{properties:{status:"error",error:y.detail,pluginID:e,connectionID:c,opts:{...d},recovery:l,errorInfo:{title:y.title||"Session error",suggestion:y.detail,raw:y.detail}}}),ye(s,p,"Failed to start session"),null}}}).mutateAsync}},Sn=t=>{const e=j.c(15),{pluginID:s}=t,n=ne(s),{showSnackbar:r}=le(),{createTab:o}=Be();let c;e[0]!==o||e[1]!==n?(c=async y=>{const{connectionID:v,resourceKey:g,resourceID:E,resourceData:m,icon:S,label:h,target:I,follow:C,tailLines:T,params:D}=y,x=C===void 0?!0:C,F=T===void 0?1e3:T,R=ie.CreateSessionOptions.createFrom({resource_key:g,resource_id:E,resource_data:m,options:ie.LogSessionOptions.createFrom({target:I??"",follow:x,include_previous:!1,include_timestamps:!0,tail_lines:F,since_seconds:0,limit_bytes:0,include_source_events:!0,params:D??{}})}),P=await N.CreateSession$1(n,v,R);if(!P)throw new Error("Failed to create log session: null response");return o({id:P.id,title:h??`Logs ${P.id.substring(0,8)}`,variant:"logs",icon:S??"LuLogs"}),P},e[0]=o,e[1]=n,e[2]=c):c=e[2];let i;e[3]!==r?(i=ce(r,"Failed to start log session"),e[3]=r,e[4]=i):i=e[4];let a;e[5]!==c||e[6]!==i?(a={mutationFn:c,onError:i},e[5]=c,e[6]=i,e[7]=a):a=e[7];const d=L.useMutation(a);let l;e[8]!==r?(l=ce(r,"Failed to close log session"),e[8]=r,e[9]=l):l=e[9];let f;e[10]!==l?(f={mutationFn:En,onError:l},e[10]=l,e[11]=f):f=e[11];const u=L.useMutation(f);let p;return e[12]!==u.mutateAsync||e[13]!==d.mutateAsync?(p={createLogSession:d.mutateAsync,closeLogSession:u.mutateAsync},e[12]=u.mutateAsync,e[13]=d.mutateAsync,e[14]=p):p=e[14],p};async function En(t){await N.CloseSession(t)}const vn=()=>{const t=j.c(1);let e;return t[0]===Symbol.for("react.memo_cache_sentinel")?(e={queryKey:["metric","providers"],queryFn:N.GetProviders,staleTime:3e4},t[0]=e):e=t[0],L.useQuery(e)},gt=t=>{const e=j.c(7);let s,n;e[0]!==t?(s=["metric","providers",t],n=()=>N.GetProvidersForResource(t),e[0]=t,e[1]=s,e[2]=n):(s=e[1],n=e[2]);const r=!!t;let o;return e[3]!==s||e[4]!==n||e[5]!==r?(o={queryKey:s,queryFn:n,enabled:r,staleTime:3e4},e[3]=s,e[4]=n,e[5]=r,e[6]=o):o=e[6],L.useQuery(o)},Cn=t=>{const e=j.c(47),{connectionID:s,resourceKey:n,resourceID:r,resourceNamespace:o,resourceData:c,metricIDs:i,shape:a,timeRange:d,refreshInterval:l,enabled:f}=t,u=o===void 0?"":o;let p;e[0]!==c?(p=c===void 0?{}:c,e[0]=c,e[1]=p):p=e[1];const y=p;let v;e[2]!==i?(v=i===void 0?[]:i,e[2]=i,e[3]=v):v=e[3];const g=v,E=a===void 0?0:a,m=l===void 0?0:l,S=f===void 0?!0:f,{data:h,isLoading:I}=gt(n);let C;e[4]!==h?(C=h??[],e[4]=h,e[5]=C):C=e[5];const T=C,D=d?Math.max(Math.floor((d.end.getTime()-d.start.getTime())/250),15e3)*1e6:0;let x;e[6]!==d?.start?(x=d?.start?.getTime(),e[6]=d?.start,e[7]=x):x=e[7];let F;e[8]!==d?.end?(F=d?.end?.getTime(),e[8]=d?.end,e[9]=F):F=e[9];let R;e[10]!==s||e[11]!==g||e[12]!==r||e[13]!==n||e[14]!==u||e[15]!==E||e[16]!==F||e[17]!==x?(R=["metric","query",s,n,r,u,g,E,x,F],e[10]=s,e[11]=g,e[12]=r,e[13]=n,e[14]=u,e[15]=E,e[16]=F,e[17]=x,e[18]=R):R=e[18];let P;e[19]!==s||e[20]!==g||e[21]!==y||e[22]!==r||e[23]!==n||e[24]!==u||e[25]!==E||e[26]!==D||e[27]!==d?.end||e[28]!==d?.start?(P=async()=>{const z=await N.QueryAll(s,n,r,u,y,g,E,(d?.start??new Date(0)).toISOString(),(d?.end??new Date(0)).toISOString(),D),te={};for(const[he,H]of Object.entries(z))H!=null&&(te[he]=H);return te},e[19]=s,e[20]=g,e[21]=y,e[22]=r,e[23]=n,e[24]=u,e[25]=E,e[26]=D,e[27]=d?.end,e[28]=d?.start,e[29]=P):P=e[29];let O;e[30]!==s||e[31]!==S||e[32]!==T||e[33]!==r||e[34]!==n?(O=S&&!!s&&!!n&&(n.startsWith("cluster::")||!!r)&&T.length>0,e[30]=s,e[31]=S,e[32]=T,e[33]=r,e[34]=n,e[35]=O):O=e[35];const k=m>0?m:void 0;let B;e[36]!==R||e[37]!==P||e[38]!==O||e[39]!==k?(B={queryKey:R,queryFn:P,enabled:O,refetchInterval:k,staleTime:5e3,placeholderData:L.keepPreviousData},e[36]=R,e[37]=P,e[38]=O,e[39]=k,e[40]=B):B=e[40];const Q=L.useQuery(B),W=Q.data??void 0,K=I||Q.isLoading,Y=Q.error;let U;return e[41]!==Q.refetch||e[42]!==T||e[43]!==W||e[44]!==K||e[45]!==Y?(U={data:W,providers:T,isLoading:K,error:Y,refetch:Q.refetch},e[41]=Q.refetch,e[42]=T,e[43]=W,e[44]=K,e[45]=Y,e[46]=U):U=e[46],U},In={},bn=t=>{const{pluginID:e,connectionID:s,resourceKey:n,resourceID:r,resourceNamespace:o="",resourceData:c=In,metricIDs:i=[],interval:a=1e4,enabled:d=!0}=t,l=ne(e),[f,u]=w.useState(null),[p,y]=w.useState(null),[v,g]=w.useState(!1),[E,m]=w.useState(null),S=w.useRef(null),h=w.useCallback(async()=>{if(!(!d||!l||!s||!n||!r))try{const C=await N.Subscribe(l,s,{resource_key:n,resource_id:r,resource_namespace:o,resource_data:c,metric_ids:i,interval:a*1e6});y(C),g(!0),m(null);const T=re.On(`core/metrics/data/${C}`,x=>{const F=x.data;try{const R=JSON.parse(F);R.results&&u(R.results)}catch(R){console.error("Failed to parse metric stream data:",R)}}),D=re.On(`core/metrics/error/${C}`,x=>{const F=x.data;try{const R=JSON.parse(F);m(R.error||"Unknown error")}catch{m("Failed to parse metric stream error")}});S.current=()=>{T(),D()}}catch(C){m(C instanceof Error?C.message:String(C))}},[l,s,n,r,o,c,i,a,d]),I=w.useCallback(async()=>{if(p)try{await N.Unsubscribe(p)}catch(C){console.error("Failed to unsubscribe:",C)}S.current&&(S.current(),S.current=null),y(null),g(!1)},[p]);return w.useEffect(()=>()=>{p&&N.Unsubscribe(p).catch(console.error),S.current&&S.current()},[p]),{data:f,subscriptionID:p,isStreaming:v,error:E,start:h,stop:I}},ge=["networker","portforward","all-sessions"];function wn(){const t=j.c(17),{showSnackbar:e}=le(),s=L.useQueryClient();let n;t[0]===Symbol.for("react.memo_cache_sentinel")?(n={queryKey:[...ge],queryFn:Rn,retry:!1},t[0]=n):n=t[0];const r=L.useQuery(n);let o,c;t[1]!==s?(o=()=>{const y=re.On("core/networker/portforward/created",()=>{s.invalidateQueries({queryKey:[...ge]})}),v=re.On("core/networker/portforward/closed",()=>{s.invalidateQueries({queryKey:[...ge]})});return()=>{y(),v()}},c=[s],t[1]=s,t[2]=o,t[3]=c):(o=t[2],c=t[3]),w.useEffect(o,c);let i;t[4]!==r.data?(i=r.data??[],t[4]=r.data,t[5]=i):i=t[5];const a=i;let d;t[6]!==e?(d=ce(e,"Failed to close port forwarding session"),t[6]=e,t[7]=d):d=t[7];let l;t[8]!==s?(l=async()=>{await s.invalidateQueries({queryKey:[...ge]})},t[8]=s,t[9]=l):l=t[9];let f;t[10]!==d||t[11]!==l?(f={mutationFn:xn,onError:d,onSuccess:l},t[10]=d,t[11]=l,t[12]=f):f=t[12];const u=L.useMutation(f);let p;return t[13]!==a||t[14]!==u.mutateAsync||t[15]!==r?(p={sessions:r,activeSessions:a,closeSession:u.mutateAsync,openInBrowser:Dn},t[13]=a,t[14]=u.mutateAsync,t[15]=r,t[16]=p):p=t[16],p}function Dn(t){return re.OpenURL(`http://localhost:${t}`)}async function xn(t){return N.ClosePortForwardSession(t)}async function Rn(){return N.ListAllPortForwardSessions().catch(On)}function On(t){if(de(t).detail.includes("not found"))return[];throw t}function Pn(t){const e=j.c(36),{pluginID:s,connectionID:n,resourceID:r}=t,o=ne(s);let c;e[0]!==n||e[1]!==o||e[2]!==r?(c=["networker","portforward","sessions",o,n,r],e[0]=n,e[1]=o,e[2]=r,e[3]=c):c=e[3];const i=c,{showSnackbar:a}=le(),d=L.useQueryClient();let l;e[4]!==n||e[5]!==o||e[6]!==r||e[7]!==a?(l=async()=>N.FindPortForwardSessions(o,n,ie.FindPortForwardSessionRequest.createFrom({resource_id:r,connection_id:n})).catch(T=>{const D=de(T);return D.detail.includes("not found")?[]:(a({message:"Failed to fetch port forward sessions",status:"error",details:D.detail}),[])}),e[4]=n,e[5]=o,e[6]=r,e[7]=a,e[8]=l):l=e[8];let f;e[9]!==i||e[10]!==l?(f={queryKey:i,queryFn:l,retry:!1},e[9]=i,e[10]=l,e[11]=f):f=e[11];const u=L.useQuery(f);let p;e[12]!==n||e[13]!==o?(p=async T=>{const{opts:D}=T,x=ie.PortForwardSessionOptions.createFrom({local_port:D.localPort||0,remote_port:D.remotePort,protocol:D.protocol||"TCP",connection_type:"RESOURCE",connection:{resource_data:D.resource,connection_id:n,plugin_id:o,resource_id:D.resourceId,resource_key:D.resourceKey},labels:D.labels??{},params:D.parameters??{}}),F=await N.StartResourcePortForwardingSession(o,n,x);if(!F)throw new Error("Failed to start port forwarding: null response");return D.openInBrowser&&re.OpenURL(`http://localhost:${F.local_port}`),F},e[12]=n,e[13]=o,e[14]=p):p=e[14];let y;e[15]!==a?(y=ce(a,"Failed to start port forwarding session"),e[15]=a,e[16]=y):y=e[16];let v;e[17]!==d||e[18]!==i?(v=async()=>{await Promise.all([d.invalidateQueries({queryKey:i}),d.invalidateQueries({queryKey:[...ge]})])},e[17]=d,e[18]=i,e[19]=v):v=e[19];let g;e[20]!==p||e[21]!==y||e[22]!==v?(g={mutationFn:p,onError:y,onSuccess:v},e[20]=p,e[21]=y,e[22]=v,e[23]=g):g=e[23];const E=L.useMutation(g);let m;e[24]!==a?(m=ce(a,"Failed to close port forwarding session"),e[24]=a,e[25]=m):m=e[25];let S;e[26]!==d||e[27]!==i?(S=async()=>{await Promise.all([d.invalidateQueries({queryKey:i}),d.invalidateQueries({queryKey:[...ge]})])},e[26]=d,e[27]=i,e[28]=S):S=e[28];let h;e[29]!==m||e[30]!==S?(h={mutationFn:An,onError:m,onSuccess:S},e[29]=m,e[30]=S,e[31]=h):h=e[31];const I=L.useMutation(h);let C;return e[32]!==I.mutateAsync||e[33]!==E.mutateAsync||e[34]!==u?(C={sessions:u,forward:E.mutateAsync,close:I.mutateAsync},e[32]=I.mutateAsync,e[33]=E.mutateAsync,e[34]=u,e[35]=C):C=e[35],C}async function An(t){const{opts:e}=t;return N.ClosePortForwardSession(e.sessionID)}const Tn=()=>{const t=w.useContext(ot);if(!t)throw new Error("useConfirmationModal must be used within a ConfirmationModalProvider");return t},Re={scope:(t,e,s)=>[t,e,s],list:(t,e,s,n=[])=>[t,e,s,n,"list"],resource:(t,e,s,n,r="")=>[t,e,s,r,n]},Nn=t=>{const e=j.c(55),{pluginID:s,connectionID:n,resourceKey:r,resourceID:o,namespace:c}=t,i=c===void 0?"":c,a=ne(s),d=L.useQueryClient(),{showSnackbar:l}=le();let f;e[0]!==n||e[1]!==i||e[2]!==a||e[3]!==o||e[4]!==r?(f=Re.resource(a,n,r,o,i),e[0]=n,e[1]=i,e[2]=a,e[3]=o,e[4]=r,e[5]=f):f=e[5];const u=f;let p;e[6]!==n||e[7]!==i||e[8]!==a||e[9]!==o||e[10]!==r?(p=async O=>N.Update(a,n,r,ie.UpdateInput.createFrom({input:O.input,id:o,namespace:i})),e[6]=n,e[7]=i,e[8]=a,e[9]=o,e[10]=r,e[11]=p):p=e[11];let y;e[12]!==d||e[13]!==u||e[14]!==o||e[15]!==l?(y=async()=>{l(`Resource ${o} updated`,"success"),await d.invalidateQueries({queryKey:u})},e[12]=d,e[13]=u,e[14]=o,e[15]=l,e[16]=y):y=e[16];const v=`Failed to update resource ${o}`;let g;e[17]!==l||e[18]!==v?(g=ce(l,v),e[17]=l,e[18]=v,e[19]=g):g=e[19];let E;e[20]!==p||e[21]!==y||e[22]!==g?(E={mutationFn:p,onSuccess:y,onError:g},e[20]=p,e[21]=y,e[22]=g,e[23]=E):E=e[23];const{mutateAsync:m}=L.useMutation(E);let S;e[24]!==n||e[25]!==i||e[26]!==a||e[27]!==o||e[28]!==r?(S=async O=>{const k=O===void 0?{}:O;return N.Delete(a,n,r,ie.DeleteInput.createFrom({id:o,namespace:i,gracePeriodSeconds:k.gracePeriodSeconds}))},e[24]=n,e[25]=i,e[26]=a,e[27]=o,e[28]=r,e[29]=S):S=e[29];let h;e[30]!==d||e[31]!==u||e[32]!==o||e[33]!==l?(h=async()=>{l(`Resource ${o} deleted`,"success"),await d.invalidateQueries({queryKey:u})},e[30]=d,e[31]=u,e[32]=o,e[33]=l,e[34]=h):h=e[34];const I=`Failed to delete resource ${o}`;let C;e[35]!==l||e[36]!==I?(C=ce(l,I),e[35]=l,e[36]=I,e[37]=C):C=e[37];let T;e[38]!==C||e[39]!==S||e[40]!==h?(T={mutationFn:S,onSuccess:h,onError:C},e[38]=C,e[39]=S,e[40]=h,e[41]=T):T=e[41];const{mutateAsync:D}=L.useMutation(T);let x;e[42]!==n||e[43]!==i||e[44]!==a||e[45]!==o||e[46]!==r?(x=async()=>N.Get$1(a,n,r,ie.GetInput.createFrom({id:o,namespace:i})),e[42]=n,e[43]=i,e[44]=a,e[45]=o,e[46]=r,e[47]=x):x=e[47];let F;e[48]!==u||e[49]!==x?(F={queryKey:u,queryFn:x,retry:!1},e[48]=u,e[49]=x,e[50]=F):F=e[50];const R=L.useQuery(F);let P;return e[51]!==D||e[52]!==R||e[53]!==m?(P={resource:R,update:m,remove:D},e[51]=D,e[52]=R,e[53]=m,e[54]=P):P=e[54],P},Fn=t=>{const e=j.c(11);let s;e[0]!==t.area||e[1]!==t.plugin||e[2]!==t.resource?(s=["component",t.plugin,t.resource,t.area],e[0]=t.area,e[1]=t.plugin,e[2]=t.resource,e[3]=s):s=e[3];const n=s;let r;e[4]!==t?(r=async()=>N.GetResourceAreaComponent(t),e[4]=t,e[5]=r):r=e[5];let o;e[6]!==n||e[7]!==r?(o={queryKey:n,queryFn:r},e[6]=n,e[7]=r,e[8]=o):o=e[8];const c=L.useQuery(o);let i;return e[9]!==c?(i={component:c},e[9]=c,e[10]=i):i=e[10],i},Ln=t=>{const e=j.c(10),{pluginID:s,connectionID:n}=t,r=ne(s);let o;e[0]!==r?(o=[r,"resource_groups","list"],e[0]=r,e[1]=o):o=e[1];const c=o;let i;e[2]!==n||e[3]!==r?(i=async()=>N.GetResourceGroups(r,n),e[2]=n,e[3]=r,e[4]=i):i=e[4];let a;e[5]!==c||e[6]!==i?(a={queryKey:c,queryFn:i,retry:!1},e[5]=c,e[6]=i,e[7]=a):a=e[7];const d=L.useQuery(a);let l;return e[8]!==d?(l={groups:d},e[8]=d,e[9]=l):l=e[9],l},$n=t=>{const e=j.c(14),{pluginID:s,connectionID:n,searches:r}=t,o=ne(s);let c;e[0]!==n||e[1]!==o?(c=f=>[o,n,f.key,f.namespaces,"list"],e[0]=n,e[1]=o,e[2]=c):c=e[2];const i=c;let a;if(e[3]!==n||e[4]!==i||e[5]!==o||e[6]!==r){let f;e[8]!==n||e[9]!==i||e[10]!==o?(f=u=>({queryKey:i(u),queryFn:async()=>N.List(o,n,u.key,ie.ListInput.createFrom({order:[{field:"name",descending:!1}],pagination:{page:1,pageSize:200},namespaces:u.namespaces})).then(p=>p?(console.log(p.result),p.result&&u.postFilter?Object.values(p.result).filter(u.postFilter):Object.values(p.result||{})):[]),retry:!1}),e[8]=n,e[9]=i,e[10]=o,e[11]=f):f=e[11],a=r.map(f),e[3]=n,e[4]=i,e[5]=o,e[6]=r,e[7]=a}else a=e[7];let d;return e[12]!==a?(d={queries:a},e[12]=a,e[13]=d):d=e[13],L.useQueries(d)},Mn=t=>{const e=j.c(11),{pluginID:s,resourceKey:n}=t,r=ne(s);let o;e[0]!==r||e[1]!==n?(o=[r,"resources",n],e[0]=r,e[1]=n,e[2]=o):o=e[2];const c=o;let i;e[3]!==r||e[4]!==n?(i=async()=>N.GetResourceType(r,n),e[3]=r,e[4]=n,e[5]=i):i=e[5];let a;e[6]!==c||e[7]!==i?(a={queryKey:c,queryFn:i,retry:!1},e[6]=c,e[7]=i,e[8]=a):a=e[8];const d=L.useQuery(a);let l;return e[9]!==d?(l={resourceType:d},e[9]=d,e[10]=l):l=e[10],l},kn=t=>{const e=j.c(11),{pluginID:s,connectionID:n}=t,r=ne(s);let o;e[0]!==n||e[1]!==r?(o=[r,"resources","list",n],e[0]=n,e[1]=r,e[2]=o):o=e[2];const c=o;let i;e[3]!==n||e[4]!==r?(i=async()=>N.GetResourceTypes(r,n),e[3]=n,e[4]=r,e[5]=i):i=e[5];let a;e[6]!==c||e[7]!==i?(a={queryKey:c,queryFn:i,retry:!1},e[6]=c,e[7]=i,e[8]=a):a=e[8];const d=L.useQuery(a);let l;return e[9]!==d?(l={types:d},e[9]=d,e[10]=l):l=e[10],l};var be=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function jn(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var je,Ze;function Un(){if(Ze)return je;Ze=1;var t="Expected a function",e="__lodash_hash_undefined__",s="[object Function]",n="[object GeneratorFunction]",r="[object Symbol]",o=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,c=/^\w*$/,i=/^\./,a=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,d=/[\\^$.*+?()[\]{}|]/g,l=/\\(\\)?/g,f=/^\[object .+?Constructor\]$/,u=typeof be=="object"&&be&&be.Object===Object&&be,p=typeof self=="object"&&self&&self.Object===Object&&self,y=u||p||Function("return this")();function v(_,b){return _?.[b]}function g(_){var b=!1;if(_!=null&&typeof _.toString!="function")try{b=!!(_+"")}catch{}return b}var E=Array.prototype,m=Function.prototype,S=Object.prototype,h=y["__core-js_shared__"],I=(function(){var _=/[^.]+$/.exec(h&&h.keys&&h.keys.IE_PROTO||"");return _?"Symbol(src)_1."+_:""})(),C=m.toString,T=S.hasOwnProperty,D=S.toString,x=RegExp("^"+C.call(T).replace(d,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),F=y.Symbol,R=E.splice,P=He(y,"Map"),O=He(Object,"create"),k=F?F.prototype:void 0,B=k?k.toString:void 0;function Q(_){var b=-1,$=_?_.length:0;for(this.clear();++b<$;){var ee=_[b];this.set(ee[0],ee[1])}}function W(){this.__data__=O?O(null):{}}function K(_){return this.has(_)&&delete this.__data__[_]}function Y(_){var b=this.__data__;if(O){var $=b[_];return $===e?void 0:$}return T.call(b,_)?b[_]:void 0}function U(_){var b=this.__data__;return O?b[_]!==void 0:T.call(b,_)}function z(_,b){var $=this.__data__;return $[_]=O&&b===void 0?e:b,this}Q.prototype.clear=W,Q.prototype.delete=K,Q.prototype.get=Y,Q.prototype.has=U,Q.prototype.set=z;function te(_){var b=-1,$=_?_.length:0;for(this.clear();++b<$;){var ee=_[b];this.set(ee[0],ee[1])}}function he(){this.__data__=[]}function H(_){var b=this.__data__,$=me(b,_);if($<0)return!1;var ee=b.length-1;return $==ee?b.pop():R.call(b,$,1),!0}function J(_){var b=this.__data__,$=me(b,_);return $<0?void 0:b[$][1]}function V(_){return me(this.__data__,_)>-1}function X(_,b){var $=this.__data__,ee=me($,_);return ee<0?$.push([_,b]):$[ee][1]=b,this}te.prototype.clear=he,te.prototype.delete=H,te.prototype.get=J,te.prototype.has=V,te.prototype.set=X;function q(_){var b=-1,$=_?_.length:0;for(this.clear();++b<$;){var ee=_[b];this.set(ee[0],ee[1])}}function M(){this.__data__={hash:new Q,map:new(P||te),string:new Q}}function Z(_){return Ce(this,_).delete(_)}function fe(_){return Ce(this,_).get(_)}function pe(_){return Ce(this,_).has(_)}function _e(_,b){return Ce(this,_).set(_,b),this}q.prototype.clear=M,q.prototype.delete=Z,q.prototype.get=fe,q.prototype.has=pe,q.prototype.set=_e;function me(_,b){for(var $=_.length;$--;)if(Lt(_[$][0],b))return $;return-1}function wt(_,b){b=Ot(b,_)?[b]:Rt(b);for(var $=0,ee=b.length;_!=null&&$<ee;)_=_[Nt(b[$++])];return $&&$==ee?_:void 0}function Dt(_){if(!Ve(_)||At(_))return!1;var b=$t(_)||g(_)?x:f;return b.test(Ft(_))}function xt(_){if(typeof _=="string")return _;if(Fe(_))return B?B.call(_):"";var b=_+"";return b=="0"&&1/_==-1/0?"-0":b}function Rt(_){return ze(_)?_:Tt(_)}function Ce(_,b){var $=_.__data__;return Pt(b)?$[typeof b=="string"?"string":"hash"]:$.map}function He(_,b){var $=v(_,b);return Dt($)?$:void 0}function Ot(_,b){if(ze(_))return!1;var $=typeof _;return $=="number"||$=="symbol"||$=="boolean"||_==null||Fe(_)?!0:c.test(_)||!o.test(_)||b!=null&&_ in Object(b)}function Pt(_){var b=typeof _;return b=="string"||b=="number"||b=="symbol"||b=="boolean"?_!=="__proto__":_===null}function At(_){return!!I&&I in _}var Tt=Ne(function(_){_=kt(_);var b=[];return i.test(_)&&b.push(""),_.replace(a,function($,ee,Se,Ee){b.push(Se?Ee.replace(l,"$1"):ee||$)}),b});function Nt(_){if(typeof _=="string"||Fe(_))return _;var b=_+"";return b=="0"&&1/_==-1/0?"-0":b}function Ft(_){if(_!=null){try{return C.call(_)}catch{}try{return _+""}catch{}}return""}function Ne(_,b){if(typeof _!="function"||b&&typeof b!="function")throw new TypeError(t);var $=function(){var ee=arguments,Se=b?b.apply(this,ee):ee[0],Ee=$.cache;if(Ee.has(Se))return Ee.get(Se);var Ye=_.apply(this,ee);return $.cache=Ee.set(Se,Ye),Ye};return $.cache=new(Ne.Cache||q),$}Ne.Cache=q;function Lt(_,b){return _===b||_!==_&&b!==b}var ze=Array.isArray;function $t(_){var b=Ve(_)?D.call(_):"";return b==s||b==n}function Ve(_){var b=typeof _;return!!_&&(b=="object"||b=="function")}function Mt(_){return!!_&&typeof _=="object"}function Fe(_){return typeof _=="symbol"||Mt(_)&&D.call(_)==r}function kt(_){return _==null?"":xt(_)}function jt(_,b,$){var ee=_==null?void 0:wt(_,b);return ee===void 0?$:ee}return je=jt,je}var qn=Un();const we=jn(qn);function mt(t,e,s){const n=t??{result:[],success:!0,totalCount:0},r=[...n.result??[]];for(const o of e){const c=we(o.payload.data,s);switch(o.type){case"ADD":{r.findIndex(a=>we(a,s)===c)===-1&&r.push(o.payload.data);break}case"UPDATE":{const i=r.findIndex(a=>we(a,s)===c);i!==-1&&(r[i]=o.payload.data);break}case"DELETE":{const i=r.findIndex(a=>we(a,s)===c);i!==-1&&r.splice(i,1);break}}}return{...n,result:r}}function _t(t,e,s,n,r,o){const c=j.c(14),i=o?.syncWindowMs??500;let a;c[0]===Symbol.for("react.memo_cache_sentinel")?(a=[],c[0]=a):a=c[0];const d=w.useRef(a),l=w.useRef(null),f=w.useRef(null),u=w.useRef(r);let p,y;c[1]!==r?(p=()=>{u.current=r},y=[r],c[1]=r,c[2]=p,c[3]=y):(p=c[2],y=c[3]),w.useLayoutEffect(p,y);let v;c[4]!==s||c[5]!==n||c[6]!==t||c[7]!==e?(v=()=>{const I=d.current;if(d.current=[],l.current!==null&&(clearTimeout(l.current),l.current=null),f.current!==null&&(cancelAnimationFrame(f.current),f.current=null),!(I.length===0||!n)){t.setQueryData(e,C=>mt(C,I,n));for(const C of I)(C.type==="ADD"||C.type==="UPDATE")&&t.setQueryData(s(C.payload.id,C.payload.namespace),{success:!0,result:C.payload.data})}},c[4]=s,c[5]=n,c[6]=t,c[7]=e,c[8]=v):v=c[8];const g=v;let E;c[9]!==g||c[10]!==i?(E=I=>{d.current.push(I),!(l.current!==null||f.current!==null)&&(l.current=setTimeout(g,i),u.current!==1&&(f.current=requestAnimationFrame(g)))},c[9]=g,c[10]=i,c[11]=E):E=c[11];const m=E;let S,h;return c[12]===Symbol.for("react.memo_cache_sentinel")?(S=()=>()=>{l.current!==null&&(clearTimeout(l.current),l.current=null),f.current!==null&&(cancelAnimationFrame(f.current),f.current=null)},h=[],c[12]=S,c[13]=h):(S=c[12],h=c[13]),w.useEffect(S,h),m}const Qn=t=>{const e=j.c(57),{pluginID:s,connectionID:n,resourceKey:r,idAccessor:o,namespaces:c}=t,i=ne(s),a=L.useQueryClient(),{showSnackbar:d}=le();let l;e[0]!==c?(l=c??[],e[0]=c,e[1]=l):l=e[1];const f=l;let u;e[2]!==n||e[3]!==i||e[4]!==r||e[5]!==f?(u=Re.list(i,n,r,f),e[2]=n,e[3]=i,e[4]=r,e[5]=f,e[6]=u):u=e[6];const p=u;let y;e[7]!==n||e[8]!==i||e[9]!==r?(y=(Y,U)=>Re.resource(i,n,r,Y,U),e[7]=n,e[8]=i,e[9]=r,e[10]=y):y=e[10];const v=y;let g;e[11]!==n||e[12]!==i||e[13]!==r||e[14]!==f?(g=async Y=>N.Create(i,n,r,ie.CreateInput.createFrom({input:Y.input,namespace:Y.namespace??(f.length===1?f[0]:"")})),e[11]=n,e[12]=i,e[13]=r,e[14]=f,e[15]=g):g=e[15];let E;e[16]!==a||e[17]!==p||e[18]!==d?(E=async Y=>{const U=Y?.result;let z="";U?.metadata?.name?z=U.metadata.name:U?.id?z=U.id:U?.name?z=U.name:U?.ID?z=U.ID:U?.Name&&(z=U.Name);const te=z?`Resource ${z} created`:"Resource created";d(te,"success"),await a.invalidateQueries({queryKey:p})},e[16]=a,e[17]=p,e[18]=d,e[19]=E):E=e[19];let m;e[20]!==d?(m=ce(d,"Failed to create resource"),e[20]=d,e[21]=m):m=e[21];let S;e[22]!==g||e[23]!==E||e[24]!==m?(S={mutationFn:g,onSuccess:E,onError:m},e[22]=g,e[23]=E,e[24]=m,e[25]=S):S=e[25];const{mutateAsync:h}=L.useMutation(S);let I;e[26]!==n||e[27]!==i||e[28]!==r||e[29]!==f?(I=async()=>N.List(i,n,r,ie.ListInput.createFrom({order:[{field:"name",descending:!1}],pagination:{page:1,pageSize:200},namespaces:f})),e[26]=n,e[27]=i,e[28]=r,e[29]=f,e[30]=I):I=e[30];let C;e[31]!==p||e[32]!==I?(C={queryKey:p,queryFn:I,placeholderData:Wn,retry:!1},e[31]=p,e[32]=I,e[33]=C):C=e[33];const T=L.useQuery(C),[D,x]=w.useState(G.WatchStateIdle);let F,R;e[34]!==n||e[35]!==i||e[36]!==r?(F=()=>re.On(`${i}/${n}/watch/STATE`,U=>{const z=U.data;z.resourceKey===r&&x(z.state)}),R=[i,n,r],e[34]=n,e[35]=i,e[36]=r,e[37]=F,e[38]=R):(F=e[37],R=e[38]),w.useEffect(F,R);const P=_t(a,p,v,o,D);let O;e[39]!==n||e[40]!==P||e[41]!==o||e[42]!==i||e[43]!==r?(O=()=>{if(!o)return;N.SubscribeResource(i,n,r);const Y=re.On(`${i}/${n}/${r}/ADD`,te=>P({type:"ADD",payload:te.data})),U=re.On(`${i}/${n}/${r}/UPDATE`,te=>P({type:"UPDATE",payload:te.data})),z=re.On(`${i}/${n}/${r}/DELETE`,te=>P({type:"DELETE",payload:te.data}));return()=>{Y(),U(),z(),N.UnsubscribeResource(i,n,r)}},e[39]=n,e[40]=P,e[41]=o,e[42]=i,e[43]=r,e[44]=O):O=e[44];let k;e[45]!==n||e[46]!==P||e[47]!==i||e[48]!==r?(k=[i,n,r,P],e[45]=n,e[46]=P,e[47]=i,e[48]=r,e[49]=k):k=e[49],w.useEffect(O,k);const B=D===G.WatchStateSyncing,Q=D===G.WatchStateSynced,W=D===G.WatchStateError;let K;return e[50]!==h||e[51]!==T||e[52]!==B||e[53]!==Q||e[54]!==W||e[55]!==D?(K={resources:T,create:h,watchState:D,isSyncing:B,isSynced:Q,watchError:W},e[50]=h,e[51]=T,e[52]=B,e[53]=Q,e[54]=W,e[55]=D,e[56]=K):K=e[56],K};function Wn(t,e){return t}const Gn=t=>{const e=j.c(28),{pluginID:s}=t,n=ne(s),{showSnackbar:r}=le();let o;e[0]!==n?(o=async m=>{const{opts:S,input:h}=m;return N.Create(n,S.connectionID,S.resourceKey,ie.CreateInput.createFrom({input:h.input,namespace:h.namespace??S.namespace??""}))},e[0]=n,e[1]=o):o=e[1];let c;e[2]!==r?(c=(m,S)=>{const{opts:h}=S;r(`Resource ${h.resourceID} created`,"success")},e[2]=r,e[3]=c):c=e[3];let i;e[4]!==r||e[5]!==o||e[6]!==c?(i={mutationFn:o,onSuccess:c,onError(m,S){const{opts:h}=S;ye(r,m,`Failed to create resource ${h.resourceID}`)}},e[4]=r,e[5]=o,e[6]=c,e[7]=i):i=e[7];const a=L.useMutation(i);let d;e[8]!==n?(d=async m=>{const{opts:S,input:h}=m;return N.Update(n,S.connectionID,S.resourceKey,ie.UpdateInput.createFrom({input:h.input,id:S.resourceID,namespace:S.namespace??""}))},e[8]=n,e[9]=d):d=e[9];let l;e[10]!==r?(l=(m,S)=>{const{opts:h}=S;r(`Resource ${h.resourceID} updated`,"success")},e[10]=r,e[11]=l):l=e[11];let f;e[12]!==r||e[13]!==d||e[14]!==l?(f={mutationFn:d,onSuccess:l,onError(m,S){const{opts:h}=S;ye(r,m,`Failed to update resource ${h.resourceID}`)}},e[12]=r,e[13]=d,e[14]=l,e[15]=f):f=e[15];const u=L.useMutation(f);let p;e[16]!==n?(p=async m=>{const{opts:S,input:h}=m;return N.Delete(n,S.connectionID,S.resourceKey,ie.DeleteInput.createFrom({id:S.resourceID,namespace:S.namespace??"",gracePeriodSeconds:h.gracePeriodSeconds}))},e[16]=n,e[17]=p):p=e[17];let y;e[18]!==r?(y=(m,S)=>{const{opts:h}=S;r(`Resource ${h.resourceID} deleted`,"success")},e[18]=r,e[19]=y):y=e[19];let v;e[20]!==r||e[21]!==p||e[22]!==y?(v={mutationFn:p,onSuccess:y,onError(m,S){const{opts:h}=S;ye(r,m,`Failed to delete resource ${h.resourceID}`)}},e[20]=r,e[21]=p,e[22]=y,e[23]=v):v=e[23];const g=L.useMutation(v);let E;return e[24]!==a.mutateAsync||e[25]!==g.mutateAsync||e[26]!==u.mutateAsync?(E={create:a.mutateAsync,update:u.mutateAsync,remove:g.mutateAsync},e[24]=a.mutateAsync,e[25]=g.mutateAsync,e[26]=u.mutateAsync,e[27]=E):E=e[27],E},Kn=t=>{const e=j.c(15),{pluginID:s,connectionID:n,resourceKey:r,enabled:o}=t,c=o===void 0?!0:o,i=ne(s);let a,d;e[0]!==n||e[1]!==i||e[2]!==r?(a=["RESOURCE_ACTIONS",i,n,r],d=()=>N.GetActions(i,n,r),e[0]=n,e[1]=i,e[2]=r,e[3]=a,e[4]=d):(a=e[3],d=e[4]);const l=c&&!!i&&!!n&&!!r;let f;e[5]!==a||e[6]!==d||e[7]!==l?(f={queryKey:a,queryFn:d,enabled:l,staleTime:3e5},e[5]=a,e[6]=d,e[7]=l,e[8]=f):f=e[8];const u=L.useQuery(f);let p;e[9]!==u.data?(p=u.data??[],e[9]=u.data,e[10]=p):p=e[10];let y;return e[11]!==u.error||e[12]!==u.isLoading||e[13]!==p?(y={actions:p,isLoading:u.isLoading,error:u.error},e[11]=u.error,e[12]=u.isLoading,e[13]=p,e[14]=y):y=e[14],y},Bn=t=>{const e=j.c(20),{pluginID:s,connectionID:n,resourceKey:r}=t,o=ne(s),c=L.useQueryClient(),{showSnackbar:i}=le();let a;e[0]!==n||e[1]!==o||e[2]!==r?(a=async y=>{const{actionID:v,id:g,namespace:E,params:m}=y,S=g===void 0?"":g,h=E===void 0?"":E,I=m===void 0?{}:m;return N.ExecuteAction(o,n,r,v,ie.ActionInput.createFrom({id:S,namespace:h,params:I}))},e[0]=n,e[1]=o,e[2]=r,e[3]=a):a=e[3];let d;e[4]!==n||e[5]!==o||e[6]!==c||e[7]!==r||e[8]!==i?(d=y=>{y?.message&&i(y.message,"success"),c.invalidateQueries({queryKey:["RESOURCES",o,n,r]})},e[4]=n,e[5]=o,e[6]=c,e[7]=r,e[8]=i,e[9]=d):d=e[9];let l;e[10]!==i?(l=(y,v)=>{ye(i,y,`Failed to execute action "${v.actionID}"`)},e[10]=i,e[11]=l):l=e[11];let f;e[12]!==a||e[13]!==d||e[14]!==l?(f={mutationFn:a,onSuccess:d,onError:l},e[12]=a,e[13]=d,e[14]=l,e[15]=f):f=e[15];const u=L.useMutation(f);let p;return e[16]!==u.error||e[17]!==u.isPending||e[18]!==u.mutateAsync?(p={executeAction:u.mutateAsync,isExecuting:u.isPending,error:u.error},e[16]=u.error,e[17]=u.isPending,e[18]=u.mutateAsync,e[19]=p):p=e[19],p},Hn=t=>{const e=j.c(15),{pluginID:s,connectionID:n,enabled:r}=t,o=r===void 0?!0:r,c=ne(s);let i,a;e[0]!==n||e[1]!==c?(i=["EDITOR_SCHEMAS",c,n],a=()=>N.GetEditorSchemas(c,n),e[0]=n,e[1]=c,e[2]=i,e[3]=a):(i=e[2],a=e[3]);const d=o&&!!c&&!!n;let l;e[4]!==i||e[5]!==a||e[6]!==d?(l={queryKey:i,queryFn:a,enabled:d,staleTime:6e5,retry:1},e[4]=i,e[5]=a,e[6]=d,e[7]=l):l=e[7];const f=L.useQuery(l);let u;e[8]!==f.data?(u=f.data??[],e[8]=f.data,e[9]=u):u=e[9];let p;return e[10]!==f.error||e[11]!==f.isLoading||e[12]!==f.refetch||e[13]!==u?(p={schemas:u,isLoading:f.isLoading,error:f.error,refetch:f.refetch},e[10]=f.error,e[11]=f.isLoading,e[12]=f.refetch,e[13]=u,e[14]=p):p=e[14],p},zn=({pluginID:t,connectionID:e,enabled:s=!0})=>{const n=ne(t),r=L.useQueryClient(),o=[n,e,"watch-state"],c=w.useRef([]),i=w.useRef(!1),a=w.useCallback(u=>{r.setQueryData(o,p=>{if(!p)return p;const y={...p.resources,[u.resourceKey]:u.state},v={...p.resourceCounts,[u.resourceKey]:u.resourceCount};let g=0,E=0;for(const m of Object.values(y))m===G.WatchStateSynced&&g++,(m===G.WatchStateError||m===G.WatchStateFailed)&&E++;return{...p,resources:y,resourceCounts:v,totalResources:Object.keys(y).length,syncedCount:g,errorCount:E}})},[r,n,e]),d=L.useQuery({queryKey:o,queryFn:async()=>{const u=await N.GetWatchState(n,e);if(!u)throw new Error("Failed to get watch state: null response");const p={};let y=0,v=0;for(const[E,m]of Object.entries(u.resources??{}))m!=null&&(p[E]=m,m===G.WatchStateSynced&&y++,m===G.WatchStateError&&v++);const g={};for(const[E,m]of Object.entries(u.resourceCounts??{}))m!=null&&(g[E]=m);return{connection:u.connectionId,resources:p,resourceCounts:g,totalResources:Object.keys(p).length,syncedCount:y,errorCount:v}},enabled:s&&!!n&&!!e,refetchInterval:u=>{const p=u.state.data;if(!p||p.totalResources===0)return 3e3;let y=0;for(const v of Object.values(p.resources))(v===G.WatchStateSynced||v===G.WatchStateError||v===G.WatchStateStopped||v===G.WatchStateFailed||v===G.WatchStateForbidden||v===G.WatchStateSkipped)&&y++;return y>=p.totalResources?!1:3e3}});w.useEffect(()=>{if(!d.data||i.current)return;i.current=!0;const u=c.current;c.current=[];for(const p of u)a(p)},[d.data,a]),w.useEffect(()=>{if(!s||!n||!e)return;i.current=!1,c.current=[];const u=re.On(`${n}/${e}/watch/STATE`,p=>{const y=p.data;i.current?a(y):c.current.push(y)});return()=>{u(),i.current=!1,c.current=[]}},[n,e,s,a]);const l=d.data;let f=0;if(l?.resources)for(const u of Object.values(l.resources))(u===G.WatchStateSynced||u===G.WatchStateError||u===G.WatchStateStopped||u===G.WatchStateFailed||u===G.WatchStateForbidden||u===G.WatchStateSkipped)&&f++;return{summary:d,getResourceState:u=>l?.resources[u],isFullySynced:l?l.totalResources>0&&f===l.totalResources:!1,syncProgress:l&&l.totalResources>0?f/l.totalResources:0,errorCount:l?.errorCount??0}},Vn=()=>{const t=j.c(16);let e;t[0]===Symbol.for("react.memo_cache_sentinel")?(e=new Map,t[0]=e):e=t[0];const[s,n]=w.useState(e);let r;t[1]===Symbol.for("react.memo_cache_sentinel")?(r=new Map,t[1]=r):r=t[1];const o=w.useRef(r);let c;t[2]===Symbol.for("react.memo_cache_sentinel")?(c=new Map,t[2]=c):c=t[2];const i=w.useRef(c);let a;t[3]===Symbol.for("react.memo_cache_sentinel")?(a=m=>{const S=m.data,h=Ke(S),I=yt(o.current,S),C=Qe(I);if(n(T=>{const D=new Map(T);return D.set(h,C),D}),i.current.has(h)&&(clearTimeout(i.current.get(h)),i.current.delete(h)),Ae(C)){const T=setTimeout(()=>{n(D=>{const x=new Map(D);return x.delete(h),x}),o.current.delete(h),i.current.delete(h)},5e3);i.current.set(h,T)}},t[3]=a):a=t[3];const d=a;let l,f;t[4]===Symbol.for("react.memo_cache_sentinel")?(l=()=>{const m=re.On("watch/STATE",d);return()=>{m();for(const S of i.current.values())clearTimeout(S)}},f=[d],t[4]=l,t[5]=f):(l=t[4],f=t[5]),w.useEffect(l,f);let u,p,y,v;t[6]!==s?(y=Array.from(s.values()),u=pt(y),p=y.find(Yn)??y[0]??null,v=ht(y),t[6]=s,t[7]=u,t[8]=p,t[9]=y,t[10]=v):(u=t[7],p=t[8],y=t[9],v=t[10]);const g=v;let E;return t[11]!==g||t[12]!==u||t[13]!==p||t[14]!==y?(E={syncs:y,hasSyncing:u,primarySync:p,aggregateProgress:g},t[11]=g,t[12]=u,t[13]=p,t[14]=y,t[15]=E):E=t[15],E};function Yn(t){return!Ae(t)}const St=()=>{const t=w.useContext(Ge);if(!t)throw new Error("useOperations must be used within an OperationsProvider");return t},Xn=t=>{const e=j.c(23),{pluginID:s,connectionID:n,resourceKey:r}=t,o=ne(s),{showSnackbar:c}=le(),{addOperation:i,updateOperation:a}=St();let d;e[0]===Symbol.for("react.memo_cache_sentinel")?(d=new Set,e[0]=d):d=e[0];const l=w.useRef(d);let f;e[1]!==a?(f=(h,I)=>{const C=I===void 0?!1:I;h.disposed||(h.disposed=!0,h.unsubscribe?.(),h.open?.cancel(),h.attach?.cancel(),h.handle&&(N.CancelStreamAction(h.handle).catch(Jn),C&&a(h.handle,{status:"cancelled",message:"Cancelled",completedAt:Date.now()})),l.current.delete(h))},e[1]=a,e[2]=f):f=e[2];const u=f;let p;e[3]!==u?(p=()=>()=>{for(const h of l.current)u(h,!0)},e[3]=u,e[4]=p):p=e[4];let y;e[5]!==n||e[6]!==u||e[7]!==o||e[8]!==r?(y=[o,n,r,u],e[5]=n,e[6]=u,e[7]=o,e[8]=r,e[9]=y):y=e[9],w.useEffect(p,y);let v;e[10]!==i||e[11]!==n||e[12]!==u||e[13]!==o||e[14]!==r||e[15]!==c||e[16]!==a?(v=async h=>{const{actionID:I,id:C,namespace:T,label:D,params:x}=h,F=x===void 0?{}:x,R={disposed:!1,terminal:!1,sequence:0};l.current.add(R);try{R.open=N.StreamAction(o,n,r,I,ie.ActionInput.createFrom({id:C,namespace:T,params:F}));const P=await R.open;if(R.open=void 0,R.disposed)return N.CancelStreamAction(P).catch(Zn),P;R.handle=P,i({id:P,label:D,resourceKey:r,resourceName:C,namespace:T,connectionID:n,status:"running",startedAt:Date.now()});const O=B=>{if(R.disposed||!Number.isSafeInteger(B.sequence)||B.sequence<=R.sequence)return;R.sequence=B.sequence;const Q=B.event,W=Q.data??{};if(Q.type==="error"){R.terminal=!0;const K=de(Q.error);a(P,{status:ve(K)?"cancelled":"error",message:K.title,completedAt:Date.now()}),ye(c,K,D),u(R)}else if(Q.type==="complete"){R.terminal=!0;const K=typeof W.message=="string"?W.message:`${D} completed`;a(P,{status:"completed",message:K,completedAt:Date.now()}),c(K,"success"),u(R)}else a(P,{message:typeof W.message=="string"?W.message:void 0,progress:typeof W.ready=="number"&&typeof W.desired=="number"?{ready:W.ready,desired:W.desired}:void 0})};R.unsubscribe=re.On(`action/stream/${P}`,B=>O(B.data)),R.attach=N.AttachStreamAction(P);const k=await R.attach;return R.attach=void 0,O(k),P}catch(P){const O=P;if(R.terminal&&R.handle)return R.handle;throw R.disposed||(R.handle&&a(R.handle,{status:ve(O)?"cancelled":"error",message:de(O).title,completedAt:Date.now()}),ye(c,O,`Failed to start "${I}"`)),u(R),O}},e[10]=i,e[11]=n,e[12]=u,e[13]=o,e[14]=r,e[15]=c,e[16]=a,e[17]=v):v=e[17];const g=v;let E;e[18]!==u?(E=h=>{for(const I of l.current)if(I.handle===h){u(I,!0);return}},e[18]=u,e[19]=E):E=e[19];const m=E;let S;return e[20]!==m||e[21]!==g?(S={startStreamAction:g,cancelStreamAction:m},e[20]=m,e[21]=g,e[22]=S):S=e[22],S};function Jn(){}function Zn(){}function Et(t,e){return`${t}/${e}/graph/CHANGED`}function Te(t,e,s,n){const r=j.c(16),o=L.useQueryClient(),c=w.useRef(s);let i,a;r[0]!==s?(i=()=>{c.current=s},a=[s],r[0]=s,r[1]=i,r[2]=a):(i=r[1],a=r[2]),w.useLayoutEffect(i,a);let d;r[3]!==s?(d=JSON.stringify(s),r[3]=s,r[4]=d):d=r[4];const l=d;let f;r[5]!==e||r[6]!==n||r[7]!==t||r[8]!==o?(f=()=>{if(!n||!t||!e)return;const p=re.On(Et(t,e),()=>{o.invalidateQueries({queryKey:c.current,exact:!0})});return()=>{p()}},r[5]=e,r[6]=n,r[7]=t,r[8]=o,r[9]=f):f=r[9];let u;r[10]!==e||r[11]!==n||r[12]!==l||r[13]!==t||r[14]!==o?(u=[o,t,e,l,n],r[10]=e,r[11]=n,r[12]=l,r[13]=t,r[14]=o,r[15]=u):u=r[15],w.useEffect(f,u)}const er={owns:{outgoing:"Owns",incoming:"Owned by"},runs_on:{outgoing:"Runs on",incoming:"Running here"},uses:{outgoing:"Uses",incoming:"Used by"},exposes:{outgoing:"Exposes",incoming:"Exposed by"},manages:{outgoing:"Manages",incoming:"Managed by"},member_of:{outgoing:"Member of",incoming:"Members"},selects:{outgoing:"Selects",incoming:"Selected by"}};function tr(t,e){const s=er[t];if(s)return s[e];const n=t.replace(/_/g," ");return e==="outgoing"?n:`${n} (incoming)`}function nr(t,e){return t.pluginId===e.pluginId&&t.connectionId===e.connectionId&&t.resourceKey===e.resourceKey&&t.id===e.id&&(t.namespace??"")===(e.namespace??"")}function vt(t,e){return e.map(s=>{const n=nr(s.source,t);return{resource:n?s.target:s.source,type:s.type,direction:n?"outgoing":"incoming",label:s.label}})}const rr=t=>{const e=j.c(38),{pluginID:s,connectionID:n,resourceKey:r,resourceID:o,namespace:c,direction:i,relationshipType:a,enabled:d,refetchInterval:l}=t,f=c===void 0?"":c,u=i===void 0?"both":i,p=d===void 0?!0:d,y=l===void 0?!1:l,v=ne(s),g=a??null;let E;e[0]!==n||e[1]!==u||e[2]!==f||e[3]!==v||e[4]!==o||e[5]!==r||e[6]!==g?(E=["RESOURCE_RELATED",v,n,r,f,o,u,g],e[0]=n,e[1]=u,e[2]=f,e[3]=v,e[4]=o,e[5]=r,e[6]=g,e[7]=E):E=e[7];const m=E,S=p&&!!v&&!!n&&!!r&&!!o;Te(v,n,m,S);let h;e[8]!==n||e[9]!==u||e[10]!==f||e[11]!==v||e[12]!==a||e[13]!==o||e[14]!==r?(h=async()=>N.GetRelated(v,n,r,f,o,u,a??null),e[8]=n,e[9]=u,e[10]=f,e[11]=v,e[12]=a,e[13]=o,e[14]=r,e[15]=h):h=e[15];let I;e[16]!==S||e[17]!==m||e[18]!==y||e[19]!==h?(I={queryKey:m,queryFn:h,enabled:S,refetchInterval:y},e[16]=S,e[17]=m,e[18]=y,e[19]=h,e[20]=I):I=e[20];const C=L.useQuery(I);let T,D;if(e[21]!==n||e[22]!==f||e[23]!==v||e[24]!==C.data||e[25]!==o||e[26]!==r){const F={pluginId:v,connectionId:n,resourceKey:r,id:o,namespace:f};let R;e[29]!==C.data?(R=C.data??[],e[29]=C.data,e[30]=R):R=e[30],T=R,D=vt(F,T),e[21]=n,e[22]=f,e[23]=v,e[24]=C.data,e[25]=o,e[26]=r,e[27]=T,e[28]=D}else T=e[27],D=e[28];let x;return e[31]!==T||e[32]!==C.error||e[33]!==C.isFetching||e[34]!==C.isLoading||e[35]!==C.refetch||e[36]!==D?(x={related:D,edges:T,isLoading:C.isLoading,isFetching:C.isFetching,error:C.error,refetch:C.refetch},e[31]=T,e[32]=C.error,e[33]=C.isFetching,e[34]=C.isLoading,e[35]=C.refetch,e[36]=D,e[37]=x):x=e[37],x},sr=t=>{const e=j.c(25),{pluginID:s,connectionID:n,resourceKey:r,resourceID:o,namespace:c,maxDepth:i,enabled:a,refetchInterval:d}=t,l=c===void 0?"":c,f=i===void 0?3:i,u=a===void 0?!0:a,p=d===void 0?!1:d,y=ne(s);let v;e[0]!==n||e[1]!==f||e[2]!==l||e[3]!==y||e[4]!==o||e[5]!==r?(v=["RESOURCE_DEPENDENCY_TREE",y,n,r,l,o,f],e[0]=n,e[1]=f,e[2]=l,e[3]=y,e[4]=o,e[5]=r,e[6]=v):v=e[6];const g=v,E=u&&!!y&&!!n&&!!r&&!!o;Te(y,n,g,E);let m;e[7]!==n||e[8]!==f||e[9]!==l||e[10]!==y||e[11]!==o||e[12]!==r?(m=async()=>N.GetDependencyTree(y,n,r,l,o,f),e[7]=n,e[8]=f,e[9]=l,e[10]=y,e[11]=o,e[12]=r,e[13]=m):m=e[13];let S;e[14]!==E||e[15]!==g||e[16]!==p||e[17]!==m?(S={queryKey:g,queryFn:m,enabled:E,refetchInterval:p},e[14]=E,e[15]=g,e[16]=p,e[17]=m,e[18]=S):S=e[18];const h=L.useQuery(S),I=h.data??null;let C;return e[19]!==h.error||e[20]!==h.isFetching||e[21]!==h.isLoading||e[22]!==h.refetch||e[23]!==I?(C={tree:I,isLoading:h.isLoading,isFetching:h.isFetching,error:h.error,refetch:h.refetch},e[19]=h.error,e[20]=h.isFetching,e[21]=h.isLoading,e[22]=h.refetch,e[23]=I,e[24]=C):C=e[24],C},or=t=>{const e=j.c(26),{pluginID:s,connectionID:n,resourceKey:r,resourceID:o,namespace:c,upDepth:i,downDepth:a,enabled:d}=t,l=c===void 0?"":c,f=i===void 0?2:i,u=a===void 0?3:a,p=d===void 0?!0:d,y=ne(s);let v;e[0]!==n||e[1]!==u||e[2]!==l||e[3]!==y||e[4]!==o||e[5]!==r||e[6]!==f?(v=["RESOURCE_GRAPH",y,n,r,l,o,f,u],e[0]=n,e[1]=u,e[2]=l,e[3]=y,e[4]=o,e[5]=r,e[6]=f,e[7]=v):v=e[7];const g=v,E=p&&!!y&&!!n&&!!r&&!!o;Te(y,n,g,E);let m;e[8]!==n||e[9]!==u||e[10]!==l||e[11]!==y||e[12]!==o||e[13]!==r||e[14]!==f?(m=async()=>N.GetSubgraph(y,n,r,l,o,f,u),e[8]=n,e[9]=u,e[10]=l,e[11]=y,e[12]=o,e[13]=r,e[14]=f,e[15]=m):m=e[15];let S;e[16]!==E||e[17]!==g||e[18]!==m?(S={queryKey:g,queryFn:m,enabled:E},e[16]=E,e[17]=g,e[18]=m,e[19]=S):S=e[19];const h=L.useQuery(S),I=h.data??null;let C;return e[20]!==h.error||e[21]!==h.isFetching||e[22]!==h.isLoading||e[23]!==h.refetch||e[24]!==I?(C={graph:I,isLoading:h.isLoading,isFetching:h.isFetching,error:h.error,refetch:h.refetch},e[20]=h.error,e[21]=h.isFetching,e[22]=h.isLoading,e[23]=h.refetch,e[24]=I,e[25]=C):C=e[25],C},ir=()=>{const t=w.useContext(We);if(!t)throw new Error("useSettings must be used within a SettingsProvider");return t},cr=t=>{const e=j.c(7);let s,n;if(e[0]!==t){const{to:a,withinContext:d,...l}=t;n=a,s=l,e[0]=t,e[1]=s,e[2]=n}else s=e[1],n=e[2];const{pluginId:r}=Pe();r||console.error("Link used outside of a plugin context");const o=`/_plugin/${r}${n.startsWith("/")?"":"/"}${n}`;let c;e[3]===Symbol.for("react.memo_cache_sentinel")?(c={textDecoration:"none",color:"inherit"},e[3]=c):c=e[3];let i;return e[4]!==s||e[5]!==o?(i=A.jsx(xe.Link,{style:c,...s,to:o}),e[4]=s,e[5]=o,e[6]=i):i=e[6],i};function ar(){const t=j.c(10),e=xe.useNavigate(),s=xe.useLocation(),{pluginId:n}=Pe();n||console.error("usePluginRouter used outside of a plugin context");const r=`/_plugin/${n}`;let o;t[0]!==s.pathname||t[1]!==r?(o=s.pathname.startsWith(r)?s.pathname.slice(r.length)||"/":s.pathname,t[0]=s.pathname,t[1]=r,t[2]=o):o=t[2];const c=o;let i;t[3]!==e||t[4]!==r?(i=(l,f)=>{const{...u}=f??{};l.startsWith("/")?e(`${r}${l}`,u):e(l,u)},t[3]=e,t[4]=r,t[5]=i):i=t[5];const a=i;let d;return t[6]!==s||t[7]!==a||t[8]!==c?(d={location:s,navigate:a,pluginPath:c},t[6]=s,t[7]=a,t[8]=c,t[9]=d):d=t[9],d}class lr{}class ur{_extensions;root;pages;_routes;get extensions(){return this._extensions||[]}get Routes(){if(!this._routes&&this.root)return[{path:"",index:!0,Component:this.root}];if(!this._routes?.length)throw new Error("cannot use plugin without a root page or router");return this._routes}get Window(){if(!this._routes&&this.root)return A.jsx(this.root,{});const e=xe.createMemoryRouter(this._routes||[]);return A.jsx(Ut.RouterProvider,{router:e})}registerExtensionPoints(e){return this._extensions=e||[],this}setRootPage(e){return this.root=e,this}withPage(e,s){return this.pages||(this.pages={}),this.pages[e]?(console.warn("Cannot register page with the same name. Please use a different name."),this):(this.pages[e]=s,this)}withRoutes(e){return this._routes=e,this}}var Ct=(t=>(t.MISSING_MANIFEST="MISSING_MANIFEST",t.MISSING_PLUGIN="MISSING_PLUGIN",t.MISSING_ENTRYPOINT="MISSING_ENTRYPOINT",t))(Ct||{});const dr=t=>{const e=t.split("::");return e.length===1?{group:"core",version:"",kind:e[0]}:{group:e[0]||"core",version:e[1]||"",kind:e[2]||e[0]}},fr=t=>!t||t==="core"?"Core":t.charAt(0).toUpperCase()+t.slice(1),It="omniview/global-search/open";function pr(t={}){window.dispatchEvent(new CustomEvent(It,{detail:t}))}const bt="omniview/resource/icons";class hr extends w.Component{state={failed:!1,resetToken:this.props.resetToken};static getDerivedStateFromProps(e,s){return e.resetToken!==s.resetToken?{failed:!1,resetToken:e.resetToken}:null}static getDerivedStateFromError(){return{failed:!0}}render(){return this.state.failed?this.props.fallback:this.props.children}}function yr(t,e){try{return t?.schemaVersion!==1||typeof t.resolve!="function"?void 0:t.resolve(e)}catch{return}}function gr(t){const e=j.c(7);let s,n;e[0]!==t?({icon:s,...n}=t,e[0]=t,e[1]=s,e[2]=n):(s=e[1],n=e[2]);const r=n["aria-hidden"]??!0;let o;return e[3]!==s||e[4]!==n||e[5]!==r?(o=A.jsx(s,{...n,"aria-hidden":r}),e[3]=s,e[4]=n,e[5]=r,e[6]=o):o=e[6],o}function mr(t){const e=j.c(16);let s,n,r,o;e[0]!==t?({pluginId:n,resourceKey:o,fallback:s,...r}=t,e[0]=t,e[1]=s,e[2]=n,e[3]=r,e[4]=o):(s=e[1],n=e[2],r=e[3],o=e[4]);const c=lt(bt);let i;e[5]!==s||e[6]!==r?(i=s===void 0?A.jsx("svg",{width:r.size??16,height:r.size??16,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",className:r.className,"aria-hidden":r["aria-hidden"]??!0,children:A.jsx("path",{d:"m12 3 9 5v8l-9 5-9-5V8l9-5Zm0 9 9-4M12 12 3 8m9 4v9"})}):s,e[5]=s,e[6]=r,e[7]=i):i=e[7];const a=i;let d;if(e[8]!==a||e[9]!==n||e[10]!==r||e[11]!==o||e[12]!==c){d=Symbol.for("react.early_return_sentinel");e:for(const f of c?.listAll()??[]){if(f.plugin!==n)continue;const u=yr(f.value,o);if(u){d=A.jsx(hr,{resetToken:f,fallback:a,children:A.jsx(w.Suspense,{fallback:a,children:A.jsx(gr,{icon:u,...r})})},JSON.stringify([n,o,c?.version,f.id]));break e}}e[8]=a,e[9]=n,e[10]=r,e[11]=o,e[12]=c,e[13]=d}else d=e[13];if(d!==Symbol.for("react.early_return_sentinel"))return d;let l;return e[14]!==a?(l=A.jsx(A.Fragment,{children:a}),e[14]=a,e[15]=l):l=e[15],l}exports.ALL_SESSIONS_KEY=ge;exports.BottomDrawerContext=rt;exports.ConfirmationModalContext=ot;exports.ErrorTypes=se;exports.ExtensionPointRegistry=Zt;exports.ExtensionPointStore=ut;exports.ExtensionProvider=Jt;exports.GLOBAL_SEARCH_OPEN_EVENT=It;exports.Link=cr;exports.OperationsContext=Ge;exports.OperationsProvider=Ht;exports.PluginContext=Oe;exports.PluginContextProvider=Qt;exports.PluginErrorCode=Ct;exports.PluginWindow=ur;exports.PluginWindowRootProps=lr;exports.RESOURCE_ICON_EXTENSION_POINT_ID=bt;exports.ResourceIcon=mr;exports.RightDrawerContext=st;exports.SettingsContext=We;exports.SettingsProvider=Kt;exports.SnackbarProvider=tn;exports.WatchState=G;exports.actionToSnackbar=et;exports.applyBatch=mt;exports.connectionListQueryKey=ft;exports.createErrorHandler=ce;exports.defaultState=nt;exports.formatGroup=fr;exports.graphChangedEvent=Et;exports.isCancelledError=ve;exports.openGlobalSearch=pr;exports.parseAppError=de;exports.parseResourceKey=dr;exports.relationshipLabel=tr;exports.resourceQueryKeys=Re;exports.showAppError=ye;exports.toRelatedResources=vt;exports.useActiveSyncs=Vn;exports.useBottomDrawer=Be;exports.useConfirmationModal=Tn;exports.useConnection=nn;exports.useConnectionNamespaces=sn;exports.useConnectionStatus=on;exports.useConnections=rn;exports.useDependencyTree=sr;exports.useEditorSchemas=Hn;exports.useEventBatcher=_t;exports.useExec=_n;exports.useExecuteAction=Bn;exports.useExtensionPoint=lt;exports.useExtensionRegistry=at;exports.useLogs=Sn;exports.useMetricProviders=vn;exports.useMetricProvidersForResource=gt;exports.useMetricStream=bn;exports.useOperations=St;exports.usePluginContext=Pe;exports.usePluginData=gn;exports.usePluginRouter=ar;exports.usePluginSettings=Gt;exports.usePortForwardSessions=wn;exports.useRefetchOnGraphChange=Te;exports.useRelatedResources=rr;exports.useResolvedPluginId=ne;exports.useResource=Nn;exports.useResourceActions=Kn;exports.useResourceAreaComponent=Fn;exports.useResourceGraph=or;exports.useResourceGroups=Ln;exports.useResourceMetrics=Cn;exports.useResourceMutations=Gn;exports.useResourcePortForwarder=Pn;exports.useResourceSearch=$n;exports.useResourceType=Mn;exports.useResourceTypes=kn;exports.useResources=Qn;exports.useRightDrawer=mn;exports.useSettings=ir;exports.useSnackbar=le;exports.useStreamAction=Xn;exports.useWatchState=zn;