@inkeep/agents-manage-ui 0.6.5 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) 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 +124 -124
  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 +2 -2
  5. package/.next/standalone/agents-manage-ui/.next/prerender-manifest.json +3 -3
  6. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/page.js +1 -1
  7. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/page_client-reference-manifest.js +1 -1
  8. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/api-keys/page.js +3 -3
  9. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/api-keys/page_client-reference-manifest.js +1 -1
  10. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifact-components/[artifactComponentId]/page.js +1 -1
  11. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifact-components/[artifactComponentId]/page.js.nft.json +1 -1
  12. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifact-components/[artifactComponentId]/page_client-reference-manifest.js +1 -1
  13. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifact-components/new/page.js +2 -2
  14. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifact-components/new/page.js.nft.json +1 -1
  15. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifact-components/new/page_client-reference-manifest.js +1 -1
  16. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifact-components/page.js +2 -2
  17. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifact-components/page_client-reference-manifest.js +1 -1
  18. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page.js +1 -1
  19. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page.js.nft.json +1 -1
  20. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page_client-reference-manifest.js +1 -1
  21. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page.js +2 -2
  22. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page.js.nft.json +1 -1
  23. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page_client-reference-manifest.js +1 -1
  24. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/page.js +1 -1
  25. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/page_client-reference-manifest.js +1 -1
  26. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page.js +1 -1
  27. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page.js.nft.json +1 -1
  28. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page_client-reference-manifest.js +1 -1
  29. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/page.js +2 -2
  30. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/page.js.nft.json +1 -1
  31. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/page_client-reference-manifest.js +1 -1
  32. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/page.js +2 -2
  33. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/page_client-reference-manifest.js +1 -1
  34. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/data-components/[dataComponentId]/page.js +2 -2
  35. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/data-components/[dataComponentId]/page.js.nft.json +1 -1
  36. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/data-components/[dataComponentId]/page_client-reference-manifest.js +1 -1
  37. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/data-components/new/page.js +2 -2
  38. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/data-components/new/page.js.nft.json +1 -1
  39. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/data-components/new/page_client-reference-manifest.js +1 -1
  40. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/data-components/page.js +2 -2
  41. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/data-components/page_client-reference-manifest.js +1 -1
  42. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/[graphId]/page.js +2 -2
  43. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/[graphId]/page.js.nft.json +1 -1
  44. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/[graphId]/page_client-reference-manifest.js +1 -1
  45. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/new/page.js +2 -2
  46. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/new/page.js.nft.json +1 -1
  47. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/new/page_client-reference-manifest.js +1 -1
  48. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/page.js +2 -2
  49. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/page_client-reference-manifest.js +1 -1
  50. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page.js +2 -2
  51. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page.js.nft.json +1 -1
  52. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page_client-reference-manifest.js +1 -1
  53. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page.js +2 -2
  54. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page.js.nft.json +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 +1 -1
  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.js.nft.json +1 -1
  61. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/page_client-reference-manifest.js +1 -1
  62. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/page.js +2 -2
  63. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/page_client-reference-manifest.js +1 -1
  64. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/settings/page.js +2 -2
  65. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/settings/page_client-reference-manifest.js +1 -1
  66. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page.js +2 -2
  67. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page.js.nft.json +1 -1
  68. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page_client-reference-manifest.js +1 -1
  69. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page.js +2 -2
  70. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page_client-reference-manifest.js +1 -1
  71. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/page.js +2 -2
  72. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/page.js.nft.json +1 -1
  73. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/page_client-reference-manifest.js +1 -1
  74. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/page.js +1 -1
  75. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/page_client-reference-manifest.js +1 -1
  76. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found/page.js +1 -1
  77. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  78. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found.html +1 -1
  79. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found.rsc +9 -9
  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/1267.js +1 -0
  86. package/.next/standalone/agents-manage-ui/.next/server/chunks/1828.js +1 -0
  87. package/.next/standalone/agents-manage-ui/.next/server/chunks/2124.js +23 -13
  88. package/.next/standalone/agents-manage-ui/.next/server/chunks/3144.js +1 -0
  89. package/.next/standalone/agents-manage-ui/.next/server/chunks/3460.js +1 -0
  90. package/.next/standalone/agents-manage-ui/.next/server/chunks/3547.js +1 -1
  91. package/.next/standalone/agents-manage-ui/.next/server/chunks/{7211.js → 4108.js} +12 -12
  92. package/.next/standalone/agents-manage-ui/.next/server/chunks/499.js +1 -0
  93. package/.next/standalone/agents-manage-ui/.next/server/chunks/5232.js +1 -1
  94. package/.next/standalone/agents-manage-ui/.next/server/chunks/6831.js +1 -0
  95. package/.next/standalone/agents-manage-ui/.next/server/chunks/8449.js +2 -2
  96. package/.next/standalone/agents-manage-ui/.next/server/pages/404.html +1 -1
  97. package/.next/standalone/agents-manage-ui/.next/server/pages/500.html +1 -1
  98. package/.next/standalone/agents-manage-ui/.next/server/server-reference-manifest.js +1 -1
  99. package/.next/standalone/agents-manage-ui/.next/server/server-reference-manifest.json +1 -1
  100. package/.next/standalone/agents-manage-ui/.next/static/chunks/2915-f48fe90984ae5d8b.js +1 -0
  101. package/.next/standalone/agents-manage-ui/.next/static/chunks/6497-b90b21b559925fc6.js +1 -0
  102. package/.next/standalone/agents-manage-ui/.next/static/chunks/6763-5c2401becfe1a959.js +1 -0
  103. package/.next/standalone/agents-manage-ui/.next/static/chunks/7167-efbb83dcb2b4c5ce.js +1 -0
  104. package/.next/standalone/agents-manage-ui/.next/static/chunks/7232-63c17ffc2737968a.js +25 -0
  105. package/.next/standalone/agents-manage-ui/.next/static/chunks/{6952-3f2a84c5ba03fb2b.js → 8825-c4a769ea3a8e81d1.js} +1 -1
  106. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/api-keys/page-c92a1f042f5ea538.js +1 -0
  107. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifact-components/[artifactComponentId]/page-d8c96c8cefdfd4bd.js +1 -0
  108. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifact-components/new/page-d8c96c8cefdfd4bd.js +1 -0
  109. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifact-components/{page-3f9ff93fab72705b.js → page-9723ca38f4d36dda.js} +1 -1
  110. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page-a1be97e0e467835a.js +1 -0
  111. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page-dcc6276bc353efb2.js +1 -0
  112. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page-b4038baed88b93f9.js +1 -0
  113. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/page-72ecfe1df8e379a5.js +1 -0
  114. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/data-components/[dataComponentId]/{page-e02707f69e0015e0.js → page-ee89187f61e8d315.js} +1 -1
  115. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/data-components/new/{page-e02707f69e0015e0.js → page-ee89187f61e8d315.js} +1 -1
  116. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/data-components/page-e8b99c1272c1540c.js +1 -0
  117. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/graphs/[graphId]/{page-149dc9cf7b8332ab.js → page-b574c5e1d3df7e73.js} +1 -1
  118. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/graphs/new/{page-c15be44435dd5f2d.js → page-95c13c0305dfddfb.js} +1 -1
  119. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/graphs/page-78554443bb163ae9.js +1 -0
  120. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/{page-33053057910de3eb.js → page-6a1affa547b51cd8.js} +1 -1
  121. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page-aa753859a6cd98f8.js +1 -0
  122. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/new/{page-1a6683f262056080.js → page-6222398da9ee2271.js} +1 -1
  123. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/page-cdf6cf1143f6a553.js +1 -0
  124. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/settings/{page-78887bbecb44fd26.js → page-77f0a0e0e4372681.js} +1 -1
  125. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/page-b2e49d12c1c10e47.js +1 -0
  126. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/page-fc18e3ba5c2fc6a5.js +1 -0
  127. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/layout-35c8d055f3f8d91c.js +1 -0
  128. package/.next/standalone/agents-manage-ui/.next/static/css/98c416ff19152db0.css +1 -0
  129. package/.next/standalone/agents-manage-ui/package.json +2 -2
  130. package/.next/standalone/packages/agents-core/package.json +1 -1
  131. package/package.json +5 -5
  132. package/src/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page.tsx +12 -12
  133. package/src/components/credentials/credential-tools-list.tsx +0 -25
  134. package/src/components/graph/configuration/node-types.tsx +6 -2
  135. package/src/components/graph/graph.tsx +66 -8
  136. package/src/components/graph/nodes/mcp-node.tsx +6 -11
  137. package/src/components/graph/playground/chat-widget.tsx +10 -0
  138. package/src/components/graph/sidepane/nodes/mcp-node-editor.tsx +69 -68
  139. package/src/components/graph/sidepane/nodes/mcp-selector/mcp-selector.tsx +44 -44
  140. package/src/components/graph/sidepane/sidepane.tsx +5 -0
  141. package/src/components/mcp-servers/form/mcp-server-form.tsx +47 -46
  142. package/src/components/mcp-servers/mcp-tool-item.tsx +3 -0
  143. package/src/components/mcp-servers/view-mcp-server-details.tsx +76 -37
  144. package/src/components/ui/copyable-multi-line-code.tsx +17 -0
  145. package/src/features/graph/domain/__tests__/serialize.test.ts +21 -51
  146. package/src/features/graph/domain/deserialize.ts +5 -26
  147. package/src/features/graph/domain/serialize.ts +56 -52
  148. package/src/lib/api/tools.ts +2 -92
  149. package/src/lib/utils/orphaned-tools-detector.ts +145 -0
  150. package/.next/standalone/agents-manage-ui/.next/server/chunks/1631.js +0 -1
  151. package/.next/standalone/agents-manage-ui/.next/server/chunks/2298.js +0 -1
  152. package/.next/standalone/agents-manage-ui/.next/server/chunks/329.js +0 -1
  153. package/.next/standalone/agents-manage-ui/.next/server/chunks/4754.js +0 -1
  154. package/.next/standalone/agents-manage-ui/.next/server/chunks/5773.js +0 -1
  155. package/.next/standalone/agents-manage-ui/.next/server/chunks/6577.js +0 -1
  156. package/.next/standalone/agents-manage-ui/.next/server/chunks/8798.js +0 -1
  157. package/.next/standalone/agents-manage-ui/.next/static/chunks/2229-e980fad7ac777384.js +0 -25
  158. package/.next/standalone/agents-manage-ui/.next/static/chunks/3200-6d80f96a4d5ea423.js +0 -1
  159. package/.next/standalone/agents-manage-ui/.next/static/chunks/6187-75bda81ee4117ed2.js +0 -1
  160. package/.next/standalone/agents-manage-ui/.next/static/chunks/6497-1503999d28bd793b.js +0 -1
  161. package/.next/standalone/agents-manage-ui/.next/static/chunks/7167-506ca8b1a906ac2a.js +0 -1
  162. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/api-keys/page-81788595a817e711.js +0 -1
  163. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifact-components/[artifactComponentId]/page-8ec4191752587977.js +0 -1
  164. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifact-components/new/page-8ec4191752587977.js +0 -1
  165. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page-a637ecda071e042c.js +0 -1
  166. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page-fd2c318c31373f80.js +0 -1
  167. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page-f55b6e769c4b1db8.js +0 -1
  168. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/page-db25060b2d52ebb8.js +0 -1
  169. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/data-components/page-b494291f7a5cebf6.js +0 -1
  170. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/graphs/page-5edc45db8e78342a.js +0 -1
  171. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page-190351c7f4b5d2f8.js +0 -1
  172. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/page-36c9163f810b36a0.js +0 -1
  173. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/page-bb7eb8042fbce7b4.js +0 -1
  174. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/page-af5372b8e0a563b0.js +0 -1
  175. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/layout-71456c0293edc200.js +0 -1
  176. package/.next/standalone/agents-manage-ui/.next/static/css/70e9093ef73fbe1b.css +0 -1
  177. /package/.next/standalone/agents-manage-ui/.next/static/{X9iq1SzdbJH24pPiGko3K → 0c8HYV9Bsdgx06_BNb0kR}/_buildManifest.js +0 -0
  178. /package/.next/standalone/agents-manage-ui/.next/static/{X9iq1SzdbJH24pPiGko3K → 0c8HYV9Bsdgx06_BNb0kR}/_ssgManifest.js +0 -0
