@grackle-ai/web 0.72.5 → 0.73.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.
@@ -1 +1 @@
1
- import{a as z,j as w}from"./markdown-gcy1Jmzi.js";import{u as Z,s as q,t as tt,a as et,B as nt,K as rt}from"./index-CzA7x3kc.js";import{t as it,b as st,z as at,s as D,c as H}from"./dagview-BA5TtMAQ.js";function ot(t,e){var n,c=1;t==null&&(t=0),e==null&&(e=0);function r(){var a,u=n.length,f,_=0,o=0;for(a=0;a<u;++a)f=n[a],_+=f.x,o+=f.y;for(_=(_/u-t)*c,o=(o/u-e)*c,a=0;a<u;++a)f=n[a],f.x-=_,f.y-=o}return r.initialize=function(a){n=a},r.x=function(a){return arguments.length?(t=+a,r):t},r.y=function(a){return arguments.length?(e=+a,r):e},r.strength=function(a){return arguments.length?(c=+a,r):c},r}function ct(t){const e=+this._x.call(null,t),n=+this._y.call(null,t);return J(this.cover(e,n),e,n,t)}function J(t,e,n,c){if(isNaN(e)||isNaN(n))return t;var r,a=t._root,u={data:c},f=t._x0,_=t._y0,o=t._x1,g=t._y1,p,v,h,y,s,i,l,d;if(!a)return t._root=u,t;for(;a.length;)if((s=e>=(p=(f+o)/2))?f=p:o=p,(i=n>=(v=(_+g)/2))?_=v:g=v,r=a,!(a=a[l=i<<1|s]))return r[l]=u,t;if(h=+t._x.call(null,a.data),y=+t._y.call(null,a.data),e===h&&n===y)return u.next=a,r?r[l]=u:t._root=u,t;do r=r?r[l]=new Array(4):t._root=new Array(4),(s=e>=(p=(f+o)/2))?f=p:o=p,(i=n>=(v=(_+g)/2))?_=v:g=v;while((l=i<<1|s)===(d=(y>=v)<<1|h>=p));return r[d]=a,r[l]=u,t}function lt(t){var e,n,c=t.length,r,a,u=new Array(c),f=new Array(c),_=1/0,o=1/0,g=-1/0,p=-1/0;for(n=0;n<c;++n)isNaN(r=+this._x.call(null,e=t[n]))||isNaN(a=+this._y.call(null,e))||(u[n]=r,f[n]=a,r<_&&(_=r),r>g&&(g=r),a<o&&(o=a),a>p&&(p=a));if(_>g||o>p)return this;for(this.cover(_,o).cover(g,p),n=0;n<c;++n)J(this,u[n],f[n],t[n]);return this}function ut(t,e){if(isNaN(t=+t)||isNaN(e=+e))return this;var n=this._x0,c=this._y0,r=this._x1,a=this._y1;if(isNaN(n))r=(n=Math.floor(t))+1,a=(c=Math.floor(e))+1;else{for(var u=r-n||1,f=this._root,_,o;n>t||t>=r||c>e||e>=a;)switch(o=(e<c)<<1|t<n,_=new Array(4),_[o]=f,f=_,u*=2,o){case 0:r=n+u,a=c+u;break;case 1:n=r-u,a=c+u;break;case 2:r=n+u,c=a-u;break;case 3:n=r-u,c=a-u;break}this._root&&this._root.length&&(this._root=f)}return this._x0=n,this._y0=c,this._x1=r,this._y1=a,this}function ft(){var t=[];return this.visit(function(e){if(!e.length)do t.push(e.data);while(e=e.next)}),t}function ht(t){return arguments.length?this.cover(+t[0][0],+t[0][1]).cover(+t[1][0],+t[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]}function L(t,e,n,c,r){this.node=t,this.x0=e,this.y0=n,this.x1=c,this.y1=r}function dt(t,e,n){var c,r=this._x0,a=this._y0,u,f,_,o,g=this._x1,p=this._y1,v=[],h=this._root,y,s;for(h&&v.push(new L(h,r,a,g,p)),n==null?n=1/0:(r=t-n,a=e-n,g=t+n,p=e+n,n*=n);y=v.pop();)if(!(!(h=y.node)||(u=y.x0)>g||(f=y.y0)>p||(_=y.x1)<r||(o=y.y1)<a))if(h.length){var i=(u+_)/2,l=(f+o)/2;v.push(new L(h[3],i,l,_,o),new L(h[2],u,l,i,o),new L(h[1],i,f,_,l),new L(h[0],u,f,i,l)),(s=(e>=l)<<1|t>=i)&&(y=v[v.length-1],v[v.length-1]=v[v.length-1-s],v[v.length-1-s]=y)}else{var d=t-+this._x.call(null,h.data),N=e-+this._y.call(null,h.data),x=d*d+N*N;if(x<n){var b=Math.sqrt(n=x);r=t-b,a=e-b,g=t+b,p=e+b,c=h.data}}return c}function gt(t){if(isNaN(g=+this._x.call(null,t))||isNaN(p=+this._y.call(null,t)))return this;var e,n=this._root,c,r,a,u=this._x0,f=this._y0,_=this._x1,o=this._y1,g,p,v,h,y,s,i,l;if(!n)return this;if(n.length)for(;;){if((y=g>=(v=(u+_)/2))?u=v:_=v,(s=p>=(h=(f+o)/2))?f=h:o=h,e=n,!(n=n[i=s<<1|y]))return this;if(!n.length)break;(e[i+1&3]||e[i+2&3]||e[i+3&3])&&(c=e,l=i)}for(;n.data!==t;)if(r=n,!(n=n.next))return this;return(a=n.next)&&delete n.next,r?(a?r.next=a:delete r.next,this):e?(a?e[i]=a:delete e[i],(n=e[0]||e[1]||e[2]||e[3])&&n===(e[3]||e[2]||e[1]||e[0])&&!n.length&&(c?c[l]=n:this._root=n),this):(this._root=a,this)}function xt(t){for(var e=0,n=t.length;e<n;++e)this.remove(t[e]);return this}function _t(){return this._root}function mt(){var t=0;return this.visit(function(e){if(!e.length)do++t;while(e=e.next)}),t}function vt(t){var e=[],n,c=this._root,r,a,u,f,_;for(c&&e.push(new L(c,this._x0,this._y0,this._x1,this._y1));n=e.pop();)if(!t(c=n.node,a=n.x0,u=n.y0,f=n.x1,_=n.y1)&&c.length){var o=(a+f)/2,g=(u+_)/2;(r=c[3])&&e.push(new L(r,o,g,f,_)),(r=c[2])&&e.push(new L(r,a,g,o,_)),(r=c[1])&&e.push(new L(r,o,u,f,g)),(r=c[0])&&e.push(new L(r,a,u,o,g))}return this}function yt(t){var e=[],n=[],c;for(this._root&&e.push(new L(this._root,this._x0,this._y0,this._x1,this._y1));c=e.pop();){var r=c.node;if(r.length){var a,u=c.x0,f=c.y0,_=c.x1,o=c.y1,g=(u+_)/2,p=(f+o)/2;(a=r[0])&&e.push(new L(a,u,f,g,p)),(a=r[1])&&e.push(new L(a,g,f,_,p)),(a=r[2])&&e.push(new L(a,u,p,g,o)),(a=r[3])&&e.push(new L(a,g,p,_,o))}n.push(c)}for(;c=n.pop();)t(c.node,c.x0,c.y0,c.x1,c.y1);return this}function pt(t){return t[0]}function wt(t){return arguments.length?(this._x=t,this):this._x}function Nt(t){return t[1]}function bt(t){return arguments.length?(this._y=t,this):this._y}function U(t,e,n){var c=new P(e??pt,n??Nt,NaN,NaN,NaN,NaN);return t==null?c:c.addAll(t)}function P(t,e,n,c,r,a){this._x=t,this._y=e,this._x0=n,this._y0=c,this._x1=r,this._y1=a,this._root=void 0}function W(t){for(var e={data:t.data},n=e;t=t.next;)n=n.next={data:t.data};return e}var M=U.prototype=P.prototype;M.copy=function(){var t=new P(this._x,this._y,this._x0,this._y0,this._x1,this._y1),e=this._root,n,c;if(!e)return t;if(!e.length)return t._root=W(e),t;for(n=[{source:e,target:t._root=new Array(4)}];e=n.pop();)for(var r=0;r<4;++r)(c=e.source[r])&&(c.length?n.push({source:c,target:e.target[r]=new Array(4)}):e.target[r]=W(c));return t};M.add=ct;M.addAll=lt;M.cover=ut;M.data=ft;M.extent=ht;M.find=dt;M.remove=gt;M.removeAll=xt;M.root=_t;M.size=mt;M.visit=vt;M.visitAfter=yt;M.x=wt;M.y=bt;function $(t){return function(){return t}}function S(t){return(t()-.5)*1e-6}function kt(t){return t.x+t.vx}function jt(t){return t.y+t.vy}function zt(t){var e,n,c,r=1,a=1;typeof t!="function"&&(t=$(t==null?1:+t));function u(){for(var o,g=e.length,p,v,h,y,s,i,l=0;l<a;++l)for(p=U(e,kt,jt).visitAfter(f),o=0;o<g;++o)v=e[o],s=n[v.index],i=s*s,h=v.x+v.vx,y=v.y+v.vy,p.visit(d);function d(N,x,b,C,m){var k=N.data,I=N.r,A=s+I;if(k){if(k.index>v.index){var B=h-k.x-k.vx,T=y-k.y-k.vy,R=B*B+T*T;R<A*A&&(B===0&&(B=S(c),R+=B*B),T===0&&(T=S(c),R+=T*T),R=(A-(R=Math.sqrt(R)))/R*r,v.vx+=(B*=R)*(A=(I*=I)/(i+I)),v.vy+=(T*=R)*A,k.vx-=B*(A=1-A),k.vy-=T*A)}return}return x>h+A||C<h-A||b>y+A||m<y-A}}function f(o){if(o.data)return o.r=n[o.data.index];for(var g=o.r=0;g<4;++g)o[g]&&o[g].r>o.r&&(o.r=o[g].r)}function _(){if(e){var o,g=e.length,p;for(n=new Array(g),o=0;o<g;++o)p=e[o],n[p.index]=+t(p,o,e)}}return u.initialize=function(o,g){e=o,c=g,_()},u.iterations=function(o){return arguments.length?(a=+o,u):a},u.strength=function(o){return arguments.length?(r=+o,u):r},u.radius=function(o){return arguments.length?(t=typeof o=="function"?o:$(+o),_(),u):t},u}function At(t){return t.index}function Q(t,e){var n=t.get(e);if(!n)throw new Error("node not found: "+e);return n}function Ct(t){var e=At,n=p,c,r=$(30),a,u,f,_,o,g=1;t==null&&(t=[]);function p(i){return 1/Math.min(f[i.source.index],f[i.target.index])}function v(i){for(var l=0,d=t.length;l<g;++l)for(var N=0,x,b,C,m,k,I,A;N<d;++N)x=t[N],b=x.source,C=x.target,m=C.x+C.vx-b.x-b.vx||S(o),k=C.y+C.vy-b.y-b.vy||S(o),I=Math.sqrt(m*m+k*k),I=(I-a[N])/I*i*c[N],m*=I,k*=I,C.vx-=m*(A=_[N]),C.vy-=k*A,b.vx+=m*(A=1-A),b.vy+=k*A}function h(){if(u){var i,l=u.length,d=t.length,N=new Map(u.map((b,C)=>[e(b,C,u),b])),x;for(i=0,f=new Array(l);i<d;++i)x=t[i],x.index=i,typeof x.source!="object"&&(x.source=Q(N,x.source)),typeof x.target!="object"&&(x.target=Q(N,x.target)),f[x.source.index]=(f[x.source.index]||0)+1,f[x.target.index]=(f[x.target.index]||0)+1;for(i=0,_=new Array(d);i<d;++i)x=t[i],_[i]=f[x.source.index]/(f[x.source.index]+f[x.target.index]);c=new Array(d),y(),a=new Array(d),s()}}function y(){if(u)for(var i=0,l=t.length;i<l;++i)c[i]=+n(t[i],i,t)}function s(){if(u)for(var i=0,l=t.length;i<l;++i)a[i]=+r(t[i],i,t)}return v.initialize=function(i,l){u=i,o=l,h()},v.links=function(i){return arguments.length?(t=i,h(),v):t},v.id=function(i){return arguments.length?(e=i,v):e},v.iterations=function(i){return arguments.length?(g=+i,v):g},v.strength=function(i){return arguments.length?(n=typeof i=="function"?i:$(+i),y(),v):n},v.distance=function(i){return arguments.length?(r=typeof i=="function"?i:$(+i),s(),v):r},v}const Lt=1664525,Mt=1013904223,V=4294967296;function Et(){let t=1;return()=>(t=(Lt*t+Mt)%V)/V}function It(t){return t.x}function Rt(t){return t.y}var Dt=10,Bt=Math.PI*(3-Math.sqrt(5));function Tt(t){var e,n=1,c=.001,r=1-Math.pow(c,1/300),a=0,u=.6,f=new Map,_=it(p),o=st("tick","end"),g=Et();t==null&&(t=[]);function p(){v(),o.call("tick",e),n<c&&(_.stop(),o.call("end",e))}function v(s){var i,l=t.length,d;s===void 0&&(s=1);for(var N=0;N<s;++N)for(n+=(a-n)*r,f.forEach(function(x){x(n)}),i=0;i<l;++i)d=t[i],d.fx==null?d.x+=d.vx*=u:(d.x=d.fx,d.vx=0),d.fy==null?d.y+=d.vy*=u:(d.y=d.fy,d.vy=0);return e}function h(){for(var s=0,i=t.length,l;s<i;++s){if(l=t[s],l.index=s,l.fx!=null&&(l.x=l.fx),l.fy!=null&&(l.y=l.fy),isNaN(l.x)||isNaN(l.y)){var d=Dt*Math.sqrt(.5+s),N=s*Bt;l.x=d*Math.cos(N),l.y=d*Math.sin(N)}(isNaN(l.vx)||isNaN(l.vy))&&(l.vx=l.vy=0)}}function y(s){return s.initialize&&s.initialize(t,g),s}return h(),e={tick:v,restart:function(){return _.restart(p),e},stop:function(){return _.stop(),e},nodes:function(s){return arguments.length?(t=s,h(),f.forEach(y),e):t},alpha:function(s){return arguments.length?(n=+s,e):n},alphaMin:function(s){return arguments.length?(c=+s,e):c},alphaDecay:function(s){return arguments.length?(r=+s,e):+r},alphaTarget:function(s){return arguments.length?(a=+s,e):a},velocityDecay:function(s){return arguments.length?(u=1-s,e):1-u},randomSource:function(s){return arguments.length?(g=s,f.forEach(y),e):g},force:function(s,i){return arguments.length>1?(i==null?f.delete(s):f.set(s,y(i)),e):f.get(s)},find:function(s,i,l){var d=0,N=t.length,x,b,C,m,k;for(l==null?l=1/0:l*=l,d=0;d<N;++d)m=t[d],x=s-m.x,b=i-m.y,C=x*x+b*b,C<l&&(k=m,l=C);return k},on:function(s,i){return arguments.length>1?(o.on(s,i),e):o.on(s)}}}function St(){var t,e,n,c,r=$(-30),a,u=1,f=1/0,_=.81;function o(h){var y,s=t.length,i=U(t,It,Rt).visitAfter(p);for(c=h,y=0;y<s;++y)e=t[y],i.visit(v)}function g(){if(t){var h,y=t.length,s;for(a=new Array(y),h=0;h<y;++h)s=t[h],a[s.index]=+r(s,h,t)}}function p(h){var y=0,s,i,l=0,d,N,x;if(h.length){for(d=N=x=0;x<4;++x)(s=h[x])&&(i=Math.abs(s.value))&&(y+=s.value,l+=i,d+=i*s.x,N+=i*s.y);h.x=d/l,h.y=N/l}else{s=h,s.x=s.data.x,s.y=s.data.y;do y+=a[s.data.index];while(s=s.next)}h.value=y}function v(h,y,s,i){if(!h.value)return!0;var l=h.x-e.x,d=h.y-e.y,N=i-y,x=l*l+d*d;if(N*N/_<x)return x<f&&(l===0&&(l=S(n),x+=l*l),d===0&&(d=S(n),x+=d*d),x<u&&(x=Math.sqrt(u*x)),e.vx+=l*h.value*c/x,e.vy+=d*h.value*c/x),!0;if(h.length||x>=f)return;(h.data!==e||h.next)&&(l===0&&(l=S(n),x+=l*l),d===0&&(d=S(n),x+=d*d),x<u&&(x=Math.sqrt(u*x)));do h.data!==e&&(N=a[h.data.index]*c/x,e.vx+=l*N,e.vy+=d*N);while(h=h.next)}return o.initialize=function(h,y){t=h,n=y,g()},o.strength=function(h){return arguments.length?(r=typeof h=="function"?h:$(+h),g(),o):r},o.distanceMin=function(h){return arguments.length?(u=h*h,o):Math.sqrt(u)},o.distanceMax=function(h){return arguments.length?(f=h*h,o):Math.sqrt(f)},o.theta=function(h){return arguments.length?(_=h*h,o):Math.sqrt(_)},o}const $t="_graphContainer_zxmzw_1",Ot="_svg_zxmzw_10",Gt="_link_zxmzw_18",Ft="_node_zxmzw_30",Kt="_nodeCard_zxmzw_34",Ut="_nodeLabel_zxmzw_40",Pt="_selected_zxmzw_44",Ht="_dimmed_zxmzw_51",Wt="_dimmedLink_zxmzw_56",Qt="_nodeIndicator_zxmzw_68",Vt="_nodeBadge_zxmzw_82",E={graphContainer:$t,svg:Ot,link:Gt,node:Ft,nodeCard:Kt,nodeLabel:Ut,selected:Pt,dimmed:Ht,dimmedLink:Wt,nodeIndicator:Qt,nodeBadge:Vt},F={reference:"#4A9EFF",decision:"#22C55E",insight:"#EAB308",concept:"#A855F7",snippet:"#6B7280"};function X(t){return t.kind==="reference"?F.reference:F[t.category??"insight"]??F.insight}const O=200,G=52,Y=12;function Xt({graphData:t,selectedNodeId:e,onNodeClick:n,onNodeDoubleClick:c}){const r=z.useRef(null),a=z.useRef(null),u=z.useRef(void 0),f=z.useRef(void 0),_=z.useRef(void 0),o=z.useRef(void 0),[g,p]=z.useState({width:800,height:600});z.useEffect(()=>{var l;const s=((l=r.current)==null?void 0:l.parentElement)??null;if(!s)return;const i=new ResizeObserver(d=>{for(const N of d)p({width:N.contentRect.width,height:N.contentRect.height})});return i.observe(s),p({width:s.clientWidth,height:s.clientHeight}),()=>{i.disconnect()}},[]),z.useEffect(()=>{if(!r.current||!a.current)return;const s=r.current,i=a.current,l=at().scaleExtent([.1,4]).filter(d=>d.type!=="dblclick").on("zoom",d=>{D(i).attr("transform",String(d.transform))});return D(s).call(l),f.current=l,()=>{D(s).on(".zoom",null)}},[]);const v=z.useRef(n);v.current=n;const h=z.useRef(c);h.current=c,z.useEffect(()=>{if(!a.current)return;const s=a.current;if(u.current&&(u.current.stop(),u.current=void 0),t.nodes.length===0){D(s).selectAll("*").remove();return}const i=t.nodes.map(m=>({...m})),l=new Map(i.map(m=>[m.id,m])),d=t.links.filter(m=>l.has(m.source)&&l.has(m.target)).map(m=>({source:m.source,target:m.target,type:m.type}));D(s).selectAll("*").remove();const N=D(s).selectAll("line").data(d).enter().append("line").attr("class",E.link);N.append("title").text(m=>m.type),_.current=N;const x=D(s).selectAll("g.kg-node").data(i).enter().append("g").attr("class",`kg-node ${E.node}`).style("cursor","pointer").on("click",(m,k)=>{v.current(k.id)}).on("dblclick",(m,k)=>{h.current(k.id)});o.current=x,x.append("rect").attr("class",E.nodeCard).attr("width",O).attr("height",G).attr("rx",Y).attr("ry",Y).style("--node-color",m=>X(m)),x.append("rect").attr("class",E.nodeIndicator).attr("width",4).attr("height",G).attr("rx",2).attr("fill",m=>X(m)),x.append("text").attr("class",E.nodeLabel).attr("x",O/2).attr("y",G/2-4).attr("text-anchor","middle").attr("dominant-baseline","central").text(m=>m.label.length>26?m.label.substring(0,24)+"...":m.label),x.append("text").attr("class",E.nodeBadge).attr("x",O/2).attr("y",G-8).attr("text-anchor","middle").text(m=>(m.kind==="reference"?m.sourceType??"ref":m.category??"").toUpperCase());const b=Tt(i).force("link",Ct(d).id(m=>m.id).distance(140)).force("charge",St().strength(-400)).force("center",ot(g.width/2,g.height/2)).force("collide",zt(O/2+16)).on("tick",()=>{N.attr("x1",m=>m.source.x??0).attr("y1",m=>m.source.y??0).attr("x2",m=>m.target.x??0).attr("y2",m=>m.target.y??0),x.attr("transform",m=>`translate(${(m.x??0)-O/2},${(m.y??0)-G/2})`)});u.current=b;const C=setTimeout(()=>{if(r.current&&f.current){const m=f.current,k=H.translate(g.width/2,g.height/2).scale(.8).translate(-g.width/2,-g.height/2);D(r.current).transition().duration(500).call(m.transform,k)}},1200);return()=>{clearTimeout(C),b.stop()}},[t,g]),z.useEffect(()=>{if(!a.current||!o.current||!_.current)return;if(!e){o.current.classed(E.dimmed,!1).classed(E.selected,!1),_.current.classed(E.dimmedLink,!1);return}const s=new Set([e]);_.current.each(i=>{const l=i.source.id,d=i.target.id;(l===e||d===e)&&(s.add(l),s.add(d))}),o.current.classed(E.selected,i=>i.id===e).classed(E.dimmed,i=>!s.has(i.id)),_.current.classed(E.dimmedLink,i=>{const l=i.source.id,d=i.target.id;return!s.has(l)||!s.has(d)})},[e,t]);const y=z.useCallback(()=>{if(!e||!u.current||!r.current||!f.current)return;const s=u.current.nodes().find(i=>i.id===e);if(s&&Number.isFinite(s.x)&&Number.isFinite(s.y)){const i=f.current,l=H.translate(g.width/2,g.height/2).scale(1.2).translate(-(s.x??0),-(s.y??0));D(r.current).transition().duration(500).call(i.transform,l)}},[e,g]);return z.useEffect(()=>{y()},[y]),w.jsx("div",{className:E.graphContainer,"data-testid":"knowledge-graph",children:w.jsxs("svg",{ref:r,width:g.width,height:g.height,className:E.svg,children:[w.jsx("defs",{children:w.jsxs("filter",{id:"glow",children:[w.jsx("feGaussianBlur",{stdDeviation:"3",result:"coloredBlur"}),w.jsxs("feMerge",{children:[w.jsx("feMergeNode",{in:"coloredBlur"}),w.jsx("feMergeNode",{in:"SourceGraphic"})]})]})}),w.jsx("g",{ref:a})]})})}const Yt="_panel_1ml6r_1",Jt="_header_1ml6r_24",Zt="_title_1ml6r_32",qt="_closeButton_1ml6r_42",te="_body_1ml6r_55",ee="_badge_1ml6r_61",ne="_section_1ml6r_72",re="_sectionLabel_1ml6r_76",ie="_content_1ml6r_84",se="_tags_1ml6r_92",ae="_tag_1ml6r_92",oe="_viewLink_1ml6r_107",ce="_edgeList_1ml6r_121",le="_edgeItem_1ml6r_127",ue="_edgeType_1ml6r_136",fe="_edgeNodeLink_1ml6r_142",he="_timestamps_1ml6r_154",j={panel:Yt,header:Jt,title:Zt,closeButton:qt,body:te,badge:ee,section:ne,sectionLabel:re,content:ie,tags:se,tag:ae,viewLink:oe,edgeList:ce,edgeItem:le,edgeType:ue,edgeNodeLink:fe,timestamps:he};function de({detail:t,onClose:e,onSelectNode:n}){const c=Z(),{node:r,edges:a}=t;function u(){if(!(r.kind!=="reference"||!r.sourceId))switch(r.sourceType){case"task":c(tt(r.sourceId));break;case"session":c(q(r.sourceId));break}}return w.jsxs("div",{className:j.panel,"data-testid":"knowledge-detail-panel",children:[w.jsxs("div",{className:j.header,children:[w.jsx("h3",{className:j.title,children:r.label}),w.jsx("button",{className:j.closeButton,onClick:e,"aria-label":"Close",children:"×"})]}),w.jsxs("div",{className:j.body,children:[w.jsx("div",{className:j.badge,children:r.kind==="reference"?`Reference (${r.sourceType})`:r.category}),r.content&&w.jsxs("div",{className:j.section,children:[w.jsx("div",{className:j.sectionLabel,children:"Content"}),w.jsx("p",{className:j.content,children:r.content})]}),r.tags&&r.tags.length>0&&w.jsxs("div",{className:j.section,children:[w.jsx("div",{className:j.sectionLabel,children:"Tags"}),w.jsx("div",{className:j.tags,children:r.tags.map(f=>w.jsx("span",{className:j.tag,children:f},f))})]}),r.kind==="reference"&&r.sourceId&&w.jsx("div",{className:j.section,children:w.jsx("button",{className:j.viewLink,onClick:u,children:"View in Grackle →"})}),a.length>0&&w.jsxs("div",{className:j.section,children:[w.jsxs("div",{className:j.sectionLabel,children:["Edges (",a.length,")"]}),w.jsx("ul",{className:j.edgeList,children:a.map(f=>{const _=f.fromId===r.id?f.toId:f.fromId,o=`${f.fromId}:${f.toId}:${f.type}`;return w.jsxs("li",{className:j.edgeItem,children:[w.jsx("span",{className:j.edgeType,children:f.type}),w.jsxs("button",{className:j.edgeNodeLink,onClick:()=>{n(_)},children:[_.substring(0,8),"..."]})]},o)})})]}),w.jsxs("div",{className:j.timestamps,children:[r.createdAt&&w.jsxs("div",{children:["Created: ",new Date(r.createdAt).toLocaleDateString()]}),r.updatedAt&&w.jsxs("div",{children:["Updated: ",new Date(r.updatedAt).toLocaleDateString()]})]})]})]})}const ge="_layout_n9vg6_1",xe="_graphArea_n9vg6_8",_e="_empty_n9vg6_15",K={layout:ge,graphArea:xe,empty:_e};function pe(){const{knowledge:t}=et(),e=z.useCallback(()=>{t.loadRecent()},[t.loadRecent]);z.useEffect(()=>{e()},[e]);const n=z.useCallback(u=>{t.selectNode(u)},[t]),c=z.useCallback(u=>{t.expandNode(u)},[t]),r=z.useCallback(()=>{t.clearSelection()},[t]),a=[{label:"Knowledge",url:rt}];return w.jsxs("div",{className:K.layout,"data-testid":"knowledge-page",children:[w.jsx(nt,{segments:a}),w.jsxs("div",{className:K.graphArea,children:[t.graphData.nodes.length===0&&!t.loading?w.jsxs("div",{className:K.empty,children:[w.jsx("p",{children:"No knowledge nodes found."}),w.jsx("p",{children:"Create knowledge via MCP tools or let agents discover it during tasks."})]}):w.jsx(Xt,{graphData:t.graphData,selectedNodeId:t.selectedId,onNodeClick:n,onNodeDoubleClick:c}),t.selectedNode&&t.selectedId&&w.jsx(de,{detail:t.selectedNode,onClose:r,onSelectNode:n})]})]})}export{pe as KnowledgePage};
1
+ import{a as z,j as w}from"./markdown-gcy1Jmzi.js";import{u as Z,s as q,t as tt,a as et,B as nt,K as rt}from"./index-bSX7jHMS.js";import{t as it,b as st,z as at,s as D,c as H}from"./dagview-BA5TtMAQ.js";function ot(t,e){var n,c=1;t==null&&(t=0),e==null&&(e=0);function r(){var a,u=n.length,f,_=0,o=0;for(a=0;a<u;++a)f=n[a],_+=f.x,o+=f.y;for(_=(_/u-t)*c,o=(o/u-e)*c,a=0;a<u;++a)f=n[a],f.x-=_,f.y-=o}return r.initialize=function(a){n=a},r.x=function(a){return arguments.length?(t=+a,r):t},r.y=function(a){return arguments.length?(e=+a,r):e},r.strength=function(a){return arguments.length?(c=+a,r):c},r}function ct(t){const e=+this._x.call(null,t),n=+this._y.call(null,t);return J(this.cover(e,n),e,n,t)}function J(t,e,n,c){if(isNaN(e)||isNaN(n))return t;var r,a=t._root,u={data:c},f=t._x0,_=t._y0,o=t._x1,g=t._y1,p,v,h,y,s,i,l,d;if(!a)return t._root=u,t;for(;a.length;)if((s=e>=(p=(f+o)/2))?f=p:o=p,(i=n>=(v=(_+g)/2))?_=v:g=v,r=a,!(a=a[l=i<<1|s]))return r[l]=u,t;if(h=+t._x.call(null,a.data),y=+t._y.call(null,a.data),e===h&&n===y)return u.next=a,r?r[l]=u:t._root=u,t;do r=r?r[l]=new Array(4):t._root=new Array(4),(s=e>=(p=(f+o)/2))?f=p:o=p,(i=n>=(v=(_+g)/2))?_=v:g=v;while((l=i<<1|s)===(d=(y>=v)<<1|h>=p));return r[d]=a,r[l]=u,t}function lt(t){var e,n,c=t.length,r,a,u=new Array(c),f=new Array(c),_=1/0,o=1/0,g=-1/0,p=-1/0;for(n=0;n<c;++n)isNaN(r=+this._x.call(null,e=t[n]))||isNaN(a=+this._y.call(null,e))||(u[n]=r,f[n]=a,r<_&&(_=r),r>g&&(g=r),a<o&&(o=a),a>p&&(p=a));if(_>g||o>p)return this;for(this.cover(_,o).cover(g,p),n=0;n<c;++n)J(this,u[n],f[n],t[n]);return this}function ut(t,e){if(isNaN(t=+t)||isNaN(e=+e))return this;var n=this._x0,c=this._y0,r=this._x1,a=this._y1;if(isNaN(n))r=(n=Math.floor(t))+1,a=(c=Math.floor(e))+1;else{for(var u=r-n||1,f=this._root,_,o;n>t||t>=r||c>e||e>=a;)switch(o=(e<c)<<1|t<n,_=new Array(4),_[o]=f,f=_,u*=2,o){case 0:r=n+u,a=c+u;break;case 1:n=r-u,a=c+u;break;case 2:r=n+u,c=a-u;break;case 3:n=r-u,c=a-u;break}this._root&&this._root.length&&(this._root=f)}return this._x0=n,this._y0=c,this._x1=r,this._y1=a,this}function ft(){var t=[];return this.visit(function(e){if(!e.length)do t.push(e.data);while(e=e.next)}),t}function ht(t){return arguments.length?this.cover(+t[0][0],+t[0][1]).cover(+t[1][0],+t[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]}function L(t,e,n,c,r){this.node=t,this.x0=e,this.y0=n,this.x1=c,this.y1=r}function dt(t,e,n){var c,r=this._x0,a=this._y0,u,f,_,o,g=this._x1,p=this._y1,v=[],h=this._root,y,s;for(h&&v.push(new L(h,r,a,g,p)),n==null?n=1/0:(r=t-n,a=e-n,g=t+n,p=e+n,n*=n);y=v.pop();)if(!(!(h=y.node)||(u=y.x0)>g||(f=y.y0)>p||(_=y.x1)<r||(o=y.y1)<a))if(h.length){var i=(u+_)/2,l=(f+o)/2;v.push(new L(h[3],i,l,_,o),new L(h[2],u,l,i,o),new L(h[1],i,f,_,l),new L(h[0],u,f,i,l)),(s=(e>=l)<<1|t>=i)&&(y=v[v.length-1],v[v.length-1]=v[v.length-1-s],v[v.length-1-s]=y)}else{var d=t-+this._x.call(null,h.data),N=e-+this._y.call(null,h.data),x=d*d+N*N;if(x<n){var b=Math.sqrt(n=x);r=t-b,a=e-b,g=t+b,p=e+b,c=h.data}}return c}function gt(t){if(isNaN(g=+this._x.call(null,t))||isNaN(p=+this._y.call(null,t)))return this;var e,n=this._root,c,r,a,u=this._x0,f=this._y0,_=this._x1,o=this._y1,g,p,v,h,y,s,i,l;if(!n)return this;if(n.length)for(;;){if((y=g>=(v=(u+_)/2))?u=v:_=v,(s=p>=(h=(f+o)/2))?f=h:o=h,e=n,!(n=n[i=s<<1|y]))return this;if(!n.length)break;(e[i+1&3]||e[i+2&3]||e[i+3&3])&&(c=e,l=i)}for(;n.data!==t;)if(r=n,!(n=n.next))return this;return(a=n.next)&&delete n.next,r?(a?r.next=a:delete r.next,this):e?(a?e[i]=a:delete e[i],(n=e[0]||e[1]||e[2]||e[3])&&n===(e[3]||e[2]||e[1]||e[0])&&!n.length&&(c?c[l]=n:this._root=n),this):(this._root=a,this)}function xt(t){for(var e=0,n=t.length;e<n;++e)this.remove(t[e]);return this}function _t(){return this._root}function mt(){var t=0;return this.visit(function(e){if(!e.length)do++t;while(e=e.next)}),t}function vt(t){var e=[],n,c=this._root,r,a,u,f,_;for(c&&e.push(new L(c,this._x0,this._y0,this._x1,this._y1));n=e.pop();)if(!t(c=n.node,a=n.x0,u=n.y0,f=n.x1,_=n.y1)&&c.length){var o=(a+f)/2,g=(u+_)/2;(r=c[3])&&e.push(new L(r,o,g,f,_)),(r=c[2])&&e.push(new L(r,a,g,o,_)),(r=c[1])&&e.push(new L(r,o,u,f,g)),(r=c[0])&&e.push(new L(r,a,u,o,g))}return this}function yt(t){var e=[],n=[],c;for(this._root&&e.push(new L(this._root,this._x0,this._y0,this._x1,this._y1));c=e.pop();){var r=c.node;if(r.length){var a,u=c.x0,f=c.y0,_=c.x1,o=c.y1,g=(u+_)/2,p=(f+o)/2;(a=r[0])&&e.push(new L(a,u,f,g,p)),(a=r[1])&&e.push(new L(a,g,f,_,p)),(a=r[2])&&e.push(new L(a,u,p,g,o)),(a=r[3])&&e.push(new L(a,g,p,_,o))}n.push(c)}for(;c=n.pop();)t(c.node,c.x0,c.y0,c.x1,c.y1);return this}function pt(t){return t[0]}function wt(t){return arguments.length?(this._x=t,this):this._x}function Nt(t){return t[1]}function bt(t){return arguments.length?(this._y=t,this):this._y}function U(t,e,n){var c=new P(e??pt,n??Nt,NaN,NaN,NaN,NaN);return t==null?c:c.addAll(t)}function P(t,e,n,c,r,a){this._x=t,this._y=e,this._x0=n,this._y0=c,this._x1=r,this._y1=a,this._root=void 0}function W(t){for(var e={data:t.data},n=e;t=t.next;)n=n.next={data:t.data};return e}var M=U.prototype=P.prototype;M.copy=function(){var t=new P(this._x,this._y,this._x0,this._y0,this._x1,this._y1),e=this._root,n,c;if(!e)return t;if(!e.length)return t._root=W(e),t;for(n=[{source:e,target:t._root=new Array(4)}];e=n.pop();)for(var r=0;r<4;++r)(c=e.source[r])&&(c.length?n.push({source:c,target:e.target[r]=new Array(4)}):e.target[r]=W(c));return t};M.add=ct;M.addAll=lt;M.cover=ut;M.data=ft;M.extent=ht;M.find=dt;M.remove=gt;M.removeAll=xt;M.root=_t;M.size=mt;M.visit=vt;M.visitAfter=yt;M.x=wt;M.y=bt;function $(t){return function(){return t}}function S(t){return(t()-.5)*1e-6}function kt(t){return t.x+t.vx}function jt(t){return t.y+t.vy}function zt(t){var e,n,c,r=1,a=1;typeof t!="function"&&(t=$(t==null?1:+t));function u(){for(var o,g=e.length,p,v,h,y,s,i,l=0;l<a;++l)for(p=U(e,kt,jt).visitAfter(f),o=0;o<g;++o)v=e[o],s=n[v.index],i=s*s,h=v.x+v.vx,y=v.y+v.vy,p.visit(d);function d(N,x,b,C,m){var k=N.data,I=N.r,A=s+I;if(k){if(k.index>v.index){var B=h-k.x-k.vx,T=y-k.y-k.vy,R=B*B+T*T;R<A*A&&(B===0&&(B=S(c),R+=B*B),T===0&&(T=S(c),R+=T*T),R=(A-(R=Math.sqrt(R)))/R*r,v.vx+=(B*=R)*(A=(I*=I)/(i+I)),v.vy+=(T*=R)*A,k.vx-=B*(A=1-A),k.vy-=T*A)}return}return x>h+A||C<h-A||b>y+A||m<y-A}}function f(o){if(o.data)return o.r=n[o.data.index];for(var g=o.r=0;g<4;++g)o[g]&&o[g].r>o.r&&(o.r=o[g].r)}function _(){if(e){var o,g=e.length,p;for(n=new Array(g),o=0;o<g;++o)p=e[o],n[p.index]=+t(p,o,e)}}return u.initialize=function(o,g){e=o,c=g,_()},u.iterations=function(o){return arguments.length?(a=+o,u):a},u.strength=function(o){return arguments.length?(r=+o,u):r},u.radius=function(o){return arguments.length?(t=typeof o=="function"?o:$(+o),_(),u):t},u}function At(t){return t.index}function Q(t,e){var n=t.get(e);if(!n)throw new Error("node not found: "+e);return n}function Ct(t){var e=At,n=p,c,r=$(30),a,u,f,_,o,g=1;t==null&&(t=[]);function p(i){return 1/Math.min(f[i.source.index],f[i.target.index])}function v(i){for(var l=0,d=t.length;l<g;++l)for(var N=0,x,b,C,m,k,I,A;N<d;++N)x=t[N],b=x.source,C=x.target,m=C.x+C.vx-b.x-b.vx||S(o),k=C.y+C.vy-b.y-b.vy||S(o),I=Math.sqrt(m*m+k*k),I=(I-a[N])/I*i*c[N],m*=I,k*=I,C.vx-=m*(A=_[N]),C.vy-=k*A,b.vx+=m*(A=1-A),b.vy+=k*A}function h(){if(u){var i,l=u.length,d=t.length,N=new Map(u.map((b,C)=>[e(b,C,u),b])),x;for(i=0,f=new Array(l);i<d;++i)x=t[i],x.index=i,typeof x.source!="object"&&(x.source=Q(N,x.source)),typeof x.target!="object"&&(x.target=Q(N,x.target)),f[x.source.index]=(f[x.source.index]||0)+1,f[x.target.index]=(f[x.target.index]||0)+1;for(i=0,_=new Array(d);i<d;++i)x=t[i],_[i]=f[x.source.index]/(f[x.source.index]+f[x.target.index]);c=new Array(d),y(),a=new Array(d),s()}}function y(){if(u)for(var i=0,l=t.length;i<l;++i)c[i]=+n(t[i],i,t)}function s(){if(u)for(var i=0,l=t.length;i<l;++i)a[i]=+r(t[i],i,t)}return v.initialize=function(i,l){u=i,o=l,h()},v.links=function(i){return arguments.length?(t=i,h(),v):t},v.id=function(i){return arguments.length?(e=i,v):e},v.iterations=function(i){return arguments.length?(g=+i,v):g},v.strength=function(i){return arguments.length?(n=typeof i=="function"?i:$(+i),y(),v):n},v.distance=function(i){return arguments.length?(r=typeof i=="function"?i:$(+i),s(),v):r},v}const Lt=1664525,Mt=1013904223,V=4294967296;function Et(){let t=1;return()=>(t=(Lt*t+Mt)%V)/V}function It(t){return t.x}function Rt(t){return t.y}var Dt=10,Bt=Math.PI*(3-Math.sqrt(5));function Tt(t){var e,n=1,c=.001,r=1-Math.pow(c,1/300),a=0,u=.6,f=new Map,_=it(p),o=st("tick","end"),g=Et();t==null&&(t=[]);function p(){v(),o.call("tick",e),n<c&&(_.stop(),o.call("end",e))}function v(s){var i,l=t.length,d;s===void 0&&(s=1);for(var N=0;N<s;++N)for(n+=(a-n)*r,f.forEach(function(x){x(n)}),i=0;i<l;++i)d=t[i],d.fx==null?d.x+=d.vx*=u:(d.x=d.fx,d.vx=0),d.fy==null?d.y+=d.vy*=u:(d.y=d.fy,d.vy=0);return e}function h(){for(var s=0,i=t.length,l;s<i;++s){if(l=t[s],l.index=s,l.fx!=null&&(l.x=l.fx),l.fy!=null&&(l.y=l.fy),isNaN(l.x)||isNaN(l.y)){var d=Dt*Math.sqrt(.5+s),N=s*Bt;l.x=d*Math.cos(N),l.y=d*Math.sin(N)}(isNaN(l.vx)||isNaN(l.vy))&&(l.vx=l.vy=0)}}function y(s){return s.initialize&&s.initialize(t,g),s}return h(),e={tick:v,restart:function(){return _.restart(p),e},stop:function(){return _.stop(),e},nodes:function(s){return arguments.length?(t=s,h(),f.forEach(y),e):t},alpha:function(s){return arguments.length?(n=+s,e):n},alphaMin:function(s){return arguments.length?(c=+s,e):c},alphaDecay:function(s){return arguments.length?(r=+s,e):+r},alphaTarget:function(s){return arguments.length?(a=+s,e):a},velocityDecay:function(s){return arguments.length?(u=1-s,e):1-u},randomSource:function(s){return arguments.length?(g=s,f.forEach(y),e):g},force:function(s,i){return arguments.length>1?(i==null?f.delete(s):f.set(s,y(i)),e):f.get(s)},find:function(s,i,l){var d=0,N=t.length,x,b,C,m,k;for(l==null?l=1/0:l*=l,d=0;d<N;++d)m=t[d],x=s-m.x,b=i-m.y,C=x*x+b*b,C<l&&(k=m,l=C);return k},on:function(s,i){return arguments.length>1?(o.on(s,i),e):o.on(s)}}}function St(){var t,e,n,c,r=$(-30),a,u=1,f=1/0,_=.81;function o(h){var y,s=t.length,i=U(t,It,Rt).visitAfter(p);for(c=h,y=0;y<s;++y)e=t[y],i.visit(v)}function g(){if(t){var h,y=t.length,s;for(a=new Array(y),h=0;h<y;++h)s=t[h],a[s.index]=+r(s,h,t)}}function p(h){var y=0,s,i,l=0,d,N,x;if(h.length){for(d=N=x=0;x<4;++x)(s=h[x])&&(i=Math.abs(s.value))&&(y+=s.value,l+=i,d+=i*s.x,N+=i*s.y);h.x=d/l,h.y=N/l}else{s=h,s.x=s.data.x,s.y=s.data.y;do y+=a[s.data.index];while(s=s.next)}h.value=y}function v(h,y,s,i){if(!h.value)return!0;var l=h.x-e.x,d=h.y-e.y,N=i-y,x=l*l+d*d;if(N*N/_<x)return x<f&&(l===0&&(l=S(n),x+=l*l),d===0&&(d=S(n),x+=d*d),x<u&&(x=Math.sqrt(u*x)),e.vx+=l*h.value*c/x,e.vy+=d*h.value*c/x),!0;if(h.length||x>=f)return;(h.data!==e||h.next)&&(l===0&&(l=S(n),x+=l*l),d===0&&(d=S(n),x+=d*d),x<u&&(x=Math.sqrt(u*x)));do h.data!==e&&(N=a[h.data.index]*c/x,e.vx+=l*N,e.vy+=d*N);while(h=h.next)}return o.initialize=function(h,y){t=h,n=y,g()},o.strength=function(h){return arguments.length?(r=typeof h=="function"?h:$(+h),g(),o):r},o.distanceMin=function(h){return arguments.length?(u=h*h,o):Math.sqrt(u)},o.distanceMax=function(h){return arguments.length?(f=h*h,o):Math.sqrt(f)},o.theta=function(h){return arguments.length?(_=h*h,o):Math.sqrt(_)},o}const $t="_graphContainer_zxmzw_1",Ot="_svg_zxmzw_10",Gt="_link_zxmzw_18",Ft="_node_zxmzw_30",Kt="_nodeCard_zxmzw_34",Ut="_nodeLabel_zxmzw_40",Pt="_selected_zxmzw_44",Ht="_dimmed_zxmzw_51",Wt="_dimmedLink_zxmzw_56",Qt="_nodeIndicator_zxmzw_68",Vt="_nodeBadge_zxmzw_82",E={graphContainer:$t,svg:Ot,link:Gt,node:Ft,nodeCard:Kt,nodeLabel:Ut,selected:Pt,dimmed:Ht,dimmedLink:Wt,nodeIndicator:Qt,nodeBadge:Vt},F={reference:"#4A9EFF",decision:"#22C55E",insight:"#EAB308",concept:"#A855F7",snippet:"#6B7280"};function X(t){return t.kind==="reference"?F.reference:F[t.category??"insight"]??F.insight}const O=200,G=52,Y=12;function Xt({graphData:t,selectedNodeId:e,onNodeClick:n,onNodeDoubleClick:c}){const r=z.useRef(null),a=z.useRef(null),u=z.useRef(void 0),f=z.useRef(void 0),_=z.useRef(void 0),o=z.useRef(void 0),[g,p]=z.useState({width:800,height:600});z.useEffect(()=>{var l;const s=((l=r.current)==null?void 0:l.parentElement)??null;if(!s)return;const i=new ResizeObserver(d=>{for(const N of d)p({width:N.contentRect.width,height:N.contentRect.height})});return i.observe(s),p({width:s.clientWidth,height:s.clientHeight}),()=>{i.disconnect()}},[]),z.useEffect(()=>{if(!r.current||!a.current)return;const s=r.current,i=a.current,l=at().scaleExtent([.1,4]).filter(d=>d.type!=="dblclick").on("zoom",d=>{D(i).attr("transform",String(d.transform))});return D(s).call(l),f.current=l,()=>{D(s).on(".zoom",null)}},[]);const v=z.useRef(n);v.current=n;const h=z.useRef(c);h.current=c,z.useEffect(()=>{if(!a.current)return;const s=a.current;if(u.current&&(u.current.stop(),u.current=void 0),t.nodes.length===0){D(s).selectAll("*").remove();return}const i=t.nodes.map(m=>({...m})),l=new Map(i.map(m=>[m.id,m])),d=t.links.filter(m=>l.has(m.source)&&l.has(m.target)).map(m=>({source:m.source,target:m.target,type:m.type}));D(s).selectAll("*").remove();const N=D(s).selectAll("line").data(d).enter().append("line").attr("class",E.link);N.append("title").text(m=>m.type),_.current=N;const x=D(s).selectAll("g.kg-node").data(i).enter().append("g").attr("class",`kg-node ${E.node}`).style("cursor","pointer").on("click",(m,k)=>{v.current(k.id)}).on("dblclick",(m,k)=>{h.current(k.id)});o.current=x,x.append("rect").attr("class",E.nodeCard).attr("width",O).attr("height",G).attr("rx",Y).attr("ry",Y).style("--node-color",m=>X(m)),x.append("rect").attr("class",E.nodeIndicator).attr("width",4).attr("height",G).attr("rx",2).attr("fill",m=>X(m)),x.append("text").attr("class",E.nodeLabel).attr("x",O/2).attr("y",G/2-4).attr("text-anchor","middle").attr("dominant-baseline","central").text(m=>m.label.length>26?m.label.substring(0,24)+"...":m.label),x.append("text").attr("class",E.nodeBadge).attr("x",O/2).attr("y",G-8).attr("text-anchor","middle").text(m=>(m.kind==="reference"?m.sourceType??"ref":m.category??"").toUpperCase());const b=Tt(i).force("link",Ct(d).id(m=>m.id).distance(140)).force("charge",St().strength(-400)).force("center",ot(g.width/2,g.height/2)).force("collide",zt(O/2+16)).on("tick",()=>{N.attr("x1",m=>m.source.x??0).attr("y1",m=>m.source.y??0).attr("x2",m=>m.target.x??0).attr("y2",m=>m.target.y??0),x.attr("transform",m=>`translate(${(m.x??0)-O/2},${(m.y??0)-G/2})`)});u.current=b;const C=setTimeout(()=>{if(r.current&&f.current){const m=f.current,k=H.translate(g.width/2,g.height/2).scale(.8).translate(-g.width/2,-g.height/2);D(r.current).transition().duration(500).call(m.transform,k)}},1200);return()=>{clearTimeout(C),b.stop()}},[t,g]),z.useEffect(()=>{if(!a.current||!o.current||!_.current)return;if(!e){o.current.classed(E.dimmed,!1).classed(E.selected,!1),_.current.classed(E.dimmedLink,!1);return}const s=new Set([e]);_.current.each(i=>{const l=i.source.id,d=i.target.id;(l===e||d===e)&&(s.add(l),s.add(d))}),o.current.classed(E.selected,i=>i.id===e).classed(E.dimmed,i=>!s.has(i.id)),_.current.classed(E.dimmedLink,i=>{const l=i.source.id,d=i.target.id;return!s.has(l)||!s.has(d)})},[e,t]);const y=z.useCallback(()=>{if(!e||!u.current||!r.current||!f.current)return;const s=u.current.nodes().find(i=>i.id===e);if(s&&Number.isFinite(s.x)&&Number.isFinite(s.y)){const i=f.current,l=H.translate(g.width/2,g.height/2).scale(1.2).translate(-(s.x??0),-(s.y??0));D(r.current).transition().duration(500).call(i.transform,l)}},[e,g]);return z.useEffect(()=>{y()},[y]),w.jsx("div",{className:E.graphContainer,"data-testid":"knowledge-graph",children:w.jsxs("svg",{ref:r,width:g.width,height:g.height,className:E.svg,children:[w.jsx("defs",{children:w.jsxs("filter",{id:"glow",children:[w.jsx("feGaussianBlur",{stdDeviation:"3",result:"coloredBlur"}),w.jsxs("feMerge",{children:[w.jsx("feMergeNode",{in:"coloredBlur"}),w.jsx("feMergeNode",{in:"SourceGraphic"})]})]})}),w.jsx("g",{ref:a})]})})}const Yt="_panel_1ml6r_1",Jt="_header_1ml6r_24",Zt="_title_1ml6r_32",qt="_closeButton_1ml6r_42",te="_body_1ml6r_55",ee="_badge_1ml6r_61",ne="_section_1ml6r_72",re="_sectionLabel_1ml6r_76",ie="_content_1ml6r_84",se="_tags_1ml6r_92",ae="_tag_1ml6r_92",oe="_viewLink_1ml6r_107",ce="_edgeList_1ml6r_121",le="_edgeItem_1ml6r_127",ue="_edgeType_1ml6r_136",fe="_edgeNodeLink_1ml6r_142",he="_timestamps_1ml6r_154",j={panel:Yt,header:Jt,title:Zt,closeButton:qt,body:te,badge:ee,section:ne,sectionLabel:re,content:ie,tags:se,tag:ae,viewLink:oe,edgeList:ce,edgeItem:le,edgeType:ue,edgeNodeLink:fe,timestamps:he};function de({detail:t,onClose:e,onSelectNode:n}){const c=Z(),{node:r,edges:a}=t;function u(){if(!(r.kind!=="reference"||!r.sourceId))switch(r.sourceType){case"task":c(tt(r.sourceId));break;case"session":c(q(r.sourceId));break}}return w.jsxs("div",{className:j.panel,"data-testid":"knowledge-detail-panel",children:[w.jsxs("div",{className:j.header,children:[w.jsx("h3",{className:j.title,children:r.label}),w.jsx("button",{className:j.closeButton,onClick:e,"aria-label":"Close",children:"×"})]}),w.jsxs("div",{className:j.body,children:[w.jsx("div",{className:j.badge,children:r.kind==="reference"?`Reference (${r.sourceType})`:r.category}),r.content&&w.jsxs("div",{className:j.section,children:[w.jsx("div",{className:j.sectionLabel,children:"Content"}),w.jsx("p",{className:j.content,children:r.content})]}),r.tags&&r.tags.length>0&&w.jsxs("div",{className:j.section,children:[w.jsx("div",{className:j.sectionLabel,children:"Tags"}),w.jsx("div",{className:j.tags,children:r.tags.map(f=>w.jsx("span",{className:j.tag,children:f},f))})]}),r.kind==="reference"&&r.sourceId&&w.jsx("div",{className:j.section,children:w.jsx("button",{className:j.viewLink,onClick:u,children:"View in Grackle →"})}),a.length>0&&w.jsxs("div",{className:j.section,children:[w.jsxs("div",{className:j.sectionLabel,children:["Edges (",a.length,")"]}),w.jsx("ul",{className:j.edgeList,children:a.map(f=>{const _=f.fromId===r.id?f.toId:f.fromId,o=`${f.fromId}:${f.toId}:${f.type}`;return w.jsxs("li",{className:j.edgeItem,children:[w.jsx("span",{className:j.edgeType,children:f.type}),w.jsxs("button",{className:j.edgeNodeLink,onClick:()=>{n(_)},children:[_.substring(0,8),"..."]})]},o)})})]}),w.jsxs("div",{className:j.timestamps,children:[r.createdAt&&w.jsxs("div",{children:["Created: ",new Date(r.createdAt).toLocaleDateString()]}),r.updatedAt&&w.jsxs("div",{children:["Updated: ",new Date(r.updatedAt).toLocaleDateString()]})]})]})]})}const ge="_layout_n9vg6_1",xe="_graphArea_n9vg6_8",_e="_empty_n9vg6_15",K={layout:ge,graphArea:xe,empty:_e};function pe(){const{knowledge:t}=et(),e=z.useCallback(()=>{t.loadRecent()},[t.loadRecent]);z.useEffect(()=>{e()},[e]);const n=z.useCallback(u=>{t.selectNode(u)},[t]),c=z.useCallback(u=>{t.expandNode(u)},[t]),r=z.useCallback(()=>{t.clearSelection()},[t]),a=[{label:"Knowledge",url:rt}];return w.jsxs("div",{className:K.layout,"data-testid":"knowledge-page",children:[w.jsx(nt,{segments:a}),w.jsxs("div",{className:K.graphArea,children:[t.graphData.nodes.length===0&&!t.loading?w.jsxs("div",{className:K.empty,children:[w.jsx("p",{children:"No knowledge nodes found."}),w.jsx("p",{children:"Create knowledge via MCP tools or let agents discover it during tasks."})]}):w.jsx(Xt,{graphData:t.graphData,selectedNodeId:t.selectedId,onNodeClick:n,onNodeDoubleClick:c}),t.selectedNode&&t.selectedId&&w.jsx(de,{detail:t.selectedNode,onClose:r,onSelectNode:n})]})]})}export{pe as KnowledgePage};