@inkeep/agents-manage-ui 0.0.0-dev-20251021180725 → 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 (261) 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 +8 -4
  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 +1 -1
  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 +2 -2
  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 +3 -3
  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 +8 -4
  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/5781.js +1 -14
  126. package/.next/standalone/agents-manage-ui/.next/server/chunks/5793.js +1 -1
  127. package/.next/standalone/agents-manage-ui/.next/server/chunks/6035.js +1 -1
  128. package/.next/standalone/agents-manage-ui/.next/server/chunks/6060.js +1 -0
  129. package/.next/standalone/agents-manage-ui/.next/server/chunks/6565.js +1 -0
  130. package/.next/standalone/agents-manage-ui/.next/server/chunks/6721.js +1 -1
  131. package/.next/standalone/agents-manage-ui/.next/server/chunks/7013.js +1 -0
  132. package/.next/standalone/agents-manage-ui/.next/server/chunks/7440.js +1 -0
  133. package/.next/standalone/agents-manage-ui/.next/server/chunks/7711.js +1 -1
  134. package/.next/standalone/agents-manage-ui/.next/server/chunks/7988.js +2 -2
  135. package/.next/standalone/agents-manage-ui/.next/server/chunks/7990.js +1 -1
  136. package/.next/standalone/agents-manage-ui/.next/server/chunks/8860.js +1 -1
  137. package/.next/standalone/agents-manage-ui/.next/server/chunks/9394.js +14 -1
  138. package/.next/standalone/agents-manage-ui/.next/server/middleware-build-manifest.js +1 -1
  139. package/.next/standalone/agents-manage-ui/.next/server/middleware-manifest.json +5 -5
  140. package/.next/standalone/agents-manage-ui/.next/server/middleware-react-loadable-manifest.js +1 -1
  141. package/.next/standalone/agents-manage-ui/.next/server/pages/404.html +1 -1
  142. package/.next/standalone/agents-manage-ui/.next/server/pages/500.html +1 -1
  143. package/.next/standalone/agents-manage-ui/.next/server/server-reference-manifest.js +1 -1
  144. package/.next/standalone/agents-manage-ui/.next/server/server-reference-manifest.json +1 -1
  145. package/.next/standalone/agents-manage-ui/.next/static/chunks/13328-7cdffb43af522e3b.js +1 -0
  146. package/.next/standalone/agents-manage-ui/.next/static/chunks/{16631-e313c6f18339824b.js → 16631-6020bdaf3d69b1d9.js} +1 -1
  147. package/.next/standalone/agents-manage-ui/.next/static/chunks/20837-bb4579d108ec132f.js +1 -0
  148. package/.next/standalone/agents-manage-ui/.next/static/chunks/{50285-9138bb26e62daef6.js → 23610-476f03c272ca3950.js} +1 -1
  149. package/.next/standalone/agents-manage-ui/.next/static/chunks/24380.bf03581f9f4f3543.js +1 -0
  150. package/.next/standalone/agents-manage-ui/.next/static/chunks/2450-e80bfc42611f5806.js +1 -0
  151. package/.next/standalone/agents-manage-ui/.next/static/chunks/25672-93f2aa7eb2408291.js +1 -0
  152. package/.next/standalone/agents-manage-ui/.next/static/chunks/{4698.3051cd4ec04e2aa4.js → 4698.c8eaa281e28f5497.js} +1 -1
  153. package/.next/standalone/agents-manage-ui/.next/static/chunks/50503-8147daf12b637511.js +1 -0
  154. package/.next/standalone/agents-manage-ui/.next/static/chunks/54244-d5b0e0495a8ba6ff.js +1 -0
  155. package/.next/standalone/agents-manage-ui/.next/static/chunks/{74811-ceebff5ae7c61a66.js → 57812-14885c4aa73b748e.js} +1 -1
  156. package/.next/standalone/agents-manage-ui/.next/static/chunks/{55744-14f65637fb7140bb.js → 74216-541bdcf5750174cf.js} +1 -1
  157. package/.next/standalone/agents-manage-ui/.next/static/chunks/{87193-3d26f0490b9b0a29.js → 76125-20d7ba477878f956.js} +3 -3
  158. package/.next/standalone/agents-manage-ui/.next/static/chunks/{63209-c85b701265732b38.js → 90777-529736d21bc531c4.js} +1 -1
  159. package/.next/standalone/agents-manage-ui/.next/static/chunks/92580-8da57347f4ec8f0d.js +1 -0
  160. package/.next/standalone/agents-manage-ui/.next/static/chunks/99458-561dd09c8e46e93b.js +2 -0
  161. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/[agentId]/{page-559a0e2feb9d1b88.js → page-cf6d8b309524a6a4.js} +1 -1
  162. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/new/{page-e4badb90e08fca0e.js → page-c4db7bcff51d7bcd.js} +1 -1
  163. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/{page-fd4931a4dce7bbcc.js → page-0198738719aade6d.js} +1 -1
  164. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/api-keys/page-e2ef59e68782fef0.js +1 -0
  165. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page-5a2f0b3eb7b9bede.js +1 -0
  166. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/new/page-62ac2a74e0e3c202.js +1 -0
  167. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/{page-4fd992b333ee8376.js → page-ee610980e823a381.js} +1 -1
  168. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/{page-d4178e9e1916d13a.js → page-81fb8f0e0da184b2.js} +1 -1
  169. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/new/page-a5dd61821ccc3368.js +1 -0
  170. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/page-9b60c2a4d919b4b8.js +1 -0
  171. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page-06480b4647090c3d.js +1 -0
  172. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page-8b956cdee22f9770.js +1 -0
  173. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page-df1ac1dca5b29f1d.js +1 -0
  174. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/{page-8039ddab76f9faaf.js → page-921320ba530d1773.js} +1 -1
  175. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/edit/page-bd0cead36aa29cda.js +1 -0
  176. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/page-ec2d6dba69b9f4c6.js +1 -0
  177. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/new/page-a1f80beb45dc2276.js +1 -0
  178. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/page-6502a0a11215e5cf.js +1 -0
  179. 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
  180. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page-4f8d9541b96da7d8.js +1 -0
  181. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/new/{page-d174ad393f08c235.js → page-03c7faf211e2744e.js} +1 -1
  182. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/{page-c378465695b7fcbd.js → page-12a8345548e2abc2.js} +1 -1
  183. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/settings/page-535499d8ef464a34.js +1 -0
  184. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/ai-calls/page-e1b396ac418b8a24.js +1 -0
  185. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/page-fe6a59c18be829f1.js +1 -0
  186. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/page-53f9be3e392609d2.js +1 -0
  187. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/layout-e62e04f2573a78d7.js +1 -0
  188. package/.next/standalone/agents-manage-ui/.next/static/chunks/{webpack-d65a3369c23bc1a6.js → webpack-f5115703464e7f56.js} +1 -1
  189. package/.next/standalone/agents-manage-ui/.next/static/css/feeaa90d59b8c0fb.css +1 -0
  190. package/.next/standalone/agents-manage-ui/package.json +1 -1
  191. package/.next/standalone/packages/agents-core/package.json +1 -1
  192. package/package.json +4 -4
  193. package/src/app/[tenantId]/projects/[projectId]/agents/[agentId]/page.tsx +18 -10
  194. package/src/app/[tenantId]/projects/[projectId]/agents/new/page.tsx +13 -7
  195. package/src/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/edit/page.tsx +86 -0
  196. package/src/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/page.tsx +52 -0
  197. package/src/app/[tenantId]/projects/[projectId]/external-agents/new/page.tsx +43 -0
  198. package/src/app/[tenantId]/projects/[projectId]/external-agents/page.tsx +64 -0
  199. package/src/components/agent/agent.tsx +43 -1
  200. package/src/components/agent/configuration/node-types.tsx +18 -5
  201. package/src/components/agent/node-library/node-library.tsx +1 -1
  202. package/src/components/agent/nodes/external-agent-node.tsx +8 -12
  203. package/src/components/agent/nodes/{mcp-placeholder-node.tsx → placeholder-node.tsx} +8 -4
  204. package/src/components/agent/sidepane/nodes/external-agent-node-editor.tsx +72 -17
  205. package/src/components/agent/sidepane/nodes/external-agent-selector/external-agent-item.tsx +39 -0
  206. package/src/components/agent/sidepane/nodes/external-agent-selector/external-agent-selector.tsx +114 -0
  207. package/src/components/agent/sidepane/nodes/external-agent-selector/loading.tsx +26 -0
  208. package/src/components/agent/sidepane/sidepane.tsx +9 -1
  209. package/src/components/credentials/credential-resources-list.tsx +146 -0
  210. package/src/components/credentials/views/credential-form-validation.ts +1 -0
  211. package/src/components/credentials/views/credential-form.tsx +96 -5
  212. package/src/components/credentials/views/edit-credential-form.tsx +4 -3
  213. package/src/components/credentials/views/new-credential-form.tsx +13 -0
  214. package/src/components/external-agents/external-agent-item.tsx +169 -0
  215. package/src/components/external-agents/external-agents-list.tsx +29 -0
  216. package/src/components/external-agents/form/external-agent-form.tsx +146 -0
  217. package/src/components/external-agents/form/validation.ts +10 -0
  218. package/src/components/external-agents/view-external-agent-details.tsx +129 -0
  219. package/src/components/sidebar-nav/sidebar-nav.tsx +6 -0
  220. package/src/features/agent/domain/deserialize.ts +144 -111
  221. package/src/features/agent/domain/serialize.ts +142 -77
  222. package/src/features/agent/state/use-agent-store.ts +27 -3
  223. package/src/lib/actions/agent-full.ts +1 -1
  224. package/src/lib/actions/external-agents.ts +73 -0
  225. package/src/lib/api/credentials.ts +2 -0
  226. package/src/lib/api/external-agents.ts +121 -0
  227. package/src/lib/types/agent-full.ts +4 -2
  228. package/src/lib/types/external-agents.ts +2 -0
  229. package/src/lib/utils/external-agent-utils.ts +33 -0
  230. package/.next/standalone/agents-manage-ui/.next/server/chunks/3717.js +0 -1
  231. package/.next/standalone/agents-manage-ui/.next/server/chunks/4529.js +0 -123
  232. package/.next/standalone/agents-manage-ui/.next/server/chunks/6358.js +0 -1
  233. package/.next/standalone/agents-manage-ui/.next/server/chunks/6818.js +0 -1
  234. package/.next/standalone/agents-manage-ui/.next/server/chunks/6870.js +0 -1
  235. package/.next/standalone/agents-manage-ui/.next/server/chunks/8162.js +0 -1
  236. package/.next/standalone/agents-manage-ui/.next/server/chunks/891.js +0 -196
  237. package/.next/standalone/agents-manage-ui/.next/static/chunks/13328-851660ac17cd9821.js +0 -1
  238. package/.next/standalone/agents-manage-ui/.next/static/chunks/20837-5c45452d86333b49.js +0 -1
  239. package/.next/standalone/agents-manage-ui/.next/static/chunks/24380.e6f7d95645e17d66.js +0 -1
  240. package/.next/standalone/agents-manage-ui/.next/static/chunks/37191-b9540cf50a41d10d.js +0 -1
  241. package/.next/standalone/agents-manage-ui/.next/static/chunks/50324-6c2b8627fccd09fe.js +0 -1
  242. package/.next/standalone/agents-manage-ui/.next/static/chunks/61089-ddd70e2d283804f5.js +0 -1
  243. package/.next/standalone/agents-manage-ui/.next/static/chunks/86507-340cc6112e9218de.js +0 -2
  244. package/.next/standalone/agents-manage-ui/.next/static/chunks/87817-86c2e7dd6f1d2a25.js +0 -1
  245. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/api-keys/page-e6a0d040757d714c.js +0 -1
  246. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page-2ef30d1c4a08bf1c.js +0 -1
  247. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/new/page-2dc9232570ef8f79.js +0 -1
  248. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/new/page-8030a774459e9505.js +0 -1
  249. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/page-cd615e6939889e58.js +0 -1
  250. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page-e3410fb65d776373.js +0 -1
  251. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page-122d64932f58f736.js +0 -1
  252. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page-0a2a574c78526792.js +0 -1
  253. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page-626d879ae1110842.js +0 -1
  254. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/settings/page-8333b2227270a61e.js +0 -1
  255. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/ai-calls/page-3b222f3ae3101ba8.js +0 -1
  256. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/page-dd16edcb356553d6.js +0 -1
  257. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/page-7d8c096775d48dd2.js +0 -1
  258. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/layout-460655c327b24cc4.js +0 -1
  259. package/.next/standalone/agents-manage-ui/.next/static/css/86b7c14b860f21e3.css +0 -1
  260. /package/.next/standalone/agents-manage-ui/.next/static/{XDBVQcoBx1lmqIF-dFkO9 → _hhV2vscjy4Dr-g-NJY1d}/_buildManifest.js +0 -0
  261. /package/.next/standalone/agents-manage-ui/.next/static/{XDBVQcoBx1lmqIF-dFkO9 → _hhV2vscjy4Dr-g-NJY1d}/_ssgManifest.js +0 -0
