@mcpc-tech/unplugin-dev-inspector-mcp 0.1.30 → 0.1.32
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/client/dist/{PromptParamsDialog-D0TaQM5I.js → PromptParamsDialog-B0YpiWEk.js} +113 -87
- package/client/dist/inspector.js +19 -20
- package/client/dist/sidebar.js +1 -1
- package/dist/config-updater.cjs +160 -14
- package/dist/config-updater.js +160 -14
- package/dist/index.cjs +5 -2
- package/dist/index.d.cts +16 -9
- package/dist/index.d.ts +16 -9
- package/dist/index.js +5 -2
- package/dist/react/react.js +382 -4
- package/package.json +1 -1
package/client/dist/sidebar.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./chunk-BbOf1w_A.js";import{$ as t,A as n,G as r,I as i,J as a,K as o,M as s,N as c,P as l,T as u,U as d,_ as f,a as p,at as m,b as h,c as g,d as _,et as v,f as ee,g as y,i as b,it as x,k as S,n as C,nt as w,o as T,ot as E,r as D,t as te,tt as ne,u as O,v as re,w as ie,y as ae}from"./PromptParamsDialog-D0TaQM5I.js";import"./katex-C3zESuch.js";import"./marked.esm-DUB0uiru.js";const oe=t(`panel-left-close`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}],[`path`,{d:`m16 15-3-3 3-3`,key:`14y99z`}]]),se=t(`panel-left-open`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}],[`path`,{d:`m14 9 3 3-3 3`,key:`8010ee`}]]),ce=t(`send`,[[`path`,{d:`M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z`,key:`1ffxy3`}],[`path`,{d:`m21.854 2.147-10.94 10.939`,key:`12cjpa`}]]),le=t(`wifi-off`,[[`path`,{d:`M12 20h.01`,key:`zekei9`}],[`path`,{d:`M8.5 16.429a5 5 0 0 1 7 0`,key:`1bycff`}],[`path`,{d:`M5 12.859a10 10 0 0 1 5.17-2.69`,key:`1dl1wf`}],[`path`,{d:`M19 12.859a10 10 0 0 0-2.007-1.523`,key:`4k23kn`}],[`path`,{d:`M2 8.82a15 15 0 0 1 4.177-2.643`,key:`1grhjp`}],[`path`,{d:`M22 8.82a15 15 0 0 0-11.288-3.764`,key:`z3jwby`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]),ue=t(`wifi`,[[`path`,{d:`M12 20h.01`,key:`zekei9`}],[`path`,{d:`M2 8.82a15 15 0 0 1 20 0`,key:`dnpr2z`}],[`path`,{d:`M5 12.859a10 10 0 0 1 14 0`,key:`1x1e6c`}],[`path`,{d:`M8.5 16.429a5 5 0 0 1 7 0`,key:`1bycff`}]]);var k=e(T()),A=e(E(),1),j=v(),de=A.createContext(void 0);function M(e){let t=A.useContext(de);return e||t||`ltr`}function N(e,[t,n]){return Math.min(n,Math.max(t,e))}function fe(e,t){return A.useReducer((e,n)=>t[e][n]??e,e)}var P=`ScrollArea`,[F,pe]=c(P),[I,L]=F(P),R=A.forwardRef((e,t)=>{let{__scopeScrollArea:r,type:a=`hover`,dir:o,scrollHideDelay:s=600,...c}=e,[l,u]=A.useState(null),[d,f]=A.useState(null),[p,m]=A.useState(null),[h,g]=A.useState(null),[_,v]=A.useState(null),[ee,y]=A.useState(0),[b,x]=A.useState(0),[S,C]=A.useState(!1),[w,T]=A.useState(!1),E=i(t,e=>u(e)),D=M(o);return(0,j.jsx)(I,{scope:r,type:a,dir:D,scrollHideDelay:s,scrollArea:l,viewport:d,onViewportChange:f,content:p,onContentChange:m,scrollbarX:h,onScrollbarXChange:g,scrollbarXEnabled:S,onScrollbarXEnabledChange:C,scrollbarY:_,onScrollbarYChange:v,scrollbarYEnabled:w,onScrollbarYEnabledChange:T,onCornerWidthChange:y,onCornerHeightChange:x,children:(0,j.jsx)(n.div,{dir:D,...c,ref:E,style:{position:`relative`,"--radix-scroll-area-corner-width":ee+`px`,"--radix-scroll-area-corner-height":b+`px`,...e.style}})})});R.displayName=P;var z=`ScrollAreaViewport`,B=A.forwardRef((e,t)=>{let{__scopeScrollArea:r,children:a,nonce:o,...s}=e,c=L(z,r),l=i(t,A.useRef(null),c.onViewportChange);return(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(`style`,{dangerouslySetInnerHTML:{__html:`[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}`},nonce:o}),(0,j.jsx)(n.div,{"data-radix-scroll-area-viewport":``,...s,ref:l,style:{overflowX:c.scrollbarXEnabled?`scroll`:`hidden`,overflowY:c.scrollbarYEnabled?`scroll`:`hidden`,...e.style},children:(0,j.jsx)(`div`,{ref:c.onContentChange,style:{minWidth:`100%`,display:`table`},children:a})})]})});B.displayName=z;var V=`ScrollAreaScrollbar`,H=A.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=L(V,e.__scopeScrollArea),{onScrollbarXEnabledChange:a,onScrollbarYEnabledChange:o}=i,s=e.orientation===`horizontal`;return A.useEffect(()=>(s?a(!0):o(!0),()=>{s?a(!1):o(!1)}),[s,a,o]),i.type===`hover`?(0,j.jsx)(U,{...r,ref:t,forceMount:n}):i.type===`scroll`?(0,j.jsx)(W,{...r,ref:t,forceMount:n}):i.type===`auto`?(0,j.jsx)(G,{...r,ref:t,forceMount:n}):i.type===`always`?(0,j.jsx)(K,{...r,ref:t}):null});H.displayName=V;var U=A.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=L(V,e.__scopeScrollArea),[a,o]=A.useState(!1);return A.useEffect(()=>{let e=i.scrollArea,t=0;if(e){let n=()=>{window.clearTimeout(t),o(!0)},r=()=>{t=window.setTimeout(()=>o(!1),i.scrollHideDelay)};return e.addEventListener(`pointerenter`,n),e.addEventListener(`pointerleave`,r),()=>{window.clearTimeout(t),e.removeEventListener(`pointerenter`,n),e.removeEventListener(`pointerleave`,r)}}},[i.scrollArea,i.scrollHideDelay]),(0,j.jsx)(S,{present:n||a,children:(0,j.jsx)(G,{"data-state":a?`visible`:`hidden`,...r,ref:t})})}),W=A.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=L(V,e.__scopeScrollArea),a=e.orientation===`horizontal`,o=Q(()=>c(`SCROLL_END`),100),[s,c]=fe(`hidden`,{hidden:{SCROLL:`scrolling`},scrolling:{SCROLL_END:`idle`,POINTER_ENTER:`interacting`},interacting:{SCROLL:`interacting`,POINTER_LEAVE:`idle`},idle:{HIDE:`hidden`,SCROLL:`scrolling`,POINTER_ENTER:`interacting`}});return A.useEffect(()=>{if(s===`idle`){let e=window.setTimeout(()=>c(`HIDE`),i.scrollHideDelay);return()=>window.clearTimeout(e)}},[s,i.scrollHideDelay,c]),A.useEffect(()=>{let e=i.viewport,t=a?`scrollLeft`:`scrollTop`;if(e){let n=e[t],r=()=>{let r=e[t];n!==r&&(c(`SCROLL`),o()),n=r};return e.addEventListener(`scroll`,r),()=>e.removeEventListener(`scroll`,r)}},[i.viewport,a,c,o]),(0,j.jsx)(S,{present:n||s!==`hidden`,children:(0,j.jsx)(K,{"data-state":s===`hidden`?`hidden`:`visible`,...r,ref:t,onPointerEnter:l(e.onPointerEnter,()=>c(`POINTER_ENTER`)),onPointerLeave:l(e.onPointerLeave,()=>c(`POINTER_LEAVE`))})})}),G=A.forwardRef((e,t)=>{let n=L(V,e.__scopeScrollArea),{forceMount:r,...i}=e,[a,o]=A.useState(!1),s=e.orientation===`horizontal`,c=Q(()=>{if(n.viewport){let e=n.viewport.offsetWidth<n.viewport.scrollWidth,t=n.viewport.offsetHeight<n.viewport.scrollHeight;o(s?e:t)}},10);return $(n.viewport,c),$(n.content,c),(0,j.jsx)(S,{present:r||a,children:(0,j.jsx)(K,{"data-state":a?`visible`:`hidden`,...i,ref:t})})}),K=A.forwardRef((e,t)=>{let{orientation:n=`vertical`,...r}=e,i=L(V,e.__scopeScrollArea),a=A.useRef(null),o=A.useRef(0),[s,c]=A.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),l=Se(s.viewport,s.content),u={...r,sizes:s,onSizesChange:c,hasThumb:l>0&&l<1,onThumbChange:e=>a.current=e,onThumbPointerUp:()=>o.current=0,onThumbPointerDown:e=>o.current=e};function d(e,t){return Ce(e,o.current,s,t)}return n===`horizontal`?(0,j.jsx)(q,{...u,ref:t,onThumbPositionChange:()=>{if(i.viewport&&a.current){let e=i.viewport.scrollLeft,t=we(e,s,i.dir);a.current.style.transform=`translate3d(${t}px, 0, 0)`}},onWheelScroll:e=>{i.viewport&&(i.viewport.scrollLeft=e)},onDragScroll:e=>{i.viewport&&(i.viewport.scrollLeft=d(e,i.dir))}}):n===`vertical`?(0,j.jsx)(me,{...u,ref:t,onThumbPositionChange:()=>{if(i.viewport&&a.current){let e=i.viewport.scrollTop,t=we(e,s);a.current.style.transform=`translate3d(0, ${t}px, 0)`}},onWheelScroll:e=>{i.viewport&&(i.viewport.scrollTop=e)},onDragScroll:e=>{i.viewport&&(i.viewport.scrollTop=d(e))}}):null}),q=A.forwardRef((e,t)=>{let{sizes:n,onSizesChange:r,...a}=e,o=L(V,e.__scopeScrollArea),[s,c]=A.useState(),l=A.useRef(null),u=i(t,l,o.onScrollbarXChange);return A.useEffect(()=>{l.current&&c(getComputedStyle(l.current))},[l]),(0,j.jsx)(J,{"data-orientation":`horizontal`,...a,ref:u,sizes:n,style:{bottom:0,left:o.dir===`rtl`?`var(--radix-scroll-area-corner-width)`:0,right:o.dir===`ltr`?`var(--radix-scroll-area-corner-width)`:0,"--radix-scroll-area-thumb-width":Z(n)+`px`,...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.x),onDragScroll:t=>e.onDragScroll(t.x),onWheelScroll:(t,n)=>{if(o.viewport){let r=o.viewport.scrollLeft+t.deltaX;e.onWheelScroll(r),Ee(r,n)&&t.preventDefault()}},onResize:()=>{l.current&&o.viewport&&s&&r({content:o.viewport.scrollWidth,viewport:o.viewport.offsetWidth,scrollbar:{size:l.current.clientWidth,paddingStart:X(s.paddingLeft),paddingEnd:X(s.paddingRight)}})}})}),me=A.forwardRef((e,t)=>{let{sizes:n,onSizesChange:r,...a}=e,o=L(V,e.__scopeScrollArea),[s,c]=A.useState(),l=A.useRef(null),u=i(t,l,o.onScrollbarYChange);return A.useEffect(()=>{l.current&&c(getComputedStyle(l.current))},[l]),(0,j.jsx)(J,{"data-orientation":`vertical`,...a,ref:u,sizes:n,style:{top:0,right:o.dir===`ltr`?0:void 0,left:o.dir===`rtl`?0:void 0,bottom:`var(--radix-scroll-area-corner-height)`,"--radix-scroll-area-thumb-height":Z(n)+`px`,...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.y),onDragScroll:t=>e.onDragScroll(t.y),onWheelScroll:(t,n)=>{if(o.viewport){let r=o.viewport.scrollTop+t.deltaY;e.onWheelScroll(r),Ee(r,n)&&t.preventDefault()}},onResize:()=>{l.current&&o.viewport&&s&&r({content:o.viewport.scrollHeight,viewport:o.viewport.offsetHeight,scrollbar:{size:l.current.clientHeight,paddingStart:X(s.paddingTop),paddingEnd:X(s.paddingBottom)}})}})}),[he,ge]=F(V),J=A.forwardRef((e,t)=>{let{__scopeScrollArea:r,sizes:a,hasThumb:o,onThumbChange:s,onThumbPointerUp:c,onThumbPointerDown:u,onThumbPositionChange:d,onDragScroll:f,onWheelScroll:p,onResize:m,...g}=e,_=L(V,r),[v,ee]=A.useState(null),y=i(t,e=>ee(e)),b=A.useRef(null),x=A.useRef(``),S=_.viewport,C=a.content-a.viewport,w=h(p),T=h(d),E=Q(m,10);function D(e){b.current&&f({x:e.clientX-b.current.left,y:e.clientY-b.current.top})}return A.useEffect(()=>{let e=e=>{let t=e.target;v?.contains(t)&&w(e,C)};return document.addEventListener(`wheel`,e,{passive:!1}),()=>document.removeEventListener(`wheel`,e,{passive:!1})},[S,v,C,w]),A.useEffect(T,[a,T]),$(v,E),$(_.content,E),(0,j.jsx)(he,{scope:r,scrollbar:v,hasThumb:o,onThumbChange:h(s),onThumbPointerUp:h(c),onThumbPositionChange:T,onThumbPointerDown:h(u),children:(0,j.jsx)(n.div,{...g,ref:y,style:{position:`absolute`,...g.style},onPointerDown:l(e.onPointerDown,e=>{e.button===0&&(e.target.setPointerCapture(e.pointerId),b.current=v.getBoundingClientRect(),x.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect=`none`,_.viewport&&(_.viewport.style.scrollBehavior=`auto`),D(e))}),onPointerMove:l(e.onPointerMove,D),onPointerUp:l(e.onPointerUp,e=>{let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),document.body.style.webkitUserSelect=x.current,_.viewport&&(_.viewport.style.scrollBehavior=``),b.current=null})})})}),Y=`ScrollAreaThumb`,_e=A.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=ge(Y,e.__scopeScrollArea);return(0,j.jsx)(S,{present:n||i.hasThumb,children:(0,j.jsx)(ve,{ref:t,...r})})}),ve=A.forwardRef((e,t)=>{let{__scopeScrollArea:r,style:a,...o}=e,s=L(Y,r),c=ge(Y,r),{onThumbPositionChange:u}=c,d=i(t,e=>c.onThumbChange(e)),f=A.useRef(void 0),p=Q(()=>{f.current&&=(f.current(),void 0)},100);return A.useEffect(()=>{let e=s.viewport;if(e){let t=()=>{p(),f.current||(f.current=De(e,u),u())};return u(),e.addEventListener(`scroll`,t),()=>e.removeEventListener(`scroll`,t)}},[s.viewport,p,u]),(0,j.jsx)(n.div,{"data-state":c.hasThumb?`visible`:`hidden`,...o,ref:d,style:{width:`var(--radix-scroll-area-thumb-width)`,height:`var(--radix-scroll-area-thumb-height)`,...a},onPointerDownCapture:l(e.onPointerDownCapture,e=>{let t=e.target.getBoundingClientRect(),n=e.clientX-t.left,r=e.clientY-t.top;c.onThumbPointerDown({x:n,y:r})}),onPointerUp:l(e.onPointerUp,c.onThumbPointerUp)})});_e.displayName=Y;var ye=`ScrollAreaCorner`,be=A.forwardRef((e,t)=>{let n=L(ye,e.__scopeScrollArea),r=!!(n.scrollbarX&&n.scrollbarY);return n.type!==`scroll`&&r?(0,j.jsx)(xe,{...e,ref:t}):null});be.displayName=ye;var xe=A.forwardRef((e,t)=>{let{__scopeScrollArea:r,...i}=e,a=L(ye,r),[o,s]=A.useState(0),[c,l]=A.useState(0),u=!!(o&&c);return $(a.scrollbarX,()=>{let e=a.scrollbarX?.offsetHeight||0;a.onCornerHeightChange(e),l(e)}),$(a.scrollbarY,()=>{let e=a.scrollbarY?.offsetWidth||0;a.onCornerWidthChange(e),s(e)}),u?(0,j.jsx)(n.div,{...i,ref:t,style:{width:o,height:c,position:`absolute`,right:a.dir===`ltr`?0:void 0,left:a.dir===`rtl`?0:void 0,bottom:0,...e.style}}):null});function X(e){return e?parseInt(e,10):0}function Se(e,t){let n=e/t;return isNaN(n)?0:n}function Z(e){let t=Se(e.viewport,e.content),n=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,r=(e.scrollbar.size-n)*t;return Math.max(r,18)}function Ce(e,t,n,r=`ltr`){let i=Z(n),a=i/2,o=t||a,s=i-o,c=n.scrollbar.paddingStart+o,l=n.scrollbar.size-n.scrollbar.paddingEnd-s,u=n.content-n.viewport,d=r===`ltr`?[0,u]:[u*-1,0];return Te([c,l],d)(e)}function we(e,t,n=`ltr`){let r=Z(t),i=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,a=t.scrollbar.size-i,o=t.content-t.viewport,s=a-r,c=N(e,n===`ltr`?[0,o]:[o*-1,0]);return Te([0,o],[0,s])(c)}function Te(e,t){return n=>{if(e[0]===e[1]||t[0]===t[1])return t[0];let r=(t[1]-t[0])/(e[1]-e[0]);return t[0]+r*(n-e[0])}}function Ee(e,t){return e>0&&e<t}var De=(e,t=()=>{})=>{let n={left:e.scrollLeft,top:e.scrollTop},r=0;return(function i(){let a={left:e.scrollLeft,top:e.scrollTop},o=n.left!==a.left,s=n.top!==a.top;(o||s)&&t(),n=a,r=window.requestAnimationFrame(i)})(),()=>window.cancelAnimationFrame(r)};function Q(e,t){let n=h(e),r=A.useRef(0);return A.useEffect(()=>()=>window.clearTimeout(r.current),[]),A.useCallback(()=>{window.clearTimeout(r.current),r.current=window.setTimeout(n,t)},[n,t])}function $(e,t){let n=h(t);s(()=>{let t=0;if(e){let r=new ResizeObserver(()=>{cancelAnimationFrame(t),t=window.requestAnimationFrame(n)});return r.observe(e),()=>{window.cancelAnimationFrame(t),r.unobserve(e)}}},[e,n])}var Oe=R,ke=B,Ae=be;function je({className:e,children:t,...n}){return(0,j.jsxs)(Oe,{"data-slot":`scroll-area`,className:d(`relative`,e),...n,children:[(0,j.jsx)(ke,{"data-slot":`scroll-area-viewport`,className:`focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1`,children:t}),(0,j.jsx)(Me,{}),(0,j.jsx)(Ae,{})]})}function Me({className:e,orientation:t=`vertical`,...n}){return(0,j.jsx)(H,{"data-slot":`scroll-area-scrollbar`,orientation:t,className:d(`flex touch-none p-px transition-colors select-none`,t===`vertical`&&`h-full w-2.5 border-l border-l-transparent`,t===`horizontal`&&`h-2.5 flex-col border-t border-t-transparent`,e),...n,children:(0,j.jsx)(_e,{"data-slot":`scroll-area-thumb`,className:`bg-border relative flex-1 rounded-full`})})}const Ne=({onSubmitAgent:e,onCancel:t,isAgentWorking:n,messages:i,status:s,inspectionCount:c=0,inspectionItems:l=[],onRemoveInspection:u=()=>{},toolsReady:h=!0,mcpClient:g=null,onAgentChange:v,connectionStatus:S=`disconnected`})=>{let[T,E]=(0,A.useState)(``),[O,ie]=(0,A.useState)(!0),{agent:k,setAgent:de,isReady:M}=D(m),[N,fe]=(0,A.useState)(x),[P,F]=(0,A.useState)(!1),{prompts:pe}=C(g||null);(0,A.useEffect)(()=>{ne().then(e=>{fe(e)})},[]),(0,A.useEffect)(()=>{M&&k&&v?.(k)},[k,M,v]);let{chatStatus:I}=b(i,s,!1),L=I===`submitted`||I===`streaming`,[R,z]=(0,A.useState)(null),B=(0,A.useRef)(null),V=(0,A.useRef)(!1),H=e=>{let t=`${w()}/api/acp/cleanup-session`,n=JSON.stringify({sessionId:e});try{if(navigator.sendBeacon){let e=new Blob([n],{type:`application/json`});navigator.sendBeacon(t,e);return}}catch{}fetch(t,{method:`POST`,headers:{"Content-Type":`application/json`},body:n,keepalive:!0}).catch(()=>{})};(0,A.useEffect)(()=>{if(!M||!h)return;let e=!0,t=N.find(e=>e.name===k)||N[0]||x[0];return(async()=>{if(B.current){try{await fetch(`${w()}/api/acp/cleanup-session`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({sessionId:B.current})})}catch(e){console.warn(`[SidebarApp] Failed to cleanup previous session:`,e)}B.current=null,e&&z(null)}console.log(`[SidebarApp] Initializing session for ${t.name}...`);try{let n=await fetch(`${w()}/api/acp/init-session`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({agent:t,envVars:{}})});if(!n.ok)throw Error(`Failed to init session`);let r=await n.json();e&&r.sessionId&&(console.log(`[SidebarApp] Session initialized: ${r.sessionId}`),z(r.sessionId),B.current=r.sessionId,V.current=!1)}catch(e){console.error(`[SidebarApp] Failed to initialize session:`,e)}})(),()=>{e=!1}},[k,M,h,N]),(0,A.useEffect)(()=>{let e=()=>{let e=B.current;!e||V.current||(V.current=!0,H(e))};return window.addEventListener(`pagehide`,e),()=>window.removeEventListener(`pagehide`,e)},[]),(0,A.useEffect)(()=>()=>{let e=B.current;!e||V.current||(V.current=!0,H(e))},[]);let U=N.find(e=>e.name===k)||N[0]||x[0],W=(0,A.useRef)(null),G=(0,A.useRef)(null);(0,A.useEffect)(()=>{G.current?.scrollIntoView({behavior:`smooth`})},[i]);let[K,q]=(0,A.useState)(null),me=async(e,t={})=>{if(g)try{let n=(await g.request({method:`prompts/get`,params:{name:e.name,arguments:t}},_)).messages?.[0];if(n?.content?.type===`text`&&n.content.text){E(n.content.text),W.current?.focus();return}}catch(e){console.error(`Failed to execute prompt:`,e)}E(e.template||e.description||e.name),W.current?.focus()},he=async e=>{if(e.arguments&&e.arguments.length>0){q(e);return}await me(e)},ge=e=>{K&&(me(K,e),q(null))},J=t=>{t.preventDefault(),T.trim()&&(e(T,N.find(e=>e.name===k)||N[0]||x[0],R||void 0),E(``))};return(0,j.jsxs)(re,{children:[(0,j.jsx)(te,{prompt:K,isOpen:!!K,onOpenChange:e=>!e&&q(null),onSubmit:ge}),(0,j.jsxs)(`div`,{className:`flex flex-col h-screen bg-background text-foreground`,children:[(0,j.jsxs)(`header`,{className:`flex items-center justify-between px-4 py-3 border-b border-border/40 bg-background/80 backdrop-blur-sm sticky top-0 z-10`,children:[(0,j.jsx)(`div`,{className:`flex items-center gap-3`,children:(0,j.jsxs)(`div`,{className:`relative`,children:[(0,j.jsxs)(`button`,{type:`button`,onClick:()=>F(!P),className:`flex items-center gap-2 px-3 py-1.5 rounded-lg bg-secondary/50 hover:bg-secondary transition-colors border border-transparent hover:border-border/50`,children:[U?.meta?.icon&&(0,j.jsx)(`img`,{src:U.meta.icon,alt:``,className:`w-4 h-4`}),(0,j.jsx)(`span`,{className:`text-sm font-medium`,children:k})]}),P&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(`div`,{className:`fixed inset-0 z-40`,onClick:()=>F(!1)}),(0,j.jsx)(`div`,{className:`absolute top-full left-0 mt-2 w-64 bg-popover border border-border rounded-lg shadow-lg overflow-hidden z-50 animate-in fade-in zoom-in-95`,children:N.map(e=>(0,j.jsxs)(`button`,{onClick:()=>{de(e.name),F(!1)},className:d(`w-full flex items-center gap-2 px-3 py-2 text-sm hover:bg-accent transition-colors text-left`,k===e.name&&`bg-accent/50 font-medium`),children:[e.meta?.icon&&(0,j.jsx)(`img`,{src:e.meta.icon,alt:``,className:`w-4 h-4 flex-shrink-0`}),(0,j.jsx)(`span`,{className:`flex-1`,children:e.name})]},e.name))})]})]})}),(0,j.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,j.jsxs)(y,{children:[(0,j.jsx)(ae,{asChild:!0,children:(0,j.jsxs)(`div`,{className:d(`flex items-center gap-1.5 px-2 py-1 rounded text-[10px] font-medium border border-border/50`,(()=>{switch(S){case`connected`:return`text-green-500`;case`connecting`:return`text-yellow-500 animate-pulse`;case`error`:return`text-red-500`;default:return`text-muted-foreground`}})()),children:[(()=>{switch(S){case`connected`:return(0,j.jsx)(ue,{className:`w-4 h-4`});case`connecting`:return(0,j.jsx)(o,{className:`w-4 h-4 animate-spin`});default:return(0,j.jsx)(le,{className:`w-4 h-4`})}})(),(0,j.jsx)(`span`,{className:`capitalize`,children:S})]})}),(0,j.jsx)(f,{children:(0,j.jsxs)(`p`,{children:[`MCP Connection: `,S]})})]}),(0,j.jsxs)(y,{children:[(0,j.jsx)(ae,{asChild:!0,children:(0,j.jsx)(`button`,{onClick:()=>ie(!O),className:d(`p-2 rounded-lg transition-colors border border-transparent`,O?`bg-secondary text-foreground`:`text-muted-foreground hover:text-foreground hover:bg-secondary/50 hover:border-border/50`),children:O?(0,j.jsx)(oe,{className:`w-4 h-4`}):(0,j.jsx)(se,{className:`w-4 h-4`})})}),(0,j.jsx)(f,{children:(0,j.jsx)(`p`,{children:O?`Hide Context Panel`:`Show Context Panel`})})]})]})]}),(0,j.jsxs)(`div`,{className:`flex-1 flex overflow-hidden`,children:[O&&(0,j.jsxs)(`div`,{className:`w-64 border-r border-border/40 flex flex-col bg-muted/10`,children:[(0,j.jsx)(`div`,{className:`p-3 border-b border-border/40 min-h-[45px] flex items-center`,children:(0,j.jsxs)(`h3`,{className:`text-xs font-semibold text-muted-foreground uppercase tracking-wider flex items-center gap-2`,children:[(0,j.jsx)(a,{className:`w-3.5 h-3.5`}),`Context`,c>0&&(0,j.jsx)(`span`,{className:`px-1.5 py-0.5 text-[10px] bg-primary text-primary-foreground rounded-full ml-auto`,children:c})]})}),(0,j.jsx)(je,{className:`flex-1`,children:(0,j.jsx)(`div`,{className:`p-3 space-y-2`,children:l.length>0?(0,j.jsx)(ee,{items:l,onRemove:u}):(0,j.jsxs)(`div`,{className:`flex flex-col items-center justify-center py-12 px-4 text-center text-muted-foreground/40`,children:[(0,j.jsx)(a,{className:`w-10 h-10 mb-3 opacity-20`}),(0,j.jsx)(`p`,{className:`text-sm font-medium mb-1`,children:`No Context`}),(0,j.jsx)(`span`,{className:`text-[10px] max-w-[120px] leading-tight`,children:`Use the Inspector in your app to add elements.`})]})})}),pe.length>0&&(0,j.jsx)(`div`,{className:`border-t border-border/40 bg-muted/5`,children:(0,j.jsxs)(`div`,{className:`p-3`,children:[(0,j.jsxs)(`h4`,{className:`text-[10px] font-semibold text-muted-foreground uppercase tracking-wider mb-2 px-2 flex items-center gap-1.5`,children:[(0,j.jsx)(`span`,{className:`w-1 h-1 rounded-full bg-primary/40 inline-block`}),`Quick Prompts`]}),(0,j.jsx)(`div`,{className:`space-y-0.5`,children:pe.slice(0,5).map(e=>(0,j.jsx)(`button`,{onClick:()=>he(e),className:`w-full text-left px-3 py-2 text-xs rounded-md hover:bg-background hover:text-foreground hover:shadow-sm hover:border-border/50 text-muted-foreground transition-all truncate border border-transparent`,title:e.description||e.name,children:e.name},e.name))})]})})]}),(0,j.jsxs)(`div`,{className:`flex-1 flex flex-col min-w-0`,children:[(0,j.jsx)(je,{className:`flex-1`,children:(0,j.jsxs)(`div`,{className:`p-4 space-y-4`,children:[i.length===0?(0,j.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full py-12 text-center text-muted-foreground`,children:[(0,j.jsx)(`div`,{className:`w-16 h-16 rounded-full bg-accent flex items-center justify-center mb-4`,children:U?.meta?.icon?(0,j.jsx)(`img`,{src:U.meta.icon,alt:``,className:`w-8 h-8`}):(0,j.jsx)(r,{className:`w-8 h-8`})}),(0,j.jsxs)(`h2`,{className:`text-lg font-medium text-foreground mb-2`,children:[`Start a conversation with `,k]}),(0,j.jsx)(`p`,{className:`text-sm max-w-md`,children:`Ask questions, get help with code, or use the Inspector in your app to capture context.`})]}):(0,j.jsx)(p,{messages:i,status:s,selectedAgent:k}),(0,j.jsx)(`div`,{ref:G})]})}),(0,j.jsx)(`div`,{className:`border-t border-border/40 p-4 bg-background/50 backdrop-blur-sm`,children:(0,j.jsxs)(`form`,{onSubmit:J,className:`relative flex items-end rounded-xl border border-input shadow-sm bg-background focus-within:ring-2 focus-within:ring-primary/20 focus-within:border-primary/50 transition-all`,children:[(0,j.jsx)(`textarea`,{ref:W,value:T,onChange:e=>E(e.target.value),onKeyDown:e=>{e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),J(e))},placeholder:`Message ${k}...`,rows:1,className:`w-full min-h-[44px] max-h-[200px] px-4 py-3 pr-12 bg-transparent text-sm placeholder:text-muted-foreground resize-none outline-none disabled:opacity-50 no-scrollbar block`,disabled:L,style:{height:`44px`}}),(0,j.jsx)(`div`,{className:`absolute right-1.5 bottom-1.5`,children:L?(0,j.jsx)(`button`,{type:`button`,onClick:t,className:`p-2 rounded-lg bg-destructive text-destructive-foreground hover:bg-destructive/90 transition-colors`,"aria-label":`Stop generating`,children:(0,j.jsx)(`span`,{className:`w-4 h-4 block bg-current rounded-sm`})}):(0,j.jsx)(`button`,{type:`submit`,disabled:!T.trim(),className:d(`p-2 rounded-lg transition-all`,T.trim()?`bg-primary text-primary-foreground hover:bg-primary/90`:`bg-muted text-muted-foreground cursor-not-allowed`),"aria-label":`Send message`,children:(0,j.jsx)(ce,{className:`w-4 h-4`})})})]})})]})]})]})]})};function Pe(){let[e,t]=(0,A.useState)([]),{client:n,isClientReady:r}=O(),i=r?`connected`:`connecting`,{messages:a,sendMessage:o,status:s,stop:c}=ie({transport:new u({api:`${w()}/api/acp/chat`})}),l=(0,A.useCallback)((e,t,n)=>{e.trim()&&o({text:e},{body:{agent:t,envVars:{},sessionId:n}})},[o]),d=(0,A.useCallback)(()=>{c()},[c]),f=(0,A.useCallback)(e=>{t(t=>t.filter(t=>t.id!==e))},[]);return(0,A.useEffect)(()=>{let e=e=>{let{item:n}=e.detail;n&&t(e=>[...e,n])},n=e=>{if(e.data?.type===`dev-inspector:inspection-added`){let{item:n}=e.data;n&&t(e=>[...e,n])}};return window.addEventListener(`dev-inspector:inspection-added`,e),window.addEventListener(`message`,n),()=>{window.removeEventListener(`dev-inspector:inspection-added`,e),window.removeEventListener(`message`,n)}},[]),(0,j.jsx)(Ne,{onSubmitAgent:l,onCancel:d,isAgentWorking:s===`streaming`||s===`submitted`,messages:a,status:s,inspectionCount:e.length,inspectionItems:e,onRemoveInspection:f,toolsReady:r,mcpClient:n,connectionStatus:i})}function Fe(){let e=document.getElementById(`sidebar-root`);if(!e){console.error(`[Sidebar] Root element #sidebar-root not found`);return}(0,k.createRoot)(e).render((0,j.jsx)(g,{children:(0,j.jsx)(Pe,{})}))}document.readyState===`loading`?document.addEventListener(`DOMContentLoaded`,Fe):Fe();
|
|
1
|
+
import{o as e}from"./chunk-BbOf1w_A.js";import{A as t,E as n,F as r,K as i,L as a,N as o,P as s,T as c,W as l,Y as u,_ as d,a as f,at as p,b as m,c as h,et as g,f as ee,i as _,j as v,n as y,nt as b,o as x,ot as S,p as C,q as w,r as T,rt as E,st as D,t as te,tt as O,u as k,v as ne,x as A,y as re}from"./PromptParamsDialog-B0YpiWEk.js";import"./katex-C3zESuch.js";import"./marked.esm-DUB0uiru.js";const ie=g(`panel-left-close`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}],[`path`,{d:`m16 15-3-3 3-3`,key:`14y99z`}]]),ae=g(`panel-left-open`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}],[`path`,{d:`m14 9 3 3-3 3`,key:`8010ee`}]]),oe=g(`send`,[[`path`,{d:`M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z`,key:`1ffxy3`}],[`path`,{d:`m21.854 2.147-10.94 10.939`,key:`12cjpa`}]]),se=g(`wifi-off`,[[`path`,{d:`M12 20h.01`,key:`zekei9`}],[`path`,{d:`M8.5 16.429a5 5 0 0 1 7 0`,key:`1bycff`}],[`path`,{d:`M5 12.859a10 10 0 0 1 5.17-2.69`,key:`1dl1wf`}],[`path`,{d:`M19 12.859a10 10 0 0 0-2.007-1.523`,key:`4k23kn`}],[`path`,{d:`M2 8.82a15 15 0 0 1 4.177-2.643`,key:`1grhjp`}],[`path`,{d:`M22 8.82a15 15 0 0 0-11.288-3.764`,key:`z3jwby`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]),ce=g(`wifi`,[[`path`,{d:`M12 20h.01`,key:`zekei9`}],[`path`,{d:`M2 8.82a15 15 0 0 1 20 0`,key:`dnpr2z`}],[`path`,{d:`M5 12.859a10 10 0 0 1 14 0`,key:`1x1e6c`}],[`path`,{d:`M8.5 16.429a5 5 0 0 1 7 0`,key:`1bycff`}]]);var j=e(x()),M=e(D(),1),N=O(),le=M.createContext(void 0);function P(e){let t=M.useContext(le);return e||t||`ltr`}function F(e,[t,n]){return Math.min(n,Math.max(t,e))}function ue(e,t){return M.useReducer((e,n)=>t[e][n]??e,e)}var I=`ScrollArea`,[L,de]=s(I),[fe,R]=L(I),pe=M.forwardRef((e,t)=>{let{__scopeScrollArea:n,type:r=`hover`,dir:i,scrollHideDelay:o=600,...s}=e,[c,l]=M.useState(null),[u,d]=M.useState(null),[f,p]=M.useState(null),[m,h]=M.useState(null),[g,ee]=M.useState(null),[_,y]=M.useState(0),[b,x]=M.useState(0),[S,C]=M.useState(!1),[w,T]=M.useState(!1),E=a(t,e=>l(e)),D=P(i);return(0,N.jsx)(fe,{scope:n,type:r,dir:D,scrollHideDelay:o,scrollArea:c,viewport:u,onViewportChange:d,content:f,onContentChange:p,scrollbarX:m,onScrollbarXChange:h,scrollbarXEnabled:S,onScrollbarXEnabledChange:C,scrollbarY:g,onScrollbarYChange:ee,scrollbarYEnabled:w,onScrollbarYEnabledChange:T,onCornerWidthChange:y,onCornerHeightChange:x,children:(0,N.jsx)(v.div,{dir:D,...s,ref:E,style:{position:`relative`,"--radix-scroll-area-corner-width":_+`px`,"--radix-scroll-area-corner-height":b+`px`,...e.style}})})});pe.displayName=I;var z=`ScrollAreaViewport`,B=M.forwardRef((e,t)=>{let{__scopeScrollArea:n,children:r,nonce:i,...o}=e,s=R(z,n),c=a(t,M.useRef(null),s.onViewportChange);return(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(`style`,{dangerouslySetInnerHTML:{__html:`[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}`},nonce:i}),(0,N.jsx)(v.div,{"data-radix-scroll-area-viewport":``,...o,ref:c,style:{overflowX:s.scrollbarXEnabled?`scroll`:`hidden`,overflowY:s.scrollbarYEnabled?`scroll`:`hidden`,...e.style},children:(0,N.jsx)(`div`,{ref:s.onContentChange,style:{minWidth:`100%`,display:`table`},children:r})})]})});B.displayName=z;var V=`ScrollAreaScrollbar`,H=M.forwardRef((e,t)=>{let{forceMount:n,...r}=e,i=R(V,e.__scopeScrollArea),{onScrollbarXEnabledChange:a,onScrollbarYEnabledChange:o}=i,s=e.orientation===`horizontal`;return M.useEffect(()=>(s?a(!0):o(!0),()=>{s?a(!1):o(!1)}),[s,a,o]),i.type===`hover`?(0,N.jsx)(U,{...r,ref:t,forceMount:n}):i.type===`scroll`?(0,N.jsx)(W,{...r,ref:t,forceMount:n}):i.type===`auto`?(0,N.jsx)(G,{...r,ref:t,forceMount:n}):i.type===`always`?(0,N.jsx)(K,{...r,ref:t}):null});H.displayName=V;var U=M.forwardRef((e,n)=>{let{forceMount:r,...i}=e,a=R(V,e.__scopeScrollArea),[o,s]=M.useState(!1);return M.useEffect(()=>{let e=a.scrollArea,t=0;if(e){let n=()=>{window.clearTimeout(t),s(!0)},r=()=>{t=window.setTimeout(()=>s(!1),a.scrollHideDelay)};return e.addEventListener(`pointerenter`,n),e.addEventListener(`pointerleave`,r),()=>{window.clearTimeout(t),e.removeEventListener(`pointerenter`,n),e.removeEventListener(`pointerleave`,r)}}},[a.scrollArea,a.scrollHideDelay]),(0,N.jsx)(t,{present:r||o,children:(0,N.jsx)(G,{"data-state":o?`visible`:`hidden`,...i,ref:n})})}),W=M.forwardRef((e,n)=>{let{forceMount:i,...a}=e,o=R(V,e.__scopeScrollArea),s=e.orientation===`horizontal`,c=Q(()=>u(`SCROLL_END`),100),[l,u]=ue(`hidden`,{hidden:{SCROLL:`scrolling`},scrolling:{SCROLL_END:`idle`,POINTER_ENTER:`interacting`},interacting:{SCROLL:`interacting`,POINTER_LEAVE:`idle`},idle:{HIDE:`hidden`,SCROLL:`scrolling`,POINTER_ENTER:`interacting`}});return M.useEffect(()=>{if(l===`idle`){let e=window.setTimeout(()=>u(`HIDE`),o.scrollHideDelay);return()=>window.clearTimeout(e)}},[l,o.scrollHideDelay,u]),M.useEffect(()=>{let e=o.viewport,t=s?`scrollLeft`:`scrollTop`;if(e){let n=e[t],r=()=>{let r=e[t];n!==r&&(u(`SCROLL`),c()),n=r};return e.addEventListener(`scroll`,r),()=>e.removeEventListener(`scroll`,r)}},[o.viewport,s,u,c]),(0,N.jsx)(t,{present:i||l!==`hidden`,children:(0,N.jsx)(K,{"data-state":l===`hidden`?`hidden`:`visible`,...a,ref:n,onPointerEnter:r(e.onPointerEnter,()=>u(`POINTER_ENTER`)),onPointerLeave:r(e.onPointerLeave,()=>u(`POINTER_LEAVE`))})})}),G=M.forwardRef((e,n)=>{let r=R(V,e.__scopeScrollArea),{forceMount:i,...a}=e,[o,s]=M.useState(!1),c=e.orientation===`horizontal`,l=Q(()=>{if(r.viewport){let e=r.viewport.offsetWidth<r.viewport.scrollWidth,t=r.viewport.offsetHeight<r.viewport.scrollHeight;s(c?e:t)}},10);return $(r.viewport,l),$(r.content,l),(0,N.jsx)(t,{present:i||o,children:(0,N.jsx)(K,{"data-state":o?`visible`:`hidden`,...a,ref:n})})}),K=M.forwardRef((e,t)=>{let{orientation:n=`vertical`,...r}=e,i=R(V,e.__scopeScrollArea),a=M.useRef(null),o=M.useRef(0),[s,c]=M.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),l=Se(s.viewport,s.content),u={...r,sizes:s,onSizesChange:c,hasThumb:l>0&&l<1,onThumbChange:e=>a.current=e,onThumbPointerUp:()=>o.current=0,onThumbPointerDown:e=>o.current=e};function d(e,t){return Ce(e,o.current,s,t)}return n===`horizontal`?(0,N.jsx)(q,{...u,ref:t,onThumbPositionChange:()=>{if(i.viewport&&a.current){let e=i.viewport.scrollLeft,t=we(e,s,i.dir);a.current.style.transform=`translate3d(${t}px, 0, 0)`}},onWheelScroll:e=>{i.viewport&&(i.viewport.scrollLeft=e)},onDragScroll:e=>{i.viewport&&(i.viewport.scrollLeft=d(e,i.dir))}}):n===`vertical`?(0,N.jsx)(me,{...u,ref:t,onThumbPositionChange:()=>{if(i.viewport&&a.current){let e=i.viewport.scrollTop,t=we(e,s);a.current.style.transform=`translate3d(0, ${t}px, 0)`}},onWheelScroll:e=>{i.viewport&&(i.viewport.scrollTop=e)},onDragScroll:e=>{i.viewport&&(i.viewport.scrollTop=d(e))}}):null}),q=M.forwardRef((e,t)=>{let{sizes:n,onSizesChange:r,...i}=e,o=R(V,e.__scopeScrollArea),[s,c]=M.useState(),l=M.useRef(null),u=a(t,l,o.onScrollbarXChange);return M.useEffect(()=>{l.current&&c(getComputedStyle(l.current))},[l]),(0,N.jsx)(J,{"data-orientation":`horizontal`,...i,ref:u,sizes:n,style:{bottom:0,left:o.dir===`rtl`?`var(--radix-scroll-area-corner-width)`:0,right:o.dir===`ltr`?`var(--radix-scroll-area-corner-width)`:0,"--radix-scroll-area-thumb-width":Z(n)+`px`,...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.x),onDragScroll:t=>e.onDragScroll(t.x),onWheelScroll:(t,n)=>{if(o.viewport){let r=o.viewport.scrollLeft+t.deltaX;e.onWheelScroll(r),Ee(r,n)&&t.preventDefault()}},onResize:()=>{l.current&&o.viewport&&s&&r({content:o.viewport.scrollWidth,viewport:o.viewport.offsetWidth,scrollbar:{size:l.current.clientWidth,paddingStart:X(s.paddingLeft),paddingEnd:X(s.paddingRight)}})}})}),me=M.forwardRef((e,t)=>{let{sizes:n,onSizesChange:r,...i}=e,o=R(V,e.__scopeScrollArea),[s,c]=M.useState(),l=M.useRef(null),u=a(t,l,o.onScrollbarYChange);return M.useEffect(()=>{l.current&&c(getComputedStyle(l.current))},[l]),(0,N.jsx)(J,{"data-orientation":`vertical`,...i,ref:u,sizes:n,style:{top:0,right:o.dir===`ltr`?0:void 0,left:o.dir===`rtl`?0:void 0,bottom:`var(--radix-scroll-area-corner-height)`,"--radix-scroll-area-thumb-height":Z(n)+`px`,...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.y),onDragScroll:t=>e.onDragScroll(t.y),onWheelScroll:(t,n)=>{if(o.viewport){let r=o.viewport.scrollTop+t.deltaY;e.onWheelScroll(r),Ee(r,n)&&t.preventDefault()}},onResize:()=>{l.current&&o.viewport&&s&&r({content:o.viewport.scrollHeight,viewport:o.viewport.offsetHeight,scrollbar:{size:l.current.clientHeight,paddingStart:X(s.paddingTop),paddingEnd:X(s.paddingBottom)}})}})}),[he,ge]=L(V),J=M.forwardRef((e,t)=>{let{__scopeScrollArea:n,sizes:i,hasThumb:o,onThumbChange:s,onThumbPointerUp:c,onThumbPointerDown:l,onThumbPositionChange:u,onDragScroll:d,onWheelScroll:f,onResize:p,...m}=e,h=R(V,n),[g,ee]=M.useState(null),_=a(t,e=>ee(e)),y=M.useRef(null),b=M.useRef(``),x=h.viewport,S=i.content-i.viewport,C=A(f),w=A(u),T=Q(p,10);function E(e){y.current&&d({x:e.clientX-y.current.left,y:e.clientY-y.current.top})}return M.useEffect(()=>{let e=e=>{let t=e.target;g?.contains(t)&&C(e,S)};return document.addEventListener(`wheel`,e,{passive:!1}),()=>document.removeEventListener(`wheel`,e,{passive:!1})},[x,g,S,C]),M.useEffect(w,[i,w]),$(g,T),$(h.content,T),(0,N.jsx)(he,{scope:n,scrollbar:g,hasThumb:o,onThumbChange:A(s),onThumbPointerUp:A(c),onThumbPositionChange:w,onThumbPointerDown:A(l),children:(0,N.jsx)(v.div,{...m,ref:_,style:{position:`absolute`,...m.style},onPointerDown:r(e.onPointerDown,e=>{e.button===0&&(e.target.setPointerCapture(e.pointerId),y.current=g.getBoundingClientRect(),b.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect=`none`,h.viewport&&(h.viewport.style.scrollBehavior=`auto`),E(e))}),onPointerMove:r(e.onPointerMove,E),onPointerUp:r(e.onPointerUp,e=>{let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),document.body.style.webkitUserSelect=b.current,h.viewport&&(h.viewport.style.scrollBehavior=``),y.current=null})})})}),Y=`ScrollAreaThumb`,_e=M.forwardRef((e,n)=>{let{forceMount:r,...i}=e,a=ge(Y,e.__scopeScrollArea);return(0,N.jsx)(t,{present:r||a.hasThumb,children:(0,N.jsx)(ve,{ref:n,...i})})}),ve=M.forwardRef((e,t)=>{let{__scopeScrollArea:n,style:i,...o}=e,s=R(Y,n),c=ge(Y,n),{onThumbPositionChange:l}=c,u=a(t,e=>c.onThumbChange(e)),d=M.useRef(void 0),f=Q(()=>{d.current&&=(d.current(),void 0)},100);return M.useEffect(()=>{let e=s.viewport;if(e){let t=()=>{f(),d.current||(d.current=De(e,l),l())};return l(),e.addEventListener(`scroll`,t),()=>e.removeEventListener(`scroll`,t)}},[s.viewport,f,l]),(0,N.jsx)(v.div,{"data-state":c.hasThumb?`visible`:`hidden`,...o,ref:u,style:{width:`var(--radix-scroll-area-thumb-width)`,height:`var(--radix-scroll-area-thumb-height)`,...i},onPointerDownCapture:r(e.onPointerDownCapture,e=>{let t=e.target.getBoundingClientRect(),n=e.clientX-t.left,r=e.clientY-t.top;c.onThumbPointerDown({x:n,y:r})}),onPointerUp:r(e.onPointerUp,c.onThumbPointerUp)})});_e.displayName=Y;var ye=`ScrollAreaCorner`,be=M.forwardRef((e,t)=>{let n=R(ye,e.__scopeScrollArea),r=!!(n.scrollbarX&&n.scrollbarY);return n.type!==`scroll`&&r?(0,N.jsx)(xe,{...e,ref:t}):null});be.displayName=ye;var xe=M.forwardRef((e,t)=>{let{__scopeScrollArea:n,...r}=e,i=R(ye,n),[a,o]=M.useState(0),[s,c]=M.useState(0),l=!!(a&&s);return $(i.scrollbarX,()=>{let e=i.scrollbarX?.offsetHeight||0;i.onCornerHeightChange(e),c(e)}),$(i.scrollbarY,()=>{let e=i.scrollbarY?.offsetWidth||0;i.onCornerWidthChange(e),o(e)}),l?(0,N.jsx)(v.div,{...r,ref:t,style:{width:a,height:s,position:`absolute`,right:i.dir===`ltr`?0:void 0,left:i.dir===`rtl`?0:void 0,bottom:0,...e.style}}):null});function X(e){return e?parseInt(e,10):0}function Se(e,t){let n=e/t;return isNaN(n)?0:n}function Z(e){let t=Se(e.viewport,e.content),n=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,r=(e.scrollbar.size-n)*t;return Math.max(r,18)}function Ce(e,t,n,r=`ltr`){let i=Z(n),a=i/2,o=t||a,s=i-o,c=n.scrollbar.paddingStart+o,l=n.scrollbar.size-n.scrollbar.paddingEnd-s,u=n.content-n.viewport,d=r===`ltr`?[0,u]:[u*-1,0];return Te([c,l],d)(e)}function we(e,t,n=`ltr`){let r=Z(t),i=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,a=t.scrollbar.size-i,o=t.content-t.viewport,s=a-r,c=F(e,n===`ltr`?[0,o]:[o*-1,0]);return Te([0,o],[0,s])(c)}function Te(e,t){return n=>{if(e[0]===e[1]||t[0]===t[1])return t[0];let r=(t[1]-t[0])/(e[1]-e[0]);return t[0]+r*(n-e[0])}}function Ee(e,t){return e>0&&e<t}var De=(e,t=()=>{})=>{let n={left:e.scrollLeft,top:e.scrollTop},r=0;return(function i(){let a={left:e.scrollLeft,top:e.scrollTop},o=n.left!==a.left,s=n.top!==a.top;(o||s)&&t(),n=a,r=window.requestAnimationFrame(i)})(),()=>window.cancelAnimationFrame(r)};function Q(e,t){let n=A(e),r=M.useRef(0);return M.useEffect(()=>()=>window.clearTimeout(r.current),[]),M.useCallback(()=>{window.clearTimeout(r.current),r.current=window.setTimeout(n,t)},[n,t])}function $(e,t){let n=A(t);o(()=>{let t=0;if(e){let r=new ResizeObserver(()=>{cancelAnimationFrame(t),t=window.requestAnimationFrame(n)});return r.observe(e),()=>{window.cancelAnimationFrame(t),r.unobserve(e)}}},[e,n])}var Oe=pe,ke=B,Ae=be;function je({className:e,children:t,...n}){return(0,N.jsxs)(Oe,{"data-slot":`scroll-area`,className:l(`relative`,e),...n,children:[(0,N.jsx)(ke,{"data-slot":`scroll-area-viewport`,className:`focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1`,children:t}),(0,N.jsx)(Me,{}),(0,N.jsx)(Ae,{})]})}function Me({className:e,orientation:t=`vertical`,...n}){return(0,N.jsx)(H,{"data-slot":`scroll-area-scrollbar`,orientation:t,className:l(`flex touch-none p-px transition-colors select-none`,t===`vertical`&&`h-full w-2.5 border-l border-l-transparent`,t===`horizontal`&&`h-2.5 flex-col border-t border-t-transparent`,e),...n,children:(0,N.jsx)(_e,{"data-slot":`scroll-area-thumb`,className:`bg-border relative flex-1 rounded-full`})})}const Ne=({onSubmitAgent:e,onCancel:t,isAgentWorking:n,messages:r,status:a,inspectionCount:o=0,inspectionItems:s=[],onRemoveInspection:c=()=>{},toolsReady:h=!0,mcpClient:g=null,onAgentChange:v,connectionStatus:x=`disconnected`})=>{let[D,O]=(0,M.useState)(``),[k,A]=(0,M.useState)(!0),{agent:j,setAgent:le,isReady:P}=T(S),[F,ue]=(0,M.useState)(p),[I,L]=(0,M.useState)(!1),{prompts:de}=y(g||null);(0,M.useEffect)(()=>{b().then(e=>{ue(e)})},[]),(0,M.useEffect)(()=>{P&&j&&v?.(j)},[j,P,v]);let{chatStatus:fe}=_(r,a,!1),R=fe===`submitted`||fe===`streaming`,[pe,z]=(0,M.useState)(null),B=(0,M.useRef)(null),V=(0,M.useRef)(!1),H=e=>{let t=`${E()}/api/acp/cleanup-session`,n=JSON.stringify({sessionId:e});try{if(navigator.sendBeacon){let e=new Blob([n],{type:`application/json`});navigator.sendBeacon(t,e);return}}catch{}fetch(t,{method:`POST`,headers:{"Content-Type":`application/json`},body:n,keepalive:!0}).catch(()=>{})};(0,M.useEffect)(()=>{if(!P||!h)return;let e=!0,t=F.find(e=>e.name===j)||F[0]||p[0];return(async()=>{if(B.current){try{await fetch(`${E()}/api/acp/cleanup-session`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({sessionId:B.current})})}catch(e){console.warn(`[SidebarApp] Failed to cleanup previous session:`,e)}B.current=null,e&&z(null)}console.log(`[SidebarApp] Initializing session for ${t.name}...`);try{let n=await fetch(`${E()}/api/acp/init-session`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({agent:t,envVars:{}})});if(!n.ok)throw Error(`Failed to init session`);let r=await n.json();e&&r.sessionId&&(console.log(`[SidebarApp] Session initialized: ${r.sessionId}`),z(r.sessionId),B.current=r.sessionId,V.current=!1)}catch(e){console.error(`[SidebarApp] Failed to initialize session:`,e)}})(),()=>{e=!1}},[j,P,h,F]),(0,M.useEffect)(()=>{let e=()=>{let e=B.current;!e||V.current||(V.current=!0,H(e))};return window.addEventListener(`pagehide`,e),()=>window.removeEventListener(`pagehide`,e)},[]),(0,M.useEffect)(()=>()=>{let e=B.current;!e||V.current||(V.current=!0,H(e))},[]);let U=F.find(e=>e.name===j)||F[0]||p[0],W=(0,M.useRef)(null),G=(0,M.useRef)(null);(0,M.useEffect)(()=>{G.current?.scrollIntoView({behavior:`smooth`})},[r]);let[K,q]=(0,M.useState)(null),me=async(e,t={})=>{if(g)try{let n=(await g.request({method:`prompts/get`,params:{name:e.name,arguments:t}},ee)).messages?.[0];if(n?.content?.type===`text`&&n.content.text){O(n.content.text),W.current?.focus();return}}catch(e){console.error(`Failed to execute prompt:`,e)}O(e.template||e.description||e.name),W.current?.focus()},he=async e=>{if(e.arguments&&e.arguments.length>0){q(e);return}await me(e)},ge=e=>{K&&(me(K,e),q(null))},J=t=>{t.preventDefault(),D.trim()&&(e(D,F.find(e=>e.name===j)||F[0]||p[0],pe||void 0),O(``))};return(0,N.jsxs)(re,{children:[(0,N.jsx)(te,{prompt:K,isOpen:!!K,onOpenChange:e=>!e&&q(null),onSubmit:ge}),(0,N.jsxs)(`div`,{className:`flex flex-col h-screen bg-background text-foreground`,children:[(0,N.jsxs)(`header`,{className:`flex items-center justify-between px-4 py-3 border-b border-border/40 bg-background/80 backdrop-blur-sm sticky top-0 z-10`,children:[(0,N.jsx)(`div`,{className:`flex items-center gap-3`,children:(0,N.jsxs)(`div`,{className:`relative`,children:[(0,N.jsxs)(`button`,{type:`button`,onClick:()=>L(!I),className:`flex items-center gap-2 px-3 py-1.5 rounded-lg bg-secondary/50 hover:bg-secondary transition-colors border border-transparent hover:border-border/50`,children:[U?.meta?.icon&&(0,N.jsx)(`img`,{src:U.meta.icon,alt:``,className:`w-4 h-4`}),(0,N.jsx)(`span`,{className:`text-sm font-medium`,children:j})]}),I&&(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(`div`,{className:`fixed inset-0 z-40`,onClick:()=>L(!1)}),(0,N.jsx)(`div`,{className:`absolute top-full left-0 mt-2 w-64 bg-popover border border-border rounded-lg shadow-lg overflow-hidden z-50 animate-in fade-in zoom-in-95`,children:F.map(e=>(0,N.jsxs)(`button`,{onClick:()=>{le(e.name),L(!1)},className:l(`w-full flex items-center gap-2 px-3 py-2 text-sm hover:bg-accent transition-colors text-left`,j===e.name&&`bg-accent/50 font-medium`),children:[e.meta?.icon&&(0,N.jsx)(`img`,{src:e.meta.icon,alt:``,className:`w-4 h-4 flex-shrink-0`}),(0,N.jsx)(`span`,{className:`flex-1`,children:e.name})]},e.name))})]})]})}),(0,N.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,N.jsxs)(d,{children:[(0,N.jsx)(m,{asChild:!0,children:(0,N.jsxs)(`div`,{className:l(`flex items-center gap-1.5 px-2 py-1 rounded text-[10px] font-medium border border-border/50`,(()=>{switch(x){case`connected`:return`text-green-500`;case`connecting`:return`text-yellow-500 animate-pulse`;case`error`:return`text-red-500`;default:return`text-muted-foreground`}})()),children:[(()=>{switch(x){case`connected`:return(0,N.jsx)(ce,{className:`w-4 h-4`});case`connecting`:return(0,N.jsx)(w,{className:`w-4 h-4 animate-spin`});default:return(0,N.jsx)(se,{className:`w-4 h-4`})}})(),(0,N.jsx)(`span`,{className:`capitalize`,children:x})]})}),(0,N.jsx)(ne,{children:(0,N.jsxs)(`p`,{children:[`MCP Connection: `,x]})})]}),(0,N.jsxs)(d,{children:[(0,N.jsx)(m,{asChild:!0,children:(0,N.jsx)(`button`,{onClick:()=>A(!k),className:l(`p-2 rounded-lg transition-colors border border-transparent`,k?`bg-secondary text-foreground`:`text-muted-foreground hover:text-foreground hover:bg-secondary/50 hover:border-border/50`),children:k?(0,N.jsx)(ie,{className:`w-4 h-4`}):(0,N.jsx)(ae,{className:`w-4 h-4`})})}),(0,N.jsx)(ne,{children:(0,N.jsx)(`p`,{children:k?`Hide Context Panel`:`Show Context Panel`})})]})]})]}),(0,N.jsxs)(`div`,{className:`flex-1 flex overflow-hidden`,children:[k&&(0,N.jsxs)(`div`,{className:`w-64 border-r border-border/40 flex flex-col bg-muted/10`,children:[(0,N.jsx)(`div`,{className:`p-3 border-b border-border/40 min-h-[45px] flex items-center`,children:(0,N.jsxs)(`h3`,{className:`text-xs font-semibold text-muted-foreground uppercase tracking-wider flex items-center gap-2`,children:[(0,N.jsx)(u,{className:`w-3.5 h-3.5`}),`Context`,o>0&&(0,N.jsx)(`span`,{className:`px-1.5 py-0.5 text-[10px] bg-primary text-primary-foreground rounded-full ml-auto`,children:o})]})}),(0,N.jsx)(je,{className:`flex-1`,children:(0,N.jsx)(`div`,{className:`p-3 space-y-2`,children:s.length>0?(0,N.jsx)(C,{items:s,onRemove:c}):(0,N.jsxs)(`div`,{className:`flex flex-col items-center justify-center py-12 px-4 text-center text-muted-foreground/40`,children:[(0,N.jsx)(u,{className:`w-10 h-10 mb-3 opacity-20`}),(0,N.jsx)(`p`,{className:`text-sm font-medium mb-1`,children:`No Context`}),(0,N.jsx)(`span`,{className:`text-[10px] max-w-[120px] leading-tight`,children:`Use the Inspector in your app to add elements.`})]})})}),de.length>0&&(0,N.jsx)(`div`,{className:`border-t border-border/40 bg-muted/5`,children:(0,N.jsxs)(`div`,{className:`p-3`,children:[(0,N.jsxs)(`h4`,{className:`text-[10px] font-semibold text-muted-foreground uppercase tracking-wider mb-2 px-2 flex items-center gap-1.5`,children:[(0,N.jsx)(`span`,{className:`w-1 h-1 rounded-full bg-primary/40 inline-block`}),`Quick Prompts`]}),(0,N.jsx)(`div`,{className:`space-y-0.5`,children:de.slice(0,5).map(e=>(0,N.jsx)(`button`,{onClick:()=>he(e),className:`w-full text-left px-3 py-2 text-xs rounded-md hover:bg-background hover:text-foreground hover:shadow-sm hover:border-border/50 text-muted-foreground transition-all truncate border border-transparent`,title:e.description||e.name,children:e.name},e.name))})]})})]}),(0,N.jsxs)(`div`,{className:`flex-1 flex flex-col min-w-0`,children:[(0,N.jsx)(je,{className:`flex-1`,children:(0,N.jsxs)(`div`,{className:`p-4 space-y-4`,children:[r.length===0?(0,N.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full py-12 text-center text-muted-foreground`,children:[(0,N.jsx)(`div`,{className:`w-16 h-16 rounded-full bg-accent flex items-center justify-center mb-4`,children:U?.meta?.icon?(0,N.jsx)(`img`,{src:U.meta.icon,alt:``,className:`w-8 h-8`}):(0,N.jsx)(i,{className:`w-8 h-8`})}),(0,N.jsxs)(`h2`,{className:`text-lg font-medium text-foreground mb-2`,children:[`Start a conversation with `,j]}),(0,N.jsx)(`p`,{className:`text-sm max-w-md`,children:`Ask questions, get help with code, or use the Inspector in your app to capture context.`})]}):(0,N.jsx)(f,{messages:r,status:a,selectedAgent:j}),(0,N.jsx)(`div`,{ref:G})]})}),(0,N.jsx)(`div`,{className:`border-t border-border/40 p-4 bg-background/50 backdrop-blur-sm`,children:(0,N.jsxs)(`form`,{onSubmit:J,className:`relative flex items-end rounded-xl border border-input shadow-sm bg-background focus-within:ring-2 focus-within:ring-primary/20 focus-within:border-primary/50 transition-all`,children:[(0,N.jsx)(`textarea`,{ref:W,value:D,onChange:e=>O(e.target.value),onKeyDown:e=>{e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),J(e))},placeholder:`Message ${j}...`,rows:1,className:`w-full min-h-[44px] max-h-[200px] px-4 py-3 pr-12 bg-transparent text-sm placeholder:text-muted-foreground resize-none outline-none disabled:opacity-50 no-scrollbar block`,disabled:R,style:{height:`44px`}}),(0,N.jsx)(`div`,{className:`absolute right-1.5 bottom-1.5`,children:R?(0,N.jsx)(`button`,{type:`button`,onClick:t,className:`p-2 rounded-lg bg-destructive text-destructive-foreground hover:bg-destructive/90 transition-colors`,"aria-label":`Stop generating`,children:(0,N.jsx)(`span`,{className:`w-4 h-4 block bg-current rounded-sm`})}):(0,N.jsx)(`button`,{type:`submit`,disabled:!D.trim(),className:l(`p-2 rounded-lg transition-all`,D.trim()?`bg-primary text-primary-foreground hover:bg-primary/90`:`bg-muted text-muted-foreground cursor-not-allowed`),"aria-label":`Send message`,children:(0,N.jsx)(oe,{className:`w-4 h-4`})})})]})})]})]})]})]})};function Pe(){let[e,t]=(0,M.useState)([]),{client:r,isClientReady:i}=k(),a=i?`connected`:`connecting`,{messages:o,sendMessage:s,status:l,stop:u}=c({transport:new n({api:`${E()}/api/acp/chat`})}),d=(0,M.useCallback)((e,t,n)=>{e.trim()&&s({text:e},{body:{agent:t,envVars:{},sessionId:n}})},[s]),f=(0,M.useCallback)(()=>{u()},[u]),p=(0,M.useCallback)(e=>{t(t=>t.filter(t=>t.id!==e))},[]);return(0,M.useEffect)(()=>{let e=e=>{let{item:n}=e.detail;n&&t(e=>[...e,n])},n=e=>{if(e.data?.type===`dev-inspector:inspection-added`){let{item:n}=e.data;n&&t(e=>[...e,n])}};return window.addEventListener(`dev-inspector:inspection-added`,e),window.addEventListener(`message`,n),()=>{window.removeEventListener(`dev-inspector:inspection-added`,e),window.removeEventListener(`message`,n)}},[]),(0,N.jsx)(Ne,{onSubmitAgent:d,onCancel:f,isAgentWorking:l===`streaming`||l===`submitted`,messages:o,status:l,inspectionCount:e.length,inspectionItems:e,onRemoveInspection:p,toolsReady:i,mcpClient:r,connectionStatus:a})}function Fe(){let e=document.getElementById(`sidebar-root`);if(!e){console.error(`[Sidebar] Root element #sidebar-root not found`);return}(0,j.createRoot)(e).render((0,N.jsx)(h,{children:(0,N.jsx)(Pe,{})}))}document.readyState===`loading`?document.addEventListener(`DOMContentLoaded`,Fe):Fe();
|
package/dist/config-updater.cjs
CHANGED
|
@@ -89,7 +89,7 @@ let fs_promises = require("fs/promises");
|
|
|
89
89
|
* Default port for the standalone server.
|
|
90
90
|
* Can be overridden via DEV_INSPECTOR_PORT environment variable.
|
|
91
91
|
*/
|
|
92
|
-
const DEFAULT_PORT =
|
|
92
|
+
const DEFAULT_PORT = 6137;
|
|
93
93
|
/**
|
|
94
94
|
* Get the configured port from environment variable or default.
|
|
95
95
|
*/
|
|
@@ -177,6 +177,10 @@ var StandaloneServer = class {
|
|
|
177
177
|
listen(...args) {
|
|
178
178
|
return this.server.listen(...args);
|
|
179
179
|
}
|
|
180
|
+
/**
|
|
181
|
+
* Start the standalone server.
|
|
182
|
+
* Host resolution: string value used as-is, `true` = '0.0.0.0', default = 'localhost'
|
|
183
|
+
*/
|
|
180
184
|
async start(options = {}) {
|
|
181
185
|
const startPort = options.port || getDefaultPort();
|
|
182
186
|
this.host = typeof options.host === "string" ? options.host : options.host === true ? "0.0.0.0" : "localhost";
|
|
@@ -86627,8 +86631,8 @@ const PROMPT_SCHEMAS = {
|
|
|
86627
86631
|
required: false
|
|
86628
86632
|
}]
|
|
86629
86633
|
},
|
|
86630
|
-
|
|
86631
|
-
name: "
|
|
86634
|
+
list_inspections: {
|
|
86635
|
+
name: "list_inspections",
|
|
86632
86636
|
title: "View All Inspections",
|
|
86633
86637
|
description: "View all element inspections in the queue with their status.",
|
|
86634
86638
|
arguments: []
|
|
@@ -86660,6 +86664,12 @@ const PROMPT_SCHEMAS = {
|
|
|
86660
86664
|
title: "Get Stdio Messages",
|
|
86661
86665
|
description: "List stdio (stdout/stderr) messages from the server process. Always refreshes the list first.",
|
|
86662
86666
|
arguments: []
|
|
86667
|
+
},
|
|
86668
|
+
capture_area: {
|
|
86669
|
+
name: "capture_area",
|
|
86670
|
+
title: "Capture Area Context",
|
|
86671
|
+
description: "Draw a rectangle on the page to capture multiple elements at once for troubleshooting.",
|
|
86672
|
+
arguments: []
|
|
86663
86673
|
}
|
|
86664
86674
|
};
|
|
86665
86675
|
|
|
@@ -86762,6 +86772,72 @@ Returns: source location, DOM hierarchy, computed styles, dimensions, and user n
|
|
|
86762
86772
|
} },
|
|
86763
86773
|
required: ["code"]
|
|
86764
86774
|
}
|
|
86775
|
+
},
|
|
86776
|
+
capture_area_context: {
|
|
86777
|
+
name: "capture_area_context",
|
|
86778
|
+
description: `Capture area context by activating visual area selection mode.
|
|
86779
|
+
|
|
86780
|
+
User draws a rectangle on the page to select multiple elements at once. After selection, returns context for all elements in the area including source locations, DOM info, and screenshot.
|
|
86781
|
+
|
|
86782
|
+
**Flow**:
|
|
86783
|
+
1. Activates area selection mode (user sees crosshair cursor)
|
|
86784
|
+
2. User draws rectangle around target elements
|
|
86785
|
+
3. Returns: primary element + related elements with source locations, DOM hierarchy, and screenshot`,
|
|
86786
|
+
inputSchema: {
|
|
86787
|
+
type: "object",
|
|
86788
|
+
properties: {}
|
|
86789
|
+
}
|
|
86790
|
+
},
|
|
86791
|
+
get_network_requests: {
|
|
86792
|
+
name: "get_network_requests",
|
|
86793
|
+
description: `Get network requests from browser for debugging.
|
|
86794
|
+
|
|
86795
|
+
Returns list of HTTP requests with ID, method, URL, and status code. Use reqid parameter to get full details of a specific request including headers, body, and timing.
|
|
86796
|
+
|
|
86797
|
+
**Usage**:
|
|
86798
|
+
- Call without parameters to list all requests
|
|
86799
|
+
- Call with reqid to get specific request details`,
|
|
86800
|
+
inputSchema: {
|
|
86801
|
+
type: "object",
|
|
86802
|
+
properties: { reqid: {
|
|
86803
|
+
type: "number",
|
|
86804
|
+
description: "Optional. Request ID to get full details. If omitted, returns list of all requests."
|
|
86805
|
+
} }
|
|
86806
|
+
}
|
|
86807
|
+
},
|
|
86808
|
+
get_console_messages: {
|
|
86809
|
+
name: "get_console_messages",
|
|
86810
|
+
description: `Get console messages from browser for debugging.
|
|
86811
|
+
|
|
86812
|
+
Returns list of console logs with ID, level (log/warn/error/info), and message content. Use msgid parameter to get full details of a specific message.
|
|
86813
|
+
|
|
86814
|
+
**Usage**:
|
|
86815
|
+
- Call without parameters to list all messages
|
|
86816
|
+
- Call with msgid to get specific message details`,
|
|
86817
|
+
inputSchema: {
|
|
86818
|
+
type: "object",
|
|
86819
|
+
properties: { msgid: {
|
|
86820
|
+
type: "number",
|
|
86821
|
+
description: "Optional. Message ID to get full details. If omitted, returns list of all messages."
|
|
86822
|
+
} }
|
|
86823
|
+
}
|
|
86824
|
+
},
|
|
86825
|
+
get_stdio_messages: {
|
|
86826
|
+
name: "get_stdio_messages",
|
|
86827
|
+
description: `Get stdio (stdout/stderr) terminal messages from dev server process.
|
|
86828
|
+
|
|
86829
|
+
Returns list of terminal output with ID, stream type (stdout/stderr), and content. Use stdioid parameter to get full details of a specific message.
|
|
86830
|
+
|
|
86831
|
+
**Usage**:
|
|
86832
|
+
- Call without parameters to list all stdio messages
|
|
86833
|
+
- Call with stdioid to get specific message details`,
|
|
86834
|
+
inputSchema: {
|
|
86835
|
+
type: "object",
|
|
86836
|
+
properties: { stdioid: {
|
|
86837
|
+
type: "number",
|
|
86838
|
+
description: "Optional. Stdio message ID to get full details. If omitted, returns list of all messages."
|
|
86839
|
+
} }
|
|
86840
|
+
}
|
|
86765
86841
|
}
|
|
86766
86842
|
};
|
|
86767
86843
|
|
|
@@ -86829,6 +86905,8 @@ function getStdioById(id) {
|
|
|
86829
86905
|
|
|
86830
86906
|
//#endregion
|
|
86831
86907
|
//#region src/mcp.ts
|
|
86908
|
+
const TRUNCATE_URL_LENGTH = 60;
|
|
86909
|
+
const TRUNCATE_MESSAGE_LENGTH = 180;
|
|
86832
86910
|
/**
|
|
86833
86911
|
* Get Chrome DevTools binary path from npm package, then use node to run it, faster/stabler than npx
|
|
86834
86912
|
*/
|
|
@@ -86916,9 +86994,61 @@ Default dev server URL: ${process.env.DEV_INSPECTOR_PUBLIC_BASE_URL || `http://$
|
|
|
86916
86994
|
args: [getChromeDevToolsBinPath()]
|
|
86917
86995
|
} } }
|
|
86918
86996
|
}]);
|
|
86997
|
+
if (chromeDisabled) {
|
|
86998
|
+
mcpServer.tool(TOOL_SCHEMAS.get_network_requests.name, TOOL_SCHEMAS.get_network_requests.description, TOOL_SCHEMAS.get_network_requests.inputSchema, async ({ reqid }) => {
|
|
86999
|
+
if (reqid !== void 0) {
|
|
87000
|
+
const req = getRequestById(reqid);
|
|
87001
|
+
return { content: [{
|
|
87002
|
+
type: "text",
|
|
87003
|
+
text: req ? req.details || JSON.stringify(req, null, 2) : "Request not found"
|
|
87004
|
+
}] };
|
|
87005
|
+
}
|
|
87006
|
+
return { content: [{
|
|
87007
|
+
type: "text",
|
|
87008
|
+
text: getNetworkRequests().map((r) => {
|
|
87009
|
+
const truncatedUrl = r.url.length > TRUNCATE_URL_LENGTH ? r.url.substring(0, TRUNCATE_URL_LENGTH - 3) + "..." : r.url;
|
|
87010
|
+
return `reqid=${r.id} ${r.method} ${truncatedUrl} [${r.status}]`;
|
|
87011
|
+
}).reverse().join("\n") || "No network requests"
|
|
87012
|
+
}] };
|
|
87013
|
+
});
|
|
87014
|
+
mcpServer.tool(TOOL_SCHEMAS.get_console_messages.name, TOOL_SCHEMAS.get_console_messages.description, TOOL_SCHEMAS.get_console_messages.inputSchema, async ({ msgid }) => {
|
|
87015
|
+
if (msgid !== void 0) {
|
|
87016
|
+
const log = getLogById(msgid);
|
|
87017
|
+
return { content: [{
|
|
87018
|
+
type: "text",
|
|
87019
|
+
text: log ? JSON.stringify(log, null, 2) : "Log not found"
|
|
87020
|
+
}] };
|
|
87021
|
+
}
|
|
87022
|
+
return { content: [{
|
|
87023
|
+
type: "text",
|
|
87024
|
+
text: getLogs().map((l) => {
|
|
87025
|
+
const msg = l.args.map((arg) => typeof arg === "object" ? JSON.stringify(arg) : String(arg)).join(" ");
|
|
87026
|
+
const truncated = msg.length > TRUNCATE_MESSAGE_LENGTH ? msg.substring(0, TRUNCATE_MESSAGE_LENGTH - 3) + "..." : msg;
|
|
87027
|
+
return `msgid=${l.id} [${l.type}] ${truncated}`;
|
|
87028
|
+
}).reverse().join("\n") || "No console messages"
|
|
87029
|
+
}] };
|
|
87030
|
+
});
|
|
87031
|
+
}
|
|
87032
|
+
mcpServer.tool(TOOL_SCHEMAS.get_stdio_messages.name, TOOL_SCHEMAS.get_stdio_messages.description, TOOL_SCHEMAS.get_stdio_messages.inputSchema, async ({ stdioid }) => {
|
|
87033
|
+
if (stdioid !== void 0) {
|
|
87034
|
+
const log = getStdioById(stdioid);
|
|
87035
|
+
return { content: [{
|
|
87036
|
+
type: "text",
|
|
87037
|
+
text: log ? JSON.stringify(log, null, 2) : "Stdio message not found"
|
|
87038
|
+
}] };
|
|
87039
|
+
}
|
|
87040
|
+
return { content: [{
|
|
87041
|
+
type: "text",
|
|
87042
|
+
text: getStdioLogs().map((log) => {
|
|
87043
|
+
const truncated = log.data.length > TRUNCATE_MESSAGE_LENGTH ? log.data.substring(0, TRUNCATE_MESSAGE_LENGTH - 3) + "..." : log.data;
|
|
87044
|
+
return `stdioid=${log.id} [${log.stream}] ${truncated}`;
|
|
87045
|
+
}).reverse().join("\n") || "No stdio messages"
|
|
87046
|
+
}] };
|
|
87047
|
+
});
|
|
86919
87048
|
const mcpClientExecServer = createClientExecServer(mcpServer, "inspector");
|
|
86920
87049
|
mcpClientExecServer.registerClientToolSchemas([
|
|
86921
87050
|
{ ...TOOL_SCHEMAS.capture_element_context },
|
|
87051
|
+
{ ...TOOL_SCHEMAS.capture_area_context },
|
|
86922
87052
|
{ ...TOOL_SCHEMAS.list_inspections },
|
|
86923
87053
|
{ ...TOOL_SCHEMAS.update_inspection_status },
|
|
86924
87054
|
{ ...TOOL_SCHEMAS.execute_page_script }
|
|
@@ -86932,7 +87062,8 @@ Default dev server URL: ${process.env.DEV_INSPECTOR_PUBLIC_BASE_URL || `http://$
|
|
|
86932
87062
|
}));
|
|
86933
87063
|
const allDefaultPrompts = [
|
|
86934
87064
|
{ ...PROMPT_SCHEMAS.capture_element },
|
|
86935
|
-
{ ...PROMPT_SCHEMAS.
|
|
87065
|
+
{ ...PROMPT_SCHEMAS.list_inspections },
|
|
87066
|
+
{ ...PROMPT_SCHEMAS.capture_area },
|
|
86936
87067
|
{ ...PROMPT_SCHEMAS.get_stdio_messages },
|
|
86937
87068
|
...!chromeDisabled ? [{
|
|
86938
87069
|
...PROMPT_SCHEMAS.launch_chrome_devtools,
|
|
@@ -86962,7 +87093,7 @@ Default dev server URL: ${process.env.DEV_INSPECTOR_PUBLIC_BASE_URL || `http://$
|
|
|
86962
87093
|
const requests = getNetworkRequests();
|
|
86963
87094
|
const logs$1 = getLogs();
|
|
86964
87095
|
const requestOptions$1 = requests.map((r) => {
|
|
86965
|
-
const truncatedUrl = r.url.length >
|
|
87096
|
+
const truncatedUrl = r.url.length > TRUNCATE_URL_LENGTH ? r.url.substring(0, TRUNCATE_URL_LENGTH - 3) + "..." : r.url;
|
|
86966
87097
|
return `reqid=${r.id} ${r.method} ${truncatedUrl} [${r.status}]`;
|
|
86967
87098
|
}).reverse().join("\n");
|
|
86968
87099
|
const messageOptions$1 = logs$1.map((l) => {
|
|
@@ -86974,13 +87105,14 @@ Default dev server URL: ${process.env.DEV_INSPECTOR_PUBLIC_BASE_URL || `http://$
|
|
|
86974
87105
|
}
|
|
86975
87106
|
return String(arg);
|
|
86976
87107
|
}).join(" ");
|
|
86977
|
-
const truncatedText = text$3.length >
|
|
87108
|
+
const truncatedText = text$3.length > TRUNCATE_MESSAGE_LENGTH ? text$3.substring(0, TRUNCATE_MESSAGE_LENGTH - 3) + "..." : text$3;
|
|
86978
87109
|
return `msgid=${l.id} [${l.type}] ${truncatedText}`;
|
|
86979
87110
|
}).reverse().join("\n");
|
|
86980
87111
|
mcpServer.setRequestHandler(_modelcontextprotocol_sdk_types_js.ListPromptsRequestSchema, async (_request) => {
|
|
86981
87112
|
return { prompts: [...filterPrompts([
|
|
86982
87113
|
{ ...PROMPT_SCHEMAS.capture_element },
|
|
86983
|
-
{ ...PROMPT_SCHEMAS.
|
|
87114
|
+
{ ...PROMPT_SCHEMAS.capture_area },
|
|
87115
|
+
{ ...PROMPT_SCHEMAS.list_inspections },
|
|
86984
87116
|
{
|
|
86985
87117
|
...PROMPT_SCHEMAS.get_network_requests,
|
|
86986
87118
|
arguments: [{
|
|
@@ -87034,12 +87166,12 @@ Default dev server URL: ${process.env.DEV_INSPECTOR_PUBLIC_BASE_URL || `http://$
|
|
|
87034
87166
|
const reqIdMatches = (networkResult?.content?.map((item) => item.text).join("\n") || "").matchAll(/reqid=(\d+)\s+(GET|POST|PUT|DELETE|PATCH)\s+([^\s]+)\s+\[([^\]]+)\]/g);
|
|
87035
87167
|
const requestOptions = Array.from(reqIdMatches).map((match) => {
|
|
87036
87168
|
const [, reqId, method, url$1, status] = match;
|
|
87037
|
-
return ` ${reqId}: ${method} ${url$1.length >
|
|
87169
|
+
return ` ${reqId}: ${method} ${url$1.length > TRUNCATE_URL_LENGTH ? url$1.substring(0, TRUNCATE_URL_LENGTH - 3) + "..." : url$1} [${status}]`;
|
|
87038
87170
|
}).reverse().join("\n");
|
|
87039
87171
|
const msgIdMatches = (consoleResult?.content?.map((item) => item.text).join("\n") || "").matchAll(/msgid=(\d+)\s+\[([^\]]+)\]\s+(.+)/g);
|
|
87040
87172
|
const messageOptions = Array.from(msgIdMatches).map((match) => {
|
|
87041
87173
|
const [, msgId, level, text$2] = match;
|
|
87042
|
-
return ` ${msgId}: [${level}] ${text$2.length >
|
|
87174
|
+
return ` ${msgId}: [${level}] ${text$2.length > TRUNCATE_URL_LENGTH ? text$2.substring(0, TRUNCATE_URL_LENGTH - 3) + "..." : text$2}`;
|
|
87043
87175
|
}).reverse().join("\n");
|
|
87044
87176
|
mcpServer.setRequestHandler(_modelcontextprotocol_sdk_types_js.ListPromptsRequestSchema, async (_request) => {
|
|
87045
87177
|
const usernamePromptsMapped = userPrompts.map((p$1) => ({
|
|
@@ -87049,7 +87181,8 @@ Default dev server URL: ${process.env.DEV_INSPECTOR_PUBLIC_BASE_URL || `http://$
|
|
|
87049
87181
|
}));
|
|
87050
87182
|
return { prompts: [...filterPrompts([
|
|
87051
87183
|
{ ...PROMPT_SCHEMAS.capture_element },
|
|
87052
|
-
{ ...PROMPT_SCHEMAS.
|
|
87184
|
+
{ ...PROMPT_SCHEMAS.list_inspections },
|
|
87185
|
+
{ ...PROMPT_SCHEMAS.capture_area },
|
|
87053
87186
|
...!chromeDisabled ? [
|
|
87054
87187
|
{ ...PROMPT_SCHEMAS.launch_chrome_devtools },
|
|
87055
87188
|
{
|
|
@@ -87152,13 +87285,20 @@ Default dev server URL: ${process.env.DEV_INSPECTOR_PUBLIC_BASE_URL || `http://$
|
|
|
87152
87285
|
role: "user",
|
|
87153
87286
|
content: item
|
|
87154
87287
|
})) || [] };
|
|
87155
|
-
case "
|
|
87288
|
+
case "list_inspections": return { messages: (await callMcpMethod(mcpServer, "tools/call", {
|
|
87156
87289
|
name: "list_inspections",
|
|
87157
87290
|
arguments: {}
|
|
87158
87291
|
}))?.content.map((item) => ({
|
|
87159
87292
|
role: "user",
|
|
87160
87293
|
content: item
|
|
87161
87294
|
})) || [] };
|
|
87295
|
+
case "capture_area": return { messages: (await callMcpMethod(mcpServer, "tools/call", {
|
|
87296
|
+
name: "capture_area_context",
|
|
87297
|
+
arguments: {}
|
|
87298
|
+
}))?.content.map((item) => ({
|
|
87299
|
+
role: "user",
|
|
87300
|
+
content: item
|
|
87301
|
+
})) || [] };
|
|
87162
87302
|
case "launch_chrome_devtools": {
|
|
87163
87303
|
const defaultUrl = process.env.DEV_INSPECTOR_PUBLIC_BASE_URL ? require_helpers.stripTrailingSlash(process.env.DEV_INSPECTOR_PUBLIC_BASE_URL) : `http://${serverContext?.host || "localhost"}:${serverContext?.port || 5173}`;
|
|
87164
87304
|
const url$1 = request.params.arguments?.url || defaultUrl;
|
|
@@ -87255,7 +87395,7 @@ Default dev server URL: ${process.env.DEV_INSPECTOR_PUBLIC_BASE_URL || `http://$
|
|
|
87255
87395
|
const stdioLogs$1 = getStdioLogs();
|
|
87256
87396
|
const stdioIdStr = request.params.arguments?.stdioid;
|
|
87257
87397
|
const formattedMessages = stdioLogs$1.map((log) => {
|
|
87258
|
-
const truncatedData = log.data.length >
|
|
87398
|
+
const truncatedData = log.data.length > TRUNCATE_MESSAGE_LENGTH ? log.data.substring(0, TRUNCATE_MESSAGE_LENGTH - 3) + "..." : log.data;
|
|
87259
87399
|
return `stdioid=${log.id} [${log.stream}] ${truncatedData}`;
|
|
87260
87400
|
}).reverse();
|
|
87261
87401
|
if (stdioIdStr) {
|
|
@@ -87287,7 +87427,8 @@ Default dev server URL: ${process.env.DEV_INSPECTOR_PUBLIC_BASE_URL || `http://$
|
|
|
87287
87427
|
const defaultUrl = process.env.DEV_INSPECTOR_PUBLIC_BASE_URL ? require_helpers.stripTrailingSlash(process.env.DEV_INSPECTOR_PUBLIC_BASE_URL) : `http://${serverContext?.host || "localhost"}:${serverContext?.port || 5173}`;
|
|
87288
87428
|
return { prompts: [
|
|
87289
87429
|
{ ...PROMPT_SCHEMAS.capture_element },
|
|
87290
|
-
{ ...PROMPT_SCHEMAS.
|
|
87430
|
+
{ ...PROMPT_SCHEMAS.list_inspections },
|
|
87431
|
+
{ ...PROMPT_SCHEMAS.capture_area },
|
|
87291
87432
|
{
|
|
87292
87433
|
...PROMPT_SCHEMAS.get_stdio_messages,
|
|
87293
87434
|
arguments: [{
|
|
@@ -87308,7 +87449,12 @@ Default dev server URL: ${process.env.DEV_INSPECTOR_PUBLIC_BASE_URL || `http://$
|
|
|
87308
87449
|
},
|
|
87309
87450
|
{ ...PROMPT_SCHEMAS.get_network_requests },
|
|
87310
87451
|
{ ...PROMPT_SCHEMAS.get_console_messages }
|
|
87311
|
-
] : []
|
|
87452
|
+
] : [],
|
|
87453
|
+
...userPrompts.map((p$1) => ({
|
|
87454
|
+
name: p$1.name,
|
|
87455
|
+
description: p$1.description,
|
|
87456
|
+
arguments: p$1.arguments
|
|
87457
|
+
}))
|
|
87312
87458
|
] };
|
|
87313
87459
|
});
|
|
87314
87460
|
await mcpServer.sendPromptListChanged();
|