@inkeep/agents-manage-ui 0.8.3 → 0.8.5

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 (179) 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 +105 -105
  3. package/.next/standalone/agents-manage-ui/.next/app-path-routes-manifest.json +1 -1
  4. package/.next/standalone/agents-manage-ui/.next/build-manifest.json +5 -5
  5. package/.next/standalone/agents-manage-ui/.next/prerender-manifest.json +3 -3
  6. package/.next/standalone/agents-manage-ui/.next/react-loadable-manifest.json +12 -12
  7. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/page.js +1 -1
  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]/api-keys/page.js +3 -3
  10. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/api-keys/page_client-reference-manifest.js +1 -1
  11. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifact-components/[artifactComponentId]/page.js +2 -2
  12. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifact-components/[artifactComponentId]/page.js.nft.json +1 -1
  13. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifact-components/[artifactComponentId]/page_client-reference-manifest.js +1 -1
  14. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifact-components/new/page.js +2 -2
  15. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifact-components/new/page.js.nft.json +1 -1
  16. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifact-components/new/page_client-reference-manifest.js +1 -1
  17. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifact-components/page.js +2 -2
  18. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifact-components/page_client-reference-manifest.js +1 -1
  19. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page.js +1 -1
  20. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page.js.nft.json +1 -1
  21. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page_client-reference-manifest.js +1 -1
  22. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page.js +2 -2
  23. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page.js.nft.json +1 -1
  24. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page_client-reference-manifest.js +1 -1
  25. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/page.js +1 -1
  26. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/page_client-reference-manifest.js +1 -1
  27. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page.js +2 -2
  28. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page.js.nft.json +1 -1
  29. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page_client-reference-manifest.js +1 -1
  30. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/page.js +2 -2
  31. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/page.js.nft.json +1 -1
  32. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/page_client-reference-manifest.js +1 -1
  33. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/page.js +2 -2
  34. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/page_client-reference-manifest.js +1 -1
  35. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/data-components/[dataComponentId]/page.js +2 -2
  36. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/data-components/[dataComponentId]/page.js.nft.json +1 -1
  37. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/data-components/[dataComponentId]/page_client-reference-manifest.js +1 -1
  38. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/data-components/new/page.js +2 -2
  39. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/data-components/new/page.js.nft.json +1 -1
  40. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/data-components/new/page_client-reference-manifest.js +1 -1
  41. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/data-components/page.js +1 -1
  42. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/data-components/page_client-reference-manifest.js +1 -1
  43. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/[graphId]/page.js +2 -2
  44. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/[graphId]/page.js.nft.json +1 -1
  45. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/[graphId]/page_client-reference-manifest.js +1 -1
  46. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/new/page.js +2 -2
  47. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/new/page.js.nft.json +1 -1
  48. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/new/page_client-reference-manifest.js +1 -1
  49. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/page.js +2 -2
  50. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/page_client-reference-manifest.js +1 -1
  51. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page.js +2 -2
  52. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page.js.nft.json +1 -1
  53. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page_client-reference-manifest.js +1 -1
  54. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page.js +1 -1
  55. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page_client-reference-manifest.js +1 -1
  56. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/new/page.js +2 -2
  57. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/new/page.js.nft.json +1 -1
  58. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/new/page_client-reference-manifest.js +1 -1
  59. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/page.js +1 -1
  60. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/page_client-reference-manifest.js +1 -1
  61. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/page.js +2 -2
  62. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/page_client-reference-manifest.js +1 -1
  63. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/settings/page.js +2 -2
  64. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/settings/page_client-reference-manifest.js +1 -1
  65. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page.js +1 -1
  66. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page.js.nft.json +1 -1
  67. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page_client-reference-manifest.js +1 -1
  68. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page.js +2 -2
  69. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page_client-reference-manifest.js +1 -1
  70. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/page.js +3 -3
  71. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/page.js.nft.json +1 -1
  72. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/page_client-reference-manifest.js +1 -1
  73. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/page.js +2 -2
  74. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/page_client-reference-manifest.js +1 -1
  75. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found/page.js +1 -1
  76. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  77. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found.html +1 -1
  78. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found.rsc +8 -8
  79. package/.next/standalone/agents-manage-ui/.next/server/app/api/signoz/conversations/[conversationId]/route_client-reference-manifest.js +1 -1
  80. package/.next/standalone/agents-manage-ui/.next/server/app/api/signoz/route_client-reference-manifest.js +1 -1
  81. package/.next/standalone/agents-manage-ui/.next/server/app/page.js +2 -2
  82. package/.next/standalone/agents-manage-ui/.next/server/app/page_client-reference-manifest.js +1 -1
  83. package/.next/standalone/agents-manage-ui/.next/server/app-paths-manifest.json +1 -1
  84. package/.next/standalone/agents-manage-ui/.next/server/chunks/1040.js +1 -1
  85. package/.next/standalone/agents-manage-ui/.next/server/chunks/2411.js +2 -2
  86. package/.next/standalone/agents-manage-ui/.next/server/chunks/{2124.js → 2539.js} +3 -3
  87. package/.next/standalone/agents-manage-ui/.next/server/chunks/256.js +1 -0
  88. package/.next/standalone/agents-manage-ui/.next/server/chunks/3508.js +1 -1
  89. package/.next/standalone/agents-manage-ui/.next/server/chunks/3547.js +1 -1
  90. package/.next/standalone/agents-manage-ui/.next/server/chunks/3785.js +1 -0
  91. package/.next/standalone/agents-manage-ui/.next/server/chunks/3859.js +1 -1
  92. package/.next/standalone/agents-manage-ui/.next/server/chunks/5166.js +1 -0
  93. package/.next/standalone/agents-manage-ui/.next/server/chunks/5232.js +1 -1
  94. package/.next/standalone/agents-manage-ui/.next/server/chunks/7547.js +1 -0
  95. package/.next/standalone/agents-manage-ui/.next/server/chunks/8304.js +1 -0
  96. package/.next/standalone/agents-manage-ui/.next/server/chunks/8449.js +2 -2
  97. package/.next/standalone/agents-manage-ui/.next/server/chunks/8473.js +1 -0
  98. package/.next/standalone/agents-manage-ui/.next/server/chunks/9815.js +1 -1
  99. package/.next/standalone/agents-manage-ui/.next/server/middleware-build-manifest.js +1 -1
  100. package/.next/standalone/agents-manage-ui/.next/server/middleware-react-loadable-manifest.js +1 -1
  101. package/.next/standalone/agents-manage-ui/.next/server/pages/404.html +1 -1
  102. package/.next/standalone/agents-manage-ui/.next/server/pages/500.html +1 -1
  103. package/.next/standalone/agents-manage-ui/.next/server/server-reference-manifest.js +1 -1
  104. package/.next/standalone/agents-manage-ui/.next/server/server-reference-manifest.json +1 -1
  105. package/.next/standalone/agents-manage-ui/.next/static/chunks/{1078.be426e992f97b112.js → 1078.f44e05234b17a838.js} +2 -2
  106. package/.next/standalone/agents-manage-ui/.next/static/chunks/{7767-02066bb80b94f34a.js → 1205-bc451a63db41a08d.js} +1 -1
  107. package/.next/standalone/agents-manage-ui/.next/static/chunks/1315-947e2cda9b1614e9.js +1 -0
  108. package/.next/standalone/agents-manage-ui/.next/static/chunks/2063-fdc0702cbb1a1a89.js +1 -0
  109. package/.next/standalone/agents-manage-ui/.next/static/chunks/{2206-9ff3c0c8319b8686.js → 2836-3bf138285ea276e1.js} +1 -1
  110. package/.next/standalone/agents-manage-ui/.next/static/chunks/{3162.20c8be7282977fc3.js → 3162.eb0fe441ea725082.js} +1 -1
  111. package/.next/standalone/agents-manage-ui/.next/static/chunks/{331.4164e5bbbf2109c5.js → 331.dd96a3bcd60e4373.js} +1 -1
  112. package/.next/standalone/agents-manage-ui/.next/static/chunks/{3453.c5924c5185e5e796.js → 3453.464bee7e9449cfb6.js} +1 -1
  113. package/.next/standalone/agents-manage-ui/.next/static/chunks/{3677.6c0c43a6899d39a0.js → 3677.13450954b9805540.js} +1 -1
  114. package/.next/standalone/agents-manage-ui/.next/static/chunks/{3779.4ba8b9826843e8b2.js → 3779.17320499ac8f98f8.js} +1 -1
  115. package/.next/standalone/agents-manage-ui/.next/static/chunks/{3974.f8b5e1821a54d6e7.js → 3974.48089ea5d84cd279.js} +1 -1
  116. package/.next/standalone/agents-manage-ui/.next/static/chunks/{4855.0458ee26dcbd0579.js → 4855.45303f638e19dccd.js} +1 -1
  117. package/.next/standalone/agents-manage-ui/.next/static/chunks/{6497-4e922cb6838db594.js → 6497-d25dae53e4f0b68a.js} +1 -1
  118. package/.next/standalone/agents-manage-ui/.next/static/chunks/7065.7788113d68e70567.js +55 -0
  119. package/.next/standalone/agents-manage-ui/.next/static/chunks/7167-aa7cbc1a170ed9f3.js +1 -0
  120. package/.next/standalone/agents-manage-ui/.next/static/chunks/{871.067c303d1e319df5.js → 871.5ae83e71515ddfcc.js} +2 -2
  121. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/api-keys/page-b5ec791f7cf4524d.js +1 -0
  122. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifact-components/[artifactComponentId]/{page-e6339bd5c52abe5c.js → page-510f60a1b4c5bd5c.js} +1 -1
  123. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifact-components/new/{page-e6339bd5c52abe5c.js → page-510f60a1b4c5bd5c.js} +1 -1
  124. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifact-components/page-f681a97c1571bbab.js +1 -0
  125. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page-0d705788029fb830.js +1 -0
  126. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/bearer/{page-86f2bdd15f326447.js → page-2bb22b9f71b41225.js} +1 -1
  127. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page-3e25b96a77c86de8.js +1 -0
  128. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/page-d53a8c3c6cc04080.js +1 -0
  129. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/data-components/[dataComponentId]/{page-2b552c02b2f25275.js → page-7882368cf26a5794.js} +1 -1
  130. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/data-components/new/{page-2b552c02b2f25275.js → page-7882368cf26a5794.js} +1 -1
  131. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/data-components/page-e8eea5135581b57e.js +1 -0
  132. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/graphs/page-65d8178e10d0c7b1.js +1 -0
  133. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/{page-fb9458614e107dea.js → page-caf7b1ff751072ca.js} +1 -1
  134. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/new/{page-8a0480ac85e4062a.js → page-ac09974d15068c01.js} +1 -1
  135. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/{page-2f95ce875ceb5abc.js → page-b7c8b09b22d645e6.js} +1 -1
  136. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/settings/{page-ae696cda7c8b55c2.js → page-a9a5114b9141f44a.js} +1 -1
  137. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page-a1b86ad79a9cd6d6.js +1 -0
  138. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/page-aefa8d6de4972e76.js +1 -0
  139. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/page-30602b3e03b27fc3.js +1 -0
  140. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/layout-b7185deba311ccaa.js +1 -0
  141. package/.next/standalone/agents-manage-ui/.next/static/chunks/{webpack-211ed257f0444458.js → webpack-bd432a1550687523.js} +1 -1
  142. package/.next/standalone/agents-manage-ui/package.json +1 -1
  143. package/.next/standalone/packages/agents-core/package.json +1 -1
  144. package/package.json +4 -4
  145. package/src/app/[tenantId]/projects/[projectId]/graphs/[graphId]/page.tsx +12 -3
  146. package/src/app/[tenantId]/projects/[projectId]/graphs/new/page.tsx +6 -1
  147. package/src/components/graph/configuration/node-types.tsx +2 -0
  148. package/src/components/graph/graph.tsx +6 -0
  149. package/src/components/graph/sidepane/nodes/credential-selector.tsx +173 -0
  150. package/src/components/graph/sidepane/nodes/external-agent-node-editor.tsx +27 -5
  151. package/src/components/graph/sidepane/sidepane.tsx +4 -0
  152. package/src/components/traces/conversation-errors.tsx +8 -0
  153. package/src/components/traces/timeline/timeline-wrapper.tsx +6 -1
  154. package/src/features/graph/domain/deserialize.ts +2 -1
  155. package/src/features/graph/domain/serialize.ts +8 -0
  156. package/src/lib/actions/credentials.ts +31 -1
  157. package/.next/standalone/agents-manage-ui/.next/server/chunks/3518.js +0 -1
  158. package/.next/standalone/agents-manage-ui/.next/server/chunks/36.js +0 -1
  159. package/.next/standalone/agents-manage-ui/.next/server/chunks/442.js +0 -1
  160. package/.next/standalone/agents-manage-ui/.next/server/chunks/6028.js +0 -1
  161. package/.next/standalone/agents-manage-ui/.next/server/chunks/782.js +0 -1
  162. package/.next/standalone/agents-manage-ui/.next/server/chunks/8196.js +0 -1
  163. package/.next/standalone/agents-manage-ui/.next/static/chunks/2063-b8d2ea4d0cd6f3ef.js +0 -1
  164. package/.next/standalone/agents-manage-ui/.next/static/chunks/7065.16acd7a427b07a6d.js +0 -55
  165. package/.next/standalone/agents-manage-ui/.next/static/chunks/7167-0fa67567fae3fade.js +0 -1
  166. package/.next/standalone/agents-manage-ui/.next/static/chunks/8356-d72db466159ee410.js +0 -1
  167. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/api-keys/page-49bddefea3fe5403.js +0 -1
  168. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifact-components/page-5dfdded2864cf26f.js +0 -1
  169. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page-5a352e5bb0f0d362.js +0 -1
  170. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page-6a0d941539881746.js +0 -1
  171. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/page-160b2773bf3ada68.js +0 -1
  172. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/data-components/page-1da2122637de9964.js +0 -1
  173. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/graphs/page-45c9b732f07151fe.js +0 -1
  174. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page-8ce5730a68b5109b.js +0 -1
  175. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/page-5284982e6a917cc7.js +0 -1
  176. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/page-47c9f4e642b70015.js +0 -1
  177. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/layout-54d17d92420d4b7d.js +0 -1
  178. /package/.next/standalone/agents-manage-ui/.next/static/{YDKeLLeMD2zT8EUlv1AJ9 → H1g3mqIkLKZfNLLx0N0Zi}/_buildManifest.js +0 -0
  179. /package/.next/standalone/agents-manage-ui/.next/static/{YDKeLLeMD2zT8EUlv1AJ9 → H1g3mqIkLKZfNLLx0N0Zi}/_ssgManifest.js +0 -0
