@objectstack/console 17.0.0-rc.2 → 17.0.0-rc.3

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 (30) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/dist/assets/{AdapterProvider-CtRy19L4.js → AdapterProvider-Bur-uZKZ.js} +1 -1
  3. package/dist/assets/{ApiConsolePage-CGg1YX-S.js → ApiConsolePage-D0rZy0lx.js} +1 -1
  4. package/dist/assets/{AppDocsIndex-BhbMTMti.js → AppDocsIndex-CQo6tZPY.js} +1 -1
  5. package/dist/assets/{AppManagementPage-H6lFpmYT.js → AppManagementPage-jLhhl_WS.js} +1 -1
  6. package/dist/assets/{ApprovalsInboxPage-CbWL6D_v.js → ApprovalsInboxPage-COyyj1KQ.js} +1 -1
  7. package/dist/assets/{CreateViewDialog-Dt1MUhLX.js → CreateViewDialog-C6sZGaIB.js} +1 -1
  8. package/dist/assets/{DashboardView-OZHG8o0x.js → DashboardView-S5Fshq0v.js} +1 -1
  9. package/dist/assets/{FlowRunsPage-DTUvw7r2.js → FlowRunsPage-DGyj2PBP.js} +1 -1
  10. package/dist/assets/{InterfaceListPage-bZdYVg1W.js → InterfaceListPage-DcFmVgXg.js} +1 -1
  11. package/dist/assets/{MarketplacePackagePage-MX3QKebj.js → MarketplacePackagePage-DZkqNaao.js} +1 -1
  12. package/dist/assets/{MetadataProvider-87BSQkFa.js → MetadataProvider-D9fSVVZp.js} +1 -1
  13. package/dist/assets/{ObjectDataPage-JASSibf6.js → ObjectDataPage-BZ4pf0ji.js} +1 -1
  14. package/dist/assets/{PageView-DwZUXknG.js → PageView-B8qkF17f.js} +1 -1
  15. package/dist/assets/{PublicFormsPage-Cu_VttTH.js → PublicFormsPage-C3z0TH0k.js} +1 -1
  16. package/dist/assets/{RecordFormPage-qcCOHj3T.js → RecordFormPage-CyAjEE1O.js} +1 -1
  17. package/dist/assets/{ReportDefaultInspector-Byof8OYm.js → ReportDefaultInspector-BqgFtk2E.js} +1 -1
  18. package/dist/assets/{ReportView-D91loQjH.js → ReportView-CfQ-Z9TJ.js} +1 -1
  19. package/dist/assets/{SearchResultsPage-Dzm_0iUD.js → SearchResultsPage-Ct2q9Lrf.js} +1 -1
  20. package/dist/assets/{SystemHubPage-B3uHe11N.js → SystemHubPage-BSunYA-X.js} +1 -1
  21. package/dist/assets/{createDerive-DmbuzviK.js → createDerive-CGF05Hgy.js} +1 -1
  22. package/dist/assets/{data-adapter-sj_1S7TJ.js → data-adapter-rnhaIuyx.js} +2 -2
  23. package/dist/assets/{index-rkbFgKQu.js → index-U6sSlA28.js} +1 -1
  24. package/dist/assets/{metadata-admin-DA08xWlg.js → metadata-admin-Ci8bBNxq.js} +1 -1
  25. package/dist/assets/{runtime-metadata-persistence-BsgvioOn.js → runtime-metadata-persistence-BjYxldgR.js} +1 -1
  26. package/dist/assets/{src-D0ueU0ix.js → src-CSrGzA_t.js} +2 -2
  27. package/dist/assets/{src-Chkzn0bG.js → src-DzTCerTm.js} +1 -1
  28. package/dist/assets/{use-book-data-CAZ23DZb.js → use-book-data-D8LHn21q.js} +1 -1
  29. package/dist/index.html +1 -1
  30. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./ui-components-BL3SEdAz.css","./plugin-dashboard-DnNKJB60.css"])))=>i.map(i=>d[i]);
