@inkeep/agents-manage-ui 0.38.2 → 0.39.0

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 (284) hide show
  1. package/.next/standalone/agents-manage-ui/.next/BUILD_ID +1 -1
  2. package/.next/standalone/agents-manage-ui/.next/app-path-routes-manifest.json +8 -7
  3. package/.next/standalone/agents-manage-ui/.next/build-manifest.json +3 -3
  4. package/.next/standalone/agents-manage-ui/.next/prerender-manifest.json +28 -3
  5. package/.next/standalone/agents-manage-ui/.next/react-loadable-manifest.json +44 -44
  6. package/.next/standalone/agents-manage-ui/.next/routes-manifest.json +6 -0
  7. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/page.js +2 -2
  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 +7 -7
  10. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/[agentId]/page_client-reference-manifest.js +1 -1
  11. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/page.js +2 -2
  12. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/page_client-reference-manifest.js +1 -1
  13. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/api-keys/page.js +2 -2
  14. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/api-keys/page_client-reference-manifest.js +1 -1
  15. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page.js +2 -2
  16. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page.js.nft.json +1 -1
  17. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page_client-reference-manifest.js +1 -1
  18. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/new/page.js +2 -2
  19. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/new/page.js.nft.json +1 -1
  20. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/new/page_client-reference-manifest.js +1 -1
  21. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/page.js +2 -2
  22. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/page_client-reference-manifest.js +1 -1
  23. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/page.js +1 -1
  24. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/page.js.nft.json +1 -1
  25. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/page_client-reference-manifest.js +1 -1
  26. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/new/page.js +2 -2
  27. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/new/page.js.nft.json +1 -1
  28. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/new/page_client-reference-manifest.js +1 -1
  29. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/page.js +1 -1
  30. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/page_client-reference-manifest.js +1 -1
  31. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page.js +2 -2
  32. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page_client-reference-manifest.js +1 -1
  33. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page.js +2 -2
  34. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page_client-reference-manifest.js +1 -1
  35. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/page.js +2 -2
  36. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/page_client-reference-manifest.js +1 -1
  37. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page.js +2 -2
  38. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page.js.nft.json +1 -1
  39. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page_client-reference-manifest.js +1 -1
  40. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/page.js +2 -2
  41. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/page_client-reference-manifest.js +1 -1
  42. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/page.js +1 -1
  43. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/page_client-reference-manifest.js +1 -1
  44. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/edit/page.js +2 -2
  45. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/edit/page.js.nft.json +1 -1
  46. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/edit/page_client-reference-manifest.js +1 -1
  47. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/page.js +2 -2
  48. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/page_client-reference-manifest.js +1 -1
  49. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/new/page.js +2 -2
  50. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/new/page.js.nft.json +1 -1
  51. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/new/page_client-reference-manifest.js +1 -1
  52. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/page.js +2 -2
  53. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/page_client-reference-manifest.js +1 -1
  54. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page.js +2 -2
  55. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page.js.nft.json +1 -1
  56. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page_client-reference-manifest.js +1 -1
  57. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page.js +2 -2
  58. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page.js.nft.json +1 -1
  59. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page_client-reference-manifest.js +1 -1
  60. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/new/page.js +2 -2
  61. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/new/page.js.nft.json +1 -1
  62. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/new/page_client-reference-manifest.js +1 -1
  63. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/page.js +2 -2
  64. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/page_client-reference-manifest.js +1 -1
  65. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/page.js +2 -2
  66. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/page_client-reference-manifest.js +1 -1
  67. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/settings/page.js +2 -2
  68. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/settings/page_client-reference-manifest.js +1 -1
  69. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page.js +2 -2
  70. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page.js.nft.json +1 -1
  71. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page_client-reference-manifest.js +1 -1
  72. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page.js +3 -3
  73. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page_client-reference-manifest.js +1 -1
  74. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/page.js +2 -2
  75. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/page.js.nft.json +1 -1
  76. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/page_client-reference-manifest.js +1 -1
  77. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/tool-calls/page.js +2 -2
  78. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/tool-calls/page.js.nft.json +1 -1
  79. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/tool-calls/page_client-reference-manifest.js +1 -1
  80. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/page.js +2 -2
  81. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/page_client-reference-manifest.js +1 -1
  82. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/settings/page.js +2 -2
  83. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/settings/page_client-reference-manifest.js +1 -1
  84. package/.next/standalone/agents-manage-ui/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  85. package/.next/standalone/agents-manage-ui/.next/server/app/_global-error.html +2 -2
  86. package/.next/standalone/agents-manage-ui/.next/server/app/_global-error.rsc +2 -2
  87. package/.next/standalone/agents-manage-ui/.next/server/app/_global-error.segments/_full.segment.rsc +2 -2
  88. package/.next/standalone/agents-manage-ui/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  89. package/.next/standalone/agents-manage-ui/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  90. package/.next/standalone/agents-manage-ui/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  91. package/.next/standalone/agents-manage-ui/.next/server/app/_global-error.segments/_index.segment.rsc +2 -2
  92. package/.next/standalone/agents-manage-ui/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  93. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  94. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found.html +1 -1
  95. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found.rsc +2 -2
  96. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  97. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  98. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  99. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  100. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  101. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  102. package/.next/standalone/agents-manage-ui/.next/server/app/accept-invitation/[invitationId]/page_client-reference-manifest.js +1 -1
  103. package/.next/standalone/agents-manage-ui/.next/server/app/api/data-components/[dataComponentId]/generate-render/route.js +8 -8
  104. package/.next/standalone/agents-manage-ui/.next/server/app/api/data-components/[dataComponentId]/generate-render/route_client-reference-manifest.js +1 -1
  105. package/.next/standalone/agents-manage-ui/.next/server/app/api/signoz/conversations/[conversationId]/route_client-reference-manifest.js +1 -1
  106. package/.next/standalone/agents-manage-ui/.next/server/app/api/signoz/route_client-reference-manifest.js +1 -1
  107. package/.next/standalone/agents-manage-ui/.next/server/app/device/page.js +2 -0
  108. package/.next/standalone/agents-manage-ui/.next/server/app/device/page.js.nft.json +1 -0
  109. package/.next/standalone/agents-manage-ui/.next/server/app/device/page_client-reference-manifest.js +1 -0
  110. package/.next/standalone/agents-manage-ui/.next/server/app/device.html +1 -0
  111. package/.next/standalone/agents-manage-ui/.next/server/app/device.meta +15 -0
  112. package/.next/standalone/agents-manage-ui/.next/server/app/device.rsc +26 -0
  113. package/.next/standalone/agents-manage-ui/.next/server/app/device.segments/_full.segment.rsc +26 -0
  114. package/.next/standalone/agents-manage-ui/.next/server/app/device.segments/_head.segment.rsc +8 -0
  115. package/.next/standalone/agents-manage-ui/.next/server/app/device.segments/_index.segment.rsc +11 -0
  116. package/.next/standalone/agents-manage-ui/.next/server/app/device.segments/_tree.segment.rsc +5 -0
  117. package/.next/standalone/agents-manage-ui/.next/server/app/device.segments/device/__PAGE__.segment.rsc +9 -0
  118. package/.next/standalone/agents-manage-ui/.next/server/app/device.segments/device.segment.rsc +4 -0
  119. package/.next/standalone/agents-manage-ui/.next/server/app/index.html +1 -1
  120. package/.next/standalone/agents-manage-ui/.next/server/app/index.rsc +3 -3
  121. package/.next/standalone/agents-manage-ui/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  122. package/.next/standalone/agents-manage-ui/.next/server/app/index.segments/_full.segment.rsc +3 -3
  123. package/.next/standalone/agents-manage-ui/.next/server/app/index.segments/_head.segment.rsc +1 -1
  124. package/.next/standalone/agents-manage-ui/.next/server/app/index.segments/_index.segment.rsc +2 -2
  125. package/.next/standalone/agents-manage-ui/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  126. package/.next/standalone/agents-manage-ui/.next/server/app/login/page.js +1 -1
  127. package/.next/standalone/agents-manage-ui/.next/server/app/login/page_client-reference-manifest.js +1 -1
  128. package/.next/standalone/agents-manage-ui/.next/server/app/login.html +1 -1
  129. package/.next/standalone/agents-manage-ui/.next/server/app/login.rsc +3 -3
  130. package/.next/standalone/agents-manage-ui/.next/server/app/login.segments/_full.segment.rsc +3 -3
  131. package/.next/standalone/agents-manage-ui/.next/server/app/login.segments/_head.segment.rsc +1 -1
  132. package/.next/standalone/agents-manage-ui/.next/server/app/login.segments/_index.segment.rsc +2 -2
  133. package/.next/standalone/agents-manage-ui/.next/server/app/login.segments/_tree.segment.rsc +1 -1
  134. package/.next/standalone/agents-manage-ui/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  135. package/.next/standalone/agents-manage-ui/.next/server/app/login.segments/login.segment.rsc +1 -1
  136. package/.next/standalone/agents-manage-ui/.next/server/app/logout/route_client-reference-manifest.js +1 -1
  137. package/.next/standalone/agents-manage-ui/.next/server/app/no-organization/page_client-reference-manifest.js +1 -1
  138. package/.next/standalone/agents-manage-ui/.next/server/app/no-organization.html +1 -1
  139. package/.next/standalone/agents-manage-ui/.next/server/app/no-organization.rsc +3 -3
  140. package/.next/standalone/agents-manage-ui/.next/server/app/no-organization.segments/_full.segment.rsc +3 -3
  141. package/.next/standalone/agents-manage-ui/.next/server/app/no-organization.segments/_head.segment.rsc +1 -1
  142. package/.next/standalone/agents-manage-ui/.next/server/app/no-organization.segments/_index.segment.rsc +2 -2
  143. package/.next/standalone/agents-manage-ui/.next/server/app/no-organization.segments/_tree.segment.rsc +1 -1
  144. package/.next/standalone/agents-manage-ui/.next/server/app/no-organization.segments/no-organization/__PAGE__.segment.rsc +2 -2
  145. package/.next/standalone/agents-manage-ui/.next/server/app/no-organization.segments/no-organization.segment.rsc +1 -1
  146. package/.next/standalone/agents-manage-ui/.next/server/app/page.js +2 -2
  147. package/.next/standalone/agents-manage-ui/.next/server/app/page_client-reference-manifest.js +1 -1
  148. package/.next/standalone/agents-manage-ui/.next/server/app-paths-manifest.json +8 -7
  149. package/.next/standalone/agents-manage-ui/.next/server/chunks/1224.js +1 -0
  150. package/.next/standalone/agents-manage-ui/.next/server/chunks/134.js +1 -0
  151. package/.next/standalone/agents-manage-ui/.next/server/chunks/2191.js +1 -0
  152. package/.next/standalone/agents-manage-ui/.next/server/chunks/2196.js +2 -2
  153. package/.next/standalone/agents-manage-ui/.next/server/chunks/27.js +1 -1
  154. package/.next/standalone/agents-manage-ui/.next/server/chunks/4006.js +1 -0
  155. package/.next/standalone/agents-manage-ui/.next/server/chunks/475.js +1 -1
  156. package/.next/standalone/agents-manage-ui/.next/server/chunks/6125.js +1 -1
  157. package/.next/standalone/agents-manage-ui/.next/server/chunks/6229.js +1 -1
  158. package/.next/standalone/agents-manage-ui/.next/server/chunks/7927.js +1 -1
  159. package/.next/standalone/agents-manage-ui/.next/server/chunks/8202.js +123 -0
  160. package/.next/standalone/agents-manage-ui/.next/server/chunks/8324.js +3 -3
  161. package/.next/standalone/agents-manage-ui/.next/server/chunks/8386.js +2 -2
  162. package/.next/standalone/agents-manage-ui/.next/server/chunks/8870.js +1 -1
  163. package/.next/standalone/agents-manage-ui/.next/server/chunks/8995.js +1 -0
  164. package/.next/standalone/agents-manage-ui/.next/server/chunks/9329.js +1 -1
  165. package/.next/standalone/agents-manage-ui/.next/server/chunks/9637.js +1 -1
  166. package/.next/standalone/agents-manage-ui/.next/server/middleware-build-manifest.js +1 -1
  167. package/.next/standalone/agents-manage-ui/.next/server/middleware-react-loadable-manifest.js +1 -1
  168. package/.next/standalone/agents-manage-ui/.next/server/pages/404.html +1 -1
  169. package/.next/standalone/agents-manage-ui/.next/server/pages/500.html +2 -2
  170. package/.next/standalone/agents-manage-ui/.next/server/server-reference-manifest.js +1 -1
  171. package/.next/standalone/agents-manage-ui/.next/server/server-reference-manifest.json +1 -1
  172. package/.next/standalone/agents-manage-ui/.next/static/128CYTctCNJAhhqIGwzHR/_buildManifest.js +1 -0
  173. package/.next/standalone/agents-manage-ui/.next/static/chunks/{06e323d1.faf1d26dc6d9cfe1.js → 06e323d1.e0698d05e7b1dee1.js} +1 -1
  174. package/.next/standalone/agents-manage-ui/.next/static/chunks/12623.a18fe01966821156.js +23 -0
  175. package/.next/standalone/agents-manage-ui/.next/static/chunks/{13395.6f5f8c02b9dff6fc.js → 13395.89a6ee2e7de7d969.js} +5 -5
  176. package/.next/standalone/agents-manage-ui/.next/static/chunks/{16190.9f93a74b230c1b31.js → 16190.a19685c17a7316aa.js} +1 -1
  177. package/.next/standalone/agents-manage-ui/.next/static/chunks/{177.ff86212411e3c834.js → 177.6bb9d65c1200c0df.js} +1 -1
  178. package/.next/standalone/agents-manage-ui/.next/static/chunks/{19524.8bcd86da204265f8.js → 19524.e25ec2f72e18a146.js} +3 -3
  179. package/.next/standalone/agents-manage-ui/.next/static/chunks/{2074.e3cb114c1c8bbaee.js → 2074.6d18a2c79a784ca8.js} +2 -2
  180. package/.next/standalone/agents-manage-ui/.next/static/chunks/{21129.20bf0aab6c56d27d.js → 21129.55311c26e23a3edd.js} +1 -1
  181. package/.next/standalone/agents-manage-ui/.next/static/chunks/{22751.16de398bd0cf2494.js → 22751.e238be2481d1dd2e.js} +2 -2
  182. package/.next/standalone/agents-manage-ui/.next/static/chunks/{26493.bd2ebe1c07a533a2.js → 26493.b8960dec192e5371.js} +2 -2
  183. package/.next/standalone/agents-manage-ui/.next/static/chunks/{30043.c30f8a3e087001b9.js → 30043.37f3d597bd387417.js} +2 -2
  184. package/.next/standalone/agents-manage-ui/.next/static/chunks/{30347.dfd1789d004a6e17.js → 30347.4a164197b35ba53e.js} +2 -2
  185. package/.next/standalone/agents-manage-ui/.next/static/chunks/{31229fe1.d395e5c492d15744.js → 31229fe1.18c3aabca54deeb3.js} +1 -1
  186. package/.next/standalone/agents-manage-ui/.next/static/chunks/{314.f0fc894b0627075a.js → 314.f1ba226dd80030a5.js} +2 -2
  187. package/.next/standalone/agents-manage-ui/.next/static/chunks/{32609.e78336bf4190f8a2.js → 32609.1d07dac2c84dcd6c.js} +2 -2
  188. package/.next/standalone/agents-manage-ui/.next/static/chunks/33538-913163d6de7a8917.js +1 -0
  189. package/.next/standalone/agents-manage-ui/.next/static/chunks/{34490.c6716f08e5a8d7c6.js → 34490.87575654cf69d7c1.js} +1 -1
  190. package/.next/standalone/agents-manage-ui/.next/static/chunks/{3464.00c161a89963668b.js → 3464.190a5cbfdf3bfb74.js} +2 -2
  191. package/.next/standalone/agents-manage-ui/.next/static/chunks/{34797.250b51dba357712f.js → 34797.c3fb144bf8cdd9d7.js} +1 -1
  192. package/.next/standalone/agents-manage-ui/.next/static/chunks/{33568-25f6aa1950287007.js → 3645-a0ab6abdbe5a63d6.js} +1 -1
  193. package/.next/standalone/agents-manage-ui/.next/static/chunks/{36576.c19a624887f1cf96.js → 36576.b16fe34b8d865e68.js} +2 -2
  194. package/.next/standalone/agents-manage-ui/.next/static/chunks/37211-88a1175c4c962fcf.js +1 -0
  195. package/.next/standalone/agents-manage-ui/.next/static/chunks/{44414.7ca075c549503511.js → 44414.e115057a34d25044.js} +1 -1
  196. package/.next/standalone/agents-manage-ui/.next/static/chunks/{49401.a2f9a1d3c0cd5c02.js → 49401.75fe20b1b82a81b6.js} +3 -3
  197. package/.next/standalone/agents-manage-ui/.next/static/chunks/{50690-fbaaa5e5f7a55d2d.js → 50690-f42850faabd30a72.js} +1 -1
  198. package/.next/standalone/agents-manage-ui/.next/static/chunks/{50840.e1b438290ab6db7b.js → 50840.a1eb18581ee3d56f.js} +1 -1
  199. package/.next/standalone/agents-manage-ui/.next/static/chunks/{50925-89c61b629b4b9312.js → 50925-58e66ef621e03095.js} +1 -1
  200. package/.next/standalone/agents-manage-ui/.next/static/chunks/{52520.9b4e28eec4f1146c.js → 52520.a6dc6a92c69ee1f8.js} +1 -1
  201. package/.next/standalone/agents-manage-ui/.next/static/chunks/52837-64ab73645b83f7ad.js +1 -0
  202. package/.next/standalone/agents-manage-ui/.next/static/chunks/{57261.5711cbd23994721d.js → 57261.c14adc6f99664197.js} +1 -1
  203. package/.next/standalone/agents-manage-ui/.next/static/chunks/{64419.126a60d19f4571bb.js → 64419.e1cc8e7205107518.js} +1 -1
  204. package/.next/standalone/agents-manage-ui/.next/static/chunks/65536-8ab61c40e29c6dd1.js +1 -0
  205. package/.next/standalone/agents-manage-ui/.next/static/chunks/{69316.ce4bf3b6d8fc6e8b.js → 69316.2e249f1d0c68bfe2.js} +1 -1
  206. package/.next/standalone/agents-manage-ui/.next/static/chunks/71303-3c20433fad16d803.js +1 -0
  207. package/.next/standalone/agents-manage-ui/.next/static/chunks/{7256.f87adeffee37d2b5.js → 7256.c11914cf1d88ea27.js} +1 -1
  208. package/.next/standalone/agents-manage-ui/.next/static/chunks/{74103.0b272207688c93c0.js → 74103.f4069dfea3f90645.js} +1 -1
  209. package/.next/standalone/agents-manage-ui/.next/static/chunks/{76624.77da5193c9eb54f9.js → 76624.2a12df862ad42e1d.js} +2 -2
  210. package/.next/standalone/agents-manage-ui/.next/static/chunks/{78295-d8598f3e9deed8c6.js → 78295-a953cea9b4ddefb0.js} +2 -2
  211. package/.next/standalone/agents-manage-ui/.next/static/chunks/{80142.4699314d5d2dd885.js → 80142.8f461a22401c33c4.js} +1 -1
  212. package/.next/standalone/agents-manage-ui/.next/static/chunks/{86235.974118faf8b07740.js → 86235.0b234142623f1d4b.js} +2 -2
  213. package/.next/standalone/agents-manage-ui/.next/static/chunks/{8886.03e98a67ad7ffde0.js → 8886.69edb381a9fd5828.js} +1 -1
  214. package/.next/standalone/agents-manage-ui/.next/static/chunks/90458-e37de70d68c15e0d.js +14 -0
  215. package/.next/standalone/agents-manage-ui/.next/static/chunks/90663-6f3c8d840b9509de.js +1 -0
  216. package/.next/standalone/agents-manage-ui/.next/static/chunks/{94775.9e9be9eab236eebc.js → 94775.2516b47c9f468360.js} +1 -1
  217. package/.next/standalone/agents-manage-ui/.next/static/chunks/{9798a8e4-faa839481f967a8d.js → 9798a8e4-0862900761f4e98d.js} +1 -1
  218. package/.next/standalone/agents-manage-ui/.next/static/chunks/{99624.802da7fc39a43fd1.js → 99624.f6da6213a1c89fc6.js} +2 -2
  219. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/layout-f3f8594fe9907b6a.js +1 -0
  220. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/[agentId]/{page-d18719edcc62b822.js → page-1c08075c1577685d.js} +6 -6
  221. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/{page-899dfd9cc3a19b47.js → page-de611c3b9721895e.js} +1 -1
  222. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/api-keys/{page-9c225515b7592228.js → page-9bb357831529935f.js} +1 -1
  223. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/{page-e64fd0598fd2e8a1.js → page-0abc457717fac6fc.js} +1 -1
  224. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/new/page-e121e7a27c77db87.js +1 -0
  225. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/{page-b0ea0b749b30d3c7.js → page-9947e188205011ff.js} +1 -1
  226. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/{page-98e2a8d5ba3cd923.js → page-e0fc4168a61d3262.js} +1 -1
  227. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/new/{page-498a31b87266f054.js → page-b7f3c021d465b048.js} +1 -1
  228. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/page-6f061aaffb7cf1cd.js +1 -0
  229. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page-794f3b672ce6268c.js +1 -0
  230. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page-ffb67c7e8b7fc049.js +1 -0
  231. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/{page-7cc8bc8d35818be6.js → page-6b3aa6e41104b8c1.js} +1 -1
  232. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/{page-794c945cd39b2b80.js → page-f1661fe429305430.js} +1 -1
  233. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/edit/{page-7ec6c909eb17c859.js → page-b1348b83c7f00ffe.js} +1 -1
  234. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/new/{page-234b8c244b962c55.js → page-a0f3805d834d330d.js} +1 -1
  235. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/{page-f8118fd8fbba2b62.js → page-e353f2d009f7f695.js} +1 -1
  236. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page-add7ba8587841e4e.js +1 -0
  237. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page-8c7ba924d1571ed0.js +1 -0
  238. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/new/page-2b68fb543c1603bb.js +1 -0
  239. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/{page-af62c83660580b24.js → page-66961d3eb5080d75.js} +1 -1
  240. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/settings/page-4df4fb25d5f2f0c1.js +1 -0
  241. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/{page-9000b358f48e450a.js → page-d58a28353d0ab568.js} +2 -2
  242. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/page-53fb8c7cdd753251.js +1 -0
  243. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/settings/page-b0947e464a321b5f.js +1 -0
  244. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/device/page-8087f66e547bc6ca.js +1 -0
  245. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/login/page-917d9b438eb5eee8.js +1 -0
  246. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/page-285a659f3fade146.js +1 -0
  247. package/.next/standalone/agents-manage-ui/.next/static/chunks/{webpack-9ed0b890bbcbcc6c.js → webpack-67d535e0e9dd883e.js} +1 -1
  248. package/.next/standalone/agents-manage-ui/package.json +1 -1
  249. package/.next/standalone/package.json +1 -1
  250. package/.next/standalone/packages/agents-core/package.json +11 -11
  251. package/package.json +4 -4
  252. package/src/app/device/page.tsx +313 -0
  253. package/src/app/login/page.tsx +14 -2
  254. package/src/components/settings/members-table.tsx +4 -2
  255. package/src/lib/auth-client.ts +2 -1
  256. package/.next/standalone/agents-manage-ui/.next/server/chunks/3138.js +0 -1
  257. package/.next/standalone/agents-manage-ui/.next/server/chunks/4286.js +0 -1
  258. package/.next/standalone/agents-manage-ui/.next/server/chunks/5978.js +0 -123
  259. package/.next/standalone/agents-manage-ui/.next/server/chunks/8185.js +0 -1
  260. package/.next/standalone/agents-manage-ui/.next/server/chunks/8431.js +0 -1
  261. package/.next/standalone/agents-manage-ui/.next/server/chunks/902.js +0 -1
  262. package/.next/standalone/agents-manage-ui/.next/static/cEZrzrKK_4Wmz-9nyuTwO/_buildManifest.js +0 -1
  263. package/.next/standalone/agents-manage-ui/.next/static/chunks/1186-3ef8f167f43c3be2.js +0 -1
  264. package/.next/standalone/agents-manage-ui/.next/static/chunks/33538-7e6d81f30594c5fc.js +0 -1
  265. package/.next/standalone/agents-manage-ui/.next/static/chunks/34981-cebc039f5c48e794.js +0 -1
  266. package/.next/standalone/agents-manage-ui/.next/static/chunks/37211-01d85c9f7407e356.js +0 -1
  267. package/.next/standalone/agents-manage-ui/.next/static/chunks/53067.aa17db986ac34425.js +0 -23
  268. package/.next/standalone/agents-manage-ui/.next/static/chunks/63188-c7b5d51fbc726886.js +0 -1
  269. package/.next/standalone/agents-manage-ui/.next/static/chunks/64295-81f2477010363e89.js +0 -14
  270. package/.next/standalone/agents-manage-ui/.next/static/chunks/90663-8c7f01ec7ea7469d.js +0 -1
  271. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/layout-fd9a2deae59d7b43.js +0 -1
  272. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/new/page-d36acf62988cfc7a.js +0 -1
  273. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/page-eea2c82071a52151.js +0 -1
  274. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page-5adc992fc318b399.js +0 -1
  275. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page-3a55286c4c8308f5.js +0 -1
  276. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page-f869ad73bdd0cd2c.js +0 -1
  277. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page-88b18c22edb72177.js +0 -1
  278. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/new/page-eb107dfa3a0f725b.js +0 -1
  279. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/settings/page-f34b264880d32767.js +0 -1
  280. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/page-50eb02fea8f22fc7.js +0 -1
  281. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/settings/page-d71718217286b332.js +0 -1
  282. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/login/page-9a5c9a4be8179006.js +0 -1
  283. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/page-fc1b7c4d94b91546.js +0 -1
  284. /package/.next/standalone/agents-manage-ui/.next/static/{cEZrzrKK_4Wmz-9nyuTwO → 128CYTctCNJAhhqIGwzHR}/_ssgManifest.js +0 -0