@@ -0,0 +1,52 @@
1
+ import FullPageError from '@/components/errors/full-page-error';
2
+ import { BodyTemplate } from '@/components/layout/body-template';
3
+ import { MainContent } from '@/components/layout/main-content';
4
+ import { ViewExternalAgentDetails } from '@/components/external-agents/view-external-agent-details';
5
+ import { fetchExternalAgent } from '@/lib/api/external-agents';
6
+
7
+ interface ExternalAgentPageProps {
8
+ params: Promise<{ externalAgentId: string; tenantId: string; projectId: string }>;
9
+ }
10
+
11
+ async function ExternalAgentPage({ params }: ExternalAgentPageProps) {
12
+ const { externalAgentId, tenantId, projectId } = await params;
13
+
14
+ let externalAgent: Awaited<ReturnType<typeof fetchExternalAgent>>;
15
+ try {
16
+ externalAgent = await fetchExternalAgent(tenantId, projectId, externalAgentId);
17
+ } catch (error) {
18
+ return (
19
+ <FullPageError
20
+ error={error as Error}
21
+ link={`/${tenantId}/projects/${projectId}/external-agents`}
22
+ linkText="Back to external agents"
23
+ context="External agent"
24
+ />
25
+ );
26
+ }
27
+
28
+ return (
29
+ <BodyTemplate
30
+ breadcrumbs={[
31
+ {
32
+ label: 'External agents',
33
+ href: `/${tenantId}/projects/${projectId}/external-agents`,
34
+ },
35
+ {
36
+ label: externalAgent.name,
37
+ href: `/${tenantId}/projects/${projectId}/external-agents/${externalAgentId}`,
38
+ },
39
+ ]}
40
+ >
41
+ <MainContent>
42
+ <ViewExternalAgentDetails
43
+ externalAgent={externalAgent}
44
+ tenantId={tenantId}
45
+ projectId={projectId}
46
+ />
47
+ </MainContent>
48
+ </BodyTemplate>
49
+ );
50
+ }
51
+
52
+ export default ExternalAgentPage;
@@ -0,0 +1,43 @@
1
+ import { BodyTemplate } from '@/components/layout/body-template';
2
+ import { MainContent } from '@/components/layout/main-content';
3
+ import { ExternalAgentForm } from '@/components/external-agents/form/external-agent-form';
4
+ import { type Credential, fetchCredentials } from '@/lib/api/credentials';
5
+
6
+ async function NewExternalAgentPage({
7
+ params,
8
+ }: {
9
+ params: Promise<{ tenantId: string; projectId: string }>;
10
+ }) {
11
+ const { tenantId, projectId } = await params;
12
+ let credentials: Credential[] = [];
13
+ try {
14
+ credentials = await fetchCredentials(tenantId, projectId);
15
+ } catch (error) {
16
+ console.error('Failed to load credentials:', error);
17
+ }
18
+
19
+ return (
20
+ <BodyTemplate
21
+ breadcrumbs={[
22
+ {
23
+ label: 'External agents',
24
+ href: `/${tenantId}/projects/${projectId}/external-agents`,
25
+ },
26
+ { label: 'New' },
27
+ ]}
28
+ >
29
+ <MainContent>
30
+ <div className="max-w-2xl mx-auto py-4">
31
+ <ExternalAgentForm
32
+ mode="create"
33
+ credentials={credentials}
34
+ tenantId={tenantId}
35
+ projectId={projectId}
36
+ />
37
+ </div>
38
+ </MainContent>
39
+ </BodyTemplate>
40
+ );
41
+ }
42
+
43
+ export default NewExternalAgentPage;
@@ -0,0 +1,64 @@
1
+ import { Plus } from 'lucide-react';
2
+ import Link from 'next/link';
3
+ import FullPageError from '@/components/errors/full-page-error';
4
+ import { BodyTemplate } from '@/components/layout/body-template';
5
+ import EmptyState from '@/components/layout/empty-state';
6
+ import { MainContent } from '@/components/layout/main-content';
7
+ import { PageHeader } from '@/components/layout/page-header';
8
+ import { ExternalAgentsList } from '@/components/external-agents/external-agents-list';
9
+ import { Button } from '@/components/ui/button';
10
+ import { fetchExternalAgents } from '@/lib/api/external-agents';
11
+
12
+ const externalAgentsDescription =
13
+ 'Create external agents that can be delegated to from your internal agents.';
14
+
15
+ async function ExternalAgentsPage({
16
+ params,
17
+ }: {
18
+ params: Promise<{ tenantId: string; projectId: string }>;
19
+ }) {
20
+ const { tenantId, projectId } = await params;
21
+
22
+ let externalAgents: Awaited<ReturnType<typeof fetchExternalAgents>>;
23
+ try {
24
+ externalAgents = await fetchExternalAgents(tenantId, projectId);
25
+ } catch (error) {
26
+ return <FullPageError error={error as Error} context="External agents" />;
27
+ }
28
+
29
+ return (
30
+ <BodyTemplate breadcrumbs={[{ label: 'External agents' }]}>
31
+ <MainContent className="min-h-full">
32
+ {externalAgents.length > 0 ? (
33
+ <>
34
+ <PageHeader
35
+ title="External agents"
36
+ description={externalAgentsDescription}
37
+ action={
38
+ <Button asChild>
39
+ <Link
40
+ href={`/${tenantId}/projects/${projectId}/external-agents/new`}
41
+ className="flex items-center gap-2"
42
+ >
43
+ <Plus className="size-4" />
44
+ New external agent
45
+ </Link>
46
+ </Button>
47
+ }
48
+ />
49
+ <ExternalAgentsList externalAgents={externalAgents} />
50
+ </>
51
+ ) : (
52
+ <EmptyState
53
+ title="No external agents yet."
54
+ description={externalAgentsDescription}
55
+ link={`/${tenantId}/projects/${projectId}/external-agents/new`}
56
+ linkText="Create external agent"
57
+ />
58
+ )}
59
+ </MainContent>
60
+ </BodyTemplate>
61
+ );
62
+ }
63
+
64
+ export default ExternalAgentsPage;
@@ -48,9 +48,21 @@ export type AgentToolConfig = {
48
48
  headers?: Record<string, string>;
49
49
  };