2
- import{o as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{a as n,d as r,f as i,g as a,h as o,m as s,r as c,s as l,y as u}from"./vendor-react-DpRf6e0g.js";import{_ as d,y as f}from"./infrastructure-PXm1h5tB.js";import{S as p,T as m,b as h,d as g,g as _,h as v,l as y,p as b,pt as x,s as S,u as C,x as w}from"./vendor-objectstack-CWf5hLam.js";import{Ct as T,D as E,J as D,N as O,On as k,P as A,Rt as j,St as M,an as ee,bn as te,et as N,in as ne,rn as re,xt as ie}from"./framework-UESyszCj.js";import{$a as ae,$n as P,$o as F,$r as oe,Aa as se,At as ce,Bc as le,Bi as ue,Bo as de,Bs as fe,Cc as pe,Cn as me,Co as he,Cr as I,Da as ge,Di as _e,Ds as ve,Ea as ye,Ec as be,Ei as xe,Eo as Se,Es as Ce,F as we,Ft as Te,Ga as Ee,Gc as L,Gi as De,Go as Oe,Gr as ke,Gs as Ae,Ha as je,Hc as Me,Hi as Ne,Ho as Pe,Hr as Fe,I as Ie,Ia as Le,Ii as Re,Io as ze,Is as Be,It as Ve,Ji as He,Jr as Ue,Ka as We,Ki as Ge,Ko as Ke,Kr as qe,Ks as Je,La as Ye,Lc as Xe,Li as Ze,Ls as Qe,Lt as $e,Mc as et,Mi as tt,Mo as nt,Ms as rt,Mt as it,Na as at,Nc as ot,No as st,Nt as ct,Oa as lt,Oc as ut,Oo as dt,Os as ft,Ot as pt,P as mt,Pa as ht,Pc as gt,Pi as _t,Pt as vt,Qa as yt,Qc as bt,Qi as xt,Qo as St,Ra as Ct,Ri as wt,Ro as Tt,Rs as Et,Rt as Dt,Sa as Ot,Sc as kt,Si as At,Sn as jt,Ss as Mt,Tn as R,To as Nt,Ts as Pt,Uc as Ft,Ui as It,Uo as Lt,Ur as Rt,Va as zt,Vo as Bt,Vr as Vt,Wc as Ht,Wo as Ut,Wr as Wt,Ws as Gt,Xi as Kt,Xo as qt,Xs as Jt,Ya as Yt,Yi as Xt,Yo as Zt,Za as Qt,Zs as $t,_a as en,_c as tn,_n as nn,_o as rn,_s as an,aa as on,ac as sn,ai as cn,an as ln,ao as un,ar as dn,ba as fn,bc as pn,bi as mn,bs as hn,bt as gn,ci as z,cn as _n,cr as vn,cs as yn,ct as bn,da as xn,dc as Sn,di as Cn,dn as wn,do as Tn,dr as En,ds as Dn,dt as On,ec as kn,ei as An,es as jn,fc as Mn,fn as Nn,fo as Pn,fr as Fn,fs as In,ga as Ln,gn as Rn,go as zn,gr as Bn,gs as Vn,ha as B,hc as Hn,hi as Un,hn as Wn,hr as Gn,ht as Kn,ic as qn,ir as Jn,is as Yn,jo as Xn,jt as Zn,ka as Qn,ki as $n,kn as V,kt as er,la as tr,lc as nr,ln as rr,lr as ir,ls as ar,ma as or,mc as sr,mi as cr,mn as lr,mr as ur,ms as dr,nc as fr,no as pr,nr as mr,ns as hr,oa as gr,oi as _r,oo as H,os as vr,ot as yr,pa as br,pc as xr,pn as Sr,po as Cr,pr as wr,ps as Tr,qa as Er,qi as Dr,qo as Or,qr as kr,qs as Ar,ra as jr,ri as Mr,rr as Nr,sc as Pr,si as Fr,sn as Ir,so as Lr,sr as Rr,st as zr,ta as Br,tc as Vr,to as Hr,tr as Ur,uc as Wr,ui as Gr,un as Kr,ur as qr,vc as Jr,vo as Yr,vs as Xr,wa as Zr,wc as Qr,wn as $r,ws as ei,xc as ti,xi as ni,xs as ri,xt as ii,yo as ai,yt as oi,zc as si,zi as ci,zo as li,zr as U,zt as ui}from"./ui-components-BbC0qTrK.js";import{r as di}from"./vendor-ui-utils-CnzHPXVC.js";import"./AdapterProvider-CtRy19L4.js";import"./MetadataProvider-87BSQkFa.js";import{n as fi,o as pi}from"./assistantBus-CpACs9I7.js";import{A as mi,F as hi,K as gi,M as _i,N as vi,W as yi,X as bi,Y as xi,j as Si,k as Ci,q as wi}from"./RecordDetailView-CP1b5rdr.js";import{f as Ti}from"./plugin-chatbot-DmEp7ZGx.js";import{n as Ei}from"./ui-layout-C3eKqnNJ.js";import{t as Di}from"./InterfaceListPage-bZdYVg1W.js";import{t as Oi}from"./getIcon-D3yCrAri.js";import{a as ki,c as Ai,d as ji,h as Mi,i as W,l as Ni,m as Pi,n as Fi,r as G,s as Ii,t as Li,u as Ri}from"./i18n-DBmEJ9U1.js";import{a as zi,i as Bi,n as Vi,o as Hi,r as Ui,s as Wi,t as Gi}from"./createDerive-DmbuzviK.js";import{$ as Ki,A as qi,B as K,C as Ji,D as Yi,E as Xi,F as q,G as Zi,H as J,I as Qi,J as $i,K as ea,L as ta,M as na,N as ra,O as ia,P as aa,Q as oa,R as sa,S as ca,T as la,U as ua,V as da,W as fa,X as pa,Y as ma,Z as ha,_ as ga,a as _a,at as va,b as ya,c as ba,d as xa,et as Sa,f as Ca,g as wa,h as Ta,i as Ea,it as Da,j as Oa,k as ka,l as Aa,m as ja,n as Ma,nt as Na,o as Pa,p as Fa,q as Ia,r as La,rt as Ra,s as za,st as Ba,t as Va,tt as Ha,u as Ua,v as Wa,w as Ga,x as Ka,y as qa,z as Ja}from"./ReportDefaultInspector-Byof8OYm.js";import{n as Ya}from"./plugins-views-CJKuyDvq.js";import{r as Xa}from"./dist-B-Me1R-n.js";var Y=c(),X=e(u(),1);function Za(){let e={BASE_URL:`./`,DEV:!1,MODE:`production`,PROD:!0,SSR:!1,VITE_SENTRY_DSN:`https://1373a588ceb9da150b11e64bf85f583d@o4510356161757184.ingest.us.sentry.io/4511439670673408`,VITE_SENTRY_ENVIRONMENT:`production`,VITE_SENTRY_SEND_DEFAULT_PII:`true`,VITE_SERVER_URL:``,VITE_USE_MOCK_SERVER:`false`},t=e.VITE_AI_BASE_URL;return t?t.replace(/\/$/,``):`${(e.VITE_SERVER_URL??``).replace(/\/$/,``)}/api/v1/ai`}function Qa(){let{agents:e,isLoading:t}=Ti({apiBase:Za()}),n=(0,X.useRef)(!1);t&&(n.current=!0);let r=e.length>0;return{enabled:r,isLoading:r?!1:t||!n.current}}var $a=`flow-palette-recents`,eo=$a,to=5;function no(){try{if(typeof localStorage>`u`)return[];let e=localStorage.getItem(eo);if(!e)return[];let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`string`).slice(0,to):[]}catch{return[]}}function ro(e){if(e)try{if(typeof localStorage>`u`)return;let t=[e,...no().filter(t=>t!==e)].slice(0,to);localStorage.setItem(eo,JSON.stringify(t))}catch{}}var io=$a;function ao(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`).slice(0,5):[]}function oo(e){try{let t=localStorage.getItem(wi(io,e));return t?ao(JSON.parse(t)):[]}catch{return[]}}function so(e,t){try{localStorage.setItem(wi(io,t),JSON.stringify(e))}catch{}}function co(e,t){if(!t)return{list:e,didMigrate:!1};let n;try{n=localStorage.getItem(io)}catch{return{list:e,didMigrate:!1}}if(n==null)return{list:e,didMigrate:!1};let r=[];try{r=ao(JSON.parse(n))}catch{}try{localStorage.removeItem(io)}catch{}if(r.length===0)return{list:e,didMigrate:!0};let i=[...e];for(let e of r)i.includes(e)||i.push(e);return{list:i.slice(0,5),didMigrate:!0}}var lo=(0,X.createContext)(null);function uo({children:e}){let{user:t}=d(),n=t?.id??null,r=bi(`flowPaletteRecents`),[i,a]=(0,X.useState)(()=>oo(n));xi(wi(io,n),e=>{a(ao(e))});let o=(0,X.useMemo)(()=>gi(async e=>{r&&await r.save(e)},500),[r]);(0,X.useEffect)(()=>()=>void o.flush(),[o]);let s=(0,X.useCallback)(e=>{so(e,n),r&&o.schedule(e)},[n,r,o]),c=(0,X.useRef)(0);(0,X.useEffect)(()=>{let e=++c.current,t=!1;return(async()=>{let i=oo(n),s=r?ao(await r.load().catch(()=>[])):[];if(t||e!==c.current)return;let{list:l,didMigrate:u}=co(s.length?s:i,n);a(l),so(l,n),u&&r&&o.schedule(l)})(),()=>{t=!0}},[r,n,o]);let l=(0,X.useCallback)(e=>{e&&a(t=>{let n=[e,...t.filter(t=>t!==e)].slice(0,5);return s(n),n})},[s]),u=(0,X.useMemo)(()=>({recents:i,recordRecent:l}),[i,l]);return(0,Y.jsx)(lo.Provider,{value:u,children:e})}function fo(){let e=(0,X.useContext)(lo),[t,n]=(0,X.useState)(()=>no()),r=(0,X.useCallback)(e=>{ro(e),n(no())},[]);return e||{recents:t,recordRecent:r}}function po(e,t){let n=new Set(t.filter(e=>typeof e==`string`));for(let t=1;t<1e4;t++){let r=`${e}_${t}`;if(!n.has(r))return r}return`${e}_${Date.now()}`}function mo(e,t){if(!t)return!0;let n=t.toLowerCase();return e.value.toLowerCase().includes(n)||e.label.toLowerCase().includes(n)||(e.group?.toLowerCase().includes(n)??!1)}function ho({label:e,value:t,onCommit:n,options:r,placeholder:i=`Select…`,searchPlaceholder:a=`Search or type…`,emptyText:o=`No match — keep typing to use a custom value.`,disabled:s,loading:c,allowCustom:l=!0,mono:u,className:d}){let[f,p]=X.useState(!1),[m,h]=X.useState(``),g=r.find(e=>e.value===t),_=g?g.label:t||(c?`Loading…`:i),v=X.useMemo(()=>r.filter(e=>mo(e,m)),[r,m]),y=X.useMemo(()=>{let e=[],t=new Map;for(let n of v){let r=n.group??``;t.has(r)||(t.set(r,[]),e.push(r)),t.get(r).push(n)}return e.map(e=>({heading:e,items:t.get(e)}))},[v]),b=m.trim(),x=l&&!!b&&!r.some(e=>e.value===b),S=e=>{n(e),p(!1),h(``)},C=(0,Y.jsxs)(jt,{open:f,onOpenChange:e=>{p(e),e||h(``)},children:[(0,Y.jsx)($r,{asChild:!0,children:(0,Y.jsxs)(U,{type:`button`,variant:`outline`,role:`combobox`,"aria-expanded":f,disabled:s,className:L(`h-8 w-full justify-between px-2 text-sm font-normal`,d),children:[(0,Y.jsx)(`span`,{className:L(`truncate`,u&&`font-mono`,!g&&!t&&`text-muted-foreground`),children:_}),(0,Y.jsx)($t,{className:`ml-2 h-3.5 w-3.5 shrink-0 opacity-50`})]})}),(0,Y.jsx)(me,{align:`start`,className:`w-[var(--radix-popover-trigger-width)] min-w-[14rem] p-0`,children:(0,Y.jsxs)(P,{shouldFilter:!1,children:[(0,Y.jsx)(Nr,{value:m,onValueChange:h,placeholder:a}),(0,Y.jsxs)(dn,{children:[!x&&v.length===0&&(0,Y.jsx)(Ur,{children:o}),x&&(0,Y.jsx)(mr,{children:(0,Y.jsx)(Jn,{value:`__custom__${b}`,onSelect:()=>S(b),children:(0,Y.jsxs)(`span`,{className:`truncate`,children:[`Use `,(0,Y.jsxs)(`span`,{className:`font-mono`,children:[`“`,b,`”`]})]})})}),y.map((e,n)=>(0,Y.jsx)(mr,{heading:e.heading||void 0,children:e.items.map(e=>(0,Y.jsxs)(Jn,{value:e.value,onSelect:()=>S(e.value),children:[(0,Y.jsx)(sn,{className:L(`h-3.5 w-3.5`,e.value===t?`opacity-100`:`opacity-0`)}),(0,Y.jsx)(`span`,{className:`truncate font-mono`,children:e.value}),e.label&&e.label!==e.value&&(0,Y.jsx)(`span`,{className:`ml-1 truncate text-muted-foreground`,children:e.label}),e.hint&&(0,Y.jsx)(`span`,{className:`ml-auto pl-2 text-[10px] text-muted-foreground`,children:e.hint})]},e.value))},e.heading||`g${n}`))]})]})})]});return e?(0,Y.jsxs)(`div`,{className:`space-y-1`,children:[(0,Y.jsx)(V,{className:`text-xs text-muted-foreground`,children:e}),C]}):C}var go=[`object`,`page`,`dashboard`,`report`,`url`,`group`],_o=[`default`,`view`,`record`,`filters`],vo={object:{targetKey:`objectName`,metaType:`object`},page:{targetKey:`pageName`,metaType:`page`},dashboard:{targetKey:`dashboardName`,metaType:`dashboard`},report:{targetKey:`reportName`,metaType:`report`},url:{targetKey:`url`},group:{}};function yo(e){return(e.pageType??e.type)!==`record`}var bo=[`objectName`,`viewName`,`recordId`,`recordMode`,`filters`,`pageName`,`dashboardName`,`reportName`,`url`,`target`,`params`],xo=[`path`,`kind`,`href`,`route`,`object`,`page`,`dashboard`,`report`],So={object:`object`,page:`page`,dashboard:`dashboard`,report:`report`,link:`url`,url:`url`,group:`group`};function Co(e){let t=e.type;if(typeof t==`string`&&go.includes(t))return t;let n=e.kind;if(typeof n==`string`&&So[n])return So[n];if(e.objectName||e.object)return`object`;if(e.pageName||e.page)return`page`;if(e.dashboardName||e.dashboard)return`dashboard`;if(e.reportName||e.report)return`report`;if(e.url||e.href)return`url`;if(Array.isArray(e.children)&&e.children.length>0)return`group`;let r=e.path;return typeof r==`string`&&/^https?:/i.test(r)?`url`:null}function wo(e){if(e.recordId)return`record`;let t=e.filters;return t&&typeof t==`object`&&!Array.isArray(t)?`filters`:e.viewName?`view`:`default`}function To(e=[]){let t={};for(let n of[...bo,...xo])e.includes(n)||(t[n]=void 0);return t}var Eo={default:[`objectName`],view:[`objectName`,`viewName`],record:[`objectName`,`recordId`,`recordMode`],filters:[`objectName`,`filters`]};function Do(e,t,n){let r=e.id;if(typeof r==`string`&&r)return r;let i=`nav_${(n??String(e.objectName??e.label??`item`)).toLowerCase().replace(/[^a-z0-9]+/g,`_`).replace(/^_+|_+$/g,``)||`item`}`,a=new Set(t.map(e=>typeof e.id==`string`?e.id:``).filter(Boolean));if(!a.has(i))return i;let o=2;for(;a.has(`${i}_${o}`);)o++;return`${i}_${o}`}var Oo=[`nav`,`navigation`,`tabs`,`items`,`menu`];function ko(e){let t=e.split(`.`),n=[];for(let e of t){let t=/^([a-zA-Z_]\w*)\[(\d+)\]$/.exec(e);if(!t)return null;n.push({key:t[1],index:Number(t[2])})}return n.length>0?n:null}function Ao(e,t){let n=e[t[0].key];if(!Array.isArray(n))return{parent:[],node:null,index:-1};let r=n[t[0].index]??null;for(let e=1;e<t.length;e++){if(!r)return{parent:n,node:null,index:t[e].index};if(n=r[t[e].key],!Array.isArray(n))return{parent:[],node:null,index:-1};r=n[t[e].index]??null}return{parent:n,node:r,index:t[t.length-1].index}}function jo(e,t,n){let r=t[0].key,i=Array.isArray(e[r])?[...e[r]]:[];if(t.length===1)return{[r]:Zi(i,t[0].index,n)};let a=i,o=[];for(let e=0;e<t.length-1;e++){let n={...a[t[e].index]??{}};o.push({arr:a,index:t[e].index,node:n});let r=t[e+1].key,i=Array.isArray(n[r])?[...n[r]]:[];n[r]=i,a[t[e].index]=n,a=i}let s=Zi(a,t[t.length-1].index,n);return o[o.length-1].node[t[t.length-1].key]=s,{[r]:i}}function Mo(e,t,n){let r=t[0].key;if(t.length===1)return{[r]:n};let i=Array.isArray(e[r])?[...e[r]]:[],a=i;for(let e=0;e<t.length-2;e++){let n={...a[t[e].index]??{}},r=t[e+1].key,i=Array.isArray(n[r])?[...n[r]]:[];n[r]=i,a[t[e].index]=n,a=i}let o=t[t.length-2],s=t[t.length-1].key,c={...a[o.index]??{}};return c[s]=n,a[o.index]=c,{[r]:i}}function No(e,t){let n=Hi(),[r,i]=X.useState({options:[],loading:!!e});return X.useEffect(()=>{if(!e){i({options:[],loading:!1});return}let r=!1;return i(e=>({...e,loading:!0})),n.list(e).then(e=>{if(r)return;let n=(Array.isArray(e)?e:[]).filter(e=>e&&typeof e.name==`string`&&e.name).filter(e=>!t||t(e)).map(e=>({value:String(e.name),label:typeof e.label==`string`&&e.label&&e.label!==e.name?`${e.label} (${e.name})`:String(e.name)}));i({options:n,loading:!1})}).catch(()=>{r||i({options:[],loading:!1})}),()=>{r=!0}},[n,e,t]),r}var Po={currentUserId:`{current_user_id}`,currentOrgId:`{current_org_id}`};function Fo({objectName:e,filters:t,onCommit:n,disabled:r,locale:i}){let{fields:a}=ea(e||void 0),o=X.useMemo(()=>a.map(e=>({value:e.name,label:e.label&&e.label!==e.name?`${e.label} (${e.name})`:e.name})),[a]),s=Object.entries(t),c=(e,t,r)=>{let i=s.slice();i[e]=[t,r],n(Object.fromEntries(i.filter(([e])=>e!==``)))},l=e=>{let t=s.slice();t.splice(e,1),n(Object.fromEntries(t))};return(0,Y.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Y.jsx)(`div`,{className:`text-[11px] font-medium text-muted-foreground`,children:G(`engine.inspector.appNav.filters`,i)}),s.map(([e,t],n)=>(0,Y.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,Y.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,Y.jsx)(ho,{value:e,onCommit:e=>c(n,e,t),options:o,placeholder:G(`engine.inspector.appNav.filtersField`,i),disabled:r,mono:!0})}),(0,Y.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`=`}),(0,Y.jsx)(`input`,{value:t,onChange:t=>c(n,e,t.target.value),placeholder:G(`engine.inspector.appNav.filtersValue`,i),disabled:r,className:`h-7 w-0 min-w-0 flex-1 rounded border bg-background px-2 font-mono text-xs`,"data-testid":`nav-filter-value-${e||`new`}`}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>l(n),disabled:r,className:`rounded p-1 text-muted-foreground hover:bg-muted`,"aria-label":G(`engine.inspector.appNav.filtersRemove`,i),"data-testid":`nav-filter-remove-${e||`new`}`,children:(0,Y.jsx)(qe,{className:`h-3 w-3`})})]},`${e}-${n}`)),(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>n({...t,"":``}),disabled:r||Object.prototype.hasOwnProperty.call(t,``),className:`inline-flex items-center gap-1 rounded border px-2 py-1 text-[11px] text-muted-foreground hover:bg-muted`,"data-testid":`nav-filter-add`,children:[(0,Y.jsx)(B,{className:`h-3 w-3`}),G(`engine.inspector.appNav.filtersAdd`,i)]}),(0,Y.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:G(`engine.inspector.appNav.filtersHint`,i)})]})}function Io({selection:e,draft:t,name:n,onPatch:r,onClearSelection:i,onSelectionChange:a,locale:o,readOnly:s}){let c=ko(e.id),{node:l,parent:u,index:d}=c?Ao(t,c):{node:null,parent:[],index:-1},f=l?Co(l):null,p=l?wo(l):`default`,m=String(l?.objectName??l?.object??``),h=No(f===`object`?`object`:void 0),g=f&&f!==`object`?vo[f].metaType:void 0,_=No(g,g===`page`?yo:void 0),v=No(f===`object`&&p===`view`?`view`:void 0),y=X.useMemo(()=>m?v.options.filter(e=>e.value.startsWith(`${m}.`)||!e.value.includes(`.`)):v.options,[v.options,m]);if(!c||!l)return(0,Y.jsx)(da,{kindLabel:G(`engine.inspector.appNav.kind`,o),title:e.label??e.id,onClose:i,closeLabel:G(`engine.inspector.appNav.close`,o),children:(0,Y.jsx)(Qi,{message:e.id})});let b=l.label??l.title??l.name??e.id,x=e=>{let n=e.type??l.type??f??void 0;r(jo(t,c,{...l,id:Do(l,u),...n?{type:n}:{},...e}))},S=e=>{let t=vo[e].targetKey,n=e===`object`?Eo.default:t?[t]:[];x({type:e,...To(n)})},C=e=>{let t=To(Eo[e]);x(e===`filters`?{...t,objectName:m,filters:l.filters??{}}:{...t,objectName:m})},w=()=>{r(jo(t,c,null)),i()},T=e=>{let n=fa(u,d,e);r(Mo(t,c,n));let i=c.slice(0,-1).map(e=>`${e.key}[${e.index}]`).join(`.`),o=c[c.length-1].key,s=i?`${i}.${o}[${e}]`:`${o}[${e}]`;a?.({kind:`nav`,id:s,label:String(b)})},E=f&&f!==`group`?Ei({...l,type:f},`/apps/${n||`app`}`,Po).href:null,D=vo[f??`group`];return(0,Y.jsxs)(da,{kindLabel:G(`engine.inspector.appNav.kind`,o),title:String(b),onClose:i,closeLabel:G(`engine.inspector.appNav.close`,o),headerActions:(0,Y.jsx)(Ja,{index:d,total:u.length,onMove:T,upLabel:G(`engine.inspector.reorder.up`,o),downLabel:G(`engine.inspector.reorder.down`,o),disabled:s}),footer:(0,Y.jsx)(sa,{label:G(`engine.inspector.appNav.remove`,o),onClick:w,disabled:s}),children:[(0,Y.jsx)(J,{label:G(`engine.inspector.appNav.label`,o),value:String(l.label??l.title??l.name??``),onCommit:e=>x({label:e}),disabled:s}),(0,Y.jsx)(J,{label:G(`engine.inspector.appNav.icon`,o),value:String(l.icon??``),onCommit:e=>x({icon:e}),disabled:s}),(0,Y.jsx)(K,{label:G(`engine.inspector.appNav.typeField`,o),value:f??``,options:go.map(e=>({value:e,label:G(`engine.inspector.appNav.type.${e}`,o)})),onCommit:e=>S(e),disabled:s}),f===`object`&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(ho,{label:G(`engine.inspector.appNav.object`,o),value:m,options:h.options,loading:h.loading,onCommit:e=>x({objectName:e,object:void 0}),disabled:s,mono:!0}),(0,Y.jsx)(K,{label:G(`engine.inspector.appNav.targetMode`,o),value:p,options:_o.map(e=>({value:e,label:G(`engine.inspector.appNav.mode.${e}`,o)})),onCommit:e=>C(e),disabled:s||!m}),p===`view`&&(0,Y.jsx)(ho,{label:G(`engine.inspector.appNav.view`,o),value:String(l.viewName??``),options:y,loading:v.loading,onCommit:e=>x({viewName:e}),disabled:s,mono:!0}),p===`record`&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(J,{label:G(`engine.inspector.appNav.recordId`,o),value:String(l.recordId??``),onCommit:e=>x({recordId:e}),disabled:s,mono:!0}),(0,Y.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:G(`engine.inspector.appNav.recordIdHint`,o)}),(0,Y.jsx)(K,{label:G(`engine.inspector.appNav.recordMode`,o),value:String(l.recordMode??`view`),options:[{value:`view`,label:G(`engine.inspector.appNav.recordModeView`,o)},{value:`edit`,label:G(`engine.inspector.appNav.recordModeEdit`,o)}],onCommit:e=>x({recordMode:e}),disabled:s})]}),p===`filters`&&(0,Y.jsx)(Fo,{objectName:m,filters:l.filters??{},onCommit:e=>x({filters:e}),disabled:s,locale:o})]}),f&&f!==`object`&&f!==`group`&&D.targetKey&&(D.metaType?(0,Y.jsx)(ho,{label:G(`engine.inspector.appNav.type.${f}`,o),value:String(l[D.targetKey]??``),options:_.options,loading:_.loading,onCommit:e=>x({[D.targetKey]:e}),disabled:s,mono:!0}):(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(J,{label:G(`engine.inspector.appNav.url`,o),value:String(l.url??l.href??``),onCommit:e=>x({url:e,href:void 0}),disabled:s,mono:!0}),(0,Y.jsx)(K,{label:G(`engine.inspector.appNav.urlTarget`,o),value:String(l.target??`_self`),options:[{value:`_self`,label:G(`engine.inspector.appNav.urlTargetSelf`,o)},{value:`_blank`,label:G(`engine.inspector.appNav.urlTargetBlank`,o)}],onCommit:e=>x({target:e}),disabled:s})]})),E&&(0,Y.jsxs)(`div`,{className:`rounded border bg-muted/30 px-2 py-1.5`,"data-testid":`nav-target-preview`,children:[(0,Y.jsx)(`div`,{className:`text-[10px] font-medium uppercase tracking-wide text-muted-foreground`,children:G(`engine.inspector.appNav.preview`,o)}),(0,Y.jsx)(`div`,{className:`break-all font-mono text-[11px]`,children:E})]})]})}var Lo=Oo;function Ro(e){if(!e||!e.startsWith(`nav:`))return null;let t=e.slice(4);return t.length>0?t:null}function zo(e){return`nav:${e}`}var Bo=`surface`;function Vo(e){return`${e.type}:${e.name}`}function Ho(e){if(!e)return null;let t=e.indexOf(`:`);if(t<=0)return null;let n=e.slice(0,t),r=e.slice(t+1);return n&&r?{type:n,name:r}:null}function Uo(e,t){let n=(e,r)=>{for(let i=0;i<e.length;i++){let a=e[i];if(!a||typeof a!=`object`)continue;let o=`${r}[${i}]`;if(a.id===t){let e=a.label??a.title??a.name;return{selectionId:o,label:typeof e==`string`?e:void 0}}if(Array.isArray(a.children)){let e=n(a.children,`${o}.children`);if(e)return e}}return null};for(let t of Lo){let r=e[t];if(!Array.isArray(r))continue;let i=n(r,t);if(i)return i}return null}function Wo(e,t){let n=t.split(`.`),r;for(let t=0;t<n.length;t++){let i=/^([a-zA-Z_]\w*)\[(\d+)\]$/.exec(n[t]);if(!i)return null;let a=i[1],o=Number(i[2]),s=t===0?e[a]:r?.[a];if(!Array.isArray(s)||(r=s[o],!r||typeof r!=`object`))return null}return typeof r?.id==`string`&&r.id?r.id:null}var Go=new Set([`lookup`,`master_detail`,`masterdetail`,`master-detail`]);function Ko(e,t){if(typeof e==`string`&&e)return e;if(e&&typeof e==`object`){let t=e.default;if(typeof t==`string`&&t)return t}return t}function qo(e){let t=e.reference??e.reference_to??e.referenceTo??e.reference_to_object;if(typeof t==`string`&&t)return t;if(Array.isArray(t)&&typeof t[0]==`string`)return t[0];if(t&&typeof t==`object`){let e=t.object;if(typeof e==`string`&&e)return e}}function Jo(e){switch(e){case`lookup`:case`master_detail`:case`masterDetail`:case`master-detail`:return`lookup`;case`date`:case`datetime`:case`time`:return`date`;case`number`:case`currency`:case`percent`:case`int`:case`integer`:case`float`:case`double`:case`autonumber`:return`number`;case`boolean`:case`toggle`:return`boolean`;default:return`string`}}function Yo(e,t){if(!e)return{label:t,fields:[],relationships:[]};let n=Ko(e.label,t),r=Sa(e.fields).entries.map(e=>({name:e.name,label:Ko(e.def.label,e.name),type:typeof e.def.type==`string`?e.def.type:void 0,def:e.def}));return{label:n,fields:r,relationships:r.filter(e=>e.type&&Go.has(e.type.toLowerCase())).map(e=>({name:e.name,label:e.label,referenceTo:qo(e.def)}))}}function Xo(e,t,n){let r=e,i=[];for(let e of t.split(`.`)){let t=r.relationships.find(t=>t.name===e);if(!t?.referenceTo)return;let a=n[t.referenceTo];if(!a)return;i.push(t.label),r=a}return{target:r,labels:i}}function Zo(e,t,n){let r=e.fields.map(t=>({value:t.name,label:t.label,type:t.type,group:e.label}));for(let i of t){let t=Xo(e,i,n);if(!t)continue;let a=[...t.labels,t.target.label].join(` → `);for(let e of t.target.fields)r.push({value:`${i}.${e.name}`,label:e.label,type:e.type,group:a})}return r}function Qo(e,t){if(!e||typeof e!=`object`)return!1;if(Array.isArray(e))return e.some(e=>Qo(e,t));let n=e;return typeof n.dataset==`string`&&n.dataset===t||Object.values(n).some(e=>e&&typeof e==`object`&&Qo(e,t))}function $o(){let e=Hi(),[t,n]=X.useState({options:[],loading:!0});return X.useEffect(()=>{let t=!1;return n(e=>({...e,loading:!0})),e.list(`object`).then(e=>{if(t)return;let r=(Array.isArray(e)?e:[]).map(e=>({name:typeof e.name==`string`?e.name:``,label:Ko(e.label,typeof e.name==`string`?e.name:``)})).filter(e=>!!e.name).sort((e,t)=>e.label.localeCompare(t.label));n({options:r,loading:!1})}).catch(()=>{t||n({options:[],loading:!1})}),()=>{t=!0}},[e]),t}function es(e,t){let n=Hi(),r=t.join(`\0`),[i,a]=X.useState({relationships:[],fieldOptions:[],loading:!!e});return X.useEffect(()=>{if(!e){a({relationships:[],fieldOptions:[],loading:!1});return}let t=!1;return a(e=>({...e,loading:!0})),(async()=>{try{let i=await n.get(`object`,e);if(t)return;let o=Yo(i,e),s=r?r.split(`\0`):[],c={[e]:o},l=async e=>{if(c[e])return c[e];let t;try{t=Yo(await n.get(`object`,e),e)}catch{t=Yo(null,e)}return c[e]=t,t};for(let e of s){let t=o;for(let n of e.split(`.`)){let e=t.relationships.find(e=>e.name===n);if(!e?.referenceTo)break;t=await l(e.referenceTo)}}if(t)return;let u=[...o.relationships];for(let e of s){if(e.split(`.`).length>=3)continue;let t=Xo(o,e,c);if(t)for(let n of t.target.relationships)u.push({name:`${e}.${n.name}`,label:`${e}.${n.name}`,referenceTo:n.referenceTo})}a({relationships:u,fieldOptions:Zo(o,s,c),loading:!1})}catch{t||a({relationships:[],fieldOptions:[],loading:!1})}})(),()=>{t=!0}},[n,e,r]),i}function ts(e){let t=Hi(),[n,r]=X.useState({reports:0,dashboards:0,loading:!!e});return X.useEffect(()=>{if(!e){r({reports:0,dashboards:0,loading:!1});return}let n=!1;return r(e=>({...e,loading:!0})),(async()=>{let[i,a]=await Promise.all([t.list(`report`).catch(()=>[]),t.list(`dashboard`).catch(()=>[])]);n||r({reports:(Array.isArray(i)?i:[]).filter(t=>Qo(t,e)).length,dashboards:(Array.isArray(a)?a:[]).filter(t=>Qo(t,e)).length,loading:!1})})(),()=>{n=!0}},[t,e]),n}function ns(e,t){if(typeof e==`string`)return e||`col ${t+1}`;if(e&&typeof e==`object`){let n=e;return String(n.label??n.header??n.field??n.accessorKey??`col ${t+1}`)}return`col ${t+1}`}function rs(e){if(typeof e==`string`)return e||void 0;if(e&&typeof e==`object`){let t=e,n=t.field??t.accessorKey;return typeof n==`string`&&n?n:void 0}}function is(e){let t=new Set;for(let n of e){let e=rs(n);e&&t.add(e)}return t}function as(e,t,n){if(e)return t;let r={field:t};return n&&n!==t&&(r.label=n),r}function os(e,t){return e===t?null:e>t?e-1:e}function ss(e,t,n){if(e===t)return n;let r=e;return t<r&&--r,n<=r&&(r+=1),r}function cs({variantKey:e,schema:t,columns:n,allStrings:r,objectName:i,objectFieldsOverride:a,selectedIndex:o,readOnly:s,onPatch:c,onSelectionChange:l}){let u=!s,{fields:d,loading:f,error:p}=ea(i||void 0,a),m=X.useMemo(()=>{let e=new Map;for(let t of d)e.set(t.name,t.type);return e},[d]),[h,g]=X.useState(null),[_,v]=X.useState(null),y=X.useCallback(n=>{c({[e]:{...t,columns:n}})},[c,e,t]),b=X.useCallback(t=>{let i=as(r,t.name,t.label),a=ua(n,i);y(a),l?.({kind:`column`,id:`${e}.columns[${a.length-1}]`,label:t.label})},[r,n,y,e,l]),x=X.useCallback(t=>{let r=Zi(n,t,null);if(y(r),o!=null){let n=os(o,t);n==null?l?.(null):l?.({kind:`column`,id:`${e}.columns[${n}]`,label:ns(r[n],n)})}},[n,y,o,e,l]),S=X.useCallback((t,r)=>{if(t===r)return;let i=fa(n,t,r);if(y(i),o!=null){let n=ss(o,t,r);l?.({kind:`column`,id:`${e}.columns[${n}]`,label:ns(i[n],n)})}},[n,y,o,e,l]),C=X.useCallback(t=>{l?.({kind:`column`,id:`${e}.columns[${t}]`,label:ns(n[t],t)})},[n,e,l]),w=is(n);return(0,Y.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Y.jsx)(V,{className:`text-xs text-muted-foreground`,children:`Columns`}),(0,Y.jsx)(I,{variant:`outline`,className:`text-[10px]`,children:n.length})]}),n.length===0?(0,Y.jsx)(`p`,{className:`rounded-md border border-dashed bg-muted/30 px-3 py-3 text-center text-[11px] text-muted-foreground`,children:`No columns yet. Add a field below.`}):(0,Y.jsx)(`div`,{className:`space-y-1`,children:n.map((e,t)=>(0,Y.jsx)(za,{index:t,label:ns(e,t),fieldName:rs(e),fieldType:m.get(rs(e)??``)??`text`,selected:o===t,canEdit:u,dragging:h!==null,dropBefore:_===t&&h!==null&&h!==t,onSelect:()=>C(t),onRemove:()=>x(t),onDragStart:()=>g(t),onDragEnd:()=>{g(null),v(null)},onDragOverRow:()=>v(t),onDropRow:()=>{h!=null&&h!==t&&S(h,t),g(null),v(null)}},t))}),u&&(0,Y.jsx)(Pa,{fields:d,usedNames:w,loading:f,error:p,onAdd:b})]})}var ls=[`record`,`current_user`,`user`,`features`,`app`,`data`,`ctx`];function us(e){if(e==null)return`null`;let t=typeof e;return t===`string`?JSON.stringify(e):t===`number`||t===`boolean`?String(e):Array.isArray(e)?`[${e.map(us).join(`, `)}]`:JSON.stringify(String(e))}function ds(e){if(!e.field||!e.operator)return``;let t=`record[${JSON.stringify(e.field)}]`;switch(e.operator){case`equals`:return`${t} == ${us(e.value)}`;case`not_equals`:return`${t} != ${us(e.value)}`;case`greater_than`:return`${t} > ${us(e.value)}`;case`less_than`:return`${t} < ${us(e.value)}`;case`contains`:return`${t}.contains(${us(e.value)})`;case`in`:return`${t} in ${us(Array.isArray(e.value)?e.value:[e.value])}`;default:return``}}function fs(e){return typeof e.condition==`string`?e.condition:e.condition&&typeof e.condition==`object`&&typeof e.condition.source==`string`?e.condition.source:typeof e.expression==`string`?e.expression:ds(e)}function ps(e){let t=fs(e),n={};if(e.style&&typeof e.style==`object`)for(let[t,r]of Object.entries(e.style))r!=null&&(n[t]=String(r));return e.backgroundColor&&(n.backgroundColor=String(e.backgroundColor)),e.textColor&&(n.color=String(e.textColor)),e.borderColor&&(n.borderColor=String(e.borderColor)),{condition:t,style:n}}function ms({label:e,value:t,onChange:n,disabled:r}){return(0,Y.jsxs)(`label`,{className:`flex flex-col gap-1`,children:[(0,Y.jsx)(`span`,{className:`text-[10px] font-medium uppercase tracking-wide text-muted-foreground`,children:e}),(0,Y.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,Y.jsx)(`input`,{type:`color`,value:/^#([0-9a-f]{6})$/i.test(t)?t:`#000000`,disabled:r,onChange:e=>n(e.target.value),className:`h-7 w-8 shrink-0 rounded border border-input bg-background p-0.5 disabled:opacity-60`,"aria-label":e}),(0,Y.jsx)(R,{value:t,placeholder:`#RRGGBB`,disabled:r,onChange:e=>n(e.target.value),className:`h-7 text-xs font-mono`})]})]})}function hs({rules:e,onChange:t,objectName:n,fieldNames:r,disabled:i,t:a}){let o=X.useMemo(()=>Array.isArray(e)?e.map(ps):[],[e]),s=e=>t(e),c=(e,t)=>{let n=o.map((n,r)=>r===e?{...n,...t}:n);s(n)},l=(e,t,n)=>{let r={...o[e].style};n?r[t]=n:delete r[t],c(e,{style:r})},u=()=>s([...o,{condition:``,style:{}}]),d=e=>s(o.filter((t,n)=>n!==e)),f=(e,t)=>{let n=e+t;if(n<0||n>=o.length)return;let r=o.slice();[r[e],r[n]]=[r[n],r[e]],s(r)};return(0,Y.jsxs)(`div`,{className:`space-y-2`,"data-testid":`cf-editor`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Y.jsx)(`span`,{className:`text-[11px] font-semibold uppercase tracking-wide text-muted-foreground`,children:a(`engine.inspector.view.cf.title`)}),(0,Y.jsxs)(U,{type:`button`,size:`sm`,variant:`ghost`,className:`h-6 px-2 text-xs`,disabled:i,onClick:u,"data-testid":`cf-add`,children:[(0,Y.jsx)(B,{className:`mr-1 h-3.5 w-3.5`}),a(`engine.inspector.view.cf.add`)]})]}),o.length===0&&(0,Y.jsx)(`p`,{className:`text-[11px] italic text-muted-foreground`,children:a(`engine.inspector.view.cf.empty`)}),o.map((e,t)=>(0,Y.jsxs)(`div`,{className:`rounded-md border border-border p-2 space-y-2`,"data-testid":`cf-rule-${t}`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Y.jsxs)(`span`,{className:`text-[10px] font-medium uppercase tracking-wide text-muted-foreground`,children:[a(`engine.inspector.view.cf.rule`),` `,t+1]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-0.5`,children:[(0,Y.jsx)(U,{type:`button`,size:`icon`,variant:`ghost`,className:`h-6 w-6`,disabled:i||t===0,onClick:()=>f(t,-1),"aria-label":a(`engine.inspector.view.cf.moveUp`),"data-testid":`cf-up-${t}`,children:(0,Y.jsx)(Vr,{className:`h-3.5 w-3.5`})}),(0,Y.jsx)(U,{type:`button`,size:`icon`,variant:`ghost`,className:`h-6 w-6`,disabled:i||t===o.length-1,onClick:()=>f(t,1),"aria-label":a(`engine.inspector.view.cf.moveDown`),"data-testid":`cf-down-${t}`,children:(0,Y.jsx)(qn,{className:`h-3.5 w-3.5`})}),(0,Y.jsx)(U,{type:`button`,size:`icon`,variant:`ghost`,className:`h-6 w-6 text-destructive hover:text-destructive`,disabled:i,onClick:()=>d(t),"aria-label":a(`engine.inspector.view.cf.remove`),"data-testid":`cf-remove-${t}`,children:(0,Y.jsx)(Cn,{className:`h-3.5 w-3.5`})})]})]}),(0,Y.jsx)(Oa,{label:a(`engine.inspector.view.cf.when`),value:e.condition,disabled:i,placeholder:`record.status == 'overdue'`,objectName:n,fieldNames:r,scope:`flattened`,roots:ls,onChange:e=>c(t,{condition:e}),t:a,id:`cf-condition-${t}`}),(0,Y.jsxs)(`div`,{className:L(`grid gap-2 sm:grid-cols-3`),children:[(0,Y.jsx)(ms,{label:a(`engine.inspector.view.cf.background`),value:e.style.backgroundColor??``,disabled:i,onChange:e=>l(t,`backgroundColor`,e)}),(0,Y.jsx)(ms,{label:a(`engine.inspector.view.cf.text`),value:e.style.color??``,disabled:i,onChange:e=>l(t,`color`,e)}),(0,Y.jsx)(ms,{label:a(`engine.inspector.view.cf.border`),value:e.style.borderColor??``,disabled:i,onChange:e=>l(t,`borderColor`,e)})]}),(0,Y.jsx)(`div`,{className:`rounded border border-dashed border-border px-2 py-1 text-xs`,style:e.style,"data-testid":`cf-preview-${t}`,children:a(`engine.inspector.view.cf.preview`)})]},t))]})}var gs={io:`input`,unrepresentable:`any`},_s=new Set([`columns`,`data`,`name`]),vs,ys=!1;function bs(){if(vs||ys)return vs;try{vs=x(h,gs)}catch(e){ys=!0,typeof console<`u`&&console.warn(`[view-schema] failed to derive View JSONSchema from spec`,e)}return vs}function xs(){return bs()?.properties?.list}function Ss(){return bs()?.properties?.form}var Cs,ws=!1;function Ts(){if(Cs||ws)return Cs;try{Cs=x(v,gs)}catch(e){ws=!0,typeof console<`u`&&console.warn(`[view-schema] failed to derive ListColumn JSONSchema from spec`,e)}return Cs}var Es;function Ds(){if(Es)return Es;if(!(!m||typeof m!=`object`)){try{let e=JSON.parse(JSON.stringify(m));for(let t of e.sections??[])t.fields=(t.fields??[]).filter(e=>{let t=typeof e==`string`?e:e?.field;return!_s.has(t)});e.sections=(e.sections??[]).filter(e=>(e.fields??[]).length>0),Es=e}catch(e){typeof console<`u`&&console.warn(`[view-schema] failed to prepare viewForm from spec`,e);return}return Es}}var Os=new Set([`form`,`detail`]);function ks(e){return Os.has(e)}function As(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function js(e,t){return typeof e==`string`&&Os.has(e)?e:typeof e==`string`&&e?`list`:typeof t==`string`&&Os.has(t)?`form`:`list`}function Ms(e){let t=e.config;return As(t)?[{storeKey:`config`,familyKey:js(e.viewKind,t.type),schema:t}]:[]}function Ns(e){return Ms(e)[0]}function Ps(e,t){return Ns(e)}function Fs({label:e,value:t,onCommit:n,placeholder:r,disabled:i}){let{options:a,loading:o}=$o();return(0,Y.jsx)(ho,{label:e,value:t,onCommit:n,options:a.map(e=>({value:e.name,label:e.label})),loading:o,placeholder:r,searchPlaceholder:`Search objects…`,disabled:i,mono:!0})}var Is=new Set([`type`,`object`,`label`,`columns`,`conditionalFormatting`]),Ls={grid:`Table / List`,kanban:`Kanban`,calendar:`Calendar`,gallery:`Gallery`,gantt:`Gantt`,timeline:`Timeline`,map:`Map`,chart:`Chart`};function Rs(e,t){let n=`engine.inspector.view.type.${e}`,r=G(n,t);return r===n?Ls[e]??e:r}var zs=[`columns`,`data`,`name`];function Bs(e,t){let n=e.data;return n&&typeof n==`object`&&typeof n.object==`string`&&n.object?{value:n.object,path:`data.object`}:typeof e.object==`string`&&e.object?{value:e.object,path:`object`}:typeof t.object==`string`&&t.object?{value:t.object,path:`top`}:{value:``,path:`top`}}function Vs(e,t){return X.useMemo(()=>{let n=xs()?.properties?.type?.enum,r=(Array.isArray(n)&&n.length?n.filter(e=>typeof e==`string`):[`grid`,`kanban`,`calendar`,`gallery`,`gantt`,`timeline`]).map(e=>({value:e,label:Rs(e,t)}));return!r.some(t=>t.value===e)&&e&&r.push({value:e,label:Rs(e,t)}),r},[e,t])}function Hs({draft:e,variantKey:t,familyKey:n,isHome:r,onPatch:i,readOnly:a,onClearSelection:o,onSelectionChange:s,objectFieldsOverride:c,locale:l,serverSchema:u}){let d=e[t]??{},f=ks(n??t),p=typeof d.type==`string`?d.type:`grid`,m=Vs(p,l),h=Bs(d,e),g=typeof e.label==`string`&&e.label||(typeof d.label==`string`?d.label:``)||``,_=Array.isArray(d.columns)?d.columns:[],v=_.length>0&&_.every(e=>typeof e==`string`),{fields:y}=ea(h.value||void 0,c),b=X.useCallback(e=>G(e,l),[l]),x=X.useMemo(()=>y.map(e=>e.name),[y]),S=Array.isArray(d.conditionalFormatting)?d.conditionalFormatting:[],C=X.useMemo(()=>({objectFields:y.map(e=>({name:e.name,label:e.label,type:e.type}))}),[y]),w=(()=>{let e=u?.properties;return f?e?.form:e?.list})(),{schema:T,form:E}=X.useMemo(()=>_a({bundledSchema:f?Ss():xs(),bundledForm:f?void 0:Ds(),serverSchema:w,excludeFields:Is,sectionTitle:G(`engine.inspector.moreFields`,l)}),[f,w,l]),D=e=>{i({[t]:{...d,...e}})};return(0,Y.jsxs)(da,{kindLabel:G(`engine.inspector.view.kind`,l),title:String(g||e.name||t),onClose:()=>o?.(),closeLabel:G(`engine.inspector.view.close`,l),hideClose:r,children:[(0,Y.jsx)(J,{label:G(`engine.inspector.view.label`,l),value:g,onCommit:e=>{i({label:e,[t]:{...d,label:e}})},placeholder:G(`engine.inspector.view.labelPlaceholder`,l),disabled:a}),(0,Y.jsx)(K,{label:G(`engine.inspector.view.type`,l),value:p,options:m,onCommit:e=>D({type:e}),disabled:a}),(0,Y.jsx)(Fs,{label:G(`engine.inspector.view.object`,l),value:h.value,onCommit:e=>{let n={object:e};d.data&&typeof d.data==`object`?n[t]={...d,data:{...d.data,object:e}}:h.path===`object`&&(n[t]={...d,object:e}),i(n)},placeholder:G(`engine.inspector.view.objectPlaceholder`,l),disabled:a}),!f&&(0,Y.jsx)(`div`,{className:`border-t pt-3`,children:(0,Y.jsx)(cs,{variantKey:t,schema:d,columns:_,allStrings:v,objectName:h.value||void 0,objectFieldsOverride:c,selectedIndex:null,readOnly:a,onPatch:i,onSelectionChange:s})}),!f&&(0,Y.jsx)(`div`,{className:`border-t pt-3`,children:(0,Y.jsx)(hs,{rules:S,objectName:h.value||void 0,fieldNames:x,disabled:a,t:b,onChange:e=>D({conditionalFormatting:e.length>0?e:void 0})})}),(0,Y.jsx)(`div`,{className:`border-t pt-3`,children:T?(0,Y.jsx)(xa,{schema:T,form:E,value:d,hiddenFields:[`type`,`object`,`label`],readOnly:a,widgetContext:C,onChange:e=>{let n={...e};for(let e of zs)e in d?n[e]=d[e]:delete n[e];i({[t]:n})}}):(0,Y.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:G(`engine.inspector.view.noSchema`,l)})})]})}function Us({appSlug:e}={}){let t=i(),n=Hi(),{entries:r}=Wi(n),[a,o]=X.useState(!1),[s,c]=X.useState(``),[l,u]=X.useState(null),[d,f]=X.useState(!1),[p,m]=X.useState(0),h=Mi();X.useEffect(()=>{function e(e){(e.metaKey||e.ctrlKey)&&e.shiftKey&&e.key.toLowerCase()===`m`&&(e.preventDefault(),o(e=>!e))}return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[]),X.useEffect(()=>{if(!a||l!=null||d||r.length===0)return;f(!0);let e=!1;return(async()=>{try{let t=[];await Promise.all(r.map(async e=>{try{let r=await n.list(e.type);for(let n of r??[]){let r=(n&&typeof n==`object`&&`item`in n?n.item:n)??{},i=r?.name;i&&t.push({kind:`item`,type:e.type,name:String(i),label:r?.label,description:r?.description,lock:typeof r?._lock==`string`?r._lock:void 0,lockReason:typeof r?._lockReason==`string`?r._lockReason:void 0})}}catch{}})),e||u(t)}finally{e||f(!1)}})(),()=>{e=!0}},[a,l,d,r,n]);let g=X.useMemo(()=>{let e=s.trim().toLowerCase();if(!e)return r.slice(0,20).map(e=>({kind:`type`,entry:e}));let t=r.filter(t=>t.type.toLowerCase().includes(e)||(t.label??``).toLowerCase().includes(e)||Ni(t.type,h,t.label).toLowerCase().includes(e)||(t.description??``).toLowerCase().includes(e)).slice(0,8).map(e=>({kind:`type`,entry:e})),n=(l??[]).filter(t=>t.name.toLowerCase().includes(e)||(t.label??``).toLowerCase().includes(e)||(t.description??``).toLowerCase().includes(e)||t.type.toLowerCase().includes(e)).slice(0,40);return[...t,...n]},[s,r,l]);X.useEffect(()=>{m(0)},[s,a]);function _(n){o(!1);let r=e?`/apps/${e}`:`..`;n.kind===`type`?t(`${r}/metadata/${encodeURIComponent(n.entry.type)}`):t(`${r}/metadata/${encodeURIComponent(n.type)}/${encodeURIComponent(n.name)}`)}function v(e){e.key===`ArrowDown`?(e.preventDefault(),m(e=>Math.min(e+1,g.length-1))):e.key===`ArrowUp`?(e.preventDefault(),m(e=>Math.max(e-1,0))):e.key===`Enter`&&g[p]&&(e.preventDefault(),_(g[p]))}return(0,Y.jsx)(Rr,{open:a,onOpenChange:o,children:(0,Y.jsxs)(vn,{className:`max-w-2xl p-0 overflow-hidden`,children:[(0,Y.jsx)(En,{className:`sr-only`,children:(0,Y.jsx)(Fn,{children:G(`engine.quickfind.title`,h)})}),(0,Y.jsxs)(`div`,{className:`border-b px-3 py-2 flex items-center gap-2`,children:[(0,Y.jsx)(He,{className:`h-4 w-4 text-muted-foreground`}),(0,Y.jsx)(R,{autoFocus:!0,placeholder:G(`engine.quickfind.placeholder`,h),value:s,onChange:e=>c(e.target.value),onKeyDown:v,className:`border-0 shadow-none focus-visible:ring-0 px-0`}),(0,Y.jsx)(yr,{children:`esc`})]}),(0,Y.jsxs)(`div`,{className:`max-h-[440px] overflow-auto`,children:[d&&(0,Y.jsxs)(`div`,{className:`px-3 py-4 text-xs text-muted-foreground flex items-center gap-2`,children:[(0,Y.jsx)(H,{className:`h-3.5 w-3.5 animate-spin`}),G(`engine.quickfind.indexing`,h),` `,r.length,`…`]}),!d&&g.length===0&&(0,Y.jsx)(`div`,{className:`px-3 py-6 text-xs text-muted-foreground text-center`,children:G(`engine.quickfind.noMatches`,h)}),(0,Y.jsx)(`ul`,{role:`listbox`,children:g.map((e,t)=>(0,Y.jsx)(`li`,{children:(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>_(e),onMouseEnter:()=>m(t),className:`w-full text-left px-3 py-2 flex items-center gap-3 hover:bg-accent `+(t===p?`bg-accent`:``),children:[(0,Y.jsx)(I,{variant:`outline`,className:`text-[10px] font-mono shrink-0`,children:e.kind===`type`?`type`:e.type}),(0,Y.jsx)(`div`,{className:`min-w-0 flex-1`,children:e.kind===`type`?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`div`,{className:`text-sm font-medium truncate`,children:Ni(e.entry.type,h,e.entry.label)}),e.entry.description&&(0,Y.jsx)(`div`,{className:`text-xs text-muted-foreground truncate`,children:e.entry.description})]}):(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`div`,{className:`text-sm font-mono truncate flex items-center gap-1.5`,children:[e.lock&&e.lock!==`none`&&(0,Y.jsx)(`span`,{className:`text-amber-600 dark:text-amber-400 shrink-0`,title:e.lockReason??`_lock=${e.lock}`,"aria-label":`locked`,children:(0,Y.jsx)(un,{className:`h-3 w-3`})}),e.name,e.label&&(0,Y.jsx)(`span`,{className:`text-muted-foreground font-sans ml-2`,children:e.label})]}),e.description&&(0,Y.jsx)(`div`,{className:`text-xs text-muted-foreground truncate`,children:e.description})]})})]})},e.kind===`type`?`t:${e.entry.type}`:`i:${e.type}:${e.name}`))})]}),(0,Y.jsxs)(`div`,{className:`border-t px-3 py-1.5 flex items-center gap-3 text-[10px] text-muted-foreground`,children:[(0,Y.jsxs)(`span`,{children:[(0,Y.jsx)(yr,{children:`↑`}),` `,(0,Y.jsx)(yr,{children:`↓`}),` navigate`]}),(0,Y.jsxs)(`span`,{children:[(0,Y.jsx)(yr,{children:`↵`}),` open`]}),(0,Y.jsxs)(`span`,{className:`ml-auto`,children:[(0,Y.jsx)(yr,{children:`⌘`}),(0,Y.jsx)(yr,{children:`⇧`}),(0,Y.jsx)(yr,{children:`M`}),` toggle`]})]})]})})}var Ws=new Set([`system`,`cloud`]);function Gs(e){let t=(e??[]).map(e=>{let t=e&&typeof e==`object`&&`item`in e?e.item:e,n=t?.manifest??t??{};return{id:n.id,scope:n.scope,name:n.name||n.id}}).filter(e=>e.id&&!Ws.has(e.scope));return t.sort((e,t)=>e.name.localeCompare(t.name)),t.map(e=>({id:e.id,name:e.name}))}var Ks={data:ri,ui:Yr,automation:Ue,ai:_t,system:De,platform:De,identity:Ne,security:Ne},qs=[`data`,`ui`,`automation`,`ai`,`identity`,`security`,`system`,`platform`,`other`],Js=new Set([`field`,`package`]);function Ys(){let e=Hi(),{loading:t,error:r,entries:i}=Wi(e),a=Mi(),[s,c]=X.useState(``),[l,u]=X.useState(`all`),[d,f]=X.useState(!1),[p,m]=o(),[h,g]=X.useState(null);X.useEffect(()=>{let t=!1;return(async()=>{try{let n=await e.list(`package`);if(t)return;g(Gs(n))}catch{t||g([])}})(),()=>{t=!0}},[e]);let _=p.get(`package`),v=X.useMemo(()=>h?_&&h.some(e=>e.id===_)?_:h[0]?.id??null:null,[h,_]);X.useEffect(()=>{if(!h||h.length===0||_&&h.some(e=>e.id===_))return;let e=new URLSearchParams(p);e.set(`package`,h[0].id),m(e,{replace:!0})},[h,_]);let{byType:y,warnByType:b,summary:x,countsByType:S,lockedByType:C,packagesByType:w,loading:T}=zi(e,`warning`,v??void 0),E=X.useMemo(()=>i.filter(e=>Js.has(e.type)||!v?!1:(w[e.type]??[]).includes(v)),[i,v,w]),D=X.useMemo(()=>{let e={all:E.length};for(let t of E){let n=t.domain??`other`;e[n]=(e[n]??0)+1}return e},[E]),O=E.filter(e=>e.allowOrgOverride||e.allowRuntimeCreate).length,k=E.filter(e=>{if(d&&!(e.allowOrgOverride||e.allowRuntimeCreate)||l!==`all`&&(e.domain??`other`)!==l)return!1;if(s){let t=s.toLowerCase();if(!(e.type.toLowerCase().includes(t)||(e.label??``).toLowerCase().includes(t)||Ni(e.type,a,e.label).toLowerCase().includes(t)||(e.description??``).toLowerCase().includes(t)))return!1}return!0}),A=X.useMemo(()=>{let e={};for(let t of k)(e[t.domain??`other`]??=[]).push(t);return Object.entries(e).sort(([e],[t])=>{let n=qs.indexOf(e),r=qs.indexOf(t);return(n===-1?99:n)-(r===-1?99:r)})},[k]);return t||h===null||v&&T?(0,Y.jsx)(`div`,{className:`p-6 text-sm text-muted-foreground`,children:G(`engine.directory.loading`,a)}):r?(0,Y.jsxs)(`div`,{className:`p-6 text-sm text-destructive`,children:[G(`engine.directory.loadFailed`,a),`: `,r]}):(0,Y.jsxs)(`div`,{className:`flex flex-col h-full overflow-hidden`,children:[(0,Y.jsxs)(`div`,{className:`px-6 pt-5 pb-4 border-b bg-background`,children:[(0,Y.jsx)(`h1`,{className:`text-xl font-semibold`,children:G(`engine.directory.title`,a)}),(0,Y.jsx)(`p`,{className:`text-sm text-muted-foreground mt-1 max-w-3xl`,dangerouslySetInnerHTML:{__html:W(`engine.directory.description`,a,{count:`<strong class="text-foreground">${E.length}</strong>`,writable:O})}}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 mt-4 flex-wrap`,children:[(0,Y.jsxs)(`div`,{className:`relative flex-1 min-w-[240px] max-w-lg`,children:[(0,Y.jsx)(He,{className:`absolute left-2.5 top-1/2 -translate-y-1/2 h-3.5 w-3.5 text-muted-foreground`}),(0,Y.jsx)(R,{className:`pl-8`,placeholder:G(`engine.directory.search`,a),value:s,onChange:e=>c(e.target.value)})]}),(0,Y.jsxs)(U,{variant:d?`default`:`outline`,size:`sm`,onClick:()=>f(e=>!e),children:[G(`engine.directory.writableOnly`,a),` (`,O,`)`]}),x.total>0&&(0,Y.jsx)(U,{asChild:!0,variant:`outline`,size:`sm`,className:`border-destructive/40 text-destructive hover:bg-destructive/10 hover:text-destructive`,children:(0,Y.jsxs)(n,{to:`./_diagnostics`,children:[(0,Y.jsx)(z,{className:`h-3.5 w-3.5 mr-1`}),W(`engine.directory.diagnosticsLink`,a,{count:x.total})]})}),(0,Y.jsxs)(`div`,{className:`text-xs text-muted-foreground flex items-center gap-1.5`,children:[G(`engine.directory.quickFind`,a),` `,(0,Y.jsx)(yr,{children:`⌘`}),(0,Y.jsx)(yr,{children:`⇧`}),(0,Y.jsx)(yr,{children:`M`})]})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5 mt-3 flex-wrap`,children:[(0,Y.jsx)(Xs,{domain:`all`,label:G(`engine.directory.all`,a),active:l===`all`,count:D.all??0,onClick:()=>u(`all`)}),qs.filter(e=>D[e]).map(e=>(0,Y.jsx)(Xs,{domain:e,label:Ai(e,a),active:l===e,count:D[e]??0,onClick:()=>u(e)},e))]})]}),(0,Y.jsxs)(`div`,{className:`flex-1 overflow-auto p-6 space-y-6`,children:[h.length===0&&(0,Y.jsxs)(zr,{children:[(0,Y.jsx)(On,{children:`No project packages installed`}),(0,Y.jsx)(bn,{children:`Studio only shows metadata that belongs to a project software package. Install or create a project package to manage its metadata here.`})]}),h.length>0&&k.length===0&&(0,Y.jsxs)(zr,{children:[(0,Y.jsx)(On,{children:G(`engine.directory.noMatches`,a)}),(0,Y.jsx)(bn,{children:G(`engine.directory.noMatchesHint`,a)})]}),A.map(([e,t])=>{let n=Ks[e]??pe;return(0,Y.jsxs)(`section`,{className:`space-y-2`,children:[(0,Y.jsxs)(`h2`,{className:`text-xs font-semibold uppercase tracking-wider text-muted-foreground flex items-center gap-1.5`,children:[(0,Y.jsx)(n,{className:`h-3.5 w-3.5`}),Ai(e,a),` (`,t.length,`)`]}),(0,Y.jsx)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-3`,children:t.map(e=>{let t=S[e.type]??0;return(0,Y.jsx)(Zs,{entry:e,locale:a,invalidCount:y[e.type]??0,warnCount:b[e.type]??0,lockedCount:C[e.type]??0,itemCount:t,packageFilter:v??void 0},e.type)})})]},e)})]}),(0,Y.jsx)(Us,{})]})}function Xs({domain:e,label:t,active:n,count:r,onClick:i}){return(0,Y.jsxs)(`button`,{type:`button`,onClick:i,className:`px-2.5 py-1 rounded-full text-xs border transition-colors `+(n?`bg-primary text-primary-foreground border-primary`:`bg-background hover:bg-accent border-border text-muted-foreground`),children:[t??e,` `,(0,Y.jsxs)(`span`,{className:`opacity-70 ml-0.5`,children:[`(`,r,`)`]})]})}function Zs({entry:e,locale:t,invalidCount:r=0,warnCount:i=0,itemCount:a=0,lockedCount:o=0,packageFilter:s}){let c=Ni(e.type,t,e.label),l=s?`./${encodeURIComponent(e.type)}?package=${encodeURIComponent(s)}`:`./${encodeURIComponent(e.type)}`;return(0,Y.jsxs)(n,{to:l,className:`block p-4 border rounded-lg hover:bg-accent transition-colors `+(r>0?`border-destructive/40 hover:border-destructive`:`hover:border-primary`),children:[(0,Y.jsxs)(`div`,{className:`flex items-start justify-between gap-2`,children:[(0,Y.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Y.jsxs)(`div`,{className:`font-medium truncate flex items-center gap-1.5`,children:[r>0&&(0,Y.jsx)(`span`,{title:W(`engine.directory.invalidTooltip`,t??`en`,{count:r}),"aria-label":W(`engine.directory.invalidTooltip`,t??`en`,{count:r}),children:(0,Y.jsx)(z,{className:`h-3.5 w-3.5 text-destructive shrink-0`})}),c]}),(0,Y.jsx)(`code`,{className:`text-xs text-muted-foreground font-mono`,children:e.type})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-1 shrink-0`,children:[(0,Y.jsx)(I,{variant:`secondary`,className:`text-[10px] tabular-nums`,title:W(`engine.directory.itemCountTooltip`,t??`en`,{count:a}),children:a}),r>0&&(0,Y.jsx)(I,{variant:`outline`,className:`text-[10px] border-destructive/40 text-destructive bg-destructive/[0.06]`,title:W(`engine.directory.invalidTooltip`,t??`en`,{count:r}),children:r}),i>0&&(0,Y.jsx)(I,{variant:`outline`,className:`text-[10px] border-amber-500/40 text-amber-700 dark:text-amber-300 bg-amber-500/[0.06]`,title:W(`engine.directory.warnTooltip`,t??`en`,{count:i}),children:i}),o>0&&(0,Y.jsxs)(I,{variant:`outline`,className:`text-[10px] border-amber-500/40 text-amber-700 dark:text-amber-300 bg-amber-500/[0.06] inline-flex items-center gap-0.5 px-1.5`,title:`${o} locked item${o===1?``:`s`} — see ADR-0010`,"aria-label":`${o} locked items`,children:[(0,Y.jsx)(un,{className:`h-2.5 w-2.5`}),o]}),e.allowOrgOverride?(0,Y.jsx)(I,{className:`text-[10px] `+(e.overrideSource===`env`?`bg-amber-100 text-amber-800 hover:bg-amber-100`:`bg-emerald-100 text-emerald-800 hover:bg-emerald-100`),title:e.overrideSource===`env`?`Writable via OBJECTSTACK_METADATA_WRITABLE env var`:`Writable per ADR-0005 overlay opt-in`,children:G(`engine.badge.writable`,t)}):e.allowRuntimeCreate?(0,Y.jsx)(I,{className:`text-[10px] bg-sky-100 text-sky-800 hover:bg-sky-100`,title:`Code-shipped items are locked; new items can be created at runtime`,children:G(`engine.badge.createOnly`,t)}):(0,Y.jsx)(I,{variant:`outline`,className:`text-[10px] text-muted-foreground`,children:G(`engine.badge.readOnly`,t)})]})]}),e.description&&(0,Y.jsx)(`div`,{className:`text-xs text-muted-foreground mt-2 line-clamp-2`,children:e.description})]})}function Qs(e){let t=e?.data??e,n=Array.isArray(t)?t:t?.packages??[],r=[];for(let e of n){if(!e||typeof e!=`object`)continue;let t=e.manifest??{},n=String(t.id??e.id??``);if(!n)continue;let i=typeof t.scope==`string`?t.scope:``;if(i===`system`||i===`cloud`)continue;let a=typeof t.namespace==`string`&&t.namespace?t.namespace:C(n);r.push({id:n,name:String(t.name??n),writable:i!==`project`,namespace:a})}return r}async function $s(){let e=await fetch(`/api/v1/packages`,{credentials:`include`,headers:{Accept:`application/json`},cache:`no-store`});if(!e.ok)throw Error(`HTTP ${e.status}`);return Qs(await e.json())}async function ec(e,t,n){let r=await fetch(`/api/v1/packages/${encodeURIComponent(e)}/duplicate`,{method:`POST`,credentials:`include`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({targetPackageId:t,...n?{targetName:n}:{}})}),i=await r.json().catch(()=>null);if(!r.ok||i?.success===!1)throw Error(i?.error?.message||`HTTP ${r.status}`)}var tc=/^[a-z][a-z0-9_.-]*(\.[a-z0-9_-]+)+$/,nc=/^[a-z][a-z0-9_]{1,19}$/;function rc(e,t){return t&&g(e,t)?`${t}_${e}`:e}function ic(e){let t=e.toLowerCase().replace(/[^a-z0-9_.-]/g,``);return{value:t,stripped:t.length!==e.length}}var ac={io:`input`,unrepresentable:`any`},oc,sc=!1;function cc(){if(oc||sc)return oc;try{oc=x(y,ac)}catch(e){sc=!0,typeof console<`u`&&console.warn(`[package-schema] failed to derive manifest JSONSchema from spec`,e)}return oc}function lc(e){return{type:`modal`,sections:[{label:G(`engine.packages.form.basics`,e),columns:1,fields:[{field:`name`,label:G(`engine.packages.create.name`,e),placeholder:`Acme CRM`},{field:`id`,label:G(`engine.packages.create.id`,e),placeholder:`com.acme.crm`,immutable:!0},{field:`namespace`,label:G(`engine.packages.create.namespace`,e),placeholder:`crm`,immutable:!0},{field:`version`,label:G(`engine.packages.create.version`,e),placeholder:`0.1.0`},{field:`type`,label:G(`engine.packages.detail.type`,e),immutable:!0},{field:`description`,label:G(`engine.packages.detail.description`,e)}]},{label:G(`engine.packages.form.advanced`,e),collapsible:!0,collapsed:!0,columns:1,fields:[{field:`defaultDatasource`,label:G(`engine.packages.form.defaultDatasource`,e),immutable:!0},{field:`scope`,label:G(`engine.packages.form.scope`,e),immutable:!0},{field:`dependencies`,label:G(`engine.packages.form.dependencies`,e),immutable:!0}]}]}}var uc=`/api/v1/packages`,dc=/^\d+\.\d+\.\d+$/;async function fc(e,t){let n=await fetch(e,{credentials:`include`,headers:{Accept:`application/json`,...t?.headers||{}},...t}),r=await n.text(),i=r?JSON.parse(r):null;if(!n.ok||i?.success===!1){let e=i?.error?.message||i?.error||i?.message||`Request failed (${n.status})`,t=Error(typeof e==`string`?e:`Request failed (${n.status})`);throw t.status=n.status,t}return i?.data??i}function pc(){try{window.dispatchEvent(new CustomEvent(`objectui:packages-changed`))}catch{}}function mc({mode:e,open:t,onOpenChange:n,manifest:r,onSaved:i}){let a=Mi(),o=X.useMemo(()=>cc(),[]),s=X.useMemo(()=>lc(a),[a]),c=e===`create`,l=e===`view`,[u,d]=X.useState({}),[f,p]=X.useState(!1),[m,h]=X.useState(null),g=X.useRef(!1);X.useEffect(()=>{t&&(g.current=!1,d(c?{version:`0.1.0`,type:`app`}:{...r??{}}),h(null),p(!1))},[t,c,r]);let _=X.useCallback(e=>{if(!c){d(e);return}d(t=>{let n=e.namespace;return n!==t.namespace&&(g.current=!0,n=String(n??``).toLowerCase().replace(/[^a-z0-9_]/g,``)),!g.current&&e.id!==t.id&&(n=C(String(e.id??``))??``),{...e,namespace:n}})},[c]),v=X.useMemo(()=>{if(l)return[];let e=y.safeParse(u);return e.success?[]:e.error.issues.map(e=>({path:e.path.join(`.`),message:e.message}))},[u,l]),b=!!String(u.name??``).trim(),x=String(u.version??``).trim(),S=c?dc.test(x):!x||dc.test(x),w=!c||!!String(u.id??``).trim(),T=!c||nc.test(String(u.namespace??``).trim()),E=!l&&b&&S&&w&&T&&!f;async function D(){if(E){p(!0),h(null);try{let t;if(c){let n={...u,id:String(u.id??``).trim(),name:String(u.name??``).trim(),version:x,type:u.type??`app`},r=await fc(uc,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({manifest:n})});t={id:String(r?.manifest?.id??n.id),mode:e,package:r}}else{let n=String(r?.id??u.id??``);t={id:n,mode:e,package:await fc(`${uc}/${encodeURIComponent(n)}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:String(u.name??``).trim(),description:String(u.description??``).trim(),version:x})})}}pc(),i?.(t),n(!1)}catch(e){let t=e?.message??``;e?.status===409||/already exists/i.test(t)?h(G(`engine.packages.create.exists`,a)):h(t||G(c?`engine.packages.create.failed`:`engine.packages.edit.failed`,a))}finally{p(!1)}}}let O=G(e===`create`?`engine.packages.create.title`:e===`edit`?`engine.packages.edit.title`:`engine.packages.view.title`,a);return(0,Y.jsx)(Rr,{open:t,onOpenChange:n,children:(0,Y.jsxs)(vn,{className:`max-h-[85vh] overflow-y-auto`,children:[(0,Y.jsxs)(En,{children:[(0,Y.jsx)(Fn,{children:O}),e===`create`?(0,Y.jsx)(ir,{children:W(`engine.packages.create.description`,a,{example:`com.acme.crm`})}):(0,Y.jsx)(ir,{className:`font-mono text-xs`,children:String(r?.id??u.id??``)})]}),(0,Y.jsx)(`div`,{className:`py-1`,"data-testid":`package-form`,children:(0,Y.jsx)(xa,{schema:o,form:s,value:u,onChange:_,issues:v,readOnly:l,createMode:c})}),m&&(0,Y.jsxs)(`div`,{className:`flex items-start gap-2 rounded-md border border-destructive/40 bg-destructive/10 p-2 text-sm text-destructive`,children:[(0,Y.jsx)(z,{className:`mt-0.5 h-4 w-4 shrink-0`}),(0,Y.jsx)(`span`,{children:m})]}),(0,Y.jsx)(qr,{children:l?(0,Y.jsx)(U,{variant:`outline`,onClick:()=>n(!1),children:G(`engine.close`,a)}):(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(U,{variant:`outline`,onClick:()=>n(!1),disabled:f,children:G(`engine.cancel`,a)}),(0,Y.jsx)(U,{onClick:D,disabled:!E,"data-testid":`package-form-submit`,children:G(f?c?`engine.packages.create.creating`:`engine.packages.edit.saving`:c?`engine.packages.create.submit`:`engine.packages.edit.save`,a)})]})})]})})}var hc=`/api/v1/packages`;async function gc(e,t){let n=await fetch(e,{credentials:`include`,headers:{Accept:`application/json`,...t?.headers||{}},...t}),r=await n.text(),i=r?JSON.parse(r):null;if(!n.ok||i?.success===!1){let e=i?.error?.message||i?.error||i?.message||`Request failed (${n.status})`;throw Error(typeof e==`string`?e:`Request failed (${n.status})`)}return i?.data??i}function _c({scope:e}){let t=Mi();if(!e)return(0,Y.jsx)(I,{className:`bg-emerald-400/15 text-emerald-600 hover:bg-emerald-400/15 dark:text-emerald-300`,children:G(`engine.packages.scope.writable`,t)});let n=e===`project`?`default`:e===`system`?`secondary`:`outline`,r=e===`project`?`engine.packages.scope.project`:e===`system`?`engine.packages.scope.system`:e===`cloud`?`engine.packages.scope.cloud`:``;return(0,Y.jsx)(I,{variant:n,children:r?G(r,t):e})}function vc({pkg:e}){let t=Mi(),n=e.enabled!==!1&&e.status!==`disabled`;return(0,Y.jsx)(I,{variant:n?`default`:`outline`,children:G(n?`engine.packages.status.enabled`:`engine.packages.status.disabled`,t)})}function yc({open:e,onOpenChange:t,onCreated:n}){return(0,Y.jsx)(mc,{mode:`create`,open:e,onOpenChange:t,onSaved:e=>n(e.id)})}function bc({label:e,children:t}){return(0,Y.jsxs)(`div`,{className:`flex items-baseline justify-between gap-4 py-1.5`,children:[(0,Y.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:e}),(0,Y.jsx)(`span`,{className:`text-sm font-medium text-right break-all`,children:t})]})}function xc({pkg:e,open:t,onOpenChange:n,onSaved:r}){return(0,Y.jsx)(mc,{mode:`edit`,open:t,onOpenChange:n,manifest:e?.manifest??null,onSaved:t=>r(t.package??e)})}function Sc({pkg:e,appBase:t,open:r,onOpenChange:i,onChanged:a}){let o=Mi(),[s,c]=X.useState(null),[l,u]=X.useState(null),[d,f]=X.useState(null),[p,m]=X.useState(!1),[h,g]=X.useState(!1);if(X.useEffect(()=>{u(null),c(null)},[e?.manifest.id]),X.useEffect(()=>{let t=e?.manifest.id;if(!r||!t){f(null);return}let n=!1;return gc(`/api/v1/meta/_drafts?packageId=${encodeURIComponent(t)}`).then(e=>{n||f(e?.drafts??[])}).catch(()=>{n||f([])}),()=>{n=!0}},[r,e?.manifest.id]),!e)return null;let _=e.manifest.id,v=e.enabled!==!1&&e.status!==`disabled`,y=e.manifest.scope===`system`||e.manifest.scope===`cloud`;async function b(e,t,n){c(e),u(null);try{await t(),u({kind:`ok`,text:n}),a()}catch(e){u({kind:`err`,text:e?.message??G(`engine.packages.detail.actionFailed`,o)})}finally{c(null)}}return(0,Y.jsx)(Ir,{open:r,onOpenChange:i,children:(0,Y.jsxs)(_n,{className:`w-full sm:max-w-md overflow-y-auto`,children:[(0,Y.jsxs)(Kr,{children:[(0,Y.jsxs)(wn,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(Le,{className:`h-4 w-4`}),e.manifest.name||_]}),(0,Y.jsx)(rr,{className:`font-mono text-xs`,children:_})]}),(0,Y.jsxs)(`div`,{className:`mt-4`,children:[(0,Y.jsx)(bc,{label:G(`engine.packages.col.version`,o),children:e.manifest.version||`—`}),(0,Y.jsx)(bc,{label:G(`engine.packages.detail.type`,o),children:e.manifest.type||`—`}),(0,Y.jsx)(bc,{label:G(`engine.packages.col.scope`,o),children:(0,Y.jsx)(_c,{scope:e.manifest.scope})}),(0,Y.jsx)(bc,{label:G(`engine.packages.col.status`,o),children:(0,Y.jsx)(vc,{pkg:e})}),e.manifest.description&&(0,Y.jsx)(bc,{label:G(`engine.packages.detail.description`,o),children:e.manifest.description})]}),t&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(Nn,{className:`my-4`}),(0,Y.jsxs)(n,{to:`${t}/metadata/object?package=${encodeURIComponent(_)}`,className:`inline-flex items-center gap-1.5 text-sm text-primary hover:underline`,onClick:()=>i(!1),children:[(0,Y.jsx)(Tr,{className:`h-3.5 w-3.5`}),G(`engine.packages.detail.browseMetadata`,o)]})]}),d&&d.length>0&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(Nn,{className:`my-4`}),(0,Y.jsxs)(`div`,{className:`space-y-2`,children:[(0,Y.jsxs)(`p`,{className:`flex items-center gap-2 text-xs font-medium uppercase tracking-wide text-muted-foreground`,children:[G(`engine.packages.detail.pendingChanges`,o),(0,Y.jsx)(I,{variant:`secondary`,children:d.length})]}),(0,Y.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:G(`engine.packages.detail.pendingHint`,o)}),!y&&(0,Y.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,Y.jsxs)(U,{size:`sm`,onClick:()=>b(`publish-drafts`,()=>gc(`${hc}/${encodeURIComponent(_)}/publish-drafts`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({})}).then(async e=>{try{let e=await gc(`/api/v1/meta/_drafts?packageId=${encodeURIComponent(_)}`);f(e?.drafts??[])}catch{f([])}if(e?.failedCount){let t=Array.isArray(e.failed)?e.failed:[],n=t.find(e=>!re(e,`BATCH_ABORTED`)&&e?.error);throw t.some(e=>re(e,`BATCH_ABORTED`))?Error(W(`engine.packages.detail.publishDraftsRolledBack`,o,{cause:n?`${n.type??`?`}/${n.name??`?`}: ${n.error}`:String(e.failedCount)})):Error(W(`engine.packages.detail.publishDraftsPartial`,o,{published:e.publishedCount??0,failed:e.failedCount}))}return e}),G(`engine.packages.detail.publishDraftsOk`,o)),disabled:!!s,children:[(0,Y.jsx)(cn,{className:`mr-1.5 h-3.5 w-3.5`}),s===`publish-drafts`?G(`engine.packages.detail.publishing`,o):W(`engine.packages.detail.publishApp`,o,{count:d.length})]}),(0,Y.jsxs)(U,{size:`sm`,variant:`outline`,onClick:()=>b(`discard-drafts`,()=>gc(`${hc}/${encodeURIComponent(_)}/discard-drafts`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({})}).then(async e=>{try{let e=await gc(`/api/v1/meta/_drafts?packageId=${encodeURIComponent(_)}`);f(e?.drafts??[])}catch{f([])}if(e?.failedCount)throw Error(W(`engine.packages.detail.discardDraftsPartial`,o,{discarded:e.discardedCount??0,failed:e.failedCount}));return e}),G(`engine.packages.detail.discardDraftsOk`,o)),disabled:!!s,children:[(0,Y.jsx)(_r,{className:`mr-1.5 h-3.5 w-3.5`}),s===`discard-drafts`?G(`engine.packages.detail.discarding`,o):W(`engine.packages.detail.discardChanges`,o,{count:d.length})]})]}),(0,Y.jsx)(`ul`,{className:`space-y-1`,children:d.map(e=>t?(0,Y.jsx)(`li`,{children:(0,Y.jsxs)(n,{to:`${t}/metadata/${encodeURIComponent(e.type)}/${encodeURIComponent(e.name)}?review=1`,className:`inline-flex items-center gap-1.5 text-sm text-primary hover:underline`,onClick:()=>i(!1),children:[(0,Y.jsx)(F,{className:`h-3.5 w-3.5`}),(0,Y.jsx)(`span`,{className:`font-mono text-xs`,children:e.type}),(0,Y.jsx)(`span`,{className:`text-muted-foreground`,children:`·`}),e.name]})},`${e.type}/${e.name}`):(0,Y.jsxs)(`li`,{className:`inline-flex items-center gap-1.5 text-sm`,children:[(0,Y.jsx)(F,{className:`h-3.5 w-3.5 text-muted-foreground`}),(0,Y.jsx)(`span`,{className:`font-mono text-xs`,children:e.type}),(0,Y.jsx)(`span`,{className:`text-muted-foreground`,children:`·`}),e.name]},`${e.type}/${e.name}`))})]})]}),(0,Y.jsx)(Nn,{className:`my-4`}),y?(0,Y.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:G(`engine.packages.detail.kernelReadOnly`,o)}):(0,Y.jsxs)(`div`,{className:`space-y-2`,children:[(0,Y.jsx)(`p`,{className:`text-xs font-medium uppercase tracking-wide text-muted-foreground`,children:G(`engine.packages.detail.actions`,o)}),(0,Y.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,Y.jsxs)(U,{size:`sm`,variant:`outline`,onClick:()=>g(!0),disabled:!!s,children:[(0,Y.jsx)(Dn,{className:`mr-1.5 h-3.5 w-3.5`}),G(`engine.packages.detail.viewInfo`,o)]}),(0,Y.jsxs)(U,{size:`sm`,variant:`outline`,onClick:()=>m(!0),disabled:!!s,children:[(0,Y.jsx)(Ot,{className:`mr-1.5 h-3.5 w-3.5`}),G(`engine.packages.detail.edit`,o)]}),(0,Y.jsxs)(U,{size:`sm`,onClick:()=>b(`publish`,()=>gc(`${hc}/${encodeURIComponent(_)}/publish`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({})}).then(e=>{if(e&&e.success===!1){let t=e.validationErrors?.length??0;throw Error(t?W(`engine.packages.detail.publishBlocked`,o,{count:t}):e.validationErrors?.[0]?.message||G(`engine.packages.detail.nothingToPublish`,o))}return e}),G(`engine.packages.detail.published`,o)),disabled:!!s,children:[(0,Y.jsx)(cn,{className:`mr-1.5 h-3.5 w-3.5`}),G(s===`publish`?`engine.packages.detail.publishing`:`engine.packages.detail.publish`,o)]}),(0,Y.jsxs)(U,{size:`sm`,variant:`outline`,onClick:()=>b(`revert`,()=>gc(`${hc}/${encodeURIComponent(_)}/revert`,{method:`POST`}),G(`engine.packages.detail.reverted`,o)),disabled:!!s,children:[(0,Y.jsx)(_r,{className:`mr-1.5 h-3.5 w-3.5`}),G(`engine.packages.detail.revert`,o)]}),(0,Y.jsxs)(U,{size:`sm`,variant:`outline`,onClick:()=>b(`toggle`,()=>gc(`${hc}/${encodeURIComponent(_)}/${v?`disable`:`enable`}`,{method:`PATCH`}),G(v?`engine.packages.detail.disabled`:`engine.packages.detail.enabled`,o)),disabled:!!s,children:[v?(0,Y.jsx)(or,{className:`mr-1.5 h-3.5 w-3.5`}):(0,Y.jsx)(br,{className:`mr-1.5 h-3.5 w-3.5`}),G(v?`engine.packages.detail.disable`:`engine.packages.detail.enable`,o)]}),(0,Y.jsxs)(U,{size:`sm`,variant:`outline`,onClick:()=>b(`export`,async()=>{let e=await gc(`${hc}/${encodeURIComponent(_)}/export`),t=new Blob([JSON.stringify(e,null,2)],{type:`application/json`}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=`${_}.package.json`,document.body.appendChild(r),r.click(),r.remove(),URL.revokeObjectURL(n)},G(`engine.packages.detail.exported`,o)),disabled:!!s,children:[(0,Y.jsx)(an,{className:`mr-1.5 h-3.5 w-3.5`}),G(s===`export`?`engine.packages.detail.exporting`:`engine.packages.detail.export`,o)]}),(0,Y.jsxs)(U,{size:`sm`,variant:`outline`,onClick:async()=>{let t=window.prompt(G(`engine.packages.detail.duplicatePrompt`,o),`${_}-copy`);if(!(!t||!t.trim())){c(`duplicate`),u(null);try{await gc(`${hc}/${encodeURIComponent(_)}/duplicate`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({targetPackageId:t.trim(),targetName:`${e?.manifest.name??_} (copy)`})}),u({kind:`ok`,text:G(`engine.packages.detail.duplicated`,o)}),a()}catch(e){u({kind:`err`,text:e?.message??`Duplicate failed`})}finally{c(null)}}},disabled:!!s,children:[(0,Y.jsx)(ei,{className:`mr-1.5 h-3.5 w-3.5`}),G(s===`duplicate`?`engine.packages.detail.duplicating`:`engine.packages.detail.duplicate`,o)]}),(0,Y.jsxs)(U,{size:`sm`,variant:`outline`,onClick:async()=>{if(window.confirm(W(`engine.packages.detail.adoptConfirm`,o,{name:e?.manifest.name||_}))){c(`adopt`),u(null);try{await gc(`${hc}/${encodeURIComponent(_)}/adopt-orphans`,{method:`POST`}),u({kind:`ok`,text:G(`engine.packages.detail.adopted`,o)}),a()}catch(e){u({kind:`err`,text:e?.message??`Adopt failed`})}finally{c(null)}}},disabled:!!s,children:[(0,Y.jsx)(Se,{className:`mr-1.5 h-3.5 w-3.5`}),G(s===`adopt`?`engine.packages.detail.adopting`:`engine.packages.detail.adoptOrphans`,o)]}),(0,Y.jsxs)(U,{size:`sm`,variant:`outline`,onClick:async()=>{if(!window.confirm(W(`engine.packages.detail.deleteConfirm`,o,{name:e?.manifest.name||_})))return;let t=window.confirm(G(`engine.packages.detail.deleteKeepData`,o))?``:`?keepData=true`;c(`delete`),u(null);try{await gc(`${hc}/${encodeURIComponent(_)}${t}`,{method:`DELETE`}),a(),i(!1)}catch(e){u({kind:`err`,text:e?.message??G(`engine.packages.detail.deleteFailed`,o)})}finally{c(null)}},disabled:!!s,className:`text-destructive hover:bg-destructive/10 hover:text-destructive`,children:[(0,Y.jsx)(Cn,{className:`mr-1.5 h-3.5 w-3.5`}),G(s===`delete`?`engine.packages.detail.deleting`:`engine.packages.detail.deleteApp`,o)]})]})]}),l&&(0,Y.jsx)(`div`,{className:`mt-4 rounded-md border p-2 text-sm ${l.kind===`ok`?`border-emerald-500/40 bg-emerald-500/10 text-emerald-700 dark:text-emerald-400`:`border-destructive/40 bg-destructive/10 text-destructive`}`,children:l.text}),(0,Y.jsx)(xc,{pkg:e,open:p,onOpenChange:m,onSaved:()=>{u({kind:`ok`,text:G(`engine.packages.edit.saved`,o)}),a()}}),(0,Y.jsx)(mc,{mode:`view`,open:h,onOpenChange:g,manifest:e?.manifest??null})]})})}function Cc(){let e=Mi(),{pathname:t}=r(),n=X.useMemo(()=>{let e=t.indexOf(`/component`);return e>=0?t.slice(0,e):t},[t]),[i,a]=X.useState([]),[o,s]=X.useState(!0),[c,l]=X.useState(null),[u,d]=X.useState(``),[f,p]=X.useState(!1),[m,h]=X.useState(!1),[g,_]=X.useState(null),[v,y]=X.useState(!1),b=X.useRef(null),[x,S]=X.useState(!1),[C,w]=X.useState(null),T=X.useCallback(async()=>{s(!0),l(null);try{let e=await gc(hc),t=Array.isArray(e?.packages)?e.packages:[];t.sort((e,t)=>{let n=e.manifest.scope===`project`?0:1,r=t.manifest.scope===`project`?0:1;return n===r?(e.manifest.name||e.manifest.id).localeCompare(t.manifest.name||t.manifest.id):n-r}),a(t)}catch(t){l(t?.message??G(`engine.packages.loadFailed`,e))}finally{s(!1)}},[e]);X.useEffect(()=>{T()},[T]),X.useEffect(()=>{if(!g)return;let e=i.find(e=>e.manifest.id===g.manifest.id);e&&e!==g&&_(e)},[i,g]);let E=X.useMemo(()=>{let e=u.trim().toLowerCase();return i.filter(t=>(t.manifest.scope===`system`||t.manifest.scope===`cloud`)&&!f?!1:!e||t.manifest.id.toLowerCase().includes(e)||(t.manifest.name||``).toLowerCase().includes(e))},[i,u,f]),D=e=>{_(e),y(!0)},O=async t=>{let n=t.target.files?.[0];if(t.target.value=``,n){S(!0),w(null);try{let t=await n.text(),r;try{r=JSON.parse(t)}catch{throw Error(G(`engine.packages.import.invalidJson`,e))}if(!r||typeof r!=`object`||!r.id&&!r.name)throw Error(G(`engine.packages.import.invalidPackage`,e));let i=await gc(`/api/v1/marketplace/install-local`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({manifest:r})});w({kind:`ok`,text:W(`engine.packages.import.success`,e,{id:i?.manifestId??r.id})}),await T()}catch(t){w({kind:`err`,text:t?.message??G(`engine.packages.import.failed`,e)})}finally{S(!1)}}},k=i.filter(e=>e.manifest.scope===`system`||e.manifest.scope===`cloud`).length;return(0,Y.jsxs)(`div`,{className:`mx-auto w-full max-w-5xl px-6 py-6`,children:[(0,Y.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[(0,Y.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,Y.jsx)(`div`,{className:`rounded-lg bg-primary/10 p-2 text-primary`,children:(0,Y.jsx)(Le,{className:`h-5 w-5`})}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`h1`,{className:`text-xl font-semibold tracking-tight`,children:G(`engine.packages.title`,e)}),(0,Y.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:G(`engine.packages.description`,e)})]})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsxs)(U,{variant:`outline`,size:`sm`,onClick:()=>void T(),disabled:o,children:[(0,Y.jsx)(gr,{className:`mr-1.5 h-3.5 w-3.5 ${o?`animate-spin`:``}`}),G(`engine.packages.refresh`,e)]}),(0,Y.jsx)(`input`,{ref:b,type:`file`,accept:`application/json,.json`,className:`hidden`,onChange:O}),(0,Y.jsxs)(U,{variant:`outline`,size:`sm`,onClick:()=>b.current?.click(),disabled:x,children:[(0,Y.jsx)(F,{className:`mr-1.5 h-3.5 w-3.5`}),G(x?`engine.packages.importing`:`engine.packages.import`,e)]}),(0,Y.jsxs)(U,{size:`sm`,onClick:()=>h(!0),children:[(0,Y.jsx)(B,{className:`mr-1.5 h-3.5 w-3.5`}),G(`engine.packages.new`,e)]})]})]}),C&&(0,Y.jsx)(`div`,{className:`mt-4 rounded-md border p-2 text-sm ${C.kind===`ok`?`border-emerald-500/40 bg-emerald-500/10 text-emerald-700 dark:text-emerald-400`:`border-destructive/40 bg-destructive/10 text-destructive`}`,children:C.text}),(0,Y.jsxs)(`div`,{className:`mt-5 flex flex-wrap items-center justify-between gap-3`,children:[(0,Y.jsxs)(`div`,{className:`relative w-full max-w-xs`,children:[(0,Y.jsx)(He,{className:`absolute left-2.5 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground`}),(0,Y.jsx)(R,{className:`pl-8`,placeholder:G(`engine.packages.search`,e),value:u,onChange:e=>d(e.target.value)})]}),k>0&&(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(ui,{id:`show-kernel`,checked:f,onCheckedChange:p}),(0,Y.jsx)(V,{htmlFor:`show-kernel`,className:`text-sm text-muted-foreground`,children:W(`engine.packages.showPlatform`,e,{count:k})})]})]}),(0,Y.jsx)(`div`,{className:`mt-4 rounded-lg border`,children:o?(0,Y.jsx)(`div`,{className:`space-y-2 p-4`,children:[0,1,2].map(e=>(0,Y.jsx)(ln,{className:`h-10 w-full`},e))}):c?(0,Y.jsxs)(`div`,{className:`flex items-start gap-2 p-4 text-sm text-destructive`,children:[(0,Y.jsx)(z,{className:`mt-0.5 h-4 w-4 shrink-0`}),(0,Y.jsx)(`span`,{children:c})]}):E.length===0?(0,Y.jsx)(`div`,{className:`p-8`,children:(0,Y.jsxs)(zr,{children:[(0,Y.jsx)(On,{children:G(`engine.packages.empty`,e)}),(0,Y.jsx)(bn,{children:i.length===0?G(`engine.packages.emptyCreate`,e):G(`engine.packages.emptyFiltered`,e)})]})}):(0,Y.jsxs)(ct,{children:[(0,Y.jsx)($e,{children:(0,Y.jsxs)(Dt,{children:[(0,Y.jsx)(Ve,{children:G(`engine.packages.col.name`,e)}),(0,Y.jsx)(Ve,{children:`ID`}),(0,Y.jsx)(Ve,{className:`w-24`,children:G(`engine.packages.col.version`,e)}),(0,Y.jsx)(Ve,{className:`w-24`,children:G(`engine.packages.col.scope`,e)}),(0,Y.jsx)(Ve,{className:`w-24`,children:G(`engine.packages.col.status`,e)})]})}),(0,Y.jsx)(vt,{children:E.map(e=>(0,Y.jsxs)(Dt,{className:`cursor-pointer`,onClick:()=>D(e),children:[(0,Y.jsx)(Te,{className:`font-medium`,children:e.manifest.name||e.manifest.id}),(0,Y.jsx)(Te,{className:`font-mono text-xs text-muted-foreground`,children:e.manifest.id}),(0,Y.jsx)(Te,{children:e.manifest.version||`—`}),(0,Y.jsx)(Te,{children:(0,Y.jsx)(_c,{scope:e.manifest.scope})}),(0,Y.jsx)(Te,{children:(0,Y.jsx)(vc,{pkg:e})})]},e.manifest.id))})]})}),(0,Y.jsx)(yc,{open:m,onOpenChange:h,onCreated:async()=>{await T()}}),(0,Y.jsx)(Sc,{pkg:g,appBase:n,open:v,onOpenChange:y,onChanged:()=>void T()})]})}var wc=new Set([`field`,`package`]),Tc={data:ri,ui:Yr,automation:Ue,ai:_t,system:De,platform:De,identity:Ne,security:Ne},Ec={data:{from:`from-sky-500`,to:`to-blue-600`,ring:`hover:ring-sky-400/40`,text:`text-sky-600 dark:text-sky-400`},ui:{from:`from-violet-500`,to:`to-fuchsia-600`,ring:`hover:ring-violet-400/40`,text:`text-violet-600 dark:text-violet-400`},automation:{from:`from-amber-500`,to:`to-orange-600`,ring:`hover:ring-amber-400/40`,text:`text-amber-600 dark:text-amber-400`},ai:{from:`from-pink-500`,to:`to-rose-600`,ring:`hover:ring-pink-400/40`,text:`text-pink-600 dark:text-pink-400`},identity:{from:`from-emerald-500`,to:`to-teal-600`,ring:`hover:ring-emerald-400/40`,text:`text-emerald-600 dark:text-emerald-400`},security:{from:`from-emerald-500`,to:`to-teal-600`,ring:`hover:ring-emerald-400/40`,text:`text-emerald-600 dark:text-emerald-400`},system:{from:`from-slate-500`,to:`to-slate-700`,ring:`hover:ring-slate-400/40`,text:`text-slate-600 dark:text-slate-300`},platform:{from:`from-slate-500`,to:`to-slate-700`,ring:`hover:ring-slate-400/40`,text:`text-slate-600 dark:text-slate-300`},other:{from:`from-slate-400`,to:`to-slate-600`,ring:`hover:ring-slate-400/40`,text:`text-slate-600 dark:text-slate-300`}},Dc=[`data`,`ui`,`automation`,`ai`,`identity`,`security`,`system`,`platform`,`other`],Oc=[`object`,`view`,`page`,`dashboard`,`report`,`flow`,`action`,`agent`],kc={object:At,dashboard:rn,page:jn,report:xr,record:pe,metadata:Yr};function Ac(){let e=new Date().getHours();return e<12?`engine.home.greetingMorning`:e<18?`engine.home.greetingAfternoon`:`engine.home.greetingEvening`}function jc(e,t){let n=new Date(e).getTime();if(Number.isNaN(n))return``;let r=Math.floor((Date.now()-n)/6e4),i=new Intl.RelativeTimeFormat(t,{numeric:`auto`});if(r<1)return i.format(0,`minute`);if(r<60)return i.format(-r,`minute`);let a=Math.floor(r/60);if(a<24)return i.format(-a,`hour`);let o=Math.floor(a/24);return o<7?i.format(-o,`day`):i.format(-Math.floor(o/7),`week`)}function Mc(){let e=Hi(),{loading:t,entries:r}=Wi(e),{recentItems:i}=yi(),a=Mi(),[s,c]=o(),[l,u]=X.useState(null);X.useEffect(()=>{let t=!1;return(async()=>{try{let n=await e.list(`package`);if(t)return;u(Gs(n))}catch{t||u([])}})(),()=>{t=!0}},[e]);let d=s.get(`package`),f=X.useMemo(()=>l?d&&l.some(e=>e.id===d)?d:l[0]?.id??null:null,[l,d]);X.useEffect(()=>{if(!l||l.length===0||d&&l.some(e=>e.id===d))return;let e=new URLSearchParams(s);e.set(`package`,l[0].id),c(e,{replace:!0})},[l,d]);let p=f?`?package=${encodeURIComponent(f)}`:``,m=`metadata${p}`,h=`component/developer/packages${p}`,{summary:g,countsByType:_,packagesByType:v,loading:y}=zi(e,`warning`,f??void 0),b=X.useMemo(()=>r.filter(e=>wc.has(e.type)||!f?!1:(v[e.type]??[]).includes(f)),[f,r,v]),x=X.useMemo(()=>b.filter(e=>e.allowOrgOverride||e.allowRuntimeCreate),[b]),S=X.useMemo(()=>{let e={};for(let t of b)(e[t.domain??`other`]??=[]).push(t);for(let t of Object.values(e))t.sort((e,t)=>(_[t.type]??0)-(_[e.type]??0));return Object.entries(e).sort(([e],[t])=>(Dc.indexOf(e)===-1?99:Dc.indexOf(e))-(Dc.indexOf(t)===-1?99:Dc.indexOf(t)))},[b,_]),C=X.useMemo(()=>{let e=new Map(x.map(e=>[e.type,e]));return Oc.map(t=>e.get(t)).filter(Boolean)},[x]),w=g.total,T=!t&&!y&&w===0;return t||l===null||f&&y?(0,Y.jsx)(`div`,{className:`flex h-full items-center justify-center p-8 text-sm text-muted-foreground`,children:G(`engine.home.loading`,a)}):(0,Y.jsxs)(`div`,{className:`h-full overflow-auto bg-gradient-to-b from-muted/40 to-background`,children:[(0,Y.jsxs)(`div`,{className:`mx-auto w-full max-w-6xl px-6 py-6 space-y-6`,children:[(0,Y.jsxs)(`section`,{className:`relative overflow-hidden rounded-3xl bg-gradient-to-br from-indigo-600 via-violet-600 to-fuchsia-600 px-7 py-8 text-white shadow-xl shadow-violet-500/20`,children:[(0,Y.jsx)(`div`,{className:`pointer-events-none absolute -right-16 -top-20 h-64 w-64 rounded-full bg-white/15 blur-3xl`}),(0,Y.jsx)(`div`,{className:`pointer-events-none absolute -bottom-24 left-1/3 h-56 w-56 rounded-full bg-fuchsia-300/20 blur-3xl`}),(0,Y.jsx)(`div`,{className:`pointer-events-none absolute inset-0 opacity-[0.12]`,style:{backgroundImage:`radial-gradient(currentColor 1px, transparent 1px)`,backgroundSize:`18px 18px`}}),(0,Y.jsxs)(`div`,{className:`relative flex flex-col gap-6 lg:flex-row lg:items-end lg:justify-between`,children:[(0,Y.jsxs)(`div`,{className:`max-w-xl`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 text-sm font-medium text-white/80`,children:[(0,Y.jsx)(_t,{className:`h-4 w-4`}),G(Ac(),a)]}),(0,Y.jsx)(`h1`,{className:`mt-2 text-3xl font-bold tracking-tight sm:text-4xl`,children:`Studio`}),(0,Y.jsx)(`p`,{className:`mt-2 text-sm leading-relaxed text-white/85 sm:text-base`,children:G(`engine.home.subtitle`,a)}),(0,Y.jsxs)(`div`,{className:`mt-5 flex flex-wrap items-center gap-2.5`,children:[(0,Y.jsx)(U,{asChild:!0,size:`sm`,variant:`ghost`,className:`bg-white/10 text-white shadow-sm ring-1 ring-white/25 hover:bg-white/20 hover:text-white`,children:(0,Y.jsxs)(n,{to:m,children:[(0,Y.jsx)(Yr,{className:`mr-1.5 h-4 w-4`}),G(`engine.home.browseAll`,a)]})}),(0,Y.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 rounded-full bg-white/15 px-3 py-1.5 text-xs font-medium text-white/90 backdrop-blur-sm`,children:[(0,Y.jsx)(He,{className:`h-3.5 w-3.5`}),G(`engine.directory.quickFind`,a),` ⌘⇧M`]})]})]}),(0,Y.jsxs)(`div`,{className:`grid grid-cols-3 gap-3`,children:[(0,Y.jsx)(Nc,{value:b.length,label:G(`engine.home.statTypes`,a)}),(0,Y.jsx)(Nc,{value:x.length,label:G(`engine.home.statWritable`,a)}),(0,Y.jsx)(Nc,{value:l.length,label:G(`engine.home.statPackages`,a)})]})]})]}),(0,Y.jsxs)(`section`,{className:`grid grid-cols-2 gap-4 lg:grid-cols-4`,children:[(0,Y.jsx)(Pc,{icon:Yr,from:`from-indigo-500`,to:`to-violet-600`,value:b.length,label:G(`engine.home.statTypes`,a),to_link:m}),(0,Y.jsx)(Pc,{icon:Ar,from:`from-sky-500`,to:`to-blue-600`,value:x.length,label:G(`engine.home.statWritable`,a),to_link:m}),(0,Y.jsx)(Pc,{icon:Le,from:`from-emerald-500`,to:`to-teal-600`,value:l.length,label:G(`engine.home.statPackages`,a),to_link:h}),(0,Y.jsxs)(n,{to:T?m:`metadata/_diagnostics${p}`,className:`group relative flex flex-col justify-between overflow-hidden rounded-2xl border p-4 transition-all hover:-translate-y-0.5 hover:shadow-lg `+(T?`border-emerald-200 bg-emerald-50/60 dark:border-emerald-900/50 dark:bg-emerald-950/30`:`border-amber-300 bg-amber-50/70 dark:border-amber-900/50 dark:bg-amber-950/30`),children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Y.jsx)(`div`,{className:`flex h-10 w-10 items-center justify-center rounded-xl bg-gradient-to-br text-white shadow-sm `+(T?`from-emerald-500 to-teal-600`:`from-amber-500 to-orange-600`),children:T?(0,Y.jsx)(Ar,{className:`h-5 w-5`}):(0,Y.jsx)(z,{className:`h-5 w-5`})}),(0,Y.jsx)(Xe,{className:`h-4 w-4 text-muted-foreground transition-transform group-hover:translate-x-0.5`})]}),(0,Y.jsxs)(`div`,{className:`mt-3`,children:[(0,Y.jsx)(`div`,{className:`text-2xl font-bold tabular-nums`,children:T?G(`engine.home.allHealthy`,a):w}),(0,Y.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:G(T?`engine.home.allHealthyHint`:`engine.home.statIssues`,a)})]})]})]}),C.length>0&&(0,Y.jsxs)(`section`,{children:[(0,Y.jsx)(Fc,{icon:B,title:G(`engine.home.quickActions`,a),hint:G(`engine.home.quickActionsHint`,a)}),(0,Y.jsx)(`div`,{className:`mt-3 flex flex-wrap gap-2.5`,children:C.map(e=>(0,Y.jsx)(U,{asChild:!0,variant:`outline`,size:`sm`,className:`group rounded-full border-transparent bg-muted hover:bg-primary/10 hover:text-primary`,children:(0,Y.jsxs)(n,{to:`metadata/${encodeURIComponent(e.type)}/new${p}`,children:[(0,Y.jsx)(B,{className:`mr-1 h-3.5 w-3.5 text-primary transition-transform group-hover:rotate-90`}),W(`engine.home.newItem`,a,{label:Ni(e.type,a,e.label)})]})},e.type))})]}),(0,Y.jsxs)(`div`,{className:`grid gap-6 lg:grid-cols-3`,children:[(0,Y.jsxs)(`section`,{className:`lg:col-span-2`,children:[(0,Y.jsx)(Fc,{icon:Yr,title:G(`engine.home.explore`,a),hint:G(`engine.home.exploreHint`,a)}),(0,Y.jsx)(`div`,{className:`mt-3 grid gap-4 sm:grid-cols-2`,children:S.map(([e,t])=>(0,Y.jsx)(Ic,{domain:e,group:t,countsByType:_,locale:a,packageSuffix:p},e))})]}),(0,Y.jsxs)(`section`,{children:[(0,Y.jsx)(Fc,{icon:rt,title:G(`engine.home.recent`,a)}),(0,Y.jsx)(`div`,{className:`mt-3 rounded-2xl border bg-card p-2`,children:i.length===0?(0,Y.jsx)(`div`,{className:`px-3 py-8 text-center text-xs text-muted-foreground`,children:G(`engine.home.recentEmpty`,a)}):(0,Y.jsx)(`ul`,{className:`space-y-0.5`,children:i.slice(0,8).map(e=>{let t=kc[e.type]??pe;return(0,Y.jsx)(`li`,{children:(0,Y.jsxs)(n,{to:e.href,className:`group flex items-center gap-3 rounded-xl px-3 py-2 transition-colors hover:bg-accent`,children:[(0,Y.jsx)(`span`,{className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-muted text-muted-foreground transition-colors group-hover:bg-primary/10 group-hover:text-primary`,children:(0,Y.jsx)(t,{className:`h-4 w-4`})}),(0,Y.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,Y.jsx)(`span`,{className:`block truncate text-sm font-medium`,children:e.label}),(0,Y.jsx)(`span`,{className:`block text-[11px] text-muted-foreground`,children:jc(e.visitedAt,a)})]}),(0,Y.jsx)(Xe,{className:`h-3.5 w-3.5 text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100`})]})},e.id)})})})]})]})]}),(0,Y.jsx)(Us,{})]})}function Nc({value:e,label:t}){return(0,Y.jsxs)(`div`,{className:`rounded-2xl bg-white/15 px-4 py-3 text-center backdrop-blur-sm ring-1 ring-white/20`,children:[(0,Y.jsx)(`div`,{className:`text-2xl font-bold tabular-nums leading-none`,children:e}),(0,Y.jsx)(`div`,{className:`mt-1 text-[11px] font-medium text-white/80`,children:t})]})}function Pc({icon:e,from:t,to:r,value:i,label:a,to_link:o}){return(0,Y.jsxs)(n,{to:o,className:`group relative flex flex-col justify-between overflow-hidden rounded-2xl border bg-card p-4 transition-all hover:-translate-y-0.5 hover:border-primary/40 hover:shadow-lg`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Y.jsx)(`div`,{className:`flex h-10 w-10 items-center justify-center rounded-xl bg-gradient-to-br ${t} ${r} text-white shadow-sm`,children:(0,Y.jsx)(e,{className:`h-5 w-5`})}),(0,Y.jsx)(Xe,{className:`h-4 w-4 text-muted-foreground opacity-0 transition-all group-hover:translate-x-0.5 group-hover:opacity-100`})]}),(0,Y.jsxs)(`div`,{className:`mt-3`,children:[(0,Y.jsx)(`div`,{className:`text-2xl font-bold tabular-nums`,children:i}),(0,Y.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:a})]})]})}function Fc({icon:e,title:t,hint:n}){return(0,Y.jsxs)(`div`,{className:`flex items-baseline gap-2.5`,children:[(0,Y.jsxs)(`h2`,{className:`flex items-center gap-2 text-base font-semibold`,children:[(0,Y.jsx)(e,{className:`h-4 w-4 text-muted-foreground`}),t]}),n&&(0,Y.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:n})]})}function Ic({domain:e,group:t,countsByType:r,locale:i,packageSuffix:a}){let o=Tc[e]??pe,s=Ec[e]??Ec.other,c=t.slice(0,6),l=t.length-c.length;return(0,Y.jsxs)(`div`,{className:`group rounded-2xl border bg-card p-4 ring-1 ring-transparent transition-all hover:-translate-y-0.5 hover:shadow-lg ${s.ring}`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,Y.jsx)(`div`,{className:`flex h-9 w-9 items-center justify-center rounded-xl bg-gradient-to-br ${s.from} ${s.to} text-white shadow-sm`,children:(0,Y.jsx)(o,{className:`h-[18px] w-[18px]`})}),(0,Y.jsxs)(`div`,{className:`min-w-0`,children:[(0,Y.jsx)(`div`,{className:`truncate text-sm font-semibold`,children:Ai(e,i)}),(0,Y.jsxs)(`div`,{className:`text-[11px] text-muted-foreground`,children:[t.length,` `,G(`engine.home.typesLower`,i)]})]})]}),(0,Y.jsxs)(`div`,{className:`mt-3 flex flex-wrap gap-1.5`,children:[c.map(e=>(0,Y.jsxs)(n,{to:`metadata/${encodeURIComponent(e.type)}${a}`,className:`inline-flex items-center gap-1.5 rounded-lg border bg-background px-2 py-1 text-xs transition-colors hover:border-primary/50 hover:bg-accent`,children:[(0,Y.jsx)(`span`,{className:`truncate max-w-[10rem]`,children:Ni(e.type,i,e.label)}),(0,Y.jsx)(`span`,{className:`tabular-nums text-[10px] text-muted-foreground`,children:r[e.type]??0})]},e.type)),l>0&&(0,Y.jsxs)(n,{to:`metadata${a}`,className:`inline-flex items-center gap-1 rounded-lg px-2 py-1 text-xs font-medium ${s.text} hover:underline`,children:[`+`,l]})]})]})}function Lc({entry:e,itemName:t,subtitle:i,stats:a,actions:o,embedded:s=!1,children:c}){let l=e?.type??``,u=Mi(),d=Ni(l,u,e?.label),{pathname:f}=r(),p=X.useMemo(()=>{let e=f.indexOf(`/metadata`);return e>=0?f.slice(0,e+9):`/metadata`},[f]);return(0,Y.jsxs)(`div`,{className:`flex flex-col h-full overflow-hidden`,children:[t?(0,Y.jsxs)(`div`,{className:`px-6 py-2.5 border-b bg-background flex items-center gap-3 min-h-[44px]`,children:[(0,Y.jsxs)(`nav`,{className:`flex items-center gap-1.5 text-xs text-muted-foreground min-w-0`,children:[s?(0,Y.jsx)(`span`,{className:`shrink-0`,children:d}):(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(n,{to:p,className:`hover:text-foreground shrink-0`,children:G(`engine.breadcrumb.allTypes`,u)}),(0,Y.jsx)(fr,{className:`h-3 w-3 shrink-0`}),(0,Y.jsx)(n,{to:`${p}/${encodeURIComponent(l)}`,className:`hover:text-foreground shrink-0`,children:d})]}),(0,Y.jsx)(fr,{className:`h-3 w-3 shrink-0`}),(0,Y.jsx)(`span`,{className:`text-foreground font-medium font-mono truncate`,title:t,children:t})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5 shrink-0`,children:[e?.domain&&(0,Y.jsx)(I,{variant:`outline`,className:`text-[10px] uppercase tracking-wider h-5 px-1.5`,children:Ai(e.domain,u)}),e?.allowOrgOverride?(0,Y.jsx)(I,{className:`text-[10px] h-5 px-1.5 `+(e.overrideSource===`env`?`bg-amber-100 text-amber-800 hover:bg-amber-100`:`bg-emerald-100 text-emerald-800 hover:bg-emerald-100`),title:e.overrideSource===`env`?`Writable via OBJECTSTACK_METADATA_WRITABLE env var`:`Writable per ADR-0005 overlay opt-in`,children:G(`engine.badge.writable`,u)}):e?.allowRuntimeCreate?(0,Y.jsx)(I,{className:`text-[10px] h-5 px-1.5 bg-sky-100 text-sky-800 hover:bg-sky-100`,title:`Code-shipped items are locked; new items can be created at runtime`,children:G(`engine.badge.createOnly`,u)}):(0,Y.jsx)(I,{variant:`outline`,className:`text-[10px] h-5 px-1.5 text-muted-foreground`,children:G(`engine.badge.readOnly`,u)})]}),i&&(0,Y.jsx)(`div`,{className:`text-xs text-muted-foreground truncate`,children:i}),(0,Y.jsx)(`div`,{className:`flex-1`}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 shrink-0`,children:[a?.map((e,t)=>(0,Y.jsxs)(`div`,{className:`flex items-baseline gap-1 px-2 py-0.5 rounded border bg-muted/30`,children:[(0,Y.jsx)(`span`,{className:`text-[10px] uppercase tracking-wider text-muted-foreground`,children:e.label}),(0,Y.jsx)(`span`,{className:`text-xs font-semibold tabular-nums`,children:e.value})]},t)),o]})]}):(0,Y.jsxs)(`div`,{className:`px-6 pt-5 pb-4 border-b bg-background`,children:[!s&&(0,Y.jsxs)(`nav`,{className:`flex items-center gap-1.5 text-xs text-muted-foreground mb-2`,children:[(0,Y.jsx)(n,{to:p,className:`hover:text-foreground`,children:G(`engine.breadcrumb.allTypes`,u)}),(0,Y.jsx)(fr,{className:`h-3 w-3`}),(0,Y.jsx)(`span`,{className:`text-foreground font-medium`,children:d})]}),(0,Y.jsxs)(`div`,{className:`flex items-start justify-between gap-3 flex-wrap`,children:[(0,Y.jsxs)(`div`,{className:`min-w-0`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,Y.jsx)(`h1`,{className:`text-xl font-semibold truncate`,children:d}),(0,Y.jsx)(`code`,{className:`text-xs font-mono text-muted-foreground`,children:l}),e?.domain&&(0,Y.jsx)(I,{variant:`outline`,className:`text-[10px] uppercase tracking-wider`,children:Ai(e.domain,u)}),e?.allowOrgOverride?(0,Y.jsx)(I,{className:`text-[10px] `+(e.overrideSource===`env`?`bg-amber-100 text-amber-800 hover:bg-amber-100`:`bg-emerald-100 text-emerald-800 hover:bg-emerald-100`),title:e.overrideSource===`env`?`Writable via OBJECTSTACK_METADATA_WRITABLE env var`:`Writable per ADR-0005 overlay opt-in`,children:G(`engine.badge.writable`,u)}):e?.allowRuntimeCreate?(0,Y.jsx)(I,{className:`text-[10px] bg-sky-100 text-sky-800 hover:bg-sky-100`,title:`Code-shipped items are locked; new items can be created at runtime`,children:G(`engine.badge.createOnly`,u)}):(0,Y.jsx)(I,{variant:`outline`,className:`text-[10px] text-muted-foreground`,children:G(`engine.badge.readOnly`,u)})]}),i&&(0,Y.jsx)(`div`,{className:`text-sm text-muted-foreground mt-1`,children:i}),!i&&e?.description&&(0,Y.jsx)(`div`,{className:`text-sm text-muted-foreground mt-1 max-w-3xl`,children:e.description})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[a?.map((e,t)=>(0,Y.jsxs)(`div`,{className:`flex flex-col items-end px-3 py-1 rounded border bg-muted/30 min-w-[64px]`,children:[(0,Y.jsx)(`span`,{className:`text-[10px] uppercase tracking-wider text-muted-foreground`,children:e.label}),(0,Y.jsx)(`span`,{className:`text-sm font-semibold tabular-nums`,children:e.value})]},t)),o]})]})]}),(0,Y.jsx)(`div`,{className:`flex-1 overflow-auto`,children:c})]})}var Rc={primary:`default`,secondary:`secondary`,danger:`destructive`,ghost:`ghost`,link:`link`};function zc(e,t,n){return e.indexOf("${")===-1?e:e.replace(/\$\{(param|ctx)\.([\w.]+)\}/g,(e,r,i)=>{let a=r===`param`?n:t,o=i.split(`.`).reduce((e,t)=>e?.[t],a);return o==null?``:encodeURIComponent(String(o))})}function Bc({entry:e,location:t,recordId:n,onAfter:r}){let[i,a]=X.useState(null),[o,s]=X.useState({open:!1,params:[]}),[c,l]=X.useState({open:!1}),u=X.useMemo(()=>f(),[]),d=X.useMemo(()=>(e?.actions??[]).filter(e=>ee(e,t)),[e?.actions,t]);if(d.length===0)return null;let p=(e,t)=>new Promise(n=>{s({open:!0,params:e,title:t,resolve:n})}),m=async e=>{let t=e.label??e.name;if(e.type!==`api`){di.error(`Action “${t}”: type "${e.type??`script`}" is not supported here yet.`);return}if(e.confirmText&&!window.confirm(e.confirmText))return;let i;if(Array.isArray(e.params)&&e.params.length>0){let n=await p(e.params,t);if(n==null)return;i=n}else i=e.params??{};let o={recordId:n,origin:window.location.origin},s=zc(e.target??``,o,i);if(!s){di.error(`Action “${t}” has no target.`);return}let c=``.replace(/\/+$/,``),d=/^https?:\/\//i.test(s)?s:`${c}${s}`,f=(e.method||`POST`).toUpperCase();a(e.name);try{let n={method:f,headers:{"Content-Type":`application/json`},credentials:`include`};f!==`GET`&&f!==`DELETE`&&(n.body=JSON.stringify(i));let a=await u(d,n),o=null;try{o=await a.json()}catch{}let s=o&&typeof o.success==`boolean`&&`data`in o?o.data:o;if(!a.ok||o&&o.success===!1){let n=o?.error,r=(typeof n==`object`&&n?n.message:void 0)||(typeof n==`string`?n:void 0)||o?.message||`HTTP ${a.status} ${a.statusText}`.trim();di.error(`${e.errorMessage?`${e.errorMessage}: `:``}${t}: ${r}`);return}if(e.resultDialog)l({open:!0,spec:e.resultDialog,data:s??{}});else{let n=e.successMessage||(typeof s?.message==`string`?s.message:`${t} ✓`);di.success(n)}e.refreshAfter&&r?.()}catch(e){di.error(`${t}: ${e?.message??String(e)}`)}finally{a(null)}};return(0,Y.jsxs)(Y.Fragment,{children:[d.map(e=>{let t=e.icon?Oi(e.icon):null,n=i===e.name;return(0,Y.jsxs)(U,{size:`sm`,variant:Rc[e.variant??`secondary`]??`secondary`,disabled:n,onClick:()=>m(e),title:e.label??e.name,children:[n?(0,Y.jsx)(H,{className:`h-4 w-4 mr-1 animate-spin`}):t?(0,Y.jsx)(t,{className:`h-4 w-4 mr-1`}):null,e.label??e.name]},e.name)}),(0,Y.jsx)(hi,{state:o,onOpenChange:e=>{e||(o.resolve?.(null),s({open:!1,params:[]}))}}),(0,Y.jsx)(vi,{state:c,onAcknowledge:()=>l({open:!1})})]})}function Vc(e){let t=(Array.isArray(e)?e:[e]).map(e=>e.split(`.`));return(e,n)=>{for(let r of t){let t=e;for(let e of r)if(t&&typeof t==`object`&&e in t)t=t[e];else{t=void 0;break}if(t===n)return!0}return!1}}var Hc=new Map;function Uc(e){let t=Hc.get(e.type);if(!t){Hc.set(e.type,e);return}let n={...t};for(let[t,r]of Object.entries(e))r!==void 0&&(n[t]=r);Hc.set(e.type,n)}function Wc(e){return Hc.get(e)}function Gc(e){let t=[];for(let n of Hc.values())if(n.anchors?.length)for(let r of n.anchors)r.anchorType===e&&t.push({type:n.type,config:n,anchor:r});return t.sort((e,t)=>{let n=e.anchor.order??100,r=t.anchor.order??100;if(n!==r)return n-r;let i=e.anchor.groupLabel??e.config.label??e.type,a=t.anchor.groupLabel??t.config.label??t.type;return i.localeCompare(a)}),t}function Kc(e,t){let n=Hc.get(e)??{type:e};return{...n,type:e,label:n.label??t?.label??e,description:n.description??t?.description,domain:n.domain??t?.domain??`other`,allowOrgOverride:t?.allowOrgOverride,defaultSchema:n.defaultSchema}}function qc(e,t){if(t===`overlay`||t===`runtime`)return`runtime`;if(t===`code`||t===`artifact`)return`artifact`;let n=e._packageId;return!n||n===`sys_metadata`?`runtime`:`artifact`}function Jc({type:e}){let t=s(),n=e??t.type??``;if(n===`package`){let e=t.appName??`studio`;return(0,Y.jsx)(l,{to:`/apps/${e}/component/developer/packages`,replace:!0})}let r=Wc(n);if(r?.ListPage){let e=r.ListPage;return(0,Y.jsx)(e,{type:n})}return(0,Y.jsx)(Yc,{type:n,appName:t.appName})}function Yc({type:e,appName:t}){let r=i(),a=Hi(),{entries:s}=Wi(a),c=s.find(t=>t.type===e),l=Kc(e,c),[u,d]=X.useState([]),[f,p]=X.useState(!0),[m,h]=X.useState(null),[g,_]=X.useState(``),[v,y]=X.useState(`all`),[b,x]=o(),[S,C]=X.useState(0),[w,T]=X.useState(null);X.useEffect(()=>{let e=!1;return(async()=>{try{let t=await a.list(`package`);if(e)return;T(Gs(t))}catch{e||T([])}})(),()=>{e=!0}},[a]);let[E,D]=X.useState(null);X.useEffect(()=>{let e=!1;if(!t){D(null);return}return(async()=>{try{let n=await a.list(`app`);if(e)return;let r=(n??[]).map(e=>e&&typeof e==`object`&&`item`in e?e.item:e).find(e=>e?.name===t||e?._packageId===t);D(r?._packageId??null)}catch{e||D(null)}})(),()=>{e=!0}},[a,t]);let O=b.get(`package`),k=X.useMemo(()=>{if(!w)return null;if(O&&w.some(e=>e.id===O))return O;if(w.length===0)return null;if(E&&w.some(e=>e.id===E))return E;let e=new Map;for(let t of u){let n=t.item?._packageId;n&&n!==`sys_metadata`&&e.set(n,(e.get(n)??0)+1)}let t=null,n=0;for(let r of w){let i=e.get(r.id)??0;i>n&&(t=r.id,n=i)}return t??w[0]?.id??null},[w,O,u,E]);X.useEffect(()=>{if(!w||w.length===0||O&&w.some(e=>e.id===O)||!(E&&w.some(e=>e.id===E))&&u.length===0||!k)return;let e=new URLSearchParams(b);e.set(`package`,k),x(e,{replace:!0})},[w,O,u,k,E]);let A=k?`?package=${encodeURIComponent(k)}`:``,[j,M]=X.useState(!1),ee=X.useCallback(()=>{let e=w??[];if(w!==null&&e.length===0){M(!0);return}if(e.length>0&&!k){r(`./new?package=${encodeURIComponent(e[0].id)}`);return}r(`./new${A}`)},[w,k,A,r]);X.useEffect(()=>{let t=!1;return p(!0),h(null),(async()=>{try{let n=await a.list(e);if(t)return;let r=(n??[]).map(e=>{let t=(e&&typeof e==`object`&&`item`in e?e.item:e)??{},n=t?._diagnostics??e?._diagnostics??void 0;return{raw:e,item:t,source:qc(t,e?.source),diagnostics:n}});d(r),p(!1)}catch(e){t||(h(e?.message??String(e)),p(!1))}})(),()=>{t=!0}},[a,e,S]);let te=l.searchableFields??[`name`,`label`,`description`],N=X.useMemo(()=>u.filter(e=>l.listFilter&&!l.listFilter(e.item)||!k?!1:e.item?._packageId===k),[u,k,l]),ne=N.filter(e=>!(!Bi(e.item,g,te)||v!==`all`&&e.source!==v)),re=X.useMemo(()=>{let e={all:N.length,artifact:0,runtime:0};for(let t of N)e[t.source]++;return e},[N]),ie=X.useMemo(()=>N.filter(e=>e.diagnostics&&e.diagnostics.valid===!1).length,[N]),ae=X.useMemo(()=>N.filter(e=>e.diagnostics&&e.diagnostics.valid!==!1&&(e.diagnostics.warnings?.length??0)>0).length,[N]),P=l.listColumns??Xc(l.primaryKey??`name`),F=Mi(),oe=Ni(e,F,c?.label??e),se=e=>{let t=`engine.list.col.${e.key}`,n=G(t,F);return n===t?e.label:n};return(0,Y.jsx)(Lc,{entry:c??{type:e,label:e},stats:[{label:G(`engine.list.items`,F),value:N.length},{label:G(`engine.list.filtered`,F),value:ne.length},...ie>0?[{label:G(`engine.list.invalid`,F),value:(0,Y.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-destructive`,children:[(0,Y.jsx)(z,{className:`w-3.5 h-3.5`}),ie]})}]:[],...ae>0?[{label:G(`engine.list.warnings`,F),value:(0,Y.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-amber-600 dark:text-amber-400`,children:[(0,Y.jsx)(z,{className:`w-3.5 h-3.5`}),ae]})}]:[]],actions:(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(Bc,{entry:c,location:`list_toolbar`,onAfter:()=>C(e=>e+1)}),(0,Y.jsx)(U,{variant:`ghost`,size:`sm`,onClick:()=>C(e=>e+1),title:G(`engine.list.refresh`,F),children:(0,Y.jsx)(gr,{className:`h-4 w-4`})}),(c?.allowOrgOverride||c?.allowRuntimeCreate)&&(0,Y.jsxs)(U,{size:`sm`,variant:l.createFields?`default`:`outline`,onClick:ee,title:l.createFields?W(`engine.list.createHint`,F,{type:oe}):void 0,children:[(0,Y.jsx)(B,{className:`h-4 w-4 mr-1`}),G(`engine.list.create`,F)]})]}),children:(0,Y.jsxs)(`div`,{className:`p-6 space-y-4`,children:[(0,Y.jsx)(yc,{open:j,onOpenChange:M,onCreated:e=>r(`./new?package=${encodeURIComponent(e)}`)}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 flex-wrap`,children:[(0,Y.jsxs)(`div`,{className:`relative flex-1 min-w-[200px] max-w-md`,children:[(0,Y.jsx)(He,{className:`absolute left-2.5 top-1/2 -translate-y-1/2 h-3.5 w-3.5 text-muted-foreground`}),(0,Y.jsx)(R,{className:`pl-8`,placeholder:G(`engine.list.search`,F),value:g,onChange:e=>_(e.target.value)})]}),(0,Y.jsxs)(Sr,{value:v,onValueChange:y,children:[(0,Y.jsx)(Rn,{className:`w-[180px]`,children:(0,Y.jsx)(nn,{})}),(0,Y.jsxs)(lr,{children:[(0,Y.jsxs)(Wn,{value:`all`,children:[G(`engine.list.allSources`,F),` (`,re.all,`)`]}),(0,Y.jsxs)(Wn,{value:`artifact`,children:[G(`engine.list.source.artifact`,F),` (`,re.artifact,`)`]}),(0,Y.jsxs)(Wn,{value:`runtime`,children:[G(`engine.list.source.runtime`,F),` (`,re.runtime,`)`]})]})]})]}),(f||w===null)&&(0,Y.jsxs)(`div`,{className:`text-sm text-muted-foreground`,children:[G(`engine.edit.loading`,F),` `,e,`…`]}),m&&(0,Y.jsx)(`div`,{className:`text-sm text-destructive border border-destructive/30 rounded p-3 bg-destructive/5`,children:m}),!f&&!m&&w!==null&&w.length===0&&(0,Y.jsxs)(zr,{children:[(0,Y.jsx)(On,{children:`No project packages installed`}),(0,Y.jsx)(bn,{children:`Studio only shows metadata that belongs to a project software package. Install or create a project package to manage its metadata here.`})]}),!f&&!m&&w!==null&&w.length>0&&ne.length===0&&(0,Y.jsxs)(zr,{children:[(0,Y.jsx)(On,{children:N.length===0?W(`engine.list.emptyType`,F,{type:oe}):W(`engine.list.emptyQuery`,F,{query:g})}),(0,Y.jsx)(bn,{children:l.emptyStateHint??(c?.allowOrgOverride||c?.allowRuntimeCreate?W(`engine.list.createHint`,F,{type:oe}):G(`engine.list.readOnlyHint`,F))}),N.length===0&&(c?.allowOrgOverride||c?.allowRuntimeCreate)&&(0,Y.jsx)(`div`,{className:`mt-4`,children:(0,Y.jsxs)(U,{onClick:ee,children:[(0,Y.jsx)(B,{className:`h-4 w-4 mr-1`}),G(`engine.list.create`,F)]})})]}),!f&&ne.length>0&&(0,Y.jsx)(`div`,{className:`border rounded-lg overflow-hidden`,children:(0,Y.jsxs)(`table`,{className:`w-full text-sm`,children:[(0,Y.jsx)(`thead`,{className:`bg-muted/40 text-xs uppercase tracking-wider text-muted-foreground`,children:(0,Y.jsxs)(`tr`,{children:[P.map(e=>(0,Y.jsx)(`th`,{className:`px-3 py-2 text-left font-medium`,style:e.width?{width:e.width}:void 0,children:se(e)},e.key)),(0,Y.jsx)(`th`,{className:`px-3 py-2 text-right font-medium w-[80px]`,children:G(`engine.list.col.source`,F)})]})}),(0,Y.jsx)(`tbody`,{className:`divide-y`,children:ne.map((e,t)=>{let r=l.primaryKey??`name`,i=String(e.item[r]??`(unnamed-${t})`),a=e.item._packageId,o=a&&a!==`sys_metadata`?`?package=${encodeURIComponent(a)}`:A,s=e.diagnostics?.valid===!1,c=e.diagnostics?.errors??[],u=e.diagnostics?.warnings??[],d=!s&&u.length>0,f=s?c.slice(0,3).map(e=>`${e.path||`(root)`}: ${e.message}`).join(`
2
+ import{o as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{a as n,d as r,f as i,g as a,h as o,m as s,r as c,s as l,y as u}from"./vendor-react-DpRf6e0g.js";import{_ as d,y as f}from"./infrastructure-PXm1h5tB.js";import{S as p,T as m,b as h,d as g,g as _,h as v,l as y,p as b,pt as x,s as S,u as C,x as w}from"./vendor-objectstack-CWf5hLam.js";import{Ct as T,D as E,J as D,N as O,On as k,P as A,Rt as j,St as M,an as ee,bn as te,et as N,in as ne,rn as re,xt as ie}from"./framework-UESyszCj.js";import{$a as ae,$n as P,$o as F,$r as oe,Aa as se,At as ce,Bc as le,Bi as ue,Bo as de,Bs as fe,Cc as pe,Cn as me,Co as he,Cr as I,Da as ge,Di as _e,Ds as ve,Ea as ye,Ec as be,Ei as xe,Eo as Se,Es as Ce,F as we,Ft as Te,Ga as Ee,Gc as L,Gi as De,Go as Oe,Gr as ke,Gs as Ae,Ha as je,Hc as Me,Hi as Ne,Ho as Pe,Hr as Fe,I as Ie,Ia as Le,Ii as Re,Io as ze,Is as Be,It as Ve,Ji as He,Jr as Ue,Ka as We,Ki as Ge,Ko as Ke,Kr as qe,Ks as Je,La as Ye,Lc as Xe,Li as Ze,Ls as Qe,Lt as $e,Mc as et,Mi as tt,Mo as nt,Ms as rt,Mt as it,Na as at,Nc as ot,No as st,Nt as ct,Oa as lt,Oc as ut,Oo as dt,Os as ft,Ot as pt,P as mt,Pa as ht,Pc as gt,Pi as _t,Pt as vt,Qa as yt,Qc as bt,Qi as xt,Qo as St,Ra as Ct,Ri as wt,Ro as Tt,Rs as Et,Rt as Dt,Sa as Ot,Sc as kt,Si as At,Sn as jt,Ss as Mt,Tn as R,To as Nt,Ts as Pt,Uc as Ft,Ui as It,Uo as Lt,Ur as Rt,Va as zt,Vo as Bt,Vr as Vt,Wc as Ht,Wo as Ut,Wr as Wt,Ws as Gt,Xi as Kt,Xo as qt,Xs as Jt,Ya as Yt,Yi as Xt,Yo as Zt,Za as Qt,Zs as $t,_a as en,_c as tn,_n as nn,_o as rn,_s as an,aa as on,ac as sn,ai as cn,an as ln,ao as un,ar as dn,ba as fn,bc as pn,bi as mn,bs as hn,bt as gn,ci as z,cn as _n,cr as vn,cs as yn,ct as bn,da as xn,dc as Sn,di as Cn,dn as wn,do as Tn,dr as En,ds as Dn,dt as On,ec as kn,ei as An,es as jn,fc as Mn,fn as Nn,fo as Pn,fr as Fn,fs as In,ga as Ln,gn as Rn,go as zn,gr as Bn,gs as Vn,ha as B,hc as Hn,hi as Un,hn as Wn,hr as Gn,ht as Kn,ic as qn,ir as Jn,is as Yn,jo as Xn,jt as Zn,ka as Qn,ki as $n,kn as V,kt as er,la as tr,lc as nr,ln as rr,lr as ir,ls as ar,ma as or,mc as sr,mi as cr,mn as lr,mr as ur,ms as dr,nc as fr,no as pr,nr as mr,ns as hr,oa as gr,oi as _r,oo as H,os as vr,ot as yr,pa as br,pc as xr,pn as Sr,po as Cr,pr as wr,ps as Tr,qa as Er,qi as Dr,qo as Or,qr as kr,qs as Ar,ra as jr,ri as Mr,rr as Nr,sc as Pr,si as Fr,sn as Ir,so as Lr,sr as Rr,st as zr,ta as Br,tc as Vr,to as Hr,tr as Ur,uc as Wr,ui as Gr,un as Kr,ur as qr,vc as Jr,vo as Yr,vs as Xr,wa as Zr,wc as Qr,wn as $r,ws as ei,xc as ti,xi as ni,xs as ri,xt as ii,yo as ai,yt as oi,zc as si,zi as ci,zo as li,zr as U,zt as ui}from"./ui-components-BbC0qTrK.js";import{r as di}from"./vendor-ui-utils-CnzHPXVC.js";import"./AdapterProvider-Bur-uZKZ.js";import"./MetadataProvider-D9fSVVZp.js";import{n as fi,o as pi}from"./assistantBus-CpACs9I7.js";import{A as mi,F as hi,K as gi,M as _i,N as vi,W as yi,X as bi,Y as xi,j as Si,k as Ci,q as wi}from"./RecordDetailView-CP1b5rdr.js";import{f as Ti}from"./plugin-chatbot-DmEp7ZGx.js";import{n as Ei}from"./ui-layout-C3eKqnNJ.js";import{t as Di}from"./InterfaceListPage-DcFmVgXg.js";import{t as Oi}from"./getIcon-D3yCrAri.js";import{a as ki,c as Ai,d as ji,h as Mi,i as W,l as Ni,m as Pi,n as Fi,r as G,s as Ii,t as Li,u as Ri}from"./i18n-DBmEJ9U1.js";import{a as zi,i as Bi,n as Vi,o as Hi,r as Ui,s as Wi,t as Gi}from"./createDerive-CGF05Hgy.js";import{$ as Ki,A as qi,B as K,C as Ji,D as Yi,E as Xi,F as q,G as Zi,H as J,I as Qi,J as $i,K as ea,L as ta,M as na,N as ra,O as ia,P as aa,Q as oa,R as sa,S as ca,T as la,U as ua,V as da,W as fa,X as pa,Y as ma,Z as ha,_ as ga,a as _a,at as va,b as ya,c as ba,d as xa,et as Sa,f as Ca,g as wa,h as Ta,i as Ea,it as Da,j as Oa,k as ka,l as Aa,m as ja,n as Ma,nt as Na,o as Pa,p as Fa,q as Ia,r as La,rt as Ra,s as za,st as Ba,t as Va,tt as Ha,u as Ua,v as Wa,w as Ga,x as Ka,y as qa,z as Ja}from"./ReportDefaultInspector-BqgFtk2E.js";import{n as Ya}from"./plugins-views-CJKuyDvq.js";import{r as Xa}from"./dist-B-Me1R-n.js";var Y=c(),X=e(u(),1);function Za(){let e={BASE_URL:`./`,DEV:!1,MODE:`production`,PROD:!0,SSR:!1,VITE_SENTRY_DSN:`https://1373a588ceb9da150b11e64bf85f583d@o4510356161757184.ingest.us.sentry.io/4511439670673408`,VITE_SENTRY_ENVIRONMENT:`production`,VITE_SENTRY_SEND_DEFAULT_PII:`true`,VITE_SERVER_URL:``,VITE_USE_MOCK_SERVER:`false`},t=e.VITE_AI_BASE_URL;return t?t.replace(/\/$/,``):`${(e.VITE_SERVER_URL??``).replace(/\/$/,``)}/api/v1/ai`}function Qa(){let{agents:e,isLoading:t}=Ti({apiBase:Za()}),n=(0,X.useRef)(!1);t&&(n.current=!0);let r=e.length>0;return{enabled:r,isLoading:r?!1:t||!n.current}}var $a=`flow-palette-recents`,eo=$a,to=5;function no(){try{if(typeof localStorage>`u`)return[];let e=localStorage.getItem(eo);if(!e)return[];let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`string`).slice(0,to):[]}catch{return[]}}function ro(e){if(e)try{if(typeof localStorage>`u`)return;let t=[e,...no().filter(t=>t!==e)].slice(0,to);localStorage.setItem(eo,JSON.stringify(t))}catch{}}var io=$a;function ao(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`).slice(0,5):[]}function oo(e){try{let t=localStorage.getItem(wi(io,e));return t?ao(JSON.parse(t)):[]}catch{return[]}}function so(e,t){try{localStorage.setItem(wi(io,t),JSON.stringify(e))}catch{}}function co(e,t){if(!t)return{list:e,didMigrate:!1};let n;try{n=localStorage.getItem(io)}catch{return{list:e,didMigrate:!1}}if(n==null)return{list:e,didMigrate:!1};let r=[];try{r=ao(JSON.parse(n))}catch{}try{localStorage.removeItem(io)}catch{}if(r.length===0)return{list:e,didMigrate:!0};let i=[...e];for(let e of r)i.includes(e)||i.push(e);return{list:i.slice(0,5),didMigrate:!0}}var lo=(0,X.createContext)(null);function uo({children:e}){let{user:t}=d(),n=t?.id??null,r=bi(`flowPaletteRecents`),[i,a]=(0,X.useState)(()=>oo(n));xi(wi(io,n),e=>{a(ao(e))});let o=(0,X.useMemo)(()=>gi(async e=>{r&&await r.save(e)},500),[r]);(0,X.useEffect)(()=>()=>void o.flush(),[o]);let s=(0,X.useCallback)(e=>{so(e,n),r&&o.schedule(e)},[n,r,o]),c=(0,X.useRef)(0);(0,X.useEffect)(()=>{let e=++c.current,t=!1;return(async()=>{let i=oo(n),s=r?ao(await r.load().catch(()=>[])):[];if(t||e!==c.current)return;let{list:l,didMigrate:u}=co(s.length?s:i,n);a(l),so(l,n),u&&r&&o.schedule(l)})(),()=>{t=!0}},[r,n,o]);let l=(0,X.useCallback)(e=>{e&&a(t=>{let n=[e,...t.filter(t=>t!==e)].slice(0,5);return s(n),n})},[s]),u=(0,X.useMemo)(()=>({recents:i,recordRecent:l}),[i,l]);return(0,Y.jsx)(lo.Provider,{value:u,children:e})}function fo(){let e=(0,X.useContext)(lo),[t,n]=(0,X.useState)(()=>no()),r=(0,X.useCallback)(e=>{ro(e),n(no())},[]);return e||{recents:t,recordRecent:r}}function po(e,t){let n=new Set(t.filter(e=>typeof e==`string`));for(let t=1;t<1e4;t++){let r=`${e}_${t}`;if(!n.has(r))return r}return`${e}_${Date.now()}`}function mo(e,t){if(!t)return!0;let n=t.toLowerCase();return e.value.toLowerCase().includes(n)||e.label.toLowerCase().includes(n)||(e.group?.toLowerCase().includes(n)??!1)}function ho({label:e,value:t,onCommit:n,options:r,placeholder:i=`Select…`,searchPlaceholder:a=`Search or type…`,emptyText:o=`No match — keep typing to use a custom value.`,disabled:s,loading:c,allowCustom:l=!0,mono:u,className:d}){let[f,p]=X.useState(!1),[m,h]=X.useState(``),g=r.find(e=>e.value===t),_=g?g.label:t||(c?`Loading…`:i),v=X.useMemo(()=>r.filter(e=>mo(e,m)),[r,m]),y=X.useMemo(()=>{let e=[],t=new Map;for(let n of v){let r=n.group??``;t.has(r)||(t.set(r,[]),e.push(r)),t.get(r).push(n)}return e.map(e=>({heading:e,items:t.get(e)}))},[v]),b=m.trim(),x=l&&!!b&&!r.some(e=>e.value===b),S=e=>{n(e),p(!1),h(``)},C=(0,Y.jsxs)(jt,{open:f,onOpenChange:e=>{p(e),e||h(``)},children:[(0,Y.jsx)($r,{asChild:!0,children:(0,Y.jsxs)(U,{type:`button`,variant:`outline`,role:`combobox`,"aria-expanded":f,disabled:s,className:L(`h-8 w-full justify-between px-2 text-sm font-normal`,d),children:[(0,Y.jsx)(`span`,{className:L(`truncate`,u&&`font-mono`,!g&&!t&&`text-muted-foreground`),children:_}),(0,Y.jsx)($t,{className:`ml-2 h-3.5 w-3.5 shrink-0 opacity-50`})]})}),(0,Y.jsx)(me,{align:`start`,className:`w-[var(--radix-popover-trigger-width)] min-w-[14rem] p-0`,children:(0,Y.jsxs)(P,{shouldFilter:!1,children:[(0,Y.jsx)(Nr,{value:m,onValueChange:h,placeholder:a}),(0,Y.jsxs)(dn,{children:[!x&&v.length===0&&(0,Y.jsx)(Ur,{children:o}),x&&(0,Y.jsx)(mr,{children:(0,Y.jsx)(Jn,{value:`__custom__${b}`,onSelect:()=>S(b),children:(0,Y.jsxs)(`span`,{className:`truncate`,children:[`Use `,(0,Y.jsxs)(`span`,{className:`font-mono`,children:[`“`,b,`”`]})]})})}),y.map((e,n)=>(0,Y.jsx)(mr,{heading:e.heading||void 0,children:e.items.map(e=>(0,Y.jsxs)(Jn,{value:e.value,onSelect:()=>S(e.value),children:[(0,Y.jsx)(sn,{className:L(`h-3.5 w-3.5`,e.value===t?`opacity-100`:`opacity-0`)}),(0,Y.jsx)(`span`,{className:`truncate font-mono`,children:e.value}),e.label&&e.label!==e.value&&(0,Y.jsx)(`span`,{className:`ml-1 truncate text-muted-foreground`,children:e.label}),e.hint&&(0,Y.jsx)(`span`,{className:`ml-auto pl-2 text-[10px] text-muted-foreground`,children:e.hint})]},e.value))},e.heading||`g${n}`))]})]})})]});return e?(0,Y.jsxs)(`div`,{className:`space-y-1`,children:[(0,Y.jsx)(V,{className:`text-xs text-muted-foreground`,children:e}),C]}):C}var go=[`object`,`page`,`dashboard`,`report`,`url`,`group`],_o=[`default`,`view`,`record`,`filters`],vo={object:{targetKey:`objectName`,metaType:`object`},page:{targetKey:`pageName`,metaType:`page`},dashboard:{targetKey:`dashboardName`,metaType:`dashboard`},report:{targetKey:`reportName`,metaType:`report`},url:{targetKey:`url`},group:{}};function yo(e){return(e.pageType??e.type)!==`record`}var bo=[`objectName`,`viewName`,`recordId`,`recordMode`,`filters`,`pageName`,`dashboardName`,`reportName`,`url`,`target`,`params`],xo=[`path`,`kind`,`href`,`route`,`object`,`page`,`dashboard`,`report`],So={object:`object`,page:`page`,dashboard:`dashboard`,report:`report`,link:`url`,url:`url`,group:`group`};function Co(e){let t=e.type;if(typeof t==`string`&&go.includes(t))return t;let n=e.kind;if(typeof n==`string`&&So[n])return So[n];if(e.objectName||e.object)return`object`;if(e.pageName||e.page)return`page`;if(e.dashboardName||e.dashboard)return`dashboard`;if(e.reportName||e.report)return`report`;if(e.url||e.href)return`url`;if(Array.isArray(e.children)&&e.children.length>0)return`group`;let r=e.path;return typeof r==`string`&&/^https?:/i.test(r)?`url`:null}function wo(e){if(e.recordId)return`record`;let t=e.filters;return t&&typeof t==`object`&&!Array.isArray(t)?`filters`:e.viewName?`view`:`default`}function To(e=[]){let t={};for(let n of[...bo,...xo])e.includes(n)||(t[n]=void 0);return t}var Eo={default:[`objectName`],view:[`objectName`,`viewName`],record:[`objectName`,`recordId`,`recordMode`],filters:[`objectName`,`filters`]};function Do(e,t,n){let r=e.id;if(typeof r==`string`&&r)return r;let i=`nav_${(n??String(e.objectName??e.label??`item`)).toLowerCase().replace(/[^a-z0-9]+/g,`_`).replace(/^_+|_+$/g,``)||`item`}`,a=new Set(t.map(e=>typeof e.id==`string`?e.id:``).filter(Boolean));if(!a.has(i))return i;let o=2;for(;a.has(`${i}_${o}`);)o++;return`${i}_${o}`}var Oo=[`nav`,`navigation`,`tabs`,`items`,`menu`];function ko(e){let t=e.split(`.`),n=[];for(let e of t){let t=/^([a-zA-Z_]\w*)\[(\d+)\]$/.exec(e);if(!t)return null;n.push({key:t[1],index:Number(t[2])})}return n.length>0?n:null}function Ao(e,t){let n=e[t[0].key];if(!Array.isArray(n))return{parent:[],node:null,index:-1};let r=n[t[0].index]??null;for(let e=1;e<t.length;e++){if(!r)return{parent:n,node:null,index:t[e].index};if(n=r[t[e].key],!Array.isArray(n))return{parent:[],node:null,index:-1};r=n[t[e].index]??null}return{parent:n,node:r,index:t[t.length-1].index}}function jo(e,t,n){let r=t[0].key,i=Array.isArray(e[r])?[...e[r]]:[];if(t.length===1)return{[r]:Zi(i,t[0].index,n)};let a=i,o=[];for(let e=0;e<t.length-1;e++){let n={...a[t[e].index]??{}};o.push({arr:a,index:t[e].index,node:n});let r=t[e+1].key,i=Array.isArray(n[r])?[...n[r]]:[];n[r]=i,a[t[e].index]=n,a=i}let s=Zi(a,t[t.length-1].index,n);return o[o.length-1].node[t[t.length-1].key]=s,{[r]:i}}function Mo(e,t,n){let r=t[0].key;if(t.length===1)return{[r]:n};let i=Array.isArray(e[r])?[...e[r]]:[],a=i;for(let e=0;e<t.length-2;e++){let n={...a[t[e].index]??{}},r=t[e+1].key,i=Array.isArray(n[r])?[...n[r]]:[];n[r]=i,a[t[e].index]=n,a=i}let o=t[t.length-2],s=t[t.length-1].key,c={...a[o.index]??{}};return c[s]=n,a[o.index]=c,{[r]:i}}function No(e,t){let n=Hi(),[r,i]=X.useState({options:[],loading:!!e});return X.useEffect(()=>{if(!e){i({options:[],loading:!1});return}let r=!1;return i(e=>({...e,loading:!0})),n.list(e).then(e=>{if(r)return;let n=(Array.isArray(e)?e:[]).filter(e=>e&&typeof e.name==`string`&&e.name).filter(e=>!t||t(e)).map(e=>({value:String(e.name),label:typeof e.label==`string`&&e.label&&e.label!==e.name?`${e.label} (${e.name})`:String(e.name)}));i({options:n,loading:!1})}).catch(()=>{r||i({options:[],loading:!1})}),()=>{r=!0}},[n,e,t]),r}var Po={currentUserId:`{current_user_id}`,currentOrgId:`{current_org_id}`};function Fo({objectName:e,filters:t,onCommit:n,disabled:r,locale:i}){let{fields:a}=ea(e||void 0),o=X.useMemo(()=>a.map(e=>({value:e.name,label:e.label&&e.label!==e.name?`${e.label} (${e.name})`:e.name})),[a]),s=Object.entries(t),c=(e,t,r)=>{let i=s.slice();i[e]=[t,r],n(Object.fromEntries(i.filter(([e])=>e!==``)))},l=e=>{let t=s.slice();t.splice(e,1),n(Object.fromEntries(t))};return(0,Y.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Y.jsx)(`div`,{className:`text-[11px] font-medium text-muted-foreground`,children:G(`engine.inspector.appNav.filters`,i)}),s.map(([e,t],n)=>(0,Y.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,Y.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,Y.jsx)(ho,{value:e,onCommit:e=>c(n,e,t),options:o,placeholder:G(`engine.inspector.appNav.filtersField`,i),disabled:r,mono:!0})}),(0,Y.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`=`}),(0,Y.jsx)(`input`,{value:t,onChange:t=>c(n,e,t.target.value),placeholder:G(`engine.inspector.appNav.filtersValue`,i),disabled:r,className:`h-7 w-0 min-w-0 flex-1 rounded border bg-background px-2 font-mono text-xs`,"data-testid":`nav-filter-value-${e||`new`}`}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>l(n),disabled:r,className:`rounded p-1 text-muted-foreground hover:bg-muted`,"aria-label":G(`engine.inspector.appNav.filtersRemove`,i),"data-testid":`nav-filter-remove-${e||`new`}`,children:(0,Y.jsx)(qe,{className:`h-3 w-3`})})]},`${e}-${n}`)),(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>n({...t,"":``}),disabled:r||Object.prototype.hasOwnProperty.call(t,``),className:`inline-flex items-center gap-1 rounded border px-2 py-1 text-[11px] text-muted-foreground hover:bg-muted`,"data-testid":`nav-filter-add`,children:[(0,Y.jsx)(B,{className:`h-3 w-3`}),G(`engine.inspector.appNav.filtersAdd`,i)]}),(0,Y.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:G(`engine.inspector.appNav.filtersHint`,i)})]})}function Io({selection:e,draft:t,name:n,onPatch:r,onClearSelection:i,onSelectionChange:a,locale:o,readOnly:s}){let c=ko(e.id),{node:l,parent:u,index:d}=c?Ao(t,c):{node:null,parent:[],index:-1},f=l?Co(l):null,p=l?wo(l):`default`,m=String(l?.objectName??l?.object??``),h=No(f===`object`?`object`:void 0),g=f&&f!==`object`?vo[f].metaType:void 0,_=No(g,g===`page`?yo:void 0),v=No(f===`object`&&p===`view`?`view`:void 0),y=X.useMemo(()=>m?v.options.filter(e=>e.value.startsWith(`${m}.`)||!e.value.includes(`.`)):v.options,[v.options,m]);if(!c||!l)return(0,Y.jsx)(da,{kindLabel:G(`engine.inspector.appNav.kind`,o),title:e.label??e.id,onClose:i,closeLabel:G(`engine.inspector.appNav.close`,o),children:(0,Y.jsx)(Qi,{message:e.id})});let b=l.label??l.title??l.name??e.id,x=e=>{let n=e.type??l.type??f??void 0;r(jo(t,c,{...l,id:Do(l,u),...n?{type:n}:{},...e}))},S=e=>{let t=vo[e].targetKey,n=e===`object`?Eo.default:t?[t]:[];x({type:e,...To(n)})},C=e=>{let t=To(Eo[e]);x(e===`filters`?{...t,objectName:m,filters:l.filters??{}}:{...t,objectName:m})},w=()=>{r(jo(t,c,null)),i()},T=e=>{let n=fa(u,d,e);r(Mo(t,c,n));let i=c.slice(0,-1).map(e=>`${e.key}[${e.index}]`).join(`.`),o=c[c.length-1].key,s=i?`${i}.${o}[${e}]`:`${o}[${e}]`;a?.({kind:`nav`,id:s,label:String(b)})},E=f&&f!==`group`?Ei({...l,type:f},`/apps/${n||`app`}`,Po).href:null,D=vo[f??`group`];return(0,Y.jsxs)(da,{kindLabel:G(`engine.inspector.appNav.kind`,o),title:String(b),onClose:i,closeLabel:G(`engine.inspector.appNav.close`,o),headerActions:(0,Y.jsx)(Ja,{index:d,total:u.length,onMove:T,upLabel:G(`engine.inspector.reorder.up`,o),downLabel:G(`engine.inspector.reorder.down`,o),disabled:s}),footer:(0,Y.jsx)(sa,{label:G(`engine.inspector.appNav.remove`,o),onClick:w,disabled:s}),children:[(0,Y.jsx)(J,{label:G(`engine.inspector.appNav.label`,o),value:String(l.label??l.title??l.name??``),onCommit:e=>x({label:e}),disabled:s}),(0,Y.jsx)(J,{label:G(`engine.inspector.appNav.icon`,o),value:String(l.icon??``),onCommit:e=>x({icon:e}),disabled:s}),(0,Y.jsx)(K,{label:G(`engine.inspector.appNav.typeField`,o),value:f??``,options:go.map(e=>({value:e,label:G(`engine.inspector.appNav.type.${e}`,o)})),onCommit:e=>S(e),disabled:s}),f===`object`&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(ho,{label:G(`engine.inspector.appNav.object`,o),value:m,options:h.options,loading:h.loading,onCommit:e=>x({objectName:e,object:void 0}),disabled:s,mono:!0}),(0,Y.jsx)(K,{label:G(`engine.inspector.appNav.targetMode`,o),value:p,options:_o.map(e=>({value:e,label:G(`engine.inspector.appNav.mode.${e}`,o)})),onCommit:e=>C(e),disabled:s||!m}),p===`view`&&(0,Y.jsx)(ho,{label:G(`engine.inspector.appNav.view`,o),value:String(l.viewName??``),options:y,loading:v.loading,onCommit:e=>x({viewName:e}),disabled:s,mono:!0}),p===`record`&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(J,{label:G(`engine.inspector.appNav.recordId`,o),value:String(l.recordId??``),onCommit:e=>x({recordId:e}),disabled:s,mono:!0}),(0,Y.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:G(`engine.inspector.appNav.recordIdHint`,o)}),(0,Y.jsx)(K,{label:G(`engine.inspector.appNav.recordMode`,o),value:String(l.recordMode??`view`),options:[{value:`view`,label:G(`engine.inspector.appNav.recordModeView`,o)},{value:`edit`,label:G(`engine.inspector.appNav.recordModeEdit`,o)}],onCommit:e=>x({recordMode:e}),disabled:s})]}),p===`filters`&&(0,Y.jsx)(Fo,{objectName:m,filters:l.filters??{},onCommit:e=>x({filters:e}),disabled:s,locale:o})]}),f&&f!==`object`&&f!==`group`&&D.targetKey&&(D.metaType?(0,Y.jsx)(ho,{label:G(`engine.inspector.appNav.type.${f}`,o),value:String(l[D.targetKey]??``),options:_.options,loading:_.loading,onCommit:e=>x({[D.targetKey]:e}),disabled:s,mono:!0}):(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(J,{label:G(`engine.inspector.appNav.url`,o),value:String(l.url??l.href??``),onCommit:e=>x({url:e,href:void 0}),disabled:s,mono:!0}),(0,Y.jsx)(K,{label:G(`engine.inspector.appNav.urlTarget`,o),value:String(l.target??`_self`),options:[{value:`_self`,label:G(`engine.inspector.appNav.urlTargetSelf`,o)},{value:`_blank`,label:G(`engine.inspector.appNav.urlTargetBlank`,o)}],onCommit:e=>x({target:e}),disabled:s})]})),E&&(0,Y.jsxs)(`div`,{className:`rounded border bg-muted/30 px-2 py-1.5`,"data-testid":`nav-target-preview`,children:[(0,Y.jsx)(`div`,{className:`text-[10px] font-medium uppercase tracking-wide text-muted-foreground`,children:G(`engine.inspector.appNav.preview`,o)}),(0,Y.jsx)(`div`,{className:`break-all font-mono text-[11px]`,children:E})]})]})}var Lo=Oo;function Ro(e){if(!e||!e.startsWith(`nav:`))return null;let t=e.slice(4);return t.length>0?t:null}function zo(e){return`nav:${e}`}var Bo=`surface`;function Vo(e){return`${e.type}:${e.name}`}function Ho(e){if(!e)return null;let t=e.indexOf(`:`);if(t<=0)return null;let n=e.slice(0,t),r=e.slice(t+1);return n&&r?{type:n,name:r}:null}function Uo(e,t){let n=(e,r)=>{for(let i=0;i<e.length;i++){let a=e[i];if(!a||typeof a!=`object`)continue;let o=`${r}[${i}]`;if(a.id===t){let e=a.label??a.title??a.name;return{selectionId:o,label:typeof e==`string`?e:void 0}}if(Array.isArray(a.children)){let e=n(a.children,`${o}.children`);if(e)return e}}return null};for(let t of Lo){let r=e[t];if(!Array.isArray(r))continue;let i=n(r,t);if(i)return i}return null}function Wo(e,t){let n=t.split(`.`),r;for(let t=0;t<n.length;t++){let i=/^([a-zA-Z_]\w*)\[(\d+)\]$/.exec(n[t]);if(!i)return null;let a=i[1],o=Number(i[2]),s=t===0?e[a]:r?.[a];if(!Array.isArray(s)||(r=s[o],!r||typeof r!=`object`))return null}return typeof r?.id==`string`&&r.id?r.id:null}var Go=new Set([`lookup`,`master_detail`,`masterdetail`,`master-detail`]);function Ko(e,t){if(typeof e==`string`&&e)return e;if(e&&typeof e==`object`){let t=e.default;if(typeof t==`string`&&t)return t}return t}function qo(e){let t=e.reference??e.reference_to??e.referenceTo??e.reference_to_object;if(typeof t==`string`&&t)return t;if(Array.isArray(t)&&typeof t[0]==`string`)return t[0];if(t&&typeof t==`object`){let e=t.object;if(typeof e==`string`&&e)return e}}function Jo(e){switch(e){case`lookup`:case`master_detail`:case`masterDetail`:case`master-detail`:return`lookup`;case`date`:case`datetime`:case`time`:return`date`;case`number`:case`currency`:case`percent`:case`int`:case`integer`:case`float`:case`double`:case`autonumber`:return`number`;case`boolean`:case`toggle`:return`boolean`;default:return`string`}}function Yo(e,t){if(!e)return{label:t,fields:[],relationships:[]};let n=Ko(e.label,t),r=Sa(e.fields).entries.map(e=>({name:e.name,label:Ko(e.def.label,e.name),type:typeof e.def.type==`string`?e.def.type:void 0,def:e.def}));return{label:n,fields:r,relationships:r.filter(e=>e.type&&Go.has(e.type.toLowerCase())).map(e=>({name:e.name,label:e.label,referenceTo:qo(e.def)}))}}function Xo(e,t,n){let r=e,i=[];for(let e of t.split(`.`)){let t=r.relationships.find(t=>t.name===e);if(!t?.referenceTo)return;let a=n[t.referenceTo];if(!a)return;i.push(t.label),r=a}return{target:r,labels:i}}function Zo(e,t,n){let r=e.fields.map(t=>({value:t.name,label:t.label,type:t.type,group:e.label}));for(let i of t){let t=Xo(e,i,n);if(!t)continue;let a=[...t.labels,t.target.label].join(` → `);for(let e of t.target.fields)r.push({value:`${i}.${e.name}`,label:e.label,type:e.type,group:a})}return r}function Qo(e,t){if(!e||typeof e!=`object`)return!1;if(Array.isArray(e))return e.some(e=>Qo(e,t));let n=e;return typeof n.dataset==`string`&&n.dataset===t||Object.values(n).some(e=>e&&typeof e==`object`&&Qo(e,t))}function $o(){let e=Hi(),[t,n]=X.useState({options:[],loading:!0});return X.useEffect(()=>{let t=!1;return n(e=>({...e,loading:!0})),e.list(`object`).then(e=>{if(t)return;let r=(Array.isArray(e)?e:[]).map(e=>({name:typeof e.name==`string`?e.name:``,label:Ko(e.label,typeof e.name==`string`?e.name:``)})).filter(e=>!!e.name).sort((e,t)=>e.label.localeCompare(t.label));n({options:r,loading:!1})}).catch(()=>{t||n({options:[],loading:!1})}),()=>{t=!0}},[e]),t}function es(e,t){let n=Hi(),r=t.join(`\0`),[i,a]=X.useState({relationships:[],fieldOptions:[],loading:!!e});return X.useEffect(()=>{if(!e){a({relationships:[],fieldOptions:[],loading:!1});return}let t=!1;return a(e=>({...e,loading:!0})),(async()=>{try{let i=await n.get(`object`,e);if(t)return;let o=Yo(i,e),s=r?r.split(`\0`):[],c={[e]:o},l=async e=>{if(c[e])return c[e];let t;try{t=Yo(await n.get(`object`,e),e)}catch{t=Yo(null,e)}return c[e]=t,t};for(let e of s){let t=o;for(let n of e.split(`.`)){let e=t.relationships.find(e=>e.name===n);if(!e?.referenceTo)break;t=await l(e.referenceTo)}}if(t)return;let u=[...o.relationships];for(let e of s){if(e.split(`.`).length>=3)continue;let t=Xo(o,e,c);if(t)for(let n of t.target.relationships)u.push({name:`${e}.${n.name}`,label:`${e}.${n.name}`,referenceTo:n.referenceTo})}a({relationships:u,fieldOptions:Zo(o,s,c),loading:!1})}catch{t||a({relationships:[],fieldOptions:[],loading:!1})}})(),()=>{t=!0}},[n,e,r]),i}function ts(e){let t=Hi(),[n,r]=X.useState({reports:0,dashboards:0,loading:!!e});return X.useEffect(()=>{if(!e){r({reports:0,dashboards:0,loading:!1});return}let n=!1;return r(e=>({...e,loading:!0})),(async()=>{let[i,a]=await Promise.all([t.list(`report`).catch(()=>[]),t.list(`dashboard`).catch(()=>[])]);n||r({reports:(Array.isArray(i)?i:[]).filter(t=>Qo(t,e)).length,dashboards:(Array.isArray(a)?a:[]).filter(t=>Qo(t,e)).length,loading:!1})})(),()=>{n=!0}},[t,e]),n}function ns(e,t){if(typeof e==`string`)return e||`col ${t+1}`;if(e&&typeof e==`object`){let n=e;return String(n.label??n.header??n.field??n.accessorKey??`col ${t+1}`)}return`col ${t+1}`}function rs(e){if(typeof e==`string`)return e||void 0;if(e&&typeof e==`object`){let t=e,n=t.field??t.accessorKey;return typeof n==`string`&&n?n:void 0}}function is(e){let t=new Set;for(let n of e){let e=rs(n);e&&t.add(e)}return t}function as(e,t,n){if(e)return t;let r={field:t};return n&&n!==t&&(r.label=n),r}function os(e,t){return e===t?null:e>t?e-1:e}function ss(e,t,n){if(e===t)return n;let r=e;return t<r&&--r,n<=r&&(r+=1),r}function cs({variantKey:e,schema:t,columns:n,allStrings:r,objectName:i,objectFieldsOverride:a,selectedIndex:o,readOnly:s,onPatch:c,onSelectionChange:l}){let u=!s,{fields:d,loading:f,error:p}=ea(i||void 0,a),m=X.useMemo(()=>{let e=new Map;for(let t of d)e.set(t.name,t.type);return e},[d]),[h,g]=X.useState(null),[_,v]=X.useState(null),y=X.useCallback(n=>{c({[e]:{...t,columns:n}})},[c,e,t]),b=X.useCallback(t=>{let i=as(r,t.name,t.label),a=ua(n,i);y(a),l?.({kind:`column`,id:`${e}.columns[${a.length-1}]`,label:t.label})},[r,n,y,e,l]),x=X.useCallback(t=>{let r=Zi(n,t,null);if(y(r),o!=null){let n=os(o,t);n==null?l?.(null):l?.({kind:`column`,id:`${e}.columns[${n}]`,label:ns(r[n],n)})}},[n,y,o,e,l]),S=X.useCallback((t,r)=>{if(t===r)return;let i=fa(n,t,r);if(y(i),o!=null){let n=ss(o,t,r);l?.({kind:`column`,id:`${e}.columns[${n}]`,label:ns(i[n],n)})}},[n,y,o,e,l]),C=X.useCallback(t=>{l?.({kind:`column`,id:`${e}.columns[${t}]`,label:ns(n[t],t)})},[n,e,l]),w=is(n);return(0,Y.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Y.jsx)(V,{className:`text-xs text-muted-foreground`,children:`Columns`}),(0,Y.jsx)(I,{variant:`outline`,className:`text-[10px]`,children:n.length})]}),n.length===0?(0,Y.jsx)(`p`,{className:`rounded-md border border-dashed bg-muted/30 px-3 py-3 text-center text-[11px] text-muted-foreground`,children:`No columns yet. Add a field below.`}):(0,Y.jsx)(`div`,{className:`space-y-1`,children:n.map((e,t)=>(0,Y.jsx)(za,{index:t,label:ns(e,t),fieldName:rs(e),fieldType:m.get(rs(e)??``)??`text`,selected:o===t,canEdit:u,dragging:h!==null,dropBefore:_===t&&h!==null&&h!==t,onSelect:()=>C(t),onRemove:()=>x(t),onDragStart:()=>g(t),onDragEnd:()=>{g(null),v(null)},onDragOverRow:()=>v(t),onDropRow:()=>{h!=null&&h!==t&&S(h,t),g(null),v(null)}},t))}),u&&(0,Y.jsx)(Pa,{fields:d,usedNames:w,loading:f,error:p,onAdd:b})]})}var ls=[`record`,`current_user`,`user`,`features`,`app`,`data`,`ctx`];function us(e){if(e==null)return`null`;let t=typeof e;return t===`string`?JSON.stringify(e):t===`number`||t===`boolean`?String(e):Array.isArray(e)?`[${e.map(us).join(`, `)}]`:JSON.stringify(String(e))}function ds(e){if(!e.field||!e.operator)return``;let t=`record[${JSON.stringify(e.field)}]`;switch(e.operator){case`equals`:return`${t} == ${us(e.value)}`;case`not_equals`:return`${t} != ${us(e.value)}`;case`greater_than`:return`${t} > ${us(e.value)}`;case`less_than`:return`${t} < ${us(e.value)}`;case`contains`:return`${t}.contains(${us(e.value)})`;case`in`:return`${t} in ${us(Array.isArray(e.value)?e.value:[e.value])}`;default:return``}}function fs(e){return typeof e.condition==`string`?e.condition:e.condition&&typeof e.condition==`object`&&typeof e.condition.source==`string`?e.condition.source:typeof e.expression==`string`?e.expression:ds(e)}function ps(e){let t=fs(e),n={};if(e.style&&typeof e.style==`object`)for(let[t,r]of Object.entries(e.style))r!=null&&(n[t]=String(r));return e.backgroundColor&&(n.backgroundColor=String(e.backgroundColor)),e.textColor&&(n.color=String(e.textColor)),e.borderColor&&(n.borderColor=String(e.borderColor)),{condition:t,style:n}}function ms({label:e,value:t,onChange:n,disabled:r}){return(0,Y.jsxs)(`label`,{className:`flex flex-col gap-1`,children:[(0,Y.jsx)(`span`,{className:`text-[10px] font-medium uppercase tracking-wide text-muted-foreground`,children:e}),(0,Y.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,Y.jsx)(`input`,{type:`color`,value:/^#([0-9a-f]{6})$/i.test(t)?t:`#000000`,disabled:r,onChange:e=>n(e.target.value),className:`h-7 w-8 shrink-0 rounded border border-input bg-background p-0.5 disabled:opacity-60`,"aria-label":e}),(0,Y.jsx)(R,{value:t,placeholder:`#RRGGBB`,disabled:r,onChange:e=>n(e.target.value),className:`h-7 text-xs font-mono`})]})]})}function hs({rules:e,onChange:t,objectName:n,fieldNames:r,disabled:i,t:a}){let o=X.useMemo(()=>Array.isArray(e)?e.map(ps):[],[e]),s=e=>t(e),c=(e,t)=>{let n=o.map((n,r)=>r===e?{...n,...t}:n);s(n)},l=(e,t,n)=>{let r={...o[e].style};n?r[t]=n:delete r[t],c(e,{style:r})},u=()=>s([...o,{condition:``,style:{}}]),d=e=>s(o.filter((t,n)=>n!==e)),f=(e,t)=>{let n=e+t;if(n<0||n>=o.length)return;let r=o.slice();[r[e],r[n]]=[r[n],r[e]],s(r)};return(0,Y.jsxs)(`div`,{className:`space-y-2`,"data-testid":`cf-editor`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Y.jsx)(`span`,{className:`text-[11px] font-semibold uppercase tracking-wide text-muted-foreground`,children:a(`engine.inspector.view.cf.title`)}),(0,Y.jsxs)(U,{type:`button`,size:`sm`,variant:`ghost`,className:`h-6 px-2 text-xs`,disabled:i,onClick:u,"data-testid":`cf-add`,children:[(0,Y.jsx)(B,{className:`mr-1 h-3.5 w-3.5`}),a(`engine.inspector.view.cf.add`)]})]}),o.length===0&&(0,Y.jsx)(`p`,{className:`text-[11px] italic text-muted-foreground`,children:a(`engine.inspector.view.cf.empty`)}),o.map((e,t)=>(0,Y.jsxs)(`div`,{className:`rounded-md border border-border p-2 space-y-2`,"data-testid":`cf-rule-${t}`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Y.jsxs)(`span`,{className:`text-[10px] font-medium uppercase tracking-wide text-muted-foreground`,children:[a(`engine.inspector.view.cf.rule`),` `,t+1]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-0.5`,children:[(0,Y.jsx)(U,{type:`button`,size:`icon`,variant:`ghost`,className:`h-6 w-6`,disabled:i||t===0,onClick:()=>f(t,-1),"aria-label":a(`engine.inspector.view.cf.moveUp`),"data-testid":`cf-up-${t}`,children:(0,Y.jsx)(Vr,{className:`h-3.5 w-3.5`})}),(0,Y.jsx)(U,{type:`button`,size:`icon`,variant:`ghost`,className:`h-6 w-6`,disabled:i||t===o.length-1,onClick:()=>f(t,1),"aria-label":a(`engine.inspector.view.cf.moveDown`),"data-testid":`cf-down-${t}`,children:(0,Y.jsx)(qn,{className:`h-3.5 w-3.5`})}),(0,Y.jsx)(U,{type:`button`,size:`icon`,variant:`ghost`,className:`h-6 w-6 text-destructive hover:text-destructive`,disabled:i,onClick:()=>d(t),"aria-label":a(`engine.inspector.view.cf.remove`),"data-testid":`cf-remove-${t}`,children:(0,Y.jsx)(Cn,{className:`h-3.5 w-3.5`})})]})]}),(0,Y.jsx)(Oa,{label:a(`engine.inspector.view.cf.when`),value:e.condition,disabled:i,placeholder:`record.status == 'overdue'`,objectName:n,fieldNames:r,scope:`flattened`,roots:ls,onChange:e=>c(t,{condition:e}),t:a,id:`cf-condition-${t}`}),(0,Y.jsxs)(`div`,{className:L(`grid gap-2 sm:grid-cols-3`),children:[(0,Y.jsx)(ms,{label:a(`engine.inspector.view.cf.background`),value:e.style.backgroundColor??``,disabled:i,onChange:e=>l(t,`backgroundColor`,e)}),(0,Y.jsx)(ms,{label:a(`engine.inspector.view.cf.text`),value:e.style.color??``,disabled:i,onChange:e=>l(t,`color`,e)}),(0,Y.jsx)(ms,{label:a(`engine.inspector.view.cf.border`),value:e.style.borderColor??``,disabled:i,onChange:e=>l(t,`borderColor`,e)})]}),(0,Y.jsx)(`div`,{className:`rounded border border-dashed border-border px-2 py-1 text-xs`,style:e.style,"data-testid":`cf-preview-${t}`,children:a(`engine.inspector.view.cf.preview`)})]},t))]})}var gs={io:`input`,unrepresentable:`any`},_s=new Set([`columns`,`data`,`name`]),vs,ys=!1;function bs(){if(vs||ys)return vs;try{vs=x(h,gs)}catch(e){ys=!0,typeof console<`u`&&console.warn(`[view-schema] failed to derive View JSONSchema from spec`,e)}return vs}function xs(){return bs()?.properties?.list}function Ss(){return bs()?.properties?.form}var Cs,ws=!1;function Ts(){if(Cs||ws)return Cs;try{Cs=x(v,gs)}catch(e){ws=!0,typeof console<`u`&&console.warn(`[view-schema] failed to derive ListColumn JSONSchema from spec`,e)}return Cs}var Es;function Ds(){if(Es)return Es;if(!(!m||typeof m!=`object`)){try{let e=JSON.parse(JSON.stringify(m));for(let t of e.sections??[])t.fields=(t.fields??[]).filter(e=>{let t=typeof e==`string`?e:e?.field;return!_s.has(t)});e.sections=(e.sections??[]).filter(e=>(e.fields??[]).length>0),Es=e}catch(e){typeof console<`u`&&console.warn(`[view-schema] failed to prepare viewForm from spec`,e);return}return Es}}var Os=new Set([`form`,`detail`]);function ks(e){return Os.has(e)}function As(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function js(e,t){return typeof e==`string`&&Os.has(e)?e:typeof e==`string`&&e?`list`:typeof t==`string`&&Os.has(t)?`form`:`list`}function Ms(e){let t=e.config;return As(t)?[{storeKey:`config`,familyKey:js(e.viewKind,t.type),schema:t}]:[]}function Ns(e){return Ms(e)[0]}function Ps(e,t){return Ns(e)}function Fs({label:e,value:t,onCommit:n,placeholder:r,disabled:i}){let{options:a,loading:o}=$o();return(0,Y.jsx)(ho,{label:e,value:t,onCommit:n,options:a.map(e=>({value:e.name,label:e.label})),loading:o,placeholder:r,searchPlaceholder:`Search objects…`,disabled:i,mono:!0})}var Is=new Set([`type`,`object`,`label`,`columns`,`conditionalFormatting`]),Ls={grid:`Table / List`,kanban:`Kanban`,calendar:`Calendar`,gallery:`Gallery`,gantt:`Gantt`,timeline:`Timeline`,map:`Map`,chart:`Chart`};function Rs(e,t){let n=`engine.inspector.view.type.${e}`,r=G(n,t);return r===n?Ls[e]??e:r}var zs=[`columns`,`data`,`name`];function Bs(e,t){let n=e.data;return n&&typeof n==`object`&&typeof n.object==`string`&&n.object?{value:n.object,path:`data.object`}:typeof e.object==`string`&&e.object?{value:e.object,path:`object`}:typeof t.object==`string`&&t.object?{value:t.object,path:`top`}:{value:``,path:`top`}}function Vs(e,t){return X.useMemo(()=>{let n=xs()?.properties?.type?.enum,r=(Array.isArray(n)&&n.length?n.filter(e=>typeof e==`string`):[`grid`,`kanban`,`calendar`,`gallery`,`gantt`,`timeline`]).map(e=>({value:e,label:Rs(e,t)}));return!r.some(t=>t.value===e)&&e&&r.push({value:e,label:Rs(e,t)}),r},[e,t])}function Hs({draft:e,variantKey:t,familyKey:n,isHome:r,onPatch:i,readOnly:a,onClearSelection:o,onSelectionChange:s,objectFieldsOverride:c,locale:l,serverSchema:u}){let d=e[t]??{},f=ks(n??t),p=typeof d.type==`string`?d.type:`grid`,m=Vs(p,l),h=Bs(d,e),g=typeof e.label==`string`&&e.label||(typeof d.label==`string`?d.label:``)||``,_=Array.isArray(d.columns)?d.columns:[],v=_.length>0&&_.every(e=>typeof e==`string`),{fields:y}=ea(h.value||void 0,c),b=X.useCallback(e=>G(e,l),[l]),x=X.useMemo(()=>y.map(e=>e.name),[y]),S=Array.isArray(d.conditionalFormatting)?d.conditionalFormatting:[],C=X.useMemo(()=>({objectFields:y.map(e=>({name:e.name,label:e.label,type:e.type}))}),[y]),w=(()=>{let e=u?.properties;return f?e?.form:e?.list})(),{schema:T,form:E}=X.useMemo(()=>_a({bundledSchema:f?Ss():xs(),bundledForm:f?void 0:Ds(),serverSchema:w,excludeFields:Is,sectionTitle:G(`engine.inspector.moreFields`,l)}),[f,w,l]),D=e=>{i({[t]:{...d,...e}})};return(0,Y.jsxs)(da,{kindLabel:G(`engine.inspector.view.kind`,l),title:String(g||e.name||t),onClose:()=>o?.(),closeLabel:G(`engine.inspector.view.close`,l),hideClose:r,children:[(0,Y.jsx)(J,{label:G(`engine.inspector.view.label`,l),value:g,onCommit:e=>{i({label:e,[t]:{...d,label:e}})},placeholder:G(`engine.inspector.view.labelPlaceholder`,l),disabled:a}),(0,Y.jsx)(K,{label:G(`engine.inspector.view.type`,l),value:p,options:m,onCommit:e=>D({type:e}),disabled:a}),(0,Y.jsx)(Fs,{label:G(`engine.inspector.view.object`,l),value:h.value,onCommit:e=>{let n={object:e};d.data&&typeof d.data==`object`?n[t]={...d,data:{...d.data,object:e}}:h.path===`object`&&(n[t]={...d,object:e}),i(n)},placeholder:G(`engine.inspector.view.objectPlaceholder`,l),disabled:a}),!f&&(0,Y.jsx)(`div`,{className:`border-t pt-3`,children:(0,Y.jsx)(cs,{variantKey:t,schema:d,columns:_,allStrings:v,objectName:h.value||void 0,objectFieldsOverride:c,selectedIndex:null,readOnly:a,onPatch:i,onSelectionChange:s})}),!f&&(0,Y.jsx)(`div`,{className:`border-t pt-3`,children:(0,Y.jsx)(hs,{rules:S,objectName:h.value||void 0,fieldNames:x,disabled:a,t:b,onChange:e=>D({conditionalFormatting:e.length>0?e:void 0})})}),(0,Y.jsx)(`div`,{className:`border-t pt-3`,children:T?(0,Y.jsx)(xa,{schema:T,form:E,value:d,hiddenFields:[`type`,`object`,`label`],readOnly:a,widgetContext:C,onChange:e=>{let n={...e};for(let e of zs)e in d?n[e]=d[e]:delete n[e];i({[t]:n})}}):(0,Y.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:G(`engine.inspector.view.noSchema`,l)})})]})}function Us({appSlug:e}={}){let t=i(),n=Hi(),{entries:r}=Wi(n),[a,o]=X.useState(!1),[s,c]=X.useState(``),[l,u]=X.useState(null),[d,f]=X.useState(!1),[p,m]=X.useState(0),h=Mi();X.useEffect(()=>{function e(e){(e.metaKey||e.ctrlKey)&&e.shiftKey&&e.key.toLowerCase()===`m`&&(e.preventDefault(),o(e=>!e))}return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[]),X.useEffect(()=>{if(!a||l!=null||d||r.length===0)return;f(!0);let e=!1;return(async()=>{try{let t=[];await Promise.all(r.map(async e=>{try{let r=await n.list(e.type);for(let n of r??[]){let r=(n&&typeof n==`object`&&`item`in n?n.item:n)??{},i=r?.name;i&&t.push({kind:`item`,type:e.type,name:String(i),label:r?.label,description:r?.description,lock:typeof r?._lock==`string`?r._lock:void 0,lockReason:typeof r?._lockReason==`string`?r._lockReason:void 0})}}catch{}})),e||u(t)}finally{e||f(!1)}})(),()=>{e=!0}},[a,l,d,r,n]);let g=X.useMemo(()=>{let e=s.trim().toLowerCase();if(!e)return r.slice(0,20).map(e=>({kind:`type`,entry:e}));let t=r.filter(t=>t.type.toLowerCase().includes(e)||(t.label??``).toLowerCase().includes(e)||Ni(t.type,h,t.label).toLowerCase().includes(e)||(t.description??``).toLowerCase().includes(e)).slice(0,8).map(e=>({kind:`type`,entry:e})),n=(l??[]).filter(t=>t.name.toLowerCase().includes(e)||(t.label??``).toLowerCase().includes(e)||(t.description??``).toLowerCase().includes(e)||t.type.toLowerCase().includes(e)).slice(0,40);return[...t,...n]},[s,r,l]);X.useEffect(()=>{m(0)},[s,a]);function _(n){o(!1);let r=e?`/apps/${e}`:`..`;n.kind===`type`?t(`${r}/metadata/${encodeURIComponent(n.entry.type)}`):t(`${r}/metadata/${encodeURIComponent(n.type)}/${encodeURIComponent(n.name)}`)}function v(e){e.key===`ArrowDown`?(e.preventDefault(),m(e=>Math.min(e+1,g.length-1))):e.key===`ArrowUp`?(e.preventDefault(),m(e=>Math.max(e-1,0))):e.key===`Enter`&&g[p]&&(e.preventDefault(),_(g[p]))}return(0,Y.jsx)(Rr,{open:a,onOpenChange:o,children:(0,Y.jsxs)(vn,{className:`max-w-2xl p-0 overflow-hidden`,children:[(0,Y.jsx)(En,{className:`sr-only`,children:(0,Y.jsx)(Fn,{children:G(`engine.quickfind.title`,h)})}),(0,Y.jsxs)(`div`,{className:`border-b px-3 py-2 flex items-center gap-2`,children:[(0,Y.jsx)(He,{className:`h-4 w-4 text-muted-foreground`}),(0,Y.jsx)(R,{autoFocus:!0,placeholder:G(`engine.quickfind.placeholder`,h),value:s,onChange:e=>c(e.target.value),onKeyDown:v,className:`border-0 shadow-none focus-visible:ring-0 px-0`}),(0,Y.jsx)(yr,{children:`esc`})]}),(0,Y.jsxs)(`div`,{className:`max-h-[440px] overflow-auto`,children:[d&&(0,Y.jsxs)(`div`,{className:`px-3 py-4 text-xs text-muted-foreground flex items-center gap-2`,children:[(0,Y.jsx)(H,{className:`h-3.5 w-3.5 animate-spin`}),G(`engine.quickfind.indexing`,h),` `,r.length,`…`]}),!d&&g.length===0&&(0,Y.jsx)(`div`,{className:`px-3 py-6 text-xs text-muted-foreground text-center`,children:G(`engine.quickfind.noMatches`,h)}),(0,Y.jsx)(`ul`,{role:`listbox`,children:g.map((e,t)=>(0,Y.jsx)(`li`,{children:(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>_(e),onMouseEnter:()=>m(t),className:`w-full text-left px-3 py-2 flex items-center gap-3 hover:bg-accent `+(t===p?`bg-accent`:``),children:[(0,Y.jsx)(I,{variant:`outline`,className:`text-[10px] font-mono shrink-0`,children:e.kind===`type`?`type`:e.type}),(0,Y.jsx)(`div`,{className:`min-w-0 flex-1`,children:e.kind===`type`?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`div`,{className:`text-sm font-medium truncate`,children:Ni(e.entry.type,h,e.entry.label)}),e.entry.description&&(0,Y.jsx)(`div`,{className:`text-xs text-muted-foreground truncate`,children:e.entry.description})]}):(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`div`,{className:`text-sm font-mono truncate flex items-center gap-1.5`,children:[e.lock&&e.lock!==`none`&&(0,Y.jsx)(`span`,{className:`text-amber-600 dark:text-amber-400 shrink-0`,title:e.lockReason??`_lock=${e.lock}`,"aria-label":`locked`,children:(0,Y.jsx)(un,{className:`h-3 w-3`})}),e.name,e.label&&(0,Y.jsx)(`span`,{className:`text-muted-foreground font-sans ml-2`,children:e.label})]}),e.description&&(0,Y.jsx)(`div`,{className:`text-xs text-muted-foreground truncate`,children:e.description})]})})]})},e.kind===`type`?`t:${e.entry.type}`:`i:${e.type}:${e.name}`))})]}),(0,Y.jsxs)(`div`,{className:`border-t px-3 py-1.5 flex items-center gap-3 text-[10px] text-muted-foreground`,children:[(0,Y.jsxs)(`span`,{children:[(0,Y.jsx)(yr,{children:`↑`}),` `,(0,Y.jsx)(yr,{children:`↓`}),` navigate`]}),(0,Y.jsxs)(`span`,{children:[(0,Y.jsx)(yr,{children:`↵`}),` open`]}),(0,Y.jsxs)(`span`,{className:`ml-auto`,children:[(0,Y.jsx)(yr,{children:`⌘`}),(0,Y.jsx)(yr,{children:`⇧`}),(0,Y.jsx)(yr,{children:`M`}),` toggle`]})]})]})})}var Ws=new Set([`system`,`cloud`]);function Gs(e){let t=(e??[]).map(e=>{let t=e&&typeof e==`object`&&`item`in e?e.item:e,n=t?.manifest??t??{};return{id:n.id,scope:n.scope,name:n.name||n.id}}).filter(e=>e.id&&!Ws.has(e.scope));return t.sort((e,t)=>e.name.localeCompare(t.name)),t.map(e=>({id:e.id,name:e.name}))}var Ks={data:ri,ui:Yr,automation:Ue,ai:_t,system:De,platform:De,identity:Ne,security:Ne},qs=[`data`,`ui`,`automation`,`ai`,`identity`,`security`,`system`,`platform`,`other`],Js=new Set([`field`,`package`]);function Ys(){let e=Hi(),{loading:t,error:r,entries:i}=Wi(e),a=Mi(),[s,c]=X.useState(``),[l,u]=X.useState(`all`),[d,f]=X.useState(!1),[p,m]=o(),[h,g]=X.useState(null);X.useEffect(()=>{let t=!1;return(async()=>{try{let n=await e.list(`package`);if(t)return;g(Gs(n))}catch{t||g([])}})(),()=>{t=!0}},[e]);let _=p.get(`package`),v=X.useMemo(()=>h?_&&h.some(e=>e.id===_)?_:h[0]?.id??null:null,[h,_]);X.useEffect(()=>{if(!h||h.length===0||_&&h.some(e=>e.id===_))return;let e=new URLSearchParams(p);e.set(`package`,h[0].id),m(e,{replace:!0})},[h,_]);let{byType:y,warnByType:b,summary:x,countsByType:S,lockedByType:C,packagesByType:w,loading:T}=zi(e,`warning`,v??void 0),E=X.useMemo(()=>i.filter(e=>Js.has(e.type)||!v?!1:(w[e.type]??[]).includes(v)),[i,v,w]),D=X.useMemo(()=>{let e={all:E.length};for(let t of E){let n=t.domain??`other`;e[n]=(e[n]??0)+1}return e},[E]),O=E.filter(e=>e.allowOrgOverride||e.allowRuntimeCreate).length,k=E.filter(e=>{if(d&&!(e.allowOrgOverride||e.allowRuntimeCreate)||l!==`all`&&(e.domain??`other`)!==l)return!1;if(s){let t=s.toLowerCase();if(!(e.type.toLowerCase().includes(t)||(e.label??``).toLowerCase().includes(t)||Ni(e.type,a,e.label).toLowerCase().includes(t)||(e.description??``).toLowerCase().includes(t)))return!1}return!0}),A=X.useMemo(()=>{let e={};for(let t of k)(e[t.domain??`other`]??=[]).push(t);return Object.entries(e).sort(([e],[t])=>{let n=qs.indexOf(e),r=qs.indexOf(t);return(n===-1?99:n)-(r===-1?99:r)})},[k]);return t||h===null||v&&T?(0,Y.jsx)(`div`,{className:`p-6 text-sm text-muted-foreground`,children:G(`engine.directory.loading`,a)}):r?(0,Y.jsxs)(`div`,{className:`p-6 text-sm text-destructive`,children:[G(`engine.directory.loadFailed`,a),`: `,r]}):(0,Y.jsxs)(`div`,{className:`flex flex-col h-full overflow-hidden`,children:[(0,Y.jsxs)(`div`,{className:`px-6 pt-5 pb-4 border-b bg-background`,children:[(0,Y.jsx)(`h1`,{className:`text-xl font-semibold`,children:G(`engine.directory.title`,a)}),(0,Y.jsx)(`p`,{className:`text-sm text-muted-foreground mt-1 max-w-3xl`,dangerouslySetInnerHTML:{__html:W(`engine.directory.description`,a,{count:`<strong class="text-foreground">${E.length}</strong>`,writable:O})}}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 mt-4 flex-wrap`,children:[(0,Y.jsxs)(`div`,{className:`relative flex-1 min-w-[240px] max-w-lg`,children:[(0,Y.jsx)(He,{className:`absolute left-2.5 top-1/2 -translate-y-1/2 h-3.5 w-3.5 text-muted-foreground`}),(0,Y.jsx)(R,{className:`pl-8`,placeholder:G(`engine.directory.search`,a),value:s,onChange:e=>c(e.target.value)})]}),(0,Y.jsxs)(U,{variant:d?`default`:`outline`,size:`sm`,onClick:()=>f(e=>!e),children:[G(`engine.directory.writableOnly`,a),` (`,O,`)`]}),x.total>0&&(0,Y.jsx)(U,{asChild:!0,variant:`outline`,size:`sm`,className:`border-destructive/40 text-destructive hover:bg-destructive/10 hover:text-destructive`,children:(0,Y.jsxs)(n,{to:`./_diagnostics`,children:[(0,Y.jsx)(z,{className:`h-3.5 w-3.5 mr-1`}),W(`engine.directory.diagnosticsLink`,a,{count:x.total})]})}),(0,Y.jsxs)(`div`,{className:`text-xs text-muted-foreground flex items-center gap-1.5`,children:[G(`engine.directory.quickFind`,a),` `,(0,Y.jsx)(yr,{children:`⌘`}),(0,Y.jsx)(yr,{children:`⇧`}),(0,Y.jsx)(yr,{children:`M`})]})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5 mt-3 flex-wrap`,children:[(0,Y.jsx)(Xs,{domain:`all`,label:G(`engine.directory.all`,a),active:l===`all`,count:D.all??0,onClick:()=>u(`all`)}),qs.filter(e=>D[e]).map(e=>(0,Y.jsx)(Xs,{domain:e,label:Ai(e,a),active:l===e,count:D[e]??0,onClick:()=>u(e)},e))]})]}),(0,Y.jsxs)(`div`,{className:`flex-1 overflow-auto p-6 space-y-6`,children:[h.length===0&&(0,Y.jsxs)(zr,{children:[(0,Y.jsx)(On,{children:`No project packages installed`}),(0,Y.jsx)(bn,{children:`Studio only shows metadata that belongs to a project software package. Install or create a project package to manage its metadata here.`})]}),h.length>0&&k.length===0&&(0,Y.jsxs)(zr,{children:[(0,Y.jsx)(On,{children:G(`engine.directory.noMatches`,a)}),(0,Y.jsx)(bn,{children:G(`engine.directory.noMatchesHint`,a)})]}),A.map(([e,t])=>{let n=Ks[e]??pe;return(0,Y.jsxs)(`section`,{className:`space-y-2`,children:[(0,Y.jsxs)(`h2`,{className:`text-xs font-semibold uppercase tracking-wider text-muted-foreground flex items-center gap-1.5`,children:[(0,Y.jsx)(n,{className:`h-3.5 w-3.5`}),Ai(e,a),` (`,t.length,`)`]}),(0,Y.jsx)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-3`,children:t.map(e=>{let t=S[e.type]??0;return(0,Y.jsx)(Zs,{entry:e,locale:a,invalidCount:y[e.type]??0,warnCount:b[e.type]??0,lockedCount:C[e.type]??0,itemCount:t,packageFilter:v??void 0},e.type)})})]},e)})]}),(0,Y.jsx)(Us,{})]})}function Xs({domain:e,label:t,active:n,count:r,onClick:i}){return(0,Y.jsxs)(`button`,{type:`button`,onClick:i,className:`px-2.5 py-1 rounded-full text-xs border transition-colors `+(n?`bg-primary text-primary-foreground border-primary`:`bg-background hover:bg-accent border-border text-muted-foreground`),children:[t??e,` `,(0,Y.jsxs)(`span`,{className:`opacity-70 ml-0.5`,children:[`(`,r,`)`]})]})}function Zs({entry:e,locale:t,invalidCount:r=0,warnCount:i=0,itemCount:a=0,lockedCount:o=0,packageFilter:s}){let c=Ni(e.type,t,e.label),l=s?`./${encodeURIComponent(e.type)}?package=${encodeURIComponent(s)}`:`./${encodeURIComponent(e.type)}`;return(0,Y.jsxs)(n,{to:l,className:`block p-4 border rounded-lg hover:bg-accent transition-colors `+(r>0?`border-destructive/40 hover:border-destructive`:`hover:border-primary`),children:[(0,Y.jsxs)(`div`,{className:`flex items-start justify-between gap-2`,children:[(0,Y.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Y.jsxs)(`div`,{className:`font-medium truncate flex items-center gap-1.5`,children:[r>0&&(0,Y.jsx)(`span`,{title:W(`engine.directory.invalidTooltip`,t??`en`,{count:r}),"aria-label":W(`engine.directory.invalidTooltip`,t??`en`,{count:r}),children:(0,Y.jsx)(z,{className:`h-3.5 w-3.5 text-destructive shrink-0`})}),c]}),(0,Y.jsx)(`code`,{className:`text-xs text-muted-foreground font-mono`,children:e.type})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-1 shrink-0`,children:[(0,Y.jsx)(I,{variant:`secondary`,className:`text-[10px] tabular-nums`,title:W(`engine.directory.itemCountTooltip`,t??`en`,{count:a}),children:a}),r>0&&(0,Y.jsx)(I,{variant:`outline`,className:`text-[10px] border-destructive/40 text-destructive bg-destructive/[0.06]`,title:W(`engine.directory.invalidTooltip`,t??`en`,{count:r}),children:r}),i>0&&(0,Y.jsx)(I,{variant:`outline`,className:`text-[10px] border-amber-500/40 text-amber-700 dark:text-amber-300 bg-amber-500/[0.06]`,title:W(`engine.directory.warnTooltip`,t??`en`,{count:i}),children:i}),o>0&&(0,Y.jsxs)(I,{variant:`outline`,className:`text-[10px] border-amber-500/40 text-amber-700 dark:text-amber-300 bg-amber-500/[0.06] inline-flex items-center gap-0.5 px-1.5`,title:`${o} locked item${o===1?``:`s`} — see ADR-0010`,"aria-label":`${o} locked items`,children:[(0,Y.jsx)(un,{className:`h-2.5 w-2.5`}),o]}),e.allowOrgOverride?(0,Y.jsx)(I,{className:`text-[10px] `+(e.overrideSource===`env`?`bg-amber-100 text-amber-800 hover:bg-amber-100`:`bg-emerald-100 text-emerald-800 hover:bg-emerald-100`),title:e.overrideSource===`env`?`Writable via OBJECTSTACK_METADATA_WRITABLE env var`:`Writable per ADR-0005 overlay opt-in`,children:G(`engine.badge.writable`,t)}):e.allowRuntimeCreate?(0,Y.jsx)(I,{className:`text-[10px] bg-sky-100 text-sky-800 hover:bg-sky-100`,title:`Code-shipped items are locked; new items can be created at runtime`,children:G(`engine.badge.createOnly`,t)}):(0,Y.jsx)(I,{variant:`outline`,className:`text-[10px] text-muted-foreground`,children:G(`engine.badge.readOnly`,t)})]})]}),e.description&&(0,Y.jsx)(`div`,{className:`text-xs text-muted-foreground mt-2 line-clamp-2`,children:e.description})]})}function Qs(e){let t=e?.data??e,n=Array.isArray(t)?t:t?.packages??[],r=[];for(let e of n){if(!e||typeof e!=`object`)continue;let t=e.manifest??{},n=String(t.id??e.id??``);if(!n)continue;let i=typeof t.scope==`string`?t.scope:``;if(i===`system`||i===`cloud`)continue;let a=typeof t.namespace==`string`&&t.namespace?t.namespace:C(n);r.push({id:n,name:String(t.name??n),writable:i!==`project`,namespace:a})}return r}async function $s(){let e=await fetch(`/api/v1/packages`,{credentials:`include`,headers:{Accept:`application/json`},cache:`no-store`});if(!e.ok)throw Error(`HTTP ${e.status}`);return Qs(await e.json())}async function ec(e,t,n){let r=await fetch(`/api/v1/packages/${encodeURIComponent(e)}/duplicate`,{method:`POST`,credentials:`include`,headers:{"Content-Type":`application/json`,Accept:`application/json`},body:JSON.stringify({targetPackageId:t,...n?{targetName:n}:{}})}),i=await r.json().catch(()=>null);if(!r.ok||i?.success===!1)throw Error(i?.error?.message||`HTTP ${r.status}`)}var tc=/^[a-z][a-z0-9_.-]*(\.[a-z0-9_-]+)+$/,nc=/^[a-z][a-z0-9_]{1,19}$/;function rc(e,t){return t&&g(e,t)?`${t}_${e}`:e}function ic(e){let t=e.toLowerCase().replace(/[^a-z0-9_.-]/g,``);return{value:t,stripped:t.length!==e.length}}var ac={io:`input`,unrepresentable:`any`},oc,sc=!1;function cc(){if(oc||sc)return oc;try{oc=x(y,ac)}catch(e){sc=!0,typeof console<`u`&&console.warn(`[package-schema] failed to derive manifest JSONSchema from spec`,e)}return oc}function lc(e){return{type:`modal`,sections:[{label:G(`engine.packages.form.basics`,e),columns:1,fields:[{field:`name`,label:G(`engine.packages.create.name`,e),placeholder:`Acme CRM`},{field:`id`,label:G(`engine.packages.create.id`,e),placeholder:`com.acme.crm`,immutable:!0},{field:`namespace`,label:G(`engine.packages.create.namespace`,e),placeholder:`crm`,immutable:!0},{field:`version`,label:G(`engine.packages.create.version`,e),placeholder:`0.1.0`},{field:`type`,label:G(`engine.packages.detail.type`,e),immutable:!0},{field:`description`,label:G(`engine.packages.detail.description`,e)}]},{label:G(`engine.packages.form.advanced`,e),collapsible:!0,collapsed:!0,columns:1,fields:[{field:`defaultDatasource`,label:G(`engine.packages.form.defaultDatasource`,e),immutable:!0},{field:`scope`,label:G(`engine.packages.form.scope`,e),immutable:!0},{field:`dependencies`,label:G(`engine.packages.form.dependencies`,e),immutable:!0}]}]}}var uc=`/api/v1/packages`,dc=/^\d+\.\d+\.\d+$/;async function fc(e,t){let n=await fetch(e,{credentials:`include`,headers:{Accept:`application/json`,...t?.headers||{}},...t}),r=await n.text(),i=r?JSON.parse(r):null;if(!n.ok||i?.success===!1){let e=i?.error?.message||i?.error||i?.message||`Request failed (${n.status})`,t=Error(typeof e==`string`?e:`Request failed (${n.status})`);throw t.status=n.status,t}return i?.data??i}function pc(){try{window.dispatchEvent(new CustomEvent(`objectui:packages-changed`))}catch{}}function mc({mode:e,open:t,onOpenChange:n,manifest:r,onSaved:i}){let a=Mi(),o=X.useMemo(()=>cc(),[]),s=X.useMemo(()=>lc(a),[a]),c=e===`create`,l=e===`view`,[u,d]=X.useState({}),[f,p]=X.useState(!1),[m,h]=X.useState(null),g=X.useRef(!1);X.useEffect(()=>{t&&(g.current=!1,d(c?{version:`0.1.0`,type:`app`}:{...r??{}}),h(null),p(!1))},[t,c,r]);let _=X.useCallback(e=>{if(!c){d(e);return}d(t=>{let n=e.namespace;return n!==t.namespace&&(g.current=!0,n=String(n??``).toLowerCase().replace(/[^a-z0-9_]/g,``)),!g.current&&e.id!==t.id&&(n=C(String(e.id??``))??``),{...e,namespace:n}})},[c]),v=X.useMemo(()=>{if(l)return[];let e=y.safeParse(u);return e.success?[]:e.error.issues.map(e=>({path:e.path.join(`.`),message:e.message}))},[u,l]),b=!!String(u.name??``).trim(),x=String(u.version??``).trim(),S=c?dc.test(x):!x||dc.test(x),w=!c||!!String(u.id??``).trim(),T=!c||nc.test(String(u.namespace??``).trim()),E=!l&&b&&S&&w&&T&&!f;async function D(){if(E){p(!0),h(null);try{let t;if(c){let n={...u,id:String(u.id??``).trim(),name:String(u.name??``).trim(),version:x,type:u.type??`app`},r=await fc(uc,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({manifest:n})});t={id:String(r?.manifest?.id??n.id),mode:e,package:r}}else{let n=String(r?.id??u.id??``);t={id:n,mode:e,package:await fc(`${uc}/${encodeURIComponent(n)}`,{method:`PATCH`,headers:{"Content-Type":`application/json`},body:JSON.stringify({name:String(u.name??``).trim(),description:String(u.description??``).trim(),version:x})})}}pc(),i?.(t),n(!1)}catch(e){let t=e?.message??``;e?.status===409||/already exists/i.test(t)?h(G(`engine.packages.create.exists`,a)):h(t||G(c?`engine.packages.create.failed`:`engine.packages.edit.failed`,a))}finally{p(!1)}}}let O=G(e===`create`?`engine.packages.create.title`:e===`edit`?`engine.packages.edit.title`:`engine.packages.view.title`,a);return(0,Y.jsx)(Rr,{open:t,onOpenChange:n,children:(0,Y.jsxs)(vn,{className:`max-h-[85vh] overflow-y-auto`,children:[(0,Y.jsxs)(En,{children:[(0,Y.jsx)(Fn,{children:O}),e===`create`?(0,Y.jsx)(ir,{children:W(`engine.packages.create.description`,a,{example:`com.acme.crm`})}):(0,Y.jsx)(ir,{className:`font-mono text-xs`,children:String(r?.id??u.id??``)})]}),(0,Y.jsx)(`div`,{className:`py-1`,"data-testid":`package-form`,children:(0,Y.jsx)(xa,{schema:o,form:s,value:u,onChange:_,issues:v,readOnly:l,createMode:c})}),m&&(0,Y.jsxs)(`div`,{className:`flex items-start gap-2 rounded-md border border-destructive/40 bg-destructive/10 p-2 text-sm text-destructive`,children:[(0,Y.jsx)(z,{className:`mt-0.5 h-4 w-4 shrink-0`}),(0,Y.jsx)(`span`,{children:m})]}),(0,Y.jsx)(qr,{children:l?(0,Y.jsx)(U,{variant:`outline`,onClick:()=>n(!1),children:G(`engine.close`,a)}):(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(U,{variant:`outline`,onClick:()=>n(!1),disabled:f,children:G(`engine.cancel`,a)}),(0,Y.jsx)(U,{onClick:D,disabled:!E,"data-testid":`package-form-submit`,children:G(f?c?`engine.packages.create.creating`:`engine.packages.edit.saving`:c?`engine.packages.create.submit`:`engine.packages.edit.save`,a)})]})})]})})}var hc=`/api/v1/packages`;async function gc(e,t){let n=await fetch(e,{credentials:`include`,headers:{Accept:`application/json`,...t?.headers||{}},...t}),r=await n.text(),i=r?JSON.parse(r):null;if(!n.ok||i?.success===!1){let e=i?.error?.message||i?.error||i?.message||`Request failed (${n.status})`;throw Error(typeof e==`string`?e:`Request failed (${n.status})`)}return i?.data??i}function _c({scope:e}){let t=Mi();if(!e)return(0,Y.jsx)(I,{className:`bg-emerald-400/15 text-emerald-600 hover:bg-emerald-400/15 dark:text-emerald-300`,children:G(`engine.packages.scope.writable`,t)});let n=e===`project`?`default`:e===`system`?`secondary`:`outline`,r=e===`project`?`engine.packages.scope.project`:e===`system`?`engine.packages.scope.system`:e===`cloud`?`engine.packages.scope.cloud`:``;return(0,Y.jsx)(I,{variant:n,children:r?G(r,t):e})}function vc({pkg:e}){let t=Mi(),n=e.enabled!==!1&&e.status!==`disabled`;return(0,Y.jsx)(I,{variant:n?`default`:`outline`,children:G(n?`engine.packages.status.enabled`:`engine.packages.status.disabled`,t)})}function yc({open:e,onOpenChange:t,onCreated:n}){return(0,Y.jsx)(mc,{mode:`create`,open:e,onOpenChange:t,onSaved:e=>n(e.id)})}function bc({label:e,children:t}){return(0,Y.jsxs)(`div`,{className:`flex items-baseline justify-between gap-4 py-1.5`,children:[(0,Y.jsx)(`span`,{className:`text-sm text-muted-foreground`,children:e}),(0,Y.jsx)(`span`,{className:`text-sm font-medium text-right break-all`,children:t})]})}function xc({pkg:e,open:t,onOpenChange:n,onSaved:r}){return(0,Y.jsx)(mc,{mode:`edit`,open:t,onOpenChange:n,manifest:e?.manifest??null,onSaved:t=>r(t.package??e)})}function Sc({pkg:e,appBase:t,open:r,onOpenChange:i,onChanged:a}){let o=Mi(),[s,c]=X.useState(null),[l,u]=X.useState(null),[d,f]=X.useState(null),[p,m]=X.useState(!1),[h,g]=X.useState(!1);if(X.useEffect(()=>{u(null),c(null)},[e?.manifest.id]),X.useEffect(()=>{let t=e?.manifest.id;if(!r||!t){f(null);return}let n=!1;return gc(`/api/v1/meta/_drafts?packageId=${encodeURIComponent(t)}`).then(e=>{n||f(e?.drafts??[])}).catch(()=>{n||f([])}),()=>{n=!0}},[r,e?.manifest.id]),!e)return null;let _=e.manifest.id,v=e.enabled!==!1&&e.status!==`disabled`,y=e.manifest.scope===`system`||e.manifest.scope===`cloud`;async function b(e,t,n){c(e),u(null);try{await t(),u({kind:`ok`,text:n}),a()}catch(e){u({kind:`err`,text:e?.message??G(`engine.packages.detail.actionFailed`,o)})}finally{c(null)}}return(0,Y.jsx)(Ir,{open:r,onOpenChange:i,children:(0,Y.jsxs)(_n,{className:`w-full sm:max-w-md overflow-y-auto`,children:[(0,Y.jsxs)(Kr,{children:[(0,Y.jsxs)(wn,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(Le,{className:`h-4 w-4`}),e.manifest.name||_]}),(0,Y.jsx)(rr,{className:`font-mono text-xs`,children:_})]}),(0,Y.jsxs)(`div`,{className:`mt-4`,children:[(0,Y.jsx)(bc,{label:G(`engine.packages.col.version`,o),children:e.manifest.version||`—`}),(0,Y.jsx)(bc,{label:G(`engine.packages.detail.type`,o),children:e.manifest.type||`—`}),(0,Y.jsx)(bc,{label:G(`engine.packages.col.scope`,o),children:(0,Y.jsx)(_c,{scope:e.manifest.scope})}),(0,Y.jsx)(bc,{label:G(`engine.packages.col.status`,o),children:(0,Y.jsx)(vc,{pkg:e})}),e.manifest.description&&(0,Y.jsx)(bc,{label:G(`engine.packages.detail.description`,o),children:e.manifest.description})]}),t&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(Nn,{className:`my-4`}),(0,Y.jsxs)(n,{to:`${t}/metadata/object?package=${encodeURIComponent(_)}`,className:`inline-flex items-center gap-1.5 text-sm text-primary hover:underline`,onClick:()=>i(!1),children:[(0,Y.jsx)(Tr,{className:`h-3.5 w-3.5`}),G(`engine.packages.detail.browseMetadata`,o)]})]}),d&&d.length>0&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(Nn,{className:`my-4`}),(0,Y.jsxs)(`div`,{className:`space-y-2`,children:[(0,Y.jsxs)(`p`,{className:`flex items-center gap-2 text-xs font-medium uppercase tracking-wide text-muted-foreground`,children:[G(`engine.packages.detail.pendingChanges`,o),(0,Y.jsx)(I,{variant:`secondary`,children:d.length})]}),(0,Y.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:G(`engine.packages.detail.pendingHint`,o)}),!y&&(0,Y.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,Y.jsxs)(U,{size:`sm`,onClick:()=>b(`publish-drafts`,()=>gc(`${hc}/${encodeURIComponent(_)}/publish-drafts`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({})}).then(async e=>{try{let e=await gc(`/api/v1/meta/_drafts?packageId=${encodeURIComponent(_)}`);f(e?.drafts??[])}catch{f([])}if(e?.failedCount){let t=Array.isArray(e.failed)?e.failed:[],n=t.find(e=>!re(e,`BATCH_ABORTED`)&&e?.error);throw t.some(e=>re(e,`BATCH_ABORTED`))?Error(W(`engine.packages.detail.publishDraftsRolledBack`,o,{cause:n?`${n.type??`?`}/${n.name??`?`}: ${n.error}`:String(e.failedCount)})):Error(W(`engine.packages.detail.publishDraftsPartial`,o,{published:e.publishedCount??0,failed:e.failedCount}))}return e}),G(`engine.packages.detail.publishDraftsOk`,o)),disabled:!!s,children:[(0,Y.jsx)(cn,{className:`mr-1.5 h-3.5 w-3.5`}),s===`publish-drafts`?G(`engine.packages.detail.publishing`,o):W(`engine.packages.detail.publishApp`,o,{count:d.length})]}),(0,Y.jsxs)(U,{size:`sm`,variant:`outline`,onClick:()=>b(`discard-drafts`,()=>gc(`${hc}/${encodeURIComponent(_)}/discard-drafts`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({})}).then(async e=>{try{let e=await gc(`/api/v1/meta/_drafts?packageId=${encodeURIComponent(_)}`);f(e?.drafts??[])}catch{f([])}if(e?.failedCount)throw Error(W(`engine.packages.detail.discardDraftsPartial`,o,{discarded:e.discardedCount??0,failed:e.failedCount}));return e}),G(`engine.packages.detail.discardDraftsOk`,o)),disabled:!!s,children:[(0,Y.jsx)(_r,{className:`mr-1.5 h-3.5 w-3.5`}),s===`discard-drafts`?G(`engine.packages.detail.discarding`,o):W(`engine.packages.detail.discardChanges`,o,{count:d.length})]})]}),(0,Y.jsx)(`ul`,{className:`space-y-1`,children:d.map(e=>t?(0,Y.jsx)(`li`,{children:(0,Y.jsxs)(n,{to:`${t}/metadata/${encodeURIComponent(e.type)}/${encodeURIComponent(e.name)}?review=1`,className:`inline-flex items-center gap-1.5 text-sm text-primary hover:underline`,onClick:()=>i(!1),children:[(0,Y.jsx)(F,{className:`h-3.5 w-3.5`}),(0,Y.jsx)(`span`,{className:`font-mono text-xs`,children:e.type}),(0,Y.jsx)(`span`,{className:`text-muted-foreground`,children:`·`}),e.name]})},`${e.type}/${e.name}`):(0,Y.jsxs)(`li`,{className:`inline-flex items-center gap-1.5 text-sm`,children:[(0,Y.jsx)(F,{className:`h-3.5 w-3.5 text-muted-foreground`}),(0,Y.jsx)(`span`,{className:`font-mono text-xs`,children:e.type}),(0,Y.jsx)(`span`,{className:`text-muted-foreground`,children:`·`}),e.name]},`${e.type}/${e.name}`))})]})]}),(0,Y.jsx)(Nn,{className:`my-4`}),y?(0,Y.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:G(`engine.packages.detail.kernelReadOnly`,o)}):(0,Y.jsxs)(`div`,{className:`space-y-2`,children:[(0,Y.jsx)(`p`,{className:`text-xs font-medium uppercase tracking-wide text-muted-foreground`,children:G(`engine.packages.detail.actions`,o)}),(0,Y.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,Y.jsxs)(U,{size:`sm`,variant:`outline`,onClick:()=>g(!0),disabled:!!s,children:[(0,Y.jsx)(Dn,{className:`mr-1.5 h-3.5 w-3.5`}),G(`engine.packages.detail.viewInfo`,o)]}),(0,Y.jsxs)(U,{size:`sm`,variant:`outline`,onClick:()=>m(!0),disabled:!!s,children:[(0,Y.jsx)(Ot,{className:`mr-1.5 h-3.5 w-3.5`}),G(`engine.packages.detail.edit`,o)]}),(0,Y.jsxs)(U,{size:`sm`,onClick:()=>b(`publish`,()=>gc(`${hc}/${encodeURIComponent(_)}/publish`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({})}).then(e=>{if(e&&e.success===!1){let t=e.validationErrors?.length??0;throw Error(t?W(`engine.packages.detail.publishBlocked`,o,{count:t}):e.validationErrors?.[0]?.message||G(`engine.packages.detail.nothingToPublish`,o))}return e}),G(`engine.packages.detail.published`,o)),disabled:!!s,children:[(0,Y.jsx)(cn,{className:`mr-1.5 h-3.5 w-3.5`}),G(s===`publish`?`engine.packages.detail.publishing`:`engine.packages.detail.publish`,o)]}),(0,Y.jsxs)(U,{size:`sm`,variant:`outline`,onClick:()=>b(`revert`,()=>gc(`${hc}/${encodeURIComponent(_)}/revert`,{method:`POST`}),G(`engine.packages.detail.reverted`,o)),disabled:!!s,children:[(0,Y.jsx)(_r,{className:`mr-1.5 h-3.5 w-3.5`}),G(`engine.packages.detail.revert`,o)]}),(0,Y.jsxs)(U,{size:`sm`,variant:`outline`,onClick:()=>b(`toggle`,()=>gc(`${hc}/${encodeURIComponent(_)}/${v?`disable`:`enable`}`,{method:`PATCH`}),G(v?`engine.packages.detail.disabled`:`engine.packages.detail.enabled`,o)),disabled:!!s,children:[v?(0,Y.jsx)(or,{className:`mr-1.5 h-3.5 w-3.5`}):(0,Y.jsx)(br,{className:`mr-1.5 h-3.5 w-3.5`}),G(v?`engine.packages.detail.disable`:`engine.packages.detail.enable`,o)]}),(0,Y.jsxs)(U,{size:`sm`,variant:`outline`,onClick:()=>b(`export`,async()=>{let e=await gc(`${hc}/${encodeURIComponent(_)}/export`),t=new Blob([JSON.stringify(e,null,2)],{type:`application/json`}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=`${_}.package.json`,document.body.appendChild(r),r.click(),r.remove(),URL.revokeObjectURL(n)},G(`engine.packages.detail.exported`,o)),disabled:!!s,children:[(0,Y.jsx)(an,{className:`mr-1.5 h-3.5 w-3.5`}),G(s===`export`?`engine.packages.detail.exporting`:`engine.packages.detail.export`,o)]}),(0,Y.jsxs)(U,{size:`sm`,variant:`outline`,onClick:async()=>{let t=window.prompt(G(`engine.packages.detail.duplicatePrompt`,o),`${_}-copy`);if(!(!t||!t.trim())){c(`duplicate`),u(null);try{await gc(`${hc}/${encodeURIComponent(_)}/duplicate`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({targetPackageId:t.trim(),targetName:`${e?.manifest.name??_} (copy)`})}),u({kind:`ok`,text:G(`engine.packages.detail.duplicated`,o)}),a()}catch(e){u({kind:`err`,text:e?.message??`Duplicate failed`})}finally{c(null)}}},disabled:!!s,children:[(0,Y.jsx)(ei,{className:`mr-1.5 h-3.5 w-3.5`}),G(s===`duplicate`?`engine.packages.detail.duplicating`:`engine.packages.detail.duplicate`,o)]}),(0,Y.jsxs)(U,{size:`sm`,variant:`outline`,onClick:async()=>{if(window.confirm(W(`engine.packages.detail.adoptConfirm`,o,{name:e?.manifest.name||_}))){c(`adopt`),u(null);try{await gc(`${hc}/${encodeURIComponent(_)}/adopt-orphans`,{method:`POST`}),u({kind:`ok`,text:G(`engine.packages.detail.adopted`,o)}),a()}catch(e){u({kind:`err`,text:e?.message??`Adopt failed`})}finally{c(null)}}},disabled:!!s,children:[(0,Y.jsx)(Se,{className:`mr-1.5 h-3.5 w-3.5`}),G(s===`adopt`?`engine.packages.detail.adopting`:`engine.packages.detail.adoptOrphans`,o)]}),(0,Y.jsxs)(U,{size:`sm`,variant:`outline`,onClick:async()=>{if(!window.confirm(W(`engine.packages.detail.deleteConfirm`,o,{name:e?.manifest.name||_})))return;let t=window.confirm(G(`engine.packages.detail.deleteKeepData`,o))?``:`?keepData=true`;c(`delete`),u(null);try{await gc(`${hc}/${encodeURIComponent(_)}${t}`,{method:`DELETE`}),a(),i(!1)}catch(e){u({kind:`err`,text:e?.message??G(`engine.packages.detail.deleteFailed`,o)})}finally{c(null)}},disabled:!!s,className:`text-destructive hover:bg-destructive/10 hover:text-destructive`,children:[(0,Y.jsx)(Cn,{className:`mr-1.5 h-3.5 w-3.5`}),G(s===`delete`?`engine.packages.detail.deleting`:`engine.packages.detail.deleteApp`,o)]})]})]}),l&&(0,Y.jsx)(`div`,{className:`mt-4 rounded-md border p-2 text-sm ${l.kind===`ok`?`border-emerald-500/40 bg-emerald-500/10 text-emerald-700 dark:text-emerald-400`:`border-destructive/40 bg-destructive/10 text-destructive`}`,children:l.text}),(0,Y.jsx)(xc,{pkg:e,open:p,onOpenChange:m,onSaved:()=>{u({kind:`ok`,text:G(`engine.packages.edit.saved`,o)}),a()}}),(0,Y.jsx)(mc,{mode:`view`,open:h,onOpenChange:g,manifest:e?.manifest??null})]})})}function Cc(){let e=Mi(),{pathname:t}=r(),n=X.useMemo(()=>{let e=t.indexOf(`/component`);return e>=0?t.slice(0,e):t},[t]),[i,a]=X.useState([]),[o,s]=X.useState(!0),[c,l]=X.useState(null),[u,d]=X.useState(``),[f,p]=X.useState(!1),[m,h]=X.useState(!1),[g,_]=X.useState(null),[v,y]=X.useState(!1),b=X.useRef(null),[x,S]=X.useState(!1),[C,w]=X.useState(null),T=X.useCallback(async()=>{s(!0),l(null);try{let e=await gc(hc),t=Array.isArray(e?.packages)?e.packages:[];t.sort((e,t)=>{let n=e.manifest.scope===`project`?0:1,r=t.manifest.scope===`project`?0:1;return n===r?(e.manifest.name||e.manifest.id).localeCompare(t.manifest.name||t.manifest.id):n-r}),a(t)}catch(t){l(t?.message??G(`engine.packages.loadFailed`,e))}finally{s(!1)}},[e]);X.useEffect(()=>{T()},[T]),X.useEffect(()=>{if(!g)return;let e=i.find(e=>e.manifest.id===g.manifest.id);e&&e!==g&&_(e)},[i,g]);let E=X.useMemo(()=>{let e=u.trim().toLowerCase();return i.filter(t=>(t.manifest.scope===`system`||t.manifest.scope===`cloud`)&&!f?!1:!e||t.manifest.id.toLowerCase().includes(e)||(t.manifest.name||``).toLowerCase().includes(e))},[i,u,f]),D=e=>{_(e),y(!0)},O=async t=>{let n=t.target.files?.[0];if(t.target.value=``,n){S(!0),w(null);try{let t=await n.text(),r;try{r=JSON.parse(t)}catch{throw Error(G(`engine.packages.import.invalidJson`,e))}if(!r||typeof r!=`object`||!r.id&&!r.name)throw Error(G(`engine.packages.import.invalidPackage`,e));let i=await gc(`/api/v1/marketplace/install-local`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({manifest:r})});w({kind:`ok`,text:W(`engine.packages.import.success`,e,{id:i?.manifestId??r.id})}),await T()}catch(t){w({kind:`err`,text:t?.message??G(`engine.packages.import.failed`,e)})}finally{S(!1)}}},k=i.filter(e=>e.manifest.scope===`system`||e.manifest.scope===`cloud`).length;return(0,Y.jsxs)(`div`,{className:`mx-auto w-full max-w-5xl px-6 py-6`,children:[(0,Y.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[(0,Y.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,Y.jsx)(`div`,{className:`rounded-lg bg-primary/10 p-2 text-primary`,children:(0,Y.jsx)(Le,{className:`h-5 w-5`})}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`h1`,{className:`text-xl font-semibold tracking-tight`,children:G(`engine.packages.title`,e)}),(0,Y.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:G(`engine.packages.description`,e)})]})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsxs)(U,{variant:`outline`,size:`sm`,onClick:()=>void T(),disabled:o,children:[(0,Y.jsx)(gr,{className:`mr-1.5 h-3.5 w-3.5 ${o?`animate-spin`:``}`}),G(`engine.packages.refresh`,e)]}),(0,Y.jsx)(`input`,{ref:b,type:`file`,accept:`application/json,.json`,className:`hidden`,onChange:O}),(0,Y.jsxs)(U,{variant:`outline`,size:`sm`,onClick:()=>b.current?.click(),disabled:x,children:[(0,Y.jsx)(F,{className:`mr-1.5 h-3.5 w-3.5`}),G(x?`engine.packages.importing`:`engine.packages.import`,e)]}),(0,Y.jsxs)(U,{size:`sm`,onClick:()=>h(!0),children:[(0,Y.jsx)(B,{className:`mr-1.5 h-3.5 w-3.5`}),G(`engine.packages.new`,e)]})]})]}),C&&(0,Y.jsx)(`div`,{className:`mt-4 rounded-md border p-2 text-sm ${C.kind===`ok`?`border-emerald-500/40 bg-emerald-500/10 text-emerald-700 dark:text-emerald-400`:`border-destructive/40 bg-destructive/10 text-destructive`}`,children:C.text}),(0,Y.jsxs)(`div`,{className:`mt-5 flex flex-wrap items-center justify-between gap-3`,children:[(0,Y.jsxs)(`div`,{className:`relative w-full max-w-xs`,children:[(0,Y.jsx)(He,{className:`absolute left-2.5 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground`}),(0,Y.jsx)(R,{className:`pl-8`,placeholder:G(`engine.packages.search`,e),value:u,onChange:e=>d(e.target.value)})]}),k>0&&(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(ui,{id:`show-kernel`,checked:f,onCheckedChange:p}),(0,Y.jsx)(V,{htmlFor:`show-kernel`,className:`text-sm text-muted-foreground`,children:W(`engine.packages.showPlatform`,e,{count:k})})]})]}),(0,Y.jsx)(`div`,{className:`mt-4 rounded-lg border`,children:o?(0,Y.jsx)(`div`,{className:`space-y-2 p-4`,children:[0,1,2].map(e=>(0,Y.jsx)(ln,{className:`h-10 w-full`},e))}):c?(0,Y.jsxs)(`div`,{className:`flex items-start gap-2 p-4 text-sm text-destructive`,children:[(0,Y.jsx)(z,{className:`mt-0.5 h-4 w-4 shrink-0`}),(0,Y.jsx)(`span`,{children:c})]}):E.length===0?(0,Y.jsx)(`div`,{className:`p-8`,children:(0,Y.jsxs)(zr,{children:[(0,Y.jsx)(On,{children:G(`engine.packages.empty`,e)}),(0,Y.jsx)(bn,{children:i.length===0?G(`engine.packages.emptyCreate`,e):G(`engine.packages.emptyFiltered`,e)})]})}):(0,Y.jsxs)(ct,{children:[(0,Y.jsx)($e,{children:(0,Y.jsxs)(Dt,{children:[(0,Y.jsx)(Ve,{children:G(`engine.packages.col.name`,e)}),(0,Y.jsx)(Ve,{children:`ID`}),(0,Y.jsx)(Ve,{className:`w-24`,children:G(`engine.packages.col.version`,e)}),(0,Y.jsx)(Ve,{className:`w-24`,children:G(`engine.packages.col.scope`,e)}),(0,Y.jsx)(Ve,{className:`w-24`,children:G(`engine.packages.col.status`,e)})]})}),(0,Y.jsx)(vt,{children:E.map(e=>(0,Y.jsxs)(Dt,{className:`cursor-pointer`,onClick:()=>D(e),children:[(0,Y.jsx)(Te,{className:`font-medium`,children:e.manifest.name||e.manifest.id}),(0,Y.jsx)(Te,{className:`font-mono text-xs text-muted-foreground`,children:e.manifest.id}),(0,Y.jsx)(Te,{children:e.manifest.version||`—`}),(0,Y.jsx)(Te,{children:(0,Y.jsx)(_c,{scope:e.manifest.scope})}),(0,Y.jsx)(Te,{children:(0,Y.jsx)(vc,{pkg:e})})]},e.manifest.id))})]})}),(0,Y.jsx)(yc,{open:m,onOpenChange:h,onCreated:async()=>{await T()}}),(0,Y.jsx)(Sc,{pkg:g,appBase:n,open:v,onOpenChange:y,onChanged:()=>void T()})]})}var wc=new Set([`field`,`package`]),Tc={data:ri,ui:Yr,automation:Ue,ai:_t,system:De,platform:De,identity:Ne,security:Ne},Ec={data:{from:`from-sky-500`,to:`to-blue-600`,ring:`hover:ring-sky-400/40`,text:`text-sky-600 dark:text-sky-400`},ui:{from:`from-violet-500`,to:`to-fuchsia-600`,ring:`hover:ring-violet-400/40`,text:`text-violet-600 dark:text-violet-400`},automation:{from:`from-amber-500`,to:`to-orange-600`,ring:`hover:ring-amber-400/40`,text:`text-amber-600 dark:text-amber-400`},ai:{from:`from-pink-500`,to:`to-rose-600`,ring:`hover:ring-pink-400/40`,text:`text-pink-600 dark:text-pink-400`},identity:{from:`from-emerald-500`,to:`to-teal-600`,ring:`hover:ring-emerald-400/40`,text:`text-emerald-600 dark:text-emerald-400`},security:{from:`from-emerald-500`,to:`to-teal-600`,ring:`hover:ring-emerald-400/40`,text:`text-emerald-600 dark:text-emerald-400`},system:{from:`from-slate-500`,to:`to-slate-700`,ring:`hover:ring-slate-400/40`,text:`text-slate-600 dark:text-slate-300`},platform:{from:`from-slate-500`,to:`to-slate-700`,ring:`hover:ring-slate-400/40`,text:`text-slate-600 dark:text-slate-300`},other:{from:`from-slate-400`,to:`to-slate-600`,ring:`hover:ring-slate-400/40`,text:`text-slate-600 dark:text-slate-300`}},Dc=[`data`,`ui`,`automation`,`ai`,`identity`,`security`,`system`,`platform`,`other`],Oc=[`object`,`view`,`page`,`dashboard`,`report`,`flow`,`action`,`agent`],kc={object:At,dashboard:rn,page:jn,report:xr,record:pe,metadata:Yr};function Ac(){let e=new Date().getHours();return e<12?`engine.home.greetingMorning`:e<18?`engine.home.greetingAfternoon`:`engine.home.greetingEvening`}function jc(e,t){let n=new Date(e).getTime();if(Number.isNaN(n))return``;let r=Math.floor((Date.now()-n)/6e4),i=new Intl.RelativeTimeFormat(t,{numeric:`auto`});if(r<1)return i.format(0,`minute`);if(r<60)return i.format(-r,`minute`);let a=Math.floor(r/60);if(a<24)return i.format(-a,`hour`);let o=Math.floor(a/24);return o<7?i.format(-o,`day`):i.format(-Math.floor(o/7),`week`)}function Mc(){let e=Hi(),{loading:t,entries:r}=Wi(e),{recentItems:i}=yi(),a=Mi(),[s,c]=o(),[l,u]=X.useState(null);X.useEffect(()=>{let t=!1;return(async()=>{try{let n=await e.list(`package`);if(t)return;u(Gs(n))}catch{t||u([])}})(),()=>{t=!0}},[e]);let d=s.get(`package`),f=X.useMemo(()=>l?d&&l.some(e=>e.id===d)?d:l[0]?.id??null:null,[l,d]);X.useEffect(()=>{if(!l||l.length===0||d&&l.some(e=>e.id===d))return;let e=new URLSearchParams(s);e.set(`package`,l[0].id),c(e,{replace:!0})},[l,d]);let p=f?`?package=${encodeURIComponent(f)}`:``,m=`metadata${p}`,h=`component/developer/packages${p}`,{summary:g,countsByType:_,packagesByType:v,loading:y}=zi(e,`warning`,f??void 0),b=X.useMemo(()=>r.filter(e=>wc.has(e.type)||!f?!1:(v[e.type]??[]).includes(f)),[f,r,v]),x=X.useMemo(()=>b.filter(e=>e.allowOrgOverride||e.allowRuntimeCreate),[b]),S=X.useMemo(()=>{let e={};for(let t of b)(e[t.domain??`other`]??=[]).push(t);for(let t of Object.values(e))t.sort((e,t)=>(_[t.type]??0)-(_[e.type]??0));return Object.entries(e).sort(([e],[t])=>(Dc.indexOf(e)===-1?99:Dc.indexOf(e))-(Dc.indexOf(t)===-1?99:Dc.indexOf(t)))},[b,_]),C=X.useMemo(()=>{let e=new Map(x.map(e=>[e.type,e]));return Oc.map(t=>e.get(t)).filter(Boolean)},[x]),w=g.total,T=!t&&!y&&w===0;return t||l===null||f&&y?(0,Y.jsx)(`div`,{className:`flex h-full items-center justify-center p-8 text-sm text-muted-foreground`,children:G(`engine.home.loading`,a)}):(0,Y.jsxs)(`div`,{className:`h-full overflow-auto bg-gradient-to-b from-muted/40 to-background`,children:[(0,Y.jsxs)(`div`,{className:`mx-auto w-full max-w-6xl px-6 py-6 space-y-6`,children:[(0,Y.jsxs)(`section`,{className:`relative overflow-hidden rounded-3xl bg-gradient-to-br from-indigo-600 via-violet-600 to-fuchsia-600 px-7 py-8 text-white shadow-xl shadow-violet-500/20`,children:[(0,Y.jsx)(`div`,{className:`pointer-events-none absolute -right-16 -top-20 h-64 w-64 rounded-full bg-white/15 blur-3xl`}),(0,Y.jsx)(`div`,{className:`pointer-events-none absolute -bottom-24 left-1/3 h-56 w-56 rounded-full bg-fuchsia-300/20 blur-3xl`}),(0,Y.jsx)(`div`,{className:`pointer-events-none absolute inset-0 opacity-[0.12]`,style:{backgroundImage:`radial-gradient(currentColor 1px, transparent 1px)`,backgroundSize:`18px 18px`}}),(0,Y.jsxs)(`div`,{className:`relative flex flex-col gap-6 lg:flex-row lg:items-end lg:justify-between`,children:[(0,Y.jsxs)(`div`,{className:`max-w-xl`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 text-sm font-medium text-white/80`,children:[(0,Y.jsx)(_t,{className:`h-4 w-4`}),G(Ac(),a)]}),(0,Y.jsx)(`h1`,{className:`mt-2 text-3xl font-bold tracking-tight sm:text-4xl`,children:`Studio`}),(0,Y.jsx)(`p`,{className:`mt-2 text-sm leading-relaxed text-white/85 sm:text-base`,children:G(`engine.home.subtitle`,a)}),(0,Y.jsxs)(`div`,{className:`mt-5 flex flex-wrap items-center gap-2.5`,children:[(0,Y.jsx)(U,{asChild:!0,size:`sm`,variant:`ghost`,className:`bg-white/10 text-white shadow-sm ring-1 ring-white/25 hover:bg-white/20 hover:text-white`,children:(0,Y.jsxs)(n,{to:m,children:[(0,Y.jsx)(Yr,{className:`mr-1.5 h-4 w-4`}),G(`engine.home.browseAll`,a)]})}),(0,Y.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 rounded-full bg-white/15 px-3 py-1.5 text-xs font-medium text-white/90 backdrop-blur-sm`,children:[(0,Y.jsx)(He,{className:`h-3.5 w-3.5`}),G(`engine.directory.quickFind`,a),` ⌘⇧M`]})]})]}),(0,Y.jsxs)(`div`,{className:`grid grid-cols-3 gap-3`,children:[(0,Y.jsx)(Nc,{value:b.length,label:G(`engine.home.statTypes`,a)}),(0,Y.jsx)(Nc,{value:x.length,label:G(`engine.home.statWritable`,a)}),(0,Y.jsx)(Nc,{value:l.length,label:G(`engine.home.statPackages`,a)})]})]})]}),(0,Y.jsxs)(`section`,{className:`grid grid-cols-2 gap-4 lg:grid-cols-4`,children:[(0,Y.jsx)(Pc,{icon:Yr,from:`from-indigo-500`,to:`to-violet-600`,value:b.length,label:G(`engine.home.statTypes`,a),to_link:m}),(0,Y.jsx)(Pc,{icon:Ar,from:`from-sky-500`,to:`to-blue-600`,value:x.length,label:G(`engine.home.statWritable`,a),to_link:m}),(0,Y.jsx)(Pc,{icon:Le,from:`from-emerald-500`,to:`to-teal-600`,value:l.length,label:G(`engine.home.statPackages`,a),to_link:h}),(0,Y.jsxs)(n,{to:T?m:`metadata/_diagnostics${p}`,className:`group relative flex flex-col justify-between overflow-hidden rounded-2xl border p-4 transition-all hover:-translate-y-0.5 hover:shadow-lg `+(T?`border-emerald-200 bg-emerald-50/60 dark:border-emerald-900/50 dark:bg-emerald-950/30`:`border-amber-300 bg-amber-50/70 dark:border-amber-900/50 dark:bg-amber-950/30`),children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Y.jsx)(`div`,{className:`flex h-10 w-10 items-center justify-center rounded-xl bg-gradient-to-br text-white shadow-sm `+(T?`from-emerald-500 to-teal-600`:`from-amber-500 to-orange-600`),children:T?(0,Y.jsx)(Ar,{className:`h-5 w-5`}):(0,Y.jsx)(z,{className:`h-5 w-5`})}),(0,Y.jsx)(Xe,{className:`h-4 w-4 text-muted-foreground transition-transform group-hover:translate-x-0.5`})]}),(0,Y.jsxs)(`div`,{className:`mt-3`,children:[(0,Y.jsx)(`div`,{className:`text-2xl font-bold tabular-nums`,children:T?G(`engine.home.allHealthy`,a):w}),(0,Y.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:G(T?`engine.home.allHealthyHint`:`engine.home.statIssues`,a)})]})]})]}),C.length>0&&(0,Y.jsxs)(`section`,{children:[(0,Y.jsx)(Fc,{icon:B,title:G(`engine.home.quickActions`,a),hint:G(`engine.home.quickActionsHint`,a)}),(0,Y.jsx)(`div`,{className:`mt-3 flex flex-wrap gap-2.5`,children:C.map(e=>(0,Y.jsx)(U,{asChild:!0,variant:`outline`,size:`sm`,className:`group rounded-full border-transparent bg-muted hover:bg-primary/10 hover:text-primary`,children:(0,Y.jsxs)(n,{to:`metadata/${encodeURIComponent(e.type)}/new${p}`,children:[(0,Y.jsx)(B,{className:`mr-1 h-3.5 w-3.5 text-primary transition-transform group-hover:rotate-90`}),W(`engine.home.newItem`,a,{label:Ni(e.type,a,e.label)})]})},e.type))})]}),(0,Y.jsxs)(`div`,{className:`grid gap-6 lg:grid-cols-3`,children:[(0,Y.jsxs)(`section`,{className:`lg:col-span-2`,children:[(0,Y.jsx)(Fc,{icon:Yr,title:G(`engine.home.explore`,a),hint:G(`engine.home.exploreHint`,a)}),(0,Y.jsx)(`div`,{className:`mt-3 grid gap-4 sm:grid-cols-2`,children:S.map(([e,t])=>(0,Y.jsx)(Ic,{domain:e,group:t,countsByType:_,locale:a,packageSuffix:p},e))})]}),(0,Y.jsxs)(`section`,{children:[(0,Y.jsx)(Fc,{icon:rt,title:G(`engine.home.recent`,a)}),(0,Y.jsx)(`div`,{className:`mt-3 rounded-2xl border bg-card p-2`,children:i.length===0?(0,Y.jsx)(`div`,{className:`px-3 py-8 text-center text-xs text-muted-foreground`,children:G(`engine.home.recentEmpty`,a)}):(0,Y.jsx)(`ul`,{className:`space-y-0.5`,children:i.slice(0,8).map(e=>{let t=kc[e.type]??pe;return(0,Y.jsx)(`li`,{children:(0,Y.jsxs)(n,{to:e.href,className:`group flex items-center gap-3 rounded-xl px-3 py-2 transition-colors hover:bg-accent`,children:[(0,Y.jsx)(`span`,{className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-muted text-muted-foreground transition-colors group-hover:bg-primary/10 group-hover:text-primary`,children:(0,Y.jsx)(t,{className:`h-4 w-4`})}),(0,Y.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,Y.jsx)(`span`,{className:`block truncate text-sm font-medium`,children:e.label}),(0,Y.jsx)(`span`,{className:`block text-[11px] text-muted-foreground`,children:jc(e.visitedAt,a)})]}),(0,Y.jsx)(Xe,{className:`h-3.5 w-3.5 text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100`})]})},e.id)})})})]})]})]}),(0,Y.jsx)(Us,{})]})}function Nc({value:e,label:t}){return(0,Y.jsxs)(`div`,{className:`rounded-2xl bg-white/15 px-4 py-3 text-center backdrop-blur-sm ring-1 ring-white/20`,children:[(0,Y.jsx)(`div`,{className:`text-2xl font-bold tabular-nums leading-none`,children:e}),(0,Y.jsx)(`div`,{className:`mt-1 text-[11px] font-medium text-white/80`,children:t})]})}function Pc({icon:e,from:t,to:r,value:i,label:a,to_link:o}){return(0,Y.jsxs)(n,{to:o,className:`group relative flex flex-col justify-between overflow-hidden rounded-2xl border bg-card p-4 transition-all hover:-translate-y-0.5 hover:border-primary/40 hover:shadow-lg`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Y.jsx)(`div`,{className:`flex h-10 w-10 items-center justify-center rounded-xl bg-gradient-to-br ${t} ${r} text-white shadow-sm`,children:(0,Y.jsx)(e,{className:`h-5 w-5`})}),(0,Y.jsx)(Xe,{className:`h-4 w-4 text-muted-foreground opacity-0 transition-all group-hover:translate-x-0.5 group-hover:opacity-100`})]}),(0,Y.jsxs)(`div`,{className:`mt-3`,children:[(0,Y.jsx)(`div`,{className:`text-2xl font-bold tabular-nums`,children:i}),(0,Y.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:a})]})]})}function Fc({icon:e,title:t,hint:n}){return(0,Y.jsxs)(`div`,{className:`flex items-baseline gap-2.5`,children:[(0,Y.jsxs)(`h2`,{className:`flex items-center gap-2 text-base font-semibold`,children:[(0,Y.jsx)(e,{className:`h-4 w-4 text-muted-foreground`}),t]}),n&&(0,Y.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:n})]})}function Ic({domain:e,group:t,countsByType:r,locale:i,packageSuffix:a}){let o=Tc[e]??pe,s=Ec[e]??Ec.other,c=t.slice(0,6),l=t.length-c.length;return(0,Y.jsxs)(`div`,{className:`group rounded-2xl border bg-card p-4 ring-1 ring-transparent transition-all hover:-translate-y-0.5 hover:shadow-lg ${s.ring}`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,Y.jsx)(`div`,{className:`flex h-9 w-9 items-center justify-center rounded-xl bg-gradient-to-br ${s.from} ${s.to} text-white shadow-sm`,children:(0,Y.jsx)(o,{className:`h-[18px] w-[18px]`})}),(0,Y.jsxs)(`div`,{className:`min-w-0`,children:[(0,Y.jsx)(`div`,{className:`truncate text-sm font-semibold`,children:Ai(e,i)}),(0,Y.jsxs)(`div`,{className:`text-[11px] text-muted-foreground`,children:[t.length,` `,G(`engine.home.typesLower`,i)]})]})]}),(0,Y.jsxs)(`div`,{className:`mt-3 flex flex-wrap gap-1.5`,children:[c.map(e=>(0,Y.jsxs)(n,{to:`metadata/${encodeURIComponent(e.type)}${a}`,className:`inline-flex items-center gap-1.5 rounded-lg border bg-background px-2 py-1 text-xs transition-colors hover:border-primary/50 hover:bg-accent`,children:[(0,Y.jsx)(`span`,{className:`truncate max-w-[10rem]`,children:Ni(e.type,i,e.label)}),(0,Y.jsx)(`span`,{className:`tabular-nums text-[10px] text-muted-foreground`,children:r[e.type]??0})]},e.type)),l>0&&(0,Y.jsxs)(n,{to:`metadata${a}`,className:`inline-flex items-center gap-1 rounded-lg px-2 py-1 text-xs font-medium ${s.text} hover:underline`,children:[`+`,l]})]})]})}function Lc({entry:e,itemName:t,subtitle:i,stats:a,actions:o,embedded:s=!1,children:c}){let l=e?.type??``,u=Mi(),d=Ni(l,u,e?.label),{pathname:f}=r(),p=X.useMemo(()=>{let e=f.indexOf(`/metadata`);return e>=0?f.slice(0,e+9):`/metadata`},[f]);return(0,Y.jsxs)(`div`,{className:`flex flex-col h-full overflow-hidden`,children:[t?(0,Y.jsxs)(`div`,{className:`px-6 py-2.5 border-b bg-background flex items-center gap-3 min-h-[44px]`,children:[(0,Y.jsxs)(`nav`,{className:`flex items-center gap-1.5 text-xs text-muted-foreground min-w-0`,children:[s?(0,Y.jsx)(`span`,{className:`shrink-0`,children:d}):(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(n,{to:p,className:`hover:text-foreground shrink-0`,children:G(`engine.breadcrumb.allTypes`,u)}),(0,Y.jsx)(fr,{className:`h-3 w-3 shrink-0`}),(0,Y.jsx)(n,{to:`${p}/${encodeURIComponent(l)}`,className:`hover:text-foreground shrink-0`,children:d})]}),(0,Y.jsx)(fr,{className:`h-3 w-3 shrink-0`}),(0,Y.jsx)(`span`,{className:`text-foreground font-medium font-mono truncate`,title:t,children:t})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5 shrink-0`,children:[e?.domain&&(0,Y.jsx)(I,{variant:`outline`,className:`text-[10px] uppercase tracking-wider h-5 px-1.5`,children:Ai(e.domain,u)}),e?.allowOrgOverride?(0,Y.jsx)(I,{className:`text-[10px] h-5 px-1.5 `+(e.overrideSource===`env`?`bg-amber-100 text-amber-800 hover:bg-amber-100`:`bg-emerald-100 text-emerald-800 hover:bg-emerald-100`),title:e.overrideSource===`env`?`Writable via OBJECTSTACK_METADATA_WRITABLE env var`:`Writable per ADR-0005 overlay opt-in`,children:G(`engine.badge.writable`,u)}):e?.allowRuntimeCreate?(0,Y.jsx)(I,{className:`text-[10px] h-5 px-1.5 bg-sky-100 text-sky-800 hover:bg-sky-100`,title:`Code-shipped items are locked; new items can be created at runtime`,children:G(`engine.badge.createOnly`,u)}):(0,Y.jsx)(I,{variant:`outline`,className:`text-[10px] h-5 px-1.5 text-muted-foreground`,children:G(`engine.badge.readOnly`,u)})]}),i&&(0,Y.jsx)(`div`,{className:`text-xs text-muted-foreground truncate`,children:i}),(0,Y.jsx)(`div`,{className:`flex-1`}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 shrink-0`,children:[a?.map((e,t)=>(0,Y.jsxs)(`div`,{className:`flex items-baseline gap-1 px-2 py-0.5 rounded border bg-muted/30`,children:[(0,Y.jsx)(`span`,{className:`text-[10px] uppercase tracking-wider text-muted-foreground`,children:e.label}),(0,Y.jsx)(`span`,{className:`text-xs font-semibold tabular-nums`,children:e.value})]},t)),o]})]}):(0,Y.jsxs)(`div`,{className:`px-6 pt-5 pb-4 border-b bg-background`,children:[!s&&(0,Y.jsxs)(`nav`,{className:`flex items-center gap-1.5 text-xs text-muted-foreground mb-2`,children:[(0,Y.jsx)(n,{to:p,className:`hover:text-foreground`,children:G(`engine.breadcrumb.allTypes`,u)}),(0,Y.jsx)(fr,{className:`h-3 w-3`}),(0,Y.jsx)(`span`,{className:`text-foreground font-medium`,children:d})]}),(0,Y.jsxs)(`div`,{className:`flex items-start justify-between gap-3 flex-wrap`,children:[(0,Y.jsxs)(`div`,{className:`min-w-0`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,Y.jsx)(`h1`,{className:`text-xl font-semibold truncate`,children:d}),(0,Y.jsx)(`code`,{className:`text-xs font-mono text-muted-foreground`,children:l}),e?.domain&&(0,Y.jsx)(I,{variant:`outline`,className:`text-[10px] uppercase tracking-wider`,children:Ai(e.domain,u)}),e?.allowOrgOverride?(0,Y.jsx)(I,{className:`text-[10px] `+(e.overrideSource===`env`?`bg-amber-100 text-amber-800 hover:bg-amber-100`:`bg-emerald-100 text-emerald-800 hover:bg-emerald-100`),title:e.overrideSource===`env`?`Writable via OBJECTSTACK_METADATA_WRITABLE env var`:`Writable per ADR-0005 overlay opt-in`,children:G(`engine.badge.writable`,u)}):e?.allowRuntimeCreate?(0,Y.jsx)(I,{className:`text-[10px] bg-sky-100 text-sky-800 hover:bg-sky-100`,title:`Code-shipped items are locked; new items can be created at runtime`,children:G(`engine.badge.createOnly`,u)}):(0,Y.jsx)(I,{variant:`outline`,className:`text-[10px] text-muted-foreground`,children:G(`engine.badge.readOnly`,u)})]}),i&&(0,Y.jsx)(`div`,{className:`text-sm text-muted-foreground mt-1`,children:i}),!i&&e?.description&&(0,Y.jsx)(`div`,{className:`text-sm text-muted-foreground mt-1 max-w-3xl`,children:e.description})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[a?.map((e,t)=>(0,Y.jsxs)(`div`,{className:`flex flex-col items-end px-3 py-1 rounded border bg-muted/30 min-w-[64px]`,children:[(0,Y.jsx)(`span`,{className:`text-[10px] uppercase tracking-wider text-muted-foreground`,children:e.label}),(0,Y.jsx)(`span`,{className:`text-sm font-semibold tabular-nums`,children:e.value})]},t)),o]})]})]}),(0,Y.jsx)(`div`,{className:`flex-1 overflow-auto`,children:c})]})}var Rc={primary:`default`,secondary:`secondary`,danger:`destructive`,ghost:`ghost`,link:`link`};function zc(e,t,n){return e.indexOf("${")===-1?e:e.replace(/\$\{(param|ctx)\.([\w.]+)\}/g,(e,r,i)=>{let a=r===`param`?n:t,o=i.split(`.`).reduce((e,t)=>e?.[t],a);return o==null?``:encodeURIComponent(String(o))})}function Bc({entry:e,location:t,recordId:n,onAfter:r}){let[i,a]=X.useState(null),[o,s]=X.useState({open:!1,params:[]}),[c,l]=X.useState({open:!1}),u=X.useMemo(()=>f(),[]),d=X.useMemo(()=>(e?.actions??[]).filter(e=>ee(e,t)),[e?.actions,t]);if(d.length===0)return null;let p=(e,t)=>new Promise(n=>{s({open:!0,params:e,title:t,resolve:n})}),m=async e=>{let t=e.label??e.name;if(e.type!==`api`){di.error(`Action “${t}”: type "${e.type??`script`}" is not supported here yet.`);return}if(e.confirmText&&!window.confirm(e.confirmText))return;let i;if(Array.isArray(e.params)&&e.params.length>0){let n=await p(e.params,t);if(n==null)return;i=n}else i=e.params??{};let o={recordId:n,origin:window.location.origin},s=zc(e.target??``,o,i);if(!s){di.error(`Action “${t}” has no target.`);return}let c=``.replace(/\/+$/,``),d=/^https?:\/\//i.test(s)?s:`${c}${s}`,f=(e.method||`POST`).toUpperCase();a(e.name);try{let n={method:f,headers:{"Content-Type":`application/json`},credentials:`include`};f!==`GET`&&f!==`DELETE`&&(n.body=JSON.stringify(i));let a=await u(d,n),o=null;try{o=await a.json()}catch{}let s=o&&typeof o.success==`boolean`&&`data`in o?o.data:o;if(!a.ok||o&&o.success===!1){let n=o?.error,r=(typeof n==`object`&&n?n.message:void 0)||(typeof n==`string`?n:void 0)||o?.message||`HTTP ${a.status} ${a.statusText}`.trim();di.error(`${e.errorMessage?`${e.errorMessage}: `:``}${t}: ${r}`);return}if(e.resultDialog)l({open:!0,spec:e.resultDialog,data:s??{}});else{let n=e.successMessage||(typeof s?.message==`string`?s.message:`${t} ✓`);di.success(n)}e.refreshAfter&&r?.()}catch(e){di.error(`${t}: ${e?.message??String(e)}`)}finally{a(null)}};return(0,Y.jsxs)(Y.Fragment,{children:[d.map(e=>{let t=e.icon?Oi(e.icon):null,n=i===e.name;return(0,Y.jsxs)(U,{size:`sm`,variant:Rc[e.variant??`secondary`]??`secondary`,disabled:n,onClick:()=>m(e),title:e.label??e.name,children:[n?(0,Y.jsx)(H,{className:`h-4 w-4 mr-1 animate-spin`}):t?(0,Y.jsx)(t,{className:`h-4 w-4 mr-1`}):null,e.label??e.name]},e.name)}),(0,Y.jsx)(hi,{state:o,onOpenChange:e=>{e||(o.resolve?.(null),s({open:!1,params:[]}))}}),(0,Y.jsx)(vi,{state:c,onAcknowledge:()=>l({open:!1})})]})}function Vc(e){let t=(Array.isArray(e)?e:[e]).map(e=>e.split(`.`));return(e,n)=>{for(let r of t){let t=e;for(let e of r)if(t&&typeof t==`object`&&e in t)t=t[e];else{t=void 0;break}if(t===n)return!0}return!1}}var Hc=new Map;function Uc(e){let t=Hc.get(e.type);if(!t){Hc.set(e.type,e);return}let n={...t};for(let[t,r]of Object.entries(e))r!==void 0&&(n[t]=r);Hc.set(e.type,n)}function Wc(e){return Hc.get(e)}function Gc(e){let t=[];for(let n of Hc.values())if(n.anchors?.length)for(let r of n.anchors)r.anchorType===e&&t.push({type:n.type,config:n,anchor:r});return t.sort((e,t)=>{let n=e.anchor.order??100,r=t.anchor.order??100;if(n!==r)return n-r;let i=e.anchor.groupLabel??e.config.label??e.type,a=t.anchor.groupLabel??t.config.label??t.type;return i.localeCompare(a)}),t}function Kc(e,t){let n=Hc.get(e)??{type:e};return{...n,type:e,label:n.label??t?.label??e,description:n.description??t?.description,domain:n.domain??t?.domain??`other`,allowOrgOverride:t?.allowOrgOverride,defaultSchema:n.defaultSchema}}function qc(e,t){if(t===`overlay`||t===`runtime`)return`runtime`;if(t===`code`||t===`artifact`)return`artifact`;let n=e._packageId;return!n||n===`sys_metadata`?`runtime`:`artifact`}function Jc({type:e}){let t=s(),n=e??t.type??``;if(n===`package`){let e=t.appName??`studio`;return(0,Y.jsx)(l,{to:`/apps/${e}/component/developer/packages`,replace:!0})}let r=Wc(n);if(r?.ListPage){let e=r.ListPage;return(0,Y.jsx)(e,{type:n})}return(0,Y.jsx)(Yc,{type:n,appName:t.appName})}function Yc({type:e,appName:t}){let r=i(),a=Hi(),{entries:s}=Wi(a),c=s.find(t=>t.type===e),l=Kc(e,c),[u,d]=X.useState([]),[f,p]=X.useState(!0),[m,h]=X.useState(null),[g,_]=X.useState(``),[v,y]=X.useState(`all`),[b,x]=o(),[S,C]=X.useState(0),[w,T]=X.useState(null);X.useEffect(()=>{let e=!1;return(async()=>{try{let t=await a.list(`package`);if(e)return;T(Gs(t))}catch{e||T([])}})(),()=>{e=!0}},[a]);let[E,D]=X.useState(null);X.useEffect(()=>{let e=!1;if(!t){D(null);return}return(async()=>{try{let n=await a.list(`app`);if(e)return;let r=(n??[]).map(e=>e&&typeof e==`object`&&`item`in e?e.item:e).find(e=>e?.name===t||e?._packageId===t);D(r?._packageId??null)}catch{e||D(null)}})(),()=>{e=!0}},[a,t]);let O=b.get(`package`),k=X.useMemo(()=>{if(!w)return null;if(O&&w.some(e=>e.id===O))return O;if(w.length===0)return null;if(E&&w.some(e=>e.id===E))return E;let e=new Map;for(let t of u){let n=t.item?._packageId;n&&n!==`sys_metadata`&&e.set(n,(e.get(n)??0)+1)}let t=null,n=0;for(let r of w){let i=e.get(r.id)??0;i>n&&(t=r.id,n=i)}return t??w[0]?.id??null},[w,O,u,E]);X.useEffect(()=>{if(!w||w.length===0||O&&w.some(e=>e.id===O)||!(E&&w.some(e=>e.id===E))&&u.length===0||!k)return;let e=new URLSearchParams(b);e.set(`package`,k),x(e,{replace:!0})},[w,O,u,k,E]);let A=k?`?package=${encodeURIComponent(k)}`:``,[j,M]=X.useState(!1),ee=X.useCallback(()=>{let e=w??[];if(w!==null&&e.length===0){M(!0);return}if(e.length>0&&!k){r(`./new?package=${encodeURIComponent(e[0].id)}`);return}r(`./new${A}`)},[w,k,A,r]);X.useEffect(()=>{let t=!1;return p(!0),h(null),(async()=>{try{let n=await a.list(e);if(t)return;let r=(n??[]).map(e=>{let t=(e&&typeof e==`object`&&`item`in e?e.item:e)??{},n=t?._diagnostics??e?._diagnostics??void 0;return{raw:e,item:t,source:qc(t,e?.source),diagnostics:n}});d(r),p(!1)}catch(e){t||(h(e?.message??String(e)),p(!1))}})(),()=>{t=!0}},[a,e,S]);let te=l.searchableFields??[`name`,`label`,`description`],N=X.useMemo(()=>u.filter(e=>l.listFilter&&!l.listFilter(e.item)||!k?!1:e.item?._packageId===k),[u,k,l]),ne=N.filter(e=>!(!Bi(e.item,g,te)||v!==`all`&&e.source!==v)),re=X.useMemo(()=>{let e={all:N.length,artifact:0,runtime:0};for(let t of N)e[t.source]++;return e},[N]),ie=X.useMemo(()=>N.filter(e=>e.diagnostics&&e.diagnostics.valid===!1).length,[N]),ae=X.useMemo(()=>N.filter(e=>e.diagnostics&&e.diagnostics.valid!==!1&&(e.diagnostics.warnings?.length??0)>0).length,[N]),P=l.listColumns??Xc(l.primaryKey??`name`),F=Mi(),oe=Ni(e,F,c?.label??e),se=e=>{let t=`engine.list.col.${e.key}`,n=G(t,F);return n===t?e.label:n};return(0,Y.jsx)(Lc,{entry:c??{type:e,label:e},stats:[{label:G(`engine.list.items`,F),value:N.length},{label:G(`engine.list.filtered`,F),value:ne.length},...ie>0?[{label:G(`engine.list.invalid`,F),value:(0,Y.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-destructive`,children:[(0,Y.jsx)(z,{className:`w-3.5 h-3.5`}),ie]})}]:[],...ae>0?[{label:G(`engine.list.warnings`,F),value:(0,Y.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-amber-600 dark:text-amber-400`,children:[(0,Y.jsx)(z,{className:`w-3.5 h-3.5`}),ae]})}]:[]],actions:(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(Bc,{entry:c,location:`list_toolbar`,onAfter:()=>C(e=>e+1)}),(0,Y.jsx)(U,{variant:`ghost`,size:`sm`,onClick:()=>C(e=>e+1),title:G(`engine.list.refresh`,F),children:(0,Y.jsx)(gr,{className:`h-4 w-4`})}),(c?.allowOrgOverride||c?.allowRuntimeCreate)&&(0,Y.jsxs)(U,{size:`sm`,variant:l.createFields?`default`:`outline`,onClick:ee,title:l.createFields?W(`engine.list.createHint`,F,{type:oe}):void 0,children:[(0,Y.jsx)(B,{className:`h-4 w-4 mr-1`}),G(`engine.list.create`,F)]})]}),children:(0,Y.jsxs)(`div`,{className:`p-6 space-y-4`,children:[(0,Y.jsx)(yc,{open:j,onOpenChange:M,onCreated:e=>r(`./new?package=${encodeURIComponent(e)}`)}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 flex-wrap`,children:[(0,Y.jsxs)(`div`,{className:`relative flex-1 min-w-[200px] max-w-md`,children:[(0,Y.jsx)(He,{className:`absolute left-2.5 top-1/2 -translate-y-1/2 h-3.5 w-3.5 text-muted-foreground`}),(0,Y.jsx)(R,{className:`pl-8`,placeholder:G(`engine.list.search`,F),value:g,onChange:e=>_(e.target.value)})]}),(0,Y.jsxs)(Sr,{value:v,onValueChange:y,children:[(0,Y.jsx)(Rn,{className:`w-[180px]`,children:(0,Y.jsx)(nn,{})}),(0,Y.jsxs)(lr,{children:[(0,Y.jsxs)(Wn,{value:`all`,children:[G(`engine.list.allSources`,F),` (`,re.all,`)`]}),(0,Y.jsxs)(Wn,{value:`artifact`,children:[G(`engine.list.source.artifact`,F),` (`,re.artifact,`)`]}),(0,Y.jsxs)(Wn,{value:`runtime`,children:[G(`engine.list.source.runtime`,F),` (`,re.runtime,`)`]})]})]})]}),(f||w===null)&&(0,Y.jsxs)(`div`,{className:`text-sm text-muted-foreground`,children:[G(`engine.edit.loading`,F),` `,e,`…`]}),m&&(0,Y.jsx)(`div`,{className:`text-sm text-destructive border border-destructive/30 rounded p-3 bg-destructive/5`,children:m}),!f&&!m&&w!==null&&w.length===0&&(0,Y.jsxs)(zr,{children:[(0,Y.jsx)(On,{children:`No project packages installed`}),(0,Y.jsx)(bn,{children:`Studio only shows metadata that belongs to a project software package. Install or create a project package to manage its metadata here.`})]}),!f&&!m&&w!==null&&w.length>0&&ne.length===0&&(0,Y.jsxs)(zr,{children:[(0,Y.jsx)(On,{children:N.length===0?W(`engine.list.emptyType`,F,{type:oe}):W(`engine.list.emptyQuery`,F,{query:g})}),(0,Y.jsx)(bn,{children:l.emptyStateHint??(c?.allowOrgOverride||c?.allowRuntimeCreate?W(`engine.list.createHint`,F,{type:oe}):G(`engine.list.readOnlyHint`,F))}),N.length===0&&(c?.allowOrgOverride||c?.allowRuntimeCreate)&&(0,Y.jsx)(`div`,{className:`mt-4`,children:(0,Y.jsxs)(U,{onClick:ee,children:[(0,Y.jsx)(B,{className:`h-4 w-4 mr-1`}),G(`engine.list.create`,F)]})})]}),!f&&ne.length>0&&(0,Y.jsx)(`div`,{className:`border rounded-lg overflow-hidden`,children:(0,Y.jsxs)(`table`,{className:`w-full text-sm`,children:[(0,Y.jsx)(`thead`,{className:`bg-muted/40 text-xs uppercase tracking-wider text-muted-foreground`,children:(0,Y.jsxs)(`tr`,{children:[P.map(e=>(0,Y.jsx)(`th`,{className:`px-3 py-2 text-left font-medium`,style:e.width?{width:e.width}:void 0,children:se(e)},e.key)),(0,Y.jsx)(`th`,{className:`px-3 py-2 text-right font-medium w-[80px]`,children:G(`engine.list.col.source`,F)})]})}),(0,Y.jsx)(`tbody`,{className:`divide-y`,children:ne.map((e,t)=>{let r=l.primaryKey??`name`,i=String(e.item[r]??`(unnamed-${t})`),a=e.item._packageId,o=a&&a!==`sys_metadata`?`?package=${encodeURIComponent(a)}`:A,s=e.diagnostics?.valid===!1,c=e.diagnostics?.errors??[],u=e.diagnostics?.warnings??[],d=!s&&u.length>0,f=s?c.slice(0,3).map(e=>`${e.path||`(root)`}: ${e.message}`).join(`
3
3
  `)+(c.length>3?`\n+${c.length-3} more`:``):d?u.slice(0,3).map(e=>`${e.path||`(root)`}: ${e.message}`).join(`
4
4
  `)+(u.length>3?`\n+${u.length-3} more`:``):``;return(0,Y.jsxs)(`tr`,{className:`hover:bg-accent/50 `+(s?`bg-destructive/[0.04]`:d?`bg-amber-500/[0.05]`:``),children:[P.map((t,r)=>{let a=e.item[t.key],l=t.render?t.render(a,e.item):Zc(a);return(0,Y.jsx)(`td`,{className:`px-3 py-2 align-top`,children:r===0?(0,Y.jsxs)(`span`,{className:`inline-flex items-center gap-1.5`,children:[s&&(0,Y.jsx)(`span`,{className:`inline-flex`,"aria-label":G(`engine.list.invalidTitle`,F),title:`${W(`engine.list.invalidCount`,F,{count:c.length})}\n${f}`,children:(0,Y.jsx)(z,{className:`w-3.5 h-3.5 text-destructive shrink-0`})}),d&&(0,Y.jsx)(`span`,{className:`inline-flex`,"aria-label":G(`engine.list.warnTitle`,F),title:`${W(`engine.list.warnCount`,F,{count:u.length})}\n${f}`,children:(0,Y.jsx)(z,{className:`w-3.5 h-3.5 text-amber-600 dark:text-amber-400 shrink-0`})}),(0,Y.jsx)(n,{to:`./${encodeURIComponent(i)}${o}`,className:`text-primary hover:underline font-mono`,children:l})]}):l},t.key)}),(0,Y.jsxs)(`td`,{className:`px-3 py-2 text-right align-top`,children:[e.item._lock&&e.item._lock!==`none`&&(0,Y.jsx)(`span`,{className:`inline-flex items-center mr-1 text-amber-600 dark:text-amber-400`,title:e.item._lockReason??`_lock=${String(e.item._lock)}`,children:(0,Y.jsx)(un,{className:`h-3 w-3`})}),(0,Y.jsx)(I,{variant:`outline`,className:`text-[10px] `+(e.source===`artifact`?`border-sky-500/50 text-sky-700 dark:text-sky-300`:`border-emerald-500/50 text-emerald-700 dark:text-emerald-300`),title:e.source===`artifact`?`${G(`engine.list.source.artifactDesc`,F)}${e.item._packageId?` (${e.item._packageId})`:``}`:G(`engine.list.source.runtimeDesc`,F),children:G(`engine.list.source.${e.source}`,F)})]})]},i+t)})})]})})]})})}function Xc(e){return[{key:e,label:e,width:`30%`},{key:`label`,label:`Label`,width:`30%`},{key:`description`,label:`Description`}]}function Zc(e){if(e==null||e===``)return(0,Y.jsx)(`span`,{className:`text-muted-foreground`,children:`—`});if(typeof e==`boolean`)return e?`✓`:`✗`;if(typeof e==`object`)try{return(0,Y.jsx)(`code`,{className:`font-mono text-xs`,children:JSON.stringify(e).slice(0,60)})}catch{return String(e)}return String(e)}var Qc={unchanged:{badge:`bg-muted text-muted-foreground border border-border`,row:``},modified:{badge:`bg-amber-100 text-amber-900 border border-amber-300 dark:bg-amber-950/60 dark:text-amber-200 dark:border-amber-800`,row:`bg-amber-50/50 dark:bg-amber-950/20`},added:{badge:`bg-emerald-100 text-emerald-900 border border-emerald-300 dark:bg-emerald-950/60 dark:text-emerald-200 dark:border-emerald-800`,row:`bg-emerald-50/50 dark:bg-emerald-950/20`},removed:{badge:`bg-rose-100 text-rose-900 border border-rose-300 dark:bg-rose-950/60 dark:text-rose-200 dark:border-rose-800`,row:`bg-rose-50/50 dark:bg-rose-950/20`}};function $c(e,t){let n=el(e)?e:{},r=el(t)?t:{},i=new Set([...Object.keys(n),...Object.keys(r)]),a=[];for(let e of i){let t=e in n,i=e in r,o=n[e],s=r[e],c;c=t&&!i?`removed`:!t&&i?`added`:tl(o)===tl(s)?`unchanged`:`modified`,a.push({key:e,status:c,codeValue:o,effectiveValue:s})}let o={modified:0,added:1,removed:2,unchanged:3};return a.sort((e,t)=>o[e.status]===o[t.status]?e.key.localeCompare(t.key):o[e.status]-o[t.status]),a}function el(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function tl(e){try{return JSON.stringify(e,(e,t)=>el(t)?Object.keys(t).sort().reduce((e,n)=>(e[n]=t[n],e),{}):t)}catch{return String(e)}}function nl(e){if(e===void 0)return`—`;if(e===null)return`null`;if(typeof e==`string`)return e;if(typeof e==`number`||typeof e==`boolean`)return String(e);try{return JSON.stringify(e)}catch{return String(e)}}function rl(e,t){if(e==null)return 0;let n=0;for(let r of $c(e,t))r.status!==`unchanged`&&(n+=1);return n}function il({layered:e,loading:t,locale:n}){if(t)return(0,Y.jsx)(`div`,{className:`p-4 text-sm text-muted-foreground`,children:G(`engine.edit.loading`,n)});if(!e)return(0,Y.jsx)(`div`,{className:`p-4 text-sm text-muted-foreground`,children:G(`engine.layers.diff.noBaseline`,n)});let r=e.overlay!=null;return(0,Y.jsxs)(er,{defaultValue:`diff`,className:`w-full`,children:[(0,Y.jsxs)(Zn,{className:`grid grid-cols-4 w-fit`,children:[(0,Y.jsx)(it,{value:`diff`,children:G(`engine.layers.diff`,n)}),(0,Y.jsxs)(it,{value:`code`,children:[G(`engine.layers.code`,n),(0,Y.jsx)(I,{variant:`outline`,className:`ml-1.5 text-[10px]`,children:ki(`layer`,`artifact`,n)})]}),(0,Y.jsxs)(it,{value:`overlay`,children:[G(`engine.layers.overlay`,n),r?(0,Y.jsx)(I,{className:`ml-1.5 text-[10px] bg-emerald-600 text-emerald-50`,children:e.overlayScope??ki(`layer`,`set`,n)}):(0,Y.jsx)(I,{variant:`outline`,className:`ml-1.5 text-[10px] text-muted-foreground`,children:ki(`layer`,`none`,n)})]}),(0,Y.jsxs)(it,{value:`effective`,children:[G(`engine.layers.effective`,n),(0,Y.jsx)(I,{variant:`outline`,className:`ml-1.5 text-[10px]`,children:ki(`layer`,`merged`,n)})]})]}),(0,Y.jsx)(ce,{value:`diff`,className:`mt-3`,children:(0,Y.jsx)(al,{code:e.code,effective:e.effective,locale:n})}),(0,Y.jsx)(ce,{value:`code`,className:`mt-3`,children:(0,Y.jsx)(sl,{payload:e.code,emptyHint:G(`engine.layers.diff.noBaseline`,n)})}),(0,Y.jsx)(ce,{value:`overlay`,className:`mt-3`,children:(0,Y.jsx)(sl,{payload:e.overlay,emptyHint:G(`engine.layers.diff.noChanges`,n)})}),(0,Y.jsx)(ce,{value:`effective`,className:`mt-3`,children:(0,Y.jsx)(sl,{payload:e.effective,emptyHint:`No effective value resolved.`})})]})}function al({code:e,effective:t,locale:n}){let[r,i]=X.useState(!1),a=X.useMemo(()=>e==null?[]:$c(e,t),[e,t]),o=X.useMemo(()=>a.reduce((e,t)=>(e[t.status]+=1,e),{unchanged:0,modified:0,added:0,removed:0}),[a]);if(e==null)return(0,Y.jsx)(`div`,{className:`rounded border bg-muted/30 p-4 text-xs text-muted-foreground`,children:G(`engine.layers.diff.noBaseline`,n)});let s=r?a:a.filter(e=>e.status!==`unchanged`),c=o.modified>0||o.added>0||o.removed>0;return(0,Y.jsxs)(`div`,{className:`space-y-3`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between gap-3 flex-wrap`,children:[(0,Y.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:W(`engine.layers.diff.summary`,n,{modified:o.modified,added:o.added,removed:o.removed})}),(0,Y.jsxs)(`label`,{className:`flex items-center gap-2 text-xs text-muted-foreground cursor-pointer select-none`,children:[(0,Y.jsx)(ui,{checked:r,onCheckedChange:i,"aria-label":G(`engine.layers.diff.showUnchanged`,n)}),G(`engine.layers.diff.showUnchanged`,n),(0,Y.jsx)(I,{variant:`outline`,className:`ml-1 text-[10px]`,children:o.unchanged})]})]}),!c&&!r?(0,Y.jsx)(`div`,{className:`rounded border bg-muted/30 p-4 text-xs text-muted-foreground`,children:G(`engine.layers.diff.noChanges`,n)}):(0,Y.jsxs)(`div`,{className:`rounded border overflow-hidden`,children:[(0,Y.jsxs)(`div`,{className:`grid grid-cols-[minmax(140px,1fr)_minmax(160px,1.4fr)_minmax(160px,1.4fr)_auto] bg-muted/50 text-[11px] font-medium uppercase tracking-wide text-muted-foreground`,children:[(0,Y.jsx)(`div`,{className:`px-3 py-2`,children:G(`engine.layers.diff.field`,n)}),(0,Y.jsx)(`div`,{className:`px-3 py-2`,children:G(`engine.layers.diff.code`,n)}),(0,Y.jsx)(`div`,{className:`px-3 py-2`,children:G(`engine.layers.diff.effective`,n)}),(0,Y.jsx)(`div`,{className:`px-3 py-2`,children:G(`engine.layers.diff.status`,n)})]}),(0,Y.jsx)(`div`,{className:`divide-y`,children:s.map(e=>{let t=Qc[e.status];return(0,Y.jsxs)(`div`,{className:L(`grid grid-cols-[minmax(140px,1fr)_minmax(160px,1.4fr)_minmax(160px,1.4fr)_auto] text-xs`,t.row),children:[(0,Y.jsx)(`div`,{className:`px-3 py-2 font-mono text-foreground truncate`,title:e.key,children:e.key}),(0,Y.jsx)(ol,{value:e.codeValue,muted:e.status===`added`}),(0,Y.jsx)(ol,{value:e.effectiveValue,muted:e.status===`removed`}),(0,Y.jsx)(`div`,{className:`px-3 py-2`,children:(0,Y.jsx)(`span`,{className:L(`inline-flex items-center rounded px-1.5 py-0.5 text-[10px] font-medium`,t.badge),children:G(`engine.layers.diff.${e.status}`,n)})})]},e.key)})})]})]})}function ol({value:e,muted:t}){let n=nl(e);return(0,Y.jsx)(`div`,{className:L(`px-3 py-2 font-mono break-all`,t||e===void 0?`text-muted-foreground italic`:`text-foreground`),title:n.length>200?n:void 0,children:n.length>200?`${n.slice(0,200)}…`:n})}function sl({payload:e,emptyHint:t}){if(e==null)return(0,Y.jsx)(`div`,{className:`rounded border bg-muted/30 p-4 text-xs text-muted-foreground`,children:t});let n;try{n=JSON.stringify(e,null,2)}catch{n=String(e)}return(0,Y.jsx)(`pre`,{className:`rounded border bg-muted/30 p-3 text-xs font-mono overflow-auto max-h-[420px]`,children:n})}var cl={modified:`bg-amber-100 text-amber-900 border border-amber-300 dark:bg-amber-950/60 dark:text-amber-200 dark:border-amber-800`,added:`bg-emerald-100 text-emerald-900 border border-emerald-300 dark:bg-emerald-950/60 dark:text-emerald-200 dark:border-emerald-800`,removed:`bg-rose-100 text-rose-900 border border-rose-300 dark:bg-rose-950/60 dark:text-rose-200 dark:border-rose-800`},ll={modified:`bg-amber-50/50 dark:bg-amber-950/20`,added:`bg-emerald-50/50 dark:bg-emerald-950/20`,removed:`bg-rose-50/50 dark:bg-rose-950/20`};function ul(e,t){return G(e===`added`?`designer.canvas.diffAdded`:e===`removed`?`designer.canvas.diffRemoved`:`designer.canvas.diffChanged`,t)}function dl(e){if(e===void 0)return`—`;if(e===null)return`null`;if(typeof e==`string`)return e.length>200?`${e.slice(0,200)}…`:e;if(typeof e==`number`||typeof e==`boolean`)return String(e);try{let t=JSON.stringify(e);return t.length>200?`${t.slice(0,200)}…`:t}catch{return String(e)}}function fl(e,t){let n=0;for(let r of $c(e,t))r.status!==`unchanged`&&(n+=1);return n}function pl({published:e,draft:t,locale:n,className:r}){let i=X.useMemo(()=>$c(e,t).filter(e=>e.status!==`unchanged`),[e,t]);return i.length===0?(0,Y.jsx)(`div`,{className:`p-4 text-sm text-muted-foreground ${r??``}`,children:G(`designer.draftReview.empty`,n)}):(0,Y.jsx)(`div`,{className:`flex flex-col gap-1.5 ${r??``}`,"data-testid":`draft-review-panel`,children:i.map(e=>{let t=e.status;return(0,Y.jsxs)(`div`,{className:`flex flex-wrap items-baseline gap-2 rounded-md px-2.5 py-1.5 text-xs ${ll[t]}`,children:[(0,Y.jsx)(`span`,{className:`inline-flex shrink-0 items-center rounded px-1.5 py-px text-[10px] font-medium uppercase tracking-wide ${cl[t]}`,children:ul(t,n)}),(0,Y.jsx)(`code`,{className:`font-mono font-medium text-foreground`,children:e.key}),t===`added`?(0,Y.jsx)(`ins`,{className:`text-emerald-700 no-underline dark:text-emerald-400`,children:dl(e.effectiveValue)}):t===`removed`?(0,Y.jsx)(`del`,{className:`text-rose-700 dark:text-rose-400`,children:dl(e.codeValue)}):(0,Y.jsxs)(`span`,{className:`inline-flex items-baseline gap-1.5 text-muted-foreground`,children:[(0,Y.jsx)(`del`,{className:`text-rose-700 dark:text-rose-400`,children:dl(e.codeValue)}),(0,Y.jsx)(`span`,{"aria-hidden":`true`,children:`→`}),(0,Y.jsx)(`ins`,{className:`text-emerald-700 no-underline dark:text-emerald-400`,children:dl(e.effectiveValue)})]})]},e.key)})})}function ml({type:e,name:t,parentItem:n,onOpen:r}){let a=Hi(),o=i(),s=X.useMemo(()=>Gc(e),[e]),[c,l]=X.useState([]),[u,d]=X.useState(``),[f,p]=X.useState({});if(X.useEffect(()=>{if(s.length===0){l([]);return}let e=!1,r=[...s].sort((e,t)=>(e.anchor.order??999)-(t.anchor.order??999)).map(e=>{if(e.anchor.source===`embedded`){let t=e.anchor.extract&&n?e.anchor.extract(n):[];return{childType:e.type,anchor:e.anchor,loading:!1,error:null,items:t.map(hl)}}return{childType:e.type,anchor:e.anchor,loading:!0,error:null,items:[]}});return l(r),Promise.all(r.map(async n=>{if(n.anchor.source===`embedded`)return n;try{let r=await a.list(n.childType);if(e)return n;let i=n.anchor.match??(()=>!1),o=r.filter(e=>i(e,t)).map(e=>hl(e));return{...n,loading:!1,items:o}}catch(t){return e?n:{...n,loading:!1,error:t instanceof Error?t.message:String(t)}}})).then(t=>{e||l(t)}),()=>{e=!0}},[a,e,t,s,n]),s.length===0)return(0,Y.jsxs)(zr,{children:[(0,Y.jsx)(On,{children:`No related metadata`}),(0,Y.jsxs)(bn,{children:[`No metadata types are configured to anchor at `,(0,Y.jsx)(`code`,{children:e}),`. You can register one via`,` `,(0,Y.jsx)(`code`,{className:`font-mono`,children:`registerMetadataResource`}),`.`]})]});let m=c.reduce((e,t)=>e+t.items.length,0),h=c.some(e=>e.loading),g=u.trim().toLowerCase();return(0,Y.jsxs)(`div`,{className:`space-y-4`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsxs)(`div`,{className:`relative flex-1 max-w-sm`,children:[(0,Y.jsx)(He,{className:`absolute left-2 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground`}),(0,Y.jsx)(R,{placeholder:`Search related…`,value:u,onChange:e=>d(e.target.value),className:`pl-8 h-8 text-sm`})]}),(0,Y.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:h?`Scanning…`:`${m} item${m===1?``:`s`}`})]}),c.map(n=>{let i=g?n.items.filter(e=>e.name.toLowerCase().includes(g)||(e.label??``).toLowerCase().includes(g)):n.items,a=f[n.childType]??!1;return!(!g||i.length>0)&&!n.loading?null:(0,Y.jsxs)(`div`,{className:`border rounded-lg overflow-hidden`,children:[(0,Y.jsxs)(`div`,{className:`w-full flex items-center gap-2 px-3 py-2 bg-muted/40`,children:[(0,Y.jsxs)(`button`,{type:`button`,className:`flex items-center gap-2 flex-1 text-left hover:opacity-80`,onClick:()=>p(e=>({...e,[n.childType]:!a})),children:[(0,Y.jsx)(fr,{className:L(`h-4 w-4 text-muted-foreground transition-transform`,!a&&`rotate-90`)}),(0,Y.jsx)(`div`,{className:`text-sm font-medium`,children:n.anchor.groupLabel??n.childType}),(0,Y.jsx)(I,{variant:`outline`,className:`text-[10px]`,children:n.loading?`…`:i.length})]}),(0,Y.jsx)(U,{variant:`ghost`,size:`sm`,className:`h-7 px-2`,onClick:()=>{if(n.anchor.source===`embedded`){if(typeof window<`u`){let e=new URL(window.location.href);e.searchParams.set(`tab`,`form`),e.searchParams.delete(`open`),window.location.assign(e.toString())}return}o(`../../${encodeURIComponent(n.childType)}/_new?anchor=${encodeURIComponent(`${e}:${t}`)}`)},title:n.anchor.source===`embedded`?`Edit in Form tab`:`New ${n.childType}`,children:(0,Y.jsx)(B,{className:`h-3.5 w-3.5`})})]}),!a&&(0,Y.jsxs)(`div`,{children:[n.loading&&(0,Y.jsxs)(`div`,{className:`px-3 py-3 text-xs text-muted-foreground flex items-center gap-2`,children:[(0,Y.jsx)(H,{className:`h-3.5 w-3.5 animate-spin`}),`Loading `,n.childType,`…`]}),!n.loading&&n.error&&(0,Y.jsxs)(`div`,{className:`px-3 py-3 text-xs text-destructive`,children:[`Failed: `,n.error]}),!n.loading&&!n.error&&i.length===0&&(0,Y.jsx)(`div`,{className:`px-3 py-3 text-xs text-muted-foreground`,children:g?`No matches.`:`Nothing here yet.`}),!n.loading&&!n.error&&i.length>0&&(0,Y.jsxs)(`table`,{className:`w-full text-sm border-t`,children:[(0,Y.jsx)(`thead`,{children:(0,Y.jsxs)(`tr`,{className:`bg-muted/30 text-[10px] uppercase tracking-wider text-muted-foreground`,children:[(0,Y.jsx)(`th`,{className:`text-left font-medium px-3 py-1.5 w-[45%]`,children:`Name`}),(0,Y.jsx)(`th`,{className:`text-left font-medium px-3 py-1.5`,children:`Label`}),(0,Y.jsx)(`th`,{className:`w-8`})]})}),(0,Y.jsx)(`tbody`,{className:`divide-y`,children:i.map((i,a)=>(0,Y.jsxs)(`tr`,{role:`button`,tabIndex:0,onClick:()=>r(n.anchor.source===`embedded`?{kind:`embedded`,parentType:e,parentName:t,groupLabel:n.anchor.groupLabel??n.childType,itemName:i.name,raw:i.raw,editAs:n.anchor.editAs,embeddedPath:n.anchor.embeddedPath}:{kind:`metadata`,type:n.childType,name:i.name}),onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&e.currentTarget.click()},className:`hover:bg-accent/50 cursor-pointer`,children:[(0,Y.jsx)(`td`,{className:`px-3 py-1.5 font-mono text-xs truncate max-w-0`,children:i.name}),(0,Y.jsx)(`td`,{className:`px-3 py-1.5 text-xs text-muted-foreground truncate max-w-0`,children:i.label&&i.label!==i.name?i.label:``}),(0,Y.jsx)(`td`,{className:`px-3 py-1.5 text-right`,children:(0,Y.jsx)(Tr,{className:`h-3.5 w-3.5 text-muted-foreground inline`})})]},`${i.name}-${a}`))})]})]})]},n.childType)})]})}function hl(e){return{name:gl(e,[`name`,`id`,`key`])??`(unnamed)`,label:gl(e,[`label`,`title`,`displayName`]),description:gl(e,[`description`,`summary`]),raw:e}}function gl(e,t){for(let n of t){let t=e[n];if(typeof t==`string`&&t.length>0)return t}}function _l({parentType:e,parentName:t,embeddedPath:n,itemName:r,editAs:i,initialRaw:a,onSaved:o}){let s=Mi(),c=Hi(),{entries:l}=Wi(c),u=i?l.find(e=>e.type===i):void 0,d=!u?.schema&&i?yl[i]:void 0,f=u?.schema??d?.schema,p=u?.form??d?.form,[m,h]=X.useState(a),[g,_]=X.useState(!1),[v,y]=X.useState(null),[b,x]=X.useState([]),[S,C]=X.useState(null);X.useEffect(()=>{h(a),y(null),x([]),C(null)},[a,r,e,t]);let w=u!=null&&!u.allowOrgOverride&&!u.allowRuntimeCreate;async function T(){if(!n){y(G(`engine.embedded.saveNoPath`,s));return}_(!0),y(null),x([]);try{let i=await c.layered(e,t),a=vl(i.effective??i.code??{},n,r,m);await c.save(e,t,a),C(Date.now()),o?.(m)}catch(e){if(e?.status===422||ne(e,[`INVALID_METADATA`,`INVALID_PAYLOAD`])){let t=e?.body?.issues??[],i=(Array.isArray(t)?t:[]).map(e=>{let t=Array.isArray(e.path)?e.path.join(`.`):String(e.path??``),i=`${n}.${r}.`;return{path:t.startsWith(i)?t.slice(i.length):t,message:Pi(String(e.message??`Invalid`),s)}});x(i),y(i.length===1?G(`engine.validation.failedOne`,s):W(`engine.validation.failed`,s,{count:i.length}))}else y(e?.message??String(e))}finally{_(!1)}}return f?(0,Y.jsxs)(`div`,{className:`p-4 space-y-4`,children:[v&&(0,Y.jsx)(`div`,{className:`text-sm text-destructive border border-destructive/30 rounded p-3 bg-destructive/5`,children:v}),S!=null&&!v&&(0,Y.jsx)(`div`,{className:`text-sm text-emerald-700 border border-emerald-300 bg-emerald-50 rounded p-2`,children:G(`engine.embedded.saved`,s)}),w&&(0,Y.jsx)(`div`,{className:`text-xs text-amber-800 border border-amber-300 bg-amber-50 rounded p-2`,children:G(`engine.embedded.readOnlyParent`,s)}),(0,Y.jsx)(xa,{schema:f,form:p,value:m,onChange:h,issues:b}),(0,Y.jsx)(`div`,{className:`flex justify-end gap-2 pt-2 border-t`,children:(0,Y.jsxs)(U,{onClick:T,disabled:g||!n,children:[g?(0,Y.jsx)(H,{className:`h-4 w-4 mr-1 animate-spin`}):(0,Y.jsx)(Kt,{className:`h-4 w-4 mr-1`}),W(`engine.embedded.saveIntoParent`,s,{parentType:e})]})}),!n&&(0,Y.jsxs)(`div`,{className:`text-xs text-muted-foreground border rounded p-3`,children:[(0,Y.jsx)(`div`,{className:`font-medium`,children:G(`engine.embedded.readOnly`,s)}),(0,Y.jsx)(`div`,{children:G(`engine.embedded.noPathHint`,s)})]})]}):(0,Y.jsxs)(`div`,{className:`p-4 space-y-3`,children:[(0,Y.jsx)(`div`,{className:`text-xs text-muted-foreground`,children:W(`engine.embedded.noSchema`,s,{type:i??`this item`,target:`${e}/${t}.${n}.${r}`})}),(0,Y.jsx)(`textarea`,{className:`w-full h-[60vh] font-mono text-xs border rounded p-3 bg-muted/30`,value:JSON.stringify(m,null,2),onChange:e=>{try{h(JSON.parse(e.target.value)),y(null)}catch(e){y(`${G(`engine.form.invalidJson`,s)}: ${e.message}`)}}}),v&&(0,Y.jsxs)(`div`,{className:`text-sm text-destructive border border-destructive/30 rounded p-2 bg-destructive/5`,children:[(0,Y.jsx)(z,{className:`h-4 w-4 inline mr-1`}),` `,v]}),(0,Y.jsx)(`div`,{className:`flex justify-end`,children:(0,Y.jsxs)(U,{onClick:T,disabled:g||!n,children:[g?(0,Y.jsx)(H,{className:`h-4 w-4 mr-1 animate-spin`}):(0,Y.jsx)(Kt,{className:`h-4 w-4 mr-1`}),W(`engine.embedded.saveIntoParent`,s,{parentType:`parent`})]})})]})}function vl(e,t,n,r){let i=t.split(`.`),a=structuredClone(e),o=a;for(let e=0;e<i.length-1;e++)o[i[e]]??(o[i[e]]={}),o=o[i[e]];let s=i[i.length-1],c=o[s];if(Array.isArray(c)){let e=c.findIndex(e=>e&&typeof e==`object`&&e.name===n);e>=0?c[e]=r:c.push(r)}else if(c&&typeof c==`object`){let{name:e,...t}=r;c[n]=t}else{let{name:e,...t}=r;o[s]={[n]:t}}return a}var yl={index:{schema:{type:`object`,required:[`fields`],properties:{name:{type:`string`,title:`Name`,description:`Synthesised from columns if omitted (e.g. idx_email).`},fields:{type:`array`,title:`Fields`,description:`Columns to index, in order.`,items:{type:`string`}},type:{type:`string`,title:`Algorithm`,enum:[`btree`,`hash`,`gin`,`gist`,`brin`],default:`btree`},unique:{type:`boolean`,title:`Unique`,description:`Enforce uniqueness across the indexed columns.`},where:{type:`string`,title:`Partial-index predicate`,description:`Optional WHERE clause for a partial index.`}}}}};function bl({target:e,onClose:t,parentContext:n}){let r=i(),a=e?.kind===`metadata`,o=e?.kind===`embedded`,s=a?e.type:o?e.groupLabel:``,c=a?e.name:o?e.itemName:``;return(0,Y.jsx)(Ir,{open:e!==null,onOpenChange:e=>{e||t()},children:(0,Y.jsxs)(_n,{side:`right`,className:L(`w-[92vw] sm:max-w-[1100px] p-0 flex flex-col gap-0`),children:[(0,Y.jsxs)(Kr,{className:`px-4 py-3 border-b space-y-1`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(I,{variant:`outline`,className:`font-mono text-[10px]`,children:s}),(0,Y.jsx)(wn,{className:`font-mono text-base truncate`,children:c}),(0,Y.jsx)(`div`,{className:`ml-auto flex items-center gap-1`,children:a&&(0,Y.jsxs)(U,{variant:`ghost`,size:`sm`,onClick:()=>{r(`../../${encodeURIComponent(e.type)}/${encodeURIComponent(e.name)}`),t()},title:`Open in full page`,children:[(0,Y.jsx)(Tr,{className:`h-3.5 w-3.5 mr-1`}),`Open full page`]})})]}),n&&(0,Y.jsxs)(rr,{className:`text-xs`,children:[o?`Embedded in `:`Related to `,(0,Y.jsxs)(`span`,{className:`font-mono`,children:[n.type,`/`,n.name]})]})]}),(0,Y.jsxs)(`div`,{className:`flex-1 min-h-0 overflow-auto`,children:[a&&(0,Y.jsx)(Cu,{type:e.type,name:e.name,embedded:!0},`${e.type}/${e.name}`),o&&(0,Y.jsx)(_l,{parentType:e.parentType,parentName:e.parentName,embeddedPath:e.embeddedPath,itemName:e.itemName,editAs:e.editAs,initialRaw:e.raw},`${e.parentType}/${e.parentName}/${e.embeddedPath}/${e.itemName}`)]})]})})}function xl({type:e,name:t}){let n=s(),r=e??n.type??``,a=t??n.name??``,o=i(),c=Hi(),l=Mi(),{entries:u}=Wi(c),d=u.find(e=>e.type===r),[f,p]=X.useState(0),[m,h]=X.useState(0);return(0,Y.jsx)(Lc,{entry:d??{type:r,label:r},itemName:a,subtitle:G(`engine.edit.historySubtitle`,l),stats:[{label:G(`engine.edit.historyEvents`,l),value:m}],actions:(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(U,{variant:`ghost`,size:`sm`,onClick:()=>o(`../${encodeURIComponent(a)}`),children:[(0,Y.jsx)(si,{className:`h-4 w-4 mr-1`}),`Back to item`]}),(0,Y.jsx)(U,{variant:`ghost`,size:`sm`,onClick:()=>p(e=>e+1),children:(0,Y.jsx)(gr,{className:`h-4 w-4`})})]}),children:(0,Y.jsx)(`div`,{className:`p-6 max-w-4xl`,children:(0,Y.jsx)(Sl,{type:r,name:a,refreshKey:f,onCount:h,client:c,locale:l,onRollback:()=>p(e=>e+1)})})})}function Sl({type:e,name:t,refreshKey:n=0,onCount:r,client:i,onRollback:a,rollbackConfirm:o,rollbackLabel:s,locale:c}){let[l,u]=X.useState([]),[d,f]=X.useState(!0),[p,m]=X.useState(null),[h,g]=X.useState(null),[_,v]=X.useState(null),[y,b]=X.useState(0);X.useEffect(()=>{let n=!1;return f(!0),m(null),(async()=>{try{let a=await i.history(e,t,{limit:100});if(n)return;let o=[...Array.isArray(a)?a:Array.isArray(a?.events)?a.events:[]].sort((e,t)=>(t.seq??0)-(e.seq??0));u(o),r?.(o.length),f(!1)}catch(e){n||(m(e?.message??String(e)),f(!1))}})(),()=>{n=!0}},[i,e,t,n,y]);async function x(n){let r=o?o(n):`Restore version ${n}? This writes the historical body back as the current overlay.`;if(confirm(r)){v(n),m(null);try{await i.rollback(e,t,n),a?.(n),b(e=>e+1)}catch(e){m(e?.message??String(e))}finally{v(null)}}}return(0,Y.jsxs)(Y.Fragment,{children:[d&&(0,Y.jsxs)(`div`,{className:`text-sm text-muted-foreground flex items-center gap-2`,children:[(0,Y.jsx)(H,{className:`h-4 w-4 animate-spin`}),` Loading history…`]}),p&&(0,Y.jsx)(`div`,{className:`text-sm text-destructive border border-destructive/30 rounded p-3 bg-destructive/5`,children:p}),!d&&!p&&l.length===0&&(0,Y.jsxs)(zr,{children:[(0,Y.jsx)(On,{children:G(`engine.edit.historyEmptyTitle`,c)}),(0,Y.jsx)(bn,{children:G(`engine.edit.historyEmptyDesc`,c)})]}),!d&&l.length>0&&(0,Y.jsx)(`ol`,{className:`space-y-2 relative pl-6 border-l`,children:l.map((e,t)=>{let n=h===t,r=e.op??e.kind,i=e.ts??e.at,o=!!a&&typeof e.version==`number`&&r!==`delete`&&r!==`tombstone`;return(0,Y.jsxs)(`li`,{className:`relative`,children:[(0,Y.jsx)(`span`,{className:`absolute -left-[27px] top-2 w-3 h-3 rounded-full bg-primary ring-4 ring-background`}),(0,Y.jsxs)(`div`,{role:`button`,tabIndex:0,onClick:()=>g(n?null:t),onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&g(n?null:t)},className:`border rounded-lg p-3 hover:border-primary/50 cursor-pointer transition-colors`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,Y.jsxs)(I,{variant:`outline`,className:`text-[10px] font-mono`,children:[`seq `,e.seq??`–`]}),typeof e.version==`number`&&(0,Y.jsxs)(I,{variant:`outline`,className:`text-[10px] font-mono`,children:[`v`,e.version]}),r&&(0,Y.jsx)(I,{className:`text-[10px] `+(r===`delete`||r===`tombstone`?`bg-red-100 text-red-800 hover:bg-red-100`:r===`create`?`bg-blue-100 text-blue-800 hover:bg-blue-100`:r===`publish`?`bg-emerald-100 text-emerald-800 hover:bg-emerald-100`:r===`revert`?`bg-amber-100 text-amber-900 hover:bg-amber-100`:`bg-emerald-100 text-emerald-800 hover:bg-emerald-100`),children:ki(`op`,String(r),c)}),e.actor&&(0,Y.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[`by`,` `,(0,Y.jsx)(`span`,{className:`font-mono`,children:String(e.actor)})]}),i&&(0,Y.jsx)(`span`,{className:`text-xs text-muted-foreground ml-auto`,children:Cl(i)}),o&&(0,Y.jsx)(U,{size:`sm`,variant:`ghost`,className:`h-6 w-6 p-0`,title:s??`Rollback to this version`,disabled:_!==null,onClick:t=>{t.stopPropagation(),x(e.version)},children:_===e.version?(0,Y.jsx)(H,{className:`h-3.5 w-3.5 animate-spin`}):(0,Y.jsx)(Br,{className:`h-3.5 w-3.5`})})]}),n&&(0,Y.jsx)(`pre`,{className:`mt-2 text-xs font-mono bg-muted/30 rounded p-2 overflow-auto max-h-[280px]`,children:wl(e)})]})]},`${e.seq??t}-${t}`)})})]})}function Cl(e){try{let t=new Date(e);return Number.isNaN(t.getTime())?String(e):t.toLocaleString()}catch{return String(e)}}function wl(e){try{return JSON.stringify(e,null,2)}catch{return String(e)}}function Tl(e){if(!e)return``;let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString()}function El(e,t){let n={allowed:{label:`allowed`,cls:`bg-emerald-50 text-emerald-700 border-emerald-200`,Icon:Ne},denied:{label:`denied`,cls:`bg-rose-50 text-rose-700 border-rose-200`,Icon:ue},forced:{label:`forced`,cls:`bg-amber-50 text-amber-700 border-amber-200`,Icon:It}},r=n[e]??n.allowed;return(0,Y.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded border px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wide ${r.cls}`,children:[(0,Y.jsx)(r.Icon,{className:`h-3 w-3`}),ki(`outcome`,r.label,t)]})}function Dl({type:e,name:t,client:n,locale:r=`en-US`}){let[i,a]=X.useState(!1),[o,s]=X.useState(null),[c,l]=X.useState(null),u=X.useCallback(async()=>{a(!0),s(null);try{let r=await n.audit(e,t,{limit:100});l(r.events??[])}catch(e){s(String(e?.message??e)),l([])}finally{a(!1)}},[n,e,t]);return X.useEffect(()=>{u()},[u]),(0,Y.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between border-b px-1 pb-2`,children:[(0,Y.jsxs)(`div`,{className:`text-xs text-muted-foreground`,children:[c?.length??0,` `,G(`engine.edit.auditCount`,r)]}),(0,Y.jsxs)(U,{variant:`ghost`,size:`sm`,onClick:()=>void u(),disabled:i,className:`h-7 gap-1 text-xs`,title:G(`engine.edit.refresh`,r),children:[i?(0,Y.jsx)(H,{className:`h-3 w-3 animate-spin`}):(0,Y.jsx)(gr,{className:`h-3 w-3`}),G(`engine.edit.refresh`,r)]})]}),o&&(0,Y.jsx)(`div`,{className:`m-2 rounded border border-rose-200 bg-rose-50 p-2 text-xs text-rose-700`,children:o}),(0,Y.jsx)(`div`,{className:`flex-1 overflow-auto`,children:i&&(!c||c.length===0)?(0,Y.jsxs)(`div`,{className:`flex h-32 items-center justify-center text-xs text-muted-foreground`,children:[(0,Y.jsx)(H,{className:`mr-2 h-3 w-3 animate-spin`}),G(`engine.edit.loading`,r)]}):!c||c.length===0?(0,Y.jsxs)(zr,{className:`py-10`,children:[(0,Y.jsx)(On,{children:G(`engine.edit.auditEmptyTitle`,r)}),(0,Y.jsx)(bn,{children:G(`engine.edit.auditEmptyDescription`,r)})]}):(0,Y.jsxs)(`table`,{className:`w-full text-xs`,children:[(0,Y.jsx)(`thead`,{className:`sticky top-0 bg-muted/40 text-left text-[10px] uppercase tracking-wide text-muted-foreground`,children:(0,Y.jsxs)(`tr`,{children:[(0,Y.jsx)(`th`,{className:`px-2 py-1.5 font-medium`,children:G(`engine.edit.auditColTime`,r)}),(0,Y.jsx)(`th`,{className:`px-2 py-1.5 font-medium`,children:G(`engine.edit.auditColActor`,r)}),(0,Y.jsx)(`th`,{className:`px-2 py-1.5 font-medium`,children:G(`engine.edit.auditColOperation`,r)}),(0,Y.jsx)(`th`,{className:`px-2 py-1.5 font-medium`,children:G(`engine.edit.auditColOutcome`,r)}),(0,Y.jsx)(`th`,{className:`px-2 py-1.5 font-medium`,children:G(`engine.edit.auditColLock`,r)}),(0,Y.jsx)(`th`,{className:`px-2 py-1.5 font-medium`,children:G(`engine.edit.auditColNote`,r)})]})}),(0,Y.jsx)(`tbody`,{children:c.map(e=>(0,Y.jsxs)(`tr`,{className:`border-t border-border/50 align-top hover:bg-muted/20`,children:[(0,Y.jsx)(`td`,{className:`whitespace-nowrap px-2 py-1.5 font-mono text-[11px]`,children:Tl(e.occurredAt)}),(0,Y.jsx)(`td`,{className:`px-2 py-1.5`,children:e.actor}),(0,Y.jsx)(`td`,{className:`px-2 py-1.5`,children:(0,Y.jsx)(I,{variant:`outline`,className:`text-[10px]`,children:ki(`op`,e.operation,r)})}),(0,Y.jsx)(`td`,{className:`px-2 py-1.5`,children:El(e.outcome,r)}),(0,Y.jsx)(`td`,{className:`px-2 py-1.5`,children:e.lockState&&e.lockState!==`none`?(0,Y.jsxs)(`span`,{className:`font-mono text-[11px]`,children:[ki(`lock`,e.lockState,r),e.lockOverridden?` *`:``]}):(0,Y.jsx)(`span`,{className:`text-muted-foreground`,children:`—`})}),(0,Y.jsx)(`td`,{className:`max-w-[28ch] truncate px-2 py-1.5 text-muted-foreground`,title:e.note??e.code,children:e.note??e.code})]},String(e.id)))})]})})]})}var Ol=new Map;function kl(e,t){Ol.set(e,t)}function Al(e){return Ol.get(e)}var jl=new Map;function Ml(e,t){jl.set(e,t)}function Nl(e){return jl.get(e)}var Pl=new Map;function Fl(e,t){Pl.set(e,t)}function Il(e){return Pl.get(e)}function Ll(e,t=!1){let n=e.length,r=0,i=``,a=0,o=16,s=0,c=0,l=0,u=0,d=0;function f(t,n){let i=0,a=0;for(;i<t||!n;){let t=e.charCodeAt(r);if(t>=48&&t<=57)a=a*16+t-48;else if(t>=65&&t<=70)a=a*16+t-65+10;else if(t>=97&&t<=102)a=a*16+t-97+10;else break;r++,i++}return i<t&&(a=-1),a}function p(e){r=e,i=``,a=0,o=16,d=0}function m(){let t=r;if(e.charCodeAt(r)===48)r++;else for(r++;r<e.length&&Bl(e.charCodeAt(r));)r++;if(r<e.length&&e.charCodeAt(r)===46)if(r++,r<e.length&&Bl(e.charCodeAt(r)))for(r++;r<e.length&&Bl(e.charCodeAt(r));)r++;else return d=3,e.substring(t,r);let n=r;if(r<e.length&&(e.charCodeAt(r)===69||e.charCodeAt(r)===101))if(r++,(r<e.length&&e.charCodeAt(r)===43||e.charCodeAt(r)===45)&&r++,r<e.length&&Bl(e.charCodeAt(r))){for(r++;r<e.length&&Bl(e.charCodeAt(r));)r++;n=r}else d=3;return e.substring(t,n)}function h(){let t=``,i=r;for(;;){if(r>=n){t+=e.substring(i,r),d=2;break}let a=e.charCodeAt(r);if(a===34){t+=e.substring(i,r),r++;break}if(a===92){if(t+=e.substring(i,r),r++,r>=n){d=2;break}switch(e.charCodeAt(r++)){case 34:t+=`"`;break;case 92:t+=`\\`;break;case 47:t+=`/`;break;case 98:t+=`\b`;break;case 102:t+=`\f`;break;case 110:t+=`
5
5
  `;break;case 114:t+=`\r`;break;case 116:t+=` `;break;case 117:let e=f(4,!0);e>=0?t+=String.fromCharCode(e):d=4;break;default:d=5}i=r;continue}if(a>=0&&a<=31)if(zl(a)){t+=e.substring(i,r),d=2;break}else d=6;r++}return t}function g(){if(i=``,d=0,a=r,c=s,u=l,r>=n)return a=n,o=17;let t=e.charCodeAt(r);if(Rl(t)){do r++,i+=String.fromCharCode(t),t=e.charCodeAt(r);while(Rl(t));return o=15}if(zl(t))return r++,i+=String.fromCharCode(t),t===13&&e.charCodeAt(r)===10&&(r++,i+=`
@@ -1 +1 @@
1
- import{n as e}from"./createDerive-DmbuzviK.js";function t(e){if(!e||typeof e!=`object`)return null;let t=e;if(`item`in t){let e=t.item;return!e||typeof e!=`object`?null:Object.keys(e).length>0?e:null}return Object.keys(t).length>0?t:null}async function n(e,t,n,r){await r.metadataClient.save(e,t,n,{mode:`draft`})}function r(t){let n=String(t.name??``).trim();return n?n.includes(`.`)?n.slice(n.lastIndexOf(`.`)+1):n:e(String(t.label??``))||`${String(t.type??``).trim()||`view`}_${Date.now().toString(36)}`}function i(e,t,n={}){let i=String(e??``),a=String(n.label??t?.label??``).trim(),o=r({name:n.name,label:a,type:t?.type}),s=i?`${i}.${o}`:o,c={...t??{}};return delete c.name,delete c.label,c.data={provider:`object`,...t?.data??{},object:i},{name:s,object:i,viewKind:`list`,label:a,config:c}}async function a(e,t,n,r){if(!t||!String(t).trim())throw Error(`createRuntimeMetadata: name must be non-empty (type="${e}"). The server PUT /meta/:type/:name route requires a name segment.`);return await r.metadataClient.save(e,t,n,{mode:`draft`}),t}async function o(e,n,r){return t(await r.metadataClient.get(e,n,{state:`draft`}))}async function s(e,t,n){await n.metadataClient.reset(e,t,{state:`draft`})}async function c(e,t,n){await n.metadataClient.publish(e,t)}export{o as a,c as i,s as n,i as o,n as r,a as t};
1
+ import{n as e}from"./createDerive-CGF05Hgy.js";function t(e){if(!e||typeof e!=`object`)return null;let t=e;if(`item`in t){let e=t.item;return!e||typeof e!=`object`?null:Object.keys(e).length>0?e:null}return Object.keys(t).length>0?t:null}async function n(e,t,n,r){await r.metadataClient.save(e,t,n,{mode:`draft`})}function r(t){let n=String(t.name??``).trim();return n?n.includes(`.`)?n.slice(n.lastIndexOf(`.`)+1):n:e(String(t.label??``))||`${String(t.type??``).trim()||`view`}_${Date.now().toString(36)}`}function i(e,t,n={}){let i=String(e??``),a=String(n.label??t?.label??``).trim(),o=r({name:n.name,label:a,type:t?.type}),s=i?`${i}.${o}`:o,c={...t??{}};return delete c.name,delete c.label,c.data={provider:`object`,...t?.data??{},object:i},{name:s,object:i,viewKind:`list`,label:a,config:c}}async function a(e,t,n,r){if(!t||!String(t).trim())throw Error(`createRuntimeMetadata: name must be non-empty (type="${e}"). The server PUT /meta/:type/:name route requires a name segment.`);return await r.metadataClient.save(e,t,n,{mode:`draft`}),t}async function o(e,n,r){return t(await r.metadataClient.get(e,n,{state:`draft`}))}async function s(e,t,n){await n.metadataClient.reset(e,t,{state:`draft`})}async function c(e,t,n){await n.metadataClient.publish(e,t)}export{o as a,c as i,s as n,i as o,n as r,a as t};