@inkeep/agents-manage-ui 0.22.12 → 0.23.1
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-build-manifest.json +202 -193
- package/.next/standalone/agents-manage-ui/.next/app-path-routes-manifest.json +3 -3
- package/.next/standalone/agents-manage-ui/.next/build-manifest.json +5 -5
- package/.next/standalone/agents-manage-ui/.next/prerender-manifest.json +3 -3
- package/.next/standalone/agents-manage-ui/.next/react-loadable-manifest.json +33 -33
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/page.js +1 -1
- 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 +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/[agentId]/page.js.nft.json +1 -1
- 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/new/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/new/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/new/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.js.nft.json +1 -1
- 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 +3 -3
- 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 +1 -1
- 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 +2 -2
- 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 +2 -2
- 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 +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page.js.nft.json +1 -1
- 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.js.nft.json +1 -1
- 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 +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/page.js.nft.json +1 -1
- 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.js.nft.json +1 -1
- 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 +2 -2
- 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]/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.js.nft.json +1 -1
- 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 +2 -2
- 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/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/_not-found/page.js +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 +8 -8
- package/.next/standalone/agents-manage-ui/.next/server/app/api/signoz/conversations/[conversationId]/route.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/api/signoz/conversations/[conversationId]/route.js.nft.json +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/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 +3 -3
- package/.next/standalone/agents-manage-ui/.next/server/chunks/1674.js +3 -0
- package/.next/standalone/agents-manage-ui/.next/server/chunks/1735.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/server/chunks/{4815.js → 1997.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/2263.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/server/chunks/3547.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/{6007.js → 4629.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/{1150.js → 498.js} +10 -10
- package/.next/standalone/agents-manage-ui/.next/server/chunks/{5922.js → 4999.js} +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/chunks/{7165.js → 5395.js} +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/chunks/5450.js +3 -3
- package/.next/standalone/agents-manage-ui/.next/server/chunks/5732.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/server/chunks/{4177.js → 5831.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/6940.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/server/chunks/7430.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/server/chunks/7714.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/7848.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/server/chunks/7988.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/chunks/{6129.js → 7990.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/8236.js +7 -0
- package/.next/standalone/agents-manage-ui/.next/server/chunks/9973.js +3 -0
- package/.next/standalone/agents-manage-ui/.next/server/middleware-build-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/middleware-manifest.json +5 -5
- 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 +1 -1
- 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/chunks/{10947.0e13736992e24338.js → 10947.6a319424ccb13c81.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/1175-aadbf39b68307a3c.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/13059.78fd60ea8309cc3e.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/13328-0f3bd90a602ad30b.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/1499-20f18a3858daee94.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{16998.4dce05d474444f45.js → 16998.40613c3f0a5aacb3.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/18229-4f40b3129fb13a6a.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/19317-031cfdbe64ae32fe.js +7 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/20837-80824768c25e8807.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{22063.2a6e541262a57b29.js → 22063.11feb854e4b4e39a.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{23113.eab371e0dd48dc4c.js → 23113.57e6c01f97c5cf7e.js} +16 -16
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{23624-6eacc9668906f9e7.js → 37775-eeaab573593358e7.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/39912-10e2e2f42a2e25de.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/44263.7adc8c4c8f6de91c.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/49717-c3caecdba1246d8f.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/53627-78b04138dc05aedb.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/55244-84901b87c4a2322e.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{68717-c0ebdc6ed2197ba0.js → 63414-5d24060fe99b187c.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/66030-6542a249844c5b64.js +20 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{75290.beed80b73a28db47.js → 75290.89b60c553816e328.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{79423-2fcde3ce6be30fb9.js → 79423-ed95cf583a063427.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{80258.7b7fab0125073635.js → 80258.31ce0607c4dcaf8e.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/85014-ef922017dc0055bb.js +25 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/88211-4e7159211556d4e5.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{88531.172cf93066feb734.js → 88531.f58565197512ed8d.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{89814.c752574c3da1d1c4.js → 89814.bd648f5875e206d6.js} +2 -2
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{920632d2.e78476844c160de0.js → 920632d2.585c99e4737f3367.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{64438-2c5f9dad5610028e.js → 92160-0e9ba9d3fc9f7a53.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{92626-f00877fb07f4eec3.js → 92626-47f83788787493e1.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/98928-14207f1b9e316de8.js +123 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/99103.3ef66b745fb33df3.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/993.c453fb7e185354c1.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/[agentId]/{page-ae86d1b5cddae46d.js → page-0d98034c5e81376a.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/new/page-2b1b331329da116d.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/page-5746afb5cd4dae5a.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/api-keys/page-3edd80735e6da58f.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/{page-523b028cc1af095d.js → page-d05fe859b0fef25a.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/new/{page-3953c08df8797081.js → page-b87ec19a9191e55e.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/{page-cda49bb05e39258a.js → page-efeb878c31f2a2eb.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/{page-14914bea47c3fe50.js → page-25e78ebc40e7fb79.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/new/page-4263637660f5fe11.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/{page-0debbf5986fa3acb.js → page-11053fc1b63c6007.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/{page-bdab6475685163ca.js → page-468ef8b0ddd9f271.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page-a15d6a6b6f956da0.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page-5550b5b52369a508.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/providers/page-07db6760153791ce.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/page-1148dfdcf1e5dff4.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/{page-fa678e7bc12be499.js → page-b52db9884e7955e1.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page-c5d5ca3ea5660528.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/new/page-78e277acbd6380c9.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/page-697894da877a199e.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/settings/{page-9e447119c58eadda.js → page-60877bb1259c461b.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/ai-calls/{page-130484743447356a.js → page-d7f81fb8018ccb8f.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/page-510226127ab7e6f0.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/page-9bf7a4cdd3a42ff3.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/{layout-51aa3a1d565bd4b2.js → layout-aafad05c22d94fb4.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{d834c995-735e66a3c04aa910.js → d834c995-72666c5916d3b86e.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{webpack-e7ebad2d15254098.js → webpack-48ec00a8819c1625.js} +1 -1
- package/.next/standalone/agents-manage-ui/package.json +4 -4
- package/.next/standalone/agents-manage-ui/public/assets/provider-icons/addepar.svg +1 -0
- package/.next/standalone/agents-manage-ui/public/assets/provider-icons/adobe-workfront.svg +5 -0
- package/.next/standalone/agents-manage-ui/public/assets/provider-icons/adp-run.svg +1 -0
- package/.next/standalone/agents-manage-ui/public/assets/provider-icons/autotask.svg +11 -0
- package/.next/standalone/agents-manage-ui/public/assets/provider-icons/avoma.svg +1 -0
- package/.next/standalone/agents-manage-ui/public/assets/provider-icons/bullhorn.svg +1 -0
- package/.next/standalone/agents-manage-ui/public/assets/provider-icons/clerk.svg +5 -0
- package/.next/standalone/agents-manage-ui/public/assets/provider-icons/cursor.svg +1 -0
- package/.next/standalone/agents-manage-ui/public/assets/provider-icons/datacandy.svg +23 -0
- package/.next/standalone/agents-manage-ui/public/assets/provider-icons/datto-rmm.svg +14 -0
- package/.next/standalone/agents-manage-ui/public/assets/provider-icons/dayforce.svg +1 -0
- package/.next/standalone/agents-manage-ui/public/assets/provider-icons/fairing.svg +1 -0
- package/.next/standalone/agents-manage-ui/public/assets/provider-icons/fillout.svg +1 -0
- package/.next/standalone/agents-manage-ui/public/assets/provider-icons/float.svg +1 -0
- package/.next/standalone/agents-manage-ui/public/assets/provider-icons/folk.svg +1 -0
- package/.next/standalone/agents-manage-ui/public/assets/provider-icons/google-workspace-admin.svg +1 -0
- package/.next/standalone/agents-manage-ui/public/assets/provider-icons/heap.svg +1 -0
- package/.next/standalone/agents-manage-ui/public/assets/provider-icons/hover.svg +1 -0
- package/.next/standalone/agents-manage-ui/public/assets/provider-icons/instantly.svg +1 -1
- package/.next/standalone/agents-manage-ui/public/assets/provider-icons/itglue.svg +8 -0
- package/.next/standalone/agents-manage-ui/public/assets/provider-icons/jazzhr.svg +20 -8
- package/.next/standalone/agents-manage-ui/public/assets/provider-icons/jobber.svg +1 -0
- package/.next/standalone/agents-manage-ui/public/assets/provider-icons/jobdiva.svg +24 -0
- package/.next/standalone/agents-manage-ui/public/assets/provider-icons/jumpcloud.svg +4 -0
- package/.next/standalone/agents-manage-ui/public/assets/provider-icons/kintone.svg +1 -0
- package/.next/standalone/agents-manage-ui/public/assets/provider-icons/mcp-dynamic.svg +36 -0
- package/.next/standalone/agents-manage-ui/public/assets/provider-icons/microsoft-excel.svg +1 -0
- package/.next/standalone/agents-manage-ui/public/assets/provider-icons/pax8.svg +16 -0
- package/.next/standalone/agents-manage-ui/public/assets/provider-icons/paycor.svg +1 -0
- package/.next/standalone/agents-manage-ui/public/assets/provider-icons/pipedream.svg +1 -0
- package/.next/standalone/agents-manage-ui/public/assets/provider-icons/private-api-bearer.svg +1 -0
- package/.next/standalone/agents-manage-ui/public/assets/provider-icons/recruitee.svg +1 -0
- package/.next/standalone/agents-manage-ui/public/assets/provider-icons/roller.svg +10 -0
- package/.next/standalone/agents-manage-ui/public/assets/provider-icons/sellsy.svg +1 -0
- package/.next/standalone/agents-manage-ui/public/assets/provider-icons/skio.svg +1 -0
- package/.next/standalone/agents-manage-ui/public/assets/provider-icons/snapchat.svg +1 -0
- package/.next/standalone/agents-manage-ui/public/assets/provider-icons/snipe-it.svg +1 -0
- package/.next/standalone/agents-manage-ui/public/assets/provider-icons/tailscale.svg +1 -0
- package/.next/standalone/agents-manage-ui/public/assets/provider-icons/webex.svg +1 -0
- package/.next/standalone/agents-manage-ui/public/assets/provider-icons/yotpo.svg +1 -0
- package/.next/standalone/agents-manage-ui/public/assets/provider-icons/zoho-calendar.svg +1 -0
- package/.next/standalone/packages/agents-core/package.json +3 -3
- package/package.json +7 -7
- package/public/assets/provider-icons/addepar.svg +1 -0
- package/public/assets/provider-icons/adobe-workfront.svg +5 -0
- package/public/assets/provider-icons/adp-run.svg +1 -0
- package/public/assets/provider-icons/autotask.svg +11 -0
- package/public/assets/provider-icons/avoma.svg +1 -0
- package/public/assets/provider-icons/bullhorn.svg +1 -0
- package/public/assets/provider-icons/clerk.svg +5 -0
- package/public/assets/provider-icons/cursor.svg +1 -0
- package/public/assets/provider-icons/datacandy.svg +23 -0
- package/public/assets/provider-icons/datto-rmm.svg +14 -0
- package/public/assets/provider-icons/dayforce.svg +1 -0
- package/public/assets/provider-icons/fairing.svg +1 -0
- package/public/assets/provider-icons/fillout.svg +1 -0
- package/public/assets/provider-icons/float.svg +1 -0
- package/public/assets/provider-icons/folk.svg +1 -0
- package/public/assets/provider-icons/google-workspace-admin.svg +1 -0
- package/public/assets/provider-icons/heap.svg +1 -0
- package/public/assets/provider-icons/hover.svg +1 -0
- package/public/assets/provider-icons/instantly.svg +1 -1
- package/public/assets/provider-icons/itglue.svg +8 -0
- package/public/assets/provider-icons/jazzhr.svg +20 -8
- package/public/assets/provider-icons/jobber.svg +1 -0
- package/public/assets/provider-icons/jobdiva.svg +24 -0
- package/public/assets/provider-icons/jumpcloud.svg +4 -0
- package/public/assets/provider-icons/kintone.svg +1 -0
- package/public/assets/provider-icons/mcp-dynamic.svg +36 -0
- package/public/assets/provider-icons/microsoft-excel.svg +1 -0
- package/public/assets/provider-icons/pax8.svg +16 -0
- package/public/assets/provider-icons/paycor.svg +1 -0
- package/public/assets/provider-icons/pipedream.svg +1 -0
- package/public/assets/provider-icons/private-api-bearer.svg +1 -0
- package/public/assets/provider-icons/recruitee.svg +1 -0
- package/public/assets/provider-icons/roller.svg +10 -0
- package/public/assets/provider-icons/sellsy.svg +1 -0
- package/public/assets/provider-icons/skio.svg +1 -0
- package/public/assets/provider-icons/snapchat.svg +1 -0
- package/public/assets/provider-icons/snipe-it.svg +1 -0
- package/public/assets/provider-icons/tailscale.svg +1 -0
- package/public/assets/provider-icons/webex.svg +1 -0
- package/public/assets/provider-icons/yotpo.svg +1 -0
- package/public/assets/provider-icons/zoho-calendar.svg +1 -0
- package/src/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page.tsx +3 -1
- package/src/app/[tenantId]/projects/[projectId]/credentials/page.tsx +12 -2
- package/src/components/agent/playground/chat-widget.tsx +1 -2
- package/src/components/credentials/credential-item.tsx +4 -4
- package/src/components/icons/provider-icon.tsx +17 -5
- package/src/components/mcp-servers/form/mcp-server-form.tsx +89 -16
- package/src/components/mcp-servers/selection/mcp-server-selection.tsx +1 -4
- package/src/components/mcp-servers/view-mcp-server-details.tsx +60 -32
- package/src/hooks/use-nango-connect.ts +41 -2
- package/src/hooks/use-oauth-login.ts +199 -87
- package/src/lib/__tests__/provider-icons-sync.test.ts +47 -0
- package/src/lib/mcp-tools/nango.ts +7 -3
- package/src/lib/provider-icons.ts +610 -0
- package/.next/standalone/agents-manage-ui/.next/server/chunks/1040.js +0 -3
- package/.next/standalone/agents-manage-ui/.next/server/chunks/272.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/2780.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/2964.js +0 -7
- package/.next/standalone/agents-manage-ui/.next/server/chunks/5100.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/5797.js +0 -3
- package/.next/standalone/agents-manage-ui/.next/server/chunks/6212.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/1175-987bdb225e7f4219.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/13059.986e834e4b0dfe15.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/20837-3d3309aca51cd8ab.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/26999-8c9c5e5ec54db482.js +0 -20
- package/.next/standalone/agents-manage-ui/.next/static/chunks/30896-5ed483238054402b.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/32268-b67f25893205c300.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/38249-f530c1a1527a3b8f.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/44263.2ca72fa2e5ad0b99.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/62092-ae9394efd9c69e92.js +0 -7
- package/.next/standalone/agents-manage-ui/.next/static/chunks/68266-1f459b102467a36a.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/68430-1140499bac28d9c1.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/85014-750355653afd732f.js +0 -25
- package/.next/standalone/agents-manage-ui/.next/static/chunks/92775-85a0732a5fe07d43.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/9692-04e88dce5dd53eb5.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/98928-538cadcee2c0946a.js +0 -123
- package/.next/standalone/agents-manage-ui/.next/static/chunks/99103.91d81aff14ea1d7e.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/993.190288a5b2780074.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/new/page-bc1fef9468cac84a.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/page-624ee1f61ef5cea4.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/api-keys/page-2fe4aa192c9871b2.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/new/page-3b3028fc3eb025a9.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page-a5cf869e6018ec72.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page-00ea2da57e0eb277.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/providers/page-4a9720fe172c379b.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/page-e33d8d09187d077f.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page-138db92933a30700.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/new/page-83ce745dc8e4f830.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/page-4b9bcec442bf3022.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/page-6c2373e2081b6c91.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/page-87b16d71cf45de60.js +0 -1
- package/src/components/credentials/credentials-list.tsx +0 -36
- /package/.next/standalone/agents-manage-ui/.next/static/{PK-fEySTV-nz3CyrAUcTX → yeHoasKbJN96CwqdzWKNW}/_buildManifest.js +0 -0
- /package/.next/standalone/agents-manage-ui/.next/static/{PK-fEySTV-nz3CyrAUcTX → yeHoasKbJN96CwqdzWKNW}/_ssgManifest.js +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
import { zodResolver } from '@hookform/resolvers/zod';
|
|
4
|
-
import { MCPTransportType } from '@inkeep/agents-core/client-exports';
|
|
4
|
+
import { detectAuthenticationRequired, MCPTransportType } from '@inkeep/agents-core/client-exports';
|
|
5
5
|
import { nanoid } from 'nanoid';
|
|
6
6
|
import { useRouter } from 'next/navigation';
|
|
7
7
|
import { useForm } from 'react-hook-form';
|
|
@@ -10,6 +10,8 @@ import { GenericInput } from '@/components/form/generic-input';
|
|
|
10
10
|
import { GenericSelect } from '@/components/form/generic-select';
|
|
11
11
|
import { Button } from '@/components/ui/button';
|
|
12
12
|
import { Form } from '@/components/ui/form';
|
|
13
|
+
import { InfoCard } from '@/components/ui/info-card';
|
|
14
|
+
import { useOAuthLogin } from '@/hooks/use-oauth-login';
|
|
13
15
|
import type { Credential } from '@/lib/api/credentials';
|
|
14
16
|
import { createMCPTool, updateMCPTool } from '@/lib/api/tools';
|
|
15
17
|
import type { MCPTool } from '@/lib/types/tools';
|
|
@@ -40,7 +42,7 @@ const defaultValues: MCPToolFormData = {
|
|
|
40
42
|
},
|
|
41
43
|
},
|
|
42
44
|
imageUrl: '', // Initialize as empty string to avoid uncontrolled/controlled warning
|
|
43
|
-
credentialReferenceId: '
|
|
45
|
+
credentialReferenceId: 'oauth',
|
|
44
46
|
};
|
|
45
47
|
|
|
46
48
|
export function MCPServerForm({
|
|
@@ -61,6 +63,11 @@ export function MCPServerForm({
|
|
|
61
63
|
},
|
|
62
64
|
});
|
|
63
65
|
|
|
66
|
+
const { handleOAuthLogin } = useOAuthLogin({
|
|
67
|
+
tenantId,
|
|
68
|
+
projectId,
|
|
69
|
+
});
|
|
70
|
+
|
|
64
71
|
const { isSubmitting } = form.formState;
|
|
65
72
|
|
|
66
73
|
// Helper function to filter active tools against available tools
|
|
@@ -73,6 +80,51 @@ export function MCPServerForm({
|
|
|
73
80
|
|
|
74
81
|
const onSubmit = async (data: MCPToolFormData) => {
|
|
75
82
|
try {
|
|
83
|
+
// handle oauth login
|
|
84
|
+
if (data.credentialReferenceId === 'oauth') {
|
|
85
|
+
const toolId = nanoid();
|
|
86
|
+
|
|
87
|
+
const isAuthenticationRequired = await detectAuthenticationRequired({
|
|
88
|
+
serverUrl: data.config.mcp.server.url,
|
|
89
|
+
toolId,
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
if (!isAuthenticationRequired) {
|
|
93
|
+
toast.error(
|
|
94
|
+
'This MCP server does not support OAuth authentication. Please select a different credential.'
|
|
95
|
+
);
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
const mcpToolData = {
|
|
100
|
+
id: toolId,
|
|
101
|
+
name: data.name,
|
|
102
|
+
config: {
|
|
103
|
+
type: 'mcp' as const,
|
|
104
|
+
mcp: {
|
|
105
|
+
server: {
|
|
106
|
+
url: data.config.mcp.server.url,
|
|
107
|
+
},
|
|
108
|
+
transport: {
|
|
109
|
+
type: data.config.mcp.transport.type,
|
|
110
|
+
},
|
|
111
|
+
},
|
|
112
|
+
},
|
|
113
|
+
credentialReferenceId: null,
|
|
114
|
+
imageUrl: data.imageUrl,
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
const newTool = await createMCPTool(tenantId, projectId, mcpToolData);
|
|
118
|
+
|
|
119
|
+
handleOAuthLogin({
|
|
120
|
+
toolId: newTool.id,
|
|
121
|
+
mcpServerUrl: data.config.mcp.server.url,
|
|
122
|
+
toolName: data.name,
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
|
|
76
128
|
// Transform form data to API format
|
|
77
129
|
const transformedData = {
|
|
78
130
|
...data,
|
|
@@ -142,20 +194,41 @@ export function MCPServerForm({
|
|
|
142
194
|
label="Image URL (optional)"
|
|
143
195
|
placeholder="https://example.com/icon.png or data:image/png;base64,..."
|
|
144
196
|
/>
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
value:
|
|
155
|
-
label:
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
197
|
+
|
|
198
|
+
<div className="space-y-3">
|
|
199
|
+
<GenericSelect
|
|
200
|
+
control={form.control}
|
|
201
|
+
selectTriggerClassName="w-full"
|
|
202
|
+
name="credentialReferenceId"
|
|
203
|
+
label="Credential"
|
|
204
|
+
placeholder="Select a credential"
|
|
205
|
+
options={[
|
|
206
|
+
{ value: 'oauth', label: 'OAuth' },
|
|
207
|
+
{ value: 'none', label: 'No Authentication' },
|
|
208
|
+
...credentials.map((credential) => ({
|
|
209
|
+
value: credential.id,
|
|
210
|
+
label: credential.id,
|
|
211
|
+
})),
|
|
212
|
+
]}
|
|
213
|
+
/>
|
|
214
|
+
<InfoCard title="How this works">
|
|
215
|
+
<div className="space-y-2">
|
|
216
|
+
<p>
|
|
217
|
+
Select <code className="bg-background px-1.5 py-0.5 rounded border">OAuth</code> to
|
|
218
|
+
authenticate with the MCP server's OAuth flow, which will start after you click
|
|
219
|
+
"Create".
|
|
220
|
+
</p>
|
|
221
|
+
<p>
|
|
222
|
+
Select{' '}
|
|
223
|
+
<code className="bg-background px-1.5 py-0.5 rounded border">
|
|
224
|
+
No Authentication
|
|
225
|
+
</code>{' '}
|
|
226
|
+
to skip authentication (i.e. none required or add a credential later).
|
|
227
|
+
</p>
|
|
228
|
+
<p>Or select from the existing credentials you have already created.</p>
|
|
229
|
+
</div>
|
|
230
|
+
</InfoCard>
|
|
231
|
+
</div>
|
|
159
232
|
|
|
160
233
|
{mode === 'update' && (
|
|
161
234
|
<ActiveToolsSelector
|
|
@@ -31,9 +31,6 @@ export function MCPServerSelection({ credentials, tenantId, projectId }: MCPServ
|
|
|
31
31
|
const { handleOAuthLogin } = useOAuthLogin({
|
|
32
32
|
tenantId,
|
|
33
33
|
projectId,
|
|
34
|
-
onError: () => {
|
|
35
|
-
setLoadingServerId(undefined);
|
|
36
|
-
},
|
|
37
34
|
});
|
|
38
35
|
|
|
39
36
|
const handleSelectPrebuiltServer = async (server: PrebuiltMCPServer) => {
|
|
@@ -65,7 +62,7 @@ export function MCPServerSelection({ credentials, tenantId, projectId }: MCPServ
|
|
|
65
62
|
toast.success(`${server.name} MCP server created successfully`);
|
|
66
63
|
router.push(`/${tenantId}/projects/${projectId}/mcp-servers/${newTool.id}`);
|
|
67
64
|
} else {
|
|
68
|
-
handleOAuthLogin(newTool.id);
|
|
65
|
+
handleOAuthLogin({toolId: newTool.id, mcpServerUrl: server.url, toolName: server.name});
|
|
69
66
|
}
|
|
70
67
|
} catch (error) {
|
|
71
68
|
console.error('Failed to create prebuilt MCP server:', error);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import { Lock, LockOpen, Pencil } from 'lucide-react';
|
|
3
|
+
import { AlertCircle, Lock, LockOpen, Pencil } from 'lucide-react';
|
|
4
4
|
import Link from 'next/link';
|
|
5
5
|
import { Badge } from '@/components/ui/badge';
|
|
6
6
|
import { ExternalLink } from '@/components/ui/external-link';
|
|
@@ -69,6 +69,12 @@ export function ViewMCPServerDetails({
|
|
|
69
69
|
});
|
|
70
70
|
};
|
|
71
71
|
|
|
72
|
+
const isExpired = (expiresAt: string | Date | null | undefined): boolean => {
|
|
73
|
+
if (!expiresAt) return false;
|
|
74
|
+
const expirationDate = typeof expiresAt === 'string' ? new Date(expiresAt) : expiresAt;
|
|
75
|
+
return expirationDate < new Date();
|
|
76
|
+
};
|
|
77
|
+
|
|
72
78
|
const getStatusBadgeVariant = (status: string) => {
|
|
73
79
|
switch (status) {
|
|
74
80
|
case 'healthy':
|
|
@@ -157,27 +163,42 @@ export function ViewMCPServerDetails({
|
|
|
157
163
|
</div>
|
|
158
164
|
</div>
|
|
159
165
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
<
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
e
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
166
|
+
{/* Status and Transport Type */}
|
|
167
|
+
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
|
|
168
|
+
<div className="space-y-2">
|
|
169
|
+
<ItemLabel>Status</ItemLabel>
|
|
170
|
+
<ItemValue className="items-center">
|
|
171
|
+
{tool.status === 'needs_auth' ? (
|
|
172
|
+
<Badge
|
|
173
|
+
variant="outline"
|
|
174
|
+
className="text-xs bg-amber-50 dark:bg-amber-900/20 text-amber-700 dark:text-amber-400 border-amber-200 dark:border-amber-800 cursor-pointer hover:bg-amber-100 dark:hover:bg-amber-900/30 hover:border-amber-300 dark:hover:border-amber-700 transition-colors"
|
|
175
|
+
onClick={(e) => {
|
|
176
|
+
e.preventDefault();
|
|
177
|
+
e.stopPropagation();
|
|
178
|
+
handleOAuthLogin({
|
|
179
|
+
toolId: tool.id,
|
|
180
|
+
mcpServerUrl: tool.config.mcp.server.url,
|
|
181
|
+
toolName: tool.name,
|
|
182
|
+
});
|
|
183
|
+
}}
|
|
184
|
+
>
|
|
185
|
+
Click to Login
|
|
186
|
+
</Badge>
|
|
187
|
+
) : (
|
|
188
|
+
<Badge className="uppercase" variant={getStatusBadgeVariant(tool.status)}>
|
|
189
|
+
{tool.status}
|
|
190
|
+
</Badge>
|
|
191
|
+
)}
|
|
192
|
+
</ItemValue>
|
|
193
|
+
</div>
|
|
194
|
+
{(tool.config as any).mcp.transport && (
|
|
195
|
+
<div className="space-y-2">
|
|
196
|
+
<ItemLabel>Transport Type</ItemLabel>
|
|
197
|
+
<ItemValue>
|
|
198
|
+
{<Badge variant="code">{(tool.config as any).mcp.transport.type}</Badge>}
|
|
199
|
+
</ItemValue>
|
|
200
|
+
</div>
|
|
201
|
+
)}
|
|
181
202
|
</div>
|
|
182
203
|
|
|
183
204
|
{/* Last Error */}
|
|
@@ -191,19 +212,13 @@ export function ViewMCPServerDetails({
|
|
|
191
212
|
{/* Server URL */}
|
|
192
213
|
<div className="space-y-2">
|
|
193
214
|
<ItemLabel>Server URL</ItemLabel>
|
|
194
|
-
{tool.config.type === 'mcp' &&
|
|
215
|
+
{tool.config.type === 'mcp' && (
|
|
216
|
+
<CopyableSingleLineCode code={tool.config.mcp.server.url} />
|
|
217
|
+
)}
|
|
195
218
|
</div>
|
|
196
219
|
|
|
197
|
-
{/*
|
|
220
|
+
{/* Credential Name and Expires At */}
|
|
198
221
|
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
|
|
199
|
-
{(tool.config as any).mcp.transport && (
|
|
200
|
-
<div className="space-y-2">
|
|
201
|
-
<ItemLabel>Transport Type</ItemLabel>
|
|
202
|
-
<ItemValue>
|
|
203
|
-
{<Badge variant="code">{(tool.config as any).mcp.transport.type}</Badge>}
|
|
204
|
-
</ItemValue>
|
|
205
|
-
</div>
|
|
206
|
-
)}
|
|
207
222
|
<div className="space-y-2">
|
|
208
223
|
<ItemLabel>Credential</ItemLabel>
|
|
209
224
|
<ItemValue className="items-center">
|
|
@@ -228,6 +243,19 @@ export function ViewMCPServerDetails({
|
|
|
228
243
|
)}
|
|
229
244
|
</ItemValue>
|
|
230
245
|
</div>
|
|
246
|
+
{tool.expiresAt && (
|
|
247
|
+
<div className="space-y-2">
|
|
248
|
+
<div className="flex items-center gap-2">
|
|
249
|
+
<ItemLabel>Credential Expires At</ItemLabel>
|
|
250
|
+
{isExpired(tool.expiresAt) && <AlertCircle className="h-4 w-4 text-amber-500" />}
|
|
251
|
+
</div>
|
|
252
|
+
<ItemValue>
|
|
253
|
+
{formatDate(
|
|
254
|
+
typeof tool.expiresAt === 'string' ? tool.expiresAt : tool.expiresAt.toISOString()
|
|
255
|
+
)}
|
|
256
|
+
</ItemValue>
|
|
257
|
+
</div>
|
|
258
|
+
)}
|
|
231
259
|
</div>
|
|
232
260
|
|
|
233
261
|
{/* Active Tools */}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import Nango, { type OnConnectEvent } from '@nangohq/frontend';
|
|
3
|
+
import Nango, { type AuthOptions, type AuthSuccess, type OnConnectEvent } from '@nangohq/frontend';
|
|
4
4
|
import { useCallback } from 'react';
|
|
5
5
|
import { useRuntimeConfig } from '@/contexts/runtime-config-context';
|
|
6
|
+
import { createProviderConnectSession } from '@/lib/mcp-tools/nango';
|
|
6
7
|
|
|
7
8
|
type OpenNangoConnectOptions = {
|
|
8
9
|
sessionToken: string;
|
|
@@ -40,5 +41,43 @@ export function useNangoConnect() {
|
|
|
40
41
|
[PUBLIC_NANGO_SERVER_URL, PUBLIC_NANGO_CONNECT_BASE_URL]
|
|
41
42
|
);
|
|
42
43
|
|
|
43
|
-
|
|
44
|
+
const openNangoConnectHeadless = useCallback(
|
|
45
|
+
async ({ mcpServerUrl, providerUniqueKey, providerDisplayName }: { mcpServerUrl: string, providerUniqueKey: string, providerDisplayName: string }): Promise<AuthSuccess> => {
|
|
46
|
+
const providerName = 'mcp-generic';
|
|
47
|
+
const connectSessionToken = await createProviderConnectSession({
|
|
48
|
+
providerName,
|
|
49
|
+
uniqueKey: providerUniqueKey,
|
|
50
|
+
displayName: providerDisplayName,
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
const nango = new Nango({
|
|
54
|
+
host: PUBLIC_NANGO_SERVER_URL || undefined,
|
|
55
|
+
connectSessionToken,
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
try {
|
|
59
|
+
const authOptions: AuthOptions = {
|
|
60
|
+
detectClosedAuthWindow: true,
|
|
61
|
+
params: {
|
|
62
|
+
mcp_server_url: mcpServerUrl,
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
const result = await nango.auth(providerUniqueKey, authOptions);
|
|
67
|
+
|
|
68
|
+
return result;
|
|
69
|
+
} catch (error) {
|
|
70
|
+
if (error instanceof Error) {
|
|
71
|
+
throw new Error(`Nango headless auth failed: ${error.message}`);
|
|
72
|
+
}
|
|
73
|
+
throw error;
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
[PUBLIC_NANGO_SERVER_URL]
|
|
77
|
+
);
|
|
78
|
+
|
|
79
|
+
return {
|
|
80
|
+
openNangoConnect,
|
|
81
|
+
openNangoConnectHeadless,
|
|
82
|
+
};
|
|
44
83
|
}
|
|
@@ -1,115 +1,227 @@
|
|
|
1
|
+
import { CredentialStoreType, generateIdFromName } from '@inkeep/agents-core/client-exports';
|
|
1
2
|
import { useRouter } from 'next/navigation';
|
|
3
|
+
import { useCallback, useRef } from 'react';
|
|
2
4
|
import { toast } from 'sonner';
|
|
3
5
|
import { useRuntimeConfig } from '@/contexts/runtime-config-context';
|
|
6
|
+
import { listCredentialStores } from '@/lib/api/credentialStores';
|
|
7
|
+
import { updateMCPTool } from '@/lib/api/tools';
|
|
8
|
+
import { findOrCreateCredential } from '@/lib/utils/credentials-utils';
|
|
4
9
|
import { getOAuthLoginUrl } from '@/lib/utils/mcp-urls';
|
|
10
|
+
import { useNangoConnect } from './use-nango-connect';
|
|
5
11
|
|
|
6
12
|
interface UseOAuthLoginProps {
|
|
7
13
|
tenantId: string;
|
|
8
14
|
projectId: string;
|
|
9
15
|
onFinish?: (toolId: string) => void;
|
|
10
|
-
onError?: (error: Error) => void;
|
|
11
16
|
}
|
|
12
17
|
|
|
13
|
-
|
|
18
|
+
interface OAuthLoginResult {
|
|
19
|
+
handleOAuthLogin: ({
|
|
20
|
+
toolId,
|
|
21
|
+
mcpServerUrl,
|
|
22
|
+
toolName,
|
|
23
|
+
}: {
|
|
24
|
+
toolId: string;
|
|
25
|
+
mcpServerUrl: string;
|
|
26
|
+
toolName: string;
|
|
27
|
+
}) => Promise<void>;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export function useOAuthLogin({
|
|
31
|
+
tenantId,
|
|
32
|
+
projectId,
|
|
33
|
+
onFinish,
|
|
34
|
+
}: UseOAuthLoginProps): OAuthLoginResult {
|
|
14
35
|
const router = useRouter();
|
|
15
36
|
const { PUBLIC_INKEEP_AGENTS_MANAGE_API_URL } = useRuntimeConfig();
|
|
37
|
+
const { openNangoConnectHeadless } = useNangoConnect();
|
|
16
38
|
|
|
17
39
|
// Track active OAuth attempts to prevent conflicts
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
const handleOAuthLogin = (toolId: string) => {
|
|
21
|
-
// Clean up any previous attempt for this toolId
|
|
22
|
-
const existingCleanup = activeAttempts.get(toolId);
|
|
23
|
-
if (existingCleanup) {
|
|
24
|
-
existingCleanup();
|
|
25
|
-
activeAttempts.delete(toolId);
|
|
26
|
-
}
|
|
27
|
-
try {
|
|
28
|
-
const oauthUrl = getOAuthLoginUrl({
|
|
29
|
-
PUBLIC_INKEEP_AGENTS_MANAGE_API_URL,
|
|
30
|
-
tenantId,
|
|
31
|
-
projectId,
|
|
32
|
-
id: toolId,
|
|
33
|
-
});
|
|
40
|
+
const activeAttemptsRef = useRef(new Map<string, () => void>());
|
|
34
41
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}
|
|
42
|
+
const handleOAuthLoginManually = useCallback(
|
|
43
|
+
(toolId: string): Promise<void> => {
|
|
44
|
+
return new Promise((resolve, reject) => {
|
|
45
|
+
// Clean up any previous attempt for this toolId
|
|
46
|
+
const existingCleanup = activeAttemptsRef.current.get(toolId);
|
|
47
|
+
if (existingCleanup) {
|
|
48
|
+
existingCleanup();
|
|
49
|
+
activeAttemptsRef.current.delete(toolId);
|
|
50
|
+
}
|
|
45
51
|
|
|
46
|
-
|
|
47
|
-
|
|
52
|
+
try {
|
|
53
|
+
const oauthUrl = getOAuthLoginUrl({
|
|
54
|
+
PUBLIC_INKEEP_AGENTS_MANAGE_API_URL,
|
|
55
|
+
tenantId,
|
|
56
|
+
projectId,
|
|
57
|
+
id: toolId,
|
|
58
|
+
});
|
|
48
59
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
60
|
+
const popup = window.open(
|
|
61
|
+
oauthUrl,
|
|
62
|
+
'oauth-popup',
|
|
63
|
+
'width=600,height=700,scrollbars=yes,resizable=yes,status=yes,location=yes'
|
|
64
|
+
);
|
|
54
65
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
66
|
+
if (!popup) {
|
|
67
|
+
const error = new Error(`Failed to open popup for ${toolId} - blocked by browser`);
|
|
68
|
+
console.error(error.message);
|
|
69
|
+
reject(error);
|
|
70
|
+
return;
|
|
60
71
|
}
|
|
61
|
-
}
|
|
62
|
-
};
|
|
63
72
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
73
|
+
// Track completion to prevent duplicate calls
|
|
74
|
+
let completed = false;
|
|
75
|
+
|
|
76
|
+
const completeFlow = (success: boolean, error?: Error) => {
|
|
77
|
+
if (completed) return;
|
|
78
|
+
completed = true;
|
|
79
|
+
|
|
80
|
+
// Cleanup
|
|
81
|
+
window.removeEventListener('message', handleMessage);
|
|
82
|
+
if (checkPopupClosed) clearInterval(checkPopupClosed);
|
|
83
|
+
clearTimeout(backupTimeout);
|
|
84
|
+
activeAttemptsRef.current.delete(toolId);
|
|
85
|
+
|
|
86
|
+
if (success) {
|
|
87
|
+
// Call custom success handler or default behavior
|
|
88
|
+
if (onFinish) {
|
|
89
|
+
onFinish(toolId);
|
|
90
|
+
} else {
|
|
91
|
+
router.push(`/${tenantId}/projects/${projectId}/mcp-servers/${toolId}`);
|
|
92
|
+
}
|
|
93
|
+
resolve();
|
|
94
|
+
} else {
|
|
95
|
+
reject(error || new Error('OAuth login failed'));
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
// Listen for success PostMessage
|
|
100
|
+
const handleMessage = (event: MessageEvent) => {
|
|
101
|
+
if (event.data.type === 'oauth-success') {
|
|
102
|
+
completeFlow(true);
|
|
103
|
+
} else if (event.data.type === 'oauth-error') {
|
|
104
|
+
completeFlow(false, new Error(event.data.error || 'OAuth login failed'));
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
window.addEventListener('message', handleMessage);
|
|
109
|
+
|
|
110
|
+
// Backup: Monitor popup closure (for errors or PostMessage failures)
|
|
111
|
+
let checkPopupClosed: NodeJS.Timeout | null = null;
|
|
112
|
+
const backupTimeout = setTimeout(() => {
|
|
113
|
+
if (!completed) {
|
|
114
|
+
checkPopupClosed = setInterval(() => {
|
|
115
|
+
try {
|
|
116
|
+
if (popup.closed) {
|
|
117
|
+
// Assume success if popup closed without error message
|
|
118
|
+
completeFlow(true);
|
|
85
119
|
}
|
|
120
|
+
} catch {
|
|
121
|
+
// Cross-origin errors are expected during OAuth redirects
|
|
86
122
|
}
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
}, 1000); // Check every second
|
|
91
|
-
}
|
|
92
|
-
}, 3000); // Wait 3 seconds before starting backup monitoring
|
|
93
|
-
|
|
94
|
-
// Register cleanup function for this attempt
|
|
95
|
-
const cleanup = () => {
|
|
96
|
-
clearTimeout(backupTimeout);
|
|
97
|
-
if (checkPopupClosed) clearInterval(checkPopupClosed);
|
|
98
|
-
window.removeEventListener('message', handleMessage);
|
|
99
|
-
completed = true;
|
|
100
|
-
};
|
|
101
|
-
activeAttempts.set(toolId, cleanup);
|
|
102
|
-
}
|
|
103
|
-
} catch (error) {
|
|
104
|
-
const errorObj = error instanceof Error ? error : new Error('OAuth login failed');
|
|
123
|
+
}, 1000);
|
|
124
|
+
}
|
|
125
|
+
}, 3000);
|
|
105
126
|
|
|
106
|
-
|
|
107
|
-
|
|
127
|
+
// Register cleanup function for this attempt
|
|
128
|
+
const cleanup = () => {
|
|
129
|
+
completeFlow(false, new Error('OAuth login cancelled'));
|
|
130
|
+
};
|
|
131
|
+
activeAttemptsRef.current.set(toolId, cleanup);
|
|
132
|
+
} catch (error) {
|
|
133
|
+
const errorObj = error instanceof Error ? error : new Error('OAuth login failed');
|
|
134
|
+
reject(errorObj);
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
},
|
|
138
|
+
[PUBLIC_INKEEP_AGENTS_MANAGE_API_URL, tenantId, projectId, onFinish, router]
|
|
139
|
+
);
|
|
140
|
+
|
|
141
|
+
const handleOAuthLoginWithNangoMCPGeneric = useCallback(
|
|
142
|
+
async ({
|
|
143
|
+
toolId,
|
|
144
|
+
mcpServerUrl,
|
|
145
|
+
toolName,
|
|
146
|
+
}: {
|
|
147
|
+
toolId: string;
|
|
148
|
+
mcpServerUrl: string;
|
|
149
|
+
toolName: string;
|
|
150
|
+
}): Promise<void> => {
|
|
151
|
+
const authResult = await openNangoConnectHeadless({
|
|
152
|
+
mcpServerUrl,
|
|
153
|
+
providerUniqueKey: `${generateIdFromName(toolName)}_${toolId}`,
|
|
154
|
+
providerDisplayName: toolName,
|
|
155
|
+
});
|
|
156
|
+
|
|
157
|
+
const newCredentialData = {
|
|
158
|
+
id: generateIdFromName(toolName),
|
|
159
|
+
type: CredentialStoreType.nango,
|
|
160
|
+
credentialStoreId: 'nango-default',
|
|
161
|
+
retrievalParams: {
|
|
162
|
+
connectionId: authResult.connectionId,
|
|
163
|
+
providerConfigKey: authResult.providerConfigKey,
|
|
164
|
+
provider: 'mcp-generic',
|
|
165
|
+
authMode: 'OAUTH2',
|
|
166
|
+
},
|
|
167
|
+
};
|
|
168
|
+
|
|
169
|
+
const newCredential = await findOrCreateCredential(tenantId, projectId, newCredentialData);
|
|
170
|
+
|
|
171
|
+
await updateMCPTool(tenantId, projectId, toolId, {
|
|
172
|
+
credentialReferenceId: newCredential.id,
|
|
173
|
+
});
|
|
174
|
+
|
|
175
|
+
// Call custom success handler or default behavior
|
|
176
|
+
if (onFinish) {
|
|
177
|
+
onFinish(toolId);
|
|
108
178
|
} else {
|
|
109
|
-
|
|
179
|
+
router.push(`/${tenantId}/projects/${projectId}/mcp-servers/${toolId}`);
|
|
110
180
|
}
|
|
111
|
-
}
|
|
112
|
-
|
|
181
|
+
},
|
|
182
|
+
[openNangoConnectHeadless, onFinish, router, tenantId, projectId]
|
|
183
|
+
);
|
|
184
|
+
|
|
185
|
+
const handleOAuthLogin = useCallback(
|
|
186
|
+
async ({
|
|
187
|
+
toolId,
|
|
188
|
+
mcpServerUrl,
|
|
189
|
+
toolName,
|
|
190
|
+
}: {
|
|
191
|
+
toolId: string;
|
|
192
|
+
mcpServerUrl: string;
|
|
193
|
+
toolName: string;
|
|
194
|
+
}): Promise<void> => {
|
|
195
|
+
try {
|
|
196
|
+
// Check credential stores availability
|
|
197
|
+
const credentialStoresStatus = await listCredentialStores(tenantId, projectId);
|
|
198
|
+
|
|
199
|
+
const isNangoReady = credentialStoresStatus.some(
|
|
200
|
+
(store) => store.type === CredentialStoreType.nango && store.available
|
|
201
|
+
);
|
|
202
|
+
|
|
203
|
+
const isKeychainReady = credentialStoresStatus.some(
|
|
204
|
+
(store) => store.type === CredentialStoreType.keychain && store.available
|
|
205
|
+
);
|
|
113
206
|
|
|
114
|
-
|
|
207
|
+
// Choose authentication method based on availability
|
|
208
|
+
if (isNangoReady) {
|
|
209
|
+
await handleOAuthLoginWithNangoMCPGeneric({ toolId, mcpServerUrl, toolName });
|
|
210
|
+
} else if (isKeychainReady) {
|
|
211
|
+
await handleOAuthLoginManually(toolId);
|
|
212
|
+
} else {
|
|
213
|
+
throw new Error('No credential store available. Please configure Nango or Keychain.');
|
|
214
|
+
}
|
|
215
|
+
} catch (error) {
|
|
216
|
+
const errorObj = error instanceof Error ? error : new Error('OAuth login failed');
|
|
217
|
+
toast.error(errorObj.message);
|
|
218
|
+
throw errorObj;
|
|
219
|
+
}
|
|
220
|
+
},
|
|
221
|
+
[tenantId, projectId, handleOAuthLoginWithNangoMCPGeneric, handleOAuthLoginManually]
|
|
222
|
+
);
|
|
223
|
+
|
|
224
|
+
return {
|
|
225
|
+
handleOAuthLogin,
|
|
226
|
+
};
|
|
115
227
|
}
|