@@ -1,68 +1,68 @@
1
- import { type Node, useReactFlow } from '@xyflow/react'
2
- import { useParams } from 'next/navigation'
3
- import { useEffect, useState } from 'react'
4
- import { toast } from 'sonner'
5
- import { fetchMCPTools } from "@/lib/api/tools"
6
- import type { MCPTool } from "@/lib/types/tools";
7
- import { NodeType } from '../../../configuration/node-types'
8
- import { EmptyState } from '../empty-state'
9
- import { MCPSelectorLoading } from './loading'
10
- import { MCPServerItem } from './mcp-server-item'
1
+ import { type Node, useReactFlow } from '@xyflow/react';
2
+ import { useParams } from 'next/navigation';
3
+ import { useEffect, useState } from 'react';
4
+ import { toast } from 'sonner';
5
+ import { fetchMCPTools } from '@/lib/api/tools';
6
+ import type { MCPTool } from '@/lib/types/tools';
7
+ import { NodeType } from '../../../configuration/node-types';
8
+ import { EmptyState } from '../empty-state';
9
+ import { MCPSelectorLoading } from './loading';
10
+ import { MCPServerItem } from './mcp-server-item';
11
11
 
12
12
  interface MCPSelectorState {
13
- tools: MCPTool[]
14
- isLoading: boolean
15
- error: string | null
13
+ tools: MCPTool[];
14
+ isLoading: boolean;
15
+ error: string | null;
16
16
  }
