@inkeep/agents-manage-ui 0.26.2 → 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 (212) 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 +154 -154
  3. package/.next/standalone/agents-manage-ui/.next/app-path-routes-manifest.json +5 -5
  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 +4 -4
  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 +1 -1
  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 +3 -3
  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 +1 -1
  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 +1 -1
  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 +8 -8
  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 +5 -5
  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/{5013.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/4488.js +1 -196
  106. package/.next/standalone/agents-manage-ui/.next/server/chunks/4558.js +1 -1
  107. package/.next/standalone/agents-manage-ui/.next/server/chunks/4608.js +2 -2
  108. package/.next/standalone/agents-manage-ui/.next/server/chunks/4629.js +1 -1
  109. package/.next/standalone/agents-manage-ui/.next/server/chunks/4775.js +1 -1
  110. package/.next/standalone/agents-manage-ui/.next/server/chunks/{6757.js → 5392.js} +3 -3
  111. package/.next/standalone/agents-manage-ui/.next/server/chunks/5458.js +1 -0
  112. package/.next/standalone/agents-manage-ui/.next/server/chunks/5732.js +1 -1
  113. package/.next/standalone/agents-manage-ui/.next/server/chunks/5787.js +196 -0
  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/7916.js +1 -0
  117. package/.next/standalone/agents-manage-ui/.next/server/chunks/8876.js +1 -1
  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/{6974-16087027359b6d00.js → 2416-cfff29b28c217ccf.js} +1 -1
  130. package/.next/standalone/agents-manage-ui/.next/static/chunks/25200-2b76cc18361fa58b.js +1 -0
  131. package/.next/standalone/agents-manage-ui/.next/static/chunks/{94167-e9e2c910cda50b04.js → 32072-8fc2be06163181ac.js} +1 -1
  132. package/.next/standalone/agents-manage-ui/.next/static/chunks/{47065.0698d6a9ad9c4eca.js → 47065.2f3b7f0aaf81f83f.js} +1 -1
  133. package/.next/standalone/agents-manage-ui/.next/static/chunks/56167-267033876431fab5.js +1 -0
  134. package/.next/standalone/agents-manage-ui/.next/static/chunks/{63736-40bd21fac907cb54.js → 71546-840d5584b7894bd0.js} +1 -1
  135. package/.next/standalone/agents-manage-ui/.next/static/chunks/{57196-1f7592bb989976d2.js → 77700-160a2e85ffa6dbc3.js} +1 -1
  136. package/.next/standalone/agents-manage-ui/.next/static/chunks/{89814.bd648f5875e206d6.js → 89814.9992418c03ef6af2.js} +4 -4
  137. package/.next/standalone/agents-manage-ui/.next/static/chunks/{9521.a325d7b909bdaf88.js → 9521.354c888ed22abb07.js} +1 -1
  138. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/[agentId]/{page-349cc15b60e33d67.js → page-1231e77e66beb21b.js} +1 -1
  139. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/new/{page-1ee3fe9fe777b85a.js → page-5672e24d1d31274b.js} +1 -1
  140. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/page-3799960632279030.js +1 -0
  141. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/api-keys/{page-0c8de55640a596d8.js → page-e81c4e25a6617c58.js} +1 -1
  142. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page-40fcdfec6b0447d2.js +1 -0
  143. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/new/page-4f8e61428f394910.js +1 -0
  144. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/{page-a4975b62e8371f80.js → page-43dd4a3ae38c8eb1.js} +1 -1
  145. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/{page-80a315c374bdfde2.js → page-c22b10f1cadf9d10.js} +1 -1
  146. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/new/{page-e7ab8b5e8a7a7113.js → page-fa5a254c8a76eaa2.js} +1 -1
  147. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/{page-8c8a8971a2436cff.js → page-6aaf894e2e480bb8.js} +1 -1
  148. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page-93c4cdb48ccffc01.js +1 -0
  149. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page-1a56e7ec8b9b2289.js +1 -0
  150. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page-4391c292624d801b.js +1 -0
  151. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/{page-9a7af8be7bd5aaa0.js → page-29b9c253151304c4.js} +1 -1
  152. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/edit/page-b7010b52a1a58cb4.js +1 -0
  153. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/new/{page-3278140eed942315.js → page-9d93fc373fba9f35.js} +1 -1
  154. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/page-b56c24923670119d.js +1 -0
  155. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page-6b298f2c1917edee.js +1 -0
  156. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page-0da1362bb966d879.js +1 -0
  157. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/new/{page-89ed0ab40a5bd2b4.js → page-aecbdd4d66a32efb.js} +1 -1
  158. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/{page-8bc6f211cc366345.js → page-8f10eb8d6c489191.js} +1 -1
  159. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/settings/{page-78ee214eed9eb4ef.js → page-b50af7f7fc063f80.js} +1 -1
  160. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page-a8555bbb118f5e6e.js +1 -0
  161. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/page-4385ee094122399e.js +1 -0
  162. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/page-d1c4fe8a8b28a743.js +1 -0
  163. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/{layout-5f0cadd56b24dfab.js → layout-2c79d0ac495bebf8.js} +1 -1
  164. package/.next/standalone/agents-manage-ui/.next/static/chunks/{d834c995-5d602f9f843afec0.js → d834c995-8cb74a5eed854312.js} +1 -1
  165. package/.next/standalone/agents-manage-ui/.next/static/chunks/{webpack-0fe23a6f517676ef.js → webpack-1185dbe047280553.js} +1 -1
  166. package/.next/standalone/agents-manage-ui/package.json +1 -1
  167. package/.next/standalone/packages/agents-core/package.json +2 -1
  168. package/package.json +4 -4
  169. package/src/app/[tenantId]/projects/[projectId]/agents/[agentId]/page.tsx +1 -0
  170. package/src/app/[tenantId]/projects/[projectId]/agents/new/page.tsx +2 -3
  171. package/src/components/agent/agent.tsx +53 -1
  172. package/src/components/agent/configuration/edge-types.tsx +2 -0
  173. package/src/components/agent/configuration/node-types.tsx +34 -2
  174. package/src/components/agent/node-library/node-library.tsx +1 -0
  175. package/src/components/agent/nodes/placeholder-node.tsx +5 -2
  176. package/src/components/agent/nodes/team-agent-node.tsx +60 -0
  177. package/src/components/agent/sidepane/nodes/team-agent-node-editor.tsx +159 -0
  178. package/src/components/agent/sidepane/nodes/team-agent-selector/loading.tsx +26 -0
  179. package/src/components/agent/sidepane/nodes/team-agent-selector/team-agent-item.tsx +38 -0
  180. package/src/components/agent/sidepane/nodes/team-agent-selector/team-agent-selector.tsx +110 -0
  181. package/src/components/agent/sidepane/sidepane.tsx +23 -1
  182. package/src/features/agent/domain/deserialize.ts +55 -2
  183. package/src/features/agent/domain/serialize.ts +153 -13
  184. package/src/lib/actions/agent-full.ts +24 -0
  185. package/src/lib/api/agent-full-client.ts +18 -0
  186. package/src/lib/types/agent-full.ts +2 -0
  187. package/src/lib/types/team-agents.ts +5 -0
  188. package/src/lib/utils/team-agent-utils.ts +32 -0
  189. package/.next/standalone/agents-manage-ui/.next/server/chunks/190.js +0 -1
  190. package/.next/standalone/agents-manage-ui/.next/server/chunks/2107.js +0 -1
  191. package/.next/standalone/agents-manage-ui/.next/server/chunks/2804.js +0 -1
  192. package/.next/standalone/agents-manage-ui/.next/server/chunks/5600.js +0 -1
  193. package/.next/standalone/agents-manage-ui/.next/server/chunks/6495.js +0 -1
  194. package/.next/standalone/agents-manage-ui/.next/static/chunks/13328-41037a3262960f92.js +0 -1
  195. package/.next/standalone/agents-manage-ui/.next/static/chunks/16631-4a330f0eb85bd16e.js +0 -123
  196. package/.next/standalone/agents-manage-ui/.next/static/chunks/25051-60133bfb6688ca68.js +0 -1
  197. package/.next/standalone/agents-manage-ui/.next/static/chunks/3568-ccdec1b6e9a2217f.js +0 -1
  198. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/page-93a80dceb493af14.js +0 -1
  199. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page-fced6e7495cd5e63.js +0 -1
  200. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/new/page-80d7c90f118c90ea.js +0 -1
  201. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page-b116c3e53afda314.js +0 -1
  202. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page-c755c1479d27041f.js +0 -1
  203. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page-0ee79a72954c4def.js +0 -1
  204. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/edit/page-f3069e141dc0cf37.js +0 -1
  205. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/page-c7a8266b7316091f.js +0 -1
  206. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page-f15c5bff0f71f796.js +0 -1
  207. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page-1275a6cf1a6b8891.js +0 -1
  208. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page-2b07e2fff50589f3.js +0 -1
  209. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/page-0c509f0a4b20f8d2.js +0 -1
  210. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/page-28fc047c1f42a3a1.js +0 -1
  211. /package/.next/standalone/agents-manage-ui/.next/static/{s5gi5htEgmtgz62EelVZG → Bj-8vYnHAeOR5g8hC8_xi}/_buildManifest.js +0 -0
  212. /package/.next/standalone/agents-manage-ui/.next/static/{s5gi5htEgmtgz62EelVZG → Bj-8vYnHAeOR5g8hC8_xi}/_ssgManifest.js +0 -0
@@ -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
+ }
@@ -0,0 +1,110 @@
1
+ import { type Node, useReactFlow } from '@xyflow/react';
2
+ import { useParams } from 'next/navigation';
3
+ import { useEffect, useState } from 'react';
4
+ import { toast } from 'sonner';
5
+ import { fetchAgents } from '@/lib/api/agent-full-client';
6
+ import type { Agent } from '@/lib/types/agent-full';
7
+ import { NodeType } from '../../../configuration/node-types';
8
+ import { EmptyState } from '../empty-state';
9
+ import { TeamAgentSelectorLoading } from './loading';
10
+ import { TeamAgentItem } from './team-agent-item';
11
+
12
+ interface TeamAgentSelectorState {
13
+ agents: Agent[];
14
+ isLoading: boolean;
15
+ error: string | null;
16
+ }
17
+
18
+ const useFetchAvailableAgents = (): TeamAgentSelectorState => {
19
+ const [agents, setAgents] = useState<Agent[]>([]);
20
+ const [isLoading, setIsLoading] = useState(true);
21
+ const [error, setError] = useState<string | null>(null);
22
+ const { tenantId, projectId, agentId } = useParams<{
23
+ tenantId: string;
24
+ projectId: string;
25
+ agentId: string;
26
+ }>();
27
+
28
+ useEffect(() => {
29
+ const loadAgents = async () => {
30
+ try {
31
+ setIsLoading(true);
32
+ setError(null);
33
+ const response = await fetchAgents(tenantId, projectId);
34
+ // Filter out the current agent to prevent self-selection
35
+ const filteredAgents = agentId
36
+ ? response.data.filter((agent) => agent.id !== agentId)
37
+ : response.data;
38
+ setAgents(filteredAgents);
39
+ } catch (err) {
40
+ const errorMessage = err instanceof Error ? err.message : 'Failed to load agents';
41
+ setError(errorMessage);
42
+ toast.error(errorMessage);
43
+ } finally {
44
+ setIsLoading(false);
45
+ }
46
+ };
47
+
48
+ loadAgents();
49
+ }, [tenantId, projectId, agentId]);
50
+
51
+ return { agents, isLoading, error };
52
+ };
53
+
54
+ export function TeamAgentSelector({ selectedNode }: { selectedNode: Node }) {
55
+ const { updateNode } = useReactFlow();
56
+ const { tenantId, projectId } = useParams<{
57
+ tenantId: string;
58
+ projectId: string;
59
+ }>();
60
+ const { agents, isLoading, error } = useFetchAvailableAgents();
61
+
62
+ const handleSelect = (agent: Agent) => {
63
+ updateNode(selectedNode.id, {
64
+ type: NodeType.TeamAgent,
65
+ data: {
66
+ id: agent.id,
67
+ name: agent.name,
68
+ description: agent.description,
69
+ relationshipId: null, // Will be set after saving to database
70
+ },
71
+ });
72
+ };
73
+
74
+ if (isLoading) {
75
+ return <TeamAgentSelectorLoading title="Select team agent" />;
76
+ }
77
+
78
+ if (error) {
79
+ return (
80
+ <EmptyState
81
+ message="Something went wrong."
82
+ actionText="Create agent"
83
+ actionHref={`/${tenantId}/projects/${projectId}/agents/new`}
84
+ />
85
+ );
86
+ }
87
+
88
+ if (!agents?.length) {
89
+ return (
90
+ <EmptyState
91
+ message="No agents found."
92
+ actionText="Create agent"
93
+ actionHref={`/${tenantId}/projects/${projectId}/agents/new`}
94
+ />
95
+ );
96
+ }
97
+
98
+ return (
99
+ <div>
100
+ <div className="space-y-2">
101
+ <h3 className="text-sm font-medium mb-2">Select team agent</h3>
102
+ <div className="flex flex-col gap-2 min-w-0 min-h-0">
103
+ {agents.map((agent: Agent) => (
104
+ <TeamAgentItem key={agent.id} agent={agent} onClick={handleSelect} />
105
+ ))}
106
+ </div>
107
+ </div>
108
+ </div>
109
+ );
110
+ }
@@ -7,7 +7,11 @@ import type { ArtifactComponent } from '@/lib/api/artifact-components';
7
7
  import type { Credential } from '@/lib/api/credentials';
