@inkeep/agents-manage-ui 0.8.7 → 0.10.1

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 (187) hide show
  1. package/.next/standalone/agents-manage-ui/.next/BUILD_ID +1 -1
  2. package/.next/standalone/agents-manage-ui/.next/app-build-manifest.json +186 -186
  3. package/.next/standalone/agents-manage-ui/.next/app-path-routes-manifest.json +6 -6
  4. package/.next/standalone/agents-manage-ui/.next/build-manifest.json +5 -5
  5. package/.next/standalone/agents-manage-ui/.next/prerender-manifest.json +15 -15
  6. package/.next/standalone/agents-manage-ui/.next/react-loadable-manifest.json +17 -17
  7. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/page.js +1 -1
  8. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/page_client-reference-manifest.js +1 -1
  9. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/api-keys/page.js +3 -3
  10. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/api-keys/page_client-reference-manifest.js +1 -1
  11. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifact-components/[artifactComponentId]/page.js +1 -1
  12. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifact-components/[artifactComponentId]/page.js.nft.json +1 -1
  13. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifact-components/[artifactComponentId]/page_client-reference-manifest.js +1 -1
  14. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifact-components/new/page.js +2 -2
  15. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifact-components/new/page.js.nft.json +1 -1
  16. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifact-components/new/page_client-reference-manifest.js +1 -1
  17. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifact-components/page.js +2 -2
  18. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifact-components/page_client-reference-manifest.js +1 -1
  19. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page.js +2 -2
  20. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page.js.nft.json +1 -1
  21. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page_client-reference-manifest.js +1 -1
  22. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page.js +2 -2
  23. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page.js.nft.json +1 -1
  24. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page_client-reference-manifest.js +1 -1
  25. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/page.js +1 -1
  26. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/page_client-reference-manifest.js +1 -1
  27. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page.js +2 -2
  28. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page.js.nft.json +1 -1
  29. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page_client-reference-manifest.js +1 -1
  30. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/page.js +2 -2
  31. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/page.js.nft.json +1 -1
  32. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/page_client-reference-manifest.js +1 -1
  33. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/page.js +2 -2
  34. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/page_client-reference-manifest.js +1 -1
  35. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/data-components/[dataComponentId]/page.js +2 -2
  36. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/data-components/[dataComponentId]/page.js.nft.json +1 -1
  37. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/data-components/[dataComponentId]/page_client-reference-manifest.js +1 -1
  38. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/data-components/new/page.js +2 -2
  39. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/data-components/new/page.js.nft.json +1 -1
  40. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/data-components/new/page_client-reference-manifest.js +1 -1
  41. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/data-components/page.js +2 -2
  42. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/data-components/page_client-reference-manifest.js +1 -1
  43. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/[graphId]/page.js +2 -2
  44. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/[graphId]/page.js.nft.json +1 -1
  45. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/[graphId]/page_client-reference-manifest.js +1 -1
  46. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/new/page.js +1 -1
  47. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/new/page.js.nft.json +1 -1
  48. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/new/page_client-reference-manifest.js +1 -1
  49. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/page.js +2 -2
  50. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/page_client-reference-manifest.js +1 -1
  51. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page.js +2 -2
  52. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page.js.nft.json +1 -1
  53. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page_client-reference-manifest.js +1 -1
  54. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page.js +1 -1
  55. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page_client-reference-manifest.js +1 -1
  56. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/new/page.js +2 -2
  57. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/new/page.js.nft.json +1 -1
  58. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/new/page_client-reference-manifest.js +1 -1
  59. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/page.js +2 -2
  60. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/page_client-reference-manifest.js +1 -1
  61. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/page.js +2 -2
  62. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/page_client-reference-manifest.js +1 -1
  63. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/settings/page.js +2 -2
  64. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/settings/page_client-reference-manifest.js +1 -1
  65. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page.js +2 -2
  66. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page.js.nft.json +1 -1
  67. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page_client-reference-manifest.js +1 -1
  68. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page.js +2 -2
  69. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page_client-reference-manifest.js +1 -1
  70. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/page.js +3 -3
  71. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/page.js.nft.json +1 -1
  72. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/page_client-reference-manifest.js +1 -1
  73. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/page.js +3 -3
  74. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/page_client-reference-manifest.js +1 -1
  75. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found/page.js +1 -1
  76. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  77. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found.html +1 -1
  78. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found.rsc +9 -9
  79. package/.next/standalone/agents-manage-ui/.next/server/app/api/signoz/conversations/[conversationId]/route.js +1 -1
  80. package/.next/standalone/agents-manage-ui/.next/server/app/api/signoz/conversations/[conversationId]/route_client-reference-manifest.js +1 -1
  81. package/.next/standalone/agents-manage-ui/.next/server/app/api/signoz/route_client-reference-manifest.js +1 -1
  82. package/.next/standalone/agents-manage-ui/.next/server/app/page.js +2 -2
  83. package/.next/standalone/agents-manage-ui/.next/server/app/page_client-reference-manifest.js +1 -1
  84. package/.next/standalone/agents-manage-ui/.next/server/app-paths-manifest.json +6 -6
  85. package/.next/standalone/agents-manage-ui/.next/server/chunks/2539.js +8 -8
  86. package/.next/standalone/agents-manage-ui/.next/server/chunks/{7929.js → 3251.js} +1 -1
  87. package/.next/standalone/agents-manage-ui/.next/server/chunks/3424.js +1 -0
  88. package/.next/standalone/agents-manage-ui/.next/server/chunks/3547.js +1 -1
  89. package/.next/standalone/agents-manage-ui/.next/server/chunks/3859.js +19 -3
  90. package/.next/standalone/agents-manage-ui/.next/server/chunks/425.js +1 -1
  91. package/.next/standalone/agents-manage-ui/.next/server/chunks/5232.js +1 -1
  92. package/.next/standalone/agents-manage-ui/.next/server/chunks/5294.js +1 -1
  93. package/.next/standalone/agents-manage-ui/.next/server/chunks/6116.js +1 -1
  94. package/.next/standalone/agents-manage-ui/.next/server/chunks/6777.js +1 -0
  95. package/.next/standalone/agents-manage-ui/.next/server/chunks/679.js +1 -1
  96. package/.next/standalone/agents-manage-ui/.next/server/chunks/6957.js +2 -2
  97. package/.next/standalone/agents-manage-ui/.next/server/chunks/720.js +1 -1
  98. package/.next/standalone/agents-manage-ui/.next/server/chunks/726.js +1 -1
  99. package/.next/standalone/agents-manage-ui/.next/server/chunks/{3404.js → 7965.js} +1 -1
  100. package/.next/standalone/agents-manage-ui/.next/server/chunks/8284.js +1 -0
  101. package/.next/standalone/agents-manage-ui/.next/server/chunks/8444.js +1 -0
  102. package/.next/standalone/agents-manage-ui/.next/server/chunks/8449.js +2 -2
  103. package/.next/standalone/agents-manage-ui/.next/server/chunks/{9772.js → 9093.js} +2 -2
  104. package/.next/standalone/agents-manage-ui/.next/server/chunks/9235.js +1 -1
  105. package/.next/standalone/agents-manage-ui/.next/server/middleware-build-manifest.js +1 -1
  106. package/.next/standalone/agents-manage-ui/.next/server/middleware-react-loadable-manifest.js +1 -1
  107. package/.next/standalone/agents-manage-ui/.next/server/pages/404.html +1 -1
  108. package/.next/standalone/agents-manage-ui/.next/server/pages/500.html +1 -1
  109. package/.next/standalone/agents-manage-ui/.next/server/server-reference-manifest.js +1 -1
  110. package/.next/standalone/agents-manage-ui/.next/server/server-reference-manifest.json +1 -1
  111. package/.next/standalone/agents-manage-ui/.next/static/chunks/{1016-065c7c4004850849.js → 1231-4cd082da6edbfe60.js} +2 -2
  112. package/.next/standalone/agents-manage-ui/.next/static/chunks/1348-d5a92ab92bcff5e2.js +1 -0
  113. package/.next/standalone/agents-manage-ui/.next/static/chunks/2063-51504d0b4f82277e.js +1 -0
  114. package/.next/standalone/agents-manage-ui/.next/static/chunks/2823-d5aa2a7ec93a8174.js +1 -0
  115. package/.next/standalone/agents-manage-ui/.next/static/chunks/{4090-041bb034eaa7be6c.js → 4160-58edceff96697674.js} +1 -1
  116. package/.next/standalone/agents-manage-ui/.next/static/chunks/{4229.a3af860481552dea.js → 4229.8460547691a15bed.js} +1 -1
  117. package/.next/standalone/agents-manage-ui/.next/static/chunks/{6497-d25dae53e4f0b68a.js → 6497-95887fafcaf35d31.js} +1 -1
  118. package/.next/standalone/agents-manage-ui/.next/static/chunks/7167-5ae757a48267eecd.js +1 -0
  119. package/.next/standalone/agents-manage-ui/.next/static/chunks/{8531.15d8d4ac923abbfd.js → 8531.1dafd6b1ecb8f349.js} +1 -1
  120. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/api-keys/page-4293910b444cc135.js +1 -0
  121. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifact-components/[artifactComponentId]/{page-49ed1a294d705e2b.js → page-c3ed0ba99186d0d6.js} +1 -1
  122. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifact-components/new/{page-49ed1a294d705e2b.js → page-c3ed0ba99186d0d6.js} +1 -1
  123. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifact-components/{page-620d86f21e1681e4.js → page-874c135f55b0ca0f.js} +1 -1
  124. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page-ba0f0ba1b92291e8.js +1 -0
  125. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page-8dbbb7c3696c4b18.js +1 -0
  126. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page-62a5f6c00f915faf.js +1 -0
  127. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/page-71df4b4a01fc0dd1.js +1 -0
  128. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/data-components/[dataComponentId]/{page-2a339c25cf52f458.js → page-0f4fd1d8b7db8265.js} +1 -1
  129. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/data-components/new/{page-2a339c25cf52f458.js → page-0f4fd1d8b7db8265.js} +1 -1
  130. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/data-components/page-318381630d4f6030.js +1 -0
  131. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/graphs/[graphId]/{page-83f03615dc11014b.js → page-09211eb5d072f78c.js} +1 -1
  132. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/graphs/new/{page-da8ddb54272917ab.js → page-dedc24c2a11b92e3.js} +1 -1
  133. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/graphs/page-0302c606381a745f.js +1 -0
  134. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/{page-c65e011074a1fcce.js → page-46c65d299589f5ee.js} +1 -1
  135. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/{page-aa753859a6cd98f8.js → page-d4d01b9c19e6a359.js} +1 -1
  136. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/new/{page-b1024549b5350223.js → page-6c3986967816a7e7.js} +1 -1
  137. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/page-3eb5183a82b07c23.js +1 -0
  138. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/settings/{page-d9b96584b3200c5d.js → page-3e56a25e59c5c30e.js} +1 -1
  139. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/page-250e186f12cac2f8.js +1 -0
  140. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/page-3e96b2df7be28113.js +1 -0
  141. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/layout-238b7db4cb9e8101.js +1 -0
  142. package/.next/standalone/agents-manage-ui/.next/static/chunks/{webpack-4a10374a948c9803.js → webpack-211ed257f0444458.js} +1 -1
  143. package/.next/standalone/agents-manage-ui/.next/static/css/2f1b486594d6d68b.css +1 -0
  144. package/.next/standalone/agents-manage-ui/package.json +1 -1
  145. package/.next/standalone/package.json +1 -6
  146. package/.next/standalone/packages/agents-core/package.json +5 -3
  147. package/package.json +4 -4
  148. package/src/app/api/signoz/conversations/[conversationId]/route.ts +20 -4
  149. package/src/components/graph/configuration/node-types.tsx +6 -0
  150. package/src/components/graph/graph.tsx +109 -38
  151. package/src/components/graph/nodes/mcp-node.tsx +3 -2
  152. package/src/components/graph/playground/custom-headers-dialog.tsx +1 -1
  153. package/src/components/graph/playground/playground.tsx +48 -17
  154. package/src/components/graph/sidepane/nodes/mcp-node-editor.tsx +14 -22
  155. package/src/components/graph/sidepane/nodes/mcp-selector/mcp-selector.tsx +1 -1
  156. package/src/components/traces/timeline/activity-timeline.tsx +3 -0
  157. package/src/components/traces/timeline/render-panel-content.tsx +63 -9
  158. package/src/components/traces/timeline/timeline-item.tsx +19 -1
  159. package/src/components/traces/timeline/timeline-wrapper.tsx +12 -7
  160. package/src/components/traces/timeline/types.ts +4 -0
  161. package/src/features/graph/domain/deserialize.ts +22 -53
  162. package/src/features/graph/domain/serialize.ts +15 -6
  163. package/src/features/graph/state/use-graph-store.ts +37 -13
  164. package/src/lib/utils/mcp-urls.ts +1 -2
  165. package/src/lib/utils/orphaned-tools-detector.ts +76 -50
  166. package/.next/standalone/agents-manage-ui/.next/server/chunks/3086.js +0 -1
  167. package/.next/standalone/agents-manage-ui/.next/server/chunks/581.js +0 -1
  168. package/.next/standalone/agents-manage-ui/.next/server/chunks/5956.js +0 -1
  169. package/.next/standalone/agents-manage-ui/.next/server/chunks/6314.js +0 -1
  170. package/.next/standalone/agents-manage-ui/.next/static/chunks/1038-54d48d86de704a66.js +0 -1
  171. package/.next/standalone/agents-manage-ui/.next/static/chunks/2063-fdc0702cbb1a1a89.js +0 -1
  172. package/.next/standalone/agents-manage-ui/.next/static/chunks/7167-62fb01db4bf7c93f.js +0 -1
  173. package/.next/standalone/agents-manage-ui/.next/static/chunks/9015-a88871b0493fa6a4.js +0 -1
  174. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/api-keys/page-d4772fb2fe52d502.js +0 -1
  175. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page-1adc6c6811c5224b.js +0 -1
  176. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page-3a6d23feb7e81c60.js +0 -1
  177. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page-943ca6e800bfb42e.js +0 -1
  178. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/page-d98ce43ab8686e03.js +0 -1
  179. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/data-components/page-2b56d1bb8facba92.js +0 -1
  180. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/graphs/page-e43da749deafb4dd.js +0 -1
  181. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/page-15d74bf9095a3a5f.js +0 -1
  182. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/page-989cf7b49617d609.js +0 -1
  183. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/page-3610d41580ae65f5.js +0 -1
  184. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/layout-62da969ed126dce3.js +0 -1
  185. package/.next/standalone/agents-manage-ui/.next/static/css/98c416ff19152db0.css +0 -1
  186. /package/.next/standalone/agents-manage-ui/.next/static/{2w7Mtrd1QqrH5dFKfhc0T → b4zppSKvfyEEhDL6m73WI}/_buildManifest.js +0 -0
  187. /package/.next/standalone/agents-manage-ui/.next/static/{2w7Mtrd1QqrH5dFKfhc0T → b4zppSKvfyEEhDL6m73WI}/_ssgManifest.js +0 -0