17
17
 
18
18
  const useFetchAvailableMCPs = (): MCPSelectorState => {
19
- const [tools, setTools] = useState<MCPTool[]>([])
20
- const [isLoading, setIsLoading] = useState(true)
21
- const [error, setError] = useState<string | null>(null)
19
+ const [tools, setTools] = useState<MCPTool[]>([]);
20
+ const [isLoading, setIsLoading] = useState(true);
21
+ const [error, setError] = useState<string | null>(null);
22
22
  const { tenantId, projectId } = useParams<{
23
- tenantId: string
24
- projectId: string
25
- }>()
23
+ tenantId: string;
24
+ projectId: string;
25
+ }>();
26
26
 
27
27
  useEffect(() => {
28
28
  const loadTools = async () => {
29
29
  try {
30
- setIsLoading(true)
31
- setError(null)
32
- const mcpTools = await fetchMCPTools(tenantId, projectId)
33
- setTools(mcpTools)
30
+ setIsLoading(true);
31
+ setError(null);
32
+ const mcpTools = await fetchMCPTools(tenantId, projectId);
33
+ setTools(mcpTools);
34
34
  } catch (err) {
35
- const errorMessage = err instanceof Error ? err.message : 'Failed to load MCP tools'
36
- setError(errorMessage)
37
- toast.error(errorMessage)
35
+ const errorMessage = err instanceof Error ? err.message : 'Failed to load MCP tools';
36
+ setError(errorMessage);
37
+ toast.error(errorMessage);
38
38
  } finally {
39
- setIsLoading(false)
39
+ setIsLoading(false);
40
40
  }
41
- }
41
+ };
42
42
 
43
- loadTools()
44
- }, [tenantId, projectId])
43
+ loadTools();
44
+ }, [tenantId, projectId]);
45
45
 
