@inkeep/agents-manage-ui 0.31.3 → 0.31.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (289) 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 +306 -296
  3. package/.next/standalone/agents-manage-ui/.next/app-path-routes-manifest.json +12 -12
  4. package/.next/standalone/agents-manage-ui/.next/build-manifest.json +5 -5
  5. package/.next/standalone/agents-manage-ui/.next/prerender-manifest.json +13 -13
  6. package/.next/standalone/agents-manage-ui/.next/react-loadable-manifest.json +3 -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.js.nft.json +1 -1
  19. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/api-keys/page_client-reference-manifest.js +1 -1
  20. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page.js +2 -2
  21. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page.js.nft.json +1 -1
  22. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page_client-reference-manifest.js +1 -1
  23. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/new/page.js +2 -2
  24. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/new/page.js.nft.json +1 -1
  25. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/new/page_client-reference-manifest.js +1 -1
  26. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/page.js +2 -2
  27. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/page_client-reference-manifest.js +1 -1
  28. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/page.js +2 -2
  29. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/page.js.nft.json +1 -1
  30. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/page_client-reference-manifest.js +1 -1
  31. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/new/page.js +2 -2
  32. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/new/page.js.nft.json +1 -1
  33. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/new/page_client-reference-manifest.js +1 -1
  34. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/page.js +1 -1
  35. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/page_client-reference-manifest.js +1 -1
  36. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page.js +2 -2
  37. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page.js.nft.json +1 -1
  38. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page_client-reference-manifest.js +1 -1
  39. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page.js +2 -2
  40. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page.js.nft.json +1 -1
  41. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page_client-reference-manifest.js +1 -1
  42. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/page.js +2 -2
  43. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/page_client-reference-manifest.js +1 -1
  44. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page.js +2 -2
  45. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page.js.nft.json +1 -1
  46. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page_client-reference-manifest.js +1 -1
  47. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/page.js +2 -2
  48. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/page_client-reference-manifest.js +1 -1
  49. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/page.js +2 -2
  50. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/page_client-reference-manifest.js +1 -1
  51. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/edit/page.js +2 -2
  52. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/edit/page_client-reference-manifest.js +1 -1
  53. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/page.js +2 -2
  54. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/page.js.nft.json +1 -1
  55. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/page_client-reference-manifest.js +1 -1
  56. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/new/page.js +1 -1
  57. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/new/page_client-reference-manifest.js +1 -1
  58. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/page.js +2 -2
  59. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/page_client-reference-manifest.js +1 -1
  60. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page.js +2 -2
  61. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page.js.nft.json +1 -1
  62. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page_client-reference-manifest.js +1 -1
  63. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page.js +2 -2
  64. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page.js.nft.json +1 -1
  65. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page_client-reference-manifest.js +1 -1
  66. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/new/page.js +2 -2
  67. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/new/page.js.nft.json +1 -1
  68. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/new/page_client-reference-manifest.js +1 -1
  69. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/page.js +2 -2
  70. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/page_client-reference-manifest.js +1 -1
  71. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/page.js +2 -2
  72. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/page_client-reference-manifest.js +1 -1
  73. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/settings/page.js +2 -2
  74. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/settings/page_client-reference-manifest.js +1 -1
  75. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page.js +2 -2
  76. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page.js.nft.json +1 -1
  77. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page_client-reference-manifest.js +1 -1
  78. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page.js +2 -2
  79. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page.js.nft.json +1 -1
  80. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page_client-reference-manifest.js +1 -1
  81. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/page.js +3 -3
  82. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/page.js.nft.json +1 -1
  83. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/page_client-reference-manifest.js +1 -1
  84. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/page.js +1 -1
  85. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/page_client-reference-manifest.js +1 -1
  86. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found/page.js +1 -1
  87. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  88. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found.html +1 -1
  89. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found.rsc +9 -9
  90. package/.next/standalone/agents-manage-ui/.next/server/app/api/data-components/[dataComponentId]/generate-render/route.js +3 -3
  91. package/.next/standalone/agents-manage-ui/.next/server/app/api/data-components/[dataComponentId]/generate-render/route_client-reference-manifest.js +1 -1
  92. package/.next/standalone/agents-manage-ui/.next/server/app/api/signoz/conversations/[conversationId]/route_client-reference-manifest.js +1 -1
  93. package/.next/standalone/agents-manage-ui/.next/server/app/api/signoz/route_client-reference-manifest.js +1 -1
  94. package/.next/standalone/agents-manage-ui/.next/server/app/page.js +2 -2
  95. package/.next/standalone/agents-manage-ui/.next/server/app/page_client-reference-manifest.js +1 -1
  96. package/.next/standalone/agents-manage-ui/.next/server/app-paths-manifest.json +12 -12
  97. package/.next/standalone/agents-manage-ui/.next/server/chunks/2049.js +1 -0
  98. package/.next/standalone/agents-manage-ui/.next/server/chunks/2099.js +74 -0
  99. package/.next/standalone/agents-manage-ui/.next/server/chunks/2323.js +2 -2
  100. package/.next/standalone/agents-manage-ui/.next/server/chunks/2793.js +1 -0
  101. package/.next/standalone/agents-manage-ui/.next/server/chunks/305.js +1 -1
  102. package/.next/standalone/agents-manage-ui/.next/server/chunks/3200.js +1 -1
  103. package/.next/standalone/agents-manage-ui/.next/server/chunks/341.js +363 -5
  104. package/.next/standalone/agents-manage-ui/.next/server/chunks/3690.js +7 -0
  105. package/.next/standalone/agents-manage-ui/.next/server/chunks/4021.js +1 -1
  106. package/.next/standalone/agents-manage-ui/.next/server/chunks/4057.js +123 -0
  107. package/.next/standalone/agents-manage-ui/.next/server/chunks/4356.js +1 -0
  108. package/.next/standalone/agents-manage-ui/.next/server/chunks/4796.js +1 -0
  109. package/.next/standalone/agents-manage-ui/.next/server/chunks/{1047.js → 5196.js} +1 -1
  110. package/.next/standalone/agents-manage-ui/.next/server/chunks/5245.js +3 -3
  111. package/.next/standalone/agents-manage-ui/.next/server/chunks/5316.js +3 -3
  112. package/.next/standalone/agents-manage-ui/.next/server/chunks/{8746.js → 7111.js} +2 -2
  113. package/.next/standalone/agents-manage-ui/.next/server/chunks/7172.js +6 -6
  114. package/.next/standalone/agents-manage-ui/.next/server/chunks/7189.js +1 -0
  115. package/.next/standalone/agents-manage-ui/.next/server/chunks/7497.js +1 -0
  116. package/.next/standalone/agents-manage-ui/.next/server/chunks/8359.js +1 -1
  117. package/.next/standalone/agents-manage-ui/.next/server/chunks/8528.js +4199 -0
  118. package/.next/standalone/agents-manage-ui/.next/server/chunks/8704.js +1 -1
  119. package/.next/standalone/agents-manage-ui/.next/server/chunks/9542.js +1 -1
  120. package/.next/standalone/agents-manage-ui/.next/server/chunks/9920.js +1 -1
  121. package/.next/standalone/agents-manage-ui/.next/server/middleware-build-manifest.js +1 -1
  122. package/.next/standalone/agents-manage-ui/.next/server/middleware-manifest.json +5 -5
  123. package/.next/standalone/agents-manage-ui/.next/server/middleware-react-loadable-manifest.js +1 -1
  124. package/.next/standalone/agents-manage-ui/.next/server/pages/404.html +1 -1
  125. package/.next/standalone/agents-manage-ui/.next/server/pages/500.html +1 -1
  126. package/.next/standalone/agents-manage-ui/.next/server/server-reference-manifest.js +1 -1
  127. package/.next/standalone/agents-manage-ui/.next/server/server-reference-manifest.json +1 -1
  128. package/.next/standalone/agents-manage-ui/.next/static/chunks/10385-946772d92562cc46.js +1 -0
  129. package/.next/standalone/agents-manage-ui/.next/static/chunks/19268-4c91d996ccccbc45.js +1 -0
  130. package/.next/standalone/agents-manage-ui/.next/static/chunks/29129.2b3aec21f9892b9e.js +1 -0
  131. package/.next/standalone/agents-manage-ui/.next/static/chunks/31321-6bee6bed0133919f.js +197 -0
  132. package/.next/standalone/agents-manage-ui/.next/static/chunks/32208-f38882ee4a65aead.js +1 -0
  133. package/.next/standalone/agents-manage-ui/.next/static/chunks/{32848-e368b492419ae6e4.js → 32848-5655a92b337e6346.js} +1 -1
  134. package/.next/standalone/agents-manage-ui/.next/static/chunks/37226-af0e272517d004df.js +1 -0
  135. package/.next/standalone/agents-manage-ui/.next/static/chunks/42658-cba95733d43d6b98.js +1 -0
  136. package/.next/standalone/agents-manage-ui/.next/static/chunks/{42966-c45601890893f4fe.js → 43883-4a0edc82a64d282e.js} +1 -1
  137. package/.next/standalone/agents-manage-ui/.next/static/chunks/4601-be81d9f529ebb629.js +4 -0
  138. package/.next/standalone/agents-manage-ui/.next/static/chunks/4653-1381428fd8730f4b.js +1 -0
  139. package/.next/standalone/agents-manage-ui/.next/static/chunks/59759-e6f640c461b88e97.js +1 -0
  140. package/.next/standalone/agents-manage-ui/.next/static/chunks/65665-00887d4d2c362ca2.js +123 -0
  141. package/.next/standalone/agents-manage-ui/.next/static/chunks/66900-9ff0cc0605ec2039.js +1 -0
  142. package/.next/standalone/agents-manage-ui/.next/static/chunks/73629-c59d321deb96b18e.js +1 -0
  143. package/.next/standalone/agents-manage-ui/.next/static/chunks/73744-ed53b2a1b7396fba.js +1 -0
  144. package/.next/standalone/agents-manage-ui/.next/static/chunks/7965-be321dadb7ef1e3d.js +1 -0
  145. package/.next/standalone/agents-manage-ui/.next/static/chunks/85145-85cfc74451117fee.js +2 -0
  146. package/.next/standalone/agents-manage-ui/.next/static/chunks/85210-7e4bb57822963370.js +1 -0
  147. package/.next/standalone/agents-manage-ui/.next/static/chunks/87799-f447ef2b59041d68.js +21 -0
  148. package/.next/standalone/agents-manage-ui/.next/static/chunks/88437-fd412d0ffdabf6e2.js +1 -0
  149. package/.next/standalone/agents-manage-ui/.next/static/chunks/{98749-e87db9b701dfca1b.js → 88686-b22f308e913d4f41.js} +1 -1
  150. package/.next/standalone/agents-manage-ui/.next/static/chunks/91783-163c98dc7933ec82.js +1 -0
  151. package/.next/standalone/agents-manage-ui/.next/static/chunks/94068-5dbdc1cec3d0e76a.js +1 -0
  152. package/.next/standalone/agents-manage-ui/.next/static/chunks/96365-e0704ccf63dd8e5f.js +1 -0
  153. package/.next/standalone/agents-manage-ui/.next/static/chunks/97635-cc97848f52f745fa.js +1 -0
  154. package/.next/standalone/agents-manage-ui/.next/static/chunks/98522-61e930eb8a6e224a.js +1 -0
  155. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/[agentId]/{page-f6cc5e8cb929a001.js → page-1f31688fce0917bc.js} +1 -1
  156. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/new/page-8296ff2eda140634.js +1 -0
  157. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/page-01e59bf5f6eaead3.js +1 -0
  158. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/api-keys/page-6f65a239fe71b9c5.js +1 -0
  159. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page-c96b767cd2c08987.js +1 -0
  160. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/new/page-53ca13b5fd5588f4.js +1 -0
  161. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/page-55e4707de826834a.js +1 -0
  162. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/page-50b0ddb443385e48.js +1 -0
  163. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/new/page-e6a747906fbdc69f.js +1 -0
  164. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/page-7d8cb84d49138273.js +1 -0
  165. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page-cc9303ede377e6ce.js +1 -0
  166. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page-cb46465d1fb2f943.js +1 -0
  167. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page-698071004a83bc24.js +1 -0
  168. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/{page-7d2f690193dfd95a.js → page-0182a99880cd90af.js} +1 -1
  169. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/edit/page-81e8876fcc1fc5f5.js +1 -0
  170. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/{page-c15ae98c8da775e7.js → page-71a32195e25c4f20.js} +1 -1
  171. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/new/page-f23e8dea759257d1.js +1 -0
  172. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/page-189528b620a028cf.js +1 -0
  173. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/{page-e46c63b98994b120.js → page-23eddac39107b793.js} +1 -1
  174. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page-8eaebbb202d06dd8.js +1 -0
  175. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/new/{page-ea9205bdc1280d44.js → page-1c4d4ba958f21e95.js} +1 -1
  176. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/page-a0b6ba494236ccd8.js +1 -0
  177. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/settings/page-9bc104b66c945584.js +1 -0
  178. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/ai-calls/{page-ff6bb6ad21bedf2e.js → page-1ca030e6ca5874c2.js} +1 -1
  179. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/{page-915bc11a351377b6.js → page-e0b199dd271e9637.js} +1 -1
  180. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/page-77c9f08e7c6a02be.js +1 -0
  181. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/page-57524fbbc0767395.js +1 -0
  182. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/layout-593b875127a14dd7.js +1 -0
  183. package/.next/standalone/agents-manage-ui/.next/static/chunks/webpack-69817cbefeb8c044.js +1 -0
  184. package/.next/standalone/agents-manage-ui/.next/static/css/448757355dabf3ee.css +1 -0
  185. package/.next/standalone/agents-manage-ui/package.json +3 -2
  186. package/.next/standalone/packages/agents-core/package.json +1 -1
  187. package/package.json +6 -5
  188. package/src/components/agent/ship/api-guide.tsx +53 -0
  189. package/src/components/agent/ship/chat-ui-guide/chat-ui-code.tsx +101 -0
  190. package/src/components/agent/ship/chat-ui-guide/chat-ui-guide.tsx +93 -0
  191. package/src/components/agent/ship/chat-ui-guide/chat-ui-preview-form.tsx +83 -0
  192. package/src/components/agent/ship/chat-ui-guide/chat-ui-preview.tsx +105 -0
  193. package/src/components/agent/ship/chat-ui-guide/snippets/index.ts +7 -0
  194. package/src/components/agent/ship/chat-ui-guide/snippets/js-chat-button.ts +10 -0
  195. package/src/components/agent/ship/chat-ui-guide/snippets/js-embedded-chat.ts +22 -0
  196. package/src/components/agent/ship/chat-ui-guide/snippets/js-script-tag.ts +9 -0
  197. package/src/components/agent/ship/chat-ui-guide/snippets/js-sidebar-chat.ts +25 -0
  198. package/src/components/agent/ship/chat-ui-guide/snippets/react-component.ts +10 -0
  199. package/src/components/agent/ship/chat-ui-guide/snippets/react-install.ts +5 -0
  200. package/src/components/agent/ship/chat-ui-guide/snippets/react-sidebar-component.ts +17 -0
  201. package/src/components/agent/ship/guide-header.tsx +30 -0
  202. package/src/components/agent/ship/mcp-guide/mcp-guide.tsx +96 -0
  203. package/src/components/agent/ship/mcp-guide/snippets/claude-code.ts +16 -0
  204. package/src/components/agent/ship/mcp-guide/snippets/cursor.ts +27 -0
  205. package/src/components/agent/ship/mcp-guide/snippets/index.ts +4 -0
  206. package/src/components/agent/ship/mcp-guide/snippets/vscode.ts +27 -0
  207. package/src/components/agent/ship/mcp-guide/snippets/windsurf.ts +25 -0
  208. package/src/components/agent/ship/node-js-guide.tsx +67 -0
  209. package/src/components/agent/ship/sdk-guide.tsx +102 -0
  210. package/src/components/agent/ship/ship-modal.tsx +143 -0
  211. package/src/components/agent/ship/utils.ts +25 -0
  212. package/src/components/agent/toolbar/toolbar.tsx +2 -0
  213. package/src/components/data-components/render/component-render-generator.tsx +9 -12
  214. package/src/components/icons/claude.tsx +21 -0
  215. package/src/components/icons/cursor.tsx +15 -0
  216. package/src/components/icons/vercel.tsx +14 -0
  217. package/src/components/icons/vs-code.tsx +24 -0
  218. package/src/components/icons/windsurf.tsx +15 -0
  219. package/src/components/traces/conversation-stats/conversation-stats-card.tsx +3 -1
  220. package/src/components/traces/traces-overview.tsx +3 -34
  221. package/src/components/ui/color-picker.tsx +47 -0
  222. package/src/components/ui/dialog.tsx +38 -10
  223. package/src/components/ui/tabs.tsx +29 -9
  224. package/src/hooks/use-traces.ts +18 -26
  225. package/src/lib/api/signoz-stats.ts +964 -322
  226. package/.next/standalone/agents-manage-ui/.next/server/chunks/3058.js +0 -1
  227. package/.next/standalone/agents-manage-ui/.next/server/chunks/3411.js +0 -1
  228. package/.next/standalone/agents-manage-ui/.next/server/chunks/44.js +0 -1
  229. package/.next/standalone/agents-manage-ui/.next/server/chunks/4475.js +0 -74
  230. package/.next/standalone/agents-manage-ui/.next/server/chunks/5226.js +0 -1
  231. package/.next/standalone/agents-manage-ui/.next/server/chunks/6563.js +0 -1
  232. package/.next/standalone/agents-manage-ui/.next/server/chunks/824.js +0 -1
  233. package/.next/standalone/agents-manage-ui/.next/server/chunks/8717.js +0 -7
  234. package/.next/standalone/agents-manage-ui/.next/server/chunks/9682.js +0 -123
  235. package/.next/standalone/agents-manage-ui/.next/server/chunks/9839.js +0 -1
  236. package/.next/standalone/agents-manage-ui/.next/static/chunks/15856-09dd885eb1330cba.js +0 -1
  237. package/.next/standalone/agents-manage-ui/.next/static/chunks/1721-4d8716eb27abc2c8.js +0 -1
  238. package/.next/standalone/agents-manage-ui/.next/static/chunks/20693-1b34b01549c71fcd.js +0 -1
  239. package/.next/standalone/agents-manage-ui/.next/static/chunks/21009-32af3656c7538d1b.js +0 -1
  240. package/.next/standalone/agents-manage-ui/.next/static/chunks/22205-1bace94483c408ae.js +0 -1
  241. package/.next/standalone/agents-manage-ui/.next/static/chunks/26959-ac6be17f7b14778b.js +0 -4
  242. package/.next/standalone/agents-manage-ui/.next/static/chunks/3090-bbe5765d804ebb36.js +0 -1
  243. package/.next/standalone/agents-manage-ui/.next/static/chunks/37058-88c6556ebedb9d47.js +0 -1
  244. package/.next/standalone/agents-manage-ui/.next/static/chunks/37226-a04406434cd8bb5f.js +0 -1
  245. package/.next/standalone/agents-manage-ui/.next/static/chunks/39411-b45d75fa377f778e.js +0 -1
  246. package/.next/standalone/agents-manage-ui/.next/static/chunks/47380-98ba7170ef8d47cd.js +0 -2
  247. package/.next/standalone/agents-manage-ui/.next/static/chunks/50118.0a75e445f38b54be.js +0 -1
  248. package/.next/standalone/agents-manage-ui/.next/static/chunks/54339.3d0067056dcd81a1.js +0 -21
  249. package/.next/standalone/agents-manage-ui/.next/static/chunks/55157-25e4c0b9f9d95f2c.js +0 -123
  250. package/.next/standalone/agents-manage-ui/.next/static/chunks/5571-7243ce6d41b18de5.js +0 -1
  251. package/.next/standalone/agents-manage-ui/.next/static/chunks/56117-a96a6a5a77f14ba0.js +0 -1
  252. package/.next/standalone/agents-manage-ui/.next/static/chunks/56162-970c1b81558d4bca.js +0 -1
  253. package/.next/standalone/agents-manage-ui/.next/static/chunks/71398-3fbf54b6c8e25975.js +0 -1
  254. package/.next/standalone/agents-manage-ui/.next/static/chunks/71839-e9ba4ed0b3ce7668.js +0 -1
  255. package/.next/standalone/agents-manage-ui/.next/static/chunks/72678-92694f0704111218.js +0 -1
  256. package/.next/standalone/agents-manage-ui/.next/static/chunks/78155-b4ada7f3606c9500.js +0 -197
  257. package/.next/standalone/agents-manage-ui/.next/static/chunks/7965-6ec8bb2f6ab4a57f.js +0 -1
  258. package/.next/standalone/agents-manage-ui/.next/static/chunks/81385-bf660a5d2d61583a.js +0 -1
  259. package/.next/standalone/agents-manage-ui/.next/static/chunks/85210-a48f33a97c42ba99.js +0 -1
  260. package/.next/standalone/agents-manage-ui/.next/static/chunks/9766-12c570d61ec6ab54.js +0 -1
  261. package/.next/standalone/agents-manage-ui/.next/static/chunks/98117-23cc4134c1bc5526.js +0 -1
  262. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/new/page-f6909ef0e36e83d3.js +0 -1
  263. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/page-5bcce50a7369027d.js +0 -1
  264. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/api-keys/page-4f8f822dc984bab5.js +0 -1
  265. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page-70474b3352e20230.js +0 -1
  266. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/new/page-eee56fb9e68a5469.js +0 -1
  267. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/page-27c9783b1054af7c.js +0 -1
  268. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/page-62cc5c4e7273743e.js +0 -1
  269. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/new/page-1d870519af1de14f.js +0 -1
  270. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/page-afeb3a9ba10e2b48.js +0 -1
  271. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page-ef0bcfa10d3230f0.js +0 -1
  272. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page-e88938c222a3c078.js +0 -1
  273. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page-4cd4c039950c1e8a.js +0 -1
  274. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/edit/page-efe109da0842b109.js +0 -1
  275. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/new/page-87aaa592263ff249.js +0 -1
  276. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/page-657f23ce4544afe0.js +0 -1
  277. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page-98c1cab8f9fe9c9f.js +0 -1
  278. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/page-235dc834e8662b78.js +0 -1
  279. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/settings/page-79f7660553bed38e.js +0 -1
  280. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/page-ace899bb92548a8f.js +0 -1
  281. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/page-ca8fd5c9aa128707.js +0 -1
  282. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/layout-82ddcfd4e4184e13.js +0 -1
  283. package/.next/standalone/agents-manage-ui/.next/static/chunks/webpack-314a6b9a2162cc11.js +0 -1
  284. package/.next/standalone/agents-manage-ui/.next/static/css/79e788a7e7a93a1e.css +0 -1
  285. /package/.next/standalone/agents-manage-ui/.next/static/{2KQOZYEPBYWDWg3EXfAQ- → Zw-_W6mUE-0gHQmRnvFFs}/_buildManifest.js +0 -0
  286. /package/.next/standalone/agents-manage-ui/.next/static/{2KQOZYEPBYWDWg3EXfAQ- → Zw-_W6mUE-0gHQmRnvFFs}/_ssgManifest.js +0 -0
  287. /package/.next/standalone/agents-manage-ui/.next/static/chunks/{21f4193d.7ccc1aebbebe4f76.js → 21f4193d-7ccc1aebbebe4f76.js} +0 -0
  288. /package/.next/standalone/agents-manage-ui/.next/static/chunks/{9f915ca0.83c49af9bcc715c2.js → 9f915ca0-83c49af9bcc715c2.js} +0 -0
  289. /package/.next/standalone/agents-manage-ui/.next/static/chunks/{acf92edd.26fc0407d83498c7.js → acf92edd-26fc0407d83498c7.js} +0 -0
