@inkeep/agents-manage-ui 0.22.2 → 0.22.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (243) hide show
  1. package/.next/standalone/agents-manage-ui/.next/BUILD_ID +1 -1
  2. package/.next/standalone/agents-manage-ui/.next/app-build-manifest.json +148 -138
  3. package/.next/standalone/agents-manage-ui/.next/app-path-routes-manifest.json +6 -6
  4. package/.next/standalone/agents-manage-ui/.next/build-manifest.json +7 -7
  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]/agents/[agentId]/page.js +2 -2
  10. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/[agentId]/page.js.nft.json +1 -1
  11. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/[agentId]/page_client-reference-manifest.js +1 -1
  12. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/new/page.js +2 -2
  13. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/new/page.js.nft.json +1 -1
  14. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/new/page_client-reference-manifest.js +1 -1
  15. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/page.js +2 -2
  16. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/page_client-reference-manifest.js +1 -1
  17. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/api-keys/page.js +3 -3
  18. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/api-keys/page_client-reference-manifest.js +1 -1
  19. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page.js +2 -2
  20. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page.js.nft.json +1 -1
  21. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page_client-reference-manifest.js +1 -1
  22. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/new/page.js +2 -2
  23. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/new/page.js.nft.json +1 -1
  24. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/new/page_client-reference-manifest.js +1 -1
  25. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/page.js +2 -2
  26. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/page_client-reference-manifest.js +1 -1
  27. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/page.js +2 -2
  28. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/page.js.nft.json +1 -1
  29. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/page_client-reference-manifest.js +1 -1
  30. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/new/page.js +2 -2
  31. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/new/page.js.nft.json +1 -1
  32. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/new/page_client-reference-manifest.js +1 -1
  33. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/page.js +1 -1
  34. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/page_client-reference-manifest.js +1 -1
  35. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page.js +1 -1
  36. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page_client-reference-manifest.js +1 -1
  37. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page.js +2 -2
  38. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page.js.nft.json +1 -1
  39. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page_client-reference-manifest.js +1 -1
  40. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/page.js +1 -1
  41. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/page_client-reference-manifest.js +1 -1
  42. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page.js +2 -2
  43. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page.js.nft.json +1 -1
  44. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page_client-reference-manifest.js +1 -1
  45. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/page.js +1 -1
  46. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/page_client-reference-manifest.js +1 -1
  47. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/page.js +2 -2
  48. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/page_client-reference-manifest.js +1 -1
  49. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page.js +2 -2
  50. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page_client-reference-manifest.js +1 -1
  51. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page.js +2 -2
  52. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page_client-reference-manifest.js +1 -1
  53. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/new/page.js +2 -2
  54. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/new/page_client-reference-manifest.js +1 -1
  55. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/page.js +2 -2
  56. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/page_client-reference-manifest.js +1 -1
  57. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/page.js +2 -2
  58. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/page_client-reference-manifest.js +1 -1
  59. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/settings/page.js +2 -2
  60. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/settings/page_client-reference-manifest.js +1 -1
  61. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page.js +2 -2
  62. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page.js.nft.json +1 -1
  63. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page_client-reference-manifest.js +1 -1
  64. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page.js +1 -1
  65. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page_client-reference-manifest.js +1 -1
  66. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/page.js +3 -3
  67. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/page.js.nft.json +1 -1
  68. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/page_client-reference-manifest.js +1 -1
  69. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/page.js +1 -1
  70. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/page_client-reference-manifest.js +1 -1
  71. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found/page.js +1 -1
  72. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  73. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found.html +1 -1
  74. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found.rsc +9 -9
  75. package/.next/standalone/agents-manage-ui/.next/server/app/api/signoz/conversations/[conversationId]/route.js +1 -1
  76. package/.next/standalone/agents-manage-ui/.next/server/app/api/signoz/conversations/[conversationId]/route_client-reference-manifest.js +1 -1
  77. package/.next/standalone/agents-manage-ui/.next/server/app/api/signoz/route.js +1 -1
  78. package/.next/standalone/agents-manage-ui/.next/server/app/api/signoz/route_client-reference-manifest.js +1 -1
  79. package/.next/standalone/agents-manage-ui/.next/server/app/page.js +2 -2
  80. package/.next/standalone/agents-manage-ui/.next/server/app/page_client-reference-manifest.js +1 -1
  81. package/.next/standalone/agents-manage-ui/.next/server/app-paths-manifest.json +6 -6
  82. package/.next/standalone/agents-manage-ui/.next/server/chunks/1670.js +1 -1
  83. package/.next/standalone/agents-manage-ui/.next/server/chunks/175.js +1 -1
  84. package/.next/standalone/agents-manage-ui/.next/server/chunks/207.js +1 -0
  85. package/.next/standalone/agents-manage-ui/.next/server/chunks/2153.js +1 -1
  86. package/.next/standalone/agents-manage-ui/.next/server/chunks/2496.js +184 -0
  87. package/.next/standalone/agents-manage-ui/.next/server/chunks/3205.js +1 -0
  88. package/.next/standalone/agents-manage-ui/.next/server/chunks/3547.js +1 -1
  89. package/.next/standalone/agents-manage-ui/.next/server/chunks/6212.js +1 -1
  90. package/.next/standalone/agents-manage-ui/.next/server/chunks/6494.js +1 -0
  91. package/.next/standalone/agents-manage-ui/.next/server/chunks/7457.js +2 -2
  92. package/.next/standalone/agents-manage-ui/.next/server/chunks/7641.js +1 -0
  93. package/.next/standalone/agents-manage-ui/.next/server/chunks/8275.js +1 -1
  94. package/.next/standalone/agents-manage-ui/.next/server/chunks/8982.js +1 -1
  95. package/.next/standalone/agents-manage-ui/.next/server/edge-runtime-webpack.js +2 -0
  96. package/.next/standalone/agents-manage-ui/.next/server/middleware-build-manifest.js +1 -1
  97. package/.next/standalone/agents-manage-ui/.next/server/middleware-manifest.json +28 -2
  98. package/.next/standalone/agents-manage-ui/.next/server/middleware-react-loadable-manifest.js +1 -1
  99. package/.next/standalone/agents-manage-ui/.next/server/pages/404.html +1 -1
  100. package/.next/standalone/agents-manage-ui/.next/server/pages/500.html +1 -1
  101. package/.next/standalone/agents-manage-ui/.next/server/server-reference-manifest.js +1 -1
  102. package/.next/standalone/agents-manage-ui/.next/server/server-reference-manifest.json +1 -1
  103. package/.next/standalone/agents-manage-ui/.next/server/src/middleware.js +14 -0
  104. package/.next/standalone/agents-manage-ui/.next/static/chunks/13162.51bfeffa888e765d.js +1 -0
  105. package/.next/standalone/agents-manage-ui/.next/static/chunks/2100.0cc29b56dc39a91c.js +93 -0
  106. package/.next/standalone/agents-manage-ui/.next/static/chunks/{21078.db6a097e0944219f.js → 21078.a7d987aaf4965f33.js} +1 -1
  107. package/.next/standalone/agents-manage-ui/.next/static/chunks/26917.cd86a6e50adbcaf7.js +1 -0
  108. package/.next/standalone/agents-manage-ui/.next/static/chunks/331.4a73e2854eaaf329.js +1 -0
  109. package/.next/standalone/agents-manage-ui/.next/static/chunks/47065.981fe771a3ebbc89.js +55 -0
  110. package/.next/standalone/agents-manage-ui/.next/static/chunks/{48da6a00.4291466416c0a466.js → 48da6a00.6d972ca63d2c3e83.js} +1 -1
  111. package/.next/standalone/agents-manage-ui/.next/static/chunks/53779.3c6baf4968503ed4.js +1 -0
  112. package/.next/standalone/agents-manage-ui/.next/static/chunks/54855.9990b0a1efe89008.js +1 -0
  113. package/.next/standalone/agents-manage-ui/.next/static/chunks/71558-78422b7aaa85fd6c.js +1 -0
  114. package/.next/standalone/agents-manage-ui/.next/static/chunks/7190-fd3c76249a4dd920.js +1 -0
  115. package/.next/standalone/agents-manage-ui/.next/static/chunks/72963-d8f87b0ac91409cd.js +1 -0
  116. package/.next/standalone/agents-manage-ui/.next/static/chunks/73974.646f6f06a0fb78fb.js +62 -0
  117. package/.next/standalone/agents-manage-ui/.next/static/chunks/78225-259f39396b8ad0f3.js +1 -0
  118. package/.next/standalone/agents-manage-ui/.next/static/chunks/{89814.9c8e7e476bf1798d.js → 89814.587633678bc1263b.js} +2 -2
  119. package/.next/standalone/agents-manage-ui/.next/static/chunks/93453.066f92e65561f306.js +59 -0
  120. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/[agentId]/loading-e1f169e1ecbf908b.js +1 -0
  121. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/new/loading-e1f169e1ecbf908b.js +1 -0
  122. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/page-e003706d61e1eafe.js +1 -0
  123. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/api-keys/page-ef99f039107dd345.js +1 -0
  124. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/{page-6ab5b1c9b9c92d88.js → page-afdaf855aec8af05.js} +1 -1
  125. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/new/{page-6ab5b1c9b9c92d88.js → page-afdaf855aec8af05.js} +1 -1
  126. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/{page-8842ae2edb4c6e8a.js → page-bc4833a45b33a47d.js} +1 -1
  127. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/{page-13c3de79eda66a55.js → page-ef06eff512088fdf.js} +1 -1
  128. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/new/{page-13c3de79eda66a55.js → page-ef06eff512088fdf.js} +1 -1
  129. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/{page-d77e2ac63d239436.js → page-78b8833482d1f877.js} +1 -1
  130. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page-a2772a4b6f4e0249.js +1 -0
  131. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page-4864c8674778ee06.js +1 -0
  132. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page-b40d929333c3ce65.js +1 -0
  133. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/page-9d1905ada8938af6.js +1 -0
  134. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/new/layout-e1f169e1ecbf908b.js +1 -0
  135. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/new/{page-d7cae41b8240cc54.js → page-89cef449fcf9ef7d.js} +1 -1
  136. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/page-069621ec5b0970e5.js +1 -0
  137. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/settings/{page-caa266f7bab90cae.js → page-1273d3fada0586f8.js} +1 -1
  138. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/page-b23914a33d42bd42.js +1 -0
  139. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/page-c605715de4c89b47.js +1 -0
  140. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/layout-c0ecff8c2b6e0bcc.js +1 -0
  141. package/.next/standalone/agents-manage-ui/.next/static/chunks/main-f6a588d23fbb5abc.js +1 -0
  142. package/.next/standalone/agents-manage-ui/.next/static/chunks/{webpack-eac97a6e1c9c9ceb.js → webpack-59bf208cf832faea.js} +1 -1
  143. package/.next/standalone/agents-manage-ui/.next/static/css/a813c86aed230074.css +1 -0
  144. package/.next/standalone/agents-manage-ui/package.json +1 -1
  145. package/.next/standalone/package.json +3 -2
  146. package/.next/standalone/packages/agents-core/package.json +1 -1
  147. package/package.json +4 -4
  148. package/src/app/[tenantId]/projects/[projectId]/agents/[agentId]/loading.tsx +2 -26
  149. package/src/app/[tenantId]/projects/[projectId]/agents/[agentId]/page.tsx +1 -1
  150. package/src/app/[tenantId]/projects/[projectId]/agents/new/loading.tsx +5 -0
  151. package/src/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page.tsx +0 -1
  152. package/src/app/api/signoz/conversations/[conversationId]/route.ts +6 -2
  153. package/src/app/api/signoz/route.ts +3 -5
  154. package/src/app/layout.tsx +5 -2
  155. package/src/app/utils/active-tools.ts +0 -2
  156. package/src/app/utils/format-date.ts +0 -2
  157. package/src/components/agent/agent-loading-skeleton.tsx +26 -0
  158. package/src/components/agent/agent.tsx +21 -39
  159. package/src/components/agent/configuration/model-options.tsx +11 -8
  160. package/src/components/agent/edges/self-loop-edge.tsx +0 -1
  161. package/src/components/agent/nodes/function-tool-node.tsx +0 -1
  162. package/src/components/agent/nodes/mcp-node.tsx +0 -1
  163. package/src/components/agent/playground/chat-widget.tsx +0 -1
  164. package/src/components/agent/playground/ikp-message.tsx +0 -3
  165. package/src/components/agent/sidepane/edges/edge-editor.tsx +0 -3
  166. package/src/components/agent/sidepane/editor-loading-skeleton.tsx +40 -0
  167. package/src/components/agent/sidepane/nodes/function-tool-node-editor.tsx +0 -1
  168. package/src/components/agent/sidepane/nodes/mcp-node-editor.tsx +0 -1
  169. package/src/components/agent/sidepane/nodes/sub-agent-node-editor.tsx +0 -2
  170. package/src/components/agent/sidepane/sidepane.tsx +14 -4
  171. package/src/components/artifact-components/form/validation.ts +0 -2
  172. package/src/components/credentials/views/edit-credential-form.tsx +0 -2
  173. package/src/components/credentials/views/generic-auth-form.tsx +0 -1
  174. package/src/components/data-components/form/validation.ts +0 -1
  175. package/src/components/form/prompt-editor.tsx +0 -4
  176. package/src/components/mcp-servers/mcp-tool-image.tsx +0 -1
  177. package/src/components/projects/form/project-form.tsx +0 -4
  178. package/src/components/projects/form/project-models-section.tsx +0 -2
  179. package/src/components/projects/form/project-stopwhen-section.tsx +0 -1
  180. package/src/components/traces/conversation-stats/conversation-list-item.tsx +0 -1
  181. package/src/components/traces/editors/json-editor-with-copy.tsx +0 -3
  182. package/src/components/traces/timeline/span-attributes.tsx +0 -1
  183. package/src/components/traces/timeline/timeline-wrapper.tsx +0 -2
  184. package/src/components/traces/traces-overview.tsx +0 -3
  185. package/src/components/ui/card-grid.tsx +0 -1
  186. package/src/components/ui/chart.tsx +0 -1
  187. package/src/components/ui/inheritance-indicator.tsx +0 -3
  188. package/src/components/ui/item-card-grid.tsx +0 -1
  189. package/src/features/agent/domain/deserialize.ts +0 -5
  190. package/src/features/agent/domain/serialize.ts +0 -8
  191. package/src/features/agent/state/use-agent-store.ts +32 -26
  192. package/src/hooks/use-chat-activities-polling.ts +0 -2
  193. package/src/hooks/use-node-editor.ts +0 -1
  194. package/src/hooks/use-oauth-login.ts +0 -1
  195. package/src/hooks/use-side-pane.ts +5 -2
  196. package/src/hooks/use-traces-query-state.ts +0 -1
  197. package/src/lib/api/api-config.ts +8 -3
  198. package/src/lib/api/artifact-components.ts +0 -4
  199. package/src/lib/api/projects.ts +0 -4
  200. package/src/lib/api/signoz-sql.ts +0 -1
  201. package/src/lib/api/signoz-stats.ts +0 -1
  202. package/src/lib/json-schema-validation.ts +0 -5
  203. package/src/lib/mcp-tools/nango-types.ts +0 -1
  204. package/src/lib/mcp-tools/nango.ts +6 -11
  205. package/src/lib/runtime-config/defaults.ts +2 -0
  206. package/src/lib/utils/agent-error-parser.ts +0 -2
  207. package/src/lib/utils/credentials-utils.ts +0 -1
  208. package/src/lib/utils/mcp-urls.ts +0 -2
  209. package/src/middleware.ts +18 -0
  210. package/.next/standalone/agents-manage-ui/.next/server/chunks/1343.js +0 -1
  211. package/.next/standalone/agents-manage-ui/.next/server/chunks/7504.js +0 -184
  212. package/.next/standalone/agents-manage-ui/.next/server/chunks/7677.js +0 -1
  213. package/.next/standalone/agents-manage-ui/.next/server/chunks/7922.js +0 -1
  214. package/.next/standalone/agents-manage-ui/.next/server/chunks/890.js +0 -1
  215. package/.next/standalone/agents-manage-ui/.next/static/chunks/13162.49a473711bfc9106.js +0 -1
  216. package/.next/standalone/agents-manage-ui/.next/static/chunks/2100.6da5ac53af6a50b9.js +0 -93
  217. package/.next/standalone/agents-manage-ui/.next/static/chunks/26917.44af95c2220d2d7a.js +0 -1
  218. package/.next/standalone/agents-manage-ui/.next/static/chunks/331.4164e5bbbf2109c5.js +0 -1
  219. package/.next/standalone/agents-manage-ui/.next/static/chunks/47065.a2df61ae309c6b30.js +0 -55
  220. package/.next/standalone/agents-manage-ui/.next/static/chunks/48547-46b2aca219933ae4.js +0 -1
  221. package/.next/standalone/agents-manage-ui/.next/static/chunks/53779.d1ecdd05fd8620ac.js +0 -1
  222. package/.next/standalone/agents-manage-ui/.next/static/chunks/54855.ac5c4000030e49f3.js +0 -1
  223. package/.next/standalone/agents-manage-ui/.next/static/chunks/71558-04af7fd4fa73f796.js +0 -1
  224. package/.next/standalone/agents-manage-ui/.next/static/chunks/7190-5071ba626f194c39.js +0 -1
  225. package/.next/standalone/agents-manage-ui/.next/static/chunks/73974.c41c4a27e5a42554.js +0 -62
  226. package/.next/standalone/agents-manage-ui/.next/static/chunks/78225-a58a44669962b471.js +0 -1
  227. package/.next/standalone/agents-manage-ui/.next/static/chunks/93453.a61a7f6334280207.js +0 -59
  228. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/[agentId]/loading-721e10fd249e4b77.js +0 -1
  229. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/page-2cb4090d3f1f6f9f.js +0 -1
  230. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/api-keys/page-87bfed6979b25fab.js +0 -1
  231. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page-60c63d1a901d5da5.js +0 -1
  232. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page-949e1d3292a1561d.js +0 -1
  233. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page-0a104a968bd1001f.js +0 -1
  234. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/page-9d9d3956f0fdef24.js +0 -1
  235. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/new/layout-721e10fd249e4b77.js +0 -1
  236. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/page-0b520408803bd6bf.js +0 -1
  237. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/page-759a15fe463a0f2f.js +0 -1
  238. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/page-f107388fc86ac832.js +0 -1
  239. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/layout-6a056d9cf53ed3f6.js +0 -1
  240. package/.next/standalone/agents-manage-ui/.next/static/chunks/main-2ddea5276081c6f7.js +0 -1
  241. package/.next/standalone/agents-manage-ui/.next/static/css/42e93c4387888412.css +0 -1
  242. /package/.next/standalone/agents-manage-ui/.next/static/{Xg7gVl1RyYHIkcm9ovJHc → D8h6pxVIqA0GQjbq_VQqo}/_buildManifest.js +0 -0
  243. /package/.next/standalone/agents-manage-ui/.next/static/{Xg7gVl1RyYHIkcm9ovJHc → D8h6pxVIqA0GQjbq_VQqo}/_ssgManifest.js +0 -0