46
- return { tools, isLoading, error }
47
- }
46
+ return { tools, isLoading, error };
47
+ };
48
48
 
49
49
  export function MCPSelector({ selectedNode }: { selectedNode: Node }) {
50
- const { updateNode } = useReactFlow()
50
+ const { updateNode } = useReactFlow();
51
51
  const { tenantId, projectId } = useParams<{
52
- tenantId: string
53
- projectId: string
54
- }>()
55
- const { tools, isLoading, error } = useFetchAvailableMCPs()
52
+ tenantId: string;
53
+ projectId: string;
54
+ }>();
55
+ const { tools, isLoading, error } = useFetchAvailableMCPs();
56
56
 
57
57
  const handleSelect = (mcp: MCPTool) => {
58
58
  updateNode(selectedNode.id, {
59
59
  type: NodeType.MCP,
60
- data: { ...mcp },
61
- })
62
- }
60
+ data: { toolId: mcp.id },
61
+ });
62
+ };
63
63
 
64
64
  if (isLoading) {
65
- return <MCPSelectorLoading title="Select MCP server" />
65
+ return <MCPSelectorLoading title="Select MCP server" />;
66
66
  }
67
67
 
68
68
  if (error) {
@@ -72,7 +72,7 @@ export function MCPSelector({ selectedNode }: { selectedNode: Node }) {
72
72
  actionText="Create MCP server"
73
73
  actionHref={`/${tenantId}/projects/${projectId}/mcp-servers/new`}
74
74
  />
75
- )
75
+ );
76
76
  }
77
77
 
