@inkeep/agents-manage-ui 0.0.0-dev-20251021164445 → 0.0.0-dev-20251021181503

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 (287) 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 +219 -165
  3. package/.next/standalone/agents-manage-ui/.next/app-path-routes-manifest.json +10 -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 +3 -3
  6. package/.next/standalone/agents-manage-ui/.next/react-loadable-manifest.json +9 -9
  7. package/.next/standalone/agents-manage-ui/.next/routes-manifest.json +38 -0
  8. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/page.js +2 -2
  9. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/page.js.nft.json +1 -1
  10. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/page_client-reference-manifest.js +1 -1
  11. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/[agentId]/page.js +2 -2
  12. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/[agentId]/page.js.nft.json +1 -1
  13. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/[agentId]/page_client-reference-manifest.js +1 -1
  14. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/new/page.js +2 -2
  15. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/new/page.js.nft.json +1 -1
  16. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/new/page_client-reference-manifest.js +1 -1
  17. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/page.js +2 -2
  18. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/page.js.nft.json +1 -1
  19. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/page_client-reference-manifest.js +1 -1
  20. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/api-keys/page.js +3 -3
  21. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/api-keys/page.js.nft.json +1 -1
  22. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/api-keys/page_client-reference-manifest.js +1 -1
  23. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page.js +2 -2
  24. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page.js.nft.json +1 -1
  25. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page_client-reference-manifest.js +1 -1
  26. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/new/page.js +1 -1
  27. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/new/page.js.nft.json +1 -1
  28. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/new/page_client-reference-manifest.js +1 -1
  29. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/page.js +2 -2
  30. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/page.js.nft.json +1 -1
  31. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/page_client-reference-manifest.js +1 -1
  32. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/page.js +2 -2
  33. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/page.js.nft.json +1 -1
  34. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/page_client-reference-manifest.js +1 -1
  35. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/new/page.js +2 -2
  36. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/new/page.js.nft.json +1 -1
  37. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/new/page_client-reference-manifest.js +1 -1
  38. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/page.js +2 -2
  39. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/page.js.nft.json +1 -1
  40. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/page_client-reference-manifest.js +1 -1
  41. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page.js +1 -1
  42. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page.js.nft.json +1 -1
  43. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page_client-reference-manifest.js +1 -1
  44. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page.js +2 -2
  45. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page.js.nft.json +1 -1
  46. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page_client-reference-manifest.js +1 -1
  47. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/page.js +1 -1
  48. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/page.js.nft.json +1 -1
  49. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/page_client-reference-manifest.js +1 -1
  50. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page.js +2 -2
  51. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page.js.nft.json +1 -1
  52. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page_client-reference-manifest.js +1 -1
  53. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/page.js +2 -2
  54. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/page.js.nft.json +1 -1
  55. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/page_client-reference-manifest.js +1 -1
  56. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/page.js +2 -2
  57. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/page.js.nft.json +1 -1
  58. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/page_client-reference-manifest.js +1 -1
  59. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/edit/page.js +2 -0
  60. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/edit/page.js.nft.json +1 -0
  61. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/edit/page_client-reference-manifest.js +1 -0
  62. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/page.js +2 -0
  63. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/page.js.nft.json +1 -0
  64. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/page_client-reference-manifest.js +1 -0
  65. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/new/page.js +2 -0
  66. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/new/page.js.nft.json +1 -0
  67. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/new/page_client-reference-manifest.js +1 -0
  68. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/page.js +2 -0
  69. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/page.js.nft.json +1 -0
  70. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/page_client-reference-manifest.js +1 -0
  71. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page.js +2 -2
  72. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page.js.nft.json +1 -1
  73. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page_client-reference-manifest.js +1 -1
  74. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page.js +2 -2
  75. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page.js.nft.json +1 -1
  76. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page_client-reference-manifest.js +1 -1
  77. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/new/page.js +2 -2
  78. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/new/page.js.nft.json +1 -1
  79. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/new/page_client-reference-manifest.js +1 -1
  80. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/page.js +2 -2
  81. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/page.js.nft.json +1 -1
  82. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/page_client-reference-manifest.js +1 -1
  83. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/page.js +2 -2
  84. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/page.js.nft.json +1 -1
  85. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/page_client-reference-manifest.js +1 -1
  86. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/settings/page.js +2 -2
  87. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/settings/page.js.nft.json +1 -1
  88. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/settings/page_client-reference-manifest.js +1 -1
  89. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page.js +2 -2
  90. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page.js.nft.json +1 -1
  91. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page_client-reference-manifest.js +1 -1
  92. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page.js +2 -2
  93. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page.js.nft.json +1 -1
  94. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page_client-reference-manifest.js +1 -1
  95. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/page.js +3 -3
  96. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/page.js.nft.json +1 -1
  97. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/page_client-reference-manifest.js +1 -1
  98. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/page.js +2 -2
  99. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/page.js.nft.json +1 -1
  100. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/page_client-reference-manifest.js +1 -1
  101. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found/page.js +2 -2
  102. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found/page.js.nft.json +1 -1
  103. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  104. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found.html +1 -1
  105. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found.rsc +9 -9
  106. package/.next/standalone/agents-manage-ui/.next/server/app/api/data-components/[dataComponentId]/generate-preview/route_client-reference-manifest.js +1 -1
  107. package/.next/standalone/agents-manage-ui/.next/server/app/api/signoz/conversations/[conversationId]/route_client-reference-manifest.js +1 -1
  108. package/.next/standalone/agents-manage-ui/.next/server/app/api/signoz/route_client-reference-manifest.js +1 -1
  109. package/.next/standalone/agents-manage-ui/.next/server/app/page.js +2 -2
  110. package/.next/standalone/agents-manage-ui/.next/server/app/page.js.nft.json +1 -1
  111. package/.next/standalone/agents-manage-ui/.next/server/app/page_client-reference-manifest.js +1 -1
  112. package/.next/standalone/agents-manage-ui/.next/server/app-paths-manifest.json +10 -6
  113. package/.next/standalone/agents-manage-ui/.next/server/chunks/{7953.js → 1653.js} +2 -2
  114. package/.next/standalone/agents-manage-ui/.next/server/chunks/1735.js +1 -1
  115. package/.next/standalone/agents-manage-ui/.next/server/chunks/2634.js +1 -0
  116. package/.next/standalone/agents-manage-ui/.next/server/chunks/2848.js +123 -0
  117. package/.next/standalone/agents-manage-ui/.next/server/chunks/{4414.js → 2912.js} +1 -1
  118. package/.next/standalone/agents-manage-ui/.next/server/chunks/3086.js +196 -0
  119. package/.next/standalone/agents-manage-ui/.next/server/chunks/3468.js +1 -1
  120. package/.next/standalone/agents-manage-ui/.next/server/chunks/3547.js +1 -1
  121. package/.next/standalone/agents-manage-ui/.next/server/chunks/4629.js +1 -1
  122. package/.next/standalone/agents-manage-ui/.next/server/chunks/4944.js +1 -0
  123. package/.next/standalone/agents-manage-ui/.next/server/chunks/{9222.js → 5478.js} +2 -2
  124. package/.next/standalone/agents-manage-ui/.next/server/chunks/5732.js +1 -1
  125. package/.next/standalone/agents-manage-ui/.next/server/chunks/5793.js +1 -1
  126. package/.next/standalone/agents-manage-ui/.next/server/chunks/6035.js +1 -1
  127. package/.next/standalone/agents-manage-ui/.next/server/chunks/{3291.js → 6060.js} +1 -1
  128. package/.next/standalone/agents-manage-ui/.next/server/chunks/6565.js +1 -0
  129. package/.next/standalone/agents-manage-ui/.next/server/chunks/6721.js +1 -1
  130. package/.next/standalone/agents-manage-ui/.next/server/chunks/7013.js +1 -0
  131. package/.next/standalone/agents-manage-ui/.next/server/chunks/{9327.js → 7440.js} +1 -1
  132. package/.next/standalone/agents-manage-ui/.next/server/chunks/7988.js +2 -2
  133. package/.next/standalone/agents-manage-ui/.next/server/chunks/7990.js +1 -1
  134. package/.next/standalone/agents-manage-ui/.next/server/chunks/8860.js +1 -1
  135. package/.next/standalone/agents-manage-ui/.next/server/chunks/9394.js +14 -1
  136. package/.next/standalone/agents-manage-ui/.next/server/middleware-build-manifest.js +1 -1
  137. package/.next/standalone/agents-manage-ui/.next/server/middleware-manifest.json +5 -5
  138. package/.next/standalone/agents-manage-ui/.next/server/middleware-react-loadable-manifest.js +1 -1
  139. package/.next/standalone/agents-manage-ui/.next/server/pages/404.html +1 -1
  140. package/.next/standalone/agents-manage-ui/.next/server/pages/500.html +1 -1
  141. package/.next/standalone/agents-manage-ui/.next/server/server-reference-manifest.js +1 -1
  142. package/.next/standalone/agents-manage-ui/.next/server/server-reference-manifest.json +1 -1
  143. package/.next/standalone/agents-manage-ui/.next/static/chunks/13328-7cdffb43af522e3b.js +1 -0
  144. package/.next/standalone/agents-manage-ui/.next/static/chunks/{16631-e313c6f18339824b.js → 16631-6020bdaf3d69b1d9.js} +1 -1
  145. package/.next/standalone/agents-manage-ui/.next/static/chunks/20837-bb4579d108ec132f.js +1 -0
  146. package/.next/standalone/agents-manage-ui/.next/static/chunks/{50285-9138bb26e62daef6.js → 23610-476f03c272ca3950.js} +1 -1
  147. package/.next/standalone/agents-manage-ui/.next/static/chunks/24380.bf03581f9f4f3543.js +1 -0
  148. package/.next/standalone/agents-manage-ui/.next/static/chunks/2450-e80bfc42611f5806.js +1 -0
  149. package/.next/standalone/agents-manage-ui/.next/static/chunks/25672-93f2aa7eb2408291.js +1 -0
  150. package/.next/standalone/agents-manage-ui/.next/static/chunks/{4698.3051cd4ec04e2aa4.js → 4698.c8eaa281e28f5497.js} +1 -1
  151. package/.next/standalone/agents-manage-ui/.next/static/chunks/{4875-306209ac5547e001.js → 4875-6cc31870e1b4f78e.js} +1 -1
  152. package/.next/standalone/agents-manage-ui/.next/static/chunks/50503-8147daf12b637511.js +1 -0
  153. package/.next/standalone/agents-manage-ui/.next/static/chunks/54244-d5b0e0495a8ba6ff.js +1 -0
  154. package/.next/standalone/agents-manage-ui/.next/static/chunks/{74811-ceebff5ae7c61a66.js → 57812-14885c4aa73b748e.js} +1 -1
  155. package/.next/standalone/agents-manage-ui/.next/static/chunks/{12397-bee57bbef5d5a7e3.js → 74216-541bdcf5750174cf.js} +1 -1
  156. package/.next/standalone/agents-manage-ui/.next/static/chunks/{87193-3d26f0490b9b0a29.js → 76125-20d7ba477878f956.js} +3 -3
  157. package/.next/standalone/agents-manage-ui/.next/static/chunks/{63076-75f725355363164e.js → 90777-529736d21bc531c4.js} +1 -1
  158. package/.next/standalone/agents-manage-ui/.next/static/chunks/92580-8da57347f4ec8f0d.js +1 -0
  159. package/.next/standalone/agents-manage-ui/.next/static/chunks/99458-561dd09c8e46e93b.js +2 -0
  160. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/[agentId]/{page-670ed3b6247fd9d0.js → page-cf6d8b309524a6a4.js} +1 -1
  161. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/new/{page-586222923f1e95ff.js → page-c4db7bcff51d7bcd.js} +1 -1
  162. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/page-0198738719aade6d.js +1 -0
  163. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/api-keys/page-e2ef59e68782fef0.js +1 -0
  164. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page-5a2f0b3eb7b9bede.js +1 -0
  165. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/new/page-62ac2a74e0e3c202.js +1 -0
  166. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/page-ee610980e823a381.js +1 -0
  167. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/{page-9af2eed83637e3da.js → page-81fb8f0e0da184b2.js} +1 -1
  168. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/new/page-a5dd61821ccc3368.js +1 -0
  169. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/{page-54bd64dd19bcd7c1.js → page-9b60c2a4d919b4b8.js} +1 -1
  170. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page-06480b4647090c3d.js +1 -0
  171. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page-8b956cdee22f9770.js +1 -0
  172. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page-df1ac1dca5b29f1d.js +1 -0
  173. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/{page-c4a8e9a16d05a8a0.js → page-921320ba530d1773.js} +1 -1
  174. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/edit/page-bd0cead36aa29cda.js +1 -0
  175. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/page-ec2d6dba69b9f4c6.js +1 -0
  176. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/new/page-a1f80beb45dc2276.js +1 -0
  177. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/page-6502a0a11215e5cf.js +1 -0
  178. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/{page-00d3bd4e0e0283ca.js → page-c990397341b90672.js} +1 -1
  179. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page-4f8d9541b96da7d8.js +1 -0
  180. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/new/{page-9ebdf035f876d4f1.js → page-03c7faf211e2744e.js} +1 -1
  181. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/page-12a8345548e2abc2.js +1 -0
  182. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/settings/page-535499d8ef464a34.js +1 -0
  183. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/ai-calls/page-e1b396ac418b8a24.js +1 -0
  184. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/page-fe6a59c18be829f1.js +1 -0
  185. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/page-53f9be3e392609d2.js +1 -0
  186. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/layout-e62e04f2573a78d7.js +1 -0
  187. package/.next/standalone/agents-manage-ui/.next/static/chunks/{webpack-d65a3369c23bc1a6.js → webpack-f5115703464e7f56.js} +1 -1
  188. package/.next/standalone/agents-manage-ui/.next/static/css/feeaa90d59b8c0fb.css +1 -0
  189. package/.next/standalone/agents-manage-ui/package.json +2 -2
  190. package/.next/standalone/packages/agents-core/package.json +1 -1
  191. package/package.json +5 -5
  192. package/src/app/[tenantId]/page.tsx +1 -1
  193. package/src/app/[tenantId]/projects/[projectId]/agents/[agentId]/page.tsx +21 -15
  194. package/src/app/[tenantId]/projects/[projectId]/agents/new/page.tsx +14 -10
  195. package/src/app/[tenantId]/projects/[projectId]/agents/page.tsx +1 -5
  196. package/src/app/[tenantId]/projects/[projectId]/api-keys/page.tsx +1 -5
  197. package/src/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page.tsx +3 -9
  198. package/src/app/[tenantId]/projects/[projectId]/artifacts/new/page.tsx +3 -5
  199. package/src/app/[tenantId]/projects/[projectId]/artifacts/page.tsx +3 -5
  200. package/src/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/page.tsx +3 -9
  201. package/src/app/[tenantId]/projects/[projectId]/components/new/page.tsx +3 -5
  202. package/src/app/[tenantId]/projects/[projectId]/components/page.tsx +3 -5
  203. package/src/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page.tsx +1 -7
  204. package/src/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page.tsx +1 -3
  205. package/src/app/[tenantId]/projects/[projectId]/credentials/new/page.tsx +3 -4
  206. package/src/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page.tsx +3 -9
  207. package/src/app/[tenantId]/projects/[projectId]/credentials/new/providers/page.tsx +1 -3
  208. package/src/app/[tenantId]/projects/[projectId]/credentials/page.tsx +1 -3
  209. package/src/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/edit/page.tsx +86 -0
  210. package/src/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/page.tsx +52 -0
  211. package/src/app/[tenantId]/projects/[projectId]/external-agents/new/page.tsx +43 -0
  212. package/src/app/[tenantId]/projects/[projectId]/external-agents/page.tsx +64 -0
  213. package/src/app/[tenantId]/projects/[projectId]/layout.tsx +4 -7
  214. package/src/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page.tsx +3 -5
  215. package/src/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page.tsx +3 -5
  216. package/src/app/[tenantId]/projects/[projectId]/mcp-servers/new/layout.tsx +1 -4
  217. package/src/app/[tenantId]/projects/[projectId]/mcp-servers/new/page.tsx +1 -3
  218. package/src/app/[tenantId]/projects/[projectId]/mcp-servers/page.tsx +1 -3
  219. package/src/app/[tenantId]/projects/[projectId]/settings/page.tsx +3 -8
  220. package/src/app/[tenantId]/projects/page.tsx +1 -1
  221. package/src/app/api/data-components/[dataComponentId]/generate-preview/route.ts +4 -7
  222. package/src/app/api/signoz/conversations/[conversationId]/route.ts +3 -6
  223. package/src/components/agent/agent.tsx +43 -1
  224. package/src/components/agent/configuration/node-types.tsx +18 -5
  225. package/src/components/agent/node-library/node-library.tsx +1 -1
  226. package/src/components/agent/nodes/external-agent-node.tsx +8 -12
  227. package/src/components/agent/nodes/{mcp-placeholder-node.tsx → placeholder-node.tsx} +8 -4
  228. package/src/components/agent/sidepane/nodes/external-agent-node-editor.tsx +72 -17
  229. package/src/components/agent/sidepane/nodes/external-agent-selector/external-agent-item.tsx +39 -0
  230. package/src/components/agent/sidepane/nodes/external-agent-selector/external-agent-selector.tsx +114 -0
  231. package/src/components/agent/sidepane/nodes/external-agent-selector/loading.tsx +26 -0
  232. package/src/components/agent/sidepane/nodes/sub-agent-node-editor.tsx +22 -4
  233. package/src/components/agent/sidepane/sidepane.tsx +9 -1
  234. package/src/components/credentials/credential-resources-list.tsx +146 -0
  235. package/src/components/credentials/views/credential-form-validation.ts +1 -0
  236. package/src/components/credentials/views/credential-form.tsx +96 -5
  237. package/src/components/credentials/views/edit-credential-form.tsx +4 -3
  238. package/src/components/credentials/views/new-credential-form.tsx +13 -0
  239. package/src/components/external-agents/external-agent-item.tsx +169 -0
  240. package/src/components/external-agents/external-agents-list.tsx +29 -0
  241. package/src/components/external-agents/form/external-agent-form.tsx +146 -0
  242. package/src/components/external-agents/form/validation.ts +10 -0
  243. package/src/components/external-agents/view-external-agent-details.tsx +129 -0
  244. package/src/components/sidebar-nav/sidebar-nav.tsx +6 -0
  245. package/src/features/agent/domain/deserialize.ts +144 -111
  246. package/src/features/agent/domain/serialize.ts +152 -78
  247. package/src/features/agent/state/use-agent-store.ts +27 -3
  248. package/src/hooks/use-node-editor.ts +18 -1
  249. package/src/lib/actions/agent-full.ts +1 -1
  250. package/src/lib/actions/external-agents.ts +73 -0
  251. package/src/lib/api/credentials.ts +2 -0
  252. package/src/lib/api/external-agents.ts +121 -0
  253. package/src/lib/types/agent-full.ts +4 -2
  254. package/src/lib/types/external-agents.ts +2 -0
  255. package/src/lib/utils/external-agent-utils.ts +33 -0
  256. package/.next/standalone/agents-manage-ui/.next/server/chunks/1042.js +0 -14
  257. package/.next/standalone/agents-manage-ui/.next/server/chunks/1176.js +0 -1
  258. package/.next/standalone/agents-manage-ui/.next/server/chunks/4529.js +0 -123
  259. package/.next/standalone/agents-manage-ui/.next/server/chunks/5333.js +0 -196
  260. package/.next/standalone/agents-manage-ui/.next/server/chunks/6870.js +0 -1
  261. package/.next/standalone/agents-manage-ui/.next/static/chunks/13328-851660ac17cd9821.js +0 -1
  262. package/.next/standalone/agents-manage-ui/.next/static/chunks/20837-2dce45935d70f504.js +0 -1
  263. package/.next/standalone/agents-manage-ui/.next/static/chunks/24380.e6f7d95645e17d66.js +0 -1
  264. package/.next/standalone/agents-manage-ui/.next/static/chunks/300-efa35eafe593b090.js +0 -1
  265. package/.next/standalone/agents-manage-ui/.next/static/chunks/50324-6c2b8627fccd09fe.js +0 -1
  266. package/.next/standalone/agents-manage-ui/.next/static/chunks/61089-ddd70e2d283804f5.js +0 -1
  267. package/.next/standalone/agents-manage-ui/.next/static/chunks/86507-340cc6112e9218de.js +0 -2
  268. package/.next/standalone/agents-manage-ui/.next/static/chunks/89441-916e04ec6f04b028.js +0 -1
  269. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/page-f07f6d11da5725a3.js +0 -1
  270. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/api-keys/page-b136bb9a9b117810.js +0 -1
  271. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page-efbbd62ebe386fbb.js +0 -1
  272. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/new/page-2ad8069946c69ed8.js +0 -1
  273. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/page-b274518e243d4b2b.js +0 -1
  274. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/new/page-dbbbbe86b24c7fbe.js +0 -1
  275. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page-56e1531226b4bde4.js +0 -1
  276. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page-35b4a7d0a4152774.js +0 -1
  277. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page-140e69cb775bd6fb.js +0 -1
  278. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page-cd7a9453e707ee0c.js +0 -1
  279. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/page-c42f1ec825bdc202.js +0 -1
  280. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/settings/page-7057bfdd0c6cbd6a.js +0 -1
  281. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/ai-calls/page-3b222f3ae3101ba8.js +0 -1
  282. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/page-625d0b8a1e577507.js +0 -1
  283. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/page-6c2aa64045d8e702.js +0 -1
  284. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/layout-f3f27c9da18c75e1.js +0 -1
  285. package/.next/standalone/agents-manage-ui/.next/static/css/86b7c14b860f21e3.css +0 -1
  286. /package/.next/standalone/agents-manage-ui/.next/static/{-q1f8eaP93rBncFeN2wk_ → _hhV2vscjy4Dr-g-NJY1d}/_buildManifest.js +0 -0
  287. /package/.next/standalone/agents-manage-ui/.next/static/{-q1f8eaP93rBncFeN2wk_ → _hhV2vscjy4Dr-g-NJY1d}/_ssgManifest.js +0 -0
