@inkeep/agents-manage-ui 0.26.1 → 0.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (243) 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 +199 -199
  3. package/.next/standalone/agents-manage-ui/.next/app-path-routes-manifest.json +7 -7
  4. package/.next/standalone/agents-manage-ui/.next/build-manifest.json +5 -5
  5. package/.next/standalone/agents-manage-ui/.next/prerender-manifest.json +15 -15
  6. package/.next/standalone/agents-manage-ui/.next/react-loadable-manifest.json +8 -8
  7. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/page.js +2 -2
  8. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/page_client-reference-manifest.js +1 -1
  9. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/[agentId]/page.js +2 -2
  10. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/[agentId]/page.js.nft.json +1 -1
  11. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/[agentId]/page_client-reference-manifest.js +1 -1
  12. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/new/page.js +2 -2
  13. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/new/page.js.nft.json +1 -1
  14. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/new/page_client-reference-manifest.js +1 -1
  15. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/page.js +2 -2
  16. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/page_client-reference-manifest.js +1 -1
  17. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/api-keys/page.js +3 -3
  18. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/api-keys/page_client-reference-manifest.js +1 -1
  19. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page.js +1 -1
  20. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page.js.nft.json +1 -1
  21. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page_client-reference-manifest.js +1 -1
  22. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/new/page.js +2 -2
  23. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/new/page.js.nft.json +1 -1
  24. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/new/page_client-reference-manifest.js +1 -1
  25. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/page.js +2 -2
  26. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/page_client-reference-manifest.js +1 -1
  27. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/page.js +2 -2
  28. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/page.js.nft.json +1 -1
  29. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/page_client-reference-manifest.js +1 -1
  30. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/new/page.js +2 -2
  31. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/new/page.js.nft.json +1 -1
  32. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/new/page_client-reference-manifest.js +1 -1
  33. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/page.js +2 -2
  34. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/page_client-reference-manifest.js +1 -1
  35. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page.js +1 -1
  36. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page.js.nft.json +1 -1
  37. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page_client-reference-manifest.js +1 -1
  38. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page.js +2 -2
  39. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page.js.nft.json +1 -1
  40. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page_client-reference-manifest.js +1 -1
  41. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/page.js +1 -1
  42. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/page.js.nft.json +1 -1
  43. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/page_client-reference-manifest.js +1 -1
  44. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page.js +2 -2
  45. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page.js.nft.json +1 -1
  46. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page_client-reference-manifest.js +1 -1
  47. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/page.js +2 -2
  48. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/page.js.nft.json +1 -1
  49. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/page_client-reference-manifest.js +1 -1
  50. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/page.js +2 -2
  51. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/page_client-reference-manifest.js +1 -1
  52. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/edit/page.js +2 -2
  53. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/edit/page.js.nft.json +1 -1
  54. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/edit/page_client-reference-manifest.js +1 -1
  55. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/page.js +2 -2
  56. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/page_client-reference-manifest.js +1 -1
  57. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/new/page.js +2 -2
  58. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/new/page.js.nft.json +1 -1
  59. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/new/page_client-reference-manifest.js +1 -1
  60. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/page.js +2 -2
  61. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/page_client-reference-manifest.js +1 -1
  62. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page.js +2 -2
  63. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page.js.nft.json +1 -1
  64. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page_client-reference-manifest.js +1 -1
  65. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page.js +2 -2
  66. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page.js.nft.json +1 -1
  67. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page_client-reference-manifest.js +1 -1
  68. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/new/page.js +2 -2
  69. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/new/page.js.nft.json +1 -1
  70. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/new/page_client-reference-manifest.js +1 -1
  71. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/page.js +2 -2
  72. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/page_client-reference-manifest.js +1 -1
  73. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/page.js +2 -2
  74. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/page_client-reference-manifest.js +1 -1
  75. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/settings/page.js +2 -2
  76. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/settings/page_client-reference-manifest.js +1 -1
  77. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page.js +2 -2
  78. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page.js.nft.json +1 -1
  79. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page_client-reference-manifest.js +1 -1
  80. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page.js +2 -2
  81. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page.js.nft.json +1 -1
  82. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page_client-reference-manifest.js +1 -1
  83. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/page.js +3 -3
  84. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/page.js.nft.json +1 -1
  85. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/page_client-reference-manifest.js +1 -1
  86. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/page.js +2 -2
  87. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/page_client-reference-manifest.js +1 -1
  88. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found/page.js +2 -2
  89. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  90. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found.html +1 -1
  91. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found.rsc +10 -10
  92. package/.next/standalone/agents-manage-ui/.next/server/app/api/data-components/[dataComponentId]/generate-preview/route_client-reference-manifest.js +1 -1
  93. package/.next/standalone/agents-manage-ui/.next/server/app/api/signoz/conversations/[conversationId]/route.js +1 -1
  94. package/.next/standalone/agents-manage-ui/.next/server/app/api/signoz/conversations/[conversationId]/route.js.nft.json +1 -1
  95. package/.next/standalone/agents-manage-ui/.next/server/app/api/signoz/conversations/[conversationId]/route_client-reference-manifest.js +1 -1
  96. package/.next/standalone/agents-manage-ui/.next/server/app/api/signoz/route_client-reference-manifest.js +1 -1
  97. package/.next/standalone/agents-manage-ui/.next/server/app/page.js +2 -2
  98. package/.next/standalone/agents-manage-ui/.next/server/app/page_client-reference-manifest.js +1 -1
  99. package/.next/standalone/agents-manage-ui/.next/server/app-paths-manifest.json +7 -7
  100. package/.next/standalone/agents-manage-ui/.next/server/chunks/{4376.js → 1483.js} +1 -1
  101. package/.next/standalone/agents-manage-ui/.next/server/chunks/1566.js +1 -0
  102. package/.next/standalone/agents-manage-ui/.next/server/chunks/{7165.js → 2160.js} +1 -1
  103. package/.next/standalone/agents-manage-ui/.next/server/chunks/3067.js +1 -1
  104. package/.next/standalone/agents-manage-ui/.next/server/chunks/3468.js +1 -1
  105. package/.next/standalone/agents-manage-ui/.next/server/chunks/4558.js +1 -1
  106. package/.next/standalone/agents-manage-ui/.next/server/chunks/4608.js +2 -2
  107. package/.next/standalone/agents-manage-ui/.next/server/chunks/4629.js +1 -1
  108. package/.next/standalone/agents-manage-ui/.next/server/chunks/4775.js +1 -1
  109. package/.next/standalone/agents-manage-ui/.next/server/chunks/5392.js +14 -0
  110. package/.next/standalone/agents-manage-ui/.next/server/chunks/5458.js +1 -0
  111. package/.next/standalone/agents-manage-ui/.next/server/chunks/5732.js +1 -1
  112. package/.next/standalone/agents-manage-ui/.next/server/chunks/5787.js +196 -0
  113. package/.next/standalone/agents-manage-ui/.next/server/chunks/5793.js +1 -1
  114. package/.next/standalone/agents-manage-ui/.next/server/chunks/6737.js +1 -1
  115. package/.next/standalone/agents-manage-ui/.next/server/chunks/7010.js +1 -0
  116. package/.next/standalone/agents-manage-ui/.next/server/chunks/7565.js +1 -1
  117. package/.next/standalone/agents-manage-ui/.next/server/chunks/7916.js +1 -0
  118. package/.next/standalone/agents-manage-ui/.next/server/middleware-build-manifest.js +1 -1
  119. package/.next/standalone/agents-manage-ui/.next/server/middleware-manifest.json +5 -5
  120. package/.next/standalone/agents-manage-ui/.next/server/middleware-react-loadable-manifest.js +1 -1
  121. package/.next/standalone/agents-manage-ui/.next/server/pages/404.html +1 -1
  122. package/.next/standalone/agents-manage-ui/.next/server/pages/500.html +1 -1
  123. package/.next/standalone/agents-manage-ui/.next/server/server-reference-manifest.js +1 -1
  124. package/.next/standalone/agents-manage-ui/.next/server/server-reference-manifest.json +1 -1
  125. package/.next/standalone/agents-manage-ui/.next/static/chunks/13328-4a1d4c948fa31107.js +1 -0
  126. package/.next/standalone/agents-manage-ui/.next/static/chunks/{31030-5934019cfc8cb254.js → 14187-cc3fd1c90d38ddef.js} +1 -1
  127. package/.next/standalone/agents-manage-ui/.next/static/chunks/16631-1b7fdb4431f30490.js +123 -0
  128. package/.next/standalone/agents-manage-ui/.next/static/chunks/{21078.054dafe1b55fb320.js → 21078.32b5d97ee64dda4b.js} +1 -1
  129. package/.next/standalone/agents-manage-ui/.next/static/chunks/{23113.3fede21b6eaf9227.js → 23113.536c8c9bea4a8c7b.js} +4 -4
  130. package/.next/standalone/agents-manage-ui/.next/static/chunks/2416-cfff29b28c217ccf.js +1 -0
  131. package/.next/standalone/agents-manage-ui/.next/static/chunks/25200-2b76cc18361fa58b.js +1 -0
  132. package/.next/standalone/agents-manage-ui/.next/static/chunks/{95926-f6acf9933512734b.js → 27747-c0d04833f4851356.js} +1 -1
  133. package/.next/standalone/agents-manage-ui/.next/static/chunks/{47199-6dbd2190fc527d1a.js → 32072-8fc2be06163181ac.js} +1 -1
  134. package/.next/standalone/agents-manage-ui/.next/static/chunks/44341-459871afa12cd37c.js +1 -0
  135. package/.next/standalone/agents-manage-ui/.next/static/chunks/{47065.0698d6a9ad9c4eca.js → 47065.2f3b7f0aaf81f83f.js} +1 -1
  136. package/.next/standalone/agents-manage-ui/.next/static/chunks/56167-267033876431fab5.js +1 -0
  137. package/.next/standalone/agents-manage-ui/.next/static/chunks/71546-840d5584b7894bd0.js +1 -0
  138. package/.next/standalone/agents-manage-ui/.next/static/chunks/77700-160a2e85ffa6dbc3.js +1 -0
  139. package/.next/standalone/agents-manage-ui/.next/static/chunks/{88831-cc7c54f946c90858.js → 88831-184f3ffcba8295bb.js} +1 -1
  140. package/.next/standalone/agents-manage-ui/.next/static/chunks/{89814.bd648f5875e206d6.js → 89814.9992418c03ef6af2.js} +4 -4
  141. package/.next/standalone/agents-manage-ui/.next/static/chunks/{9521.a325d7b909bdaf88.js → 9521.354c888ed22abb07.js} +1 -1
  142. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/[agentId]/{page-b7141ed5f8a77eb9.js → page-1231e77e66beb21b.js} +1 -1
  143. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/new/{page-f9134d7a48cd0972.js → page-5672e24d1d31274b.js} +1 -1
  144. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/page-3799960632279030.js +1 -0
  145. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/api-keys/{page-d5bc2158bed826dc.js → page-e81c4e25a6617c58.js} +1 -1
  146. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page-40fcdfec6b0447d2.js +1 -0
  147. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/new/page-4f8e61428f394910.js +1 -0
  148. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/page-43dd4a3ae38c8eb1.js +1 -0
  149. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/{page-16e165f559ef3131.js → page-c22b10f1cadf9d10.js} +1 -1
  150. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/new/page-fa5a254c8a76eaa2.js +1 -0
  151. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/{page-984321197f47e001.js → page-6aaf894e2e480bb8.js} +1 -1
  152. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page-93c4cdb48ccffc01.js +1 -0
  153. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page-1a56e7ec8b9b2289.js +1 -0
  154. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page-4391c292624d801b.js +1 -0
  155. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/providers/page-67505a9888f7c31c.js +1 -0
  156. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/{page-679cd6ca7dadaf0c.js → page-29b9c253151304c4.js} +1 -1
  157. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/edit/page-b7010b52a1a58cb4.js +1 -0
  158. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/new/page-9d93fc373fba9f35.js +1 -0
  159. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/page-b56c24923670119d.js +1 -0
  160. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page-6b298f2c1917edee.js +1 -0
  161. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page-0da1362bb966d879.js +1 -0
  162. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/new/{page-baee0631b8f2d789.js → page-aecbdd4d66a32efb.js} +1 -1
  163. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/{page-97ad4c58ba209b90.js → page-8f10eb8d6c489191.js} +1 -1
  164. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/settings/{page-22de5b7b4e6aaf93.js → page-b50af7f7fc063f80.js} +1 -1
  165. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/ai-calls/page-7abd4edcd4a9ae2c.js +1 -0
  166. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page-a8555bbb118f5e6e.js +1 -0
  167. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/page-4385ee094122399e.js +1 -0
  168. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/{page-4f5f509425b1d0ea.js → page-d1c4fe8a8b28a743.js} +1 -1
  169. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/layout-2c79d0ac495bebf8.js +1 -0
  170. package/.next/standalone/agents-manage-ui/.next/static/chunks/{d834c995-f79913da716f009c.js → d834c995-8cb74a5eed854312.js} +1 -1
  171. package/.next/standalone/agents-manage-ui/.next/static/chunks/{webpack-c7f22f43be63d6fd.js → webpack-1185dbe047280553.js} +1 -1
  172. package/.next/standalone/agents-manage-ui/.next/static/css/931594c58db54400.css +1 -0
  173. package/.next/standalone/agents-manage-ui/package.json +1 -1
  174. package/.next/standalone/packages/agents-core/package.json +2 -1
  175. package/package.json +4 -4
  176. package/src/app/[tenantId]/projects/[projectId]/agents/[agentId]/page.tsx +1 -0
  177. package/src/app/[tenantId]/projects/[projectId]/agents/new/page.tsx +2 -3
  178. package/src/app/[tenantId]/projects/[projectId]/credentials/new/providers/page.tsx +4 -4
  179. package/src/components/agent/agent.tsx +53 -1
  180. package/src/components/agent/configuration/edge-types.tsx +2 -0
  181. package/src/components/agent/configuration/node-types.tsx +34 -2
  182. package/src/components/agent/node-library/node-library.tsx +1 -0
  183. package/src/components/agent/nodes/placeholder-node.tsx +5 -2
  184. package/src/components/agent/nodes/team-agent-node.tsx +60 -0
  185. package/src/components/agent/sidepane/nodes/function-tool-node-editor.tsx +28 -25
  186. package/src/components/agent/sidepane/nodes/team-agent-node-editor.tsx +159 -0
  187. package/src/components/agent/sidepane/nodes/team-agent-selector/loading.tsx +26 -0
  188. package/src/components/agent/sidepane/nodes/team-agent-selector/team-agent-item.tsx +38 -0
  189. package/src/components/agent/sidepane/nodes/team-agent-selector/team-agent-selector.tsx +110 -0
  190. package/src/components/agent/sidepane/sidepane.tsx +23 -1
  191. package/src/components/api-keys/api-key-display.tsx +1 -1
  192. package/src/components/api-keys/form/api-key-form.tsx +1 -1
  193. package/src/components/api-keys/form/api-key-update-form.tsx +1 -1
  194. package/src/components/artifact-components/form/artifact-component-form.tsx +1 -1
  195. package/src/components/credentials/views/edit-credential-form.tsx +1 -1
  196. package/src/components/credentials/views/generic-auth-form.tsx +6 -5
  197. package/src/components/credentials/views/nango-providers-grid.tsx +1 -13
  198. package/src/components/data-components/form/data-component-form.tsx +1 -1
  199. package/src/components/data-components/preview/component-preview-generator.tsx +70 -53
  200. package/src/components/mcp-servers/form/mcp-server-form.tsx +1 -1
  201. package/src/components/ui/sidebar.tsx +1 -1
  202. package/src/features/agent/domain/deserialize.ts +55 -2
  203. package/src/features/agent/domain/serialize.ts +153 -13
  204. package/src/lib/actions/agent-full.ts +24 -0
  205. package/src/lib/api/agent-full-client.ts +18 -0
  206. package/src/lib/types/agent-full.ts +2 -0
  207. package/src/lib/types/team-agents.ts +5 -0
  208. package/src/lib/utils/team-agent-utils.ts +32 -0
  209. package/.next/standalone/agents-manage-ui/.next/server/chunks/122.js +0 -196
  210. package/.next/standalone/agents-manage-ui/.next/server/chunks/3086.js +0 -1
  211. package/.next/standalone/agents-manage-ui/.next/server/chunks/3137.js +0 -14
  212. package/.next/standalone/agents-manage-ui/.next/server/chunks/6109.js +0 -1
  213. package/.next/standalone/agents-manage-ui/.next/server/chunks/653.js +0 -1
  214. package/.next/standalone/agents-manage-ui/.next/server/chunks/7537.js +0 -1
  215. package/.next/standalone/agents-manage-ui/.next/static/chunks/13328-41037a3262960f92.js +0 -1
  216. package/.next/standalone/agents-manage-ui/.next/static/chunks/16631-f92fdc7f74df3e1e.js +0 -123
  217. package/.next/standalone/agents-manage-ui/.next/static/chunks/16887-528540c5b265fc13.js +0 -1
  218. package/.next/standalone/agents-manage-ui/.next/static/chunks/2173-e5e0c4f24a8e0c46.js +0 -1
  219. package/.next/standalone/agents-manage-ui/.next/static/chunks/27854-c9d9d59f8de29ed4.js +0 -1
  220. package/.next/standalone/agents-manage-ui/.next/static/chunks/37775-7406a92cbd39daef.js +0 -1
  221. package/.next/standalone/agents-manage-ui/.next/static/chunks/50127-83157505921c89db.js +0 -1
  222. package/.next/standalone/agents-manage-ui/.next/static/chunks/8515-8a6bb9b1af63dc60.js +0 -1
  223. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/page-b0b409e0d879bf3c.js +0 -1
  224. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page-8141ebc086c4e8cc.js +0 -1
  225. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/new/page-172f0be9de89cc0f.js +0 -1
  226. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/page-30e656b3c0eb6c84.js +0 -1
  227. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/new/page-ebb650d4f36d73c4.js +0 -1
  228. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page-2bd7c36e74bc6c4a.js +0 -1
  229. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page-9430afc1b74ecef2.js +0 -1
  230. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page-a63d4b5df3460d68.js +0 -1
  231. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/providers/page-6da4e0dc3c76645f.js +0 -1
  232. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/edit/page-6572a90cd3cb51bb.js +0 -1
  233. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/new/page-33a0e22b08c72216.js +0 -1
  234. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/page-1d139f2e776d666e.js +0 -1
  235. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page-097db4d419336446.js +0 -1
  236. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page-69e44e2331b90339.js +0 -1
  237. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/ai-calls/page-9d4fe2c46f1ea437.js +0 -1
  238. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page-2b07e2fff50589f3.js +0 -1
  239. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/page-2b47946997ff7507.js +0 -1
  240. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/layout-ce49c29e3bf4049e.js +0 -1
  241. package/.next/standalone/agents-manage-ui/.next/static/css/40728d39bb342f02.css +0 -1
  242. /package/.next/standalone/agents-manage-ui/.next/static/{7r2zCPzpVSsXFd1vvyJK8 → Bj-8vYnHAeOR5g8hC8_xi}/_buildManifest.js +0 -0
  243. /package/.next/standalone/agents-manage-ui/.next/static/{7r2zCPzpVSsXFd1vvyJK8 → Bj-8vYnHAeOR5g8hC8_xi}/_ssgManifest.js +0 -0
