dexto 1.1.9 → 1.1.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/README.md +4 -2
  2. package/dist/agents/agent-registry.json +30 -1
  3. package/dist/agents/database-agent/database-agent.yml +3 -0
  4. package/dist/agents/default-agent.yml +102 -12
  5. package/dist/agents/github-agent/github-agent.yml +3 -0
  6. package/dist/agents/image-editor-agent/image-editor-agent.yml +3 -0
  7. package/dist/agents/music-agent/music-agent.yml +3 -0
  8. package/dist/agents/nano-banana-agent/nano-banana-agent.yml +3 -0
  9. package/dist/agents/podcast-agent/podcast-agent.yml +3 -0
  10. package/dist/agents/product-name-researcher/product-name-researcher.yml +3 -0
  11. package/dist/agents/talk2pdf-agent/talk2pdf-agent.yml +3 -0
  12. package/dist/agents/triage-demo/triage-agent.yml +3 -0
  13. package/dist/api/mcp/tool-aggregation-handler.d.ts.map +1 -1
  14. package/dist/api/mcp/tool-aggregation-handler.js +34 -42
  15. package/dist/api/memory/memory-handler.d.ts +15 -0
  16. package/dist/api/memory/memory-handler.d.ts.map +1 -0
  17. package/dist/api/memory/memory-handler.js +129 -0
  18. package/dist/api/server.d.ts +2 -2
  19. package/dist/api/server.d.ts.map +1 -1
  20. package/dist/api/server.js +987 -231
  21. package/dist/api/webhook-subscriber.d.ts.map +1 -1
  22. package/dist/api/webhook-subscriber.js +2 -1
  23. package/dist/api/websocket-subscriber.d.ts.map +1 -1
  24. package/dist/api/websocket-subscriber.js +61 -10
  25. package/dist/cli/cli-subscriber.d.ts +2 -1
  26. package/dist/cli/cli-subscriber.d.ts.map +1 -1
  27. package/dist/cli/cli-subscriber.js +11 -3
  28. package/dist/cli/cli.d.ts.map +1 -1
  29. package/dist/cli/cli.js +1 -0
  30. package/dist/cli/commands/install.d.ts +3 -3
  31. package/dist/cli/commands/install.d.ts.map +1 -1
  32. package/dist/cli/commands/install.js +223 -41
  33. package/dist/cli/commands/interactive-commands/prompt-commands.d.ts +8 -1
  34. package/dist/cli/commands/interactive-commands/prompt-commands.d.ts.map +1 -1
  35. package/dist/cli/commands/interactive-commands/prompt-commands.js +252 -4
  36. package/dist/cli/commands/list-agents.d.ts.map +1 -1
  37. package/dist/cli/commands/list-agents.js +22 -3
  38. package/dist/cli/commands/setup.d.ts +4 -4
  39. package/dist/cli/commands/uninstall.d.ts +1 -1
  40. package/dist/cli/tool-confirmation/cli-confirmation-handler.d.ts +36 -7
  41. package/dist/cli/tool-confirmation/cli-confirmation-handler.d.ts.map +1 -1
  42. package/dist/cli/tool-confirmation/cli-confirmation-handler.js +314 -34
  43. package/dist/index.js +57 -48
  44. package/dist/webui/.next/standalone/.next/static/VoeDi3iuGmMdZu_kx-R2X/_buildManifest.js +1 -0
  45. package/dist/webui/.next/standalone/.next/static/chunks/419-5526a47c95a2fa60.js +1 -0
  46. package/dist/webui/.next/standalone/.next/static/chunks/429-838829c1391e496d.js +25 -0
  47. package/dist/webui/.next/standalone/.next/static/chunks/459-62011998b002cbf6.js +1 -0
  48. package/dist/webui/.next/standalone/.next/static/chunks/711-76a7d2bf4d6f69e5.js +1 -0
  49. package/dist/webui/.next/standalone/.next/static/chunks/854-8cad9404fc78e0cc.js +1 -0
  50. package/dist/webui/.next/standalone/.next/static/chunks/935-07f9df196b13275e.js +1 -0
  51. package/dist/webui/.next/standalone/.next/static/chunks/app/chat/[sessionId]/page-b8acc47b0d8c5c0a.js +1 -0
  52. package/dist/webui/.next/standalone/.next/static/chunks/app/layout-f4a6ee5a028899d1.js +1 -0
  53. package/dist/webui/.next/standalone/.next/static/chunks/app/page-e117ae372850d25f.js +1 -0
  54. package/dist/webui/.next/standalone/.next/static/chunks/app/playground/page-09340fb6b3f4caa2.js +1 -0
  55. package/dist/webui/.next/standalone/.next/static/chunks/{webpack-7c234e7e7e272295.js → webpack-7229fd0786f0483c.js} +1 -1
  56. package/dist/webui/.next/standalone/.next/static/css/21e6c142ca3cdc42.css +1 -0
  57. package/dist/webui/.next/standalone/.next/static/css/de70bee13400563f.css +1 -0
  58. package/dist/webui/.next/standalone/package.json +6 -2
  59. package/dist/webui/.next/standalone/packages/webui/.next/BUILD_ID +1 -1
  60. package/dist/webui/.next/standalone/packages/webui/.next/app-build-manifest.json +30 -15
  61. package/dist/webui/.next/standalone/packages/webui/.next/app-path-routes-manifest.json +1 -0
  62. package/dist/webui/.next/standalone/packages/webui/.next/build-manifest.json +5 -5
  63. package/dist/webui/.next/standalone/packages/webui/.next/prerender-manifest.json +3 -3
  64. package/dist/webui/.next/standalone/packages/webui/.next/required-server-files.json +1 -1
  65. package/dist/webui/.next/standalone/packages/webui/.next/routes-manifest.json +10 -1
  66. package/dist/webui/.next/standalone/packages/webui/.next/server/app/_not-found/page.js +1 -1
  67. package/dist/webui/.next/standalone/packages/webui/.next/server/app/_not-found/page.js.nft.json +1 -1
  68. package/dist/webui/.next/standalone/packages/webui/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  69. package/dist/webui/.next/standalone/packages/webui/.next/server/app/chat/[sessionId]/page.js +2 -0
  70. package/dist/webui/.next/standalone/packages/webui/.next/server/app/chat/[sessionId]/page.js.nft.json +1 -0
  71. package/dist/webui/.next/standalone/packages/webui/.next/server/app/chat/[sessionId]/page_client-reference-manifest.js +1 -0
  72. package/dist/webui/.next/standalone/packages/webui/.next/server/app/page.js +2 -11
  73. package/dist/webui/.next/standalone/packages/webui/.next/server/app/page.js.nft.json +1 -1
  74. package/dist/webui/.next/standalone/packages/webui/.next/server/app/page_client-reference-manifest.js +1 -1
  75. package/dist/webui/.next/standalone/packages/webui/.next/server/app/playground/page.js +4 -4
  76. package/dist/webui/.next/standalone/packages/webui/.next/server/app/playground/page.js.nft.json +1 -1
  77. package/dist/webui/.next/standalone/packages/webui/.next/server/app/playground/page_client-reference-manifest.js +1 -1
  78. package/dist/webui/.next/standalone/packages/webui/.next/server/app-paths-manifest.json +1 -0
  79. package/dist/webui/.next/standalone/packages/webui/.next/server/chunks/1.js +12 -0
  80. package/dist/webui/.next/standalone/packages/webui/.next/server/chunks/419.js +25 -0
  81. package/dist/webui/.next/standalone/packages/webui/.next/server/chunks/{619.js → 426.js} +2 -2
  82. package/dist/webui/.next/standalone/packages/webui/.next/server/chunks/43.js +1 -1
  83. package/dist/webui/.next/standalone/packages/webui/.next/server/chunks/654.js +1 -0
  84. package/dist/webui/.next/standalone/packages/webui/.next/server/chunks/71.js +5 -0
  85. package/dist/webui/.next/standalone/packages/webui/.next/server/middleware-build-manifest.js +1 -1
  86. package/dist/webui/.next/standalone/packages/webui/.next/server/pages/500.html +1 -1
  87. package/dist/webui/.next/standalone/packages/webui/.next/server/pages-manifest.json +1 -1
  88. package/dist/webui/.next/standalone/packages/webui/.next/server/server-reference-manifest.json +1 -1
  89. package/dist/webui/.next/standalone/packages/webui/.next/static/VoeDi3iuGmMdZu_kx-R2X/_buildManifest.js +1 -0
  90. package/dist/webui/.next/standalone/packages/webui/.next/static/chunks/419-5526a47c95a2fa60.js +1 -0
  91. package/dist/webui/.next/standalone/packages/webui/.next/static/chunks/429-838829c1391e496d.js +25 -0
  92. package/dist/webui/.next/standalone/packages/webui/.next/static/chunks/459-62011998b002cbf6.js +1 -0
  93. package/dist/webui/.next/standalone/packages/webui/.next/static/chunks/711-76a7d2bf4d6f69e5.js +1 -0
  94. package/dist/webui/.next/standalone/packages/webui/.next/static/chunks/854-8cad9404fc78e0cc.js +1 -0
  95. package/dist/webui/.next/standalone/packages/webui/.next/static/chunks/935-07f9df196b13275e.js +1 -0
  96. package/dist/webui/.next/standalone/packages/webui/.next/static/chunks/app/chat/[sessionId]/page-b8acc47b0d8c5c0a.js +1 -0
  97. package/dist/webui/.next/standalone/packages/webui/.next/static/chunks/app/layout-f4a6ee5a028899d1.js +1 -0
  98. package/dist/webui/.next/standalone/packages/webui/.next/static/chunks/app/page-e117ae372850d25f.js +1 -0
  99. package/dist/webui/.next/standalone/packages/webui/.next/static/chunks/app/playground/page-09340fb6b3f4caa2.js +1 -0
  100. package/dist/webui/.next/standalone/packages/webui/.next/static/chunks/{webpack-7c234e7e7e272295.js → webpack-7229fd0786f0483c.js} +1 -1
  101. package/dist/webui/.next/standalone/packages/webui/.next/static/css/21e6c142ca3cdc42.css +1 -0
  102. package/dist/webui/.next/standalone/packages/webui/.next/static/css/de70bee13400563f.css +1 -0
  103. package/dist/webui/.next/standalone/packages/webui/package.json +7 -4
  104. package/dist/webui/.next/standalone/packages/webui/server.js +1 -1
  105. package/dist/webui/.next/static/VoeDi3iuGmMdZu_kx-R2X/_buildManifest.js +1 -0
  106. package/dist/webui/.next/static/chunks/419-5526a47c95a2fa60.js +1 -0
  107. package/dist/webui/.next/static/chunks/429-838829c1391e496d.js +25 -0
  108. package/dist/webui/.next/static/chunks/459-62011998b002cbf6.js +1 -0
  109. package/dist/webui/.next/static/chunks/711-76a7d2bf4d6f69e5.js +1 -0
  110. package/dist/webui/.next/static/chunks/854-8cad9404fc78e0cc.js +1 -0
  111. package/dist/webui/.next/static/chunks/935-07f9df196b13275e.js +1 -0
  112. package/dist/webui/.next/static/chunks/app/chat/[sessionId]/page-b8acc47b0d8c5c0a.js +1 -0
  113. package/dist/webui/.next/static/chunks/app/layout-f4a6ee5a028899d1.js +1 -0
  114. package/dist/webui/.next/static/chunks/app/page-e117ae372850d25f.js +1 -0
  115. package/dist/webui/.next/static/chunks/app/playground/page-09340fb6b3f4caa2.js +1 -0
  116. package/dist/webui/.next/static/chunks/{webpack-7c234e7e7e272295.js → webpack-7229fd0786f0483c.js} +1 -1
  117. package/dist/webui/.next/static/css/21e6c142ca3cdc42.css +1 -0
  118. package/dist/webui/.next/static/css/de70bee13400563f.css +1 -0
  119. package/dist/webui/package.json +7 -4
  120. package/package.json +5 -4
  121. package/dist/webui/.next/standalone/.next/static/aL3Gzk-qN3SiSHuntvic-/_buildManifest.js +0 -1
  122. package/dist/webui/.next/standalone/.next/static/chunks/179-78abc2eacbc41da9.js +0 -1
  123. package/dist/webui/.next/standalone/.next/static/chunks/442-b1916bec348454b3.js +0 -1
  124. package/dist/webui/.next/standalone/.next/static/chunks/544-c4a8f278ed1a25d7.js +0 -1
  125. package/dist/webui/.next/standalone/.next/static/chunks/854-2a6d5a5297a15d52.js +0 -1
  126. package/dist/webui/.next/standalone/.next/static/chunks/app/layout-dde711766eda096b.js +0 -1
  127. package/dist/webui/.next/standalone/.next/static/chunks/app/page-5e94d5a49dc718d0.js +0 -1
  128. package/dist/webui/.next/standalone/.next/static/chunks/app/playground/page-9ae40e0b219583e3.js +0 -1
  129. package/dist/webui/.next/standalone/.next/static/css/045cc65741e38fbd.css +0 -3
  130. package/dist/webui/.next/standalone/packages/webui/.next/server/chunks/549.js +0 -1
  131. package/dist/webui/.next/standalone/packages/webui/.next/server/chunks/950.js +0 -5
  132. package/dist/webui/.next/standalone/packages/webui/.next/static/aL3Gzk-qN3SiSHuntvic-/_buildManifest.js +0 -1
  133. package/dist/webui/.next/standalone/packages/webui/.next/static/chunks/179-78abc2eacbc41da9.js +0 -1
  134. package/dist/webui/.next/standalone/packages/webui/.next/static/chunks/442-b1916bec348454b3.js +0 -1
  135. package/dist/webui/.next/standalone/packages/webui/.next/static/chunks/544-c4a8f278ed1a25d7.js +0 -1
  136. package/dist/webui/.next/standalone/packages/webui/.next/static/chunks/854-2a6d5a5297a15d52.js +0 -1
  137. package/dist/webui/.next/standalone/packages/webui/.next/static/chunks/app/layout-dde711766eda096b.js +0 -1
  138. package/dist/webui/.next/standalone/packages/webui/.next/static/chunks/app/page-5e94d5a49dc718d0.js +0 -1
  139. package/dist/webui/.next/standalone/packages/webui/.next/static/chunks/app/playground/page-9ae40e0b219583e3.js +0 -1
  140. package/dist/webui/.next/standalone/packages/webui/.next/static/css/045cc65741e38fbd.css +0 -3
  141. package/dist/webui/.next/static/aL3Gzk-qN3SiSHuntvic-/_buildManifest.js +0 -1
  142. package/dist/webui/.next/static/chunks/179-78abc2eacbc41da9.js +0 -1
  143. package/dist/webui/.next/static/chunks/442-b1916bec348454b3.js +0 -1
  144. package/dist/webui/.next/static/chunks/544-c4a8f278ed1a25d7.js +0 -1
  145. package/dist/webui/.next/static/chunks/854-2a6d5a5297a15d52.js +0 -1
  146. package/dist/webui/.next/static/chunks/app/layout-dde711766eda096b.js +0 -1
  147. package/dist/webui/.next/static/chunks/app/page-5e94d5a49dc718d0.js +0 -1
  148. package/dist/webui/.next/static/chunks/app/playground/page-9ae40e0b219583e3.js +0 -1
  149. package/dist/webui/.next/static/css/045cc65741e38fbd.css +0 -3
  150. /package/dist/webui/.next/standalone/.next/static/{aL3Gzk-qN3SiSHuntvic- → VoeDi3iuGmMdZu_kx-R2X}/_ssgManifest.js +0 -0
  151. /package/dist/webui/.next/standalone/packages/webui/.next/static/{aL3Gzk-qN3SiSHuntvic- → VoeDi3iuGmMdZu_kx-R2X}/_ssgManifest.js +0 -0
  152. /package/dist/webui/.next/static/{aL3Gzk-qN3SiSHuntvic- → VoeDi3iuGmMdZu_kx-R2X}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- exports.id=43,exports.ids=[43],exports.modules={21842:()=>{},21870:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,97452,23)),Promise.resolve().then(c.t.bind(c,41143,23)),Promise.resolve().then(c.t.bind(c,96731,23)),Promise.resolve().then(c.t.bind(c,61742,23)),Promise.resolve().then(c.t.bind(c,202,23)),Promise.resolve().then(c.t.bind(c,43598,23)),Promise.resolve().then(c.t.bind(c,30670,23)),Promise.resolve().then(c.t.bind(c,68299,23)),Promise.resolve().then(c.t.bind(c,10190,23))},24599:(a,b,c)=>{Promise.resolve().then(c.bind(c,34820)),Promise.resolve().then(c.bind(c,27359))},27359:(a,b,c)=>{"use strict";c.d(b,{SpeechReset:()=>d});let d=(0,c(95364).registerClientReference)(function(){throw Error("Attempted to call SpeechReset() from the server but SpeechReset is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/dexto/dexto/packages/webui/components/ui/speech-reset.tsx","SpeechReset")},34820:(a,b,c)=>{"use strict";c.d(b,{ChatProvider:()=>e});var d=c(95364);let e=(0,d.registerClientReference)(function(){throw Error("Attempted to call ChatProvider() from the server but ChatProvider is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/dexto/dexto/packages/webui/components/hooks/ChatContext.tsx","ChatProvider");(0,d.registerClientReference)(function(){throw Error("Attempted to call useChatContext() from the server but useChatContext is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/dexto/dexto/packages/webui/components/hooks/ChatContext.tsx","useChatContext")},52623:(a,b,c)=>{Promise.resolve().then(c.bind(c,64516)),Promise.resolve().then(c.bind(c,63501))},61622:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,28710,23)),Promise.resolve().then(c.t.bind(c,11865,23)),Promise.resolve().then(c.t.bind(c,54401,23)),Promise.resolve().then(c.t.bind(c,11096,23)),Promise.resolve().then(c.t.bind(c,55368,23)),Promise.resolve().then(c.t.bind(c,53612,23)),Promise.resolve().then(c.t.bind(c,88572,23)),Promise.resolve().then(c.t.bind(c,47629,23)),Promise.resolve().then(c.bind(c,74476))},63501:(a,b,c)=>{"use strict";function d(){return null}c.d(b,{SpeechReset:()=>d}),c(4039)},64516:(a,b,c)=>{"use strict";c.d(b,{ChatProvider:()=>h,v:()=>i});var d=c(35270),e=c(4039),f=c(70702);let g=(0,e.createContext)(void 0);function h({children:a}){let b=process.env.NEXT_PUBLIC_WS_URL||"ws://localhost:3001",[c,h]=(0,e.useState)(null),[i,j]=(0,e.useState)(!0),[k,l]=(0,e.useState)(!0),{messages:m,sendMessage:n,status:o,reset:p,setMessages:q,websocket:r,activeError:s,clearError:t,processing:u,cancel:v}=(0,f.Y_)(b,()=>c),[w,x]=(0,e.useState)(null),y=(0,e.useCallback)(async a=>{try{let b=void 0!==a?a:c,d=b?`/api/llm/current?sessionId=${b}`:"/api/llm/current",e=await fetch(d);if(e.ok){let a=await e.json(),b=a.config||a;x({provider:b.provider,model:b.model,displayName:b.displayName,router:b.router,baseURL:b.baseURL})}}catch{}},[c]),{greeting:z}=function(a){let[b,c]=(0,e.useState)(null),[d,f]=(0,e.useState)(!1),[g,h]=(0,e.useState)(null);return{greeting:b,isLoading:d,error:g}}(0),A=(0,e.useCallback)(async()=>{try{let a=await fetch("/api/sessions",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({})});if(!a.ok)throw Error("Failed to create session");return(await a.json()).session.id}catch(a){return console.error("Error creating auto session:",a),`chat-${Date.now()}`}},[]),B=(0,e.useCallback)(async(a,b,d)=>{let e=c;!e&&i&&(h(e=await A()),j(!1),await y(e)),e?n(a,b,d,e,k):console.error("No session available for sending message")},[n,c,i,A,k]),C=(0,e.useCallback)(()=>{c&&p(c)},[p,c]),D=(0,e.useCallback)(async a=>{try{let b=await fetch(`/api/sessions/${a}/history`);if(!b.ok){if(404===b.status){if(!(await fetch("/api/sessions",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionId:a})})).ok)throw Error("Failed to create session");q([]);return}throw Error("Failed to load session history")}let c=(await b.json()).history||[],d=[];for(let b=0;b<c.length;b++){let e=c[b],f={id:`session-${a}-${b}`,role:e.role,content:e.content,createdAt:Date.now()-(c.length-b)*1e3,sessionId:a,tokenUsage:e.tokenUsage,reasoning:e.reasoning,model:e.model,router:e.router,provider:e.provider};if("assistant"===e.role&&e.toolCalls&&e.toolCalls.length>0)e.content&&d.push(f),e.toolCalls.forEach((e,f)=>{let g,h=e.function?JSON.parse(e.function.arguments||"{}"):{},i=e.function?.name||"unknown";for(let a=b+1;a<c.length;a++){let b=c[a];if("tool"===b.role&&b.toolCallId===e.id){g=b.content;break}}d.push({id:`session-${a}-${b}-tool-${f}`,role:"tool",content:null,createdAt:Date.now()-(c.length-b)*1e3+f,sessionId:a,toolName:i,toolArgs:h,toolResult:g})});else{if("tool"===e.role)continue;d.push(f)}}q(d)}catch(a){console.error("Error loading session history:",a),q([])}},[q,y]),E=(0,e.useCallback)(async a=>{if(a!==c)try{h(a),j(!1),await D(a),await y(a)}catch(a){throw console.error("Error switching session:",a),a}},[c,D]),F=(0,e.useCallback)(()=>{h(null),j(!0),q([]),x(null)},[q]);return(0,d.jsx)(g.Provider,{value:{messages:m,sendMessage:B,status:o,reset:C,currentSessionId:c,switchSession:E,loadSessionHistory:D,isWelcomeState:i,returnToWelcome:F,isStreaming:k,setStreaming:l,websocket:r,currentLLM:w,refreshCurrentLLM:y,processing:u,cancel:v,activeError:s,clearError:t,greeting:z},children:a})}function i(){let a=(0,e.useContext)(g);if(!a)throw Error("useChatContext must be used within a ChatProvider");return a}},70702:(a,b,c)=>{"use strict";c.d(b,{kz:()=>i,EQ:()=>j,j0:()=>h,PI:()=>g,P2:()=>f,KU:()=>e,Y_:()=>l});var d=c(4039);function e(a){return"object"==typeof a&&null!==a&&"error"in a}function f(a){return"object"==typeof a&&null!==a&&"content"in a&&Array.isArray(a.content)}function g(a){return"object"==typeof a&&null!==a&&"type"in a&&"text"===a.type}function h(a){return"object"==typeof a&&null!==a&&"type"in a&&"image"===a.type}function i(a){return"object"==typeof a&&null!==a&&"type"in a&&"audio"===a.type}function j(a){return"object"==typeof a&&null!==a&&"type"in a&&"file"===a.type}let k=()=>`msg-${Date.now()}-${Math.random().toString(36).substring(2,9)}`;function l(a,b){let c=(0,d.useRef)(null),[e,f]=(0,d.useState)([]),g=(0,d.useRef)(null),[h,i]=(0,d.useState)("connecting"),[j,l]=(0,d.useState)(!1),[m,n]=(0,d.useState)(null),o=(0,d.useRef)(!1),p=(0,d.useRef)(b);(0,d.useCallback)(a=>{if(!a)return!1;let b=p.current,c=b?b():null;return!!c&&a===c},[]);let q=(0,d.useCallback)((a,b,d,e,h=!1)=>{if(c.current?.readyState===globalThis.WebSocket.OPEN){c.current.send(JSON.stringify({type:"message",content:a,imageData:b,fileData:d,sessionId:e,stream:h})),l(!0);let i=k();g.current=i,f(c=>[...c,{id:i,role:"user",content:a,createdAt:Date.now(),sessionId:e,imageData:b,fileData:d}])}else n({id:k(),message:"Cannot send message: connection is not open",timestamp:Date.now(),context:"websocket",recoverable:!0})},[]),r=(0,d.useCallback)(a=>{c.current?.readyState===globalThis.WebSocket.OPEN&&c.current.send(JSON.stringify({type:"reset",sessionId:a})),f([]),n(null),g.current=null,l(!1)},[]),s=(0,d.useCallback)(a=>{c.current?.readyState===globalThis.WebSocket.OPEN&&c.current.send(JSON.stringify({type:"cancel",sessionId:a})),l(!1),o.current=!0},[]),t=(0,d.useCallback)(()=>{n(null)},[]);return{messages:e,status:h,sendMessage:q,reset:r,setMessages:f,websocket:c.current,processing:j,cancel:s,activeError:m,clearError:t}}},90981:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>m,metadata:()=>l});var d=c(21824),e=c(99741),f=c.n(e),g=c(42829),h=c.n(g);c(21842);var i=c(34820),j=c(27359),k=c(85972);let l={title:{default:"Dexto Web UI",template:"%s \xb7 Dexto"},description:"Interactive playground for testing MCP tools and talking to AI agents",icons:{icon:[{url:"/logos/dexto/dexto_logo_icon.svg",type:"image/svg+xml"}],shortcut:[{url:"/logos/dexto/dexto_logo_icon.svg",type:"image/svg+xml"}],apple:[{url:"/logos/dexto/dexto_logo_icon.svg",type:"image/svg+xml"}]},openGraph:{title:"Dexto",description:"Interactive playground for testing MCP tools and talking to AI agents",type:"website"},twitter:{card:"summary",title:"Dexto",description:"Interactive playground for testing MCP tools and talking to AI agents"}};async function m({children:a}){let b=await (0,k.UL)(),c=b.get("theme")?.value;return(0,d.jsx)("html",{lang:"en",className:c&&"dark"!==c?"":"dark",children:(0,d.jsx)("body",{className:`${f().variable} ${h().variable} antialiased bg-background text-foreground`,children:(0,d.jsxs)(i.ChatProvider,{children:[(0,d.jsx)(j.SpeechReset,{}),(0,d.jsx)("div",{className:"flex h-screen w-screen flex-col",children:a})]})})})}}};
