@inkeep/agents-manage-ui 0.0.0-dev-20251023175321 → 0.0.0-dev-20251024203414

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 (210) 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 +134 -134
  3. package/.next/standalone/agents-manage-ui/.next/app-path-routes-manifest.json +8 -8
  4. package/.next/standalone/agents-manage-ui/.next/build-manifest.json +2 -2
  5. package/.next/standalone/agents-manage-ui/.next/prerender-manifest.json +3 -3
  6. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/page.js +1 -1
  7. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/page_client-reference-manifest.js +1 -1
  8. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/[agentId]/page.js +2 -2
  9. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/[agentId]/page.js.nft.json +1 -1
  10. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/[agentId]/page_client-reference-manifest.js +1 -1
  11. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/new/page.js +2 -2
  12. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/new/page.js.nft.json +1 -1
  13. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/new/page_client-reference-manifest.js +1 -1
  14. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/page.js +2 -2
  15. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/page.js.nft.json +1 -1
  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.js.nft.json +1 -1
  19. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/api-keys/page_client-reference-manifest.js +1 -1
  20. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page.js +1 -1
  21. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page.js.nft.json +1 -1
  22. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page_client-reference-manifest.js +1 -1
  23. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/new/page.js +2 -2
  24. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/new/page.js.nft.json +1 -1
  25. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/new/page_client-reference-manifest.js +1 -1
  26. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/page.js +2 -2
  27. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/page.js.nft.json +1 -1
  28. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/page_client-reference-manifest.js +1 -1
  29. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/page.js +2 -2
  30. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/page.js.nft.json +1 -1
  31. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/page_client-reference-manifest.js +1 -1
  32. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/new/page.js +2 -2
  33. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/new/page.js.nft.json +1 -1
  34. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/new/page_client-reference-manifest.js +1 -1
  35. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/page.js +2 -2
  36. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/page.js.nft.json +1 -1
  37. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/page_client-reference-manifest.js +1 -1
  38. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page.js +1 -1
  39. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page.js.nft.json +1 -1
  40. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page_client-reference-manifest.js +1 -1
  41. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page.js +2 -2
  42. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page.js.nft.json +1 -1
  43. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page_client-reference-manifest.js +1 -1
  44. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/page.js +1 -1
  45. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/page_client-reference-manifest.js +1 -1
  46. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page.js +2 -2
  47. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page.js.nft.json +1 -1
  48. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page_client-reference-manifest.js +1 -1
  49. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/page.js +2 -2
  50. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/page.js.nft.json +1 -1
  51. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/page_client-reference-manifest.js +1 -1
  52. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/page.js +2 -2
  53. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/page.js.nft.json +1 -1
  54. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/page_client-reference-manifest.js +1 -1
  55. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/edit/page.js +2 -2
  56. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/edit/page.js.nft.json +1 -1
  57. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/edit/page_client-reference-manifest.js +1 -1
  58. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/page.js +2 -2
  59. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/page.js.nft.json +1 -1
  60. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/page_client-reference-manifest.js +1 -1
  61. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/new/page.js +2 -2
  62. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/new/page.js.nft.json +1 -1
  63. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/new/page_client-reference-manifest.js +1 -1
  64. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/page.js +2 -2
  65. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/page.js.nft.json +1 -1
  66. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/page_client-reference-manifest.js +1 -1
  67. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page.js +2 -2
  68. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page.js.nft.json +1 -1
  69. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page_client-reference-manifest.js +1 -1
  70. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page.js +2 -2
  71. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page.js.nft.json +1 -1
  72. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page_client-reference-manifest.js +1 -1
  73. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/new/page.js +2 -2
  74. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/new/page.js.nft.json +1 -1
  75. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/new/page_client-reference-manifest.js +1 -1
  76. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/page.js +2 -2
  77. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/page.js.nft.json +1 -1
  78. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/page_client-reference-manifest.js +1 -1
  79. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/page.js +2 -2
  80. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/page_client-reference-manifest.js +1 -1
  81. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/settings/page.js +2 -2
  82. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/settings/page_client-reference-manifest.js +1 -1
  83. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page.js +2 -2
  84. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page.js.nft.json +1 -1
  85. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page_client-reference-manifest.js +1 -1
  86. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page.js +2 -2
  87. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page_client-reference-manifest.js +1 -1
  88. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/page.js +2 -2
  89. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/page.js.nft.json +1 -1
  90. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/page_client-reference-manifest.js +1 -1
  91. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/page.js +2 -2
  92. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/page.js.nft.json +1 -1
  93. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/page_client-reference-manifest.js +1 -1
  94. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found/page.js +1 -1
  95. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  96. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found.html +1 -1
  97. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found.rsc +8 -8
  98. package/.next/standalone/agents-manage-ui/.next/server/app/api/data-components/[dataComponentId]/generate-render/route_client-reference-manifest.js +1 -1
  99. package/.next/standalone/agents-manage-ui/.next/server/app/api/signoz/conversations/[conversationId]/route_client-reference-manifest.js +1 -1
  100. package/.next/standalone/agents-manage-ui/.next/server/app/api/signoz/route_client-reference-manifest.js +1 -1
  101. package/.next/standalone/agents-manage-ui/.next/server/app/page.js +2 -2
  102. package/.next/standalone/agents-manage-ui/.next/server/app/page_client-reference-manifest.js +1 -1
  103. package/.next/standalone/agents-manage-ui/.next/server/app-paths-manifest.json +8 -8
  104. package/.next/standalone/agents-manage-ui/.next/server/chunks/1051.js +3 -0
  105. package/.next/standalone/agents-manage-ui/.next/server/chunks/1063.js +1 -0
  106. package/.next/standalone/agents-manage-ui/.next/server/chunks/1169.js +1 -0
  107. package/.next/standalone/agents-manage-ui/.next/server/chunks/1514.js +1 -0
  108. package/.next/standalone/agents-manage-ui/.next/server/chunks/279.js +1 -0
  109. package/.next/standalone/agents-manage-ui/.next/server/chunks/4275.js +1 -0
  110. package/.next/standalone/agents-manage-ui/.next/server/chunks/4608.js +2 -2
  111. package/.next/standalone/agents-manage-ui/.next/server/chunks/4629.js +1 -1
  112. package/.next/standalone/agents-manage-ui/.next/server/chunks/493.js +1 -1
  113. package/.next/standalone/agents-manage-ui/.next/server/chunks/5206.js +2 -2
  114. package/.next/standalone/agents-manage-ui/.next/server/chunks/5472.js +1 -0
  115. package/.next/standalone/agents-manage-ui/.next/server/chunks/6624.js +1 -1
  116. package/.next/standalone/agents-manage-ui/.next/server/chunks/6915.js +1 -0
  117. package/.next/standalone/agents-manage-ui/.next/server/chunks/7494.js +1 -0
  118. package/.next/standalone/agents-manage-ui/.next/server/chunks/7711.js +6 -6
  119. package/.next/standalone/agents-manage-ui/.next/server/chunks/7933.js +1 -0
  120. package/.next/standalone/agents-manage-ui/.next/server/chunks/7990.js +1 -0
  121. package/.next/standalone/agents-manage-ui/.next/server/chunks/{5093.js → 9548.js} +2 -2
  122. package/.next/standalone/agents-manage-ui/.next/server/chunks/9887.js +6 -6
  123. package/.next/standalone/agents-manage-ui/.next/server/middleware-manifest.json +5 -5
  124. package/.next/standalone/agents-manage-ui/.next/server/pages/404.html +1 -1
  125. package/.next/standalone/agents-manage-ui/.next/server/pages/500.html +1 -1
  126. package/.next/standalone/agents-manage-ui/.next/server/server-reference-manifest.js +1 -1
  127. package/.next/standalone/agents-manage-ui/.next/server/server-reference-manifest.json +1 -1
  128. package/.next/standalone/agents-manage-ui/.next/static/chunks/10071-46a99a8840863f8a.js +1 -0
  129. package/.next/standalone/agents-manage-ui/.next/static/chunks/13328-3501afe632ea84f5.js +1 -0
  130. package/.next/standalone/agents-manage-ui/.next/static/chunks/{16631-f88bc25a1b9c077c.js → 16631-2a2a541fcfdbe906.js} +2 -2
  131. package/.next/standalone/agents-manage-ui/.next/static/chunks/29345-22126a454a2d30b7.js +1 -0
  132. package/.next/standalone/agents-manage-ui/.next/static/chunks/{27590-b22ba4119fb3a372.js → 48975-117752577f1fe29b.js} +1 -1
  133. package/.next/standalone/agents-manage-ui/.next/static/chunks/{45636-68766d01475395d2.js → 57396-47fc9411c3e79288.js} +1 -1
  134. package/.next/standalone/agents-manage-ui/.next/static/chunks/5810-3e2442f9f4f05a4c.js +1 -0
  135. package/.next/standalone/agents-manage-ui/.next/static/chunks/6253-539dab11d729d575.js +1 -0
  136. package/.next/standalone/agents-manage-ui/.next/static/chunks/73875-fca8d9f6327601ea.js +1 -0
  137. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/[agentId]/{page-8c14896777fcff31.js → page-073e422b7041cd8d.js} +1 -1
  138. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/new/{page-366086673127e166.js → page-02e03d72f6c66a70.js} +1 -1
  139. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/page-a48adeb23c1202ec.js +1 -0
  140. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/api-keys/page-a1d441eaa501a2b1.js +1 -0
  141. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page-ae99ef23b7a92512.js +1 -0
  142. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/new/page-a2b2338ae03a3047.js +1 -0
  143. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/{page-b94c69feab6f676c.js → page-7b590e1dc795bba2.js} +1 -1
  144. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/{page-3818faebdc732a5e.js → page-f5126905443639ff.js} +1 -1
  145. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/new/{page-9b2d88f648a95a29.js → page-afcdb1213bbd574b.js} +1 -1
  146. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/{page-3be669397420cad9.js → page-5f8a74f916643a2d.js} +1 -1
  147. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page-9929cea95de76ea8.js +1 -0
  148. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page-ffe0bb57afb07f0e.js +1 -0
  149. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page-b9080db24d4b13ef.js +1 -0
  150. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/page-97421912dbad1eef.js +1 -0
  151. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/edit/page-5797f36bdc596964.js +1 -0
  152. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/new/page-efc118ad6ee7e453.js +1 -0
  153. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/{page-1d24bb708c28c33b.js → page-69d21a0c947b6810.js} +1 -1
  154. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page-c0ab04ecf260dcfa.js +1 -0
  155. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page-b370cd39a301e4ac.js +1 -0
  156. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/new/{page-cf5a463867ba8b74.js → page-ece9372861c28676.js} +1 -1
  157. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/{page-a8552ab00201aeeb.js → page-972dc6b852c68532.js} +1 -1
  158. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/settings/{page-cc321983069a47b3.js → page-7f1dd277e67e70e1.js} +1 -1
  159. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/page-3e530490c6f96d62.js +1 -0
  160. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/page-c793393cc0f08518.js +1 -0
  161. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/layout-bb2eac5268e838b7.js +1 -0
  162. package/.next/standalone/agents-manage-ui/.next/static/chunks/{d834c995-ed8b4d46f11282af.js → d834c995-e7d29efff67c3fbe.js} +1 -1
  163. package/.next/standalone/agents-manage-ui/package.json +4 -4
  164. package/.next/standalone/packages/agents-core/package.json +3 -3
  165. package/package.json +7 -7
  166. package/src/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page.tsx +1 -1
  167. package/src/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page.tsx +4 -4
  168. package/src/app/[tenantId]/projects/[projectId]/credentials/page.tsx +1 -0
  169. package/src/components/credentials/credential-item.tsx +5 -3
  170. package/src/components/credentials/views/edit-credential-form.tsx +37 -13
  171. package/src/components/credentials/views/new-credential-form.tsx +50 -40
  172. package/src/hooks/use-oauth-login.ts +3 -1
  173. package/src/lib/api/credentialStores.ts +17 -8
  174. package/src/lib/mcp-tools/nango.ts +56 -130
  175. package/.next/standalone/agents-manage-ui/.next/server/chunks/1777.js +0 -1
  176. package/.next/standalone/agents-manage-ui/.next/server/chunks/2800.js +0 -1
  177. package/.next/standalone/agents-manage-ui/.next/server/chunks/3536.js +0 -1
  178. package/.next/standalone/agents-manage-ui/.next/server/chunks/3948.js +0 -1
  179. package/.next/standalone/agents-manage-ui/.next/server/chunks/4243.js +0 -1
  180. package/.next/standalone/agents-manage-ui/.next/server/chunks/4558.js +0 -1
  181. package/.next/standalone/agents-manage-ui/.next/server/chunks/4949.js +0 -1
  182. package/.next/standalone/agents-manage-ui/.next/server/chunks/5139.js +0 -1
  183. package/.next/standalone/agents-manage-ui/.next/server/chunks/6724.js +0 -3
  184. package/.next/standalone/agents-manage-ui/.next/server/chunks/884.js +0 -1
  185. package/.next/standalone/agents-manage-ui/.next/server/chunks/9353.js +0 -1
  186. package/.next/standalone/agents-manage-ui/.next/server/chunks/9396.js +0 -1
  187. package/.next/standalone/agents-manage-ui/.next/server/chunks/9982.js +0 -1
  188. package/.next/standalone/agents-manage-ui/.next/static/chunks/13328-2c9a501a0fc457e2.js +0 -1
  189. package/.next/standalone/agents-manage-ui/.next/static/chunks/15544-b52f5562ee57d2bf.js +0 -1
  190. package/.next/standalone/agents-manage-ui/.next/static/chunks/22560-d3b50b8d2510fd46.js +0 -1
  191. package/.next/standalone/agents-manage-ui/.next/static/chunks/51521-7a431e25519e151d.js +0 -1
  192. package/.next/standalone/agents-manage-ui/.next/static/chunks/65087-3ad7978e3789023a.js +0 -1
  193. package/.next/standalone/agents-manage-ui/.next/static/chunks/67986-5c02826c2aeba418.js +0 -1
  194. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/page-ea697a0aed34880e.js +0 -1
  195. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/api-keys/page-6fdb55cb35480c90.js +0 -1
  196. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page-7c2bb61e000a9cb2.js +0 -1
  197. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/new/page-5e496f2c3a78eefe.js +0 -1
  198. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page-7f38e16618a5df20.js +0 -1
  199. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page-6d40a25486a72447.js +0 -1
  200. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page-8da89288cd2dcbe1.js +0 -1
  201. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/page-9ddb8a9144f1aa05.js +0 -1
  202. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/edit/page-275ae37435313d21.js +0 -1
  203. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/new/page-fa2183f22e737938.js +0 -1
  204. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page-555d0cbf232b92f6.js +0 -1
  205. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page-62e7990ea455d4ac.js +0 -1
  206. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/page-40fbff25394aa6f7.js +0 -1
  207. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/page-3241a2b0986946f9.js +0 -1
  208. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/layout-745c4cd1ec6c544b.js +0 -1
  209. /package/.next/standalone/agents-manage-ui/.next/static/{7u-I9_R9-ZsxfK7bYt8s5 → eVVoUoyXD84WuNMjeur93}/_buildManifest.js +0 -0
  210. /package/.next/standalone/agents-manage-ui/.next/static/{7u-I9_R9-ZsxfK7bYt8s5 → eVVoUoyXD84WuNMjeur93}/_ssgManifest.js +0 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inkeep/agents-manage-ui",