78
78
  if (!tools?.length) {
@@ -82,7 +82,7 @@ export function MCPSelector({ selectedNode }: { selectedNode: Node }) {
82
82
  actionText="Create MCP server"
83
83
  actionHref={`/${tenantId}/projects/${projectId}/mcp-servers/new`}
84
84
  />
85
- )
85
+ );
86
86
  }
87
87
 
88
88
  return (
@@ -96,5 +96,5 @@ export function MCPSelector({ selectedNode }: { selectedNode: Node }) {
96
96
  </div>
97
97
  </div>
98
98
  </div>
99
- )
99
+ );
100
100
  }
@@ -5,6 +5,7 @@ import { useMemo } from 'react';
5
5
  import { useGraphErrors } from '@/hooks/use-graph-errors';
6
6
  import type { ArtifactComponent } from '@/lib/api/artifact-components';
7
7
  import type { DataComponent } from '@/lib/api/data-components';
8
+ import type { MCPTool } from '@/lib/types/tools';
8
9
  import { SidePane as SidePaneLayout } from '../../layout/sidepane';
9
10
  import { edgeTypeMap } from '../configuration/edge-types';
10
11
  import {
@@ -31,6 +32,7 @@ interface SidePaneProps {
31
32
  dataComponentLookup: Record<string, DataComponent>;
32
33
  artifactComponentLookup: Record<string, ArtifactComponent>;
33
34
  selectedToolsLookup: Record<string, Record<string, string[]>>;
35
+ toolLookup: Record<string, MCPTool>;
34
36
  }
35
37
 
36
38
  export function SidePane({
@@ -42,6 +44,7 @@ export function SidePane({
42
44
  dataComponentLookup,
43
45
  artifactComponentLookup,
44
46
  selectedToolsLookup,
47
+ toolLookup,
45
48
  }: SidePaneProps) {
46
49
  const selectedNode = useNodesData(selectedNodeId || '');
47
50
  const edges = useEdges();
@@ -111,6 +114,7 @@ export function SidePane({
111
114
  <MCPServerNodeEditor
112
115
  selectedNode={selectedNode as Node<MCPNodeData>}
113
116
  selectedToolsLookup={selectedToolsLookup}
117
+ toolLookup={toolLookup}
114
118
  />
115
119
  );
116
120
  }
@@ -131,6 +135,7 @@ export function SidePane({
131
135
  getFieldErrorMessage,
132
136
  getFirstErrorField,
133
137
  selectedToolsLookup,
138
+ toolLookup,
134
139
  ]);
135
140
 
136
141
  const showBackButton = useMemo(() => {
@@ -1,28 +1,28 @@
1
- 'use client'
1
+ 'use client';
2
2
 
3
- import { zodResolver } from '@hookform/resolvers/zod'
4
- import { MCPTransportType } from '@inkeep/agents-core/client-exports'
5
- import { nanoid } from 'nanoid'
6
- import { useRouter } from 'next/navigation'
7
- import { useForm } from 'react-hook-form'
8
- import { toast } from 'sonner'
9
- import { GenericInput } from '@/components/form/generic-input'
10
- import { GenericSelect } from '@/components/form/generic-select'
11
- import { Button } from '@/components/ui/button'
12
- import { Form } from '@/components/ui/form'
13
- import type { Credential } from '@/lib/api/credentials'
14
- import { createMCPTool, syncMCPTool, updateMCPTool } from '@/lib/api/tools'
15
- import type { MCPTool } from '@/lib/types/tools'
16
- import { ActiveToolsSelector } from './active-tools-selector'
17
- import { type MCPToolFormData, mcpToolSchema } from './validation'
3
+ import { zodResolver } from '@hookform/resolvers/zod';
4
+ import { MCPTransportType } from '@inkeep/agents-core/client-exports';
5
+ import { nanoid } from 'nanoid';
6
+ import { useRouter } from 'next/navigation';
7
+ import { useForm } from 'react-hook-form';
8
+ import { toast } from 'sonner';
9
+ import { GenericInput } from '@/components/form/generic-input';
10
+ import { GenericSelect } from '@/components/form/generic-select';
11
+ import { Button } from '@/components/ui/button';
12
+ import { Form } from '@/components/ui/form';
13
+ import type { Credential } from '@/lib/api/credentials';
14
+ import { createMCPTool, updateMCPTool } from '@/lib/api/tools';
15
+ import type { MCPTool } from '@/lib/types/tools';
16
+ import { ActiveToolsSelector } from './active-tools-selector';
17
+ import { type MCPToolFormData, mcpToolSchema } from './validation';
18
18
 
19
19
  interface MCPServerFormProps {
20
- initialData?: MCPToolFormData
21
- mode?: 'create' | 'update'
22
- tool?: MCPTool
23
- credentials: Credential[]
24
- tenantId: string
25
- projectId: string
20
+ initialData?: MCPToolFormData;
21
+ mode?: 'create' | 'update';
22
+ tool?: MCPTool;
23
+ credentials: Credential[];
24
+ tenantId: string;
25
+ projectId: string;
26
26
  }
27
27
 
28
28
  const defaultValues: MCPToolFormData = {
@@ -41,7 +41,7 @@ const defaultValues: MCPToolFormData = {
41
41
  },
42
42
  imageUrl: '', // Initialize as empty string to avoid uncontrolled/controlled warning
43
43
  credentialReferenceId: 'none',
44
- }
44
+ };
45
45
 
46
46
  export function MCPServerForm({
47
47
  initialData,
@@ -51,7 +51,7 @@ export function MCPServerForm({
51
51
  tenantId,
52
52
  projectId,
53
53
  }: MCPServerFormProps) {
54
- const router = useRouter()
54
+ const router = useRouter();
55
55
 
56
56
  const form = useForm({
57
57
  resolver: zodResolver(mcpToolSchema),
@@ -59,9 +59,17 @@ export function MCPServerForm({
59
59
  ...defaultValues,
60
60
  ...initialData,
61
61
  },
62
- })
62
+ });
63
+
64
+ const { isSubmitting } = form.formState;
63
65
 
64
- const { isSubmitting } = form.formState
66
+ // Helper function to filter active tools against available tools
67
+ const getActiveTools = (toolsConfig: MCPToolFormData['config']['mcp']['toolsConfig']) => {
68
+ if (toolsConfig.type === 'all') return undefined;
69
+
70
+ const availableToolNames = tool?.availableTools?.map((t) => t.name) || [];
71
+ return toolsConfig.tools.filter((toolName) => availableToolNames.includes(toolName));
72
+ };
65
73
 
66
74
  const onSubmit = async (data: MCPToolFormData) => {
67
75
  try {
@@ -73,36 +81,29 @@ export function MCPServerForm({
73
81
  config: {
74
82
  ...data.config,
75
83
  mcp: {
76
- server: data.config.mcp.server,
77
- transport: data.config.mcp.transport,
78
- // Convert discriminated union to API format: type='all' → activeTools=undefined
79
- activeTools:
80
- data.config.mcp.toolsConfig.type === 'all'
81
- ? undefined
82
- : data.config.mcp.toolsConfig.tools,
84
+ ...data.config.mcp,
85
+ activeTools: getActiveTools(data.config.mcp.toolsConfig),
83
86
  },
84
87
  },
85
- }
88
+ };
86
89
 
87
90
  if (mode === 'update' && tool) {
88
- await updateMCPTool(tenantId, projectId, tool.id, transformedData)
89
- await syncMCPTool(tenantId, projectId, tool.id)
90
- toast.success('MCP server updated successfully')
91
- router.push(`/${tenantId}/projects/${projectId}/mcp-servers/${tool.id}`)
91
+ await updateMCPTool(tenantId, projectId, tool.id, transformedData);
92
+ toast.success('MCP server updated successfully');
93
+ router.push(`/${tenantId}/projects/${projectId}/mcp-servers/${tool.id}`);
92
94
  } else {
93
95
  const newTool = await createMCPTool(tenantId, projectId, {
94
96
  ...transformedData,
95
97
  id: nanoid(),
96
- })
97
- await syncMCPTool(tenantId, projectId, newTool.id)
98
- toast.success('MCP server created successfully')
99
- router.push(`/${tenantId}/projects/${projectId}/mcp-servers/${newTool.id}`)
98
+ });
99
+ toast.success('MCP server created successfully');
100
+ router.push(`/${tenantId}/projects/${projectId}/mcp-servers/${newTool.id}`);
100
101
  }
101
102
  } catch (error) {
102
- console.error(`Failed to ${mode} MCP tool:`, error)
103
- toast.error(`Failed to ${mode} MCP server. Please try again.`)
103
+ console.error(`Failed to ${mode} MCP tool:`, error);
104
+ toast.error(`Failed to ${mode} MCP server. Please try again.`);
104
105
  }
105
- }
106
+ };
106
107
 
107
108
  return (
108
109
  <Form {...form}>
@@ -171,5 +172,5 @@ export function MCPServerForm({
171
172
  </Button>
172
173
  </form>
173
174
  </Form>
174
- )
175
+ );
175
176
  }
@@ -160,6 +160,9 @@ export function MCPToolItem({
160
160
 
161
161
  {/* Key metrics in a structured layout */}
162
162
  <div className="flex items-center gap-2 flex-wrap">
163
+ {(tool.status === 'unhealthy' || tool.status === 'unknown') && (
164
+ <Badge variant="error">{tool.status}</Badge>
165
+ )}
163
166
  {tool.status === 'needs_auth' ? (
164
167
  <div className="flex items-center gap-2">
165
168
  <Badge variant="warning">Needs Login</Badge>
@@ -4,16 +4,46 @@ import { Lock, LockOpen, Pencil } from 'lucide-react';
4
4
  import Link from 'next/link';
5
5
  import { Badge } from '@/components/ui/badge';
6
6
  import { ExternalLink } from '@/components/ui/external-link';
7
+ import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip';
7
8
  import { useRuntimeConfig } from '@/contexts/runtime-config-context';
8
- import type { MCPTool } from "@/lib/types/tools";;
9
+ import type { MCPTool } from '@/lib/types/tools';
10
+
9
11
  import { cn } from '@/lib/utils';
10
12
  import { getOAuthLoginUrl } from '@/lib/utils/mcp-urls';
11
13
  import { getToolTypeAndName } from '@/lib/utils/mcp-utils';
12
14
  import { Button } from '../ui/button';
15
+ import { CopyableMultiLineCode } from '../ui/copyable-multi-line-code';
13
16
  import { CopyableSingleLineCode } from '../ui/copyable-single-line-code';
14
17
  import { AvailableToolsCard } from './available-tools-card';
15
18
  import { MCPToolImage } from './mcp-tool-image';
16
19
 
20
+ // Helper component to render active tool badges with availability status
21
+ function ActiveToolBadge({ toolName, isAvailable }: { toolName: string; isAvailable: boolean }) {
22
+ const badge = (
23
+ <Badge
24
+ variant={isAvailable ? 'primary' : 'warning'}
25
+ className={cn(
26
+ isAvailable ? '' : 'opacity-75 border-yellow-500 text-yellow-700 bg-yellow-50 normal-case'
27
+ )}
28
+ >
29
+ {toolName}
30
+ </Badge>
31
+ );
32
+
33
+ if (!isAvailable) {
34
+ return (
35
+ <Tooltip>
36
+ <TooltipTrigger asChild>{badge}</TooltipTrigger>
37
+ <TooltipContent>
38
+ <p>This tool is not available in the MCP server.</p>
39
+ </TooltipContent>
40
+ </Tooltip>
41
+ );
42
+ }
43
+
44
+ return badge;
45
+ }
46
+
17
47
  export function ViewMCPServerDetails({
18
48
  tool,
19
49
  tenantId,
@@ -147,33 +177,7 @@ export function ViewMCPServerDetails({
147
177
 
148
178
  {/* Basic Information */}
149
179
  <div className="space-y-8">
150
- <div className="grid grid-cols-1 md:grid-cols-2 gap-4 space-y-8">
151
- <div className="space-y-2">
152
- <ItemLabel>Name</ItemLabel>
153
- <ItemValue>{tool.name}</ItemValue>
154
- </div>
155
- <div className="space-y-2">
156
- <ItemLabel>Status</ItemLabel>
157
- <ItemValue className="items-center">
158
- {tool.status === 'needs_auth' ? (
159
- <Badge
160
- variant="outline"
161
- className="text-xs bg-amber-50 dark:bg-amber-900/20 text-amber-700 dark:text-amber-400 border-amber-200 dark:border-amber-800 cursor-pointer hover:bg-amber-100 dark:hover:bg-amber-900/30 hover:border-amber-300 dark:hover:border-amber-700 transition-colors"
162
- onClick={(e) => {
163
- e.preventDefault();
164
- e.stopPropagation();
165
- handleOAuthLogin(tool.id);
166
- }}
167
- >
168
- Click to Login
169
- </Badge>
170
- ) : (
171
- <Badge className="uppercase" variant={getStatusBadgeVariant(tool.status)}>
172
- {tool.status}
173
- </Badge>
174
- )}
175
- </ItemValue>
176
- </div>
180
+ <div className="grid grid-cols-1 md:grid-cols-2 gap-4">
177
181
  <div className="space-y-2">
178
182
  <ItemLabel>Created At</ItemLabel>
179
183
  <ItemValue>
@@ -200,6 +204,37 @@ export function ViewMCPServerDetails({
200
204
  </div>
201
205
  )}
202
206
 
207
+ <div className="space-y-2">
208
+ <ItemLabel>Status</ItemLabel>
209
+ <ItemValue className="items-center">
210
+ {tool.status === 'needs_auth' ? (
211
+ <Badge
212
+ variant="outline"
213
+ className="text-xs bg-amber-50 dark:bg-amber-900/20 text-amber-700 dark:text-amber-400 border-amber-200 dark:border-amber-800 cursor-pointer hover:bg-amber-100 dark:hover:bg-amber-900/30 hover:border-amber-300 dark:hover:border-amber-700 transition-colors"
214
+ onClick={(e) => {
215
+ e.preventDefault();
216
+ e.stopPropagation();
217
+ handleOAuthLogin(tool.id);
218
+ }}
219
+ >
220
+ Click to Login
221
+ </Badge>
222
+ ) : (
223
+ <Badge className="uppercase" variant={getStatusBadgeVariant(tool.status)}>
224
+ {tool.status}
225
+ </Badge>
226
+ )}
227
+ </ItemValue>
228
+ </div>
229
+
230
+ {/* Last Error */}
231
+ {tool.lastError && (
232
+ <div className="space-y-2">
233
+ <ItemLabel>Last Error</ItemLabel>
234
+ <CopyableMultiLineCode code={tool.lastError} />
235
+ </div>
236
+ )}
237
+
203
238
  {/* Server URL */}
204
239
  <div className="space-y-2">
205
240
  <ItemLabel>Server URL</ItemLabel>
@@ -258,22 +293,26 @@ export function ViewMCPServerDetails({
258
293
  tool.availableTools && tool.availableTools.length > 0 ? (
259
294
  <div className="flex flex-wrap gap-2">
260
295
  {tool.availableTools.map((toolInfo) => (
261
- <Badge key={toolInfo.name} className="" variant="primary">
262
- {toolInfo.name}
263
- </Badge>
296
+ <ActiveToolBadge
297
+ key={toolInfo.name}
298
+ toolName={toolInfo.name}
299
+ isAvailable={true} // All available tools are shown, so they're all available
300
+ />
264
301
  ))}
265
302
  </div>
266
303
  ) : (
267
304
  <div className="text-sm text-muted-foreground">No tools available</div>
268
305
  )
269
306
  ) : tool.config.mcp.activeTools && tool.config.mcp.activeTools.length > 0 ? (
270
- // Specific tools are active
307
+ // Specific tools are active - check availability
271
308
  <div className="flex flex-wrap gap-2">
272
- {tool.config.mcp.activeTools.map((toolName) => (
273
- <Badge key={toolName} className="" variant="primary">
274
- {toolName}
275
- </Badge>
276
- ))}
309
+ {tool.config.mcp.activeTools.map((toolName) => {
310
+ const isAvailable =
311
+ tool.availableTools?.some((t) => t.name === toolName) ?? false;
312
+ return (
313
+ <ActiveToolBadge key={toolName} toolName={toolName} isAvailable={isAvailable} />
314
+ );
315
+ })}
277
316
  </div>
278
317
  ) : (
279
318
  // No tools are active (empty array)
@@ -0,0 +1,17 @@
1
+ import { CopyButton } from '@/components/ui/copy-button';
2
+ import { ScrollArea } from '@/components/ui/scroll-area';
3
+
4
+ export function CopyableMultiLineCode({ code }: { code: string }) {
5
+ return (
6
+ <div className="relative bg-muted/50 dark:bg-muted/30 rounded-md border overflow-hidden">
7
+ <ScrollArea className="h-20 w-full">
8
+ <div className="px-3 py-2 pr-8">
9
+ <pre className="text-sm text-foreground/90 font-mono whitespace-pre-wrap break-words leading-5">
10
+ {code}
11
+ </pre>
12
+ </div>
13
+ </ScrollArea>
14
+ <CopyButton className="absolute right-1 top-1 z-10" textToCopy={code} />
15
+ </div>
16
+ );
17
+ }