@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
@@ -98,6 +98,8 @@ function Flow({
98
98
  projectId: string;
99
99
  }>();
100
100
 
101
+ const { nodeId, edgeId, setQueryState, openAgentPane, isOpen } = useSidePane();
102
+
101
103
  const initialNodes = useMemo<Node[]>(
102
104
  () => [
103
105
  {
@@ -144,11 +146,21 @@ function Flow({
144
146
  : { nodes: initialNodes, edges: initialEdges };
145
147
  return {
146
148
  ...result,
147
- nodes: enrichNodes(result.nodes),
149
+ nodes: nodeId
150
+ ? enrichNodes(result.nodes).map((node) => ({
151
+ ...node,
152
+ selected: node.id === nodeId,
153
+ }))
154
+ : enrichNodes(result.nodes),
155
+ edges: edgeId
156
+ ? result.edges.map((edge) => ({
157
+ ...edge,
158
+ selected: edge.id === edgeId,
159
+ }))
160
+ : result.edges,
148
161
  };
149
- }, [agent, enrichNodes, initialNodes]);
162
+ }, [agent, enrichNodes, initialNodes, nodeId, edgeId]);
150
163
 
151
- // Create agent tool configuration lookup from agent data
152
164
  const agentToolConfigLookup = useMemo((): AgentToolConfigLookup => {
153
165
  if (!agent?.subAgents) return {} as AgentToolConfigLookup;
154
166
 
@@ -204,11 +216,11 @@ function Flow({
204
216
  markSaved,
205
217
  clearSelection,
206
218
  markUnsaved,
219
+ reset,
207
220
  } = useAgentActions();
208
221
 
209
222
  // Always use enriched nodes for ReactFlow
210
223
  const nodes = useMemo(() => enrichNodes(storeNodes), [storeNodes, enrichNodes]);
211
- const { nodeId, edgeId, setQueryState, openAgentPane, isOpen } = useSidePane();
212
224
  const { errors, showErrors, setErrors, clearErrors, setShowErrors } = useAgentErrors();
213
225
 
214
226
  /**
@@ -227,7 +239,6 @@ function Flow({
227
239
  // as `requestAnimationFrame` may run too early, causing `hasIntersections` to incorrectly return false.
228
240
  setTimeout(() => {
229
241
  const currentNodes = getNodes();
230
- // Check if any of the replaced nodes are intersecting with others
231
242
  for (const change of replaceChanges) {
232
243
  const node = currentNodes.find((n) => n.id === change.id);
233
244
  if (!node) {
@@ -257,37 +268,15 @@ function Flow({
257
268
  toolLookup,
258
269
  agentToolConfigLookup
259
270
  );
271
+
272
+ return () => {
273
+ // we need to reset the agent store when the component unmounts otherwise the agent store will persist the changes from the previous agent
274
+ reset();
275
+ };
260
276
  }, []);
261
277
 
262
278
  // biome-ignore lint/correctness/useExhaustiveDependencies: we only want to run this effect on first render
263
279
  useEffect(() => {
264
- if (!agent) {
265
- openAgentPane();
266
- return;
267
- }
268
-
269
- if (!nodeId && !edgeId) {
270
- openAgentPane();
271
- }
272
-
273
- if (nodeId) {
274
- setNodes((nodes) =>
275
- nodes.map((node) => ({
276
- ...node,
277
- selected: node.id === nodeId,
278
- }))
279
- );
280
- }
281
-
282
- if (edgeId) {
283
- setEdges((edges) =>
284
- edges.map((edge) => ({
285
- ...edge,
286
- selected: edge.id === edgeId,
287
- }))
288
- );
289
- }
290
-
291
280
  // If the nodeId or edgeId in URL doesn't exist in the agent, clear it
292
281
  if (nodeId && !agentNodes.some((node) => node.id === nodeId)) {
293
282
  setQueryState((prev) => ({
@@ -459,7 +448,6 @@ function Flow({
459
448
  ? edges[0]
460
449
  : null;
461
450
  const defaultPane = isOpen ? 'agent' : null;
462
-
463
451
  setQueryState(
464
452
  {
465
453
  pane: node ? 'node' : edge ? 'edge' : defaultPane,
@@ -517,7 +505,6 @@ function Flow({
517
505
  }))
518
506
  );
519
507
  setEdges((edges) => edges.map((edge) => ({ ...edge, selected: false })));
520
-
521
508
  // Open the sidepane for the selected node
522
509
  setQueryState({
523
510
  pane: 'node',
@@ -580,7 +567,6 @@ function Flow({
580
567
  agentToolConfigLookup
581
568
  );
582
569
 
583
- // Build a map from toolId to React Flow node ID for function tools
584
570
  const functionToolNodeMap = new Map<string, string>();
585
571
  nodes.forEach((node) => {
586
572
  if (node.type === NodeType.FunctionTool) {
@@ -590,10 +576,8 @@ function Flow({
590
576
  }
591
577
  });
592
578
 
593
- // Validate the serialized data before saving
594
579
  const validationErrors = validateSerializedData(serializedData, functionToolNodeMap);
595
580
  if (validationErrors.length > 0) {
596
- // Convert validation errors to the format expected by parseAgentValidationErrors
597
581
  const errorObjects = validationErrors.map((error) => ({
598
582
  message: error.message,
599
583
  field: error.field,
@@ -625,10 +609,8 @@ function Flow({
625
609
 
626
610
  // Update MCP nodes with new relationshipIds from backend response
627
611
  if (res.data) {
628
- // Create a map to track which relationships were processed
629
612
  const processedRelationships = new Set<string>();
630
613
 
631
- // Update nodes with the new relationshipIds
632
614
  setNodes((currentNodes) =>
633
615
  currentNodes.map((node) => {
634
616
  if (node.type === NodeType.MCP) {
@@ -4,14 +4,13 @@ import {
4
4
  OPENAI_MODELS,
5
5
  } from '@inkeep/agents-core/constants/models';
6
6
 
7
- export const DEFAULT_ANTHROPIC_BASE_MODEL = ANTHROPIC_MODELS.CLAUDE_SONNET_4_5_20250929;
8
- export const DEFAULT_ANTHROPIC_STRUCTURED_OUTPUT_MODEL =
9
- ANTHROPIC_MODELS.CLAUDE_SONNET_4_5_20250929;
10
- export const DEFAULT_ANTHROPIC_SUMMARIZER_MODEL = ANTHROPIC_MODELS.CLAUDE_SONNET_4_5_20250929;
7
+ export const DEFAULT_ANTHROPIC_BASE_MODEL = ANTHROPIC_MODELS.CLAUDE_SONNET_4_5;
8
+ export const DEFAULT_ANTHROPIC_STRUCTURED_OUTPUT_MODEL = ANTHROPIC_MODELS.CLAUDE_SONNET_4_5;
9
+ export const DEFAULT_ANTHROPIC_SUMMARIZER_MODEL = ANTHROPIC_MODELS.CLAUDE_SONNET_4_5;
11
10
 
12
- export const DEFAULT_OPENAI_BASE_MODEL = OPENAI_MODELS.GPT_4_1_20250414;
13
- export const DEFAULT_OPENAI_STRUCTURED_OUTPUT_MODEL = OPENAI_MODELS.GPT_4_1_MINI_20250414;
14
- export const DEFAULT_OPENAI_SUMMARIZER_MODEL = OPENAI_MODELS.GPT_4_1_NANO_20250414;
11
+ export const DEFAULT_OPENAI_BASE_MODEL = OPENAI_MODELS.GPT_4_1;
12
+ export const DEFAULT_OPENAI_STRUCTURED_OUTPUT_MODEL = OPENAI_MODELS.GPT_4_1;
13
+ export const DEFAULT_OPENAI_SUMMARIZER_MODEL = OPENAI_MODELS.GPT_4_1_NANO;
15
14
 
16
15
  export const DEFAULT_GOOGLE_BASE_MODEL = GOOGLE_MODELS.GEMINI_2_5_FLASH;
17
16
  export const DEFAULT_GOOGLE_STRUCTURED_OUTPUT_MODEL = GOOGLE_MODELS.GEMINI_2_5_FLASH_LITE;
@@ -31,9 +30,13 @@ export const modelOptions = {
31
30
  value: ANTHROPIC_MODELS.CLAUDE_SONNET_4,
32
31
  label: 'Claude Sonnet 4',
33
32
  },
33
+ {
34
+ value: ANTHROPIC_MODELS.CLAUDE_HAIKU_4_5,
35
+ label: 'Claude Haiku 4.5',
36
+ },
34
37
  {
35
38
  value: ANTHROPIC_MODELS.CLAUDE_3_5_HAIKU,
36
- label: 'Claude 3.5 Haiku',
39
+ label: 'Claude Haiku 3.5',
37
40
  },
38
41
  ],
39
42
  openai: [
@@ -44,7 +44,6 @@ export function SelfLoopEdge({ source, data, selected }: SelfLoopEdgeProps) {
44
44
  const endX = centerX + nodeWidth / 2;
45
45
  const endY = centerY + 10;
46
46
 
47
- // Create a smooth self-loop path
48
47
  const transferPath = `
49
48
  M ${startX} ${startY}
50
49
  C ${startX + loopRadius * 2} ${startY - loopRadius},
@@ -9,7 +9,6 @@ import { Handle } from './handle';
9
9
  export function FunctionToolNode(props: NodeProps & { data: FunctionToolNodeData }) {
10
10
  const { data, selected, id } = props;
11
11
 
12
- // Get data directly from node (like agents do)
13
12
  const name = String(data.name || 'Function Tool');
14
13
  const description = String(data.description || '');
15
14
 
@@ -49,7 +49,6 @@ export function MCPNode(props: NodeProps & { data: MCPNodeData }) {
49
49
  const selectedCount = selectedTools.length;
50
50
  const totalCount = activeTools?.length ?? 0;
51
51
 
52
- // If no tools selected, show 0
53
52
  if (selectedCount === 0) {
54
53
  return ['0'];
55
54
  }
@@ -272,7 +272,6 @@ export function ChatWidget({
272
272
  const _IkpMessage: ComponentsConfig<Record<string, unknown>>['IkpMessage'] = (props) => {
273
273
  const { message, renderMarkdown, renderComponent } = props;
274
274
 
275
- // Check if we're still streaming - the last event should be a completion data-operation
276
275
  const lastPart = message.parts[message.parts.length - 1];
277
276
  const isStreaming = !(
278
277
  lastPart?.type === 'data-operation' && lastPart?.data?.type === 'completion'
@@ -114,7 +114,6 @@ const InlineEvent: FC<{ operation: any; isLast: boolean }> = ({ operation, isLas
114
114
  );
115
115
  };
116
116
 
117
- // Helper function for data-operation labels
118
117
  const getOperationLabel = (operation: any) => {
119
118
  // Use LLM-generated label if available for data-operations
120
119
  if (operation.label) {
@@ -211,7 +210,6 @@ function StreamMarkdown({ parts }: { parts: any[] }) {
211
210
  components={{
212
211
  // Intercept superscript elements to render citations
213
212
  sup: ({ children, ...props }) => {
214
- // Check if this is a citation (format: ^artifact identifier^)
215
213
  if (children && typeof children === 'string') {
216
214
  // Find the citation part
217
215
  const citation = parts.find(
@@ -337,7 +335,6 @@ export const IkpMessage: FC<IkpMessageProps> = ({
337
335
  );
338
336
  }
339
337
 
340
- // Check if we're still streaming text content or if there are incomplete operations
341
338
  const hasActiveOperations =
342
339
  isStreaming || message.parts.some((part) => part.type === 'text' && part.state === 'streaming');
343
340
  const isLoading = isStreaming || hasActiveOperations;
@@ -81,7 +81,6 @@ function EdgeEditor({ selectedEdge }: EdgeEditorProps) {
81
81
  const targetNode = useNodesData(selectedEdge.target);
82
82
  const { markUnsaved } = useAgentActions();
83
83
 
84
- // Check if this is a self-loop (source and target are the same)
85
84
  const isSelfLoop = selectedEdge.source === selectedEdge.target;
86
85
 
87
86
  const handleCheckboxChange = (id: string, checked: boolean) => {
@@ -110,7 +109,6 @@ function EdgeEditor({ selectedEdge }: EdgeEditorProps) {
110
109
  };
111
110
  }
112
111
 
113
- // Check if all relationships are now unchecked
114
112
  const hasAnyRelationship =
115
113
  newRelationships.transferSourceToTarget ||
116
114
  newRelationships.transferTargetToSource ||
@@ -124,7 +122,6 @@ function EdgeEditor({ selectedEdge }: EdgeEditorProps) {
124
122
  // Remove the edge if no relationships remain
125
123
  setEdges((edges) => edges.filter((edge) => edge.id !== selectedEdge.id));
126
124
  } else {
127
- // Update the edge data with the new relationships
128
125
  updateEdgeData(selectedEdge.id, {
129
126
  relationships: newRelationships,
130
127
  });
@@ -0,0 +1,40 @@
1
+ import { Skeleton } from '@/components/ui/skeleton';
2
+
3
+ export function EditorLoadingSkeleton() {
4
+ return (
5
+ <div className="space-y-8 flex flex-col">
6
+ <div className="space-y-8">
7
+ <div className="space-y-2">
8
+ <Skeleton className="h-3.5 w-16" />
9
+ <Skeleton className="h-9 w-full rounded-md" />
10
+ </div>
11
+ <div className="space-y-2">
12
+ <Skeleton className="h-3.5 w-16" />
13
+ <Skeleton className="h-9 w-full rounded-md" />
14
+ </div>
15
+ <div className="space-y-2">
16
+ <Skeleton className="h-3.5 w-20" />
17
+ <Skeleton className="h-20 w-full rounded-md" />
18
+ </div>
19
+ <div className="space-y-2">
20
+ <Skeleton className="h-3.5 w-20" />
21
+ <Skeleton className="h-9 w-full rounded-md" />
22
+ </div>
23
+ </div>
24
+
25
+ <div className="h-px bg-border" />
26
+
27
+ <div className="space-y-8">
28
+ <Skeleton className="h-6 w-32" />
29
+ <div className="space-y-2">
30
+ <Skeleton className="h-4 w-16" />
31
+ <Skeleton className="h-9 w-full rounded-md" />
32
+ </div>
33
+ <div className="space-y-2">
34
+ <Skeleton className="h-4 w-28" />
35
+ <Skeleton className="h-9 w-full rounded-md" />
36
+ </div>
37
+ </div>
38
+ </div>
39
+ );
40
+ }
@@ -15,7 +15,6 @@ export function FunctionToolNodeEditor({ selectedNode }: FunctionToolNodeEditorP
15
15
  selectedNodeId: selectedNode.id,
16
16
  });
17
17
 
18
- // Get data directly from node (like agents do)
19
18
  const nodeData = selectedNode.data;
20
19
 
21
20
  // Local state for form fields - initialize from node data
@@ -98,7 +98,6 @@ export function MCPServerNodeEditor({
98
98
  newSelections = [...currentSelections, toolName];
99
99
  }
100
100
 
101
- // Check if all tools are now selected - if so, use null to represent "all selected"
102
101
  const allToolNames = activeTools?.map((tool) => tool.name) || [];
103
102
  let finalSelection: string[] | null = newSelections;
104
103
 
@@ -65,7 +65,6 @@ export function SubAgentNodeEditor({
65
65
  const selectedDataComponents = selectedNode.data?.dataComponents || [];
66
66
  const selectedArtifactComponents = selectedNode.data?.artifactComponents || [];
67
67
 
68
- // Get project and agent data for inheritance indicators
69
68
  const { project } = useProjectData();
70
69
  const metadata = useAgentStore((state) => state.metadata);
71
70
 
@@ -74,7 +73,6 @@ export function SubAgentNodeEditor({
74
73
  errorHelpers,
75
74
  });
76
75
 
77
- // Create a wrapper function that provides the current node data for nested updates
78
76
  const updateModelPath = useCallback(
79
77
  (path: string, value: any) => {
80
78
  updateNestedPath(path, value, selectedNode.data);
@@ -18,6 +18,7 @@ import {
18
18
  nodeTypeMap,
19
19
  } from '../configuration/node-types';
20
20
  import EdgeEditor from './edges/edge-editor';
21
+ import { EditorLoadingSkeleton } from './editor-loading-skeleton';
21
22
  import { Heading } from './heading';
22
23
  import MetadataEditor from './metadata/metadata-editor';
23
24
  import { ExternalAgentNodeEditor } from './nodes/external-agent-node-editor';
@@ -62,12 +63,12 @@ export function SidePane({
62
63
  let heading = '';
63
64
  let HeadingIcon: LucideIcon | undefined;
64
65
 
65
- if (selectedNode) {
66
- const nodeType = selectedNode?.type as keyof typeof nodeTypeMap;
66
+ if (selectedNodeId) {
67
+ const nodeType = (selectedNode?.type as keyof typeof nodeTypeMap) || NodeType.SubAgent;
67
68
  const nodeConfig = nodeTypeMap[nodeType];
68
69
  heading = nodeConfig?.name || 'Node';
69
70
  HeadingIcon = nodeConfig?.Icon;
70
- } else if (selectedEdge) {
71
+ } else if (selectedEdgeId) {
71
72
  const edgeType = (selectedEdge?.type as keyof typeof edgeTypeMap) || 'default';
72
73
  const edgeConfig = edgeTypeMap[edgeType];
73
74
  heading = edgeConfig?.name || 'Connection';
@@ -78,9 +79,16 @@ export function SidePane({
78
79
  }
79
80
 
80
81
  return { heading, HeadingIcon };
81
- }, [selectedNode, selectedEdge]);
82
+ }, [selectedNode, selectedEdge, selectedNodeId, selectedEdgeId]);
82
83
 
83
84
  const editorContent = useMemo(() => {
85
+ if (selectedNodeId && !selectedNode) {
86
+ return <EditorLoadingSkeleton />;
87
+ }
88
+ if (selectedEdgeId && !selectedEdge) {
89
+ return <EditorLoadingSkeleton />;
90
+ }
91
+
84
92
  if (selectedNode) {
85
93
  const nodeType = selectedNode?.type as keyof typeof nodeTypeMap;
86
94
  // Use the agent ID from node data if available, otherwise fall back to React Flow node ID
@@ -135,6 +143,8 @@ export function SidePane({
135
143
  }
136
144
  return <MetadataEditor />;
137
145
  }, [
146
+ selectedNodeId,
147
+ selectedEdgeId,
138
148
  selectedNode,
139
149
  selectedEdge,
140
150
  dataComponentLookup,
@@ -6,7 +6,6 @@ const jsonSchemaValidation = () =>
6
6
  z
7
7
  .union([z.string(), z.null(), z.undefined()])
8
8
  .transform((value, ctx) => {
9
- // If no value provided, empty string, or null, return undefined
10
9
  if (!value || value === '' || value === null) {
11
10
  return undefined;
12
11
  }
@@ -14,7 +13,6 @@ const jsonSchemaValidation = () =>
14
13
  try {
15
14
  const parsed = JSON.parse(value);
16
15
 
17
- // Validate it's a proper LLM-compatible JSON schema
18
16
  const validationResult = validateJsonSchemaForLlm(value);
19
17
  if (!validationResult.isValid) {
20
18
  const errorMessage = validationResult.errors[0]?.message || 'Invalid JSON schema';
@@ -65,7 +65,6 @@ export function EditCredentialForm({
65
65
 
66
66
  const handleUpdateCredential = async (formData: EditCredentialFormData) => {
67
67
  try {
68
- // Update credential metadata in our database
69
68
  await updateCredential(tenantId, projectId, credential.id, {
70
69
  retrievalParams: {
71
70
  ...credential.retrievalParams,
@@ -73,7 +72,6 @@ export function EditCredentialForm({
73
72
  },
74
73
  });
75
74
 
76
- // Update connection metadata in Nango if we have connection info
77
75
  if (
78
76
  credential.retrievalParams?.providerConfigKey &&
79
77
  credential.retrievalParams?.connectionId &&
@@ -67,7 +67,6 @@ export function GenericAuthForm({
67
67
  // Move hooks before any early returns
68
68
  const allFields = formConfig?.sections.flatMap((section) => section.fields) || [];
69
69
 
70
- // Create a minimal schema if no config is available
71
70
  const FormSchema = formConfig
72
71
  ? createFormSchema(formConfig)
73
72
  : z.object({ _placeholder: z.string().optional() });
@@ -13,7 +13,6 @@ export const dataComponentSchema = z.object({
13
13
  try {
14
14
  const parsed = JSON.parse(str);
15
15
 
16
- // Validate it's a proper LLM-compatible JSON schema
17
16
  const validationResult = validateJsonSchemaForLlm(str);
18
17
  if (!validationResult.isValid) {
19
18
  const errorMessage = validationResult.errors[0]?.message || 'Invalid JSON schema';
@@ -76,7 +76,6 @@ function isJMESPathExpressions(key: string): boolean {
76
76
  return key.includes('[?') || key.includes('[*]');
77
77
  }
78
78
 
79
- // Create linter for template variable validation
80
79
  function createTemplateVariableLinter(suggestions: string[]) {
81
80
  return linter((view) => {
82
81
  const diagnostics: Diagnostic[] = [];
@@ -92,7 +91,6 @@ function createTemplateVariableLinter(suggestions: string[]) {
92
91
  const to = line.from + match.index + match[0].length;
93
92
  const variableName = match[1];
94
93
 
95
- // Check if variable is valid (in suggestions) or reserved
96
94
  const isValid =
97
95
  validVariables.has(variableName) ||
98
96
  RESERVED_KEYS.has(variableName) ||
@@ -116,14 +114,12 @@ function createTemplateVariableLinter(suggestions: string[]) {
116
114
  });
117
115
  }
118
116
 
119
- // Create autocomplete source for context variables
120
117
  function createContextAutocompleteSource(suggestions: string[]): CompletionSource {
121
118
  return (context) => {
122
119
  const { state, pos } = context;
123
120
  const line = state.doc.lineAt(pos);
124
121
  const to = pos - line.from;
125
122
  const textBefore = line.text.slice(0, to);
126
- // Check if we're after a { character
127
123
  const match = textBefore.match(/\{([^}]*)$/);
128
124
  if (!match) return null;
129
125
 
@@ -24,7 +24,6 @@ export function MCPToolImage({
24
24
  const [imageError, setImageError] = useState(false);
25
25
  const [imageLoading, setImageLoading] = useState(true);
26
26
 
27
- // If no imageUrl or image failed to load, show fallback
28
27
  if (!imageUrl || imageError) {
29
28
  if (provider) {
30
29
  return <ProviderIcon provider={provider} size={size} className={className} />;
@@ -26,7 +26,6 @@ interface ProjectFormProps {
26
26
 
27
27
  const serializeData = (data: ProjectFormData) => {
28
28
  const cleanProviderOptions = (options: any) => {
29
- // Convert null, empty object, or falsy values to undefined
30
29
  if (!options || (typeof options === 'object' && Object.keys(options).length === 0)) {
31
30
  return undefined;
32
31
  }
@@ -48,7 +47,6 @@ const serializeData = (data: ProjectFormData) => {
48
47
  cleaned.stepCountIs = stopWhen.stepCountIs;
49
48
  }
50
49
 
51
- // If no valid properties, return empty object (undefined will not update the field)
52
50
  if (Object.keys(cleaned).length === 0) {
53
51
  return {};
54
52
  }
@@ -186,8 +184,6 @@ export function ProjectForm({
186
184
 
187
185
  <ProjectStopWhenSection control={form.control} />
188
186
 
189
- <Separator />
190
-
191
187
  <div className={`flex gap-3 ${onCancel ? 'justify-end' : 'justify-start'}`}>
192
188
  {onCancel && (
193
189
  <Button type="button" variant="outline" onClick={onCancel} disabled={isSubmitting}>
@@ -75,7 +75,6 @@ function StructuredOutputModelSection({ control }: { control: Control<ProjectFor
75
75
  name: 'models.structuredOutput.providerOptions',
76
76
  });
77
77
 
78
- // Get the base model to show as inherited value
79
78
  const baseModel = useWatch({ control, name: 'models.base.model' });
80
79
 
81
80
  return (
@@ -130,7 +129,6 @@ function SummarizerModelSection({ control }: { control: Control<ProjectFormData>
130
129
  name: 'models.summarizer.providerOptions',
131
130
  });
132
131
 
133
- // Get the base model to show as inherited value
134
132
  const baseModel = useWatch({ control, name: 'models.base.model' });
135
133
 
136
134
  return (
@@ -16,7 +16,6 @@ interface ProjectStopWhenSectionProps {
16
16
  }
17
17
 
18
18
  export function ProjectStopWhenSection({ control }: ProjectStopWhenSectionProps) {
19
- // Check if any stopWhen values are configured to determine default open state
20
19
  const stopWhen = useWatch({ control, name: 'stopWhen' });
21
20
  const hasConfiguredStopWhen = !!(stopWhen?.transferCountIs || stopWhen?.stepCountIs);
22
21
  const [isOpen, setIsOpen] = useState(hasConfiguredStopWhen);
@@ -40,7 +40,6 @@ export function ConversationListItem({ conversation, projectId }: ConversationLi
40
40
  (() => {
41
41
  try {
42
42
  const date = new Date(startTime);
43
- // Check if the date is valid
44
43
  if (Number.isNaN(date.getTime())) return null;
45
44
 
46
45
  const isoString = date.toISOString();
@@ -85,7 +85,6 @@ export const JsonEditorWithCopy: FC<{ value: string; uri: `${string}.json`; titl
85
85
  if (model.isDisposed()) {
86
86
  return;
87
87
  }
88
- // Update height based on content
89
88
  const contentHeight = editorInstance.getContentHeight();
90
89
  if (container) {
91
90
  container.style.height = `${contentHeight}px`;
@@ -134,9 +133,7 @@ export const JsonEditorWithCopy: FC<{ value: string; uri: `${string}.json`; titl
134
133
 
135
134
  const handleDownloadCode = useCallback(() => {
136
135
  const code = editorRef.current?.getValue() || '';
137
- // Create a blob with the JSON content
138
136
  const blob = new Blob([code], { type: 'application/json' });
139
- // Create a download link
140
137
  const url = URL.createObjectURL(blob);
141
138
  const link = document.createElement('a');
142
139
  link.href = url;
@@ -77,7 +77,6 @@ function sortAttributes(attributes: AttributeMap): AttributeMap {
77
77
  }
78
78
  });
79
79
 
80
- // Get remaining attributes sorted alphabetically
81
80
  const remainingKeys = Object.keys(attributes)
82
81
  .filter((key) => !PINNED_ATTRIBUTE_KEYS.includes(key as any))
83
82
  .sort();
@@ -270,7 +270,6 @@ export function TimelineWrapper({
270
270
  });
271
271
  return updated;
272
272
  });
273
- // Update global state
274
273
  const allProcessed = idsToProcess.every((id) => processedIdsRef.current.has(id));
275
274
  if (enableAutoScroll) {
276
275
  setAiMessagesGloballyCollapsed(allProcessed && aiMessageIds.length > 0);
@@ -303,7 +302,6 @@ export function TimelineWrapper({
303
302
  }
304
303
  setCollapsedAiMessages(newCollapsed);
305
304
 
306
- // Update global state based on current state
307
305
  const aiMessageIds = sortedActivities
308
306
  .filter(
309
307
  (activity) =>
@@ -110,7 +110,6 @@ export function TracesOverview({ refreshKey }: TracesOverviewProps) {
110
110
  return () => clearTimeout(timer);
111
111
  }, [searchQuery]);
112
112
 
113
- // Build span filters
114
113
  const spanFilters = useMemo<SpanFilterOptions | undefined>(() => {
115
114
  if (!spanName && attributes.length === 0) {
116
115
  return undefined;
@@ -122,7 +121,6 @@ export function TracesOverview({ refreshKey }: TracesOverviewProps) {
122
121
  return filters;
123
122
  }, [spanName, attributes]);
124
123
 
125
- // Get aggregate stats efficiently (server-side aggregation)
126
124
  const {
127
125
  aggregateStats,
128
126
  loading: aggregateLoading,
@@ -136,7 +134,6 @@ export function TracesOverview({ refreshKey }: TracesOverviewProps) {
136
134
  agentId: selectedAgent,
137
135
  });
138
136
 
139
- // Get paginated conversations for the list display
140
137
  const { stats, loading, error, refresh, pagination } = useConversationStats({
141
138
  startTime,
142
139
  endTime,
@@ -64,5 +64,4 @@ export interface CardItem {
64
64
  [key: string]: any;
65
65
  }
66
66
 
67
- // Helper function for items that have an id property
68
67
  export const getItemId = <T extends CardItem>(item: T): string | number => item.id;
@@ -286,7 +286,6 @@ function ChartLegendContent({
286
286
  );
287
287
  }
288
288
 
289
- // Helper to extract item config from a payload.
290
289
  function getPayloadConfigFromPayload(config: ChartConfig, payload: unknown, key: string) {
291
290
  if (typeof payload !== 'object' || payload === null) {
292
291
  return undefined;
@@ -102,7 +102,6 @@ export function InheritanceIndicator({
102
102
  );
103
103
  }
104
104
 
105
- // Helper function to determine inheritance status for models
106
105
  export function getModelInheritanceStatus(
107
106
  currentLevel: 'project' | 'agent' | 'subagent',
108
107
  currentValue: any,
@@ -195,7 +194,6 @@ export function getModelInheritanceStatus(
195
194
  };
196
195
  }
197
196
 
198
- // Helper function for execution limits inheritance
199
197
  export function getExecutionLimitInheritanceStatus(
200
198
  currentLevel: 'project' | 'agent' | 'agent',
201
199
  limitType: 'transferCountIs' | 'stepCountIs',
@@ -209,7 +207,6 @@ export function getExecutionLimitInheritanceStatus(
209
207
  const hasCurrentValue = currentValue !== undefined && currentValue !== null;
210
208
  const hasParentValue = parentValue !== undefined && parentValue !== null;
211
209
 
212
- // Check if current value matches parent value (indicating inheritance after builder resolution)
213
210
  if (hasCurrentValue && hasParentValue && currentValue === parentValue) {
214
211
  // Inheritance rules for execution limits
215
212
  if (limitType === 'transferCountIs' && currentLevel === 'agent') {
@@ -113,5 +113,4 @@ export interface CardItem {
113
113
  [key: string]: any;
114
114
  }
115
115
 
116
- // Helper function for items that have an id property
117
116
  export const getItemId = <T extends CardItem>(item: T): string | number => item.id;