@inkeep/agents-manage-ui 0.33.1 → 0.34.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/standalone/agents-manage-ui/.next/BUILD_ID +1 -1
- package/.next/standalone/agents-manage-ui/.next/app-path-routes-manifest.json +11 -11
- package/.next/standalone/agents-manage-ui/.next/build-manifest.json +3 -3
- package/.next/standalone/agents-manage-ui/.next/prerender-manifest.json +3 -3
- package/.next/standalone/agents-manage-ui/.next/react-loadable-manifest.json +4 -4
- 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.js.nft.json +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/(with-react-flow-provider)/[agentId]/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/(with-react-flow-provider)/[agentId]/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/(with-react-flow-provider)/[agentId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/(with-react-flow-provider)/new/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/(with-react-flow-provider)/new/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/(with-react-flow-provider)/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.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/api-keys/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/new/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/new/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/new/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/page.js.nft.json +1 -1
- 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.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page.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 +2 -2
- 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.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/edit/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/edit/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/edit/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/new/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/new/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/new/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/new/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/new/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/new/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/page.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.js.nft.json +1 -1
- 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.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/settings/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page.js +3 -3
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page.js.nft.json +1 -1
- 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 +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/page.js.nft.json +1 -1
- 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/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/_global-error.html +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/_global-error.rsc +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/_global-error.segments/_full.segment.rsc +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/_global-error.segments/_index.segment.rsc +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/_not-found/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/_not-found/page.js.nft.json +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 +20 -21
- package/.next/standalone/agents-manage-ui/.next/server/app/_not-found.segments/_full.segment.rsc +20 -21
- package/.next/standalone/agents-manage-ui/.next/server/app/_not-found.segments/_index.segment.rsc +11 -12
- package/.next/standalone/agents-manage-ui/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/api/data-components/[dataComponentId]/generate-render/route.js +24 -14
- package/.next/standalone/agents-manage-ui/.next/server/app/api/data-components/[dataComponentId]/generate-render/route_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/api/signoz/conversations/[conversationId]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/api/signoz/route_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/page.js.nft.json +1 -1
- 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 +11 -11
- package/.next/standalone/agents-manage-ui/.next/server/chunks/1310.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/1696.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/chunks/2480.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/server/chunks/2536.js +3 -3
- package/.next/standalone/agents-manage-ui/.next/server/chunks/2544.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/server/chunks/2877.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/3047.js +19 -19
- package/.next/standalone/agents-manage-ui/.next/server/chunks/3246.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/4001.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/4158.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/472.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/server/chunks/5161.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/5258.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/server/chunks/5649.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/chunks/5923.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/server/chunks/5992.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/6174.js +3 -3
- package/.next/standalone/agents-manage-ui/.next/server/chunks/6448.js +3 -3
- package/.next/standalone/agents-manage-ui/.next/server/chunks/7412.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/8012.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/chunks/8764.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/9783.js +10 -0
- package/.next/standalone/agents-manage-ui/.next/server/middleware-build-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/pages/404.html +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/pages/500.html +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/server-reference-manifest.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/10249-35ca3f6d163c6435.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{10597-967562041dac48f8.js → 10597-dc29b292247c40e4.js} +3 -3
- package/.next/standalone/agents-manage-ui/.next/static/chunks/10856-18e8a30665a753e6.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/12239-41c6d91b08c95885.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{20568-4bb3d14871146a4c.js → 20568-5fc64339f0bccd3f.js} +2 -2
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{23147-7718d86a86601d33.js → 23147-a22c6aebc0404811.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/25378-49aa01acc09a61eb.js +7 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/27689-2b788aa516f2b9b7.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{33929-73f07388f3894911.js → 33929-fcfba412c567ac0d.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{34186-8fe22838f769bc44.js → 34186-eb277f11ae07c10d.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{34461.3d791ae160fd67e7.js → 34461.e175065084634078.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{36c0bed7-b40aaac4df8bb3c8.js → 36c0bed7-2c2b02163e330804.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/41823-a43ed1a9b44054b2.js +2 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/46673-f904d4ce6e7a0611.js +433 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/47873-0d732a0280826d36.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/58607-022b2c5fa3fe2540.js +14 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{68408-ddf0cb91b8c559f7.js → 68408-6e1bdcc01ab1ee9c.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/80714-1819fc79697be609.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{93510-e1cc49010e4a6c94.js → 82751-968456b3939ef0bb.js} +4 -4
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{88873-5a3c9f95e73c33f8.js → 88873-a9d99f8a00ac4988.js} +2 -2
- package/.next/standalone/agents-manage-ui/.next/static/chunks/90385-261e3d5036d1b7c2.js +20 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/94876-fa1f4c688bc7a3d6.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{95653-177eac276e159b4b.js → 95653-2d2153b54a08b675.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/97382-5302d42918f17d92.js +11 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{98060.47c76ea85572562b.js → 98060.7065b8aefe084397.js} +5 -5
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/(with-react-flow-provider)/[agentId]/{page-8e1901a3c39c7164.js → page-25b7f0f6aba0fec1.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/(with-react-flow-provider)/{loading-b7f12d0337954bb6.js → loading-493151d798f222be.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/(with-react-flow-provider)/new/page-b495d69a4cbf07d5.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/{credentials/new/page-f620e858d1ff5971.js → agents/loading-e08930d930e48e44.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/page-89529c58684c0bb3.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/api-keys/page-f34f800d12824bfa.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page-024603db6ee3d6d0.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/{agents/loading-f620e858d1ff5971.js → artifacts/loading-e08930d930e48e44.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/new/page-8515f0ca91bf27bc.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/page-c9d2d24a0e1f4160.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/{page-5901738ca9b08dfb.js → page-0386d069997f14b6.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/{artifacts/loading-f620e858d1ff5971.js → components/loading-e08930d930e48e44.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/new/page-9f657c018a1b4dcc.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/{page-6d1b0237673a72ab.js → page-ce1437143a72e89e.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page-4d5a8f7feb859a84.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page-fa2672e6af1414e8.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/{components/loading-f620e858d1ff5971.js → credentials/new/page-e08930d930e48e44.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page-9bb4ccbf88622381.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/page-64c47869f3865339.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/edit/page-b004fa2c702d7286.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/new/page-75b95f621696afab.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/page-650cc4ab17747737.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/{page-0f3ac3855c17242f.js → page-9c016d6a7b8a23a0.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page-0b093c1959cd8ce3.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/new/{layout-b7f12d0337954bb6.js → layout-493151d798f222be.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/new/page-36d98743facf01cd.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/{page-7c581fb4e4011881.js → page-e26d65170d031a64.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/page-a0dbb3d387ee1783.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/settings/{page-cf7d05b5f590cad1.js → page-70005ac3d11e9227.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page-6f8ea8a476f6db50.js +2 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/{page-314971be9c5ebcca.js → page-afbc67ff9258dd75.js} +2 -2
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/loading-e08930d930e48e44.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/page-dee1720068f4cf96.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/layout-a9b61f1fc7182e49.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{webpack-832b0311655e0a56.js → webpack-b52f8e19bed46341.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/css/9777a62adc40d976.css +1 -0
- package/.next/standalone/agents-manage-ui/package.json +2 -1
- package/.next/standalone/packages/agents-core/package.json +1 -1
- package/package.json +5 -4
- package/src/app/[tenantId]/projects/[projectId]/page.tsx +2 -6
- package/src/app/globals.css +35 -0
- package/src/app/layout.tsx +5 -11
- package/src/components/agent/agent.tsx +1 -0
- package/src/components/agent/configuration/edge-types.tsx +9 -6
- package/src/components/agent/configuration/model-options.tsx +8 -0
- package/src/components/agent/configuration/node-types.tsx +2 -3
- package/src/components/agent/edges/agent-to-agent-edge.tsx +10 -9
- package/src/components/agent/edges/default-edge.tsx +22 -25
- package/src/components/agent/edges/self-loop-edge.tsx +3 -5
- package/src/components/agent/nodes/base-node.tsx +3 -3
- package/src/components/agent/nodes/function-tool-node.tsx +5 -3
- package/src/components/agent/nodes/mcp-node.tsx +22 -10
- package/src/components/agent/nodes/sub-agent-node.tsx +5 -4
- package/src/components/agent/ship/ship-modal.tsx +8 -3
- package/src/components/agent/sidepane/edges/edge-editor.tsx +29 -4
- package/src/components/agent/sidepane/metadata/metadata-editor.tsx +1 -2
- package/src/components/agent/sidepane/nodes/model-selector.tsx +68 -7
- package/src/components/agents/delete-agent-confirmation.tsx +2 -3
- package/src/components/form/json-schema-builder.tsx +13 -11
- package/src/components/projects/delete-project-confirmation.tsx +1 -2
- package/src/components/sidebar-nav/app-sidebar-provider.tsx +25 -0
- package/src/components/sidebar-nav/{sidebar-nav.tsx → app-sidebar.tsx} +23 -8
- package/src/components/sidebar-nav/project-switcher.tsx +1 -1
- package/src/components/theme-toggle.tsx +1 -1
- package/src/components/traces/filters/agent-filter.tsx +3 -3
- package/src/components/traces/traces-overview.tsx +4 -5
- package/src/components/ui/dropdown-menu.tsx +1 -1
- package/src/components/ui/radio-group.tsx +2 -2
- package/src/features/agent/domain/serialize.ts +2 -2
- package/src/features/agent/state/use-agent-store.ts +85 -105
- package/src/features/agent/state/use-monaco-store.ts +136 -117
- package/src/hooks/use-did-update.ts +25 -0
- package/src/hooks/use-project-data.ts +1 -2
- package/src/lib/ai/model-factory.ts +65 -3
- package/src/lib/utils/throttle.ts +13 -0
- package/.next/standalone/agents-manage-ui/.next/server/chunks/2417.js +0 -10
- package/.next/standalone/agents-manage-ui/.next/server/chunks/3360.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/3862.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/703.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/7338.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/7389.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/10249-28a5ddd483b77013.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/10856-cb54476984e85898.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/25378-b4421fae612ca066.js +0 -7
- package/.next/standalone/agents-manage-ui/.next/static/chunks/27689-105ca41283c265b8.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/3358-87aee7bd085f9e1e.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/39407-14bad650f45bab6d.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/41823-8a86b0d2d563c3ec.js +0 -2
- package/.next/standalone/agents-manage-ui/.next/static/chunks/6203-317b5e71f4070775.js +0 -14
- package/.next/standalone/agents-manage-ui/.next/static/chunks/82342-15533826e8807320.js +0 -433
- package/.next/standalone/agents-manage-ui/.next/static/chunks/85660-e270a37a64ad6955.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/90385-ba6ea2cb76f05539.js +0 -20
- package/.next/standalone/agents-manage-ui/.next/static/chunks/94876-396fe008771f6947.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/97382-1fe7e70464e22c44.js +0 -11
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/(with-react-flow-provider)/new/page-f84e0245cdaa3336.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/page-72b70de8f5bbe686.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/api-keys/page-c04dcf5690df6dc1.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page-924dd70479546d32.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/new/page-58327ad66d0554d6.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/page-83911e0d7d6a87f0.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/new/page-5cad40e010b903ea.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page-bf7f0c322b965360.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page-4ad8ba0c7749e1b2.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page-72ca8dc38fc4d37e.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/page-7932aa96ff49f084.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/edit/page-2edfdb53894e672f.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/new/page-f09ed006181c8d52.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/page-8a096c1fab528420.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page-2df751a4d3858d60.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/new/page-e988975acc3e9311.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/page-7fcecb98958fd65a.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page-cbbcfea7f6810b46.js +0 -2
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/loading-f620e858d1ff5971.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/page-0686dc795631f36d.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/layout-e5e90301d9937d90.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/css/a6159611e4980ef8.css +0 -1
- /package/.next/standalone/agents-manage-ui/.next/static/{_OxZWOKWcNN8T1uQqSFEB → BHphaI_uYPDwyiFIuec8K}/_buildManifest.js +0 -0
- /package/.next/standalone/agents-manage-ui/.next/static/{_OxZWOKWcNN8T1uQqSFEB → BHphaI_uYPDwyiFIuec8K}/_ssgManifest.js +0 -0
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { BaseEdge, EdgeLabelRenderer, type EdgeProps, getBezierPath } from '@xyflow/react';
|
|
2
2
|
import { ArrowRight, ArrowRightLeft } from 'lucide-react';
|
|
3
3
|
import { AnimatedCircle } from '@/components/agent/edges/default-edge';
|
|
4
|
-
import
|
|
4
|
+
import { cn } from '@/lib/utils';
|
|
5
|
+
import type { A2AEdgeData, AnimatedEdge } from '../configuration/edge-types';
|
|
5
6
|
|
|
6
|
-
interface AgentToAgentEdgeProps extends EdgeProps {
|
|
7
|
-
data
|
|
7
|
+
interface AgentToAgentEdgeProps extends Omit<EdgeProps, 'data'> {
|
|
8
|
+
data: AnimatedEdge & A2AEdgeData;
|
|
8
9
|
}
|
|
9
10
|
|
|
10
11
|
export function AgentToAgentEdge({
|
|
@@ -17,13 +18,12 @@ export function AgentToAgentEdge({
|
|
|
17
18
|
data,
|
|
18
19
|
selected,
|
|
19
20
|
}: AgentToAgentEdgeProps) {
|
|
20
|
-
const relationships = data
|
|
21
|
+
const relationships = data.relationships || {
|
|
21
22
|
transferTargetToSource: false,
|
|
22
23
|
transferSourceToTarget: false,
|
|
23
24
|
delegateTargetToSource: false,
|
|
24
25
|
delegateSourceToTarget: false,
|
|
25
26
|
};
|
|
26
|
-
const delegating = data?.delegating;
|
|
27
27
|
|
|
28
28
|
const hasDelegate = relationships.delegateTargetToSource || relationships.delegateSourceToTarget;
|
|
29
29
|
const hasTransfer = relationships.transferTargetToSource || relationships.transferSourceToTarget;
|
|
@@ -88,13 +88,14 @@ export function AgentToAgentEdge({
|
|
|
88
88
|
const delegateMarkerEnd =
|
|
89
89
|
hasDelegate && relationships.delegateSourceToTarget ? getMarker(!!selected) : undefined;
|
|
90
90
|
|
|
91
|
-
const className =
|
|
92
|
-
|
|
93
|
-
|
|
91
|
+
const className = cn(
|
|
92
|
+
data.status && 'edge-delegating',
|
|
93
|
+
data.status === 'inverted-delegating' && 'edge-delegating-inverted'
|
|
94
|
+
);
|
|
94
95
|
return (
|
|
95
96
|
<>
|
|
96
97
|
{/* Animated circles based on delegating direction */}
|
|
97
|
-
|
|
98
|
+
<AnimatedCircle edgePath={edgePath} status={data.status} />
|
|
98
99
|
|
|
99
100
|
{/* Render transfer path (solid line) */}
|
|
100
101
|
{hasTransfer && (
|
|
@@ -2,24 +2,23 @@
|
|
|
2
2
|
|
|
3
3
|
import { BaseEdge, type EdgeProps, getBezierPath } from '@xyflow/react';
|
|
4
4
|
import { type FC, useEffect, useRef } from 'react';
|
|
5
|
+
import { cn } from '@/lib/utils';
|
|
6
|
+
import type { AnimatedEdge } from '../configuration/edge-types';
|
|
5
7
|
|
|
6
|
-
|
|
7
|
-
data?: {
|
|
8
|
-
delegating: boolean | 'inverted';
|
|
9
|
-
};
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
export const AnimatedCircle: FC<{ edgePath: string; inverted: boolean }> = ({
|
|
13
|
-
edgePath,
|
|
14
|
-
inverted,
|
|
15
|
-
}) => {
|
|
8
|
+
export const AnimatedCircle: FC<{ edgePath: string } & AnimatedEdge> = ({ edgePath, status }) => {
|
|
16
9
|
const ref = useRef<SVGAnimateElement>(null);
|
|
17
10
|
|
|
18
11
|
// Without this useEffect, the animation won't start when this component is rendered dynamically.
|
|
19
12
|
// biome-ignore lint/correctness/useExhaustiveDependencies: We need restart animation when invert is changed
|
|
20
13
|
useEffect(() => {
|
|
21
14
|
ref.current?.beginElement();
|
|
22
|
-
}, [
|
|
15
|
+
}, [status]);
|
|
16
|
+
|
|
17
|
+
if (!status) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const isInvertedDelegating = status === 'inverted-delegating';
|
|
23
22
|
|
|
24
23
|
return (
|
|
25
24
|
<circle fill="var(--primary)" r="6">
|
|
@@ -27,9 +26,8 @@ export const AnimatedCircle: FC<{ edgePath: string; inverted: boolean }> = ({
|
|
|
27
26
|
ref={ref}
|
|
28
27
|
dur="2s"
|
|
29
28
|
path={edgePath}
|
|
30
|
-
fill=
|
|
31
|
-
{...(
|
|
32
|
-
pathLength: '1',
|
|
29
|
+
fill={isInvertedDelegating ? 'remove' : 'freeze'}
|
|
30
|
+
{...(isInvertedDelegating && {
|
|
33
31
|
keyPoints: '1;0',
|
|
34
32
|
keyTimes: '0;1',
|
|
35
33
|
})}
|
|
@@ -38,6 +36,10 @@ export const AnimatedCircle: FC<{ edgePath: string; inverted: boolean }> = ({
|
|
|
38
36
|
);
|
|
39
37
|
};
|
|
40
38
|
|
|
39
|
+
interface DefaultEdgeProps extends Omit<EdgeProps, 'data'> {
|
|
40
|
+
data?: AnimatedEdge;
|
|
41
|
+
}
|
|
42
|
+
|
|
41
43
|
export function DefaultEdge({
|
|
42
44
|
id,
|
|
43
45
|
sourceX,
|
|
@@ -47,9 +49,8 @@ export function DefaultEdge({
|
|
|
47
49
|
sourcePosition,
|
|
48
50
|
targetPosition,
|
|
49
51
|
label,
|
|
50
|
-
selected,
|
|
51
52
|
markerEnd,
|
|
52
|
-
data,
|
|
53
|
+
data = {},
|
|
53
54
|
}: DefaultEdgeProps) {
|
|
54
55
|
const [edgePath] = getBezierPath({
|
|
55
56
|
sourceX,
|
|
@@ -60,24 +61,20 @@ export function DefaultEdge({
|
|
|
60
61
|
targetPosition,
|
|
61
62
|
});
|
|
62
63
|
|
|
63
|
-
const className =
|
|
64
|
-
selected || data?.delegating
|
|
65
|
-
? '!stroke-primary'
|
|
66
|
-
: '!stroke-border dark:!stroke-muted-foreground';
|
|
67
|
-
|
|
68
64
|
return (
|
|
69
65
|
<>
|
|
70
66
|
{/* Animated circles based on delegating direction */}
|
|
71
|
-
{data
|
|
72
|
-
<AnimatedCircle edgePath={edgePath} inverted={data.delegating === 'inverted'} />
|
|
73
|
-
)}
|
|
67
|
+
<AnimatedCircle edgePath={edgePath} status={data.status} />
|
|
74
68
|
<BaseEdge
|
|
75
69
|
id={id}
|
|
76
70
|
path={edgePath}
|
|
77
71
|
label={label}
|
|
78
72
|
markerEnd={markerEnd}
|
|
79
73
|
style={{ strokeWidth: 2 }}
|
|
80
|
-
className={
|
|
74
|
+
className={cn(
|
|
75
|
+
data.status && 'edge-delegating',
|
|
76
|
+
data.status === 'inverted-delegating' && 'edge-delegating-inverted'
|
|
77
|
+
)}
|
|
81
78
|
/>
|
|
82
79
|
</>
|
|
83
80
|
);
|
|
@@ -2,8 +2,8 @@ import { BaseEdge, EdgeLabelRenderer, type EdgeProps, type Node, useStore } from
|
|
|
2
2
|
import { RefreshCw } from 'lucide-react';
|
|
3
3
|
import type { A2AEdgeData } from '../configuration/edge-types';
|
|
4
4
|
|
|
5
|
-
interface SelfLoopEdgeProps extends EdgeProps {
|
|
6
|
-
data
|
|
5
|
+
interface SelfLoopEdgeProps extends Omit<EdgeProps, 'data'> {
|
|
6
|
+
data: A2AEdgeData;
|
|
7
7
|
}
|
|
8
8
|
|
|
9
9
|
const getNodePositionById = (nodeId: string): ((state: { nodes: Node[] }) => Node | undefined) => {
|
|
@@ -15,7 +15,7 @@ export function SelfLoopEdge({ source, data, selected }: SelfLoopEdgeProps) {
|
|
|
15
15
|
|
|
16
16
|
if (!sourceNode) return null;
|
|
17
17
|
|
|
18
|
-
const relationships = data
|
|
18
|
+
const relationships = data.relationships || {
|
|
19
19
|
transferTargetToSource: false,
|
|
20
20
|
transferSourceToTarget: false,
|
|
21
21
|
delegateTargetToSource: false,
|
|
@@ -75,7 +75,6 @@ export function SelfLoopEdge({ source, data, selected }: SelfLoopEdgeProps) {
|
|
|
75
75
|
{/* Render transfer path (solid line) */}
|
|
76
76
|
{hasTransfer && (
|
|
77
77
|
<BaseEdge
|
|
78
|
-
className={`${selected ? '!stroke-primary' : '!stroke-border dark:!stroke-muted-foreground'}`}
|
|
79
78
|
path={transferPath}
|
|
80
79
|
style={{
|
|
81
80
|
strokeWidth: 2,
|
|
@@ -88,7 +87,6 @@ export function SelfLoopEdge({ source, data, selected }: SelfLoopEdgeProps) {
|
|
|
88
87
|
{/* Render delegate path (dashed line) */}
|
|
89
88
|
{hasDelegate && (
|
|
90
89
|
<BaseEdge
|
|
91
|
-
className={`${selected ? '!stroke-primary' : '!stroke-border dark:!stroke-muted-foreground'}`}
|
|
92
90
|
path={hasTransfer ? delegatePath : transferPath}
|
|
93
91
|
style={{
|
|
94
92
|
strokeDasharray: '5,5',
|
|
@@ -9,11 +9,11 @@ export const BaseNode: FC<BaseNodeProps> = ({ className, isSelected, ...props })
|
|
|
9
9
|
<div
|
|
10
10
|
className={cn(
|
|
11
11
|
'relative rounded-lg border bg-card text-card-foreground',
|
|
12
|
-
// React Flow displays node elements inside
|
|
13
|
-
// which compiles down to a div with a
|
|
12
|
+
// React Flow displays node elements inside a `NodeWrapper` component,
|
|
13
|
+
// which compiles down to a div with a class `react-flow__node`.
|
|
14
14
|
// When a node is selected, the class `selected` is added to the
|
|
15
15
|
// `react-flow__node` element. This allows us to style the node when it
|
|
16
|
-
isSelected
|
|
16
|
+
isSelected && 'ring-2 ring-primary',
|
|
17
17
|
className
|
|
18
18
|
)}
|
|
19
19
|
// tabIndex={0}
|
|
@@ -19,6 +19,7 @@ export function FunctionToolNode(props: NodeProps & { data: FunctionToolNodeData
|
|
|
19
19
|
const nodeErrors = getNodeErrors(functionToolId);
|
|
20
20
|
const hasErrors = hasNodeErrors(functionToolId);
|
|
21
21
|
const isDelegating = data.status === 'delegating';
|
|
22
|
+
const isInvertedDelegating = data.status === 'inverted-delegating';
|
|
22
23
|
const isExecuting = data.status === 'executing';
|
|
23
24
|
return (
|
|
24
25
|
<div className="relative">
|
|
@@ -27,7 +28,8 @@ export function FunctionToolNode(props: NodeProps & { data: FunctionToolNodeData
|
|
|
27
28
|
className={cn(
|
|
28
29
|
'rounded-4xl min-w-40 max-w-xs',
|
|
29
30
|
hasErrors && 'ring-2 ring-red-300 border-red-300',
|
|
30
|
-
isExecuting && 'node-executing'
|
|
31
|
+
isExecuting && 'node-executing',
|
|
32
|
+
isInvertedDelegating && 'node-delegating-inverted'
|
|
31
33
|
)}
|
|
32
34
|
>
|
|
33
35
|
<BaseNodeHeader className="mb-0 py-3">
|
|
@@ -38,9 +40,9 @@ export function FunctionToolNode(props: NodeProps & { data: FunctionToolNodeData
|
|
|
38
40
|
</div>
|
|
39
41
|
<BaseNodeHeaderTitle className="flex-1 truncate">{name}</BaseNodeHeaderTitle>
|
|
40
42
|
</div>
|
|
41
|
-
{description
|
|
43
|
+
{description && (
|
|
42
44
|
<p className="text-xs text-muted-foreground line-clamp-2 pl-7">{description}</p>
|
|
43
|
-
)
|
|
45
|
+
)}
|
|
44
46
|
</div>
|
|
45
47
|
{hasErrors && (
|
|
46
48
|
<ErrorIndicator errors={nodeErrors} className="absolute -top-2 -right-2 w-6 h-6" />
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type NodeProps, Position } from '@xyflow/react';
|
|
2
|
+
import type { FC, ReactNode } from 'react';
|
|
2
3
|
import { getActiveTools } from '@/app/utils/active-tools';
|
|
3
4
|
import { MCPToolImage } from '@/components/mcp-servers/mcp-tool-image';
|
|
4
5
|
import { Badge } from '@/components/ui/badge';
|
|
@@ -11,6 +12,21 @@ import { Handle } from './handle';
|
|
|
11
12
|
|
|
12
13
|
const TOOLS_SHOWN_LIMIT = 4;
|
|
13
14
|
|
|
15
|
+
export const TruncateBadge: FC<{ children: ReactNode }> = ({ children }) => {
|
|
16
|
+
return (
|
|
17
|
+
<Badge
|
|
18
|
+
variant="code"
|
|
19
|
+
className={cn(
|
|
20
|
+
'text-2xs text-gray-700 dark:text-gray-300',
|
|
21
|
+
// Add ellipsis for long names
|
|
22
|
+
'truncate block max-w-full'
|
|
23
|
+
)}
|
|
24
|
+
>
|
|
25
|
+
{children}
|
|
26
|
+
</Badge>
|
|
27
|
+
);
|
|
28
|
+
};
|
|
29
|
+
|
|
14
30
|
export function MCPNode(props: NodeProps & { data: MCPNodeData }) {
|
|
15
31
|
const { data, selected } = props;
|
|
16
32
|
const { toolLookup, agentToolConfigLookup, edges } = useAgentStore((state) => ({
|
|
@@ -77,6 +93,7 @@ export function MCPNode(props: NodeProps & { data: MCPNodeData }) {
|
|
|
77
93
|
|
|
78
94
|
const toolBadges = getToolDisplay();
|
|
79
95
|
const isDelegating = data.status === 'delegating';
|
|
96
|
+
const isInvertedDelegating = data.status === 'inverted-delegating';
|
|
80
97
|
const isExecuting = data.status === 'executing';
|
|
81
98
|
const hasErrors = data.status === 'error';
|
|
82
99
|
return (
|
|
@@ -85,22 +102,17 @@ export function MCPNode(props: NodeProps & { data: MCPNodeData }) {
|
|
|
85
102
|
className={cn(
|
|
86
103
|
'rounded-4xl min-w-40 min-h-13 max-w-3xs',
|
|
87
104
|
hasErrors && 'ring-2 ring-red-300 border-red-300',
|
|
88
|
-
isExecuting && 'node-executing'
|
|
105
|
+
isExecuting && 'node-executing',
|
|
106
|
+
isInvertedDelegating && 'node-delegating-inverted'
|
|
89
107
|
)}
|
|
90
108
|
>
|
|
91
109
|
<BaseNodeHeader className="flex items-center justify-between gap-2">
|
|
92
110
|
<MCPToolImage imageUrl={imageUrl} name={name} size={24} className="flex-shrink-0" />
|
|
93
111
|
<BaseNodeHeaderTitle>{name}</BaseNodeHeaderTitle>
|
|
94
112
|
</BaseNodeHeader>
|
|
95
|
-
<BaseNodeContent>
|
|
96
|
-
{toolBadges.map((label
|
|
97
|
-
<
|
|
98
|
-
key={index}
|
|
99
|
-
variant="code"
|
|
100
|
-
className="px-2 text-2xs text-gray-700 dark:text-gray-300 flex-shrink-0"
|
|
101
|
-
>
|
|
102
|
-
{label}
|
|
103
|
-
</Badge>
|
|
113
|
+
<BaseNodeContent className="flex-row gap-2 flex-wrap">
|
|
114
|
+
{toolBadges.map((label) => (
|
|
115
|
+
<TruncateBadge key={label}>{label}</TruncateBadge>
|
|
104
116
|
))}
|
|
105
117
|
</BaseNodeContent>
|
|
106
118
|
<Handle id={mcpNodeHandleId} type="target" position={Position.Top} isConnectable />
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type NodeProps, Position } from '@xyflow/react';
|
|
2
2
|
import { Bot, Component, Library, type LucideIcon } from 'lucide-react';
|
|
3
3
|
import { useMemo } from 'react';
|
|
4
|
+
import { TruncateBadge } from '@/components/agent/nodes/mcp-node';
|
|
4
5
|
import { AnthropicIcon } from '@/components/icons/anthropic';
|
|
5
6
|
import { GoogleIcon } from '@/components/icons/google';
|
|
6
7
|
import { OpenAIIcon } from '@/components/icons/openai';
|
|
@@ -33,9 +34,7 @@ const ListSection = ({
|
|
|
33
34
|
</div>
|
|
34
35
|
<div className="flex flex-wrap gap-2">
|
|
35
36
|
{items?.map((name) => (
|
|
36
|
-
<
|
|
37
|
-
{name}
|
|
38
|
-
</Badge>
|
|
37
|
+
<TruncateBadge key={name}>{name}</TruncateBadge>
|
|
39
38
|
))}
|
|
40
39
|
</div>
|
|
41
40
|
</div>
|
|
@@ -72,6 +71,7 @@ export function SubAgentNode(props: NodeProps & { data: AgentNodeData }) {
|
|
|
72
71
|
[data?.artifactComponents, artifactComponentLookup]
|
|
73
72
|
);
|
|
74
73
|
const isDelegating = status === 'delegating';
|
|
74
|
+
const isInvertedDelegating = status === 'inverted-delegating';
|
|
75
75
|
const isExecuting = status === 'executing';
|
|
76
76
|
return (
|
|
77
77
|
<div className="relative">
|
|
@@ -81,7 +81,8 @@ export function SubAgentNode(props: NodeProps & { data: AgentNodeData }) {
|
|
|
81
81
|
className={cn(
|
|
82
82
|
isDefault && 'rounded-tl-none',
|
|
83
83
|
hasErrors && 'ring-2 ring-red-300 border-red-300',
|
|
84
|
-
isExecuting && 'node-executing'
|
|
84
|
+
isExecuting && 'node-executing',
|
|
85
|
+
isInvertedDelegating && 'node-delegating-inverted'
|
|
85
86
|
)}
|
|
86
87
|
style={{ width: NODE_WIDTH }}
|
|
87
88
|
>
|
|
@@ -82,8 +82,7 @@ const shipModalTabItems: TabItem[] = [
|
|
|
82
82
|
];
|
|
83
83
|
|
|
84
84
|
export const ShipModal: FC<{ buttonClassName: string }> = ({ buttonClassName }) => {
|
|
85
|
-
const
|
|
86
|
-
const { tenantId, projectId } = params;
|
|
85
|
+
const { tenantId, projectId } = useParams();
|
|
87
86
|
return (
|
|
88
87
|
<Dialog>
|
|
89
88
|
<DialogTrigger asChild>
|
|
@@ -92,7 +91,13 @@ export const ShipModal: FC<{ buttonClassName: string }> = ({ buttonClassName })
|
|
|
92
91
|
Ship
|
|
93
92
|
</Button>
|
|
94
93
|
</DialogTrigger>
|
|
95
|
-
<DialogContent
|
|
94
|
+
<DialogContent
|
|
95
|
+
className="max-w-full! w-7xl"
|
|
96
|
+
position="top"
|
|
97
|
+
showCloseButton={false}
|
|
98
|
+
onWheel={(e) => e.stopPropagation()} // to make scroll work on the widgets
|
|
99
|
+
onTouchMove={(e) => e.stopPropagation()} // to make scroll work on the widgets
|
|
100
|
+
>
|
|
96
101
|
<DialogHeader>
|
|
97
102
|
<div className="flex items-center justify-between w-full gap-2">
|
|
98
103
|
<DialogTitle>Talk to your agent</DialogTitle>
|
|
@@ -20,6 +20,8 @@ type RelationshipOptionProps = {
|
|
|
20
20
|
checked: boolean;
|
|
21
21
|
};
|
|
22
22
|
|
|
23
|
+
const REMOVE_DELEGATION_OPTION_ID = 'none';
|
|
24
|
+
|
|
23
25
|
function RelationshipOption({ id, label, onCheckedChange, checked }: RelationshipOptionProps) {
|
|
24
26
|
return (
|
|
25
27
|
<div className="flex items-start gap-3">
|
|
@@ -47,6 +49,7 @@ type RelationshipSectionProps = {
|
|
|
47
49
|
checkedValues: A2AEdgeData['relationships'];
|
|
48
50
|
useRadio?: boolean;
|
|
49
51
|
onRadioChange?: (value: string) => void;
|
|
52
|
+
defaultRadioValue?: string;
|
|
50
53
|
};
|
|
51
54
|
|
|
52
55
|
function RelationshipSection({
|
|
@@ -58,12 +61,23 @@ function RelationshipSection({
|
|
|
58
61
|
checkedValues,
|
|
59
62
|
useRadio = false,
|
|
60
63
|
onRadioChange,
|
|
64
|
+
defaultRadioValue,
|
|
61
65
|
}: RelationshipSectionProps) {
|
|
62
66
|
const getRadioValue = () => {
|
|
63
67
|
const checkedOption = options.find(
|
|
64
|
-
(opt) =>
|
|
68
|
+
(opt) =>
|
|
69
|
+
(!defaultRadioValue || opt.id !== defaultRadioValue) &&
|
|
70
|
+
checkedValues?.[opt.id as keyof A2AEdgeData['relationships']]
|
|
65
71
|
);
|
|
66
|
-
|
|
72
|
+
if (checkedOption) {
|
|
73
|
+
return checkedOption.id;
|
|
74
|
+
}
|
|
75
|
+
// If no option is checked, return defaultRadioValue if it exists in options
|
|
76
|
+
if (defaultRadioValue) {
|
|
77
|
+
const defaultOption = options.find((opt) => opt.id === defaultRadioValue);
|
|
78
|
+
return defaultOption ? defaultRadioValue : '';
|
|
79
|
+
}
|
|
80
|
+
return '';
|
|
67
81
|
};
|
|
68
82
|
|
|
69
83
|
return (
|
|
@@ -210,7 +224,10 @@ function EdgeEditor({ selectedEdge }: EdgeEditorProps) {
|
|
|
210
224
|
delegateTargetToSource: false,
|
|
211
225
|
};
|
|
212
226
|
|
|
213
|
-
if (value) {
|
|
227
|
+
if (value === REMOVE_DELEGATION_OPTION_ID) {
|
|
228
|
+
newRelationships.delegateSourceToTarget = false;
|
|
229
|
+
newRelationships.delegateTargetToSource = false;
|
|
230
|
+
} else if (value) {
|
|
214
231
|
if (isSelfLoop && value === 'delegateSourceToTarget') {
|
|
215
232
|
newRelationships.delegateSourceToTarget = true;
|
|
216
233
|
newRelationships.delegateTargetToSource = true;
|
|
@@ -218,7 +235,6 @@ function EdgeEditor({ selectedEdge }: EdgeEditorProps) {
|
|
|
218
235
|
newRelationships[value as keyof A2AEdgeData['relationships']] = true;
|
|
219
236
|
}
|
|
220
237
|
}
|
|
221
|
-
|
|
222
238
|
updateRelationships(newRelationships);
|
|
223
239
|
};
|
|
224
240
|
|
|
@@ -285,6 +301,10 @@ function EdgeEditor({ selectedEdge }: EdgeEditorProps) {
|
|
|
285
301
|
</div>
|
|
286
302
|
),
|
|
287
303
|
},
|
|
304
|
+
{
|
|
305
|
+
id: REMOVE_DELEGATION_OPTION_ID,
|
|
306
|
+
label: <div className="my-0.5 leading-[22px]">None</div>,
|
|
307
|
+
},
|
|
288
308
|
]
|
|
289
309
|
: [
|
|
290
310
|
{
|
|
@@ -315,6 +335,10 @@ function EdgeEditor({ selectedEdge }: EdgeEditorProps) {
|
|
|
315
335
|
</div>
|
|
316
336
|
),
|
|
317
337
|
},
|
|
338
|
+
{
|
|
339
|
+
id: REMOVE_DELEGATION_OPTION_ID,
|
|
340
|
+
label: <div className="my-0.5 leading-[22px]">None</div>,
|
|
341
|
+
},
|
|
318
342
|
];
|
|
319
343
|
|
|
320
344
|
return (
|
|
@@ -337,6 +361,7 @@ function EdgeEditor({ selectedEdge }: EdgeEditorProps) {
|
|
|
337
361
|
checkedValues={selectedEdge.data?.relationships as A2AEdgeData['relationships']}
|
|
338
362
|
useRadio={true}
|
|
339
363
|
onRadioChange={handleDelegateRadioChange}
|
|
364
|
+
defaultRadioValue={REMOVE_DELEGATION_OPTION_ID}
|
|
340
365
|
/>
|
|
341
366
|
<Separator />
|
|
342
367
|
<div className="flex justify-end">
|
|
@@ -53,9 +53,8 @@ const ExecutionLimitInheritanceInfo = () => {
|
|
|
53
53
|
};
|
|
54
54
|
|
|
55
55
|
function MetadataEditor() {
|
|
56
|
-
const
|
|
56
|
+
const { agentId, tenantId, projectId } = useParams();
|
|
57
57
|
const metadata = useAgentStore((state) => state.metadata);
|
|
58
|
-
const { agentId, tenantId, projectId } = params;
|
|
59
58
|
const { id, name, description, contextConfig, models, stopWhen, prompt, statusUpdates } =
|
|
60
59
|
metadata;
|
|
61
60
|
const { PUBLIC_INKEEP_AGENTS_RUN_API_URL } = useRuntimeConfig();
|
|
@@ -39,7 +39,9 @@ export function ModelSelector({
|
|
|
39
39
|
canClear = true,
|
|
40
40
|
}: ModelSelectorProps) {
|
|
41
41
|
const [open, setOpen] = useState(false);
|
|
42
|
-
const [showCustomInput, setShowCustomInput] = useState<
|
|
42
|
+
const [showCustomInput, setShowCustomInput] = useState<
|
|
43
|
+
'openrouter' | 'gateway' | 'nim' | 'custom' | null
|
|
44
|
+
>(null);
|
|
43
45
|
const [customModelInput, setCustomModelInput] = useState('');
|
|
44
46
|
|
|
45
47
|
const selectedModel = useMemo(() => {
|
|
@@ -57,6 +59,14 @@ export function ModelSelector({
|
|
|
57
59
|
const modelName = value.replace('gateway/', '');
|
|
58
60
|
return { value, label: modelName, prefix: 'gateway/' };
|
|
59
61
|
}
|
|
62
|
+
if (value.startsWith('nim/')) {
|
|
63
|
+
const modelName = value.replace('nim/', '');
|
|
64
|
+
return { value, label: modelName, prefix: 'nim/' };
|
|
65
|
+
}
|
|
66
|
+
if (value.startsWith('custom/')) {
|
|
67
|
+
const modelName = value.replace('custom/', '');
|
|
68
|
+
return { value, label: modelName, prefix: 'custom/' };
|
|
69
|
+
}
|
|
60
70
|
return { value, label: `${value} (custom)` };
|
|
61
71
|
}
|
|
62
72
|
return null;
|
|
@@ -153,7 +163,9 @@ export function ModelSelector({
|
|
|
153
163
|
if (
|
|
154
164
|
modelValue.includes('/') &&
|
|
155
165
|
!modelValue.startsWith('openrouter/') &&
|
|
156
|
-
!modelValue.startsWith('gateway/')
|
|
166
|
+
!modelValue.startsWith('gateway/') &&
|
|
167
|
+
!modelValue.startsWith('nim/') &&
|
|
168
|
+
!modelValue.startsWith('custom/')
|
|
157
169
|
) {
|
|
158
170
|
// Could be openrouter format, let user decide or add logic here
|
|
159
171
|
}
|
|
@@ -175,6 +187,20 @@ export function ModelSelector({
|
|
|
175
187
|
);
|
|
176
188
|
})()}
|
|
177
189
|
</CommandEmpty>
|
|
190
|
+
{/* Custom OpenAI-compatible */}
|
|
191
|
+
<CommandGroup heading="Custom OpenAI-compatible">
|
|
192
|
+
<CommandItem
|
|
193
|
+
className="flex items-center justify-between cursor-pointer text-foreground"
|
|
194
|
+
value="__custom__"
|
|
195
|
+
onSelect={() => {
|
|
196
|
+
setShowCustomInput('custom');
|
|
197
|
+
setOpen(false);
|
|
198
|
+
setCustomModelInput('');
|
|
199
|
+
}}
|
|
200
|
+
>
|
|
201
|
+
Custom OpenAI-compatible ...
|
|
202
|
+
</CommandItem>
|
|
203
|
+
</CommandGroup>
|
|
178
204
|
{/* LLM Gateway options */}
|
|
179
205
|
<CommandGroup heading="LLM Gateway">
|
|
180
206
|
<CommandItem
|
|
@@ -199,6 +225,17 @@ export function ModelSelector({
|
|
|
199
225
|
>
|
|
200
226
|
Vercel AI Gateway ...
|
|
201
227
|
</CommandItem>
|
|
228
|
+
<CommandItem
|
|
229
|
+
className="flex items-center justify-between cursor-pointer text-foreground"
|
|
230
|
+
value="__nim__"
|
|
231
|
+
onSelect={() => {
|
|
232
|
+
setShowCustomInput('nim');
|
|
233
|
+
setOpen(false);
|
|
234
|
+
setCustomModelInput('');
|
|
235
|
+
}}
|
|
236
|
+
>
|
|
237
|
+
NVIDIA NIM ...
|
|
238
|
+
</CommandItem>
|
|
202
239
|
</CommandGroup>
|
|
203
240
|
{/* Predefined models */}
|
|
204
241
|
{Object.entries(modelOptions).map(([provider, models]) => (
|
|
@@ -236,12 +273,20 @@ export function ModelSelector({
|
|
|
236
273
|
<div className="text-sm font-medium">
|
|
237
274
|
{showCustomInput === 'openrouter'
|
|
238
275
|
? 'OpenRouter Model ID'
|
|
239
|
-
:
|
|
276
|
+
: showCustomInput === 'gateway'
|
|
277
|
+
? 'Vercel AI Gateway Model ID'
|
|
278
|
+
: showCustomInput === 'nim'
|
|
279
|
+
? 'NVIDIA NIM Model ID'
|
|
280
|
+
: 'Custom Model ID'}
|
|
240
281
|
</div>
|
|
241
282
|
<div className="text-xs text-muted-foreground">
|
|
242
283
|
{showCustomInput === 'openrouter'
|
|
243
284
|
? 'Examples: anthropic/claude-3-5-sonnet, meta-llama/llama-3.1-405b-instruct'
|
|
244
|
-
:
|
|
285
|
+
: showCustomInput === 'gateway'
|
|
286
|
+
? 'Examples: openai/gpt-4o, anthropic/claude-3-5-sonnet'
|
|
287
|
+
: showCustomInput === 'nim'
|
|
288
|
+
? 'Examples: nvidia/llama-3.3-nemotron-super-49b-v1.5, nvidia/nemotron-4-340b-instruct'
|
|
289
|
+
: 'Examples: my-custom-model, llama-3-custom, custom-finetuned'}
|
|
245
290
|
</div>
|
|
246
291
|
<div className="flex gap-2 items-center">
|
|
247
292
|
<input
|
|
@@ -249,14 +294,24 @@ export function ModelSelector({
|
|
|
249
294
|
placeholder={
|
|
250
295
|
showCustomInput === 'openrouter'
|
|
251
296
|
? 'anthropic/claude-3-5-sonnet'
|
|
252
|
-
: '
|
|
297
|
+
: showCustomInput === 'gateway'
|
|
298
|
+
? 'openai/gpt-4o'
|
|
299
|
+
: showCustomInput === 'nim'
|
|
300
|
+
? 'nvidia/llama-3.3-nemotron-super-49b-v1.5'
|
|
301
|
+
: 'my-custom-model'
|
|
253
302
|
}
|
|
254
303
|
value={customModelInput}
|
|
255
304
|
onChange={(e) => setCustomModelInput(e.target.value)}
|
|
256
305
|
onKeyDown={(e) => {
|
|
257
306
|
if (e.key === 'Enter' && customModelInput.trim()) {
|
|
258
307
|
const prefix =
|
|
259
|
-
showCustomInput === 'openrouter'
|
|
308
|
+
showCustomInput === 'openrouter'
|
|
309
|
+
? 'openrouter/'
|
|
310
|
+
: showCustomInput === 'gateway'
|
|
311
|
+
? 'gateway/'
|
|
312
|
+
: showCustomInput === 'nim'
|
|
313
|
+
? 'nim/'
|
|
314
|
+
: 'custom/';
|
|
260
315
|
onValueChange?.(`${prefix}${customModelInput.trim()}`);
|
|
261
316
|
setShowCustomInput(null);
|
|
262
317
|
setCustomModelInput('');
|
|
@@ -273,7 +328,13 @@ export function ModelSelector({
|
|
|
273
328
|
onClick={() => {
|
|
274
329
|
if (customModelInput.trim()) {
|
|
275
330
|
const prefix =
|
|
276
|
-
showCustomInput === 'openrouter'
|
|
331
|
+
showCustomInput === 'openrouter'
|
|
332
|
+
? 'openrouter/'
|
|
333
|
+
: showCustomInput === 'gateway'
|
|
334
|
+
? 'gateway/'
|
|
335
|
+
: showCustomInput === 'nim'
|
|
336
|
+
? 'nim/'
|
|
337
|
+
: 'custom/';
|
|
277
338
|
onValueChange?.(`${prefix}${customModelInput.trim()}`);
|
|
278
339
|
setShowCustomInput(null);
|
|
279
340
|
setCustomModelInput('');
|
|
@@ -17,11 +17,10 @@ export function DeleteAgentConfirmation({
|
|
|
17
17
|
agentName,
|
|
18
18
|
setIsOpen,
|
|
19
19
|
}: DeleteAgentConfirmationProps) {
|
|
20
|
-
const
|
|
21
|
-
const { tenantId, projectId } = params as {
|
|
20
|
+
const { tenantId, projectId } = useParams<{
|
|
22
21
|
tenantId: string;
|
|
23
22
|
projectId: string;
|
|
24
|
-
};
|
|
23
|
+
}>();
|
|
25
24
|
const [isSubmitting, setIsSubmitting] = useState(false);
|
|
26
25
|
|
|
27
26
|
const handleDelete = async () => {
|
|
@@ -19,7 +19,6 @@ import {
|
|
|
19
19
|
fieldsToJsonSchema,
|
|
20
20
|
findFieldById,
|
|
21
21
|
type JsonSchemaStateData,
|
|
22
|
-
jsonSchemaStore,
|
|
23
22
|
parseFieldsFromJson,
|
|
24
23
|
Types,
|
|
25
24
|
type TypeValues,
|
|
@@ -27,6 +26,7 @@ import {
|
|
|
27
26
|
useJsonSchemaStore,
|
|
28
27
|
} from '@/features/agent/state/json-schema';
|
|
29
28
|
import { cn } from '@/lib/utils';
|
|
29
|
+
import { useDidUpdate } from '@/hooks/use-did-update';
|
|
30
30
|
import { ArrayIcon, BooleanIcon, EnumIcon, NumberIcon, ObjectIcon, StringIcon } from '../../icons';
|
|
31
31
|
|
|
32
32
|
const INDENT_PX = 24;
|
|
@@ -235,18 +235,20 @@ export const JsonSchemaBuilder: FC<{ value: string; onChange: (newValue: string)
|
|
|
235
235
|
// biome-ignore lint/correctness/useExhaustiveDependencies: run only on mount
|
|
236
236
|
useEffect(() => {
|
|
237
237
|
setFields(parseFieldsFromJson(value));
|
|
238
|
-
return () => {
|
|
239
|
-
const root: FieldObject = {
|
|
240
|
-
id: '__root__',
|
|
241
|
-
type: 'object',
|
|
242
|
-
properties: jsonSchemaStore.getState().fields,
|
|
243
|
-
};
|
|
244
|
-
const schema = fieldsToJsonSchema(root);
|
|
245
|
-
const serialized = JSON.stringify(schema, null, 2);
|
|
246
|
-
onChange(serialized);
|
|
247
|
-
};
|
|
248
238
|
}, []);
|
|
249
239
|
|
|
240
|
+
// Calls only on update to avoid race condition with above useEffect
|
|
241
|
+
useDidUpdate(() => {
|
|
242
|
+
const root: FieldObject = {
|
|
243
|
+
id: '__root__',
|
|
244
|
+
type: 'object',
|
|
245
|
+
properties: fields,
|
|
246
|
+
};
|
|
247
|
+
const schema = fieldsToJsonSchema(root);
|
|
248
|
+
const serialized = JSON.stringify(schema, null, 2);
|
|
249
|
+
onChange(serialized);
|
|
250
|
+
}, [fields, onChange]);
|
|
251
|
+
|
|
250
252
|
return (
|
|
251
253
|
<>
|
|
252
254
|
<Table>
|
|
@@ -20,8 +20,7 @@ export function DeleteProjectConfirmation({
|
|
|
20
20
|
setIsOpen,
|
|
21
21
|
isOpen,
|
|
22
22
|
}: DeleteProjectConfirmationProps) {
|
|
23
|
-
const
|
|
24
|
-
const { tenantId } = params as { tenantId: string };
|
|
23
|
+
const { tenantId } = useParams<{ tenantId: string }>();
|
|
25
24
|
const [isSubmitting, setIsSubmitting] = useState(false);
|
|
26
25
|
|
|
27
26
|
const handleDelete = async () => {
|