@@ -253,7 +253,9 @@ export function TimelineWrapper({
253
253
 
254
254
  const closePanel = () => {
255
255
  setPanelVisible(false);
256
- setTimeout(() => setSelected(null), 300);
256
+ setTimeout(() => {
257
+ setSelected(null);
258
+ }, 300);
257
259
  };
258
260
 
259
261
  const findSpanById = (id?: string) =>
@@ -355,12 +357,13 @@ export function TimelineWrapper({
355
357
  <StickToBottom.Content>
356
358
  <ActivityTimeline
357
359
  activities={sortedActivities}
358
- onSelect={(activity) =>
360
+ onSelect={(activity) => {
359
361
  setSelected({
360
362
  type: determinePanelType(activity),
361
363
  item: activity,
362
- })
363
- }
364
+ });
365
+ }}
366
+ selectedActivityId={selected?.item?.id}
364
367
  collapsedAiMessages={collapsedAiMessages}
365
368
  onToggleAiMessageCollapse={toggleAiMessageCollapse}
366
369
  />
@@ -388,12 +391,13 @@ export function TimelineWrapper({
388
391
  <div className="h-full overflow-y-auto scrollbar-thin scrollbar-thumb-muted-foreground/30 scrollbar-track-transparent dark:scrollbar-thumb-muted-foreground/50">
389
392
  <ActivityTimeline
390
393
  activities={sortedActivities}
391
- onSelect={(activity) =>
394
+ onSelect={(activity) => {
392
395
  setSelected({
393
396
  type: determinePanelType(activity),
394
397
  item: activity,
395
- })
396
- }
398
+ });
399
+ }}
400
+ selectedActivityId={selected?.item?.id}
397
401
  collapsedAiMessages={collapsedAiMessages}
398
402
  onToggleAiMessageCollapse={toggleAiMessageCollapse}
399
403
  />
@@ -407,6 +411,7 @@ export function TimelineWrapper({
407
411
  {selected && (
408
412
  <ResizablePanel order={3}>
409
413
  <ActivityDetailsSidePane
414
+ key={selected.item.id}
410
415
  title={panelTitle(selected)}
411
416
  open={panelVisible}
412
417
  onClose={closePanel}
@@ -73,6 +73,9 @@ export interface ActivityItem {
73
73
  aiStreamTextModel?: string;
74
74
  aiStreamTextProvider?: string;
75
75
  aiStreamTextOperationId?: string;
76
+ toolCallArgs?: string;
77
+ toolCallResult?: string;
78
+ aiResponseText?: string;
76
79
  }
77
80
 
78
81
  export interface ToolCall {
@@ -128,6 +131,7 @@ export interface ConversationDetail {
128
131
  data: Record<string, any>;
129
132
  }>;
130
133
  mcpToolErrors?: Array<{
134
+ id: string;
131
135
  spanId: string;
132
136
  toolName: string;
133
137
  error: string;
@@ -206,59 +206,28 @@ export function deserializeGraphData(data: FullGraphDefinition): TransformResult
206
206
  const agent = data.agents[agentId];
207
207
  // Check if agent has canUse property (internal agents)
208
208
  if ('canUse' in agent && agent.canUse && agent.canUse.length > 0) {
209
- // Only create tool nodes if tools data is available in graph (backward compatibility)
210
- const toolsData = (data as any).tools;
211
- if (toolsData) {
212
- for (const canUseItem of agent.canUse) {
213
- const toolId = canUseItem.toolId;
214
- const tool = toolsData[toolId];
215
- if (!tool) {
216
- // eslint-disable-next-line no-console
217
- console.warn(`Tool with ID ${toolId} not found in tools object`);
218
- continue;
219
- }
220
- const toolNodeId = nanoid();
221
- const toolNode: Node = {
222
- id: toolNodeId,
223
- type: NodeType.MCP,
224
- position: { x: 0, y: 0 },
225
- data: { toolId: tool.id },
226
- };
227
- nodes.push(toolNode);
228
-
229
- const agentToToolEdge: Edge = {
230
- id: `edge-${toolNodeId}-${agentId}`,
231
- type: EdgeType.Default,
232
- source: agentId,
233
- sourceHandle: agentNodeSourceHandleId,
234
- target: toolNodeId,
235
- targetHandle: mcpNodeHandleId,
236
- };
237
- edges.push(agentToToolEdge);
238
- }
239
- } else {
240
- // Tools are project-scoped - just store the tool ID
241
- for (const canUseItem of agent.canUse) {
242
- const toolId = canUseItem.toolId;
243
- const toolNodeId = nanoid();
244
- const toolNode: Node = {
245
- id: toolNodeId,
246
- type: NodeType.MCP,
247
- position: { x: 0, y: 0 },
248
- data: { toolId },
249
- };
250
- nodes.push(toolNode);
251
-
252
- const agentToToolEdge: Edge = {
253
- id: `edge-${toolNodeId}-${agentId}`,
254
- type: EdgeType.Default,
255
- source: agentId,
256
- sourceHandle: agentNodeSourceHandleId,
257
- target: toolNodeId,
258
- targetHandle: mcpNodeHandleId,
259
- };
260
- edges.push(agentToToolEdge);
261
- }
209
+ // Tools are project-scoped - create nodes from canUse items
210
+ for (const canUseItem of agent.canUse) {
211
+ const toolId = canUseItem.toolId;
212
+ const toolNodeId = nanoid();
213
+ const relationshipId = canUseItem.agentToolRelationId;
214
+ const toolNode: Node = {
215
+ id: toolNodeId,
216
+ type: NodeType.MCP,
217
+ position: { x: 0, y: 0 },
218
+ data: { toolId, agentId, relationshipId },
219
+ };
220
+ nodes.push(toolNode);
221
+
222
+ const agentToToolEdge: Edge = {
223
+ id: `edge-${toolNodeId}-${agentId}`,
224
+ type: EdgeType.Default,
225
+ source: agentId,
226
+ sourceHandle: agentNodeSourceHandleId,
227
+ target: toolNodeId,
228
+ targetHandle: mcpNodeHandleId,
229
+ };
230
+ edges.push(agentToToolEdge);
262
231
  }
263
232
  }
264
233
  }
@@ -120,6 +120,7 @@ export function serializeGraphData(
120
120
  toolId: string;
121
121
  toolSelection?: string[] | null;
122
122
  headers?: Record<string, string>;
123
+ agentToolRelationId?: string;
123
124
  }> = [];
124
125
 
125
126
  // Find edges from this agent to MCP nodes
@@ -140,6 +141,9 @@ export function serializeGraphData(
140
141
  const tempSelectedTools = (mcpNode.data as any).tempSelectedTools;
141
142
  let toolSelection: string[] | null = null;
142
143
 
144
+ // Get the relationshipId from the MCP node first
145
+ const relationshipId = (mcpNode.data as any).relationshipId;
146
+
143
147
  if (tempSelectedTools !== undefined) {
144
148
  // User has made changes to tool selection in the UI
145
149
  if (Array.isArray(tempSelectedTools)) {
@@ -149,9 +153,11 @@ export function serializeGraphData(
149
153
  }
150
154
  } else {
151
155
  // No changes made to tool selection - preserve existing selection
152
- if (agentToolConfigLookup?.[agentId]?.[toolId]?.toolSelection) {
153
- // Get existing selection from saved data
154
- toolSelection = agentToolConfigLookup[agentId][toolId].toolSelection;
156
+ const existingConfig = relationshipId
157
+ ? agentToolConfigLookup?.[agentId]?.[relationshipId]
158
+ : null;
159
+ if (existingConfig?.toolSelection) {
160
+ toolSelection = existingConfig.toolSelection;
155
161
  } else {
156
162
  // Default to all tools selected when no existing data found
157
163
  toolSelection = null;
@@ -171,9 +177,11 @@ export function serializeGraphData(
171
177
  }
172
178
  } else {
173
179
  // No changes made to headers - preserve existing headers
174
- if (agentToolConfigLookup?.[agentId]?.[toolId]?.headers) {
175
- // Get existing headers from saved data
176
- toolHeaders = agentToolConfigLookup[agentId][toolId].headers;
180
+ const existingConfig = relationshipId
181
+ ? agentToolConfigLookup?.[agentId]?.[relationshipId]
182
+ : null;
183
+ if (existingConfig?.headers) {
184
+ toolHeaders = existingConfig.headers;
177
185
  }
178
186
  }
179
187
 
@@ -181,6 +189,7 @@ export function serializeGraphData(
181
189
  toolId,
182
190
  toolSelection,
183
191
  headers: toolHeaders,
192
+ ...(relationshipId && { agentToolRelationId: relationshipId }),
184
193
  });
185
194
  }
186
195
  }
@@ -3,6 +3,8 @@ import { addEdge, applyEdgeChanges, applyNodeChanges } from '@xyflow/react';
3
3
  import { create } from 'zustand';
4
4
  import { devtools } from 'zustand/middleware';
5
5
  import type { GraphMetadata } from '@/components/graph/configuration/graph-types';
6
+ import { mcpNodeHandleId, NodeType } from '@/components/graph/configuration/node-types';
7
+ import type { AgentToolConfigLookup } from '@/components/graph/graph';
6
8
  import type { ArtifactComponent } from '@/lib/api/artifact-components';
7
9
  import type { DataComponent } from '@/lib/api/data-components';
8
10
  import type { MCPTool } from '@/lib/types/tools';
@@ -17,7 +19,7 @@ type GraphStateData = {
17
19
  dataComponentLookup: Record<string, DataComponent>;
18
20
  artifactComponentLookup: Record<string, ArtifactComponent>;
19
21
  toolLookup: Record<string, MCPTool>;
20
- selectedToolsLookup: Record<string, Record<string, string[]>>;
22
+ agentToolConfigLookup: AgentToolConfigLookup;
21
23
  dirty: boolean;
22
24
  history: HistoryEntry[];
23
25
  future: HistoryEntry[];
@@ -33,12 +35,12 @@ type GraphState = GraphStateData & {
33
35
  dataComponentLookup?: Record<string, DataComponent>,
34
36
  artifactComponentLookup?: Record<string, ArtifactComponent>,
35
37
  toolLookup?: Record<string, MCPTool>,
36
- selectedToolsLookup?: Record<string, Record<string, string[]>>
38
+ agentToolConfigLookup?: AgentToolConfigLookup
37
39
  ): void;
38
40
  setDataComponentLookup(dataComponentLookup: Record<string, DataComponent>): void;
39
41
  setArtifactComponentLookup(artifactComponentLookup: Record<string, ArtifactComponent>): void;
40
42
  setToolLookup(toolLookup: Record<string, MCPTool>): void;
41
- setSelectedToolsLookup(selectedToolsLookup: Record<string, Record<string, string[]>>): void;
43
+ setAgentToolConfigLookup(agentToolConfigLookup: AgentToolConfigLookup): void;
42
44
  setNodes(updater: (prev: Node[]) => Node[]): void;
43
45
  setEdges(updater: (prev: Edge[]) => Edge[]): void;
44
46
  onNodesChange(changes: NodeChange[]): void;
@@ -82,7 +84,7 @@ export const useGraphStore = create<GraphState>()(
82
84
  dataComponentLookup: {},
83
85
  artifactComponentLookup: {},
84
86
  toolLookup: {},
85
- selectedToolsLookup: {},
87
+ agentToolConfigLookup: {},
86
88
  dirty: false,
87
89
  history: [],
88
90
  future: [],
@@ -95,7 +97,7 @@ export const useGraphStore = create<GraphState>()(
95
97
  dataComponentLookup = {},
96
98
  artifactComponentLookup = {},
97
99
  toolLookup = {},
98
- selectedToolsLookup = {}
100
+ agentToolConfigLookup = {}
99
101
  ) {
100
102
  set({
101
103
  nodes,
@@ -104,7 +106,7 @@ export const useGraphStore = create<GraphState>()(
104
106
  dataComponentLookup,
105
107
  artifactComponentLookup,
106
108
  toolLookup,
107
- selectedToolsLookup,
109
+ agentToolConfigLookup,
108
110
  dirty: false,
109
111
  history: [],
110
112
  future: [],
@@ -121,8 +123,8 @@ export const useGraphStore = create<GraphState>()(
121
123
  setToolLookup(toolLookup) {
122
124
  set({ toolLookup });
123
125
  },
124
- setSelectedToolsLookup(selectedToolsLookup) {
125
- set({ selectedToolsLookup });
126
+ setAgentToolConfigLookup(agentToolConfigLookup) {
127
+ set({ agentToolConfigLookup });
126
128
  },
127
129
  setNodes(updater) {
128
130
  set((state) => ({ nodes: updater(state.nodes) }));
@@ -158,11 +160,33 @@ export const useGraphStore = create<GraphState>()(
158
160
  (change) => change.type === 'remove' || change.type === 'add' || change.type === 'replace'
159
161
  );
160
162
 
161
- set((state) => ({
162
- history: [...state.history, { nodes: state.nodes, edges: state.edges }],
163
- edges: applyEdgeChanges(changes, state.edges),
164
- dirty: hasModifyingChange ? true : state.dirty,
165
- }));
163
+ set((state) => {
164
+ // Check for edge removals that disconnect agent from MCP node
165
+ const removeChanges = changes.filter((change) => change.type === 'remove');
166
+ let updatedNodes = state.nodes;
167
+
168
+ for (const removeChange of removeChanges) {
169
+ const edgeToRemove = state.edges.find((e) => e.id === removeChange.id);
170
+ if (edgeToRemove && edgeToRemove.targetHandle === mcpNodeHandleId) {
171
+ // Find the target MCP node and clear its agentId
172
+ const mcpNode = state.nodes.find((n) => n.id === edgeToRemove.target);
173
+ if (mcpNode && mcpNode.type === NodeType.MCP) {
174
+ updatedNodes = updatedNodes.map((n) =>
175
+ n.id === mcpNode.id
176
+ ? { ...n, data: { ...n.data, agentId: null, relationshipId: null } }
177
+ : n
178
+ );
179
+ }
180
+ }
181
+ }
182
+
183
+ return {
184
+ history: [...state.history, { nodes: state.nodes, edges: state.edges }],
185
+ nodes: updatedNodes,
186
+ edges: applyEdgeChanges(changes, state.edges),
187
+ dirty: hasModifyingChange ? true : state.dirty,
188
+ };
189
+ });
166
190
  },
167
191
  onConnect(connection) {
168
192
  set((state) => ({ edges: addEdge(connection as any, state.edges) }));
@@ -52,8 +52,7 @@ export function getOAuthLoginUrl({
52
52
  );
53
53
  }
54
54
 
55
- // Build URL with proper encoding
56
- const url = `${INKEEP_AGENTS_MANAGE_API_URL}/tenants/${encodeURIComponent(tenantId)}/projects/${encodeURIComponent(projectId)}/tools/${encodeURIComponent(id)}/oauth-login`;
55
+ const url = `${INKEEP_AGENTS_MANAGE_API_URL}/oauth/login?tenantId=${encodeURIComponent(tenantId)}&projectId=${encodeURIComponent(projectId)}&toolId=${encodeURIComponent(id)}`;
57
56
 
58
57
  // Verify the final URL starts with our expected base
59
58
  if (!url.startsWith(INKEEP_AGENTS_MANAGE_API_URL)) {
@@ -1,16 +1,16 @@
1
- import type { Node } from '@xyflow/react';
1
+ import type { Edge, Node } from '@xyflow/react';
2
2
  import { getActiveTools } from '@/app/utils/active-tools';
3
3
  import type { MCPNodeData } from '@/components/graph/configuration/node-types';
4
4
  import { NodeType } from '@/components/graph/configuration/node-types';
5
5
  import type { MCPTool } from '@/lib/types/tools';
6
6
 
7
- export interface OrphanedToolsInfo {
7
+ interface OrphanedToolsInfo {
8
8
  nodeId: string;
9
9
  nodeName: string;
10
10
  orphanedTools: string[];
11
11
  }
12
12
 
13
- export interface OrphanedToolsDetectionResult {
13
+ interface OrphanedToolsDetectionResult {
14
14
  hasOrphanedTools: boolean;
15
15
  orphanedToolsByNode: OrphanedToolsInfo[];
16
16
  totalOrphanedCount: number;
@@ -22,62 +22,26 @@ export interface OrphanedToolsDetectionResult {
22
22
  */
23
23
  export function detectOrphanedToolsAndGetWarning(
24
24
  nodes: Node[],
25
- selectedToolsLookup: Record<string, Record<string, string[]>>,
25
+ agentToolConfigLookup: Record<
26
+ string,
27
+ Record<string, { toolId: string; toolSelection?: string[] }>
28
+ >,
26
29
  toolLookup: Record<string, MCPTool>
27
30
  ): string | null {
28
- const result = detectOrphanedToolsInGraph(nodes, selectedToolsLookup, toolLookup);
31
+ const result = detectOrphanedToolsInGraph(nodes, agentToolConfigLookup, toolLookup);
29
32
  return result.hasOrphanedTools ? createOrphanedToolsWarningMessage(result) : null;
30
33
  }
31
34
 
32
- /**
33
- * Extract shared logic for getting selected tools for a node
34
- * This replaces the duplicated logic between detector and MCP node editor
35
- */
36
- export function getCurrentSelectedToolsForNode(
37
- node: { data: MCPNodeData },
38
- selectedToolsLookup: Record<string, Record<string, string[]>>
39
- ): string[] | null {
40
- // First check if we have temporary selections stored on the node (from recent clicks)
41
- if ((node.data as any).tempSelectedTools !== undefined) {
42
- return (node.data as any).tempSelectedTools;
43
- }
44
-
45
- // Otherwise, get from the database/initial state
46
- const allSelectedTools = new Set<string>();
47
- let hasAnyData = false;
48
- let hasEmptyArray = false;
49
- let hasNullValue = false;
50
-
51
- Object.values(selectedToolsLookup).forEach((agentTools) => {
52
- const toolsForThisMCP = agentTools[node.data.toolId];
53
- if (toolsForThisMCP !== undefined) {
54
- hasAnyData = true;
55
- if (Array.isArray(toolsForThisMCP) && toolsForThisMCP.length === 0) {
56
- hasEmptyArray = true;
57
- } else if (toolsForThisMCP === null) {
58
- hasNullValue = true;
59
- } else if (Array.isArray(toolsForThisMCP)) {
60
- toolsForThisMCP.forEach((tool) => {
61
- allSelectedTools.add(tool);
62
- });
63
- }
64
- }
65
- });
66
-
67
- if (hasNullValue) return null;
68
- if (hasEmptyArray) return [];
69
- if (!hasAnyData) return null;
70
-
71
- return Array.from(allSelectedTools);
72
- }
73
-
74
35
  /**
75
36
  * Detects orphaned tools across all MCP nodes in the graph
76
37
  * Orphaned tools are tools that were selected but are no longer available in the MCP server
77
38
  */
78
- export function detectOrphanedToolsInGraph(
39
+ function detectOrphanedToolsInGraph(
79
40
  nodes: Node[],
80
- selectedToolsLookup: Record<string, Record<string, string[]>>,
41
+ agentToolConfigLookup: Record<
42
+ string,
43
+ Record<string, { toolId: string; toolSelection?: string[] }>
44
+ >,
81
45
  toolLookup: Record<string, MCPTool>
82
46
  ): OrphanedToolsDetectionResult {
83
47
  const orphanedToolsByNode: OrphanedToolsInfo[] = [];
@@ -94,7 +58,7 @@ export function detectOrphanedToolsInGraph(
94
58
  activeTools: toolData.config?.mcp?.activeTools,
95
59
  });
96
60
 
97
- const selectedTools = getCurrentSelectedToolsForNode(node, selectedToolsLookup);
61
+ const selectedTools = getCurrentSelectedToolsForNode(node, agentToolConfigLookup, []);
98
62
 
99
63
  // Find orphaned tools for this node
100
64
  const orphanedTools =
@@ -143,3 +107,65 @@ export function createOrphanedToolsWarningMessage(result: OrphanedToolsDetection
143
107
 
144
108
  return `${nodeCount} MCP servers have a total of ${toolCount} selected tools that are no longer available. These orphaned tools will not be available at runtime. Please update your tool selections.`;
145
109
  }
110
+
111
+ /**
112
+ * Enhanced lookup for selected tools - uses relationshipId for true isolation
113
+ */
114
+ export function getCurrentSelectedToolsForNode(
115
+ node: { data: MCPNodeData; id: string },
116
+ agentToolConfigLookup: Record<
117
+ string,
118
+ Record<string, { toolId: string; toolSelection?: string[] | null }>
119
+ >,
120
+ _edges: Edge[]
121
+ ): string[] | null {
122
+ // First check if we have temporary selections stored on the node (from recent clicks)
123
+ if ((node.data as any).tempSelectedTools !== undefined) {
124
+ return (node.data as any).tempSelectedTools;
125
+ }
126
+
127
+ // If node has relationshipId, find config by relationshipId
128
+ const relationshipId = (node.data as any).relationshipId;
129
+ if (relationshipId) {
130
+ for (const toolsMap of Object.values(agentToolConfigLookup)) {
131
+ const config = toolsMap[relationshipId];
132
+ if (config) {
133
+ return config.toolSelection || null;
134
+ }
135
+ }
136
+ }
137
+
138
+ // No relationshipId found, return null (show all tools selected)
139
+ return null;
140
+ }
141
+
142
+ /**
143
+ * Enhanced lookup for headers - uses relationshipId
144
+ */
145
+ export function getCurrentHeadersForNode(
146
+ node: { data: MCPNodeData; id: string },
147
+ agentToolConfigLookup: Record<
148
+ string,
149
+ Record<string, { toolId: string; headers?: Record<string, string> }>
150
+ >,
151
+ _edges: Edge[]
152
+ ): Record<string, string> {
153
+ // First check if we have temporary headers stored on the node (from recent edits)
154
+ if ((node.data as any).tempHeaders !== undefined) {
155
+ return (node.data as any).tempHeaders;
156
+ }
157
+
158
+ // If node has relationshipId, find config by relationshipId
159
+ const relationshipId = (node.data as any).relationshipId;
160
+ if (relationshipId) {
161
+ for (const toolsMap of Object.values(agentToolConfigLookup)) {
162
+ const config = toolsMap[relationshipId];
163
+ if (config) {
164
+ return config.headers || {};
165
+ }
166
+ }
167
+ }
168
+
169
+ // No relationshipId found, return empty headers
170
+ return {};
171
+ }
@@ -1 +0,0 @@
1
- "use strict";exports.id=3086,exports.ids=[3086],exports.modules={6461:(a,b,c)=>{let d,e;c.d(b,{Ak:()=>g});var f=c(77598);function g(a=21){var b;b=a|=0,!d||d.length<b?(d=Buffer.allocUnsafe(128*b),f.webcrypto.getRandomValues(d),e=0):e+b>d.length&&(f.webcrypto.getRandomValues(d),e=0),e+=b;let c="";for(let b=e-a;b<e;b++)c+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[63&d[b]];return c}},12463:(a,b,c)=>{c.d(b,{E:()=>i});var d=c(59111),e=c(98848),f=c(53433),g=c(42723);let h=(0,f.F)("inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-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 transition-[color,box-shadow] overflow-hidden",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",secondary:"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",primary:"border border-primary/50 text-primary bg-primary/5 rounded-sm p-0.5 px-1.5 font-mono",destructive:"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground",code:"text-xs text-muted-foreground border bg-muted/80 dark:bg-muted/50 rounded-sm p-0.5 px-1.5 font-mono",success:"text-xs text-muted-foreground border rounded-sm p-0.5 px-1.5 font-mono bg-emerald-50 border-emerald-200 text-emerald-800 dark:text-emerald-300 dark:bg-emerald-950/40 uppercase",error:"text-xs text-muted-foreground border rounded-sm p-0.5 px-1.5 font-mono bg-red-50 border-red-200 text-red-800 dark:border-red-700 dark:text-red-300 dark:bg-red-950/40 uppercase",warning:"text-xs text-muted-foreground border rounded-sm p-0.5 px-1.5 font-mono bg-amber-50 border-amber-200 text-amber-800 dark:border-amber-700 dark:text-amber-300 dark:bg-amber-950/40 uppercase",sky:"text-xs text-muted-foreground border rounded-sm p-0.5 px-1.5 font-mono bg-sky-50 border-sky-200 text-sky-800 dark:border-sky-700 dark:text-sky-300 dark:bg-sky-950/40",violet:"text-xs text-muted-foreground border rounded-sm p-0.5 px-1.5 font-mono bg-violet-50 border-violet-200 text-violet-800 dark:border-violet-700 dark:text-violet-300 dark:bg-violet-950/40",orange:"text-xs text-muted-foreground border rounded-sm p-0.5 px-1.5 font-mono bg-orange-50 border-orange-200 text-orange-800 dark:border-orange-700 dark:text-orange-300 dark:bg-orange-950/40"}},defaultVariants:{variant:"default"}});function i({className:a,variant:b,asChild:c=!1,...f}){let i=c?e.DX:"span";return(0,d.jsx)(i,{"data-slot":"badge",className:(0,g.cn)(h({variant:b}),a),...f})}},22034:(a,b,c)=>{c.d(b,{Y:()=>e});var d=c(90147);let e=(0,d.createServerReference)("78a8d29cc17b67eb05b8bca773bd70aaaa8933c2c8",d.callServer,void 0,d.findSourceMapURL,"updateMCPTool")},23200:(a,b,c)=>{c.d(b,{MCPServerForm:()=>C});var d=c(59111),e=c(59099),f=c(35558),g=c(6461),h=c(485),i=c(94150),j=c(68156),k=c(17130),l=c(55124),m=c(2856),n=c(93622),o=c(22034),p=c(90147);let q=(0,p.createServerReference)("7005547925fa9abe296b15e333eb621d38e70043b1",p.callServer,void 0,p.findSourceMapURL,"createMCPTool");var r=c(91740),s=c(39108),t=c(14450),u=c(12463),v=c(24703),w=c(37671);function x({control:a,name:b,label:c,availableTools:e=[],description:f,disabled:g=!1}){let{field:{value:h,onChange:j},fieldState:{error:k}}=(0,i.as)({name:b,control:a}),l=(0,t.useMemo)(()=>"object"==typeof h&&null!==h&&"type"in h?"all"===h.type?{type:"all"}:"selective"===h.type&&Array.isArray(h.tools)?{type:"selective",tools:h.tools}:{type:"selective",tools:[]}:{type:"selective",tools:[]},[h]),o=()=>{j({type:"all"})},p=()=>{j({type:"selective",tools:[]})},q=(a,b)=>{if("all"===l.type){let c=e.map(a=>a.name).filter(b=>b!==a);j({type:"selective",tools:b?[...c,a]:c})}else j({type:"selective",tools:b?[...l.tools.filter(b=>b!==a),a]:l.tools.filter(b=>b!==a)})},x=()=>{switch(l.type){case"all":return e.length;case"selective":return l.tools.filter(a=>e.some(b=>b.name===a)).length;default:return 0}},y=x()===e.length;return(0,d.jsx)(n.zB,{control:a,name:b,render:()=>(0,d.jsxs)(n.eI,{children:[(0,d.jsxs)(n.lR,{children:[c,(0,d.jsx)(u.E,{variant:"code",className:"border-none px-2 text-[10px] text-muted-foreground",children:x()})]}),f&&(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:f}),(0,d.jsxs)("div",{className:"mt-2",children:[0===e.length&&(0,d.jsx)("div",{className:"text-sm text-muted-foreground border rounded-md p-3 py-2 bg-gray-100/80 dark:bg-sidebar",children:"No tools available from this server"}),e.length>0&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 justify-between py-3 px-6 rounded-t-lg border border-b-0",children:[(0,d.jsxs)("div",{className:"text-sm",children:[x()," ",(0,d.jsxs)("span",{className:"text-gray-400 dark:text-white/40",children:["/ ",e.length," tool",1===e.length?"":"s"]})]}),y?(0,d.jsxs)(m.$,{type:"button",variant:"outline",size:"sm",onClick:p,disabled:g,children:[(0,d.jsx)(r.A,{className:"w-4 h-4 text-muted-foreground"}),"Deselect all"]}):(0,d.jsxs)(m.$,{type:"button",variant:"outline",size:"sm",onClick:o,disabled:g,children:[(0,d.jsx)(s.A,{className:"w-4 h-4 text-muted-foreground"}),"Select all"]})]}),(0,d.jsx)("div",{className:"max-h-96 overflow-y-auto border rounded-lg rounded-t-none scrollbar-thin scrollbar-thumb-muted-foreground/30 dark:scrollbar-thumb-muted-foreground/50 scrollbar-track-transparent",children:e.map(a=>{let b=(a=>{switch(l.type){case"all":return e.some(b=>b.name===a);case"selective":return l.tools.includes(a)&&e.some(b=>b.name===a);default:return!1}})(a.name);return(0,d.jsxs)("div",{className:"space-y-2 flex items-start gap-6 border-b last:border-b-0 py-4 px-6 relative",children:[(0,d.jsx)("div",{className:"flex items-center h-[22px]",children:(0,d.jsx)(v.S,{checked:b,disabled:g,className:"mb-0",onClick:()=>!g&&q(a.name,!b)})}),(0,d.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,d.jsx)(u.E,{variant:b?"primary":"code",className:`font-mono font-medium text-xs cursor-pointer transition-colors ${g?"opacity-50 cursor-not-allowed":""}`,onClick:()=>!g&&q(a.name,!b),children:a.name}),(0,d.jsxs)(w.Tooltip,{delayDuration:800,children:[(0,d.jsx)(w.TooltipTrigger,{asChild:!0,children:(0,d.jsx)("p",{className:"text-sm text-muted-foreground line-clamp-1",children:a.description})}),(0,d.jsx)(w.TooltipContent,{side:"bottom",align:"start",children:a.description})]})]})]},a.name)})})]})]}),(0,d.jsx)(n.C5,{children:k?.message})]})})}var y=c(45809);let z=y.discriminatedUnion("type",[y.object({type:y.literal("all")}),y.object({type:y.literal("selective"),tools:y.array(y.string())})]),A=y.object({name:y.string().min(1,"Name is required."),config:y.object({type:y.literal("mcp"),mcp:y.object({server:y.object({url:y.string().url("Must be a valid URL.")}),transport:y.object({type:y.nativeEnum(f.o7)}),toolsConfig:z.default({type:"all"})})}),credentialReferenceId:y.string().nullish(),imageUrl:y.string().optional()}),B={name:"",config:{type:"mcp",mcp:{server:{url:""},transport:{type:f.o7.streamableHttp},toolsConfig:{type:"all"}}},imageUrl:"",credentialReferenceId:"none"};function C({initialData:a,mode:b="create",tool:c,credentials:p,tenantId:r,projectId:s}){let t=(0,h.useRouter)(),u=(0,i.mN)({resolver:(0,e.u)(A),defaultValues:{...B,...a}}),{isSubmitting:v}=u.formState,w=async a=>{try{let d={...a,credentialReferenceId:"none"===a.credentialReferenceId?null:a.credentialReferenceId,config:{...a.config,mcp:{...a.config.mcp,activeTools:(a=>{if("all"===a.type)return;let b=c?.availableTools?.map(a=>a.name)||[];return a.tools.filter(a=>b.includes(a))})(a.config.mcp.toolsConfig)}}};if("update"===b&&c)await (0,o.Y)(r,s,c.id,d),j.oR.success("MCP server updated successfully"),t.push(`/${r}/projects/${s}/mcp-servers/${c.id}`);else{let a=await q(r,s,{...d,id:(0,g.Ak)()});j.oR.success("MCP server created successfully"),t.push(`/${r}/projects/${s}/mcp-servers/${a.id}`)}}catch(a){console.error(`Failed to ${b} MCP tool:`,a),j.oR.error(`Failed to ${b} MCP server. Please try again.`)}};return(0,d.jsx)(n.lV,{...u,children:(0,d.jsxs)("form",{onSubmit:u.handleSubmit(w),className:"space-y-8",children:[(0,d.jsx)(k.a,{control:u.control,name:"name",label:"Name",placeholder:"MCP server",isRequired:!0}),(0,d.jsx)(k.a,{control:u.control,name:"config.mcp.server.url",label:"URL",placeholder:"https://api.example.com/mcp",isRequired:!0}),(0,d.jsx)(l.U,{control:u.control,selectTriggerClassName:"w-full",name:"config.mcp.transport.type",label:"Transport type",placeholder:"Select transport type",options:[{value:f.o7.streamableHttp,label:"Streamable HTTP"},{value:f.o7.sse,label:"Server-Sent Events (SSE)"}]}),(0,d.jsx)(k.a,{control:u.control,name:"imageUrl",label:"Image URL (optional)",placeholder:"https://example.com/icon.png or data:image/png;base64,..."}),(0,d.jsx)(l.U,{control:u.control,selectTriggerClassName:"w-full",name:"credentialReferenceId",label:"Credential",placeholder:"Select a credential",options:[{value:"none",label:"No Authentication"},...p.map(a=>({value:a.id,label:a.id}))]}),"update"===b&&(0,d.jsx)(x,{control:u.control,name:"config.mcp.toolsConfig",label:"Tools",availableTools:c?.availableTools||[],description:"Select which tools should be enabled for this MCP server"}),(0,d.jsx)(m.$,{type:"submit",disabled:v,children:"update"===b?"Save":"Create"})]})})}},24703:(a,b,c)=>{c.d(b,{S:()=>h});var d=c(59111),e=c(51006),f=c(39108),g=c(42723);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"})})})}},49540:(a,b,c)=>{c.d(b,{bq:()=>l,eb:()=>n,gC:()=>m,l6:()=>j,yv:()=>k});var d=c(59111),e=c(41404),f=c(67048),g=c(39108),h=c(25773),i=c(42723);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 font-normal normal-case",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 scrollbar-thin scrollbar-thumb-muted-foreground/30 dark:scrollbar-thumb-muted-foreground/50 scrollbar-track-transparent 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"})})}},51006:(a,b,c)=>{c.d(b,{C1:()=>x,bL:()=>v});var d=c(14450),e=c(90890),f=c(2102),g=c(13254),h=c(19975),i=c(82087),j=c(22871),k=c(66261),l=c(6118),m=c(59111),n="Checkbox",[o,p]=(0,f.A)(n),[q,r]=o(n);function s(a){let{__scopeCheckbox:b,checked:c,children:e,defaultChecked:f,disabled:g,form:i,name:j,onCheckedChange:k,required:l,value:o="on",internal_do_not_use_render:p}=a,[r,s]=(0,h.i)({prop:c,defaultProp:f??!1,onChange:k,caller:n}),[t,u]=d.useState(null),[v,w]=d.useState(null),x=d.useRef(!1),y=!t||!!i||!!t.closest("form"),z={checked:r,disabled:g,setChecked:s,control:t,setControl:u,name:j,form:i,value:o,hasConsumerStoppedPropagationRef:x,required:l,defaultChecked:!A(f)&&f,isFormControl:y,bubbleInput:v,setBubbleInput:w};return(0,m.jsx)(q,{scope:b,...z,children:"function"==typeof p?p(z):e})}var t="CheckboxTrigger",u=d.forwardRef(({__scopeCheckbox:a,onKeyDown:b,onClick:c,...f},h)=>{let{control:i,value:j,disabled:k,checked:n,required:o,setControl:p,setChecked:q,hasConsumerStoppedPropagationRef:s,isFormControl:u,bubbleInput:v}=r(t,a),w=(0,e.s)(h,p),x=d.useRef(n);return d.useEffect(()=>{let a=i?.form;if(a){let b=()=>q(x.current);return a.addEventListener("reset",b),()=>a.removeEventListener("reset",b)}},[i,q]),(0,m.jsx)(l.sG.button,{type:"button",role:"checkbox","aria-checked":A(n)?"mixed":n,"aria-required":o,"data-state":B(n),"data-disabled":k?"":void 0,disabled:k,value:j,...f,ref:w,onKeyDown:(0,g.mK)(b,a=>{"Enter"===a.key&&a.preventDefault()}),onClick:(0,g.mK)(c,a=>{q(a=>!!A(a)||!a),v&&u&&(s.current=a.isPropagationStopped(),s.current||a.stopPropagation())})})});u.displayName=t;var v=d.forwardRef((a,b)=>{let{__scopeCheckbox:c,name:d,checked:e,defaultChecked:f,required:g,disabled:h,value:i,onCheckedChange:j,form:k,...l}=a;return(0,m.jsx)(s,{__scopeCheckbox:c,checked:e,defaultChecked:f,disabled:h,required:g,onCheckedChange:j,name:d,form:k,value:i,internal_do_not_use_render:({isFormControl:a})=>(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(u,{...l,ref:b,__scopeCheckbox:c}),a&&(0,m.jsx)(z,{__scopeCheckbox:c})]})})});v.displayName=n;var w="CheckboxIndicator",x=d.forwardRef((a,b)=>{let{__scopeCheckbox:c,forceMount:d,...e}=a,f=r(w,c);return(0,m.jsx)(k.C,{present:d||A(f.checked)||!0===f.checked,children:(0,m.jsx)(l.sG.span,{"data-state":B(f.checked),"data-disabled":f.disabled?"":void 0,...e,ref:b,style:{pointerEvents:"none",...a.style}})})});x.displayName=w;var y="CheckboxBubbleInput",z=d.forwardRef(({__scopeCheckbox:a,...b},c)=>{let{control:f,hasConsumerStoppedPropagationRef:g,checked:h,defaultChecked:k,required:n,disabled:o,name:p,value:q,form:s,bubbleInput:t,setBubbleInput:u}=r(y,a),v=(0,e.s)(c,u),w=(0,i.Z)(h),x=(0,j.X)(f);d.useEffect(()=>{if(!t)return;let a=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set,b=!g.current;if(w!==h&&a){let c=new Event("click",{bubbles:b});t.indeterminate=A(h),a.call(t,!A(h)&&h),t.dispatchEvent(c)}},[t,w,h,g]);let z=d.useRef(!A(h)&&h);return(0,m.jsx)(l.sG.input,{type:"checkbox","aria-hidden":!0,defaultChecked:k??z.current,required:n,disabled:o,name:p,value:q,form:s,...b,tabIndex:-1,ref:v,style:{...b.style,...x,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});function A(a){return"indeterminate"===a}function B(a){return A(a)?"indeterminate":a?"checked":"unchecked"}z.displayName=y},55124:(a,b,c)=>{c.d(b,{U:()=>g});var d=c(59111),e=c(49540),f=c(71771);function g({control:a,name:b,label:c,placeholder:g,options:h,disabled:i=!1,selectTriggerClassName:j,isRequired:k=!1}){return(0,d.jsx)(f.u,{control:a,name:b,label:c,isRequired:k,children:a=>(0,d.jsxs)(e.l6,{onValueChange:a.onChange,defaultValue:a.value,disabled:i,children:[(0,d.jsx)(e.bq,{disabled:i,className:j,children:(0,d.jsx)(e.yv,{placeholder:g})}),(0,d.jsx)(e.gC,{children:h.map(a=>(0,d.jsx)(e.eb,{value:a.value,disabled:a.disabled,children:a.label},a.value))})]})})}},72969:(a,b,c)=>{c.d(b,{MCPServerForm:()=>d});let d=(0,c(60241).registerClientReference)(function(){throw Error("Attempted to call MCPServerForm() from the server but MCPServerForm 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/agents/agents/agents-manage-ui/src/components/mcp-servers/form/mcp-server-form.tsx","MCPServerForm")},81097:(a,b,c)=>{c.d(b,{$Y:()=>g,GO:()=>i,K3:()=>h,h9:()=>k,nZ:()=>j});var d=c(1274);c(2082);var e=c(53842),f=c(41979);async function g(a,b,c=1,d=50){(0,f.M2)(a),(0,f.nt)(b);let h=new URLSearchParams({page:c.toString(),limit:d.toString()});return(await (0,e.J)(`tenants/${a}/projects/${b}/credentials?${h}`)).data}async function h(a,b,c){return(0,f.M2)(a),(0,f.nt)(b),(await (0,e.J)(`tenants/${a}/projects/${b}/credentials/${c}`)).data}async function i(a,b,c){return(0,f.M2)(a),(0,f.nt)(b),(await (0,e.J)(`tenants/${a}/projects/${b}/credentials`,{method:"POST",body:JSON.stringify(c)})).data}async function j(a,b,c,d){return(0,f.M2)(a),(0,f.nt)(b),(await (0,e.J)(`tenants/${a}/projects/${b}/credentials/${c}`,{method:"PUT",body:JSON.stringify(d)})).data}async function k(a,b,c){(0,f.M2)(a),(0,f.nt)(b),await (0,e.J)(`tenants/${a}/projects/${b}/credentials/${c}`,{method:"DELETE"})}(0,c(95454).D)([g,h,i,j,k]),(0,d.A)(g,"78f680509089c02c1f04b9eba1337f27204f83933b",null),(0,d.A)(h,"70bd3daf4e3d037e18817b976ef8fe9fcdbb56cdf1",null),(0,d.A)(i,"70c68712fc98c0b1087c008ed2fab1e0410143b1fc",null),(0,d.A)(j,"7895d833615f820726e663d30c6404cb6bf507565b",null),(0,d.A)(k,"70cbac0d00fadc7841586f1752890669225653cdd5",null)}};
@@ -1 +0,0 @@
1
- exports.id=581,exports.ids=[581],exports.modules={5294:(a,b,c)=>{"use strict";c.d(b,{$Y:()=>g,GO:()=>i,K3:()=>h,h9:()=>k});var d=c(29991);c(58415);var e=c(8703),f=c(45796);async function g(a,b,c=1,d=50){(0,f.M2)(a),(0,f.nt)(b);let h=new URLSearchParams({page:c.toString(),limit:d.toString()});return(await (0,e.J)(`tenants/${a}/projects/${b}/credentials?${h}`)).data}async function h(a,b,c){return(0,f.M2)(a),(0,f.nt)(b),(await (0,e.J)(`tenants/${a}/projects/${b}/credentials/${c}`)).data}async function i(a,b,c){return(0,f.M2)(a),(0,f.nt)(b),(await (0,e.J)(`tenants/${a}/projects/${b}/credentials`,{method:"POST",body:JSON.stringify(c)})).data}async function j(a,b,c,d){return(0,f.M2)(a),(0,f.nt)(b),(await (0,e.J)(`tenants/${a}/projects/${b}/credentials/${c}`,{method:"PUT",body:JSON.stringify(d)})).data}async function k(a,b,c){(0,f.M2)(a),(0,f.nt)(b),await (0,e.J)(`tenants/${a}/projects/${b}/credentials/${c}`,{method:"DELETE"})}(0,c(33451).D)([g,h,i,j,k]),(0,d.A)(g,"78f680509089c02c1f04b9eba1337f27204f83933b",null),(0,d.A)(h,"70bd3daf4e3d037e18817b976ef8fe9fcdbb56cdf1",null),(0,d.A)(i,"70c68712fc98c0b1087c008ed2fab1e0410143b1fc",null),(0,d.A)(j,"7895d833615f820726e663d30c6404cb6bf507565b",null),(0,d.A)(k,"70cbac0d00fadc7841586f1752890669225653cdd5",null)},19329:(a,b,c)=>{"use strict";c.d(b,{U:()=>f});var d=c(29991);c(58415);var e=c(5294);async function f(a,b,c){try{let d=await (0,e.K3)(a,b,c.id);if(d)return d}catch{}try{return await (0,e.GO)(a,b,c)}catch(a){throw console.error("Failed to save credential to database:",a),Error(`Failed to save credential '${c.id}' to database`)}}(0,c(33451).D)([f]),(0,d.A)(f,"702fc6d2ec9f6e07e727398901f4f5f8ec3f6d23e0",null)},21395:(a,b,c)=>{"use strict";c.d(b,{RN:()=>s,Ak:()=>p,uP:()=>t,tN:()=>q,Mj:()=>o,tQ:()=>n,pv:()=>m,Mb:()=>l,H6:()=>u,P:()=>v});var d=c(29991);c(58415);var e=c(34843),f=c(55797),g=c(67417);class h extends Error{constructor(a,b,c){super(a),this.operation=b,this.cause=c,this.name="NangoError"}}function i(a,b,c){if(a instanceof h)throw a;throw new h(b,c,a)}var j=c(33451);let k=()=>{let a=process.env.NANGO_SECRET_KEY;if(!a)throw new h("NANGO_SECRET_KEY environment variable is required for Nango integration");try{return new f.CA({secretKey:a,host:process.env.NANGO_SERVER_URL||void 0})}catch(a){throw new h("Failed to initialize Nango client","new Nango",a)}};async function l(){try{let a=k();return(await a.listProviders({})).data}catch(a){console.error("Failed to fetch providers:",a),i(a,"Unable to retrieve available providers from Nango","listProviders")}}async function m(a){try{let b=k();return(await b.getProvider({provider:a})).data}catch(b){console.error(`Failed to fetch provider ${a}:`,b),i(b,`Provider '${a}' not found or inaccessible`,"getProvider")}}async function n(){try{let a=k();return(await a.listIntegrations()).configs}catch(a){console.error("Failed to fetch integrations:",a),i(a,"Unable to retrieve existing integrations","listIntegrations")}}async function o(a){try{let b=k(),c=(await b.getIntegration({uniqueKey:a},{include:["credentials"]})).data,d=!1;d=c.credentials?.type==="OAUTH2"||c.credentials?.type==="OAUTH1"||c.credentials?.type==="TBA"?!!(c.credentials?.client_id&&c.credentials?.client_secret):c.credentials?.type!=="APP"||!!(c.credentials?.app_id&&c.credentials?.app_link);let{credentials:e,...f}=c;return{...f,areCredentialsSet:d}}catch(b){if(b&&"object"==typeof b&&"status"in b&&404===b.status)return null;console.error(`Failed to fetch integration ${a}:`,b),i(b,`Unable to fetch integration with key '${a}'`,"getIntegration")}}async function p(a){try{let b=k();return(await b.createIntegration({provider:a.provider,unique_key:a.uniqueKey,display_name:a.displayName,credentials:a.credentials})).data}catch(b){console.error("Failed to create integration:",b),i(b,`Failed to create integration '${a.uniqueKey}' for provider '${a.provider}'`,"createIntegration")}}async function q(a){try{let a=k();return(await a.listConnections()).connections}catch(c){let b=a?` for integration '${a}'`:"";console.error(`Failed to fetch connections${b}:`,c),i(c,`Unable to retrieve connections${b}`,"listConnections")}}async function r({endUserId:a="test-tenant",endUserEmail:b="test@test-tenant.com",endUserDisplayName:c="Test User",organizationId:d=process.env.TENANT_ID||g.P3,organizationDisplayName:e="Test Organization",integrationId:f}){try{let g=k(),{data:h}=await g.createConnectSession({end_user:{id:a,email:b,display_name:c},organization:{id:d,display_name:e},allowed_integrations:[f]});return h}catch(a){console.error("Failed to create connect session:",a),i(a,`Unable to create connect session for integration '${f}'`,"createConnectSession")}}async function s({name:a,apiKeyToSet:b,metadata:c}){let d=(0,e.K_)(a);try{let e;try{e=await p({provider:"private-api-bearer",uniqueKey:d,displayName:a})}catch(a){if(a instanceof h&&a.cause&&"object"==typeof a.cause&&"status"in a.cause&&400===a.cause.status){let b=await o(d);b?e=b:i(a,"Integration creation failed for unexpected reasons","create")}else i(a,`Failed to create or retrieve integration '${d}'`,"create")}try{let a=`${process.env.NANGO_SERVER_URL||"https://api.nango.dev"}/connections`,f={provider_config_key:e.unique_key,connection_id:d,metadata:c,credentials:{type:"API_KEY",apiKey:b}},g=await fetch(a,{method:"POST",headers:{Authorization:`Bearer ${process.env.NANGO_SECRET_KEY}`,"Content-Type":"application/json"},body:JSON.stringify(f)});if(!g.ok)throw new h(`Failed to import connection: HTTP ${g.status} - ${g.statusText}`,"importConnection")}catch(a){i(a,"Failed to import API key connection to Nango","importConnection")}try{await v({providerConfigKey:e.unique_key,connectionId:d,metadata:c})}catch(a){console.warn(`Failed to set metadata for connection ${d}:`,a)}return{integration:e}}catch(b){console.error("Unexpected error creating API key credential:",b),i(b,`Unexpected error creating API key credential '${a}'`,"createNangoApiKeyConnection")}}async function t({providerName:a,credentials:b}){try{let c,d=null;try{d=await o(a)}catch(b){if(b instanceof h)throw b;console.debug(`Integration '${a}' not found, will create new one`)}if(d?.areCredentialsSet)c=d;else try{c=await p({provider:a,uniqueKey:a,displayName:a,credentials:b})}catch(b){i(b,`Failed to create integration for provider '${a}'`,"create")}try{return(await r({integrationId:c.unique_key})).token}catch(a){i(a,`Failed to create connect session for integration '${c.unique_key}'`,"createConnectSession")}}catch(b){console.error("Unexpected error creating provider connect session:",b),i(b,`Unexpected error creating connect session for provider '${a}'`,"createProviderConnectSession")}}async function u({providerConfigKey:a,connectionId:b}){try{let c=k();return await c.getMetadata(a,b)}catch(a){if(a&&"object"==typeof a&&"status"in a&&404===a.status)return null;console.error("Failed to get connection metadata:",a),i(a,`Unable to retrieve metadata for connection '${b}'`,"getMetadata")}}async function v({providerConfigKey:a,connectionId:b,metadata:c}){try{let d=k();await d.setMetadata(a,b,c)}catch(a){console.error("Failed to set connection metadata:",a),i(a,`Unable to update metadata for connection '${b}'`,"setMetadata")}}(0,j.D)([l,m,n,o,p,q,s,t,u,v]),(0,d.A)(l,"00e63adf912be71ee6c98b7cca5f69fbd5be224743",null),(0,d.A)(m,"401e91fe59b5ec6a3ee870c75de33f008f802e60c5",null),(0,d.A)(n,"004220ba3bab872958a0d7b6de73c6644be8d1961d",null),(0,d.A)(o,"404a320c14fc477d7d7b455a3a040a8169d254470e",null),(0,d.A)(p,"40bb001080b43a5eb43a42f213558eab6c031819bb",null),(0,d.A)(q,"404b0be649dda14aac8e8abb88e3621b6a617eb3e7",null),(0,d.A)(s,"40bd2287621e4e29dc29e183e593a1c933d71af684",null),(0,d.A)(t,"4059cc66c49a996bc5d80435023b52629c4937ef12",null),(0,d.A)(u,"408e62387ba72c8ac9f355054e0d11990524deb363",null),(0,d.A)(v,"40c1a26071e1bdc3b03bbd1d62812ac43292cba7f3",null)},22427:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>f});var d=c(59111),e=c(43433);function f(){return(0,d.jsx)(e.A,{description:"Something went wrong."})}},25600:(a,b,c)=>{Promise.resolve().then(c.bind(c,22427))},37323:(a,b,c)=>{"use strict";c.d(b,{U:()=>e});var d=c(90147);let e=(0,d.createServerReference)("702fc6d2ec9f6e07e727398901f4f5f8ec3f6d23e0",d.callServer,void 0,d.findSourceMapURL,"findOrCreateCredential")},62048:(a,b,c)=>{Promise.resolve().then(c.bind(c,80969))},80969:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(60241).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/agents/agents/agents-manage-ui/src/app/[tenantId]/projects/[projectId]/credentials/error.tsx\" from the server, but it's 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/agents/agents/agents-manage-ui/src/app/[tenantId]/projects/[projectId]/credentials/error.tsx","default")},96957:(a,b,c)=>{"use strict";c.r(b),c.d(b,{"403b7976bc0eaa4b4fd871990c2e551db70698a3f2":()=>d.vj,"6033111228634210ca23b02df048561dbaa19c54d6":()=>d.Sw,"60502a3af22f3a208534a9eeee9efabec8126da69e":()=>d.xx,"60bd2fe2028e26979b712a7535e863f01c7ec940f3":()=>d.gA,"70cecbfcc2f1b12b191d5cd21c06b288942891f6a3":()=>d.vr});var d=c(54637)}};