3
- "version": "0.27.0",
3
+ "version": "0.29.0",
4
4
  "license": "SEE LICENSE IN LICENSE.md",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
@@ -48,9 +48,9 @@
48
48
  "@inkeep/agents-run-api": "workspace:^",
49
49
  "@inkeep/agents-ui": "^0.14.17",
50
50
  "@lezer/highlight": "^1.2.1",
51
- "@nangohq/frontend": "^0.69.3",
52
- "@nangohq/node": "^0.69.3",
53
- "@nangohq/types": "^0.69.3",
51
+ "@nangohq/frontend": "^0.69.5",
52
+ "@nangohq/node": "^0.69.5",
53
+ "@nangohq/types": "^0.69.5",
54
54
  "@radix-ui/react-alert-dialog": "^1.1.15",
55
55
  "@radix-ui/react-checkbox": "^1.3.2",
56
56
  "@radix-ui/react-collapsible": "^1.1.12",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inkeep/agents-core",
3
- "version": "0.27.0",
3
+ "version": "0.29.0",
4
4
  "description": "Agents Core contains the database schema, types, and validation schemas for Inkeep Agent Framework, along with core components.",
5
5
  "type": "module",
6
6
  "license": "SEE LICENSE IN LICENSE.md",
@@ -46,8 +46,8 @@
46
46
  "@hono/zod-openapi": "^1.0.2",
