@graphmemory/server 1.3.2 → 1.3.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.
- package/dist/api/rest/graph.js +1 -1
- package/dist/api/rest/index.js +0 -1
- package/dist/api/rest/validation.js +17 -17
- package/dist/api/tools/code/get-file-symbols.js +2 -2
- package/dist/api/tools/code/get-symbol.js +2 -2
- package/dist/api/tools/code/list-files.js +2 -2
- package/dist/api/tools/code/search-code.js +2 -1
- package/dist/api/tools/code/search-files.js +2 -1
- package/dist/api/tools/docs/cross-references.js +2 -1
- package/dist/api/tools/docs/explain-symbol.js +2 -1
- package/dist/api/tools/docs/find-examples.js +2 -1
- package/dist/api/tools/docs/get-node.js +2 -2
- package/dist/api/tools/docs/get-toc.js +2 -2
- package/dist/api/tools/docs/list-snippets.js +4 -4
- package/dist/api/tools/docs/list-topics.js +2 -2
- package/dist/api/tools/docs/search-files.js +2 -1
- package/dist/api/tools/docs/search-snippets.js +3 -2
- package/dist/api/tools/docs/search.js +2 -1
- package/dist/api/tools/file-index/get-file-info.js +2 -2
- package/dist/api/tools/file-index/list-all-files.js +5 -5
- package/dist/api/tools/file-index/search-all-files.js +2 -1
- package/dist/api/tools/knowledge/add-attachment.js +26 -4
- package/dist/api/tools/knowledge/create-note.js +4 -3
- package/dist/api/tools/knowledge/create-relation.js +5 -4
- package/dist/api/tools/knowledge/delete-note.js +2 -2
- package/dist/api/tools/knowledge/delete-relation.js +4 -3
- package/dist/api/tools/knowledge/find-linked-notes.js +4 -3
- package/dist/api/tools/knowledge/get-note.js +2 -2
- package/dist/api/tools/knowledge/list-notes.js +4 -3
- package/dist/api/tools/knowledge/list-relations.js +1 -1
- package/dist/api/tools/knowledge/remove-attachment.js +1 -1
- package/dist/api/tools/knowledge/search-notes.js +2 -1
- package/dist/api/tools/knowledge/update-note.js +6 -5
- package/dist/api/tools/skills/add-attachment.js +26 -4
- package/dist/api/tools/skills/bump-usage.js +2 -2
- package/dist/api/tools/skills/create-skill-link.js +6 -5
- package/dist/api/tools/skills/create-skill.js +8 -7
- package/dist/api/tools/skills/delete-skill-link.js +4 -3
- package/dist/api/tools/skills/delete-skill.js +2 -2
- package/dist/api/tools/skills/find-linked-skills.js +4 -3
- package/dist/api/tools/skills/get-skill.js +2 -2
- package/dist/api/tools/skills/link-skill.js +2 -2
- package/dist/api/tools/skills/list-skills.js +4 -3
- package/dist/api/tools/skills/recall-skills.js +2 -1
- package/dist/api/tools/skills/remove-attachment.js +1 -1
- package/dist/api/tools/skills/search-skills.js +2 -1
- package/dist/api/tools/skills/update-skill.js +10 -9
- package/dist/api/tools/tasks/add-attachment.js +26 -4
- package/dist/api/tools/tasks/create-task-link.js +6 -5
- package/dist/api/tools/tasks/create-task.js +5 -4
- package/dist/api/tools/tasks/delete-task-link.js +4 -3
- package/dist/api/tools/tasks/delete-task.js +2 -2
- package/dist/api/tools/tasks/find-linked-tasks.js +4 -3
- package/dist/api/tools/tasks/get-task.js +2 -2
- package/dist/api/tools/tasks/link-task.js +2 -2
- package/dist/api/tools/tasks/list-tasks.js +5 -4
- package/dist/api/tools/tasks/move-task.js +2 -2
- package/dist/api/tools/tasks/remove-attachment.js +1 -1
- package/dist/api/tools/tasks/search-tasks.js +2 -1
- package/dist/api/tools/tasks/update-task.js +7 -6
- package/dist/cli/indexer.js +2 -0
- package/dist/graphs/code.js +4 -0
- package/dist/graphs/docs.js +4 -0
- package/dist/graphs/file-index.js +4 -0
- package/dist/graphs/knowledge.js +5 -0
- package/dist/graphs/skill.js +5 -0
- package/dist/graphs/task.js +5 -0
- package/dist/lib/defaults.js +1 -1
- package/dist/lib/file-import.js +8 -2
- package/dist/lib/file-mirror.js +77 -21
- package/dist/lib/graph-persistence.js +42 -0
- package/dist/lib/jwt.js +4 -3
- package/dist/lib/promise-queue.js +20 -2
- package/dist/ui/assets/{NoteForm-SQ0b93i0.js → NoteForm-D0lOYBQq.js} +1 -1
- package/dist/ui/assets/{SkillForm-BVsGrNPb.js → SkillForm-CfDWe0Nx.js} +1 -1
- package/dist/ui/assets/{TaskForm-DgPVeiI9.js → TaskForm-ltmMCEAE.js} +1 -1
- package/dist/ui/assets/{_articleId_-FqdaSeYS.js → _articleId_-mEqH7YfV.js} +1 -1
- package/dist/ui/assets/{_docId_-Q0Wmjtp6.js → _docId_-wAt8n8p4.js} +1 -1
- package/dist/ui/assets/{_filePath_-BR0gOT_z.js → _filePath_-DQMFMLQh.js} +1 -1
- package/dist/ui/assets/{_noteId_-BMWd415J.js → _noteId_-Cqxl6H5q.js} +1 -1
- package/dist/ui/assets/{_skillId_-CsHgildJ.js → _skillId_-BlJOfwm_.js} +1 -1
- package/dist/ui/assets/{_taskId_-xDHTfbQw.js → _taskId_-Cs8LaIe4.js} +1 -1
- package/dist/ui/assets/{_toolName_-BSa2uNSu.js → _toolName_-3CHUDagf.js} +1 -1
- package/dist/ui/assets/{attachments-NSvN5_0A.js → attachments-CMDVqPm_.js} +1 -1
- package/dist/ui/assets/{docs-iUK8E40J.js → docs-BuFjplSR.js} +1 -1
- package/dist/ui/assets/{edit-BzIJy_Oo.js → edit-7NV817UE.js} +1 -1
- package/dist/ui/assets/{edit-Dnc067B2.js → edit-Bflx3-cK.js} +1 -1
- package/dist/ui/assets/{edit-U_UEI361.js → edit-CdmIaFUI.js} +1 -1
- package/dist/ui/assets/{esm-BWiKNcBW.js → esm-CqydI1a6.js} +1 -1
- package/dist/ui/assets/{files-B4svJUZh.js → files-BWNbyH1X.js} +1 -1
- package/dist/ui/assets/{graph-CcNP1ckP.js → graph-B9nFxoXm.js} +1 -1
- package/dist/ui/assets/{help-BJZZtKAR.js → help-CqK0hEmf.js} +1 -1
- package/dist/ui/assets/index-80sqSHwS.js +2 -0
- package/dist/ui/assets/{knowledge-CV99ToEV.js → knowledge-g4C4l6uL.js} +1 -1
- package/dist/ui/assets/{new-Dcx8wlp4.js → new-Bqup97cu.js} +1 -1
- package/dist/ui/assets/{new-Sq3NY2oa.js → new-DC3lRvxF.js} +1 -1
- package/dist/ui/assets/{new-BypesKiP.js → new-DbsKrGJ4.js} +1 -1
- package/dist/ui/assets/{prompts-DbsIe3Pm.js → prompts-DyltFLqJ.js} +1 -1
- package/dist/ui/assets/{search-D87r7lIL.js → search-DtRoWsqW.js} +1 -1
- package/dist/ui/assets/{skill-BltAsz7M.js → skill-demt31s6.js} +1 -1
- package/dist/ui/assets/{skills-Dtmg2kDA.js → skills-DRjYPbZM.js} +1 -1
- package/dist/ui/assets/{tasks-BRqIwKCG.js → tasks-CgsSFz6X.js} +1 -1
- package/dist/ui/assets/{tools-CM3gQ4TK.js → tools-BDszA6Kh.js} +1 -1
- package/dist/ui/assets/{vendor-markdown-CT8ZVEPu.js → vendor-markdown-DngssFHR.js} +27 -27
- package/dist/ui/assets/{vendor-md-editor-DmWafJvr.js → vendor-md-editor-DC6xr_29.js} +10 -10
- package/dist/ui/assets/{vendor-mui-BPj7d3Sw.js → vendor-mui-DXUYJbRC.js} +1 -1
- package/dist/ui/assets/{vendor-mui-icons-B196sG3f.js → vendor-mui-icons-YtgP6dg2.js} +1 -1
- package/dist/ui/assets/{vendor-react-CHUjhoxh.js → vendor-react-DxfYAwYK.js} +1 -1
- package/dist/ui/index.html +6 -6
- package/package.json +1 -1
- package/dist/ui/assets/index-CEweXD9O.js +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-Dw2cE7zH.js";import{
|
|
1
|
+
import{r as e}from"./rolldown-runtime-Dw2cE7zH.js";import{O as t,k as n}from"./vendor-markdown-DngssFHR.js";import{c as r,l as i,u as a}from"./vendor-react-DxfYAwYK.js";import{$ as o,A as s,K as c,W as l,Y as u,et as d,m as f,n as p,nt as m,r as h,t as g,ut as _}from"./vendor-mui-DXUYJbRC.js";import"./vendor-md-editor-DC6xr_29.js";import{ct as v,dt as y,it as b,lt as x,q as S,st as C,ut as w}from"./vendor-mui-icons-YtgP6dg2.js";import{A as T,F as E,J as D,P as O,T as k,_ as A,j}from"./index-80sqSHwS.js";import{i as M}from"./api-BlFF6gX-.js";import{r as N}from"./api-BMnBjMMf.js";import{t as P}from"./api-CrGJOcaN.js";import{m as F}from"./skill-demt31s6.js";var I=e(n(),1),L=t(),R={knowledge:{label:`Knowledge`,icon:(0,L.jsx)(y,{}),badgeColor:`warning`},tasks:{label:`Tasks`,icon:(0,L.jsx)(w,{}),badgeColor:`primary`},skills:{label:`Skills`,icon:(0,L.jsx)(b,{}),badgeColor:`neutral`},files:{label:`Files`,icon:(0,L.jsx)(x,{}),badgeColor:`success`},docs:{label:`Docs`,icon:(0,L.jsx)(v,{}),badgeColor:`neutral`},code:{label:`Code`,icon:(0,L.jsx)(S,{}),badgeColor:`error`}};function z(e,t){return t.scope===`knowledge`?`/${e}/knowledge/${t.id}`:t.scope===`tasks`?`/${e}/tasks/${t.id}`:t.scope===`skills`?`/${e}/skills/${t.id}`:t.scope===`files`?`/${e}/files/view/${t.id}`:t.scope===`docs`?`/${e}/docs/${encodeURIComponent(t.id)}`:null}var B=[`knowledge`,`tasks`,`skills`,`files`,`docs`,`code`];function V(e){if(!e)return B;let t=e.split(`,`).filter(e=>e in R);return t.length>0?t:B}function H(){let{projectId:e}=i(),t=r(),{palette:n}=_(),[v,y]=a(),[b,x]=(0,I.useState)(v.get(`q`)||``),[S,w]=(0,I.useState)(V(v.get(`scopes`))),[H,U]=(0,I.useState)([]),[W,G]=(0,I.useState)(!1),[K,q]=(0,I.useState)(null),[J,Y]=(0,I.useState)(!1),X=(0,I.useCallback)(async(t,n)=>{if(!e||!t.trim())return;G(!0),q(null),Y(!0);let r=[],i={topK:20,minScore:.1},a=t.trim();try{let t=[];n.includes(`knowledge`)&&t.push(D(e,a,i).then(e=>{for(let t of e)r.push({id:t.id,scope:`knowledge`,title:t.title,subtitle:t.content?.slice(0,120),score:t.score,tags:t.tags})}).catch(()=>{})),n.includes(`tasks`)&&t.push(A(e,a,i).then(e=>{for(let t of e)r.push({id:t.id,scope:`tasks`,title:t.title,subtitle:`${t.status} / ${t.priority}${t.description?` — `+t.description.slice(0,80):``}`,score:t.score,tags:t.tags})}).catch(()=>{})),n.includes(`skills`)&&t.push(F(e,a,i).then(e=>{for(let t of e)r.push({id:t.id,scope:`skills`,title:t.title,subtitle:`${t.source} / ${Math.round(t.confidence*100)}%${t.description?` — `+t.description.slice(0,80):``}`,score:t.score,tags:t.tags})}).catch(()=>{})),n.includes(`files`)&&t.push(N(e,a,i).then(e=>{for(let t of e)r.push({id:t.filePath,scope:`files`,title:t.filePath,subtitle:[t.language,t.size?`${(t.size/1024).toFixed(1)} KB`:``].filter(Boolean).join(` / `),score:t.score})}).catch(()=>{})),n.includes(`docs`)&&t.push(M(e,a,i).then(e=>{for(let t of e)r.push({id:t.id,scope:`docs`,title:t.title||t.id,subtitle:t.content?.slice(0,120),score:t.score})}).catch(()=>{})),n.includes(`code`)&&t.push(P(e,a,i).then(e=>{for(let t of e)r.push({id:t.id,scope:`code`,title:t.name||t.id,subtitle:`${t.kind}${t.content?` — `+t.content.slice(0,80):``}`,score:t.score})}).catch(()=>{})),await Promise.all(t),r.sort((e,t)=>t.score-e.score),U(r)}catch(e){q(e instanceof Error?e.message:String(e))}finally{G(!1)}},[e]);(0,I.useEffect)(()=>{let e=v.get(`q`),t=V(v.get(`scopes`));e?.trim()&&X(e,t)},[]);let Z=()=>{let e=new URLSearchParams;b.trim()&&e.set(`q`,b.trim()),S.length===B.length&&B.every(e=>S.includes(e))||e.set(`scopes`,S.join(`,`)),y(e,{replace:!0}),X(b,S)},Q=n=>{if(!e)return;let r=z(e,n);r&&t(r)};return(0,L.jsxs)(u,{children:[(0,L.jsx)(j,{breadcrumbs:[{label:`Search`}]}),(0,L.jsx)(T,{children:(0,L.jsx)(h,{fullWidth:!0,size:`small`,placeholder:`Search across all graphs...`,value:b,onChange:e=>x(e.target.value),onKeyDown:e=>e.key===`Enter`&&Z(),slotProps:{input:{startAdornment:(0,L.jsx)(s,{position:`start`,children:(0,L.jsx)(C,{})})}}})}),(0,L.jsx)(g,{value:S,onChange:(e,t)=>{t.length>0&&w(t)},size:`small`,sx:{mb:3,flexWrap:`wrap`},children:Object.keys(R).map(e=>(0,L.jsxs)(p,{value:e,sx:{gap:.5,textTransform:`none`},children:[R[e].icon,R[e].label]},e))}),K&&(0,L.jsx)(d,{severity:`error`,sx:{mb:2},children:K}),W?(0,L.jsx)(u,{sx:{display:`flex`,justifyContent:`center`,py:4},children:(0,L.jsx)(m,{})}):H.length===0&&J?(0,L.jsx)(k,{icon:(0,L.jsx)(C,{}),title:`No results found`,description:`Try a different query or broaden your scope filters`}):(0,L.jsx)(f,{spacing:1.5,children:H.map((e,t)=>{let r=R[e.scope],i=e.scope!==`code`;return(0,L.jsx)(c,{variant:`outlined`,onClick:i?()=>Q(e):void 0,sx:i?{cursor:`pointer`,"&:hover":{borderColor:`primary.main`}}:{},children:(0,L.jsxs)(l,{sx:{py:1.5,"&:last-child":{pb:1.5}},children:[(0,L.jsxs)(u,{sx:{display:`flex`,alignItems:`center`,gap:1,mb:.5},children:[(0,L.jsx)(E,{label:r.label,color:r.badgeColor,icon:r.icon}),(0,L.jsx)(o,{variant:`body2`,fontWeight:600,sx:{flex:1},children:e.title}),(0,L.jsx)(E,{label:`${(e.score*100).toFixed(0)}%`,color:`primary`,size:`small`})]}),e.subtitle&&(0,L.jsx)(o,{variant:`caption`,sx:{display:`block`,color:n.custom.textMuted},children:e.subtitle}),e.tags&&e.tags.length>0&&(0,L.jsx)(u,{sx:{mt:.5},children:(0,L.jsx)(O,{tags:e.tags})})]})},`${e.scope}-${e.id}-${t}`)})})]})}export{H as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{O as e}from"./vendor-markdown-DngssFHR.js";import{$ as t,K as n,W as r,Y as i,h as a,tt as o,ut as s}from"./vendor-mui-DXUYJbRC.js";import{i as c,n as l,r as u}from"./client-Bq88u7gN.js";import{W as d}from"./vendor-mui-icons-YtgP6dg2.js";import{F as f,P as p}from"./index-80sqSHwS.js";function m(e,t){return u(`/projects/${e}/skills${l({source:t?.source,tag:t?.tag,limit:t?.limit})}`).then(c)}function h(e,t){return u(`/projects/${e}/skills/${t}`)}function g(e,t){return u(`/projects/${e}/skills`,{method:`POST`,body:JSON.stringify(t)})}function _(e,t,n){return u(`/projects/${e}/skills/${t}`,{method:`PUT`,body:JSON.stringify(n)})}function v(e,t){return u(`/projects/${e}/skills/${t}`,{method:`DELETE`})}function y(e,t,n){return u(`/projects/${e}/skills/search${l({q:t,topK:n?.topK,minScore:n?.minScore})}`).then(c)}function b(e,t){return u(`/projects/${e}/skills/links`,{method:`POST`,body:JSON.stringify(t)})}function x(e,t){return u(`/projects/${e}/skills/links`,{method:`DELETE`,body:JSON.stringify(t)})}function S(e,t){return u(`/projects/${e}/skills/${t}/relations`).then(c)}function C(e,t){return u(`/projects/${e}/skills/${t}/attachments`).then(c)}async function w(e,t,n){let r=new FormData;r.append(`file`,n);let i=await fetch(`/api/projects/${e}/skills/${t}/attachments`,{method:`POST`,credentials:`include`,body:r});if(!i.ok){let e=await i.json().catch(()=>({error:i.statusText}));throw Error(e.error||i.statusText)}return i.json()}function T(e,t,n){return u(`/projects/${e}/skills/${t}/attachments/${encodeURIComponent(n)}`,{method:`DELETE`})}function E(e,t,n){return`/api/projects/${e}/skills/${t}/attachments/${encodeURIComponent(n)}`}var D={user:`primary`,learned:`warning`};function O(e){return e===`learned`?`Learned`:`User`}function k(e){return`${Math.round(e*100)}%`}var A=e();function j({skill:e,score:c,onClick:l,onEdit:u}){let{palette:m}=s();return(0,A.jsx)(n,{variant:`outlined`,sx:{cursor:l?`pointer`:`default`,"&:hover":l?{borderColor:`primary.main`}:{}},onClick:l,children:(0,A.jsx)(r,{sx:{py:1.5,px:2,"&:last-child":{pb:1.5}},children:(0,A.jsxs)(i,{sx:{display:`flex`,alignItems:`flex-start`,gap:1},children:[(0,A.jsxs)(i,{sx:{flex:1,minWidth:0},children:[(0,A.jsxs)(i,{sx:{display:`flex`,alignItems:`center`,gap:1,mb:.25},children:[(0,A.jsx)(t,{variant:`subtitle1`,fontWeight:600,noWrap:!0,sx:{flex:1},children:e.title}),(0,A.jsx)(f,{label:O(e.source),color:D[e.source]??`primary`,size:`small`}),(0,A.jsx)(f,{label:k(e.confidence),color:`neutral`,size:`small`}),c!==void 0&&(0,A.jsx)(f,{label:`${(c*100).toFixed(0)}%`,color:`primary`,size:`small`})]}),e.description&&(0,A.jsx)(t,{variant:`body2`,sx:{color:m.custom.textMuted},noWrap:!0,children:e.description}),(0,A.jsxs)(i,{sx:{display:`flex`,alignItems:`center`,gap:1,mt:.5},children:[e.usageCount>0&&(0,A.jsxs)(t,{variant:`caption`,sx:{color:m.custom.textMuted},children:[`Used `,e.usageCount,` time`,e.usageCount===1?``:`s`]}),e.tags?.length>0&&(0,A.jsx)(p,{tags:e.tags})]})]}),u&&(0,A.jsx)(a,{title:`Edit`,children:(0,A.jsx)(o,{size:`small`,onClick:e=>{e.stopPropagation(),u()},children:(0,A.jsx)(d,{fontSize:`small`})})})]})})})}export{w as _,g as a,T as c,C as d,S as f,_ as g,E as h,O as i,x as l,y as m,D as n,b as o,m as p,k as r,v as s,j as t,h as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-Dw2cE7zH.js";import{
|
|
1
|
+
import{r as e}from"./rolldown-runtime-Dw2cE7zH.js";import{O as t,k as n}from"./vendor-markdown-DngssFHR.js";import{c as r,l as i,u as a}from"./vendor-react-DxfYAwYK.js";import{A as o,Y as s,et as c,m as l,nt as u,q as d,r as f,tt as p}from"./vendor-mui-DXUYJbRC.js";import"./vendor-md-editor-DC6xr_29.js";import{K as m,Q as h,it as g,st as _}from"./vendor-mui-icons-YtgP6dg2.js";import{A as v,Q as y,T as b,Z as x,j as S}from"./index-80sqSHwS.js";import{a as C,g as w,m as T,p as E,s as D,t as O}from"./skill-demt31s6.js";import"./SkillForm-CfDWe0Nx.js";var k=e(n(),1);function A(e){let[t,n]=(0,k.useState)([]),[r,i]=(0,k.useState)(!1),[a,o]=(0,k.useState)(null),s=(0,k.useCallback)(async()=>{if(e){i(!0),o(null);try{n(await E(e))}catch(e){o(e instanceof Error?e.message:String(e))}finally{i(!1)}}},[e]);return(0,k.useEffect)(()=>{s()},[s]),{skills:t,loading:r,error:a,refresh:s,create:(0,k.useCallback)(async t=>{if(!e)return;let r=await C(e,t);return n(e=>[...e,r]),r},[e]),update:(0,k.useCallback)(async(t,r)=>{if(!e)return;let i=await w(e,t,r);return n(e=>e.map(e=>e.id===t?i:e)),i},[e]),remove:(0,k.useCallback)(async t=>{e&&(await D(e,t),n(e=>e.filter(e=>e.id!==t)))},[e])}}var j=t();function M(){let{projectId:e}=i(),t=r(),[n,C]=a(),w=x(`skills`),{skills:E,loading:D,error:M,refresh:N}=A(e??null),[P,F]=(0,k.useState)(n.get(`q`)||``),[I,L]=(0,k.useState)(null),[R,z]=(0,k.useState)(!1);y(e??null,(0,k.useCallback)(e=>{e.type.startsWith(`skill:`)&&N()},[N]));let B=(0,k.useCallback)(async t=>{if(!e||!t.trim()){L(null);return}z(!0);try{L(await T(e,t.trim()))}catch{}finally{z(!1)}},[e]);(0,k.useEffect)(()=>{let e=n.get(`q`);e?.trim()&&B(e)},[]);let V=()=>{let e=new URLSearchParams(n);P.trim()?e.set(`q`,P.trim()):e.delete(`q`),C(e,{replace:!0}),B(P)},H=()=>{F(``),L(null);let e=new URLSearchParams(n);e.delete(`q`),C(e,{replace:!0})},U=I??E;return(0,j.jsxs)(s,{children:[(0,j.jsx)(S,{breadcrumbs:[{label:`Skills`}],actions:w?(0,j.jsx)(d,{variant:`contained`,startIcon:(0,j.jsx)(m,{}),onClick:()=>t(`new`),children:`New Skill`}):void 0}),(0,j.jsx)(v,{children:(0,j.jsx)(f,{fullWidth:!0,size:`small`,placeholder:`Semantic search skills...`,value:P,onChange:e=>F(e.target.value),onKeyDown:e=>e.key===`Enter`&&V(),slotProps:{input:{startAdornment:(0,j.jsx)(o,{position:`start`,children:(0,j.jsx)(_,{})}),endAdornment:P&&(0,j.jsx)(o,{position:`end`,children:(0,j.jsx)(p,{size:`small`,onClick:H,children:(0,j.jsx)(h,{})})})}}})}),I&&(0,j.jsxs)(s,{sx:{mb:1,color:`text.secondary`,fontSize:`0.75rem`},children:[I.length,` result`,I.length===1?``:`s`,` found`]}),M&&(0,j.jsx)(c,{severity:`error`,sx:{mb:2},children:M}),D||R?(0,j.jsx)(s,{sx:{display:`flex`,justifyContent:`center`,py:4},children:(0,j.jsx)(u,{})}):U.length===0?(0,j.jsx)(b,{icon:(0,j.jsx)(g,{}),title:I?`No matching skills found`:`No skills yet`,description:I?`Try a different search query`:`Create your first skill to get started`,action:!I&&w?(0,j.jsx)(d,{variant:`contained`,startIcon:(0,j.jsx)(m,{}),onClick:()=>t(`new`),children:`New Skill`}):void 0}):(0,j.jsx)(l,{spacing:2,children:U.map(e=>(0,j.jsx)(O,{skill:e,score:`score`in e?e.score:void 0,onClick:()=>t(e.id),onEdit:w?()=>t(`${e.id}/edit`):void 0},e.id))})]})}export{M as default};
|
|
@@ -1 +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,P as s,S as ee,U as te,X as c,Y as l,b as ne,et as re,ft as u,h as ie,m as ae,nt as oe,ot as d,q as f,r as p,tt as m,ut as se,v as h,y as g}from"./vendor-mui-BPj7d3Sw.js";import"./vendor-md-editor-DmWafJvr.js";import{K as _,M as ce,Q as v,W as le,n as ue,r as de,st as fe,ut as pe}from"./vendor-mui-icons-B196sG3f.js";import{F as me,P as he,Q as ge,Z as _e,c as ve,et as ye,g as be,h as xe,i as y,j as Se,n as Ce,o as we,t as b,w as Te}from"./index-CEweXD9O.js";var x=e(n(),1),S=`kanban-visible-columns`,C=b.map(e=>e.status);function w(){try{let e=localStorage.getItem(S);if(e){let t=JSON.parse(e).filter(e=>C.includes(e));if(t.length>0)return new Set(t)}}catch{}return new Set(C)}function Ee(){let[e,t]=(0,x.useState)(w);return{visible:e,toggle:(0,x.useCallback)(e=>{t(t=>{let n=new Set(t);if(n.has(e)){if(n.size<=1)return t;n.delete(e)}else n.add(e);return localStorage.setItem(S,JSON.stringify([...n])),n})},[]),visibleColumns:b.filter(t=>e.has(t.status))}}var T=t(),E=[`done`,`cancelled`],D=864e5;function De(e,t){if(!e||E.includes(t))return null;let n=e-Date.now(),r=Math.ceil(n/D);return r<0?{label:`Overdue ${Math.abs(r)}d`,color:`error`}:r<=3?{label:`Due in ${r}d`,color:`warning`}:null}function O(){let{projectId:e}=i(),t=r(),{palette:n}=se(),S=_e(`tasks`),[C,w]=(0,x.useState)([]),[E,D]=(0,x.useState)(!0),[O,Oe]=(0,x.useState)(null),[k,A]=(0,x.useState)(null),[ke,j]=(0,x.useState)(null),[M,Ae]=(0,x.useState)([]),[N,P]=(0,x.useState)(``),{visible:F,toggle:je,visibleColumns:Me}=Ee(),[I,L]=(0,x.useState)(null),[R,z]=(0,x.useState)(``),[B,V]=(0,x.useState)(``),[H,U]=(0,x.useState)(``),[W,G]=(0,x.useState)(null),[K,q]=(0,x.useState)(``),J=(0,x.useRef)(null),[Y,X]=(0,x.useState)(null),[Ne,Z]=(0,x.useState)(!1),Q=(0,x.useCallback)(async()=>{if(e)try{w(await xe(e,{limit:500}))}catch(e){Oe(e instanceof Error?e.message:String(e))}finally{D(!1)}},[e]);(0,x.useEffect)(()=>{Q()},[Q]),(0,x.useEffect)(()=>{e&&ye(e).then(Ae).catch(()=>{})},[e]),ge(e??null,(0,x.useCallback)(e=>{e.type.startsWith(`task:`)&&Q()},[Q])),(0,x.useEffect)(()=>{W&&setTimeout(()=>J.current?.focus(),50)},[W]);let Pe=e=>A(e),$=()=>{A(null),j(null)},Fe=async t=>{if(!k||!e)return;let n=C.find(e=>e.id===k);if(!n||n.status===t){$();return}w(e=>e.map(e=>e.id===k?{...e,status:t}:e)),$();try{await be(e,k,t)}catch{Q()}},Ie=async t=>{let n=K.trim();if(!(!n||!e)){q(``),G(null);try{await we(e,{title:n,status:t}),Q()}catch{}}},Le=async()=>{if(!(!Y||!e)){Z(!0);try{w(e=>e.filter(e=>e.id!==Y.id)),await ve(e,Y.id)}catch{Q()}finally{Z(!1),X(null)}}},Re=(0,x.useMemo)(()=>{let e=new Set;for(let t of C)t.tags?.forEach(t=>e.add(t));return[...e].sort()},[C]),ze=(0,x.useMemo)(()=>{let e=C;if(R){let t=R.toLowerCase();e=e.filter(e=>e.title.toLowerCase().includes(t)||e.description&&e.description.toLowerCase().includes(t))}return B&&(e=e.filter(e=>e.priority===B)),H&&(e=e.filter(e=>e.tags?.includes(H))),N&&(e=e.filter(e=>e.assignee===N)),e},[C,R,B,H,N]),Be=(0,x.useMemo)(()=>{let e=new Map;for(let t of b)e.set(t.status,[]);for(let t of ze){let n=e.get(t.status);n&&n.push(t)}return e},[ze]),Ve=R||B||H||N;return(0,T.jsxs)(l,{children:[(0,T.jsx)(Se,{breadcrumbs:[{label:`Tasks`}],actions:(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(ie,{title:`Column visibility`,children:(0,T.jsx)(m,{onClick:e=>L(e.currentTarget),size:`small`,children:(0,T.jsx)(de,{fontSize:`small`})})}),(0,T.jsx)(ne,{anchorEl:I,open:!!I,onClose:()=>L(null),children:b.map(({status:e,label:t})=>(0,T.jsxs)(g,{onClick:()=>je(e),dense:!0,children:[(0,T.jsx)(te,{checked:F.has(e),disabled:F.has(e)&&F.size===1,size:`small`,sx:{p:0,mr:1}}),(0,T.jsx)(ee,{primary:t})]},e))}),S&&(0,T.jsx)(f,{variant:`contained`,startIcon:(0,T.jsx)(_,{}),onClick:()=>t(`new`),children:`New Task`})]})}),(0,T.jsxs)(l,{sx:{display:`flex`,alignItems:`center`,gap:1.5,px:2,py:1,bgcolor:n.custom.surfaceMuted,borderRadius:1,mb:2},children:[(0,T.jsx)(p,{size:`small`,placeholder:`Search tasks...`,value:R,onChange:e=>z(e.target.value),slotProps:{input:{startAdornment:(0,T.jsx)(o,{position:`start`,children:(0,T.jsx)(fe,{fontSize:`small`,sx:{color:n.custom.textMuted}})}),endAdornment:R?(0,T.jsx)(o,{position:`end`,children:(0,T.jsx)(m,{size:`small`,onClick:()=>z(``),children:(0,T.jsx)(v,{fontSize:`small`})})}):void 0}},sx:{minWidth:200,flex:1,maxWidth:350}}),(0,T.jsx)(s,{size:`small`,sx:{minWidth:120},children:(0,T.jsxs)(h,{value:B,onChange:e=>V(e.target.value),displayEmpty:!0,renderValue:e=>e?y(e):`Priority`,sx:{color:B?void 0:n.custom.textMuted},children:[(0,T.jsx)(g,{value:``,children:`All priorities`}),(0,T.jsx)(g,{value:`critical`,children:`Critical`}),(0,T.jsx)(g,{value:`high`,children:`High`}),(0,T.jsx)(g,{value:`medium`,children:`Medium`}),(0,T.jsx)(g,{value:`low`,children:`Low`})]})}),Re.length>0&&(0,T.jsx)(s,{size:`small`,sx:{minWidth:120},children:(0,T.jsxs)(h,{value:H,onChange:e=>U(e.target.value),displayEmpty:!0,renderValue:e=>e||`Tag`,sx:{color:H?void 0:n.custom.textMuted},children:[(0,T.jsx)(g,{value:``,children:`All tags`}),Re.map(e=>(0,T.jsx)(g,{value:e,children:e},e))]})}),M.length>0&&(0,T.jsx)(s,{size:`small`,sx:{minWidth:120},children:(0,T.jsxs)(h,{value:N,onChange:e=>P(e.target.value),displayEmpty:!0,renderValue:e=>e?M.find(t=>t.id===e)?.name||e:`Assignee`,sx:{color:N?void 0:n.custom.textMuted},children:[(0,T.jsx)(g,{value:``,children:`All`}),M.map(e=>(0,T.jsx)(g,{value:e.id,children:e.name||e.id},e.id))]})}),Ve&&(0,T.jsx)(f,{size:`small`,onClick:()=>{z(``),V(``),U(``),P(``)},children:`Clear`})]}),O&&(0,T.jsx)(re,{severity:`error`,sx:{mb:2},children:O}),E?(0,T.jsx)(l,{sx:{display:`flex`,justifyContent:`center`,py:4},children:(0,T.jsx)(oe,{})}):C.length===0?(0,T.jsxs)(l,{sx:{display:`flex`,flexDirection:`column`,alignItems:`center`,py:6},children:[(0,T.jsx)(pe,{sx:{fontSize:48,color:n.custom.textMuted,mb:2}}),(0,T.jsx)(a,{variant:`h6`,gutterBottom:!0,children:`No tasks yet`}),(0,T.jsx)(a,{variant:`body2`,sx:{color:n.custom.textMuted,mb:2},children:S?`Create your first task to get started`:`No tasks yet`}),S&&(0,T.jsx)(f,{variant:`contained`,startIcon:(0,T.jsx)(_,{}),onClick:()=>t(`new`),children:`New Task`})]}):(0,T.jsx)(l,{sx:{display:`flex`,gap:2,overflowX:`auto`,pb:2,maxHeight:`calc(100vh - 220px)`},children:Me.map(({status:e,label:r,color:i})=>{let o=Be.get(e),s=ke===e&&k!==null;return(0,T.jsxs)(d,{variant:`outlined`,sx:{minWidth:220,flex:1,display:`flex`,flexDirection:`column`,borderTop:`3px solid ${i}`,bgcolor:s?u(i,.06):n.custom.surfaceMuted,borderColor:s?i:void 0,borderStyle:s?`dashed`:void 0,transition:`background-color 0.15s, border-color 0.15s`},onDragOver:t=>{t.preventDefault(),j(e)},onDragEnter:()=>j(e),onDragLeave:e=>{e.currentTarget.contains(e.relatedTarget)||j(null)},onDrop:()=>Fe(e),children:[(0,T.jsxs)(l,{sx:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,px:1.5,pt:1.5,pb:1},children:[(0,T.jsxs)(l,{sx:{display:`flex`,alignItems:`center`,gap:.75},children:[(0,T.jsx)(a,{variant:`subtitle2`,fontWeight:700,children:r}),(0,T.jsx)(a,{variant:`caption`,sx:{color:n.custom.textMuted},children:o.length})]}),S&&(0,T.jsx)(m,{size:`small`,onClick:()=>{G(e),q(``)},sx:{p:.25,color:n.custom.textMuted},children:(0,T.jsx)(_,{sx:{fontSize:18}})})]}),W===e&&(0,T.jsxs)(l,{sx:{display:`flex`,gap:.5,px:1.5,pb:1},children:[(0,T.jsx)(p,{inputRef:J,size:`small`,placeholder:`Task title...`,value:K,onChange:e=>q(e.target.value),onKeyDown:t=>{t.key===`Enter`&&Ie(e),t.key===`Escape`&&(G(null),q(``))},fullWidth:!0,sx:{"& .MuiInputBase-root":{fontSize:`0.85rem`}}}),(0,T.jsx)(m,{size:`small`,onClick:()=>{G(null),q(``)},children:(0,T.jsx)(v,{fontSize:`small`})})]}),(0,T.jsx)(ae,{spacing:1,sx:{flex:1,overflowY:`auto`,px:1.5,pb:1.5,minHeight:50,"&::-webkit-scrollbar":{width:4},"&::-webkit-scrollbar-thumb":{bgcolor:u(n.text.primary,.15),borderRadius:2}},children:o.map(e=>{let r=De(e.dueDate,e.status);return(0,T.jsxs)(d,{variant:`outlined`,draggable:S,onDragStart:S?()=>Pe(e.id):void 0,onDragEnd:S?$:void 0,onClick:()=>t(e.id),sx:{p:1.5,cursor:`pointer`,position:`relative`,bgcolor:n.custom.surface,"&:hover":{borderColor:`primary.main`},"&:hover .task-actions":{opacity:1},opacity:k===e.id?.5:1},children:[(0,T.jsxs)(l,{className:`task-actions`,sx:{position:`absolute`,top:4,right:4,display:`flex`,gap:.25,opacity:0,transition:`opacity 0.15s`,bgcolor:n.custom.surface,borderRadius:.5},children:[(0,T.jsx)(m,{size:`small`,onClick:n=>{n.stopPropagation(),t(`${e.id}/edit`)},sx:{p:.5},children:(0,T.jsx)(le,{sx:{fontSize:15}})}),S&&(0,T.jsx)(m,{size:`small`,onClick:t=>{t.stopPropagation(),X(e)},sx:{p:.5,color:`error.main`},children:(0,T.jsx)(ce,{sx:{fontSize:15}})})]}),(0,T.jsx)(l,{sx:{display:`flex`,justifyContent:`space-between`,alignItems:`flex-start`,mb:.5,pr:3},children:(0,T.jsx)(a,{variant:`body2`,fontWeight:600,sx:{flex:1},children:e.title})}),e.assignee&&(0,T.jsxs)(a,{variant:`caption`,color:`text.secondary`,sx:{display:`block`,mb:.5},children:[`@`,M.find(t=>t.id===e.assignee)?.name??e.assignee]}),(0,T.jsxs)(l,{sx:{display:`flex`,gap:.5,flexWrap:`wrap`,mb:e.description?.5:0},children:[(0,T.jsx)(me,{label:y(e.priority),color:Ce[e.priority],size:`small`}),e.estimate!=null&&(0,T.jsx)(c,{icon:(0,T.jsx)(ue,{sx:{fontSize:`14px !important`}}),label:`${e.estimate}h`,size:`small`,variant:`outlined`,sx:{height:20,"& .MuiChip-label":{px:.5,fontSize:`0.7rem`},"& .MuiChip-icon":{ml:.5}}}),r&&(0,T.jsx)(c,{label:r.label,size:`small`,color:r.color,sx:{height:20,"& .MuiChip-label":{px:.75,fontSize:`0.7rem`}}})]}),e.description&&(0,T.jsx)(a,{variant:`caption`,sx:{display:`block`,mb:.5,color:n.custom.textMuted},children:e.description.length>80?e.description.slice(0,80)+`...`:e.description}),e.tags?.length>0&&(0,T.jsx)(l,{sx:{mt:.5},children:(0,T.jsx)(he,{tags:e.tags})})]},e.id)})})]},e)})}),(0,T.jsx)(Te,{open:!!Y,title:`Delete Task`,message:`Are you sure you want to delete "${Y?.title}"? This action cannot be undone.`,confirmLabel:`Delete`,confirmColor:`error`,onConfirm:Le,onCancel:()=>X(null),loading:Ne})]})}export{O as default};
|
|
1
|
+
import{r as e}from"./rolldown-runtime-Dw2cE7zH.js";import{O as t,k as n}from"./vendor-markdown-DngssFHR.js";import{c as r,l as i}from"./vendor-react-DxfYAwYK.js";import{$ as a,A as o,P as s,S as ee,U as te,X as c,Y as l,b as ne,et as re,ft as u,h as ie,m as ae,nt as oe,ot as d,q as f,r as p,tt as m,ut as se,v as h,y as g}from"./vendor-mui-DXUYJbRC.js";import"./vendor-md-editor-DC6xr_29.js";import{K as _,M as ce,Q as v,W as le,n as ue,r as de,st as fe,ut as pe}from"./vendor-mui-icons-YtgP6dg2.js";import{F as me,P as he,Q as ge,Z as _e,c as ve,et as ye,g as be,h as xe,i as y,j as Se,n as Ce,o as we,t as b,w as Te}from"./index-80sqSHwS.js";var x=e(n(),1),S=`kanban-visible-columns`,C=b.map(e=>e.status);function w(){try{let e=localStorage.getItem(S);if(e){let t=JSON.parse(e).filter(e=>C.includes(e));if(t.length>0)return new Set(t)}}catch{}return new Set(C)}function Ee(){let[e,t]=(0,x.useState)(w);return{visible:e,toggle:(0,x.useCallback)(e=>{t(t=>{let n=new Set(t);if(n.has(e)){if(n.size<=1)return t;n.delete(e)}else n.add(e);return localStorage.setItem(S,JSON.stringify([...n])),n})},[]),visibleColumns:b.filter(t=>e.has(t.status))}}var T=t(),E=[`done`,`cancelled`],D=864e5;function De(e,t){if(!e||E.includes(t))return null;let n=e-Date.now(),r=Math.ceil(n/D);return r<0?{label:`Overdue ${Math.abs(r)}d`,color:`error`}:r<=3?{label:`Due in ${r}d`,color:`warning`}:null}function O(){let{projectId:e}=i(),t=r(),{palette:n}=se(),S=_e(`tasks`),[C,w]=(0,x.useState)([]),[E,D]=(0,x.useState)(!0),[O,Oe]=(0,x.useState)(null),[k,A]=(0,x.useState)(null),[ke,j]=(0,x.useState)(null),[M,Ae]=(0,x.useState)([]),[N,P]=(0,x.useState)(``),{visible:F,toggle:je,visibleColumns:Me}=Ee(),[I,L]=(0,x.useState)(null),[R,z]=(0,x.useState)(``),[B,V]=(0,x.useState)(``),[H,U]=(0,x.useState)(``),[W,G]=(0,x.useState)(null),[K,q]=(0,x.useState)(``),J=(0,x.useRef)(null),[Y,X]=(0,x.useState)(null),[Ne,Z]=(0,x.useState)(!1),Q=(0,x.useCallback)(async()=>{if(e)try{w(await xe(e,{limit:500}))}catch(e){Oe(e instanceof Error?e.message:String(e))}finally{D(!1)}},[e]);(0,x.useEffect)(()=>{Q()},[Q]),(0,x.useEffect)(()=>{e&&ye(e).then(Ae).catch(()=>{})},[e]),ge(e??null,(0,x.useCallback)(e=>{e.type.startsWith(`task:`)&&Q()},[Q])),(0,x.useEffect)(()=>{W&&setTimeout(()=>J.current?.focus(),50)},[W]);let Pe=e=>A(e),$=()=>{A(null),j(null)},Fe=async t=>{if(!k||!e)return;let n=C.find(e=>e.id===k);if(!n||n.status===t){$();return}w(e=>e.map(e=>e.id===k?{...e,status:t}:e)),$();try{await be(e,k,t)}catch{Q()}},Ie=async t=>{let n=K.trim();if(!(!n||!e)){q(``),G(null);try{await we(e,{title:n,status:t}),Q()}catch{}}},Le=async()=>{if(!(!Y||!e)){Z(!0);try{w(e=>e.filter(e=>e.id!==Y.id)),await ve(e,Y.id)}catch{Q()}finally{Z(!1),X(null)}}},Re=(0,x.useMemo)(()=>{let e=new Set;for(let t of C)t.tags?.forEach(t=>e.add(t));return[...e].sort()},[C]),ze=(0,x.useMemo)(()=>{let e=C;if(R){let t=R.toLowerCase();e=e.filter(e=>e.title.toLowerCase().includes(t)||e.description&&e.description.toLowerCase().includes(t))}return B&&(e=e.filter(e=>e.priority===B)),H&&(e=e.filter(e=>e.tags?.includes(H))),N&&(e=e.filter(e=>e.assignee===N)),e},[C,R,B,H,N]),Be=(0,x.useMemo)(()=>{let e=new Map;for(let t of b)e.set(t.status,[]);for(let t of ze){let n=e.get(t.status);n&&n.push(t)}return e},[ze]),Ve=R||B||H||N;return(0,T.jsxs)(l,{children:[(0,T.jsx)(Se,{breadcrumbs:[{label:`Tasks`}],actions:(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(ie,{title:`Column visibility`,children:(0,T.jsx)(m,{onClick:e=>L(e.currentTarget),size:`small`,children:(0,T.jsx)(de,{fontSize:`small`})})}),(0,T.jsx)(ne,{anchorEl:I,open:!!I,onClose:()=>L(null),children:b.map(({status:e,label:t})=>(0,T.jsxs)(g,{onClick:()=>je(e),dense:!0,children:[(0,T.jsx)(te,{checked:F.has(e),disabled:F.has(e)&&F.size===1,size:`small`,sx:{p:0,mr:1}}),(0,T.jsx)(ee,{primary:t})]},e))}),S&&(0,T.jsx)(f,{variant:`contained`,startIcon:(0,T.jsx)(_,{}),onClick:()=>t(`new`),children:`New Task`})]})}),(0,T.jsxs)(l,{sx:{display:`flex`,alignItems:`center`,gap:1.5,px:2,py:1,bgcolor:n.custom.surfaceMuted,borderRadius:1,mb:2},children:[(0,T.jsx)(p,{size:`small`,placeholder:`Search tasks...`,value:R,onChange:e=>z(e.target.value),slotProps:{input:{startAdornment:(0,T.jsx)(o,{position:`start`,children:(0,T.jsx)(fe,{fontSize:`small`,sx:{color:n.custom.textMuted}})}),endAdornment:R?(0,T.jsx)(o,{position:`end`,children:(0,T.jsx)(m,{size:`small`,onClick:()=>z(``),children:(0,T.jsx)(v,{fontSize:`small`})})}):void 0}},sx:{minWidth:200,flex:1,maxWidth:350}}),(0,T.jsx)(s,{size:`small`,sx:{minWidth:120},children:(0,T.jsxs)(h,{value:B,onChange:e=>V(e.target.value),displayEmpty:!0,renderValue:e=>e?y(e):`Priority`,sx:{color:B?void 0:n.custom.textMuted},children:[(0,T.jsx)(g,{value:``,children:`All priorities`}),(0,T.jsx)(g,{value:`critical`,children:`Critical`}),(0,T.jsx)(g,{value:`high`,children:`High`}),(0,T.jsx)(g,{value:`medium`,children:`Medium`}),(0,T.jsx)(g,{value:`low`,children:`Low`})]})}),Re.length>0&&(0,T.jsx)(s,{size:`small`,sx:{minWidth:120},children:(0,T.jsxs)(h,{value:H,onChange:e=>U(e.target.value),displayEmpty:!0,renderValue:e=>e||`Tag`,sx:{color:H?void 0:n.custom.textMuted},children:[(0,T.jsx)(g,{value:``,children:`All tags`}),Re.map(e=>(0,T.jsx)(g,{value:e,children:e},e))]})}),M.length>0&&(0,T.jsx)(s,{size:`small`,sx:{minWidth:120},children:(0,T.jsxs)(h,{value:N,onChange:e=>P(e.target.value),displayEmpty:!0,renderValue:e=>e?M.find(t=>t.id===e)?.name||e:`Assignee`,sx:{color:N?void 0:n.custom.textMuted},children:[(0,T.jsx)(g,{value:``,children:`All`}),M.map(e=>(0,T.jsx)(g,{value:e.id,children:e.name||e.id},e.id))]})}),Ve&&(0,T.jsx)(f,{size:`small`,onClick:()=>{z(``),V(``),U(``),P(``)},children:`Clear`})]}),O&&(0,T.jsx)(re,{severity:`error`,sx:{mb:2},children:O}),E?(0,T.jsx)(l,{sx:{display:`flex`,justifyContent:`center`,py:4},children:(0,T.jsx)(oe,{})}):C.length===0?(0,T.jsxs)(l,{sx:{display:`flex`,flexDirection:`column`,alignItems:`center`,py:6},children:[(0,T.jsx)(pe,{sx:{fontSize:48,color:n.custom.textMuted,mb:2}}),(0,T.jsx)(a,{variant:`h6`,gutterBottom:!0,children:`No tasks yet`}),(0,T.jsx)(a,{variant:`body2`,sx:{color:n.custom.textMuted,mb:2},children:S?`Create your first task to get started`:`No tasks yet`}),S&&(0,T.jsx)(f,{variant:`contained`,startIcon:(0,T.jsx)(_,{}),onClick:()=>t(`new`),children:`New Task`})]}):(0,T.jsx)(l,{sx:{display:`flex`,gap:2,overflowX:`auto`,pb:2,maxHeight:`calc(100vh - 220px)`},children:Me.map(({status:e,label:r,color:i})=>{let o=Be.get(e),s=ke===e&&k!==null;return(0,T.jsxs)(d,{variant:`outlined`,sx:{minWidth:220,flex:1,display:`flex`,flexDirection:`column`,borderTop:`3px solid ${i}`,bgcolor:s?u(i,.06):n.custom.surfaceMuted,borderColor:s?i:void 0,borderStyle:s?`dashed`:void 0,transition:`background-color 0.15s, border-color 0.15s`},onDragOver:t=>{t.preventDefault(),j(e)},onDragEnter:()=>j(e),onDragLeave:e=>{e.currentTarget.contains(e.relatedTarget)||j(null)},onDrop:()=>Fe(e),children:[(0,T.jsxs)(l,{sx:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,px:1.5,pt:1.5,pb:1},children:[(0,T.jsxs)(l,{sx:{display:`flex`,alignItems:`center`,gap:.75},children:[(0,T.jsx)(a,{variant:`subtitle2`,fontWeight:700,children:r}),(0,T.jsx)(a,{variant:`caption`,sx:{color:n.custom.textMuted},children:o.length})]}),S&&(0,T.jsx)(m,{size:`small`,onClick:()=>{G(e),q(``)},sx:{p:.25,color:n.custom.textMuted},children:(0,T.jsx)(_,{sx:{fontSize:18}})})]}),W===e&&(0,T.jsxs)(l,{sx:{display:`flex`,gap:.5,px:1.5,pb:1},children:[(0,T.jsx)(p,{inputRef:J,size:`small`,placeholder:`Task title...`,value:K,onChange:e=>q(e.target.value),onKeyDown:t=>{t.key===`Enter`&&Ie(e),t.key===`Escape`&&(G(null),q(``))},fullWidth:!0,sx:{"& .MuiInputBase-root":{fontSize:`0.85rem`}}}),(0,T.jsx)(m,{size:`small`,onClick:()=>{G(null),q(``)},children:(0,T.jsx)(v,{fontSize:`small`})})]}),(0,T.jsx)(ae,{spacing:1,sx:{flex:1,overflowY:`auto`,px:1.5,pb:1.5,minHeight:50,"&::-webkit-scrollbar":{width:4},"&::-webkit-scrollbar-thumb":{bgcolor:u(n.text.primary,.15),borderRadius:2}},children:o.map(e=>{let r=De(e.dueDate,e.status);return(0,T.jsxs)(d,{variant:`outlined`,draggable:S,onDragStart:S?()=>Pe(e.id):void 0,onDragEnd:S?$:void 0,onClick:()=>t(e.id),sx:{p:1.5,cursor:`pointer`,position:`relative`,bgcolor:n.custom.surface,"&:hover":{borderColor:`primary.main`},"&:hover .task-actions":{opacity:1},opacity:k===e.id?.5:1},children:[(0,T.jsxs)(l,{className:`task-actions`,sx:{position:`absolute`,top:4,right:4,display:`flex`,gap:.25,opacity:0,transition:`opacity 0.15s`,bgcolor:n.custom.surface,borderRadius:.5},children:[(0,T.jsx)(m,{size:`small`,onClick:n=>{n.stopPropagation(),t(`${e.id}/edit`)},sx:{p:.5},children:(0,T.jsx)(le,{sx:{fontSize:15}})}),S&&(0,T.jsx)(m,{size:`small`,onClick:t=>{t.stopPropagation(),X(e)},sx:{p:.5,color:`error.main`},children:(0,T.jsx)(ce,{sx:{fontSize:15}})})]}),(0,T.jsx)(l,{sx:{display:`flex`,justifyContent:`space-between`,alignItems:`flex-start`,mb:.5,pr:3},children:(0,T.jsx)(a,{variant:`body2`,fontWeight:600,sx:{flex:1},children:e.title})}),e.assignee&&(0,T.jsxs)(a,{variant:`caption`,color:`text.secondary`,sx:{display:`block`,mb:.5},children:[`@`,M.find(t=>t.id===e.assignee)?.name??e.assignee]}),(0,T.jsxs)(l,{sx:{display:`flex`,gap:.5,flexWrap:`wrap`,mb:e.description?.5:0},children:[(0,T.jsx)(me,{label:y(e.priority),color:Ce[e.priority],size:`small`}),e.estimate!=null&&(0,T.jsx)(c,{icon:(0,T.jsx)(ue,{sx:{fontSize:`14px !important`}}),label:`${e.estimate}h`,size:`small`,variant:`outlined`,sx:{height:20,"& .MuiChip-label":{px:.5,fontSize:`0.7rem`},"& .MuiChip-icon":{ml:.5}}}),r&&(0,T.jsx)(c,{label:r.label,size:`small`,color:r.color,sx:{height:20,"& .MuiChip-label":{px:.75,fontSize:`0.7rem`}}})]}),e.description&&(0,T.jsx)(a,{variant:`caption`,sx:{display:`block`,mb:.5,color:n.custom.textMuted},children:e.description.length>80?e.description.slice(0,80)+`...`:e.description}),e.tags?.length>0&&(0,T.jsx)(l,{sx:{mt:.5},children:(0,T.jsx)(he,{tags:e.tags})})]},e.id)})})]},e)})}),(0,T.jsx)(Te,{open:!!Y,title:`Delete Task`,message:`Are you sure you want to delete "${Y?.title}"? This action cannot be undone.`,confirmLabel:`Delete`,confirmColor:`error`,onConfirm:Le,onCancel:()=>X(null),loading:Ne})]})}export{O as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-Dw2cE7zH.js";import{
|
|
1
|
+
import{r as e}from"./rolldown-runtime-Dw2cE7zH.js";import{O as t,k as n}from"./vendor-markdown-DngssFHR.js";import{c as r,l as i}from"./vendor-react-DxfYAwYK.js";import{$ as a,A as o,P as s,Y as c,a as l,c as u,d,k as f,l as p,nt as m,r as h,s as g,u as _,ut as v,v as y,y as b}from"./vendor-mui-DXUYJbRC.js";import"./vendor-md-editor-DC6xr_29.js";import{nt as x,st as S}from"./vendor-mui-icons-YtgP6dg2.js";import{A as C,F as w,T,j as E}from"./index-80sqSHwS.js";import{r as D}from"./api-DuX-0a_X.js";var O=e(n(),1),k=t(),A={docs:`primary`,code:`success`,knowledge:`warning`,tasks:`neutral`,skills:`primary`,files:`neutral`,context:`neutral`,"cross-graph":`error`};function j(){let{projectId:e}=i(),t=r(),{palette:n}=v(),[j,M]=(0,O.useState)([]),[N,P]=(0,O.useState)(!0),[F,I]=(0,O.useState)(``),[L,R]=(0,O.useState)(`all`);(0,O.useEffect)(()=>{e&&(P(!0),D(e).then(M).finally(()=>P(!1)))},[e]);let z=(0,O.useMemo)(()=>{let e=new Set(j.map(e=>e.category));return[`all`,...Array.from(e).sort()]},[j]),B=(0,O.useMemo)(()=>j.filter(e=>!(L!==`all`&&e.category!==L||F&&!e.name.toLowerCase().includes(F.toLowerCase())&&!e.description.toLowerCase().includes(F.toLowerCase()))),[j,F,L]),V=e=>{let t=e.inputSchema?.properties;return t?Object.keys(t).length:0};return N?(0,k.jsx)(c,{sx:{display:`flex`,justifyContent:`center`,py:8},children:(0,k.jsx)(m,{})}):(0,k.jsxs)(c,{children:[(0,k.jsx)(E,{breadcrumbs:[{label:`Tools`}]}),(0,k.jsxs)(C,{children:[(0,k.jsx)(h,{size:`small`,placeholder:`Search tools...`,value:F,onChange:e=>I(e.target.value),slotProps:{input:{startAdornment:(0,k.jsx)(o,{position:`start`,children:(0,k.jsx)(S,{fontSize:`small`})})}},sx:{minWidth:240}}),(0,k.jsxs)(s,{size:`small`,sx:{minWidth:140},children:[(0,k.jsx)(f,{children:`Category`}),(0,k.jsx)(y,{value:L,label:`Category`,onChange:e=>R(e.target.value),children:z.map(e=>(0,k.jsx)(b,{value:e,children:e===`all`?`All`:e},e))})]}),(0,k.jsxs)(a,{variant:`body2`,sx:{color:n.custom.textMuted,ml:`auto`},children:[B.length,` tool`,B.length===1?``:`s`]})]}),B.length===0?(0,k.jsx)(T,{icon:(0,k.jsx)(x,{}),title:`No tools found`,description:F||L!==`all`?`Try adjusting your filters`:`No MCP tools available for this project`}):(0,k.jsx)(u,{children:(0,k.jsxs)(d,{size:`small`,children:[(0,k.jsx)(g,{children:(0,k.jsxs)(l,{children:[(0,k.jsx)(p,{children:`Name`}),(0,k.jsx)(p,{children:`Category`}),(0,k.jsx)(p,{children:`Description`}),(0,k.jsx)(p,{align:`center`,children:`Params`})]})}),(0,k.jsx)(_,{children:B.map(r=>(0,k.jsxs)(l,{hover:!0,sx:{cursor:`pointer`},onClick:()=>t(`/${e}/tools/${r.name}`),children:[(0,k.jsx)(p,{children:(0,k.jsx)(a,{variant:`body2`,fontWeight:600,sx:{fontFamily:`monospace`},children:r.name})}),(0,k.jsx)(p,{children:(0,k.jsx)(w,{label:r.category,color:A[r.category]||`neutral`})}),(0,k.jsx)(p,{children:(0,k.jsx)(a,{variant:`body2`,sx:{color:n.custom.textMuted,maxWidth:500,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`},children:r.description})}),(0,k.jsx)(p,{align:`center`,children:(0,k.jsx)(a,{variant:`body2`,children:V(r)})})]},r.name))})]})})]})}export{j as default};
|