@@ -0,0 +1,313 @@
1
+ 'use client';
2
+
3
+ import { AlertCircleIcon, CheckCircle2, Loader2, Terminal, XCircle } from 'lucide-react';
4
+ import { useRouter, useSearchParams } from 'next/navigation';
5
+ import { Suspense, useCallback, useEffect, useState } from 'react';
6
+ import { InkeepIcon } from '@/components/icons/inkeep';
7
+ import { Alert, AlertDescription } from '@/components/ui/alert';
8
+ import { Button } from '@/components/ui/button';
9
+ import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';
10
+ import { Input } from '@/components/ui/input';
11
+ import { Label } from '@/components/ui/label';
12
+ import { useAuthSession } from '@/hooks/use-auth';
13
+ import { useAuthClient } from '@/lib/auth-client';
14
+
15
+ type DeviceState =
16
+ | 'input'
17
+ | 'validating'
18
+ | 'confirm'
19
+ | 'approving'
20
+ | 'approved'
21
+ | 'denied'
22
+ | 'error';
23
+
24
+ function formatUserCode(code: string): string {
25
+ // Format as XXXX-XXXX if not already formatted
26
+ const cleaned = code.replace(/[^A-Z0-9]/gi, '').toUpperCase();
27
+ if (cleaned.length === 8) {
28
+ return `${cleaned.slice(0, 4)}-${cleaned.slice(4)}`;
29
+ }
30
+ return cleaned;
31
+ }
32
+
33
+ function DeviceVerificationForm() {
34
+ const router = useRouter();
35
+ const searchParams = useSearchParams();
36
+ const authClient = useAuthClient();
37
+ const { isAuthenticated, isLoading: authLoading } = useAuthSession();
38
+
39
+ const initialCode = searchParams.get('user_code') || '';
40
+ const [userCode, setUserCode] = useState(initialCode);
41
+ const [state, setState] = useState<DeviceState>(initialCode ? 'validating' : 'input');
42
+ const [error, setError] = useState<string | null>(null);
43
+
44
+ // Redirect to login if not authenticated
45
+ useEffect(() => {
46
+ if (!authLoading && !isAuthenticated) {
47
+ const currentUrl = typeof window !== 'undefined' ? window.location.href : '/device';
48
+ router.push(`/login?callbackUrl=${encodeURIComponent(currentUrl)}`);
49
+ }
50
+ }, [authLoading, isAuthenticated, router]);
51
+
52
+ const validateCode = useCallback(
53
+ async (code: string) => {
54
+ setState('validating');
55
+ setError(null);
56
+
57
+ try {
58
+ const formattedCode = code.replace(/-/g, '').toUpperCase();
59
+ const response = await authClient.device({
60
+ query: { user_code: formattedCode },
61
+ });
62
+
63
+ if (response.error) {
64
+ setError(response.error.error_description || 'Invalid or expired code');
65
+ setState('error');
66
+ return;
67
+ }
68
+
69
+ setState('confirm');
70
+ } catch (err) {
71
+ setError(err instanceof Error ? err.message : 'Failed to validate code');
72
+ setState('error');
73
+ }
74
+ },
75
+ [authClient]
76
+ );
77
+
78
+ // Auto-validate if code provided in URL
79
+ useEffect(() => {
80
+ if (initialCode && isAuthenticated) {
81
+ validateCode(initialCode);
82
+ }
83
+ }, [initialCode, isAuthenticated, validateCode]);
84
+
85
+ const handleSubmit = async (e: React.FormEvent) => {
86
+ e.preventDefault();
87
+ if (!userCode.trim()) return;
88
+ await validateCode(userCode);
89
+ };
90
+
91
+ const handleApprove = async () => {
92
+ setState('approving');
93
+ setError(null);
94
+
95
+ try {
96
+ const formattedCode = userCode.replace(/-/g, '').toUpperCase();
97
+ const response = await authClient.device.approve({
98
+ userCode: formattedCode,
99
+ });
100
+
101
+ if (response.error) {
102
+ setError(response.error.error_description || 'Failed to approve device');
103
+ setState('error');
104
+ return;
105
+ }
106
+
107
+ setState('approved');
108
+ } catch (err) {
109
+ setError(err instanceof Error ? err.message : 'Failed to approve device');
110
+ setState('error');
111
+ }
112
+ };
113
+
114
+ const handleDeny = async () => {
115
+ setState('approving');
116
+ setError(null);
117
+
118
+ try {
119
+ const formattedCode = userCode.replace(/-/g, '').toUpperCase();
120
+ const response = await authClient.device.deny({
121
+ userCode: formattedCode,
122
+ });
123
+
124
+ if (response.error) {
125
+ setError(response.error.error_description || 'Failed to deny device');
126
+ setState('error');
127
+ return;
128
+ }
129
+
130
+ setState('denied');
131
+ } catch (err) {
132
+ setError(err instanceof Error ? err.message : 'Failed to deny device');
133
+ setState('error');
134
+ }
135
+ };
136
+
137
+ const handleReset = () => {
138
+ setUserCode('');
139
+ setState('input');
140
+ setError(null);
141
+ };
142
+
143
+ // Show loading while checking auth
144
+ if (authLoading) {
145
+ return (
146
+ <div className="flex min-h-screen items-center justify-center">
147
+ <Loader2 className="h-8 w-8 animate-spin text-muted-foreground" />
148
+ </div>
149
+ );
150
+ }
151
+
152
+ // Don't render form if not authenticated (will redirect)
153
+ if (!isAuthenticated) {
154
+ return (
155
+ <div className="flex min-h-screen items-center justify-center">
156
+ <Loader2 className="h-8 w-8 animate-spin text-muted-foreground" />
157
+ </div>
158
+ );
159
+ }
160
+
161
+ return (
162
+ <div className="flex flex-col min-h-screen items-center justify-center px-4 py-12">
163
+ <Card className="w-full max-w-md shadow-none border-none bg-transparent space-y-3">
164
+ <div className="flex justify-center">
165
+ <InkeepIcon size={48} />
166
+ </div>
167
+ <CardHeader className="text-center">
168
+ <CardTitle className="text-2xl font-medium tracking-tight text-foreground flex items-center justify-center gap-2">
169
+ <Terminal className="h-6 w-6" />
170
+ Device Authorization
171
+ </CardTitle>
172
+ <CardDescription>
173
+ {state === 'input' || state === 'validating'
174
+ ? 'Enter the code displayed in your CLI to authorize the device.'
175
+ : state === 'confirm' || state === 'approving'
176
+ ? 'Confirm that you want to authorize this device.'
177
+ : state === 'approved'
178
+ ? 'Device authorized successfully.'
179
+ : state === 'denied'
180
+ ? 'Device authorization denied.'
181
+ : 'An error occurred.'}
182
+ </CardDescription>
183
+ </CardHeader>
184
+ <CardContent className="space-y-5">
185
+ {error && (
186
+ <Alert variant="destructive" className="border-destructive/10 dark:border-border">
187
+ <AlertCircleIcon className="h-4 w-4" />
188
+ <AlertDescription>{error}</AlertDescription>
189
+ </Alert>
190
+ )}
191
+
192
+ {/* Input State */}
193
+ {(state === 'input' || state === 'validating' || state === 'error') && (
194
+ <form onSubmit={handleSubmit} className="space-y-4">
195
+ <div className="space-y-2">
196
+ <Label htmlFor="userCode">Device Code</Label>
197
+ <Input
198
+ id="userCode"
199
+ type="text"
200
+ placeholder="XXXX-XXXX"
201
+ value={formatUserCode(userCode)}
202
+ onChange={(e) => setUserCode(e.target.value.replace(/[^A-Z0-9-]/gi, ''))}
203
+ required
204
+ disabled={state === 'validating'}
205
+ maxLength={9}
206
+ className="text-center text-2xl font-mono tracking-widest"
207
+ autoComplete="off"
208
+ autoFocus
209
+ />
210
+ </div>
211
+
212
+ <Button
213
+ type="submit"
214
+ className="w-full"
215
+ disabled={state === 'validating' || userCode.replace(/-/g, '').length !== 8}
216
+ >
217
+ {state === 'validating' ? (
218
+ <>
219
+ <Loader2 className="mr-2 h-4 w-4 animate-spin" />
220
+ Validating...
221
+ </>
222
+ ) : (
223
+ 'Continue'
224
+ )}
225
+ </Button>
226
+ </form>
227
+ )}
228
+
229
+ {/* Confirm State */}
230
+ {(state === 'confirm' || state === 'approving') && (
231
+ <div className="space-y-4">
232
+ <div className="p-4 bg-muted rounded-lg text-center">
233
+ <p className="text-sm text-muted-foreground mb-1">Authorizing device with code</p>
234
+ <p className="text-2xl font-mono font-bold tracking-widest">
235
+ {formatUserCode(userCode)}
236
+ </p>
237
+ </div>
238
+
239
+ <p className="text-sm text-muted-foreground text-center">
240
+ This will allow the Inkeep CLI to access your account. Only approve if you initiated
241
+ this request.
242
+ </p>
243
+
244
+ <div className="flex gap-3">
245
+ <Button
246
+ variant="outline"
247
+ className="flex-1"
248
+ onClick={handleDeny}
249
+ disabled={state === 'approving'}
250
+ >
251
+ {state === 'approving' ? <Loader2 className="h-4 w-4 animate-spin" /> : 'Deny'}
252
+ </Button>
253
+ <Button className="flex-1" onClick={handleApprove} disabled={state === 'approving'}>
254
+ {state === 'approving' ? (
255
+ <>
256
+ <Loader2 className="mr-2 h-4 w-4 animate-spin" />
257
+ Authorizing...
258
+ </>
259
+ ) : (
260
+ 'Approve'
261
+ )}
262
+ </Button>
263
+ </div>
264
+ </div>
265
+ )}
266
+
267
+ {/* Approved State */}
268
+ {state === 'approved' && (
269
+ <div className="space-y-4 text-center">
270
+ <div className="flex justify-center">
271
+ <CheckCircle2 className="h-16 w-16 text-green-500" />
272
+ </div>
273
+ <div>
274
+ <p className="font-medium">Device Authorized</p>
275
+ <p className="text-sm text-muted-foreground mt-1">
276
+ You can close this window and return to your CLI.
277
+ </p>
278
+ </div>
279
+ </div>
280
+ )}
281
+
282
+ {/* Denied State */}
283
+ {state === 'denied' && (
284
+ <div className="space-y-4 text-center">
285
+ <div className="flex justify-center">
286
+ <XCircle className="h-16 w-16 text-red-500" />
287
+ </div>
288
+ <div>
289
+ <p className="font-medium">Authorization Denied</p>
290
+ <p className="text-sm text-muted-foreground mt-1">
291
+ The device was not authorized. You can close this window.
292
+ </p>
293
+ </div>
294
+ <Button variant="outline" onClick={handleReset} className="w-full">
295
+ Try Another Code
296
+ </Button>
297
+ </div>
298
+ )}
299
+ </CardContent>
300
+ </Card>
301
+ </div>
302
+ );
303
+ }
304
+
305
+ export default function DevicePage() {
306
+ return (
307
+ <Suspense
308
+ fallback={<div className="flex min-h-screen items-center justify-center">Loading...</div>}
309
+ >
310
+ <DeviceVerificationForm />
311
+ </Suspense>
312
+ );
313
+ }
@@ -17,6 +17,7 @@ function LoginForm() {
17
17
  const router = useRouter();
18
18
  const searchParams = useSearchParams();
19
19
  const invitationId = searchParams.get('invitation');
20
+ const callbackUrl = searchParams.get('callbackUrl');
20
21
  const authClient = useAuthClient();
21
22
  const { PUBLIC_AUTH0_DOMAIN, PUBLIC_GOOGLE_CLIENT_ID } = useRuntimeConfig();
22
23
 
@@ -24,6 +25,14 @@ function LoginForm() {
24
25
  const getFullCallbackURL = () => {
25
26
  if (typeof window === 'undefined') return '/';
26
27
  const baseURL = window.location.origin; // http://localhost:3000
28
+ // Priority: callbackUrl > invitation > home
29
+ if (callbackUrl) {
30
+ // If callbackUrl is a relative path, prepend baseURL
31
+ if (callbackUrl.startsWith('/')) {
32
+ return `${baseURL}${callbackUrl}`;
33
+ }
34
+ return callbackUrl;
35
+ }
27
36
  // If there's a pending invitation, include it in callback
28
37
  if (invitationId) {
29
38
  return `${baseURL}/?invitation=${invitationId}`;
@@ -63,8 +72,11 @@ function LoginForm() {
63
72
  return;
64
73
  }
65
74
 
66
- // Redirect to invitation page if invitation param exists
67
- if (invitationId) {
75
+ // Redirect after successful login
76
+ // Priority: callbackUrl > invitation > home
77
+ if (callbackUrl) {
78
+ router.push(callbackUrl);
79
+ } else if (invitationId) {
68
80
  router.push(`/accept-invitation/${invitationId}`);
69
81
  } else {
70
82
  router.push('/');
@@ -1,3 +1,4 @@
1
+ import { UserPlus } from 'lucide-react';
1
2
  import { useState } from 'react';
2
3
  import { InviteMemberDialog } from '@/components/auth/invite-member-dialog';
3
4
  import { Badge } from '@/components/ui/badge';
@@ -10,6 +11,7 @@ import {
10
11
  TableRow,
11
12
  } from '@/components/ui/table';
12
13
  import type { useAuthClient } from '@/lib/auth-client';
14
+ import { Button } from '../ui/button';
13
15
 
14
16
  type FullOrganization = NonNullable<
15
17
  Awaited<
@@ -32,10 +34,10 @@ export function MembersTable({ members }: MembersTableProps) {
32
34
  <h2 className="text-md font-medium text-gray-700 dark:text-white/70">Members</h2>
33
35
  <Badge variant="count">{members.length}</Badge>
34
36
  </div>
35
- {/* <Button onClick={() => setInviteDialogOpen(true)} size="sm" variant="outline">
37
+ <Button onClick={() => setInviteDialogOpen(true)} size="sm" variant="outline">
36
38
  <UserPlus className="h-4 w-4 mr-2" />
37
39
  Invite
38
- </Button> */}
40
+ </Button>
39
41
  </div>
40
42
  <Table>
41
43
  <TableHeader>
@@ -1,6 +1,6 @@
1
1
  import { ssoClient } from '@better-auth/sso/client';
2
2
  import { ac, adminRole, memberRole, ownerRole } from '@inkeep/agents-core/auth/permissions';
3
- import { organizationClient } from 'better-auth/client/plugins';
3
+ import { deviceAuthorizationClient, organizationClient } from 'better-auth/client/plugins';
4
4
  import { createAuthClient } from 'better-auth/react';
5
5
  import { useMemo } from 'react';
6
6
  import { useRuntimeConfig } from '@/contexts/runtime-config-context';
@@ -25,6 +25,7 @@ export function useAuthClient() {
25
25
  owner: ownerRole,
26
26
  },
27
27
  }),
28
+ deviceAuthorizationClient(),
28
29
  ],
29
30
  }),
30
31
  [PUBLIC_INKEEP_AGENTS_MANAGE_API_URL]
@@ -1 +0,0 @@
1
- "use strict";exports.id=3138,exports.ids=[3138],exports.modules={597:(a,b,c)=>{c.d(b,{bq:()=>l,eb:()=>n,gC:()=>m,l6:()=>j,yv:()=>k});var d=c(11918),e=c(84759),f=c(56417),g=c(71935),h=c(74520),i=c(30182);function j({...a}){return(0,d.jsx)(e.bL,{"data-slot":"select",...a})}function k({...a}){return(0,d.jsx)(e.WT,{"data-slot":"select-value",...a})}function l({className:a,size:b="default",children:c,...g}){return(0,d.jsxs)(e.l9,{"data-slot":"select-trigger","data-size":b,className:(0,i.cn)("border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 font-normal normal-case",a),...g,children:[c,(0,d.jsx)(e.In,{asChild:!0,children:(0,d.jsx)(f.A,{className:"size-4 opacity-50"})})]})}function m({className:a,children:b,position:c="popper",...f}){return(0,d.jsx)(e.ZL,{children:(0,d.jsxs)(e.UC,{"data-slot":"select-content",className:(0,i.cn)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto scrollbar-thin scrollbar-thumb-muted-foreground/30 dark:scrollbar-thumb-muted-foreground/50 scrollbar-track-transparent rounded-md border shadow-md","popper"===c&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",a),position:c,...f,children:[(0,d.jsx)(o,{}),(0,d.jsx)(e.LM,{className:(0,i.cn)("p-1","popper"===c&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"),children:b}),(0,d.jsx)(p,{})]})})}function n({className:a,children:b,...c}){return(0,d.jsxs)(e.q7,{"data-slot":"select-item",className:(0,i.cn)("focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",a),...c,children:[(0,d.jsx)("span",{className:"absolute right-2 flex size-3.5 items-center justify-center",children:(0,d.jsx)(e.VF,{children:(0,d.jsx)(g.A,{className:"size-4"})})}),(0,d.jsx)(e.p4,{children:b})]})}function o({className:a,...b}){return(0,d.jsx)(e.PP,{"data-slot":"select-scroll-up-button",className:(0,i.cn)("flex cursor-default items-center justify-center py-1",a),...b,children:(0,d.jsx)(h.A,{className:"size-4"})})}function p({className:a,...b}){return(0,d.jsx)(e.wn,{"data-slot":"select-scroll-down-button",className:(0,i.cn)("flex cursor-default items-center justify-center py-1",a),...b,children:(0,d.jsx)(f.A,{className:"size-4"})})}},20299:(a,b,c)=>{c.d(b,{BT:()=>i,Wu:()=>j,ZB:()=>h,Zp:()=>f,aR:()=>g,wL:()=>k});var d=c(11918),e=c(30182);function f({className:a,...b}){return(0,d.jsx)("div",{"data-slot":"card",className:(0,e.cn)("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",a),...b})}function g({className:a,...b}){return(0,d.jsx)("div",{"data-slot":"card-header",className:(0,e.cn)("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",a),...b})}function h({className:a,...b}){return(0,d.jsx)("div",{"data-slot":"card-title",className:(0,e.cn)("leading-none font-semibold",a),...b})}function i({className:a,...b}){return(0,d.jsx)("div",{"data-slot":"card-description",className:(0,e.cn)("text-muted-foreground text-sm",a),...b})}function j({className:a,...b}){return(0,d.jsx)("div",{"data-slot":"card-content",className:(0,e.cn)("px-6",a),...b})}function k({className:a,...b}){return(0,d.jsx)("div",{"data-slot":"card-footer",className:(0,e.cn)("flex items-center px-6 [.border-t]:pt-6",a),...b})}},27476:(a,b,c)=>{c.d(b,{H:()=>p});var d=c(96314),e=c(85372),f=c(38131),g=c(62681);let h=a=>Math.floor(a/1e6),i=f.union([f.string(),f.number(),f.boolean()]),j=a=>{try{if("true"===a)return i.parse(!0);if("false"===a)return i.parse(!1);let b=/^-?\d+(\.\d+)?$/.test(a)?Number(a):a;if("number"==typeof b)return i.parse(b);return i.parse(a)}catch(b){return console.warn(`Failed to parse filter value "${a}":`,b),i.parse(a)}},k=a=>parseInt(a.values?.[0]?.value??"0",10)||0,l=a=>Number(a.values?.[0]?.value??0)||0,m=(a,b)=>{let c=new Date(a);c.setHours(0,0,0,0);let d=new Date(b);d.setHours(0,0,0,0);let e=[];for(let a=new Date(c);a<=d;a.setDate(a.getDate()+1))e.push(`${a.getFullYear()}-${String(a.getMonth()+1).padStart(2,"0")}-${String(a.getDate()).padStart(2,"0")}`);return e};(0,e.Ay)(d.A,{retries:3,retryDelay:e.Ay.exponentialDelay});class n{setTenantId(a){this.tenantId=a}async makeRequest(a,b){if(!this.tenantId)throw Error("TenantId not set. Call setTenantId() before making requests.");let c={...a,...b&&{projectId:b}};return(await d.A.post(`/api/signoz?tenantId=${this.tenantId}`,c,{timeout:3e4,headers:{"Content-Type":"application/json"},withCredentials:!0})).data}extractSeries(a,b){return a?.data?.result?.find(a=>a?.queryName===b)?.series??[]}async getConversationStats(a,b,c,d,e,f,g){try{return await this.getConversationStatsPaginated(a,b,c,d,e,f,g)}catch(a){return console.error("getConversationStats error:",a),{data:[],pagination:{page:e.page,limit:e.limit,total:0,totalPages:0,hasNextPage:!1,hasPreviousPage:!1}}}}async getConversationStatsPaginated(a,b,c,d,e,f,i){let{conversationIds:j,total:k}=await this.getPaginatedConversationIds(a,b,c,d,e,f,i);if(0===j.length)return{data:[],pagination:{page:e.page,limit:e.limit,total:k,totalPages:Math.ceil(k/e.limit),hasNextPage:e.page<Math.ceil(k/e.limit),hasPreviousPage:e.page>1}};let m=this.buildCombinedPayload(a,b,c,d,i,j),n=await this.makeRequest(m),o=this.extractSeries(n,g.XQ.TOOLS),p=this.extractSeries(n,g.XQ.TRANSFERS),q=this.extractSeries(n,g.XQ.DELEGATIONS),r=this.extractSeries(n,g.XQ.AI_CALLS),s=this.extractSeries(n,g.XQ.LAST_ACTIVITY),t=this.extractSeries(n,g.XQ.CONVERSATION_METADATA),u=this.extractSeries(n,g.XQ.SPANS_WITH_ERRORS),v=this.extractSeries(n,g.XQ.USER_MESSAGES),w=new Map;for(let a of t){let b=a.labels?.[g.SH.CONVERSATION_ID];b&&w.set(b,{tenantId:a.labels?.[g.SH.TENANT_ID]??g.PC,agentId:a.labels?.[g.SH.AGENT_ID]??g.PC,agentName:a.labels?.[g.SH.AGENT_NAME]??g.PC})}let x=new Map;for(let a of s){let b=a.labels?.[g.SH.CONVERSATION_ID];b&&x.set(b,l(a))}let y=new Map,z=new Map;for(let a of v){let b=a.labels?.[g.SH.CONVERSATION_ID],c=a.labels?.[g.SH.MESSAGE_CONTENT],d=l(a);b&&c&&(z.get(b)??z.set(b,[]).get(b))?.push({t:d,c:c})}for(let[a,b]of z){b.sort((a,b)=>a.t-b.t);let c=b[0];if(c){let b=c.c.length>100?`${c.c.slice(0,100)}...`:c.c;y.set(a,{content:b,timestamp:h(c.t)})}}let A=new Map(this.toConversationStats(o,p,q,r,w,u,y).map(a=>[a.conversationId,a])),B=j.map(a=>A.get(a)).filter(a=>void 0!==a);return B.sort((a,b)=>((a=0,b=0)=>b-a)(x.get(a.conversationId),x.get(b.conversationId))),{data:B,pagination:{page:e.page,limit:e.limit,total:k,totalPages:Math.ceil(k/e.limit),hasNextPage:e.page<Math.ceil(k/e.limit),hasPreviousPage:e.page>1}}}async getPaginatedConversationIds(a,b,c,d,e,f,h){let i=this.buildFilteredConversationIdsPayload(a,b,c,d,h,!!f?.trim()),j=await this.makeRequest(i),k=this.extractSeries(j,g.XQ.LAST_ACTIVITY),m=new Map;for(let a of k){let b=a.labels?.[g.SH.CONVERSATION_ID];b&&m.set(b,l(a))}let n=Array.from(m.keys());if(c?.spanName||c?.attributes?.length){let a=new Set(this.extractSeries(j,g.XQ.FILTERED_CONVERSATIONS).map(a=>a.labels?.[g.SH.CONVERSATION_ID]).filter(Boolean));n=n.filter(b=>a.has(b))}if(f?.trim()){let a=this.extractSeries(j,g.XQ.CONVERSATION_METADATA),b=new Map;for(let c of a){let a=c.labels?.[g.SH.CONVERSATION_ID],d=c.labels?.[g.SH.AGENT_ID];a&&b.set(a,{agentId:d??"",conversationId:a})}let c=this.extractSeries(j,g.XQ.USER_MESSAGES),d=new Map;for(let a of c){let b=a.labels?.[g.SH.CONVERSATION_ID],c=a.labels?.[g.SH.MESSAGE_CONTENT];b&&c&&(d.has(b)||d.set(b,c))}let e=f.toLowerCase().trim();n=n.filter(a=>{let c=b.get(a),f=d.get(a);return f?.toLowerCase().includes(e)||a.toLowerCase().includes(e)||c?.agentId.toLowerCase().includes(e)})}n.sort((a,b)=>{let c=m.get(a)??0;return(m.get(b)??0)-c});let o=n.length,p=(e.page-1)*e.limit;return{conversationIds:n.slice(p,p+e.limit),total:o}}async getAICallsBySubAgent(a,b,c,d,e){try{let f=await this.makeRequest(this.buildAgentModelBreakdownPayload(a,b,e)),h=this.extractSeries(f,"agentModelCalls"),i=new Map;for(let a of h){let b=a.labels?.[g.SH.AI_TELEMETRY_FUNCTION_ID]||g.PC,e=a.labels?.[g.SH.AGENT_ID]||g.PC,f=a.labels?.[g.SH.AI_MODEL_ID]||g.PC,h=k(a);if(!h||c&&"all"!==c&&e!==c||d&&"all"!==d&&f!==d)continue;let j=`${b}::${e}::${f}`,l=i.get(j)||{subAgentId:b,agentId:e,modelId:f,totalCalls:0};l.totalCalls+=h,i.set(j,l)}return[...i.values()].sort((a,b)=>b.totalCalls-a.totalCalls)}catch(a){return console.error("getAICallsByAgent error:",a),[]}}async getAICallsByModel(a,b,c,d){try{let e=await this.makeRequest(this.buildModelBreakdownPayload(a,b,d)),f=this.extractSeries(e,"modelCalls"),h=new Map;for(let a of f){let b=a.labels?.[g.SH.AI_MODEL_ID]||g.PC,d=a.labels?.[g.SH.AGENT_ID]||g.PC,e=k(a);e&&(c&&"all"!==c&&d!==c||h.set(b,(h.get(b)||0)+e))}return[...h].map(([a,b])=>({modelId:a,totalCalls:b})).sort((a,b)=>b.totalCalls-a.totalCalls)}catch(a){return console.error("getAICallsByModel error:",a),[]}}async getUniqueAgents(a,b,c){try{let d=await this.makeRequest(this.buildUniqueAgentsPayload(a,b,c)),e=this.extractSeries(d,"uniqueAgents").map(a=>a.labels?.[g.SH.AGENT_ID]).filter(a=>!!a&&a!==g.PC).sort();return[...new Set(e)]}catch(a){return console.error("getUniqueAgents error:",a),[]}}async getUniqueModels(a,b,c){try{let d=await this.makeRequest(this.buildUniqueModelsPayload(a,b,c)),e=this.extractSeries(d,"uniqueModels").map(a=>a.labels?.[g.SH.AI_MODEL_ID]).filter(a=>!!a&&a!==g.PC).sort();return[...new Set(e)]}catch(a){return console.error("getUniqueModels error:",a),[]}}async getToolCallsByTool(a,b,c,d){try{let e=await this.makeRequest(this.buildToolBreakdownPayload(a,b,d)),f=this.extractSeries(e,"toolCalls"),h=this.extractSeries(e,"toolErrors"),i=new Map;for(let a of h){let b=a.labels?.[g.SH.AI_TOOL_CALL_NAME]||g.PC,c=k(a);i.set(b,(i.get(b)||0)+c)}let j=new Map;for(let a of f){let b=a.labels?.[g.SH.AI_TOOL_CALL_NAME]||g.PC,d=a.labels?.[g.SH.AI_TOOL_CALL_MCP_SERVER_NAME]||g.PC,e=a.labels?.[g.SH.AI_TOOL_CALL_MCP_SERVER_ID]||g.PC,f=k(a);if(!f||c&&"all"!==c&&d!==c)continue;let h=`${b}::${d}::${e}`,l=j.get(h)||{toolName:b,serverName:d,serverId:e,totalCalls:0,errorCount:0,errorRate:0};l.totalCalls+=f,l.errorCount=i.get(b)||0,l.errorRate=l.totalCalls>0?l.errorCount/l.totalCalls*100:0,j.set(h,l)}return[...j.values()].sort((a,b)=>b.totalCalls-a.totalCalls)}catch(a){return console.error("getToolCallsByTool error:",a),[]}}async getToolCallsByServer(a,b,c){try{let d=await this.makeRequest(this.buildToolServerBreakdownPayload(a,b,c)),e=this.extractSeries(d,"serverCalls"),f=this.extractSeries(d,"serverErrors"),h=new Map;for(let a of f){let b=a.labels?.[g.SH.AI_TOOL_CALL_MCP_SERVER_NAME]||g.PC,c=k(a);h.set(b,(h.get(b)||0)+c)}let i=new Map;for(let a of e){let b=a.labels?.[g.SH.AI_TOOL_CALL_MCP_SERVER_NAME]||g.PC,c=k(a);if(!c)continue;let d=i.get(b)||{totalCalls:0,errorCount:0};d.totalCalls+=c,d.errorCount=h.get(b)||0,i.set(b,d)}return[...i].map(([a,b])=>({serverName:a,totalCalls:b.totalCalls,errorCount:b.errorCount,errorRate:b.totalCalls>0?b.errorCount/b.totalCalls*100:0})).sort((a,b)=>b.totalCalls-a.totalCalls)}catch(a){return console.error("getToolCallsByServer error:",a),[]}}async getUniqueToolServers(a,b,c){try{let d=await this.makeRequest(this.buildUniqueToolServersPayload(a,b,c)),e=this.extractSeries(d,"uniqueServers"),f=new Map;for(let a of e){let b=a.labels?.[g.SH.AI_TOOL_CALL_MCP_SERVER_NAME],c=a.labels?.[g.SH.AI_TOOL_CALL_MCP_SERVER_ID]||"";b&&b!==g.PC&&f.set(b,{name:b,id:c})}return[...f.values()].sort((a,b)=>a.name.localeCompare(b.name))}catch(a){return console.error("getUniqueToolServers error:",a),[]}}async getUniqueToolNames(a,b,c){try{let d=await this.makeRequest(this.buildUniqueToolNamesPayload(a,b,c)),e=this.extractSeries(d,"uniqueTools").map(a=>a.labels?.[g.SH.AI_TOOL_CALL_NAME]).filter(a=>!!a&&a!==g.PC).sort();return[...new Set(e)]}catch(a){return console.error("getUniqueToolNames error:",a),[]}}async getConversationsPerDay(a,b,c,d){try{let e=await this.makeRequest(this.buildConversationMetadataPayload(a,b,c,d)),f=this.extractSeries(e,"conversationMetadata").length?this.extractSeries(await this.makeRequest(this.buildConversationActivityPayload(a,b,c,d)),"lastActivity"):[],g=new Map;for(let a of f){let b=h(l(a));if(!b)continue;let c=new Date(b),d=`${c.getFullYear()}-${String(c.getMonth()+1).padStart(2,"0")}-${String(c.getDate()).padStart(2,"0")}`;g.set(d,(g.get(d)||0)+1)}return m(a,b).map(a=>({date:a,count:g.get(a)||0}))}catch(c){return console.error("getConversationsPerDay error:",c),m(a,b).map(a=>({date:a,count:0}))}}async getAggregateStats(a,b,c,d,e){try{let f;if(c?.spanName||c?.attributes?.length){let e=this.buildFilteredConversationsPayload(a,b,c,d),h=await this.makeRequest(e);if(f=this.extractSeries(h,"filteredConversations").map(a=>a.labels?.[g.SH.CONVERSATION_ID]).filter(Boolean),0===f.length)return{totalToolCalls:0,totalTransfers:0,totalDelegations:0,totalConversations:0,totalAICalls:0}}let h=this.buildAggregateBadgesPayload(a,b,d,e,f),i=await this.makeRequest(h),j=this.extractSeries(i,"totalToolCalls"),l=this.extractSeries(i,"totalTransfers"),m=this.extractSeries(i,"totalDelegations"),n=this.extractSeries(i,"totalAICalls"),o=this.extractSeries(i,"totalConversations");return{totalToolCalls:k(j[0]||{values:[{value:"0"}]}),totalTransfers:k(l[0]||{values:[{value:"0"}]}),totalDelegations:k(m[0]||{values:[{value:"0"}]}),totalConversations:f?f.length:k(o[0]||{values:[{value:"0"}]}),totalAICalls:k(n[0]||{values:[{value:"0"}]})}}catch(a){return console.error("getAggregateStats error:",a),{totalToolCalls:0,totalTransfers:0,totalDelegations:0,totalConversations:0,totalAICalls:0}}}async getAvailableSpanNames(a,b,c,d){try{let e=[{key:{key:g.SH.NAME,...g.A3.STRING_TAG_COLUMN},op:g.we.EXISTS,value:""}];c&&"all"!==c&&e.push({key:{key:g.SH.AGENT_ID,...g.A3.STRING_TAG},op:g.we.EQUALS,value:c}),d&&e.push({key:{key:g.SH.PROJECT_ID,...g.A3.STRING_TAG},op:g.we.EQUALS,value:d});let f={start:a,end:b,step:g.yZ.STEP,variables:{},compositeQuery:{queryType:g.zD.BUILDER,panelType:g.Nv.LIST,builderQueries:{spanNames:{dataSource:g.YL.TRACES,queryName:g.XQ.SPAN_NAMES,aggregateOperator:g.qf.NOOP,aggregateAttribute:{},filters:{op:g.we.AND,items:e},selectColumns:[{key:g.SH.NAME,...g.A3.STRING_TAG_COLUMN}],expression:g.XQ.SPAN_NAMES,disabled:g.yZ.DISABLED,having:g.yZ.HAVING,stepInterval:g.yZ.STEP_INTERVAL,limit:g.yZ.LIMIT_UNLIMITED,orderBy:[{columnName:g.SH.TIMESTAMP,order:g.SL.DESC}],groupBy:g.yZ.EMPTY_GROUP_BY,offset:g.yZ.OFFSET}}},dataSource:g.YL.TRACES,projectId:d},h=await this.makeRequest(f),i=h?.data?.result?.find(a=>a?.queryName==="spanNames")?.list??[],j=new Set;for(let a of i){let b=a?.data?.name??a?.name;b&&j.add(b)}return[...j].sort()}catch(a){return console.error("getAvailableSpanNames error:",a),[]}}toConversationStats(a,b,c,d,e,f,h){let i=new Map,j=a=>{let b=i.get(a);if(b)return b;let c={totalToolCalls:0,toolsUsed:new Map,transfers:new Map,totalTransfers:0,delegations:new Map,totalDelegations:0,totalAICalls:0,totalErrors:0};return i.set(a,c),c};for(let b of a){let a=b.labels?.[g.SH.CONVERSATION_ID];if(!a)continue;let c=b.labels?.[g.SH.AI_TOOL_CALL_NAME];if(!c)continue;let d=k(b);if(!d)continue;let e=b.labels?.[g.SH.MCP_TOOL_DESCRIPTION]||"",f=j(a);f.totalToolCalls+=d;let h=f.toolsUsed.get(c)||{name:c,calls:0,description:e};h.calls+=d,f.toolsUsed.set(c,h)}for(let a of b){let b=a.labels?.[g.SH.CONVERSATION_ID];if(!b)continue;let c=a.labels?.[g.SH.TRANSFER_FROM_SUB_AGENT_ID],d=a.labels?.[g.SH.TRANSFER_TO_SUB_AGENT_ID],e=k(a);if(!c||!d||!e)continue;let f=j(b);f.totalTransfers+=e;let h=`${c}→${d}`,i=f.transfers.get(h)||{from:c,to:d,count:0};i.count+=e,f.transfers.set(h,i)}for(let a of c){let b=a.labels?.[g.SH.CONVERSATION_ID];if(!b)continue;let c=a.labels?.[g.SH.DELEGATION_FROM_SUB_AGENT_ID],d=a.labels?.[g.SH.DELEGATION_TO_SUB_AGENT_ID],e=k(a);if(!c||!d||!e)continue;let f=j(b);f.totalDelegations+=e;let h=`${c}→${d}`,i=f.delegations.get(h)||{from:c,to:d,count:0};i.count+=e,f.delegations.set(h,i)}for(let a of d){let b=a.labels?.[g.SH.CONVERSATION_ID];if(!b)continue;let c=k(a);c&&(j(b).totalAICalls+=c)}let l=["execution_handler.execute","agent.load_tools","context.handle_context_resolution","context.resolve","agent.generate","context-resolver.resolve_single_fetch_definition","agent_session.generate_structured_update","agent_session.process_artifact","agent_session.generate_artifact_metadata","response.format_object_response","response.format_response","ai.toolCall"];for(let a of f){let b=a.labels?.[g.SH.CONVERSATION_ID];if(!b)continue;let c=a.labels?.[g.SH.NAME]||"",d=k(a);d&&l.includes(c)&&(j(b).totalErrors+=d)}let m=[];for(let a of new Set([...i.keys(),...e.keys()])){let b=i.get(a)||j(a),c=e.get(a)||{tenantId:g.PC,agentId:g.PC,agentName:g.PC};m.push({conversationId:a,tenantId:c.tenantId,agentId:c.agentId,agentName:c.agentName||"",totalToolCalls:b.totalToolCalls,toolsUsed:[...b.toolsUsed.values()],transfers:[...b.transfers.values()],totalTransfers:b.totalTransfers,delegations:[...b.delegations.values()],totalDelegations:b.totalDelegations,totalAICalls:b.totalAICalls,totalErrors:b.totalErrors,hasErrors:b.totalErrors>0,firstUserMessage:h.get(a)?.content,startTime:h.get(a)?.timestamp})}return m}buildAgentModelBreakdownPayload(a,b,c){return{start:a,end:b,step:g.yZ.STEP,variables:{},compositeQuery:{queryType:g.zD.BUILDER,panelType:g.Nv.TABLE,builderQueries:{agentModelCalls:{dataSource:g.YL.TRACES,queryName:g.XQ.AGENT_MODEL_CALLS,aggregateOperator:g.qf.COUNT,aggregateAttribute:{key:g.SH.SPAN_ID,...g.A3.STRING_TAG_COLUMN},filters:{op:g.we.AND,items:[{key:{key:g.SH.AI_OPERATION_ID,...g.A3.STRING_TAG},op:g.we.EQUALS,value:g.yR.GENERATE_TEXT},{key:{key:g.SH.CONVERSATION_ID,...g.A3.STRING_TAG},op:g.we.EXISTS,value:""},...c?[{key:{key:g.SH.PROJECT_ID,...g.A3.STRING_TAG},op:g.we.EQUALS,value:c}]:[]]},groupBy:[{key:g.SH.CONVERSATION_ID,...g.A3.STRING_TAG},{key:g.SH.AI_TELEMETRY_FUNCTION_ID,...g.A3.STRING_TAG},{key:g.SH.AGENT_ID,...g.A3.STRING_TAG},{key:g.SH.AI_MODEL_ID,...g.A3.STRING_TAG}],expression:g.XQ.AGENT_MODEL_CALLS,reduceTo:g.U_.SUM,stepInterval:g.yZ.STEP_INTERVAL,orderBy:[{columnName:g.SH.TIMESTAMP,order:g.SL.DESC}],offset:g.yZ.OFFSET,disabled:g.yZ.DISABLED,having:g.yZ.HAVING,legend:g.yZ.LEGEND,limit:g.yZ.LIMIT_UNLIMITED}}},dataSource:g.YL.TRACES,projectId:c}}buildModelBreakdownPayload(a,b,c){return{start:a,end:b,step:g.yZ.STEP,variables:{},compositeQuery:{queryType:g.zD.BUILDER,panelType:g.Nv.TABLE,builderQueries:{modelCalls:{dataSource:g.YL.TRACES,queryName:g.XQ.MODEL_CALLS,aggregateOperator:g.qf.COUNT,aggregateAttribute:{key:g.SH.SPAN_ID,...g.A3.STRING_TAG_COLUMN},filters:{op:g.we.AND,items:[{key:{key:g.SH.AI_OPERATION_ID,...g.A3.STRING_TAG},op:g.we.EQUALS,value:g.yR.GENERATE_TEXT},{key:{key:g.SH.CONVERSATION_ID,...g.A3.STRING_TAG},op:g.we.EXISTS,value:""},...c?[{key:{key:g.SH.PROJECT_ID,...g.A3.STRING_TAG},op:g.we.EQUALS,value:c}]:[]]},groupBy:[{key:g.SH.CONVERSATION_ID,...g.A3.STRING_TAG},{key:g.SH.AI_MODEL_ID,...g.A3.STRING_TAG},{key:g.SH.AGENT_ID,...g.A3.STRING_TAG}],expression:g.XQ.MODEL_CALLS,reduceTo:g.U_.SUM,stepInterval:g.yZ.STEP_INTERVAL,orderBy:[{columnName:g.SH.TIMESTAMP,order:g.SL.DESC}],offset:g.yZ.OFFSET,disabled:g.yZ.DISABLED,having:g.yZ.HAVING,legend:g.yZ.LEGEND,limit:g.yZ.LIMIT_UNLIMITED}}},dataSource:g.YL.TRACES,projectId:c}}buildConversationActivityPayload(a,b,c,d){let e=[{key:{key:g.SH.CONVERSATION_ID,...g.A3.STRING_TAG},op:g.we.EXISTS,value:""},...c&&"all"!==c?[{key:{key:g.SH.AGENT_ID,...g.A3.STRING_TAG},op:g.we.EQUALS,value:c}]:[],...d?[{key:{key:g.SH.PROJECT_ID,...g.A3.STRING_TAG},op:g.we.EQUALS,value:d}]:[]];return{start:a,end:b,step:g.yZ.STEP,variables:{},compositeQuery:{queryType:g.zD.BUILDER,panelType:g.Nv.TABLE,builderQueries:{lastActivity:{dataSource:g.YL.TRACES,queryName:g.XQ.LAST_ACTIVITY,aggregateOperator:g.qf.MIN,aggregateAttribute:{key:g.SH.TIMESTAMP,...g.A3.INT64_TAG_COLUMN},filters:{op:g.we.AND,items:e},groupBy:[{key:g.SH.CONVERSATION_ID,...g.A3.STRING_TAG}],expression:g.XQ.LAST_ACTIVITY,reduceTo:g.U_.MIN,stepInterval:g.yZ.STEP_INTERVAL,orderBy:[{columnName:g.SH.TIMESTAMP,order:g.SL.DESC}],offset:g.yZ.OFFSET,disabled:g.yZ.DISABLED,having:g.yZ.HAVING,legend:g.yZ.LEGEND,limit:g.yZ.LIMIT_UNLIMITED}}},dataSource:g.YL.TRACES,projectId:d}}buildConversationMetadataPayload(a,b,c,d){let e=[{key:{key:g.SH.CONVERSATION_ID,...g.A3.STRING_TAG},op:g.we.EXISTS,value:""},{key:{key:g.SH.TENANT_ID,...g.A3.STRING_TAG},op:g.we.EXISTS,value:""},{key:{key:g.SH.AGENT_ID,...g.A3.STRING_TAG},op:g.we.EXISTS,value:""},...c&&"all"!==c?[{key:{key:g.SH.AGENT_ID,...g.A3.STRING_TAG},op:g.we.EQUALS,value:c}]:[],...d?[{key:{key:g.SH.PROJECT_ID,...g.A3.STRING_TAG},op:g.we.EQUALS,value:d}]:[]];return{start:a,end:b,step:g.yZ.STEP,variables:{},compositeQuery:{queryType:g.zD.BUILDER,panelType:g.Nv.TABLE,builderQueries:{conversationMetadata:{dataSource:g.YL.TRACES,queryName:g.XQ.CONVERSATION_METADATA,aggregateOperator:g.qf.COUNT,aggregateAttribute:{key:g.SH.SPAN_ID,...g.A3.STRING_TAG_COLUMN},filters:{op:g.we.AND,items:e},groupBy:[{key:g.SH.CONVERSATION_ID,...g.A3.STRING_TAG},{key:g.SH.TENANT_ID,...g.A3.STRING_TAG},{key:g.SH.AGENT_ID,...g.A3.STRING_TAG},{key:g.SH.AGENT_NAME,...g.A3.STRING_TAG}],expression:g.XQ.CONVERSATION_METADATA,reduceTo:g.U_.SUM,stepInterval:g.yZ.STEP_INTERVAL,orderBy:[{columnName:g.SH.TIMESTAMP,order:g.SL.DESC}],offset:g.yZ.OFFSET,disabled:g.yZ.DISABLED,having:g.yZ.HAVING,legend:g.yZ.LEGEND,limit:g.yZ.LIMIT_UNLIMITED}}},dataSource:g.YL.TRACES,projectId:d}}buildFilteredConversationIdsPayload(a,b,c,d,e,f){let h=()=>{let a=[{key:{key:g.SH.CONVERSATION_ID,...g.A3.STRING_TAG},op:g.we.EXISTS,value:""}];return e&&"all"!==e&&a.push({key:{key:g.SH.AGENT_ID,...g.A3.STRING_TAG},op:g.we.EQUALS,value:e}),d&&a.push({key:{key:g.SH.PROJECT_ID,...g.A3.STRING_TAG},op:g.we.EQUALS,value:d}),a},i={lastActivity:{dataSource:g.YL.TRACES,queryName:g.XQ.LAST_ACTIVITY,aggregateOperator:g.qf.MIN,aggregateAttribute:{key:g.SH.TIMESTAMP,...g.A3.INT64_TAG_COLUMN},filters:{op:g.we.AND,items:h()},groupBy:[{key:g.SH.CONVERSATION_ID,...g.A3.STRING_TAG}],expression:g.XQ.LAST_ACTIVITY,reduceTo:g.U_.MIN,stepInterval:g.yZ.STEP_INTERVAL,orderBy:[{columnName:g.SH.TIMESTAMP,order:g.SL.DESC}],offset:g.yZ.OFFSET,disabled:g.yZ.DISABLED,having:g.yZ.HAVING,legend:g.yZ.LEGEND,limit:g.yZ.LIMIT_UNLIMITED}};if(c?.spanName||c?.attributes?.length){let a=[{key:{key:g.SH.CONVERSATION_ID,...g.A3.STRING_TAG},op:g.we.EXISTS,value:""}];for(let b of(c.spanName&&a.push({key:{key:g.SH.NAME,...g.A3.STRING_TAG_COLUMN},op:g.we.EQUALS,value:c.spanName}),c.attributes??[])){let c=b.operator??g.we.EQUALS,d=j(b.value),e=g.hL.STRING;if("boolean"==typeof d?e=g.hL.BOOL:"number"==typeof d&&(e=Number.isInteger(d)?g.hL.INT64:g.hL.FLOAT64),c===g.we.EXISTS||c===g.we.NOT_EXISTS){a.push({key:{key:b.key,...g.A3.STRING_TAG},op:c,value:""});continue}if(c!==g.we.LIKE&&c!==g.we.NOT_LIKE||"string"!=typeof d||d.includes("%")||(d=`%${d}%`),(e===g.hL.INT64||e===g.hL.FLOAT64)&&c===g.we.EQUALS){let c=e===g.hL.INT64?g.A3.INT64_TAG:g.A3.FLOAT64_TAG;a.push({key:{key:b.key,...c},op:g.we.GREATER_THAN_OR_EQUAL,value:d}),a.push({key:{key:b.key,...c},op:g.we.LESS_THAN_OR_EQUAL,value:d})}else{let f=e===g.hL.STRING?g.A3.STRING_TAG:e===g.hL.INT64?g.A3.INT64_TAG:e===g.hL.FLOAT64?g.A3.FLOAT64_TAG:g.A3.BOOL_TAG;a.push({key:{key:b.key,...f},op:c,value:d})}}d&&a.push({key:{key:g.SH.PROJECT_ID,...g.A3.STRING_TAG},op:g.we.EQUALS,value:d}),i.filteredConversations={dataSource:g.YL.TRACES,queryName:g.XQ.FILTERED_CONVERSATIONS,aggregateOperator:g.qf.COUNT,aggregateAttribute:{key:g.SH.SPAN_ID,...g.A3.STRING_TAG_COLUMN},filters:{op:g.we.AND,items:a},groupBy:[{key:g.SH.CONVERSATION_ID,...g.A3.STRING_TAG}],expression:g.XQ.FILTERED_CONVERSATIONS,reduceTo:g.U_.SUM,stepInterval:g.yZ.STEP_INTERVAL,orderBy:[{columnName:g.SH.TIMESTAMP,order:g.SL.DESC}],offset:g.yZ.OFFSET,disabled:g.yZ.DISABLED,having:g.yZ.HAVING,legend:g.yZ.LEGEND,limit:g.yZ.LIMIT_UNLIMITED}}if(f){let a=h();a.push({key:{key:g.SH.TENANT_ID,...g.A3.STRING_TAG},op:g.we.EXISTS,value:""},{key:{key:g.SH.AGENT_ID,...g.A3.STRING_TAG},op:g.we.EXISTS,value:""}),i.conversationMetadata={dataSource:g.YL.TRACES,queryName:g.XQ.CONVERSATION_METADATA,aggregateOperator:g.qf.COUNT,aggregateAttribute:{key:g.SH.SPAN_ID,...g.A3.STRING_TAG_COLUMN},filters:{op:g.we.AND,items:a},groupBy:[{key:g.SH.CONVERSATION_ID,...g.A3.STRING_TAG},{key:g.SH.TENANT_ID,...g.A3.STRING_TAG},{key:g.SH.AGENT_ID,...g.A3.STRING_TAG},{key:g.SH.AGENT_NAME,...g.A3.STRING_TAG}],expression:g.XQ.CONVERSATION_METADATA,reduceTo:g.U_.SUM,stepInterval:g.yZ.STEP_INTERVAL,orderBy:[{columnName:g.SH.TIMESTAMP,order:g.SL.DESC}],offset:g.yZ.OFFSET,disabled:g.yZ.DISABLED,having:g.yZ.HAVING,legend:g.yZ.LEGEND,limit:g.yZ.LIMIT_UNLIMITED};let b=h();b.push({key:{key:g.SH.MESSAGE_CONTENT,...g.A3.STRING_TAG},op:g.we.EXISTS,value:""}),i.userMessages={dataSource:g.YL.TRACES,queryName:g.XQ.USER_MESSAGES,aggregateOperator:g.qf.MIN,aggregateAttribute:{key:g.SH.TIMESTAMP,...g.A3.INT64_TAG_COLUMN},filters:{op:g.we.AND,items:b},groupBy:[{key:g.SH.CONVERSATION_ID,...g.A3.STRING_TAG},{key:g.SH.MESSAGE_CONTENT,...g.A3.STRING_TAG}],expression:g.XQ.USER_MESSAGES,reduceTo:g.U_.MIN,stepInterval:g.yZ.STEP_INTERVAL,orderBy:[{columnName:g.SH.TIMESTAMP,order:g.SL.ASC}],offset:g.yZ.OFFSET,disabled:g.yZ.DISABLED,having:g.yZ.HAVING,legend:g.yZ.LEGEND,limit:g.yZ.LIMIT_UNLIMITED}}return{start:a,end:b,step:g.yZ.STEP,variables:{},compositeQuery:{queryType:g.zD.BUILDER,panelType:g.Nv.TABLE,builderQueries:i},dataSource:g.YL.TRACES,projectId:d}}buildFilteredConversationsPayload(a,b,c,d){let e=[{key:{key:g.SH.CONVERSATION_ID,...g.A3.STRING_TAG},op:g.we.EXISTS,value:""}];for(let a of(c.spanName&&e.push({key:{key:g.SH.NAME,...g.A3.STRING_TAG_COLUMN},op:g.we.EQUALS,value:c.spanName}),c.attributes??[])){let b=a.operator??g.we.EQUALS,c=j(a.value),d="string";if("boolean"==typeof c?d="bool":"number"==typeof c&&(d=Number.isInteger(c)?"int64":"float64"),b===g.we.EXISTS||b===g.we.NOT_EXISTS){e.push({key:{key:a.key,...g.A3.STRING_TAG},op:b,value:""});continue}if(b!==g.we.LIKE&&b!==g.we.NOT_LIKE||"string"!=typeof c||c.includes("%")||(c=`%${c}%`),("int64"===d||"float64"===d)&&b===g.we.EQUALS){let b="int64"===d?g.A3.INT64_TAG:g.A3.FLOAT64_TAG;e.push({key:{key:a.key,...b},op:g.we.GREATER_THAN_OR_EQUAL,value:c}),e.push({key:{key:a.key,...b},op:g.we.LESS_THAN_OR_EQUAL,value:c})}else{let f="string"===d?g.A3.STRING_TAG:"int64"===d?g.A3.INT64_TAG:"float64"===d?g.A3.FLOAT64_TAG:g.A3.BOOL_TAG;e.push({key:{key:a.key,...f},op:b,value:c})}}return d&&e.push({key:{key:g.SH.PROJECT_ID,...g.A3.STRING_TAG},op:g.we.EQUALS,value:d}),{start:a,end:b,step:g.yZ.STEP,variables:{},compositeQuery:{queryType:g.zD.BUILDER,panelType:g.Nv.TABLE,builderQueries:{filteredConversations:{dataSource:g.YL.TRACES,queryName:g.XQ.FILTERED_CONVERSATIONS,aggregateOperator:g.qf.COUNT,aggregateAttribute:{key:g.SH.SPAN_ID,...g.A3.STRING_TAG_COLUMN},filters:{op:g.we.AND,items:e},groupBy:[{key:g.SH.CONVERSATION_ID,...g.A3.STRING_TAG}],expression:g.XQ.FILTERED_CONVERSATIONS,reduceTo:g.U_.SUM,stepInterval:g.yZ.STEP_INTERVAL,orderBy:[{columnName:g.SH.TIMESTAMP,order:g.SL.DESC}],offset:g.yZ.OFFSET,disabled:g.yZ.DISABLED,having:g.yZ.HAVING,legend:g.yZ.LEGEND,limit:g.yZ.LIMIT_UNLIMITED}}},dataSource:g.YL.TRACES,projectId:d}}buildAggregateBadgesPayload(a,b,c,d,e){let f,h=(f=[],c&&f.push({key:{key:g.SH.PROJECT_ID,...g.A3.STRING_TAG},op:g.we.EQUALS,value:c}),d&&f.push({key:{key:g.SH.AGENT_ID,...g.A3.STRING_TAG},op:g.we.EQUALS,value:d}),f),i=e&&e.length>0?[{key:{key:g.SH.CONVERSATION_ID,...g.A3.STRING_TAG},op:g.we.IN,value:e}]:[{key:{key:g.SH.CONVERSATION_ID,...g.A3.STRING_TAG},op:g.we.EXISTS,value:""}];return{start:a,end:b,step:g.yZ.STEP,variables:{},compositeQuery:{queryType:g.zD.BUILDER,panelType:g.Nv.TABLE,builderQueries:{totalToolCalls:{dataSource:g.YL.TRACES,queryName:"totalToolCalls",aggregateOperator:g.qf.COUNT,aggregateAttribute:{key:g.SH.SPAN_ID,...g.A3.STRING_TAG_COLUMN},filters:{op:g.we.AND,items:[...h,{key:{key:g.SH.NAME,...g.A3.STRING_TAG_COLUMN},op:g.we.EQUALS,value:g.aR.AI_TOOL_CALL},...i,{key:{key:g.SH.AI_TOOL_TYPE,...g.A3.STRING_TAG},op:g.we.EQUALS,value:g.cZ.MCP}]},groupBy:g.yZ.EMPTY_GROUP_BY,expression:"totalToolCalls",reduceTo:g.U_.SUM,stepInterval:g.yZ.STEP_INTERVAL,orderBy:[],offset:g.yZ.OFFSET,disabled:g.yZ.DISABLED,having:g.yZ.HAVING,legend:g.yZ.LEGEND,limit:g.yZ.LIMIT_UNLIMITED},totalTransfers:{dataSource:g.YL.TRACES,queryName:"totalTransfers",aggregateOperator:g.qf.COUNT,aggregateAttribute:{key:g.SH.SPAN_ID,...g.A3.STRING_TAG_COLUMN},filters:{op:g.we.AND,items:[...h,{key:{key:g.SH.NAME,...g.A3.STRING_TAG_COLUMN},op:g.we.EQUALS,value:g.aR.AI_TOOL_CALL},{key:{key:g.SH.AI_TOOL_TYPE,...g.A3.STRING_TAG},op:g.we.EQUALS,value:g.cZ.TRANSFER},...i]},groupBy:g.yZ.EMPTY_GROUP_BY,expression:"totalTransfers",reduceTo:g.U_.SUM,stepInterval:g.yZ.STEP_INTERVAL,orderBy:[],offset:g.yZ.OFFSET,disabled:g.yZ.DISABLED,having:g.yZ.HAVING,legend:g.yZ.LEGEND,limit:g.yZ.LIMIT_UNLIMITED},totalDelegations:{dataSource:g.YL.TRACES,queryName:"totalDelegations",aggregateOperator:g.qf.COUNT,aggregateAttribute:{key:g.SH.SPAN_ID,...g.A3.STRING_TAG_COLUMN},filters:{op:g.we.AND,items:[...h,{key:{key:g.SH.NAME,...g.A3.STRING_TAG_COLUMN},op:g.we.EQUALS,value:g.aR.AI_TOOL_CALL},{key:{key:g.SH.AI_TOOL_TYPE,...g.A3.STRING_TAG},op:g.we.EQUALS,value:g.cZ.DELEGATION},...i]},groupBy:g.yZ.EMPTY_GROUP_BY,expression:"totalDelegations",reduceTo:g.U_.SUM,stepInterval:g.yZ.STEP_INTERVAL,orderBy:[],offset:g.yZ.OFFSET,disabled:g.yZ.DISABLED,having:g.yZ.HAVING,legend:g.yZ.LEGEND,limit:g.yZ.LIMIT_UNLIMITED},totalAICalls:{dataSource:g.YL.TRACES,queryName:"totalAICalls",aggregateOperator:g.qf.COUNT,aggregateAttribute:{key:g.SH.SPAN_ID,...g.A3.STRING_TAG_COLUMN},filters:{op:g.we.AND,items:[...h,{key:{key:g.SH.AI_OPERATION_ID,...g.A3.STRING_TAG},op:g.we.EQUALS,value:g.yR.GENERATE_TEXT},...i]},groupBy:g.yZ.EMPTY_GROUP_BY,expression:"totalAICalls",reduceTo:g.U_.SUM,stepInterval:g.yZ.STEP_INTERVAL,orderBy:[],offset:g.yZ.OFFSET,disabled:g.yZ.DISABLED,having:g.yZ.HAVING,legend:g.yZ.LEGEND,limit:g.yZ.LIMIT_UNLIMITED},totalConversations:{dataSource:g.YL.TRACES,queryName:"totalConversations",aggregateOperator:g.qf.COUNT_DISTINCT,aggregateAttribute:{key:g.SH.CONVERSATION_ID,...g.A3.STRING_TAG},filters:{op:g.we.AND,items:[...h,...i,{key:{key:g.SH.TENANT_ID,...g.A3.STRING_TAG},op:g.we.EXISTS,value:""},{key:{key:g.SH.AGENT_ID,...g.A3.STRING_TAG},op:g.we.EXISTS,value:""}]},groupBy:g.yZ.EMPTY_GROUP_BY,expression:"totalConversations",reduceTo:g.U_.SUM,stepInterval:g.yZ.STEP_INTERVAL,orderBy:[],offset:g.yZ.OFFSET,disabled:g.yZ.DISABLED,having:g.yZ.HAVING,legend:g.yZ.LEGEND,limit:g.yZ.LIMIT_UNLIMITED}}},dataSource:g.YL.TRACES,projectId:c}}buildCombinedPayload(a,b,c,d,e,f){let h=a=>{let b=a;return d&&(b=[...b,{key:{key:g.SH.PROJECT_ID,...g.A3.STRING_TAG},op:g.we.EQUALS,value:d}]),e&&(b=[...b,{key:{key:g.SH.AGENT_ID,...g.A3.STRING_TAG},op:g.we.EQUALS,value:e}]),b=f&&f.length>0?[...b,{key:{key:g.SH.CONVERSATION_ID,...g.A3.STRING_TAG},op:g.we.IN,value:f}]:[...b,{key:{key:g.SH.CONVERSATION_ID,...g.A3.STRING_TAG},op:g.we.EXISTS,value:""}]};return{start:a,end:b,step:g.yZ.STEP,variables:{},compositeQuery:{queryType:g.zD.BUILDER,panelType:g.Nv.TABLE,builderQueries:{tools:{dataSource:g.YL.TRACES,queryName:g.XQ.TOOLS,aggregateOperator:g.qf.COUNT,aggregateAttribute:{key:g.SH.SPAN_ID,...g.A3.STRING_TAG_COLUMN},filters:{op:g.we.AND,items:h([{key:{key:g.SH.NAME,...g.A3.STRING_TAG_COLUMN},op:g.we.EQUALS,value:g.aR.AI_TOOL_CALL},{key:{key:g.SH.AI_TOOL_TYPE,...g.A3.STRING_TAG},op:g.we.EQUALS,value:g.cZ.MCP}])},groupBy:[{key:g.SH.CONVERSATION_ID,...g.A3.STRING_TAG},{key:g.SH.AI_TOOL_CALL_NAME,...g.A3.STRING_TAG}],expression:g.XQ.TOOLS,reduceTo:g.U_.SUM,stepInterval:g.yZ.STEP_INTERVAL,orderBy:[{columnName:g.SH.TIMESTAMP,order:g.SL.DESC}],offset:g.yZ.OFFSET,disabled:g.yZ.DISABLED,having:g.yZ.HAVING,legend:g.yZ.LEGEND,limit:g.yZ.LIMIT_UNLIMITED},transfers:{dataSource:g.YL.TRACES,queryName:g.XQ.TRANSFERS,aggregateOperator:g.qf.COUNT,aggregateAttribute:{key:g.SH.SPAN_ID,...g.A3.STRING_TAG_COLUMN},filters:{op:g.we.AND,items:h([{key:{key:g.SH.NAME,...g.A3.STRING_TAG_COLUMN},op:g.we.EQUALS,value:g.aR.AI_TOOL_CALL},{key:{key:g.SH.AI_TOOL_TYPE,...g.A3.STRING_TAG},op:g.we.EQUALS,value:g.cZ.TRANSFER}])},groupBy:[{key:g.SH.CONVERSATION_ID,...g.A3.STRING_TAG},{key:g.SH.TRANSFER_FROM_SUB_AGENT_ID,...g.A3.STRING_TAG},{key:g.SH.TRANSFER_TO_SUB_AGENT_ID,...g.A3.STRING_TAG}],expression:g.XQ.TRANSFERS,reduceTo:g.U_.SUM,stepInterval:g.yZ.STEP_INTERVAL,orderBy:[{columnName:g.SH.TIMESTAMP,order:g.SL.DESC}],offset:g.yZ.OFFSET,disabled:g.yZ.DISABLED,having:g.yZ.HAVING,legend:g.yZ.LEGEND,limit:g.yZ.LIMIT_UNLIMITED},delegations:{dataSource:g.YL.TRACES,queryName:g.XQ.DELEGATIONS,aggregateOperator:g.qf.COUNT,aggregateAttribute:{key:g.SH.SPAN_ID,...g.A3.STRING_TAG_COLUMN},filters:{op:g.we.AND,items:h([{key:{key:g.SH.NAME,...g.A3.STRING_TAG_COLUMN},op:g.we.EQUALS,value:g.aR.AI_TOOL_CALL},{key:{key:g.SH.AI_TOOL_TYPE,...g.A3.STRING_TAG},op:g.we.EQUALS,value:g.cZ.DELEGATION}])},groupBy:[{key:g.SH.CONVERSATION_ID,...g.A3.STRING_TAG},{key:g.SH.DELEGATION_FROM_SUB_AGENT_ID,...g.A3.STRING_TAG},{key:g.SH.DELEGATION_TO_SUB_AGENT_ID,...g.A3.STRING_TAG}],expression:g.XQ.DELEGATIONS,reduceTo:g.U_.SUM,stepInterval:g.yZ.STEP_INTERVAL,orderBy:[{columnName:g.SH.TIMESTAMP,order:g.SL.DESC}],offset:g.yZ.OFFSET,disabled:g.yZ.DISABLED,having:g.yZ.HAVING,legend:g.yZ.LEGEND,limit:g.yZ.LIMIT_UNLIMITED},conversationMetadata:{dataSource:g.YL.TRACES,queryName:g.XQ.CONVERSATION_METADATA,aggregateOperator:g.qf.COUNT,aggregateAttribute:{key:g.SH.SPAN_ID,...g.A3.STRING_TAG_COLUMN},filters:{op:g.we.AND,items:h([{key:{key:g.SH.TENANT_ID,...g.A3.STRING_TAG},op:g.we.EXISTS,value:""},{key:{key:g.SH.AGENT_ID,...g.A3.STRING_TAG},op:g.we.EXISTS,value:""}])},groupBy:[{key:g.SH.CONVERSATION_ID,...g.A3.STRING_TAG},{key:g.SH.TENANT_ID,...g.A3.STRING_TAG},{key:g.SH.AGENT_ID,...g.A3.STRING_TAG},{key:g.SH.AGENT_NAME,...g.A3.STRING_TAG}],expression:g.XQ.CONVERSATION_METADATA,reduceTo:g.U_.SUM,stepInterval:g.yZ.STEP_INTERVAL,orderBy:[{columnName:g.SH.TIMESTAMP,order:g.SL.DESC}],offset:g.yZ.OFFSET,disabled:g.yZ.DISABLED,having:g.yZ.HAVING,legend:g.yZ.LEGEND,limit:g.yZ.LIMIT_UNLIMITED},aiCalls:{dataSource:g.YL.TRACES,queryName:g.XQ.AI_CALLS,aggregateOperator:g.qf.COUNT,aggregateAttribute:{key:g.SH.SPAN_ID,...g.A3.STRING_TAG_COLUMN},filters:{op:g.we.AND,items:h([{key:{key:g.SH.AI_OPERATION_ID,...g.A3.STRING_TAG},op:g.we.EQUALS,value:g.yR.GENERATE_TEXT}])},groupBy:[{key:g.SH.CONVERSATION_ID,...g.A3.STRING_TAG},{key:g.SH.AGENT_ID,...g.A3.STRING_TAG},{key:g.SH.AI_TELEMETRY_FUNCTION_ID,...g.A3.STRING_TAG}],expression:g.XQ.AI_CALLS,reduceTo:g.U_.SUM,stepInterval:g.yZ.STEP_INTERVAL,orderBy:[{columnName:g.SH.TIMESTAMP,order:g.SL.DESC}],offset:g.yZ.OFFSET,disabled:g.yZ.DISABLED,having:g.yZ.HAVING,legend:g.yZ.LEGEND,limit:g.yZ.LIMIT_UNLIMITED},lastActivity:{dataSource:g.YL.TRACES,queryName:g.XQ.LAST_ACTIVITY,aggregateOperator:g.qf.MIN,aggregateAttribute:{key:g.SH.TIMESTAMP,...g.A3.INT64_TAG_COLUMN},filters:{op:g.we.AND,items:h([])},groupBy:[{key:g.SH.CONVERSATION_ID,...g.A3.STRING_TAG}],expression:g.XQ.LAST_ACTIVITY,reduceTo:g.U_.MIN,stepInterval:g.yZ.STEP_INTERVAL,orderBy:[{columnName:g.SH.TIMESTAMP,order:g.SL.DESC}],offset:g.yZ.OFFSET,disabled:g.yZ.DISABLED,having:g.yZ.HAVING,legend:g.yZ.LEGEND,limit:g.yZ.LIMIT_UNLIMITED},spansWithErrors:{dataSource:g.YL.TRACES,queryName:g.XQ.SPANS_WITH_ERRORS,aggregateOperator:g.qf.COUNT,aggregateAttribute:{key:g.SH.SPAN_ID,...g.A3.STRING_TAG_COLUMN},filters:{op:g.we.AND,items:h([{key:{key:g.SH.HAS_ERROR,...g.A3.BOOL_TAG_COLUMN},op:g.we.EQUALS,value:!0}])},groupBy:[{key:g.SH.CONVERSATION_ID,...g.A3.STRING_TAG},{key:g.SH.NAME,...g.A3.STRING_TAG_COLUMN}],expression:g.XQ.SPANS_WITH_ERRORS,reduceTo:g.U_.SUM,stepInterval:g.yZ.STEP_INTERVAL,orderBy:[{columnName:g.SH.TIMESTAMP,order:g.SL.DESC}],offset:g.yZ.OFFSET,disabled:g.yZ.DISABLED,having:g.yZ.HAVING,legend:g.yZ.LEGEND,limit:g.yZ.LIMIT_UNLIMITED},userMessages:{dataSource:g.YL.TRACES,queryName:g.XQ.USER_MESSAGES,aggregateOperator:g.qf.MIN,aggregateAttribute:{key:g.SH.TIMESTAMP,...g.A3.INT64_TAG_COLUMN},filters:{op:g.we.AND,items:h([{key:{key:g.SH.MESSAGE_CONTENT,...g.A3.STRING_TAG},op:g.we.EXISTS,value:""}])},groupBy:[{key:g.SH.CONVERSATION_ID,...g.A3.STRING_TAG},{key:g.SH.MESSAGE_CONTENT,...g.A3.STRING_TAG}],expression:g.XQ.USER_MESSAGES,reduceTo:g.U_.MIN,stepInterval:g.yZ.STEP_INTERVAL,orderBy:[{columnName:g.SH.TIMESTAMP,order:g.SL.ASC}],offset:g.yZ.OFFSET,disabled:g.yZ.DISABLED,having:g.yZ.HAVING,legend:g.yZ.LEGEND,limit:g.yZ.LIMIT_UNLIMITED}}},dataSource:g.YL.TRACES,projectId:d}}buildUniqueAgentsPayload(a,b,c){let d=[{key:{key:g.SH.AGENT_ID,...g.A3.STRING_TAG},op:g.we.EXISTS,value:""},{key:{key:g.SH.AGENT_ID,...g.A3.STRING_TAG},op:g.we.NOT_EQUALS,value:g.PC},...c?[{key:{key:g.SH.PROJECT_ID,...g.A3.STRING_TAG},op:g.we.EQUALS,value:c}]:[]];return{start:a,end:b,step:g.yZ.STEP,variables:{},compositeQuery:{queryType:g.zD.BUILDER,panelType:g.Nv.TABLE,builderQueries:{uniqueAgents:{dataSource:g.YL.TRACES,queryName:g.XQ.UNIQUE_AGENTS,aggregateOperator:g.qf.COUNT,aggregateAttribute:{key:g.SH.SPAN_ID,...g.A3.STRING_TAG_COLUMN},filters:{op:g.we.AND,items:d},groupBy:[{key:g.SH.AGENT_ID,...g.A3.STRING_TAG}],expression:g.XQ.UNIQUE_AGENTS,reduceTo:g.U_.SUM,stepInterval:g.yZ.STEP_INTERVAL,orderBy:[{columnName:g.SH.AGENT_ID,order:g.SL.ASC}],offset:g.yZ.OFFSET,disabled:g.yZ.DISABLED,having:g.yZ.HAVING,legend:g.yZ.LEGEND,limit:g.yZ.LIMIT_UNLIMITED}}},dataSource:g.YL.TRACES,projectId:c}}buildUniqueModelsPayload(a,b,c){let d=[{key:{key:g.SH.AI_MODEL_ID,...g.A3.STRING_TAG},op:g.we.EXISTS,value:""},{key:{key:g.SH.AI_MODEL_ID,...g.A3.STRING_TAG},op:g.we.NOT_EQUALS,value:g.PC},...c?[{key:{key:g.SH.PROJECT_ID,...g.A3.STRING_TAG},op:g.we.EQUALS,value:c}]:[]];return{start:a,end:b,step:g.yZ.STEP,variables:{},compositeQuery:{queryType:g.zD.BUILDER,panelType:g.Nv.TABLE,builderQueries:{uniqueModels:{dataSource:g.YL.TRACES,queryName:g.XQ.UNIQUE_MODELS,aggregateOperator:g.qf.COUNT,aggregateAttribute:{key:g.SH.SPAN_ID,...g.A3.STRING_TAG_COLUMN},filters:{op:g.we.AND,items:d},groupBy:[{key:g.SH.AI_MODEL_ID,...g.A3.STRING_TAG}],expression:g.XQ.UNIQUE_MODELS,reduceTo:g.U_.SUM,stepInterval:g.yZ.STEP_INTERVAL,orderBy:[{columnName:g.SH.AI_MODEL_ID,order:g.SL.ASC}],offset:g.yZ.OFFSET,disabled:g.yZ.DISABLED,having:g.yZ.HAVING,legend:g.yZ.LEGEND,limit:g.yZ.LIMIT_UNLIMITED}}},dataSource:g.YL.TRACES,projectId:c}}buildToolBreakdownPayload(a,b,c){let d=[{key:{key:g.SH.NAME,...g.A3.STRING_TAG_COLUMN},op:g.we.EQUALS,value:g.aR.AI_TOOL_CALL},{key:{key:g.SH.AI_TOOL_TYPE,...g.A3.STRING_TAG},op:g.we.EQUALS,value:g.cZ.MCP},{key:{key:g.SH.CONVERSATION_ID,...g.A3.STRING_TAG},op:g.we.EXISTS,value:""},...c?[{key:{key:g.SH.PROJECT_ID,...g.A3.STRING_TAG},op:g.we.EQUALS,value:c}]:[]];return{start:a,end:b,step:g.yZ.STEP,variables:{},compositeQuery:{queryType:g.zD.BUILDER,panelType:g.Nv.TABLE,builderQueries:{toolCalls:{dataSource:g.YL.TRACES,queryName:"toolCalls",aggregateOperator:g.qf.COUNT,aggregateAttribute:{key:g.SH.SPAN_ID,...g.A3.STRING_TAG_COLUMN},filters:{op:g.we.AND,items:d},groupBy:[{key:g.SH.AI_TOOL_CALL_NAME,...g.A3.STRING_TAG},{key:g.SH.AI_TOOL_CALL_MCP_SERVER_NAME,...g.A3.STRING_TAG},{key:g.SH.AI_TOOL_CALL_MCP_SERVER_ID,...g.A3.STRING_TAG}],expression:"toolCalls",reduceTo:g.U_.SUM,stepInterval:g.yZ.STEP_INTERVAL,orderBy:[{columnName:g.SH.TIMESTAMP,order:g.SL.DESC}],offset:g.yZ.OFFSET,disabled:g.yZ.DISABLED,having:g.yZ.HAVING,legend:g.yZ.LEGEND,limit:g.yZ.LIMIT_UNLIMITED},toolErrors:{dataSource:g.YL.TRACES,queryName:"toolErrors",aggregateOperator:g.qf.COUNT,aggregateAttribute:{key:g.SH.SPAN_ID,...g.A3.STRING_TAG_COLUMN},filters:{op:g.we.AND,items:[...d,{key:{key:g.SH.HAS_ERROR,...g.A3.BOOL_TAG_COLUMN},op:g.we.EQUALS,value:!0}]},groupBy:[{key:g.SH.AI_TOOL_CALL_NAME,...g.A3.STRING_TAG}],expression:"toolErrors",reduceTo:g.U_.SUM,stepInterval:g.yZ.STEP_INTERVAL,orderBy:[{columnName:g.SH.TIMESTAMP,order:g.SL.DESC}],offset:g.yZ.OFFSET,disabled:g.yZ.DISABLED,having:g.yZ.HAVING,legend:g.yZ.LEGEND,limit:g.yZ.LIMIT_UNLIMITED}}},dataSource:g.YL.TRACES,projectId:c}}buildToolServerBreakdownPayload(a,b,c){let d=[{key:{key:g.SH.NAME,...g.A3.STRING_TAG_COLUMN},op:g.we.EQUALS,value:g.aR.AI_TOOL_CALL},{key:{key:g.SH.AI_TOOL_TYPE,...g.A3.STRING_TAG},op:g.we.EQUALS,value:g.cZ.MCP},{key:{key:g.SH.CONVERSATION_ID,...g.A3.STRING_TAG},op:g.we.EXISTS,value:""},...c?[{key:{key:g.SH.PROJECT_ID,...g.A3.STRING_TAG},op:g.we.EQUALS,value:c}]:[]];return{start:a,end:b,step:g.yZ.STEP,variables:{},compositeQuery:{queryType:g.zD.BUILDER,panelType:g.Nv.TABLE,builderQueries:{serverCalls:{dataSource:g.YL.TRACES,queryName:"serverCalls",aggregateOperator:g.qf.COUNT,aggregateAttribute:{key:g.SH.SPAN_ID,...g.A3.STRING_TAG_COLUMN},filters:{op:g.we.AND,items:d},groupBy:[{key:g.SH.AI_TOOL_CALL_MCP_SERVER_NAME,...g.A3.STRING_TAG}],expression:"serverCalls",reduceTo:g.U_.SUM,stepInterval:g.yZ.STEP_INTERVAL,orderBy:[{columnName:g.SH.TIMESTAMP,order:g.SL.DESC}],offset:g.yZ.OFFSET,disabled:g.yZ.DISABLED,having:g.yZ.HAVING,legend:g.yZ.LEGEND,limit:g.yZ.LIMIT_UNLIMITED},serverErrors:{dataSource:g.YL.TRACES,queryName:"serverErrors",aggregateOperator:g.qf.COUNT,aggregateAttribute:{key:g.SH.SPAN_ID,...g.A3.STRING_TAG_COLUMN},filters:{op:g.we.AND,items:[...d,{key:{key:g.SH.HAS_ERROR,...g.A3.BOOL_TAG_COLUMN},op:g.we.EQUALS,value:!0}]},groupBy:[{key:g.SH.AI_TOOL_CALL_MCP_SERVER_NAME,...g.A3.STRING_TAG}],expression:"serverErrors",reduceTo:g.U_.SUM,stepInterval:g.yZ.STEP_INTERVAL,orderBy:[{columnName:g.SH.TIMESTAMP,order:g.SL.DESC}],offset:g.yZ.OFFSET,disabled:g.yZ.DISABLED,having:g.yZ.HAVING,legend:g.yZ.LEGEND,limit:g.yZ.LIMIT_UNLIMITED}}},dataSource:g.YL.TRACES,projectId:c}}buildUniqueToolServersPayload(a,b,c){let d=[{key:{key:g.SH.NAME,...g.A3.STRING_TAG_COLUMN},op:g.we.EQUALS,value:g.aR.AI_TOOL_CALL},{key:{key:g.SH.AI_TOOL_TYPE,...g.A3.STRING_TAG},op:g.we.EQUALS,value:g.cZ.MCP},{key:{key:g.SH.AI_TOOL_CALL_MCP_SERVER_NAME,...g.A3.STRING_TAG},op:g.we.EXISTS,value:""},{key:{key:g.SH.AI_TOOL_CALL_MCP_SERVER_NAME,...g.A3.STRING_TAG},op:g.we.NOT_EQUALS,value:g.PC},...c?[{key:{key:g.SH.PROJECT_ID,...g.A3.STRING_TAG},op:g.we.EQUALS,value:c}]:[]];return{start:a,end:b,step:g.yZ.STEP,variables:{},compositeQuery:{queryType:g.zD.BUILDER,panelType:g.Nv.TABLE,builderQueries:{uniqueServers:{dataSource:g.YL.TRACES,queryName:"uniqueServers",aggregateOperator:g.qf.COUNT,aggregateAttribute:{key:g.SH.SPAN_ID,...g.A3.STRING_TAG_COLUMN},filters:{op:g.we.AND,items:d},groupBy:[{key:g.SH.AI_TOOL_CALL_MCP_SERVER_NAME,...g.A3.STRING_TAG},{key:g.SH.AI_TOOL_CALL_MCP_SERVER_ID,...g.A3.STRING_TAG}],expression:"uniqueServers",reduceTo:g.U_.SUM,stepInterval:g.yZ.STEP_INTERVAL,orderBy:[{columnName:g.SH.AI_TOOL_CALL_MCP_SERVER_NAME,order:g.SL.ASC}],offset:g.yZ.OFFSET,disabled:g.yZ.DISABLED,having:g.yZ.HAVING,legend:g.yZ.LEGEND,limit:g.yZ.LIMIT_UNLIMITED}}},dataSource:g.YL.TRACES,projectId:c}}buildUniqueToolNamesPayload(a,b,c){let d=[{key:{key:g.SH.NAME,...g.A3.STRING_TAG_COLUMN},op:g.we.EQUALS,value:g.aR.AI_TOOL_CALL},{key:{key:g.SH.AI_TOOL_TYPE,...g.A3.STRING_TAG},op:g.we.EQUALS,value:g.cZ.MCP},{key:{key:g.SH.AI_TOOL_CALL_NAME,...g.A3.STRING_TAG},op:g.we.EXISTS,value:""},{key:{key:g.SH.AI_TOOL_CALL_NAME,...g.A3.STRING_TAG},op:g.we.NOT_EQUALS,value:g.PC},...c?[{key:{key:g.SH.PROJECT_ID,...g.A3.STRING_TAG},op:g.we.EQUALS,value:c}]:[]];return{start:a,end:b,step:g.yZ.STEP,variables:{},compositeQuery:{queryType:g.zD.BUILDER,panelType:g.Nv.TABLE,builderQueries:{uniqueTools:{dataSource:g.YL.TRACES,queryName:"uniqueTools",aggregateOperator:g.qf.COUNT,aggregateAttribute:{key:g.SH.SPAN_ID,...g.A3.STRING_TAG_COLUMN},filters:{op:g.we.AND,items:d},groupBy:[{key:g.SH.AI_TOOL_CALL_NAME,...g.A3.STRING_TAG}],expression:"uniqueTools",reduceTo:g.U_.SUM,stepInterval:g.yZ.STEP_INTERVAL,orderBy:[{columnName:g.SH.AI_TOOL_CALL_NAME,order:g.SL.ASC}],offset:g.yZ.OFFSET,disabled:g.yZ.DISABLED,having:g.yZ.HAVING,legend:g.yZ.LEGEND,limit:g.yZ.LIMIT_UNLIMITED}}},dataSource:g.YL.TRACES,projectId:c}}constructor(){this.tenantId=null}}let o=null;function p(a){let b=o??=new n;return a&&b.setTenantId(a),b}},62681:(a,b,c)=>{c.d(b,{A3:()=>d.A3,Nv:()=>d.Nv,PC:()=>d.PC,SH:()=>d.SH,SL:()=>d.SL,U_:()=>d.U_,XQ:()=>d.XQ,YL:()=>d.YL,aR:()=>d.aR,cZ:()=>d.cZ,hL:()=>d.hL,qf:()=>d.qf,we:()=>d.we,yR:()=>d.yR,yZ:()=>d.yZ,zD:()=>d.zD});var d=c(37747)},68733:(a,b,c)=>{c.r(b),c.d(b,{"40c9e644af0ea390713655afee0e882c831c90248a":()=>d.vj,"6002edc3117713fd34b5da63967572f5b4b59b53a8":()=>d.gA,"60a80cf154004f60774d49432682aec7ba3841c830":()=>d.xx,"60b73237e3f4559ed9bd571771af9fde0aa6134ad9":()=>d.Sw,"70c1a3cf3d10c397ff0baf38f828c5d127b2d39648":()=>d.vr});var d=c(86426)}};
@@ -1 +0,0 @@
1
- "use strict";exports.id=4286,exports.ids=[4286],exports.modules={597:(a,b,c)=>{c.d(b,{bq:()=>l,eb:()=>n,gC:()=>m,l6:()=>j,yv:()=>k});var d=c(11918),e=c(84759),f=c(56417),g=c(71935),h=c(74520),i=c(30182);function j({...a}){return(0,d.jsx)(e.bL,{"data-slot":"select",...a})}function k({...a}){return(0,d.jsx)(e.WT,{"data-slot":"select-value",...a})}function l({className:a,size:b="default",children:c,...g}){return(0,d.jsxs)(e.l9,{"data-slot":"select-trigger","data-size":b,className:(0,i.cn)("border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 font-normal normal-case",a),...g,children:[c,(0,d.jsx)(e.In,{asChild:!0,children:(0,d.jsx)(f.A,{className:"size-4 opacity-50"})})]})}function m({className:a,children:b,position:c="popper",...f}){return(0,d.jsx)(e.ZL,{children:(0,d.jsxs)(e.UC,{"data-slot":"select-content",className:(0,i.cn)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto scrollbar-thin scrollbar-thumb-muted-foreground/30 dark:scrollbar-thumb-muted-foreground/50 scrollbar-track-transparent rounded-md border shadow-md","popper"===c&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",a),position:c,...f,children:[(0,d.jsx)(o,{}),(0,d.jsx)(e.LM,{className:(0,i.cn)("p-1","popper"===c&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"),children:b}),(0,d.jsx)(p,{})]})})}function n({className:a,children:b,...c}){return(0,d.jsxs)(e.q7,{"data-slot":"select-item",className:(0,i.cn)("focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",a),...c,children:[(0,d.jsx)("span",{className:"absolute right-2 flex size-3.5 items-center justify-center",children:(0,d.jsx)(e.VF,{children:(0,d.jsx)(g.A,{className:"size-4"})})}),(0,d.jsx)(e.p4,{children:b})]})}function o({className:a,...b}){return(0,d.jsx)(e.PP,{"data-slot":"select-scroll-up-button",className:(0,i.cn)("flex cursor-default items-center justify-center py-1",a),...b,children:(0,d.jsx)(h.A,{className:"size-4"})})}function p({className:a,...b}){return(0,d.jsx)(e.wn,{"data-slot":"select-scroll-down-button",className:(0,i.cn)("flex cursor-default items-center justify-center py-1",a),...b,children:(0,d.jsx)(f.A,{className:"size-4"})})}},8062:(a,b,c)=>{c.d(b,{S:()=>e});var d=c(38870);let e=(0,d.createServerReference)("60ee84efec03a1790e5631d8b51eae887118c168ba",d.callServer,void 0,d.findSourceMapURL,"listCredentialStores")},9383:(a,b,c)=>{c.d(b,{Q1:()=>i,cZ:()=>k,oU:()=>j});var d=c(60922);c(70092);var e=c(6229),f=c(10515),g=c(92082),h=c(27829);async function i(a,b){try{let c=await (0,g.iu)(a,b);return{success:!0,data:c}}catch(a){if(a instanceof h.h)return{success:!1,error:a.message,code:a.error.code};return{success:!1,error:a instanceof Error?a.message:"Unknown error occurred",code:"unknown_error"}}}async function j(a,b,c,d=!0){try{return await (0,g.Wy)(a,b,c),d&&(0,f.revalidatePath)(`/${a}/projects/${b}/mcp-servers`,"page"),{success:!0}}catch(a){if(a instanceof h.h)return{success:!1,error:a.message,code:a.error.code};return{success:!1,error:a instanceof Error?a.message:"Unknown error occurred",code:"unknown_error"}}}async function k(a){try{let b=await (0,e.Rt)({serverUrl:a});return{success:!0,data:b}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to detect OAuth support",code:"oauth_detection_failed"}}}(0,c(28708).D)([i,j,k]),(0,d.A)(i,"607adf541f702c4e1f35b35999cf91fabe5203dba7",null),(0,d.A)(j,"780530a4e6c924e2cc01c5aa1d3d68af458f3a6711",null),(0,d.A)(k,"4071816536a1fcb0f92165e1eef8e16760c660b638",null)},11890:(a,b,c)=>{c.d(b,{S:()=>h});var d=c(11918),e=c(17147),f=c(71935),g=c(30182);function h({className:a,...b}){return(0,d.jsx)(e.bL,{"data-slot":"checkbox",className:(0,g.cn)("peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",a),...b,children:(0,d.jsx)(e.C1,{"data-slot":"checkbox-indicator",className:"flex items-center justify-center text-current transition-none",children:(0,d.jsx)(f.A,{className:"size-3.5"})})})}},14596:(a,b,c)=>{c.d(b,{S:()=>g,U:()=>h});var d=c(60922);c(70092);var e=c(83110),f=c(38867);async function g(a,b){return(0,f.M2)(a),(0,f.nt)(b),(await (0,e.Js)(`tenants/${a}/projects/${b}/credential-stores`)).data}async function h({tenantId:a,projectId:b,storeId:c,key:d,value:g,metadata:h}){return(0,f.M2)(a),(0,f.nt)(b),(await (0,e.Js)(`tenants/${a}/projects/${b}/credential-stores/${c}/credentials`,{method:"POST",body:JSON.stringify({key:d,value:g,metadata:h})})).data}(0,c(28708).D)([g,h]),(0,d.A)(g,"60ee84efec03a1790e5631d8b51eae887118c168ba",null),(0,d.A)(h,"405934e16fcb1c5a94afa21a10a7380e4308edbef8",null)},14758:(a,b,c)=>{c.d(b,{MCPServerForm:()=>G});var d=c(11918),e=c(269),f=c(37747),g=c(33032),h=c(11775),i=c(84834),j=c(96765),k=c(3641),l=c(77050),m=c(35725),n=c(82064),o=c(33149),p=c(871),q=c(88530),r=c(86066),s=c(38870);let t=(0,s.createServerReference)("4071816536a1fcb0f92165e1eef8e16760c660b638",s.callServer,void 0,s.findSourceMapURL,"detectOAuthServerAction");var u=c(66253),v=c(47086),w=c(89213),x=c(2048),y=c(54623),z=c(71935),A=c(5220),B=c(11890),C=c(6084);function D({control:a,name:b,label:c,availableTools:e=[],description:f,disabled:g=!1}){let{field:{value:j,onChange:k},fieldState:{error:l}}=(0,i.as)({name:b,control:a}),n=(0,h.useMemo)(()=>"object"==typeof j&&null!==j&&"type"in j?"all"===j.type?{type:"all"}:"selective"===j.type&&Array.isArray(j.tools)?{type:"selective",tools:j.tools}:{type:"selective",tools:[]}:{type:"selective",tools:[]},[j]),o=()=>{k({type:"all"})},q=()=>{k({type:"selective",tools:[]})},r=(a,b)=>{if("all"===n.type){let c=e.map(a=>a.name).filter(b=>b!==a);k({type:"selective",tools:b?[...c,a]:c})}else k({type:"selective",tools:b?[...n.tools.filter(b=>b!==a),a]:n.tools.filter(b=>b!==a)})},s=()=>{switch(n.type){case"all":return e.length;case"selective":return n.tools.filter(a=>e.some(b=>b.name===a)).length;default:return 0}},t=s()===e.length;return(0,d.jsx)(p.zB,{control:a,name:b,render:()=>(0,d.jsxs)(p.eI,{children:[(0,d.jsxs)(p.lR,{children:[c,(0,d.jsx)(A.E,{variant:"count",children:s()})]}),f&&(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:f}),(0,d.jsxs)("div",{className:"mt-2",children:[0===e.length&&(0,d.jsx)("div",{className:"text-sm text-muted-foreground border rounded-md p-3 py-2 bg-gray-100/80 dark:bg-sidebar",children:"No tools available from this server"}),e.length>0&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 justify-between py-3 px-6 rounded-t-lg border border-b-0",children:[(0,d.jsxs)("div",{className:"text-sm",children:[s()," ",(0,d.jsxs)("span",{className:"text-gray-400 dark:text-white/40",children:["/ ",e.length," tool",1===e.length?"":"s"]})]}),t?(0,d.jsxs)(m.$,{type:"button",variant:"outline",size:"sm",onClick:q,disabled:g,children:[(0,d.jsx)(y.A,{className:"w-4 h-4 text-muted-foreground"}),"Deselect all"]}):(0,d.jsxs)(m.$,{type:"button",variant:"outline",size:"sm",onClick:o,disabled:g,children:[(0,d.jsx)(z.A,{className:"w-4 h-4 text-muted-foreground"}),"Select all"]})]}),(0,d.jsx)("div",{className:"max-h-96 overflow-y-auto border rounded-lg rounded-t-none scrollbar-thin scrollbar-thumb-muted-foreground/30 dark:scrollbar-thumb-muted-foreground/50 scrollbar-track-transparent",children:e.map(a=>{let b=(a=>{switch(n.type){case"all":return e.some(b=>b.name===a);case"selective":return n.tools.includes(a)&&e.some(b=>b.name===a);default:return!1}})(a.name);return(0,d.jsxs)("div",{className:"space-y-2 flex items-start gap-6 border-b last:border-b-0 py-4 px-6 relative",children:[(0,d.jsx)("div",{className:"flex items-center h-[22px]",children:(0,d.jsx)(B.S,{checked:b,disabled:g,className:"mb-0",onClick:()=>!g&&r(a.name,!b)})}),(0,d.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,d.jsx)(A.E,{variant:b?"primary":"code",className:`font-mono font-medium text-xs cursor-pointer transition-colors ${g?"opacity-50 cursor-not-allowed":""}`,onClick:()=>!g&&r(a.name,!b),children:a.name}),(0,d.jsxs)(C.Tooltip,{delayDuration:800,children:[(0,d.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,d.jsx)("p",{className:"text-sm text-muted-foreground line-clamp-1",children:a.description})}),(0,d.jsx)(C.TooltipContent,{side:"bottom",align:"start",children:a.description})]})]})]},a.name)})})]})]}),(0,d.jsx)(p.C5,{children:l?.message})]})})}var E=c(22286);let F={name:"",config:{type:"mcp",mcp:{server:{url:""},transport:{type:f.o7.streamableHttp},toolsConfig:{type:"all"}}},imageUrl:"",credentialReferenceId:"oauth",credentialScope:E.t.project};function G({initialData:a,mode:b="create",tool:c,credentials:s,tenantId:y,projectId:z}){let A=(0,g.useRouter)(),[B,C]=(0,h.useState)(!1),[G,H]=(0,h.useState)(!1),I=(0,i.mN)({resolver:(0,e.u)(E.E),defaultValues:{...F,...a}}),{handleOAuthLogin:J}=(0,r.U)({tenantId:y,projectId:z}),{isSubmitting:K}=I.formState,L=async a=>{try{let d=a.name;if(a.credentialScope===E.t.user&&"create"===b){let b={id:(0,x.$)(),name:d,config:{type:"mcp",mcp:{server:{url:a.config.mcp.server.url},transport:{type:a.config.mcp.transport.type}}},credentialReferenceId:null,credentialScope:E.t.user,imageUrl:a.imageUrl},c=await (0,v.X)(y,z,b);j.oR.success("MCP server created. Users can connect their own accounts from the detail page."),A.push(`/${y}/projects/${z}/mcp-servers/${c.id}`);return}if("oauth"===a.credentialReferenceId&&"create"===b){let b=await t(a.config.mcp.server.url);if(!b.success)return void j.oR.error(b.error||"Failed to detect OAuth support");if(!b.data)return void j.oR.error("This MCP server does not support OAuth authentication. Please select a different credential.");let c={id:(0,x.$)(),name:d,config:{type:"mcp",mcp:{server:{url:a.config.mcp.server.url},transport:{type:a.config.mcp.transport.type}}},credentialReferenceId:null,credentialScope:E.t.project,imageUrl:a.imageUrl},e=await (0,v.X)(y,z,c);J({toolId:e.id,mcpServerUrl:a.config.mcp.server.url,toolName:d});return}let e={...a,name:d,credentialReferenceId:"none"===a.credentialReferenceId?null:a.credentialReferenceId,credentialScope:a.credentialScope,config:{...a.config,mcp:{...a.config.mcp,activeTools:(a=>{if("all"===a.type)return;let b=c?.availableTools?.map(a=>a.name)||[];return a.tools.filter(a=>b.includes(a))})(a.config.mcp.toolsConfig)}}};if("update"===b&&c)await (0,w.Y)(y,z,c.id,e),j.oR.success("MCP server updated successfully"),A.push(`/${y}/projects/${z}/mcp-servers/${c.id}`);else{let a=await (0,v.X)(y,z,{...e,id:(0,x.$)()});j.oR.success("MCP server created successfully"),A.push(`/${y}/projects/${z}/mcp-servers/${a.id}`)}}catch(a){console.error(`Failed to ${b} MCP tool:`,a),j.oR.error(`Failed to ${b} MCP server. Please try again.`)}},M=async()=>{if(c){H(!0);try{let a=await (0,u.o)(y,z,c.id,!1);a.success?(C(!1),j.oR.success("MCP server deleted."),A.push(`/${y}/projects/${z}/mcp-servers`)):j.oR.error(a.error||"Failed to delete MCP server.")}finally{H(!1)}}};return(0,d.jsxs)(o.Dialog,{open:B,onOpenChange:C,children:[(0,d.jsx)(p.lV,{...I,children:(0,d.jsxs)("form",{onSubmit:I.handleSubmit(L),className:"space-y-8",children:[(0,d.jsx)(k.a,{control:I.control,name:"name",label:"Name",placeholder:"MCP server",isRequired:!0}),(0,d.jsx)(k.a,{control:I.control,name:"config.mcp.server.url",label:"URL",placeholder:"https://api.example.com/mcp",isRequired:!0}),(0,d.jsx)(l.U,{control:I.control,selectTriggerClassName:"w-full",name:"config.mcp.transport.type",label:"Transport type",placeholder:"Select transport type",options:[{value:f.o7.streamableHttp,label:"Streamable HTTP"},{value:f.o7.sse,label:"Server-Sent Events (SSE)"}]}),(0,d.jsx)(k.a,{control:I.control,name:"imageUrl",label:"Image URL (optional)",placeholder:"https://example.com/icon.png or data:image/png;base64,..."}),(0,d.jsxs)("div",{className:"space-y-3",children:[(0,d.jsx)(l.U,{control:I.control,selectTriggerClassName:"w-full",name:"credentialScope",label:"Credential Scope",placeholder:"Select credential scope",disabled:"update"===b,options:[{value:E.t.project,label:"Project (shared team credential)"},{value:E.t.user,label:"User (each user connects their own)"}]}),(0,d.jsx)(q.n,{title:"Credential Scope",children:(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsxs)("p",{children:[(0,d.jsx)("strong",{children:"Project:"})," One shared credential for the entire team. You'll connect an OAuth account now that everyone will use."]}),(0,d.jsxs)("p",{children:[(0,d.jsx)("strong",{children:"User:"})," Each team member connects their own account. No OAuth required during setup — users connect later from the detail page."]})]})})]}),I.watch("credentialScope")===E.t.project&&(0,d.jsxs)("div",{className:"space-y-3",children:[(0,d.jsx)(l.U,{control:I.control,selectTriggerClassName:"w-full",name:"credentialReferenceId",label:"Credential",placeholder:"Select a credential",options:[{value:"oauth",label:"OAuth"},{value:"none",label:"No Authentication"},...s.map(a=>({value:a.id,label:a.name}))]}),(0,d.jsx)(q.n,{title:"How this works",children:(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsxs)("p",{children:["Select ",(0,d.jsx)("code",{className:"bg-background px-1.5 py-0.5 rounded border",children:"OAuth"})," ",'to authenticate with the MCP server\'s OAuth flow, which will start after you click "Create".']}),(0,d.jsxs)("p",{children:["Select"," ",(0,d.jsx)("code",{className:"bg-background px-1.5 py-0.5 rounded border",children:"No Authentication"})," ","to skip authentication (i.e. none required or add a credential later)."]}),(0,d.jsx)("p",{children:"Or select from the existing credentials you have already created."})]})})]}),"update"===b&&(0,d.jsx)(D,{control:I.control,name:"config.mcp.toolsConfig",label:"Tools",availableTools:c?.availableTools||[],description:"Select which tools should be enabled for this MCP server"}),(0,d.jsxs)("div",{className:"flex w-full justify-between",children:[(0,d.jsx)(m.$,{type:"submit",disabled:K,children:"update"===b?"Save":"Create"}),"update"===b&&c&&(0,d.jsx)(o.DialogTrigger,{asChild:!0,children:(0,d.jsx)(m.$,{type:"button",variant:"destructive-outline",children:"Delete Server"})})]})]})}),B&&c&&(0,d.jsx)(n.J,{itemName:c.name||"this MCP server",isSubmitting:G,onDelete:M})]})}},17147:(a,b,c)=>{c.d(b,{C1:()=>x,bL:()=>v});var d=c(11775),e=c(91695),f=c(82003),g=c(25877),h=c(96176),i=c(65212),j=c(98300),k=c(59351),l=c(94857),m=c(11918),n="Checkbox",[o,p]=(0,f.A)(n),[q,r]=o(n);function s(a){let{__scopeCheckbox:b,checked:c,children:e,defaultChecked:f,disabled:g,form:i,name:j,onCheckedChange:k,required:l,value:o="on",internal_do_not_use_render:p}=a,[r,s]=(0,h.i)({prop:c,defaultProp:f??!1,onChange:k,caller:n}),[t,u]=d.useState(null),[v,w]=d.useState(null),x=d.useRef(!1),y=!t||!!i||!!t.closest("form"),z={checked:r,disabled:g,setChecked:s,control:t,setControl:u,name:j,form:i,value:o,hasConsumerStoppedPropagationRef:x,required:l,defaultChecked:!A(f)&&f,isFormControl:y,bubbleInput:v,setBubbleInput:w};return(0,m.jsx)(q,{scope:b,...z,children:"function"==typeof p?p(z):e})}var t="CheckboxTrigger",u=d.forwardRef(({__scopeCheckbox:a,onKeyDown:b,onClick:c,...f},h)=>{let{control:i,value:j,disabled:k,checked:n,required:o,setControl:p,setChecked:q,hasConsumerStoppedPropagationRef:s,isFormControl:u,bubbleInput:v}=r(t,a),w=(0,e.s)(h,p),x=d.useRef(n);return d.useEffect(()=>{let a=i?.form;if(a){let b=()=>q(x.current);return a.addEventListener("reset",b),()=>a.removeEventListener("reset",b)}},[i,q]),(0,m.jsx)(l.sG.button,{type:"button",role:"checkbox","aria-checked":A(n)?"mixed":n,"aria-required":o,"data-state":B(n),"data-disabled":k?"":void 0,disabled:k,value:j,...f,ref:w,onKeyDown:(0,g.mK)(b,a=>{"Enter"===a.key&&a.preventDefault()}),onClick:(0,g.mK)(c,a=>{q(a=>!!A(a)||!a),v&&u&&(s.current=a.isPropagationStopped(),s.current||a.stopPropagation())})})});u.displayName=t;var v=d.forwardRef((a,b)=>{let{__scopeCheckbox:c,name:d,checked:e,defaultChecked:f,required:g,disabled:h,value:i,onCheckedChange:j,form:k,...l}=a;return(0,m.jsx)(s,{__scopeCheckbox:c,checked:e,defaultChecked:f,disabled:h,required:g,onCheckedChange:j,name:d,form:k,value:i,internal_do_not_use_render:({isFormControl:a})=>(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(u,{...l,ref:b,__scopeCheckbox:c}),a&&(0,m.jsx)(z,{__scopeCheckbox:c})]})})});v.displayName=n;var w="CheckboxIndicator",x=d.forwardRef((a,b)=>{let{__scopeCheckbox:c,forceMount:d,...e}=a,f=r(w,c);return(0,m.jsx)(k.C,{present:d||A(f.checked)||!0===f.checked,children:(0,m.jsx)(l.sG.span,{"data-state":B(f.checked),"data-disabled":f.disabled?"":void 0,...e,ref:b,style:{pointerEvents:"none",...a.style}})})});x.displayName=w;var y="CheckboxBubbleInput",z=d.forwardRef(({__scopeCheckbox:a,...b},c)=>{let{control:f,hasConsumerStoppedPropagationRef:g,checked:h,defaultChecked:k,required:n,disabled:o,name:p,value:q,form:s,bubbleInput:t,setBubbleInput:u}=r(y,a),v=(0,e.s)(c,u),w=(0,i.Z)(h),x=(0,j.X)(f);d.useEffect(()=>{if(!t)return;let a=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set,b=!g.current;if(w!==h&&a){let c=new Event("click",{bubbles:b});t.indeterminate=A(h),a.call(t,!A(h)&&h),t.dispatchEvent(c)}},[t,w,h,g]);let z=d.useRef(!A(h)&&h);return(0,m.jsx)(l.sG.input,{type:"checkbox","aria-hidden":!0,defaultChecked:k??z.current,required:n,disabled:o,name:p,value:q,form:s,...b,tabIndex:-1,ref:v,style:{...b.style,...x,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});function A(a){return"indeterminate"===a}function B(a){return A(a)?"indeterminate":a?"checked":"unchecked"}z.displayName=y},22286:(a,b,c)=>{c.d(b,{E:()=>h,t:()=>g});var d=c(37747),e=c(38131);let f=e.discriminatedUnion("type",[e.object({type:e.literal("all")}),e.object({type:e.literal("selective"),tools:e.array(e.string())})]),g={project:"project",user:"user"},h=e.object({name:e.string().min(1,"Name is required."),config:e.object({type:e.literal("mcp"),mcp:e.object({server:e.object({url:e.string().url("Must be a valid URL.")}),transport:e.object({type:e.nativeEnum(d.o7)}),toolsConfig:f.default({type:"all"})})}),credentialReferenceId:e.string().nullish(),credentialScope:e.enum(g).default("project"),imageUrl:e.string().optional()})},47086:(a,b,c)=>{c.d(b,{X:()=>e});var d=c(38870);let e=(0,d.createServerReference)("70a10d4f0e4160c6a52e2ae1cdc844fec232b6a61e",d.callServer,void 0,d.findSourceMapURL,"createMCPTool")},66253:(a,b,c)=>{c.d(b,{o:()=>e});var d=c(38870);let e=(0,d.createServerReference)("780530a4e6c924e2cc01c5aa1d3d68af458f3a6711",d.callServer,void 0,d.findSourceMapURL,"deleteToolAction")},77050:(a,b,c)=>{c.d(b,{U:()=>g});var d=c(11918),e=c(597),f=c(29774);function g({control:a,name:b,label:c,placeholder:g,options:h,disabled:i=!1,selectTriggerClassName:j,description:k,isRequired:l=!1}){return(0,d.jsx)(f.u,{control:a,name:b,label:c,description:k,isRequired:l,children:a=>(0,d.jsxs)(e.l6,{onValueChange:a.onChange,defaultValue:a.value,disabled:i,children:[(0,d.jsx)(e.bq,{disabled:i,className:j,children:(0,d.jsx)(e.yv,{placeholder:g})}),(0,d.jsx)(e.gC,{children:h.map(a=>(0,d.jsx)(e.eb,{value:a.value,disabled:a.disabled,children:a.label},a.value))})]})})}},78921:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(28941).A)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]])},82064:(a,b,c)=>{c.d(b,{J:()=>h});var d=c(11918),e=c(78921),f=c(35725),g=c(33149);function h({itemName:a,isSubmitting:b,onDelete:c,customTitle:h,customDescription:i}){let j=async()=>{await c()};return(0,d.jsxs)(g.DialogContent,{children:[(0,d.jsx)(g.DialogTitle,{children:h||`Delete ${a||"this item"}`}),(0,d.jsx)(g.DialogDescription,{children:i||`Are you sure you want to delete ${a||"this item"}? This action cannot be undone.`}),(0,d.jsxs)(g.Es,{children:[(0,d.jsx)(g.HM,{asChild:!0,children:(0,d.jsx)(f.$,{variant:"outline",children:"Cancel"})}),(0,d.jsx)(f.$,{variant:"destructive",onClick:j,disabled:b,children:b?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(e.A,{className:"size-4 animate-spin"})," Deleting..."]}):"Delete"})]})]})}},83608:(a,b,c)=>{c.d(b,{$Y:()=>g,GO:()=>i,Ji:()=>l,K3:()=>h,h9:()=>k,nZ:()=>j});var d=c(26421);c(56387);var e=c(24961),f=c(65382);async function g(a,b,c=1,d=50){(0,f.M2)(a),(0,f.nt)(b);let h=new URLSearchParams({page:c.toString(),limit:d.toString()});return(await (0,e.Js)(`tenants/${a}/projects/${b}/credentials?${h}`)).data}async function h(a,b,c){return(0,f.M2)(a),(0,f.nt)(b),(await (0,e.Js)(`tenants/${a}/projects/${b}/credentials/${c}`)).data}async function i(a,b,c){return(0,f.M2)(a),(0,f.nt)(b),(await (0,e.Js)(`tenants/${a}/projects/${b}/credentials`,{method:"POST",body:JSON.stringify(c)})).data}async function j(a,b,c,d){return(0,f.M2)(a),(0,f.nt)(b),(await (0,e.Js)(`tenants/${a}/projects/${b}/credentials/${c}`,{method:"PUT",body:JSON.stringify(d)})).data}async function k(a,b,c){(0,f.M2)(a),(0,f.nt)(b),await (0,e.Js)(`tenants/${a}/projects/${b}/credentials/${c}`,{method:"DELETE"})}async function l(a,b,c){(0,f.M2)(a),(0,f.nt)(b);try{return(await (0,e.Js)(`tenants/${a}/projects/${b}/tools/${c}/user-credential`)).data}catch{return null}}(0,c(77851).D)([g,h,i,j,k,l]),(0,d.A)(g,"780c1e0fd9901309d6c054c413702c3bd80d06a36c",null),(0,d.A)(h,"707816150669872f112a25626cf463ec2473d9cbd8",null),(0,d.A)(i,"70478b32fdccc090ab5640011e01d0648a7fcd1146",null),(0,d.A)(j,"78c31d63007bd7ed9ee23aa249b40ef7d7f28971dc",null),(0,d.A)(k,"708be2c67e96eff63f579453e33a7b62d32ed3ca28",null),(0,d.A)(l,"70882d27007c9eedb08709039d8aee72e17324f916",null)},86066:(a,b,c)=>{c.d(b,{U:()=>o});var d=c(37747),e=c(33032),f=c(11775),g=c(96765),h=c(69495),i=c(8062),j=c(89213),k=c(31730),l=c(2048),m=c(52082),n=c(30366);function o({tenantId:a,projectId:b,onFinish:c}){let o=(0,e.useRouter)(),{PUBLIC_INKEEP_AGENTS_MANAGE_API_URL:p}=(0,h.y)(),{openNangoConnectHeadless:q}=(0,n.$)(),{user:r}=(0,m.Q)(),s=(0,f.useRef)(new Map),t=(0,f.useCallback)((d,e)=>new Promise((f,g)=>{let h=s.current.get(d);h&&(h(),s.current.delete(d));try{let h=e??function({PUBLIC_INKEEP_AGENTS_MANAGE_API_URL:a,tenantId:b,projectId:c,id:d}){if(!b||"string"!=typeof b)throw Error("Invalid tenantId: must be a non-empty string");if(!d||"string"!=typeof d)throw Error("Invalid tool id: must be a non-empty string");if(!c||"string"!=typeof c)throw Error("Invalid projectId: must be a non-empty string");let e=/^[a-zA-Z0-9-_]+$/;if(!e.test(b))throw Error("Invalid tenantId format: only alphanumeric characters, hyphens, and underscores allowed");if(!e.test(d))throw Error("Invalid tool id format: only alphanumeric characters, hyphens, and underscores allowed");if(!e.test(c))throw Error("Invalid projectId format: only alphanumeric characters, hyphens, and underscores allowed");let f=`${a}/oauth/login?tenantId=${encodeURIComponent(b)}&projectId=${encodeURIComponent(c)}&toolId=${encodeURIComponent(d)}`;if(!f.startsWith(a))throw Error("Invalid OAuth URL generated");return f}({PUBLIC_INKEEP_AGENTS_MANAGE_API_URL:p,tenantId:a,projectId:b,id:d}),i=window.open(h,"oauth-popup","width=600,height=700,scrollbars=yes,resizable=yes,status=yes,location=yes");if(!i){let a=Error(`Failed to open popup for ${d} - blocked by browser`);console.error(a.message),g(a);return}let j=!1,k=(e,h)=>{j||(j=!0,window.removeEventListener("message",l),m&&clearInterval(m),clearTimeout(n),s.current.delete(d),e?(c?c(d):o.push(`/${a}/projects/${b}/mcp-servers/${d}`),f()):g(h||Error("OAuth login failed")))},l=a=>{"oauth-success"===a.data.type?k(!0):"oauth-error"===a.data.type&&k(!1,Error(a.data.error||"OAuth login failed"))};window.addEventListener("message",l);let m=null,n=setTimeout(()=>{j||(m=setInterval(()=>{try{i.closed&&k(!0)}catch{}},1e3))},3e3);s.current.set(d,()=>{k(!1,Error("OAuth login cancelled"))})}catch(a){g(a instanceof Error?a:Error("OAuth login failed"))}}),[p,a,b,c,o]),u=(0,f.useCallback)(async({toolId:e,mcpServerUrl:f,toolName:g,credentialScope:h})=>{if(!r)throw Error("User not found");let i=await q({mcpServerUrl:f,providerUniqueKey:`${(0,d.K_)(g)}_${e.slice(0,4)}`,providerDisplayName:g}),m="user"===h,n={id:(0,l.$)(),name:g,type:d.Ns.nango,credentialStoreId:d.Ux,createdBy:r?.email??void 0,...m&&{toolId:e,userId:r.id},retrievalParams:{connectionId:i.connectionId,providerConfigKey:i.providerConfigKey,provider:"mcp-generic",authMode:"OAUTH2"}},p=await (0,k.U)(a,b,n);m||await (0,j.Y)(a,b,e,{credentialReferenceId:p.id}),c?c(e):o.push(`/${a}/projects/${b}/mcp-servers/${e}`)},[q,c,o,a,b,r]);return{handleOAuthLogin:(0,f.useCallback)(async({toolId:c,mcpServerUrl:e,toolName:f,thirdPartyConnectAccountUrl:h,credentialScope:j})=>{if(h)return void await t(c,h);try{let g=await (0,i.S)(a,b),h=g.some(a=>a.type===d.Ns.nango&&a.available),k=g.some(a=>a.type===d.Ns.keychain&&a.available);if(h)await u({toolId:c,mcpServerUrl:e,toolName:f,credentialScope:j});else if(k)await t(c);else throw Error("No credential store available. Please configure Nango or Keychain.")}catch(b){let a=b instanceof Error?b:Error("OAuth login failed");throw g.oR.error(a.message),a}},[a,b,u,t])}}},89213:(a,b,c)=>{c.d(b,{Y:()=>e});var d=c(38870);let e=(0,d.createServerReference)("78ce251e18137b32a015024b3eb18a86fe323a17d9",d.callServer,void 0,d.findSourceMapURL,"updateMCPTool")},92082:(a,b,c)=>{c.d(b,{Wy:()=>k,XL:()=>i,YU:()=>j,iu:()=>g,xl:()=>h});var d=c(60922);c(70092);var e=c(83110),f=c(38867);async function g(a,b,c=1,d=50,h){(0,f.M2)(a),(0,f.nt)(b);let i=new URLSearchParams({page:c.toString(),limit:d.toString()});return h&&i.append("status",h),(await (0,e.Js)(`tenants/${a}/projects/${b}/tools?${i}`)).data.filter(a=>a.config?.type==="mcp")}async function h(a,b,c){return(0,f.M2)(a),(0,f.nt)(b),(await (0,e.Js)(`tenants/${a}/projects/${b}/tools/${c}`)).data}async function i(a,b,c){return(0,f.M2)(a),(0,f.nt)(b),(await (0,e.Js)(`tenants/${a}/projects/${b}/tools`,{method:"POST",body:JSON.stringify(c)})).data}async function j(a,b,c,d){return(0,f.M2)(a),(0,f.nt)(b),(await (0,e.Js)(`tenants/${a}/projects/${b}/tools/${c}`,{method:"PUT",body:JSON.stringify(d)})).data}async function k(a,b,c){(0,f.M2)(a),(0,f.nt)(b),await (0,e.Js)(`tenants/${a}/projects/${b}/tools/${c}`,{method:"DELETE"})}(0,c(28708).D)([g,h,i,j,k]),(0,d.A)(g,"7cf9743e3d8fa97d44b3dc5e51d3765b501afa32fa",null),(0,d.A)(h,"7048209c4f79c6bbd6d68e88bb199f01e4c93dd8da",null),(0,d.A)(i,"70a10d4f0e4160c6a52e2ae1cdc844fec232b6a61e",null),(0,d.A)(j,"78ce251e18137b32a015024b3eb18a86fe323a17d9",null),(0,d.A)(k,"70c8f146707d58f1e0f30bd1435946aa20ecf9e40c",null)}};