50
50
 
51
+ export type SubAgentExternalAgentConfig = {
52
+ externalAgentId: string;
53
+ headers?: Record<string, string>;
54
+ };
55
+
51
56
  // AgentToolConfigLookup: subAgentId -> relationshipId -> config
52
57
  export type AgentToolConfigLookup = Record<string, Record<string, AgentToolConfig>>;
53
58
 
59
+ // SubAgentExternalAgentConfigLookup: subAgentId -> relationshipId -> config
60
+ export type SubAgentExternalAgentConfigLookup = Record<
61
+ string,
62
+ Record<string, SubAgentExternalAgentConfig>
63
+ >;
64
+
65
+ import type { ExternalAgent } from '@/lib/api/external-agents';
54
66
  import { EdgeType, edgeTypes, initialEdges } from './configuration/edge-types';
55
67
  import {
56
68
  agentNodeSourceHandleId,
@@ -81,6 +93,7 @@ interface AgentProps {
81
93
  artifactComponentLookup?: Record<string, ArtifactComponent>;
82
94
  toolLookup?: Record<string, MCPTool>;
83
95
  credentialLookup?: Record<string, Credential>;
96
+ externalAgentLookup?: Record<string, ExternalAgent>;
84
97
  }
85
98
 
86
99
  function Flow({
@@ -89,6 +102,7 @@ function Flow({
89
102
  artifactComponentLookup = {},
90
103
  toolLookup = {},
91
104
  credentialLookup = {},
105
+ externalAgentLookup = {},
92
106
  }: AgentProps) {
93
107
  const [showPlayground, setShowPlayground] = useState(false);
94
108
  const router = useRouter();
@@ -193,6 +207,28 @@ function Flow({
193
207
  return lookup;
194
208
  }, [agent?.subAgents]);
195
209
 
210
+ const subAgentExternalAgentConfigLookup = useMemo((): SubAgentExternalAgentConfigLookup => {
211
+ if (!agent?.subAgents) return {} as SubAgentExternalAgentConfigLookup;
212
+ const lookup: SubAgentExternalAgentConfigLookup = {};
213
+ Object.entries(agent.subAgents).forEach(([subAgentId, agentData]) => {
214
+ if ('canDelegateTo' in agentData && agentData.canDelegateTo) {
215
+ const externalAgentConfigs: Record<string, SubAgentExternalAgentConfig> = {};
216
+ agentData.canDelegateTo
217
+ .filter((delegate) => typeof delegate === 'object' && 'externalAgentId' in delegate)
218
+ .forEach((delegate) => {
219
+ externalAgentConfigs[delegate.externalAgentId] = {
220
+ externalAgentId: delegate.externalAgentId,
221
+ headers: delegate.headers ?? undefined,
222
+ };
223
+ });
224
+ if (Object.keys(externalAgentConfigs).length > 0) {
225
+ lookup[subAgentId] = externalAgentConfigs;
226
+ }
227
+ }
228
+ });
229
+ return lookup;
230
+ }, [agent?.subAgents]);
231
+
196
232
  const {
197
233
  screenToFlowPosition,
198
234
  updateNodeData,
@@ -564,7 +600,8 @@ function Flow({
564
600
  metadata,
565
601
  dataComponentLookup,
566
602
  artifactComponentLookup,
567
- agentToolConfigLookup
603
+ agentToolConfigLookup,
604
+ subAgentExternalAgentConfigLookup
568
605
  );
569
606
 
570
607
  const functionToolNodeMap = new Map<string, string>();
@@ -691,6 +728,8 @@ function Flow({
691
728
  setErrors,
692
729
  agentToolConfigLookup,
693
730
  toolLookup,
731
+ subAgentExternalAgentConfigLookup,
732
+ externalAgentLookup,
694
733
  ]);
695
734
 
696
735
  useEffect(() => {
@@ -928,6 +967,7 @@ function Flow({
928
967
  dataComponentLookup={dataComponentLookup}
929
968
  artifactComponentLookup={artifactComponentLookup}
930
969
  agentToolConfigLookup={agentToolConfigLookup}
970
+ subAgentExternalAgentConfigLookup={subAgentExternalAgentConfigLookup}
931
971
  credentialLookup={credentialLookup}
932
972
  />
933
973
  {showPlayground && agent?.id && (
@@ -950,6 +990,7 @@ export function Agent({
950
990
  artifactComponentLookup,
951
991
  toolLookup,
952
992
  credentialLookup,
993
+ externalAgentLookup,
953
994
  }: AgentProps) {
954
995
  return (
955
996
  <ReactFlowProvider>
@@ -959,6 +1000,7 @@ export function Agent({
959
1000
  artifactComponentLookup={artifactComponentLookup}
960
1001
  toolLookup={toolLookup}
961
1002
  credentialLookup={credentialLookup}
1003
+ externalAgentLookup={externalAgentLookup}
962
1004
  />
963
1005
  </ReactFlowProvider>
964
1006
  );
@@ -1,8 +1,8 @@
1
- import { Bot, BotMessageSquare, Code, Hammer } from 'lucide-react';
1
+ import { Bot, Code, Globe, Hammer } from 'lucide-react';
2
2
  import { ExternalAgentNode } from '../nodes/external-agent-node';
3
3
  import { FunctionToolNode } from '../nodes/function-tool-node';
4
4
  import { MCPNode } from '../nodes/mcp-node';
5
- import { MCPPlaceholderNode } from '../nodes/mcp-placeholder-node';
5
+ import { PlaceholderNode } from '../nodes/placeholder-node';
6
6
  import { SubAgentNode } from '../nodes/sub-agent-node';
7
7
  import type { AgentModels } from './agent-types';
8
8
 
@@ -11,6 +11,7 @@ interface NodeData {
11
11
  isDefault?: boolean;
12
12
  subAgentId?: string | null; // Optional for MCP nodes
13
13
  relationshipId?: string | null; // Optional for MCP nodes
14
+ type?: 'mcp-placeholder' | 'external-agent-placeholder'; // Optional for placeholder nodes
14
15
  }
15
16
 
16
17
  import type { SubAgentStopWhen } from '@inkeep/agents-core/client-exports';
@@ -48,7 +49,7 @@ export interface ExternalAgentNodeData extends Record<string, unknown> {
48
49
  name: string;
49
50
  description?: string;
50
51
  baseUrl: string;
51
- headers: string;
52
+ relationshipId?: string | null;
52
53
  credentialReferenceId?: string | null;
53
54
  }
54
55
 
@@ -69,6 +70,7 @@ export interface FunctionToolNodeData extends Record<string, unknown> {
69
70
  export enum NodeType {
70
71
  SubAgent = 'agent',
71
72
  ExternalAgent = 'external-agent',
73
+ ExternalAgentPlaceholder = 'external-agent-placeholder',
72
74
  MCP = 'mcp',
73
75
  MCPPlaceholder = 'mcp-placeholder',
74
76
  FunctionTool = 'function-tool',
@@ -77,8 +79,9 @@ export enum NodeType {
77
79
  export const nodeTypes = {
78
80
  [NodeType.SubAgent]: SubAgentNode,
79
81
  [NodeType.ExternalAgent]: ExternalAgentNode,
82
+ [NodeType.ExternalAgentPlaceholder]: PlaceholderNode,
80
83
  [NodeType.MCP]: MCPNode,
81
- [NodeType.MCPPlaceholder]: MCPPlaceholderNode,
84
+ [NodeType.MCPPlaceholder]: PlaceholderNode,
82
85
  [NodeType.FunctionTool]: FunctionToolNode,
83
86
  };
84
87
 
@@ -95,6 +98,10 @@ export const newNodeDefaults: Record<keyof typeof nodeTypes, NodeData> = {
95
98
  [NodeType.ExternalAgent]: {
96
99
  name: '',
97
100
  },
101
+ [NodeType.ExternalAgentPlaceholder]: {
102
+ name: 'Select external agent',
103
+ type: 'external-agent-placeholder',
104
+ },
98
105
  [NodeType.MCP]: {
99
106
  name: 'MCP',
100
107
  subAgentId: null,
@@ -102,6 +109,7 @@ export const newNodeDefaults: Record<keyof typeof nodeTypes, NodeData> = {
102
109
  },
103
110
  [NodeType.MCPPlaceholder]: {
104
111
  name: 'Select MCP server',
112
+ type: 'mcp-placeholder',
105
113
  },
106
114
  [NodeType.FunctionTool]: {
107
115
  name: 'Function Tool',
@@ -118,7 +126,12 @@ export const nodeTypeMap = {
118
126
  [NodeType.ExternalAgent]: {
119
127
  type: NodeType.ExternalAgent,
120
128
  name: 'External Agent',
121
- Icon: BotMessageSquare,
129
+ Icon: Globe,
130
+ },
131
+ [NodeType.ExternalAgentPlaceholder]: {
132
+ type: NodeType.ExternalAgentPlaceholder,
133
+ name: 'External Agent',
134
+ Icon: Globe,
122
135
  },
123
136
  [NodeType.MCPPlaceholder]: {
124
137
  type: NodeType.MCPPlaceholder,
@@ -5,7 +5,7 @@ import { NodeItem } from './node-item';
5
5
 
6
6
  const nodeTypes: NodeItem[] = [
7
7
  nodeTypeMap[NodeType.SubAgent],
8
- nodeTypeMap[NodeType.ExternalAgent],
8
+ nodeTypeMap[NodeType.ExternalAgentPlaceholder],
9
9
  nodeTypeMap[NodeType.MCPPlaceholder],
10
10
  nodeTypeMap[NodeType.FunctionTool],
11
11
  ];
@@ -1,19 +1,19 @@
1
1
  import { type NodeProps, Position } from '@xyflow/react';
2
- import { BotMessageSquare } from 'lucide-react';
2
+ import { Globe } from 'lucide-react';
3
3
  import { Badge } from '@/components/ui/badge';
4
4
  import { NODE_WIDTH } from '@/features/agent/domain/deserialize';
5
5
  import { useAgentErrors } from '@/hooks/use-agent-errors';
6
- import type { AgentNodeData } from '../configuration/node-types';
6
+ import { cn } from '@/lib/utils';
7
+ import type { ExternalAgentNodeData } from '../configuration/node-types';
7
8
  import { externalAgentNodeTargetHandleId } from '../configuration/node-types';
8
9
  import { ErrorIndicator } from '../error-display/error-indicator';
9
10
  import { BaseNode, BaseNodeContent, BaseNodeHeader, BaseNodeHeaderTitle } from './base-node';
10
11
  import { Handle } from './handle';
11
12
  import { NodeTab } from './node-tab';
12
- import { cn } from '@/lib/utils';
13
13
 
14
- export function ExternalAgentNode(props: NodeProps & { data: AgentNodeData }) {
14
+ export function ExternalAgentNode(props: NodeProps & { data: ExternalAgentNodeData }) {
15
15
  const { data, selected, id } = props;
16
- const { name, description, isExecuting } = data;
16
+ const { name, description } = data;
17
17
  const { getNodeErrors, hasNodeErrors } = useAgentErrors();
18
18
 
19
19
  // Use the agent ID from node data if available, otherwise fall back to React Flow node ID
@@ -25,17 +25,13 @@ export function ExternalAgentNode(props: NodeProps & { data: AgentNodeData }) {
25
25
  <div className="relative">
26
26
  <NodeTab isSelected={selected}>External</NodeTab>
27
27
  <BaseNode
28
- isSelected={selected || data.isDelegating}
29
- className={cn(
30
- 'rounded-tl-none',
31
- hasErrors && 'ring-2 ring-red-300 border-red-300',
32
- isExecuting && 'node-executing'
33
- )}
28
+ isSelected={selected}
29
+ className={cn('rounded-tl-none', hasErrors && 'ring-2 ring-red-300 border-red-300')}
34
30
  style={{ width: NODE_WIDTH }}
35
31
  >
36
32
  <BaseNodeHeader className="flex items-center justify-between gap-2">
37
33
  <div className="flex items-center gap-2 min-w-0">
38
- <BotMessageSquare className="size-4 text-muted-foreground" />
34
+ <Globe className="size-4 text-muted-foreground" />
39
35
  <BaseNodeHeaderTitle>{name || 'External Agent'}</BaseNodeHeaderTitle>
40
36
  </div>
41
37
  <Badge variant="primary" className="text-xs uppercase">
@@ -1,12 +1,13 @@
1
1
  import type { NodeProps } from '@xyflow/react';
2
- import { Hammer } from 'lucide-react';
2
+ import { Globe, Hammer } from 'lucide-react';
3
3
  import { BaseNode, BaseNodeHeader, BaseNodeHeaderTitle } from './base-node';
4
4
 
5
- type MCPPlaceholderNodeData = {
5
+ type PlaceholderNodeData = {
6
6
  name: string;
7
+ type: 'mcp-placeholder' | 'external-agent-placeholder';
7
8
  };
8
9
 
9
- export function MCPPlaceholderNode(props: NodeProps & { data: MCPPlaceholderNodeData }) {
10
+ export function PlaceholderNode(props: NodeProps & { data: PlaceholderNodeData }) {
10
11
  const { data, selected } = props;
11
12
  const { name } = data;
12
13
  return (
@@ -15,7 +16,10 @@ export function MCPPlaceholderNode(props: NodeProps & { data: MCPPlaceholderNode
15
16
  className={`rounded-4xl border-dashed min-w-40 min-h-13 flex items-center justify-center max-w-3xs ${selected ? 'outline-dashed outline-2 outline-gray-700 hover:outline-gray-700 ring-0 hover:ring-0' : ''}`}
16
17
  >
17
18
  <BaseNodeHeader className="mb-0 py-3">
18
- <Hammer className="size-4 text-muted-foreground/65" />
19
+ {data.type === 'mcp-placeholder' && <Hammer className="size-4 text-muted-foreground/65" />}
20
+ {data.type === 'external-agent-placeholder' && (
21
+ <Globe className="size-4 text-muted-foreground/65" />
22
+ )}
19
23
  <BaseNodeHeaderTitle className="text-muted-foreground">{name}</BaseNodeHeaderTitle>
20
24
  </BaseNodeHeader>
21
25
  </BaseNode>
@@ -1,29 +1,68 @@
1
- import type { Node } from '@xyflow/react';
2
- import { useCallback } from 'react';
1
+ import { type Node, useReactFlow } from '@xyflow/react';
2
+ import { useParams } from 'next/navigation';
3
+ import { useCallback, useEffect, useState } from 'react';
3
4
  import { ExpandableJsonEditor } from '@/components/form/expandable-json-editor';
5
+ import { ExternalLink } from '@/components/ui/external-link';
6
+ import { useAgentActions, useAgentStore } from '@/features/agent/state/use-agent-store';
4
7
  import type { ErrorHelpers } from '@/hooks/use-agent-errors';
5
8
  import { useAutoPrefillIdZustand } from '@/hooks/use-auto-prefill-id-zustand';
6
9
  import { useNodeEditor } from '@/hooks/use-node-editor';
7
10
  import type { Credential } from '@/lib/api/credentials';
11
+ import { getCurrentHeadersForExternalAgentNode } from '@/lib/utils/external-agent-utils';
12
+ import type { SubAgentExternalAgentConfigLookup } from '../../agent';
8
13
  import type { ExternalAgentNodeData } from '../../configuration/node-types';
9
- import { CredentialSelector } from './credential-selector';
10
14
  import { InputField, TextareaField } from './form-fields';
11
15
 
12
16
  interface ExternalAgentNodeEditorProps {
13
17
  selectedNode: Node<ExternalAgentNodeData>;
14
18
  credentialLookup: Record<string, Credential>;
19
+ subAgentExternalAgentConfigLookup: SubAgentExternalAgentConfigLookup;
15
20
  errorHelpers?: ErrorHelpers;
16
21
  }
17
22
 
18
23
  export function ExternalAgentNodeEditor({
19
24
  selectedNode,
20
- credentialLookup,
25
+ subAgentExternalAgentConfigLookup,
21
26
  errorHelpers,
22
27
  }: ExternalAgentNodeEditorProps) {
28
+ const { updateNodeData } = useReactFlow();
29
+ const { markUnsaved } = useAgentActions();
23
30
  const { handleInputChange, getFieldError, setFieldRef, updateField } = useNodeEditor({
24
31
  selectedNodeId: selectedNode.id,
25
32
  errorHelpers,
26
33
  });
34
+ const { tenantId, projectId } = useParams<{
35
+ tenantId: string;
36
+ projectId: string;
37
+ }>();
38
+ const handleHeadersChange = (value: string) => {
39
+ // Always update the input state (allows user to type invalid JSON)
40
+ setHeadersInputValue(value);
41
+
42
+ // Only save to node data if the JSON is valid
43
+ try {
44
+ const parsedHeaders = value.trim() === '' ? {} : JSON.parse(value);
45
+ if (
46
+ typeof parsedHeaders === 'object' &&
47
+ parsedHeaders !== null &&
48
+ !Array.isArray(parsedHeaders)
49
+ ) {
50
+ // Valid format - save to node data
51
+ updateNodeData(selectedNode.id, {
52
+ ...selectedNode.data,
53
+ tempHeaders: parsedHeaders,
54
+ });
55
+ markUnsaved();
56
+ }
57
+ } catch {
58
+ // Invalid JSON - don't save, but allow user to continue typing
59
+ // The ExpandableJsonEditor will show the validation error
60
+ }
61
+ };
62
+
63
+ const { edges } = useAgentStore((state) => ({
64
+ edges: state.edges,
65
+ }));
27
66
 
28
67
  const handleIdChange = useCallback(
29
68
  (generatedId: string) => {
@@ -40,6 +79,24 @@ export function ExternalAgentNodeEditor({
40
79
  isEditing: false,
41
80
  });
42
81
 
82
+ const getCurrentHeaders = useCallback((): Record<string, string> => {
83
+ return getCurrentHeadersForExternalAgentNode(
84
+ selectedNode,
85
+ subAgentExternalAgentConfigLookup,
86
+ edges
87
+ );
88
+ }, [selectedNode, subAgentExternalAgentConfigLookup, edges]);
89
+
90
+ // Local state for headers input (allows invalid JSON while typing)
91
+ const [headersInputValue, setHeadersInputValue] = useState('{}');
92
+
93
+ // Sync input value when node changes (but not on every data change)
94
+ // biome-ignore lint/correctness/useExhaustiveDependencies: intentionally omit getCurrentHeaders to prevent reset loops
95
+ useEffect(() => {
96
+ const newHeaders = getCurrentHeaders();
97
+ setHeadersInputValue(JSON.stringify(newHeaders, null, 2));
98
+ }, [selectedNode.id]);
99
+
43
100
  return (
44
101
  <div className="space-y-8 flex flex-col">
45
102
  <p className="text-sm text-muted-foreground">
@@ -56,6 +113,7 @@ export function ExternalAgentNodeEditor({
56
113
  value={selectedNode.data.name || ''}
57
114
  onChange={handleInputChange}
58
115
  placeholder="Support agent"
116
+ disabled
59
117
  error={getFieldError('name')}
60
118
  />
61
119
 
@@ -68,6 +126,7 @@ export function ExternalAgentNodeEditor({
68
126
  onChange={handleInputChange}
69
127
  placeholder="my-external-agent"
70
128
  error={getFieldError('id')}
129
+ disabled
71
130
  description="Choose a unique identifier for this agent. Using an existing id will replace that agent."
72
131
  isRequired
73
132
  />
@@ -81,6 +140,7 @@ export function ExternalAgentNodeEditor({
81
140
  onChange={handleInputChange}
82
141
  placeholder="This agent is responsible for..."
83
142
  error={getFieldError('description')}
143
+ disabled
84
144
  />
85
145
 
86
146
  <InputField
@@ -93,26 +153,21 @@ export function ExternalAgentNodeEditor({
93
153
  placeholder="https://api.example.com/agent"
94
154
  error={getFieldError('baseUrl')}
95
155
  tooltip="This URL is used to discover the agent's capabilities and communicate with it using the A2A protocol. For locally hosted agent defined with the agent-framework this would be: http://localhost:3002/tenants/:tenantId/projects/:projectId/agents/:agentId"
156
+ disabled
96
157
  />
97
158
  <ExpandableJsonEditor
98
159
  name="headers"
99
160
  label="Headers"
100
- value={selectedNode.data.headers}
101
- onChange={(value) => updateField('headers', value)}
161
+ value={headersInputValue}
162
+ onChange={handleHeadersChange}
102
163
  placeholder="{}"
103
164
  className=""
104
165
  />
105
- <CredentialSelector
106
- label="Credential"
107
- credentialLookup={credentialLookup}
108
- value={
109
- typeof selectedNode.data.credentialReferenceId === 'string'
110
- ? selectedNode.data.credentialReferenceId
111
- : null
112
- }
113
- onValueChange={(value) => updateField('credentialReferenceId', value || '')}
114
- placeholder="Select a credential"
115
- />
166
+ <ExternalLink
167
+ href={`/${tenantId}/projects/${projectId}/external-agents/${selectedNode.data.id}/edit`}
168
+ >
169
+ Edit External Agent
170
+ </ExternalLink>
116
171
  </div>
117
172
  );
118
173
  }
@@ -0,0 +1,39 @@
1
+ import { Globe } from 'lucide-react';
2
+ import { Button } from '@/components/ui/button';
3
+ import type { ExternalAgent } from '@/lib/types/external-agents';
4
+
5
+ interface ExternalAgentItemProps {
6
+ externalAgent: ExternalAgent;
7
+ onClick: (externalAgent: ExternalAgent) => void;
8
+ }
9
+
10
+ export function ExternalAgentItem({ externalAgent, onClick }: ExternalAgentItemProps) {
11
+ const { id, name, description, baseUrl } = externalAgent;
12
+
13
+ return (
14
+ <Button
15
+ variant="unstyled"
16
+ size="unstyled"
17
+ type="button"
18
+ key={id}
19
+ className="w-full p-3 rounded-lg border cursor-pointer transition-colors border-border hover:bg-muted/50 text-left inline-block"
20
+ id={id}
21
+ onClick={() => onClick(externalAgent)}
22
+ >
23
+ <div className="flex items-start gap-3">
24
+ <div className="flex-shrink-0 mt-0.5 size-8 rounded bg-muted flex items-center justify-center">
25
+ <Globe className="size-4 text-muted-foreground" />
26
+ </div>
27
+ <div className="flex-1 min-w-0">
28
+ <div className="flex items-center justify-between mb-1 gap-2 min-w-0 truncate">
29
+ <span className="font-medium text-sm truncate">{name}</span>
30
+ </div>
31
+ {description && (
32
+ <p className="text-xs text-muted-foreground truncate mb-1">{description}</p>
33
+ )}
34
+ <p className="text-xs text-muted-foreground/70 truncate">{baseUrl}</p>
35
+ </div>
36
+ </div>
37
+ </Button>
38
+ );
39
+ }