@@ -53,6 +53,11 @@ export type SubAgentExternalAgentConfig = {
53
53
  headers?: Record<string, string>;
54
54
  };
55
55
 
56
+ export type SubAgentTeamAgentConfig = {
57
+ agentId: string;
58
+ headers?: Record<string, string>;
59
+ };
60
+
56
61
  // AgentToolConfigLookup: subAgentId -> relationshipId -> config
57
62
  export type AgentToolConfigLookup = Record<string, Record<string, AgentToolConfig>>;
58
63
 
@@ -62,6 +67,9 @@ export type SubAgentExternalAgentConfigLookup = Record<
62
67
  Record<string, SubAgentExternalAgentConfig>
63
68
  >;
64
69
 
70
+ // SubAgentTeamAgentConfigLookup: subAgentId -> relationshipId -> config
71
+ export type SubAgentTeamAgentConfigLookup = Record<string, Record<string, SubAgentTeamAgentConfig>>;
72
+
65
73
  import type { ExternalAgent } from '@/lib/api/external-agents';
66
74
  import { EdgeType, edgeTypes, initialEdges } from './configuration/edge-types';
67
75
  import {
@@ -73,6 +81,7 @@ import {
73
81
  NodeType,
74
82
  newNodeDefaults,
75
83
  nodeTypes,
84
+ teamAgentNodeTargetHandleId,
76
85
  } from './configuration/node-types';
77
86
  import { AgentErrorSummary } from './error-display/agent-error-summary';
78
87
  import { DefaultMarker } from './markers/default-marker';
@@ -229,6 +238,29 @@ function Flow({
229
238
  return lookup;
230
239
  }, [agent?.subAgents]);
231
240
 
241
+ const subAgentTeamAgentConfigLookup = useMemo((): SubAgentTeamAgentConfigLookup => {
242
+ if (!agent?.subAgents) return {} as SubAgentTeamAgentConfigLookup;
243
+ const lookup: SubAgentTeamAgentConfigLookup = {};
244
+ Object.entries(agent.subAgents).forEach(([subAgentId, agentData]) => {
245
+ if ('canDelegateTo' in agentData && agentData.canDelegateTo) {
246
+ const teamAgentConfigs: Record<string, SubAgentTeamAgentConfig> = {};
247
+ agentData.canDelegateTo
248
+ .filter((delegate) => typeof delegate === 'object' && 'agentId' in delegate)
249
+ .forEach((delegate) => {
250
+ // For team agents, the delegate is just the target agent ID string
251
+ teamAgentConfigs[delegate.agentId] = {
252
+ agentId: delegate.agentId,
253
+ headers: delegate.headers ?? undefined,
254
+ };
255
+ });
256
+ if (Object.keys(teamAgentConfigs).length > 0) {
257
+ lookup[subAgentId] = teamAgentConfigs;
258
+ }
259
+ }
260
+ });
261
+ return lookup;
262
+ }, [agent?.subAgents]);
263
+
232
264
  const {
233
265
  screenToFlowPosition,
234
266
  updateNodeData,
@@ -408,6 +440,23 @@ function Flow({
408
440
  },
409
441
  },
410
442
  };
443
+ } else if (
444
+ (sourceHandle === agentNodeSourceHandleId || sourceHandle === agentNodeTargetHandleId) &&
445
+ targetHandle === teamAgentNodeTargetHandleId
446
+ ) {
447
+ newEdge = {
448
+ ...newEdge,
449
+ type: EdgeType.A2ATeam,
450
+ selected: true,
451
+ data: {
452
+ relationships: {
453
+ transferTargetToSource: false,
454
+ transferSourceToTarget: false,
455
+ delegateTargetToSource: false,
456
+ delegateSourceToTarget: true,
457
+ },
458
+ },
459
+ };
411
460
  }