@@ -6,6 +6,7 @@ import {
6
6
  AI_OPERATIONS,
7
7
  AI_TOOL_TYPES,
8
8
  DATA_SOURCES,
9
+ DATA_TYPES,
9
10
  OPERATORS,
10
11
  ORDER_DIRECTIONS,
11
12
  PANEL_TYPES,
@@ -87,6 +88,8 @@ const FilterValueSchema = z.union([z.string(), z.number(), z.boolean()]);
87
88
 
88
89
  type FilterValue = z.infer<typeof FilterValueSchema>;
89
90
 
91
+ type DataType = (typeof DATA_TYPES)[keyof typeof DATA_TYPES];
92
+
90
93
  const asTypedFilterValue = (v: string): FilterValue => {
91
94
  try {
92
95
  // Handle boolean values
@@ -163,146 +166,266 @@ class SigNozStatsAPI {
163
166
  async getConversationStats(
164
167
  startTime: number,
165
168
  endTime: number,
166
- filters?: SpanFilterOptions,
167
- projectId?: string,
168
- pagination?: { page: number; limit: number },
169
- searchQuery?: string,
170
- agentId?: string
171
- ): Promise<ConversationStats[] | PaginatedConversationStats> {
169
+ filters: SpanFilterOptions | undefined,
170
+ projectId: string | undefined,
171
+ pagination: { page: number; limit: number },
172
+ searchQuery: string | undefined,
173
+ agentId: string | undefined
174
+ ): Promise<PaginatedConversationStats> {
172
175
  try {
173
- const payload = this.buildCombinedPayload(startTime, endTime, filters, projectId, agentId);
174
- const resp = await this.makeRequest(payload);
176
+ return await this.getConversationStatsPaginated(
177
+ startTime,
178
+ endTime,
179
+ filters,
180
+ projectId,
181
+ pagination,
182
+ searchQuery,
183
+ agentId
184
+ );
185
+ } catch (e) {
186
+ console.error('getConversationStats error:', e);
187
+ return {
188
+ data: [],
189
+ pagination: {
190
+ page: pagination.page,
191
+ limit: pagination.limit,
192
+ total: 0,
193
+ totalPages: 0,
194
+ hasNextPage: false,
195
+ hasPreviousPage: false,
196
+ },
197
+ };
198
+ }
199
+ }
175
200
 
176
- const toolsSeries = this.extractSeries(resp, QUERY_EXPRESSIONS.TOOLS);
177
- const transfersSeries = this.extractSeries(resp, QUERY_EXPRESSIONS.TRANSFERS);
178
- const delegationsSeries = this.extractSeries(resp, QUERY_EXPRESSIONS.DELEGATIONS);
179
- const aiCallsSeries = this.extractSeries(resp, QUERY_EXPRESSIONS.AI_CALLS);
180
- const lastActivitySeries = this.extractSeries(resp, QUERY_EXPRESSIONS.LAST_ACTIVITY);
181
- const metadataSeries = this.extractSeries(resp, QUERY_EXPRESSIONS.CONVERSATION_METADATA);
182
- const spansWithErrorsSeries = this.extractSeries(resp, QUERY_EXPRESSIONS.SPANS_WITH_ERRORS);
183
- const userMessagesSeries = this.extractSeries(resp, QUERY_EXPRESSIONS.USER_MESSAGES);
184
-
185
- // metadata map
186
- const metaByConv = new Map<
187
- string,
188
- { tenantId: string; agentId: string; agentName: string }
189
- >();
190
- for (const s of metadataSeries) {
191
- const id = s.labels?.[SPAN_KEYS.CONVERSATION_ID];
192
- if (!id) continue;
193
- metaByConv.set(id, {
194
- tenantId: s.labels?.[SPAN_KEYS.TENANT_ID] ?? UNKNOWN_VALUE,
195
- agentId: s.labels?.[SPAN_KEYS.AGENT_ID] ?? UNKNOWN_VALUE,
196
- agentName: s.labels?.[SPAN_KEYS.AGENT_NAME] ?? UNKNOWN_VALUE,
197
- });
201
+ private async getConversationStatsPaginated(
202
+ startTime: number,
203
+ endTime: number,
204
+ filters: SpanFilterOptions | undefined,
205
+ projectId: string | undefined,
206
+ pagination: { page: number; limit: number },
207
+ searchQuery: string | undefined,
208
+ agentId: string | undefined
209
+ ): Promise<PaginatedConversationStats> {
210
+ // Step 1: Get total count and paginated conversation IDs sorted by last activity
211
+ const { conversationIds, total } = await this.getPaginatedConversationIds(
212
+ startTime,
213
+ endTime,
214
+ filters,
215
+ projectId,
216
+ pagination,
217
+ searchQuery,
218
+ agentId
219
+ );
220
+
221
+ if (conversationIds.length === 0) {
222
+ return {
223
+ data: [],
224
+ pagination: {
225
+ page: pagination.page,
226
+ limit: pagination.limit,
227
+ total,
228
+ totalPages: Math.ceil(total / pagination.limit),
229
+ hasNextPage: pagination.page < Math.ceil(total / pagination.limit),
230
+ hasPreviousPage: pagination.page > 1,
231
+ },
232
+ };
233
+ }
234
+
235
+ // Step 2: Fetch detailed stats only for the paginated conversation IDs
236
+ const payload = this.buildCombinedPayload(
237
+ startTime,
238
+ endTime,
239
+ filters,
240
+ projectId,
241
+ agentId,
242
+ conversationIds
243
+ );
244
+ const resp = await this.makeRequest(payload);
245
+
246
+ const toolsSeries = this.extractSeries(resp, QUERY_EXPRESSIONS.TOOLS);
247
+ const transfersSeries = this.extractSeries(resp, QUERY_EXPRESSIONS.TRANSFERS);
248
+ const delegationsSeries = this.extractSeries(resp, QUERY_EXPRESSIONS.DELEGATIONS);
249
+ const aiCallsSeries = this.extractSeries(resp, QUERY_EXPRESSIONS.AI_CALLS);
250
+ const lastActivitySeries = this.extractSeries(resp, QUERY_EXPRESSIONS.LAST_ACTIVITY);
251
+ const metadataSeries = this.extractSeries(resp, QUERY_EXPRESSIONS.CONVERSATION_METADATA);
252
+ const spansWithErrorsSeries = this.extractSeries(resp, QUERY_EXPRESSIONS.SPANS_WITH_ERRORS);
253
+ const userMessagesSeries = this.extractSeries(resp, QUERY_EXPRESSIONS.USER_MESSAGES);
254
+
255
+ // metadata map
256
+ const metaByConv = new Map<string, { tenantId: string; agentId: string; agentName: string }>();
257
+ for (const s of metadataSeries) {
258
+ const id = s.labels?.[SPAN_KEYS.CONVERSATION_ID];
259
+ if (!id) continue;
260
+ metaByConv.set(id, {
261
+ tenantId: s.labels?.[SPAN_KEYS.TENANT_ID] ?? UNKNOWN_VALUE,
262
+ agentId: s.labels?.[SPAN_KEYS.AGENT_ID] ?? UNKNOWN_VALUE,
263
+ agentName: s.labels?.[SPAN_KEYS.AGENT_NAME] ?? UNKNOWN_VALUE,
264
+ });
265
+ }
266
+
267
+ // first seen map
268
+ const firstSeen = new Map<string, number>();
269
+ for (const s of lastActivitySeries) {
270
+ const id = s.labels?.[SPAN_KEYS.CONVERSATION_ID];
271
+ if (!id) continue;
272
+ firstSeen.set(id, numberFromSeries(s));
273
+ }
274
+
275
+ // first user message per conversation
276
+ const firstMsgByConv = new Map<string, { content: string; timestamp: number }>();
277
+ const msgsByConv = new Map<string, Array<{ t: number; c: string }>>();
278
+ for (const s of userMessagesSeries) {
279
+ const id = s.labels?.[SPAN_KEYS.CONVERSATION_ID];
280
+ const content = s.labels?.[SPAN_KEYS.MESSAGE_CONTENT];
281
+ const t = numberFromSeries(s);
282
+ if (!id || !content) continue;
283
+ (msgsByConv.get(id) ?? msgsByConv.set(id, []).get(id))?.push({
284
+ t,
285
+ c: content,
286
+ });
287
+ }
288
+ for (const [id, arr] of msgsByConv) {
289
+ arr.sort((a, b) => a.t - b.t);
290
+ const first = arr[0];
291
+ if (first) {
292
+ const content = first.c.length > 100 ? `${first.c.slice(0, 100)}...` : first.c;
293
+ firstMsgByConv.set(id, { content, timestamp: nsToMs(first.t) });
198
294
  }
295
+ }
296
+
297
+ // build stats
298
+ const stats = this.toConversationStats(
299
+ toolsSeries,
300
+ transfersSeries,
301
+ delegationsSeries,
302
+ aiCallsSeries,
303
+ metaByConv,
304
+ spansWithErrorsSeries,
305
+ firstMsgByConv
306
+ );
307
+
308
+ // Filter to only include the paginated conversation IDs (in the correct order)
309
+ const statsMap = new Map(stats.map((s) => [s.conversationId, s]));
310
+ const orderedStats = conversationIds
311
+ .map((id) => statsMap.get(id))
312
+ .filter((s): s is ConversationStats => s !== undefined);
313
+
314
+ // Sort by first activity to maintain order
315
+ orderedStats.sort((a, b) =>
316
+ byFirstActivity(firstSeen.get(a.conversationId), firstSeen.get(b.conversationId))
317
+ );
318
+
319
+ return {
320
+ data: orderedStats,
321
+ pagination: {
322
+ page: pagination.page,
323
+ limit: pagination.limit,
324
+ total,
325
+ totalPages: Math.ceil(total / pagination.limit),
326
+ hasNextPage: pagination.page < Math.ceil(total / pagination.limit),
327
+ hasPreviousPage: pagination.page > 1,
328
+ },
329
+ };
330
+ }
331
+
332
+ private async getPaginatedConversationIds(
333
+ startTime: number,
334
+ endTime: number,
335
+ filters: SpanFilterOptions | undefined,
336
+ projectId: string | undefined,
337
+ pagination: { page: number; limit: number },
338
+ searchQuery: string | undefined,
339
+ agentId: string | undefined
340
+ ): Promise<{ conversationIds: string[]; total: number }> {
341
+ // Consolidated query: fetch all required data in a single request
342
+ const consolidatedPayload = this.buildFilteredConversationIdsPayload(
343
+ startTime,
344
+ endTime,
345
+ filters,
346
+ projectId,
347
+ agentId,
348
+ !!searchQuery?.trim()
349
+ );
350
+
351
+ const consolidatedResp = await this.makeRequest(consolidatedPayload);
199
352
 
200
- // first seen map
201
- const firstSeen = new Map<string, number>();
202
- for (const s of lastActivitySeries) {
353
+ // Extract activity data (always needed for sorting)
354
+ const activitySeries = this.extractSeries(consolidatedResp, QUERY_EXPRESSIONS.LAST_ACTIVITY);
355
+ const activityMap = new Map<string, number>();
356
+ for (const s of activitySeries) {
357
+ const id = s.labels?.[SPAN_KEYS.CONVERSATION_ID];
358
+ if (!id) continue;
359
+ activityMap.set(id, numberFromSeries(s));
360
+ }
361
+
362
+ // Start with all conversation IDs from activity data
363
+ let conversationIds = Array.from(activityMap.keys());
364
+
365
+ // Apply span filters if needed
366
+ if (filters?.spanName || filters?.attributes?.length) {
367
+ const filteredSeries = this.extractSeries(
368
+ consolidatedResp,
369
+ QUERY_EXPRESSIONS.FILTERED_CONVERSATIONS
370
+ );
371
+ const filteredIds = new Set(
372
+ filteredSeries.map((s) => s.labels?.[SPAN_KEYS.CONVERSATION_ID]).filter(Boolean) as string[]
373
+ );
374
+ conversationIds = conversationIds.filter((id) => filteredIds.has(id));
375
+ }
376
+
377
+ // Apply search filtering if needed
378
+ if (searchQuery?.trim()) {
379
+ const metadataSeries = this.extractSeries(
380
+ consolidatedResp,
381
+ QUERY_EXPRESSIONS.CONVERSATION_METADATA
382
+ );
383
+ const metadataMap = new Map<string, { agentId: string; conversationId: string }>();
384
+ for (const s of metadataSeries) {
203
385
  const id = s.labels?.[SPAN_KEYS.CONVERSATION_ID];
386
+ const agentIdValue = s.labels?.[SPAN_KEYS.AGENT_ID];
204
387
  if (!id) continue;
205
- firstSeen.set(id, numberFromSeries(s));
388
+ metadataMap.set(id, { agentId: agentIdValue ?? '', conversationId: id });
206
389
  }
207
390
 
208
- // first user message per conversation (min timestamp already grouped)
209
- const firstMsgByConv = new Map<string, { content: string; timestamp: number }>();
210
- const msgsByConv = new Map<string, Array<{ t: number; c: string }>>();
391
+ const userMessagesSeries = this.extractSeries(
392
+ consolidatedResp,
393
+ QUERY_EXPRESSIONS.USER_MESSAGES
394
+ );
395
+ const firstMessagesMap = new Map<string, string>();
211
396
  for (const s of userMessagesSeries) {
212
397
  const id = s.labels?.[SPAN_KEYS.CONVERSATION_ID];
213
398
  const content = s.labels?.[SPAN_KEYS.MESSAGE_CONTENT];
214
- const t = numberFromSeries(s);
215
399
  if (!id || !content) continue;
216
- (msgsByConv.get(id) ?? msgsByConv.set(id, []).get(id))?.push({
217
- t,
218
- c: content,
219
- });
220
- }
221
- for (const [id, arr] of msgsByConv) {
222
- arr.sort((a, b) => a.t - b.t);
223
- const first = arr[0];
224
- if (first) {
225
- const content = first.c.length > 100 ? `${first.c.slice(0, 100)}...` : first.c;
226
- firstMsgByConv.set(id, { content, timestamp: nsToMs(first.t) });
400
+ if (!firstMessagesMap.has(id)) {
401
+ firstMessagesMap.set(id, content);
227
402
  }
228
403
  }
229
404
 
230
- // build stats
231
- let stats = this.toConversationStats(
232
- toolsSeries,
233
- transfersSeries,
234
- delegationsSeries,
235
- aiCallsSeries,
236
- metaByConv,
237
- spansWithErrorsSeries,
238
- firstMsgByConv
239
- );
240
-
241
- // optional secondary filter pass via span filters
242
- if (filters?.spanName || filters?.attributes?.length) {
243
- stats = await this.applySpanFilters(stats, startTime, endTime, filters, projectId);
244
- }
245
-
246
- // search filter
247
- if (searchQuery?.trim()) {
248
- const q = searchQuery.toLowerCase().trim();
249
- stats = stats.filter(
250
- (s) =>
251
- s.firstUserMessage?.toLowerCase().includes(q) ||
252
- s.conversationId.toLowerCase().includes(q) ||
253
- s.agentId.toLowerCase().includes(q)
405
+ const q = searchQuery.toLowerCase().trim();
406
+ conversationIds = conversationIds.filter((id) => {
407
+ const meta = metadataMap.get(id);
408
+ const firstMsg = firstMessagesMap.get(id);
409
+ return (
410
+ firstMsg?.toLowerCase().includes(q) ||
411
+ id.toLowerCase().includes(q) ||
412
+ meta?.agentId.toLowerCase().includes(q)
254
413
  );
255
- }
256
-
257
- // sort by first activity
258
- stats.sort((a, b) =>
259
- byFirstActivity(firstSeen.get(a.conversationId), firstSeen.get(b.conversationId))
260
- );
261
-
262
- if (!pagination) return stats;
414
+ });
415
+ }
263
416
 
264
- const { page, limit } = pagination;
265
- const total = stats.length;
266
- const totalPages = Math.ceil(total / limit);
267
- const start = (page - 1) * limit;
268
- const data = stats.slice(start, start + limit);
417
+ // Sort by last activity (descending - most recent first)
418
+ conversationIds.sort((a, b) => {
419
+ const aTime = activityMap.get(a) ?? 0;
420
+ const bTime = activityMap.get(b) ?? 0;
421
+ return bTime - aTime; // Descending order
422
+ });
269
423
 
270
- return {
271
- data,
272
- pagination: {
273
- page,
274
- limit,
275
- total,
276
- totalPages,
277
- hasNextPage: page < totalPages,
278
- hasPreviousPage: page > 1,
279
- },
280
- };
281
- } catch (e) {
282
- console.error('getConversationStats error:', e);
283
- return [];
284
- }
285
- }
424
+ const total = conversationIds.length;
425
+ const start = (pagination.page - 1) * pagination.limit;
426
+ const paginatedIds = conversationIds.slice(start, start + pagination.limit);
286
427
 
287
- async getAICallsByAgent(startTime: number, endTime: number, projectId?: string) {
288
- try {
289
- const resp = await this.makeRequest(
290
- this.buildCombinedPayload(startTime, endTime, undefined, projectId)
291
- );
292
- const series = this.extractSeries(resp, QUERY_EXPRESSIONS.AI_CALLS);
293
- const totals = new Map<string, number>();
294
- for (const s of series) {
295
- const agentId = s.labels?.[SPAN_KEYS.AGENT_ID] || UNKNOWN_VALUE;
296
- const count = countFromSeries(s);
297
- if (count) totals.set(agentId, (totals.get(agentId) || 0) + count);
298
- }
299
- return [...totals]
300
- .map(([agentId, totalCalls]) => ({ agentId, totalCalls }))
301
- .sort((a, b) => b.totalCalls - a.totalCalls);
302
- } catch (e) {
303
- console.error('getAICallsByAgent error:', e);
304
- return [];
305
- }
428
+ return { conversationIds: paginatedIds, total };
306
429
  }
307
430
 
308
431
  async getAICallsBySubAgent(
@@ -469,51 +592,57 @@ class SigNozStatsAPI {
469
592
  agentId?: string
470
593
  ) {
471
594
  try {
472
- const resp = await this.makeRequest(
473
- this.buildCombinedPayload(startTime, endTime, filters, projectId, agentId)
474
- );
475
-
476
- const toolsSeries = this.extractSeries(resp, 'tools');
477
- const transfersSeries = this.extractSeries(resp, 'transfers');
478
- const delegationsSeries = this.extractSeries(resp, 'delegations');
479
- const aiCallsSeries = this.extractSeries(resp, 'aiCalls');
480
- const metadataSeries = this.extractSeries(resp, 'conversationMetadata');
481
- const spansWithErrorsSeries = this.extractSeries(resp, QUERY_EXPRESSIONS.SPANS_WITH_ERRORS);
482
-
483
- const metaByConv = new Map<
484
- string,
485
- { tenantId: string; agentId: string; agentName: string }
486
- >();
487
- for (const s of metadataSeries) {
488
- const id = s.labels?.[SPAN_KEYS.CONVERSATION_ID];
489
- if (!id) continue;
490
- metaByConv.set(id, {
491
- tenantId: s.labels?.[SPAN_KEYS.TENANT_ID] ?? UNKNOWN_VALUE,
492
- agentId: s.labels?.[SPAN_KEYS.AGENT_ID] ?? UNKNOWN_VALUE,
493
- agentName: s.labels?.[SPAN_KEYS.AGENT_NAME] ?? UNKNOWN_VALUE,
494
- });
595
+ // If span filters are applied, first get the conversation IDs that match those filters
596
+ let filteredConversationIds: string[] | undefined;
597
+ if (filters?.spanName || filters?.attributes?.length) {
598
+ const filteredPayload = this.buildFilteredConversationsPayload(
599
+ startTime,
600
+ endTime,
601
+ filters,
602
+ projectId
603
+ );
604
+ const filteredResp = await this.makeRequest(filteredPayload);
605
+ const filteredSeries = this.extractSeries(filteredResp, 'filteredConversations');
606
+ filteredConversationIds = filteredSeries
607
+ .map((s) => s.labels?.[SPAN_KEYS.CONVERSATION_ID])
608
+ .filter(Boolean) as string[];
609
+
610
+ if (filteredConversationIds.length === 0) {
611
+ // No conversations match the filters, return zeros
612
+ return {
613
+ totalToolCalls: 0,
614
+ totalTransfers: 0,
615
+ totalDelegations: 0,
616
+ totalConversations: 0,
617
+ totalAICalls: 0,
618
+ };
619
+ }
495
620
  }
496
621
 
497
- let stats = this.toConversationStats(
498
- toolsSeries,
499
- transfersSeries,
500
- delegationsSeries,
501
- aiCallsSeries,
502
- metaByConv,
503
- spansWithErrorsSeries,
504
- new Map<string, { content: string; timestamp: number }>()
622
+ const payload = this.buildAggregateBadgesPayload(
623
+ startTime,
624
+ endTime,
625
+ projectId,
626
+ agentId,
627
+ filteredConversationIds
505
628
  );
506
629
 
507
- if (filters?.spanName || filters?.attributes?.length) {
508
- stats = await this.applySpanFilters(stats, startTime, endTime, filters, projectId);
509
- }
630
+ const resp = await this.makeRequest(payload);
631
+
632
+ const toolCallsSeries = this.extractSeries(resp, 'totalToolCalls');
633
+ const transfersSeries = this.extractSeries(resp, 'totalTransfers');
634
+ const delegationsSeries = this.extractSeries(resp, 'totalDelegations');
635
+ const aiCallsSeries = this.extractSeries(resp, 'totalAICalls');
636
+ const conversationsSeries = this.extractSeries(resp, 'totalConversations');
510
637
 
511
638
  return {
512
- totalToolCalls: stats.reduce((s, r) => s + r.totalToolCalls, 0),
513
- totalTransfers: stats.reduce((s, r) => s + r.totalTransfers, 0),
514
- totalDelegations: stats.reduce((s, r) => s + r.totalDelegations, 0),
515
- totalConversations: stats.length,
516
- totalAICalls: stats.reduce((s, r) => s + r.totalAICalls, 0),
639
+ totalToolCalls: countFromSeries(toolCallsSeries[0] || { values: [{ value: '0' }] }),
640
+ totalTransfers: countFromSeries(transfersSeries[0] || { values: [{ value: '0' }] }),
641
+ totalDelegations: countFromSeries(delegationsSeries[0] || { values: [{ value: '0' }] }),
642
+ totalConversations: filteredConversationIds
643
+ ? filteredConversationIds.length
644
+ : countFromSeries(conversationsSeries[0] || { values: [{ value: '0' }] }),
645
+ totalAICalls: countFromSeries(aiCallsSeries[0] || { values: [{ value: '0' }] }),
517
646
  };
518
647
  } catch (e) {
519
648
  console.error('getAggregateStats error:', e);
@@ -775,28 +904,6 @@ class SigNozStatsAPI {
775
904
  return out;
776
905
  }
777
906
 
778
- private async applySpanFilters(
779
- stats: ConversationStats[],
780
- startTime: number,
781
- endTime: number,
782
- filters: SpanFilterOptions,
783
- projectId?: string
784
- ) {
785
- try {
786
- const resp = await this.makeRequest(
787
- this.buildFilteredConversationsPayload(startTime, endTime, filters, projectId)
788
- );
789
- const series = this.extractSeries(resp, 'filteredConversations');
790
- const allowed = new Set<string>(
791
- series.map((s) => s.labels?.[SPAN_KEYS.CONVERSATION_ID]).filter(Boolean) as string[]
792
- );
793
- return stats.filter((s) => allowed.has(s.conversationId));
794
- } catch (e) {
795
- console.error('applySpanFilters error:', e);
796
- return stats;
797
- }
798
- }
799
-
800
907
  // ---------- Payload builders (unchanged behavior, less repetition)
801
908
 
802
909
  private buildAgentModelBreakdownPayload(start: number, end: number, projectId?: string) {
@@ -1138,94 +1245,382 @@ class SigNozStatsAPI {
1138
1245
  };
1139
1246
  }
1140
1247
 
1141
- private buildFilteredConversationsPayload(
1248
+ private buildFilteredConversationIdsPayload(
1142
1249
  start: number,
1143
1250
  end: number,
1144
- filters: SpanFilterOptions,
1145
- projectId?: string
1251
+ filters: SpanFilterOptions | undefined,
1252
+ projectId: string | undefined,
1253
+ agentId: string | undefined,
1254
+ includeSearchData: boolean
1146
1255
  ) {
1147
- const items: any[] = [
1148
- {
1149
- key: {
1150
- key: SPAN_KEYS.CONVERSATION_ID,
1151
- ...QUERY_FIELD_CONFIGS.STRING_TAG,
1256
+ const buildBaseFilters = (): any[] => {
1257
+ const items: any[] = [
1258
+ {
1259
+ key: {
1260
+ key: SPAN_KEYS.CONVERSATION_ID,
1261
+ ...QUERY_FIELD_CONFIGS.STRING_TAG,
1262
+ },
1263
+ op: OPERATORS.EXISTS,
1264
+ value: '',
1152
1265
  },
1153
- op: OPERATORS.EXISTS,
1154
- value: '',
1155
- },
1156
- ];
1157
-
1158
- if (filters.spanName) {
1159
- items.push({
1160
- key: { key: SPAN_KEYS.NAME, ...QUERY_FIELD_CONFIGS.STRING_TAG_COLUMN },
1161
- op: OPERATORS.EQUALS,
1162
- value: filters.spanName,
1163
- });
1164
- }
1165
-
1166
- // Attribute filters — pass typed booleans/numbers where possible
1167
- for (const attr of filters.attributes ?? []) {
1168
- const op = attr.operator ?? OPERATORS.EQUALS;
1169
- let value: any = asTypedFilterValue(attr.value);
1170
- let dataType: 'string' | 'int64' | 'float64' | 'bool' = 'string';
1171
- if (typeof value === 'boolean') dataType = 'bool';
1172
- else if (typeof value === 'number') dataType = Number.isInteger(value) ? 'int64' : 'float64';
1266
+ ];
1173
1267
 
1174
- // exists/nexists ignore value
1175
- if (op === OPERATORS.EXISTS || op === OPERATORS.NOT_EXISTS) {
1268
+ if (agentId && agentId !== 'all') {
1176
1269
  items.push({
1177
- key: { key: attr.key, ...QUERY_FIELD_CONFIGS.STRING_TAG },
1178
- op,
1179
- value: '',
1270
+ key: {
1271
+ key: SPAN_KEYS.AGENT_ID,
1272
+ ...QUERY_FIELD_CONFIGS.STRING_TAG,
1273
+ },
1274
+ op: OPERATORS.EQUALS,
1275
+ value: agentId,
1180
1276
  });
1181
- continue;
1182
- }
1183
-
1184
- // LIKE operators add wildcards if absent
1185
- if (
1186
- (op === OPERATORS.LIKE || op === OPERATORS.NOT_LIKE) &&
1187
- typeof value === 'string' &&
1188
- !value.includes('%')
1189
- ) {
1190
- value = `%${value}%`;
1191
1277
  }
1192
1278
 
1193
- // For numeric equality, keep exact-match pair (>= & <=) for robustness
1194
- if ((dataType === 'int64' || dataType === 'float64') && op === OPERATORS.EQUALS) {
1195
- const config =
1196
- dataType === 'int64' ? QUERY_FIELD_CONFIGS.INT64_TAG : QUERY_FIELD_CONFIGS.FLOAT64_TAG;
1279
+ if (projectId) {
1197
1280
  items.push({
1198
- key: { key: attr.key, ...config },
1199
- op: OPERATORS.GREATER_THAN_OR_EQUAL,
1200
- value,
1281
+ key: {
1282
+ key: SPAN_KEYS.PROJECT_ID,
1283
+ ...QUERY_FIELD_CONFIGS.STRING_TAG,
1284
+ },
1285
+ op: OPERATORS.EQUALS,
1286
+ value: projectId,
1201
1287
  });
1202
- items.push({
1203
- key: { key: attr.key, ...config },
1204
- op: OPERATORS.LESS_THAN_OR_EQUAL,
1205
- value,
1288
+ }
1289
+
1290
+ return items;
1291
+ };
1292
+
1293
+ const builderQueries: Record<string, any> = {
1294
+ // Always include activity query for sorting
1295
+ lastActivity: {
1296
+ dataSource: DATA_SOURCES.TRACES,
1297
+ queryName: QUERY_EXPRESSIONS.LAST_ACTIVITY,
1298
+ aggregateOperator: AGGREGATE_OPERATORS.MIN,
1299
+ aggregateAttribute: {
1300
+ key: SPAN_KEYS.TIMESTAMP,
1301
+ ...QUERY_FIELD_CONFIGS.INT64_TAG_COLUMN,
1302
+ },
1303
+ filters: { op: OPERATORS.AND, items: buildBaseFilters() },
1304
+ groupBy: [
1305
+ {
1306
+ key: SPAN_KEYS.CONVERSATION_ID,
1307
+ ...QUERY_FIELD_CONFIGS.STRING_TAG,
1308
+ },
1309
+ ],
1310
+ expression: QUERY_EXPRESSIONS.LAST_ACTIVITY,
1311
+ reduceTo: REDUCE_OPERATIONS.MIN,
1312
+ stepInterval: QUERY_DEFAULTS.STEP_INTERVAL,
1313
+ orderBy: [{ columnName: SPAN_KEYS.TIMESTAMP, order: ORDER_DIRECTIONS.DESC }],
1314
+ offset: QUERY_DEFAULTS.OFFSET,
1315
+ disabled: QUERY_DEFAULTS.DISABLED,
1316
+ having: QUERY_DEFAULTS.HAVING,
1317
+ legend: QUERY_DEFAULTS.LEGEND,
1318
+ limit: QUERY_DEFAULTS.LIMIT_UNLIMITED,
1319
+ },
1320
+ };
1321
+
1322
+ // Add filtered conversations query if filters are provided
1323
+ if (filters?.spanName || filters?.attributes?.length) {
1324
+ const filterItems: any[] = [
1325
+ {
1326
+ key: {
1327
+ key: SPAN_KEYS.CONVERSATION_ID,
1328
+ ...QUERY_FIELD_CONFIGS.STRING_TAG,
1329
+ },
1330
+ op: OPERATORS.EXISTS,
1331
+ value: '',
1332
+ },
1333
+ ];
1334
+
1335
+ if (filters.spanName) {
1336
+ filterItems.push({
1337
+ key: { key: SPAN_KEYS.NAME, ...QUERY_FIELD_CONFIGS.STRING_TAG_COLUMN },
1338
+ op: OPERATORS.EQUALS,
1339
+ value: filters.spanName,
1206
1340
  });
1207
- } else {
1208
- const config =
1209
- dataType === 'string'
1210
- ? QUERY_FIELD_CONFIGS.STRING_TAG
1211
- : dataType === 'int64'
1212
- ? QUERY_FIELD_CONFIGS.INT64_TAG
1213
- : dataType === 'float64'
1214
- ? QUERY_FIELD_CONFIGS.FLOAT64_TAG
1215
- : QUERY_FIELD_CONFIGS.BOOL_TAG;
1216
- items.push({ key: { key: attr.key, ...config }, op, value });
1217
1341
  }
1218
- }
1219
1342
 
1220
- if (projectId) {
1221
- items.push({
1222
- key: { key: SPAN_KEYS.PROJECT_ID, ...QUERY_FIELD_CONFIGS.STRING_TAG },
1223
- op: OPERATORS.EQUALS,
1224
- value: projectId,
1225
- });
1226
- }
1343
+ // Attribute filters
1344
+ for (const attr of filters.attributes ?? []) {
1345
+ const op = attr.operator ?? OPERATORS.EQUALS;
1346
+ let value: any = asTypedFilterValue(attr.value);
1347
+ let dataType: DataType = DATA_TYPES.STRING;
1348
+ if (typeof value === 'boolean') dataType = DATA_TYPES.BOOL;
1349
+ else if (typeof value === 'number')
1350
+ dataType = Number.isInteger(value) ? DATA_TYPES.INT64 : DATA_TYPES.FLOAT64;
1351
+
1352
+ if (op === OPERATORS.EXISTS || op === OPERATORS.NOT_EXISTS) {
1353
+ filterItems.push({
1354
+ key: { key: attr.key, ...QUERY_FIELD_CONFIGS.STRING_TAG },
1355
+ op,
1356
+ value: '',
1357
+ });
1358
+ continue;
1359
+ }
1227
1360
 
1228
- return {
1361
+ if (
1362
+ (op === OPERATORS.LIKE || op === OPERATORS.NOT_LIKE) &&
1363
+ typeof value === 'string' &&
1364
+ !value.includes('%')
1365
+ ) {
1366
+ value = `%${value}%`;
1367
+ }
1368
+
1369
+ if (
1370
+ (dataType === DATA_TYPES.INT64 || dataType === DATA_TYPES.FLOAT64) &&
1371
+ op === OPERATORS.EQUALS
1372
+ ) {
1373
+ const config =
1374
+ dataType === DATA_TYPES.INT64
1375
+ ? QUERY_FIELD_CONFIGS.INT64_TAG
1376
+ : QUERY_FIELD_CONFIGS.FLOAT64_TAG;
1377
+ filterItems.push({
1378
+ key: { key: attr.key, ...config },
1379
+ op: OPERATORS.GREATER_THAN_OR_EQUAL,
1380
+ value,
1381
+ });
1382
+ filterItems.push({
1383
+ key: { key: attr.key, ...config },
1384
+ op: OPERATORS.LESS_THAN_OR_EQUAL,
1385
+ value,
1386
+ });
1387
+ } else {
1388
+ const config =
1389
+ dataType === DATA_TYPES.STRING
1390
+ ? QUERY_FIELD_CONFIGS.STRING_TAG
1391
+ : dataType === DATA_TYPES.INT64
1392
+ ? QUERY_FIELD_CONFIGS.INT64_TAG
1393
+ : dataType === DATA_TYPES.FLOAT64
1394
+ ? QUERY_FIELD_CONFIGS.FLOAT64_TAG
1395
+ : QUERY_FIELD_CONFIGS.BOOL_TAG;
1396
+ filterItems.push({ key: { key: attr.key, ...config }, op, value });
1397
+ }
1398
+ }
1399
+
1400
+ if (projectId) {
1401
+ filterItems.push({
1402
+ key: { key: SPAN_KEYS.PROJECT_ID, ...QUERY_FIELD_CONFIGS.STRING_TAG },
1403
+ op: OPERATORS.EQUALS,
1404
+ value: projectId,
1405
+ });
1406
+ }
1407
+
1408
+ builderQueries.filteredConversations = {
1409
+ dataSource: DATA_SOURCES.TRACES,
1410
+ queryName: QUERY_EXPRESSIONS.FILTERED_CONVERSATIONS,
1411
+ aggregateOperator: AGGREGATE_OPERATORS.COUNT,
1412
+ aggregateAttribute: {
1413
+ key: SPAN_KEYS.SPAN_ID,
1414
+ ...QUERY_FIELD_CONFIGS.STRING_TAG_COLUMN,
1415
+ },
1416
+ filters: { op: OPERATORS.AND, items: filterItems },
1417
+ groupBy: [
1418
+ {
1419
+ key: SPAN_KEYS.CONVERSATION_ID,
1420
+ ...QUERY_FIELD_CONFIGS.STRING_TAG,
1421
+ },
1422
+ ],
1423
+ expression: QUERY_EXPRESSIONS.FILTERED_CONVERSATIONS,
1424
+ reduceTo: REDUCE_OPERATIONS.SUM,
1425
+ stepInterval: QUERY_DEFAULTS.STEP_INTERVAL,
1426
+ orderBy: [{ columnName: SPAN_KEYS.TIMESTAMP, order: ORDER_DIRECTIONS.DESC }],
1427
+ offset: QUERY_DEFAULTS.OFFSET,
1428
+ disabled: QUERY_DEFAULTS.DISABLED,
1429
+ having: QUERY_DEFAULTS.HAVING,
1430
+ legend: QUERY_DEFAULTS.LEGEND,
1431
+ limit: QUERY_DEFAULTS.LIMIT_UNLIMITED,
1432
+ };
1433
+ }
1434
+
1435
+ // Add metadata and user messages queries if search is needed
1436
+ if (includeSearchData) {
1437
+ const metadataFilters = buildBaseFilters();
1438
+ metadataFilters.push(
1439
+ {
1440
+ key: { key: SPAN_KEYS.TENANT_ID, ...QUERY_FIELD_CONFIGS.STRING_TAG },
1441
+ op: OPERATORS.EXISTS,
1442
+ value: '',
1443
+ },
1444
+ {
1445
+ key: { key: SPAN_KEYS.AGENT_ID, ...QUERY_FIELD_CONFIGS.STRING_TAG },
1446
+ op: OPERATORS.EXISTS,
1447
+ value: '',
1448
+ }
1449
+ );
1450
+
1451
+ builderQueries.conversationMetadata = {
1452
+ dataSource: DATA_SOURCES.TRACES,
1453
+ queryName: QUERY_EXPRESSIONS.CONVERSATION_METADATA,
1454
+ aggregateOperator: AGGREGATE_OPERATORS.COUNT,
1455
+ aggregateAttribute: {
1456
+ key: SPAN_KEYS.SPAN_ID,
1457
+ ...QUERY_FIELD_CONFIGS.STRING_TAG_COLUMN,
1458
+ },
1459
+ filters: { op: OPERATORS.AND, items: metadataFilters },
1460
+ groupBy: [
1461
+ {
1462
+ key: SPAN_KEYS.CONVERSATION_ID,
1463
+ ...QUERY_FIELD_CONFIGS.STRING_TAG,
1464
+ },
1465
+ { key: SPAN_KEYS.TENANT_ID, ...QUERY_FIELD_CONFIGS.STRING_TAG },
1466
+ { key: SPAN_KEYS.AGENT_ID, ...QUERY_FIELD_CONFIGS.STRING_TAG },
1467
+ { key: SPAN_KEYS.AGENT_NAME, ...QUERY_FIELD_CONFIGS.STRING_TAG },
1468
+ ],
1469
+ expression: QUERY_EXPRESSIONS.CONVERSATION_METADATA,
1470
+ reduceTo: REDUCE_OPERATIONS.SUM,
1471
+ stepInterval: QUERY_DEFAULTS.STEP_INTERVAL,
1472
+ orderBy: [{ columnName: SPAN_KEYS.TIMESTAMP, order: ORDER_DIRECTIONS.DESC }],
1473
+ offset: QUERY_DEFAULTS.OFFSET,
1474
+ disabled: QUERY_DEFAULTS.DISABLED,
1475
+ having: QUERY_DEFAULTS.HAVING,
1476
+ legend: QUERY_DEFAULTS.LEGEND,
1477
+ limit: QUERY_DEFAULTS.LIMIT_UNLIMITED,
1478
+ };
1479
+
1480
+ const userMessagesFilters = buildBaseFilters();
1481
+ userMessagesFilters.push({
1482
+ key: {
1483
+ key: SPAN_KEYS.MESSAGE_CONTENT,
1484
+ ...QUERY_FIELD_CONFIGS.STRING_TAG,
1485
+ },
1486
+ op: OPERATORS.EXISTS,
1487
+ value: '',
1488
+ });
1489
+
1490
+ builderQueries.userMessages = {
1491
+ dataSource: DATA_SOURCES.TRACES,
1492
+ queryName: QUERY_EXPRESSIONS.USER_MESSAGES,
1493
+ aggregateOperator: AGGREGATE_OPERATORS.MIN,
1494
+ aggregateAttribute: {
1495
+ key: SPAN_KEYS.TIMESTAMP,
1496
+ ...QUERY_FIELD_CONFIGS.INT64_TAG_COLUMN,
1497
+ },
1498
+ filters: { op: OPERATORS.AND, items: userMessagesFilters },
1499
+ groupBy: [
1500
+ {
1501
+ key: SPAN_KEYS.CONVERSATION_ID,
1502
+ ...QUERY_FIELD_CONFIGS.STRING_TAG,
1503
+ },
1504
+ {
1505
+ key: SPAN_KEYS.MESSAGE_CONTENT,
1506
+ ...QUERY_FIELD_CONFIGS.STRING_TAG,
1507
+ },
1508
+ ],
1509
+ expression: QUERY_EXPRESSIONS.USER_MESSAGES,
1510
+ reduceTo: REDUCE_OPERATIONS.MIN,
1511
+ stepInterval: QUERY_DEFAULTS.STEP_INTERVAL,
1512
+ orderBy: [{ columnName: SPAN_KEYS.TIMESTAMP, order: ORDER_DIRECTIONS.ASC }],
1513
+ offset: QUERY_DEFAULTS.OFFSET,
1514
+ disabled: QUERY_DEFAULTS.DISABLED,
1515
+ having: QUERY_DEFAULTS.HAVING,
1516
+ legend: QUERY_DEFAULTS.LEGEND,
1517
+ limit: QUERY_DEFAULTS.LIMIT_UNLIMITED,
1518
+ };
1519
+ }
1520
+
1521
+ return {
1522
+ start,
1523
+ end,
1524
+ step: QUERY_DEFAULTS.STEP,
1525
+ variables: {},
1526
+ compositeQuery: {
1527
+ queryType: QUERY_TYPES.BUILDER,
1528
+ panelType: PANEL_TYPES.TABLE,
1529
+ builderQueries,
1530
+ },
1531
+ dataSource: DATA_SOURCES.TRACES,
1532
+ projectId,
1533
+ };
1534
+ }
1535
+
1536
+ private buildFilteredConversationsPayload(
1537
+ start: number,
1538
+ end: number,
1539
+ filters: SpanFilterOptions,
1540
+ projectId?: string
1541
+ ) {
1542
+ const items: any[] = [
1543
+ {
1544
+ key: {
1545
+ key: SPAN_KEYS.CONVERSATION_ID,
1546
+ ...QUERY_FIELD_CONFIGS.STRING_TAG,
1547
+ },
1548
+ op: OPERATORS.EXISTS,
1549
+ value: '',
1550
+ },
1551
+ ];
1552
+
1553
+ if (filters.spanName) {
1554
+ items.push({
1555
+ key: { key: SPAN_KEYS.NAME, ...QUERY_FIELD_CONFIGS.STRING_TAG_COLUMN },
1556
+ op: OPERATORS.EQUALS,
1557
+ value: filters.spanName,
1558
+ });
1559
+ }
1560
+
1561
+ // Attribute filters — pass typed booleans/numbers where possible
1562
+ for (const attr of filters.attributes ?? []) {
1563
+ const op = attr.operator ?? OPERATORS.EQUALS;
1564
+ let value: any = asTypedFilterValue(attr.value);
1565
+ let dataType: 'string' | 'int64' | 'float64' | 'bool' = 'string';
1566
+ if (typeof value === 'boolean') dataType = 'bool';
1567
+ else if (typeof value === 'number') dataType = Number.isInteger(value) ? 'int64' : 'float64';
1568
+
1569
+ // exists/nexists ignore value
1570
+ if (op === OPERATORS.EXISTS || op === OPERATORS.NOT_EXISTS) {
1571
+ items.push({
1572
+ key: { key: attr.key, ...QUERY_FIELD_CONFIGS.STRING_TAG },
1573
+ op,
1574
+ value: '',
1575
+ });
1576
+ continue;
1577
+ }
1578
+
1579
+ // LIKE operators add wildcards if absent
1580
+ if (
1581
+ (op === OPERATORS.LIKE || op === OPERATORS.NOT_LIKE) &&
1582
+ typeof value === 'string' &&
1583
+ !value.includes('%')
1584
+ ) {
1585
+ value = `%${value}%`;
1586
+ }
1587
+
1588
+ // For numeric equality, keep exact-match pair (>= & <=) for robustness
1589
+ if ((dataType === 'int64' || dataType === 'float64') && op === OPERATORS.EQUALS) {
1590
+ const config =
1591
+ dataType === 'int64' ? QUERY_FIELD_CONFIGS.INT64_TAG : QUERY_FIELD_CONFIGS.FLOAT64_TAG;
1592
+ items.push({
1593
+ key: { key: attr.key, ...config },
1594
+ op: OPERATORS.GREATER_THAN_OR_EQUAL,
1595
+ value,
1596
+ });
1597
+ items.push({
1598
+ key: { key: attr.key, ...config },
1599
+ op: OPERATORS.LESS_THAN_OR_EQUAL,
1600
+ value,
1601
+ });
1602
+ } else {
1603
+ const config =
1604
+ dataType === 'string'
1605
+ ? QUERY_FIELD_CONFIGS.STRING_TAG
1606
+ : dataType === 'int64'
1607
+ ? QUERY_FIELD_CONFIGS.INT64_TAG
1608
+ : dataType === 'float64'
1609
+ ? QUERY_FIELD_CONFIGS.FLOAT64_TAG
1610
+ : QUERY_FIELD_CONFIGS.BOOL_TAG;
1611
+ items.push({ key: { key: attr.key, ...config }, op, value });
1612
+ }
1613
+ }
1614
+
1615
+ if (projectId) {
1616
+ items.push({
1617
+ key: { key: SPAN_KEYS.PROJECT_ID, ...QUERY_FIELD_CONFIGS.STRING_TAG },
1618
+ op: OPERATORS.EQUALS,
1619
+ value: projectId,
1620
+ });
1621
+ }
1622
+
1623
+ return {
1229
1624
  start,
1230
1625
  end,
1231
1626
  step: QUERY_DEFAULTS.STEP,
@@ -1266,12 +1661,297 @@ class SigNozStatsAPI {
1266
1661
  };
1267
1662
  }
1268
1663
 
1664
+ private buildAggregateBadgesPayload(
1665
+ start: number,
1666
+ end: number,
1667
+ projectId?: string,
1668
+ agentId?: string,
1669
+ conversationIds?: string[]
1670
+ ) {
1671
+ const buildBaseFilters = (): any[] => {
1672
+ const items: any[] = [];
1673
+
1674
+ if (projectId) {
1675
+ items.push({
1676
+ key: {
1677
+ key: SPAN_KEYS.PROJECT_ID,
1678
+ ...QUERY_FIELD_CONFIGS.STRING_TAG,
1679
+ },
1680
+ op: OPERATORS.EQUALS,
1681
+ value: projectId,
1682
+ });
1683
+ }
1684
+
1685
+ if (agentId) {
1686
+ items.push({
1687
+ key: {
1688
+ key: SPAN_KEYS.AGENT_ID,
1689
+ ...QUERY_FIELD_CONFIGS.STRING_TAG,
1690
+ },
1691
+ op: OPERATORS.EQUALS,
1692
+ value: agentId,
1693
+ });
1694
+ }
1695
+ return items;
1696
+ };
1697
+
1698
+ const buildConversationIdFilter = (): any[] => {
1699
+ if (conversationIds && conversationIds.length > 0) {
1700
+ return [
1701
+ {
1702
+ key: {
1703
+ key: SPAN_KEYS.CONVERSATION_ID,
1704
+ ...QUERY_FIELD_CONFIGS.STRING_TAG,
1705
+ },
1706
+ op: OPERATORS.IN,
1707
+ value: conversationIds,
1708
+ },
1709
+ ];
1710
+ }
1711
+ return [
1712
+ {
1713
+ key: {
1714
+ key: SPAN_KEYS.CONVERSATION_ID,
1715
+ ...QUERY_FIELD_CONFIGS.STRING_TAG,
1716
+ },
1717
+ op: OPERATORS.EXISTS,
1718
+ value: '',
1719
+ },
1720
+ ];
1721
+ };
1722
+
1723
+ const baseFilters = buildBaseFilters();
1724
+ const conversationIdFilters = buildConversationIdFilter();
1725
+
1726
+ return {
1727
+ start,
1728
+ end,
1729
+ step: QUERY_DEFAULTS.STEP,
1730
+ variables: {},
1731
+ compositeQuery: {
1732
+ queryType: QUERY_TYPES.BUILDER,
1733
+ panelType: PANEL_TYPES.TABLE,
1734
+ builderQueries: {
1735
+ totalToolCalls: {
1736
+ dataSource: DATA_SOURCES.TRACES,
1737
+ queryName: 'totalToolCalls',
1738
+ aggregateOperator: AGGREGATE_OPERATORS.COUNT,
1739
+ aggregateAttribute: {
1740
+ key: SPAN_KEYS.SPAN_ID,
1741
+ ...QUERY_FIELD_CONFIGS.STRING_TAG_COLUMN,
1742
+ },
1743
+ filters: {
1744
+ op: OPERATORS.AND,
1745
+ items: [
1746
+ ...baseFilters,
1747
+ {
1748
+ key: {
1749
+ key: SPAN_KEYS.NAME,
1750
+ ...QUERY_FIELD_CONFIGS.STRING_TAG_COLUMN,
1751
+ },
1752
+ op: OPERATORS.EQUALS,
1753
+ value: SPAN_NAMES.AI_TOOL_CALL,
1754
+ },
1755
+ ...conversationIdFilters,
1756
+ {
1757
+ key: {
1758
+ key: SPAN_KEYS.AI_TOOL_TYPE,
1759
+ ...QUERY_FIELD_CONFIGS.STRING_TAG,
1760
+ },
1761
+ op: OPERATORS.EQUALS,
1762
+ value: AI_TOOL_TYPES.MCP,
1763
+ },
1764
+ ],
1765
+ },
1766
+ groupBy: QUERY_DEFAULTS.EMPTY_GROUP_BY,
1767
+ expression: 'totalToolCalls',
1768
+ reduceTo: REDUCE_OPERATIONS.SUM,
1769
+ stepInterval: QUERY_DEFAULTS.STEP_INTERVAL,
1770
+ orderBy: [],
1771
+ offset: QUERY_DEFAULTS.OFFSET,
1772
+ disabled: QUERY_DEFAULTS.DISABLED,
1773
+ having: QUERY_DEFAULTS.HAVING,
1774
+ legend: QUERY_DEFAULTS.LEGEND,
1775
+ limit: QUERY_DEFAULTS.LIMIT_UNLIMITED,
1776
+ },
1777
+
1778
+ totalTransfers: {
1779
+ dataSource: DATA_SOURCES.TRACES,
1780
+ queryName: 'totalTransfers',
1781
+ aggregateOperator: AGGREGATE_OPERATORS.COUNT,
1782
+ aggregateAttribute: {
1783
+ key: SPAN_KEYS.SPAN_ID,
1784
+ ...QUERY_FIELD_CONFIGS.STRING_TAG_COLUMN,
1785
+ },
1786
+ filters: {
1787
+ op: OPERATORS.AND,
1788
+ items: [
1789
+ ...baseFilters,
1790
+ {
1791
+ key: {
1792
+ key: SPAN_KEYS.NAME,
1793
+ ...QUERY_FIELD_CONFIGS.STRING_TAG_COLUMN,
1794
+ },
1795
+ op: OPERATORS.EQUALS,
1796
+ value: SPAN_NAMES.AI_TOOL_CALL,
1797
+ },
1798
+ {
1799
+ key: {
1800
+ key: SPAN_KEYS.AI_TOOL_TYPE,
1801
+ ...QUERY_FIELD_CONFIGS.STRING_TAG,
1802
+ },
1803
+ op: OPERATORS.EQUALS,
1804
+ value: AI_TOOL_TYPES.TRANSFER,
1805
+ },
1806
+ ...conversationIdFilters,
1807
+ ],
1808
+ },
1809
+ groupBy: QUERY_DEFAULTS.EMPTY_GROUP_BY,
1810
+ expression: 'totalTransfers',
1811
+ reduceTo: REDUCE_OPERATIONS.SUM,
1812
+ stepInterval: QUERY_DEFAULTS.STEP_INTERVAL,
1813
+ orderBy: [],
1814
+ offset: QUERY_DEFAULTS.OFFSET,
1815
+ disabled: QUERY_DEFAULTS.DISABLED,
1816
+ having: QUERY_DEFAULTS.HAVING,
1817
+ legend: QUERY_DEFAULTS.LEGEND,
1818
+ limit: QUERY_DEFAULTS.LIMIT_UNLIMITED,
1819
+ },
1820
+
1821
+ totalDelegations: {
1822
+ dataSource: DATA_SOURCES.TRACES,
1823
+ queryName: 'totalDelegations',
1824
+ aggregateOperator: AGGREGATE_OPERATORS.COUNT,
1825
+ aggregateAttribute: {
1826
+ key: SPAN_KEYS.SPAN_ID,
1827
+ ...QUERY_FIELD_CONFIGS.STRING_TAG_COLUMN,
1828
+ },
1829
+ filters: {
1830
+ op: OPERATORS.AND,
1831
+ items: [
1832
+ ...baseFilters,
1833
+ {
1834
+ key: {
1835
+ key: SPAN_KEYS.NAME,
1836
+ ...QUERY_FIELD_CONFIGS.STRING_TAG_COLUMN,
1837
+ },
1838
+ op: OPERATORS.EQUALS,
1839
+ value: SPAN_NAMES.AI_TOOL_CALL,
1840
+ },
1841
+ {
1842
+ key: {
1843
+ key: SPAN_KEYS.AI_TOOL_TYPE,
1844
+ ...QUERY_FIELD_CONFIGS.STRING_TAG,
1845
+ },
1846
+ op: OPERATORS.EQUALS,
1847
+ value: AI_TOOL_TYPES.DELEGATION,
1848
+ },
1849
+ ...conversationIdFilters,
1850
+ ],
1851
+ },
1852
+ groupBy: QUERY_DEFAULTS.EMPTY_GROUP_BY,
1853
+ expression: 'totalDelegations',
1854
+ reduceTo: REDUCE_OPERATIONS.SUM,
1855
+ stepInterval: QUERY_DEFAULTS.STEP_INTERVAL,
1856
+ orderBy: [],
1857
+ offset: QUERY_DEFAULTS.OFFSET,
1858
+ disabled: QUERY_DEFAULTS.DISABLED,
1859
+ having: QUERY_DEFAULTS.HAVING,
1860
+ legend: QUERY_DEFAULTS.LEGEND,
1861
+ limit: QUERY_DEFAULTS.LIMIT_UNLIMITED,
1862
+ },
1863
+
1864
+ totalAICalls: {
1865
+ dataSource: DATA_SOURCES.TRACES,
1866
+ queryName: 'totalAICalls',
1867
+ aggregateOperator: AGGREGATE_OPERATORS.COUNT,
1868
+ aggregateAttribute: {
1869
+ key: SPAN_KEYS.SPAN_ID,
1870
+ ...QUERY_FIELD_CONFIGS.STRING_TAG_COLUMN,
1871
+ },
1872
+ filters: {
1873
+ op: OPERATORS.AND,
1874
+ items: [
1875
+ ...baseFilters,
1876
+ {
1877
+ key: {
1878
+ key: SPAN_KEYS.AI_OPERATION_ID,
1879
+ ...QUERY_FIELD_CONFIGS.STRING_TAG,
1880
+ },
1881
+ op: OPERATORS.EQUALS,
1882
+ value: AI_OPERATIONS.GENERATE_TEXT,
1883
+ },
1884
+ ...conversationIdFilters,
1885
+ ],
1886
+ },
1887
+ groupBy: QUERY_DEFAULTS.EMPTY_GROUP_BY,
1888
+ expression: 'totalAICalls',
1889
+ reduceTo: REDUCE_OPERATIONS.SUM,
1890
+ stepInterval: QUERY_DEFAULTS.STEP_INTERVAL,
1891
+ orderBy: [],
1892
+ offset: QUERY_DEFAULTS.OFFSET,
1893
+ disabled: QUERY_DEFAULTS.DISABLED,
1894
+ having: QUERY_DEFAULTS.HAVING,
1895
+ legend: QUERY_DEFAULTS.LEGEND,
1896
+ limit: QUERY_DEFAULTS.LIMIT_UNLIMITED,
1897
+ },
1898
+
1899
+ totalConversations: {
1900
+ dataSource: DATA_SOURCES.TRACES,
1901
+ queryName: 'totalConversations',
1902
+ aggregateOperator: AGGREGATE_OPERATORS.COUNT_DISTINCT,
1903
+ aggregateAttribute: {
1904
+ key: SPAN_KEYS.CONVERSATION_ID,
1905
+ ...QUERY_FIELD_CONFIGS.STRING_TAG,
1906
+ },
1907
+ filters: {
1908
+ op: OPERATORS.AND,
1909
+ items: [
1910
+ ...baseFilters,
1911
+ ...conversationIdFilters,
1912
+ {
1913
+ key: {
1914
+ key: SPAN_KEYS.TENANT_ID,
1915
+ ...QUERY_FIELD_CONFIGS.STRING_TAG,
1916
+ },
1917
+ op: OPERATORS.EXISTS,
1918
+ value: '',
1919
+ },
1920
+ {
1921
+ key: {
1922
+ key: SPAN_KEYS.AGENT_ID,
1923
+ ...QUERY_FIELD_CONFIGS.STRING_TAG,
1924
+ },
1925
+ op: OPERATORS.EXISTS,
1926
+ value: '',
1927
+ },
1928
+ ],
1929
+ },
1930
+ groupBy: QUERY_DEFAULTS.EMPTY_GROUP_BY,
1931
+ expression: 'totalConversations',
1932
+ reduceTo: REDUCE_OPERATIONS.SUM,
1933
+ stepInterval: QUERY_DEFAULTS.STEP_INTERVAL,
1934
+ orderBy: [],
1935
+ offset: QUERY_DEFAULTS.OFFSET,
1936
+ disabled: QUERY_DEFAULTS.DISABLED,
1937
+ having: QUERY_DEFAULTS.HAVING,
1938
+ legend: QUERY_DEFAULTS.LEGEND,
1939
+ limit: QUERY_DEFAULTS.LIMIT_UNLIMITED,
1940
+ },
1941
+ },
1942
+ },
1943
+ dataSource: DATA_SOURCES.TRACES,
1944
+ projectId,
1945
+ };
1946
+ }
1947
+
1269
1948
  private buildCombinedPayload(
1270
1949
  start: number,
1271
1950
  end: number,
1272
1951
  _filters?: SpanFilterOptions,
1273
1952
  projectId?: string,
1274
- agentId?: string
1953
+ agentId?: string,
1954
+ conversationIds?: string[]
1275
1955
  ) {
1276
1956
  const withProjectAndAgent = (items: any[]) => {
1277
1957
  let filtered = items;
@@ -1301,6 +1981,33 @@ class SigNozStatsAPI {
1301
1981
  },
1302
1982
  ];
1303
1983
  }
1984
+ // Add conversation ID filters if provided (for pagination optimization)
1985
+ if (conversationIds && conversationIds.length > 0) {
1986
+ filtered = [
1987
+ ...filtered,
1988
+ {
1989
+ key: {
1990
+ key: SPAN_KEYS.CONVERSATION_ID,
1991
+ ...QUERY_FIELD_CONFIGS.STRING_TAG,
1992
+ },
1993
+ op: OPERATORS.IN,
1994
+ value: conversationIds,
1995
+ },
1996
+ ];
1997
+ } else {
1998
+ // Only add EXISTS check if no specific IDs provided
1999
+ filtered = [
2000
+ ...filtered,
2001
+ {
2002
+ key: {
2003
+ key: SPAN_KEYS.CONVERSATION_ID,
2004
+ ...QUERY_FIELD_CONFIGS.STRING_TAG,
2005
+ },
2006
+ op: OPERATORS.EXISTS,
2007
+ value: '',
2008
+ },
2009
+ ];
2010
+ }
1304
2011
  return filtered;
1305
2012
  };
1306
2013
 
@@ -1332,14 +2039,6 @@ class SigNozStatsAPI {
1332
2039
  op: OPERATORS.EQUALS,
1333
2040
  value: SPAN_NAMES.AI_TOOL_CALL,
1334
2041
  },
1335
- {
1336
- key: {
1337
- key: SPAN_KEYS.CONVERSATION_ID,
1338
- ...QUERY_FIELD_CONFIGS.STRING_TAG,
1339
- },
1340
- op: OPERATORS.EXISTS,
1341
- value: '',
1342
- },
1343
2042
  {
1344
2043
  key: {
1345
2044
  key: SPAN_KEYS.AI_TOOL_TYPE,
@@ -1398,14 +2097,6 @@ class SigNozStatsAPI {
1398
2097
  op: OPERATORS.EQUALS,
1399
2098
  value: AI_TOOL_TYPES.TRANSFER,
1400
2099
  },
1401
- {
1402
- key: {
1403
- key: SPAN_KEYS.CONVERSATION_ID,
1404
- ...QUERY_FIELD_CONFIGS.STRING_TAG,
1405
- },
1406
- op: OPERATORS.EXISTS,
1407
- value: '',
1408
- },
1409
2100
  ]),
1410
2101
  },
1411
2102
  groupBy: [
@@ -1460,14 +2151,6 @@ class SigNozStatsAPI {
1460
2151
  op: OPERATORS.EQUALS,
1461
2152
  value: AI_TOOL_TYPES.DELEGATION,
1462
2153
  },
1463
- {
1464
- key: {
1465
- key: SPAN_KEYS.CONVERSATION_ID,
1466
- ...QUERY_FIELD_CONFIGS.STRING_TAG,
1467
- },
1468
- op: OPERATORS.EXISTS,
1469
- value: '',
1470
- },
1471
2154
  ]),
1472
2155
  },
1473
2156
  groupBy: [
@@ -1506,14 +2189,6 @@ class SigNozStatsAPI {
1506
2189
  filters: {
1507
2190
  op: OPERATORS.AND,
1508
2191
  items: withProjectAndAgent([
1509
- {
1510
- key: {
1511
- key: SPAN_KEYS.CONVERSATION_ID,
1512
- ...QUERY_FIELD_CONFIGS.STRING_TAG,
1513
- },
1514
- op: OPERATORS.EXISTS,
1515
- value: '',
1516
- },
1517
2192
  {
1518
2193
  key: {
1519
2194
  key: SPAN_KEYS.TENANT_ID,
@@ -1571,14 +2246,6 @@ class SigNozStatsAPI {
1571
2246
  op: OPERATORS.EQUALS,
1572
2247
  value: AI_OPERATIONS.GENERATE_TEXT,
1573
2248
  },
1574
- {
1575
- key: {
1576
- key: SPAN_KEYS.CONVERSATION_ID,
1577
- ...QUERY_FIELD_CONFIGS.STRING_TAG,
1578
- },
1579
- op: OPERATORS.EXISTS,
1580
- value: '',
1581
- },
1582
2249
  ]),
1583
2250
  },
1584
2251
  groupBy: [
@@ -1613,16 +2280,7 @@ class SigNozStatsAPI {
1613
2280
  },
1614
2281
  filters: {
1615
2282
  op: OPERATORS.AND,
1616
- items: withProjectAndAgent([
1617
- {
1618
- key: {
1619
- key: SPAN_KEYS.CONVERSATION_ID,
1620
- ...QUERY_FIELD_CONFIGS.STRING_TAG,
1621
- },
1622
- op: OPERATORS.EXISTS,
1623
- value: '',
1624
- },
1625
- ]),
2283
+ items: withProjectAndAgent([]),
1626
2284
  },
1627
2285
  groupBy: [
1628
2286
  {
@@ -1660,14 +2318,6 @@ class SigNozStatsAPI {
1660
2318
  op: OPERATORS.EQUALS,
1661
2319
  value: true,
1662
2320
  },
1663
- {
1664
- key: {
1665
- key: SPAN_KEYS.CONVERSATION_ID,
1666
- ...QUERY_FIELD_CONFIGS.STRING_TAG,
1667
- },
1668
- op: OPERATORS.EXISTS,
1669
- value: '',
1670
- },
1671
2321
  ]),
1672
2322
  },
1673
2323
  groupBy: [
@@ -1710,14 +2360,6 @@ class SigNozStatsAPI {
1710
2360
  op: OPERATORS.EXISTS,
1711
2361
  value: '',
1712
2362
  },
1713
- {
1714
- key: {
1715
- key: SPAN_KEYS.CONVERSATION_ID,
1716
- ...QUERY_FIELD_CONFIGS.STRING_TAG,
1717
- },
1718
- op: OPERATORS.EXISTS,
1719
- value: '',
1720
- },
1721
2363
  ]),
1722
2364
  },
1723
2365
  groupBy: [