@@ -1,11 +1,11 @@
1
1
  import { Graph } from '@/components/graph/graph';
2
2
  import { BodyTemplate } from '@/components/layout/body-template';
3
3
  import { fetchArtifactComponentsAction } from '@/lib/actions/artifact-components';
4
+ import { fetchCredentialsAction } from '@/lib/actions/credentials';
4
5
  import { fetchDataComponentsAction } from '@/lib/actions/data-components';
5
6
  import { getFullGraphAction } from '@/lib/actions/graph-full';
6
7
  import { fetchToolsAction } from '@/lib/actions/tools';
7
8
  import { createLookup } from '@/lib/utils';
8
-
9
9
  export const dynamic = 'force-dynamic';
10
10
 
11
11
  interface GraphPageProps {
@@ -15,19 +15,26 @@ interface GraphPageProps {
15
15
  async function GraphPage({ params }: GraphPageProps) {
16
16
  const { graphId, tenantId, projectId } = await params;
17
17
 
18
- const [graph, dataComponents, artifactComponents, tools] = await Promise.all([
18
+ const [graph, dataComponents, artifactComponents, credentials, tools] = await Promise.all([
19
19
  getFullGraphAction(tenantId, projectId, graphId),
20
20
  fetchDataComponentsAction(tenantId, projectId),
21
21
  fetchArtifactComponentsAction(tenantId, projectId),
22
+ fetchCredentialsAction(tenantId, projectId),
22
23
  fetchToolsAction(tenantId, projectId),
23
24
  ]);
24
25
 
25
26
  if (!graph.success) throw new Error(graph.error);
26
- if (!dataComponents.success || !artifactComponents.success || !tools.success) {
27
+ if (
28
+ !dataComponents.success ||
29
+ !artifactComponents.success ||
30
+ !credentials.success ||
31
+ !tools.success
32
+ ) {
27
33
  console.error(
28
34
  'Failed to fetch components:',
29
35
  dataComponents.error,
30
36
  artifactComponents.error,
37
+ credentials.error,
31
38
  tools.error
32
39
  );
33
40
  }
@@ -41,6 +48,7 @@ async function GraphPage({ params }: GraphPageProps) {
41
48
  );
42
49
 
43
50
  const toolLookup = createLookup(tools.success ? tools.data : undefined);
51
+ const credentialLookup = createLookup(credentials.success ? credentials.data : undefined);
44
52
 
45
53
  return (
46
54
  <BodyTemplate
@@ -54,6 +62,7 @@ async function GraphPage({ params }: GraphPageProps) {
54
62
  dataComponentLookup={dataComponentLookup}
55
63
  artifactComponentLookup={artifactComponentLookup}
56
64
  toolLookup={toolLookup}
65
+ credentialLookup={credentialLookup}
57
66
  />
58
67
  </BodyTemplate>
59
68
  );
@@ -1,6 +1,7 @@
1
1
  import { Graph } from '@/components/graph/graph';
2
2
  import { BodyTemplate } from '@/components/layout/body-template';
3
3
  import { fetchArtifactComponentsAction } from '@/lib/actions/artifact-components';
4
+ import { fetchCredentialsAction } from '@/lib/actions/credentials';
4
5
  import { fetchDataComponentsAction } from '@/lib/actions/data-components';
5
6
  import { fetchToolsAction } from '@/lib/actions/tools';
6
7
  import { createLookup } from '@/lib/utils';
@@ -11,10 +12,11 @@ async function NewGraphPage({
11
12
  params: Promise<{ tenantId: string; projectId: string }>;
12
13
  }) {
13
14
  const { tenantId, projectId } = await params;
14
- const [dataComponents, artifactComponents, tools] = await Promise.all([
15
+ const [dataComponents, artifactComponents, tools, credentials] = await Promise.all([
15
16
  fetchDataComponentsAction(tenantId, projectId),
16
17
  fetchArtifactComponentsAction(tenantId, projectId),
17
18
  fetchToolsAction(tenantId, projectId),
19
+ fetchCredentialsAction(tenantId, projectId),
18
20
  ]);
19
21
 
20
22
  if (!dataComponents.success || !artifactComponents.success || !tools.success) {
@@ -35,6 +37,8 @@ async function NewGraphPage({
35
37
  );
36
38
  const toolLookup = createLookup(tools.success ? tools.data : undefined);
37
39
 
40
+ const credentialLookup = createLookup(credentials.success ? credentials.data : undefined);
41
+
38
42
  return (
39
43
  <BodyTemplate
40
44
  breadcrumbs={[
@@ -46,6 +50,7 @@ async function NewGraphPage({
46
50
  dataComponentLookup={dataComponentLookup}
47
51
  artifactComponentLookup={artifactComponentLookup}
48
52
  toolLookup={toolLookup}
53
+ credentialLookup={credentialLookup}
49
54
  />
50
55
  </BodyTemplate>
51
56
  );
@@ -38,6 +38,8 @@ export interface ExternalAgentNodeData extends Record<string, unknown> {
38
38
  name: string;
39
39
  description?: string;
40
40
  baseUrl: string;
41
+ headers: string;
42
+ credentialReferenceId?: string | null;
41
43
  }
42
44
 
43
45
  export enum NodeType {
@@ -31,6 +31,7 @@ import { useGraphShortcuts } from '@/features/graph/ui/use-graph-shortcuts';
31
31
  import { useGraphErrors } from '@/hooks/use-graph-errors';
32
32
  import { useSidePane } from '@/hooks/use-side-pane';
33
33
  import type { ArtifactComponent } from '@/lib/api/artifact-components';
34
+ import type { Credential } from '@/lib/api/credentials';
34
35
  import type { DataComponent } from '@/lib/api/data-components';
35
36
  import { saveGraph } from '@/lib/services/save-graph';
36
37
  import type { MCPTool } from '@/lib/types/tools';
@@ -97,6 +98,7 @@ interface GraphProps {
97
98
  dataComponentLookup?: Record<string, DataComponent>;
98
99
  artifactComponentLookup?: Record<string, ArtifactComponent>;
99
100
  toolLookup?: Record<string, MCPTool>;
101
+ credentialLookup?: Record<string, Credential>;
100
102
  }
101
103
 
102
104
  function Flow({
@@ -104,6 +106,7 @@ function Flow({
104
106
  dataComponentLookup = {},
105
107
  artifactComponentLookup = {},
106
108
  toolLookup = {},
109
+ credentialLookup = {},
107
110
  }: GraphProps) {
108
111
  const [showPlayground, setShowPlayground] = useState(false);
109
112
  const router = useRouter();
@@ -625,6 +628,7 @@ function Flow({
625
628
  dataComponentLookup={dataComponentLookup}
626
629
  artifactComponentLookup={artifactComponentLookup}
627
630
  agentToolConfigLookup={agentToolConfigLookup}
631
+ credentialLookup={credentialLookup}
628
632
  />
629
633
  {showPlayground && graph?.id && (
630
634
  <Playground
@@ -643,6 +647,7 @@ export function Graph({
643
647
  dataComponentLookup,
644
648
  artifactComponentLookup,
645
649
  toolLookup,
650
+ credentialLookup,
646
651
  }: GraphProps) {
647
652
  return (
648
653
  <ReactFlowProvider>
@@ -651,6 +656,7 @@ export function Graph({
651
656
  dataComponentLookup={dataComponentLookup}
652
657
  artifactComponentLookup={artifactComponentLookup}
653
658
  toolLookup={toolLookup}
659
+ credentialLookup={credentialLookup}
654
660
  />
655
661
  </ReactFlowProvider>
656
662
  );
@@ -0,0 +1,173 @@
1
+ 'use client';
2
+
3
+ import { ChevronsUpDown } from 'lucide-react';
4
+ import { useState } from 'react';
5
+ import { Badge } from '@/components/ui/badge';
6
+ import { Button } from '@/components/ui/button';
7
+ import {
8
+ Command,
9
+ CommandEmpty,
10
+ CommandGroup,
11
+ CommandInput,
12
+ CommandItem,
13
+ CommandList,
14
+ } from '@/components/ui/command';
15
+ import { Label } from '@/components/ui/label';
16
+ import { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover';
17
+ import type { Credential } from '@/lib/api/credentials';
18
+
19
+ // Header component - shows label and status
20
+ interface CredentialHeaderProps {
21
+ label: string;
22
+ }
23
+
24
+ function CredentialHeader({ label }: CredentialHeaderProps) {
25
+ return (
26
+ <div className="flex gap-2">
27
+ <Label>{label}</Label>
28
+ </div>
29
+ );
30
+ }
31
+
32
+ // Dropdown for selecting credentials
33
+ interface CredentialDropdownProps {
34
+ selectedCredentialId: string | null;
35
+ onSelect: (credentialId: string | null) => void;
36
+ availableCredentials: Credential[];
37
+ placeholder?: string;
38
+ }
39
+
40
+ function CredentialDropdown({
41
+ selectedCredentialId,
42
+ onSelect,
43
+ availableCredentials,
44
+ placeholder = 'Select credential...',
45
+ }: CredentialDropdownProps) {
46
+ const [open, setOpen] = useState(false);
47
+
48
+ return (
49
+ <div className="flex w-full">
50
+ <Popover open={open} onOpenChange={setOpen}>
51
+ <PopoverTrigger asChild>
52
+ <Button
53
+ variant="outline"
54
+ role="combobox"
55
+ aria-expanded={open}
56
+ className="w-full justify-between bg-transparent text-gray-700"
57
+ >
58
+ {selectedCredentialId === null ? (
59
+ <div className="text-muted-foreground">No Authentication</div>
60
+ ) : selectedCredentialId ? (
61
+ <div className="flex items-center gap-2">
62
+ <span className="font-medium">
63
+ {availableCredentials.find((c) => c.id === selectedCredentialId)?.id ||
64
+ selectedCredentialId}
65
+ </span>
66
+ <span className="text-xs text-muted-foreground">
67
+ (
68
+ {availableCredentials.find((c) => c.id === selectedCredentialId)?.type ||
69
+ 'Unknown'}
70
+ )
71
+ </span>
72
+ </div>
73
+ ) : (
74
+ <div className="text-muted-foreground">{placeholder}</div>
75
+ )}
76
+ <ChevronsUpDown className="ml-2 h-4 w-4 shrink-0 opacity-50" />
77
+ </Button>
78
+ </PopoverTrigger>
79
+ <PopoverContent className="w-[var(--radix-popover-trigger-width)] p-0">
80
+ <Command>
81
+ <CommandInput placeholder="Search credentials..." />
82
+ <CommandList>
83
+ <CommandEmpty>No credentials found.</CommandEmpty>
84
+ <CommandGroup>
85
+ {/* No Authentication option */}
86
+ <CommandItem
87
+ value=""
88
+ onSelect={() => {
89
+ onSelect(null);
90
+ setOpen(false);
91
+ }}
92
+ className="cursor-pointer"
93
+ >
94
+ <div className="flex items-center justify-between w-full">
95
+ <div>
96
+ <div className="font-medium">No Authentication</div>
97
+ <div className="text-xs text-muted-foreground">Unsecured connection</div>
98
+ </div>
99
+ {selectedCredentialId === null && (
100
+ <Badge variant="success" className="text-[10px]">
101
+ Selected
102
+ </Badge>
103
+ )}
104
+ </div>
105
+ </CommandItem>
106
+
107
+ {/* Available credentials */}
108
+ {availableCredentials.map((credential) => (
109
+ <CommandItem
110
+ key={credential.id}
111
+ value={credential.id}
112
+ onSelect={() => {
113
+ onSelect(credential.id);
114
+ setOpen(false);
115
+ }}
116
+ className="cursor-pointer"
117
+ >
118
+ <div className="flex items-center justify-between w-full">
119
+ <div>
120
+ <div className="font-medium">{credential.id}</div>
121
+ <div className="text-xs text-muted-foreground">{credential.type}</div>
122
+ </div>
123
+ {selectedCredentialId === credential.id && (
124
+ <Badge variant="success" className="text-[10px]">
125
+ Selected
126
+ </Badge>
127
+ )}
128
+ </div>
129
+ </CommandItem>
130
+ ))}
131
+ </CommandGroup>
132
+ </CommandList>
133
+ </Command>
134
+ </PopoverContent>
135
+ </Popover>
136
+ </div>
137
+ );
138
+ }
139
+
140
+ // Main selector component
141
+ interface CredentialSelectorProps {
142
+ label?: string;
143
+ value?: string | null;
144
+ onValueChange?: (value: string | null) => void;
145
+ placeholder?: string;
146
+ credentialLookup: Record<string, Credential>;
147
+ }
148
+
149
+ export function CredentialSelector({
150
+ label = 'Credential',
151
+ value,
152
+ credentialLookup,
153
+ onValueChange,
154
+ placeholder = 'Select credential...',
155
+ }: CredentialSelectorProps) {
156
+ const handleSelect = (credentialId: string | null) => {
157
+ onValueChange?.(credentialId);
158
+ };
159
+
160
+ return (
161
+ <div className="flex flex-col gap-2">
162
+ <div className="flex flex-col gap-2">
163
+ <CredentialHeader label={label} />
164
+ </div>
165
+ <CredentialDropdown
166
+ selectedCredentialId={value || null}
167
+ onSelect={handleSelect}
168
+ availableCredentials={Object.values(credentialLookup)}
169
+ placeholder={placeholder}
170
+ />
171
+ </div>
172
+ );
173
+ }
@@ -1,32 +1,35 @@
1
1
  import type { Node } from '@xyflow/react';
2
2
  import { useCallback } from 'react';
3
+ import { ExpandableJsonEditor } from '@/components/form/expandable-json-editor';
3
4
  import { useAutoPrefillIdZustand } from '@/hooks/use-auto-prefill-id-zustand';
4
5
  import type { ErrorHelpers } from '@/hooks/use-graph-errors';
5
6
  import { useNodeEditor } from '@/hooks/use-node-editor';
7
+ import type { Credential } from '@/lib/api/credentials';
6
8
  import type { ExternalAgentNodeData } from '../../configuration/node-types';
9
+ import { CredentialSelector } from './credential-selector';
7
10
  import { InputField, TextareaField } from './form-fields';
8
11
 
9
12
  interface ExternalAgentNodeEditorProps {
10
13
  selectedNode: Node<ExternalAgentNodeData>;
14
+ credentialLookup: Record<string, Credential>;
11
15
  errorHelpers?: ErrorHelpers;
12
16
  }
13
17
 
14
18
  export function ExternalAgentNodeEditor({
15
19
  selectedNode,
20
+ credentialLookup,
16
21
  errorHelpers,
17
22
  }: ExternalAgentNodeEditorProps) {
18
- const { handleInputChange, getFieldError, setFieldRef } = useNodeEditor({
23
+ const { handleInputChange, getFieldError, setFieldRef, updateField } = useNodeEditor({
19
24
  selectedNodeId: selectedNode.id,
20
25
  errorHelpers,
21
26
  });
22
27
 
23
28
  const handleIdChange = useCallback(
24
29
  (generatedId: string) => {
25
- handleInputChange({
26
- target: { name: 'id', value: generatedId },
27
- } as React.ChangeEvent<HTMLInputElement>);
30
+ updateField('id', generatedId);
28
31
  },
29
- [handleInputChange]
32
+ [updateField]
30
33
  );
31
34
 
32
35
  // Auto-prefill ID based on name field (always enabled for agent nodes)
@@ -91,6 +94,25 @@ export function ExternalAgentNodeEditor({
91
94
  error={getFieldError('baseUrl')}
92
95
  tooltip="This URL is used to discover the agent's capabilities and communicate with it using the A2A protocol. For locally hosted graphs defined with the agent-framework this would be: http://localhost:3002/tenants/:tenantId/projects/:projectId/agents/:graphId"
93
96
  />
97
+ <ExpandableJsonEditor
98
+ name="headers"
99
+ label="Headers"
100
+ value={selectedNode.data.headers}
101
+ onChange={(value) => updateField('headers', value)}
102
+ placeholder="{}"
103
+ className=""
104
+ />
105
+ <CredentialSelector
106
+ label="Credential"
107
+ credentialLookup={credentialLookup}
108
+ value={
109
+ typeof selectedNode.data.credentialReferenceId === 'string'
110
+ ? selectedNode.data.credentialReferenceId
111
+ : null
112
+ }
113
+ onValueChange={(value) => updateField('credentialReferenceId', value || '')}
114
+ placeholder="Select a credential"
115
+ />
94
116
  </div>
95
117
  );
96
118
  }
@@ -4,6 +4,7 @@ import { type LucideIcon, Workflow } from 'lucide-react';
4
4
  import { useMemo } from 'react';
5
5
  import { useGraphErrors } from '@/hooks/use-graph-errors';
6
6
  import type { ArtifactComponent } from '@/lib/api/artifact-components';
7
+ import type { Credential } from '@/lib/api/credentials';
7
8
  import type { DataComponent } from '@/lib/api/data-components';
8
9
  import { SidePane as SidePaneLayout } from '../../layout/sidepane';
9
10
  import { edgeTypeMap } from '../configuration/edge-types';
@@ -32,6 +33,7 @@ interface SidePaneProps {
32
33
  dataComponentLookup: Record<string, DataComponent>;
33
34
  artifactComponentLookup: Record<string, ArtifactComponent>;
34
35
  agentToolConfigLookup: AgentToolConfigLookup;
36
+ credentialLookup: Record<string, Credential>;
35
37
  }
36
38
 
37
39
  export function SidePane({
@@ -43,6 +45,7 @@ export function SidePane({
43
45
  dataComponentLookup,
44
46
  artifactComponentLookup,
45
47
  agentToolConfigLookup,
48
+ credentialLookup,
46
49
  }: SidePaneProps) {
47
50
  const selectedNode = useNodesData(selectedNodeId || '');
48
51
  const edges = useEdges();
@@ -100,6 +103,7 @@ export function SidePane({
100
103
  return (
101
104
  <ExternalAgentNodeEditor
102
105
  selectedNode={selectedNode as Node<ExternalAgentNodeData>}
106
+ credentialLookup={credentialLookup}
103
107
  errorHelpers={errorHelpers}
104
108
  />
105
109
  );
@@ -5,6 +5,7 @@ import { useEffect, useState } from 'react';
5
5
  import { Badge } from '@/components/ui/badge';
6
6
  import { Button } from '@/components/ui/button';
7
7
  import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
8
+ import { ExternalLink } from '@/components/ui/external-link';
8
9
  import { Skeleton } from '@/components/ui/skeleton';
9
10
 
10
11
  interface ConversationErrorsProps {
@@ -98,6 +99,13 @@ export function ConversationErrors({ conversationId, onBack }: ConversationError
98
99
  </CardHeader>
99
100
  <CardContent>
100
101
  <p className="text-sm text-muted-foreground">{error || 'Conversation not found'}</p>
102
+ {error && (
103
+ <div className="mt-3">
104
+ <ExternalLink href="https://docs.inkeep.com/quick-start/observability">
105
+ View observability setup guide
106
+ </ExternalLink>
107
+ </div>
108
+ )}
101
109
  {onBack && (
102
110
  <Button onClick={onBack} variant="outline" className="mt-4">
103
111
  <ArrowLeft className="h-4 w-4 mr-2" />
@@ -89,7 +89,12 @@ function EmptyTimeline({
89
89
  </ExternalLink>
90
90
  </div>
91
91
  ) : (
92
- error
92
+ <div>
93
+ <p>{error}</p>
94
+ <ExternalLink href="https://docs.inkeep.com/quick-start/observability">
95
+ View observability setup guide
96
+ </ExternalLink>
97
+ </div>
93
98
  )}
94
99
  </AlertDescription>
95
100
  </Alert>
@@ -14,7 +14,6 @@ import type {
14
14
  FullGraphDefinition,
15
15
  InternalAgentDefinition,
16
16
  } from '@/lib/types/graph-full';
17
-
18
17
  import { formatJsonField } from '@/lib/utils';
19
18
 
20
19
  interface TransformResult {
@@ -118,7 +117,9 @@ export function deserializeGraphData(data: FullGraphDefinition): TransformResult
118
117
  name: agent.name,
119
118
  description: agent.description,
120
119
  baseUrl: (agent as ExternalAgentDefinition).baseUrl,
120
+ headers: formatJsonField(agent.headers) || '{}',
121
121
  type: agent.type,
122
+ credentialReferenceId: agent.credentialReferenceId,
122
123
  }
123
124
  : (() => {
124
125
  const internalAgent = agent as InternalAgentDefinition;
@@ -20,7 +20,9 @@ type ExternalAgent = {
20
20
  name: string;
21
21
  description: string;
22
22
  baseUrl: string;
23
+ headers?: Record<string, string> | null;
23
24
  type: 'external';
25
+ credentialReferenceId?: string | null;
24
26
  };
25
27
 
26
28
  export type ExtendedAgent =
@@ -206,12 +208,18 @@ export function serializeGraphData(
206
208
  agents[agentId] = agent;
207
209
  } else if (node.type === NodeType.ExternalAgent) {
208
210
  const agentId = (node.data.id as string) || node.id;
211
+
212
+ // Parse headers from JSON string to object
213
+ const parsedHeaders = safeJsonParse(node.data.headers as string);
214
+
209
215
  const agent: ExternalAgent = {
210
216
  id: agentId,
211
217
  name: node.data.name as string,
212
218
  description: (node.data.description as string) || '',
213
219
  baseUrl: node.data.baseUrl as string,
220
+ headers: parsedHeaders || null,
214
221
  type: 'external',
222
+ credentialReferenceId: (node.data.credentialReferenceId as string) || null,
215
223
  };
216
224
 
217
225
  if ((node.data as any).isDefault) {
@@ -5,7 +5,7 @@
5
5
  'use server';
6
6
 
7
7
  import { revalidatePath } from 'next/cache';
8
- import { deleteCredential } from '../api/credentials';
8
+ import { type Credential, deleteCredential, fetchCredentials } from '../api/credentials';
9
9
  import { ApiError } from '../types/errors';
10
10
  import type { ActionResult } from './types';
11
11
 
@@ -40,3 +40,33 @@ export async function deleteCredentialAction(
40
40
  };
41
41
  }
42
42
  }
43
+
44
+ /**
45
+ * Fetch all credentials
46
+ */
47
+ export async function fetchCredentialsAction(
48
+ tenantId: string,
49
+ projectId: string
50
+ ): Promise<ActionResult<Credential[]>> {
51
+ try {
52
+ const result = await fetchCredentials(tenantId, projectId);
53
+ return {
54
+ success: true,
55
+ data: result,
56
+ };
57
+ } catch (error) {
58
+ if (error instanceof ApiError) {
59
+ return {
60
+ success: false,
61
+ error: error.message,
62
+ code: error.error.code,
63
+ };
64
+ }
65
+
66
+ return {
67
+ success: false,
68
+ error: error instanceof Error ? error.message : 'Unknown error occurred',
69
+ code: 'unknown_error',
70
+ };
71
+ }
72
+ }
@@ -1 +0,0 @@
1
- "use strict";exports.id=3518,exports.ids=[3518],exports.modules={6461:(a,b,c)=>{let d,e;c.d(b,{Ak:()=>g});var f=c(77598);function g(a=21){var b;b=a|=0,!d||d.length<b?(d=Buffer.allocUnsafe(128*b),f.webcrypto.getRandomValues(d),e=0):e+b>d.length&&(f.webcrypto.getRandomValues(d),e=0),e+=b;let c="";for(let b=e-a;b<e;b++)c+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[63&d[b]];return c}},12463:(a,b,c)=>{c.d(b,{E:()=>i});var d=c(59111),e=c(98848),f=c(53433),g=c(42723);let h=(0,f.F)("inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",secondary:"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",primary:"border border-primary/50 text-primary bg-primary/5 rounded-sm p-0.5 px-1.5 font-mono",destructive:"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground",code:"text-xs text-muted-foreground border bg-muted/80 dark:bg-muted/50 rounded-sm p-0.5 px-1.5 font-mono",success:"text-xs text-muted-foreground border rounded-sm p-0.5 px-1.5 font-mono bg-emerald-50 border-emerald-200 text-emerald-800 dark:text-emerald-300 dark:bg-emerald-950/40 uppercase",error:"text-xs text-muted-foreground border rounded-sm p-0.5 px-1.5 font-mono bg-red-50 border-red-200 text-red-800 dark:border-red-700 dark:text-red-300 dark:bg-red-950/40 uppercase",warning:"text-xs text-muted-foreground border rounded-sm p-0.5 px-1.5 font-mono bg-amber-50 border-amber-200 text-amber-800 dark:border-amber-700 dark:text-amber-300 dark:bg-amber-950/40 uppercase",sky:"text-xs text-muted-foreground border rounded-sm p-0.5 px-1.5 font-mono bg-sky-50 border-sky-200 text-sky-800 dark:border-sky-700 dark:text-sky-300 dark:bg-sky-950/40",violet:"text-xs text-muted-foreground border rounded-sm p-0.5 px-1.5 font-mono bg-violet-50 border-violet-200 text-violet-800 dark:border-violet-700 dark:text-violet-300 dark:bg-violet-950/40",orange:"text-xs text-muted-foreground border rounded-sm p-0.5 px-1.5 font-mono bg-orange-50 border-orange-200 text-orange-800 dark:border-orange-700 dark:text-orange-300 dark:bg-orange-950/40"}},defaultVariants:{variant:"default"}});function i({className:a,variant:b,asChild:c=!1,...f}){let i=c?e.DX:"span";return(0,d.jsx)(i,{"data-slot":"badge",className:(0,g.cn)(h({variant:b}),a),...f})}},24703:(a,b,c)=>{c.d(b,{S:()=>h});var d=c(59111),e=c(51006),f=c(39108),g=c(42723);function h({className:a,...b}){return(0,d.jsx)(e.bL,{"data-slot":"checkbox",className:(0,g.cn)("peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",a),...b,children:(0,d.jsx)(e.C1,{"data-slot":"checkbox-indicator",className:"flex items-center justify-center text-current transition-none",children:(0,d.jsx)(f.A,{className:"size-3.5"})})})}},49540:(a,b,c)=>{c.d(b,{bq:()=>l,eb:()=>n,gC:()=>m,l6:()=>j,yv:()=>k});var d=c(59111),e=c(41404),f=c(67048),g=c(39108),h=c(25773),i=c(42723);function j({...a}){return(0,d.jsx)(e.bL,{"data-slot":"select",...a})}function k({...a}){return(0,d.jsx)(e.WT,{"data-slot":"select-value",...a})}function l({className:a,size:b="default",children:c,...g}){return(0,d.jsxs)(e.l9,{"data-slot":"select-trigger","data-size":b,className:(0,i.cn)("border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 font-normal normal-case",a),...g,children:[c,(0,d.jsx)(e.In,{asChild:!0,children:(0,d.jsx)(f.A,{className:"size-4 opacity-50"})})]})}function m({className:a,children:b,position:c="popper",...f}){return(0,d.jsx)(e.ZL,{children:(0,d.jsxs)(e.UC,{"data-slot":"select-content",className:(0,i.cn)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto scrollbar-thin scrollbar-thumb-muted-foreground/30 dark:scrollbar-thumb-muted-foreground/50 scrollbar-track-transparent rounded-md border shadow-md","popper"===c&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",a),position:c,...f,children:[(0,d.jsx)(o,{}),(0,d.jsx)(e.LM,{className:(0,i.cn)("p-1","popper"===c&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"),children:b}),(0,d.jsx)(p,{})]})})}function n({className:a,children:b,...c}){return(0,d.jsxs)(e.q7,{"data-slot":"select-item",className:(0,i.cn)("focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",a),...c,children:[(0,d.jsx)("span",{className:"absolute right-2 flex size-3.5 items-center justify-center",children:(0,d.jsx)(e.VF,{children:(0,d.jsx)(g.A,{className:"size-4"})})}),(0,d.jsx)(e.p4,{children:b})]})}function o({className:a,...b}){return(0,d.jsx)(e.PP,{"data-slot":"select-scroll-up-button",className:(0,i.cn)("flex cursor-default items-center justify-center py-1",a),...b,children:(0,d.jsx)(h.A,{className:"size-4"})})}function p({className:a,...b}){return(0,d.jsx)(e.wn,{"data-slot":"select-scroll-down-button",className:(0,i.cn)("flex cursor-default items-center justify-center py-1",a),...b,children:(0,d.jsx)(f.A,{className:"size-4"})})}},51006:(a,b,c)=>{c.d(b,{C1:()=>x,bL:()=>v});var d=c(14450),e=c(90890),f=c(2102),g=c(13254),h=c(19975),i=c(82087),j=c(22871),k=c(66261),l=c(6118),m=c(59111),n="Checkbox",[o,p]=(0,f.A)(n),[q,r]=o(n);function s(a){let{__scopeCheckbox:b,checked:c,children:e,defaultChecked:f,disabled:g,form:i,name:j,onCheckedChange:k,required:l,value:o="on",internal_do_not_use_render:p}=a,[r,s]=(0,h.i)({prop:c,defaultProp:f??!1,onChange:k,caller:n}),[t,u]=d.useState(null),[v,w]=d.useState(null),x=d.useRef(!1),y=!t||!!i||!!t.closest("form"),z={checked:r,disabled:g,setChecked:s,control:t,setControl:u,name:j,form:i,value:o,hasConsumerStoppedPropagationRef:x,required:l,defaultChecked:!A(f)&&f,isFormControl:y,bubbleInput:v,setBubbleInput:w};return(0,m.jsx)(q,{scope:b,...z,children:"function"==typeof p?p(z):e})}var t="CheckboxTrigger",u=d.forwardRef(({__scopeCheckbox:a,onKeyDown:b,onClick:c,...f},h)=>{let{control:i,value:j,disabled:k,checked:n,required:o,setControl:p,setChecked:q,hasConsumerStoppedPropagationRef:s,isFormControl:u,bubbleInput:v}=r(t,a),w=(0,e.s)(h,p),x=d.useRef(n);return d.useEffect(()=>{let a=i?.form;if(a){let b=()=>q(x.current);return a.addEventListener("reset",b),()=>a.removeEventListener("reset",b)}},[i,q]),(0,m.jsx)(l.sG.button,{type:"button",role:"checkbox","aria-checked":A(n)?"mixed":n,"aria-required":o,"data-state":B(n),"data-disabled":k?"":void 0,disabled:k,value:j,...f,ref:w,onKeyDown:(0,g.mK)(b,a=>{"Enter"===a.key&&a.preventDefault()}),onClick:(0,g.mK)(c,a=>{q(a=>!!A(a)||!a),v&&u&&(s.current=a.isPropagationStopped(),s.current||a.stopPropagation())})})});u.displayName=t;var v=d.forwardRef((a,b)=>{let{__scopeCheckbox:c,name:d,checked:e,defaultChecked:f,required:g,disabled:h,value:i,onCheckedChange:j,form:k,...l}=a;return(0,m.jsx)(s,{__scopeCheckbox:c,checked:e,defaultChecked:f,disabled:h,required:g,onCheckedChange:j,name:d,form:k,value:i,internal_do_not_use_render:({isFormControl:a})=>(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(u,{...l,ref:b,__scopeCheckbox:c}),a&&(0,m.jsx)(z,{__scopeCheckbox:c})]})})});v.displayName=n;var w="CheckboxIndicator",x=d.forwardRef((a,b)=>{let{__scopeCheckbox:c,forceMount:d,...e}=a,f=r(w,c);return(0,m.jsx)(k.C,{present:d||A(f.checked)||!0===f.checked,children:(0,m.jsx)(l.sG.span,{"data-state":B(f.checked),"data-disabled":f.disabled?"":void 0,...e,ref:b,style:{pointerEvents:"none",...a.style}})})});x.displayName=w;var y="CheckboxBubbleInput",z=d.forwardRef(({__scopeCheckbox:a,...b},c)=>{let{control:f,hasConsumerStoppedPropagationRef:g,checked:h,defaultChecked:k,required:n,disabled:o,name:p,value:q,form:s,bubbleInput:t,setBubbleInput:u}=r(y,a),v=(0,e.s)(c,u),w=(0,i.Z)(h),x=(0,j.X)(f);d.useEffect(()=>{if(!t)return;let a=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set,b=!g.current;if(w!==h&&a){let c=new Event("click",{bubbles:b});t.indeterminate=A(h),a.call(t,!A(h)&&h),t.dispatchEvent(c)}},[t,w,h,g]);let z=d.useRef(!A(h)&&h);return(0,m.jsx)(l.sG.input,{type:"checkbox","aria-hidden":!0,defaultChecked:k??z.current,required:n,disabled:o,name:p,value:q,form:s,...b,tabIndex:-1,ref:v,style:{...b.style,...x,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});function A(a){return"indeterminate"===a}function B(a){return A(a)?"indeterminate":a?"checked":"unchecked"}z.displayName=y},55124:(a,b,c)=>{c.d(b,{U:()=>g});var d=c(59111),e=c(49540),f=c(71771);function g({control:a,name:b,label:c,placeholder:g,options:h,disabled:i=!1,selectTriggerClassName:j,isRequired:k=!1}){return(0,d.jsx)(f.u,{control:a,name:b,label:c,isRequired:k,children:a=>(0,d.jsxs)(e.l6,{onValueChange:a.onChange,defaultValue:a.value,disabled:i,children:[(0,d.jsx)(e.bq,{disabled:i,className:j,children:(0,d.jsx)(e.yv,{placeholder:g})}),(0,d.jsx)(e.gC,{children:h.map(a=>(0,d.jsx)(e.eb,{value:a.value,disabled:a.disabled,children:a.label},a.value))})]})})}},57230:(a,b,c)=>{c.d(b,{Y:()=>e});var d=c(90147);let e=(0,d.createServerReference)("78e662e64cdad6a4545d70b82089eb9478bdc9314b",d.callServer,void 0,d.findSourceMapURL,"updateMCPTool")},72969:(a,b,c)=>{c.d(b,{MCPServerForm:()=>d});let d=(0,c(60241).registerClientReference)(function(){throw Error("Attempted to call MCPServerForm() from the server but MCPServerForm is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/agents/agents/agents-manage-ui/src/components/mcp-servers/form/mcp-server-form.tsx","MCPServerForm")},81097:(a,b,c)=>{c.d(b,{$Y:()=>g,GO:()=>i,K3:()=>h,h9:()=>k,nZ:()=>j});var d=c(1274);c(2082);var e=c(53842),f=c(41979);async function g(a,b,c=1,d=50){(0,f.M2)(a),(0,f.nt)(b);let h=new URLSearchParams({page:c.toString(),limit:d.toString()});return(await (0,e.J)(`tenants/${a}/projects/${b}/credentials?${h}`)).data}async function h(a,b,c){return(0,f.M2)(a),(0,f.nt)(b),(await (0,e.J)(`tenants/${a}/projects/${b}/credentials/${c}`)).data}async function i(a,b,c){return(0,f.M2)(a),(0,f.nt)(b),(await (0,e.J)(`tenants/${a}/projects/${b}/credentials`,{method:"POST",body:JSON.stringify(c)})).data}async function j(a,b,c,d){return(0,f.M2)(a),(0,f.nt)(b),(await (0,e.J)(`tenants/${a}/projects/${b}/credentials/${c}`,{method:"PUT",body:JSON.stringify(d)})).data}async function k(a,b,c){(0,f.M2)(a),(0,f.nt)(b),await (0,e.J)(`tenants/${a}/projects/${b}/credentials/${c}`,{method:"DELETE"})}(0,c(95454).D)([g,h,i,j,k]),(0,d.A)(g,"78208c6b11a01052c252cd4f79ad30a3fe0666f4ac",null),(0,d.A)(h,"701f7a5a8af1b8f25519723729e1378f506c1d68a9",null),(0,d.A)(i,"70798d2c583e5d80f450a83af999943df80ddbb2a5",null),(0,d.A)(j,"782d4ba348df8297929ddd2a0c92b532a5ad9d5432",null),(0,d.A)(k,"7026e14203187193850e9810a24e4d24e15489e2e6",null)},88720:(a,b,c)=>{c.d(b,{MCPServerForm:()=>C});var d=c(59111),e=c(59099),f=c(35558),g=c(6461),h=c(485),i=c(94150),j=c(68156),k=c(17130),l=c(55124),m=c(2856),n=c(93622),o=c(57230),p=c(90147);let q=(0,p.createServerReference)("70d169bf889cc99844e9024eb9f6aad0ba287986bc",p.callServer,void 0,p.findSourceMapURL,"createMCPTool");var r=c(91740),s=c(39108),t=c(14450),u=c(12463),v=c(24703),w=c(37671);function x({control:a,name:b,label:c,availableTools:e=[],description:f,disabled:g=!1}){let{field:{value:h,onChange:j},fieldState:{error:k}}=(0,i.as)({name:b,control:a}),l=(0,t.useMemo)(()=>"object"==typeof h&&null!==h&&"type"in h?"all"===h.type?{type:"all"}:"selective"===h.type&&Array.isArray(h.tools)?{type:"selective",tools:h.tools}:{type:"selective",tools:[]}:{type:"selective",tools:[]},[h]),o=()=>{j({type:"all"})},p=()=>{j({type:"selective",tools:[]})},q=(a,b)=>{if("all"===l.type){let c=e.map(a=>a.name).filter(b=>b!==a);j({type:"selective",tools:b?[...c,a]:c})}else j({type:"selective",tools:b?[...l.tools.filter(b=>b!==a),a]:l.tools.filter(b=>b!==a)})},x=()=>{switch(l.type){case"all":return e.length;case"selective":return l.tools.filter(a=>e.some(b=>b.name===a)).length;default:return 0}},y=x()===e.length;return(0,d.jsx)(n.zB,{control:a,name:b,render:()=>(0,d.jsxs)(n.eI,{children:[(0,d.jsxs)(n.lR,{children:[c,(0,d.jsx)(u.E,{variant:"code",className:"border-none px-2 text-[10px] text-muted-foreground",children:x()})]}),f&&(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:f}),(0,d.jsxs)("div",{className:"mt-2",children:[0===e.length&&(0,d.jsx)("div",{className:"text-sm text-muted-foreground border rounded-md p-3 py-2 bg-gray-100/80 dark:bg-sidebar",children:"No tools available from this server"}),e.length>0&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 justify-between py-3 px-6 rounded-t-lg border border-b-0",children:[(0,d.jsxs)("div",{className:"text-sm",children:[x()," ",(0,d.jsxs)("span",{className:"text-gray-400 dark:text-white/40",children:["/ ",e.length," tool",1===e.length?"":"s"]})]}),y?(0,d.jsxs)(m.$,{type:"button",variant:"outline",size:"sm",onClick:p,disabled:g,children:[(0,d.jsx)(r.A,{className:"w-4 h-4 text-muted-foreground"}),"Deselect all"]}):(0,d.jsxs)(m.$,{type:"button",variant:"outline",size:"sm",onClick:o,disabled:g,children:[(0,d.jsx)(s.A,{className:"w-4 h-4 text-muted-foreground"}),"Select all"]})]}),(0,d.jsx)("div",{className:"max-h-96 overflow-y-auto border rounded-lg rounded-t-none scrollbar-thin scrollbar-thumb-muted-foreground/30 dark:scrollbar-thumb-muted-foreground/50 scrollbar-track-transparent",children:e.map(a=>{let b=(a=>{switch(l.type){case"all":return e.some(b=>b.name===a);case"selective":return l.tools.includes(a)&&e.some(b=>b.name===a);default:return!1}})(a.name);return(0,d.jsxs)("div",{className:"space-y-2 flex items-start gap-6 border-b last:border-b-0 py-4 px-6 relative",children:[(0,d.jsx)("div",{className:"flex items-center h-[22px]",children:(0,d.jsx)(v.S,{checked:b,disabled:g,className:"mb-0",onClick:()=>!g&&q(a.name,!b)})}),(0,d.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,d.jsx)(u.E,{variant:b?"primary":"code",className:`font-mono font-medium text-xs cursor-pointer transition-colors ${g?"opacity-50 cursor-not-allowed":""}`,onClick:()=>!g&&q(a.name,!b),children:a.name}),(0,d.jsxs)(w.Tooltip,{delayDuration:800,children:[(0,d.jsx)(w.TooltipTrigger,{asChild:!0,children:(0,d.jsx)("p",{className:"text-sm text-muted-foreground line-clamp-1",children:a.description})}),(0,d.jsx)(w.TooltipContent,{side:"bottom",align:"start",children:a.description})]})]})]},a.name)})})]})]}),(0,d.jsx)(n.C5,{children:k?.message})]})})}var y=c(45809);let z=y.discriminatedUnion("type",[y.object({type:y.literal("all")}),y.object({type:y.literal("selective"),tools:y.array(y.string())})]),A=y.object({name:y.string().min(1,"Name is required."),config:y.object({type:y.literal("mcp"),mcp:y.object({server:y.object({url:y.string().url("Must be a valid URL.")}),transport:y.object({type:y.nativeEnum(f.o7)}),toolsConfig:z.default({type:"all"})})}),credentialReferenceId:y.string().nullish(),imageUrl:y.string().optional()}),B={name:"",config:{type:"mcp",mcp:{server:{url:""},transport:{type:f.o7.streamableHttp},toolsConfig:{type:"all"}}},imageUrl:"",credentialReferenceId:"none"};function C({initialData:a,mode:b="create",tool:c,credentials:p,tenantId:r,projectId:s}){let t=(0,h.useRouter)(),u=(0,i.mN)({resolver:(0,e.u)(A),defaultValues:{...B,...a}}),{isSubmitting:v}=u.formState,w=async a=>{try{let d={...a,credentialReferenceId:"none"===a.credentialReferenceId?null:a.credentialReferenceId,config:{...a.config,mcp:{...a.config.mcp,activeTools:(a=>{if("all"===a.type)return;let b=c?.availableTools?.map(a=>a.name)||[];return a.tools.filter(a=>b.includes(a))})(a.config.mcp.toolsConfig)}}};if("update"===b&&c)await (0,o.Y)(r,s,c.id,d),j.oR.success("MCP server updated successfully"),t.push(`/${r}/projects/${s}/mcp-servers/${c.id}`);else{let a=await q(r,s,{...d,id:(0,g.Ak)()});j.oR.success("MCP server created successfully"),t.push(`/${r}/projects/${s}/mcp-servers/${a.id}`)}}catch(a){console.error(`Failed to ${b} MCP tool:`,a),j.oR.error(`Failed to ${b} MCP server. Please try again.`)}};return(0,d.jsx)(n.lV,{...u,children:(0,d.jsxs)("form",{onSubmit:u.handleSubmit(w),className:"space-y-8",children:[(0,d.jsx)(k.a,{control:u.control,name:"name",label:"Name",placeholder:"MCP server",isRequired:!0}),(0,d.jsx)(k.a,{control:u.control,name:"config.mcp.server.url",label:"URL",placeholder:"https://api.example.com/mcp",isRequired:!0}),(0,d.jsx)(l.U,{control:u.control,selectTriggerClassName:"w-full",name:"config.mcp.transport.type",label:"Transport type",placeholder:"Select transport type",options:[{value:f.o7.streamableHttp,label:"Streamable HTTP"},{value:f.o7.sse,label:"Server-Sent Events (SSE)"}]}),(0,d.jsx)(k.a,{control:u.control,name:"imageUrl",label:"Image URL (optional)",placeholder:"https://example.com/icon.png or data:image/png;base64,..."}),(0,d.jsx)(l.U,{control:u.control,selectTriggerClassName:"w-full",name:"credentialReferenceId",label:"Credential",placeholder:"Select a credential",options:[{value:"none",label:"No Authentication"},...p.map(a=>({value:a.id,label:a.id}))]}),"update"===b&&(0,d.jsx)(x,{control:u.control,name:"config.mcp.toolsConfig",label:"Tools",availableTools:c?.availableTools||[],description:"Select which tools should be enabled for this MCP server"}),(0,d.jsx)(m.$,{type:"submit",disabled:v,children:"update"===b?"Save":"Create"})]})})}}};