412
461
 
413
462
  // Update MCP node subAgentId when connecting agent to MCP tool
@@ -601,7 +650,8 @@ function Flow({
601
650
  dataComponentLookup,
602
651
  artifactComponentLookup,
603
652
  agentToolConfigLookup,
604
- subAgentExternalAgentConfigLookup
653
+ subAgentExternalAgentConfigLookup,
654
+ subAgentTeamAgentConfigLookup
605
655
  );
606
656
 
607
657
  const functionToolNodeMap = new Map<string, string>();
@@ -729,6 +779,7 @@ function Flow({
729
779
  agentToolConfigLookup,
730
780
  toolLookup,
731
781
  subAgentExternalAgentConfigLookup,
782
+ subAgentTeamAgentConfigLookup,
732
783
  externalAgentLookup,
733
784
  ]);
734
785
 
@@ -968,6 +1019,7 @@ function Flow({
968
1019
  artifactComponentLookup={artifactComponentLookup}
969
1020
  agentToolConfigLookup={agentToolConfigLookup}
970
1021
  subAgentExternalAgentConfigLookup={subAgentExternalAgentConfigLookup}
1022
+ subAgentTeamAgentConfigLookup={subAgentTeamAgentConfigLookup}
971
1023
  credentialLookup={credentialLookup}
972
1024
  />
973
1025
  {showPlayground && agent?.id && (
@@ -12,6 +12,7 @@ export enum A2AEdgeType {
12
12
  export enum EdgeType {
13
13
  A2A = 'a2a',
14
14
  A2AExternal = 'a2a-external',
15
+ A2ATeam = 'a2a-team',
15
16
  // Built-in 'default' edges ignore the `data` prop.
16
17
  // Use a custom edge type instead to access `data` in rendering.
17
18
  Default = 'custom',
@@ -35,6 +36,7 @@ export const edgeTypes = {
35
36
  [EdgeType.A2A]: AgentToAgentEdge,
36
37
  [EdgeType.Default]: DefaultEdge,
37
38
  [EdgeType.A2AExternal]: DefaultEdge,
39
+ [EdgeType.A2ATeam]: DefaultEdge,
38
40
  [EdgeType.SelfLoop]: SelfLoopEdge,
39
41
  } as const;
40
42
 
@@ -1,9 +1,10 @@
1
- import { Bot, Code, Globe, Hammer } from 'lucide-react';
1
+ import { Bot, Code, Globe, Hammer, Users } 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
5
  import { PlaceholderNode } from '../nodes/placeholder-node';
6
6
  import { SubAgentNode } from '../nodes/sub-agent-node';
7
+ import { TeamAgentNode } from '../nodes/team-agent-node';
7
8
  import type { AgentModels } from './agent-types';
8
9
 
9
10
  interface NodeData {
@@ -11,7 +12,7 @@ interface NodeData {
11
12
  isDefault?: boolean;
12
13
  subAgentId?: string | null; // Optional for MCP nodes
13
14
  relationshipId?: string | null; // Optional for MCP nodes
14
- type?: 'mcp-placeholder' | 'external-agent-placeholder'; // Optional for placeholder nodes
15
+ type?: 'mcp-placeholder' | 'external-agent-placeholder' | 'team-agent-placeholder'; // Optional for placeholder nodes
15
16
  }
16
17
 
17
18
  import type { SubAgentStopWhen } from '@inkeep/agents-core/client-exports';
@@ -67,9 +68,18 @@ export interface FunctionToolNodeData extends Record<string, unknown> {
67
68
  isDelegating?: boolean;
68
69
  }
69
70
 
71
+ export interface TeamAgentNodeData extends Record<string, unknown> {
72
+ id: string;
73
+ name: string;
74
+ description?: string;
75
+ relationshipId?: string | null;
76
+ }
77
+
70
78
  export enum NodeType {
71
79
  SubAgent = 'agent',
72
80
  ExternalAgent = 'external-agent',
81
+ TeamAgent = 'team-agent',
82
+ TeamAgentPlaceholder = 'team-agent-placeholder',
73
83
  ExternalAgentPlaceholder = 'external-agent-placeholder',
74
84
  MCP = 'mcp',
75
85
  MCPPlaceholder = 'mcp-placeholder',
@@ -80,6 +90,8 @@ export const nodeTypes = {
80
90
  [NodeType.SubAgent]: SubAgentNode,
81
91
  [NodeType.ExternalAgent]: ExternalAgentNode,
82
92
  [NodeType.ExternalAgentPlaceholder]: PlaceholderNode,
93
+ [NodeType.TeamAgent]: TeamAgentNode,
94
+ [NodeType.TeamAgentPlaceholder]: PlaceholderNode,
83
95
  [NodeType.MCP]: MCPNode,
84
96
  [NodeType.MCPPlaceholder]: PlaceholderNode,
85
97
  [NodeType.FunctionTool]: FunctionToolNode,
@@ -90,6 +102,7 @@ export const agentNodeSourceHandleId = 'source-agent';
90
102
  export const agentNodeTargetHandleId = 'target-agent';
91
103
  export const externalAgentNodeTargetHandleId = 'target-external-agent';
92
104
  export const functionToolNodeHandleId = 'target-function-tool';
105
+ export const teamAgentNodeTargetHandleId = 'target-team-agent';
93
106
 
94
107
  export const newNodeDefaults: Record<keyof typeof nodeTypes, NodeData> = {
95
108
  [NodeType.SubAgent]: {
@@ -115,6 +128,15 @@ export const newNodeDefaults: Record<keyof typeof nodeTypes, NodeData> = {
115
128
  name: 'Function Tool',
116
129
  subAgentId: null,
117
130
  },
131
+ [NodeType.TeamAgent]: {
132
+ name: 'Team Agent',
133
+ subAgentId: null,
134
+ relationshipId: null,
135
+ },
136
+ [NodeType.TeamAgentPlaceholder]: {
137
+ name: 'Select team agent',
138
+ type: 'team-agent-placeholder',
139
+ },
118
140
  };
119
141
 
120
142
  export const nodeTypeMap = {
@@ -148,4 +170,14 @@ export const nodeTypeMap = {
148
170
  name: 'Function Tool',
149
171
  Icon: Code,
150
172
  },
173
+ [NodeType.TeamAgent]: {
174
+ type: NodeType.TeamAgent,
175
+ name: 'Team Agent',
176
+ Icon: Users,
177
+ },
178
+ [NodeType.TeamAgentPlaceholder]: {
179
+ type: NodeType.TeamAgentPlaceholder,
180
+ name: 'Team Agent',
181
+ Icon: Users,
182
+ },
151
183
  };
@@ -7,6 +7,7 @@ const nodeTypes: NodeItem[] = [
7
7
  nodeTypeMap[NodeType.SubAgent],
8
8
  nodeTypeMap[NodeType.ExternalAgentPlaceholder],
9
9
  nodeTypeMap[NodeType.MCPPlaceholder],
10
+ nodeTypeMap[NodeType.TeamAgentPlaceholder],
10
11
  nodeTypeMap[NodeType.FunctionTool],
11
12
  ];
12
13
 
@@ -1,10 +1,10 @@
1
1
  import type { NodeProps } from '@xyflow/react';
2
- import { Globe, Hammer } from 'lucide-react';
2
+ import { Globe, Hammer, Users } from 'lucide-react';
3
3
  import { BaseNode, BaseNodeHeader, BaseNodeHeaderTitle } from './base-node';
4
4
 
5
5
  type PlaceholderNodeData = {
6
6
  name: string;
7
- type: 'mcp-placeholder' | 'external-agent-placeholder';
7
+ type: 'mcp-placeholder' | 'external-agent-placeholder' | 'team-agent-placeholder';
8
8
  };
9
9
 
10
10
  export function PlaceholderNode(props: NodeProps & { data: PlaceholderNodeData }) {
@@ -20,6 +20,9 @@ export function PlaceholderNode(props: NodeProps & { data: PlaceholderNodeData }
20
20
  {data.type === 'external-agent-placeholder' && (
21
21
  <Globe className="size-4 text-muted-foreground/65" />
22
22
  )}
23
+ {data.type === 'team-agent-placeholder' && (
24
+ <Users className="size-4 text-muted-foreground/65" />
25
+ )}
23
26
  <BaseNodeHeaderTitle className="text-muted-foreground">{name}</BaseNodeHeaderTitle>
24
27
  </BaseNodeHeader>
25
28
  </BaseNode>
@@ -0,0 +1,60 @@
1
+ import { type NodeProps, Position } from '@xyflow/react';
2
+ import { Users } from 'lucide-react';
3
+ import { Badge } from '@/components/ui/badge';
4
+ import { NODE_WIDTH } from '@/features/agent/domain/deserialize';
5
+ import { useAgentErrors } from '@/hooks/use-agent-errors';
6
+ import { cn } from '@/lib/utils';
7
+ import type { TeamAgentNodeData } from '../configuration/node-types';
8
+ import { teamAgentNodeTargetHandleId } from '../configuration/node-types';
9
+ import { ErrorIndicator } from '../error-display/error-indicator';
10
+ import { BaseNode, BaseNodeContent, BaseNodeHeader, BaseNodeHeaderTitle } from './base-node';
11
+ import { Handle } from './handle';
12
+ import { NodeTab } from './node-tab';
13
+
14
+ export function TeamAgentNode(props: NodeProps & { data: TeamAgentNodeData }) {
15
+ const { data, selected, id } = props;
16
+ const { name, description } = data;
17
+ const { getNodeErrors, hasNodeErrors } = useAgentErrors();
18
+
19
+ // Use the agent ID from node data if available, otherwise fall back to React Flow node ID
20
+ const subAgentId = data.id || id;
21
+ const nodeErrors = getNodeErrors(subAgentId);
22
+ const hasErrors = hasNodeErrors(subAgentId);
23
+
24
+ return (
25
+ <div className="relative">
26
+ <NodeTab isSelected={selected}>Team</NodeTab>
27
+ <BaseNode
28
+ isSelected={selected}
29
+ className={cn('rounded-tl-none', hasErrors && 'ring-2 ring-red-300 border-red-300')}
30
+ style={{ width: NODE_WIDTH }}
31
+ >
32
+ <BaseNodeHeader className="flex items-center justify-between gap-2">
33
+ <div className="flex items-center gap-2 min-w-0">
34
+ <Users className="size-4 text-muted-foreground" />
35
+ <BaseNodeHeaderTitle>{name || 'Team Agent'}</BaseNodeHeaderTitle>
36
+ </div>
37
+ <Badge variant="primary" className="text-xs uppercase">
38
+ Team Agent
39
+ </Badge>
40
+ {hasErrors && (
41
+ <ErrorIndicator errors={nodeErrors} className="absolute -top-2 -right-2 w-6 h-6" />
42
+ )}
43
+ </BaseNodeHeader>
44
+ <BaseNodeContent>
45
+ <div
46
+ className={`text-sm ${description ? ' text-muted-foreground' : 'text-muted-foreground/50'}`}
47
+ >
48
+ {description || 'No description'}
49
+ </div>
50
+ </BaseNodeContent>
51
+ <Handle
52
+ id={teamAgentNodeTargetHandleId}
53
+ type="target"
54
+ position={Position.Top}
55
+ isConnectable
56
+ />
57
+ </BaseNode>
58
+ </div>
59
+ );
60
+ }
@@ -110,7 +110,7 @@ export function FunctionToolNodeEditor({ selectedNode }: FunctionToolNodeEditorP
110
110
  );
111
111
 
112
112
  return (
113
- <div className="space-y-6">
113
+ <div className="space-y-8">
114
114
  <InputField
115
115
  ref={(el) => setFieldRef('name', el)}
116
116
  id="function-tool-name"
@@ -135,31 +135,29 @@ export function FunctionToolNodeEditor({ selectedNode }: FunctionToolNodeEditorP
135
135
  isRequired
136
136
  maxHeight="max-h-32"
137
137
  />
138
+ <div className="space-y-2">
139
+ <ExpandableTextArea
140
+ id="function-tool-code"
141
+ label="Code"
142
+ value={code}
143
+ onChange={handleCodeChange}
144
+ placeholder="Enter function code here..."
145
+ data-invalid={getFieldError('code') ? '' : undefined}
146
+ isRequired
147
+ className="font-mono text-sm data-invalid:border-red-300 data-invalid:focus-visible:border-red-300 data-invalid:focus-visible:ring-red-300"
148
+ />
149
+ <p className="text-xs text-muted-foreground">
150
+ JavaScript function code to be executed by the tool. The function will receive arguments
151
+ based on the input schema and should return a result.
152
+ </p>
138
153
 
139
- <ExpandableTextArea
140
- id="function-tool-code"
141
- label="Code"
142
- value={code}
143
- onChange={handleCodeChange}
144
- placeholder="Enter function code here..."
145
- data-invalid={getFieldError('code') ? '' : undefined}
146
- isRequired
147
- className="font-mono text-sm data-invalid:border-red-300 data-invalid:focus-visible:border-red-300 data-invalid:focus-visible:ring-red-300"
148
- />
149
- <p className="text-sm text-muted-foreground">
150
- JavaScript function code to be executed by the tool. The function will receive arguments
151
- based on the input schema and should return a result.
152
- </p>
153
- {getFieldError('code') && <p className="text-sm text-red-600">{getFieldError('code')}</p>}
154
-
154
+ {getFieldError('code') && <p className="text-sm text-red-600">{getFieldError('code')}</p>}
155
+ </div>
155
156
  <div className="space-y-2">
156
157
  <div className="text-sm font-medium">
157
158
  Input Schema <span className="text-red-500">*</span>
158
159
  </div>
159
- <p className="text-sm text-muted-foreground">
160
- JSON schema defining the parameters that the function will receive. This defines the
161
- structure and validation rules for the function's input arguments.
162
- </p>
160
+
163
161
  <StandaloneJsonEditor
164
162
  value={inputSchema}
165
163
  onChange={handleInputSchemaChange}
@@ -178,6 +176,10 @@ export function FunctionToolNodeEditor({ selectedNode }: FunctionToolNodeEditorP
178
176
  "required": ["param1"]
179
177
  }`}
180
178
  />
179
+ <p className="text-xs text-muted-foreground">
180
+ JSON schema defining the parameters that the function will receive. This defines the
181
+ structure and validation rules for the function's input arguments.
182
+ </p>
181
183
  {getFieldError('inputSchema') && (
182
184
  <p className="text-sm text-red-600">{getFieldError('inputSchema')}</p>
183
185
  )}
@@ -185,10 +187,7 @@ export function FunctionToolNodeEditor({ selectedNode }: FunctionToolNodeEditorP
185
187
 
186
188
  <div className="space-y-2">
187
189
  <div className="text-sm font-medium">Dependencies</div>
188
- <p className="text-sm text-muted-foreground">
189
- External npm packages that the function code requires. These packages will be installed
190
- before executing the function.
191
- </p>
190
+
192
191
  <StandaloneJsonEditor
193
192
  value={dependencies}
194
193
  onChange={handleDependenciesChange}
@@ -197,6 +196,10 @@ export function FunctionToolNodeEditor({ selectedNode }: FunctionToolNodeEditorP
197
196
  "lodash": "^4.17.21"
198
197
  }`}
199
198
  />
199
+ <p className="text-xs text-muted-foreground">
200
+ External npm packages that the function code requires. These packages will be installed
201
+ before executing the function.
202
+ </p>
200
203
  {getFieldError('dependencies') && (
201
204
  <p className="text-sm text-red-600">{getFieldError('dependencies')}</p>
202
205
  )}
@@ -0,0 +1,159 @@
1
+ import { type Node, useReactFlow } from '@xyflow/react';
2
+ import { Trash2 } from 'lucide-react';
3
+ import { useParams } from 'next/navigation';
4
+ import { useCallback, useEffect, useState } from 'react';
5
+ import { ExpandableJsonEditor } from '@/components/form/expandable-json-editor';
6
+ import { Button } from '@/components/ui/button';
7
+ import { ExternalLink } from '@/components/ui/external-link';
8
+ import { Separator } from '@/components/ui/separator';
9
+ import { useAgentActions } from '@/features/agent/state/use-agent-store';
10
+ import type { ErrorHelpers } from '@/hooks/use-agent-errors';
11
+ import { useAutoPrefillIdZustand } from '@/hooks/use-auto-prefill-id-zustand';
12
+ import { useNodeEditor } from '@/hooks/use-node-editor';
13
+ import { getCurrentHeadersForTeamAgentNode } from '@/lib/utils/team-agent-utils';
14
+ import type { SubAgentTeamAgentConfigLookup } from '../../agent';
15
+ import type { TeamAgentNodeData } from '../../configuration/node-types';
16
+ import { InputField, TextareaField } from './form-fields';
17
+
18
+ interface TeamAgentNodeEditorProps {
19
+ selectedNode: Node<TeamAgentNodeData>;
20
+ subAgentTeamAgentConfigLookup: SubAgentTeamAgentConfigLookup;
21
+ errorHelpers?: ErrorHelpers;
22
+ }
23
+
24
+ export function TeamAgentNodeEditor({
25
+ selectedNode,
26
+ subAgentTeamAgentConfigLookup,
27
+ errorHelpers,
28
+ }: TeamAgentNodeEditorProps) {
29
+ const { updateNodeData } = useReactFlow();
30
+ const { markUnsaved } = useAgentActions();
31
+ const { handleInputChange, getFieldError, setFieldRef, updateField, deleteNode } = useNodeEditor({
32
+ selectedNodeId: selectedNode.id,
33
+ errorHelpers,
34
+ });
35
+ const { tenantId, projectId } = useParams<{
36
+ tenantId: string;
37
+ projectId: string;
38
+ }>();
39
+ const handleHeadersChange = (value: string) => {
40
+ // Always update the input state (allows user to type invalid JSON)
41
+ setHeadersInputValue(value);
42
+
43
+ // Only save to node data if the JSON is valid
44
+ try {
45
+ const parsedHeaders = value.trim() === '' ? {} : JSON.parse(value);
46
+ if (
47
+ typeof parsedHeaders === 'object' &&
48
+ parsedHeaders !== null &&
49
+ !Array.isArray(parsedHeaders)
50
+ ) {
51
+ // Valid format - save to node data
52
+ updateNodeData(selectedNode.id, {
53
+ ...selectedNode.data,
54
+ tempHeaders: parsedHeaders,
55
+ });
56
+ markUnsaved();
57
+ }
58
+ } catch {
59
+ // Invalid JSON - don't save, but allow user to continue typing
60
+ // The ExpandableJsonEditor will show the validation error
61
+ }
62
+ };
63
+
64
+ const handleIdChange = useCallback(
65
+ (generatedId: string) => {
66
+ updateField('id', generatedId);
67
+ },
68
+ [updateField]
69
+ );
70
+
71
+ // Auto-prefill ID based on name field (always enabled for agent nodes)
72
+ useAutoPrefillIdZustand({
73
+ nameValue: selectedNode.data.name,
74
+ idValue: selectedNode.data.id,
75
+ onIdChange: handleIdChange,
76
+ isEditing: false,
77
+ });
78
+
79
+ const getCurrentHeaders = useCallback((): Record<string, string> => {
80
+ return getCurrentHeadersForTeamAgentNode(selectedNode, subAgentTeamAgentConfigLookup, []);
81
+ }, [selectedNode, subAgentTeamAgentConfigLookup]);
82
+
83
+ // Local state for headers input (allows invalid JSON while typing)
84
+ const [headersInputValue, setHeadersInputValue] = useState('{}');
85
+
86
+ // Sync input value when node changes (but not on every data change)
87
+ // biome-ignore lint/correctness/useExhaustiveDependencies: intentionally omit getCurrentHeaders to prevent reset loops
88
+ useEffect(() => {
89
+ const newHeaders = getCurrentHeaders();
90
+ setHeadersInputValue(JSON.stringify(newHeaders, null, 2));
91
+ }, [selectedNode.id]);
92
+
93
+ return (
94
+ <div className="space-y-8 flex flex-col">
95
+ <p className="text-sm text-muted-foreground">
96
+ Team agents are other agents within the same project that can collaborate and delegate tasks
97
+ using the A2A (Agent-to-Agent) protocol. Team agents enable you to create specialized agents
98
+ that work together to accomplish complex tasks.
99
+ </p>
100
+
101
+ <InputField
102
+ ref={(el) => setFieldRef('name', el)}
103
+ id="name"
104
+ name="name"
105
+ label="Name"
106
+ value={selectedNode.data.name || ''}
107
+ onChange={handleInputChange}
108
+ placeholder="Support agent"
109
+ disabled
110
+ error={getFieldError('name')}
111
+ />
112
+
113
+ <InputField
114
+ ref={(el) => setFieldRef('id', el)}
115
+ id="id"
116
+ name="id"
117
+ label="Id"
118
+ value={selectedNode.data.id || ''}
119
+ onChange={handleInputChange}
120
+ placeholder="my-external-agent"
121
+ error={getFieldError('id')}
122
+ disabled
123
+ description="Choose a unique identifier for this agent. Using an existing id will replace that agent."
124
+ isRequired
125
+ />
126
+
127
+ <TextareaField
128
+ ref={(el) => setFieldRef('description', el)}
129
+ id="description"
130
+ name="description"
131
+ label="Description"
132
+ value={selectedNode.data.description || ''}
133
+ onChange={handleInputChange}
134
+ placeholder="This agent is responsible for..."
135
+ error={getFieldError('description')}
136
+ disabled
137
+ />
138
+
139
+ <ExpandableJsonEditor
140
+ name="headers"
141
+ label="Headers"
142
+ value={headersInputValue}
143
+ onChange={handleHeadersChange}
144
+ placeholder="{}"
145
+ className=""
146
+ />
147
+ <ExternalLink href={`/${tenantId}/projects/${projectId}/agents/${selectedNode.data.id}`}>
148
+ Edit Agent
149
+ </ExternalLink>
150
+ <Separator />
151
+ <div className="flex justify-end">
152
+ <Button variant="destructive-outline" size="sm" onClick={deleteNode}>
153
+ <Trash2 className="size-4" />
154
+ Delete
155
+ </Button>
156
+ </div>
157
+ </div>
158
+ );
159
+ }
@@ -0,0 +1,26 @@
1
+ import { Skeleton } from '@/components/ui/skeleton';
2
+
3
+ interface TeamAgentSelectorLoadingProps {
4
+ title: string;
5
+ }
6
+
7
+ export function TeamAgentSelectorLoading({ title }: TeamAgentSelectorLoadingProps) {
8
+ return (
9
+ <div className="space-y-2">
10
+ <h3 className="text-sm font-medium mb-2">{title}</h3>
11
+ <div className="flex flex-col gap-2">
12
+ {[...Array(3)].map((_, index) => (
13
+ <div key={index} className="w-full p-3 rounded-lg border border-border">
14
+ <div className="flex items-start gap-3">
15
+ <Skeleton className="size-8 rounded flex-shrink-0" />
16
+ <div className="flex-1 min-w-0 space-y-2">
17
+ <Skeleton className="h-4 w-3/4" />
18
+ <Skeleton className="h-3 w-1/2" />
19
+ </div>
20
+ </div>
21
+ </div>
22
+ ))}
23
+ </div>
24
+ </div>
25
+ );
26
+ }
@@ -0,0 +1,38 @@
1
+ import { Users } from 'lucide-react';
2
+ import { Button } from '@/components/ui/button';
3
+ import type { Agent } from '@/lib/types/agent-full';
4
+
5
+ interface TeamAgentItemProps {
6
+ agent: Agent;
7
+ onClick: (agent: Agent) => void;
8
+ }
9
+
10
+ export function TeamAgentItem({ agent, onClick }: TeamAgentItemProps) {
11
+ const { id, name, description } = agent;
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(agent)}
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
+ <Users 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
+ </div>
35
+ </div>
36
+ </Button>
37
+ );
38
+ }