@graphmemory/server 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/LICENSE +84 -12
  2. package/README.md +7 -1
  3. package/dist/api/index.js +147 -50
  4. package/dist/api/rest/index.js +35 -15
  5. package/dist/api/rest/tools.js +8 -1
  6. package/dist/api/tools/code/search-code.js +12 -9
  7. package/dist/api/tools/code/search-files.js +1 -1
  8. package/dist/api/tools/docs/cross-references.js +3 -2
  9. package/dist/api/tools/docs/explain-symbol.js +2 -1
  10. package/dist/api/tools/docs/find-examples.js +2 -1
  11. package/dist/api/tools/docs/search-files.js +1 -1
  12. package/dist/api/tools/docs/search-snippets.js +1 -1
  13. package/dist/api/tools/docs/search.js +5 -4
  14. package/dist/api/tools/file-index/search-all-files.js +1 -1
  15. package/dist/api/tools/knowledge/add-attachment.js +14 -3
  16. package/dist/api/tools/knowledge/remove-attachment.js +5 -1
  17. package/dist/api/tools/knowledge/search-notes.js +5 -4
  18. package/dist/api/tools/skills/add-attachment.js +14 -3
  19. package/dist/api/tools/skills/recall-skills.js +1 -1
  20. package/dist/api/tools/skills/remove-attachment.js +5 -1
  21. package/dist/api/tools/skills/search-skills.js +6 -5
  22. package/dist/api/tools/tasks/add-attachment.js +14 -3
  23. package/dist/api/tools/tasks/remove-attachment.js +5 -1
  24. package/dist/api/tools/tasks/search-tasks.js +5 -4
  25. package/dist/cli/index.js +61 -51
  26. package/dist/cli/indexer.js +60 -28
  27. package/dist/graphs/code.js +70 -7
  28. package/dist/graphs/docs.js +15 -2
  29. package/dist/graphs/file-index.js +17 -3
  30. package/dist/graphs/file-lang.js +1 -1
  31. package/dist/graphs/knowledge.js +20 -3
  32. package/dist/graphs/skill.js +23 -4
  33. package/dist/graphs/task.js +23 -4
  34. package/dist/lib/embedding-codec.js +65 -0
  35. package/dist/lib/jwt.js +4 -4
  36. package/dist/lib/multi-config.js +6 -1
  37. package/dist/lib/parsers/code.js +158 -31
  38. package/dist/lib/parsers/codeblock.js +11 -6
  39. package/dist/lib/parsers/docs.js +59 -31
  40. package/dist/lib/parsers/languages/registry.js +2 -2
  41. package/dist/lib/parsers/languages/typescript.js +195 -44
  42. package/dist/lib/project-manager.js +14 -10
  43. package/dist/lib/search/bm25.js +18 -1
  44. package/dist/lib/search/code.js +12 -3
  45. package/dist/ui/assets/NoteForm-aZX9f6-3.js +1 -0
  46. package/dist/ui/assets/SkillForm-KYa3o92l.js +1 -0
  47. package/dist/ui/assets/TaskForm-Bl5nkybO.js +1 -0
  48. package/dist/ui/assets/_articleId_-DjbCByxM.js +1 -0
  49. package/dist/ui/assets/_docId_-hdCDjclV.js +1 -0
  50. package/dist/ui/assets/_filePath_-CpG836v4.js +1 -0
  51. package/dist/ui/assets/_noteId_-C1enaQd1.js +1 -0
  52. package/dist/ui/assets/_skillId_-hPoCet7J.js +1 -0
  53. package/dist/ui/assets/_taskId_-DSB3dLVz.js +1 -0
  54. package/dist/ui/assets/_toolName_-3SmCfxZy.js +2 -0
  55. package/dist/ui/assets/api-BMnBjMMf.js +1 -0
  56. package/dist/ui/assets/api-BlFF6gX-.js +1 -0
  57. package/dist/ui/assets/api-CrGJOcaN.js +1 -0
  58. package/dist/ui/assets/api-DuX-0a_X.js +1 -0
  59. package/dist/ui/assets/attachments-CEQ-2nMo.js +1 -0
  60. package/dist/ui/assets/client-Bq88u7gN.js +1 -0
  61. package/dist/ui/assets/docs-CrXsRcOG.js +1 -0
  62. package/dist/ui/assets/edit-BYiy1FZy.js +1 -0
  63. package/dist/ui/assets/edit-TUIIpUMF.js +1 -0
  64. package/dist/ui/assets/edit-hc-ZWz3y.js +1 -0
  65. package/dist/ui/assets/esm-BWiKNcBW.js +1 -0
  66. package/dist/ui/assets/files-0bPg6NH9.js +1 -0
  67. package/dist/ui/assets/graph-DXGud_wF.js +1 -0
  68. package/dist/ui/assets/help-CEMQqZUR.js +891 -0
  69. package/dist/ui/assets/help-DJ52_fxN.js +1 -0
  70. package/dist/ui/assets/index-BCZDAYZi.js +2 -0
  71. package/dist/ui/assets/index-D6zSNtzo.css +1 -0
  72. package/dist/ui/assets/knowledge-DeygeGGH.js +1 -0
  73. package/dist/ui/assets/new-CpD7hOBA.js +1 -0
  74. package/dist/ui/assets/new-DHTg3Dqq.js +1 -0
  75. package/dist/ui/assets/new-s8c0M75X.js +1 -0
  76. package/dist/ui/assets/prompts-BgOmdxgM.js +295 -0
  77. package/dist/ui/assets/rolldown-runtime-Dw2cE7zH.js +1 -0
  78. package/dist/ui/assets/search-EpJhdP2a.js +1 -0
  79. package/dist/ui/assets/skill-y9pizyqE.js +1 -0
  80. package/dist/ui/assets/skills-Cga9iUZN.js +1 -0
  81. package/dist/ui/assets/tasks-CobouTKV.js +1 -0
  82. package/dist/ui/assets/tools-JxKH5BDF.js +1 -0
  83. package/dist/ui/assets/vendor-graph-BWpSgpMe.js +321 -0
  84. package/dist/ui/assets/vendor-markdown-CT8ZVEPu.js +50 -0
  85. package/dist/ui/assets/vendor-md-editor-DmWafJvr.js +44 -0
  86. package/dist/ui/assets/{index-kKd4mVrh.css → vendor-md-editor-HrwGbQou.css} +1 -1
  87. package/dist/ui/assets/vendor-mui-BPj7d3Sw.js +139 -0
  88. package/dist/ui/assets/vendor-mui-icons-B196sG3f.js +1 -0
  89. package/dist/ui/assets/vendor-react-CHUjhoxh.js +11 -0
  90. package/dist/ui/index.html +11 -3
  91. package/package.json +2 -2
  92. package/dist/ui/assets/index-0hRezICt.js +0 -1702
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-Dw2cE7zH.js";import{D as t,O as n}from"./vendor-markdown-CT8ZVEPu.js";import{c as r,l as i}from"./vendor-react-CHUjhoxh.js";import{$ as a,C as o,D as s,I as c,M as l,N as u,O as d,P as f,S as p,T as m,Y as h,et as ee,h as g,j as _,k as v,nt as y,ot as b,q as x,r as S,tt as C,ut as w,v as T,w as E,y as D}from"./vendor-mui-BPj7d3Sw.js";import{A as O,J as k,K as A,M as j,j as M,st as N}from"./vendor-mui-icons-B196sG3f.js";import{F as P,J as F,R as I,V as L,_ as te,s as ne,u as re,w as ie}from"./index-BCZDAYZi.js";import{i as ae}from"./api-BlFF6gX-.js";import{r as oe}from"./api-BMnBjMMf.js";import{t as se}from"./api-CrGJOcaN.js";import{l as ce,m as le,o as ue}from"./skill-y9pizyqE.js";var R=e(n(),1),z=t(),de=[`knowledge`,`tasks`,`skills`,`docs`,`code`,`files`],fe={knowledge:`warning`,tasks:`primary`,skills:`neutral`,files:`success`,docs:`neutral`,code:`error`};function B(e,t){return e.fromId===t?e.toId:e.fromId}function V(e,t,n){return t===`knowledge`?`/${e}/knowledge/${n}`:t===`tasks`?`/${e}/tasks/${n}`:t===`skills`?`/${e}/skills/${n}`:t===`files`?`/${e}/files/view/${n}`:t===`docs`?`/${e}/docs/${encodeURIComponent(n)}`:t===`code`?`/${e}/graph?focus=${encodeURIComponent(n)}&scope=code`:null}function H({projectId:e,entityId:t,entityType:n,relations:o,onRefresh:l}){let u=r(),{palette:m}=w(),{projectId:ee}=i(),g=ee||e,[_,O]=(0,R.useState)(!1),[k,M]=(0,R.useState)(`knowledge`),[H,U]=(0,R.useState)(``),[W,G]=(0,R.useState)([]),[K,q]=(0,R.useState)(!1),[J,Y]=(0,R.useState)(null),[X,pe]=(0,R.useState)(`relates_to`),[me,Z]=(0,R.useState)(!1),[Q,$]=(0,R.useState)(null),he=async()=>{if(H.trim()){q(!0),Y(null);try{let t=[],n=H.trim();k===`knowledge`?t=(await F(e,n,{topK:10})).map(e=>({id:e.id,label:e.title,score:e.score})):k===`tasks`?t=(await te(e,n,{topK:10})).map(e=>({id:e.id,label:e.title,score:e.score})):k===`docs`?t=(await ae(e,n,{topK:10})).map(e=>({id:e.id,label:e.title||e.id,score:e.score})):k===`code`?t=(await se(e,n,{topK:10})).map(e=>({id:e.id,label:e.name||e.id,score:e.score})):k===`skills`?t=(await le(e,n,{topK:10})).map(e=>({id:e.id,label:e.title,score:e.score})):k===`files`&&(t=(await oe(e,n,{topK:10})).map(e=>({id:e.filePath,label:e.filePath,score:e.score}))),G(t)}catch{}finally{q(!1)}}},ge=async()=>{if(J){Z(!0);try{let r=k===n?void 0:k;n===`knowledge`?await I(e,{fromId:t,toId:J.id,kind:X,targetGraph:r}):n===`skills`?await ue(e,{fromId:t,toId:J.id,kind:X,targetGraph:r}):await ne(e,{fromId:t,toId:J.id,kind:X,targetGraph:r}),O(!1),U(``),G([]),Y(null),pe(`relates_to`),l()}finally{Z(!1)}}},_e=async()=>{if(!Q)return;let t=Q;$(null);try{n===`knowledge`?await L(e,{fromId:t.fromId,toId:t.toId,targetGraph:t.targetGraph}):n===`skills`?await ce(e,{fromId:t.fromId,toId:t.toId,targetGraph:t.targetGraph}):await re(e,{fromId:t.fromId,toId:t.toId,targetGraph:t.targetGraph}),l()}catch{}},ve=(e,t)=>{let n=V(g,e,t);n&&u(n)};return(0,z.jsxs)(h,{children:[(0,z.jsxs)(h,{sx:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,mb:1},children:[(0,z.jsx)(a,{variant:`subtitle2`,sx:{color:m.custom.textMuted},children:`Relations`}),(0,z.jsx)(x,{size:`small`,startIcon:(0,z.jsx)(A,{}),onClick:()=>O(!_),children:_?`Cancel`:`Add`})]}),o.length===0&&!_&&(0,z.jsx)(a,{variant:`body2`,sx:{color:m.custom.textMuted},children:`No relations`}),o.length>0&&(0,z.jsx)(s,{dense:!0,disablePadding:!0,children:o.map((e,r)=>{let i=B(e,t),o=e.targetGraph||n,s=V(g,o,i),c=e.title||i;return(0,z.jsx)(E,{disablePadding:!0,secondaryAction:(0,z.jsx)(C,{size:`small`,onClick:()=>$(e),children:(0,z.jsx)(j,{fontSize:`small`})}),sx:{py:.5},children:(0,z.jsx)(p,{primary:(0,z.jsxs)(h,{sx:{display:`flex`,alignItems:`center`,gap:.5,flexWrap:`wrap`},children:[(0,z.jsx)(P,{label:e.kind,color:`neutral`,size:`small`}),(0,z.jsx)(P,{label:o,color:fe[o]??`neutral`,size:`small`}),s?(0,z.jsx)(d,{href:s,variant:`body2`,underline:`hover`,onClick:e=>{e.preventDefault(),e.stopPropagation(),ve(o,i)},children:c}):(0,z.jsx)(a,{variant:`body2`,children:c})]})})},`${e.fromId}-${e.toId}-${r}`)})}),(0,z.jsx)(ie,{open:Q!==null,title:`Delete Relation`,message:`Remove ${Q?.kind} link to ${Q?Q.title||B(Q,t):``}?`,confirmLabel:`Delete`,confirmColor:`error`,onConfirm:_e,onCancel:()=>$(null)}),_&&(0,z.jsxs)(b,{variant:`outlined`,sx:{p:2,mt:1},children:[(0,z.jsxs)(h,{sx:{display:`flex`,gap:1,mb:1.5},children:[(0,z.jsxs)(f,{size:`small`,sx:{minWidth:140},children:[(0,z.jsx)(v,{children:`Graph`}),(0,z.jsx)(T,{value:k,label:`Graph`,onChange:e=>{M(e.target.value),G([]),Y(null)},children:de.map(e=>(0,z.jsx)(D,{value:e,children:e},e))})]}),(0,z.jsx)(S,{size:`small`,fullWidth:!0,placeholder:`Search...`,value:H,onChange:e=>U(e.target.value),onKeyDown:e=>e.key===`Enter`&&he()}),(0,z.jsx)(C,{onClick:he,disabled:K,children:K?(0,z.jsx)(y,{size:20}):(0,z.jsx)(N,{})})]}),W.length>0&&(0,z.jsx)(h,{sx:{maxHeight:200,overflow:`auto`,mb:1.5},children:W.map(e=>(0,z.jsxs)(h,{onClick:()=>Y(e),sx:{p:.75,cursor:`pointer`,borderRadius:1,backgroundColor:J?.id===e.id?`action.selected`:`transparent`,"&:hover":{backgroundColor:`action.hover`},display:`flex`,justifyContent:`space-between`,alignItems:`center`},children:[(0,z.jsx)(a,{variant:`body2`,noWrap:!0,sx:{flex:1},children:e.label}),(0,z.jsx)(P,{label:`${(e.score*100).toFixed(0)}%`,color:`primary`,size:`small`})]},e.id))}),J&&(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(c,{sx:{my:1}}),(0,z.jsxs)(h,{sx:{display:`flex`,gap:1,alignItems:`center`},children:[(0,z.jsx)(P,{label:J.label,color:`primary`}),(0,z.jsx)(S,{size:`small`,label:`Kind`,value:X,onChange:e=>pe(e.target.value),sx:{width:160}}),(0,z.jsx)(x,{variant:`contained`,size:`small`,onClick:ge,disabled:me||!X.trim(),children:me?(0,z.jsx)(y,{size:16}):`Link`})]})]})]})]})}function U(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function W(e){return e.startsWith(`image/`)}function G({attachments:e,getUrl:t,onUpload:n,onDelete:r,readOnly:i}){let{palette:c}=w(),[d,f]=(0,R.useState)(!1),[v,b]=(0,R.useState)(null),[x,S]=(0,R.useState)(!1),[T,D]=(0,R.useState)(null),A=(0,R.useRef)(null),N=(0,R.useCallback)(async e=>{if(!(!e||e.length===0)){f(!0),b(null);try{for(let t=0;t<e.length;t++)await n(e[t])}catch(e){b(e instanceof Error?e.message:String(e))}finally{f(!1),A.current&&(A.current.value=``)}}},[n]),P=(0,R.useCallback)(e=>{e.preventDefault(),S(!1),N(e.dataTransfer.files)},[N]),F=(0,R.useCallback)(async()=>{if(T){b(null);try{await r(T)}catch(e){b(e instanceof Error?e.message:String(e))}finally{D(null)}}},[T,r]),I=e.filter(e=>W(e.mimeType)),L=e.filter(e=>!W(e.mimeType));return(0,z.jsxs)(h,{children:[v&&(0,z.jsx)(ee,{severity:`error`,sx:{mb:2},onClose:()=>b(null),children:v}),I.length>0&&(0,z.jsx)(u,{cols:3,gap:8,sx:{mb:2},children:I.map(e=>(0,z.jsxs)(l,{sx:{borderRadius:1,overflow:`hidden`,border:`1px solid ${c.divider}`},children:[(0,z.jsx)(`a`,{href:t(e.filename),target:`_blank`,rel:`noopener noreferrer`,children:(0,z.jsx)(`img`,{src:t(e.filename),alt:e.filename,loading:`lazy`,style:{width:`100%`,height:140,objectFit:`cover`,display:`block`}})}),(0,z.jsx)(_,{title:e.filename,subtitle:U(e.size),actionIcon:i?void 0:(0,z.jsx)(C,{size:`small`,sx:{color:`white`},onClick:()=>D(e.filename),children:(0,z.jsx)(j,{fontSize:`small`})})})]},e.filename))}),L.length>0&&(0,z.jsx)(s,{dense:!0,sx:{mb:1},children:L.map(e=>(0,z.jsxs)(E,{sx:{borderBottom:`1px solid ${c.divider}`},children:[(0,z.jsx)(o,{sx:{minWidth:36},children:(0,z.jsx)(k,{fontSize:`small`,color:`action`})}),(0,z.jsx)(p,{primary:e.filename,secondary:`${U(e.size)} — ${e.mimeType}`,primaryTypographyProps:{variant:`body2`},secondaryTypographyProps:{variant:`caption`}}),(0,z.jsxs)(m,{children:[(0,z.jsx)(g,{title:`Download`,children:(0,z.jsx)(C,{size:`small`,href:t(e.filename),download:e.filename,children:(0,z.jsx)(M,{fontSize:`small`})})}),!i&&(0,z.jsx)(g,{title:`Delete`,children:(0,z.jsx)(C,{size:`small`,onClick:()=>D(e.filename),children:(0,z.jsx)(j,{fontSize:`small`})})})]})]},e.filename))}),e.length===0&&(0,z.jsx)(a,{variant:`body2`,color:`text.secondary`,sx:{mb:2},children:`No attachments yet`}),!i&&(0,z.jsxs)(h,{onDragOver:e=>{e.preventDefault(),S(!0)},onDragLeave:()=>S(!1),onDrop:P,sx:{border:`2px dashed ${x?c.primary.main:c.divider}`,borderRadius:1,p:2,display:`flex`,alignItems:`center`,justifyContent:`center`,gap:1,bgcolor:x?c.mode===`dark`?`rgba(144,202,249,0.08)`:`rgba(25,118,210,0.04)`:`transparent`,transition:`all 0.2s`,cursor:`pointer`},onClick:()=>!d&&A.current?.click(),children:[d?(0,z.jsx)(y,{size:20}):(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(O,{color:`action`,fontSize:`small`}),(0,z.jsx)(a,{variant:`body2`,color:`text.secondary`,children:`Drop files here or click to upload`})]}),(0,z.jsx)(`input`,{ref:A,type:`file`,multiple:!0,hidden:!0,onChange:e=>N(e.target.files)})]}),(0,z.jsx)(ie,{open:T!==null,title:`Delete Attachment`,message:`Are you sure you want to delete "${T}"?`,confirmLabel:`Delete`,confirmColor:`error`,onConfirm:F,onCancel:()=>D(null)})]})}export{H as n,G as t};
@@ -0,0 +1 @@
1
+ var e=`/api`,t=null;function n(e){t=e}async function r(){try{return(await fetch(`${e}/auth/refresh`,{method:`POST`,credentials:`include`})).ok}catch{return!1}}async function i(n,i){let a={"Content-Type":`application/json`,...i?.headers},o=()=>fetch(`${e}${n}`,{...i,headers:a,credentials:`include`}),s=await o();if(s.status===401)if(await r())s=await o();else throw t?.(),Error(`Session expired`);if(!s.ok){let e=await s.json().catch(()=>({error:s.statusText}));throw Error(e.error||s.statusText)}if(s.status!==204)return s.json()}function a(e){let t=new URLSearchParams;for(let[n,r]of Object.entries(e))r!=null&&r!==``&&t.set(n,String(r));let n=t.toString();return n?`?${n}`:``}function o(e){return e.results}export{o as i,a as n,i as r,n as t};
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-Dw2cE7zH.js";import{D as t,O as n}from"./vendor-markdown-CT8ZVEPu.js";import{c as r,l as i}from"./vendor-react-CHUjhoxh.js";import{$ as a,A as o,C as s,D as c,E as l,S as u,Y as d,et as f,m as p,nt as m,r as h,st as g,tt as _,ut as v}from"./vendor-mui-BPj7d3Sw.js";import"./vendor-md-editor-DmWafJvr.js";import{B as y,H as b,Q as x,V as S,ct as C,st as w}from"./vendor-mui-icons-B196sG3f.js";import{A as T,F as E,T as D,j as O}from"./index-BCZDAYZi.js";import{i as k,n as A,r as j}from"./api-BlFF6gX-.js";var M=e(n(),1),N=t();function P(){let{projectId:e}=i(),t=r(),{palette:n}=v(),[P,F]=(0,M.useState)([]),[I,L]=(0,M.useState)(!0),[R,z]=(0,M.useState)(null),[B,V]=(0,M.useState)(null),[H,U]=(0,M.useState)([]),[W,G]=(0,M.useState)(!1),[K,q]=(0,M.useState)(``),[J,Y]=(0,M.useState)(null),[X,Z]=(0,M.useState)(!1),Q=(0,M.useCallback)(async()=>{if(e){L(!0);try{F(await j(e,{limit:200})),z(null)}catch(e){z(e instanceof Error?e.message:String(e))}finally{L(!1)}}},[e]);(0,M.useEffect)(()=>{Q()},[Q]);let $=async t=>{if(B===t){V(null);return}V(t),G(!0);try{U(await A(e,t))}catch{U([])}finally{G(!1)}},ee=async()=>{if(!e||!K.trim()){Y(null);return}Z(!0);try{Y(await k(e,K.trim(),{topK:20,minScore:.1}))}catch{}finally{Z(!1)}};return(0,N.jsxs)(d,{children:[(0,N.jsx)(O,{breadcrumbs:[{label:`Docs`}],actions:(0,N.jsxs)(a,{variant:`body2`,sx:{color:n.custom.textMuted},children:[P.length,` files`]})}),(0,N.jsx)(T,{children:(0,N.jsx)(h,{fullWidth:!0,size:`small`,placeholder:`Semantic search docs...`,value:K,onChange:e=>q(e.target.value),onKeyDown:e=>e.key===`Enter`&&ee(),slotProps:{input:{startAdornment:(0,N.jsx)(o,{position:`start`,children:(0,N.jsx)(w,{})}),endAdornment:K&&(0,N.jsx)(o,{position:`end`,children:(0,N.jsx)(_,{size:`small`,onClick:()=>{q(``),Y(null)},children:(0,N.jsx)(x,{})})})}}})}),J&&(0,N.jsxs)(a,{variant:`caption`,sx:{color:n.custom.textMuted,mb:1,display:`block`},children:[J.length,` result`,J.length===1?``:`s`,` found`]}),R&&(0,N.jsx)(f,{severity:`error`,sx:{mb:2},children:R}),I||X?(0,N.jsx)(d,{sx:{display:`flex`,justifyContent:`center`,py:4},children:(0,N.jsx)(m,{})}):J?(0,N.jsx)(c,{disablePadding:!0,children:J.map(e=>(0,N.jsxs)(l,{onClick:()=>t(encodeURIComponent(e.id)),sx:{borderRadius:1,mb:.5},children:[(0,N.jsx)(s,{sx:{minWidth:36},children:(0,N.jsx)(y,{fontSize:`small`,color:`secondary`})}),(0,N.jsx)(u,{primary:(0,N.jsxs)(d,{sx:{display:`flex`,alignItems:`center`,gap:1},children:[(0,N.jsx)(a,{variant:`body2`,fontWeight:600,children:e.title||e.id}),(0,N.jsx)(E,{label:`${(e.score*100).toFixed(0)}%`,color:`primary`,size:`small`})]}),secondary:(0,N.jsxs)(a,{variant:`caption`,sx:{color:n.custom.textMuted},noWrap:!0,children:[e.fileId,` · level `,e.level,e.content?` · ${e.content.slice(0,100)}`:``]})})]},e.id))}):P.length===0?(0,N.jsx)(D,{icon:(0,N.jsx)(C,{}),title:`No docs indexed`,description:`Configure docsPattern in graph-memory.yaml to start indexing documentation`}):(0,N.jsx)(c,{disablePadding:!0,children:P.map(e=>(0,N.jsxs)(d,{children:[(0,N.jsxs)(l,{onClick:()=>$(e.fileId),sx:{borderRadius:1},children:[(0,N.jsx)(s,{sx:{minWidth:36},children:B===e.fileId?(0,N.jsx)(S,{}):(0,N.jsx)(b,{})}),(0,N.jsx)(s,{sx:{minWidth:36},children:(0,N.jsx)(C,{fontSize:`small`,color:`secondary`})}),(0,N.jsx)(u,{primary:(0,N.jsx)(a,{variant:`body2`,fontWeight:600,children:e.title||e.fileId}),secondary:(0,N.jsxs)(a,{variant:`caption`,sx:{color:n.custom.textMuted},children:[e.fileId,` · `,e.chunks,` chunks`]})})]}),(0,N.jsx)(g,{in:B===e.fileId,timeout:`auto`,unmountOnExit:!0,children:W?(0,N.jsx)(d,{sx:{pl:9,py:1},children:(0,N.jsx)(m,{size:16})}):(0,N.jsx)(c,{disablePadding:!0,sx:{pl:4},children:H.map(e=>(0,N.jsxs)(l,{onClick:()=>t(encodeURIComponent(e.id)),sx:{borderRadius:1,py:.5},children:[(0,N.jsx)(s,{sx:{minWidth:36},children:(0,N.jsx)(y,{fontSize:`small`,sx:{opacity:.5}})}),(0,N.jsx)(u,{primary:(0,N.jsxs)(p,{direction:`row`,spacing:1,alignItems:`center`,children:[(0,N.jsx)(a,{variant:`body2`,sx:{pl:(e.level-1)*2},children:e.title||e.id}),e.language&&(0,N.jsx)(E,{label:e.language,color:`primary`,size:`small`})]})})]},e.id))})})]},e.fileId))})]})}export{P as default};
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-Dw2cE7zH.js";import{D as t,O as n}from"./vendor-markdown-CT8ZVEPu.js";import{c as r,l as i}from"./vendor-react-CHUjhoxh.js";import{Y as a,et as o,nt as s,q as c}from"./vendor-mui-BPj7d3Sw.js";import"./vendor-md-editor-DmWafJvr.js";import{U as l,Y as u,Z as d,j as f}from"./index-BCZDAYZi.js";import{t as p}from"./NoteForm-aZX9f6-3.js";var m=e(n(),1),h=t();function g(){let{projectId:e,noteId:t}=i(),n=r(),g=d(`knowledge`),[_,v]=(0,m.useState)(null),[y,b]=(0,m.useState)(!0),[x,S]=(0,m.useState)(null);return(0,m.useEffect)(()=>{!e||!t||l(e,t).then(v).catch(e=>S(e instanceof Error?e.message:String(e))).finally(()=>b(!1))},[e,t]),y?(0,h.jsx)(a,{sx:{display:`flex`,justifyContent:`center`,py:4},children:(0,h.jsx)(s,{})}):x||!_?(0,h.jsx)(o,{severity:`error`,children:x||`Note not found`}):(0,h.jsxs)(a,{children:[(0,h.jsx)(f,{breadcrumbs:[{label:`Knowledge`,to:`/${e}/knowledge`},{label:_.title,to:`/${e}/knowledge/${t}`},{label:`Edit`}],actions:(0,h.jsx)(c,{variant:`contained`,form:`note-form`,type:`submit`,disabled:!g,children:`Save`})}),!g&&(0,h.jsx)(o,{severity:`warning`,sx:{mb:2},children:`Read-only access — you cannot edit notes.`}),(0,h.jsx)(p,{note:_,onSubmit:async r=>{!e||!t||(await u(e,t,r),n(`/${e}/knowledge/${t}`))},onCancel:()=>n(`/${e}/knowledge/${t}`)})]})}export{g as default};
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-Dw2cE7zH.js";import{D as t,O as n}from"./vendor-markdown-CT8ZVEPu.js";import{c as r,l as i}from"./vendor-react-CHUjhoxh.js";import{Y as a,et as o,nt as s,q as c}from"./vendor-mui-BPj7d3Sw.js";import"./vendor-md-editor-DmWafJvr.js";import{Z as l,f as u,j as d,y as f}from"./index-BCZDAYZi.js";import{t as p}from"./TaskForm-Bl5nkybO.js";var m=e(n(),1),h=t();function g(){let{projectId:e,taskId:t}=i(),n=r(),g=l(`tasks`),[_,v]=(0,m.useState)(null),[y,b]=(0,m.useState)(!0),[x,S]=(0,m.useState)(null);return(0,m.useEffect)(()=>{!e||!t||u(e,t).then(v).catch(e=>S(e instanceof Error?e.message:String(e))).finally(()=>b(!1))},[e,t]),y?(0,h.jsx)(a,{sx:{display:`flex`,justifyContent:`center`,py:4},children:(0,h.jsx)(s,{})}):x||!_?(0,h.jsx)(o,{severity:`error`,children:x||`Task not found`}):(0,h.jsxs)(a,{children:[(0,h.jsx)(d,{breadcrumbs:[{label:`Tasks`,to:`/${e}/tasks`},{label:_.title,to:`/${e}/tasks/${t}`},{label:`Edit`}],actions:(0,h.jsx)(c,{variant:`contained`,form:`task-form`,type:`submit`,disabled:!g,children:`Save`})}),!g&&(0,h.jsx)(o,{severity:`warning`,sx:{mb:2},children:`Read-only access — you cannot edit tasks.`}),(0,h.jsx)(p,{task:_,onSubmit:async r=>{!e||!t||(await f(e,t,r),n(`/${e}/tasks/${t}`))},onCancel:()=>n(`/${e}/tasks/${t}`)})]})}export{g as default};
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-Dw2cE7zH.js";import{D as t,O as n}from"./vendor-markdown-CT8ZVEPu.js";import{c as r,l as i}from"./vendor-react-CHUjhoxh.js";import{Y as a,et as o,nt as s,q as c}from"./vendor-mui-BPj7d3Sw.js";import"./vendor-md-editor-DmWafJvr.js";import{Z as l,j as u}from"./index-BCZDAYZi.js";import{g as d,u as f}from"./skill-y9pizyqE.js";import{t as p}from"./SkillForm-KYa3o92l.js";var m=e(n(),1),h=t();function g(){let{projectId:e,skillId:t}=i(),n=r(),g=l(`skills`),[_,v]=(0,m.useState)(null),[y,b]=(0,m.useState)(!0),[x,S]=(0,m.useState)(null);return(0,m.useEffect)(()=>{!e||!t||f(e,t).then(v).catch(e=>S(e instanceof Error?e.message:String(e))).finally(()=>b(!1))},[e,t]),y?(0,h.jsx)(a,{sx:{display:`flex`,justifyContent:`center`,py:4},children:(0,h.jsx)(s,{})}):x||!_?(0,h.jsx)(o,{severity:`error`,children:x||`Skill not found`}):(0,h.jsxs)(a,{children:[(0,h.jsx)(u,{breadcrumbs:[{label:`Skills`,to:`/${e}/skills`},{label:_.title,to:`/${e}/skills/${t}`},{label:`Edit`}],actions:(0,h.jsx)(c,{variant:`contained`,form:`skill-form`,type:`submit`,disabled:!g,children:`Save`})}),!g&&(0,h.jsx)(o,{severity:`warning`,sx:{mb:2},children:`Read-only access — you cannot edit skills.`}),(0,h.jsx)(p,{skill:_,onSubmit:async r=>{!e||!t||(await d(e,t,r),n(`/${e}/skills/${t}`))},onCancel:()=>n(`/${e}/skills/${t}`)})]})}export{g as default};
@@ -0,0 +1 @@
1
+ import"./vendor-markdown-CT8ZVEPu.js";import{$ as e,A as t,B as n,C as r,D as i,E as a,F as o,G as s,H as c,I as l,J as u,K as d,L as f,M as p,N as m,O as h,P as g,Q as _,R as v,S as y,T as b,U as x,V as S,W as C,X as w,Y as T,Z as E,_ as D,a as O,b as k,c as A,d as j,et as M,f as N,g as P,h as F,i as I,j as L,k as R,l as z,m as B,n as V,nt as H,o as U,p as W,q as G,r as K,rt as q,s as J,t as Y,tt as X,u as Z,v as Q,w as $,x as ee,y as te,z as ne}from"./vendor-md-editor-DmWafJvr.js";export{H as EditorContext,E as MarkdownUtil,K as TextAreaCommandOrchestrator,I as TextAreaTextApi,s as bold,p as checkedListCommand,x as code,C as codeBlock,R as codeEdit,t as codeLive,L as codePreview,O as commands,c as comment,Y as default,S as divider,d as executeCommand,n as fullscreen,G as getBreaksNeededForEmptyLineAfter,u as getBreaksNeededForEmptyLineBefore,U as getCommands,J as getExtraCommands,A as getStateFromTextArea,T as getSurroundingWord,ne as group,V as handleKeyDown,y as heading,b as heading1,k as heading2,Q as heading3,P as heading4,B as heading5,N as heading6,r as headingExecute,z as help,v as hr,f as image,w as insertBeforeEachLine,M as insertTextAtPosition,Z as issue,l as italic,o as link,m as orderedListCommand,h as quote,q as reducer,_ as selectLine,e as selectWord,X as shortcuts,i as strikethrough,j as table,$ as title,a as title1,ee as title2,te as title3,D as title4,F as title5,W as title6,g as unorderedListCommand};
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-Dw2cE7zH.js";import{D as t,O as n}from"./vendor-markdown-CT8ZVEPu.js";import{c as r,l as i,u as a}from"./vendor-react-CHUjhoxh.js";import{$ as o,A as s,C as c,D as l,E as u,J as d,O as f,S as p,X as m,Y as h,et as g,m as ee,nt as te,ot as _,r as v,ut as y}from"./vendor-mui-BPj7d3Sw.js";import"./vendor-md-editor-DmWafJvr.js";import{J as b,R as ne,lt as x,st as S,z as C}from"./vendor-mui-icons-B196sG3f.js";import{A as re,F as w,T,j as E}from"./index-BCZDAYZi.js";import{n as D,r as O}from"./api-BMnBjMMf.js";var k=e(n(),1),A=t();function j(e){return e==null?``:e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/1024/1024).toFixed(1)} MB`}function M(){let{projectId:e}=i(),t=r(),{palette:n}=y(),[M,N]=a(),[P,F]=(0,k.useState)([]),[I,L]=(0,k.useState)(!0),[R,z]=(0,k.useState)(null),[B,V]=(0,k.useState)(M.get(`dir`)||`.`),[H,U]=(0,k.useState)(null),[W,G]=(0,k.useState)(!1),[K,q]=(0,k.useState)(M.get(`q`)||``),J=e=>{let t=new URLSearchParams(M);e&&e!==`.`?t.set(`dir`,e):t.delete(`dir`),t.delete(`q`),N(t,{replace:!0})},Y=(0,k.useCallback)(async t=>{if(e){L(!0),z(null);try{F(await D(e,{directory:t||`.`})),V(t)}catch(e){z(e instanceof Error?e.message:String(e))}finally{L(!1)}}},[e]);(0,k.useEffect)(()=>{Y(M.get(`dir`)||`.`)},[Y]);let X=(0,k.useCallback)(async t=>{if(!e||!t.trim()){U(null);return}G(!0);try{U(await O(e,t.trim()))}catch{}finally{G(!1)}},[e]);(0,k.useEffect)(()=>{let e=M.get(`q`);e?.trim()&&X(e)},[]);let ie=()=>{let e=new URLSearchParams(M);K.trim()?e.set(`q`,K.trim()):e.delete(`q`),N(e,{replace:!0}),X(K)},ae=n=>{n.kind===`directory`?(U(null),J(n.filePath),Y(n.filePath)):t(`/${e}/files/view/${n.filePath}`)},Z=e=>{U(null),J(e),Y(e)},oe=()=>{let e=B.split(`/`).slice(0,-1);Z(e.length>0?e.join(`/`):`.`)},Q=B&&B!==`.`?B.split(`/`):[],$=[...H??P].sort((e,t)=>e.kind===`directory`&&t.kind!==`directory`?-1:e.kind!==`directory`&&t.kind===`directory`?1:e.filePath.localeCompare(t.filePath));return(0,A.jsxs)(h,{children:[(0,A.jsx)(E,{breadcrumbs:[{label:`Files`}]}),(0,A.jsx)(re,{children:(0,A.jsx)(v,{fullWidth:!0,size:`small`,placeholder:`Search files...`,value:K,onChange:e=>q(e.target.value),onKeyDown:e=>e.key===`Enter`&&ie(),slotProps:{input:{startAdornment:(0,A.jsx)(s,{position:`start`,children:(0,A.jsx)(S,{})})}}})}),!H&&(0,A.jsxs)(h,{sx:{display:`flex`,alignItems:`center`,gap:1,mb:2},children:[B&&B!==`.`&&(0,A.jsx)(m,{icon:(0,A.jsx)(C,{}),label:`Up`,size:`small`,onClick:oe,clickable:!0}),(0,A.jsxs)(d,{children:[(0,A.jsx)(f,{component:`button`,variant:`body2`,underline:`hover`,onClick:()=>Z(`.`),color:!B||B===`.`?`text.primary`:`inherit`,children:`root`}),Q.map((e,t)=>{let n=Q.slice(0,t+1).join(`/`),r=t===Q.length-1;return(0,A.jsx)(f,{component:`button`,variant:`body2`,underline:r?`none`:`hover`,onClick:()=>!r&&Z(n),color:r?`text.primary`:`inherit`,children:e},n)})]})]}),H&&(0,A.jsxs)(o,{variant:`caption`,sx:{color:n.custom.textMuted,mb:1,display:`block`},children:[H.length,` result`,H.length===1?``:`s`,` `,(0,A.jsx)(f,{component:`button`,onClick:()=>{q(``),U(null);let e=new URLSearchParams(M);e.delete(`q`),N(e,{replace:!0})},children:`clear`})]}),R&&(0,A.jsx)(g,{severity:`error`,sx:{mb:2},children:R}),I||W?(0,A.jsx)(h,{sx:{display:`flex`,justifyContent:`center`,py:4},children:(0,A.jsx)(te,{})}):$.length===0?(0,A.jsx)(T,{icon:(0,A.jsx)(ne,{}),title:H?`No files found`:`Empty directory`,description:H?`Try a different search query`:void 0}):(0,A.jsx)(_,{variant:`outlined`,children:(0,A.jsx)(l,{dense:!0,disablePadding:!0,children:$.map(e=>(0,A.jsxs)(u,{onClick:()=>ae(e),sx:{borderBottom:`1px solid ${n.custom.border}`},children:[(0,A.jsx)(c,{sx:{minWidth:36},children:e.kind===`directory`?(0,A.jsx)(x,{sx:{color:`#f9a825`}}):(0,A.jsx)(b,{sx:{color:n.custom.textMuted}})}),(0,A.jsx)(p,{primary:(0,A.jsxs)(h,{sx:{display:`flex`,alignItems:`center`,gap:1},children:[(0,A.jsx)(`span`,{children:H?e.filePath:e.fileName}),`score`in e&&(0,A.jsx)(w,{label:`${(e.score*100).toFixed(0)}%`,color:`primary`,size:`small`})]})}),(0,A.jsxs)(ee,{direction:`row`,spacing:1,alignItems:`center`,children:[e.language&&(0,A.jsx)(o,{variant:`caption`,sx:{color:n.custom.textMuted},children:e.language}),(0,A.jsx)(o,{variant:`caption`,sx:{color:n.custom.textMuted,minWidth:60,textAlign:`right`},children:e.kind===`directory`?e.fileCount>0?`${e.fileCount} files`:``:j(e.size)})]})]},e.filePath))})})]})}export{M as default};
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-Dw2cE7zH.js";import{D as t,O as n}from"./vendor-markdown-CT8ZVEPu.js";import{l as r,u as i}from"./vendor-react-CHUjhoxh.js";import{$ as a,A as o,X as s,Y as c,et as ee,h as l,n as u,nt as te,ot as ne,r as d,t as f,tt as p,ut as m}from"./vendor-mui-BPj7d3Sw.js";import"./vendor-md-editor-DmWafJvr.js";import{n as h,r as g}from"./client-Bq88u7gN.js";import{F as re,I as _,L as v,ct as y,dt as b,it as x,lt as S,q as C,st as w,ut as T}from"./vendor-mui-icons-B196sG3f.js";import{F as E,I as D,N as O,j as k,k as A}from"./index-BCZDAYZi.js";import{n as j,t as M}from"./vendor-graph-BWpSgpMe.js";function ie(e,t=`all`){return g(`/projects/${e}/graph${h({scope:t})}`)}var N=e(n(),1),P=e(M(),1),F=t();j.use(P.default);var I={knowledge:`#f9a825`,tasks:`#1976d2`,skills:`#9c27b0`,files:`#388e3c`,docs:`#7b1fa2`,code:`#f57c00`},L={knowledge:`warning`,tasks:`primary`,skills:`neutral`,files:`success`,docs:`neutral`,code:`error`},R=[{scope:`all`,label:`All`,icon:null},{scope:`knowledge`,label:`Knowledge`,icon:(0,F.jsx)(b,{sx:{fontSize:16}})},{scope:`tasks`,label:`Tasks`,icon:(0,F.jsx)(T,{sx:{fontSize:16}})},{scope:`skills`,label:`Skills`,icon:(0,F.jsx)(x,{sx:{fontSize:16}})},{scope:`files`,label:`Files`,icon:(0,F.jsx)(S,{sx:{fontSize:16}})},{scope:`docs`,label:`Docs`,icon:(0,F.jsx)(y,{sx:{fontSize:16}})},{scope:`code`,label:`Code`,icon:(0,F.jsx)(C,{sx:{fontSize:16}})}];function z(e){return e.title||e.name||e.path||e.id}function B(e){return I[e.graph]||`#569cd6`}function V(e,t){return e.length>t?e.slice(0,t)+`...`:e}function H(){let{projectId:e}=r(),[t,n]=i(),{palette:h}=m(),g=(0,N.useRef)(null),y=(0,N.useRef)(null),b=t.get(`focus`),[x,S]=(0,N.useState)(t.get(`scope`)||`all`),[C,T]=(0,N.useState)(!0),[M,P]=(0,N.useState)(null),[H,U]=(0,N.useState)({nodes:0,edges:0}),[W,G]=(0,N.useState)(null),[K,q]=(0,N.useState)(``),J=h.mode===`dark`,ae=J?`#e0e0e0`:`#333`,oe=J?`#444`:`#ccc`,Y=J?`rgba(255,255,255,0.08)`:`rgba(0,0,0,0.1)`,se=J?`rgba(255,255,255,0.03)`:`rgba(0,0,0,0.04)`,X=h.primary.main,ce=J?`#1e1e1e`:`#f5f5f5`,Z=(0,N.useCallback)((e,t)=>{let n=e.getElementById(t);if(n.length===0)return;let r=n.neighborhood().add(n);e.elements().not(r).addClass(`dimmed`),r.addClass(`highlighted`),n.addClass(`selected-node`)},[]),Q=(0,N.useCallback)(e=>{e.elements().removeClass(`dimmed highlighted selected-node`)},[]),le=(e,t)=>{if(!g.current)return;y.current&&y.current.destroy();let r=[],i=new Map;for(let e of t)i.set(e.source,(i.get(e.source)||0)+1),i.set(e.target,(i.get(e.target)||0)+1);let a=Math.max(1,...i.values());for(let t of e){let{id:e,...n}=t,o=i.get(t.id)||0,s=12+Math.round(o/a*28);r.push({data:{id:t.id,label:V(z(t),25),color:B(t),graphType:t.graph,nodeSize:s,...n}})}for(let e of t)r.push({data:{source:e.source,target:e.target,label:e.kind||``,graphType:e.graph}});let o=j({container:g.current,elements:r,style:[{selector:`node`,style:{"background-color":`data(color)`,label:`data(label)`,color:ae,"font-size":`9px`,"text-valign":`bottom`,"text-halign":`center`,"text-margin-y":3,width:`data(nodeSize)`,height:`data(nodeSize)`,"border-width":1,"border-color":oe,"text-max-width":`80px`,"text-wrap":`ellipsis`,"text-opacity":.85,"transition-property":`opacity, border-width, border-color, width, height`,"transition-duration":`0.15s`}},{selector:`edge`,style:{width:.5,"line-color":Y,"target-arrow-color":Y,"target-arrow-shape":`triangle`,"curve-style":`bezier`,"arrow-scale":.4,opacity:.6,"transition-property":`opacity, line-color, width`,"transition-duration":`0.15s`}},{selector:`node.dimmed`,style:{opacity:.1,"text-opacity":0}},{selector:`edge.dimmed`,style:{opacity:.03,"line-color":se}},{selector:`node.highlighted`,style:{opacity:1,"text-opacity":1,"border-width":2,"border-color":X}},{selector:`edge.highlighted`,style:{opacity:1,width:2,"line-color":X,"target-arrow-color":X,label:`data(label)`,"font-size":`7px`,color:X,"text-rotation":`autorotate`,"text-margin-y":-8}},{selector:`node.selected-node`,style:{"border-width":3,"border-color":`#fff`,"z-index":999}},{selector:`node.search-match`,style:{"border-width":3,"border-color":`#ff0`,"text-opacity":1,opacity:1,"z-index":999}}],layout:{name:`fcose`,animate:!1,quality:e.length>500?`default`:`proof`,nodeSeparation:e.length>500?120:75,nodeRepulsion:()=>e.length>500?8e3:4500,idealEdgeLength:()=>e.length>500?120:80,gravity:.25,gravityRange:3.8,numIter:e.length>500?1500:2500,tilingPaddingVertical:20,tilingPaddingHorizontal:20,uniformNodeDimensions:!1,packComponents:!0},minZoom:.05,maxZoom:8,wheelSensitivity:.3,pixelRatio:1});if(o.on(`mouseover`,`node`,e=>{Z(o,e.target.id())}),o.on(`mouseout`,`node`,()=>{Q(o),W&&Z(o,W.id)}),o.on(`tap`,`node`,e=>{let t=e.target.data();Q(o),Z(o,t.id),G(t)}),o.on(`tap`,e=>{e.target===o&&(Q(o),G(null))}),b){let e=o.getElementById(b);e.length>0&&(o.animate({center:{eles:e},zoom:2},{duration:300}),Z(o,b),G(e.data())),n(e=>{let t=new URLSearchParams(e);return t.delete(`focus`),t.delete(`scope`),t},{replace:!0})}y.current=o},$=(0,N.useCallback)(async t=>{if(e){T(!0),P(null),G(null),q(``);try{let n=await ie(e,t),r=n.nodes.filter(e=>!e.id.startsWith(`@`)),i=new Set(r.map(e=>e.id)),a=n.edges.filter(e=>i.has(e.source)&&i.has(e.target));U({nodes:r.length,edges:a.length}),le(r,a)}catch(e){P(e instanceof Error?e.message:String(e))}finally{T(!1)}}},[e]);(0,N.useEffect)(()=>($(x),()=>{y.current&&=(y.current.destroy(),null)}),[$,x]);let ue=e=>{q(e);let t=y.current;if(!t||(t.elements().removeClass(`search-match dimmed`),!e.trim()))return;let n=e.trim().toLowerCase(),r=t.nodes().filter(e=>{let t=e.data();return(t.label||``).toLowerCase().includes(n)||(t.id||``).toLowerCase().includes(n)||(t.title||``).toLowerCase().includes(n)||(t.name||``).toLowerCase().includes(n)});r.length>0&&(t.elements().not(r).addClass(`dimmed`),r.addClass(`search-match`),t.animate({fit:{eles:r,padding:40}},{duration:300}))},de=()=>{y.current?.animate({fit:{eles:y.current.elements(),padding:30}},{duration:200})},fe=()=>{let e=y.current;e&&e.animate({zoom:{level:e.zoom()*1.4,position:{x:e.width()/2,y:e.height()/2}}},{duration:150})},pe=()=>{let e=y.current;e&&e.animate({zoom:{level:e.zoom()/1.4,position:{x:e.width()/2,y:e.height()/2}}},{duration:150})},me=W?(()=>{let e=new Set([`id`,`label`,`color`,`graphType`,`graph`,`embedding`,`fileEmbedding`,`nodeSize`]),t=[];for(let[n,r]of Object.entries(W)){if(e.has(n)||r==null||r===``||typeof r==`object`&&!Array.isArray(r))continue;let i;if(Array.isArray(r)){if(r.length===0)continue;i=r.join(`, `)}else i=String(r);t.push((0,F.jsx)(A,{label:n,divider:!1,children:(0,F.jsx)(a,{variant:`body2`,sx:{wordBreak:`break-word`},children:i.length>200?i.slice(0,200)+`…`:i})},n))}return t})():[];return(0,F.jsxs)(c,{sx:{display:`flex`,flexDirection:`column`,height:`calc(100vh - 112px)`},children:[(0,F.jsx)(k,{breadcrumbs:[{label:`Graph`}],actions:(0,F.jsxs)(a,{variant:`body2`,sx:{color:h.custom.textMuted},children:[H.nodes,` nodes · `,H.edges,` edges`]})}),(0,F.jsxs)(c,{sx:{display:`flex`,gap:1,mb:2,alignItems:`center`,flexWrap:`wrap`},children:[(0,F.jsx)(f,{exclusive:!0,value:x,onChange:(e,t)=>{t&&S(t)},size:`small`,children:R.map(({scope:e,label:t,icon:n})=>(0,F.jsxs)(u,{value:e,sx:{gap:.5,textTransform:`none`},children:[n,t]},e))}),(0,F.jsx)(d,{size:`small`,placeholder:`Find node...`,value:K,onChange:e=>ue(e.target.value),sx:{width:200},slotProps:{input:{startAdornment:(0,F.jsx)(o,{position:`start`,children:(0,F.jsx)(w,{fontSize:`small`})})}}}),(0,F.jsxs)(c,{sx:{display:`flex`,gap:.25},children:[(0,F.jsx)(l,{title:`Zoom in`,children:(0,F.jsx)(p,{size:`small`,onClick:fe,children:(0,F.jsx)(_,{fontSize:`small`})})}),(0,F.jsx)(l,{title:`Zoom out`,children:(0,F.jsx)(p,{size:`small`,onClick:pe,children:(0,F.jsx)(re,{fontSize:`small`})})}),(0,F.jsx)(l,{title:`Fit to screen`,children:(0,F.jsx)(p,{size:`small`,onClick:de,children:(0,F.jsx)(v,{fontSize:`small`})})})]})]}),M&&(0,F.jsx)(ee,{severity:`error`,sx:{mb:2},children:M}),(0,F.jsxs)(c,{sx:{display:`flex`,flex:1,gap:2,minHeight:0},children:[(0,F.jsxs)(ne,{variant:`outlined`,sx:{flex:1,position:`relative`,overflow:`hidden`,minHeight:400,bgcolor:ce},children:[C&&(0,F.jsx)(c,{sx:{position:`absolute`,top:`50%`,left:`50%`,transform:`translate(-50%,-50%)`,zIndex:1},children:(0,F.jsx)(te,{})}),(0,F.jsx)(`div`,{ref:g,style:{width:`100%`,height:`100%`}}),(0,F.jsx)(c,{sx:{position:`absolute`,bottom:8,left:8,display:`flex`,gap:.5,flexWrap:`wrap`},children:Object.entries(I).map(([e,t])=>(0,F.jsx)(s,{label:e,size:`small`,sx:{height:22,fontSize:10,fontWeight:600,bgcolor:`${t}33`,color:t,border:`1px solid ${t}66`,opacity:x===`all`||x===e?1:.3}},e))})]}),W&&(0,F.jsx)(c,{sx:{width:280,flexShrink:0,overflow:`auto`},children:(0,F.jsxs)(D,{title:`Node Inspector`,children:[(0,F.jsx)(c,{sx:{mb:1},children:(0,F.jsx)(E,{label:W.graphType,color:L[W.graphType]??`neutral`})}),(0,F.jsx)(a,{variant:`body1`,fontWeight:600,gutterBottom:!0,children:z(W)}),(0,F.jsxs)(c,{sx:{display:`flex`,alignItems:`center`,gap:.5,mb:1},children:[(0,F.jsx)(a,{variant:`caption`,sx:{wordBreak:`break-all`,color:h.custom.textMuted},children:W.id}),(0,F.jsx)(O,{value:W.id})]}),me]})})]})]})}export{H as default};