@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.
- package/.next/standalone/agents-manage-ui/.next/BUILD_ID +1 -1
- package/.next/standalone/agents-manage-ui/.next/app-path-routes-manifest.json +8 -7
- package/.next/standalone/agents-manage-ui/.next/build-manifest.json +3 -3
- package/.next/standalone/agents-manage-ui/.next/prerender-manifest.json +28 -3
- package/.next/standalone/agents-manage-ui/.next/react-loadable-manifest.json +44 -44
- package/.next/standalone/agents-manage-ui/.next/routes-manifest.json +6 -0
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/[agentId]/page.js +7 -7
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/[agentId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/api-keys/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/api-keys/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/new/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/new/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/new/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/page.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/new/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/new/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/new/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/page.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/page.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/edit/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/edit/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/edit/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/new/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/new/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/new/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/new/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/new/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/new/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/settings/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/settings/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page.js +3 -3
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/tool-calls/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/tool-calls/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/tool-calls/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/settings/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/settings/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/_global-error.html +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/_global-error.rsc +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/_global-error.segments/_full.segment.rsc +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/_global-error.segments/_index.segment.rsc +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/_not-found.html +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/_not-found.rsc +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/accept-invitation/[invitationId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/api/data-components/[dataComponentId]/generate-render/route.js +8 -8
- package/.next/standalone/agents-manage-ui/.next/server/app/api/data-components/[dataComponentId]/generate-render/route_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/api/signoz/conversations/[conversationId]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/api/signoz/route_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/device/page.js +2 -0
- package/.next/standalone/agents-manage-ui/.next/server/app/device/page.js.nft.json +1 -0
- package/.next/standalone/agents-manage-ui/.next/server/app/device/page_client-reference-manifest.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/server/app/device.html +1 -0
- package/.next/standalone/agents-manage-ui/.next/server/app/device.meta +15 -0
- package/.next/standalone/agents-manage-ui/.next/server/app/device.rsc +26 -0
- package/.next/standalone/agents-manage-ui/.next/server/app/device.segments/_full.segment.rsc +26 -0
- package/.next/standalone/agents-manage-ui/.next/server/app/device.segments/_head.segment.rsc +8 -0
- package/.next/standalone/agents-manage-ui/.next/server/app/device.segments/_index.segment.rsc +11 -0
- package/.next/standalone/agents-manage-ui/.next/server/app/device.segments/_tree.segment.rsc +5 -0
- package/.next/standalone/agents-manage-ui/.next/server/app/device.segments/device/__PAGE__.segment.rsc +9 -0
- package/.next/standalone/agents-manage-ui/.next/server/app/device.segments/device.segment.rsc +4 -0
- package/.next/standalone/agents-manage-ui/.next/server/app/index.html +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/index.rsc +3 -3
- package/.next/standalone/agents-manage-ui/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/index.segments/_full.segment.rsc +3 -3
- package/.next/standalone/agents-manage-ui/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/login/page.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/login.html +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/login.rsc +3 -3
- package/.next/standalone/agents-manage-ui/.next/server/app/login.segments/_full.segment.rsc +3 -3
- package/.next/standalone/agents-manage-ui/.next/server/app/login.segments/_head.segment.rsc +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/login.segments/_index.segment.rsc +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/login.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/login.segments/login.segment.rsc +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/logout/route_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/no-organization/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/no-organization.html +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/no-organization.rsc +3 -3
- package/.next/standalone/agents-manage-ui/.next/server/app/no-organization.segments/_full.segment.rsc +3 -3
- package/.next/standalone/agents-manage-ui/.next/server/app/no-organization.segments/_head.segment.rsc +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/no-organization.segments/_index.segment.rsc +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/no-organization.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/no-organization.segments/no-organization/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/no-organization.segments/no-organization.segment.rsc +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app-paths-manifest.json +8 -7
- package/.next/standalone/agents-manage-ui/.next/server/chunks/1224.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/server/chunks/134.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/server/chunks/2191.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/server/chunks/2196.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/chunks/27.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/4006.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/server/chunks/475.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/6125.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/6229.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/7927.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/8202.js +123 -0
- package/.next/standalone/agents-manage-ui/.next/server/chunks/8324.js +3 -3
- package/.next/standalone/agents-manage-ui/.next/server/chunks/8386.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/chunks/8870.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/8995.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/server/chunks/9329.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/9637.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/middleware-build-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/pages/404.html +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/pages/500.html +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/server-reference-manifest.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/128CYTctCNJAhhqIGwzHR/_buildManifest.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{06e323d1.faf1d26dc6d9cfe1.js → 06e323d1.e0698d05e7b1dee1.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/12623.a18fe01966821156.js +23 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{13395.6f5f8c02b9dff6fc.js → 13395.89a6ee2e7de7d969.js} +5 -5
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{16190.9f93a74b230c1b31.js → 16190.a19685c17a7316aa.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{177.ff86212411e3c834.js → 177.6bb9d65c1200c0df.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{19524.8bcd86da204265f8.js → 19524.e25ec2f72e18a146.js} +3 -3
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{2074.e3cb114c1c8bbaee.js → 2074.6d18a2c79a784ca8.js} +2 -2
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{21129.20bf0aab6c56d27d.js → 21129.55311c26e23a3edd.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{22751.16de398bd0cf2494.js → 22751.e238be2481d1dd2e.js} +2 -2
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{26493.bd2ebe1c07a533a2.js → 26493.b8960dec192e5371.js} +2 -2
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{30043.c30f8a3e087001b9.js → 30043.37f3d597bd387417.js} +2 -2
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{30347.dfd1789d004a6e17.js → 30347.4a164197b35ba53e.js} +2 -2
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{31229fe1.d395e5c492d15744.js → 31229fe1.18c3aabca54deeb3.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{314.f0fc894b0627075a.js → 314.f1ba226dd80030a5.js} +2 -2
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{32609.e78336bf4190f8a2.js → 32609.1d07dac2c84dcd6c.js} +2 -2
- package/.next/standalone/agents-manage-ui/.next/static/chunks/33538-913163d6de7a8917.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{34490.c6716f08e5a8d7c6.js → 34490.87575654cf69d7c1.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{3464.00c161a89963668b.js → 3464.190a5cbfdf3bfb74.js} +2 -2
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{34797.250b51dba357712f.js → 34797.c3fb144bf8cdd9d7.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{33568-25f6aa1950287007.js → 3645-a0ab6abdbe5a63d6.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{36576.c19a624887f1cf96.js → 36576.b16fe34b8d865e68.js} +2 -2
- package/.next/standalone/agents-manage-ui/.next/static/chunks/37211-88a1175c4c962fcf.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{44414.7ca075c549503511.js → 44414.e115057a34d25044.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{49401.a2f9a1d3c0cd5c02.js → 49401.75fe20b1b82a81b6.js} +3 -3
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{50690-fbaaa5e5f7a55d2d.js → 50690-f42850faabd30a72.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{50840.e1b438290ab6db7b.js → 50840.a1eb18581ee3d56f.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{50925-89c61b629b4b9312.js → 50925-58e66ef621e03095.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{52520.9b4e28eec4f1146c.js → 52520.a6dc6a92c69ee1f8.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/52837-64ab73645b83f7ad.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{57261.5711cbd23994721d.js → 57261.c14adc6f99664197.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{64419.126a60d19f4571bb.js → 64419.e1cc8e7205107518.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/65536-8ab61c40e29c6dd1.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{69316.ce4bf3b6d8fc6e8b.js → 69316.2e249f1d0c68bfe2.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/71303-3c20433fad16d803.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{7256.f87adeffee37d2b5.js → 7256.c11914cf1d88ea27.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{74103.0b272207688c93c0.js → 74103.f4069dfea3f90645.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{76624.77da5193c9eb54f9.js → 76624.2a12df862ad42e1d.js} +2 -2
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{78295-d8598f3e9deed8c6.js → 78295-a953cea9b4ddefb0.js} +2 -2
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{80142.4699314d5d2dd885.js → 80142.8f461a22401c33c4.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{86235.974118faf8b07740.js → 86235.0b234142623f1d4b.js} +2 -2
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{8886.03e98a67ad7ffde0.js → 8886.69edb381a9fd5828.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/90458-e37de70d68c15e0d.js +14 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/90663-6f3c8d840b9509de.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{94775.9e9be9eab236eebc.js → 94775.2516b47c9f468360.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{9798a8e4-faa839481f967a8d.js → 9798a8e4-0862900761f4e98d.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{99624.802da7fc39a43fd1.js → 99624.f6da6213a1c89fc6.js} +2 -2
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/layout-f3f8594fe9907b6a.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/[agentId]/{page-d18719edcc62b822.js → page-1c08075c1577685d.js} +6 -6
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/{page-899dfd9cc3a19b47.js → page-de611c3b9721895e.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/api-keys/{page-9c225515b7592228.js → page-9bb357831529935f.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/{page-e64fd0598fd2e8a1.js → page-0abc457717fac6fc.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/new/page-e121e7a27c77db87.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/{page-b0ea0b749b30d3c7.js → page-9947e188205011ff.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/{page-98e2a8d5ba3cd923.js → page-e0fc4168a61d3262.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/new/{page-498a31b87266f054.js → page-b7f3c021d465b048.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/page-6f061aaffb7cf1cd.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page-794f3b672ce6268c.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page-ffb67c7e8b7fc049.js +1 -0
- 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
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/{page-794c945cd39b2b80.js → page-f1661fe429305430.js} +1 -1
- 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
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/new/{page-234b8c244b962c55.js → page-a0f3805d834d330d.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/{page-f8118fd8fbba2b62.js → page-e353f2d009f7f695.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page-add7ba8587841e4e.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page-8c7ba924d1571ed0.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/new/page-2b68fb543c1603bb.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/{page-af62c83660580b24.js → page-66961d3eb5080d75.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/settings/page-4df4fb25d5f2f0c1.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/{page-9000b358f48e450a.js → page-d58a28353d0ab568.js} +2 -2
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/page-53fb8c7cdd753251.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/settings/page-b0947e464a321b5f.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/device/page-8087f66e547bc6ca.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/login/page-917d9b438eb5eee8.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/page-285a659f3fade146.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{webpack-9ed0b890bbcbcc6c.js → webpack-67d535e0e9dd883e.js} +1 -1
- package/.next/standalone/agents-manage-ui/package.json +1 -1
- package/.next/standalone/package.json +1 -1
- package/.next/standalone/packages/agents-core/package.json +11 -11
- package/package.json +4 -4
- package/src/app/device/page.tsx +313 -0
- package/src/app/login/page.tsx +14 -2
- package/src/components/settings/members-table.tsx +4 -2
- package/src/lib/auth-client.ts +2 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/3138.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/4286.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/5978.js +0 -123
- package/.next/standalone/agents-manage-ui/.next/server/chunks/8185.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/8431.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/902.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/cEZrzrKK_4Wmz-9nyuTwO/_buildManifest.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/1186-3ef8f167f43c3be2.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/33538-7e6d81f30594c5fc.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/34981-cebc039f5c48e794.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/37211-01d85c9f7407e356.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/53067.aa17db986ac34425.js +0 -23
- package/.next/standalone/agents-manage-ui/.next/static/chunks/63188-c7b5d51fbc726886.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/64295-81f2477010363e89.js +0 -14
- package/.next/standalone/agents-manage-ui/.next/static/chunks/90663-8c7f01ec7ea7469d.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/layout-fd9a2deae59d7b43.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/new/page-d36acf62988cfc7a.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/page-eea2c82071a52151.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page-5adc992fc318b399.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page-3a55286c4c8308f5.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page-f869ad73bdd0cd2c.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page-88b18c22edb72177.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/new/page-eb107dfa3a0f725b.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/settings/page-f34b264880d32767.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/page-50eb02fea8f22fc7.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/settings/page-d71718217286b332.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/login/page-9a5c9a4be8179006.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/page-fc1b7c4d94b91546.js +0 -1
- /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
|
+
}
|
package/src/app/login/page.tsx
CHANGED
|
@@ -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
|
|
67
|
-
|
|
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
|
-
|
|
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>
|
package/src/lib/auth-client.ts
CHANGED
|
@@ -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)}};
|