@@ -7,7 +7,7 @@ import type { ArtifactComponent } from '@/lib/api/artifact-components';
7
7
  import type { Credential } from '@/lib/api/credentials';
8
8
  import type { DataComponent } from '@/lib/api/data-components';
9
9
  import { SidePane as SidePaneLayout } from '../../layout/sidepane';
10
- import type { AgentToolConfigLookup } from '../agent';
10
+ import type { AgentToolConfigLookup, SubAgentExternalAgentConfigLookup } from '../agent';
11
11
  import { edgeTypeMap } from '../configuration/edge-types';
12
12
  import {
13
13
  type AgentNodeData,
@@ -22,6 +22,7 @@ import { EditorLoadingSkeleton } from './editor-loading-skeleton';
22
22
  import { Heading } from './heading';
23
23
  import MetadataEditor from './metadata/metadata-editor';
24
24
  import { ExternalAgentNodeEditor } from './nodes/external-agent-node-editor';
25
+ import { ExternalAgentSelector } from './nodes/external-agent-selector/external-agent-selector';
25
26
  import { FunctionToolNodeEditor } from './nodes/function-tool-node-editor';
26
27
  import { MCPServerNodeEditor } from './nodes/mcp-node-editor';
27
28
  import { MCPSelector } from './nodes/mcp-selector/mcp-selector';
@@ -36,6 +37,7 @@ interface SidePaneProps {
36
37
  dataComponentLookup: Record<string, DataComponent>;
37
38
  artifactComponentLookup: Record<string, ArtifactComponent>;
38
39
  agentToolConfigLookup: AgentToolConfigLookup;
40
+ subAgentExternalAgentConfigLookup: SubAgentExternalAgentConfigLookup;
39
41
  credentialLookup: Record<string, Credential>;
40
42
  }
41
43
 
@@ -48,6 +50,7 @@ export function SidePane({
48
50
  dataComponentLookup,
49
51
  artifactComponentLookup,
50
52
  agentToolConfigLookup,
53
+ subAgentExternalAgentConfigLookup,
51
54
  credentialLookup,
52
55
  }: SidePaneProps) {
53
56
  const selectedNode = useNodesData(selectedNodeId || '');
@@ -114,10 +117,14 @@ export function SidePane({
114
117
  <ExternalAgentNodeEditor
115
118
  selectedNode={selectedNode as Node<ExternalAgentNodeData>}
116
119
  credentialLookup={credentialLookup}
120
+ subAgentExternalAgentConfigLookup={subAgentExternalAgentConfigLookup}
117
121
  errorHelpers={errorHelpers}
118
122
  />
119
123
  );
120
124
  }
125
+ case NodeType.ExternalAgentPlaceholder: {
126
+ return <ExternalAgentSelector selectedNode={selectedNode as Node} />;
127
+ }
121
128
  case NodeType.MCPPlaceholder: {
122
129
  return <MCPSelector selectedNode={selectedNode as Node} />;
123
130
  }
@@ -154,6 +161,7 @@ export function SidePane({
154
161
  getFirstErrorField,
155
162
  agentToolConfigLookup,
156
163
  credentialLookup,
164
+ subAgentExternalAgentConfigLookup,
157
165
  ]);
158
166
 
159
167
  const showBackButton = useMemo(() => {
@@ -0,0 +1,146 @@
1
+ import type { ExternalAgentApiSelect, McpTool } from '@inkeep/agents-core';
2
+ import Link from 'next/link';
3
+ import { Label } from '@/components/ui/label';
4
+
5
+ interface CredentialResourcesListProps {
6
+ tools?: McpTool[];
7
+ externalAgents?: ExternalAgentApiSelect[];
8
+ label?: string;
9
+ tenantId?: string;
10
+ projectId?: string;
11
+ }
12
+
13
+ interface ToolItemProps {
14
+ tool: McpTool;
15
+ tenantId?: string;
16
+ projectId?: string;
17
+ }
18
+
19
+ interface ExternalAgentItemProps {
20
+ externalAgent: ExternalAgentApiSelect;
21
+ tenantId?: string;
22
+ projectId?: string;
23
+ }
24
+
25
+ function ToolItem({ tool, tenantId, projectId }: ToolItemProps) {
26
+ const canNavigate = tenantId && projectId;
27
+ const href = canNavigate
28
+ ? `/${tenantId}/projects/${projectId}/mcp-servers/${tool.id}`
29
+ : undefined;
30
+
31
+ const content = (
32
+ <>
33
+ <div className="flex items-center gap-3">
34
+ <div>
35
+ <p className="font-medium text-sm">{tool.name}</p>
36
+ <p className="text-xs text-muted-foreground">
37
+ {tool.config.type === 'mcp' ? tool.config.mcp.server.url : ''}
38
+ </p>
39
+ </div>
40
+ </div>
41
+ </>
42
+ );
43
+
44
+ if (canNavigate && href) {
45
+ return (
46
+ <Link
47
+ href={href}
48
+ className="flex items-center justify-between p-3 bg-background border rounded-md hover:bg-muted/50 transition-colors cursor-pointer"
49
+ >
50
+ {content}
51
+ </Link>
52
+ );
53
+ }
54
+
55
+ return (
56
+ <div className="flex items-center justify-between p-3 bg-background border rounded-md">
57
+ {content}
58
+ </div>
59
+ );
60
+ }
61
+
62
+ function ExternalAgentItem({ externalAgent, tenantId, projectId }: ExternalAgentItemProps) {
63
+ const canNavigate = tenantId && projectId;
64
+ const href = canNavigate
65
+ ? `/${tenantId}/projects/${projectId}/external-agents/${externalAgent.id}`
66
+ : undefined;
67
+
68
+ const content = (
69
+ <>
70
+ <div className="flex items-center gap-3">
71
+ <div>
72
+ <p className="font-medium text-sm">{externalAgent.name}</p>
73
+ <p className="text-xs text-muted-foreground">{externalAgent.baseUrl}</p>
74
+ </div>
75
+ </div>
76
+ </>
77
+ );
78
+
79
+ if (canNavigate && href) {
80
+ return (
81
+ <Link
82
+ href={href}
83
+ className="flex items-center justify-between p-3 bg-background border rounded-md hover:bg-muted/50 transition-colors cursor-pointer"
84
+ >
85
+ {content}
86
+ </Link>
87
+ );
88
+ }
89
+
90
+ return (
91
+ <div className="flex items-center justify-between p-3 bg-background border rounded-md">
92
+ {content}
93
+ </div>
94
+ );
95
+ }
96
+
97
+ export function CredentialResourcesList({
98
+ tools,
99
+ externalAgents,
100
+ label = 'Resources using this credential',
101
+ tenantId,
102
+ projectId,
103
+ }: CredentialResourcesListProps) {
104
+ const hasTools = tools && tools.length > 0;
105
+ const hasExternalAgents = externalAgents && externalAgents.length > 0;
106
+ const hasAnyResources = hasTools || hasExternalAgents;
107
+
108
+ return (
109
+ <div className="space-y-3">
110
+ <Label>{label}</Label>
111
+ {hasAnyResources ? (
112
+ <div className="space-y-4">
113
+ {hasTools && (
114
+ <div className="space-y-2">
115
+ <p className="text-xs font-medium text-muted-foreground uppercase tracking-wide">
116
+ MCP Servers
117
+ </p>
118
+ {tools.map((tool) => (
119
+ <ToolItem key={tool.id} tool={tool} tenantId={tenantId} projectId={projectId} />
120
+ ))}
121
+ </div>
122
+ )}
123
+ {hasExternalAgents && (
124
+ <div className="space-y-2">
125
+ <p className="text-xs font-medium text-muted-foreground uppercase tracking-wide">
126
+ External Agents
127
+ </p>
128
+ {externalAgents.map((agent) => (
129
+ <ExternalAgentItem
130
+ key={agent.id}
131
+ externalAgent={agent}
132
+ tenantId={tenantId}
133
+ projectId={projectId}
134
+ />
135
+ ))}
136
+ </div>
137
+ )}
138
+ </div>
139
+ ) : (
140
+ <div className="text-sm text-muted-foreground p-3 py-2 bg-gray-100/80 dark:bg-sidebar rounded-md">
141
+ No resources are currently using this credential
142
+ </div>
143
+ )}
144
+ </div>
145
+ );
146
+ }
@@ -12,6 +12,7 @@ export const credentialFormSchema = z.object({
12
12
  credentialStoreId: z.string().min(1, 'Please select a credential store'),
13
13
  credentialStoreType: z.enum(CredentialStoreType),
14
14
  selectedTool: z.string().optional(),
15
+ selectedExternalAgent: z.string().optional(),
15
16
  });
16
17
 
17
18
  export type CredentialFormData = z.output<typeof credentialFormSchema>;
@@ -12,11 +12,10 @@ import { Button } from '@/components/ui/button';
12
12
  import { Checkbox } from '@/components/ui/checkbox';
13
13
  import { Form } from '@/components/ui/form';
14
14
  import { InfoCard } from '@/components/ui/info-card';
15
- import {
16
- type CredentialStoreStatus,
17
- listCredentialStores,
18
- } from '@/lib/api/credentialStores';
15
+ import { type CredentialStoreStatus, listCredentialStores } from '@/lib/api/credentialStores';
16
+ import { fetchExternalAgents } from '@/lib/api/external-agents';
19
17
  import { fetchMCPTools } from '@/lib/api/tools';
18
+ import type { ExternalAgent } from '@/lib/types/external-agents';
20
19
  import type { MCPTool } from '@/lib/types/tools';
21
20
  import { type CredentialFormData, credentialFormSchema } from './credential-form-validation';
22
21
 
@@ -36,12 +35,16 @@ const defaultValues: CredentialFormData = {
36
35
  credentialStoreId: '',
37
36
  credentialStoreType: 'nango',
38
37
  selectedTool: undefined,
38
+ selectedExternalAgent: undefined,
39
39
  };
40
40
 
41
41
  export function CredentialForm({ onCreateCredential, tenantId, projectId }: CredentialFormProps) {
42
42
  const [availableMCPServers, setAvailableMCPServers] = useState<MCPTool[]>([]);
43
43
  const [toolsLoading, setToolsLoading] = useState(true);
44
44
  const [shouldLinkToServer, setShouldLinkToServer] = useState(false);
45
+ const [availableExternalAgents, setAvailableExternalAgents] = useState<ExternalAgent[]>([]);
46
+ const [externalAgentsLoading, setExternalAgentsLoading] = useState(true);
47
+ const [shouldLinkToExternalAgent, setShouldLinkToExternalAgent] = useState(false);
45
48
  const [credentialStores, setCredentialStores] = useState<CredentialStoreStatus[]>([]);
46
49
  const [storesLoading, setStoresLoading] = useState(true);
47
50
 
@@ -68,6 +71,24 @@ export function CredentialForm({ onCreateCredential, tenantId, projectId }: Cred
68
71
  loadAvailableTools();
69
72
  }, [tenantId, projectId]);
70
73
 
74
+ useEffect(() => {
75
+ const loadAvailableExternalAgents = async () => {
76
+ try {
77
+ const allExternalAgents = await fetchExternalAgents(tenantId, projectId);
78
+ const externalAgentsWithoutCredentials = allExternalAgents.filter(
79
+ (agent) => !agent.credentialReferenceId
80
+ );
81
+ setAvailableExternalAgents(externalAgentsWithoutCredentials);
82
+ } catch (err) {
83
+ console.error('Failed to load external agents:', err);
84
+ } finally {
85
+ setExternalAgentsLoading(false);
86
+ }
87
+ };
88
+
89
+ loadAvailableExternalAgents();
90
+ }, [tenantId, projectId]);
91
+
71
92
  useEffect(() => {
72
93
  const loadCredentialStores = async () => {
73
94
  try {
@@ -87,7 +108,9 @@ export function CredentialForm({ onCreateCredential, tenantId, projectId }: Cred
87
108
  const currentStoreId = form.getValues('credentialStoreId');
88
109
  if (!currentStoreId) {
89
110
  form.setValue('credentialStoreId', preferredStore.id, { shouldValidate: true });
90
- form.setValue('credentialStoreType', preferredStore.type as 'keychain' | 'nango', { shouldValidate: true });
111
+ form.setValue('credentialStoreType', preferredStore.type as 'keychain' | 'nango', {
112
+ shouldValidate: true,
113
+ });
91
114
  }
92
115
  }
93
116
  } catch (err) {
@@ -108,6 +131,13 @@ export function CredentialForm({ onCreateCredential, tenantId, projectId }: Cred
108
131
  }
109
132
  }, [shouldLinkToServer, form]);
110
133
 
134
+ useEffect(() => {
135
+ if (!shouldLinkToExternalAgent) {
136
+ // Clear the selectedExternalAgent field when not linking to external agent
137
+ form.setValue('selectedExternalAgent', undefined);
138
+ }
139
+ }, [shouldLinkToExternalAgent, form]);
140
+
111
141
  useEffect(() => {
112
142
  const subscription = form.watch((value: any, { name }: any) => {
113
143
  if (name === 'credentialStoreId' && value.credentialStoreId) {
@@ -126,6 +156,10 @@ export function CredentialForm({ onCreateCredential, tenantId, projectId }: Cred
126
156
  setShouldLinkToServer(checked === true);
127
157
  };
128
158
 
159
+ const handleLinkToExternalAgentChange = (checked: boolean | 'indeterminate') => {
160
+ setShouldLinkToExternalAgent(checked === true);
161
+ };
162
+
129
163
  const onSubmit = async (data: CredentialFormData) => {
130
164
  try {
131
165
  if (
@@ -136,6 +170,14 @@ export function CredentialForm({ onCreateCredential, tenantId, projectId }: Cred
136
170
  return;
137
171
  }
138
172
 
173
+ if (
174
+ shouldLinkToExternalAgent &&
175
+ (data.selectedExternalAgent === 'loading' || data.selectedExternalAgent === 'error')
176
+ ) {
177
+ toast('Please select a valid external agent');
178
+ return;
179
+ }
180
+
139
181
  await onCreateCredential(data);
140
182
  } catch (err) {
141
183
  console.error('Failed to create credential:', err);
@@ -162,6 +204,25 @@ export function CredentialForm({ onCreateCredential, tenantId, projectId }: Cred
162
204
  [availableMCPServers, toolsLoading]
163
205
  );
164
206
 
207
+ const externalAgentOptions = useMemo(
208
+ () => [
209
+ ...(externalAgentsLoading
210
+ ? [
211
+ {
212
+ value: 'loading',
213
+ label: 'Loading external agents...',
214
+ disabled: true,
215
+ },
216
+ ]
217
+ : []),
218
+ ...availableExternalAgents.map((agent) => ({
219
+ value: agent.id,
220
+ label: `${agent.name} - ${agent.baseUrl}`,
221
+ })),
222
+ ],
223
+ [availableExternalAgents, externalAgentsLoading]
224
+ );
225
+
165
226
  const credentialStoreOptions = useMemo(() => {
166
227
  if (storesLoading) {
167
228
  return [
@@ -298,6 +359,36 @@ export function CredentialForm({ onCreateCredential, tenantId, projectId }: Cred
298
359
  )}
299
360
  </div>
300
361
  )}
362
+
363
+ {/* External Agent Selection Section */}
364
+ {availableExternalAgents.length > 0 && (
365
+ <div className="space-y-4">
366
+ <div className="flex items-center space-x-3 relative">
367
+ <Checkbox
368
+ id="linkToExternalAgent"
369
+ checked={shouldLinkToExternalAgent}
370
+ onCheckedChange={handleLinkToExternalAgentChange}
371
+ />
372
+ <label
373
+ htmlFor="linkToExternalAgent"
374
+ className="text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
375
+ >
376
+ Link this credential to an external agent
377
+ </label>
378
+ </div>
379
+
380
+ {shouldLinkToExternalAgent && (
381
+ <GenericSelect
382
+ control={form.control}
383
+ name="selectedExternalAgent"
384
+ label=""
385
+ options={externalAgentOptions}
386
+ selectTriggerClassName="w-full"
387
+ placeholder="Choose an external agent"
388
+ />
389
+ )}
390
+ </div>
391
+ )}
301
392
  </div>
302
393
 
303
394
  <div className="flex gap-3 pt-4">
@@ -7,7 +7,7 @@ import { useState } from 'react';
7
7
  import { useForm } from 'react-hook-form';
8
8
  import { toast } from 'sonner';
9
9
  import { z } from 'zod';
10
- import { CredentialToolsList } from '@/components/credentials/credential-tools-list';
10
+ import { CredentialResourcesList } from '@/components/credentials/credential-resources-list';
11
11
  import { GenericInput } from '@/components/form/generic-input';
12
12
  import { GenericKeyValueInput } from '@/components/form/generic-key-value-input';
13
13
  import { Button } from '@/components/ui/button';
@@ -183,9 +183,10 @@ export function EditCredentialForm({
183
183
  </div>
184
184
  )}
185
185
 
186
- {/* MCP Servers Using This Credential */}
187
- <CredentialToolsList
186
+ {/* Resources Using This Credential */}
187
+ <CredentialResourcesList
188
188
  tools={credential.tools}
189
+ externalAgents={credential.externalAgents}
189
190
  tenantId={tenantId}
190
191
  projectId={projectId}
191
192
  />
@@ -6,6 +6,7 @@ import { useParams, useRouter } from 'next/navigation';
6
6
  import { toast } from 'sonner';
7
7
  import type { CredentialFormData } from '@/components/credentials/views/credential-form-validation';
8
8
  import { createCredentialInStore } from '@/lib/api/credentialStores';
9
+ import { updateExternalAgent } from '@/lib/api/external-agents';
9
10
  import { updateMCPTool } from '@/lib/api/tools';
10
11
  import { createNangoApiKeyConnection } from '@/lib/mcp-tools/nango';
11
12
  import { findOrCreateCredential } from '@/lib/utils/credentials-utils';
@@ -72,6 +73,18 @@ export function NewCredentialForm() {
72
73
  await updateMCPTool(tenantId, projectId, data.selectedTool, updatedTool);
73
74
  }
74
75
 
76
+ if (data.selectedExternalAgent && newCredential) {
77
+ const updatedExternalAgent = {
78
+ credentialReferenceId: newCredential.id,
79
+ };
80
+ await updateExternalAgent(
81
+ tenantId,
82
+ projectId,
83
+ data.selectedExternalAgent,
84
+ updatedExternalAgent
85
+ );
86
+ }
87
+
75
88
  toast.success('Credential created successfully');
76
89
  router.push(`/${tenantId}/projects/${projectId}/credentials`);
77
90
  } catch (error) {
@@ -0,0 +1,169 @@
1
+ 'use client';
2
+
3
+ import { MoreVertical, Trash2 } from 'lucide-react';
4
+ import { useParams } from 'next/navigation';
5
+ import { useState } from 'react';
6
+ import { toast } from 'sonner';
7
+ import { formatDate } from '@/app/utils/format-date';
8
+ import { Button } from '@/components/ui/button';
9
+ import { Dialog, DialogTrigger } from '@/components/ui/dialog';
10
+ import {
11
+ DropdownMenu,
12
+ DropdownMenuContent,
13
+ DropdownMenuItem,
14
+ DropdownMenuTrigger,
15
+ } from '@/components/ui/dropdown-menu';
16
+ import {
17
+ ItemCardContent,
18
+ ItemCardFooter,
19
+ ItemCardHeader,
20
+ ItemCardLink,
21
+ ItemCardRoot,
22
+ ItemCardTitle,
23
+ } from '@/components/ui/item-card';
24
+ import { deleteExternalAgentAction } from '@/lib/actions/external-agents';
25
+ import type { ExternalAgent } from '@/lib/types/external-agents';
26
+ import { ProviderIcon } from '../icons/provider-icon';
27
+ import { Badge } from '../ui/badge';
28
+ import { CardTitle } from '../ui/card';
29
+ import { DeleteConfirmation } from '../ui/delete-confirmation';
30
+ import { Tooltip, TooltipContent, TooltipTrigger } from '../ui/tooltip';
31
+
32
+ // URL Display Component with ellipsis and tooltip
33
+ function URLDisplay({ url }: { url: string }) {
34
+ return (
35
+ <Tooltip>
36
+ <TooltipTrigger asChild>
37
+ <div className="rounded py-1 min-w-0">
38
+ <code className="text-sm text-muted-foreground block truncate">{url}</code>
39
+ </div>
40
+ </TooltipTrigger>
41
+ <TooltipContent side="bottom" align="start" className="max-w-md">
42
+ <code className="text-xs break-all">{url}</code>
43
+ </TooltipContent>
44
+ </Tooltip>
45
+ );
46
+ }
47
+
48
+ interface ExternalAgentDialogMenuProps {
49
+ externalAgentId: string;
50
+ externalAgentName?: string;
51
+ }
52
+
53
+ function ExternalAgentDialogMenu({
54
+ externalAgentId,
55
+ externalAgentName,
56
+ }: ExternalAgentDialogMenuProps) {
57
+ const { tenantId, projectId } = useParams<{
58
+ tenantId: string;
59
+ projectId: string;
60
+ }>();
61
+
62
+ const [isOpen, setIsOpen] = useState(false);
63
+ const [isSubmitting, setIsSubmitting] = useState(false);
64
+
65
+ const handleOpenChange = (open: boolean) => {
66
+ setIsOpen(open);
67
+ };
68
+
69
+ const handleDelete = async () => {
70
+ setIsSubmitting(true);
71
+ try {
72
+ const result = await deleteExternalAgentAction(tenantId, projectId, externalAgentId);
73
+ if (result.success) {
74
+ setIsOpen(false);
75
+ toast.success('External agent deleted.');
76
+ } else {
77
+ toast.error('Failed to delete external agent.');
78
+ }
79
+ } finally {
80
+ setIsSubmitting(false);
81
+ }
82
+ };
83
+
84
+ return (
85
+ <Dialog open={isOpen} onOpenChange={handleOpenChange}>
86
+ <DropdownMenu>
87
+ <DropdownMenuTrigger asChild>
88
+ <Button
89
+ variant="ghost"
90
+ size="icon-sm"
91
+ className=" p-0 hover:bg-accent hover:text-accent-foreground rounded-sm -mr-2"
92
+ >
93
+ <MoreVertical className="h-4 w-4 text-muted-foreground" />
94
+ </Button>
95
+ </DropdownMenuTrigger>
96
+ <DropdownMenuContent
97
+ align="end"
98
+ className="w-48 shadow-lg border border-border bg-popover/95 backdrop-blur-sm"
99
+ >
100
+ <DialogTrigger asChild>
101
+ <DropdownMenuItem className="text-destructive hover:!bg-destructive/10 dark:hover:!bg-destructive/20 hover:!text-destructive cursor-pointer">
102
+ <Trash2 className="size-4 text-destructive" />
103
+ Delete
104
+ </DropdownMenuItem>
105
+ </DialogTrigger>
106
+ </DropdownMenuContent>
107
+ </DropdownMenu>
108
+ {isOpen && (
109
+ <DeleteConfirmation
110
+ itemName={externalAgentName || 'this external agent'}
111
+ isSubmitting={isSubmitting}
112
+ onDelete={handleDelete}
113
+ />
114
+ )}
115
+ </Dialog>
116
+ );
117
+ }
118
+
119
+ export function ExternalAgentItem({
120
+ tenantId,
121
+ projectId,
122
+ externalAgent,
123
+ }: {
124
+ tenantId: string;
125
+ projectId: string;
126
+ externalAgent: ExternalAgent;
127
+ }) {
128
+ const linkPath = `/${tenantId}/projects/${projectId}/external-agents/${externalAgent.id}`;
129
+
130
+ return (
131
+ <ItemCardRoot>
132
+ <ItemCardHeader>
133
+ <ItemCardLink href={linkPath}>
134
+ <ItemCardTitle className="text-md">
135
+ <div className="flex items-center gap-3">
136
+ <ProviderIcon provider={externalAgent.name} size={24} className="flex-shrink-0" />
137
+ <div className="flex-1 min-w-0">
138
+ <CardTitle className="text-base truncate font-medium">
139
+ {externalAgent.name}
140
+ </CardTitle>
141
+ </div>
142
+ </div>
143
+ </ItemCardTitle>
144
+ </ItemCardLink>
145
+ <ExternalAgentDialogMenu
146
+ externalAgentId={externalAgent.id}
147
+ externalAgentName={externalAgent.name}
148
+ />
149
+ </ItemCardHeader>
150
+ <ItemCardContent>
151
+ <div className="space-y-3 min-w-0">
152
+ {externalAgent.description && (
153
+ <p className="text-sm text-muted-foreground line-clamp-2">
154
+ {externalAgent.description}
155
+ </p>
156
+ )}
157
+
158
+ <URLDisplay url={externalAgent.baseUrl} />
159
+
160
+ {/* Key metrics in a structured layout */}
161
+ <div className="flex items-center gap-2 flex-wrap">
162
+ {externalAgent.credentialReferenceId && <Badge variant="code">Secured</Badge>}
163
+ </div>
164
+ </div>
165
+ <ItemCardFooter footerText={`Created ${formatDate(externalAgent.createdAt)}`} />
166
+ </ItemCardContent>
167
+ </ItemCardRoot>
168
+ );
169
+ }
@@ -0,0 +1,29 @@
1
+ 'use client';
2
+
3
+ import { useParams } from 'next/navigation';
4
+ import type { ExternalAgent } from '@/lib/types/external-agents';
5
+ import { ExternalAgentItem } from './external-agent-item';
6
+
7
+ interface ExternalAgentsListProps {
8
+ externalAgents: ExternalAgent[];
9
+ }
10
+
11
+ export function ExternalAgentsList({ externalAgents }: ExternalAgentsListProps) {
12
+ const { tenantId, projectId } = useParams<{
13
+ tenantId: string;
14
+ projectId: string;
15
+ }>();
16
+
17
+ return (
18
+ <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-3 md:gap-4">
19
+ {externalAgents?.map((externalAgent: ExternalAgent) => (
20
+ <ExternalAgentItem
21
+ key={externalAgent.id}
22
+ tenantId={tenantId}
23
+ projectId={projectId}
24
+ externalAgent={externalAgent}
25
+ />
26
+ ))}
27
+ </div>
28
+ );
29
+ }