47
47
  "@libsql/client": "^0.15.7",
48
48
  "@modelcontextprotocol/sdk": "^1.17.2",
49
- "@nangohq/node": "^0.69.3",
50
- "@nangohq/types": "^0.69.3",
49
+ "@nangohq/node": "^0.69.5",
50
+ "@nangohq/types": "^0.69.5",
51
51
  "@opentelemetry/api": "^1.9.0",
52
52
  "@opentelemetry/auto-instrumentations-node": "^0.62.0",
53
53
  "@opentelemetry/baggage-span-processor": "^0.4.0",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inkeep/agents-manage-ui",
3
- "version": "0.0.0-dev-20251023175321",
3
+ "version": "0.0.0-dev-20251024203414",
4
4
  "license": "SEE LICENSE IN LICENSE.md",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
@@ -31,9 +31,9 @@
31
31
  "@hookform/resolvers": "^5.2.1",
32
32
  "@inkeep/agents-ui": "^0.14.17",
33
33
  "@lezer/highlight": "^1.2.1",
34
- "@nangohq/frontend": "^0.69.3",
35
- "@nangohq/node": "^0.69.3",
36
- "@nangohq/types": "^0.69.3",
34
+ "@nangohq/frontend": "^0.69.5",
35
+ "@nangohq/node": "^0.69.5",
36
+ "@nangohq/types": "^0.69.5",
37
37
  "@radix-ui/react-alert-dialog": "^1.1.15",