@@ -164,7 +164,6 @@ export function deserializeAgentData(data: FullAgentDefinition): TransformResult
164
164
  ? { stepCountIs: internalAgent.stopWhen.stepCountIs }
165
165
  : undefined,
166
166
  type: agent.type,
167
- // Convert canUse back to tools, selectedTools, headers for UI
168
167
  tools: internalAgent.canUse ? internalAgent.canUse.map((item) => item.toolId) : [],
169
168
  selectedTools: internalAgent.canUse
170
169
  ? internalAgent.canUse.reduce(
@@ -201,17 +200,14 @@ export function deserializeAgentData(data: FullAgentDefinition): TransformResult
201
200
  nodes.push(agentNode);
202
201
  }
203
202
 
204
- // Create tool nodes from canUse items (using tools and functions lookups)
205
203
  for (const subAgentId of subAgentIds) {
206
204
  const agent = data.subAgents[subAgentId];
207
- // Check if agent has canUse property (internal agents)
208
205
  if ('canUse' in agent && agent.canUse && agent.canUse.length > 0) {
209
206
  for (const canUseItem of agent.canUse) {
210
207
  const toolId = canUseItem.toolId;
211
208
  const toolNodeId = nanoid();
212
209
  const relationshipId = canUseItem.agentToolRelationId;
213
210
 
214
- // Get tool details from lookup
215
211
  const tool = data.tools?.[toolId] || data.functionTools?.[toolId];
216
212
 
217
213
  // Determine node type based on tool type
@@ -277,7 +273,6 @@ export function deserializeAgentData(data: FullAgentDefinition): TransformResult
277
273
  for (const sourceSubAgentId of subAgentIds) {
278
274
  const sourceAgent = data.subAgents[sourceSubAgentId];
279
275
 
280
- // Check if agent has relationship properties (internal agents only)
281
276
  if ('canTransferTo' in sourceAgent && sourceAgent.canTransferTo) {
282
277
  for (const targetSubAgentId of sourceAgent.canTransferTo) {
283
278
  if (data.subAgents[targetSubAgentId]) {
@@ -31,7 +31,6 @@ export type ExtendedAgent =
31
31
  })
32
32
  | ExternalAgent;
33
33
 
34
- // Type guard to check if an agent is an internal agent
35
34
  function isInternalAgent(
36
35
  agent: ExtendedAgent | FullAgentDefinition['subAgents'][string]
37
36
  ): agent is InternalAgent {
@@ -121,7 +120,6 @@ export function serializeAgentData(
121
120
 
122
121
  const stopWhen = (node.data as any).stopWhen;
123
122
 
124
- // Build canUse array from edges connecting this agent to tool nodes (MCP and Function)
125
123
  const canUse: Array<{
126
124
  toolId: string;
127
125
  toolSelection?: string[] | null;
@@ -143,11 +141,9 @@ export function serializeAgentData(
143
141
  const toolId = (mcpNode.data as any).toolId;
144
142
 
145
143
  if (toolId) {
146
- // Get selected tools from MCP node's tempSelectedTools
147
144
  const tempSelectedTools = (mcpNode.data as any).tempSelectedTools;
148
145
  let toolSelection: string[] | null = null;
149
146
 
150
- // Get the relationshipId from the MCP node first
151
147
  const relationshipId = (mcpNode.data as any).relationshipId;
152
148
 
153
149
  if (tempSelectedTools !== undefined) {
@@ -217,10 +213,8 @@ export function serializeAgentData(
217
213
  const functionToolId = nodeData.functionToolId || nodeData.toolId || functionToolNode.id;
218
214
  const relationshipId = nodeData.relationshipId;
219
215
 
220
- // Get the function ID from the node data (should reference existing function)
221
216
  const functionId = nodeData.functionId || functionToolId;
222
217
 
223
- // Create function tool entry
224
218
  const functionToolData = {
225
219
  id: functionToolId,
226
220
  name: nodeData.name || '',
@@ -493,7 +487,6 @@ export function validateSerializedData(
493
487
  }
494
488
  }
495
489
 
496
- // Validate function tools for internal agents (check canUse array for function tools)
497
490
  if (isInternalAgent(agent) && agent.canUse) {
498
491
  for (const canUseItem of agent.canUse) {
499
492
  const toolId = canUseItem.toolId;
@@ -519,7 +512,6 @@ export function validateSerializedData(
519
512
  // Use the node map to get the React Flow node ID if available
520
513
  const nodeId = functionToolNodeMap?.get(toolId) || toolId;
521
514
 
522
- // Validate required fields for function tools
523
515
  if (!functionTool.name || String(functionTool.name).trim() === '') {
524
516
  errors.push({
525
517
  message: 'Function tool name is required',
@@ -38,6 +38,7 @@ type AgentActions = {
38
38
  toolLookup?: Record<string, MCPTool>,
39
39
  agentToolConfigLookup?: AgentToolConfigLookup
40
40
  ): void;
41
+ reset(): void;
41
42
  setDataComponentLookup(dataComponentLookup: Record<string, DataComponent>): void;
42
43
  setArtifactComponentLookup(artifactComponentLookup: Record<string, ArtifactComponent>): void;
43
44
  setToolLookup(toolLookup: Record<string, MCPTool>): void;
@@ -67,32 +68,36 @@ type AgentState = AgentStateData & {
67
68
  actions: AgentActions;
68
69
  };
69
70
 
71
+ const initialAgentState: AgentStateData = {
72
+ nodes: [],
73
+ edges: [],
74
+ metadata: {
75
+ id: undefined,
76
+ name: '',
77
+ description: '',
78
+ contextConfig: {
79
+ contextVariables: '',
80
+ headersSchema: '',
81
+ },
82
+ models: undefined,
83
+ stopWhen: undefined,
84
+ prompt: undefined,
85
+ statusUpdates: undefined,
86
+ },
87
+ dataComponentLookup: {},
88
+ artifactComponentLookup: {},
89
+ toolLookup: {},
90
+ agentToolConfigLookup: {},
91
+ dirty: false,
92
+ history: [],
93
+ future: [],
94
+ errors: null,
95
+ showErrors: false,
96
+ };
97
+
70
98
  export const agentStore = create<AgentState>()(
71
99
  devtools((set, get) => ({
72
- nodes: [],
73
- edges: [],
74
- metadata: {
75
- id: undefined,
76
- name: '',
77
- description: '',
78
- contextConfig: {
79
- contextVariables: '',
80
- headersSchema: '',
81
- },
82
- models: undefined,
83
- stopWhen: undefined,
84
- prompt: undefined,
85
- statusUpdates: undefined,
86
- },
87
- dataComponentLookup: {},
88
- artifactComponentLookup: {},
89
- toolLookup: {},
90
- agentToolConfigLookup: {},
91
- dirty: false,
92
- history: [],
93
- future: [],
94
- errors: null,
95
- showErrors: false,
100
+ ...initialAgentState,
96
101
  // Separate "namespace" for actions
97
102
  actions: {
98
103
  setInitial(
@@ -119,6 +124,9 @@ export const agentStore = create<AgentState>()(
119
124
  showErrors: false,
120
125
  });
121
126
  },
127
+ reset() {
128
+ set(initialAgentState);
129
+ },
122
130
  setDataComponentLookup(dataComponentLookup) {
123
131
  set({ dataComponentLookup });
124
132
  },
@@ -144,7 +152,6 @@ export const agentStore = create<AgentState>()(
144
152
  }));
145
153
  },
146
154
  onNodesChange(changes) {
147
- // Check if any change type would modify the agent (not just selection changes)
148
155
  const hasModifyingChange = changes.some(
149
156
  // Don't trigger `position` as modified change, since when the nodes are repositioned,
150
157
  // they'll be re-laid out during the initial load anyway
@@ -158,7 +165,6 @@ export const agentStore = create<AgentState>()(
158
165
  }));
159
166
  },
160
167
  onEdgesChange(changes) {
161
- // Check if any change type would modify the agent (not just selection changes)
162
168
  const hasModifyingChange = changes.some(
163
169
  (change) => change.type === 'remove' || change.type === 'add' || change.type === 'replace'
164
170
  );
@@ -33,7 +33,6 @@ export const useChatActivitiesPolling = ({
33
33
  try {
34
34
  setError(null);
35
35
 
36
- // Create new abort controller for this request
37
36
  abortControllerRef.current = new AbortController();
38
37
  const currentConversationId = conversationId; // Capture current ID
39
38
 
@@ -63,7 +62,6 @@ export const useChatActivitiesPolling = ({
63
62
 
64
63
  const data: ConversationDetail = await response.json();
65
64
 
66
- // Validate that the response is still for the current conversation
67
65
  if (isComponentMountedRef.current && currentConversationId === conversationId) {
68
66
  // Only update state if data actually changed (by checking activity count)
69
67
  const newCount = data.activities?.length || 0;
@@ -107,7 +107,6 @@ export function useNodeEditor({ selectedNodeId, errorHelpers }: UseNodeEditorOpt
107
107
  const finalKey = nestedPath[nestedPath.length - 1];
108
108
  if (value === undefined || value === null || value === '') {
109
109
  delete current[finalKey];
110
- // Check if the parent object becomes empty after deletion
111
110
  if (Object.keys(updatedParent).length === 0) {
112
111
  updateField(parentField, null);
113
112
  return;
@@ -25,7 +25,6 @@ export function useOAuthLogin({ tenantId, projectId, onFinish, onError }: UseOAu
25
25
  activeAttempts.delete(toolId);
26
26
  }
27
27
  try {
28
- // Get the OAuth URL and open in popup window
29
28
  const oauthUrl = getOAuthLoginUrl({
30
29
  PUBLIC_INKEEP_AGENTS_MANAGE_API_URL,
31
30
  tenantId,
@@ -1,10 +1,13 @@
1
1
  import { parseAsString, parseAsStringLiteral, useQueryStates } from 'nuqs';
2
2
 
3
- const paneType = ['agent', 'node', 'edge'] as const;
3
+ export const PANE_TYPES = ['agent', 'node', 'edge'] as const;
4
+ export type PaneType = (typeof PANE_TYPES)[number];
5
+
6
+ export const DEFAULT_NEW_AGENT_PANE: PaneType = 'agent';
4
7
 
5
8
  export function useSidePane() {
6
9
  const [queryState, setQueryState] = useQueryStates({
7
- pane: parseAsStringLiteral(paneType),
10
+ pane: parseAsStringLiteral(PANE_TYPES),
8
11
  nodeId: parseAsString,
9
12
  edgeId: parseAsString,
10
13
  });
@@ -46,7 +46,6 @@ export function useTracesQueryState() {
46
46
  // Span filtering
47
47
  spanName: parseAsString.withDefault(''),
48
48
  spanAttributes: parseAsJson((value: unknown): SpanAttribute[] => {
49
- // Validate that the parsed JSON is an array of SpanAttribute objects
50
49
  if (!Array.isArray(value)) return [];
51
50
 
52
51
  return value.filter(
@@ -14,9 +14,15 @@ let hasWarnedManageApi = false;
14
14
  function getManageApiUrl(): string {
15
15
  if (INKEEP_AGENTS_MANAGE_API_URL === null) {
16
16
  INKEEP_AGENTS_MANAGE_API_URL =
17
- process.env.INKEEP_AGENTS_MANAGE_API_URL || DEFAULT_INKEEP_AGENTS_MANAGE_API_URL;
17
+ process.env.INKEEP_AGENTS_MANAGE_API_URL ||
18
+ process.env.PUBLIC_INKEEP_AGENTS_MANAGE_API_URL ||
19
+ DEFAULT_INKEEP_AGENTS_MANAGE_API_URL;
18
20
 
19
- if (!process.env.INKEEP_AGENTS_MANAGE_API_URL && !hasWarnedManageApi) {
21
+ if (
22
+ !process.env.INKEEP_AGENTS_MANAGE_API_URL &&
23
+ !process.env.PUBLIC_INKEEP_AGENTS_MANAGE_API_URL &&
24
+ !hasWarnedManageApi
25
+ ) {
20
26
  console.warn(
21
27
  `INKEEP_AGENTS_MANAGE_API_URL is not set, falling back to: ${DEFAULT_INKEEP_AGENTS_MANAGE_API_URL}`
22
28
  );
@@ -60,7 +66,6 @@ async function makeApiRequestInternal<T>(
60
66
  );
61
67
  }
62
68
 
63
- // Check if there's actually content to parse
64
69
  const contentType = response.headers.get('content-type');
65
70
  const hasJsonContent = contentType?.includes('application/json');
66
71
 
@@ -35,7 +35,6 @@ export async function fetchArtifactComponents(
35
35
  `tenants/${tenantId}/projects/${projectId}/artifact-components`
36
36
  );
37
37
 
38
- // Return the response as-is, preserving null/undefined props
39
38
  return response;
40
39
  }
41
40
 
@@ -54,7 +53,6 @@ export async function fetchArtifactComponent(
54
53
  `tenants/${tenantId}/projects/${projectId}/artifact-components/${artifactComponentId}`
55
54
  );
56
55
 
57
- // Return the response as-is, preserving null/undefined props
58
56
  return response.data;
59
57
  }
60
58
 
@@ -77,7 +75,6 @@ export async function createArtifactComponent(
77
75
  }
78
76
  );
79
77
 
80
- // Return the response as-is, preserving null/undefined props
81
78
  return response.data;
82
79
  }
83
80
 
@@ -100,7 +97,6 @@ export async function updateArtifactComponent(
100
97
  }
101
98
  );
102
99
 
103
- // Return the response as-is, preserving null/undefined props
104
100
  return response.data;
105
101
  }
106
102
 
@@ -13,7 +13,6 @@ export async function fetchProjects(tenantId: string): Promise<ListResponse<Proj
13
13
  `tenants/${tenantId}/projects`
14
14
  );
15
15
 
16
- // Map backend 'id' field to 'projectId' for frontend consistency
17
16
  if (response.data) {
18
17
  response.data = response.data.map((project: any) => ({
19
18
  ...project,
@@ -34,7 +33,6 @@ export async function fetchProject(
34
33
  `tenants/${tenantId}/projects/${projectId}`
35
34
  );
36
35
 
37
- // Map backend 'id' field to 'projectId' for frontend consistency
38
36
  if (response.data) {
39
37
  response.data = {
40
38
  ...response.data,
@@ -59,7 +57,6 @@ export async function createProject(
59
57
  }
60
58
  );
61
59
 
62
- // Map backend 'id' field to 'projectId' for frontend consistency
63
60
  if (response.data) {
64
61
  response.data = {
65
62
  ...response.data,
@@ -84,7 +81,6 @@ export async function updateProject(
84
81
  body: JSON.stringify(project),
85
82
  }
86
83
  );
87
- // Map backend 'id' field to 'projectId' for frontend consistency
88
84
  if (response.data) {
89
85
  response.data = {
90
86
  ...response.data,
@@ -123,7 +123,6 @@ export async function fetchAllSpanAttributes_SQL(
123
123
  }
124
124
 
125
125
  for (const r of rows) {
126
- // Build the span.data bag from the projected JSON maps
127
126
  const attrsString = JSON.parse(r.attributes_string_json || '{}');
128
127
  const attrsNum = JSON.parse(r.attributes_number_json || '{}');
129
128
  const attrsBool = JSON.parse(r.attributes_bool_json || '{}');
@@ -103,7 +103,6 @@ const asTypedFilterValue = (v: string): FilterValue => {
103
103
  return FilterValueSchema.parse(numericValue);
104
104
  }
105
105
 
106
- // Return as validated string
107
106
  return FilterValueSchema.parse(v);
108
107
  } catch (error) {
109
108
  // If validation fails, log the error and return the original string
@@ -97,7 +97,6 @@ function validateJsonSchema(schema: any): ValidationError[] {
97
97
  return errors;
98
98
  }
99
99
 
100
- // Check if it's a valid object schema
101
100
  if (!objectValidator.Check(schema)) {
102
101
  // Check individual properties for better error messages
103
102
  if (!schema.type || schema.type !== 'object') {
@@ -124,7 +123,6 @@ function validateJsonSchema(schema: any): ValidationError[] {
124
123
  });
125
124
  }
126
125
 
127
- // Validate each property
128
126
  if (schema.properties && typeof schema.properties === 'object') {
129
127
  Object.entries(schema.properties).forEach(([propertyName, propertySchema]) => {
130
128
  if (!propertyValidator.Check(propertySchema)) {
@@ -205,7 +203,6 @@ function validateLlmRequirements(schema: any): ValidationError[] {
205
203
  export function validateJsonSchemaForLlm(jsonString: string): ValidationResult {
206
204
  const warnings: string[] = [];
207
205
 
208
- // Step 1: Validate JSON syntax
209
206
  const { parsed, errors: syntaxErrors } = validateJsonSyntax(jsonString);
210
207
 
211
208
  if (syntaxErrors.length > 0) {
@@ -224,10 +221,8 @@ export function validateJsonSchemaForLlm(jsonString: string): ValidationResult {
224
221
  };
225
222
  }
226
223
 
227
- // Step 2: Validate JSON Schema structure
228
224
  const schemaErrors = validateJsonSchema(parsed);
229
225
 
230
- // Step 3: Validate LLM-specific requirements
231
226
  const llmErrors = validateLlmRequirements(parsed);
232
227
 
233
228
  const allErrors = [...schemaErrors, ...llmErrors];
@@ -10,7 +10,6 @@ export class NangoError extends Error {
10
10
  }
11
11
  }
12
12
 
13
- // Helper to wrap errors, preserving existing NangoErrors
14
13
  export function wrapNangoError(error: unknown, message: string, operation?: string): never {
15
14
  if (error instanceof NangoError) {
16
15
  throw error;
@@ -20,7 +20,7 @@ import type {
20
20
  ApiPublicIntegration,
21
21
  ApiPublicIntegrationCredentials,
22
22
  } from '@nangohq/types';
23
- import { DEFAULT_TENANT_ID } from '@/lib/runtime-config/defaults';
23
+ import { DEFAULT_NANGO_SERVER_URL, DEFAULT_TENANT_ID } from '@/lib/runtime-config/defaults';
24
24
  import { NangoError, wrapNangoError } from './nango-types';
25
25
 
26
26
  // Initialize Nango client with environment variables
@@ -33,7 +33,10 @@ const getNangoClient = () => {
33
33
  try {
34
34
  return new Nango({
35
35
  secretKey,
36
- host: process.env.NANGO_SERVER_URL || undefined, // defaults to Nango Cloud
36
+ host:
37
+ process.env.NANGO_SERVER_URL ||
38
+ process.env.PUBLIC_NANGO_SERVER_URL ||
39
+ DEFAULT_NANGO_SERVER_URL,
37
40
  });
38
41
  } catch (error) {
39
42
  throw new NangoError('Failed to initialize Nango client', 'new Nango', error);
@@ -128,7 +131,6 @@ export async function fetchNangoIntegration(
128
131
  areCredentialsSet,
129
132
  };
130
133
  } catch (error) {
131
- // Check if this is a 404 (integration not found) - return null for this case
132
134
  if (error && typeof error === 'object' && 'status' in error && error.status === 404) {
133
135
  return null;
134
136
  }
@@ -242,7 +244,6 @@ export async function createNangoApiKeyConnection({
242
244
  const idFromName = generateIdFromName(name);
243
245
 
244
246
  try {
245
- // Step 1: Ensure Nango integration exists
246
247
  let integration: ApiPublicIntegration;
247
248
 
248
249
  /*
@@ -288,9 +289,8 @@ export async function createNangoApiKeyConnection({
288
289
  }
289
290
  }
290
291
 
291
- // Step 2: Import the connection to Nango
292
292
  try {
293
- const importConnectionUrl = `${process.env.NANGO_SERVER_URL || 'https://api.nango.dev'}/connections`;
293
+ const importConnectionUrl = `${process.env.NANGO_SERVER_URL || process.env.PUBLIC_NANGO_SERVER_URL || DEFAULT_NANGO_SERVER_URL}/connections`;
294
294
 
295
295
  const credentials: ApiKeyCredentials = {
296
296
  type: 'API_KEY',
@@ -323,7 +323,6 @@ export async function createNangoApiKeyConnection({
323
323
  wrapNangoError(error, `Failed to import API key connection to Nango`, 'importConnection');
324
324
  }
325
325
 
326
- // Step 3: Set metadata (Nango workaround)
327
326
  try {
328
327
  await setNangoConnectionMetadata({
329
328
  providerConfigKey: integration.unique_key,
@@ -356,7 +355,6 @@ export async function createProviderConnectSession({
356
355
  credentials?: ApiPublicIntegrationCredentials;
357
356
  }): Promise<string> {
358
357
  try {
359
- // Step 1: Check for existing integration
360
358
  let integration: ApiPublicIntegration;
361
359
  let existingIntegration: (ApiPublicIntegration & { areCredentialsSet: boolean }) | null = null;
362
360
 
@@ -370,7 +368,6 @@ export async function createProviderConnectSession({
370
368
  console.debug(`Integration '${providerName}' not found, will create new one`);
371
369
  }
372
370
 
373
- // Step 2: Use existing or create new integration
374
371
  if (existingIntegration?.areCredentialsSet) {
375
372
  integration = existingIntegration;
376
373
  } else {
@@ -390,7 +387,6 @@ export async function createProviderConnectSession({
390
387
  }
391
388
  }
392
389
 
393
- // Step 3: Create connect session
394
390
  try {
395
391
  const connectSession = await createNangoConnectSession({
396
392
  integrationId: integration.unique_key,
@@ -429,7 +425,6 @@ export async function getNangoConnectionMetadata({
429
425
  const metadata = await nango.getMetadata(providerConfigKey, connectionId);
430
426
  return metadata as Record<string, string>;
431
427
  } catch (error) {
432
- // Check if this is a 404 (connection not found) - return null for this case
433
428
  if (error && typeof error === 'object' && 'status' in error && error.status === 404) {
434
429
  return null;
435
430
  }
@@ -2,3 +2,5 @@ export const DEFAULT_INKEEP_AGENTS_MANAGE_API_URL = 'http://localhost:3002';
2
2
  export const DEFAULT_INKEEP_AGENTS_RUN_API_URL = 'http://localhost:3003';
3
3
  export const DEFAULT_SIGNOZ_URL = 'http://localhost:3080';
4
4
  export const DEFAULT_TENANT_ID = 'default';
5
+ export const DEFAULT_NANGO_SERVER_URL = 'http://localhost:3050';
6
+ export const DEFAULT_NANGO_CONNECT_BASE_URL = 'http://localhost:3051';
@@ -128,7 +128,6 @@ function processValidationError(
128
128
  field = error.path.join('.') || 'configuration';
129
129
  }
130
130
 
131
- // Create user-friendly message
132
131
  const message = createUserFriendlyMessage(error, field, type, nodeType);
133
132
 
134
133
  return {
@@ -176,7 +175,6 @@ function createUserFriendlyMessage(
176
175
  return `${entityType} ${fieldName} has an invalid value. Please select a valid option`;
177
176
 
178
177
  case 'invalid_union':
179
- // Check if this is an agent type discrimination error
180
178
  if (field.includes('type') || error.message.includes('discriminator')) {
181
179
  return `${entityType} type must be specified as either 'internal' or 'external'`;
182
180
  }
@@ -21,7 +21,6 @@ export async function findOrCreateCredential(
21
21
  // Credential not found, continue with creation
22
22
  }
23
23
 
24
- // Create new credential
25
24
  try {
26
25
  return await createCredential(tenantId, projectId, credentialData);
27
26
  } catch (error) {
@@ -18,7 +18,6 @@ export function getOAuthLoginUrl({
18
18
  projectId: string;
19
19
  id: string;
20
20
  }): string {
21
- // Validate input parameters
22
21
  if (!tenantId || typeof tenantId !== 'string') {
23
22
  throw new Error('Invalid tenantId: must be a non-empty string');
24
23
  }
@@ -31,7 +30,6 @@ export function getOAuthLoginUrl({
31
30
  throw new Error('Invalid projectId: must be a non-empty string');
32
31
  }
33
32
 
34
- // Validate format - only allow alphanumeric, hyphens, and underscores
35
33
  const validFormat = /^[a-zA-Z0-9-_]+$/;
36
34
 
37
35
  if (!validFormat.test(tenantId)) {
@@ -0,0 +1,18 @@
1
+ import { type NextRequest, NextResponse } from 'next/server';
2
+ import { DEFAULT_NEW_AGENT_PANE } from './hooks/use-side-pane';
3
+
4
+ export function middleware(request: NextRequest) {
5
+ const { pathname, searchParams } = request.nextUrl;
6
+
7
+ if (pathname.endsWith('/agents/new') && !searchParams.has('pane')) {
8
+ const url = request.nextUrl.clone();
9
+ url.searchParams.set('pane', DEFAULT_NEW_AGENT_PANE);
10
+ return NextResponse.redirect(url);
11
+ }
12
+
13
+ return NextResponse.next();
14
+ }
15
+
16
+ export const config = {
17
+ matcher: '/:tenantId/projects/:projectId/agents/new',
18
+ };
@@ -1 +0,0 @@
1
- exports.id=1343,exports.ids=[1343],exports.modules={5294:(a,b,c)=>{"use strict";c.d(b,{$Y:()=>g,GO:()=>i,K3:()=>h,h9:()=>k});var d=c(29991);c(58415);var e=c(8703),f=c(45796);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(33451).D)([g,h,i,j,k]),(0,d.A)(g,"783aa031aed26b156f9b70491fca106df176a213be",null),(0,d.A)(h,"70c72165ae54a769fee9ec23ddc80620fd12c8c2ac",null),(0,d.A)(i,"70f90eae8a2398b2c4247b3bc2d58e7a659458d14d",null),(0,d.A)(j,"785bab7dc3cfba64c4ccfbbdadad9c8f6d182b9f4c",null),(0,d.A)(k,"70eaba2a24bd7533922756a3c30dc57d3caa755c5c",null)},19329:(a,b,c)=>{"use strict";c.d(b,{U:()=>f});var d=c(29991);c(58415);var e=c(5294);async function f(a,b,c){try{let d=await (0,e.K3)(a,b,c.id);if(d)return d}catch{}try{return await (0,e.GO)(a,b,c)}catch(a){throw console.error("Failed to save credential to database:",a),Error(`Failed to save credential '${c.id}' to database`)}}(0,c(33451).D)([f]),(0,d.A)(f,"70f13f2f3b5a7ca018ac1d5e89e23f10d51bc732ae",null)},21395:(a,b,c)=>{"use strict";c.d(b,{RN:()=>t,Ak:()=>q,uP:()=>u,tN:()=>r,Mj:()=>p,tQ:()=>o,pv:()=>n,Mb:()=>m,H6:()=>v,EN:()=>l,P:()=>w});var d=c(29991);c(58415);var e=c(56129),f=c(55797),g=c(67417);class h extends Error{constructor(a,b,c){super(a),this.operation=b,this.cause=c,this.name="NangoError"}}function i(a,b,c){if(a instanceof h)throw a;throw new h(b,c,a)}var j=c(33451);let k=()=>{let a=process.env.NANGO_SECRET_KEY;if(!a)throw new h("NANGO_SECRET_KEY environment variable is required for Nango integration");try{return new f.CA({secretKey:a,host:process.env.NANGO_SERVER_URL||void 0})}catch(a){throw new h("Failed to initialize Nango client","new Nango",a)}};async function l(){let a=process.env.NANGO_SECRET_KEY;return!!(a&&""!==a.trim())}async function m(){try{let a=k();return(await a.listProviders({})).data}catch(a){console.error("Failed to fetch providers:",a),i(a,"Unable to retrieve available providers from Nango","listProviders")}}async function n(a){try{let b=k();return(await b.getProvider({provider:a})).data}catch(b){console.error(`Failed to fetch provider ${a}:`,b),i(b,`Provider '${a}' not found or inaccessible`,"getProvider")}}async function o(){try{let a=k();return(await a.listIntegrations()).configs}catch(a){console.error("Failed to fetch integrations:",a),i(a,"Unable to retrieve existing integrations","listIntegrations")}}async function p(a){try{let b=k(),c=(await b.getIntegration({uniqueKey:a},{include:["credentials"]})).data,d=!1;d=c.credentials?.type==="OAUTH2"||c.credentials?.type==="OAUTH1"||c.credentials?.type==="TBA"?!!(c.credentials?.client_id&&c.credentials?.client_secret):c.credentials?.type!=="APP"||!!(c.credentials?.app_id&&c.credentials?.app_link);let{credentials:e,...f}=c;return{...f,areCredentialsSet:d}}catch(b){if(b&&"object"==typeof b&&"status"in b&&404===b.status)return null;console.error(`Failed to fetch integration ${a}:`,b),i(b,`Unable to fetch integration with key '${a}'`,"getIntegration")}}async function q(a){try{let b=k();return(await b.createIntegration({provider:a.provider,unique_key:a.uniqueKey,display_name:a.displayName,credentials:a.credentials})).data}catch(b){console.error("Failed to create integration:",b),i(b,`Failed to create integration '${a.uniqueKey}' for provider '${a.provider}'`,"createIntegration")}}async function r(a){try{let a=k();return(await a.listConnections()).connections}catch(c){let b=a?` for integration '${a}'`:"";console.error(`Failed to fetch connections${b}:`,c),i(c,`Unable to retrieve connections${b}`,"listConnections")}}async function s({endUserId:a="test-tenant",endUserEmail:b="test@test-tenant.com",endUserDisplayName:c="Test User",organizationId:d=process.env.TENANT_ID||g.P3,organizationDisplayName:e="Test Organization",integrationId:f}){try{let g=k(),{data:h}=await g.createConnectSession({end_user:{id:a,email:b,display_name:c},organization:{id:d,display_name:e},allowed_integrations:[f]});return h}catch(a){console.error("Failed to create connect session:",a),i(a,`Unable to create connect session for integration '${f}'`,"createConnectSession")}}async function t({name:a,apiKeyToSet:b,metadata:c}){let d=(0,e.K_)(a);try{let e;try{e=await q({provider:"private-api-bearer",uniqueKey:d,displayName:a})}catch(a){if(a instanceof h&&a.cause&&"object"==typeof a.cause&&"status"in a.cause&&400===a.cause.status){let b=await p(d);b?e=b:i(a,"Integration creation failed for unexpected reasons","create")}else i(a,`Failed to create or retrieve integration '${d}'`,"create")}try{let a=`${process.env.NANGO_SERVER_URL||"https://api.nango.dev"}/connections`,f={provider_config_key:e.unique_key,connection_id:d,metadata:c,credentials:{type:"API_KEY",apiKey:b}},g=await fetch(a,{method:"POST",headers:{Authorization:`Bearer ${process.env.NANGO_SECRET_KEY}`,"Content-Type":"application/json"},body:JSON.stringify(f)});if(!g.ok)throw new h(`Failed to import connection: HTTP ${g.status} - ${g.statusText}`,"importConnection")}catch(a){i(a,"Failed to import API key connection to Nango","importConnection")}try{await w({providerConfigKey:e.unique_key,connectionId:d,metadata:c})}catch(a){console.warn(`Failed to set metadata for connection ${d}:`,a)}return{integration:e}}catch(b){console.error("Unexpected error creating API key credential:",b),i(b,`Unexpected error creating API key credential '${a}'`,"createNangoApiKeyConnection")}}async function u({providerName:a,credentials:b}){try{let c,d=null;try{d=await p(a)}catch(b){if(b instanceof h)throw b;console.debug(`Integration '${a}' not found, will create new one`)}if(d?.areCredentialsSet)c=d;else try{c=await q({provider:a,uniqueKey:a,displayName:a,credentials:b})}catch(b){i(b,`Failed to create integration for provider '${a}'`,"create")}try{return(await s({integrationId:c.unique_key})).token}catch(a){i(a,`Failed to create connect session for integration '${c.unique_key}'`,"createConnectSession")}}catch(b){console.error("Unexpected error creating provider connect session:",b),i(b,`Unexpected error creating connect session for provider '${a}'`,"createProviderConnectSession")}}async function v({providerConfigKey:a,connectionId:b}){try{let c=k();return await c.getMetadata(a,b)}catch(a){if(a&&"object"==typeof a&&"status"in a&&404===a.status)return null;console.error("Failed to get connection metadata:",a),i(a,`Unable to retrieve metadata for connection '${b}'`,"getMetadata")}}async function w({providerConfigKey:a,connectionId:b,metadata:c}){try{let d=k();await d.setMetadata(a,b,c)}catch(a){console.error("Failed to set connection metadata:",a),i(a,`Unable to update metadata for connection '${b}'`,"setMetadata")}}(0,j.D)([l,m,n,o,p,q,r,t,u,v,w]),(0,d.A)(l,"0039db484f8537248411eb8471b1c9f54afffc6fb9",null),(0,d.A)(m,"00b4b812ca1f551b1bc660b119346f8edd09adc331",null),(0,d.A)(n,"40752324736817fee7ef6cc26484259ae914678a7b",null),(0,d.A)(o,"00f5233991f62b136f9f27b0dc46e29d08b7bb95a0",null),(0,d.A)(p,"4099c5c810bc15034d0178aee15f57d3efc36fa092",null),(0,d.A)(q,"400238208ed4f263aa38385750f91a724da85a315b",null),(0,d.A)(r,"4083fbd336be20678cad1fc6cd0d4c6de406f34ca2",null),(0,d.A)(t,"405cf597234a0124547ec657f1121198bd4ed40c56",null),(0,d.A)(u,"4020828b8993258e5273fceb4d7696048fd60cd286",null),(0,d.A)(v,"40237f9ddff66933da9ac15e168644606f92dfa082",null),(0,d.A)(w,"40733f9c5563a2bcebb29b901fd45aaf231df9b034",null)},22427:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>f});var d=c(59111),e=c(43433);function f(){return(0,d.jsx)(e.A,{description:"Something went wrong."})}},23767:(a,b,c)=>{"use strict";c.r(b),c.d(b,{"40618f7f926fe5180b85f463736d4fa77dd81bf2bd":()=>d.vj,"601be75218fb05713996a73241c26760bfe3f442ec":()=>d.gA,"60b49f8c6150c223a0f730486dc69568d330e849d0":()=>d.Sw,"60bff370534813566b1706292316fd77dd6de3d61a":()=>d.xx,"705b0fe0995ad695d24cc8d87bb210911000ee0be5":()=>d.vr});var d=c(54637)},25600:(a,b,c)=>{Promise.resolve().then(c.bind(c,22427))},62048:(a,b,c)=>{Promise.resolve().then(c.bind(c,80969))},68523:(a,b,c)=>{"use strict";c.d(b,{U:()=>e});var d=c(90147);let e=(0,d.createServerReference)("70f13f2f3b5a7ca018ac1d5e89e23f10d51bc732ae",d.callServer,void 0,d.findSourceMapURL,"findOrCreateCredential")},80969:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(60241).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/agents/agents/agents-manage-ui/src/app/[tenantId]/projects/[projectId]/credentials/error.tsx\" from the server, but it's 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/app/[tenantId]/projects/[projectId]/credentials/error.tsx","default")}};