@mcp-use/inspector 20.0.0-beta.3 → 20.0.0-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cdn/{ChatTab-BS5Tlm2y.js → ChatTab-UQAPDRQG.js} +6 -6
- package/dist/cdn/{ConnectionSettingsForm-BFsZpwK4.js → ConnectionSettingsForm-DrY1p-NO.js} +1 -1
- package/dist/cdn/{ConnectionSettingsTab-DDk06dhT.js → ConnectionSettingsTab-B1cRD7hz.js} +1 -1
- package/dist/cdn/{MarkdownRenderer-_aYcof42.js → MarkdownRenderer-BoDJE8tP.js} +1 -1
- package/dist/cdn/{OAuthCallback-C4n2hqKU.js → OAuthCallback-C9AvCkOn.js} +1 -1
- package/dist/cdn/{PromptsTab-BajHFLa3.js → PromptsTab-CkAWyWVb.js} +1 -1
- package/dist/cdn/{ResourcesTab-BgeMlTdR.js → ResourcesTab-BtBKxd4c.js} +5 -5
- package/dist/cdn/{SamplingTab-CnJB229N.js → SamplingTab-Czp7Rmhz.js} +3 -3
- package/dist/cdn/{ToolsTab-ACLxPxR6.js → ToolsTab-Dm4vCB8D.js} +4 -4
- package/dist/cdn/{ViewPreview-DsPwZAwO.js → ViewPreview-CZvl_7x-.js} +4 -3
- package/dist/cdn/{WidgetWrapper-CwlpDv17.js → WidgetWrapper-DeiogRXV.js} +2 -2
- package/dist/cdn/{dist-B0eL32Gb.js → dist-3QLh0dt8.js} +3 -3
- package/dist/cdn/{index-browser-QDjRGsPo.js → index-browser-CIoYSwCt.js} +1 -1
- package/dist/cdn/inspector.js +5 -5
- package/dist/cdn/{react-Dn8PWXwP.js → react-0oJnFpBS.js} +593 -585
- package/dist/cdn/{telemetry-gHF-tMli.js → telemetry-BbhH1Z_E.js} +2 -2
- package/dist/cdn/{useConfig-BWcNCqwi.js → useConfig-BNpU7Atw.js} +2 -2
- package/dist/cdn/{useViewHostProps-DIIlz3tJ.js → useViewHostProps-ru80AnlT.js} +3 -2
- package/dist/cli.js +1 -1
- package/dist/client/hooks/useViewHostProps.d.ts +1 -1
- package/dist/client/hooks/useViewHostProps.d.ts.map +1 -1
- package/dist/client/index.js +2 -1
- package/dist/server/cdn-shell.js +2 -2
- package/dist/server/{chunk-W3PVQLOP.js → chunk-5L3HMC5B.js} +1 -1
- package/dist/server/{chunk-HGPQON3P.js → chunk-BEJGHVKM.js} +1 -1
- package/dist/server/{chunk-H7UBATRR.js → chunk-PGN3B3MQ.js} +1 -1
- package/dist/server/cli.js +2 -2
- package/dist/server/index.js +3 -3
- package/dist/server/middleware.js +3 -3
- package/dist/server/version.js +1 -1
- package/dist/web/assets/{ChatTab-C2FtENBM.js → ChatTab-B_5S87J1.js} +1 -1
- package/dist/web/assets/{ConnectionSettingsTab-B2sUjytG.js → ConnectionSettingsTab-XwjwKfsO.js} +1 -1
- package/dist/web/assets/{ElicitationTab-DwH08kDC.js → ElicitationTab-BD1tfmYR.js} +1 -1
- package/dist/web/assets/{ManufactOAuthCallback-Btu4B6u6.js → ManufactOAuthCallback-DD3qfIC3.js} +1 -1
- package/dist/web/assets/{MarkdownRenderer-DpIEt9wb.js → MarkdownRenderer-DH-7vpw0.js} +1 -1
- package/dist/web/assets/{NotificationsTab-CHB8mtSz.js → NotificationsTab-Cg48O6IH.js} +1 -1
- package/dist/web/assets/{OAuthCallback-DV4MgX4Z.js → OAuthCallback-4i2i3YpE.js} +1 -1
- package/dist/web/assets/{PromptsTab-0GIapoSs.js → PromptsTab-pAR6izrQ.js} +1 -1
- package/dist/web/assets/{ResourcesTab-N9xjsI_b.js → ResourcesTab-CgvfWrsU.js} +1 -1
- package/dist/web/assets/{SamplingTab-Dw0vpi4t.js → SamplingTab-DfIWMQFY.js} +1 -1
- package/dist/web/assets/{ServerMetadataTab-D-eQpLBF.js → ServerMetadataTab-Dsz8Qhyr.js} +1 -1
- package/dist/web/assets/{ToolsTab-BMrMJ5JV.js → ToolsTab-ln9w58BW.js} +1 -1
- package/dist/web/assets/{ViewPreview-N_cpEO0W.js → ViewPreview-CQ3G3VP0.js} +1 -1
- package/dist/web/assets/{WidgetWrapper-pDgNVq9y.js → WidgetWrapper-A-zaxY5s.js} +1 -1
- package/dist/web/assets/{checkbox-CrnXSMh2.js → checkbox-DZWS_U_i.js} +1 -1
- package/dist/web/assets/{dist-CeWSydFI.js → dist-DxRFPg-B.js} +4 -4
- package/dist/web/assets/{index-Cfuv_gb3.js → index-CoRK2C3M.js} +30 -13
- package/dist/web/assets/{shared-B1GD9FMm.js → shared-Dbc2GbRx.js} +1 -1
- package/dist/web/assets/{tabs-subtle-CG5cjC_N.js → tabs-subtle-CxMZqhP6.js} +1 -1
- package/dist/web/assets/{useConfig-BTp15Lle.js → useConfig-Cg-BtSHA.js} +1 -1
- package/dist/web/assets/{useViewHostProps-BQlaFC2Q.js → useViewHostProps-CMgPpdfy.js} +1 -1
- package/dist/web/index.html +2 -2
- package/package.json +4 -4
package/dist/web/assets/{ConnectionSettingsTab-B2sUjytG.js → ConnectionSettingsTab-XwjwKfsO.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{s as e,t}from"./react-CU_d2d5K.js";import{d as n,l as r,sr as i,u as a}from"./input-CLYhA7PK.js";import{t as o}from"./jsx-runtime-Cjj9sGSy.js";import{L as s,Zt as c,dt as l,ft as u,lt as d,mt as f,ot as p,pt as m,ut as h}from"./index-
|
|
1
|
+
import{s as e,t}from"./react-CU_d2d5K.js";import{d as n,l as r,sr as i,u as a}from"./input-CLYhA7PK.js";import{t as o}from"./jsx-runtime-Cjj9sGSy.js";import{L as s,Zt as c,dt as l,ft as u,lt as d,mt as f,ot as p,pt as m,ut as h}from"./index-CoRK2C3M.js";import{t as g}from"./inspector-settings-layout-yjKRJDai.js";import{n as _}from"./ListTabHeader-R17w_JsB.js";var v=e(t(),1);function y(e,t){let[n,r]=(0,v.useState)(``),[i,a]=(0,v.useState)(``),[o,s]=(0,v.useState)(`auto`),[c,g]=(0,v.useState)(`auto`),[_,y]=(0,v.useState)([]),[b,x]=(0,v.useState)(`10000`),[S,C]=(0,v.useState)(`True`),[w,T]=(0,v.useState)(`60000`),[E,D]=(0,v.useState)(h()),[O,k]=(0,v.useState)(``),[A,j]=(0,v.useState)(``),[M,N]=(0,v.useState)(``);return(0,v.useEffect)(()=>{if(!e||!t)return;let n=f(e,l(e.id));a(n.url),r(n.name||n.url);let i=n.proxyConfig?.proxyAddress||(typeof n.autoProxyFallback==`object`?n.autoProxyFallback.proxyAddress:void 0);s(n.connectionMode||`auto`),g(u(n.protocolNegotiation)),D(i||h());let o=n.headers||{};y(Object.entries(o).map(([e,t],n)=>({id:`header-${n}`,name:e,value:String(t)}))),k(n.oauth?.clientId||``),j(n.oauth?.clientSecret||``),N(n.oauth?.scope||``),n.requestTimeout!==void 0&&x(String(n.requestTimeout)),n.resetTimeoutOnProgress!==void 0&&C(n.resetTimeoutOnProgress?`True`:`False`),n.maxTotalTimeout!==void 0&&T(String(n.maxTotalTimeout))},[e,t]),{alias:n,setAlias:r,url:i,setUrl:a,connectionMode:o,setConnectionMode:s,protocolMode:c,setProtocolMode:g,customHeaders:_,setCustomHeaders:y,requestTimeout:b,setRequestTimeout:x,resetTimeoutOnProgress:S,setResetTimeoutOnProgress:C,maxTotalTimeout:w,setMaxTotalTimeout:T,proxyAddress:E,setProxyAddress:D,clientId:O,setClientId:k,clientSecret:A,setClientSecret:j,scope:M,setScope:N,buildConfig:()=>{if(!i.trim())return null;let e=i.trim();try{let t=new URL(e);if(!(t.protocol===`http:`||t.protocol===`https:`))return p.error(`Invalid URL protocol. Please use http:// or https://`),null}catch{try{let t=`https://${e}`,n=new URL(t);if(!(n.protocol===`http:`||n.protocol===`https:`))return p.error(`Invalid URL protocol. Please use http:// or https://`),null;e=t}catch{return p.error(`Invalid URL format. Please enter a valid URL.`),null}}let t=_.reduce((e,t)=>(t.name&&t.value&&(e[t.name]=t.value),e),{}),r=o===`proxy`&&E.trim()?{proxyAddress:E.trim(),headers:t}:void 0,a=o===`auto`&&E.trim()?{enabled:!0,proxyAddress:E.trim()}:!1,s=d(O,A,M),l=Number.parseInt(b,10),u=Number.parseInt(w,10);return{url:e,name:n.trim()||e,transportType:`http`,connectionMode:o,protocolNegotiation:m(c),proxyConfig:r,headers:Object.keys(t).length>0?t:void 0,autoProxyFallback:a,...s?{oauth:s}:{},...Number.isFinite(l)?{requestTimeout:l}:{},resetTimeoutOnProgress:S===`True`,...Number.isFinite(u)?{maxTotalTimeout:u}:{}}}}}var b=o();function x({connection:e,onSave:t}){let o=y(e,!0),[l,u]=(0,v.useState)(!1);return(0,b.jsxs)(`div`,{className:`h-full overflow-y-auto overscroll-none`,onScroll:e=>u(e.currentTarget.scrollTop>0),children:[(0,b.jsxs)(`div`,{className:`${r(l)} flex flex-row items-center justify-between gap-2 ${a}`,children:[(0,b.jsxs)(`h2`,{className:`${n} flex items-center gap-1.5`,children:[(0,b.jsx)(c,{className:_,"aria-hidden":!0}),`Connection Settings`]}),(0,b.jsx)(i,{"data-testid":`connection-form-save-button`,size:`sm`,onClick:()=>{let e=o.buildConfig();e&&t(e)},children:`Save`})]}),(0,b.jsx)(`div`,{className:g,children:(0,b.jsx)(s,{alias:o.alias,setAlias:o.setAlias,url:o.url,setUrl:o.setUrl,connectionMode:o.connectionMode,setConnectionMode:o.setConnectionMode,protocolMode:o.protocolMode,setProtocolMode:o.setProtocolMode,customHeaders:o.customHeaders,setCustomHeaders:o.setCustomHeaders,requestTimeout:o.requestTimeout,setRequestTimeout:o.setRequestTimeout,resetTimeoutOnProgress:o.resetTimeoutOnProgress,setResetTimeoutOnProgress:o.setResetTimeoutOnProgress,maxTotalTimeout:o.maxTotalTimeout,setMaxTotalTimeout:o.setMaxTotalTimeout,proxyAddress:o.proxyAddress,setProxyAddress:o.setProxyAddress,clientId:o.clientId,setClientId:o.setClientId,clientSecret:o.clientSecret,setClientSecret:o.setClientSecret,scope:o.scope,setScope:o.setScope,showConnectButton:!1,showExportButton:!1,inlineSections:!0,cardSections:!0})})]})}export{x as ConnectionSettingsTab};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{s as e,t}from"./react-CU_d2d5K.js";import{Nr as n,a as r,n as i,r as a,sr as o,t as s}from"./input-CLYhA7PK.js";import{t as c}from"./jsx-runtime-Cjj9sGSy.js";import{t as l}from"./label-Cdim77Jw.js";import{a as u,i as d,n as f,o as p,r as m,t as h}from"./shared-B1GD9FMm.js";import{t as g}from"./maximize-2-BTT9QQU9.js";import{At as _,Bt as v,Kt as y,P as b,Xt as x,b as S,bt as C,hn as w,mn as T,ot as E,pn as D,vn as O,yt as k}from"./index-Cfuv_gb3.js";import{t as A}from"./textarea-DLAmNVf_.js";import{t as j}from"./checkbox-CrnXSMh2.js";import{n as M,t as N}from"./schemaHelpers-DLNTQr_6.js";var P=e(t(),1),F=c();function I({requests:e,selectedRequest:t,onRequestSelect:r,focusedIndex:i,formatRelativeTime:a}){return e.length===0?(0,F.jsx)(`div`,{className:`flex flex-1 flex-col items-center justify-center p-4 text-center`,children:(0,F.jsx)(v,{vertical:!0,noBorder:!0,message:`No elicitation requests`})}):(0,F.jsx)(`div`,{children:e.map((e,o)=>{let s=e.request.mode||`form`,c=s===`form`&&`requestedSchema`in e.request&&e.request.requestedSchema;return(0,F.jsx)(m,{id:`elicitation-request-${e.id}`,"data-testid":`elicitation-request-item-${o}`,isSelected:t?.id===e.id,isFocused:i===o,title:(0,F.jsxs)(`span`,{className:`flex items-center gap-3`,children:[e.serverName,(0,F.jsx)(n,{variant:`outline`,className:s===`url`?`bg-blue-500/20 text-blue-600 dark:text-blue-400 border-blue-500/50`:`bg-green-500/20 text-green-600 dark:text-green-400 border-green-500/50`,children:s})]}),description:(()=>{let t=a(e.timestamp),n=[];return c&&n.push(`with schema`),s===`url`&&n.push(`external action`),t+(n.length>0?` | ${n.join(`, `)}`:``)})(),onClick:()=>r(e)},e.id)})})}function L({request:e,formData:t,onFieldChange:n,idPrefix:r,testIdPrefix:i,fieldContainerClassName:a=`space-y-2`,textareaRows:o=4,showOuterLabelForBoolean:c=!0,emptyFallback:u}){return(0,F.jsx)(F.Fragment,{children:(0,P.useMemo)(()=>{if(!(`requestedSchema`in e.request))return null;let d=e.request.requestedSchema;if(!d||d.type!==`object`||!d.properties)return u??(0,F.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`No form schema available`});let f=d.properties,p=d.required||[];return(0,F.jsx)(`div`,{className:`space-y-4`,children:Object.entries(f).map(([e,u])=>{let d=u,f=p.includes(e),m=d.type||`string`,h=d.title||e,g=d.description,_=M(d),v=_.length>0,y=Array.isArray(d.enum),b=m===`array`&&Array.isArray(d.items?.enum),x=N(d),S=m===`array`&&x.length>0,C=Array.isArray(t[e])?t[e]:[],w=`${r}-${e}`,T=`${i}-${e}`;return(0,F.jsxs)(`div`,{className:a,children:[(m!==`boolean`||c)&&(0,F.jsxs)(l,{htmlFor:w,children:[h,f&&(0,F.jsx)(`span`,{className:`text-red-500 ml-1`,children:`*`})]}),g&&(0,F.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:g}),m===`boolean`?(0,F.jsxs)(`div`,{className:`flex items-center space-x-2`,children:[(0,F.jsx)(j,{id:w,"data-testid":T,checked:t[e]||!1,onCheckedChange:t=>n(e,t)}),(0,F.jsxs)(l,{htmlFor:w,className:`text-sm font-normal cursor-pointer`,children:[h,!c&&f&&(0,F.jsx)(`span`,{className:`text-red-500 ml-1`,children:`*`})]})]}):m===`number`||m===`integer`?(0,F.jsx)(s,{id:w,"data-testid":T,type:`number`,value:t[e]??``,onChange:t=>{let r=m===`integer`?parseInt(t.target.value,10):parseFloat(t.target.value);n(e,isNaN(r)?``:r)},placeholder:d.default?.toString()||``}):v?(0,F.jsxs)(`select`,{id:w,"data-testid":T,value:t[e]||``,onChange:t=>n(e,t.target.value),className:`flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2`,children:[(0,F.jsx)(`option`,{value:``,children:`Select...`}),_.map(e=>(0,F.jsx)(`option`,{value:e.const,children:e.title||e.const},e.const))]}):y?(0,F.jsxs)(`select`,{id:w,"data-testid":T,value:t[e]||``,onChange:t=>n(e,t.target.value),className:`flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2`,children:[(0,F.jsx)(`option`,{value:``,children:`Select...`}),d.enum.map((e,t)=>(0,F.jsx)(`option`,{value:e,children:d.enumNames?.[t]||e},e))]}):b?(0,F.jsx)(`div`,{className:`space-y-2`,"data-testid":T,children:d.items.enum.map(t=>{let r=`${w}-${t}`;return(0,F.jsxs)(`div`,{className:`flex items-center space-x-2`,children:[(0,F.jsx)(j,{id:r,checked:C.includes(t),onCheckedChange:r=>{n(e,r?[...C,t]:C.filter(e=>e!==t))}}),(0,F.jsx)(l,{htmlFor:r,className:`text-sm font-normal cursor-pointer`,children:t})]},t)})}):S?(0,F.jsx)(`div`,{className:`space-y-2`,"data-testid":T,children:x.map(t=>{let r=`${w}-${t.const}`;return(0,F.jsxs)(`div`,{className:`flex items-center space-x-2`,children:[(0,F.jsx)(j,{id:r,checked:C.includes(t.const),onCheckedChange:r=>{n(e,r?[...C,t.const]:C.filter(e=>e!==t.const))}}),(0,F.jsx)(l,{htmlFor:r,className:`text-sm font-normal cursor-pointer`,children:t.title||t.const})]},t.const)})}):m===`string`&&(d.format===`textarea`||d.maxLength>100)?(0,F.jsx)(A,{id:w,"data-testid":T,value:t[e]||``,onChange:t=>n(e,t.target.value),placeholder:d.default||``,rows:o}):(0,F.jsx)(s,{id:w,"data-testid":T,type:`text`,value:t[e]||``,onChange:t=>n(e,t.target.value),placeholder:d.default||``})]},e)})})},[e,t,n,r,i,a,o,c,u])})}function R(e){let[t,n]=(0,P.useState)({}),[r,i]=(0,P.useState)(!1),a=e?.request.mode||`form`,o=a===`form`,s=a===`url`;return(0,P.useEffect)(()=>{if(e&&o&&`requestedSchema`in e.request){let t=e.request.requestedSchema,r={};if(t?.type===`object`&&t.properties)for(let[e,n]of Object.entries(t.properties)){let t=n;t.default===void 0?t.type===`array`?r[e]=[]:t.type===`boolean`?r[e]=!1:t.type===`number`||t.type===`integer`?r[e]=0:r[e]=``:r[e]=t.default}n(r)}i(!1)},[e?.id,o]),{formData:t,setFieldValue:(0,P.useCallback)((e,t)=>{n(n=>({...n,[e]:t}))},[]),getMissingRequiredFields:(0,P.useCallback)(()=>!e||!o||!(`requestedSchema`in e.request)?[]:(e.request.requestedSchema?.required??[]).filter(e=>t[e]===void 0||t[e]===``||t[e]===null),[e,t,o]),urlCompleted:r,setUrlCompleted:i,mode:a,isFormMode:o,isUrlMode:s}}function z({request:t,onApprove:s,onReject:c,onClose:u,previewMode:d,onTogglePreview:f,isCopied:p,onCopy:m,onDownload:h,onFullscreen:v}){let{formData:b,setFieldValue:x,getMissingRequiredFields:C,urlCompleted:k,setUrlCompleted:A,mode:M,isFormMode:N,isUrlMode:P}=R(t);return t?(0,F.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,F.jsxs)(`div`,{className:`flex items-center justify-between p-4 border-b dark:border-zinc-700`,children:[(0,F.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,F.jsx)(`h3`,{className:`font-medium text-gray-900 dark:text-gray-100`,children:t.serverName}),(0,F.jsx)(n,{variant:`outline`,className:P?`bg-blue-500/20 text-blue-600 dark:text-blue-400 border-blue-500/50`:`bg-green-500/20 text-green-600 dark:text-green-400 border-green-500/50`,children:M}),(0,F.jsx)(`span`,{className:`text-sm text-gray-500 dark:text-gray-400`,children:new Date(t.timestamp).toLocaleString()})]}),(0,F.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,F.jsxs)(i,{children:[(0,F.jsx)(r,{render:(0,F.jsx)(o,{variant:`ghost`,size:`sm`,onClick:m,className:`h-8 w-8 p-0`,children:p?(0,F.jsx)(O,{className:`h-4 w-4 text-green-600`}):(0,F.jsx)(w,{className:`h-4 w-4`})}),nativeButton:!0}),(0,F.jsx)(a,{children:`Copy request`})]}),(0,F.jsxs)(i,{children:[(0,F.jsx)(r,{render:(0,F.jsx)(o,{variant:`ghost`,size:`sm`,onClick:h,className:`h-8 w-8 p-0`,children:(0,F.jsx)(T,{className:`h-4 w-4`})}),nativeButton:!0}),(0,F.jsx)(a,{children:`Download request`})]}),(0,F.jsxs)(i,{children:[(0,F.jsx)(r,{render:(0,F.jsx)(o,{variant:`ghost`,size:`sm`,onClick:v,className:`h-8 w-8 p-0`,children:(0,F.jsx)(g,{className:`h-4 w-4`})}),nativeButton:!0}),(0,F.jsx)(a,{children:`Fullscreen`})]}),(0,F.jsx)(o,{variant:`ghost`,size:`sm`,onClick:u,className:`h-8 w-8 p-0`,children:(0,F.jsx)(y,{className:`h-4 w-4`})})]})]}),(0,F.jsxs)(`div`,{className:`flex-1 overflow-y-auto p-4 space-y-6`,children:[(0,F.jsxs)(`div`,{className:`space-y-2`,children:[(0,F.jsx)(`h4`,{className:`text-sm font-semibold text-gray-900 dark:text-gray-100`,children:`Message`}),(0,F.jsx)(`p`,{className:`text-sm text-gray-700 dark:text-gray-300`,children:t.request.message})]}),P&&`url`in t.request&&(0,F.jsxs)(`div`,{className:`space-y-2`,children:[(0,F.jsx)(`h4`,{className:`text-sm font-semibold text-gray-900 dark:text-gray-100`,children:`External Action Required`}),(0,F.jsxs)(`div`,{className:`bg-muted rounded-lg p-4 space-y-3`,children:[(0,F.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`This request requires you to complete an action at an external URL:`}),(0,F.jsxs)(`div`,{className:`flex items-center gap-2 p-2 bg-background rounded border`,children:[(0,F.jsx)(`code`,{className:`flex-1 text-xs font-mono break-all`,children:t.request.url}),(0,F.jsxs)(o,{size:`sm`,variant:`outline`,onClick:()=>{t&&P&&`url`in t.request&&(window.open(t.request.url,`_blank`),A(!0))},className:`flex items-center gap-2`,children:[(0,F.jsx)(D,{className:`h-4 w-4`}),`Open URL`]})]}),(0,F.jsxs)(`div`,{className:`flex items-center space-x-2 pt-2`,children:[(0,F.jsx)(j,{id:`url-completed`,checked:k,onCheckedChange:e=>A(!!e)}),(0,F.jsx)(l,{htmlFor:`url-completed`,className:`text-sm font-normal cursor-pointer`,children:`I have completed the required action`})]})]})]}),N&&(0,F.jsxs)(`div`,{className:`space-y-2`,children:[(0,F.jsx)(`h4`,{className:`text-sm font-semibold text-gray-900 dark:text-gray-100`,children:`Form Data`}),(0,F.jsx)(L,{request:t,formData:b,onFieldChange:x,idPrefix:`field`,testIdPrefix:`elicitation-field`,emptyFallback:(0,F.jsx)(`div`,{className:`text-sm text-gray-500 dark:text-gray-400`,children:`No form schema available`})})]}),N&&`requestedSchema`in t.request&&t.request.requestedSchema&&(0,F.jsxs)(`details`,{className:`space-y-2`,children:[(0,F.jsx)(`summary`,{className:`text-sm font-semibold text-gray-900 dark:text-gray-100 cursor-pointer`,children:`Schema (for reference)`}),(0,F.jsx)(`div`,{className:`bg-muted rounded-lg p-3 max-h-64 overflow-auto`,children:(0,F.jsx)(S,{data:t.request.requestedSchema})})]})]}),(0,F.jsxs)(`div`,{className:`flex gap-2 p-4 border-t dark:border-zinc-700`,children:[(0,F.jsx)(o,{onClick:()=>{if(t){if(N){let e=C();if(e.length>0){E.error(`Missing required fields`,{description:`Please fill in: ${e.join(`, `)}`});return}s(t.id,{action:`accept`,content:b})}else P&&s(t.id,{action:`accept`});u(),_(()=>import(`./react-CU_d2d5K.js`).then(t=>e(t.t(),1)).then(e=>{let t=E(e.createElement(`div`,{className:`space-y-3`},e.createElement(`div`,null,e.createElement(`strong`,null,`Elicitation Response Sent`),e.createElement(`p`,{className:`text-sm text-muted-foreground mt-1`},`The tool will continue executing.`)),e.createElement(`div`,{className:`flex gap-2`},e.createElement(`button`,{"data-testid":`elicitation-view-tool-result`,className:`px-3 py-1.5 text-xs font-medium rounded-md bg-primary text-primary-foreground hover:bg-primary/90`,onClick:()=>{let e=new globalThis.CustomEvent(`navigate-to-tool-result`,{detail:{toolName:null}});window.dispatchEvent(e),E.dismiss(t)}},`View Tool Result`))),{duration:5e3})}),[])}},className:`flex-1`,disabled:P&&!k,"data-testid":`elicitation-accept-button`,children:`Accept`}),(0,F.jsx)(o,{onClick:()=>{t&&(s(t.id,{action:`decline`}),u())},variant:`outline`,className:`flex-1`,"data-testid":`elicitation-decline-button`,children:`Decline`}),(0,F.jsx)(o,{onClick:()=>{t&&(c(t.id,`User cancelled elicitation request`),u())},variant:`outline`,className:`flex-1`,"data-testid":`elicitation-cancel-button`,children:`Cancel`})]})]}):(0,F.jsx)(`div`,{className:`flex flex-col items-center justify-center h-full p-4 text-center`,children:(0,F.jsx)(`p`,{className:`text-gray-500 dark:text-gray-400`,children:`Select an elicitation request to view details`})})}function B({pendingRequests:e=[],onApprove:t,onReject:n,serverId:r,isConnected:i}){let{selectedElicitationRequestId:a,setSelectedElicitationRequestId:o}=b(),[s,c]=(0,P.useState)(null),[l,m]=(0,P.useState)(``),[g,_]=(0,P.useState)(-1),[v,S]=(0,P.useState)(!0),[w,T]=(0,P.useState)(!1),[E,D]=(0,P.useState)(!0),[O,A]=(0,P.useState)(!1),j=(0,P.useRef)(null),M=(0,P.useRef)(null),N=(0,P.useRef)(null),L=(0,P.useRef)(!1);(0,P.useEffect)(()=>{if(console.log(`[ElicitationTab] Auto-selection check:`,{selectedElicitationRequestId:a,pendingRequestsCount:e.length,currentSelectedId:s?.id}),a&&e.length>0){let t=e.find(e=>e.id===a);console.log(`[ElicitationTab] Found request for auto-selection:`,!!t,t?.id),t&&(console.log(`[ElicitationTab] Auto-selecting request:`,t.id),o(null),c(t),setTimeout(()=>{let e=document.getElementById(`elicitation-request-${t.id}`);console.log(`[ElicitationTab] Scrolling to element:`,!!e),e&&e.scrollIntoView({behavior:`smooth`,block:`nearest`})},100))}},[a,e,o]),(0,P.useEffect)(()=>{let t=t=>{let n=t.detail.requestId;console.log(`[ElicitationTab] Custom navigate event received:`,n);let r=e.find(e=>e.id===n);r&&(console.log(`[ElicitationTab] Selecting request from event:`,n),c(r),setTimeout(()=>{let e=document.getElementById(`elicitation-request-${n}`);e&&e.scrollIntoView({behavior:`smooth`,block:`nearest`})},200))};return window.addEventListener(`navigate-to-elicitation`,t),()=>window.removeEventListener(`navigate-to-elicitation`,t)},[e]),(0,P.useEffect)(()=>{v&&e.length>0&&j.current&&!L.current&&(j.current.scrollTop=0)},[e.length,v]),(0,P.useEffect)(()=>{let e=j.current;if(!e)return;let t=()=>{e.scrollTop>0&&(L.current=!0,S(!1))};return e.addEventListener(`scroll`,t),()=>e.removeEventListener(`scroll`,t)},[]),(0,P.useEffect)(()=>{e.length===0&&(L.current=!1,S(!0))},[e.length]),(0,P.useEffect)(()=>{w&&N.current&&N.current.focus()},[w]);let R=(0,P.useCallback)(()=>{l.trim()||T(!1)},[l]),B=(0,P.useMemo)(()=>{if(!l.trim())return e;let t=l.toLowerCase();return e.filter(e=>e.serverName.toLowerCase().includes(t)||e.request.message.toLowerCase().includes(t)||JSON.stringify(e.request||{}).toLowerCase().includes(t))},[e,l]);(0,P.useEffect)(()=>{_(-1)},[l]),(0,P.useEffect)(()=>{let e=e=>{let t=e.target;if(t.tagName===`INPUT`||t.tagName===`TEXTAREA`||t.contentEditable===`true`||e.metaKey||e.ctrlKey||e.altKey)return;let n=B;if(e.key===`ArrowDown`)e.preventDefault(),_(e=>{let t=e+1;return t>=n.length?0:t});else if(e.key===`ArrowUp`)e.preventDefault(),_(e=>{let t=e-1;return t<0?n.length-1:t});else if(e.key===`Enter`&&g>=0){e.preventDefault();let t=B[g];t&&V(t)}};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[g,B]),(0,P.useEffect)(()=>{if(g>=0){let e=`elicitation-request-${B[g]?.id}`,t=document.getElementById(e);t&&t.scrollIntoView({behavior:`smooth`,block:`nearest`})}},[g,B]);let V=(0,P.useCallback)(e=>{c(e)},[]),H=(0,P.useCallback)(()=>{window.confirm(`Are you sure you want to cancel all elicitation requests? This cannot be undone.`)&&(e.forEach(e=>{n(e.id,`User cancelled all requests`)}),c(null))},[e,n]),U=(0,P.useCallback)(async()=>{if(s)try{await k(JSON.stringify({id:s.id,serverName:s.serverName,timestamp:s.timestamp,request:s.request},null,2)),A(!0),setTimeout(()=>A(!1),2e3)}catch(e){console.error(`[ElicitationTab] Failed to copy request:`,e)}},[s]),W=(0,P.useCallback)(()=>{if(s)try{let e=new globalThis.Blob([JSON.stringify({id:s.id,serverName:s.serverName,timestamp:s.timestamp,request:s.request},null,2)],{type:`application/json`}),t=URL.createObjectURL(e),n=document.createElement(`a`);n.href=t,n.download=`elicitation-request-${Date.now()}.json`,document.body.appendChild(n),n.click(),document.body.removeChild(n),URL.revokeObjectURL(t)}catch(e){console.error(`[ElicitationTab] Failed to download request:`,e)}},[s]),G=(0,P.useCallback)(async()=>{if(M.current)try{document.fullscreenElement?await document.exitFullscreen():await M.current.requestFullscreen()}catch(e){console.error(`[ElicitationTab] Failed to toggle fullscreen:`,e)}},[]);return i?(0,F.jsxs)(p,{orientation:`horizontal`,className:`h-full`,children:[(0,F.jsx)(u,{defaultSize:40,minSize:30,children:(0,F.jsx)(p,{orientation:`vertical`,className:`h-full border-r dark:border-zinc-700`,children:(0,F.jsx)(u,{defaultSize:75,minSize:30,className:`h-full overflow-hidden`,children:(0,F.jsx)(f,{scrollRef:j,children:t=>(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(h,{isScrolled:t,title:`Elicitation`,icon:x,titleTestId:`elicitation-tab-header`,count:B.length,isSearchExpanded:w,searchQuery:l,searchPlaceholder:`Search requests...`,onSearchExpand:()=>T(!0),onSearchChange:m,onSearchBlur:R,bulkAction:{icon:y,label:`Cancel all`,onClick:H,disabled:e.length===0},searchInputRef:N}),(0,F.jsx)(I,{requests:B,selectedRequest:s,onRequestSelect:V,focusedIndex:g,formatRelativeTime:C})]})})})})}),(0,F.jsx)(d,{}),(0,F.jsx)(u,{defaultSize:60,minSize:40,children:(0,F.jsx)(`div`,{ref:M,className:`h-full bg-white dark:bg-zinc-900`,children:(0,F.jsx)(z,{request:s,onApprove:t,onReject:n,onClose:()=>c(null),previewMode:E,onTogglePreview:()=>D(!E),isCopied:O,onCopy:U,onDownload:W,onFullscreen:G})})})]}):(0,F.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full p-4 text-center`,children:[(0,F.jsx)(x,{className:`h-12 w-12 text-gray-400 dark:text-gray-600 mb-3`}),(0,F.jsx)(`p`,{className:`text-gray-500 dark:text-gray-400`,children:`Not connected to server`})]})}export{B as ElicitationTab};
|
|
1
|
+
import{s as e,t}from"./react-CU_d2d5K.js";import{Nr as n,a as r,n as i,r as a,sr as o,t as s}from"./input-CLYhA7PK.js";import{t as c}from"./jsx-runtime-Cjj9sGSy.js";import{t as l}from"./label-Cdim77Jw.js";import{a as u,i as d,n as f,o as p,r as m,t as h}from"./shared-Dbc2GbRx.js";import{t as g}from"./maximize-2-BTT9QQU9.js";import{At as _,Bt as v,Kt as y,P as b,Xt as x,b as S,bt as C,hn as w,mn as T,ot as E,pn as D,vn as O,yt as k}from"./index-CoRK2C3M.js";import{t as A}from"./textarea-DLAmNVf_.js";import{t as j}from"./checkbox-DZWS_U_i.js";import{n as M,t as N}from"./schemaHelpers-DLNTQr_6.js";var P=e(t(),1),F=c();function I({requests:e,selectedRequest:t,onRequestSelect:r,focusedIndex:i,formatRelativeTime:a}){return e.length===0?(0,F.jsx)(`div`,{className:`flex flex-1 flex-col items-center justify-center p-4 text-center`,children:(0,F.jsx)(v,{vertical:!0,noBorder:!0,message:`No elicitation requests`})}):(0,F.jsx)(`div`,{children:e.map((e,o)=>{let s=e.request.mode||`form`,c=s===`form`&&`requestedSchema`in e.request&&e.request.requestedSchema;return(0,F.jsx)(m,{id:`elicitation-request-${e.id}`,"data-testid":`elicitation-request-item-${o}`,isSelected:t?.id===e.id,isFocused:i===o,title:(0,F.jsxs)(`span`,{className:`flex items-center gap-3`,children:[e.serverName,(0,F.jsx)(n,{variant:`outline`,className:s===`url`?`bg-blue-500/20 text-blue-600 dark:text-blue-400 border-blue-500/50`:`bg-green-500/20 text-green-600 dark:text-green-400 border-green-500/50`,children:s})]}),description:(()=>{let t=a(e.timestamp),n=[];return c&&n.push(`with schema`),s===`url`&&n.push(`external action`),t+(n.length>0?` | ${n.join(`, `)}`:``)})(),onClick:()=>r(e)},e.id)})})}function L({request:e,formData:t,onFieldChange:n,idPrefix:r,testIdPrefix:i,fieldContainerClassName:a=`space-y-2`,textareaRows:o=4,showOuterLabelForBoolean:c=!0,emptyFallback:u}){return(0,F.jsx)(F.Fragment,{children:(0,P.useMemo)(()=>{if(!(`requestedSchema`in e.request))return null;let d=e.request.requestedSchema;if(!d||d.type!==`object`||!d.properties)return u??(0,F.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`No form schema available`});let f=d.properties,p=d.required||[];return(0,F.jsx)(`div`,{className:`space-y-4`,children:Object.entries(f).map(([e,u])=>{let d=u,f=p.includes(e),m=d.type||`string`,h=d.title||e,g=d.description,_=M(d),v=_.length>0,y=Array.isArray(d.enum),b=m===`array`&&Array.isArray(d.items?.enum),x=N(d),S=m===`array`&&x.length>0,C=Array.isArray(t[e])?t[e]:[],w=`${r}-${e}`,T=`${i}-${e}`;return(0,F.jsxs)(`div`,{className:a,children:[(m!==`boolean`||c)&&(0,F.jsxs)(l,{htmlFor:w,children:[h,f&&(0,F.jsx)(`span`,{className:`text-red-500 ml-1`,children:`*`})]}),g&&(0,F.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:g}),m===`boolean`?(0,F.jsxs)(`div`,{className:`flex items-center space-x-2`,children:[(0,F.jsx)(j,{id:w,"data-testid":T,checked:t[e]||!1,onCheckedChange:t=>n(e,t)}),(0,F.jsxs)(l,{htmlFor:w,className:`text-sm font-normal cursor-pointer`,children:[h,!c&&f&&(0,F.jsx)(`span`,{className:`text-red-500 ml-1`,children:`*`})]})]}):m===`number`||m===`integer`?(0,F.jsx)(s,{id:w,"data-testid":T,type:`number`,value:t[e]??``,onChange:t=>{let r=m===`integer`?parseInt(t.target.value,10):parseFloat(t.target.value);n(e,isNaN(r)?``:r)},placeholder:d.default?.toString()||``}):v?(0,F.jsxs)(`select`,{id:w,"data-testid":T,value:t[e]||``,onChange:t=>n(e,t.target.value),className:`flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2`,children:[(0,F.jsx)(`option`,{value:``,children:`Select...`}),_.map(e=>(0,F.jsx)(`option`,{value:e.const,children:e.title||e.const},e.const))]}):y?(0,F.jsxs)(`select`,{id:w,"data-testid":T,value:t[e]||``,onChange:t=>n(e,t.target.value),className:`flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2`,children:[(0,F.jsx)(`option`,{value:``,children:`Select...`}),d.enum.map((e,t)=>(0,F.jsx)(`option`,{value:e,children:d.enumNames?.[t]||e},e))]}):b?(0,F.jsx)(`div`,{className:`space-y-2`,"data-testid":T,children:d.items.enum.map(t=>{let r=`${w}-${t}`;return(0,F.jsxs)(`div`,{className:`flex items-center space-x-2`,children:[(0,F.jsx)(j,{id:r,checked:C.includes(t),onCheckedChange:r=>{n(e,r?[...C,t]:C.filter(e=>e!==t))}}),(0,F.jsx)(l,{htmlFor:r,className:`text-sm font-normal cursor-pointer`,children:t})]},t)})}):S?(0,F.jsx)(`div`,{className:`space-y-2`,"data-testid":T,children:x.map(t=>{let r=`${w}-${t.const}`;return(0,F.jsxs)(`div`,{className:`flex items-center space-x-2`,children:[(0,F.jsx)(j,{id:r,checked:C.includes(t.const),onCheckedChange:r=>{n(e,r?[...C,t.const]:C.filter(e=>e!==t.const))}}),(0,F.jsx)(l,{htmlFor:r,className:`text-sm font-normal cursor-pointer`,children:t.title||t.const})]},t.const)})}):m===`string`&&(d.format===`textarea`||d.maxLength>100)?(0,F.jsx)(A,{id:w,"data-testid":T,value:t[e]||``,onChange:t=>n(e,t.target.value),placeholder:d.default||``,rows:o}):(0,F.jsx)(s,{id:w,"data-testid":T,type:`text`,value:t[e]||``,onChange:t=>n(e,t.target.value),placeholder:d.default||``})]},e)})})},[e,t,n,r,i,a,o,c,u])})}function R(e){let[t,n]=(0,P.useState)({}),[r,i]=(0,P.useState)(!1),a=e?.request.mode||`form`,o=a===`form`,s=a===`url`;return(0,P.useEffect)(()=>{if(e&&o&&`requestedSchema`in e.request){let t=e.request.requestedSchema,r={};if(t?.type===`object`&&t.properties)for(let[e,n]of Object.entries(t.properties)){let t=n;t.default===void 0?t.type===`array`?r[e]=[]:t.type===`boolean`?r[e]=!1:t.type===`number`||t.type===`integer`?r[e]=0:r[e]=``:r[e]=t.default}n(r)}i(!1)},[e?.id,o]),{formData:t,setFieldValue:(0,P.useCallback)((e,t)=>{n(n=>({...n,[e]:t}))},[]),getMissingRequiredFields:(0,P.useCallback)(()=>!e||!o||!(`requestedSchema`in e.request)?[]:(e.request.requestedSchema?.required??[]).filter(e=>t[e]===void 0||t[e]===``||t[e]===null),[e,t,o]),urlCompleted:r,setUrlCompleted:i,mode:a,isFormMode:o,isUrlMode:s}}function z({request:t,onApprove:s,onReject:c,onClose:u,previewMode:d,onTogglePreview:f,isCopied:p,onCopy:m,onDownload:h,onFullscreen:v}){let{formData:b,setFieldValue:x,getMissingRequiredFields:C,urlCompleted:k,setUrlCompleted:A,mode:M,isFormMode:N,isUrlMode:P}=R(t);return t?(0,F.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,F.jsxs)(`div`,{className:`flex items-center justify-between p-4 border-b dark:border-zinc-700`,children:[(0,F.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,F.jsx)(`h3`,{className:`font-medium text-gray-900 dark:text-gray-100`,children:t.serverName}),(0,F.jsx)(n,{variant:`outline`,className:P?`bg-blue-500/20 text-blue-600 dark:text-blue-400 border-blue-500/50`:`bg-green-500/20 text-green-600 dark:text-green-400 border-green-500/50`,children:M}),(0,F.jsx)(`span`,{className:`text-sm text-gray-500 dark:text-gray-400`,children:new Date(t.timestamp).toLocaleString()})]}),(0,F.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,F.jsxs)(i,{children:[(0,F.jsx)(r,{render:(0,F.jsx)(o,{variant:`ghost`,size:`sm`,onClick:m,className:`h-8 w-8 p-0`,children:p?(0,F.jsx)(O,{className:`h-4 w-4 text-green-600`}):(0,F.jsx)(w,{className:`h-4 w-4`})}),nativeButton:!0}),(0,F.jsx)(a,{children:`Copy request`})]}),(0,F.jsxs)(i,{children:[(0,F.jsx)(r,{render:(0,F.jsx)(o,{variant:`ghost`,size:`sm`,onClick:h,className:`h-8 w-8 p-0`,children:(0,F.jsx)(T,{className:`h-4 w-4`})}),nativeButton:!0}),(0,F.jsx)(a,{children:`Download request`})]}),(0,F.jsxs)(i,{children:[(0,F.jsx)(r,{render:(0,F.jsx)(o,{variant:`ghost`,size:`sm`,onClick:v,className:`h-8 w-8 p-0`,children:(0,F.jsx)(g,{className:`h-4 w-4`})}),nativeButton:!0}),(0,F.jsx)(a,{children:`Fullscreen`})]}),(0,F.jsx)(o,{variant:`ghost`,size:`sm`,onClick:u,className:`h-8 w-8 p-0`,children:(0,F.jsx)(y,{className:`h-4 w-4`})})]})]}),(0,F.jsxs)(`div`,{className:`flex-1 overflow-y-auto p-4 space-y-6`,children:[(0,F.jsxs)(`div`,{className:`space-y-2`,children:[(0,F.jsx)(`h4`,{className:`text-sm font-semibold text-gray-900 dark:text-gray-100`,children:`Message`}),(0,F.jsx)(`p`,{className:`text-sm text-gray-700 dark:text-gray-300`,children:t.request.message})]}),P&&`url`in t.request&&(0,F.jsxs)(`div`,{className:`space-y-2`,children:[(0,F.jsx)(`h4`,{className:`text-sm font-semibold text-gray-900 dark:text-gray-100`,children:`External Action Required`}),(0,F.jsxs)(`div`,{className:`bg-muted rounded-lg p-4 space-y-3`,children:[(0,F.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`This request requires you to complete an action at an external URL:`}),(0,F.jsxs)(`div`,{className:`flex items-center gap-2 p-2 bg-background rounded border`,children:[(0,F.jsx)(`code`,{className:`flex-1 text-xs font-mono break-all`,children:t.request.url}),(0,F.jsxs)(o,{size:`sm`,variant:`outline`,onClick:()=>{t&&P&&`url`in t.request&&(window.open(t.request.url,`_blank`),A(!0))},className:`flex items-center gap-2`,children:[(0,F.jsx)(D,{className:`h-4 w-4`}),`Open URL`]})]}),(0,F.jsxs)(`div`,{className:`flex items-center space-x-2 pt-2`,children:[(0,F.jsx)(j,{id:`url-completed`,checked:k,onCheckedChange:e=>A(!!e)}),(0,F.jsx)(l,{htmlFor:`url-completed`,className:`text-sm font-normal cursor-pointer`,children:`I have completed the required action`})]})]})]}),N&&(0,F.jsxs)(`div`,{className:`space-y-2`,children:[(0,F.jsx)(`h4`,{className:`text-sm font-semibold text-gray-900 dark:text-gray-100`,children:`Form Data`}),(0,F.jsx)(L,{request:t,formData:b,onFieldChange:x,idPrefix:`field`,testIdPrefix:`elicitation-field`,emptyFallback:(0,F.jsx)(`div`,{className:`text-sm text-gray-500 dark:text-gray-400`,children:`No form schema available`})})]}),N&&`requestedSchema`in t.request&&t.request.requestedSchema&&(0,F.jsxs)(`details`,{className:`space-y-2`,children:[(0,F.jsx)(`summary`,{className:`text-sm font-semibold text-gray-900 dark:text-gray-100 cursor-pointer`,children:`Schema (for reference)`}),(0,F.jsx)(`div`,{className:`bg-muted rounded-lg p-3 max-h-64 overflow-auto`,children:(0,F.jsx)(S,{data:t.request.requestedSchema})})]})]}),(0,F.jsxs)(`div`,{className:`flex gap-2 p-4 border-t dark:border-zinc-700`,children:[(0,F.jsx)(o,{onClick:()=>{if(t){if(N){let e=C();if(e.length>0){E.error(`Missing required fields`,{description:`Please fill in: ${e.join(`, `)}`});return}s(t.id,{action:`accept`,content:b})}else P&&s(t.id,{action:`accept`});u(),_(()=>import(`./react-CU_d2d5K.js`).then(t=>e(t.t(),1)).then(e=>{let t=E(e.createElement(`div`,{className:`space-y-3`},e.createElement(`div`,null,e.createElement(`strong`,null,`Elicitation Response Sent`),e.createElement(`p`,{className:`text-sm text-muted-foreground mt-1`},`The tool will continue executing.`)),e.createElement(`div`,{className:`flex gap-2`},e.createElement(`button`,{"data-testid":`elicitation-view-tool-result`,className:`px-3 py-1.5 text-xs font-medium rounded-md bg-primary text-primary-foreground hover:bg-primary/90`,onClick:()=>{let e=new globalThis.CustomEvent(`navigate-to-tool-result`,{detail:{toolName:null}});window.dispatchEvent(e),E.dismiss(t)}},`View Tool Result`))),{duration:5e3})}),[])}},className:`flex-1`,disabled:P&&!k,"data-testid":`elicitation-accept-button`,children:`Accept`}),(0,F.jsx)(o,{onClick:()=>{t&&(s(t.id,{action:`decline`}),u())},variant:`outline`,className:`flex-1`,"data-testid":`elicitation-decline-button`,children:`Decline`}),(0,F.jsx)(o,{onClick:()=>{t&&(c(t.id,`User cancelled elicitation request`),u())},variant:`outline`,className:`flex-1`,"data-testid":`elicitation-cancel-button`,children:`Cancel`})]})]}):(0,F.jsx)(`div`,{className:`flex flex-col items-center justify-center h-full p-4 text-center`,children:(0,F.jsx)(`p`,{className:`text-gray-500 dark:text-gray-400`,children:`Select an elicitation request to view details`})})}function B({pendingRequests:e=[],onApprove:t,onReject:n,serverId:r,isConnected:i}){let{selectedElicitationRequestId:a,setSelectedElicitationRequestId:o}=b(),[s,c]=(0,P.useState)(null),[l,m]=(0,P.useState)(``),[g,_]=(0,P.useState)(-1),[v,S]=(0,P.useState)(!0),[w,T]=(0,P.useState)(!1),[E,D]=(0,P.useState)(!0),[O,A]=(0,P.useState)(!1),j=(0,P.useRef)(null),M=(0,P.useRef)(null),N=(0,P.useRef)(null),L=(0,P.useRef)(!1);(0,P.useEffect)(()=>{if(console.log(`[ElicitationTab] Auto-selection check:`,{selectedElicitationRequestId:a,pendingRequestsCount:e.length,currentSelectedId:s?.id}),a&&e.length>0){let t=e.find(e=>e.id===a);console.log(`[ElicitationTab] Found request for auto-selection:`,!!t,t?.id),t&&(console.log(`[ElicitationTab] Auto-selecting request:`,t.id),o(null),c(t),setTimeout(()=>{let e=document.getElementById(`elicitation-request-${t.id}`);console.log(`[ElicitationTab] Scrolling to element:`,!!e),e&&e.scrollIntoView({behavior:`smooth`,block:`nearest`})},100))}},[a,e,o]),(0,P.useEffect)(()=>{let t=t=>{let n=t.detail.requestId;console.log(`[ElicitationTab] Custom navigate event received:`,n);let r=e.find(e=>e.id===n);r&&(console.log(`[ElicitationTab] Selecting request from event:`,n),c(r),setTimeout(()=>{let e=document.getElementById(`elicitation-request-${n}`);e&&e.scrollIntoView({behavior:`smooth`,block:`nearest`})},200))};return window.addEventListener(`navigate-to-elicitation`,t),()=>window.removeEventListener(`navigate-to-elicitation`,t)},[e]),(0,P.useEffect)(()=>{v&&e.length>0&&j.current&&!L.current&&(j.current.scrollTop=0)},[e.length,v]),(0,P.useEffect)(()=>{let e=j.current;if(!e)return;let t=()=>{e.scrollTop>0&&(L.current=!0,S(!1))};return e.addEventListener(`scroll`,t),()=>e.removeEventListener(`scroll`,t)},[]),(0,P.useEffect)(()=>{e.length===0&&(L.current=!1,S(!0))},[e.length]),(0,P.useEffect)(()=>{w&&N.current&&N.current.focus()},[w]);let R=(0,P.useCallback)(()=>{l.trim()||T(!1)},[l]),B=(0,P.useMemo)(()=>{if(!l.trim())return e;let t=l.toLowerCase();return e.filter(e=>e.serverName.toLowerCase().includes(t)||e.request.message.toLowerCase().includes(t)||JSON.stringify(e.request||{}).toLowerCase().includes(t))},[e,l]);(0,P.useEffect)(()=>{_(-1)},[l]),(0,P.useEffect)(()=>{let e=e=>{let t=e.target;if(t.tagName===`INPUT`||t.tagName===`TEXTAREA`||t.contentEditable===`true`||e.metaKey||e.ctrlKey||e.altKey)return;let n=B;if(e.key===`ArrowDown`)e.preventDefault(),_(e=>{let t=e+1;return t>=n.length?0:t});else if(e.key===`ArrowUp`)e.preventDefault(),_(e=>{let t=e-1;return t<0?n.length-1:t});else if(e.key===`Enter`&&g>=0){e.preventDefault();let t=B[g];t&&V(t)}};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[g,B]),(0,P.useEffect)(()=>{if(g>=0){let e=`elicitation-request-${B[g]?.id}`,t=document.getElementById(e);t&&t.scrollIntoView({behavior:`smooth`,block:`nearest`})}},[g,B]);let V=(0,P.useCallback)(e=>{c(e)},[]),H=(0,P.useCallback)(()=>{window.confirm(`Are you sure you want to cancel all elicitation requests? This cannot be undone.`)&&(e.forEach(e=>{n(e.id,`User cancelled all requests`)}),c(null))},[e,n]),U=(0,P.useCallback)(async()=>{if(s)try{await k(JSON.stringify({id:s.id,serverName:s.serverName,timestamp:s.timestamp,request:s.request},null,2)),A(!0),setTimeout(()=>A(!1),2e3)}catch(e){console.error(`[ElicitationTab] Failed to copy request:`,e)}},[s]),W=(0,P.useCallback)(()=>{if(s)try{let e=new globalThis.Blob([JSON.stringify({id:s.id,serverName:s.serverName,timestamp:s.timestamp,request:s.request},null,2)],{type:`application/json`}),t=URL.createObjectURL(e),n=document.createElement(`a`);n.href=t,n.download=`elicitation-request-${Date.now()}.json`,document.body.appendChild(n),n.click(),document.body.removeChild(n),URL.revokeObjectURL(t)}catch(e){console.error(`[ElicitationTab] Failed to download request:`,e)}},[s]),G=(0,P.useCallback)(async()=>{if(M.current)try{document.fullscreenElement?await document.exitFullscreen():await M.current.requestFullscreen()}catch(e){console.error(`[ElicitationTab] Failed to toggle fullscreen:`,e)}},[]);return i?(0,F.jsxs)(p,{orientation:`horizontal`,className:`h-full`,children:[(0,F.jsx)(u,{defaultSize:40,minSize:30,children:(0,F.jsx)(p,{orientation:`vertical`,className:`h-full border-r dark:border-zinc-700`,children:(0,F.jsx)(u,{defaultSize:75,minSize:30,className:`h-full overflow-hidden`,children:(0,F.jsx)(f,{scrollRef:j,children:t=>(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(h,{isScrolled:t,title:`Elicitation`,icon:x,titleTestId:`elicitation-tab-header`,count:B.length,isSearchExpanded:w,searchQuery:l,searchPlaceholder:`Search requests...`,onSearchExpand:()=>T(!0),onSearchChange:m,onSearchBlur:R,bulkAction:{icon:y,label:`Cancel all`,onClick:H,disabled:e.length===0},searchInputRef:N}),(0,F.jsx)(I,{requests:B,selectedRequest:s,onRequestSelect:V,focusedIndex:g,formatRelativeTime:C})]})})})})}),(0,F.jsx)(d,{}),(0,F.jsx)(u,{defaultSize:60,minSize:40,children:(0,F.jsx)(`div`,{ref:M,className:`h-full bg-white dark:bg-zinc-900`,children:(0,F.jsx)(z,{request:s,onApprove:t,onReject:n,onClose:()=>c(null),previewMode:E,onTogglePreview:()=>D(!E),isCopied:O,onCopy:U,onDownload:W,onFullscreen:G})})})]}):(0,F.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full p-4 text-center`,children:[(0,F.jsx)(x,{className:`h-12 w-12 text-gray-400 dark:text-gray-600 mb-3`}),(0,F.jsx)(`p`,{className:`text-gray-500 dark:text-gray-400`,children:`Not connected to server`})]})}export{B as ElicitationTab};
|
package/dist/web/assets/{ManufactOAuthCallback-Btu4B6u6.js → ManufactOAuthCallback-DD3qfIC3.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{s as e,t}from"./react-CU_d2d5K.js";import{t as n}from"./jsx-runtime-Cjj9sGSy.js";import{in as r,j as i}from"./index-
|
|
1
|
+
import{s as e,t}from"./react-CU_d2d5K.js";import{t as n}from"./jsx-runtime-Cjj9sGSy.js";import{in as r,j as i}from"./index-CoRK2C3M.js";var a=e(t(),1),o=n();function s(){let[e,t]=(0,a.useState)(null);return(0,a.useEffect)(()=>{i().then(()=>window.close()).catch(e=>{t(e instanceof Error?e.message:String(e))})},[]),(0,o.jsx)(`div`,{className:`flex h-screen w-full items-center justify-center bg-background`,children:(0,o.jsx)(`div`,{className:`flex max-w-md flex-col items-center gap-4 p-6 text-center`,children:e?(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(`h1`,{className:`text-lg font-semibold text-destructive`,children:`Authorization failed`}),(0,o.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:e})]}):(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(r,{className:`size-8 animate-spin text-muted-foreground`}),(0,o.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Completing Manufact authorization…`})]})})})}export{s as ManufactOAuthCallback};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{s as e,t}from"./react-CU_d2d5K.js";import{Lr as n}from"./input-CLYhA7PK.js";import{t as r}from"./jsx-runtime-Cjj9sGSy.js";import{Dt as i,Ft as a,hn as o,vn as s,yt as c}from"./index-
|
|
1
|
+
import{s as e,t}from"./react-CU_d2d5K.js";import{Lr as n}from"./input-CLYhA7PK.js";import{t as r}from"./jsx-runtime-Cjj9sGSy.js";import{Dt as i,Ft as a,hn as o,vn as s,yt as c}from"./index-CoRK2C3M.js";import{t as l}from"./checkbox-DZWS_U_i.js";var u=e(t(),1);function d({prompts:e,callPrompt:t,serverId:n}){let[r,o]=(0,u.useState)(null),[s,c]=(0,u.useState)({}),[l,d]=(0,u.useState)([]),[f,p]=(0,u.useState)(!1),[m,h]=(0,u.useState)(``),g=(0,u.useMemo)(()=>{if(!m.trim())return e;let t=m.toLowerCase();return e.filter(e=>e.name.toLowerCase().includes(t)||e.description?.toLowerCase().includes(t))},[e,m]),_=(0,u.useCallback)(e=>{o(e);let t={};e.arguments&&e.arguments.forEach(e=>{t[e.name]=``}),c(t)},[]),v=(0,u.useCallback)((e,t)=>{c(n=>({...n,[e]:t}))},[]),y=(0,u.useCallback)(async(e,r)=>{if(f)return;p(!0);let o=Date.now();try{let s=await t(e.name,r),c=Date.now()-o;i(new a({promptName:e.name,serverId:n,success:!0})).catch(()=>{}),d(t=>[{promptName:e.name,args:r,result:s,timestamp:o,duration:c},...t])}catch(t){i(new a({promptName:e.name,serverId:n,success:!1,error:t instanceof Error?t.message:`Unknown error`})).catch(()=>{});let s=t instanceof Error?t.message:String(t),c={promptName:e.name,args:r,result:{error:s,isError:!0},error:s,timestamp:o,duration:Date.now()-o};d(e=>[c,...e])}finally{p(!1)}},[f,t,n]),b=(0,u.useCallback)(e=>{d(t=>t.filter((t,n)=>n!==e))},[]),x=(0,u.useCallback)(()=>{d([])},[]);return(0,u.useEffect)(()=>{if(r){let t=e.find(e=>e.name===r.name);if(!t){o(null);return}t!==r&&(JSON.stringify(t.arguments)!==JSON.stringify(r.arguments)||t.description!==r.description)&&o(t)}},[e,r]),{filteredPrompts:g,selectedPrompt:r,setSelectedPrompt:o,results:l,handleDeleteResult:b,promptArgs:s,setPromptArgs:c,isExecuting:f,handlePromptSelect:_,handleArgChange:v,executePrompt:y,executeSelectedPrompt:(0,u.useCallback)(async()=>{!r||f||y(r,s)},[r,s,f,y]),searchQuery:m,setSearchQuery:h,clearPromptResults:x}}var f;function p(e){if(!f)if(typeof document<`u`)f=document.createElement(`textarea`);else return;var t=`&`+e+`;`;f.innerHTML=t;var n=f.value;return n===t?void 0:n}var m=32,h=9,g=13,_=10,v=96,y=126,b=91,x=94,S=62,C=35,w=36,T=37,E=45,D=61,O=92,k=42,A=95,j=60,M=64,N=93,P=33,F=38,I=58,L=70,R=102,ee=104,te=119,z=116,ne=112,re=115,ie=160,ae=12,oe=44,se=59,ce=63,le=46,ue=47,de=39,fe=34,pe=43,B=124,me=123,he=125,ge=40,_e=41,ve=30,ye=31,V=48,H=57,U=65,W=90,G=97,K=122,be=128,q=32,J={blockQuote:0,breakLine:1,breakThematic:2,codeBlock:3,codeInline:4,footnote:5,footnoteReference:6,frontmatter:7,gfmTask:8,heading:9,htmlBlock:10,htmlComment:11,htmlSelfClosing:12,image:13,link:14,orderedList:15,paragraph:16,ref:17,refCollection:18,table:19,text:20,textFormatted:21,unorderedList:22};function xe(e){if(!Ne(e,`---`))return null;let t=3;for(;t<e.length&&(e[t]===` `||e[t]===` `);)t++;if(t<e.length&&e[t]===`\r`&&t++,t>=e.length||e[t]!==`
|
|
2
2
|
`)return null;t++;let n=!1;for(;t<e.length;){let r=t;for(;t<e.length&&e[t]!==`
|
|
3
3
|
`&&e[t]!==`\r`;)t++;if(t>=e.length)break;let i=t;if(e[t]===`\r`&&t++,t<e.length&&e[t]===`
|
|
4
4
|
`&&t++,Ne(e,`---`,r))return{endPos:t,hasValidYaml:n};let a=e.indexOf(`:`,r);a!==-1&&a<i&&(n=!0)}return null}var Se=/&([a-zA-Z0-9]+|#[0-9]{1,7}|#x[0-9a-fA-F]{1,6});/gi,Ce={class:`className`,for:`htmlFor`,allowfullscreen:`allowFullScreen`,allowtransparency:`allowTransparency`,autocomplete:`autoComplete`,autofocus:`autoFocus`,autoplay:`autoPlay`,cellpadding:`cellPadding`,cellspacing:`cellSpacing`,charset:`charSet`,classid:`classId`,colspan:`colSpan`,contenteditable:`contentEditable`,contextmenu:`contextMenu`,crossorigin:`crossOrigin`,enctype:`encType`,formaction:`formAction`,formenctype:`formEncType`,formmethod:`formMethod`,formnovalidate:`formNoValidate`,formtarget:`formTarget`,frameborder:`frameBorder`,hreflang:`hrefLang`,inputmode:`inputMode`,keyparams:`keyParams`,keytype:`keyType`,marginheight:`marginHeight`,marginwidth:`marginWidth`,maxlength:`maxLength`,mediagroup:`mediaGroup`,minlength:`minLength`,novalidate:`noValidate`,radiogroup:`radioGroup`,readonly:`readOnly`,rowspan:`rowSpan`,spellcheck:`spellCheck`,srcdoc:`srcDoc`,srclang:`srcLang`,srcset:`srcSet`,tabindex:`tabIndex`,usemap:`useMap`,viewbox:`viewBox`};function we(e){var t={};for(var n in e){var r=Ce[n.toLowerCase()];if(r)t[r]=e[n];else{var i=n.indexOf(`:`);i===-1?t[n]=e[n]:t[n.slice(0,i)+n[i+1].toUpperCase()+n.slice(i+2)]=e[n]}}return t}var Te=/(\n|^[-*]\s|^#|^ {2,}|^-{2,}|^>\s|^<(div|p|h[1-6]|ul|ol|li|blockquote|pre|table|thead|tbody|tr|td|th|dl|dt|dd|hr|address|article|aside|details|dialog|figure|figcaption|footer|form|header|main|menu|nav|section|summary|textarea|fieldset|legend|center|dir|hgroup|marquee|search|output|template)\b)/i;function Y(e){return e.indexOf(`&`)===-1?e:e.replace(Se,(e,t)=>{var n=p(t);if(n)return n;if(t[0]===`#`){var r=t[1]===`x`||t[1]===`X`?parseInt(t.slice(2),16):parseInt(t.slice(1),10);return r===0||r>=55296&&r<=57343||r>1114111?`�`:r<=65535?String.fromCharCode(r):String.fromCharCode(55296+(r-65536>>10),56320+(r-65536&1023))}return e})}var Ee=/(javascript|vbscript|data(?!:image)):/i;function De(e){if(Ee.test(e))return null;if(e.indexOf(`%`)===-1)return e;try{let t=decodeURIComponent(e).replace(/[^A-Za-z0-9/:]/g,``);if(Ee.test(t))return null}catch{return null}return e}var Oe={},ke,Ae;for(ke=[192,193,194,195,196,197,224,225,226,227,228,229,230,198],Ae=0;Ae<ke.length;Ae++)Oe[ke[Ae]]=`a`;for(Oe[231]=Oe[199]=`c`,Oe[240]=Oe[208]=`d`,ke=[200,201,202,203,233,232,234,235],Ae=0;Ae<ke.length;Ae++)Oe[ke[Ae]]=`e`;for(ke=[207,239,206,238,205,237,204,236],Ae=0;Ae<ke.length;Ae++)Oe[ke[Ae]]=`i`;for(Oe[209]=Oe[241]=`n`,ke=[248,216,339,338,213,245,212,244,211,243,210,242],Ae=0;Ae<ke.length;Ae++)Oe[ke[Ae]]=`o`;for(ke=[220,252,219,251,218,250,217,249],Ae=0;Ae<ke.length;Ae++)Oe[ke[Ae]]=`u`;Oe[376]=Oe[255]=Oe[221]=Oe[253]=`y`;function je(e){return e<be&&(qe[e]&(Re|ze))!==0}function Me(e){for(var t=``,n=-1,r=0;r<e.length;r++){var i=e.charCodeAt(r);if(je(i))i>=U&&i<=W?(n>=0&&(t+=e.slice(n,r),n=-1),t+=String.fromCharCode(i+q)):n<0&&(n=r);else if(i===m||i===E)n>=0&&(t+=e.slice(n,r),n=-1),t+=`-`;else{n>=0&&(t+=e.slice(n,r),n=-1);var a=Oe[i];a&&(t+=a)}}return n>=0&&(t+=e.slice(n)),t}function Ne(e,t,n){return e.startsWith(t,n)}var Pe=new Set([`area`,`base`,`br`,`col`,`embed`,`hr`,`img`,`input`,`link`,`meta`,`param`,`source`,`track`,`wbr`,`circle`,`ellipse`,`line`,`path`,`polygon`,`polyline`,`rect`,`use`,`stop`,`animate`,`set`]);function Fe(e){let t=e.toLowerCase();if(Pe.has(t))return!0;let n=t.indexOf(`:`);return n===-1?!1:(t=t.slice(n+1),Pe.has(t))}var Ie=1,Le=2,Re=4,ze=8,Be=16,Ve=32,He=64,Ue=1,We=2,Ge=3,Ke=4,qe=(function(){let e=new Uint8Array(128),t;for(e[h]=Ie|Ve,e[_]=Ie|Be,e[ae]=Ie,e[g]=Ie|Be,e[m]=Ie|Ve,t=P;t<=ue;t++)e[t]=Le;for(t=I;t<=M;t++)e[t]=Le;for(t=b;t<=v;t++)e[t]=Le;for(t=me;t<=y;t++)e[t]=Le;for(t=V;t<=H;t++)e[t]=ze;for(t=U;t<=W;t++)e[t]=Re|He;for(t=G;t<=K;t++)e[t]=Re;return e})();(function(){let e=new Uint8Array(128);return e[O]=We,e[b]=Ke,e[k]=e[A]=e[y]=e[D]=Ge,e[v]=e[j]=e[M]=e[N]=e[_]=e[m]=e[P]=Ue,e[R]=e[ee]=e[te]=Ue,e})();var Je=[];function Ye(e){var t=e.indexOf(`\r`),n=e.indexOf(`\0`);if(t===-1&&n===-1)return e;var r=e.length;Je.length=0;var i=0,a=0;for(a=t===-1?n:n===-1||t<n?t:n;a<r;a++){var o=e.charCodeAt(a);o===g?(i<a&&Je.push(e.slice(i,a)),a+1<r&&e.charCodeAt(a+1)===_&&a++,Je.push(`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{s as e,t}from"./react-CU_d2d5K.js";import{sr as n}from"./input-CLYhA7PK.js";import{t as r}from"./jsx-runtime-Cjj9sGSy.js";import{t as i}from"./brush--0LobUi4.js";import{t as a}from"./code-tME-5H6D.js";import{a as o,i as s,n as c,o as l,r as u,t as d}from"./shared-
|
|
1
|
+
import{s as e,t}from"./react-CU_d2d5K.js";import{sr as n}from"./input-CLYhA7PK.js";import{t as r}from"./jsx-runtime-Cjj9sGSy.js";import{t as i}from"./brush--0LobUi4.js";import{t as a}from"./code-tME-5H6D.js";import{a as o,i as s,n as c,o as l,r as u,t as d}from"./shared-Dbc2GbRx.js";import{t as f}from"./maximize-_O55kFcr.js";import{Bt as p,Jt as m,Kt as h,b as g,bt as _,gn as v,hn as y,mn as b,vn as x,yn as S,yt as C}from"./index-CoRK2C3M.js";var w=e(t(),1),T=r();function E({notifications:e,selectedNotification:t,onNotificationSelect:n,focusedIndex:r,formatRelativeTime:i}){return e.length===0?(0,T.jsx)(`div`,{className:`flex flex-1 flex-col items-center justify-center p-4 text-center`,children:(0,T.jsx)(p,{vertical:!0,noBorder:!0,message:`No notifications yet`})}):(0,T.jsx)(`div`,{children:e.map((e,a)=>(0,T.jsx)(u,{id:`notification-${e.id}`,isSelected:t?.id===e.id,isFocused:r===a,title:(0,T.jsxs)(`span`,{className:`flex items-center gap-3`,children:[e.method,!e.read&&(0,T.jsx)(`span`,{className:`size-1.5 block rounded-full bg-orange-500`})]}),description:(()=>{let t=i(e.timestamp),n=e.params&&Object.keys(e.params).length>0?Object.keys(e.params).length:0;return t+(n>0?` | ${n} param${n>1?`s`:``}`:``)})(),onClick:()=>n(e)},e.id))})}function D({notification:e,previewMode:t,onTogglePreview:r,onCopy:o,onDownload:s,onFullscreen:c,isCopied:l=!1,onClose:u}){return e?(0,T.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,T.jsxs)(`div`,{className:`flex-shrink-0 px-4 py-3 border-b border-gray-200 dark:border-zinc-700 flex items-center justify-between`,children:[(0,T.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,T.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,T.jsx)(v,{className:`h-3 w-3 text-gray-400`}),(0,T.jsx)(`span`,{className:`text-xs text-gray-500 dark:text-gray-400`,children:new Date(e.timestamp).toLocaleTimeString()})]}),(0,T.jsx)(`span`,{className:`text-xs text-gray-500 dark:text-gray-400`,children:e.formatRelativeTime(e.timestamp)})]}),(0,T.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,T.jsxs)(n,{variant:`ghost`,size:`sm`,onClick:r,className:t?``:`text-purple-600 dark:text-purple-400`,children:[t?(0,T.jsx)(a,{className:`h-4 w-4 mr-1`}):(0,T.jsx)(i,{className:`h-4 w-4 mr-1`}),t?`JSON`:`Formatted`]}),(0,T.jsx)(n,{variant:`ghost`,size:`sm`,onClick:o,children:l?(0,T.jsx)(x,{className:`h-4 w-4`}):(0,T.jsx)(y,{className:`h-4 w-4`})}),(0,T.jsx)(n,{variant:`ghost`,size:`sm`,onClick:s,children:(0,T.jsx)(b,{className:`h-4 w-4`})}),(0,T.jsx)(n,{variant:`ghost`,size:`sm`,onClick:c,children:(0,T.jsx)(f,{className:`h-4 w-4`})}),u&&(0,T.jsx)(n,{variant:`ghost`,size:`sm`,onClick:u,children:(0,T.jsx)(h,{className:`h-4 w-4`})})]})]}),(0,T.jsx)(`div`,{className:`flex-1 overflow-y-auto`,children:(0,T.jsx)(`div`,{className:`px-4 pt-4`,children:(0,T.jsx)(g,{data:{method:e.method,timestamp:e.timestamp,read:e.read,params:e.params},filename:`notification-${e.method.replace(/[^a-zA-Z0-9]/g,`-`)}-${Date.now()}.json`})})})]}):(0,T.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full p-4 text-center`,children:[(0,T.jsx)(S,{className:`h-12 w-12 text-gray-400 dark:text-gray-600 mb-3`}),(0,T.jsx)(`p`,{className:`text-gray-500 dark:text-gray-400`,children:`Select a notification to view details`})]})}function O({notifications:e,unreadCount:t,markNotificationRead:n,markAllNotificationsRead:r,clearNotifications:i,serverId:a,isConnected:u}){let[f,p]=(0,w.useState)(null),[h,g]=(0,w.useState)(``),[v,y]=(0,w.useState)(-1),[b,x]=(0,w.useState)(!0),[O,k]=(0,w.useState)(!1),[A,j]=(0,w.useState)(!0),[M,N]=(0,w.useState)(!1),P=(0,w.useRef)(null),F=(0,w.useRef)(null),I=(0,w.useRef)(null),L=(0,w.useRef)(!1);(0,w.useEffect)(()=>{b&&e.length>0&&P.current&&!L.current&&(P.current.scrollTop=0)},[e.length,b]),(0,w.useEffect)(()=>{let e=P.current;if(!e)return;let t=()=>{e.scrollTop>0&&(L.current=!0,x(!1))};return e.addEventListener(`scroll`,t),()=>e.removeEventListener(`scroll`,t)},[]),(0,w.useEffect)(()=>{e.length===0&&(L.current=!1,x(!0))},[e.length]),(0,w.useEffect)(()=>{f&&!f.read&&n(f.id)},[f,n]),(0,w.useEffect)(()=>{O&&I.current&&I.current.focus()},[O]);let R=(0,w.useCallback)(()=>{h.trim()||k(!1)},[h]),z=(0,w.useMemo)(()=>{if(!h.trim())return e;let t=h.toLowerCase();return e.filter(e=>e.method.toLowerCase().includes(t)||JSON.stringify(e.params||{}).toLowerCase().includes(t))},[e,h]);(0,w.useEffect)(()=>{y(-1)},[h]),(0,w.useEffect)(()=>{let e=e=>{let t=e.target;if(t.tagName===`INPUT`||t.tagName===`TEXTAREA`||t.contentEditable===`true`||e.metaKey||e.ctrlKey||e.altKey)return;let n=z;if(e.key===`ArrowDown`)e.preventDefault(),y(e=>{let t=e+1;return t>=n.length?0:t});else if(e.key===`ArrowUp`)e.preventDefault(),y(e=>{let t=e-1;return t<0?n.length-1:t});else if(e.key===`Enter`&&v>=0){e.preventDefault();let t=z[v];t&&B(t)}};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[v,z]),(0,w.useEffect)(()=>{if(v>=0){let e=`notification-${z[v]?.id}`,t=document.getElementById(e);t&&t.scrollIntoView({behavior:`smooth`,block:`nearest`})}},[v,z]);let B=(0,w.useCallback)(e=>{p(e)},[]),V=(0,w.useCallback)(()=>{window.confirm(`Are you sure you want to clear all notifications? This cannot be undone.`)&&(i(),p(null))},[i]),H=(0,w.useCallback)(async()=>{if(f)try{await C(JSON.stringify({method:f.method,timestamp:f.timestamp,read:f.read,params:f.params},null,2)),N(!0),setTimeout(()=>N(!1),2e3)}catch(e){console.error(`[NotificationsTab] Failed to copy notification:`,e)}},[f]),U=(0,w.useCallback)(()=>{if(f)try{let e=new globalThis.Blob([JSON.stringify({method:f.method,timestamp:f.timestamp,read:f.read,params:f.params},null,2)],{type:`application/json`}),t=URL.createObjectURL(e),n=document.createElement(`a`);n.href=t,n.download=`notification-${Date.now()}.json`,document.body.appendChild(n),n.click(),document.body.removeChild(n),URL.revokeObjectURL(t)}catch(e){console.error(`[NotificationsTab] Failed to download notification:`,e)}},[f]),W=(0,w.useCallback)(async()=>{if(F.current)try{document.fullscreenElement?await document.exitFullscreen():await F.current.requestFullscreen()}catch(e){console.error(`[NotificationsTab] Failed to toggle fullscreen:`,e)}},[]),G=f?{method:f.method,params:f.params,timestamp:f.timestamp,read:f.read,formatRelativeTime:_}:null;return u?(0,T.jsxs)(l,{orientation:`horizontal`,className:`h-full`,children:[(0,T.jsx)(o,{defaultSize:40,minSize:30,children:(0,T.jsx)(l,{orientation:`vertical`,className:`h-full border-r dark:border-zinc-700`,children:(0,T.jsx)(o,{defaultSize:75,minSize:30,className:`h-full overflow-hidden`,children:(0,T.jsx)(c,{scrollRef:P,children:t=>(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(d,{isScrolled:t,title:`Notifications`,icon:S,count:z.length,isSearchExpanded:O,searchQuery:h,searchPlaceholder:`Search notifications...`,onSearchExpand:()=>k(!0),onSearchChange:g,onSearchBlur:R,bulkAction:{icon:m,label:`Clear all`,onClick:V,disabled:e.length===0},searchInputRef:I}),(0,T.jsx)(E,{notifications:z,selectedNotification:f,onNotificationSelect:B,focusedIndex:v,formatRelativeTime:_})]})})})})}),(0,T.jsx)(s,{}),(0,T.jsx)(o,{defaultSize:60,minSize:40,children:(0,T.jsx)(`div`,{ref:F,className:`h-full bg-white dark:bg-zinc-900`,children:(0,T.jsx)(D,{notification:G,previewMode:A,onTogglePreview:()=>j(!A),onCopy:H,onDownload:U,onFullscreen:W,onClose:()=>p(null),isCopied:M})})})]}):(0,T.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full p-4 text-center`,children:[(0,T.jsx)(S,{className:`h-12 w-12 text-gray-400 dark:text-gray-600 mb-3`}),(0,T.jsx)(`p`,{className:`text-gray-500 dark:text-gray-400`,children:`Not connected to server`})]})}export{O as NotificationsTab};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{s as e,t}from"./react-CU_d2d5K.js";import{t as n}from"./jsx-runtime-Cjj9sGSy.js";import{Tt as r,in as i}from"./index-
|
|
1
|
+
import{s as e,t}from"./react-CU_d2d5K.js";import{t as n}from"./jsx-runtime-Cjj9sGSy.js";import{Tt as r,in as i}from"./index-CoRK2C3M.js";var a=e(t(),1),o=n();function s(){let[e,t]=(0,a.useState)(`processing`),[n,s]=(0,a.useState)(``);return(0,a.useEffect)(()=>{console.log(`[OAuthCallback] Component mounted, handling authorization...`),console.log(`[OAuthCallback] Current URL:`,window.location.href),r().then(()=>{console.log(`[OAuthCallback] Authorization successful`),t(`success`)}).catch(e=>{console.error(`[OAuthCallback] Authorization failed:`,e),t(`error`),s(e instanceof Error?e.message:String(e))})},[]),e===`processing`?(0,o.jsx)(`div`,{className:`h-screen w-full flex items-center justify-center bg-white dark:bg-zinc-900`,children:(0,o.jsxs)(`div`,{className:`flex flex-col items-center gap-4`,children:[(0,o.jsx)(i,{className:`h-8 w-8 animate-spin text-zinc-600 dark:text-zinc-400`}),(0,o.jsx)(`p`,{className:`text-sm text-zinc-600 dark:text-zinc-400`,children:`Completing authentication...`})]})}):e===`error`?(0,o.jsx)(`div`,{className:`h-screen w-full flex items-center justify-center bg-white dark:bg-zinc-900`,children:(0,o.jsxs)(`div`,{className:`max-w-md p-6`,children:[(0,o.jsx)(`h1`,{className:`text-xl font-semibold text-red-600 dark:text-red-400 mb-2`,children:`Authentication Error`}),(0,o.jsx)(`p`,{className:`text-sm text-zinc-600 dark:text-zinc-400 mb-4`,children:n}),(0,o.jsx)(`p`,{className:`text-xs text-zinc-500 dark:text-zinc-500`,children:`You can close this window and try again.`})]})}):(0,o.jsx)(`div`,{className:`h-screen w-full flex items-center justify-center bg-white dark:bg-zinc-900`,children:(0,o.jsxs)(`div`,{className:`max-w-md p-6`,children:[(0,o.jsx)(`h1`,{className:`text-xl font-semibold text-green-600 dark:text-green-400 mb-2`,children:`Authentication Successful!`}),(0,o.jsx)(`p`,{className:`text-sm text-zinc-600 dark:text-zinc-400`,children:`Redirecting you back...`})]})})}export{s as OAuthCallback};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{s as e,t}from"./react-CU_d2d5K.js";import{Lr as n,Nr as r,cr as i,f as a,lr as o,sr as s,t as c,ur as l}from"./input-CLYhA7PK.js";import{t as u}from"./jsx-runtime-Cjj9sGSy.js";import{t as d}from"./label-Cdim77Jw.js";import{t as ee}from"./AnimatePresence-C5p0yiY1.js";import{a as f,i as p,n as m,r as h,t as g}from"./select-CJ57-Bor.js";import{n as te,t as _}from"./zap-Du2Uc5pa.js";import{a as v,i as y,n as b,o as x,r as S,s as C}from"./shared-B1GD9FMm.js";import{t as w}from"./maximize-_O55kFcr.js";import{n as ne,t as T}from"./save-B-MsgxX9.js";import{$t as E,Bt as re,F as D,Jt as O,P as ie,b as k,cn as A,gn as j,hn as M,rn as N,vn as P,yt as ae}from"./index-Cfuv_gb3.js";import{n as oe,t as F}from"./MarkdownRenderer-DpIEt9wb.js";import{t as I}from"./textarea-DLAmNVf_.js";import{t as se}from"./ListTabHeader-R17w_JsB.js";var L=e(t(),1),R=u();function z({selectedPrompt:e,promptArgs:t,onArgChange:n}){let r=e?.arguments||[];if(!(r.length>0))return(0,R.jsx)(`div`,{className:`flex items-center justify-center h-32 text-gray-500 dark:text-gray-400 text-sm`,children:`No arguments required`});let i=e=>{let r=e.name,i=t[r],a=typeof i==`string`?i:JSON.stringify(i);return e.type===`boolean`?(0,R.jsxs)(`div`,{className:`space-y-2`,children:[(0,R.jsxs)(`div`,{children:[(0,R.jsxs)(d,{htmlFor:r,className:`text-sm font-medium`,children:[r,e.required&&(0,R.jsx)(`span`,{className:`text-red-500 ml-1`,children:`*`})]}),e.description&&(0,R.jsx)(`p`,{className:`mt-0.5 text-xs text-gray-500 dark:text-gray-400`,children:e.description})]}),(0,R.jsx)(`input`,{id:r,type:`checkbox`,checked:!!i,onChange:e=>n(r,e.target.checked),className:`rounded`,"aria-label":`Toggle ${r}`})]},r):e.type===`number`?(0,R.jsxs)(`div`,{className:`space-y-2`,children:[(0,R.jsxs)(`div`,{children:[(0,R.jsxs)(d,{htmlFor:r,className:`text-sm font-medium`,children:[r,e.required&&(0,R.jsx)(`span`,{className:`text-red-500 ml-1`,children:`*`})]}),e.description&&(0,R.jsx)(`p`,{className:`mt-0.5 text-xs text-gray-500 dark:text-gray-400`,children:e.description})]}),(0,R.jsx)(c,{id:r,type:`number`,value:Number(i)||0,onChange:e=>n(r,Number(e.target.value)),placeholder:`Enter ${r}`})]},r):e.type===`array`||e.type===`object`?(0,R.jsxs)(`div`,{className:`space-y-2`,children:[(0,R.jsxs)(`div`,{children:[(0,R.jsxs)(d,{htmlFor:r,className:`text-sm font-medium`,children:[r,e.required&&(0,R.jsx)(`span`,{className:`text-red-500 ml-1`,children:`*`})]}),e.description&&(0,R.jsx)(`p`,{className:`mt-0.5 text-xs text-gray-500 dark:text-gray-400`,children:e.description})]}),(0,R.jsx)(I,{id:r,value:a,onChange:e=>{try{n(r,JSON.parse(e.target.value))}catch{n(r,e.target.value)}},placeholder:`Enter ${r} as JSON`,className:`font-mono text-sm min-h-[100px]`})]},r):(0,R.jsxs)(`div`,{className:`space-y-2`,children:[(0,R.jsxs)(`div`,{children:[(0,R.jsxs)(d,{htmlFor:r,className:`text-sm font-medium`,children:[r,e.required&&(0,R.jsx)(`span`,{className:`text-red-500 ml-1`,children:`*`})]}),e.description&&(0,R.jsx)(`p`,{className:`mt-0.5 text-xs text-gray-500 dark:text-gray-400`,children:e.description})]}),(0,R.jsx)(c,{id:r,"data-testid":`prompt-param-${r}`,value:a,onChange:e=>n(r,e.target.value),placeholder:`Enter ${r}`})]},r)};return(0,R.jsx)(`div`,{className:`space-y-4`,children:r.map(e=>i(e))})}function ce({selectedPrompt:e,promptArgs:t,isExecuting:r,isConnected:a,onArgChange:c,onExecute:u,onSave:d}){return(0,L.useEffect)(()=>{let t=t=>{(t.metaKey||t.ctrlKey)&&t.key===`Enter`&&e&&!r&&a&&(t.preventDefault(),u())};return document.addEventListener(`keydown`,t),()=>document.removeEventListener(`keydown`,t)},[e,r,a,u]),e?(0,R.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,R.jsx)(`div`,{className:`flex-shrink-0 p-3 sm:p-6 pt-3 pb-4 pr-3`,children:(0,R.jsxs)(`div`,{children:[(0,R.jsxs)(`div`,{className:`flex flex-row items-center justify-between mb-0 gap-2`,children:[(0,R.jsx)(`h3`,{className:`text-base sm:text-lg font-semibold`,children:e.name}),(0,R.jsxs)(`div`,{className:`flex gap-2 flex-shrink-0`,children:[(0,R.jsx)(s,{onClick:u,disabled:r||!a,size:`sm`,className:i,"data-testid":`prompt-execute-button`,children:r?(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(D,{}),(0,R.jsx)(`span`,{className:`hidden sm:inline`,children:`Executing...`})]}):(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(E,{}),(0,R.jsx)(`span`,{className:`hidden sm:inline`,children:`Execute`}),(0,R.jsx)(`span`,{className:o,children:`⌘↵`})]})}),(0,R.jsxs)(s,{variant:`outline`,onClick:d,disabled:r,size:`sm`,className:n(l,`gap-2`),children:[(0,R.jsx)(T,{}),(0,R.jsx)(`span`,{className:`hidden sm:inline`,children:`Save`})]})]})]}),e.description&&(0,R.jsx)(`p`,{className:`text-sm text-gray-600 dark:text-gray-400 leading-relaxed mt-2`,children:e.description})]})}),(0,R.jsx)(`div`,{className:`flex-1 overflow-y-auto px-3 sm:px-6 pb-4 pr-3`,children:(0,R.jsx)(z,{selectedPrompt:e,promptArgs:t,onArgChange:c})})]}):(0,R.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full p-4 text-center`,children:[(0,R.jsx)(`p`,{className:`text-gray-500 dark:text-gray-400 mb-2`,children:`Select a prompt to get started`}),(0,R.jsx)(`p`,{className:`text-xs text-gray-400 dark:text-gray-500`,children:`Choose a prompt from the list to view its details and execute it`})]})}function B(e){switch(e){case`system`:return`default`;case`user`:return`outline`;case`assistant`:return`secondary`;default:return`outline`}}function V(e){return e.charAt(0).toUpperCase()+e.slice(1)}function H(e){return typeof e==`string`?e:e.text?e.text:e.type===`resource`&&e.resource?.text?e.resource.text:e.type===`image`?`[Image: ${e.mimeType||`unknown type`}]`:JSON.stringify(e,null,2)}function U({message:e,index:t}){let[n,i]=(0,L.useState)(!1);return(0,R.jsxs)(`div`,{className:`border border-border rounded-lg overflow-hidden bg-white dark:bg-zinc-900`,children:[(0,R.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-2 bg-muted/30 border-b border-border`,children:[(0,R.jsx)(r,{variant:B(e.role),children:V(e.role)}),(0,R.jsx)(s,{variant:`ghost`,size:`sm`,onClick:async()=>{await ae(H(e.content)),i(!0),setTimeout(()=>i(!1),2e3)},className:`h-6 px-2`,title:`Copy message content`,children:n?(0,R.jsx)(P,{className:`h-3.5 w-3.5`}):(0,R.jsx)(M,{className:`h-3.5 w-3.5`})})]}),(0,R.jsx)(`div`,{className:`px-4 py-3`,"data-testid":`prompt-message-content-${t}`,children:(()=>{let t=e.content;return typeof t==`string`?(0,R.jsx)(F,{content:t}):t.type===`text`&&t.text?(0,R.jsx)(F,{content:t.text}):t.type===`image`?(0,R.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-muted-foreground`,children:[(0,R.jsxs)(`span`,{className:`font-mono bg-muted px-2 py-1 rounded`,children:[`Image: `,t.mimeType||`unknown type`]}),t.data&&(0,R.jsx)(`img`,{src:`data:${t.mimeType};base64,${t.data}`,alt:`Prompt image`,className:`max-w-full max-h-[300px] object-contain rounded-lg border border-border mt-2`})]}):t.type===`resource`&&t.resource?(0,R.jsxs)(`div`,{className:`space-y-2`,children:[(0,R.jsxs)(`div`,{className:`flex items-center gap-2 text-sm`,children:[(0,R.jsx)(`span`,{className:`text-muted-foreground font-medium`,children:`Resource:`}),(0,R.jsx)(`code`,{className:`bg-muted px-2 py-0.5 rounded text-xs font-mono`,children:t.resource.uri})]}),t.resource.text&&(0,R.jsx)(`div`,{className:`mt-2`,children:(0,R.jsx)(F,{content:t.resource.text})})]}):(0,R.jsx)(`pre`,{className:`bg-muted p-3 rounded-lg text-sm overflow-x-auto`,children:(0,R.jsx)(`code`,{children:JSON.stringify(t,null,2)})})})()})]})}function W(e){let t=Date.now()-e,n=Math.floor(t/1e3),r=Math.floor(n/60),i=Math.floor(r/60),a=Math.floor(i/24);return n<10?`now`:n<60?`${n}s ago`:r<60?`${r}m ago`:i<24?`${i}h ago`:`${a}d ago`}function G(e){return`isError`in e&&!e.isError?null:`error`in e&&e.error?String(e.error):`isError`in e&&e.isError?`An error occurred`:null}function le({results:e,copiedResult:t,previewMode:n=!0,onCopy:r,onDelete:i,onFullscreen:a,onTogglePreview:o,onMaximize:c,isMaximized:l=!1}){let[u,d]=(0,L.useState)(0),[ee,te]=(0,L.useState)(``),[v,y]=(0,L.useState)(!0),b=e[0],x=b?e.filter(e=>e.promptName===b.promptName):[],S=x[u]||x[0],C=e.findIndex(e=>e===S);if((0,L.useEffect)(()=>{x.length>0&&u>=x.length&&d(0)},[x.length,u]),(0,L.useEffect)(()=>{let e=()=>{S&&te(W(S.timestamp))};e();let t=setInterval(e,1e3);return()=>clearInterval(t)},[S]),e.length===0)return(0,R.jsx)(`div`,{className:`flex flex-col h-full bg-white dark:bg-black border-t dark:border-zinc-700`,children:(0,R.jsx)(`div`,{className:`flex-1 overflow-y-auto h-full`,children:(0,R.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,R.jsx)(`div`,{className:`text-center`,children:(0,R.jsx)(re,{vertical:!0,noBorder:!0,message:`No Results yet`})})})})});let T=S.error||G(S.result),E=`messages`in S.result&&Array.isArray(S.result.messages);return(0,R.jsx)(`div`,{className:`flex flex-col h-full bg-white dark:bg-black border-t dark:border-zinc-700`,children:(0,R.jsx)(`div`,{className:`flex-1 overflow-y-auto h-full`,children:(0,R.jsxs)(`div`,{className:`space-y-0 flex-1 h-full flex flex-col`,children:[(0,R.jsxs)(`div`,{className:`flex items-center gap-2 px-4 pt-2 border-b border-gray-200 dark:border-zinc-600 pb-2`,children:[(0,R.jsx)(`h3`,{className:`text-sm font-medium hidden sm:block`,children:`Response`}),S.duration!==void 0&&(0,R.jsxs)(`div`,{className:`hidden sm:flex items-center gap-1`,children:[(0,R.jsx)(_,{className:`h-3 w-3 text-gray-400`}),(0,R.jsxs)(`span`,{className:`text-xs text-gray-500 dark:text-gray-400`,children:[S.duration,`ms`]})]}),E&&(0,R.jsx)(`div`,{className:`flex items-center gap-4 sm:ml-4`,children:(0,R.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,R.jsx)(`button`,{onClick:()=>y(!0),className:`text-xs font-medium ${v?`text-black dark:text-white`:`text-zinc-500 dark:text-zinc-400`}`,children:`Formatted`}),(0,R.jsx)(`span`,{className:`text-xs text-zinc-400`,children:`|`}),(0,R.jsx)(`button`,{onClick:()=>y(!1),className:`text-xs font-medium ${v?`text-zinc-500 dark:text-zinc-400`:`text-black dark:text-white`}`,children:`Raw`})]})}),(0,R.jsxs)(`div`,{className:`ml-auto flex items-center gap-1`,children:[x.length>1&&(0,R.jsxs)(`div`,{className:`flex items-center gap-2 mr-2`,children:[(0,R.jsx)(A,{className:`h-3 w-3 text-gray-400`}),(0,R.jsxs)(g,{value:u.toString(),onValueChange:e=>d(parseInt(e)),children:[(0,R.jsx)(p,{className:`h-7 w-[120px] text-xs`,children:(0,R.jsx)(f,{})}),(0,R.jsx)(m,{children:x.map((e,t)=>(0,R.jsx)(h,{value:t.toString(),children:t===0?`Latest`:`${t+1} call ago`},t))})]})]}),(0,R.jsx)(`span`,{className:`text-xs text-gray-500 dark:text-gray-400 mr-2`,children:ee}),(0,R.jsx)(s,{variant:`ghost`,size:`sm`,onClick:()=>r(C,S.result),className:`h-7 w-7 p-0`,title:`Copy result`,children:t===C?(0,R.jsx)(P,{className:`h-4 w-4`}):(0,R.jsx)(M,{className:`h-4 w-4`})}),i&&(0,R.jsx)(s,{variant:`ghost`,size:`sm`,onClick:()=>i(C),className:`h-7 w-7 p-0`,title:`Delete result`,children:(0,R.jsx)(O,{className:`h-4 w-4`})}),a&&(0,R.jsx)(s,{variant:`ghost`,size:`sm`,onClick:()=>a(C),className:`h-7 w-7 p-0 sm:hidden`,title:`Fullscreen`,children:(0,R.jsx)(w,{className:`h-4 w-4`})}),c&&(0,R.jsx)(s,{variant:`ghost`,size:`sm`,onClick:c,className:`h-7 w-7 p-0 hidden sm:flex`,title:l?`Restore`:`Maximize`,children:l?(0,R.jsx)(ne,{className:`h-4 w-4`}):(0,R.jsx)(w,{className:`h-4 w-4`})})]})]}),(0,R.jsx)(`div`,{className:`flex-1 overflow-y-auto p-4`,children:T?(0,R.jsxs)(`div`,{className:`bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800 rounded p-3`,children:[(0,R.jsx)(`p`,{className:`text-red-800 dark:text-red-300 font-medium`,children:`Error:`}),(0,R.jsx)(`p`,{className:`text-red-700 dark:text-red-400 text-sm`,children:T})]}):v&&E?(0,R.jsx)(`div`,{className:`space-y-3`,children:(`messages`in S.result?S.result.messages:[]).map((e,t)=>(0,R.jsx)(U,{message:e,index:t},t))}):(0,R.jsx)(k,{data:S.result,filename:`prompt-result-${S.promptName}-${Date.now()}.json`})})]})})})}function ue({prompts:e,selectedPrompt:t,onPromptSelect:n,focusedIndex:i}){return e.length===0?(0,R.jsxs)(`div`,{className:`flex flex-1 flex-col items-center justify-center p-4 text-center`,children:[(0,R.jsx)(N,{className:`h-12 w-12 text-gray-400 dark:text-gray-600 mb-3`}),(0,R.jsx)(`p`,{className:`text-gray-500 dark:text-gray-400`,children:`No prompts available`})]}):(0,R.jsx)(`div`,{children:e.map((e,a)=>(0,R.jsx)(S,{id:`prompt-${e.name}`,"data-testid":`prompt-item-${e.name}`,isSelected:t?.name===e.name,isFocused:i===a,title:e.name,description:e.description,metadata:e.arguments&&e.arguments.length>0&&(0,R.jsxs)(r,{variant:`outline`,className:`text-xs border-gray-300 dark:border-zinc-600 text-gray-600 dark:text-gray-400`,children:[e.arguments.length,` args`]}),onClick:()=>n(e)},e.name))})}function de({savedPrompts:e,selectedPrompt:t,onLoadPrompt:n,onDeletePrompt:r,focusedIndex:i}){return e.length===0?(0,R.jsxs)(`div`,{className:`flex flex-1 flex-col items-center justify-center p-4 text-center`,children:[(0,R.jsx)(j,{className:`h-12 w-12 text-gray-400 dark:text-gray-600 mb-3`}),(0,R.jsx)(`p`,{className:`text-gray-500 dark:text-gray-400`,children:`No history`}),(0,R.jsx)(`p`,{className:`text-sm text-gray-400 dark:text-gray-500 mt-1`,children:`Prompts you execute will appear here`})]}):(0,R.jsx)(`div`,{children:e.map((e,r)=>(0,R.jsx)(S,{id:`saved-prompt-${e.id}`,isSelected:t?.id===e.id,isFocused:i===r,title:e.name,description:`${e.promptName} - ${new Date(e.savedAt).toLocaleString()}`,onClick:()=>n(e)},e.id))})}var fe=`mcp-inspector-saved-prompts`;function K({ref:e,prompts:t,callPrompt:n,serverId:r,isConnected:i,refreshPrompts:o}){let[c,l]=(0,L.useState)(!1),[u,d]=(0,L.useState)(null),{selectedPromptName:f,setSelectedPromptName:p}=ie(),[m,h]=(0,L.useState)(null),[g,_]=(0,L.useState)(`prompts`),[S,w]=(0,L.useState)([]),[ne,T]=(0,L.useState)(!1),[E,re]=(0,L.useState)(``),[D,O]=(0,L.useState)(!1),[k,A]=(0,L.useState)(-1),M=(0,L.useRef)(null),[P,F]=(0,L.useState)(!1),[I,z]=(0,L.useState)(`list`),[B,V]=(0,L.useState)(!1),{filteredPrompts:H,selectedPrompt:U,setSelectedPrompt:W,results:G,handleDeleteResult:K,promptArgs:pe,setPromptArgs:me,isExecuting:q,handlePromptSelect:J,handleArgChange:he,executeSelectedPrompt:ge,searchQuery:Y,setSearchQuery:X}=oe({prompts:t,callPrompt:n,serverId:r}),Z=C(),Q=C();(0,L.useEffect)(()=>{let e=()=>{F(window.innerWidth<1024)};return e(),window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[]),(0,L.useEffect)(()=>{z(U?`detail`:`list`)},[U]),(0,L.useEffect)(()=>{P&&G.length>0&&!q&&z(`response`)},[G,q,P]),(0,L.useImperativeHandle)(e,()=>({focusSearch:()=>{O(!0),setTimeout(()=>{M.current&&M.current.focus()},0)},blurSearch:()=>{X(``),O(!1),M.current&&M.current.blur()}})),(0,L.useEffect)(()=>{try{let e=localStorage.getItem(fe);e&&w(JSON.parse(e))}catch(e){console.error(`[PromptsTab] Failed to load saved prompts:`,e)}},[]);let _e=(0,L.useCallback)(e=>{try{localStorage.setItem(fe,JSON.stringify(e))}catch(e){console.error(`[PromptsTab] Failed to save prompts:`,e)}},[]);(0,L.useEffect)(()=>{D&&M.current&&M.current.focus()},[D]);let ve=(0,L.useCallback)(()=>{Y.trim()||O(!1)},[Y]),ye=(0,L.useCallback)(async()=>{if(o){l(!0);try{await o()}finally{l(!1)}}},[o]),$=(0,L.useCallback)(e=>{let n=t.find(t=>t.name===e.promptName);n&&(W(n),me(e.args),d(e))},[t,W,me]);(0,L.useEffect)(()=>{A(-1)},[Y,g]),(0,L.useEffect)(()=>{let e=e=>{let t=e.target;if(t.tagName===`INPUT`||t.tagName===`TEXTAREA`||t.contentEditable===`true`||e.metaKey||e.ctrlKey||e.altKey)return;let n=g===`prompts`?H:S;if(e.key===`ArrowDown`)e.preventDefault(),A(e=>{let t=e+1;return t>=n.length?0:t});else if(e.key===`ArrowUp`)e.preventDefault(),A(e=>{let t=e-1;return t<0?n.length-1:t});else if(e.key===`Enter`&&k>=0)if(e.preventDefault(),g===`prompts`){let e=H[k];e&&J(e)}else{let e=S[k];e&&$(e)}};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[k,H,S,g,J,$]),(0,L.useEffect)(()=>{if(k>=0){let e=g===`prompts`?`prompt-${H[k]?.name}`:`saved-prompt-${S[k]?.id}`,t=document.getElementById(e);t&&t.scrollIntoView({behavior:`smooth`,block:`nearest`})}},[k,H,S,g]),(0,L.useEffect)(()=>{if(console.warn(`[PromptsTab] Auto-selection effect triggered:`,{selectedPromptName:f,promptsCount:t.length,currentSelectedPrompt:U?.name}),f&&t.length>0){let e=t.find(e=>e.name===f);if(console.warn(`[PromptsTab] Prompt lookup result:`,{selectedPromptName:f,promptFound:!!e,promptName:e?.name,shouldSelect:e&&U?.name!==e.name}),e&&U?.name!==e.name){console.warn(`[PromptsTab] Selecting prompt:`,e.name),p(null);let t=setTimeout(()=>{J(e);let t=document.getElementById(`prompt-${e.name}`);t&&(console.warn(`[PromptsTab] Scrolling to prompt element`),t.scrollIntoView({behavior:`smooth`,block:`nearest`}))},100);return()=>clearTimeout(t)}}},[f,t,U,J,p]);let be=(0,L.useCallback)(async(e,t)=>{try{await ae(JSON.stringify(t,null,2)),h(e),setTimeout(()=>h(null),2e3)}catch(e){console.error(`[PromptsTab] Failed to copy result:`,e)}},[]),xe=(0,L.useCallback)(e=>{if(P)z(`response`);else{let t=G[e];if(t){let e=window.open(``,`_blank`,`width=800,height=600`);if(e){let n=t.result;e.document.write(`
|
|
1
|
+
import{s as e,t}from"./react-CU_d2d5K.js";import{Lr as n,Nr as r,cr as i,f as a,lr as o,sr as s,t as c,ur as l}from"./input-CLYhA7PK.js";import{t as u}from"./jsx-runtime-Cjj9sGSy.js";import{t as d}from"./label-Cdim77Jw.js";import{t as ee}from"./AnimatePresence-C5p0yiY1.js";import{a as f,i as p,n as m,r as h,t as g}from"./select-CJ57-Bor.js";import{n as te,t as _}from"./zap-Du2Uc5pa.js";import{a as v,i as y,n as b,o as x,r as S,s as C}from"./shared-Dbc2GbRx.js";import{t as w}from"./maximize-_O55kFcr.js";import{n as ne,t as T}from"./save-B-MsgxX9.js";import{$t as E,Bt as re,F as D,Jt as O,P as ie,b as k,cn as A,gn as j,hn as M,rn as N,vn as P,yt as ae}from"./index-CoRK2C3M.js";import{n as oe,t as F}from"./MarkdownRenderer-DH-7vpw0.js";import{t as I}from"./textarea-DLAmNVf_.js";import{t as se}from"./ListTabHeader-R17w_JsB.js";var L=e(t(),1),R=u();function z({selectedPrompt:e,promptArgs:t,onArgChange:n}){let r=e?.arguments||[];if(!(r.length>0))return(0,R.jsx)(`div`,{className:`flex items-center justify-center h-32 text-gray-500 dark:text-gray-400 text-sm`,children:`No arguments required`});let i=e=>{let r=e.name,i=t[r],a=typeof i==`string`?i:JSON.stringify(i);return e.type===`boolean`?(0,R.jsxs)(`div`,{className:`space-y-2`,children:[(0,R.jsxs)(`div`,{children:[(0,R.jsxs)(d,{htmlFor:r,className:`text-sm font-medium`,children:[r,e.required&&(0,R.jsx)(`span`,{className:`text-red-500 ml-1`,children:`*`})]}),e.description&&(0,R.jsx)(`p`,{className:`mt-0.5 text-xs text-gray-500 dark:text-gray-400`,children:e.description})]}),(0,R.jsx)(`input`,{id:r,type:`checkbox`,checked:!!i,onChange:e=>n(r,e.target.checked),className:`rounded`,"aria-label":`Toggle ${r}`})]},r):e.type===`number`?(0,R.jsxs)(`div`,{className:`space-y-2`,children:[(0,R.jsxs)(`div`,{children:[(0,R.jsxs)(d,{htmlFor:r,className:`text-sm font-medium`,children:[r,e.required&&(0,R.jsx)(`span`,{className:`text-red-500 ml-1`,children:`*`})]}),e.description&&(0,R.jsx)(`p`,{className:`mt-0.5 text-xs text-gray-500 dark:text-gray-400`,children:e.description})]}),(0,R.jsx)(c,{id:r,type:`number`,value:Number(i)||0,onChange:e=>n(r,Number(e.target.value)),placeholder:`Enter ${r}`})]},r):e.type===`array`||e.type===`object`?(0,R.jsxs)(`div`,{className:`space-y-2`,children:[(0,R.jsxs)(`div`,{children:[(0,R.jsxs)(d,{htmlFor:r,className:`text-sm font-medium`,children:[r,e.required&&(0,R.jsx)(`span`,{className:`text-red-500 ml-1`,children:`*`})]}),e.description&&(0,R.jsx)(`p`,{className:`mt-0.5 text-xs text-gray-500 dark:text-gray-400`,children:e.description})]}),(0,R.jsx)(I,{id:r,value:a,onChange:e=>{try{n(r,JSON.parse(e.target.value))}catch{n(r,e.target.value)}},placeholder:`Enter ${r} as JSON`,className:`font-mono text-sm min-h-[100px]`})]},r):(0,R.jsxs)(`div`,{className:`space-y-2`,children:[(0,R.jsxs)(`div`,{children:[(0,R.jsxs)(d,{htmlFor:r,className:`text-sm font-medium`,children:[r,e.required&&(0,R.jsx)(`span`,{className:`text-red-500 ml-1`,children:`*`})]}),e.description&&(0,R.jsx)(`p`,{className:`mt-0.5 text-xs text-gray-500 dark:text-gray-400`,children:e.description})]}),(0,R.jsx)(c,{id:r,"data-testid":`prompt-param-${r}`,value:a,onChange:e=>n(r,e.target.value),placeholder:`Enter ${r}`})]},r)};return(0,R.jsx)(`div`,{className:`space-y-4`,children:r.map(e=>i(e))})}function ce({selectedPrompt:e,promptArgs:t,isExecuting:r,isConnected:a,onArgChange:c,onExecute:u,onSave:d}){return(0,L.useEffect)(()=>{let t=t=>{(t.metaKey||t.ctrlKey)&&t.key===`Enter`&&e&&!r&&a&&(t.preventDefault(),u())};return document.addEventListener(`keydown`,t),()=>document.removeEventListener(`keydown`,t)},[e,r,a,u]),e?(0,R.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,R.jsx)(`div`,{className:`flex-shrink-0 p-3 sm:p-6 pt-3 pb-4 pr-3`,children:(0,R.jsxs)(`div`,{children:[(0,R.jsxs)(`div`,{className:`flex flex-row items-center justify-between mb-0 gap-2`,children:[(0,R.jsx)(`h3`,{className:`text-base sm:text-lg font-semibold`,children:e.name}),(0,R.jsxs)(`div`,{className:`flex gap-2 flex-shrink-0`,children:[(0,R.jsx)(s,{onClick:u,disabled:r||!a,size:`sm`,className:i,"data-testid":`prompt-execute-button`,children:r?(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(D,{}),(0,R.jsx)(`span`,{className:`hidden sm:inline`,children:`Executing...`})]}):(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(E,{}),(0,R.jsx)(`span`,{className:`hidden sm:inline`,children:`Execute`}),(0,R.jsx)(`span`,{className:o,children:`⌘↵`})]})}),(0,R.jsxs)(s,{variant:`outline`,onClick:d,disabled:r,size:`sm`,className:n(l,`gap-2`),children:[(0,R.jsx)(T,{}),(0,R.jsx)(`span`,{className:`hidden sm:inline`,children:`Save`})]})]})]}),e.description&&(0,R.jsx)(`p`,{className:`text-sm text-gray-600 dark:text-gray-400 leading-relaxed mt-2`,children:e.description})]})}),(0,R.jsx)(`div`,{className:`flex-1 overflow-y-auto px-3 sm:px-6 pb-4 pr-3`,children:(0,R.jsx)(z,{selectedPrompt:e,promptArgs:t,onArgChange:c})})]}):(0,R.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full p-4 text-center`,children:[(0,R.jsx)(`p`,{className:`text-gray-500 dark:text-gray-400 mb-2`,children:`Select a prompt to get started`}),(0,R.jsx)(`p`,{className:`text-xs text-gray-400 dark:text-gray-500`,children:`Choose a prompt from the list to view its details and execute it`})]})}function B(e){switch(e){case`system`:return`default`;case`user`:return`outline`;case`assistant`:return`secondary`;default:return`outline`}}function V(e){return e.charAt(0).toUpperCase()+e.slice(1)}function H(e){return typeof e==`string`?e:e.text?e.text:e.type===`resource`&&e.resource?.text?e.resource.text:e.type===`image`?`[Image: ${e.mimeType||`unknown type`}]`:JSON.stringify(e,null,2)}function U({message:e,index:t}){let[n,i]=(0,L.useState)(!1);return(0,R.jsxs)(`div`,{className:`border border-border rounded-lg overflow-hidden bg-white dark:bg-zinc-900`,children:[(0,R.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-2 bg-muted/30 border-b border-border`,children:[(0,R.jsx)(r,{variant:B(e.role),children:V(e.role)}),(0,R.jsx)(s,{variant:`ghost`,size:`sm`,onClick:async()=>{await ae(H(e.content)),i(!0),setTimeout(()=>i(!1),2e3)},className:`h-6 px-2`,title:`Copy message content`,children:n?(0,R.jsx)(P,{className:`h-3.5 w-3.5`}):(0,R.jsx)(M,{className:`h-3.5 w-3.5`})})]}),(0,R.jsx)(`div`,{className:`px-4 py-3`,"data-testid":`prompt-message-content-${t}`,children:(()=>{let t=e.content;return typeof t==`string`?(0,R.jsx)(F,{content:t}):t.type===`text`&&t.text?(0,R.jsx)(F,{content:t.text}):t.type===`image`?(0,R.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-muted-foreground`,children:[(0,R.jsxs)(`span`,{className:`font-mono bg-muted px-2 py-1 rounded`,children:[`Image: `,t.mimeType||`unknown type`]}),t.data&&(0,R.jsx)(`img`,{src:`data:${t.mimeType};base64,${t.data}`,alt:`Prompt image`,className:`max-w-full max-h-[300px] object-contain rounded-lg border border-border mt-2`})]}):t.type===`resource`&&t.resource?(0,R.jsxs)(`div`,{className:`space-y-2`,children:[(0,R.jsxs)(`div`,{className:`flex items-center gap-2 text-sm`,children:[(0,R.jsx)(`span`,{className:`text-muted-foreground font-medium`,children:`Resource:`}),(0,R.jsx)(`code`,{className:`bg-muted px-2 py-0.5 rounded text-xs font-mono`,children:t.resource.uri})]}),t.resource.text&&(0,R.jsx)(`div`,{className:`mt-2`,children:(0,R.jsx)(F,{content:t.resource.text})})]}):(0,R.jsx)(`pre`,{className:`bg-muted p-3 rounded-lg text-sm overflow-x-auto`,children:(0,R.jsx)(`code`,{children:JSON.stringify(t,null,2)})})})()})]})}function W(e){let t=Date.now()-e,n=Math.floor(t/1e3),r=Math.floor(n/60),i=Math.floor(r/60),a=Math.floor(i/24);return n<10?`now`:n<60?`${n}s ago`:r<60?`${r}m ago`:i<24?`${i}h ago`:`${a}d ago`}function G(e){return`isError`in e&&!e.isError?null:`error`in e&&e.error?String(e.error):`isError`in e&&e.isError?`An error occurred`:null}function le({results:e,copiedResult:t,previewMode:n=!0,onCopy:r,onDelete:i,onFullscreen:a,onTogglePreview:o,onMaximize:c,isMaximized:l=!1}){let[u,d]=(0,L.useState)(0),[ee,te]=(0,L.useState)(``),[v,y]=(0,L.useState)(!0),b=e[0],x=b?e.filter(e=>e.promptName===b.promptName):[],S=x[u]||x[0],C=e.findIndex(e=>e===S);if((0,L.useEffect)(()=>{x.length>0&&u>=x.length&&d(0)},[x.length,u]),(0,L.useEffect)(()=>{let e=()=>{S&&te(W(S.timestamp))};e();let t=setInterval(e,1e3);return()=>clearInterval(t)},[S]),e.length===0)return(0,R.jsx)(`div`,{className:`flex flex-col h-full bg-white dark:bg-black border-t dark:border-zinc-700`,children:(0,R.jsx)(`div`,{className:`flex-1 overflow-y-auto h-full`,children:(0,R.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,R.jsx)(`div`,{className:`text-center`,children:(0,R.jsx)(re,{vertical:!0,noBorder:!0,message:`No Results yet`})})})})});let T=S.error||G(S.result),E=`messages`in S.result&&Array.isArray(S.result.messages);return(0,R.jsx)(`div`,{className:`flex flex-col h-full bg-white dark:bg-black border-t dark:border-zinc-700`,children:(0,R.jsx)(`div`,{className:`flex-1 overflow-y-auto h-full`,children:(0,R.jsxs)(`div`,{className:`space-y-0 flex-1 h-full flex flex-col`,children:[(0,R.jsxs)(`div`,{className:`flex items-center gap-2 px-4 pt-2 border-b border-gray-200 dark:border-zinc-600 pb-2`,children:[(0,R.jsx)(`h3`,{className:`text-sm font-medium hidden sm:block`,children:`Response`}),S.duration!==void 0&&(0,R.jsxs)(`div`,{className:`hidden sm:flex items-center gap-1`,children:[(0,R.jsx)(_,{className:`h-3 w-3 text-gray-400`}),(0,R.jsxs)(`span`,{className:`text-xs text-gray-500 dark:text-gray-400`,children:[S.duration,`ms`]})]}),E&&(0,R.jsx)(`div`,{className:`flex items-center gap-4 sm:ml-4`,children:(0,R.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,R.jsx)(`button`,{onClick:()=>y(!0),className:`text-xs font-medium ${v?`text-black dark:text-white`:`text-zinc-500 dark:text-zinc-400`}`,children:`Formatted`}),(0,R.jsx)(`span`,{className:`text-xs text-zinc-400`,children:`|`}),(0,R.jsx)(`button`,{onClick:()=>y(!1),className:`text-xs font-medium ${v?`text-zinc-500 dark:text-zinc-400`:`text-black dark:text-white`}`,children:`Raw`})]})}),(0,R.jsxs)(`div`,{className:`ml-auto flex items-center gap-1`,children:[x.length>1&&(0,R.jsxs)(`div`,{className:`flex items-center gap-2 mr-2`,children:[(0,R.jsx)(A,{className:`h-3 w-3 text-gray-400`}),(0,R.jsxs)(g,{value:u.toString(),onValueChange:e=>d(parseInt(e)),children:[(0,R.jsx)(p,{className:`h-7 w-[120px] text-xs`,children:(0,R.jsx)(f,{})}),(0,R.jsx)(m,{children:x.map((e,t)=>(0,R.jsx)(h,{value:t.toString(),children:t===0?`Latest`:`${t+1} call ago`},t))})]})]}),(0,R.jsx)(`span`,{className:`text-xs text-gray-500 dark:text-gray-400 mr-2`,children:ee}),(0,R.jsx)(s,{variant:`ghost`,size:`sm`,onClick:()=>r(C,S.result),className:`h-7 w-7 p-0`,title:`Copy result`,children:t===C?(0,R.jsx)(P,{className:`h-4 w-4`}):(0,R.jsx)(M,{className:`h-4 w-4`})}),i&&(0,R.jsx)(s,{variant:`ghost`,size:`sm`,onClick:()=>i(C),className:`h-7 w-7 p-0`,title:`Delete result`,children:(0,R.jsx)(O,{className:`h-4 w-4`})}),a&&(0,R.jsx)(s,{variant:`ghost`,size:`sm`,onClick:()=>a(C),className:`h-7 w-7 p-0 sm:hidden`,title:`Fullscreen`,children:(0,R.jsx)(w,{className:`h-4 w-4`})}),c&&(0,R.jsx)(s,{variant:`ghost`,size:`sm`,onClick:c,className:`h-7 w-7 p-0 hidden sm:flex`,title:l?`Restore`:`Maximize`,children:l?(0,R.jsx)(ne,{className:`h-4 w-4`}):(0,R.jsx)(w,{className:`h-4 w-4`})})]})]}),(0,R.jsx)(`div`,{className:`flex-1 overflow-y-auto p-4`,children:T?(0,R.jsxs)(`div`,{className:`bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800 rounded p-3`,children:[(0,R.jsx)(`p`,{className:`text-red-800 dark:text-red-300 font-medium`,children:`Error:`}),(0,R.jsx)(`p`,{className:`text-red-700 dark:text-red-400 text-sm`,children:T})]}):v&&E?(0,R.jsx)(`div`,{className:`space-y-3`,children:(`messages`in S.result?S.result.messages:[]).map((e,t)=>(0,R.jsx)(U,{message:e,index:t},t))}):(0,R.jsx)(k,{data:S.result,filename:`prompt-result-${S.promptName}-${Date.now()}.json`})})]})})})}function ue({prompts:e,selectedPrompt:t,onPromptSelect:n,focusedIndex:i}){return e.length===0?(0,R.jsxs)(`div`,{className:`flex flex-1 flex-col items-center justify-center p-4 text-center`,children:[(0,R.jsx)(N,{className:`h-12 w-12 text-gray-400 dark:text-gray-600 mb-3`}),(0,R.jsx)(`p`,{className:`text-gray-500 dark:text-gray-400`,children:`No prompts available`})]}):(0,R.jsx)(`div`,{children:e.map((e,a)=>(0,R.jsx)(S,{id:`prompt-${e.name}`,"data-testid":`prompt-item-${e.name}`,isSelected:t?.name===e.name,isFocused:i===a,title:e.name,description:e.description,metadata:e.arguments&&e.arguments.length>0&&(0,R.jsxs)(r,{variant:`outline`,className:`text-xs border-gray-300 dark:border-zinc-600 text-gray-600 dark:text-gray-400`,children:[e.arguments.length,` args`]}),onClick:()=>n(e)},e.name))})}function de({savedPrompts:e,selectedPrompt:t,onLoadPrompt:n,onDeletePrompt:r,focusedIndex:i}){return e.length===0?(0,R.jsxs)(`div`,{className:`flex flex-1 flex-col items-center justify-center p-4 text-center`,children:[(0,R.jsx)(j,{className:`h-12 w-12 text-gray-400 dark:text-gray-600 mb-3`}),(0,R.jsx)(`p`,{className:`text-gray-500 dark:text-gray-400`,children:`No history`}),(0,R.jsx)(`p`,{className:`text-sm text-gray-400 dark:text-gray-500 mt-1`,children:`Prompts you execute will appear here`})]}):(0,R.jsx)(`div`,{children:e.map((e,r)=>(0,R.jsx)(S,{id:`saved-prompt-${e.id}`,isSelected:t?.id===e.id,isFocused:i===r,title:e.name,description:`${e.promptName} - ${new Date(e.savedAt).toLocaleString()}`,onClick:()=>n(e)},e.id))})}var fe=`mcp-inspector-saved-prompts`;function K({ref:e,prompts:t,callPrompt:n,serverId:r,isConnected:i,refreshPrompts:o}){let[c,l]=(0,L.useState)(!1),[u,d]=(0,L.useState)(null),{selectedPromptName:f,setSelectedPromptName:p}=ie(),[m,h]=(0,L.useState)(null),[g,_]=(0,L.useState)(`prompts`),[S,w]=(0,L.useState)([]),[ne,T]=(0,L.useState)(!1),[E,re]=(0,L.useState)(``),[D,O]=(0,L.useState)(!1),[k,A]=(0,L.useState)(-1),M=(0,L.useRef)(null),[P,F]=(0,L.useState)(!1),[I,z]=(0,L.useState)(`list`),[B,V]=(0,L.useState)(!1),{filteredPrompts:H,selectedPrompt:U,setSelectedPrompt:W,results:G,handleDeleteResult:K,promptArgs:pe,setPromptArgs:me,isExecuting:q,handlePromptSelect:J,handleArgChange:he,executeSelectedPrompt:ge,searchQuery:Y,setSearchQuery:X}=oe({prompts:t,callPrompt:n,serverId:r}),Z=C(),Q=C();(0,L.useEffect)(()=>{let e=()=>{F(window.innerWidth<1024)};return e(),window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[]),(0,L.useEffect)(()=>{z(U?`detail`:`list`)},[U]),(0,L.useEffect)(()=>{P&&G.length>0&&!q&&z(`response`)},[G,q,P]),(0,L.useImperativeHandle)(e,()=>({focusSearch:()=>{O(!0),setTimeout(()=>{M.current&&M.current.focus()},0)},blurSearch:()=>{X(``),O(!1),M.current&&M.current.blur()}})),(0,L.useEffect)(()=>{try{let e=localStorage.getItem(fe);e&&w(JSON.parse(e))}catch(e){console.error(`[PromptsTab] Failed to load saved prompts:`,e)}},[]);let _e=(0,L.useCallback)(e=>{try{localStorage.setItem(fe,JSON.stringify(e))}catch(e){console.error(`[PromptsTab] Failed to save prompts:`,e)}},[]);(0,L.useEffect)(()=>{D&&M.current&&M.current.focus()},[D]);let ve=(0,L.useCallback)(()=>{Y.trim()||O(!1)},[Y]),ye=(0,L.useCallback)(async()=>{if(o){l(!0);try{await o()}finally{l(!1)}}},[o]),$=(0,L.useCallback)(e=>{let n=t.find(t=>t.name===e.promptName);n&&(W(n),me(e.args),d(e))},[t,W,me]);(0,L.useEffect)(()=>{A(-1)},[Y,g]),(0,L.useEffect)(()=>{let e=e=>{let t=e.target;if(t.tagName===`INPUT`||t.tagName===`TEXTAREA`||t.contentEditable===`true`||e.metaKey||e.ctrlKey||e.altKey)return;let n=g===`prompts`?H:S;if(e.key===`ArrowDown`)e.preventDefault(),A(e=>{let t=e+1;return t>=n.length?0:t});else if(e.key===`ArrowUp`)e.preventDefault(),A(e=>{let t=e-1;return t<0?n.length-1:t});else if(e.key===`Enter`&&k>=0)if(e.preventDefault(),g===`prompts`){let e=H[k];e&&J(e)}else{let e=S[k];e&&$(e)}};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[k,H,S,g,J,$]),(0,L.useEffect)(()=>{if(k>=0){let e=g===`prompts`?`prompt-${H[k]?.name}`:`saved-prompt-${S[k]?.id}`,t=document.getElementById(e);t&&t.scrollIntoView({behavior:`smooth`,block:`nearest`})}},[k,H,S,g]),(0,L.useEffect)(()=>{if(console.warn(`[PromptsTab] Auto-selection effect triggered:`,{selectedPromptName:f,promptsCount:t.length,currentSelectedPrompt:U?.name}),f&&t.length>0){let e=t.find(e=>e.name===f);if(console.warn(`[PromptsTab] Prompt lookup result:`,{selectedPromptName:f,promptFound:!!e,promptName:e?.name,shouldSelect:e&&U?.name!==e.name}),e&&U?.name!==e.name){console.warn(`[PromptsTab] Selecting prompt:`,e.name),p(null);let t=setTimeout(()=>{J(e);let t=document.getElementById(`prompt-${e.name}`);t&&(console.warn(`[PromptsTab] Scrolling to prompt element`),t.scrollIntoView({behavior:`smooth`,block:`nearest`}))},100);return()=>clearTimeout(t)}}},[f,t,U,J,p]);let be=(0,L.useCallback)(async(e,t)=>{try{await ae(JSON.stringify(t,null,2)),h(e),setTimeout(()=>h(null),2e3)}catch(e){console.error(`[PromptsTab] Failed to copy result:`,e)}},[]),xe=(0,L.useCallback)(e=>{if(P)z(`response`);else{let t=G[e];if(t){let e=window.open(``,`_blank`,`width=800,height=600`);if(e){let n=t.result;e.document.write(`
|
|
2
2
|
<html>
|
|
3
3
|
<head>
|
|
4
4
|
<title>${t.promptName} Result</title>
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{s as e,t}from"./react-CU_d2d5K.js";import{Nr as n,f as r,sr as i}from"./input-CLYhA7PK.js";import{t as a}from"./jsx-runtime-Cjj9sGSy.js";import{t as o}from"./AnimatePresence-C5p0yiY1.js";import{n as s,r as c,t as l}from"./WidgetWrapper-
|
|
1
|
+
import{s as e,t}from"./react-CU_d2d5K.js";import{Nr as n,f as r,sr as i}from"./input-CLYhA7PK.js";import{t as a}from"./jsx-runtime-Cjj9sGSy.js";import{t as o}from"./AnimatePresence-C5p0yiY1.js";import{n as s,r as c,t as l}from"./WidgetWrapper-A-zaxY5s.js";import{t as u}from"./brush--0LobUi4.js";import{n as d,t as f}from"./zap-Du2Uc5pa.js";import{t as p}from"./code-tME-5H6D.js";import{a as m,i as h,n as g,o as ee,r as _,t as v}from"./shared-Dbc2GbRx.js";import{t as y}from"./maximize-_O55kFcr.js";import{Ct as b,Dt as x,F as S,It as C,P as w,b as T,gn as E,hn as D,mn as O,un as k,vn as A,wt as j,xt as M,yt as N}from"./index-CoRK2C3M.js";import{t as P}from"./useConfig-Cg-BtSHA.js";import{t as F}from"./useViewHostProps-CMgPpdfy.js";var I=e(t(),1),L=a();function R(e){if(`error`in e&&e.error&&typeof e.error==`string`)return e.error;if(!(`isError`in e&&e.isError))return null;if(`contents`in e&&Array.isArray(e.contents)){let t=e.contents.filter(e=>`text`in e).map(e=>e.text).filter(Boolean);if(t.length>0)return t.join(`
|
|
2
2
|
`)}return`An error occurred`}function z({serverId:e,viewId:t,resourceUri:n,toolOutput:r,toolMetadata:i,readResource:a,customProps:o,displayMode:s,onDisplayModeChange:c}){let u=(0,I.useMemo)(()=>({}),[]),d=F({serverId:e,viewId:t,resourceUri:n,toolName:n,toolInput:u,toolOutput:r,toolMetadata:i,readResource:a,displayMode:s,onDisplayModeChange:c});if(!d)return(0,L.jsx)(l,{className:`w-full h-full min-h-[240px]`,children:(0,L.jsx)(S,{className:`size-5`})});let f=s===`inline`?`w-full h-full flex items-center justify-center relative p-4 min-h-0`:`w-full h-full relative p-4`,p=o?JSON.stringify(o):`no-custom-props`;return(0,L.jsx)(l,{className:`w-full h-full min-h-[240px]`,children:(0,L.jsx)(M,{viewId:t,toolName:n,toolInput:u,toolOutput:r,customProps:o,className:f,...d},p)})}function B({result:e,isLoading:t,previewMode:r,serverId:a,readResource:o,onTogglePreview:c,onCopy:l,onDownload:d,onFullscreen:m,isCopied:h=!1,selectedResource:g,llmConfig:ee}){let[_,v]=(0,I.useState)(null),x=(0,I.useCallback)(e=>{v(e)},[]),[C,w]=(0,I.useState)(`inline`),k=e?.result&&`contents`in e.result&&Array.isArray(e.result.contents)&&e.result.contents[0]?._meta||{},M={...e?.resourceAnnotations,...k},N=(0,I.useMemo)(()=>{let e=M?.[`mcp-use/propsSchema`];if(!e)return[];let t=e.def?.shape;return t?Object.entries(t).filter(([,e])=>{let t=e?.def?.type??e?.type;return t!==`optional`&&t!=="default"}).map(([e])=>e):e.required??[]},[M]),P=j(M)?`mcp-apps`:null,F=e?.result&&`contents`in e.result&&Array.isArray(e.result.contents)&&e.result.contents.some(e=>b(e.mimeType)),B=M?.ui?.resourceUri||k?.ui?.resourceUri||(F?e.uri:void 0),V=(P===`mcp-apps`||F)&&!!B,H=N.length>0&&!_;if(t)return(0,L.jsx)(`div`,{className:`flex absolute left-0 top-0 items-center justify-center w-full h-full`,children:(0,L.jsx)(S,{className:`size-5`})});if(!e)return(0,L.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full p-4 text-center`,children:[(0,L.jsx)(`p`,{className:`text-gray-500 dark:text-gray-400 mb-2`,children:`Select a resource to view its contents`}),(0,L.jsx)(`p`,{className:`text-xs text-gray-400 dark:text-gray-500`,children:`Choose a resource from the list to see its data`})]});let U=e.error||(e.result?R(e.result):null);return U?(0,L.jsx)(`div`,{className:`p-4`,children:(0,L.jsxs)(`div`,{className:`bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800 rounded p-3`,children:[(0,L.jsx)(`p`,{className:`text-red-800 dark:text-red-300 font-medium`,children:`Error:`}),(0,L.jsx)(`p`,{className:`text-red-700 dark:text-red-400 text-sm`,children:U})]})}):(0,L.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,L.jsxs)(`div`,{className:`shrink-0 px-4 py-3 border-b border-gray-200 dark:border-zinc-700 flex items-center justify-between`,children:[(0,L.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,L.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,L.jsx)(E,{className:`h-3 w-3 text-gray-400`}),(0,L.jsx)(`span`,{className:`text-xs text-gray-500 dark:text-gray-400`,children:new Date(e.timestamp).toLocaleTimeString()})]}),(()=>{let t=e?.duration??e.result?.duration??e.result?.metrics?.durationMs;return t===void 0?null:(0,L.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,L.jsx)(f,{className:`h-3 w-3 text-gray-400`}),(0,L.jsxs)(`span`,{className:`text-xs text-gray-500 dark:text-gray-400`,children:[t,`ms`]})]})})(),V&&(0,L.jsx)(n,{variant:`outline`,className:`text-xs bg-green-50 dark:bg-green-900/20 border-none border-green-200 dark:border-green-800/50 text-green-600 dark:text-green-400`,children:`MCP Apps`})]}),(0,L.jsxs)(`div`,{className:`flex items-center gap-1`,children:[V&&(0,L.jsxs)(i,{variant:`ghost`,size:`sm`,onClick:c,className:r?``:`text-purple-600 dark:text-purple-400`,children:[r?(0,L.jsx)(p,{className:`h-4 w-4 mr-1`}):(0,L.jsx)(u,{className:`h-4 w-4 mr-1`}),r?`JSON`:`Preview`]}),(0,L.jsx)(i,{variant:`ghost`,size:`sm`,onClick:l,children:h?(0,L.jsx)(A,{className:`h-4 w-4`}):(0,L.jsx)(D,{className:`h-4 w-4`})}),(0,L.jsx)(i,{variant:`ghost`,size:`sm`,onClick:d,children:(0,L.jsx)(O,{className:`h-4 w-4`})}),(0,L.jsx)(i,{variant:`ghost`,size:`sm`,onClick:m,children:(0,L.jsx)(y,{className:`h-4 w-4`})})]})]}),(0,L.jsx)(`div`,{className:`flex-1 overflow-y-auto relative`,children:V&&a&&o&&B?r?(0,L.jsxs)(`div`,{className:`flex flex-1 h-full relative flex-col min-h-0`,"data-testid":`resource-widget-preview`,children:[(0,L.jsx)(`div`,{className:`absolute top-2 right-2 z-10 flex items-center gap-2`,children:(0,L.jsx)(s,{toolCallId:`resource-${e.timestamp}`,displayMode:C,onDisplayModeChange:w,propsContext:`resource`,resourceUri:e.uri,resourceAnnotations:M,llmConfig:ee||null,resource:g||null,onPropsChange:x,requiredProps:N.length>0&&!_?N:void 0})}),H?(0,L.jsx)(`div`,{className:`flex items-center justify-center w-full h-full min-h-[200px] rounded-xl border-2 border-dashed border-gray-300 dark:border-zinc-600 bg-gray-50 dark:bg-zinc-800/50 m-4`,children:(0,L.jsx)(`p`,{className:`text-sm text-gray-500 dark:text-gray-400 text-center px-6`,children:`This widget requires props, set or generate them in the props debugger`})}):(0,L.jsx)(z,{serverId:a,viewId:`resource-${e.timestamp}`,resourceUri:B,toolOutput:e.result,toolMetadata:M,readResource:o,customProps:_||void 0,displayMode:C,onDisplayModeChange:w})]}):(0,L.jsx)(`div`,{className:`px-4 pt-4`,"data-testid":`resource-result-json`,children:(0,L.jsx)(T,{data:e.result,filename:`resource-${e.uri.replace(/[^a-zA-Z0-9]/g,`-`)}-mcp-apps-${Date.now()}.json`})}):(0,L.jsx)(`div`,{className:`px-4 pt-4`,"data-testid":`resource-result-json`,children:(0,L.jsx)(T,{data:e.result,filename:`resource-${e.uri.replace(/[^a-zA-Z0-9]/g,`-`)}-${Date.now()}.json`})})})]})}function V({resources:e,selectedResource:t,onResourceSelect:n,focusedIndex:r}){return e.length===0?(0,L.jsxs)(`div`,{className:`flex flex-1 flex-col items-center justify-center p-4 text-center`,children:[(0,L.jsx)(c,{className:`h-12 w-12 text-gray-400 dark:text-gray-600 mb-3`}),(0,L.jsx)(`p`,{className:`text-gray-500 dark:text-gray-400`,children:`No resources available`})]}):(0,L.jsx)(`div`,{children:e.map((e,i)=>{let a=[e.description,e.mimeType&&(0,L.jsx)(`span`,{className:`font-mono`,children:e.mimeType},`mime`)].filter(Boolean);return(0,L.jsx)(_,{id:`resource-${e.uri}`,"data-testid":`resource-item-${e.name}`,isSelected:t?.uri===e.uri,isFocused:r===i,title:e.name,description:a.length>0?(0,L.jsxs)(`span`,{className:`flex flex-col gap-1`,children:[e.description&&(0,L.jsx)(`span`,{children:e.description}),e.mimeType&&(0,L.jsx)(`span`,{className:`text-xs text-gray-500 dark:text-gray-500 font-mono`,children:e.mimeType})]}):void 0,onClick:()=>n(e)},e.uri)})})}function H({ref:e,resources:t,readResource:n,serverId:a,isConnected:s,mcpServerUrl:c,refreshResources:l}){let[u,f]=(0,I.useState)(!1),[p,_]=(0,I.useState)(null),{selectedResourceUri:y,setSelectedResourceUri:b}=w(),{llmConfig:S}=P({mcpServerUrl:c}),[T,E]=(0,I.useState)(null),[D,O]=(0,I.useState)(!1),[A,j]=(0,I.useState)(``),[M]=(0,I.useState)(`resources`),[F,R]=(0,I.useState)(!0),[z,H]=(0,I.useState)(!1),[U,W]=(0,I.useState)(-1),[G,K]=(0,I.useState)(!1),q=(0,I.useRef)(null),J=(0,I.useRef)(null),[te,ne]=(0,I.useState)(!1),[Y,X]=(0,I.useState)(`list`);(0,I.useEffect)(()=>{let e=()=>{ne(window.innerWidth<1024)};return e(),window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[]),(0,I.useEffect)(()=>{X(p?`detail`:`list`)},[p]),(0,I.useImperativeHandle)(e,()=>({focusSearch:()=>{H(!0),setTimeout(()=>{q.current&&q.current.focus()},0)},blurSearch:()=>{j(``),H(!1),q.current&&q.current.blur()}})),(0,I.useEffect)(()=>{z&&q.current&&q.current.focus()},[z]);let Z=(0,I.useCallback)(()=>{A.trim()||H(!1)},[A]),re=(0,I.useCallback)(async()=>{if(l){f(!0);try{await l()}finally{f(!1)}}},[l]),Q=(0,I.useMemo)(()=>{if(!A)return t;let e=A.toLowerCase();return t.filter(t=>t.name.toLowerCase().includes(e)||t.description?.toLowerCase().includes(e)||t.uri.toLowerCase().includes(e))},[t,A]),$=(0,I.useCallback)(async e=>{if(_(e),s){O(!0);let t=Date.now();try{let r=await n(e.uri);x(new C({resourceUri:e.uri,serverId:a,success:!0})).catch(()=>{}),E({uri:e.uri,result:r,timestamp:t,resourceAnnotations:{...e.annotations,...e._meta||{}}})}catch(n){x(new C({resourceUri:e.uri,serverId:a,success:!1,error:n instanceof Error?n.message:`Unknown error`})).catch(()=>{}),E({uri:e.uri,result:{contents:[],_meta:{}},error:n instanceof Error?n.message:`Unknown error`,timestamp:t,resourceAnnotations:{...e.annotations,...e._meta||{}}})}finally{O(!1)}}},[n,a,s]);(0,I.useEffect)(()=>{W(-1)},[A,M]),(0,I.useEffect)(()=>{let e=e=>{let t=e.target;if(t.tagName===`INPUT`||t.tagName===`TEXTAREA`||t.contentEditable===`true`||e.metaKey||e.ctrlKey||e.altKey)return;let n=Q;if(e.key===`ArrowDown`)e.preventDefault(),W(e=>{let t=e+1;return t>=n.length?0:t});else if(e.key===`ArrowUp`)e.preventDefault(),W(e=>{let t=e-1;return t<0?n.length-1:t});else if(e.key===`Enter`&&U>=0){e.preventDefault();let t=Q[U];t&&$(t)}};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[U,Q,$]),(0,I.useEffect)(()=>{if(U>=0){let e=`resource-${Q[U]?.uri}`,t=document.getElementById(e);t&&t.scrollIntoView({behavior:`smooth`,block:`nearest`})}},[U,Q]),(0,I.useEffect)(()=>{if(y&&t.length>0){let e=t.find(e=>e.uri===y);e&&p?.uri!==e.uri&&(b(null),setTimeout(()=>{$(e);let t=document.getElementById(`resource-${e.uri}`);t&&t.scrollIntoView({behavior:`smooth`,block:`nearest`})},100))}},[y,t,p,$,b]),(0,I.useEffect)(()=>{if(p){let e=t.find(e=>e.uri===p.uri);e&&e!==p&&(e.description!==p.description||e.mimeType!==p.mimeType||e.name!==p.name)&&_(e)}},[t,p]);let ie=(0,I.useCallback)(async()=>{if(T)try{await N(JSON.stringify(T.result,null,2)),K(!0),setTimeout(()=>K(!1),2e3)}catch(e){console.error(`[ResourcesTab] Failed to copy result:`,e)}},[T]),ae=(0,I.useCallback)(()=>{if(T)try{let e=new globalThis.Blob([JSON.stringify(T.result,null,2)],{type:`application/json`}),t=URL.createObjectURL(e),n=document.createElement(`a`);n.href=t,n.download=`resource-${Date.now()}.json`,document.body.appendChild(n),n.click(),document.body.removeChild(n),URL.revokeObjectURL(t)}catch(e){console.error(`[ResourcesTab] Failed to download result:`,e)}},[T]),oe=(0,I.useCallback)(async()=>{if(J.current)try{document.fullscreenElement?await document.exitFullscreen():await J.current.requestFullscreen()}catch(e){console.error(`[ResourcesTab] Failed to toggle fullscreen:`,e)}},[]);return te?(0,L.jsxs)(`div`,{className:`h-full flex flex-col overflow-hidden relative bg-background`,children:[Y!==`list`&&(0,L.jsxs)(`div`,{className:`flex items-center gap-2 p-2 border-b shrink-0 bg-background z-10`,children:[(0,L.jsx)(i,{variant:`ghost`,size:`sm`,onClick:()=>{_(null),X(`list`)},className:`p-0 h-8 w-8`,children:(0,L.jsx)(d,{className:`h-4 w-4`})}),(0,L.jsxs)(`div`,{className:`flex items-center text-sm font-medium`,children:[(0,L.jsx)(`button`,{onClick:()=>{_(null),X(`list`)},className:`text-muted-foreground hover:text-foreground hover:underline cursor-pointer`,children:`Resources`}),Y===`detail`&&(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(`span`,{className:`mx-2 text-muted-foreground`,children:`/`}),(0,L.jsx)(`span`,{className:`text-foreground`,children:`Content`})]})]})]}),(0,L.jsx)(`div`,{className:`flex-1 relative overflow-hidden`,children:(0,L.jsxs)(o,{initial:!1,mode:`popLayout`,children:[Y===`list`&&(0,L.jsx)(r.div,{initial:{x:`-100%`},animate:{x:0},exit:{x:`-100%`},transition:{type:`spring`,stiffness:300,damping:30},className:`absolute inset-0 flex flex-col bg-background z-0`,children:(0,L.jsx)(g,{children:e=>(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(v,{isScrolled:e,title:`Resources`,icon:k,count:Q.length,isSearchExpanded:z,searchQuery:A,searchPlaceholder:`Search resources...`,onSearchExpand:()=>H(!0),onSearchChange:j,onSearchBlur:Z,searchInputRef:q,onRefresh:l?re:void 0,isRefreshing:u}),(0,L.jsx)(V,{resources:Q,selectedResource:p,onResourceSelect:$,focusedIndex:U})]})})},`list`),Y===`detail`&&(0,L.jsx)(r.div,{initial:{x:`100%`},animate:{x:0},exit:{x:`100%`},transition:{type:`spring`,stiffness:300,damping:30},className:`absolute inset-0 bg-white dark:bg-zinc-900 z-10`,children:(0,L.jsx)(`div`,{ref:J,className:`h-full`,children:(0,L.jsx)(B,{result:T,isLoading:D,previewMode:F,serverId:a,readResource:n,onTogglePreview:()=>R(!F),onCopy:ie,onDownload:ae,onFullscreen:oe,isCopied:G,selectedResource:p,llmConfig:S})})},`detail`)]})})]}):(0,L.jsxs)(ee,{orientation:`horizontal`,className:`h-full`,children:[(0,L.jsx)(m,{defaultSize:`33%`,children:(0,L.jsx)(`div`,{className:`flex h-full flex-col overflow-hidden border-r dark:border-zinc-700`,children:(0,L.jsx)(g,{children:e=>(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(v,{isScrolled:e,title:`Resources`,icon:k,count:Q.length,isSearchExpanded:z,searchQuery:A,searchPlaceholder:`Search resources...`,onSearchExpand:()=>H(!0),onSearchChange:j,onSearchBlur:Z,searchInputRef:q,onRefresh:l?re:void 0,isRefreshing:u}),(0,L.jsx)(V,{resources:Q,selectedResource:p,onResourceSelect:$,focusedIndex:U})]})})})}),(0,L.jsx)(h,{}),(0,L.jsx)(m,{defaultSize:`67%`,children:(0,L.jsx)(`div`,{ref:J,className:`h-full bg-white dark:bg-zinc-900`,children:(0,L.jsx)(B,{result:T,isLoading:D,previewMode:F,serverId:a,readResource:n,onTogglePreview:()=>R(!F),onCopy:ie,onDownload:ae,onFullscreen:oe,isCopied:G,selectedResource:p,llmConfig:S})})})]})}H.displayName=`ResourcesTab`;export{H as ResourcesTab};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{s as e,t}from"./react-CU_d2d5K.js";import{a as n,n as r,r as i,sr as a,t as o}from"./input-CLYhA7PK.js";import{t as s}from"./jsx-runtime-Cjj9sGSy.js";import{t as c}from"./label-Cdim77Jw.js";import{a as l,i as u,n as d,r as f,t as p}from"./select-CJ57-Bor.js";import{a as m,i as h,n as ee,o as g,r as _,t as te}from"./shared-B1GD9FMm.js";import{t as v}from"./maximize-2-BTT9QQU9.js";import{t as y}from"./sparkles-2OAsc1aP.js";import{At as b,Bt as x,Jt as S,Kt as C,P as w,b as T,bt as E,hn as ne,in as D,jt as O,ln as k,mn as A,ot as j,vn as M,yt as N}from"./index-Cfuv_gb3.js";import{a as P}from"./dist-CeWSydFI.js";import{t as F}from"./useConfig-BTp15Lle.js";import{t as I}from"./textarea-DLAmNVf_.js";var L=e(t(),1),R=s();function z({requests:e,selectedRequest:t,onRequestSelect:n,focusedIndex:r,formatRelativeTime:i}){return e.length===0?(0,R.jsx)(`div`,{className:`flex flex-1 flex-col items-center justify-center p-4 text-center`,children:(0,R.jsx)(x,{vertical:!0,noBorder:!0,message:`No sampling requests`})}):(0,R.jsx)(`div`,{children:e.map((e,a)=>{let o=e.request.params?.messages?.length||0,s=e.request.params?.maxTokens;return(0,R.jsx)(_,{id:`sampling-request-${e.id}`,isSelected:t?.id===e.id,isFocused:r===a,title:(0,R.jsxs)(`span`,{className:`flex items-center gap-3`,children:[e.serverName,(0,R.jsx)(`span`,{className:`size-1.5 block rounded-full bg-orange-500`})]}),description:(()=>{let t=i(e.timestamp),n=[];return o>0&&n.push(`${o} message${o>1?`s`:``}`),s&&n.push(`max ${s} tokens`),t+(n.length>0?` | ${n.join(`, `)}`:``)})(),onClick:()=>n(e)},e.id)})})}function B({llmConfig:e}){return{generateResponse:(0,L.useCallback)(async({request:t})=>{if(!e)throw Error(`LLM config is not available`);let n=t.params||{},r=n.maxTokens,i=n.temperature,a=n.messages||[];if(a.length===0)throw Error(`No messages found in sampling request`);let o=[];for(let e of a){if(!e||!e.role)continue;let t=Array.isArray(e.content)?e.content[0]:e.content;t&&t.type===`text`&&t.text&&(e.role===`user`||e.role===`assistant`)&&o.push({role:e.role,content:t.text})}if(o.length===0)throw Error(`No valid messages could be converted. Please ensure messages have 'text' content type.`);return{role:`assistant`,content:{type:`text`,text:await P({config:{provider:e.provider,model:e.model,apiKey:e.apiKey,temperature:i??e.temperature,maxTokens:r,baseUrl:e.baseUrl},messages:o})},model:e.model,stopReason:`endTurn`}},[e]),isAvailable:e!==null}}function V({request:t,onApprove:s,onReject:m,onClose:h,previewMode:ee,onTogglePreview:g,isCopied:_,onCopy:te,onDownload:x,onFullscreen:S,llmConfig:w}){let[E,k]=(0,L.useState)(`manual`),[N,P]=(0,L.useState)(`stub-model`),[F,z]=(0,L.useState)(`endTurn`),[V,H]=(0,L.useState)(`assistant`),[U,W]=(0,L.useState)(`text`),[G,K]=(0,L.useState)(`positive`),[q,J]=(0,L.useState)(``),[Y,X]=(0,L.useState)(`image/png`),[Z,re]=(0,L.useState)(!1),[ie,Q]=(0,L.useState)(null),{generateResponse:ae,isAvailable:$}=B({llmConfig:w});(0,L.useEffect)(()=>{t&&(P(E===`llm`&&w?.model?w.model:`stub-model`),z(`endTurn`),H(`assistant`),W(`text`),K(`positive`),J(``),X(`image/png`),Q(null))},[t?.id]),(0,L.useEffect)(()=>{E===`llm`&&w?.model&&P(w.model)},[E,w?.model]);let oe=async()=>{if(!t||!$){console.log(`[SamplingRequestDisplay] Cannot generate:`,{hasRequest:!!t,isAvailable:$});return}console.log(`[SamplingRequestDisplay] Starting LLM generation:`,{requestId:t.id,llmConfig:w}),re(!0),Q(null);try{let e=await ae({request:t.request});console.log(`[SamplingRequestDisplay] LLM generation result:`,{result:e,model:e.model,stopReason:e.stopReason,role:e.role,contentIsArray:Array.isArray(e.content),content:e.content}),P(e.model||w?.model||`stub-model`),z(e.stopReason||`endTurn`),H(e.role||`assistant`);let n=Array.isArray(e.content)?e.content[0]:e.content;console.log(`[SamplingRequestDisplay] Setting content:`,{contentType:n.type,hasText:`text`in n,text:`text`in n?n.text:void 0}),n.type===`text`?(W(`text`),K(n.text||``),console.log(`[SamplingRequestDisplay] Set text content:`,n.text)):n.type===`image`&&(W(`image`),J(n.data||``),X(n.mimeType||`image/png`),console.log(`[SamplingRequestDisplay] Set image content`)),console.log(`[SamplingRequestDisplay] Form state after update:`,{model:N,stopReason:F,role:V,contentType:U,textContent:G})}catch(e){console.error(`[SamplingRequestDisplay] LLM generation error:`,e);let t=e instanceof Error?e.message:`Failed to generate response`;Q(t),j.error(`LLM Generation Failed`,{description:t})}finally{re(!1),console.log(`[SamplingRequestDisplay] Generation complete`)}},se=(0,L.useMemo)(()=>{let e={model:N,stopReason:F,role:V,content:{type:U}};return U===`text`?e.content.text=G:U===`image`&&(e.content.data=q,e.content.mimeType=Y),e},[N,F,V,U,G,q,Y]);return t?(0,R.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,R.jsxs)(`div`,{className:`flex items-center justify-between p-4 border-b dark:border-zinc-700`,children:[(0,R.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,R.jsx)(`h3`,{className:`font-medium text-gray-900 dark:text-gray-100`,children:t.serverName}),(0,R.jsx)(`span`,{className:`text-sm text-gray-500 dark:text-gray-400`,children:new Date(t.timestamp).toLocaleString()})]}),(0,R.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,R.jsxs)(r,{children:[(0,R.jsx)(n,{render:(0,R.jsx)(a,{variant:`ghost`,size:`sm`,onClick:te,className:`h-8 w-8 p-0`,children:_?(0,R.jsx)(M,{className:`h-4 w-4 text-green-600`}):(0,R.jsx)(ne,{className:`h-4 w-4`})}),nativeButton:!0}),(0,R.jsx)(i,{children:`Copy request`})]}),(0,R.jsxs)(r,{children:[(0,R.jsx)(n,{render:(0,R.jsx)(a,{variant:`ghost`,size:`sm`,onClick:x,className:`h-8 w-8 p-0`,children:(0,R.jsx)(A,{className:`h-4 w-4`})}),nativeButton:!0}),(0,R.jsx)(i,{children:`Download request`})]}),(0,R.jsxs)(r,{children:[(0,R.jsx)(n,{render:(0,R.jsx)(a,{variant:`ghost`,size:`sm`,onClick:S,className:`h-8 w-8 p-0`,children:(0,R.jsx)(v,{className:`h-4 w-4`})}),nativeButton:!0}),(0,R.jsx)(i,{children:`Fullscreen`})]}),(0,R.jsx)(a,{variant:`ghost`,size:`sm`,onClick:h,className:`h-8 w-8 p-0`,children:(0,R.jsx)(C,{className:`h-4 w-4`})})]})]}),(0,R.jsxs)(`div`,{className:`flex-1 overflow-y-auto p-4 space-y-6`,children:[(0,R.jsxs)(`div`,{className:`space-y-2`,children:[(0,R.jsx)(`h4`,{className:`text-sm font-semibold text-gray-900 dark:text-gray-100`,children:`Request`}),(0,R.jsx)(`div`,{className:`bg-muted rounded-lg p-3 max-h-64 overflow-auto`,children:(0,R.jsx)(T,{data:t.request})})]}),(0,R.jsxs)(`div`,{className:`space-y-4`,children:[(0,R.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,R.jsx)(`h4`,{className:`text-sm font-semibold text-gray-900 dark:text-gray-100`,children:`Response`}),(0,R.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,R.jsx)(c,{htmlFor:`responseMode-${t.id}`,className:`text-xs text-gray-500 dark:text-gray-400`,children:`Mode:`}),(0,R.jsxs)(p,{value:E,onValueChange:e=>k(e),children:[(0,R.jsx)(u,{id:`responseMode-${t.id}`,className:`w-32 h-8 text-xs`,"data-testid":`sampling-response-mode-select`,children:(0,R.jsx)(l,{})}),(0,R.jsxs)(d,{children:[(0,R.jsx)(f,{value:`manual`,"data-testid":`sampling-response-mode-manual`,children:`Manual`}),(0,R.jsx)(f,{value:`llm`,"data-testid":`sampling-response-mode-llm`,children:`LLM`})]})]})]})]}),E===`llm`&&(0,R.jsxs)(`div`,{className:`space-y-2 p-3 bg-muted rounded-lg`,children:[$?(0,R.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,R.jsx)(a,{onClick:oe,disabled:Z,size:`sm`,className:`flex items-center gap-2`,"data-testid":`sampling-generate-llm-button`,children:Z?(0,R.jsxs)(`span`,{"data-testid":`sampling-generating`,className:`flex items-center gap-2`,children:[(0,R.jsx)(D,{className:`h-4 w-4 animate-spin`}),`Generating...`]}):(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(y,{className:`h-4 w-4`}),`Generate with LLM`]})}),(0,R.jsxs)(`span`,{className:`text-xs text-gray-500 dark:text-gray-400`,children:[`Using `,w?.provider,` (`,w?.model,`)`]})]}):(0,R.jsx)(`div`,{className:`text-xs text-gray-500 dark:text-gray-400`,children:`LLM not configured. Please configure LLM in the Chat tab.`}),ie&&(0,R.jsx)(`div`,{className:`text-xs text-red-600 dark:text-red-400`,"data-testid":`sampling-generation-error`,children:ie})]}),(0,R.jsxs)(`div`,{className:`space-y-2`,children:[(0,R.jsx)(c,{htmlFor:`model-${t.id}`,children:`Model`}),(0,R.jsx)(o,{id:`model-${t.id}`,value:N,onChange:e=>P(e.target.value),placeholder:`stub-model`,disabled:E===`llm`&&Z,"data-testid":`sampling-model-input`})]}),(0,R.jsxs)(`div`,{className:`space-y-2`,children:[(0,R.jsx)(c,{htmlFor:`stopReason-${t.id}`,children:`Stop Reason`}),(0,R.jsx)(o,{id:`stopReason-${t.id}`,value:F,onChange:e=>z(e.target.value),placeholder:`endTurn`,disabled:E===`llm`&&Z,"data-testid":`sampling-stop-reason-input`})]}),(0,R.jsxs)(`div`,{className:`space-y-2`,children:[(0,R.jsx)(c,{htmlFor:`role-${t.id}`,children:`Role`}),(0,R.jsxs)(p,{value:V,onValueChange:e=>H(e),disabled:E===`llm`&&Z,children:[(0,R.jsx)(u,{id:`role-${t.id}`,"data-testid":`sampling-role-select`,children:(0,R.jsx)(l,{})}),(0,R.jsxs)(d,{children:[(0,R.jsx)(f,{value:`assistant`,children:`assistant`}),(0,R.jsx)(f,{value:`user`,children:`user`})]})]})]}),(0,R.jsxs)(`div`,{className:`space-y-2`,children:[(0,R.jsx)(c,{htmlFor:`contentType-${t.id}`,children:`Content Type`}),(0,R.jsxs)(p,{value:U,onValueChange:e=>W(e),disabled:E===`llm`&&Z,children:[(0,R.jsx)(u,{id:`contentType-${t.id}`,"data-testid":`sampling-content-type-select`,children:(0,R.jsx)(l,{})}),(0,R.jsxs)(d,{children:[(0,R.jsx)(f,{value:`text`,children:`text`}),(0,R.jsx)(f,{value:`image`,children:`image`})]})]})]}),U===`text`&&(0,R.jsxs)(`div`,{className:`space-y-2`,children:[(0,R.jsx)(c,{htmlFor:`text-${t.id}`,children:`Text Content`}),(0,R.jsx)(I,{id:`text-${t.id}`,value:G,onChange:e=>K(e.target.value),placeholder:`Enter response text...`,rows:6,disabled:E===`llm`&&Z,"data-testid":`sampling-text-content`})]}),U===`image`&&(0,R.jsxs)(R.Fragment,{children:[(0,R.jsxs)(`div`,{className:`space-y-2`,children:[(0,R.jsx)(c,{htmlFor:`imageData-${t.id}`,children:`Base64 Image Data`}),(0,R.jsx)(I,{id:`imageData-${t.id}`,value:q,onChange:e=>J(e.target.value),placeholder:`Base64 encoded image data...`,rows:4,disabled:E===`llm`&&Z})]}),(0,R.jsxs)(`div`,{className:`space-y-2`,children:[(0,R.jsx)(c,{htmlFor:`mimeType-${t.id}`,children:`MIME Type`}),(0,R.jsx)(o,{id:`mimeType-${t.id}`,value:Y,onChange:e=>X(e.target.value),placeholder:`image/png`,disabled:E===`llm`&&Z})]})]})]})]}),(0,R.jsxs)(`div`,{className:`flex gap-2 p-4 border-t dark:border-zinc-700`,children:[(0,R.jsx)(a,{onClick:()=>{if(!t)return;let n=O.CreateMessageResult[`~standard`].validate(se);if(n.issues){j.error(`Invalid response`,{description:`Validation failed: ${n.issues.map(e=>e.message).join(`, `)}`});return}s(t.id,n.value),h(),b(()=>import(`./react-CU_d2d5K.js`).then(t=>e(t.t(),1)).then(e=>{let n=j(e.createElement(`div`,{className:`space-y-3`},e.createElement(`div`,null,e.createElement(`strong`,null,`Sampling Response Sent`),e.createElement(`p`,{className:`text-sm text-muted-foreground mt-1`},`The tool will continue executing.`)),e.createElement(`div`,{className:`flex gap-2`},e.createElement(`button`,{"data-testid":`sampling-view-tool-result`,className:`px-3 py-1.5 text-xs font-medium rounded-md bg-primary text-primary-foreground hover:bg-primary/90`,onClick:()=>{let e=new globalThis.CustomEvent(`navigate-to-tool-result`,{detail:{toolName:t.toolName}});window.dispatchEvent(e),j.dismiss(n)}},`View Tool Result`))),{duration:5e3})}),[])},className:`flex-1`,disabled:E===`llm`&&Z,"data-testid":`sampling-approve-button`,children:`Approve`}),(0,R.jsx)(a,{onClick:()=>{t&&(m(t.id,`User rejected sampling request`),h())},variant:`outline`,className:`flex-1`,disabled:E===`llm`&&Z,"data-testid":`sampling-reject-button`,children:`Reject`})]})]}):(0,R.jsx)(`div`,{className:`flex flex-col items-center justify-center h-full p-4 text-center`,children:(0,R.jsx)(`p`,{className:`text-gray-500 dark:text-gray-400`,children:`Select a sampling request to view details`})})}function H({pendingRequests:e,onApprove:t,onReject:n,serverId:r,isConnected:i,mcpServerUrl:a}){let{selectedSamplingRequestId:o,setSelectedSamplingRequestId:s}=w(),{llmConfig:c}=F({mcpServerUrl:a}),[l,u]=(0,L.useState)(null),[d,f]=(0,L.useState)(``),[p,_]=(0,L.useState)(-1),[v,y]=(0,L.useState)(!0),[b,x]=(0,L.useState)(!1),[C,T]=(0,L.useState)(!0),[ne,D]=(0,L.useState)(!1),O=(0,L.useRef)(null),A=(0,L.useRef)(null),j=(0,L.useRef)(null),M=(0,L.useRef)(!1);(0,L.useEffect)(()=>{if(console.log(`[SamplingTab] Auto-selection check:`,{selectedSamplingRequestId:o,pendingRequestsCount:e.length,currentSelectedId:l?.id}),o&&e.length>0){let t=e.find(e=>e.id===o);console.log(`[SamplingTab] Found request for auto-selection:`,!!t,t?.id),t&&(console.log(`[SamplingTab] Auto-selecting request:`,t.id),s(null),u(t),setTimeout(()=>{let e=document.getElementById(`sampling-request-${t.id}`);console.log(`[SamplingTab] Scrolling to element:`,!!e),e&&e.scrollIntoView({behavior:`smooth`,block:`nearest`})},100))}},[o,e,s]),(0,L.useEffect)(()=>{let t=t=>{let n=t.detail.requestId;console.log(`[SamplingTab] Custom navigate event received:`,n);let r=e.find(e=>e.id===n);r&&(console.log(`[SamplingTab] Selecting request from event:`,n),u(r),setTimeout(()=>{let e=document.getElementById(`sampling-request-${n}`);e&&e.scrollIntoView({behavior:`smooth`,block:`nearest`})},200))};return window.addEventListener(`navigate-to-sampling`,t),()=>window.removeEventListener(`navigate-to-sampling`,t)},[e]),(0,L.useEffect)(()=>{v&&e.length>0&&O.current&&!M.current&&(O.current.scrollTop=0)},[e.length,v]),(0,L.useEffect)(()=>{let e=O.current;if(!e)return;let t=()=>{e.scrollTop>0&&(M.current=!0,y(!1))};return e.addEventListener(`scroll`,t),()=>e.removeEventListener(`scroll`,t)},[]),(0,L.useEffect)(()=>{e.length===0&&(M.current=!1,y(!0))},[e.length]),(0,L.useEffect)(()=>{b&&j.current&&j.current.focus()},[b]);let P=(0,L.useCallback)(()=>{d.trim()||x(!1)},[d]),I=(0,L.useMemo)(()=>{if(!d.trim())return e;let t=d.toLowerCase();return e.filter(e=>e.serverName.toLowerCase().includes(t)||JSON.stringify(e.request||{}).toLowerCase().includes(t))},[e,d]);(0,L.useEffect)(()=>{_(-1)},[d]),(0,L.useEffect)(()=>{let e=e=>{let t=e.target;if(t.tagName===`INPUT`||t.tagName===`TEXTAREA`||t.contentEditable===`true`||e.metaKey||e.ctrlKey||e.altKey)return;let n=I;if(e.key===`ArrowDown`)e.preventDefault(),_(e=>{let t=e+1;return t>=n.length?0:t});else if(e.key===`ArrowUp`)e.preventDefault(),_(e=>{let t=e-1;return t<0?n.length-1:t});else if(e.key===`Enter`&&p>=0){e.preventDefault();let t=I[p];t&&B(t)}};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[p,I]),(0,L.useEffect)(()=>{if(p>=0){let e=`sampling-request-${I[p]?.id}`,t=document.getElementById(e);t&&t.scrollIntoView({behavior:`smooth`,block:`nearest`})}},[p,I]);let B=(0,L.useCallback)(e=>{u(e)},[]),H=(0,L.useCallback)(()=>{window.confirm(`Are you sure you want to reject all sampling requests? This cannot be undone.`)&&(e.forEach(e=>{n(e.id,`User rejected all requests`)}),u(null))},[e,n]),U=(0,L.useCallback)(async()=>{if(l)try{await N(JSON.stringify({id:l.id,serverName:l.serverName,timestamp:l.timestamp,request:l.request},null,2)),D(!0),setTimeout(()=>D(!1),2e3)}catch(e){console.error(`[SamplingTab] Failed to copy request:`,e)}},[l]),W=(0,L.useCallback)(()=>{if(l)try{let e=new globalThis.Blob([JSON.stringify({id:l.id,serverName:l.serverName,timestamp:l.timestamp,request:l.request},null,2)],{type:`application/json`}),t=URL.createObjectURL(e),n=document.createElement(`a`);n.href=t,n.download=`sampling-request-${Date.now()}.json`,document.body.appendChild(n),n.click(),document.body.removeChild(n),URL.revokeObjectURL(t)}catch(e){console.error(`[SamplingTab] Failed to download request:`,e)}},[l]),G=(0,L.useCallback)(async()=>{if(A.current)try{document.fullscreenElement?await document.exitFullscreen():await A.current.requestFullscreen()}catch(e){console.error(`[SamplingTab] Failed to toggle fullscreen:`,e)}},[]);return i?(0,R.jsxs)(g,{orientation:`horizontal`,className:`h-full`,children:[(0,R.jsx)(m,{defaultSize:40,minSize:30,children:(0,R.jsx)(g,{orientation:`vertical`,className:`h-full border-r dark:border-zinc-700`,children:(0,R.jsx)(m,{defaultSize:75,minSize:30,className:`h-full overflow-hidden`,children:(0,R.jsx)(ee,{scrollRef:O,children:t=>(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(te,{isScrolled:t,title:`Sampling`,icon:k,count:I.length,isSearchExpanded:b,searchQuery:d,searchPlaceholder:`Search requests...`,onSearchExpand:()=>x(!0),onSearchChange:f,onSearchBlur:P,bulkAction:{icon:S,label:`Reject all`,onClick:H,disabled:e.length===0},searchInputRef:j}),(0,R.jsx)(z,{requests:I,selectedRequest:l,onRequestSelect:B,focusedIndex:p,formatRelativeTime:E})]})})})})}),(0,R.jsx)(h,{}),(0,R.jsx)(m,{defaultSize:60,minSize:40,children:(0,R.jsx)(`div`,{ref:A,className:`h-full bg-white dark:bg-zinc-900`,children:(0,R.jsx)(V,{request:l,onApprove:t,onReject:n,onClose:()=>u(null),previewMode:C,onTogglePreview:()=>T(!C),isCopied:ne,onCopy:U,onDownload:W,onFullscreen:G,llmConfig:c})})})]}):(0,R.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full p-4 text-center`,children:[(0,R.jsx)(k,{className:`h-12 w-12 text-gray-400 dark:text-gray-600 mb-3`}),(0,R.jsx)(`p`,{className:`text-gray-500 dark:text-gray-400`,children:`Not connected to server`})]})}export{H as SamplingTab};
|
|
1
|
+
import{s as e,t}from"./react-CU_d2d5K.js";import{a as n,n as r,r as i,sr as a,t as o}from"./input-CLYhA7PK.js";import{t as s}from"./jsx-runtime-Cjj9sGSy.js";import{t as c}from"./label-Cdim77Jw.js";import{a as l,i as u,n as d,r as f,t as p}from"./select-CJ57-Bor.js";import{a as m,i as h,n as ee,o as g,r as _,t as te}from"./shared-Dbc2GbRx.js";import{t as v}from"./maximize-2-BTT9QQU9.js";import{t as y}from"./sparkles-2OAsc1aP.js";import{At as b,Bt as x,Jt as S,Kt as C,P as w,b as T,bt as E,hn as ne,in as D,jt as O,ln as k,mn as A,ot as j,vn as M,yt as N}from"./index-CoRK2C3M.js";import{a as P}from"./dist-DxRFPg-B.js";import{t as F}from"./useConfig-Cg-BtSHA.js";import{t as I}from"./textarea-DLAmNVf_.js";var L=e(t(),1),R=s();function z({requests:e,selectedRequest:t,onRequestSelect:n,focusedIndex:r,formatRelativeTime:i}){return e.length===0?(0,R.jsx)(`div`,{className:`flex flex-1 flex-col items-center justify-center p-4 text-center`,children:(0,R.jsx)(x,{vertical:!0,noBorder:!0,message:`No sampling requests`})}):(0,R.jsx)(`div`,{children:e.map((e,a)=>{let o=e.request.params?.messages?.length||0,s=e.request.params?.maxTokens;return(0,R.jsx)(_,{id:`sampling-request-${e.id}`,isSelected:t?.id===e.id,isFocused:r===a,title:(0,R.jsxs)(`span`,{className:`flex items-center gap-3`,children:[e.serverName,(0,R.jsx)(`span`,{className:`size-1.5 block rounded-full bg-orange-500`})]}),description:(()=>{let t=i(e.timestamp),n=[];return o>0&&n.push(`${o} message${o>1?`s`:``}`),s&&n.push(`max ${s} tokens`),t+(n.length>0?` | ${n.join(`, `)}`:``)})(),onClick:()=>n(e)},e.id)})})}function B({llmConfig:e}){return{generateResponse:(0,L.useCallback)(async({request:t})=>{if(!e)throw Error(`LLM config is not available`);let n=t.params||{},r=n.maxTokens,i=n.temperature,a=n.messages||[];if(a.length===0)throw Error(`No messages found in sampling request`);let o=[];for(let e of a){if(!e||!e.role)continue;let t=Array.isArray(e.content)?e.content[0]:e.content;t&&t.type===`text`&&t.text&&(e.role===`user`||e.role===`assistant`)&&o.push({role:e.role,content:t.text})}if(o.length===0)throw Error(`No valid messages could be converted. Please ensure messages have 'text' content type.`);return{role:`assistant`,content:{type:`text`,text:await P({config:{provider:e.provider,model:e.model,apiKey:e.apiKey,temperature:i??e.temperature,maxTokens:r,baseUrl:e.baseUrl},messages:o})},model:e.model,stopReason:`endTurn`}},[e]),isAvailable:e!==null}}function V({request:t,onApprove:s,onReject:m,onClose:h,previewMode:ee,onTogglePreview:g,isCopied:_,onCopy:te,onDownload:x,onFullscreen:S,llmConfig:w}){let[E,k]=(0,L.useState)(`manual`),[N,P]=(0,L.useState)(`stub-model`),[F,z]=(0,L.useState)(`endTurn`),[V,H]=(0,L.useState)(`assistant`),[U,W]=(0,L.useState)(`text`),[G,K]=(0,L.useState)(`positive`),[q,J]=(0,L.useState)(``),[Y,X]=(0,L.useState)(`image/png`),[Z,re]=(0,L.useState)(!1),[ie,Q]=(0,L.useState)(null),{generateResponse:ae,isAvailable:$}=B({llmConfig:w});(0,L.useEffect)(()=>{t&&(P(E===`llm`&&w?.model?w.model:`stub-model`),z(`endTurn`),H(`assistant`),W(`text`),K(`positive`),J(``),X(`image/png`),Q(null))},[t?.id]),(0,L.useEffect)(()=>{E===`llm`&&w?.model&&P(w.model)},[E,w?.model]);let oe=async()=>{if(!t||!$){console.log(`[SamplingRequestDisplay] Cannot generate:`,{hasRequest:!!t,isAvailable:$});return}console.log(`[SamplingRequestDisplay] Starting LLM generation:`,{requestId:t.id,llmConfig:w}),re(!0),Q(null);try{let e=await ae({request:t.request});console.log(`[SamplingRequestDisplay] LLM generation result:`,{result:e,model:e.model,stopReason:e.stopReason,role:e.role,contentIsArray:Array.isArray(e.content),content:e.content}),P(e.model||w?.model||`stub-model`),z(e.stopReason||`endTurn`),H(e.role||`assistant`);let n=Array.isArray(e.content)?e.content[0]:e.content;console.log(`[SamplingRequestDisplay] Setting content:`,{contentType:n.type,hasText:`text`in n,text:`text`in n?n.text:void 0}),n.type===`text`?(W(`text`),K(n.text||``),console.log(`[SamplingRequestDisplay] Set text content:`,n.text)):n.type===`image`&&(W(`image`),J(n.data||``),X(n.mimeType||`image/png`),console.log(`[SamplingRequestDisplay] Set image content`)),console.log(`[SamplingRequestDisplay] Form state after update:`,{model:N,stopReason:F,role:V,contentType:U,textContent:G})}catch(e){console.error(`[SamplingRequestDisplay] LLM generation error:`,e);let t=e instanceof Error?e.message:`Failed to generate response`;Q(t),j.error(`LLM Generation Failed`,{description:t})}finally{re(!1),console.log(`[SamplingRequestDisplay] Generation complete`)}},se=(0,L.useMemo)(()=>{let e={model:N,stopReason:F,role:V,content:{type:U}};return U===`text`?e.content.text=G:U===`image`&&(e.content.data=q,e.content.mimeType=Y),e},[N,F,V,U,G,q,Y]);return t?(0,R.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,R.jsxs)(`div`,{className:`flex items-center justify-between p-4 border-b dark:border-zinc-700`,children:[(0,R.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,R.jsx)(`h3`,{className:`font-medium text-gray-900 dark:text-gray-100`,children:t.serverName}),(0,R.jsx)(`span`,{className:`text-sm text-gray-500 dark:text-gray-400`,children:new Date(t.timestamp).toLocaleString()})]}),(0,R.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,R.jsxs)(r,{children:[(0,R.jsx)(n,{render:(0,R.jsx)(a,{variant:`ghost`,size:`sm`,onClick:te,className:`h-8 w-8 p-0`,children:_?(0,R.jsx)(M,{className:`h-4 w-4 text-green-600`}):(0,R.jsx)(ne,{className:`h-4 w-4`})}),nativeButton:!0}),(0,R.jsx)(i,{children:`Copy request`})]}),(0,R.jsxs)(r,{children:[(0,R.jsx)(n,{render:(0,R.jsx)(a,{variant:`ghost`,size:`sm`,onClick:x,className:`h-8 w-8 p-0`,children:(0,R.jsx)(A,{className:`h-4 w-4`})}),nativeButton:!0}),(0,R.jsx)(i,{children:`Download request`})]}),(0,R.jsxs)(r,{children:[(0,R.jsx)(n,{render:(0,R.jsx)(a,{variant:`ghost`,size:`sm`,onClick:S,className:`h-8 w-8 p-0`,children:(0,R.jsx)(v,{className:`h-4 w-4`})}),nativeButton:!0}),(0,R.jsx)(i,{children:`Fullscreen`})]}),(0,R.jsx)(a,{variant:`ghost`,size:`sm`,onClick:h,className:`h-8 w-8 p-0`,children:(0,R.jsx)(C,{className:`h-4 w-4`})})]})]}),(0,R.jsxs)(`div`,{className:`flex-1 overflow-y-auto p-4 space-y-6`,children:[(0,R.jsxs)(`div`,{className:`space-y-2`,children:[(0,R.jsx)(`h4`,{className:`text-sm font-semibold text-gray-900 dark:text-gray-100`,children:`Request`}),(0,R.jsx)(`div`,{className:`bg-muted rounded-lg p-3 max-h-64 overflow-auto`,children:(0,R.jsx)(T,{data:t.request})})]}),(0,R.jsxs)(`div`,{className:`space-y-4`,children:[(0,R.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,R.jsx)(`h4`,{className:`text-sm font-semibold text-gray-900 dark:text-gray-100`,children:`Response`}),(0,R.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,R.jsx)(c,{htmlFor:`responseMode-${t.id}`,className:`text-xs text-gray-500 dark:text-gray-400`,children:`Mode:`}),(0,R.jsxs)(p,{value:E,onValueChange:e=>k(e),children:[(0,R.jsx)(u,{id:`responseMode-${t.id}`,className:`w-32 h-8 text-xs`,"data-testid":`sampling-response-mode-select`,children:(0,R.jsx)(l,{})}),(0,R.jsxs)(d,{children:[(0,R.jsx)(f,{value:`manual`,"data-testid":`sampling-response-mode-manual`,children:`Manual`}),(0,R.jsx)(f,{value:`llm`,"data-testid":`sampling-response-mode-llm`,children:`LLM`})]})]})]})]}),E===`llm`&&(0,R.jsxs)(`div`,{className:`space-y-2 p-3 bg-muted rounded-lg`,children:[$?(0,R.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,R.jsx)(a,{onClick:oe,disabled:Z,size:`sm`,className:`flex items-center gap-2`,"data-testid":`sampling-generate-llm-button`,children:Z?(0,R.jsxs)(`span`,{"data-testid":`sampling-generating`,className:`flex items-center gap-2`,children:[(0,R.jsx)(D,{className:`h-4 w-4 animate-spin`}),`Generating...`]}):(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(y,{className:`h-4 w-4`}),`Generate with LLM`]})}),(0,R.jsxs)(`span`,{className:`text-xs text-gray-500 dark:text-gray-400`,children:[`Using `,w?.provider,` (`,w?.model,`)`]})]}):(0,R.jsx)(`div`,{className:`text-xs text-gray-500 dark:text-gray-400`,children:`LLM not configured. Please configure LLM in the Chat tab.`}),ie&&(0,R.jsx)(`div`,{className:`text-xs text-red-600 dark:text-red-400`,"data-testid":`sampling-generation-error`,children:ie})]}),(0,R.jsxs)(`div`,{className:`space-y-2`,children:[(0,R.jsx)(c,{htmlFor:`model-${t.id}`,children:`Model`}),(0,R.jsx)(o,{id:`model-${t.id}`,value:N,onChange:e=>P(e.target.value),placeholder:`stub-model`,disabled:E===`llm`&&Z,"data-testid":`sampling-model-input`})]}),(0,R.jsxs)(`div`,{className:`space-y-2`,children:[(0,R.jsx)(c,{htmlFor:`stopReason-${t.id}`,children:`Stop Reason`}),(0,R.jsx)(o,{id:`stopReason-${t.id}`,value:F,onChange:e=>z(e.target.value),placeholder:`endTurn`,disabled:E===`llm`&&Z,"data-testid":`sampling-stop-reason-input`})]}),(0,R.jsxs)(`div`,{className:`space-y-2`,children:[(0,R.jsx)(c,{htmlFor:`role-${t.id}`,children:`Role`}),(0,R.jsxs)(p,{value:V,onValueChange:e=>H(e),disabled:E===`llm`&&Z,children:[(0,R.jsx)(u,{id:`role-${t.id}`,"data-testid":`sampling-role-select`,children:(0,R.jsx)(l,{})}),(0,R.jsxs)(d,{children:[(0,R.jsx)(f,{value:`assistant`,children:`assistant`}),(0,R.jsx)(f,{value:`user`,children:`user`})]})]})]}),(0,R.jsxs)(`div`,{className:`space-y-2`,children:[(0,R.jsx)(c,{htmlFor:`contentType-${t.id}`,children:`Content Type`}),(0,R.jsxs)(p,{value:U,onValueChange:e=>W(e),disabled:E===`llm`&&Z,children:[(0,R.jsx)(u,{id:`contentType-${t.id}`,"data-testid":`sampling-content-type-select`,children:(0,R.jsx)(l,{})}),(0,R.jsxs)(d,{children:[(0,R.jsx)(f,{value:`text`,children:`text`}),(0,R.jsx)(f,{value:`image`,children:`image`})]})]})]}),U===`text`&&(0,R.jsxs)(`div`,{className:`space-y-2`,children:[(0,R.jsx)(c,{htmlFor:`text-${t.id}`,children:`Text Content`}),(0,R.jsx)(I,{id:`text-${t.id}`,value:G,onChange:e=>K(e.target.value),placeholder:`Enter response text...`,rows:6,disabled:E===`llm`&&Z,"data-testid":`sampling-text-content`})]}),U===`image`&&(0,R.jsxs)(R.Fragment,{children:[(0,R.jsxs)(`div`,{className:`space-y-2`,children:[(0,R.jsx)(c,{htmlFor:`imageData-${t.id}`,children:`Base64 Image Data`}),(0,R.jsx)(I,{id:`imageData-${t.id}`,value:q,onChange:e=>J(e.target.value),placeholder:`Base64 encoded image data...`,rows:4,disabled:E===`llm`&&Z})]}),(0,R.jsxs)(`div`,{className:`space-y-2`,children:[(0,R.jsx)(c,{htmlFor:`mimeType-${t.id}`,children:`MIME Type`}),(0,R.jsx)(o,{id:`mimeType-${t.id}`,value:Y,onChange:e=>X(e.target.value),placeholder:`image/png`,disabled:E===`llm`&&Z})]})]})]})]}),(0,R.jsxs)(`div`,{className:`flex gap-2 p-4 border-t dark:border-zinc-700`,children:[(0,R.jsx)(a,{onClick:()=>{if(!t)return;let n=O.CreateMessageResult[`~standard`].validate(se);if(n.issues){j.error(`Invalid response`,{description:`Validation failed: ${n.issues.map(e=>e.message).join(`, `)}`});return}s(t.id,n.value),h(),b(()=>import(`./react-CU_d2d5K.js`).then(t=>e(t.t(),1)).then(e=>{let n=j(e.createElement(`div`,{className:`space-y-3`},e.createElement(`div`,null,e.createElement(`strong`,null,`Sampling Response Sent`),e.createElement(`p`,{className:`text-sm text-muted-foreground mt-1`},`The tool will continue executing.`)),e.createElement(`div`,{className:`flex gap-2`},e.createElement(`button`,{"data-testid":`sampling-view-tool-result`,className:`px-3 py-1.5 text-xs font-medium rounded-md bg-primary text-primary-foreground hover:bg-primary/90`,onClick:()=>{let e=new globalThis.CustomEvent(`navigate-to-tool-result`,{detail:{toolName:t.toolName}});window.dispatchEvent(e),j.dismiss(n)}},`View Tool Result`))),{duration:5e3})}),[])},className:`flex-1`,disabled:E===`llm`&&Z,"data-testid":`sampling-approve-button`,children:`Approve`}),(0,R.jsx)(a,{onClick:()=>{t&&(m(t.id,`User rejected sampling request`),h())},variant:`outline`,className:`flex-1`,disabled:E===`llm`&&Z,"data-testid":`sampling-reject-button`,children:`Reject`})]})]}):(0,R.jsx)(`div`,{className:`flex flex-col items-center justify-center h-full p-4 text-center`,children:(0,R.jsx)(`p`,{className:`text-gray-500 dark:text-gray-400`,children:`Select a sampling request to view details`})})}function H({pendingRequests:e,onApprove:t,onReject:n,serverId:r,isConnected:i,mcpServerUrl:a}){let{selectedSamplingRequestId:o,setSelectedSamplingRequestId:s}=w(),{llmConfig:c}=F({mcpServerUrl:a}),[l,u]=(0,L.useState)(null),[d,f]=(0,L.useState)(``),[p,_]=(0,L.useState)(-1),[v,y]=(0,L.useState)(!0),[b,x]=(0,L.useState)(!1),[C,T]=(0,L.useState)(!0),[ne,D]=(0,L.useState)(!1),O=(0,L.useRef)(null),A=(0,L.useRef)(null),j=(0,L.useRef)(null),M=(0,L.useRef)(!1);(0,L.useEffect)(()=>{if(console.log(`[SamplingTab] Auto-selection check:`,{selectedSamplingRequestId:o,pendingRequestsCount:e.length,currentSelectedId:l?.id}),o&&e.length>0){let t=e.find(e=>e.id===o);console.log(`[SamplingTab] Found request for auto-selection:`,!!t,t?.id),t&&(console.log(`[SamplingTab] Auto-selecting request:`,t.id),s(null),u(t),setTimeout(()=>{let e=document.getElementById(`sampling-request-${t.id}`);console.log(`[SamplingTab] Scrolling to element:`,!!e),e&&e.scrollIntoView({behavior:`smooth`,block:`nearest`})},100))}},[o,e,s]),(0,L.useEffect)(()=>{let t=t=>{let n=t.detail.requestId;console.log(`[SamplingTab] Custom navigate event received:`,n);let r=e.find(e=>e.id===n);r&&(console.log(`[SamplingTab] Selecting request from event:`,n),u(r),setTimeout(()=>{let e=document.getElementById(`sampling-request-${n}`);e&&e.scrollIntoView({behavior:`smooth`,block:`nearest`})},200))};return window.addEventListener(`navigate-to-sampling`,t),()=>window.removeEventListener(`navigate-to-sampling`,t)},[e]),(0,L.useEffect)(()=>{v&&e.length>0&&O.current&&!M.current&&(O.current.scrollTop=0)},[e.length,v]),(0,L.useEffect)(()=>{let e=O.current;if(!e)return;let t=()=>{e.scrollTop>0&&(M.current=!0,y(!1))};return e.addEventListener(`scroll`,t),()=>e.removeEventListener(`scroll`,t)},[]),(0,L.useEffect)(()=>{e.length===0&&(M.current=!1,y(!0))},[e.length]),(0,L.useEffect)(()=>{b&&j.current&&j.current.focus()},[b]);let P=(0,L.useCallback)(()=>{d.trim()||x(!1)},[d]),I=(0,L.useMemo)(()=>{if(!d.trim())return e;let t=d.toLowerCase();return e.filter(e=>e.serverName.toLowerCase().includes(t)||JSON.stringify(e.request||{}).toLowerCase().includes(t))},[e,d]);(0,L.useEffect)(()=>{_(-1)},[d]),(0,L.useEffect)(()=>{let e=e=>{let t=e.target;if(t.tagName===`INPUT`||t.tagName===`TEXTAREA`||t.contentEditable===`true`||e.metaKey||e.ctrlKey||e.altKey)return;let n=I;if(e.key===`ArrowDown`)e.preventDefault(),_(e=>{let t=e+1;return t>=n.length?0:t});else if(e.key===`ArrowUp`)e.preventDefault(),_(e=>{let t=e-1;return t<0?n.length-1:t});else if(e.key===`Enter`&&p>=0){e.preventDefault();let t=I[p];t&&B(t)}};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[p,I]),(0,L.useEffect)(()=>{if(p>=0){let e=`sampling-request-${I[p]?.id}`,t=document.getElementById(e);t&&t.scrollIntoView({behavior:`smooth`,block:`nearest`})}},[p,I]);let B=(0,L.useCallback)(e=>{u(e)},[]),H=(0,L.useCallback)(()=>{window.confirm(`Are you sure you want to reject all sampling requests? This cannot be undone.`)&&(e.forEach(e=>{n(e.id,`User rejected all requests`)}),u(null))},[e,n]),U=(0,L.useCallback)(async()=>{if(l)try{await N(JSON.stringify({id:l.id,serverName:l.serverName,timestamp:l.timestamp,request:l.request},null,2)),D(!0),setTimeout(()=>D(!1),2e3)}catch(e){console.error(`[SamplingTab] Failed to copy request:`,e)}},[l]),W=(0,L.useCallback)(()=>{if(l)try{let e=new globalThis.Blob([JSON.stringify({id:l.id,serverName:l.serverName,timestamp:l.timestamp,request:l.request},null,2)],{type:`application/json`}),t=URL.createObjectURL(e),n=document.createElement(`a`);n.href=t,n.download=`sampling-request-${Date.now()}.json`,document.body.appendChild(n),n.click(),document.body.removeChild(n),URL.revokeObjectURL(t)}catch(e){console.error(`[SamplingTab] Failed to download request:`,e)}},[l]),G=(0,L.useCallback)(async()=>{if(A.current)try{document.fullscreenElement?await document.exitFullscreen():await A.current.requestFullscreen()}catch(e){console.error(`[SamplingTab] Failed to toggle fullscreen:`,e)}},[]);return i?(0,R.jsxs)(g,{orientation:`horizontal`,className:`h-full`,children:[(0,R.jsx)(m,{defaultSize:40,minSize:30,children:(0,R.jsx)(g,{orientation:`vertical`,className:`h-full border-r dark:border-zinc-700`,children:(0,R.jsx)(m,{defaultSize:75,minSize:30,className:`h-full overflow-hidden`,children:(0,R.jsx)(ee,{scrollRef:O,children:t=>(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(te,{isScrolled:t,title:`Sampling`,icon:k,count:I.length,isSearchExpanded:b,searchQuery:d,searchPlaceholder:`Search requests...`,onSearchExpand:()=>x(!0),onSearchChange:f,onSearchBlur:P,bulkAction:{icon:S,label:`Reject all`,onClick:H,disabled:e.length===0},searchInputRef:j}),(0,R.jsx)(z,{requests:I,selectedRequest:l,onRequestSelect:B,focusedIndex:p,formatRelativeTime:E})]})})})})}),(0,R.jsx)(h,{}),(0,R.jsx)(m,{defaultSize:60,minSize:40,children:(0,R.jsx)(`div`,{ref:A,className:`h-full bg-white dark:bg-zinc-900`,children:(0,R.jsx)(V,{request:l,onApprove:t,onReject:n,onClose:()=>u(null),previewMode:C,onTogglePreview:()=>T(!C),isCopied:ne,onCopy:U,onDownload:W,onFullscreen:G,llmConfig:c})})})]}):(0,R.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full p-4 text-center`,children:[(0,R.jsx)(k,{className:`h-12 w-12 text-gray-400 dark:text-gray-600 mb-3`}),(0,R.jsx)(`p`,{className:`text-gray-500 dark:text-gray-400`,children:`Not connected to server`})]})}export{H as SamplingTab};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{s as e,t}from"./react-CU_d2d5K.js";import{d as n,l as r,u as i}from"./input-CLYhA7PK.js";import{t as a}from"./jsx-runtime-Cjj9sGSy.js";import{t as o}from"./label-Cdim77Jw.js";import{at as s,b as c,gt as l,ht as u,it as d,nt as f,on as p,rt as m,tt as h}from"./index-
|
|
1
|
+
import{s as e,t}from"./react-CU_d2d5K.js";import{d as n,l as r,u as i}from"./input-CLYhA7PK.js";import{t as a}from"./jsx-runtime-Cjj9sGSy.js";import{t as o}from"./label-Cdim77Jw.js";import{at as s,b as c,gt as l,ht as u,it as d,nt as f,on as p,rt as m,tt as h}from"./index-CoRK2C3M.js";import{n as g,r as _,t as v}from"./tabs-subtle-CxMZqhP6.js";import{t as y}from"./inspector-settings-layout-yjKRJDai.js";import{n as b}from"./ListTabHeader-R17w_JsB.js";function x(e){let t={};if(e.protocolVersion&&(t.protocolVersion=e.protocolVersion),e.capabilities&&(t.capabilities=e.capabilities),e.serverInfo){let{icon:n,...r}=e.serverInfo;t.serverInfo=r}return e.instructions&&(t.instructions=e.instructions),t}var S=e(t(),1),C=a();function w({connection:e}){let t=e.capabilities;return t&&Object.keys(t).length>0?(0,C.jsx)(`div`,{className:`overflow-x-auto`,"data-testid":`server-info-capabilities-json`,children:(0,C.jsx)(c,{data:t,filename:`capabilities-${l(e)}.json`})}):(0,C.jsx)(`p`,{className:`text-sm text-muted-foreground`,"data-testid":`server-info-capabilities`,children:`No capabilities reported.`})}var T=`space-y-1.5 min-w-0`;function E({label:e,children:t,className:n,testId:r}){return(0,C.jsxs)(`div`,{className:n??T,children:[(0,C.jsx)(o,{className:`text-xs text-muted-foreground`,children:e}),(0,C.jsx)(`div`,{className:`min-h-4 text-xs font-mono`,"data-testid":r,children:t})]})}function D({connection:e,inDialog:t=!1}){let n=u(e),r=e.serverInfo?.name||e.serverInfo?.title||e.url||e.name;return(0,C.jsxs)(`div`,{className:`space-y-6`,children:[(0,C.jsxs)(h,{className:`border`,children:[(0,C.jsxs)(d,{children:[(0,C.jsx)(s,{className:`text-base font-medium`,children:t?`General`:`Server Information`}),(0,C.jsx)(m,{children:`Server identity from initialize`})]}),(0,C.jsx)(f,{className:`pt-0`,children:(0,C.jsxs)(`div`,{className:`flex flex-wrap items-start gap-x-8 gap-y-4`,children:[e.serverInfo?.title&&(0,C.jsx)(E,{label:`Title`,children:(0,C.jsx)(`span`,{className:`inline-block rounded-md bg-muted p-1 px-2`,children:e.serverInfo.title})}),n&&(0,C.jsx)(E,{label:`Alias`,children:(0,C.jsx)(`span`,{className:`inline-block rounded-md bg-muted p-1 px-2`,children:n})}),(0,C.jsx)(E,{label:`Name`,testId:`server-info-name`,children:(0,C.jsx)(`span`,{className:`inline-block rounded-md bg-muted p-1 px-2`,children:r})}),e.serverInfo?.version&&(0,C.jsx)(E,{label:`Version`,children:(0,C.jsx)(`span`,{className:`inline-block rounded-md bg-muted p-1 px-2`,children:e.serverInfo.version})}),e.protocolVersion&&(0,C.jsx)(E,{label:`Protocol`,children:(0,C.jsx)(`span`,{className:`inline-block rounded-md bg-muted p-1 px-2`,children:e.protocolVersion})}),e.serverInfo?.websiteUrl&&(0,C.jsx)(E,{label:`Website`,className:`${T} w-full`,children:(0,C.jsx)(`a`,{href:e.serverInfo.websiteUrl,target:`_blank`,rel:`noopener noreferrer`,className:`break-all font-sans text-blue-500 hover:underline`,children:e.serverInfo.websiteUrl})})]})})]}),e.instructions&&(0,C.jsxs)(h,{className:`border`,children:[(0,C.jsxs)(d,{children:[(0,C.jsx)(s,{className:`text-base font-medium`,children:`Instructions`}),(0,C.jsx)(m,{children:`Server guidance for clients and agents`})]}),(0,C.jsx)(f,{className:`pt-0`,children:(0,C.jsx)(`p`,{className:`whitespace-pre-wrap font-sans text-sm text-muted-foreground`,children:e.instructions})})]}),e.serverInfo?.icons&&e.serverInfo.icons.length>0&&(0,C.jsxs)(h,{className:`border`,children:[(0,C.jsxs)(d,{children:[(0,C.jsx)(s,{className:`text-base font-medium`,children:`Icons`}),(0,C.jsx)(m,{children:`Server icon assets from initialize`})]}),(0,C.jsx)(f,{className:`pt-0`,children:(0,C.jsx)(`div`,{className:`flex flex-col gap-2 font-sans`,children:e.serverInfo.icons.map((e,t)=>(0,C.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2 rounded-md bg-muted p-2`,"data-testid":`server-info-icon-${t}`,children:[(0,C.jsx)(`div`,{className:`flex h-8 w-8 shrink-0 items-center justify-center overflow-hidden rounded-md border border-border bg-background`,children:(0,C.jsx)(`img`,{src:e.src,alt:`Server icon ${t+1}`,className:`h-full w-full object-contain`})}),(0,C.jsxs)(`div`,{className:`min-w-0 text-xs`,children:[(0,C.jsx)(`p`,{className:`truncate font-mono`,children:e.src}),(0,C.jsx)(`p`,{className:`text-muted-foreground`,children:e.sizes?.join(`, `)||`no size`})]})]},t))})})]}),(0,C.jsxs)(h,{className:`border`,"data-testid":`server-info-capabilities`,children:[(0,C.jsxs)(d,{children:[(0,C.jsx)(s,{className:`text-base font-medium`,children:`Capabilities`}),(0,C.jsx)(m,{children:`MCP capabilities reported during initialize`})]}),(0,C.jsx)(f,{className:`pt-0`,children:(0,C.jsx)(w,{connection:e})})]})]})}var O=`server-metadata`;function k({connection:e}){let[t,a]=(0,S.useState)(0),[o,s]=(0,S.useState)(!1),u=x(e);return(0,C.jsxs)(`div`,{"data-testid":`server-info-modal`,className:`h-full overflow-y-auto overscroll-none`,onScroll:e=>s(e.currentTarget.scrollTop>0),children:[(0,C.jsx)(`div`,{className:`${r(o)} flex flex-row items-center justify-between gap-2 ${i}`,children:(0,C.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-2 sm:flex-row sm:items-center sm:gap-4`,children:[(0,C.jsxs)(`h2`,{className:`${n} flex items-center gap-1.5`,"data-testid":`server-info-modal-title`,children:[(0,C.jsx)(p,{className:b,"aria-hidden":!0}),`Server Metadata`]}),(0,C.jsxs)(v,{selectedIndex:t,onSelect:a,idPrefix:O,className:`shrink-0`,children:[(0,C.jsx)(g,{label:`Formatted`,index:0}),(0,C.jsx)(g,{label:`Raw`,index:1})]})]})}),(0,C.jsx)(_,{index:0,selectedIndex:t,idPrefix:O,className:y,children:(0,C.jsx)(D,{connection:e})}),(0,C.jsx)(_,{index:1,selectedIndex:t,idPrefix:O,className:`px-4 pt-6 pb-6`,children:(0,C.jsx)(`div`,{"data-testid":`server-info-raw`,children:Object.keys(u).length===0?(0,C.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`No initialize metadata yet. Connect to the server first.`}):(0,C.jsx)(c,{data:u,filename:`initialize-result-${l(e)}-${Date.now()}.json`})})})]})}export{k as ServerMetadataTab};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{s as e,t}from"./react-CU_d2d5K.js";import{Lr as n,Nr as r,a as i,cr as a,f as o,n as s,r as c,sr as l,t as u,ur as d}from"./input-CLYhA7PK.js";import{t as f}from"./jsx-runtime-Cjj9sGSy.js";import{t as p}from"./label-Cdim77Jw.js";import{t as m}from"./AnimatePresence-C5p0yiY1.js";import{a as h,i as g,n as _,r as v,t as y}from"./select-CJ57-Bor.js";import{t as b}from"./createLucideIcon-B3b8EU0b.js";import{n as x,r as S,t as C}from"./WidgetWrapper-pDgNVq9y.js";import{n as w,t as T}from"./zap-Du2Uc5pa.js";import{t as E}from"./code-tME-5H6D.js";import{a as D,i as O,n as k,o as ee,r as A,s as j}from"./shared-B1GD9FMm.js";import{t as M}from"./maximize-_O55kFcr.js";import{n as N,t as te}from"./save-B-MsgxX9.js";import{$ as P,$t as F,B as I,Bt as L,Dt as R,F as z,G as B,J as V,Jt as ne,Kt as H,Lt as U,M as W,P as re,Q as G,R as ie,Rt as ae,St as K,U as oe,W as se,X as q,Y as ce,Z as le,_n as ue,b as J,cn as Y,en as de,hn as fe,ot as pe,q as me,qt as he,vn as ge,w as _e,wt as ve,xt as ye,yt as be,z as xe}from"./index-Cfuv_gb3.js";import{t as Se}from"./textarea-DLAmNVf_.js";import{t as Ce}from"./useViewHostProps-BQlaFC2Q.js";import{t as we}from"./ListTabHeader-R17w_JsB.js";var Te=b(`chevron-up`,[[`path`,{d:`m18 15-6-6-6 6`,key:`153udz`}]]),X=e(t(),1),Z=f();function Ee({savedRequests:e,selectedRequest:t,onLoadRequest:n,onDeleteRequest:r,focusedIndex:a}){if(e.length===0)return(0,Z.jsxs)(`div`,{className:`flex flex-1 flex-col items-center justify-center p-4 text-center`,children:[(0,Z.jsx)(S,{className:`h-12 w-12 text-gray-400 dark:text-gray-600 mb-3`}),(0,Z.jsx)(`p`,{className:`text-gray-500 dark:text-gray-400 mb-2`,children:`No saved requests yet`}),(0,Z.jsx)(`p`,{className:`text-xs text-gray-400 dark:text-gray-500`,children:`Execute a tool and click Save to store requests`})]});let o=(e,t)=>{e.stopPropagation(),t()};return(0,Z.jsx)(`div`,{children:e.map((e,u)=>(0,Z.jsxs)(`div`,{className:`relative group`,children:[(0,Z.jsx)(A,{id:`saved-${e.id}`,isSelected:t?.id===e.id,isFocused:a===u,title:e.name,description:e.toolName,metadata:(0,Z.jsx)(`div`,{className:`flex flex-col gap-1`,children:(0,Z.jsx)(`span`,{className:`text-xs text-gray-400 dark:text-gray-500`,children:new Date(e.savedAt).toLocaleString()})}),onClick:()=>n(e)}),(0,Z.jsx)(`div`,{className:`absolute top-1/2 right-2 -translate-y-1/2 opacity-0 group-hover:opacity-100 transition-opacity z-10`,children:(0,Z.jsxs)(s,{children:[(0,Z.jsx)(i,{render:(0,Z.jsx)(l,{variant:`secondary`,size:`sm`,onClick:t=>o(t,()=>r(e.id)),className:`h-8 w-8 p-0`,children:(0,Z.jsx)(ne,{className:`h-4 w-4`})}),nativeButton:!0}),(0,Z.jsx)(c,{children:(0,Z.jsx)(`p`,{children:`Delete saved request`})})]})})]},e.id))})}function De({isOpen:e,requestName:t,defaultPlaceholder:n,onRequestNameChange:r,onSave:i,onCancel:a}){return e?(0,Z.jsx)(`div`,{className:`fixed inset-0 bg-black/50 flex items-center justify-center z-50`,onClick:a,children:(0,Z.jsxs)(`div`,{className:`bg-white dark:bg-zinc-800 rounded-lg p-6 w-[400px] shadow-xl border border-gray-200 dark:border-zinc-700`,onClick:e=>e.stopPropagation(),children:[(0,Z.jsx)(`h3`,{className:`text-lg font-semibold mb-4 text-gray-900 dark:text-gray-100`,children:`Save Request`}),(0,Z.jsxs)(`div`,{className:`space-y-4`,children:[(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(p,{htmlFor:`request-name`,children:`Request Name (optional)`}),(0,Z.jsx)(u,{id:`request-name`,value:t,onChange:e=>r(e.target.value),placeholder:n,className:`mt-2`,onKeyDown:e=>{e.key===`Enter`&&i()},autoFocus:!0})]}),(0,Z.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,Z.jsx)(l,{variant:`outline`,onClick:a,children:`Cancel`}),(0,Z.jsxs)(l,{onClick:i,children:[(0,Z.jsx)(te,{className:`h-4 w-4 mr-2`}),`Save`]})]})]})]})}):null}function Oe(e,t){if(!e?.$ref)return e;let n=e.$ref;if(!n.startsWith(`#/`))return e;let r=n.substring(2).split(`/`),i=t;for(let t of r)if(i&&typeof i==`object`&&t in i)i=i[t];else return e;return i}function Q(e,t){if(e?.anyOf&&Array.isArray(e.anyOf)){let n=e.anyOf.find(e=>Oe(e,t)?.type!==`null`);if(n)return{...Oe(n,t),nullable:!0}}return e}function $(e,t){let n=Q(e||{},t);return n=Oe(n,t),n}function ke(e,t){let n=$(e,t);if(typeof n.type==`string`)return n.type;if(Array.isArray(n.type)){let e=n.type.find(e=>e!==`null`);return typeof e==`string`?e:void 0}}function Ae(e){let t=e?.enum;return Array.isArray(t)&&t.every(e=>typeof e==`string`)?t:null}function je(e){let t=e.trim().toLowerCase();return[`true`,`1`,`yes`,`on`].includes(t)?!0:[`false`,`0`,`no`,`off`].includes(t)?!1:e}function Me(e,t){if(t===`number`||t===`integer`){let t=e.trim();if(!t)return e;let n=Number(t);return Number.isFinite(n)?n:e}return t===`boolean`?je(e):e}function Ne(e,t){if(e===void 0)return e;if(t===`object`||t===`array`){if(typeof e==`string`)try{return JSON.parse(e)}catch{return e}return e}if(t===`number`||t===`integer`){if(typeof e==`number`)return e;if(typeof e==`string`){let t=e.trim();if(!t)return e;let n=Number(t);return Number.isFinite(n)?n:e}return e}return t===`boolean`?typeof e==`boolean`?e:typeof e==`string`?je(e):e:e}function Pe(e){let t=``,n=0,r=!1,i=!1;for(;n<e.length;){let a=e[n];if(i){t+=a,i=!1,n++;continue}if(a===`\\`){i=!0,t+=a,n++;continue}if(a==="`"){r?(t+=`"`,r=!1):(t+=`"`,r=!0),n++;continue}if(r&&a===`"`){t+=`\\"`,n++;continue}t+=a,n++}return t}function Fe(e){if(!e||typeof e!=`string`)return null;let t=e.trim();if(!t.startsWith(`{`))return null;try{let e=JSON.parse(t);if(e&&typeof e==`object`&&!Array.isArray(e))return e}catch{try{let e=Pe(t),n=JSON.parse(e);if(n&&typeof n==`object`&&!Array.isArray(n))return n}catch{return null}}return null}function Ie({selectedTool:e,toolArgs:t,onArgChange:n,onBulkPaste:r,autoFilledFields:i,setFields:a,sendEmptyFields:o,onToggleEmpty:s}){let c=e?.inputSchema?.properties||{},l=e?.inputSchema?.required||[],d=Object.keys(c).length>0,f=async(e,t)=>{r&&await r(e.clipboardData.getData(`text`),t)&&e.preventDefault()};return d?(0,Z.jsx)(`div`,{className:`space-y-4`,children:Object.entries(c).map(([r,c])=>{let d=$(c,e?.inputSchema||{}),m=Ae(d),b=d.type===`string`&&m!==null,x=d,S=l.includes(r),C=t[r],w=``;C!=null&&(w=typeof C==`string`?C:typeof C==`object`&&C?JSON.stringify(C,null,2):String(C));let T=x.type===`object`||x.type===`array`,E=T?x.type===`array`?`array`:`object`:`string`,D=a?.has(r)??!0,O=s&&(x.type===`string`||T);return T?(0,Z.jsxs)(`div`,{className:`space-y-2`,children:[(0,Z.jsxs)(`div`,{className:`flex items-start justify-between gap-2`,children:[(0,Z.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Z.jsxs)(p,{htmlFor:r,className:`text-sm font-medium`,children:[r,S&&(0,Z.jsx)(`span`,{className:`text-red-500 ml-1`,children:`*`})]}),x?.description&&(0,Z.jsx)(`p`,{className:`mt-0.5 text-xs text-gray-500 dark:text-gray-400`,children:x.description})]}),O&&s&&(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 shrink-0`,children:[(0,Z.jsx)(`span`,{className:`text-xs text-muted-foreground whitespace-nowrap`,children:E===`array`?`Send empty array explicitly`:`Send empty object explicitly`}),(0,Z.jsx)(_e,{checked:o?.has(r)??!1,onCheckedChange:e=>s(r,E,e),"aria-label":E===`array`?`Send empty array`:`Send empty object`,title:E===`array`?`Send empty array []`:`Send empty object {}`})]})]}),(0,Z.jsx)(Se,{id:r,"data-testid":`tool-param-${r}`,value:w,onChange:e=>n(r,e.target.value),onPaste:e=>f(e,r),placeholder:`Enter ${r}`,disabled:o?.has(r)??!1,className:`min-h-[100px] ${D?``:`opacity-70`} ${i?.has(r)?`animate-pulse ring-2 ring-green-500 dark:ring-green-400`:``}`})]},r):b&&m?(0,Z.jsxs)(`div`,{className:`space-y-2`,children:[(0,Z.jsxs)(`div`,{children:[(0,Z.jsxs)(p,{htmlFor:r,className:`text-sm font-medium`,children:[r,S&&(0,Z.jsx)(`span`,{className:`text-red-500 ml-1`,children:`*`})]}),x.description&&(0,Z.jsx)(`p`,{className:`mt-0.5 text-xs text-gray-500 dark:text-gray-400`,children:x.description})]}),(0,Z.jsxs)(y,{value:String(t[r]||``),onValueChange:e=>n(r,e),children:[(0,Z.jsx)(g,{id:r,className:`w-full ${D?``:`opacity-70`}`,"data-testid":`tool-param-${r}`,children:(0,Z.jsx)(h,{placeholder:`Select an option`})}),(0,Z.jsx)(_,{children:m.map((e,t)=>(0,Z.jsx)(v,{value:e,children:x.enumNames?.[t]||e},e))})]})]},r):(0,Z.jsxs)(`div`,{className:`space-y-2`,children:[(0,Z.jsxs)(`div`,{className:`flex items-start justify-between gap-2`,children:[(0,Z.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Z.jsxs)(p,{htmlFor:r,className:`text-sm font-medium`,children:[r,S&&(0,Z.jsx)(`span`,{className:`text-red-500 ml-1`,children:`*`})]}),x?.description&&(0,Z.jsx)(`p`,{className:`mt-0.5 text-xs text-gray-500 dark:text-gray-400`,children:x.description})]}),O&&s&&(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 shrink-0`,children:[(0,Z.jsx)(`span`,{className:`text-xs text-muted-foreground whitespace-nowrap`,children:`Send empty string`}),(0,Z.jsx)(_e,{checked:o?.has(r)??!1,onCheckedChange:e=>s(r,`string`,e),"aria-label":`Send empty string`,title:`Send empty string`})]})]}),(0,Z.jsx)(u,{id:r,"data-testid":`tool-param-${r}`,value:w,onChange:e=>n(r,e.target.value),onPaste:e=>f(e,r),placeholder:`Enter ${r}`,disabled:o?.has(r)??!1,className:`${D?``:`opacity-70`} ${i?.has(r)?`animate-pulse ring-2 ring-green-500 dark:ring-green-400`:``}`})]},r)})}):(0,Z.jsx)(`div`,{className:`flex items-center justify-center h-32 text-gray-500 dark:text-gray-400 text-sm`,children:`No parameters required`})}function Le({selectedTool:e,toolArgs:t,payloadToSend:r,isExecuting:o,isConnected:u,onArgChange:f,onExecute:p,onSave:m,onCancel:h,onBulkPaste:g,autoFilledFields:_,setFields:v,sendEmptyFields:y,onToggleEmpty:b}){let x=`hidden @[700px]/tool-exec:inline`,S=`hidden @[700px]/tool-exec:inline shrink-0 text-[10px] leading-none border border-current/30 p-1 rounded-full`,C=`max-[699px]/tool-exec:size-8 max-[699px]/tool-exec:min-w-8 max-[699px]/tool-exec:shrink-0 max-[699px]/tool-exec:gap-0 max-[699px]/tool-exec:rounded-full max-[699px]/tool-exec:px-0 max-[699px]/tool-exec:py-0`,w=`max-[699px]/tool-exec:!pr-0`,[T,D]=(0,X.useState)(!1),[O,k]=(0,X.useState)(!1),[ee,A]=(0,X.useState)(!1),[j,M]=(0,X.useState)(!1),[N,P]=(0,X.useState)(!1),L=(0,X.useRef)(null);return(0,X.useEffect)(()=>{if(L.current&&e?.description){let e=L.current,t=parseFloat(getComputedStyle(e).lineHeight),n=e.scrollHeight;P(Math.round(n/t)>3),M(!1)}},[e?.description]),(0,X.useEffect)(()=>{let t=t=>{(t.metaKey||t.ctrlKey)&&t.key===`Enter`&&e&&!o&&u&&(t.preventDefault(),p()),t.key===`Escape`&&o&&h&&(t.preventDefault(),h())};return document.addEventListener(`keydown`,t),()=>document.removeEventListener(`keydown`,t)},[e,o,u,p,h]),e?(0,Z.jsxs)(`div`,{className:`flex flex-col h-full @container/tool-exec`,children:[(0,Z.jsx)(`div`,{className:`shrink-0 p-3 sm:p-5 pt-3 sm:pt-4 pb-2 sm:pb-2 sm:pr-4`,children:(0,Z.jsx)(`div`,{children:(0,Z.jsxs)(`div`,{className:`flex flex-row items-center justify-between mb-0 gap-2`,children:[(0,Z.jsx)(`h3`,{className:`text-base sm:text-lg font-semibold`,"data-testid":`tool-execution-title`,children:e.name}),(0,Z.jsxs)(`div`,{className:`flex gap-2 shrink-0`,children:[(0,Z.jsxs)(s,{children:[(0,Z.jsx)(i,{render:(0,Z.jsxs)(l,{"data-testid":`tool-execution-metadata-button`,variant:O?`default`:`outline`,onClick:()=>k(!O),disabled:o,size:`sm`,className:n(d,C),title:`View tool metadata`,children:[(0,Z.jsx)(E,{}),(0,Z.jsx)(`span`,{className:x,children:`Metadata`})]}),nativeButton:!0}),(0,Z.jsx)(c,{children:(0,Z.jsx)(`p`,{children:`View tool definition metadata`})})]}),(0,Z.jsxs)(s,{children:[(0,Z.jsx)(i,{render:(0,Z.jsxs)(l,{"data-testid":`tool-execution-copy-payload-button`,variant:`outline`,onClick:async()=>{if(e)try{await be(JSON.stringify(r??t,null,2)),A(!0),setTimeout(()=>A(!1),2e3)}catch{}},disabled:o,size:`sm`,className:n(d,C),title:`Copy payload as JSON`,children:[ee?(0,Z.jsx)(ge,{className:`text-green-600`}):(0,Z.jsx)(fe,{}),(0,Z.jsx)(`span`,{className:x,children:ee?`Copied!`:`Payload`})]}),nativeButton:!0}),(0,Z.jsx)(c,{children:(0,Z.jsx)(`p`,{children:`Copy payload as JSON`})})]}),(0,Z.jsxs)(s,{children:[(0,Z.jsx)(i,{render:(0,Z.jsxs)(l,{"data-testid":`tool-execution-save-button`,variant:`outline`,onClick:m,disabled:o,size:`sm`,className:n(d,C),title:`Save request`,children:[(0,Z.jsx)(te,{}),(0,Z.jsx)(`span`,{className:x,children:`Save`})]}),nativeButton:!0}),(0,Z.jsx)(c,{children:(0,Z.jsx)(`p`,{children:`Save request`})})]}),o&&h?(0,Z.jsxs)(s,{open:T?void 0:!1,children:[(0,Z.jsx)(i,{render:(0,Z.jsx)(`div`,{onMouseEnter:()=>D(!0),onMouseLeave:()=>D(!1),className:`relative`,children:(0,Z.jsx)(l,{"data-testid":`tool-execution-cancel-button`,onClick:h,variant:T?`destructive`:`default`,size:`sm`,className:n(a,C,w,`transition-all`),children:T?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(H,{}),(0,Z.jsx)(`span`,{className:x,children:`Cancel`}),(0,Z.jsx)(`span`,{className:S,children:`Esc`})]}):(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(z,{}),(0,Z.jsx)(`span`,{className:x,children:`Executing...`})]})})}),nativeButton:!1}),(0,Z.jsx)(c,{children:(0,Z.jsx)(`p`,{children:`Hover to cancel (or press Esc)`})})]}):(0,Z.jsx)(l,{"data-testid":`tool-execution-execute-button`,onClick:p,disabled:o||!u,size:`sm`,className:n(a,C,w),children:o?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(z,{}),(0,Z.jsx)(`span`,{className:x,children:`Executing...`})]}):(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(F,{}),(0,Z.jsx)(`span`,{className:x,children:`Execute`}),(0,Z.jsx)(`span`,{className:S,children:`⌘↵`})]})})]})]})})}),(0,Z.jsxs)(`div`,{className:`flex-1 overflow-y-auto px-3 sm:px-5 pb-4 pr-3`,children:[e.description&&(0,Z.jsxs)(`div`,{className:`relative mb-6`,children:[(0,Z.jsxs)(`div`,{className:`relative`,children:[(0,Z.jsx)(`p`,{ref:L,"data-testid":`tool-execution-description`,className:`text-sm text-gray-600 dark:text-gray-400 leading-relaxed transition-all duration-300 ${!j&&N?`line-clamp-3`:``}`,children:e.description}),N&&!j&&(0,Z.jsx)(`div`,{className:`absolute bottom-0 left-0 right-0 h-[1.4em] bg-linear-to-t from-white/95 dark:from-black/95 via-white/55 dark:via-black/55 to-transparent pointer-events-none`})]}),N&&(0,Z.jsx)(`div`,{className:`flex justify-end`,children:(0,Z.jsx)(`button`,{onClick:()=>M(!j),className:`relative z-10 inline-flex items-center gap-1 text-xs text-blue-600 dark:text-blue-400 hover:text-blue-700 dark:hover:text-blue-300 mt-1 transition-colors`,children:j?(0,Z.jsxs)(Z.Fragment,{children:[`Show less`,(0,Z.jsx)(Te,{className:`h-3 w-3`})]}):(0,Z.jsxs)(Z.Fragment,{children:[`Show more`,(0,Z.jsx)(ue,{className:`h-3 w-3`})]})})})]}),(0,Z.jsx)(Ie,{selectedTool:e,toolArgs:t,onArgChange:f,onBulkPaste:g,autoFilledFields:_,setFields:v,sendEmptyFields:y,onToggleEmpty:b})]}),(0,Z.jsx)(ie,{open:O,onOpenChange:k,children:(0,Z.jsxs)(I,{scrollable:!0,className:`max-w-3xl max-h-[80vh]`,children:[(0,Z.jsx)(oe,{sticky:!0,children:(0,Z.jsx)(B,{children:`Tool Definition`})}),(0,Z.jsx)(xe,{children:(0,Z.jsx)(se,{onCopy:async()=>{e&&await be(JSON.stringify(e,null,2))},children:(0,Z.jsx)(J,{data:e,filename:`tool-definition-${e.name}-${Date.now()}.json`})})})]})})]}):(0,Z.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full p-4 text-center`,children:[(0,Z.jsx)(`p`,{className:`text-gray-500 dark:text-gray-400 mb-2`,children:`Select a tool to get started`}),(0,Z.jsx)(`p`,{className:`text-xs text-gray-400 dark:text-gray-500`,children:`Choose a tool from the list to view its details and execute it`})]})}function Re({timestamp:e}){let[t,n]=(0,X.useState)(()=>ze(e));return(0,X.useEffect)(()=>{let t=()=>n(ze(e));t();let r=setInterval(t,1e3);return()=>clearInterval(r)},[e]),(0,Z.jsx)(`span`,{children:t})}function ze(e){let t=Date.now()-e,n=Math.floor(t/1e3),r=Math.floor(n/60),i=Math.floor(r/60),a=Math.floor(i/24);return n<10?`now`:n<60?`${n}s ago`:r<60?`${r}m ago`:i<24?`${i}h ago`:`${a}d ago`}function Be(e){if(!e?.isError)return null;let t=e.content;if(Array.isArray(t)){let e=t.filter(e=>e.type===`text`).map(e=>e.text).filter(Boolean);if(e.length>0)return e.join(`
|
|
1
|
+
import{s as e,t}from"./react-CU_d2d5K.js";import{Lr as n,Nr as r,a as i,cr as a,f as o,n as s,r as c,sr as l,t as u,ur as d}from"./input-CLYhA7PK.js";import{t as f}from"./jsx-runtime-Cjj9sGSy.js";import{t as p}from"./label-Cdim77Jw.js";import{t as m}from"./AnimatePresence-C5p0yiY1.js";import{a as h,i as g,n as _,r as v,t as y}from"./select-CJ57-Bor.js";import{t as b}from"./createLucideIcon-B3b8EU0b.js";import{n as x,r as S,t as C}from"./WidgetWrapper-A-zaxY5s.js";import{n as w,t as T}from"./zap-Du2Uc5pa.js";import{t as E}from"./code-tME-5H6D.js";import{a as D,i as O,n as k,o as ee,r as A,s as j}from"./shared-Dbc2GbRx.js";import{t as M}from"./maximize-_O55kFcr.js";import{n as N,t as te}from"./save-B-MsgxX9.js";import{$ as P,$t as F,B as I,Bt as L,Dt as R,F as z,G as B,J as V,Jt as ne,Kt as H,Lt as U,M as W,P as re,Q as G,R as ie,Rt as ae,St as K,U as oe,W as se,X as q,Y as ce,Z as le,_n as ue,b as J,cn as Y,en as de,hn as fe,ot as pe,q as me,qt as he,vn as ge,w as _e,wt as ve,xt as ye,yt as be,z as xe}from"./index-CoRK2C3M.js";import{t as Se}from"./textarea-DLAmNVf_.js";import{t as Ce}from"./useViewHostProps-CMgPpdfy.js";import{t as we}from"./ListTabHeader-R17w_JsB.js";var Te=b(`chevron-up`,[[`path`,{d:`m18 15-6-6-6 6`,key:`153udz`}]]),X=e(t(),1),Z=f();function Ee({savedRequests:e,selectedRequest:t,onLoadRequest:n,onDeleteRequest:r,focusedIndex:a}){if(e.length===0)return(0,Z.jsxs)(`div`,{className:`flex flex-1 flex-col items-center justify-center p-4 text-center`,children:[(0,Z.jsx)(S,{className:`h-12 w-12 text-gray-400 dark:text-gray-600 mb-3`}),(0,Z.jsx)(`p`,{className:`text-gray-500 dark:text-gray-400 mb-2`,children:`No saved requests yet`}),(0,Z.jsx)(`p`,{className:`text-xs text-gray-400 dark:text-gray-500`,children:`Execute a tool and click Save to store requests`})]});let o=(e,t)=>{e.stopPropagation(),t()};return(0,Z.jsx)(`div`,{children:e.map((e,u)=>(0,Z.jsxs)(`div`,{className:`relative group`,children:[(0,Z.jsx)(A,{id:`saved-${e.id}`,isSelected:t?.id===e.id,isFocused:a===u,title:e.name,description:e.toolName,metadata:(0,Z.jsx)(`div`,{className:`flex flex-col gap-1`,children:(0,Z.jsx)(`span`,{className:`text-xs text-gray-400 dark:text-gray-500`,children:new Date(e.savedAt).toLocaleString()})}),onClick:()=>n(e)}),(0,Z.jsx)(`div`,{className:`absolute top-1/2 right-2 -translate-y-1/2 opacity-0 group-hover:opacity-100 transition-opacity z-10`,children:(0,Z.jsxs)(s,{children:[(0,Z.jsx)(i,{render:(0,Z.jsx)(l,{variant:`secondary`,size:`sm`,onClick:t=>o(t,()=>r(e.id)),className:`h-8 w-8 p-0`,children:(0,Z.jsx)(ne,{className:`h-4 w-4`})}),nativeButton:!0}),(0,Z.jsx)(c,{children:(0,Z.jsx)(`p`,{children:`Delete saved request`})})]})})]},e.id))})}function De({isOpen:e,requestName:t,defaultPlaceholder:n,onRequestNameChange:r,onSave:i,onCancel:a}){return e?(0,Z.jsx)(`div`,{className:`fixed inset-0 bg-black/50 flex items-center justify-center z-50`,onClick:a,children:(0,Z.jsxs)(`div`,{className:`bg-white dark:bg-zinc-800 rounded-lg p-6 w-[400px] shadow-xl border border-gray-200 dark:border-zinc-700`,onClick:e=>e.stopPropagation(),children:[(0,Z.jsx)(`h3`,{className:`text-lg font-semibold mb-4 text-gray-900 dark:text-gray-100`,children:`Save Request`}),(0,Z.jsxs)(`div`,{className:`space-y-4`,children:[(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(p,{htmlFor:`request-name`,children:`Request Name (optional)`}),(0,Z.jsx)(u,{id:`request-name`,value:t,onChange:e=>r(e.target.value),placeholder:n,className:`mt-2`,onKeyDown:e=>{e.key===`Enter`&&i()},autoFocus:!0})]}),(0,Z.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,Z.jsx)(l,{variant:`outline`,onClick:a,children:`Cancel`}),(0,Z.jsxs)(l,{onClick:i,children:[(0,Z.jsx)(te,{className:`h-4 w-4 mr-2`}),`Save`]})]})]})]})}):null}function Oe(e,t){if(!e?.$ref)return e;let n=e.$ref;if(!n.startsWith(`#/`))return e;let r=n.substring(2).split(`/`),i=t;for(let t of r)if(i&&typeof i==`object`&&t in i)i=i[t];else return e;return i}function Q(e,t){if(e?.anyOf&&Array.isArray(e.anyOf)){let n=e.anyOf.find(e=>Oe(e,t)?.type!==`null`);if(n)return{...Oe(n,t),nullable:!0}}return e}function $(e,t){let n=Q(e||{},t);return n=Oe(n,t),n}function ke(e,t){let n=$(e,t);if(typeof n.type==`string`)return n.type;if(Array.isArray(n.type)){let e=n.type.find(e=>e!==`null`);return typeof e==`string`?e:void 0}}function Ae(e){let t=e?.enum;return Array.isArray(t)&&t.every(e=>typeof e==`string`)?t:null}function je(e){let t=e.trim().toLowerCase();return[`true`,`1`,`yes`,`on`].includes(t)?!0:[`false`,`0`,`no`,`off`].includes(t)?!1:e}function Me(e,t){if(t===`number`||t===`integer`){let t=e.trim();if(!t)return e;let n=Number(t);return Number.isFinite(n)?n:e}return t===`boolean`?je(e):e}function Ne(e,t){if(e===void 0)return e;if(t===`object`||t===`array`){if(typeof e==`string`)try{return JSON.parse(e)}catch{return e}return e}if(t===`number`||t===`integer`){if(typeof e==`number`)return e;if(typeof e==`string`){let t=e.trim();if(!t)return e;let n=Number(t);return Number.isFinite(n)?n:e}return e}return t===`boolean`?typeof e==`boolean`?e:typeof e==`string`?je(e):e:e}function Pe(e){let t=``,n=0,r=!1,i=!1;for(;n<e.length;){let a=e[n];if(i){t+=a,i=!1,n++;continue}if(a===`\\`){i=!0,t+=a,n++;continue}if(a==="`"){r?(t+=`"`,r=!1):(t+=`"`,r=!0),n++;continue}if(r&&a===`"`){t+=`\\"`,n++;continue}t+=a,n++}return t}function Fe(e){if(!e||typeof e!=`string`)return null;let t=e.trim();if(!t.startsWith(`{`))return null;try{let e=JSON.parse(t);if(e&&typeof e==`object`&&!Array.isArray(e))return e}catch{try{let e=Pe(t),n=JSON.parse(e);if(n&&typeof n==`object`&&!Array.isArray(n))return n}catch{return null}}return null}function Ie({selectedTool:e,toolArgs:t,onArgChange:n,onBulkPaste:r,autoFilledFields:i,setFields:a,sendEmptyFields:o,onToggleEmpty:s}){let c=e?.inputSchema?.properties||{},l=e?.inputSchema?.required||[],d=Object.keys(c).length>0,f=async(e,t)=>{r&&await r(e.clipboardData.getData(`text`),t)&&e.preventDefault()};return d?(0,Z.jsx)(`div`,{className:`space-y-4`,children:Object.entries(c).map(([r,c])=>{let d=$(c,e?.inputSchema||{}),m=Ae(d),b=d.type===`string`&&m!==null,x=d,S=l.includes(r),C=t[r],w=``;C!=null&&(w=typeof C==`string`?C:typeof C==`object`&&C?JSON.stringify(C,null,2):String(C));let T=x.type===`object`||x.type===`array`,E=T?x.type===`array`?`array`:`object`:`string`,D=a?.has(r)??!0,O=s&&(x.type===`string`||T);return T?(0,Z.jsxs)(`div`,{className:`space-y-2`,children:[(0,Z.jsxs)(`div`,{className:`flex items-start justify-between gap-2`,children:[(0,Z.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Z.jsxs)(p,{htmlFor:r,className:`text-sm font-medium`,children:[r,S&&(0,Z.jsx)(`span`,{className:`text-red-500 ml-1`,children:`*`})]}),x?.description&&(0,Z.jsx)(`p`,{className:`mt-0.5 text-xs text-gray-500 dark:text-gray-400`,children:x.description})]}),O&&s&&(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 shrink-0`,children:[(0,Z.jsx)(`span`,{className:`text-xs text-muted-foreground whitespace-nowrap`,children:E===`array`?`Send empty array explicitly`:`Send empty object explicitly`}),(0,Z.jsx)(_e,{checked:o?.has(r)??!1,onCheckedChange:e=>s(r,E,e),"aria-label":E===`array`?`Send empty array`:`Send empty object`,title:E===`array`?`Send empty array []`:`Send empty object {}`})]})]}),(0,Z.jsx)(Se,{id:r,"data-testid":`tool-param-${r}`,value:w,onChange:e=>n(r,e.target.value),onPaste:e=>f(e,r),placeholder:`Enter ${r}`,disabled:o?.has(r)??!1,className:`min-h-[100px] ${D?``:`opacity-70`} ${i?.has(r)?`animate-pulse ring-2 ring-green-500 dark:ring-green-400`:``}`})]},r):b&&m?(0,Z.jsxs)(`div`,{className:`space-y-2`,children:[(0,Z.jsxs)(`div`,{children:[(0,Z.jsxs)(p,{htmlFor:r,className:`text-sm font-medium`,children:[r,S&&(0,Z.jsx)(`span`,{className:`text-red-500 ml-1`,children:`*`})]}),x.description&&(0,Z.jsx)(`p`,{className:`mt-0.5 text-xs text-gray-500 dark:text-gray-400`,children:x.description})]}),(0,Z.jsxs)(y,{value:String(t[r]||``),onValueChange:e=>n(r,e),children:[(0,Z.jsx)(g,{id:r,className:`w-full ${D?``:`opacity-70`}`,"data-testid":`tool-param-${r}`,children:(0,Z.jsx)(h,{placeholder:`Select an option`})}),(0,Z.jsx)(_,{children:m.map((e,t)=>(0,Z.jsx)(v,{value:e,children:x.enumNames?.[t]||e},e))})]})]},r):(0,Z.jsxs)(`div`,{className:`space-y-2`,children:[(0,Z.jsxs)(`div`,{className:`flex items-start justify-between gap-2`,children:[(0,Z.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Z.jsxs)(p,{htmlFor:r,className:`text-sm font-medium`,children:[r,S&&(0,Z.jsx)(`span`,{className:`text-red-500 ml-1`,children:`*`})]}),x?.description&&(0,Z.jsx)(`p`,{className:`mt-0.5 text-xs text-gray-500 dark:text-gray-400`,children:x.description})]}),O&&s&&(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 shrink-0`,children:[(0,Z.jsx)(`span`,{className:`text-xs text-muted-foreground whitespace-nowrap`,children:`Send empty string`}),(0,Z.jsx)(_e,{checked:o?.has(r)??!1,onCheckedChange:e=>s(r,`string`,e),"aria-label":`Send empty string`,title:`Send empty string`})]})]}),(0,Z.jsx)(u,{id:r,"data-testid":`tool-param-${r}`,value:w,onChange:e=>n(r,e.target.value),onPaste:e=>f(e,r),placeholder:`Enter ${r}`,disabled:o?.has(r)??!1,className:`${D?``:`opacity-70`} ${i?.has(r)?`animate-pulse ring-2 ring-green-500 dark:ring-green-400`:``}`})]},r)})}):(0,Z.jsx)(`div`,{className:`flex items-center justify-center h-32 text-gray-500 dark:text-gray-400 text-sm`,children:`No parameters required`})}function Le({selectedTool:e,toolArgs:t,payloadToSend:r,isExecuting:o,isConnected:u,onArgChange:f,onExecute:p,onSave:m,onCancel:h,onBulkPaste:g,autoFilledFields:_,setFields:v,sendEmptyFields:y,onToggleEmpty:b}){let x=`hidden @[700px]/tool-exec:inline`,S=`hidden @[700px]/tool-exec:inline shrink-0 text-[10px] leading-none border border-current/30 p-1 rounded-full`,C=`max-[699px]/tool-exec:size-8 max-[699px]/tool-exec:min-w-8 max-[699px]/tool-exec:shrink-0 max-[699px]/tool-exec:gap-0 max-[699px]/tool-exec:rounded-full max-[699px]/tool-exec:px-0 max-[699px]/tool-exec:py-0`,w=`max-[699px]/tool-exec:!pr-0`,[T,D]=(0,X.useState)(!1),[O,k]=(0,X.useState)(!1),[ee,A]=(0,X.useState)(!1),[j,M]=(0,X.useState)(!1),[N,P]=(0,X.useState)(!1),L=(0,X.useRef)(null);return(0,X.useEffect)(()=>{if(L.current&&e?.description){let e=L.current,t=parseFloat(getComputedStyle(e).lineHeight),n=e.scrollHeight;P(Math.round(n/t)>3),M(!1)}},[e?.description]),(0,X.useEffect)(()=>{let t=t=>{(t.metaKey||t.ctrlKey)&&t.key===`Enter`&&e&&!o&&u&&(t.preventDefault(),p()),t.key===`Escape`&&o&&h&&(t.preventDefault(),h())};return document.addEventListener(`keydown`,t),()=>document.removeEventListener(`keydown`,t)},[e,o,u,p,h]),e?(0,Z.jsxs)(`div`,{className:`flex flex-col h-full @container/tool-exec`,children:[(0,Z.jsx)(`div`,{className:`shrink-0 p-3 sm:p-5 pt-3 sm:pt-4 pb-2 sm:pb-2 sm:pr-4`,children:(0,Z.jsx)(`div`,{children:(0,Z.jsxs)(`div`,{className:`flex flex-row items-center justify-between mb-0 gap-2`,children:[(0,Z.jsx)(`h3`,{className:`text-base sm:text-lg font-semibold`,"data-testid":`tool-execution-title`,children:e.name}),(0,Z.jsxs)(`div`,{className:`flex gap-2 shrink-0`,children:[(0,Z.jsxs)(s,{children:[(0,Z.jsx)(i,{render:(0,Z.jsxs)(l,{"data-testid":`tool-execution-metadata-button`,variant:O?`default`:`outline`,onClick:()=>k(!O),disabled:o,size:`sm`,className:n(d,C),title:`View tool metadata`,children:[(0,Z.jsx)(E,{}),(0,Z.jsx)(`span`,{className:x,children:`Metadata`})]}),nativeButton:!0}),(0,Z.jsx)(c,{children:(0,Z.jsx)(`p`,{children:`View tool definition metadata`})})]}),(0,Z.jsxs)(s,{children:[(0,Z.jsx)(i,{render:(0,Z.jsxs)(l,{"data-testid":`tool-execution-copy-payload-button`,variant:`outline`,onClick:async()=>{if(e)try{await be(JSON.stringify(r??t,null,2)),A(!0),setTimeout(()=>A(!1),2e3)}catch{}},disabled:o,size:`sm`,className:n(d,C),title:`Copy payload as JSON`,children:[ee?(0,Z.jsx)(ge,{className:`text-green-600`}):(0,Z.jsx)(fe,{}),(0,Z.jsx)(`span`,{className:x,children:ee?`Copied!`:`Payload`})]}),nativeButton:!0}),(0,Z.jsx)(c,{children:(0,Z.jsx)(`p`,{children:`Copy payload as JSON`})})]}),(0,Z.jsxs)(s,{children:[(0,Z.jsx)(i,{render:(0,Z.jsxs)(l,{"data-testid":`tool-execution-save-button`,variant:`outline`,onClick:m,disabled:o,size:`sm`,className:n(d,C),title:`Save request`,children:[(0,Z.jsx)(te,{}),(0,Z.jsx)(`span`,{className:x,children:`Save`})]}),nativeButton:!0}),(0,Z.jsx)(c,{children:(0,Z.jsx)(`p`,{children:`Save request`})})]}),o&&h?(0,Z.jsxs)(s,{open:T?void 0:!1,children:[(0,Z.jsx)(i,{render:(0,Z.jsx)(`div`,{onMouseEnter:()=>D(!0),onMouseLeave:()=>D(!1),className:`relative`,children:(0,Z.jsx)(l,{"data-testid":`tool-execution-cancel-button`,onClick:h,variant:T?`destructive`:`default`,size:`sm`,className:n(a,C,w,`transition-all`),children:T?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(H,{}),(0,Z.jsx)(`span`,{className:x,children:`Cancel`}),(0,Z.jsx)(`span`,{className:S,children:`Esc`})]}):(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(z,{}),(0,Z.jsx)(`span`,{className:x,children:`Executing...`})]})})}),nativeButton:!1}),(0,Z.jsx)(c,{children:(0,Z.jsx)(`p`,{children:`Hover to cancel (or press Esc)`})})]}):(0,Z.jsx)(l,{"data-testid":`tool-execution-execute-button`,onClick:p,disabled:o||!u,size:`sm`,className:n(a,C,w),children:o?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(z,{}),(0,Z.jsx)(`span`,{className:x,children:`Executing...`})]}):(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(F,{}),(0,Z.jsx)(`span`,{className:x,children:`Execute`}),(0,Z.jsx)(`span`,{className:S,children:`⌘↵`})]})})]})]})})}),(0,Z.jsxs)(`div`,{className:`flex-1 overflow-y-auto px-3 sm:px-5 pb-4 pr-3`,children:[e.description&&(0,Z.jsxs)(`div`,{className:`relative mb-6`,children:[(0,Z.jsxs)(`div`,{className:`relative`,children:[(0,Z.jsx)(`p`,{ref:L,"data-testid":`tool-execution-description`,className:`text-sm text-gray-600 dark:text-gray-400 leading-relaxed transition-all duration-300 ${!j&&N?`line-clamp-3`:``}`,children:e.description}),N&&!j&&(0,Z.jsx)(`div`,{className:`absolute bottom-0 left-0 right-0 h-[1.4em] bg-linear-to-t from-white/95 dark:from-black/95 via-white/55 dark:via-black/55 to-transparent pointer-events-none`})]}),N&&(0,Z.jsx)(`div`,{className:`flex justify-end`,children:(0,Z.jsx)(`button`,{onClick:()=>M(!j),className:`relative z-10 inline-flex items-center gap-1 text-xs text-blue-600 dark:text-blue-400 hover:text-blue-700 dark:hover:text-blue-300 mt-1 transition-colors`,children:j?(0,Z.jsxs)(Z.Fragment,{children:[`Show less`,(0,Z.jsx)(Te,{className:`h-3 w-3`})]}):(0,Z.jsxs)(Z.Fragment,{children:[`Show more`,(0,Z.jsx)(ue,{className:`h-3 w-3`})]})})})]}),(0,Z.jsx)(Ie,{selectedTool:e,toolArgs:t,onArgChange:f,onBulkPaste:g,autoFilledFields:_,setFields:v,sendEmptyFields:y,onToggleEmpty:b})]}),(0,Z.jsx)(ie,{open:O,onOpenChange:k,children:(0,Z.jsxs)(I,{scrollable:!0,className:`max-w-3xl max-h-[80vh]`,children:[(0,Z.jsx)(oe,{sticky:!0,children:(0,Z.jsx)(B,{children:`Tool Definition`})}),(0,Z.jsx)(xe,{children:(0,Z.jsx)(se,{onCopy:async()=>{e&&await be(JSON.stringify(e,null,2))},children:(0,Z.jsx)(J,{data:e,filename:`tool-definition-${e.name}-${Date.now()}.json`})})})]})})]}):(0,Z.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full p-4 text-center`,children:[(0,Z.jsx)(`p`,{className:`text-gray-500 dark:text-gray-400 mb-2`,children:`Select a tool to get started`}),(0,Z.jsx)(`p`,{className:`text-xs text-gray-400 dark:text-gray-500`,children:`Choose a tool from the list to view its details and execute it`})]})}function Re({timestamp:e}){let[t,n]=(0,X.useState)(()=>ze(e));return(0,X.useEffect)(()=>{let t=()=>n(ze(e));t();let r=setInterval(t,1e3);return()=>clearInterval(r)},[e]),(0,Z.jsx)(`span`,{children:t})}function ze(e){let t=Date.now()-e,n=Math.floor(t/1e3),r=Math.floor(n/60),i=Math.floor(r/60),a=Math.floor(i/24);return n<10?`now`:n<60?`${n}s ago`:r<60?`${r}m ago`:i<24?`${i}h ago`:`${a}d ago`}function Be(e){if(!e?.isError)return null;let t=e.content;if(Array.isArray(t)){let e=t.filter(e=>e.type===`text`).map(e=>e.text).filter(Boolean);if(e.length>0)return e.join(`
|
|
2
2
|
`)}return`An error occurred`}function Ve(e){try{return JSON.parse(e),!0}catch{return!1}}function He({content:e}){let[t,n]=(0,X.useState)(new Set),r=(0,X.useCallback)(e=>{n(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]);return!Array.isArray(e)||e.length===0?(0,Z.jsx)(`div`,{className:`text-sm text-gray-500 dark:text-gray-400`,children:`No content`}):(0,Z.jsx)(`div`,{className:`space-y-4`,children:e.map((e,n)=>{if(e.type===`text`){let i=e.text||``,a=t.has(n),o=Ve(i),s=o?(()=>{try{return JSON.parse(i)}catch{return null}})():null;return(0,Z.jsxs)(`div`,{className:`space-y-2`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,Z.jsxs)(`div`,{className:`text-xs font-medium text-gray-500 dark:text-gray-400`,children:[`Text Content`,a?` (formatted)`:``]}),o&&(0,Z.jsx)(`button`,{type:`button`,onClick:()=>r(n),className:`text-xs text-blue-600 dark:text-blue-400 hover:underline`,"data-testid":`tool-result-format-toggle-${n}`,children:a?`Show as text`:`Try to format`})]}),a&&s!==null?(0,Z.jsx)(J,{data:s,filename:`content-${n}.json`}):(0,Z.jsx)(`div`,{className:`bg-gray-50 dark:bg-zinc-900 rounded-lg p-3 font-mono text-sm whitespace-pre-wrap break-words`,"data-testid":`tool-execution-results-text-content`,children:i})]},n)}if(e.type===`image`)return(0,Z.jsxs)(`div`,{className:`space-y-2`,children:[(0,Z.jsx)(`div`,{className:`text-xs font-medium text-gray-500 dark:text-gray-400`,children:`Image Content`}),(0,Z.jsxs)(`div`,{className:`bg-gray-50 dark:bg-zinc-900 rounded-lg p-3`,children:[(0,Z.jsx)(`img`,{src:`data:${e.mimeType||`image/png`};base64,${e.data}`,alt:`Result`,className:`max-w-full rounded`,"data-testid":`tool-execution-results-image-content`}),e.annotations&&(0,Z.jsx)(`div`,{className:`mt-2 text-xs text-gray-500 dark:text-gray-400`,children:(0,Z.jsx)(J,{data:e.annotations,filename:`image-annotations-${n}.json`,"data-testid":`tool-execution-results-image-annotations`})})]})]},n);if(e.type===`audio`)return(0,Z.jsxs)(`div`,{className:`space-y-2`,children:[(0,Z.jsx)(`div`,{className:`text-xs font-medium text-gray-500 dark:text-gray-400`,children:`Audio Content`}),(0,Z.jsxs)(`div`,{className:`bg-gray-50 dark:bg-zinc-900 rounded-lg p-3`,children:[(0,Z.jsx)(`audio`,{controls:!0,src:`data:${e.mimeType||`audio/wav`};base64,${e.data}`,className:`w-full`,"data-testid":`tool-execution-results-audio-content`}),e.annotations&&(0,Z.jsx)(`div`,{className:`mt-2 text-xs text-gray-500 dark:text-gray-400`,children:(0,Z.jsx)(J,{data:e.annotations,filename:`audio-annotations-${n}.json`,"data-testid":`tool-execution-results-audio-annotations`})})]})]},n);if(e.type===`resource_link`)return(0,Z.jsxs)(`div`,{className:`space-y-2`,children:[(0,Z.jsx)(`div`,{className:`text-xs font-medium text-gray-500 dark:text-gray-400`,children:`Resource Link`}),(0,Z.jsxs)(`div`,{className:`bg-gray-50 dark:bg-zinc-900 rounded-lg p-3 space-y-2`,children:[(0,Z.jsxs)(`div`,{className:`font-mono text-sm break-all`,children:[(0,Z.jsx)(`span`,{className:`text-gray-600 dark:text-gray-400`,children:`URI:`}),` `,e.uri]}),e.name&&(0,Z.jsxs)(`div`,{className:`text-sm`,children:[(0,Z.jsx)(`span`,{className:`text-gray-600 dark:text-gray-400`,children:`Name:`}),` `,e.name]}),e.description&&(0,Z.jsxs)(`div`,{className:`text-sm`,children:[(0,Z.jsx)(`span`,{className:`text-gray-600 dark:text-gray-400`,children:`Description:`}),` `,e.description]}),e.mimeType&&(0,Z.jsxs)(`div`,{className:`text-sm`,children:[(0,Z.jsx)(`span`,{className:`text-gray-600 dark:text-gray-400`,children:`MIME Type:`}),` `,e.mimeType]}),e.annotations&&(0,Z.jsxs)(`div`,{className:`mt-2`,children:[(0,Z.jsx)(`div`,{className:`text-xs text-gray-500 dark:text-gray-400 mb-1`,children:`Annotations:`}),(0,Z.jsx)(J,{data:e.annotations,filename:`resource-link-annotations-${n}.json`,"data-testid":`tool-execution-results-resource-link-annotations`})]})]})]},n);if(e.type===`resource`){let t=e.resource||{};return(0,Z.jsxs)(`div`,{className:`space-y-2`,children:[(0,Z.jsx)(`div`,{className:`text-xs font-medium text-gray-500 dark:text-gray-400`,children:`Embedded Resource`}),(0,Z.jsxs)(`div`,{className:`bg-gray-50 dark:bg-zinc-900 rounded-lg p-3 space-y-2`,children:[(0,Z.jsxs)(`div`,{className:`font-mono text-sm break-all`,"data-testid":`tool-execution-results-resource-uri`,children:[(0,Z.jsx)(`span`,{className:`text-gray-600 dark:text-gray-400`,children:`URI:`}),` `,t.uri]}),t.mimeType&&(0,Z.jsxs)(`div`,{className:`text-sm`,children:[(0,Z.jsx)(`span`,{className:`text-gray-600 dark:text-gray-400`,"data-testid":`tool-execution-results-mime-type`,children:`MIME Type:`}),` `,t.mimeType]}),t.text&&(0,Z.jsxs)(`div`,{"data-testid":`tool-execution-results-resource-text-content`,children:[(0,Z.jsx)(`div`,{className:`text-xs text-gray-500 dark:text-gray-400 mb-1`,children:`Content:`}),(0,Z.jsx)(`div`,{className:`bg-white dark:bg-black rounded p-2 font-mono text-sm whitespace-pre-wrap break-words max-h-60 overflow-y-auto`,children:t.text})]}),t.blob&&(0,Z.jsxs)(`div`,{className:`text-sm text-gray-600 dark:text-gray-400`,children:[`[Binary content: `,t.blob.length||0,` bytes]`]}),t.annotations&&(0,Z.jsxs)(`div`,{className:`mt-2`,children:[(0,Z.jsx)(`div`,{className:`text-xs text-gray-500 dark:text-gray-400 mb-1`,children:`Annotations:`}),(0,Z.jsx)(J,{data:t.annotations,filename:`resource-annotations-${n}.json`,"data-testid":`tool-execution-results-resource-annotations`})]})]})]},n)}return(0,Z.jsxs)(`div`,{className:`space-y-2`,children:[(0,Z.jsxs)(`div`,{className:`text-xs font-medium text-gray-500 dark:text-gray-400`,children:[`Unknown Content Type: `,e.type||`N/A`]}),(0,Z.jsx)(J,{data:e,filename:`content-${n}.json`,"data-testid":`tool-execution-results-unknown-content`})]},n)})})}function Ue({serverId:e,viewId:t,toolName:n,resourceUri:r,toolInput:i,toolOutput:a,toolMetadata:o,readResource:s,customProps:c,displayMode:l,onDisplayModeChange:u,onSendFollowUp:d}){let f=Ce({serverId:e,viewId:t,resourceUri:r,toolName:n,toolInput:i,toolOutput:a,toolMetadata:o,readResource:s,displayMode:l,onDisplayModeChange:u});if(!f)return(0,Z.jsx)(C,{className:`w-full h-full min-h-[240px]`,children:(0,Z.jsx)(z,{className:`size-5`})});let p=l===`inline`?`w-full h-full flex items-center justify-center relative p-4 min-h-0`:`w-full h-full relative p-4`,m=c?JSON.stringify(c):`no-custom-props`;return(0,Z.jsx)(C,{className:`w-full h-full min-h-[240px]`,children:(0,Z.jsx)(ye,{viewId:t,toolName:n,toolInput:i,toolOutput:a,customProps:c,className:p,onMessage:e=>{e.length>0&&d&&d(e)},...f},m)})}function We({results:e,copiedResult:t,serverId:n,readResource:r,onCopy:i,onMaximize:a,isMaximized:o=!1,onRerunTool:s}){let[c,u]=(0,X.useState)(0),[d,f]=(0,X.useState)(!0),[p,m]=(0,X.useState)(null),[h,b]=(0,X.useState)(`inline`),[S,C]=(0,X.useState)(null),w=(0,X.useRef)(!1),E=e[0],D=E?e.filter(e=>e.toolName===E.toolName):[],O=D[c]||D[0],k=e.findIndex(e=>e===O),ee=(O?O.error||Be(O.result):null)??(O==null?``:JSON.stringify(O.result,null,2));(0,X.useEffect)(()=>{D.length>0&&c>=D.length&&u(0)},[D.length,c]),(0,X.useEffect)(()=>{w.current=!1,m(null)},[E?.toolName]);let A=(0,X.useMemo)(()=>O?.args,[O?.timestamp,c]),j=(0,X.useMemo)(()=>O?.result,[O?.timestamp,O?.duration,c]),te=(0,X.useCallback)(e=>r(e),[r]),P=(0,X.useCallback)(e=>{let t=e.filter(e=>e.type===`text`&&`text`in e).map(e=>e.text).join(`
|
|
3
3
|
`),n=e.filter(e=>e.type===`image`).length,r=e.filter(e=>e.type===`resource`).length,i=[n>0&&`${n} image${n>1?`s`:``}`,r>0&&`${r} resource${r>1?`s`:``}`].filter(Boolean).join(`, `);pe.info(`Widget follow-up`,{description:[t,i].filter(Boolean).join(` — `),duration:5e3})},[]),I=(0,X.useMemo)(()=>O&&ve(O.toolMeta)?`mcp-apps`:null,[O]),R=(0,X.useMemo)(()=>O?.toolMeta?K(O.toolMeta):null,[O?.toolMeta]),B=(0,X.useMemo)(()=>I===`mcp-apps`&&!!R,[I,R]),V=(0,X.useMemo)(()=>O?.result?.content||[],[O]),ne=(0,X.useMemo)(()=>R||null,[R]),H=(0,X.useMemo)(()=>!!(V&&V.length>0||O?.result?.structuredContent),[V,O]),U=(0,X.useMemo)(()=>!B&&H,[B,H]),W=(0,X.useMemo)(()=>{let e=[];return B&&R&&e.push({mode:`mcp-apps`,label:`Component (MCP Apps)`}),e.push({mode:`json`,label:`Raw JSON`}),e},[B,R]);return(0,X.useEffect)(()=>{if(W.length===0)return;let e=p&&W.some(e=>e.mode===p),t=W.find(e=>e.mode!==`json`);if(t){let n=w.current;if(w.current=!0,!p||!e||p===`json`&&!n){m(t.mode);return}}else (!p||!e)&&m(`json`)},[W,p]),e.length===0?(0,Z.jsx)(`div`,{className:`flex flex-col h-full bg-white dark:bg-black border-t dark:border-zinc-700`,children:(0,Z.jsx)(`div`,{className:`flex-1 overflow-y-auto h-full`,children:(0,Z.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,Z.jsx)(`div`,{className:`text-center`,children:(0,Z.jsx)(L,{vertical:!0,noBorder:!0,message:`No Results yet`})})})})}):(0,Z.jsxs)(`div`,{className:`relative flex flex-col h-full bg-white dark:bg-black border-t dark:border-zinc-700`,children:[(0,Z.jsx)(`div`,{className:`flex-1 overflow-y-auto h-full`,children:(0,Z.jsxs)(`div`,{className:`space-y-0 flex flex-col flex-1 h-full`,children:[(0,Z.jsxs)(`div`,{className:`sticky top-0 z-40 flex items-center gap-2 px-4 pt-2 backdrop-blur-xs bg-white/50 dark:bg-black/50 ${B||U?`border-b border-gray-200 dark:border-zinc-600 pb-2`:``}`,children:[(0,Z.jsx)(`h3`,{className:`text-sm font-medium hidden sm:block`,children:`Response`}),O.duration!==void 0&&(0,Z.jsxs)(`div`,{className:`hidden sm:flex items-center gap-1`,children:[(0,Z.jsx)(T,{className:`h-3 w-3 text-gray-400`}),(0,Z.jsxs)(`span`,{className:`text-xs text-gray-500 dark:text-gray-400`,children:[O.duration,`ms`]})]}),B&&(0,Z.jsx)(`div`,{className:`flex items-center gap-4 sm:ml-4`,children:(0,Z.jsx)(`div`,{className:`flex items-center gap-2`,children:W.map((e,t)=>(0,Z.jsxs)(X.Fragment,{children:[t>0&&(0,Z.jsx)(`span`,{className:`text-xs text-zinc-400`,children:`|`}),(0,Z.jsx)(`button`,{"data-testid":`tool-result-view-${e.mode}`,onClick:()=>m(e.mode),className:`text-xs font-medium ${p===e.mode?`text-black dark:text-white`:`text-zinc-500 dark:text-zinc-400`}`,children:e.label})]},e.mode))})}),U&&(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 sm:ml-4`,children:[(0,Z.jsx)(`button`,{onClick:()=>f(!0),className:`text-xs font-medium ${d?`text-black dark:text-white`:`text-zinc-500 dark:text-zinc-400`}`,children:`Formatted`}),(0,Z.jsx)(`span`,{className:`text-xs text-zinc-400`,children:`|`}),(0,Z.jsx)(`button`,{onClick:()=>f(!1),className:`text-xs font-medium ${d?`text-zinc-500 dark:text-zinc-400`:`text-black dark:text-white`}`,children:`Raw`})]}),(0,Z.jsxs)(`div`,{className:`ml-auto flex items-center gap-1`,children:[o&&s&&(0,Z.jsxs)(l,{"data-testid":`tool-result-rerun`,variant:`ghost`,size:`sm`,onClick:s,title:`Re-run with same arguments`,children:[(0,Z.jsx)(F,{className:`h-4 w-4`}),(0,Z.jsx)(`span`,{className:`hidden sm:inline ml-1`,children:`Re-run`})]}),B&&a&&(0,Z.jsx)(l,{"data-testid":`tool-result-maximize`,variant:`ghost`,size:`sm`,onClick:a,title:o?`Restore`:`Maximize`,children:o?(0,Z.jsx)(N,{className:`h-4 w-4`}):(0,Z.jsx)(M,{className:`h-4 w-4`})}),D.length>1&&(0,Z.jsxs)(y,{value:c.toString(),onValueChange:e=>u(parseInt(e)),children:[(0,Z.jsx)(g,{className:`w-[140px] h-8 text-xs`,leading:(0,Z.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,Z.jsx)(Y,{className:`h-3 w-3`}),(0,Z.jsx)(Re,{timestamp:O.timestamp})]})}),(0,Z.jsx)(_,{children:D.map((e,t)=>(0,Z.jsx)(v,{value:t.toString(),children:(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(Y,{className:`h-3 w-3`}),(0,Z.jsx)(`span`,{children:ze(e.timestamp)}),(0,Z.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[`(`,new Date(e.timestamp).toLocaleTimeString(),`)`]})]})},t))})]}),(0,Z.jsx)(l,{"data-testid":`tool-result-copy-${k}`,variant:`ghost`,size:`sm`,onClick:()=>i(k,ee),children:t===k?(0,Z.jsx)(ge,{className:`h-4 w-4`}):(0,Z.jsx)(fe,{className:`h-4 w-4`})})]})]}),(()=>{let e=O.error||Be(O.result);return e?(0,Z.jsxs)(`div`,{className:`bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800 rounded p-3 mx-4`,children:[(0,Z.jsx)(`p`,{className:`text-red-800 dark:text-red-300 font-medium`,children:`Error:`}),(0,Z.jsx)(`p`,{className:`text-red-700 dark:text-red-400 text-sm`,children:e})]}):(()=>{if(!p)return(0,Z.jsx)(`div`,{className:`flex items-center justify-center w-full h-[200px]`,children:(0,Z.jsx)(z,{className:`size-5`})});switch(p){case`mcp-apps`:return!B||!R?(0,Z.jsx)(`div`,{className:`px-4 pt-4`,children:(0,Z.jsx)(`div`,{className:`bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800 rounded p-3`,children:(0,Z.jsx)(`p`,{className:`text-sm text-red-600 dark:text-red-400`,children:`MCP Apps resource not available`})})}):(0,Z.jsxs)(`div`,{className:`flex flex-1 relative flex-col min-h-0`,children:[(0,Z.jsx)(`div`,{className:`absolute top-2 right-2 z-30 flex items-center gap-2`,children:(0,Z.jsx)(x,{toolCallId:`tool-${O.timestamp}`,displayMode:h,onDisplayModeChange:b,propsContext:`tool`,resourceUri:R,toolInput:O.args,resourceAnnotations:O.toolMeta,llmConfig:null,resource:null,onPropsChange:C})}),(0,Z.jsx)(Ue,{serverId:n,viewId:`tool-${O.timestamp}`,toolName:O.toolName,toolInput:A,toolOutput:j,toolMetadata:O.toolMeta,resourceUri:R,readResource:te,customProps:S||void 0,displayMode:h,onDisplayModeChange:b,onSendFollowUp:P},`mcp-apps-${O.timestamp}`)]});case`json`:if(U&&d){let e=O.result?.structuredContent;return(0,Z.jsxs)(`div`,{className:`px-4 pt-4 space-y-4`,"data-testid":`tool-execution-results-content`,children:[e&&(0,Z.jsxs)(`div`,{className:`space-y-2`,"data-testid":`tool-execution-results-structured-content`,children:[(0,Z.jsx)(`div`,{className:`text-xs font-medium text-gray-500 dark:text-gray-400`,children:`Structured Content`}),(0,Z.jsx)(J,{data:e,filename:`structured-content-${O.toolName}-${Date.now()}.json`})]}),V&&V.length>0&&(0,Z.jsx)(He,{content:V}),!e&&(!V||V.length===0)&&(0,Z.jsx)(`div`,{className:`text-sm text-gray-500 dark:text-gray-400`,"data-testid":`tool-execution-results-no-content`,children:`No content to display`})]})}return(0,Z.jsx)(`div`,{className:`px-4 pt-4`,children:(0,Z.jsx)(J,{data:O.result,filename:`tool-result-${O.toolName}-${Date.now()}.json`})});default:return null}})()})()]})}),ne&&p===`mcp-apps`&&(0,Z.jsx)(`div`,{className:`absolute bottom-0 left-1/2 -translate-x-1/2 z-40 pointer-events-none`,children:(0,Z.jsx)(`span`,{className:`text-[11px] bg-gray-200 dark:bg-zinc-800 text-gray-500 dark:text-gray-400 px-3 py-0.5 rounded-t-xl font-mono max-w-[320px] truncate block`,children:ne})})]})}function Ge({tools:e,selectedTool:t,onToolSelect:n,focusedIndex:a}){if(e.length===0)return(0,Z.jsxs)(`div`,{className:`flex flex-1 flex-col items-center justify-center p-4 text-center`,children:[(0,Z.jsx)(he,{className:`h-12 w-12 text-gray-400 dark:text-gray-600 mb-3`}),(0,Z.jsx)(`p`,{className:`text-gray-500 dark:text-gray-400`,children:`No tools available`})]});let o=e.some(e=>e.inputSchema?.properties&&Object.keys(e.inputSchema.properties).length>0);return(0,Z.jsx)(`div`,{children:e.map((e,l)=>{let u=e._meta,d=ve(u)?`mcp-apps`:null,f=e.inputSchema?.properties,p=f?Object.keys(f).length:0,m=o&&p>0&&(0,Z.jsxs)(r,{variant:`outline`,className:`text-xs border-gray-300 dark:border-zinc-600 text-gray-600 dark:text-gray-400`,children:[p,` params`]}),h=d===`mcp-apps`||m?(0,Z.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[d===`mcp-apps`&&(0,Z.jsxs)(s,{children:[(0,Z.jsx)(i,{render:(0,Z.jsx)(`span`,{className:`inline-flex`,children:(0,Z.jsx)(de,{className:`h-3.5 w-3.5`})}),nativeButton:!1}),(0,Z.jsx)(c,{children:(0,Z.jsx)(`p`,{children:`UI widget`})})]}),m]}):void 0;return(0,Z.jsx)(A,{id:`tool-${e.name}`,"data-testid":`tool-item-${e.name}`,isSelected:t?.name===e.name,isFocused:a===l,title:e.name,description:e.description,metadata:h,onClick:()=>n(e)},e.name)})})}function Ke(e){return V(e,`alert-dialog`)}function qe({...e}){return(0,Z.jsx)(Ke,{"data-slot":`alert-dialog`,...e})}function Je({...e}){return(0,Z.jsx)(ce,{"data-slot":`alert-dialog-portal`,...e})}function Ye({className:e,...t}){return(0,Z.jsx)(P,{"data-slot":`alert-dialog-overlay`,className:n(`fixed inset-0 isolate z-50 bg-black/50 duration-100 data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0`,e),...t})}function Xe({className:e,size:t=`default`,...r}){return(0,Z.jsxs)(Je,{children:[(0,Z.jsx)(Ye,{}),(0,Z.jsx)(q,{"data-slot":`alert-dialog-content`,"data-size":t,className:n(`group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-6 rounded-xl bg-popover p-6 text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-lg data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95`,e),...r})]})}function Ze({className:e,...t}){return(0,Z.jsx)(`div`,{"data-slot":`alert-dialog-header`,className:n(`grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-6 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]`,e),...t})}function Qe({className:e,...t}){return(0,Z.jsx)(`div`,{"data-slot":`alert-dialog-footer`,className:n(`flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end`,e),...t})}function $e({className:e,...t}){return(0,Z.jsx)(me,{"data-slot":`alert-dialog-title`,className:n(`text-lg font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2`,e),...t})}function et({className:e,...t}){return(0,Z.jsx)(le,{"data-slot":`alert-dialog-description`,className:n(`text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground`,e),...t})}function tt({className:e,...t}){return(0,Z.jsx)(l,{"data-slot":`alert-dialog-action`,className:n(e),...t})}function nt({className:e,variant:t=`outline`,size:r=`default`,...i}){return(0,Z.jsx)(G,{"data-slot":`alert-dialog-cancel`,className:n(e),render:(0,Z.jsx)(l,{variant:t,size:r}),...i})}function rt({selectedTool:e,payloadToSend:t,toolArgs:n,callTool:r,readResource:i,serverId:a}){let[o,s]=(0,X.useState)([]),[c,l]=(0,X.useState)(!1),[u,d]=(0,X.useState)(null),[f,p]=(0,X.useState)(null),m=(0,X.useCallback)(async()=>{if(!e||c)return;let o=new AbortController;p(o),l(!0);let u=Date.now();try{let c=t,l=e?._meta||e?.metadata,d=l?.ui?.resourceUri;if(d&&typeof d==`string`){try{await i(d)}catch{}s([{toolName:e.name,args:c,result:null,timestamp:u,duration:0,toolMeta:l}])}let f=await r(e.name,c,{timeout:6e5,resetTimeoutOnProgress:!0,signal:o.signal}),p=Date.now()-u,m=f?._meta??l;R(new U({toolName:e.name,serverId:a,success:!0,duration:p})).catch(()=>{}),window.dispatchEvent(new Event(`mcp-tool-executed`)),s(d&&typeof d==`string`?e=>e.map((e,t)=>t===0?{...e,result:f,duration:p,toolMeta:m}:e):t=>[{toolName:e.name,args:n,result:f,timestamp:u,duration:p,toolMeta:m},...t])}catch(t){let r=Date.now()-u;R(new U({toolName:e.name,serverId:a,success:!1,duration:r,error:t instanceof Error?t.message:String(t)})).catch(()=>{}),window.dispatchEvent(new Event(`mcp-tool-executed`));let i=e?._meta||e?.metadata,o={toolName:e.name,args:n,result:null,error:t instanceof Error?t.message:String(t),timestamp:u,duration:r,toolMeta:i};i?.ui?.resourceUri?s([o]):s(e=>[o,...e])}finally{l(!1)}},[e,t,n,c,r,i,a]),h=(0,X.useCallback)(async(e,t)=>{try{await be(t),d(e),setTimeout(()=>d(null),2e3)}catch(e){console.error(`[ToolsTab] Failed to copy result:`,e)}},[]),g=(0,X.useCallback)(e=>{s(t=>t.filter((t,n)=>n!==e))},[]),_=(0,X.useMemo)(()=>e?o.filter(t=>t.toolName===e.name):[],[o,e]);return{results:o,setResults:s,isExecuting:c,copiedResult:u,executeTool:m,handleCopyResult:h,handleDeleteResult:g,handleFullscreen:(0,X.useCallback)(e=>{let t=_[e];if(!t)return;let n=window.open(``,`_blank`,`width=800,height=600`);n&&(n.document.write(`
|
|
4
4
|
<html>
|