@inkeep/agents-manage-ui 0.8.7 → 0.10.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 +186 -186
- package/.next/standalone/agents-manage-ui/.next/app-path-routes-manifest.json +6 -6
- package/.next/standalone/agents-manage-ui/.next/build-manifest.json +5 -5
- package/.next/standalone/agents-manage-ui/.next/prerender-manifest.json +15 -15
- package/.next/standalone/agents-manage-ui/.next/react-loadable-manifest.json +17 -17
- 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]/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]/artifact-components/[artifactComponentId]/page.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifact-components/[artifactComponentId]/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifact-components/[artifactComponentId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifact-components/new/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifact-components/new/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifact-components/new/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifact-components/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifact-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.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_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]/data-components/[dataComponentId]/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/data-components/[dataComponentId]/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/data-components/[dataComponentId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/data-components/new/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/data-components/new/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/data-components/new/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/data-components/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/data-components/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/[graphId]/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/[graphId]/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/[graphId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/new/page.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/new/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/new/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/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 +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 +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 +3 -3
- 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 +3 -3
- 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 +9 -9
- 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_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 +6 -6
- package/.next/standalone/agents-manage-ui/.next/server/chunks/2539.js +8 -8
- package/.next/standalone/agents-manage-ui/.next/server/chunks/{7929.js → 3251.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/3424.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/3859.js +19 -3
- package/.next/standalone/agents-manage-ui/.next/server/chunks/425.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/5232.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/5294.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/6116.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/6777.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/server/chunks/679.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/6957.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/chunks/720.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/726.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/{3404.js → 7965.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/8284.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/server/chunks/8444.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/server/chunks/8449.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/chunks/{9772.js → 9093.js} +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/chunks/9235.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 +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/{1016-065c7c4004850849.js → 1231-4cd082da6edbfe60.js} +2 -2
- package/.next/standalone/agents-manage-ui/.next/static/chunks/1348-d5a92ab92bcff5e2.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/2063-51504d0b4f82277e.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/2823-d5aa2a7ec93a8174.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{4090-041bb034eaa7be6c.js → 4160-58edceff96697674.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{4229.a3af860481552dea.js → 4229.8460547691a15bed.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{6497-d25dae53e4f0b68a.js → 6497-95887fafcaf35d31.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/7167-5ae757a48267eecd.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{8531.15d8d4ac923abbfd.js → 8531.1dafd6b1ecb8f349.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/api-keys/page-4293910b444cc135.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifact-components/[artifactComponentId]/{page-49ed1a294d705e2b.js → page-c3ed0ba99186d0d6.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifact-components/new/{page-49ed1a294d705e2b.js → page-c3ed0ba99186d0d6.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifact-components/{page-620d86f21e1681e4.js → page-874c135f55b0ca0f.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page-ba0f0ba1b92291e8.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page-8dbbb7c3696c4b18.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page-62a5f6c00f915faf.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/page-71df4b4a01fc0dd1.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/data-components/[dataComponentId]/{page-2a339c25cf52f458.js → page-0f4fd1d8b7db8265.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/data-components/new/{page-2a339c25cf52f458.js → page-0f4fd1d8b7db8265.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/data-components/page-318381630d4f6030.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/graphs/[graphId]/{page-83f03615dc11014b.js → page-09211eb5d072f78c.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/graphs/new/{page-da8ddb54272917ab.js → page-dedc24c2a11b92e3.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/graphs/page-0302c606381a745f.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/{page-c65e011074a1fcce.js → page-46c65d299589f5ee.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/{page-aa753859a6cd98f8.js → page-d4d01b9c19e6a359.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/new/{page-b1024549b5350223.js → page-6c3986967816a7e7.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/page-3eb5183a82b07c23.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/settings/{page-d9b96584b3200c5d.js → page-3e56a25e59c5c30e.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/page-250e186f12cac2f8.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/page-3e96b2df7be28113.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/layout-238b7db4cb9e8101.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{webpack-4a10374a948c9803.js → webpack-211ed257f0444458.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/css/2f1b486594d6d68b.css +1 -0
- package/.next/standalone/agents-manage-ui/package.json +1 -1
- package/.next/standalone/package.json +1 -6
- package/.next/standalone/packages/agents-core/package.json +5 -3
- package/package.json +4 -4
- package/src/app/api/signoz/conversations/[conversationId]/route.ts +20 -4
- package/src/components/graph/configuration/node-types.tsx +6 -0
- package/src/components/graph/graph.tsx +109 -38
- package/src/components/graph/nodes/mcp-node.tsx +3 -2
- package/src/components/graph/playground/custom-headers-dialog.tsx +1 -1
- package/src/components/graph/playground/playground.tsx +48 -17
- package/src/components/graph/sidepane/nodes/mcp-node-editor.tsx +14 -22
- package/src/components/graph/sidepane/nodes/mcp-selector/mcp-selector.tsx +1 -1
- package/src/components/traces/timeline/activity-timeline.tsx +3 -0
- package/src/components/traces/timeline/render-panel-content.tsx +63 -9
- package/src/components/traces/timeline/timeline-item.tsx +19 -1
- package/src/components/traces/timeline/timeline-wrapper.tsx +12 -7
- package/src/components/traces/timeline/types.ts +4 -0
- package/src/features/graph/domain/deserialize.ts +22 -53
- package/src/features/graph/domain/serialize.ts +15 -6
- package/src/features/graph/state/use-graph-store.ts +37 -13
- package/src/lib/utils/mcp-urls.ts +1 -2
- package/src/lib/utils/orphaned-tools-detector.ts +76 -50
- package/.next/standalone/agents-manage-ui/.next/server/chunks/3086.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/581.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/5956.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/6314.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/1038-54d48d86de704a66.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/2063-fdc0702cbb1a1a89.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/7167-62fb01db4bf7c93f.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/9015-a88871b0493fa6a4.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/api-keys/page-d4772fb2fe52d502.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page-1adc6c6811c5224b.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page-3a6d23feb7e81c60.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page-943ca6e800bfb42e.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/page-d98ce43ab8686e03.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/data-components/page-2b56d1bb8facba92.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/graphs/page-e43da749deafb4dd.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/page-15d74bf9095a3a5f.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/page-989cf7b49617d609.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/page-3610d41580ae65f5.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/layout-62da969ed126dce3.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/css/98c416ff19152db0.css +0 -1
- /package/.next/standalone/agents-manage-ui/.next/static/{2w7Mtrd1QqrH5dFKfhc0T → b4zppSKvfyEEhDL6m73WI}/_buildManifest.js +0 -0
- /package/.next/standalone/agents-manage-ui/.next/static/{2w7Mtrd1QqrH5dFKfhc0T → b4zppSKvfyEEhDL6m73WI}/_ssgManifest.js +0 -0
|
@@ -253,7 +253,9 @@ export function TimelineWrapper({
|
|
|
253
253
|
|
|
254
254
|
const closePanel = () => {
|
|
255
255
|
setPanelVisible(false);
|
|
256
|
-
setTimeout(() =>
|
|
256
|
+
setTimeout(() => {
|
|
257
|
+
setSelected(null);
|
|
258
|
+
}, 300);
|
|
257
259
|
};
|
|
258
260
|
|
|
259
261
|
const findSpanById = (id?: string) =>
|
|
@@ -355,12 +357,13 @@ export function TimelineWrapper({
|
|
|
355
357
|
<StickToBottom.Content>
|
|
356
358
|
<ActivityTimeline
|
|
357
359
|
activities={sortedActivities}
|
|
358
|
-
onSelect={(activity) =>
|
|
360
|
+
onSelect={(activity) => {
|
|
359
361
|
setSelected({
|
|
360
362
|
type: determinePanelType(activity),
|
|
361
363
|
item: activity,
|
|
362
|
-
})
|
|
363
|
-
}
|
|
364
|
+
});
|
|
365
|
+
}}
|
|
366
|
+
selectedActivityId={selected?.item?.id}
|
|
364
367
|
collapsedAiMessages={collapsedAiMessages}
|
|
365
368
|
onToggleAiMessageCollapse={toggleAiMessageCollapse}
|
|
366
369
|
/>
|
|
@@ -388,12 +391,13 @@ export function TimelineWrapper({
|
|
|
388
391
|
<div className="h-full overflow-y-auto scrollbar-thin scrollbar-thumb-muted-foreground/30 scrollbar-track-transparent dark:scrollbar-thumb-muted-foreground/50">
|
|
389
392
|
<ActivityTimeline
|
|
390
393
|
activities={sortedActivities}
|
|
391
|
-
onSelect={(activity) =>
|
|
394
|
+
onSelect={(activity) => {
|
|
392
395
|
setSelected({
|
|
393
396
|
type: determinePanelType(activity),
|
|
394
397
|
item: activity,
|
|
395
|
-
})
|
|
396
|
-
}
|
|
398
|
+
});
|
|
399
|
+
}}
|
|
400
|
+
selectedActivityId={selected?.item?.id}
|
|
397
401
|
collapsedAiMessages={collapsedAiMessages}
|
|
398
402
|
onToggleAiMessageCollapse={toggleAiMessageCollapse}
|
|
399
403
|
/>
|
|
@@ -407,6 +411,7 @@ export function TimelineWrapper({
|
|
|
407
411
|
{selected && (
|
|
408
412
|
<ResizablePanel order={3}>
|
|
409
413
|
<ActivityDetailsSidePane
|
|
414
|
+
key={selected.item.id}
|
|
410
415
|
title={panelTitle(selected)}
|
|
411
416
|
open={panelVisible}
|
|
412
417
|
onClose={closePanel}
|
|
@@ -73,6 +73,9 @@ export interface ActivityItem {
|
|
|
73
73
|
aiStreamTextModel?: string;
|
|
74
74
|
aiStreamTextProvider?: string;
|
|
75
75
|
aiStreamTextOperationId?: string;
|
|
76
|
+
toolCallArgs?: string;
|
|
77
|
+
toolCallResult?: string;
|
|
78
|
+
aiResponseText?: string;
|
|
76
79
|
}
|
|
77
80
|
|
|
78
81
|
export interface ToolCall {
|
|
@@ -128,6 +131,7 @@ export interface ConversationDetail {
|
|
|
128
131
|
data: Record<string, any>;
|
|
129
132
|
}>;
|
|
130
133
|
mcpToolErrors?: Array<{
|
|
134
|
+
id: string;
|
|
131
135
|
spanId: string;
|
|
132
136
|
toolName: string;
|
|
133
137
|
error: string;
|
|
@@ -206,59 +206,28 @@ export function deserializeGraphData(data: FullGraphDefinition): TransformResult
|
|
|
206
206
|
const agent = data.agents[agentId];
|
|
207
207
|
// Check if agent has canUse property (internal agents)
|
|
208
208
|
if ('canUse' in agent && agent.canUse && agent.canUse.length > 0) {
|
|
209
|
-
//
|
|
210
|
-
const
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
type: EdgeType.Default,
|
|
232
|
-
source: agentId,
|
|
233
|
-
sourceHandle: agentNodeSourceHandleId,
|
|
234
|
-
target: toolNodeId,
|
|
235
|
-
targetHandle: mcpNodeHandleId,
|
|
236
|
-
};
|
|
237
|
-
edges.push(agentToToolEdge);
|
|
238
|
-
}
|
|
239
|
-
} else {
|
|
240
|
-
// Tools are project-scoped - just store the tool ID
|
|
241
|
-
for (const canUseItem of agent.canUse) {
|
|
242
|
-
const toolId = canUseItem.toolId;
|
|
243
|
-
const toolNodeId = nanoid();
|
|
244
|
-
const toolNode: Node = {
|
|
245
|
-
id: toolNodeId,
|
|
246
|
-
type: NodeType.MCP,
|
|
247
|
-
position: { x: 0, y: 0 },
|
|
248
|
-
data: { toolId },
|
|
249
|
-
};
|
|
250
|
-
nodes.push(toolNode);
|
|
251
|
-
|
|
252
|
-
const agentToToolEdge: Edge = {
|
|
253
|
-
id: `edge-${toolNodeId}-${agentId}`,
|
|
254
|
-
type: EdgeType.Default,
|
|
255
|
-
source: agentId,
|
|
256
|
-
sourceHandle: agentNodeSourceHandleId,
|
|
257
|
-
target: toolNodeId,
|
|
258
|
-
targetHandle: mcpNodeHandleId,
|
|
259
|
-
};
|
|
260
|
-
edges.push(agentToToolEdge);
|
|
261
|
-
}
|
|
209
|
+
// Tools are project-scoped - create nodes from canUse items
|
|
210
|
+
for (const canUseItem of agent.canUse) {
|
|
211
|
+
const toolId = canUseItem.toolId;
|
|
212
|
+
const toolNodeId = nanoid();
|
|
213
|
+
const relationshipId = canUseItem.agentToolRelationId;
|
|
214
|
+
const toolNode: Node = {
|
|
215
|
+
id: toolNodeId,
|
|
216
|
+
type: NodeType.MCP,
|
|
217
|
+
position: { x: 0, y: 0 },
|
|
218
|
+
data: { toolId, agentId, relationshipId },
|
|
219
|
+
};
|
|
220
|
+
nodes.push(toolNode);
|
|
221
|
+
|
|
222
|
+
const agentToToolEdge: Edge = {
|
|
223
|
+
id: `edge-${toolNodeId}-${agentId}`,
|
|
224
|
+
type: EdgeType.Default,
|
|
225
|
+
source: agentId,
|
|
226
|
+
sourceHandle: agentNodeSourceHandleId,
|
|
227
|
+
target: toolNodeId,
|
|
228
|
+
targetHandle: mcpNodeHandleId,
|
|
229
|
+
};
|
|
230
|
+
edges.push(agentToToolEdge);
|
|
262
231
|
}
|
|
263
232
|
}
|
|
264
233
|
}
|
|
@@ -120,6 +120,7 @@ export function serializeGraphData(
|
|
|
120
120
|
toolId: string;
|
|
121
121
|
toolSelection?: string[] | null;
|
|
122
122
|
headers?: Record<string, string>;
|
|
123
|
+
agentToolRelationId?: string;
|
|
123
124
|
}> = [];
|
|
124
125
|
|
|
125
126
|
// Find edges from this agent to MCP nodes
|
|
@@ -140,6 +141,9 @@ export function serializeGraphData(
|
|
|
140
141
|
const tempSelectedTools = (mcpNode.data as any).tempSelectedTools;
|
|
141
142
|
let toolSelection: string[] | null = null;
|
|
142
143
|
|
|
144
|
+
// Get the relationshipId from the MCP node first
|
|
145
|
+
const relationshipId = (mcpNode.data as any).relationshipId;
|
|
146
|
+
|
|
143
147
|
if (tempSelectedTools !== undefined) {
|
|
144
148
|
// User has made changes to tool selection in the UI
|
|
145
149
|
if (Array.isArray(tempSelectedTools)) {
|
|
@@ -149,9 +153,11 @@ export function serializeGraphData(
|
|
|
149
153
|
}
|
|
150
154
|
} else {
|
|
151
155
|
// No changes made to tool selection - preserve existing selection
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
156
|
+
const existingConfig = relationshipId
|
|
157
|
+
? agentToolConfigLookup?.[agentId]?.[relationshipId]
|
|
158
|
+
: null;
|
|
159
|
+
if (existingConfig?.toolSelection) {
|
|
160
|
+
toolSelection = existingConfig.toolSelection;
|
|
155
161
|
} else {
|
|
156
162
|
// Default to all tools selected when no existing data found
|
|
157
163
|
toolSelection = null;
|
|
@@ -171,9 +177,11 @@ export function serializeGraphData(
|
|
|
171
177
|
}
|
|
172
178
|
} else {
|
|
173
179
|
// No changes made to headers - preserve existing headers
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
180
|
+
const existingConfig = relationshipId
|
|
181
|
+
? agentToolConfigLookup?.[agentId]?.[relationshipId]
|
|
182
|
+
: null;
|
|
183
|
+
if (existingConfig?.headers) {
|
|
184
|
+
toolHeaders = existingConfig.headers;
|
|
177
185
|
}
|
|
178
186
|
}
|
|
179
187
|
|
|
@@ -181,6 +189,7 @@ export function serializeGraphData(
|
|
|
181
189
|
toolId,
|
|
182
190
|
toolSelection,
|
|
183
191
|
headers: toolHeaders,
|
|
192
|
+
...(relationshipId && { agentToolRelationId: relationshipId }),
|
|
184
193
|
});
|
|
185
194
|
}
|
|
186
195
|
}
|
|
@@ -3,6 +3,8 @@ import { addEdge, applyEdgeChanges, applyNodeChanges } from '@xyflow/react';
|
|
|
3
3
|
import { create } from 'zustand';
|
|
4
4
|
import { devtools } from 'zustand/middleware';
|
|
5
5
|
import type { GraphMetadata } from '@/components/graph/configuration/graph-types';
|
|
6
|
+
import { mcpNodeHandleId, NodeType } from '@/components/graph/configuration/node-types';
|
|
7
|
+
import type { AgentToolConfigLookup } from '@/components/graph/graph';
|
|
6
8
|
import type { ArtifactComponent } from '@/lib/api/artifact-components';
|
|
7
9
|
import type { DataComponent } from '@/lib/api/data-components';
|
|
8
10
|
import type { MCPTool } from '@/lib/types/tools';
|
|
@@ -17,7 +19,7 @@ type GraphStateData = {
|
|
|
17
19
|
dataComponentLookup: Record<string, DataComponent>;
|
|
18
20
|
artifactComponentLookup: Record<string, ArtifactComponent>;
|
|
19
21
|
toolLookup: Record<string, MCPTool>;
|
|
20
|
-
|
|
22
|
+
agentToolConfigLookup: AgentToolConfigLookup;
|
|
21
23
|
dirty: boolean;
|
|
22
24
|
history: HistoryEntry[];
|
|
23
25
|
future: HistoryEntry[];
|
|
@@ -33,12 +35,12 @@ type GraphState = GraphStateData & {
|
|
|
33
35
|
dataComponentLookup?: Record<string, DataComponent>,
|
|
34
36
|
artifactComponentLookup?: Record<string, ArtifactComponent>,
|
|
35
37
|
toolLookup?: Record<string, MCPTool>,
|
|
36
|
-
|
|
38
|
+
agentToolConfigLookup?: AgentToolConfigLookup
|
|
37
39
|
): void;
|
|
38
40
|
setDataComponentLookup(dataComponentLookup: Record<string, DataComponent>): void;
|
|
39
41
|
setArtifactComponentLookup(artifactComponentLookup: Record<string, ArtifactComponent>): void;
|
|
40
42
|
setToolLookup(toolLookup: Record<string, MCPTool>): void;
|
|
41
|
-
|
|
43
|
+
setAgentToolConfigLookup(agentToolConfigLookup: AgentToolConfigLookup): void;
|
|
42
44
|
setNodes(updater: (prev: Node[]) => Node[]): void;
|
|
43
45
|
setEdges(updater: (prev: Edge[]) => Edge[]): void;
|
|
44
46
|
onNodesChange(changes: NodeChange[]): void;
|
|
@@ -82,7 +84,7 @@ export const useGraphStore = create<GraphState>()(
|
|
|
82
84
|
dataComponentLookup: {},
|
|
83
85
|
artifactComponentLookup: {},
|
|
84
86
|
toolLookup: {},
|
|
85
|
-
|
|
87
|
+
agentToolConfigLookup: {},
|
|
86
88
|
dirty: false,
|
|
87
89
|
history: [],
|
|
88
90
|
future: [],
|
|
@@ -95,7 +97,7 @@ export const useGraphStore = create<GraphState>()(
|
|
|
95
97
|
dataComponentLookup = {},
|
|
96
98
|
artifactComponentLookup = {},
|
|
97
99
|
toolLookup = {},
|
|
98
|
-
|
|
100
|
+
agentToolConfigLookup = {}
|
|
99
101
|
) {
|
|
100
102
|
set({
|
|
101
103
|
nodes,
|
|
@@ -104,7 +106,7 @@ export const useGraphStore = create<GraphState>()(
|
|
|
104
106
|
dataComponentLookup,
|
|
105
107
|
artifactComponentLookup,
|
|
106
108
|
toolLookup,
|
|
107
|
-
|
|
109
|
+
agentToolConfigLookup,
|
|
108
110
|
dirty: false,
|
|
109
111
|
history: [],
|
|
110
112
|
future: [],
|
|
@@ -121,8 +123,8 @@ export const useGraphStore = create<GraphState>()(
|
|
|
121
123
|
setToolLookup(toolLookup) {
|
|
122
124
|
set({ toolLookup });
|
|
123
125
|
},
|
|
124
|
-
|
|
125
|
-
set({
|
|
126
|
+
setAgentToolConfigLookup(agentToolConfigLookup) {
|
|
127
|
+
set({ agentToolConfigLookup });
|
|
126
128
|
},
|
|
127
129
|
setNodes(updater) {
|
|
128
130
|
set((state) => ({ nodes: updater(state.nodes) }));
|
|
@@ -158,11 +160,33 @@ export const useGraphStore = create<GraphState>()(
|
|
|
158
160
|
(change) => change.type === 'remove' || change.type === 'add' || change.type === 'replace'
|
|
159
161
|
);
|
|
160
162
|
|
|
161
|
-
set((state) =>
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
163
|
+
set((state) => {
|
|
164
|
+
// Check for edge removals that disconnect agent from MCP node
|
|
165
|
+
const removeChanges = changes.filter((change) => change.type === 'remove');
|
|
166
|
+
let updatedNodes = state.nodes;
|
|
167
|
+
|
|
168
|
+
for (const removeChange of removeChanges) {
|
|
169
|
+
const edgeToRemove = state.edges.find((e) => e.id === removeChange.id);
|
|
170
|
+
if (edgeToRemove && edgeToRemove.targetHandle === mcpNodeHandleId) {
|
|
171
|
+
// Find the target MCP node and clear its agentId
|
|
172
|
+
const mcpNode = state.nodes.find((n) => n.id === edgeToRemove.target);
|
|
173
|
+
if (mcpNode && mcpNode.type === NodeType.MCP) {
|
|
174
|
+
updatedNodes = updatedNodes.map((n) =>
|
|
175
|
+
n.id === mcpNode.id
|
|
176
|
+
? { ...n, data: { ...n.data, agentId: null, relationshipId: null } }
|
|
177
|
+
: n
|
|
178
|
+
);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
return {
|
|
184
|
+
history: [...state.history, { nodes: state.nodes, edges: state.edges }],
|
|
185
|
+
nodes: updatedNodes,
|
|
186
|
+
edges: applyEdgeChanges(changes, state.edges),
|
|
187
|
+
dirty: hasModifyingChange ? true : state.dirty,
|
|
188
|
+
};
|
|
189
|
+
});
|
|
166
190
|
},
|
|
167
191
|
onConnect(connection) {
|
|
168
192
|
set((state) => ({ edges: addEdge(connection as any, state.edges) }));
|
|
@@ -52,8 +52,7 @@ export function getOAuthLoginUrl({
|
|
|
52
52
|
);
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
|
|
56
|
-
const url = `${INKEEP_AGENTS_MANAGE_API_URL}/tenants/${encodeURIComponent(tenantId)}/projects/${encodeURIComponent(projectId)}/tools/${encodeURIComponent(id)}/oauth-login`;
|
|
55
|
+
const url = `${INKEEP_AGENTS_MANAGE_API_URL}/oauth/login?tenantId=${encodeURIComponent(tenantId)}&projectId=${encodeURIComponent(projectId)}&toolId=${encodeURIComponent(id)}`;
|
|
57
56
|
|
|
58
57
|
// Verify the final URL starts with our expected base
|
|
59
58
|
if (!url.startsWith(INKEEP_AGENTS_MANAGE_API_URL)) {
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import type { Node } from '@xyflow/react';
|
|
1
|
+
import type { Edge, Node } from '@xyflow/react';
|
|
2
2
|
import { getActiveTools } from '@/app/utils/active-tools';
|
|
3
3
|
import type { MCPNodeData } from '@/components/graph/configuration/node-types';
|
|
4
4
|
import { NodeType } from '@/components/graph/configuration/node-types';
|
|
5
5
|
import type { MCPTool } from '@/lib/types/tools';
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
interface OrphanedToolsInfo {
|
|
8
8
|
nodeId: string;
|
|
9
9
|
nodeName: string;
|
|
10
10
|
orphanedTools: string[];
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
interface OrphanedToolsDetectionResult {
|
|
14
14
|
hasOrphanedTools: boolean;
|
|
15
15
|
orphanedToolsByNode: OrphanedToolsInfo[];
|
|
16
16
|
totalOrphanedCount: number;
|
|
@@ -22,62 +22,26 @@ export interface OrphanedToolsDetectionResult {
|
|
|
22
22
|
*/
|
|
23
23
|
export function detectOrphanedToolsAndGetWarning(
|
|
24
24
|
nodes: Node[],
|
|
25
|
-
|
|
25
|
+
agentToolConfigLookup: Record<
|
|
26
|
+
string,
|
|
27
|
+
Record<string, { toolId: string; toolSelection?: string[] }>
|
|
28
|
+
>,
|
|
26
29
|
toolLookup: Record<string, MCPTool>
|
|
27
30
|
): string | null {
|
|
28
|
-
const result = detectOrphanedToolsInGraph(nodes,
|
|
31
|
+
const result = detectOrphanedToolsInGraph(nodes, agentToolConfigLookup, toolLookup);
|
|
29
32
|
return result.hasOrphanedTools ? createOrphanedToolsWarningMessage(result) : null;
|
|
30
33
|
}
|
|
31
34
|
|
|
32
|
-
/**
|
|
33
|
-
* Extract shared logic for getting selected tools for a node
|
|
34
|
-
* This replaces the duplicated logic between detector and MCP node editor
|
|
35
|
-
*/
|
|
36
|
-
export function getCurrentSelectedToolsForNode(
|
|
37
|
-
node: { data: MCPNodeData },
|
|
38
|
-
selectedToolsLookup: Record<string, Record<string, string[]>>
|
|
39
|
-
): string[] | null {
|
|
40
|
-
// First check if we have temporary selections stored on the node (from recent clicks)
|
|
41
|
-
if ((node.data as any).tempSelectedTools !== undefined) {
|
|
42
|
-
return (node.data as any).tempSelectedTools;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
// Otherwise, get from the database/initial state
|
|
46
|
-
const allSelectedTools = new Set<string>();
|
|
47
|
-
let hasAnyData = false;
|
|
48
|
-
let hasEmptyArray = false;
|
|
49
|
-
let hasNullValue = false;
|
|
50
|
-
|
|
51
|
-
Object.values(selectedToolsLookup).forEach((agentTools) => {
|
|
52
|
-
const toolsForThisMCP = agentTools[node.data.toolId];
|
|
53
|
-
if (toolsForThisMCP !== undefined) {
|
|
54
|
-
hasAnyData = true;
|
|
55
|
-
if (Array.isArray(toolsForThisMCP) && toolsForThisMCP.length === 0) {
|
|
56
|
-
hasEmptyArray = true;
|
|
57
|
-
} else if (toolsForThisMCP === null) {
|
|
58
|
-
hasNullValue = true;
|
|
59
|
-
} else if (Array.isArray(toolsForThisMCP)) {
|
|
60
|
-
toolsForThisMCP.forEach((tool) => {
|
|
61
|
-
allSelectedTools.add(tool);
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
|
|
67
|
-
if (hasNullValue) return null;
|
|
68
|
-
if (hasEmptyArray) return [];
|
|
69
|
-
if (!hasAnyData) return null;
|
|
70
|
-
|
|
71
|
-
return Array.from(allSelectedTools);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
35
|
/**
|
|
75
36
|
* Detects orphaned tools across all MCP nodes in the graph
|
|
76
37
|
* Orphaned tools are tools that were selected but are no longer available in the MCP server
|
|
77
38
|
*/
|
|
78
|
-
|
|
39
|
+
function detectOrphanedToolsInGraph(
|
|
79
40
|
nodes: Node[],
|
|
80
|
-
|
|
41
|
+
agentToolConfigLookup: Record<
|
|
42
|
+
string,
|
|
43
|
+
Record<string, { toolId: string; toolSelection?: string[] }>
|
|
44
|
+
>,
|
|
81
45
|
toolLookup: Record<string, MCPTool>
|
|
82
46
|
): OrphanedToolsDetectionResult {
|
|
83
47
|
const orphanedToolsByNode: OrphanedToolsInfo[] = [];
|
|
@@ -94,7 +58,7 @@ export function detectOrphanedToolsInGraph(
|
|
|
94
58
|
activeTools: toolData.config?.mcp?.activeTools,
|
|
95
59
|
});
|
|
96
60
|
|
|
97
|
-
const selectedTools = getCurrentSelectedToolsForNode(node,
|
|
61
|
+
const selectedTools = getCurrentSelectedToolsForNode(node, agentToolConfigLookup, []);
|
|
98
62
|
|
|
99
63
|
// Find orphaned tools for this node
|
|
100
64
|
const orphanedTools =
|
|
@@ -143,3 +107,65 @@ export function createOrphanedToolsWarningMessage(result: OrphanedToolsDetection
|
|
|
143
107
|
|
|
144
108
|
return `${nodeCount} MCP servers have a total of ${toolCount} selected tools that are no longer available. These orphaned tools will not be available at runtime. Please update your tool selections.`;
|
|
145
109
|
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Enhanced lookup for selected tools - uses relationshipId for true isolation
|
|
113
|
+
*/
|
|
114
|
+
export function getCurrentSelectedToolsForNode(
|
|
115
|
+
node: { data: MCPNodeData; id: string },
|
|
116
|
+
agentToolConfigLookup: Record<
|
|
117
|
+
string,
|
|
118
|
+
Record<string, { toolId: string; toolSelection?: string[] | null }>
|
|
119
|
+
>,
|
|
120
|
+
_edges: Edge[]
|
|
121
|
+
): string[] | null {
|
|
122
|
+
// First check if we have temporary selections stored on the node (from recent clicks)
|
|
123
|
+
if ((node.data as any).tempSelectedTools !== undefined) {
|
|
124
|
+
return (node.data as any).tempSelectedTools;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// If node has relationshipId, find config by relationshipId
|
|
128
|
+
const relationshipId = (node.data as any).relationshipId;
|
|
129
|
+
if (relationshipId) {
|
|
130
|
+
for (const toolsMap of Object.values(agentToolConfigLookup)) {
|
|
131
|
+
const config = toolsMap[relationshipId];
|
|
132
|
+
if (config) {
|
|
133
|
+
return config.toolSelection || null;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// No relationshipId found, return null (show all tools selected)
|
|
139
|
+
return null;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Enhanced lookup for headers - uses relationshipId
|
|
144
|
+
*/
|
|
145
|
+
export function getCurrentHeadersForNode(
|
|
146
|
+
node: { data: MCPNodeData; id: string },
|
|
147
|
+
agentToolConfigLookup: Record<
|
|
148
|
+
string,
|
|
149
|
+
Record<string, { toolId: string; headers?: Record<string, string> }>
|
|
150
|
+
>,
|
|
151
|
+
_edges: Edge[]
|
|
152
|
+
): Record<string, string> {
|
|
153
|
+
// First check if we have temporary headers stored on the node (from recent edits)
|
|
154
|
+
if ((node.data as any).tempHeaders !== undefined) {
|
|
155
|
+
return (node.data as any).tempHeaders;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
// If node has relationshipId, find config by relationshipId
|
|
159
|
+
const relationshipId = (node.data as any).relationshipId;
|
|
160
|
+
if (relationshipId) {
|
|
161
|
+
for (const toolsMap of Object.values(agentToolConfigLookup)) {
|
|
162
|
+
const config = toolsMap[relationshipId];
|
|
163
|
+
if (config) {
|
|
164
|
+
return config.headers || {};
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
// No relationshipId found, return empty headers
|
|
170
|
+
return {};
|
|
171
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";exports.id=3086,exports.ids=[3086],exports.modules={6461:(a,b,c)=>{let d,e;c.d(b,{Ak:()=>g});var f=c(77598);function g(a=21){var b;b=a|=0,!d||d.length<b?(d=Buffer.allocUnsafe(128*b),f.webcrypto.getRandomValues(d),e=0):e+b>d.length&&(f.webcrypto.getRandomValues(d),e=0),e+=b;let c="";for(let b=e-a;b<e;b++)c+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[63&d[b]];return c}},12463:(a,b,c)=>{c.d(b,{E:()=>i});var d=c(59111),e=c(98848),f=c(53433),g=c(42723);let h=(0,f.F)("inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",secondary:"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",primary:"border border-primary/50 text-primary bg-primary/5 rounded-sm p-0.5 px-1.5 font-mono",destructive:"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground",code:"text-xs text-muted-foreground border bg-muted/80 dark:bg-muted/50 rounded-sm p-0.5 px-1.5 font-mono",success:"text-xs text-muted-foreground border rounded-sm p-0.5 px-1.5 font-mono bg-emerald-50 border-emerald-200 text-emerald-800 dark:text-emerald-300 dark:bg-emerald-950/40 uppercase",error:"text-xs text-muted-foreground border rounded-sm p-0.5 px-1.5 font-mono bg-red-50 border-red-200 text-red-800 dark:border-red-700 dark:text-red-300 dark:bg-red-950/40 uppercase",warning:"text-xs text-muted-foreground border rounded-sm p-0.5 px-1.5 font-mono bg-amber-50 border-amber-200 text-amber-800 dark:border-amber-700 dark:text-amber-300 dark:bg-amber-950/40 uppercase",sky:"text-xs text-muted-foreground border rounded-sm p-0.5 px-1.5 font-mono bg-sky-50 border-sky-200 text-sky-800 dark:border-sky-700 dark:text-sky-300 dark:bg-sky-950/40",violet:"text-xs text-muted-foreground border rounded-sm p-0.5 px-1.5 font-mono bg-violet-50 border-violet-200 text-violet-800 dark:border-violet-700 dark:text-violet-300 dark:bg-violet-950/40",orange:"text-xs text-muted-foreground border rounded-sm p-0.5 px-1.5 font-mono bg-orange-50 border-orange-200 text-orange-800 dark:border-orange-700 dark:text-orange-300 dark:bg-orange-950/40"}},defaultVariants:{variant:"default"}});function i({className:a,variant:b,asChild:c=!1,...f}){let i=c?e.DX:"span";return(0,d.jsx)(i,{"data-slot":"badge",className:(0,g.cn)(h({variant:b}),a),...f})}},22034:(a,b,c)=>{c.d(b,{Y:()=>e});var d=c(90147);let e=(0,d.createServerReference)("78a8d29cc17b67eb05b8bca773bd70aaaa8933c2c8",d.callServer,void 0,d.findSourceMapURL,"updateMCPTool")},23200:(a,b,c)=>{c.d(b,{MCPServerForm:()=>C});var d=c(59111),e=c(59099),f=c(35558),g=c(6461),h=c(485),i=c(94150),j=c(68156),k=c(17130),l=c(55124),m=c(2856),n=c(93622),o=c(22034),p=c(90147);let q=(0,p.createServerReference)("7005547925fa9abe296b15e333eb621d38e70043b1",p.callServer,void 0,p.findSourceMapURL,"createMCPTool");var r=c(91740),s=c(39108),t=c(14450),u=c(12463),v=c(24703),w=c(37671);function x({control:a,name:b,label:c,availableTools:e=[],description:f,disabled:g=!1}){let{field:{value:h,onChange:j},fieldState:{error:k}}=(0,i.as)({name:b,control:a}),l=(0,t.useMemo)(()=>"object"==typeof h&&null!==h&&"type"in h?"all"===h.type?{type:"all"}:"selective"===h.type&&Array.isArray(h.tools)?{type:"selective",tools:h.tools}:{type:"selective",tools:[]}:{type:"selective",tools:[]},[h]),o=()=>{j({type:"all"})},p=()=>{j({type:"selective",tools:[]})},q=(a,b)=>{if("all"===l.type){let c=e.map(a=>a.name).filter(b=>b!==a);j({type:"selective",tools:b?[...c,a]:c})}else j({type:"selective",tools:b?[...l.tools.filter(b=>b!==a),a]:l.tools.filter(b=>b!==a)})},x=()=>{switch(l.type){case"all":return e.length;case"selective":return l.tools.filter(a=>e.some(b=>b.name===a)).length;default:return 0}},y=x()===e.length;return(0,d.jsx)(n.zB,{control:a,name:b,render:()=>(0,d.jsxs)(n.eI,{children:[(0,d.jsxs)(n.lR,{children:[c,(0,d.jsx)(u.E,{variant:"code",className:"border-none px-2 text-[10px] text-muted-foreground",children:x()})]}),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:[x()," ",(0,d.jsxs)("span",{className:"text-gray-400 dark:text-white/40",children:["/ ",e.length," tool",1===e.length?"":"s"]})]}),y?(0,d.jsxs)(m.$,{type:"button",variant:"outline",size:"sm",onClick:p,disabled:g,children:[(0,d.jsx)(r.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)(s.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(l.type){case"all":return e.some(b=>b.name===a);case"selective":return l.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)(v.S,{checked:b,disabled:g,className:"mb-0",onClick:()=>!g&&q(a.name,!b)})}),(0,d.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,d.jsx)(u.E,{variant:b?"primary":"code",className:`font-mono font-medium text-xs cursor-pointer transition-colors ${g?"opacity-50 cursor-not-allowed":""}`,onClick:()=>!g&&q(a.name,!b),children:a.name}),(0,d.jsxs)(w.Tooltip,{delayDuration:800,children:[(0,d.jsx)(w.TooltipTrigger,{asChild:!0,children:(0,d.jsx)("p",{className:"text-sm text-muted-foreground line-clamp-1",children:a.description})}),(0,d.jsx)(w.TooltipContent,{side:"bottom",align:"start",children:a.description})]})]})]},a.name)})})]})]}),(0,d.jsx)(n.C5,{children:k?.message})]})})}var y=c(45809);let z=y.discriminatedUnion("type",[y.object({type:y.literal("all")}),y.object({type:y.literal("selective"),tools:y.array(y.string())})]),A=y.object({name:y.string().min(1,"Name is required."),config:y.object({type:y.literal("mcp"),mcp:y.object({server:y.object({url:y.string().url("Must be a valid URL.")}),transport:y.object({type:y.nativeEnum(f.o7)}),toolsConfig:z.default({type:"all"})})}),credentialReferenceId:y.string().nullish(),imageUrl:y.string().optional()}),B={name:"",config:{type:"mcp",mcp:{server:{url:""},transport:{type:f.o7.streamableHttp},toolsConfig:{type:"all"}}},imageUrl:"",credentialReferenceId:"none"};function C({initialData:a,mode:b="create",tool:c,credentials:p,tenantId:r,projectId:s}){let t=(0,h.useRouter)(),u=(0,i.mN)({resolver:(0,e.u)(A),defaultValues:{...B,...a}}),{isSubmitting:v}=u.formState,w=async a=>{try{let d={...a,credentialReferenceId:"none"===a.credentialReferenceId?null:a.credentialReferenceId,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,o.Y)(r,s,c.id,d),j.oR.success("MCP server updated successfully"),t.push(`/${r}/projects/${s}/mcp-servers/${c.id}`);else{let a=await q(r,s,{...d,id:(0,g.Ak)()});j.oR.success("MCP server created successfully"),t.push(`/${r}/projects/${s}/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.`)}};return(0,d.jsx)(n.lV,{...u,children:(0,d.jsxs)("form",{onSubmit:u.handleSubmit(w),className:"space-y-8",children:[(0,d.jsx)(k.a,{control:u.control,name:"name",label:"Name",placeholder:"MCP server",isRequired:!0}),(0,d.jsx)(k.a,{control:u.control,name:"config.mcp.server.url",label:"URL",placeholder:"https://api.example.com/mcp",isRequired:!0}),(0,d.jsx)(l.U,{control:u.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:u.control,name:"imageUrl",label:"Image URL (optional)",placeholder:"https://example.com/icon.png or data:image/png;base64,..."}),(0,d.jsx)(l.U,{control:u.control,selectTriggerClassName:"w-full",name:"credentialReferenceId",label:"Credential",placeholder:"Select a credential",options:[{value:"none",label:"No Authentication"},...p.map(a=>({value:a.id,label:a.id}))]}),"update"===b&&(0,d.jsx)(x,{control:u.control,name:"config.mcp.toolsConfig",label:"Tools",availableTools:c?.availableTools||[],description:"Select which tools should be enabled for this MCP server"}),(0,d.jsx)(m.$,{type:"submit",disabled:v,children:"update"===b?"Save":"Create"})]})})}},24703:(a,b,c)=>{c.d(b,{S:()=>h});var d=c(59111),e=c(51006),f=c(39108),g=c(42723);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"})})})}},49540:(a,b,c)=>{c.d(b,{bq:()=>l,eb:()=>n,gC:()=>m,l6:()=>j,yv:()=>k});var d=c(59111),e=c(41404),f=c(67048),g=c(39108),h=c(25773),i=c(42723);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"})})}},51006:(a,b,c)=>{c.d(b,{C1:()=>x,bL:()=>v});var d=c(14450),e=c(90890),f=c(2102),g=c(13254),h=c(19975),i=c(82087),j=c(22871),k=c(66261),l=c(6118),m=c(59111),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},55124:(a,b,c)=>{c.d(b,{U:()=>g});var d=c(59111),e=c(49540),f=c(71771);function g({control:a,name:b,label:c,placeholder:g,options:h,disabled:i=!1,selectTriggerClassName:j,isRequired:k=!1}){return(0,d.jsx)(f.u,{control:a,name:b,label:c,isRequired:k,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))})]})})}},72969:(a,b,c)=>{c.d(b,{MCPServerForm:()=>d});let d=(0,c(60241).registerClientReference)(function(){throw Error("Attempted to call MCPServerForm() from the server but MCPServerForm is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/agents/agents/agents-manage-ui/src/components/mcp-servers/form/mcp-server-form.tsx","MCPServerForm")},81097:(a,b,c)=>{c.d(b,{$Y:()=>g,GO:()=>i,K3:()=>h,h9:()=>k,nZ:()=>j});var d=c(1274);c(2082);var e=c(53842),f=c(41979);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.J)(`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.J)(`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.J)(`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.J)(`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.J)(`tenants/${a}/projects/${b}/credentials/${c}`,{method:"DELETE"})}(0,c(95454).D)([g,h,i,j,k]),(0,d.A)(g,"78f680509089c02c1f04b9eba1337f27204f83933b",null),(0,d.A)(h,"70bd3daf4e3d037e18817b976ef8fe9fcdbb56cdf1",null),(0,d.A)(i,"70c68712fc98c0b1087c008ed2fab1e0410143b1fc",null),(0,d.A)(j,"7895d833615f820726e663d30c6404cb6bf507565b",null),(0,d.A)(k,"70cbac0d00fadc7841586f1752890669225653cdd5",null)}};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
exports.id=581,exports.ids=[581],exports.modules={5294:(a,b,c)=>{"use strict";c.d(b,{$Y:()=>g,GO:()=>i,K3:()=>h,h9:()=>k});var d=c(29991);c(58415);var e=c(8703),f=c(45796);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.J)(`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.J)(`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.J)(`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.J)(`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.J)(`tenants/${a}/projects/${b}/credentials/${c}`,{method:"DELETE"})}(0,c(33451).D)([g,h,i,j,k]),(0,d.A)(g,"78f680509089c02c1f04b9eba1337f27204f83933b",null),(0,d.A)(h,"70bd3daf4e3d037e18817b976ef8fe9fcdbb56cdf1",null),(0,d.A)(i,"70c68712fc98c0b1087c008ed2fab1e0410143b1fc",null),(0,d.A)(j,"7895d833615f820726e663d30c6404cb6bf507565b",null),(0,d.A)(k,"70cbac0d00fadc7841586f1752890669225653cdd5",null)},19329:(a,b,c)=>{"use strict";c.d(b,{U:()=>f});var d=c(29991);c(58415);var e=c(5294);async function f(a,b,c){try{let d=await (0,e.K3)(a,b,c.id);if(d)return d}catch{}try{return await (0,e.GO)(a,b,c)}catch(a){throw console.error("Failed to save credential to database:",a),Error(`Failed to save credential '${c.id}' to database`)}}(0,c(33451).D)([f]),(0,d.A)(f,"702fc6d2ec9f6e07e727398901f4f5f8ec3f6d23e0",null)},21395:(a,b,c)=>{"use strict";c.d(b,{RN:()=>s,Ak:()=>p,uP:()=>t,tN:()=>q,Mj:()=>o,tQ:()=>n,pv:()=>m,Mb:()=>l,H6:()=>u,P:()=>v});var d=c(29991);c(58415);var e=c(34843),f=c(55797),g=c(67417);class h extends Error{constructor(a,b,c){super(a),this.operation=b,this.cause=c,this.name="NangoError"}}function i(a,b,c){if(a instanceof h)throw a;throw new h(b,c,a)}var j=c(33451);let k=()=>{let a=process.env.NANGO_SECRET_KEY;if(!a)throw new h("NANGO_SECRET_KEY environment variable is required for Nango integration");try{return new f.CA({secretKey:a,host:process.env.NANGO_SERVER_URL||void 0})}catch(a){throw new h("Failed to initialize Nango client","new Nango",a)}};async function l(){try{let a=k();return(await a.listProviders({})).data}catch(a){console.error("Failed to fetch providers:",a),i(a,"Unable to retrieve available providers from Nango","listProviders")}}async function m(a){try{let b=k();return(await b.getProvider({provider:a})).data}catch(b){console.error(`Failed to fetch provider ${a}:`,b),i(b,`Provider '${a}' not found or inaccessible`,"getProvider")}}async function n(){try{let a=k();return(await a.listIntegrations()).configs}catch(a){console.error("Failed to fetch integrations:",a),i(a,"Unable to retrieve existing integrations","listIntegrations")}}async function o(a){try{let b=k(),c=(await b.getIntegration({uniqueKey:a},{include:["credentials"]})).data,d=!1;d=c.credentials?.type==="OAUTH2"||c.credentials?.type==="OAUTH1"||c.credentials?.type==="TBA"?!!(c.credentials?.client_id&&c.credentials?.client_secret):c.credentials?.type!=="APP"||!!(c.credentials?.app_id&&c.credentials?.app_link);let{credentials:e,...f}=c;return{...f,areCredentialsSet:d}}catch(b){if(b&&"object"==typeof b&&"status"in b&&404===b.status)return null;console.error(`Failed to fetch integration ${a}:`,b),i(b,`Unable to fetch integration with key '${a}'`,"getIntegration")}}async function p(a){try{let b=k();return(await b.createIntegration({provider:a.provider,unique_key:a.uniqueKey,display_name:a.displayName,credentials:a.credentials})).data}catch(b){console.error("Failed to create integration:",b),i(b,`Failed to create integration '${a.uniqueKey}' for provider '${a.provider}'`,"createIntegration")}}async function q(a){try{let a=k();return(await a.listConnections()).connections}catch(c){let b=a?` for integration '${a}'`:"";console.error(`Failed to fetch connections${b}:`,c),i(c,`Unable to retrieve connections${b}`,"listConnections")}}async function r({endUserId:a="test-tenant",endUserEmail:b="test@test-tenant.com",endUserDisplayName:c="Test User",organizationId:d=process.env.TENANT_ID||g.P3,organizationDisplayName:e="Test Organization",integrationId:f}){try{let g=k(),{data:h}=await g.createConnectSession({end_user:{id:a,email:b,display_name:c},organization:{id:d,display_name:e},allowed_integrations:[f]});return h}catch(a){console.error("Failed to create connect session:",a),i(a,`Unable to create connect session for integration '${f}'`,"createConnectSession")}}async function s({name:a,apiKeyToSet:b,metadata:c}){let d=(0,e.K_)(a);try{let e;try{e=await p({provider:"private-api-bearer",uniqueKey:d,displayName:a})}catch(a){if(a instanceof h&&a.cause&&"object"==typeof a.cause&&"status"in a.cause&&400===a.cause.status){let b=await o(d);b?e=b:i(a,"Integration creation failed for unexpected reasons","create")}else i(a,`Failed to create or retrieve integration '${d}'`,"create")}try{let a=`${process.env.NANGO_SERVER_URL||"https://api.nango.dev"}/connections`,f={provider_config_key:e.unique_key,connection_id:d,metadata:c,credentials:{type:"API_KEY",apiKey:b}},g=await fetch(a,{method:"POST",headers:{Authorization:`Bearer ${process.env.NANGO_SECRET_KEY}`,"Content-Type":"application/json"},body:JSON.stringify(f)});if(!g.ok)throw new h(`Failed to import connection: HTTP ${g.status} - ${g.statusText}`,"importConnection")}catch(a){i(a,"Failed to import API key connection to Nango","importConnection")}try{await v({providerConfigKey:e.unique_key,connectionId:d,metadata:c})}catch(a){console.warn(`Failed to set metadata for connection ${d}:`,a)}return{integration:e}}catch(b){console.error("Unexpected error creating API key credential:",b),i(b,`Unexpected error creating API key credential '${a}'`,"createNangoApiKeyConnection")}}async function t({providerName:a,credentials:b}){try{let c,d=null;try{d=await o(a)}catch(b){if(b instanceof h)throw b;console.debug(`Integration '${a}' not found, will create new one`)}if(d?.areCredentialsSet)c=d;else try{c=await p({provider:a,uniqueKey:a,displayName:a,credentials:b})}catch(b){i(b,`Failed to create integration for provider '${a}'`,"create")}try{return(await r({integrationId:c.unique_key})).token}catch(a){i(a,`Failed to create connect session for integration '${c.unique_key}'`,"createConnectSession")}}catch(b){console.error("Unexpected error creating provider connect session:",b),i(b,`Unexpected error creating connect session for provider '${a}'`,"createProviderConnectSession")}}async function u({providerConfigKey:a,connectionId:b}){try{let c=k();return await c.getMetadata(a,b)}catch(a){if(a&&"object"==typeof a&&"status"in a&&404===a.status)return null;console.error("Failed to get connection metadata:",a),i(a,`Unable to retrieve metadata for connection '${b}'`,"getMetadata")}}async function v({providerConfigKey:a,connectionId:b,metadata:c}){try{let d=k();await d.setMetadata(a,b,c)}catch(a){console.error("Failed to set connection metadata:",a),i(a,`Unable to update metadata for connection '${b}'`,"setMetadata")}}(0,j.D)([l,m,n,o,p,q,s,t,u,v]),(0,d.A)(l,"00e63adf912be71ee6c98b7cca5f69fbd5be224743",null),(0,d.A)(m,"401e91fe59b5ec6a3ee870c75de33f008f802e60c5",null),(0,d.A)(n,"004220ba3bab872958a0d7b6de73c6644be8d1961d",null),(0,d.A)(o,"404a320c14fc477d7d7b455a3a040a8169d254470e",null),(0,d.A)(p,"40bb001080b43a5eb43a42f213558eab6c031819bb",null),(0,d.A)(q,"404b0be649dda14aac8e8abb88e3621b6a617eb3e7",null),(0,d.A)(s,"40bd2287621e4e29dc29e183e593a1c933d71af684",null),(0,d.A)(t,"4059cc66c49a996bc5d80435023b52629c4937ef12",null),(0,d.A)(u,"408e62387ba72c8ac9f355054e0d11990524deb363",null),(0,d.A)(v,"40c1a26071e1bdc3b03bbd1d62812ac43292cba7f3",null)},22427:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>f});var d=c(59111),e=c(43433);function f(){return(0,d.jsx)(e.A,{description:"Something went wrong."})}},25600:(a,b,c)=>{Promise.resolve().then(c.bind(c,22427))},37323:(a,b,c)=>{"use strict";c.d(b,{U:()=>e});var d=c(90147);let e=(0,d.createServerReference)("702fc6d2ec9f6e07e727398901f4f5f8ec3f6d23e0",d.callServer,void 0,d.findSourceMapURL,"findOrCreateCredential")},62048:(a,b,c)=>{Promise.resolve().then(c.bind(c,80969))},80969:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(60241).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/agents/agents/agents-manage-ui/src/app/[tenantId]/projects/[projectId]/credentials/error.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/agents/agents/agents-manage-ui/src/app/[tenantId]/projects/[projectId]/credentials/error.tsx","default")},96957:(a,b,c)=>{"use strict";c.r(b),c.d(b,{"403b7976bc0eaa4b4fd871990c2e551db70698a3f2":()=>d.vj,"6033111228634210ca23b02df048561dbaa19c54d6":()=>d.Sw,"60502a3af22f3a208534a9eeee9efabec8126da69e":()=>d.xx,"60bd2fe2028e26979b712a7535e863f01c7ec940f3":()=>d.gA,"70cecbfcc2f1b12b191d5cd21c06b288942891f6a3":()=>d.vr});var d=c(54637)}};
|