1
+ exports.id=43,exports.ids=[43],exports.modules={21842:()=>{},21870:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,97452,23)),Promise.resolve().then(c.t.bind(c,41143,23)),Promise.resolve().then(c.t.bind(c,96731,23)),Promise.resolve().then(c.t.bind(c,61742,23)),Promise.resolve().then(c.t.bind(c,202,23)),Promise.resolve().then(c.t.bind(c,43598,23)),Promise.resolve().then(c.t.bind(c,30670,23)),Promise.resolve().then(c.t.bind(c,68299,23)),Promise.resolve().then(c.t.bind(c,10190,23))},24599:(a,b,c)=>{Promise.resolve().then(c.bind(c,34820)),Promise.resolve().then(c.bind(c,27359))},27359:(a,b,c)=>{"use strict";c.d(b,{SpeechReset:()=>d});let d=(0,c(95364).registerClientReference)(function(){throw Error("Attempted to call SpeechReset() from the server but SpeechReset is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/dexto/dexto/packages/webui/components/ui/speech-reset.tsx","SpeechReset")},34820:(a,b,c)=>{"use strict";c.d(b,{ChatProvider:()=>e});var d=c(95364);let e=(0,d.registerClientReference)(function(){throw Error("Attempted to call ChatProvider() from the server but ChatProvider is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/dexto/dexto/packages/webui/components/hooks/ChatContext.tsx","ChatProvider");(0,d.registerClientReference)(function(){throw Error("Attempted to call useChatContext() from the server but useChatContext is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/dexto/dexto/packages/webui/components/hooks/ChatContext.tsx","useChatContext")},52623:(a,b,c)=>{Promise.resolve().then(c.bind(c,64516)),Promise.resolve().then(c.bind(c,63501))},61622:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,28710,23)),Promise.resolve().then(c.t.bind(c,11865,23)),Promise.resolve().then(c.t.bind(c,54401,23)),Promise.resolve().then(c.t.bind(c,11096,23)),Promise.resolve().then(c.t.bind(c,55368,23)),Promise.resolve().then(c.t.bind(c,53612,23)),Promise.resolve().then(c.t.bind(c,88572,23)),Promise.resolve().then(c.t.bind(c,47629,23)),Promise.resolve().then(c.bind(c,74476))},63501:(a,b,c)=>{"use strict";function d(){return null}c.d(b,{SpeechReset:()=>d}),c(4039)},64516:(a,b,c)=>{"use strict";c.d(b,{ChatProvider:()=>j,v:()=>k});var d=c(35270),e=c(4039),f=c(76112),g=c(70702),h=c(77836);let i=(0,e.createContext)(void 0);function j({children:a}){let b=(0,f.useRouter)(),c=process.env.NEXT_PUBLIC_WS_URL||"ws://localhost:3001",[j,k]=(0,e.useState)(null),[l,m]=(0,e.useState)(!0),[n,o]=(0,e.useState)(!0),[p,q]=(0,e.useState)(!1),[r,s]=(0,e.useState)(!1),{messages:t,sendMessage:u,status:v,reset:w,setMessages:x,websocket:y,activeError:z,clearError:A,processing:B,cancel:C}=(0,g.Y_)(c,()=>j),[D,E]=(0,e.useState)(null),F=(0,e.useCallback)(async a=>{try{let b=void 0!==a?a:j,c=b?`/api/llm/current?sessionId=${b}`:"/api/llm/current",d=await fetch(c);if(d.ok){let a=await d.json(),b=a.config||a;E({provider:b.provider,model:b.model,displayName:b.displayName,router:b.router,baseURL:b.baseURL})}}catch{}},[j]),{greeting:G}=function(a){let[b,c]=(0,e.useState)(null),[d,f]=(0,e.useState)(!1),[g,h]=(0,e.useState)(null),[i,j]=(0,e.useState)(0);return(0,e.useCallback)(async b=>{f(!0),h(null);try{let d=a?`/api/greeting?sessionId=${encodeURIComponent(a)}`:"/api/greeting",e=await fetch(d,{signal:b});if(!e.ok){let a=`Failed to fetch greeting: HTTP ${e.status} ${e.statusText}`;c(null),h(a);return}let f=await e.json();c(f.greeting??null)}catch(b){if(b?.name==="AbortError")return;let a=b instanceof Error?b.message:"Failed to fetch greeting";h(a),console.error(`Error fetching greeting: ${a}`)}finally{f(!1)}},[a]),{greeting:b,isLoading:d,error:g}}(j),H=(0,e.useCallback)(async()=>{let a,b=await fetch("/api/sessions",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({})});if(!b.ok)throw Error(`Failed to create session: ${b.status} ${b.statusText}`);let c=await b.text();if(!c.trim())throw Error("Empty response from session creation");try{a=JSON.parse(c)}catch(a){throw console.error("Failed to parse session creation response:",a),Error("Invalid response from session creation")}if(!a.session?.id)throw Error("Session ID not found in server response");return a.session.id},[]),I=(0,e.useCallback)(async(a,c,d)=>{let e=j;if(!e&&l){if(r)return;try{s(!0),e=await H(),k(e),m(!1),b.replace(`/chat/${e}`),await F(e)}catch(a){console.error("Failed to create session:",a);return}finally{s(!1)}}e?u(a,c,d,e,n):console.error("No session available for sending message")},[u,j,l,r,H,n,F,b]),J=(0,e.useCallback)(()=>{j&&w(j)},[w,j]),K=(0,e.useCallback)(async a=>{try{let b,c=await fetch(`/api/sessions/${a}/history`);if(!c.ok){if(404===c.status){if(!(await fetch("/api/sessions",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionId:a})})).ok)throw Error("Failed to create session");x([]);return}throw Error("Failed to load session history")}let d=await c.text();if(!d.trim())return void x(b=>b.some(b=>b.sessionId===a)?b:[]);try{b=JSON.parse(d)}catch(a){console.error("Failed to parse session history response:",a),x([]);return}let e=b.history||[],f=[],g=new Map;for(let b=0;b<e.length;b++){let c=e[b],d={id:`session-${a}-${b}`,role:c.role,content:c.content,createdAt:Date.now()-(e.length-b)*1e3,sessionId:a,tokenUsage:c.tokenUsage,reasoning:c.reasoning,model:c.model,router:c.router,provider:c.provider},i=a=>{let b=[];for(let c of a){if("image"===c.type&&"string"==typeof c.image&&c.image.startsWith("@blob:")){let a=c.image.substring(1);b.push({uri:a,kind:"image",mimeType:c.mimeType??"image/jpeg"})}if("file"===c.type&&"string"==typeof c.data&&c.data.startsWith("@blob:")){let a=c.data.substring(1),d=c.mimeType??"application/octet-stream",e=(0,h.h)(d);b.push({uri:a,kind:e,mimeType:d,...c.filename?{filename:c.filename}:{}})}}return b.length>0?b:void 0};if("assistant"===c.role){c.content&&f.push(d),c.toolCalls&&c.toolCalls.length>0&&c.toolCalls.forEach((c,d)=>{let h={};if(c?.function)try{h=JSON.parse(c.function.arguments||"{}")}catch(a){console.warn(`Failed to parse toolCall arguments for ${c.function?.name||"unknown"}: ${a}`),h={}}let i=c.function?.name||"unknown",j={id:`session-${a}-${b}-tool-${d}`,role:"tool",content:null,createdAt:Date.now()-(e.length-b)*1e3+d,sessionId:a,toolName:i,toolArgs:h,toolResult:void 0,toolResultMeta:void 0,toolResultSuccess:void 0};"string"==typeof c.id&&c.id.length>0&&g.set(c.id,f.length),f.push(j)});continue}if("tool"===c.role){let a="string"==typeof c.toolCallId?c.toolCallId:void 0,e="string"==typeof c.name?c.name:"unknown",h=Array.isArray(c.content)?c.content:"string"==typeof c.content?[{type:"text",text:c.content}]:[],j=i(h),k={content:h,...j?{resources:j}:{},meta:{toolName:e,toolCallId:a??`tool-${b}`,..."boolean"==typeof c.success?{success:c.success}:{}}};if(a&&g.has(a)){let b=g.get(a);f[b]={...f[b],toolResult:k,toolResultMeta:k.meta,toolResultSuccess:"boolean"==typeof c.success?c.success:void 0}}else f.push({...d,role:"tool",content:null,toolName:e,toolArgs:"object"==typeof c.args?c.args:void 0,toolResult:k,toolResultMeta:k.meta,toolResultSuccess:"boolean"==typeof c.success?c.success:void 0});continue}f.push(d)}x(b=>b.some(b=>b.sessionId===a)?b:f)}catch(a){console.error("Error loading session history:",a),x([])}},[x,F]),L=(0,e.useCallback)(async a=>{if(a!==j&&!p){q(!0);try{k(a),m(!1),await K(a),await F(a)}catch(a){throw console.error("Error switching session:",a),a}finally{q(!1)}}},[j,p,K,F]),M=(0,e.useCallback)(()=>{k(null),m(!0),x([]),E(null)},[x]);return(0,d.jsx)(i.Provider,{value:{messages:t,sendMessage:I,status:v,reset:J,currentSessionId:j,switchSession:L,loadSessionHistory:K,isWelcomeState:l,returnToWelcome:M,isStreaming:n,setStreaming:o,websocket:y,currentLLM:D,refreshCurrentLLM:F,processing:B,cancel:C,activeError:z,clearError:A,greeting:G},children:a})}function k(){let a=(0,e.useContext)(i);if(!a)throw Error("useChatContext must be used within a ChatProvider");return a}},70702:(a,b,c)=>{"use strict";c.d(b,{kz:()=>i,EQ:()=>j,j0:()=>h,PI:()=>g,P2:()=>f,KU:()=>e,Y_:()=>l});var d=c(4039);function e(a){return"object"==typeof a&&null!==a&&"error"in a}function f(a){return"object"==typeof a&&null!==a&&"content"in a&&Array.isArray(a.content)}function g(a){return"object"==typeof a&&null!==a&&"type"in a&&"text"===a.type}function h(a){return"object"==typeof a&&null!==a&&"type"in a&&"image"===a.type}function i(a){return"object"==typeof a&&null!==a&&"type"in a&&"audio"===a.type}function j(a){return"object"==typeof a&&null!==a&&"type"in a&&"file"===a.type}let k=()=>`msg-${Date.now()}-${Math.random().toString(36).substring(2,9)}`;function l(a,b){let c=(0,d.useRef)(null),[e,f]=(0,d.useState)([]),g=(0,d.useRef)(null),[h,i]=(0,d.useState)("connecting"),[j,l]=(0,d.useState)(!1),[m,n]=(0,d.useState)(null),o=(0,d.useRef)(!1),p=(0,d.useRef)(new Map),q=(0,d.useRef)(b);(0,d.useCallback)(a=>{if(!a)return!1;let b=q.current,c=b?b():null;return!!c&&a===c},[]);let r=(0,d.useCallback)((a,b,d,e,h=!1)=>{if(c.current?.readyState===globalThis.WebSocket.OPEN){c.current.send(JSON.stringify({type:"message",content:a,imageData:b,fileData:d,sessionId:e,stream:h})),l(!0);let i=k();g.current=i,f(c=>[...c,{id:i,role:"user",content:a,createdAt:Date.now(),sessionId:e,imageData:b,fileData:d}])}else n({id:k(),message:"Cannot send message: connection is not open",timestamp:Date.now(),context:"websocket",recoverable:!0})},[]),s=(0,d.useCallback)(a=>{c.current?.readyState===globalThis.WebSocket.OPEN&&c.current.send(JSON.stringify({type:"reset",sessionId:a})),f([]),n(null),g.current=null,p.current.clear(),l(!1)},[]),t=(0,d.useCallback)(a=>{c.current?.readyState===globalThis.WebSocket.OPEN&&c.current.send(JSON.stringify({type:"cancel",sessionId:a})),l(!1),p.current.clear(),o.current=!0},[]),u=(0,d.useCallback)(()=>{n(null)},[]);return{messages:e,status:h,sendMessage:r,reset:s,setMessages:f,websocket:c.current,processing:j,cancel:t,activeError:m,clearError:u}}},77836:(a,b,c)=>{"use strict";function d(a){return a?.startsWith("audio/")?"audio":a?.startsWith("video/")?"video":"binary"}function e(a){return a?.startsWith("image/")?"image":a?.startsWith("audio/")?"audio":a?.startsWith("video/")?"video":"binary"}c.d(b,{h:()=>e,t:()=>d})},90981:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>m,metadata:()=>l});var d=c(21824),e=c(99741),f=c.n(e),g=c(42829),h=c.n(g);c(21842);var i=c(34820),j=c(27359),k=c(85972);let l={title:{default:"Dexto Web UI",template:"%s \xb7 Dexto"},description:"Interactive playground for testing MCP tools and talking to AI agents",icons:{icon:[{url:"/logos/dexto/dexto_logo_icon.svg",type:"image/svg+xml"}],shortcut:[{url:"/logos/dexto/dexto_logo_icon.svg",type:"image/svg+xml"}],apple:[{url:"/logos/dexto/dexto_logo_icon.svg",type:"image/svg+xml"}]},openGraph:{title:"Dexto",description:"Interactive playground for testing MCP tools and talking to AI agents",type:"website"},twitter:{card:"summary",title:"Dexto",description:"Interactive playground for testing MCP tools and talking to AI agents"}};async function m({children:a}){let b=await (0,k.UL)(),c=b.get("theme")?.value;return(0,d.jsx)("html",{lang:"en",className:c&&"dark"!==c?"":"dark",children:(0,d.jsx)("body",{className:`${f().variable} ${h().variable} antialiased bg-background text-foreground`,children:(0,d.jsxs)(i.ChatProvider,{children:[(0,d.jsx)(j.SpeechReset,{}),(0,d.jsx)("div",{className:"flex h-screen w-screen flex-col",children:a})]})})})}}};
@@ -0,0 +1 @@
1
+ "use strict";exports.id=654,exports.ids=[654],exports.modules={4409:(a,b,c)=>{c.d(b,{$:()=>i});var d=c(35270);c(4039);var e=c(52510),f=c(73102),g=c(34306);let h=(0,f.F)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",destructive:"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9"}},defaultVariants:{variant:"default",size:"default"}});function i({className:a,variant:b,size:c,asChild:f=!1,...i}){let j=f?e.DX:"button";return(0,d.jsx)(j,{"data-slot":"button",className:(0,g.cn)(h({variant:b,size:c,className:a})),...i})}},20773:(a,b,c)=>{c.d(b,{p:()=>f});var d=c(35270);c(4039);var e=c(34306);function f({className:a,type:b,...c}){return(0,d.jsx)("input",{type:b,"data-slot":"input",className:(0,e.cn)("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input flex h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",a),...c})}},24617:(a,b,c)=>{c.d(b,{A:()=>q});var d=c(35270),e=c(4039),f=c(95409),g=c(4409),h=c(20773),i=c(98023),j=c(74985),k=c(79487),l=c(50803),m=c(66696);function n({label:a="Key-Value Pairs",placeholder:b={key:"Key",value:"Value"},pairs:c,onChange:e,disabled:f=!1,className:j="",keyLabel:k="Key",valueLabel:n="Value"}){let o=(a,b,d)=>{e(c.map(c=>c.id===a?{...c,[b]:d}:c))};return(0,d.jsxs)("div",{className:`space-y-3 ${j}`,children:[a&&(0,d.jsx)(i.J,{className:"text-sm font-medium",children:a}),(0,d.jsxs)("div",{className:"space-y-2",children:[c.length>0&&(0,d.jsxs)("div",{className:"grid grid-cols-12 gap-2 items-center text-xs text-muted-foreground",children:[(0,d.jsx)("div",{className:"col-span-5",children:k}),(0,d.jsx)("div",{className:"col-span-6",children:n}),(0,d.jsx)("div",{className:"col-span-1"})]}),c.map(a=>(0,d.jsxs)("div",{className:"grid grid-cols-12 gap-2 items-center",children:[(0,d.jsx)(h.p,{placeholder:b.key,value:a.key,onChange:b=>o(a.id,"key",b.target.value),disabled:f,className:"col-span-5"}),(0,d.jsx)(h.p,{placeholder:b.value,value:a.value,onChange:b=>o(a.id,"value",b.target.value),disabled:f,className:"col-span-6"}),(0,d.jsx)(g.$,{type:"button",variant:"ghost",size:"sm",onClick:()=>{var b;return b=a.id,void e(c.filter(a=>a.id!==b))},disabled:f,className:"col-span-1 h-8 w-8 p-0",children:(0,d.jsx)(l.A,{className:"h-4 w-4"})})]},a.id))]}),(0,d.jsxs)(g.$,{type:"button",variant:"outline",size:"sm",onClick:()=>{e([...c,{key:"",value:"",id:`kv-${Date.now()}-${Math.random().toString(36).substring(2,11)}`}])},disabled:f,className:"w-full mt-2",children:[(0,d.jsx)(m.A,{className:"h-4 w-4 mr-2"}),"Add ",k]})]})}var o=c(89615),p=c(47030);function q({isOpen:a,onClose:b,onServerConnected:c,initialName:l,initialConfig:m,lockName:q}){let[r,s]=(0,e.useState)(""),[t,u]=(0,e.useState)("stdio"),[v,w]=(0,e.useState)(""),[x,y]=(0,e.useState)(""),[z,A]=(0,e.useState)(""),[B,C]=(0,e.useState)([]),[D,E]=(0,e.useState)([]),[F,G]=(0,e.useState)(null),[H,I]=(0,e.useState)(!1),[J,K]=(0,e.useState)(!1),L=a=>{let b={};return a.forEach(a=>{a.key.trim()&&a.value.trim()&&(b[a.key.trim()]=a.value.trim())}),b},M=async a=>{let d;if(a.preventDefault(),G(null),I(!0),!r.trim()){G("Server name is required."),I(!1);return}if("stdio"===t){if(!v.trim()){G("Command is required for stdio servers."),I(!1);return}let a=D.map(a=>a.key.trim()).filter(Boolean);if(a.length){let b=a.filter((b,c)=>a.indexOf(b)!==c);if(b.length){G(`Duplicate environment variables: ${Array.from(new Set(b)).join(", ")}`),I(!1);return}let c=D.filter(a=>a.key.trim()&&!a.value.trim()).map(a=>a.key.trim());if(c.length){G(`Please set required environment variables: ${c.join(", ")}`),I(!1);return}}}else{if(!z.trim()){G(`URL is required for ${t.toUpperCase()} servers.`),I(!1);return}try{new URL(z.trim())}catch(a){G(`Invalid URL format for ${t.toUpperCase()} server.`),I(!1);return}}d="stdio"===t?{type:"stdio",command:v.trim(),args:x.split(",").map(a=>a.trim()).filter(Boolean),env:(a=>{let b={};for(let{key:c,value:d}of a){let a=c.trim(),e=d.trim();a&&e&&(b[a]=e)}return b})(D),timeout:3e4,connectionMode:"lenient"}:"sse"===t?{type:"sse",url:z.trim(),headers:B.length?L(B):{},timeout:3e4,connectionMode:"lenient"}:{type:"http",url:z.trim(),headers:B.length?L(B):{},timeout:3e4,connectionMode:"lenient"};let e=new AbortController,f=setTimeout(()=>e.abort(),3e4);try{let a=await fetch("/api/mcp/servers",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:r.trim(),config:d,persistToAgent:J}),signal:e.signal}),f=await a.json();if(!a.ok){G(f.error||`Server returned status ${a.status}`),I(!1);return}(0,o.w)(),c&&c(),b()}catch(b){let a="Failed to connect server";b instanceof DOMException&&"AbortError"===b.name?a="Connection timed out":b instanceof Error?a=b.message||a:"string"==typeof b&&(a=b),G(a)}finally{clearTimeout(f),I(!1)}};return(0,d.jsx)(f.lG,{open:a,onOpenChange:a=>!a&&b(),children:(0,d.jsxs)(f.Cf,{className:"sm:max-w-[480px]",children:[(0,d.jsxs)(f.c7,{children:[(0,d.jsx)(f.L3,{children:"Connect New MCP Server"}),(0,d.jsx)(f.rr,{children:"Configure connection details for a new MCP server (stdio, SSE, or HTTP)."})]}),(0,d.jsxs)("form",{id:"connectServerForm",onSubmit:M,className:"grid gap-4 py-4",children:[F&&(0,d.jsx)(k.Fc,{variant:"destructive",children:(0,d.jsx)(k.TN,{children:F})}),(0,d.jsxs)("div",{className:"grid grid-cols-4 items-center gap-4",children:[(0,d.jsx)(i.J,{htmlFor:"serverName",className:"text-right",children:"Server Name"}),(0,d.jsx)(h.p,{id:"serverName",value:r,onChange:a=>s(a.target.value),className:"col-span-3",placeholder:"e.g., My Local Tools",required:!0,disabled:H||!!q})]}),(0,d.jsxs)("div",{className:"grid grid-cols-4 items-center gap-4",children:[(0,d.jsx)(i.J,{htmlFor:"serverType",className:"text-right",children:"Server Type"}),(0,d.jsxs)(j.l6,{value:t,onValueChange:a=>u(a),disabled:H,children:[(0,d.jsx)(j.bq,{id:"serverType",className:"col-span-3",children:(0,d.jsx)(j.yv,{placeholder:"Select type"})}),(0,d.jsxs)(j.gC,{children:[(0,d.jsx)(j.eb,{value:"stdio",children:"stdio"}),(0,d.jsx)(j.eb,{value:"sse",children:"sse"}),(0,d.jsx)(j.eb,{value:"http",children:"http"})]})]})]}),"stdio"===t?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"grid grid-cols-4 items-center gap-4",children:[(0,d.jsx)(i.J,{htmlFor:"command",className:"text-right",children:"Command"}),(0,d.jsx)(h.p,{id:"command",value:v,onChange:a=>w(a.target.value),className:"col-span-3",placeholder:"e.g., /path/to/executable or python",required:!0,disabled:H})]}),(0,d.jsxs)("div",{className:"grid grid-cols-4 items-center gap-4",children:[(0,d.jsx)(i.J,{htmlFor:"args",className:"text-right",children:"Arguments"}),(0,d.jsx)(h.p,{id:"args",value:x,onChange:a=>y(a.target.value),className:"col-span-3",placeholder:"Comma-separated, e.g., -m,script.py,--port,8080",disabled:H})]}),(0,d.jsxs)("div",{className:"grid grid-cols-4 items-start gap-4",children:[(0,d.jsx)(i.J,{className:"text-right mt-2",children:"Environment"}),(0,d.jsx)("div",{className:"col-span-3",children:(0,d.jsx)(n,{pairs:D,onChange:E,placeholder:{key:"API_KEY",value:"your-secret-key"},disabled:H,keyLabel:"Variable",valueLabel:"Value"})})]})]}):"sse"===t?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"grid grid-cols-4 items-center gap-4",children:[(0,d.jsx)(i.J,{htmlFor:"url",className:"text-right",children:"URL"}),(0,d.jsx)(h.p,{id:"url",type:"url",value:z,onChange:a=>A(a.target.value),className:"col-span-3",placeholder:"e.g., http://localhost:8000/events",required:!0,disabled:H})]}),(0,d.jsxs)("div",{className:"grid grid-cols-4 items-start gap-4",children:[(0,d.jsx)(i.J,{className:"text-right mt-2",children:"Headers"}),(0,d.jsx)("div",{className:"col-span-3",children:(0,d.jsx)(n,{pairs:B,onChange:C,placeholder:{key:"Authorization",value:"Bearer your-token"},disabled:H,keyLabel:"Header",valueLabel:"Value"})})]})]}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"grid grid-cols-4 items-center gap-4",children:[(0,d.jsx)(i.J,{htmlFor:"url",className:"text-right",children:"URL"}),(0,d.jsx)(h.p,{id:"url",type:"url",value:z,onChange:a=>A(a.target.value),className:"col-span-3",placeholder:"e.g., http://localhost:8080",required:!0,disabled:H})]}),(0,d.jsxs)("div",{className:"grid grid-cols-4 items-start gap-4",children:[(0,d.jsx)(i.J,{className:"text-right mt-2",children:"Headers"}),(0,d.jsx)("div",{className:"col-span-3",children:(0,d.jsx)(n,{pairs:B,onChange:C,placeholder:{key:"Authorization",value:"Bearer your-token"},disabled:H,keyLabel:"Header",valueLabel:"Value"})})]})]}),(0,d.jsxs)("div",{className:"flex items-center space-x-2 pt-2",children:[(0,d.jsx)(p.S,{id:"persistToAgent",checked:J,onCheckedChange:a=>K(!0===a),disabled:H}),(0,d.jsx)(i.J,{htmlFor:"persistToAgent",className:"text-sm font-normal cursor-pointer",children:"Save to agent configuration file"})]})]}),(0,d.jsxs)(f.Es,{children:[(0,d.jsx)(f.HM,{asChild:!0,children:(0,d.jsx)(g.$,{type:"button",variant:"outline",disabled:H,children:"Cancel"})}),(0,d.jsx)(g.$,{type:"submit",form:"connectServerForm",disabled:H,children:H?"Connecting...":"Connect"})]})]})})}},34306:(a,b,c)=>{c.d(b,{L:()=>g,cn:()=>f});var d=c(82934),e=c(56098);function f(...a){return(0,e.QP)((0,d.$)(a))}function g(a,b,c=25){let d=b.toLowerCase(),e=a=>{if(!a)return 0;let b=new Date(a).getTime();return isNaN(b)?0:b};return[...a].sort((a,b)=>{let c=e(a.lastModified);return e(b.lastModified)-c}).filter(a=>(a.name||"").toLowerCase().includes(d)||a.uri.toLowerCase().includes(d)||(a.serverName||"").toLowerCase().includes(d)).slice(0,c)}},47030:(a,b,c)=>{c.d(b,{S:()=>h});var d=c(35270);c(4039);var e=c(6549),f=c(8822),g=c(34306);function h({className:a,...b}){return(0,d.jsx)(e.bL,{"data-slot":"checkbox",className:(0,g.cn)("peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",a),...b,children:(0,d.jsx)(e.C1,{"data-slot":"checkbox-indicator",className:"flex items-center justify-center text-current transition-none",children:(0,d.jsx)(f.A,{className:"size-3.5"})})})}},61295:(a,b,c)=>{c.d(b,{T:()=>f});var d=c(35270);c(4039);var e=c(34306);function f({className:a,...b}){return(0,d.jsx)("textarea",{"data-slot":"textarea",className:(0,e.cn)("border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",a),...b})}},74985:(a,b,c)=>{c.d(b,{bq:()=>l,eb:()=>n,gC:()=>m,l6:()=>j,yv:()=>k});var d=c(35270);c(4039);var e=c(12693),f=c(55994),g=c(8822),h=c(20675),i=c(34306);function j({...a}){return(0,d.jsx)(e.bL,{"data-slot":"select",...a})}function k({...a}){return(0,d.jsx)(e.WT,{"data-slot":"select-value",...a})}function l({className:a,size:b="default",children:c,...g}){return(0,d.jsxs)(e.l9,{"data-slot":"select-trigger","data-size":b,className:(0,i.cn)("border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",a),...g,children:[c,(0,d.jsx)(e.In,{asChild:!0,children:(0,d.jsx)(f.A,{className:"size-4 opacity-50"})})]})}function m({className:a,children:b,position:c="popper",...f}){return(0,d.jsx)(e.ZL,{children:(0,d.jsxs)(e.UC,{"data-slot":"select-content",className:(0,i.cn)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md","popper"===c&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",a),position:c,...f,children:[(0,d.jsx)(o,{}),(0,d.jsx)(e.LM,{className:(0,i.cn)("p-1","popper"===c&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"),children:b}),(0,d.jsx)(p,{})]})})}function n({className:a,children:b,...c}){return(0,d.jsxs)(e.q7,{"data-slot":"select-item",className:(0,i.cn)("focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",a),...c,children:[(0,d.jsx)("span",{className:"absolute right-2 flex size-3.5 items-center justify-center",children:(0,d.jsx)(e.VF,{children:(0,d.jsx)(g.A,{className:"size-4"})})}),(0,d.jsx)(e.p4,{children:b})]})}function o({className:a,...b}){return(0,d.jsx)(e.PP,{"data-slot":"select-scroll-up-button",className:(0,i.cn)("flex cursor-default items-center justify-center py-1",a),...b,children:(0,d.jsx)(h.A,{className:"size-4"})})}function p({className:a,...b}){return(0,d.jsx)(e.wn,{"data-slot":"select-scroll-down-button",className:(0,i.cn)("flex cursor-default items-center justify-center py-1",a),...b,children:(0,d.jsx)(f.A,{className:"size-4"})})}},79487:(a,b,c)=>{c.d(b,{Fc:()=>h,TN:()=>j,XL:()=>i});var d=c(35270);c(4039);var e=c(73102),f=c(34306);let g=(0,e.F)("relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current",{variants:{variant:{default:"bg-card text-card-foreground",destructive:"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90"}},defaultVariants:{variant:"default"}});function h({className:a,variant:b,...c}){return(0,d.jsx)("div",{"data-slot":"alert",role:"alert",className:(0,f.cn)(g({variant:b}),a),...c})}function i({className:a,...b}){return(0,d.jsx)("div",{"data-slot":"alert-title",className:(0,f.cn)("col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight",a),...b})}function j({className:a,...b}){return(0,d.jsx)("div",{"data-slot":"alert-description",className:(0,f.cn)("text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed",a),...b})}},89615:(a,b,c)=>{c.d(b,{w:()=>h,y:()=>g});let d=null,e=null;async function f(){let a=await fetch("/api/prompts");if(!a.ok){let b=await a.text().catch(()=>"");throw Error(b?`HTTP ${a.status}: ${b}`:`HTTP ${a.status}`)}let b=await a.json();if(!b||!Array.isArray(b.prompts))throw Error("Invalid prompt response shape");return b.prompts}async function g(a){return(a?.forceRefresh&&(d=null),d)?d:(e||(e=f().then(a=>(d=a,a)).finally(()=>{e=null})),e)}function h(){d=null,e=null}},94504:(a,b,c)=>{c.d(b,{E:()=>h});var d=c(35270);c(4039);var e=c(73102),f=c(34306);let g=(0,e.F)("inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function h({className:a,variant:b,...c}){return(0,d.jsx)("div",{className:(0,f.cn)(g({variant:b}),a),...c})}},95409:(a,b,c)=>{c.d(b,{Cf:()=>m,Es:()=>o,HM:()=>k,L3:()=>p,c7:()=>n,lG:()=>h,rr:()=>q,zM:()=>i});var d=c(35270);c(4039);var e=c(78494),f=c(41810),g=c(34306);function h({...a}){return(0,d.jsx)(e.bL,{"data-slot":"dialog",...a})}function i({...a}){return(0,d.jsx)(e.l9,{"data-slot":"dialog-trigger",...a})}function j({...a}){return(0,d.jsx)(e.ZL,{"data-slot":"dialog-portal",...a})}function k({...a}){return(0,d.jsx)(e.bm,{"data-slot":"dialog-close",...a})}function l({className:a,...b}){return(0,d.jsx)(e.hJ,{"data-slot":"dialog-overlay",className:(0,g.cn)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",a),...b})}function m({className:a,children:b,hideCloseButton:c=!1,...h}){return(0,d.jsxs)(j,{"data-slot":"dialog-portal",children:[(0,d.jsx)(l,{}),(0,d.jsxs)(e.UC,{"data-slot":"dialog-content",className:(0,g.cn)("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-150 sm:max-w-lg",a),...h,children:[b,!c&&(0,d.jsxs)(e.bm,{className:"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",children:[(0,d.jsx)(f.A,{}),(0,d.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})}function n({className:a,...b}){return(0,d.jsx)("div",{"data-slot":"dialog-header",className:(0,g.cn)("flex flex-col gap-2 text-center sm:text-left",a),...b})}function o({className:a,...b}){return(0,d.jsx)("div",{"data-slot":"dialog-footer",className:(0,g.cn)("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",a),...b})}function p({className:a,...b}){return(0,d.jsx)(e.hE,{"data-slot":"dialog-title",className:(0,g.cn)("text-lg leading-none font-semibold",a),...b})}function q({className:a,...b}){return(0,d.jsx)(e.VY,{"data-slot":"dialog-description",className:(0,g.cn)("text-muted-foreground text-sm",a),...b})}},98023:(a,b,c)=>{c.d(b,{J:()=>g});var d=c(35270);c(4039);var e=c(94916),f=c(34306);function g({className:a,...b}){return(0,d.jsx)(e.b,{"data-slot":"label",className:(0,f.cn)("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",a),...b})}}};