38
38
  "@radix-ui/react-checkbox": "^1.3.2",
39
39
  "@radix-ui/react-collapsible": "^1.1.12",
@@ -83,9 +83,9 @@
83
83
  "use-stick-to-bottom": "^1.1.1",
84
84
  "zod": "^4.1.11",
85
85
  "zustand": "^5.0.7",
86
- "@inkeep/agents-core": "^0.0.0-dev-20251023175321",
87
- "@inkeep/agents-manage-api": "^0.0.0-dev-20251023175321",
88
- "@inkeep/agents-run-api": "^0.0.0-dev-20251023175321"
86
+ "@inkeep/agents-core": "^0.0.0-dev-20251024203414",
87
+ "@inkeep/agents-manage-api": "^0.0.0-dev-20251024203414",
88
+ "@inkeep/agents-run-api": "^0.0.0-dev-20251024203414"
89
89
  },
90
90
  "devDependencies": {
91
91
  "@tailwindcss/postcss": "^4",
@@ -19,7 +19,7 @@ async function credentialToFormData(credential: Credential): Promise<EditCredent
19
19
  }
20
20
 
21
21
  return {
22
- name: credential.id,
22
+ name: credential.name,
23
23
  metadata: connectionMetadata,
24
24
  };
25
25
  }
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
 
3
- import { CredentialStoreType, generateIdFromName } from '@inkeep/agents-core/client-exports';
3
+ import { CredentialStoreType } from '@inkeep/agents-core/client-exports';
4
4
  import type { ApiProvider } from '@nangohq/types';
5
5
  import { useRouter } from 'next/navigation';
6
6
  import { use, useCallback, useEffect, useState } from 'react';
@@ -15,6 +15,7 @@ import { useNangoProviders } from '@/hooks/use-nango-providers';
15
15
  import { createProviderConnectSession } from '@/lib/mcp-tools/nango';
16
16
  import { NangoError } from '@/lib/mcp-tools/nango-types';
17
17
  import { findOrCreateCredential } from '@/lib/utils/credentials-utils';
18
+ import { generateId } from '@/lib/utils/id-utils';
18
19
 