8
8
  import type { DataComponent } from '@/lib/api/data-components';
9
9
  import { SidePane as SidePaneLayout } from '../../layout/sidepane';
10
- import type { AgentToolConfigLookup, SubAgentExternalAgentConfigLookup } from '../agent';
10
+ import type {
11
+ AgentToolConfigLookup,
12
+ SubAgentExternalAgentConfigLookup,
13
+ SubAgentTeamAgentConfigLookup,
14
+ } from '../agent';
11
15
  import { edgeTypeMap } from '../configuration/edge-types';
12
16
  import {
13
17
  type AgentNodeData,
@@ -16,6 +20,7 @@ import {
16
20
  type MCPNodeData,
17
21
  NodeType,
18
22
  nodeTypeMap,
23
+ type TeamAgentNodeData,
19
24
  } from '../configuration/node-types';
20
25
  import EdgeEditor from './edges/edge-editor';
21
26
  import { EditorLoadingSkeleton } from './editor-loading-skeleton';
@@ -27,6 +32,8 @@ import { FunctionToolNodeEditor } from './nodes/function-tool-node-editor';
27
32
  import { MCPServerNodeEditor } from './nodes/mcp-node-editor';
28
33
  import { MCPSelector } from './nodes/mcp-selector/mcp-selector';
29
34
  import { SubAgentNodeEditor } from './nodes/sub-agent-node-editor';
35
+ import { TeamAgentNodeEditor } from './nodes/team-agent-node-editor';
36
+ import { TeamAgentSelector } from './nodes/team-agent-selector/team-agent-selector';
30
37
 
31
38
  interface SidePaneProps {
32
39
  selectedNodeId: string | null;
@@ -38,6 +45,7 @@ interface SidePaneProps {
38
45
  artifactComponentLookup: Record<string, ArtifactComponent>;
39
46
  agentToolConfigLookup: AgentToolConfigLookup;
40
47
  subAgentExternalAgentConfigLookup: SubAgentExternalAgentConfigLookup;
48
+ subAgentTeamAgentConfigLookup: SubAgentTeamAgentConfigLookup;
41
49
  credentialLookup: Record<string, Credential>;
42
50
  }
43
51
 
@@ -51,6 +59,7 @@ export function SidePane({
51
59
  artifactComponentLookup,
52
60
  agentToolConfigLookup,
53
61
  subAgentExternalAgentConfigLookup,
62
+ subAgentTeamAgentConfigLookup,
54
63
  credentialLookup,
55
64
  }: SidePaneProps) {
56
65
  const selectedNode = useNodesData(selectedNodeId || '');
@@ -125,6 +134,18 @@ export function SidePane({
125
134
  case NodeType.ExternalAgentPlaceholder: {
126
135
  return <ExternalAgentSelector selectedNode={selectedNode as Node} />;
127
136
  }
137
+ case NodeType.TeamAgent: {
138
+ return (
139
+ <TeamAgentNodeEditor
140
+ selectedNode={selectedNode as Node<TeamAgentNodeData>}
141
+ subAgentTeamAgentConfigLookup={subAgentTeamAgentConfigLookup}
142
+ errorHelpers={errorHelpers}
143
+ />
144
+ );
145
+ }
146
+ case NodeType.TeamAgentPlaceholder: {
147
+ return <TeamAgentSelector selectedNode={selectedNode as Node} />;
148
+ }
128
149
  case NodeType.MCPPlaceholder: {
129
150
  return <MCPSelector selectedNode={selectedNode as Node} />;
130
151
  }
@@ -162,6 +183,7 @@ export function SidePane({
162
183
  agentToolConfigLookup,
163
184
  credentialLookup,
164
185
  subAgentExternalAgentConfigLookup,
186
+ subAgentTeamAgentConfigLookup,
165
187
  ]);
166
188
 
167
189
  const showBackButton = useMemo(() => {
@@ -1,4 +1,3 @@
1
- import { generateId } from '@/lib/utils/id-utils';
2
1
  import type { Edge, Node } from '@xyflow/react';
3
2
  import * as dagre from 'dagre';
4
3
  import { EdgeType } from '@/components/agent/configuration/edge-types';
@@ -9,9 +8,11 @@ import {
9
8
  functionToolNodeHandleId,
10
9
  mcpNodeHandleId,
11
10
  NodeType,
11
+ teamAgentNodeTargetHandleId,
12
12
  } from '@/components/agent/configuration/node-types';
13
13
  import type { FullAgentDefinition } from '@/lib/types/agent-full';
14
14
  import { formatJsonField } from '@/lib/utils';
15
+ import { generateId } from '@/lib/utils/id-utils';
15
16
 
16
17
  interface TransformResult {
17
18
  nodes: Node[];
@@ -101,6 +102,7 @@ export function deserializeAgentData(data: FullAgentDefinition): TransformResult
101
102
  const nodes: Node[] = [];
102
103
  const edges: Edge[] = [];
103
104
  const createdExternalAgentNodes = new Set<string>();
105
+ const createdTeamAgentNodes = new Set<string>();
104
106
 
105
107
  const subAgentIds: string[] = Object.keys(data.subAgents);
106
108
  for (const subAgentId of subAgentIds) {
@@ -319,12 +321,14 @@ export function deserializeAgentData(data: FullAgentDefinition): TransformResult
319
321
  for (const targetSubAgent of sourceAgent.canDelegateTo) {
320
322
  let targetSubAgentId: string;
321
323
  let isTargetExternal: boolean;
324
+ let isTargetTeamAgent: boolean;
322
325
  let headers: Record<string, string> | undefined;
323
326
  let relationshipId: string | undefined;
324
327
 
325
328
  if (typeof targetSubAgent === 'object' && 'externalAgentId' in targetSubAgent) {
326
329
  targetSubAgentId = targetSubAgent.externalAgentId;
327
330
  isTargetExternal = true;
331
+ isTargetTeamAgent = false;
328
332
  headers = targetSubAgent.headers ?? undefined;
329
333
  relationshipId = targetSubAgent.subAgentExternalAgentRelationId;
330
334
 
@@ -370,12 +374,61 @@ export function deserializeAgentData(data: FullAgentDefinition): TransformResult
370
374
  },
371
375
  };
372
376
  edges.push(edge);
377
+ } else if (typeof targetSubAgent === 'object' && 'agentId' in targetSubAgent) {
378
+ // Handle team agent delegation
379
+ targetSubAgentId = targetSubAgent.agentId;
380
+ isTargetExternal = false;
381
+ isTargetTeamAgent = true;
382
+ headers = targetSubAgent.headers ?? undefined;
383
+ relationshipId = targetSubAgent.subAgentTeamAgentRelationId;
384
+
385
+ // Create team agent node if it doesn't exist
386
+ if (!createdTeamAgentNodes.has(targetSubAgentId)) {
387
+ const teamAgent = data.teamAgents?.[targetSubAgentId];
388
+ if (teamAgent) {
389
+ const teamAgentNode: Node = {
390
+ id: targetSubAgentId,
391
+ type: NodeType.TeamAgent,
392
+ position: { x: 0, y: 0 },
393
+ data: {
394
+ id: targetSubAgentId,
395
+ name: teamAgent.name,
396
+ description: teamAgent.description,
397
+ relationshipId,
398
+ tempHeaders: headers,
399
+ },
400
+ };
401
+ nodes.push(teamAgentNode);
402
+ createdTeamAgentNodes.add(targetSubAgentId);
403
+ }
404
+ }
405
+
406
+ // Create edge from source agent to team agent
407
+ const edge: Edge = {
408
+ id: `edge-${sourceSubAgentId}-${targetSubAgentId}`,
409
+ type: EdgeType.A2ATeam, // Use same edge type as external agents
410
+ source: sourceSubAgentId,
411
+ sourceHandle: agentNodeSourceHandleId,
412
+ target: targetSubAgentId,
413
+ targetHandle: teamAgentNodeTargetHandleId,
414
+ selected: false,
415
+ data: {
416
+ relationships: {
417
+ transferTargetToSource: false,
418
+ transferSourceToTarget: false,
419
+ delegateTargetToSource: false,
420
+ delegateSourceToTarget: true,
421
+ },
422
+ },
423
+ };
424
+ edges.push(edge);
373
425
  } else {
374
426
  targetSubAgentId = targetSubAgent;
375
427
  isTargetExternal = false;
428
+ isTargetTeamAgent = false;
376
429
  }
377
430
 
378
- if (!isTargetExternal && data.subAgents[targetSubAgentId]) {
431
+ if (!isTargetExternal && !isTargetTeamAgent && data.subAgents[targetSubAgentId]) {
379
432
  // Special handling for self-referencing edges
380
433
  const isSelfReference = sourceSubAgentId === targetSubAgentId;
381
434
  const pairKey = isSelfReference
@@ -2,6 +2,7 @@ import type { Edge, Node } from '@xyflow/react';
2
2
  import type {
3
3
  AgentToolConfigLookup,
4
4
  SubAgentExternalAgentConfigLookup,
5
+ SubAgentTeamAgentConfigLookup,
5
6
  } from '@/components/agent/agent';
6
7
  import type { AgentMetadata } from '@/components/agent/configuration/agent-types';
7
8
  import type { A2AEdgeData } from '@/components/agent/configuration/edge-types';
@@ -11,6 +12,7 @@ import type { ArtifactComponent } from '@/lib/api/artifact-components';
11
12
  import type { DataComponent } from '@/lib/api/data-components';
12
13
  import type { FullAgentDefinition, InternalAgentDefinition } from '@/lib/types/agent-full';
13
14
  import type { ExternalAgent } from '@/lib/types/external-agents';
15
+ import type { TeamAgent } from '@/lib/types/team-agents';
14
16
  import { generateId } from '@/lib/utils/id-utils';
15
17
 
16
18
  export type ExtendedAgent = InternalAgentDefinition & {
@@ -76,10 +78,12 @@ export function serializeAgentData(
76
78
  dataComponentLookup?: Record<string, DataComponent>,
77
79
  artifactComponentLookup?: Record<string, ArtifactComponent>,
78
80
  agentToolConfigLookup?: AgentToolConfigLookup,
79
- subAgentExternalAgentConfigLookup?: SubAgentExternalAgentConfigLookup
81
+ subAgentExternalAgentConfigLookup?: SubAgentExternalAgentConfigLookup,
82
+ subAgentTeamAgentConfigLookup?: SubAgentTeamAgentConfigLookup
80
83
  ): FullAgentDefinition {
81
84
  const subAgents: Record<string, ExtendedAgent> = {};
82
85
  const externalAgents: Record<string, ExternalAgent> = {};
86
+ const teamAgents: Record<string, TeamAgent> = {};
83
87
  const functionTools: Record<string, any> = {};
84
88
  const functions: Record<string, any> = {};
85
89
  // Note: Tools are now project-scoped and not included in agent serialization
@@ -268,14 +272,61 @@ export function serializeAgentData(
268
272
  };
269
273
 
270
274
  externalAgents[externalAgentId] = externalAgent;
275
+ } else if (node.type === NodeType.TeamAgent) {
276
+ const teamAgentId = (node.data.id as string) || node.id;
277
+ const teamAgent: TeamAgent & {
278
+ relationshipId: string | null;
279
+ tempHeaders: Record<string, string> | null;
280
+ } = {
281
+ id: teamAgentId,
282
+ name: node.data.name as string,
283
+ description: (node.data.description as string) || '',
284
+ tempHeaders: (node.data as any).tempHeaders || null,
285
+ relationshipId: (node.data.relationshipId as string) || null,
286
+ };
287
+ teamAgents[teamAgentId] = teamAgent;
271
288
  }
272
289
  // External agent nodes are skipped - they are project-scoped resources
273
290
  }
274
291
 
292
+ const subAgentExternalDelegateMap: Record<string, Record<string, any>> = {}; // subAgentId -> relationshipId -> relationship data
293
+ const newSubAgentExternalDelegateMap: Record<string, any> = {}; // subAgentId -> relationship data
294
+ const subAgentTeamDelegateMap: Record<string, Record<string, any>> = {}; // subAgentId -> relationshipId -> relationship data
295
+ const newSubAgentTeamDelegateMap: Record<string, any> = {}; // subAgentId -> relationship data
296
+
297
+ // Populate delegate maps from existing agent data to avoid linear searches
298
+ Object.entries(subAgents).forEach(([subAgentId, agent]) => {
299
+ if (agent.canDelegateTo) {
300
+ agent.canDelegateTo.forEach((delegate) => {
301
+ if (typeof delegate === 'object') {
302
+ if ('externalAgentId' in delegate) {
303
+ // External agent delegation
304
+ if (!subAgentExternalDelegateMap[subAgentId]) {
305
+ subAgentExternalDelegateMap[subAgentId] = {};
306
+ }
307
+ if (delegate.subAgentExternalAgentRelationId) {
308
+ subAgentExternalDelegateMap[subAgentId][delegate.subAgentExternalAgentRelationId] =
309
+ delegate;
310
+ }
311
+ } else if ('agentId' in delegate) {
312
+ // Team agent delegation
313
+ if (!subAgentTeamDelegateMap[subAgentId]) {
314
+ subAgentTeamDelegateMap[subAgentId] = {};
315
+ }
316
+ if (delegate.subAgentTeamAgentRelationId) {
317
+ subAgentTeamDelegateMap[subAgentId][delegate.subAgentTeamAgentRelationId] = delegate;
318
+ }
319
+ }
320
+ }
321
+ });
322
+ }
323
+ });
324
+
275
325
  for (const edge of edges) {
276
326
  if (
277
327
  edge.type === EdgeType.A2A ||
278
328
  edge.type === EdgeType.A2AExternal ||
329
+ edge.type === EdgeType.A2ATeam ||
279
330
  edge.type === EdgeType.SelfLoop
280
331
  ) {
281
332
  const sourceAgentNode = nodes.find((node) => node.id === edge.source);
@@ -287,7 +338,9 @@ export function serializeAgentData(
287
338
 
288
339
  const targetAgent: ExtendedAgent | undefined = subAgents[targetSubAgentId];
289
340
  const targetExternalAgent: ExternalAgent | undefined = externalAgents[targetSubAgentId];
341
+ const targetTeamAgent: TeamAgent | undefined = teamAgents[targetSubAgentId];
290
342
  const isTargetExternal = targetExternalAgent !== undefined;
343
+ const isTargetTeamAgent = targetTeamAgent !== undefined;
291
344
 
292
345
  if (!sourceAgent || !(edge.data as any)?.relationships) {
293
346
  continue;
@@ -301,6 +354,7 @@ export function serializeAgentData(
301
354
  relationshipType: 'canTransferTo' | 'canDelegateTo',
302
355
  targetId: string,
303
356
  isExternal: boolean = false,
357
+ isTeamAgent: boolean = false,
304
358
  headers?: Record<string, string>,
305
359
  relationshipId?: string
306
360
  ) => {
@@ -311,13 +365,6 @@ export function serializeAgentData(
311
365
 
312
366
  // External agents always use object format
313
367
  if (isExternal) {
314
- const existingIndex = agent.canDelegateTo.findIndex(
315
- (item) =>
316
- typeof item === 'object' &&
317
- item.externalAgentId === targetId &&
318
- item.subAgentExternalAgentRelationId === relationshipId
319
- );
320
-
321
368
  const relationshipData: any = {
322
369
  externalAgentId: targetId,
323
370
  headers: headers ?? null,
@@ -328,12 +375,41 @@ export function serializeAgentData(
328
375
  relationshipData.subAgentExternalAgentRelationId = relationshipId;
329
376
  }
330
377
 
331
- if (existingIndex !== -1) {
332
- // Update existing relationship
333
- agent.canDelegateTo[existingIndex] = relationshipData;
378
+ // Store relationship in map - we'll rebuild canDelegateTo arrays at the end
379
+ if (relationshipId) {
380
+ if (!subAgentExternalDelegateMap[agent.id]) {
381
+ subAgentExternalDelegateMap[agent.id] = {};
382
+ }
383
+ subAgentExternalDelegateMap[agent.id][relationshipId] = relationshipData;
334
384
  } else {
335
- // Add new relationship
336
- agent.canDelegateTo.push(relationshipData);
385
+ if (!newSubAgentExternalDelegateMap[agent.id]) {
386
+ newSubAgentExternalDelegateMap[agent.id] = {};
387
+ }
388
+ newSubAgentExternalDelegateMap[agent.id] = relationshipData;
389
+ }
390
+ } else if (isTeamAgent) {
391
+ // Team agents use object format with agentId
392
+ const relationshipData: any = {
393
+ agentId: targetId,
394
+ headers: headers ?? null,
395
+ };
396
+
397
+ // Only include relationshipId if it's not null (schema expects optional, not nullable)
398
+ if (relationshipId) {
399
+ relationshipData.subAgentTeamAgentRelationId = relationshipId;
400
+ }
401
+
402
+ // Store relationship in map - we'll rebuild canDelegateTo arrays at the end
403
+ if (relationshipId) {
404
+ if (!subAgentTeamDelegateMap[agent.id]) {
405
+ subAgentTeamDelegateMap[agent.id] = {};
406
+ }
407
+ subAgentTeamDelegateMap[agent.id][relationshipId] = relationshipData;
408
+ } else {
409
+ if (!newSubAgentTeamDelegateMap[agent.id]) {
410
+ newSubAgentTeamDelegateMap[agent.id] = {};
411
+ }
412
+ newSubAgentTeamDelegateMap[agent.id] = relationshipData;
337
413
  }
338
414
  } else {
339
415
  // Internal agents use string format
@@ -378,6 +454,7 @@ export function serializeAgentData(
378
454
  'canDelegateTo',
379
455
  targetSubAgentId,
380
456
  true, // isExternal
457
+ false, // isTeamAgent
381
458
  externalAgentHeaders,
382
459
  relationshipId
383
460
  );
@@ -385,6 +462,43 @@ export function serializeAgentData(
385
462
  continue;
386
463
  }
387
464
 
465
+ // Handle edges to team agents (only delegation is allowed)
466
+ if (isTargetTeamAgent) {
467
+ if (relationships.delegateSourceToTarget) {
468
+ const tempHeaders = (targetAgentNode as any).data?.tempHeaders;
469
+ let teamAgentHeaders: Record<string, string> | undefined;
470
+ const relationshipId = (targetAgentNode as any).data?.relationshipId;
471
+
472
+ if (tempHeaders !== undefined) {
473
+ if (
474
+ typeof tempHeaders === 'object' &&
475
+ tempHeaders !== null &&
476
+ !Array.isArray(tempHeaders)
477
+ ) {
478
+ teamAgentHeaders = tempHeaders;
479
+ }
480
+ } else {
481
+ const existingConfig = relationshipId
482
+ ? subAgentTeamAgentConfigLookup?.[sourceSubAgentId]?.[relationshipId]
483
+ : null;
484
+ if (existingConfig?.headers) {
485
+ teamAgentHeaders = existingConfig.headers;
486
+ }
487
+ }
488
+
489
+ addRelationship(
490
+ sourceAgent,
491
+ 'canDelegateTo',
492
+ targetSubAgentId,
493
+ false, // isExternal
494
+ true, // isTeamAgent
495
+ teamAgentHeaders,
496
+ relationshipId
497
+ );
498
+ }
499
+ continue;
500
+ }
501
+
388
502
  // Handle edges between internal agents
389
503
  if (targetAgent) {
390
504
  // Process transfer relationships
@@ -505,6 +619,32 @@ export function serializeAgentData(
505
619
  };
506
620
  }
507
621
 
622
+ // Rebuild canDelegateTo arrays from delegate maps to ensure consistency
623
+ Object.entries(subAgents).forEach(([subAgentId, agent]) => {
624
+ if (agent.canDelegateTo) {
625
+ // Start with internal agent delegations (string format)
626
+ const internalDelegations = agent.canDelegateTo.filter(
627
+ (delegate) => typeof delegate === 'string'
628
+ );
629
+
630
+ // Add external agent delegations from map
631
+ const externalDelegations = Object.values(subAgentExternalDelegateMap[subAgentId] || {});
632
+
633
+ // Add team agent delegations from map
634
+ const teamDelegations = Object.values(subAgentTeamDelegateMap[subAgentId] || {});
635
+
636
+ // Rebuild the array with all delegations
637
+ agent.canDelegateTo = [...internalDelegations, ...externalDelegations, ...teamDelegations];
638
+
639
+ if (newSubAgentExternalDelegateMap[subAgentId]) {
640
+ agent.canDelegateTo.push(newSubAgentExternalDelegateMap[subAgentId]);
641
+ }
642
+ if (newSubAgentTeamDelegateMap[subAgentId]) {
643
+ agent.canDelegateTo.push(newSubAgentTeamDelegateMap[subAgentId]);
644
+ }
645
+ }
646
+ });
647
+
508
648
  return result;
509
649
  }
510
650
 
@@ -13,6 +13,7 @@ import {
13
13
  createFullAgent as apiCreateFullAgent,
14
14
  deleteFullAgent as apiDeleteFullAgent,
15
15
  fetchAgents as apiFetchAgents,
16
+ fetchTeamAgents as apiFetchTeamAgents,
16
17
  getFullAgent as apiGetFullAgent,
17
18
  updateFullAgent as apiUpdateFullAgent,
18
19
  } from '../api/agent-full-client';
@@ -21,6 +22,7 @@ import {
21
22
  type FullAgentDefinition,
22
23
  FullAgentDefinitionSchema,
23
24
  } from '../types/agent-full';
25
+ import type { TeamAgent } from '../types/team-agents';
24
26
 
25
27
  /**
26
28
  * Result type for server actions - follows a consistent pattern
@@ -55,6 +57,28 @@ export async function getAllAgentsAction(
55
57
  }
56
58
  }
57
59
 
60
+ /**
61
+ * Fetch barebones metadata for all agents in a project to be used with team agent relations
62
+ */
63
+ export async function fetchTeamAgentsAction(
64
+ tenantId: string,
65
+ projectId: string
66
+ ): Promise<ActionResult<TeamAgent[]>> {
67
+ try {
68
+ const response = await apiFetchTeamAgents(tenantId, projectId);
69
+ return {
70
+ success: true,
71
+ data: response,
72
+ };
73
+ } catch (error) {
74
+ return {
75
+ success: false,
76
+ error: error instanceof Error ? error.message : 'Failed to fetch team agents',
77
+ code: 'unknown_error',
78
+ };
79
+ }
80
+ }
81
+
58
82
  /**
59
83
  * Create a new full agent
60
84
  */
@@ -14,6 +14,7 @@ import type {
14
14
  } from '../types/agent-full';
15
15
  import { ApiError } from '../types/errors';
16
16
  import type { ListResponse } from '../types/response';
17
+ import type { TeamAgent } from '../types/team-agents';
17
18
  import { makeManagementApiRequest } from './api-config';
18
19
  import { validateProjectId, validateTenantId } from './resource-validation';
19
20
 
@@ -29,6 +30,23 @@ export async function fetchAgents(
29
30
  );
30
31
  }
31
32
 
33
+ /**
34
+ * Fetch barebones metadata for all agents in a project to be used with team agent relations
35
+ */
36
+ export async function fetchTeamAgents(tenantId: string, projectId: string): Promise<TeamAgent[]> {
37
+ validateTenantId(tenantId);
38
+ validateProjectId(projectId);
39
+
40
+ const agents = await fetchAgents(tenantId, projectId);
41
+ return agents.data.map((agent) => {
42
+ return {
43
+ id: agent.id,
44
+ name: agent.name,
45
+ description: agent.description || '',
46
+ };
47
+ });
48
+ }
49
+
32
50
  /**
33
51
  * Create a new full agent
34
52
  */