19
20
  function ProviderSetupPage({
20
21
  params,
@@ -39,11 +40,10 @@ function ProviderSetupPage({
39
40
  return;
40
41
  }
41
42
 
42
- const credentialId = generateIdFromName(`${provider.name}-${event.payload.connectionId}`);
43
-
44
43
  try {
45
44
  await findOrCreateCredential(tenantId, projectId, {
46
- id: credentialId,
45
+ id: generateId(),
46
+ name: provider.name,
47
47
  type: CredentialStoreType.nango,
48
48
  credentialStoreId: 'nango-default',
49
49
  retrievalParams: {
@@ -52,6 +52,7 @@ async function CredentialsPage({
52
52
  <CredentialItem
53
53
  key={cred.id}
54
54
  id={cred.id}
55
+ name={cred.name}
55
56
  createdAt={cred.createdAt}
56
57
  tenantId={tenantId}
57
58
  projectId={projectId}
@@ -96,11 +96,13 @@ function CredentialDialogMenu({ credentialId, credentialName }: CredentialDialog
96
96
 
97
97
  export function CredentialItem({
98
98
  id,
99
+ name,
99
100
  createdAt,
100
101
  tenantId,
101
102
  projectId,
102
103
  }: {
103
104
  id: Credential['id'];
105
+ name: Credential['name'];
104
106
  createdAt: Credential['createdAt'];
105
107
  tenantId: string;
106
108
  projectId: string;
@@ -113,12 +115,12 @@ export function CredentialItem({
113
115
  <ItemCardLink href={linkPath}>
114
116
  <ItemCardTitle className="text-md">
115
117
  <div className="flex items-center gap-3 min-w-0">
116
- <ProviderIcon provider={id} size={24} className="flex-shrink-0" />
117
- <span className="truncate">{id}</span>
118
+ <ProviderIcon provider={name} size={24} className="flex-shrink-0" />
119
+ <span className="truncate">{name}</span>
118
120
  </div>
119
121
  </ItemCardTitle>
120
122
  </ItemCardLink>
121
- <CredentialDialogMenu credentialId={id} credentialName={id} />
123
+ <CredentialDialogMenu credentialId={id} credentialName={name} />
122
124
  </ItemCardHeader>
123
125
  <ItemCardContent>
124
126
  {/* <ItemCardDescription hasContent={!!description} className="line-clamp-2">
@@ -40,16 +40,34 @@ interface EditCredentialFormProps {
40
40
  initialFormData: EditCredentialFormData;
41
41
  }
42
42
 
43
- function getCredentialType(credential: Credential) {
44
- if (credential.retrievalParams?.provider === 'private-api-bearer') {
45
- return 'Bearer Auth';
43
+ function getCredentialAuthenticationType(credential: Credential): string | undefined {
44
+ if (
45
+ credential.type === CredentialStoreType.nango &&
46
+ credential.retrievalParams?.provider === 'private-api-bearer'
47
+ ) {
48
+ return 'Bearer authentication';
46
49
  }
47
50
 
48
- if (credential.retrievalParams && 'authMode' in credential.retrievalParams) {
49
- return credential.retrievalParams.authMode as string;
51
+ if (
52
+ credential.type === CredentialStoreType.nango &&
53
+ credential.retrievalParams?.provider === 'mcp-generic'
54
+ ) {
55
+ return 'OAuth';
50
56
  }
51
57
 
52
- return credential.type;
58
+ if (
59
+ credential.type === CredentialStoreType.keychain &&
60
+ credential.retrievalParams?.key &&
61
+ typeof credential.retrievalParams?.key === 'string'
62
+ ) {
63
+ if (credential.retrievalParams?.key.startsWith('oauth_token_')) {
64
+ return 'OAuth';
65
+ }
66
+
67
+ return 'Bearer authentication';
68
+ }
69
+
70
+ return undefined;
53
71
  }
54
72
 
55
73
  export function EditCredentialForm({
@@ -72,10 +90,7 @@ export function EditCredentialForm({
72
90
  const handleUpdateCredential = async (formData: EditCredentialFormData) => {
73
91
  try {
74
92
  await updateCredential(tenantId, projectId, credential.id, {
75
- retrievalParams: {
76
- ...credential.retrievalParams,
77
- ...formData.metadata,
78
- },
93
+ name: formData.name.trim(),
79
94
  });
80
95
 
81
96
  if (
@@ -119,6 +134,8 @@ export function EditCredentialForm({
119
134
  }
120
135
  };
121
136
 
137
+ const credentialAuthenticationType = getCredentialAuthenticationType(credential);
138
+
122
139
  return (
123
140
  <Dialog open={isDeleteOpen} onOpenChange={setIsDeleteOpen}>
124
141
  <Form {...form}>
@@ -130,14 +147,21 @@ export function EditCredentialForm({
130
147
  name="name"
131
148
  label="Name"
132
149
  placeholder="e.g., production-api-key"
133
- disabled={true}
134
150
  />
135
151
 
136
152
  {/* Credential Type Display */}
137
153
  <div className="space-y-3">
138
154
  <Label>Credential type</Label>
139
- <Input type="text" disabled={true} value={getCredentialType(credential)} />
140
- {getCredentialType(credential) === 'Bearer Auth' && (
155
+ <Input
156
+ type="text"
157
+ disabled={true}
158
+ value={
159
+ credentialAuthenticationType
160
+ ? `${credentialAuthenticationType} (${credential.type})`
161
+ : credential.type
162
+ }
163
+ />
164
+ {credentialAuthenticationType === 'Bearer authentication' && (
141
165
  <InfoCard title="How this works">
142
166
  <p>
143
167
  When your agent connects to the MCP server, this API key will be automatically
@@ -8,8 +8,8 @@ import type { CredentialFormData } from '@/components/credentials/views/credenti
8
8
  import { createCredentialInStore } from '@/lib/api/credentialStores';
9
9
  import { updateExternalAgent } from '@/lib/api/external-agents';
10
10
  import { updateMCPTool } from '@/lib/api/tools';
11
- import { createNangoApiKeyConnection } from '@/lib/mcp-tools/nango';
12
11
  import { findOrCreateCredential } from '@/lib/utils/credentials-utils';
12
+ import { generateId } from '@/lib/utils/id-utils';
13
13
  import { CredentialForm } from './credential-form';
14
14
 
15
15
  export function NewCredentialForm() {
@@ -21,51 +21,61 @@ export function NewCredentialForm() {
21
21
 
22
22
  const handleCreateCredential = async (data: CredentialFormData) => {
23
23
  try {
24
- const idFromName = generateIdFromName(data.name.trim());
25
-
24
+ const newCredentialId = generateId();
25
+
26
26
  let newCredential: Credential | undefined;
27
+ let credentialKeyToSet: string;
28
+ let credentialValueToSet: string;
29
+ let retrievalParams: Record<string, string>;
27
30
 
28
- if (data.credentialStoreType === CredentialStoreType.nango) {
29
- const { integration } = await createNangoApiKeyConnection({
30
- name: idFromName,
31
- apiKeyToSet: data.apiKeyToSet,
32
- metadata: data.metadata as Record<string, string>,
33
- });
34
-
35
- newCredential = await findOrCreateCredential(tenantId, projectId, {
36
- id: idFromName,
37
- type: data.credentialStoreType,
38
- credentialStoreId: data.credentialStoreId,
39
- retrievalParams: {
40
- connectionId: idFromName,
41
- providerConfigKey: integration.unique_key,
42
- provider: integration.provider,
31
+ switch (data.credentialStoreType) {
32
+ case CredentialStoreType.nango: {
33
+ credentialKeyToSet = JSON.stringify({
34
+ connectionId: newCredentialId,
35
+ providerConfigKey: newCredentialId,
36
+ integrationDisplayName: data.name.trim(),
37
+ });
38
+ credentialValueToSet = data.apiKeyToSet;
39
+ retrievalParams = {
40
+ connectionId: newCredentialId,
41
+ providerConfigKey: newCredentialId,
42
+ provider: 'private-api-bearer',
43
43
  authMode: 'API_KEY',
44
- },
45
- });
46
- } else if (data.credentialStoreType === CredentialStoreType.keychain) {
47
- const keychainStoreValueToSet = JSON.stringify({
48
- access_token: data.apiKeyToSet,
49
- });
50
-
51
- await createCredentialInStore(
52
- tenantId,
53
- projectId,
54
- data.credentialStoreId,
55
- idFromName,
56
- keychainStoreValueToSet
57
- );
58
-
59
- newCredential = await findOrCreateCredential(tenantId, projectId, {
60
- id: idFromName,
61
- type: data.credentialStoreType,
62
- credentialStoreId: data.credentialStoreId,
63
- retrievalParams: {
44
+ };
45
+ break;
46
+ }
47
+ case CredentialStoreType.keychain: {
48
+ const idFromName = generateIdFromName(data.name.trim());
49
+ credentialKeyToSet = idFromName;
50
+ credentialValueToSet = JSON.stringify({
51
+ access_token: data.apiKeyToSet,
52
+ });
53
+ retrievalParams = {
64
54
  key: idFromName,
65
- },
66
- });
55
+ };
56
+ break;
57
+ }
58
+ default:
59
+ throw new Error(`Unsupported credential store type: ${data.credentialStoreType}`);
67
60
  }
68
61
 
62
+ await createCredentialInStore({
63
+ tenantId,
64
+ projectId,
65
+ storeId: data.credentialStoreId,
66
+ key: credentialKeyToSet,
67
+ value: credentialValueToSet,
68
+ metadata: data.metadata as Record<string, string>,
69
+ });
70
+
71
+ newCredential = await findOrCreateCredential(tenantId, projectId, {
72
+ id: newCredentialId,
73
+ name: data.name.trim(),
74
+ type: data.credentialStoreType,
75
+ credentialStoreId: data.credentialStoreId,
76
+ retrievalParams,
77
+ });
78
+
69
79
  if (data.selectedTool && newCredential) {
70
80
  const updatedTool = {
71
81
  credentialReferenceId: newCredential.id,
@@ -6,6 +6,7 @@ import { useRuntimeConfig } from '@/contexts/runtime-config-context';
6
6
  import { listCredentialStores } from '@/lib/api/credentialStores';
7
7
  import { updateMCPTool } from '@/lib/api/tools';
8
8
  import { findOrCreateCredential } from '@/lib/utils/credentials-utils';
9
+ import { generateId } from '@/lib/utils/id-utils';
9
10
  import { getOAuthLoginUrl } from '@/lib/utils/mcp-urls';
10
11
  import { useNangoConnect } from './use-nango-connect';
11
12
 
@@ -155,7 +156,8 @@ export function useOAuthLogin({
155
156
  });
156
157
 
157
158
  const newCredentialData = {
158
- id: generateIdFromName(toolName),
159
+ id: generateId(),
160
+ name: `${toolName} OAuth Credential`,
159
161
  type: CredentialStoreType.nango,
160
162
  credentialStoreId: 'nango-default',
161
163
  retrievalParams: {
@@ -18,6 +18,7 @@ export interface CredentialStoresListResponse {
18
18
  export interface CreateCredentialInStoreRequest {
19
19
  key: string;
20
20
  value: string;
21
+ metadata?: Record<string, string>;
21
22
  }
22
23
 
23
24
  export interface CreateCredentialInStoreResponse {
@@ -48,13 +49,21 @@ export async function listCredentialStores(
48
49
  /**
49
50
  * Create a credential in a specific credential store
50
51
  */
51
- export async function createCredentialInStore(
52
- tenantId: string,
53
- projectId: string,
54
- storeId: string,
55
- key: string,
56
- value: string
57
- ): Promise<CreateCredentialInStoreResponse['data']> {
52
+ export async function createCredentialInStore({
53
+ tenantId,
54
+ projectId,
55
+ storeId,
56
+ key,
57
+ value,
58
+ metadata,
59
+ }: {
60
+ tenantId: string;
61
+ projectId: string;
62
+ storeId: string;
63
+ key: string;
64
+ value: string;
65
+ metadata?: Record<string, string>;
66
+ }): Promise<CreateCredentialInStoreResponse['data']> {
58
67
  validateTenantId(tenantId);
59
68
  validateProjectId(projectId);
60
69
 
@@ -62,7 +71,7 @@ export async function createCredentialInStore(
62
71
  `tenants/${tenantId}/projects/${projectId}/credential-stores/${storeId}/credentials`,
63
72
  {
64
73
  method: 'POST',
65
- body: JSON.stringify({ key, value }),
74
+ body: JSON.stringify({ key, value, metadata }),
66
75
  }
67
76
  );
68
77
 
@@ -1,26 +1,17 @@
1
1
  'use server';
2
2
 
3
3
  /**
4
- * Nango Integration Utilities
5
- *
6
4
  * This file contains server-side functions for interacting with the Nango API.
7
- *
8
- * IMPORTANT: All patterns here involve external API calls to Nango, which has
9
- * atomic constraints enforced at their database level. Patterns that might look
10
- * like race conditions (optimistic creation + fallback fetch) are actually safe
11
- * and recommended for external APIs with uniqueness constraints.
12
5
  */
13
6
 
14
- import { generateIdFromName } from '@inkeep/agents-core/client-exports';
15
7
  import { Nango } from '@nangohq/node';
16
8
  import type {
17
- ApiKeyCredentials,
18
9
  ApiProvider,
19
10
  ApiPublicConnection,
20
11
  ApiPublicIntegration,
21
12
  ApiPublicIntegrationCredentials,
22
13
  } from '@nangohq/types';
23
- import { DEFAULT_NANGO_SERVER_URL, DEFAULT_TENANT_ID } from '@/lib/runtime-config/defaults';
14
+ import { DEFAULT_TENANT_ID } from '@/lib/runtime-config/defaults';
24
15
  import { NangoError, wrapNangoError } from './nango-types';
25
16
 
26
17
  // Initialize Nango client with environment variables
@@ -33,10 +24,7 @@ const getNangoClient = () => {
33
24
  try {
34
25
  return new Nango({
35
26
  secretKey,
36
- host:
37
- process.env.NANGO_SERVER_URL ||
38
- process.env.PUBLIC_NANGO_SERVER_URL ||
39
- DEFAULT_NANGO_SERVER_URL,
27
+ host: process.env.NANGO_SERVER_URL || 'https://api.nango.dev',
40
28
  });
41
29
  } catch (error) {
42
30
  throw new NangoError('Failed to initialize Nango client', 'new Nango', error);
@@ -168,6 +156,50 @@ export async function createNangoIntegration(params: {
168
156
  }
169
157
  }
170
158
 
159
+ export async function updateMCPGenericIntegration({
160
+ uniqueKey,
161
+ }: {
162
+ uniqueKey: string;
163
+ }): Promise<ApiPublicIntegration> {
164
+ const secretKey = process.env.NANGO_SECRET_KEY;
165
+ if (!secretKey) {
166
+ throw new NangoError('NANGO_SECRET_KEY environment variable is required for Nango integration');
167
+ }
168
+
169
+ const host = process.env.NANGO_SERVER_URL || 'https://api.nango.dev';
170
+
171
+ const clientName = process.env.OAUTH_CLIENT_NAME || 'Inkeep Agent Framework';
172
+ const clientUri = process.env.OAUTH_CLIENT_URI || 'https://inkeep.com';
173
+ const logoUri =
174
+ process.env.OAUTH_CLIENT_LOGO_URI || 'https://inkeep.com/images/logos/inkeep-logo-blue.svg';
175
+
176
+ const response = await fetch(`${host}/integrations/${uniqueKey}`, {
177
+ method: 'PATCH',
178
+ headers: {
179
+ Authorization: `Bearer ${secretKey}`,
180
+ 'Content-Type': 'application/json',
181
+ },
182
+ body: JSON.stringify({
183
+ custom: {
184
+ oauth_client_name: clientName,
185
+ oauth_client_uri: clientUri,
186
+ oauth_client_logo_uri: logoUri,
187
+ },
188
+ }),
189
+ });
190
+
191
+ if (!response.ok) {
192
+ const errorData = await response.json().catch(() => ({}));
193
+ throw new NangoError(
194
+ `Failed to update integration: ${response.status} ${response.statusText}`,
195
+ 'updateMCPGenericIntegration',
196
+ errorData
197
+ );
198
+ }
199
+
200
+ return await response.json();
201
+ }
202
+
171
203
  /**
172
204
  * Get connections for a specific integration
173
205
  */
@@ -228,122 +260,6 @@ async function createNangoConnectSession({
228
260
  }
229
261
  }
230
262
 
231
- /**
232
- * Create an API key credential by setting up Nango integration and importing the connection
233
- */
234
- export async function createNangoApiKeyConnection({
235
- name,
236
- apiKeyToSet,
237
- metadata,
238
- }: {
239
- name: string;
240
- apiKeyToSet: string;
241
- metadata: Record<string, string>;
242
- }): Promise<{ integration: ApiPublicIntegration }> {
243
- const provider = 'private-api-bearer';
244
- const idFromName = generateIdFromName(name);
245
-
246
- try {
247
- let integration: ApiPublicIntegration;
248
-
249
- /*
250
- * SAFE PATTERN: Optimistic creation for external API with atomic constraints
251
- *
252
- * This is NOT a race condition because:
253
- * 1. Nango API enforces uniqueKey constraints atomically in their database
254
- * 2. Multiple concurrent requests will get deterministic results:
255
- * - One request succeeds (creates the integration)
256
- * - All others get 400 duplicate error (safe to handle)
257
- * 3. The fetchNangoIntegration fallback is idempotent
258
- *
259
- * This pattern is recommended for external APIs vs local database operations
260
- * where true race conditions could occur.
261
- */
262
- try {
263
- // Optimistic creation - assume integration doesn't exist
264
- integration = await createNangoIntegration({
265
- provider,
266
- uniqueKey: idFromName,
267
- displayName: name,
268
- });
269
- } catch (error: any) {
270
- // Handle Nango's atomic duplicate key rejection (400 status)
271
- if (
272
- error instanceof NangoError &&
273
- error.cause &&
274
- typeof error.cause === 'object' &&
275
- 'status' in error.cause &&
276
- error.cause.status === 400
277
- ) {
278
- // Safe fallback: fetch the existing integration (idempotent operation)
279
- const existingIntegration = await fetchNangoIntegration(idFromName);
280
- if (existingIntegration) {
281
- integration = existingIntegration;
282
- } else {
283
- // Edge case: 400 error wasn't about duplicate key
284
- wrapNangoError(error, `Integration creation failed for unexpected reasons`, 'create');
285
- }
286
- } else {
287
- // Non-duplicate error (network, auth, etc.)
288
- wrapNangoError(error, `Failed to create or retrieve integration '${idFromName}'`, 'create');
289
- }
290
- }
291
-
292
- try {
293
- const importConnectionUrl = `${process.env.NANGO_SERVER_URL || process.env.PUBLIC_NANGO_SERVER_URL || DEFAULT_NANGO_SERVER_URL}/connections`;
294
-
295
- const credentials: ApiKeyCredentials = {
296
- type: 'API_KEY',
297
- apiKey: apiKeyToSet,
298
- };
299
-
300
- const body = {
301
- provider_config_key: integration.unique_key,
302
- connection_id: idFromName,
303
- metadata,
304
- credentials,
305
- };
306
-
307
- const response = await fetch(importConnectionUrl, {
308
- method: 'POST',
309
- headers: {
310
- Authorization: `Bearer ${process.env.NANGO_SECRET_KEY}`,
311
- 'Content-Type': 'application/json',
312
- },
313
- body: JSON.stringify(body),
314
- });
315
-
316
- if (!response.ok) {
317
- throw new NangoError(
318
- `Failed to import connection: HTTP ${response.status} - ${response.statusText}`,
319
- 'importConnection'
320
- );
321
- }
322
- } catch (error) {
323
- wrapNangoError(error, `Failed to import API key connection to Nango`, 'importConnection');
324
- }
325
-
326
- try {
327
- await setNangoConnectionMetadata({
328
- providerConfigKey: integration.unique_key,
329
- connectionId: idFromName,
330
- metadata,
331
- });
332
- } catch (error) {
333
- // Non-critical error - log but don't fail
334
- console.warn(`Failed to set metadata for connection ${idFromName}:`, error);
335
- }
336
- return { integration };
337
- } catch (error) {
338
- console.error('Unexpected error creating API key credential:', error);
339
- wrapNangoError(
340
- error,
341
- `Unexpected error creating API key credential '${name}'`,
342
- 'createNangoApiKeyConnection'
343
- );
344
- }
345
- }
346
-
347
263
  /**
348
264
  * Create a connect session for a Nango provider (sets up integration if needed)
349
265
  */
@@ -391,6 +307,16 @@ export async function createProviderConnectSession({
391
307
  }
392
308
  }
393
309
 
310
+ if (providerName === 'mcp-generic') {
311
+ try {
312
+ await updateMCPGenericIntegration({
313
+ uniqueKey: integration.unique_key,
314
+ });
315
+ } catch (error) {
316
+ console.warn('Failed to update MCP generic integration:', error);
317
+ }
318
+ }
319
+
394
320
  try {
395
321
  const connectSession = await createNangoConnectSession({
396
322
  integrationId: integration.unique_key,