@inkeep/agents-manage-ui 0.18.1 → 0.19.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-build-manifest.json +224 -224
- package/.next/standalone/agents-manage-ui/.next/app-path-routes-manifest.json +7 -7
- package/.next/standalone/agents-manage-ui/.next/build-manifest.json +5 -5
- package/.next/standalone/agents-manage-ui/.next/prerender-manifest.json +3 -3
- package/.next/standalone/agents-manage-ui/.next/react-loadable-manifest.json +2 -2
- package/.next/standalone/agents-manage-ui/.next/routes-manifest.json +28 -28
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/[agentId]/page.js +2 -0
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/{graphs/[graphId] → agents/[agentId]}/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/[agentId]/page_client-reference-manifest.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/new/page.js +2 -0
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/{graphs → agents}/new/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/new/page_client-reference-manifest.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/page.js +2 -0
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/page_client-reference-manifest.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/api-keys/page.js +3 -3
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/api-keys/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/new/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/new/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/new/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/new/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/new/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/new/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/page.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page_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_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_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 +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/page.js +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 +2 -2
- 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.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 +7 -7
- package/.next/standalone/agents-manage-ui/.next/server/chunks/2067.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/2083.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/3509.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/4087.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/server/chunks/4154.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/server/chunks/6641.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/{2219.js → 6836.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/7457.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/chunks/7504.js +184 -0
- package/.next/standalone/agents-manage-ui/.next/server/chunks/7711.js +5 -5
- package/.next/standalone/agents-manage-ui/.next/server/chunks/8498.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/8961.js +1 -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 +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/20874-08310a7ec3b20498.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/23624-24cf5c441db07bb8.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{34281.5977928acacdf41c.js → 34281.1bf5026a1cfe5341.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{37213-a3d5fa67db657652.js → 37213-4ddda8db7bed5851.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/49858-7df5d3e19fc00977.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/71558-452532a4a91f1f8c.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/7190-756a652b28a2506a.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/78225-048fec2920ee12a7.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/92775-d3dc9c35a7a9d12c.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/[agentId]/error-8ae206d1430882ab.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/{graphs/[graphId]/loading-2e73ab0d984262a3.js → agents/[agentId]/loading-721e10fd249e4b77.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/[agentId]/page-6698176eeabcc156.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/error-aa8e3feab2fca22e.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/loading-f63f184c7d568cae.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/new/page-1d103e4d651d7a06.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/page-84c3978faa593514.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/api-keys/page-046ce91f9f4b58d1.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page-79453364e7ee1e6e.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/loading-f63f184c7d568cae.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/new/page-79453364e7ee1e6e.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/{page-0e4e8d994b8c515b.js → page-8efa71d1665595b1.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/{page-567703a1de3eb0cb.js → page-25eac5b6eff6c429.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/loading-f63f184c7d568cae.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/new/{page-567703a1de3eb0cb.js → page-25eac5b6eff6c429.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/page-ea168ca8954c0f11.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/{page-425506e0e283e21c.js → page-73c6f90aee5d7131.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page-9af967edcbcc262c.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/page-f63f184c7d568cae.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page-39bb464377ffce09.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/{page-c01750f081055384.js → page-5e91f67243336c39.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/new/{layout-2e73ab0d984262a3.js → layout-721e10fd249e4b77.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/new/{page-ec8f69f612ee910a.js → page-9e93a22f4ce731fc.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/{page-465374bbcf614837.js → page-cd80af85c7c3f0d9.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/{page-3b35ec1ae9cfc841.js → page-e58d76ff092f7998.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/settings/{page-bbc69ed5bac228d6.js → page-e729f6c22e2efd93.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/ai-calls/{page-19d7430a79f63bd4.js → page-00cee6f3d629b552.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page-48512f59a08d0878.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/page-fbeca2b1ed7d223a.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/loading-f63f184c7d568cae.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/{page-243899de5c62b46e.js → page-99398afc3638246f.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/layout-af34e7ee2aaa93dd.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{webpack-bae1a6a598e24abf.js → webpack-f66da7226d8e2dc1.js} +1 -1
- package/.next/standalone/agents-manage-ui/package.json +2 -1
- package/.next/standalone/package.json +1 -0
- package/.next/standalone/packages/agents-core/package.json +3 -1
- package/README.md +2 -2
- package/package.json +5 -4
- package/src/app/[tenantId]/page.tsx +1 -1
- package/src/app/[tenantId]/projects/[projectId]/{graphs/[graphId] → agents/[agentId]}/error.tsx +3 -3
- package/src/app/[tenantId]/projects/[projectId]/{graphs/[graphId] → agents/[agentId]}/loading.tsx +1 -1
- package/src/app/[tenantId]/projects/[projectId]/{graphs/[graphId] → agents/[agentId]}/page.tsx +14 -14
- package/src/app/[tenantId]/projects/[projectId]/{graphs → agents}/error.tsx +1 -1
- package/src/app/[tenantId]/projects/[projectId]/{graphs → agents}/loading.tsx +3 -3
- package/src/app/[tenantId]/projects/[projectId]/{graphs → agents}/new/page.tsx +6 -6
- package/src/app/[tenantId]/projects/[projectId]/agents/page.tsx +50 -0
- package/src/app/[tenantId]/projects/[projectId]/api-keys/page.tsx +12 -12
- package/src/app/[tenantId]/projects/[projectId]/page.tsx +1 -1
- package/src/app/api/signoz/conversations/[conversationId]/route.ts +32 -32
- package/src/app/api/signoz/route.ts +1 -1
- package/src/app/layout.tsx +1 -1
- package/src/app/page.tsx +1 -1
- package/src/components/{graph/graph.tsx → agent/agent.tsx} +70 -70
- package/src/components/{graph/configuration/graph-types.tsx → agent/configuration/agent-types.tsx} +7 -7
- package/src/components/agent/configuration/model-options.tsx +74 -0
- package/src/components/{graph → agent}/configuration/node-types.tsx +12 -12
- package/src/components/{graph/error-display/graph-error-summary.tsx → agent/error-display/agent-error-summary.tsx} +21 -21
- package/src/components/{graph → agent}/error-display/error-indicator.tsx +2 -2
- package/src/components/{graph → agent}/node-library/node-library.tsx +1 -1
- package/src/components/{graph → agent}/nodes/external-agent-node.tsx +3 -3
- package/src/components/{graph → agent}/nodes/function-tool-node.tsx +2 -2
- package/src/components/{graph → agent}/nodes/mcp-node.tsx +2 -2
- package/src/components/{graph/nodes/agent-node.tsx → agent/nodes/sub-agent-node.tsx} +8 -8
- package/src/components/{graph → agent}/playground/chat-widget.tsx +8 -5
- package/src/components/{graph → agent}/playground/playground.tsx +3 -3
- package/src/components/{graph → agent}/sidepane/edges/edge-editor.tsx +2 -2
- package/src/components/{graph → agent}/sidepane/metadata/context-config.tsx +3 -3
- package/src/components/{graph → agent}/sidepane/metadata/metadata-editor.tsx +34 -34
- package/src/components/{graph → agent}/sidepane/nodes/external-agent-node-editor.tsx +4 -4
- package/src/components/{graph → agent}/sidepane/nodes/mcp-node-editor.tsx +4 -4
- package/src/components/{graph → agent}/sidepane/nodes/model-section.tsx +11 -11
- package/src/components/{graph → agent}/sidepane/nodes/model-selector.tsx +1 -1
- package/src/components/{graph/sidepane/nodes/agent-node-editor.tsx → agent/sidepane/nodes/sub-agent-node-editor.tsx} +9 -9
- package/src/components/{graph → agent}/sidepane/sidepane.tsx +10 -10
- package/src/components/{graph → agent}/toolbar/toolbar.tsx +5 -5
- package/src/components/{graphs/graph-item-menu.tsx → agents/agent-item-menu.tsx} +6 -6
- package/src/components/{graphs/graph-item.tsx → agents/agent-item.tsx} +7 -7
- package/src/components/agents/agents-list.tsx +20 -0
- package/src/components/{graphs/delete-graph-confirmation.tsx → agents/delete-agent-confirmation.tsx} +11 -11
- package/src/components/{graphs/new-graph-item.tsx → agents/new-agent-item.tsx} +4 -4
- package/src/components/api-keys/api-keys-table.tsx +4 -4
- package/src/components/api-keys/form/api-key-form.tsx +8 -8
- package/src/components/api-keys/form/form-configuration.tsx +1 -1
- package/src/components/api-keys/form/validation.ts +1 -1
- package/src/components/api-keys/new-api-key-dialog.tsx +7 -7
- package/src/components/form/prompt-editor.tsx +2 -2
- package/src/components/icons/empty-state/{graphs.tsx → agents.tsx} +2 -2
- package/src/components/projects/form/form-configuration.ts +1 -1
- package/src/components/projects/form/model-inheritance-info.tsx +1 -1
- package/src/components/projects/form/project-form.tsx +2 -2
- package/src/components/projects/form/project-models-section.tsx +2 -2
- package/src/components/projects/form/project-stopwhen-section.tsx +4 -4
- package/src/components/projects/new-project-dialog.tsx +1 -1
- package/src/components/sidebar-nav/sidebar-nav.tsx +2 -2
- package/src/components/traces/ai-calls-breakdown.tsx +36 -36
- package/src/components/traces/conversation-detail.tsx +3 -3
- package/src/components/traces/conversation-stats/conversation-list-item.tsx +3 -3
- package/src/components/traces/filters/{graph-filter.tsx → agent-filter.tsx} +18 -18
- package/src/components/traces/filters/span-filters.tsx +5 -5
- package/src/components/traces/timeline/render-panel-content.tsx +15 -23
- package/src/components/traces/timeline/span-attributes.tsx +1 -1
- package/src/components/traces/timeline/timeline-wrapper.tsx +1 -1
- package/src/components/traces/timeline/types.ts +3 -3
- package/src/components/traces/traces-overview.tsx +31 -31
- package/src/components/ui/inheritance-indicator.tsx +12 -13
- package/src/constants/page-descriptions.tsx +4 -4
- package/src/features/{graph → agent}/commands/commands.ts +18 -18
- package/src/features/{graph → agent}/domain/__tests__/roundtrip.test.ts +17 -17
- package/src/features/{graph → agent}/domain/__tests__/serialize.test.ts +29 -29
- package/src/features/agent/domain/agent-initializer-helpers.ts +61 -0
- package/src/features/{graph → agent}/domain/deserialize.ts +7 -7
- package/src/features/{graph → agent}/domain/index.ts +1 -1
- package/src/features/{graph → agent}/domain/serialize.ts +23 -23
- package/src/features/{graph/state/use-graph-store.ts → agent/state/use-agent-store.ts} +25 -25
- package/src/features/{graph/ui/use-graph-shortcuts.ts → agent/ui/use-agent-shortcuts.ts} +3 -3
- package/src/hooks/{use-graph-errors.ts → use-agent-errors.ts} +5 -5
- package/src/hooks/use-ai-calls-query-state.ts +5 -5
- package/src/hooks/use-auto-prefill-id-zustand.ts +1 -1
- package/src/hooks/use-node-editor.ts +3 -3
- package/src/hooks/use-side-pane.ts +2 -2
- package/src/hooks/use-traces.ts +6 -6
- package/src/lib/README.md +19 -19
- package/src/lib/actions/{graph-full.ts → agent-full.ts} +51 -51
- package/src/lib/api/agent-full-client.ts +109 -0
- package/src/lib/api/signoz-stats.ts +88 -88
- package/src/lib/events.ts +1 -1
- package/src/lib/index.ts +23 -23
- package/src/lib/services/save-agent.ts +14 -0
- package/src/lib/types/{graph-full.ts → agent-full.ts} +19 -19
- package/src/lib/utils/{graph-error-parser.ts → agent-error-parser.ts} +42 -43
- package/src/lib/utils/orphaned-tools-detector.ts +5 -5
- package/src/lib/utils/project-redirect.ts +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/[graphId]/page.js +0 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/[graphId]/page_client-reference-manifest.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/new/page.js +0 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/new/page_client-reference-manifest.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/page.js +0 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/page_client-reference-manifest.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/2539.js +0 -184
- package/.next/standalone/agents-manage-ui/.next/server/chunks/4045.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/6709.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/804.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/9147.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/23624-e46204ab16d88ea6.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/26133-a58a4ae4fea4e563.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/48130-d79da4489e6e5400.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/49858-4c276f889c13606c.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/57167-a86a3c94e5831a59.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/71558-d1be134327bfb796.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/92775-723c692effee6fcb.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/api-keys/page-0048d6b4b19cb869.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page-ae190df12aef66e0.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/loading-f262904f64bb3b83.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/new/page-ae190df12aef66e0.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/loading-f262904f64bb3b83.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/page-e1ecdf3a54ce7ea0.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page-f9d4b7f9c344be4d.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/page-f262904f64bb3b83.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page-5eae92411a9101e8.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/graphs/[graphId]/error-931affb0037bb07e.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/graphs/[graphId]/page-b28ea53e47e090d9.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/graphs/error-a95deb3a2467dd39.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/graphs/loading-f262904f64bb3b83.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/graphs/new/page-beef8d7a50586359.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/graphs/page-c55467557da2a19f.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page-7586936cc0f5f2da.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/page-fc23844ac69cc3e3.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/loading-f262904f64bb3b83.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/layout-3aa87b43e49ec0fe.js +0 -1
- package/src/app/[tenantId]/projects/[projectId]/graphs/page.tsx +0 -50
- package/src/components/graph/configuration/model-options.tsx +0 -68
- package/src/components/graphs/graph-list.tsx +0 -20
- package/src/features/graph/domain/graph-initializer-helpers.ts +0 -61
- package/src/lib/api/graph-full-client.ts +0 -112
- package/src/lib/services/save-graph.ts +0 -14
- /package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/{graphs → agents}/page.js.nft.json +0 -0
- /package/.next/standalone/agents-manage-ui/.next/static/{RDDnfeMsvfce5j5a7L5_h → r9-qxih7lU6hx6EFo0V8E}/_buildManifest.js +0 -0
- /package/.next/standalone/agents-manage-ui/.next/static/{RDDnfeMsvfce5j5a7L5_h → r9-qxih7lU6hx6EFo0V8E}/_ssgManifest.js +0 -0
- /package/src/components/{graph → agent}/configuration/edge-types.tsx +0 -0
- /package/src/components/{graph → agent}/edges/agent-to-agent-edge.tsx +0 -0
- /package/src/components/{graph → agent}/edges/default-edge.tsx +0 -0
- /package/src/components/{graph → agent}/edges/self-loop-edge.tsx +0 -0
- /package/src/components/{graph → agent}/markers/default-marker.tsx +0 -0
- /package/src/components/{graph → agent}/markers/selected-marker.tsx +0 -0
- /package/src/components/{graph → agent}/node-library/node-item.tsx +0 -0
- /package/src/components/{graph → agent}/nodes/base-node.tsx +0 -0
- /package/src/components/{graph → agent}/nodes/handle.tsx +0 -0
- /package/src/components/{graph → agent}/nodes/mcp-placeholder-node.tsx +0 -0
- /package/src/components/{graph → agent}/nodes/node-tab.tsx +0 -0
- /package/src/components/{graph → agent}/playground/custom-headers-dialog.tsx +0 -0
- /package/src/components/{graph → agent}/playground/ikp-message.tsx +0 -0
- /package/src/components/{graph → agent}/sidepane/collapsible-settings.tsx +0 -0
- /package/src/components/{graph → agent}/sidepane/heading.tsx +0 -0
- /package/src/components/{graph → agent}/sidepane/nodes/component-selector/component-dropdown.tsx +0 -0
- /package/src/components/{graph → agent}/sidepane/nodes/component-selector/component-header.tsx +0 -0
- /package/src/components/{graph → agent}/sidepane/nodes/component-selector/component-selector.tsx +0 -0
- /package/src/components/{graph → agent}/sidepane/nodes/component-selector/selected-components.tsx +0 -0
- /package/src/components/{graph → agent}/sidepane/nodes/credential-selector.tsx +0 -0
- /package/src/components/{graph → agent}/sidepane/nodes/empty-state.tsx +0 -0
- /package/src/components/{graph → agent}/sidepane/nodes/expandable-text-area.tsx +0 -0
- /package/src/components/{graph → agent}/sidepane/nodes/form-fields.tsx +0 -0
- /package/src/components/{graph → agent}/sidepane/nodes/function-tool-node-editor.tsx +0 -0
- /package/src/components/{graph → agent}/sidepane/nodes/mcp-selector/loading.tsx +0 -0
- /package/src/components/{graph → agent}/sidepane/nodes/mcp-selector/mcp-selector.tsx +0 -0
- /package/src/components/{graph → agent}/sidepane/nodes/mcp-selector/mcp-server-item.tsx +0 -0
- /package/src/components/{graph → agent}/sidepane/section.tsx +0 -0
- /package/src/features/{graph → agent}/commands/command-manager.ts +0 -0
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import type { Edge, Node } from '@xyflow/react';
|
|
2
|
-
import { EdgeType } from '@/components/
|
|
3
|
-
import type { AgentNodeData, MCPNodeData } from '@/components/
|
|
4
|
-
import { NodeType } from '@/components/
|
|
5
|
-
import {
|
|
2
|
+
import { EdgeType } from '@/components/agent/configuration/edge-types';
|
|
3
|
+
import type { AgentNodeData, MCPNodeData } from '@/components/agent/configuration/node-types';
|
|
4
|
+
import { NodeType } from '@/components/agent/configuration/node-types';
|
|
5
|
+
import { serializeAgentData } from '../serialize';
|
|
6
6
|
|
|
7
|
-
describe('
|
|
7
|
+
describe('serializeAgentData', () => {
|
|
8
8
|
describe('models object processing', () => {
|
|
9
9
|
it('should set models to undefined when models object has only empty values', () => {
|
|
10
10
|
const nodes: Node<AgentNodeData>[] = [
|
|
11
11
|
{
|
|
12
12
|
id: 'agent1',
|
|
13
|
-
type: NodeType.
|
|
13
|
+
type: NodeType.SubAgent,
|
|
14
14
|
position: { x: 0, y: 0 },
|
|
15
15
|
data: {
|
|
16
16
|
id: 'agent1',
|
|
@@ -26,7 +26,7 @@ describe('serializeGraphData', () => {
|
|
|
26
26
|
];
|
|
27
27
|
const edges: Edge[] = [];
|
|
28
28
|
|
|
29
|
-
const result =
|
|
29
|
+
const result = serializeAgentData(nodes, edges, undefined, {}, {}, {});
|
|
30
30
|
|
|
31
31
|
expect((result.subAgents.agent1 as any).models).toBeUndefined();
|
|
32
32
|
});
|
|
@@ -35,7 +35,7 @@ describe('serializeGraphData', () => {
|
|
|
35
35
|
const nodes: Node<AgentNodeData>[] = [
|
|
36
36
|
{
|
|
37
37
|
id: 'agent1',
|
|
38
|
-
type: NodeType.
|
|
38
|
+
type: NodeType.SubAgent,
|
|
39
39
|
position: { x: 0, y: 0 },
|
|
40
40
|
data: {
|
|
41
41
|
id: 'agent1',
|
|
@@ -51,7 +51,7 @@ describe('serializeGraphData', () => {
|
|
|
51
51
|
];
|
|
52
52
|
const edges: Edge[] = [];
|
|
53
53
|
|
|
54
|
-
const result =
|
|
54
|
+
const result = serializeAgentData(nodes, edges, undefined, {}, {}, {});
|
|
55
55
|
|
|
56
56
|
expect((result.subAgents.agent1 as any).models).toBeUndefined();
|
|
57
57
|
});
|
|
@@ -60,7 +60,7 @@ describe('serializeGraphData', () => {
|
|
|
60
60
|
const nodes: Node<AgentNodeData>[] = [
|
|
61
61
|
{
|
|
62
62
|
id: 'agent1',
|
|
63
|
-
type: NodeType.
|
|
63
|
+
type: NodeType.SubAgent,
|
|
64
64
|
position: { x: 0, y: 0 },
|
|
65
65
|
data: {
|
|
66
66
|
id: 'agent1',
|
|
@@ -76,7 +76,7 @@ describe('serializeGraphData', () => {
|
|
|
76
76
|
];
|
|
77
77
|
const edges: Edge[] = [];
|
|
78
78
|
|
|
79
|
-
const result =
|
|
79
|
+
const result = serializeAgentData(nodes, edges, undefined, {}, {}, {});
|
|
80
80
|
|
|
81
81
|
expect((result.subAgents.agent1 as any).models).toEqual({
|
|
82
82
|
base: { model: 'gpt-4' },
|
|
@@ -89,7 +89,7 @@ describe('serializeGraphData', () => {
|
|
|
89
89
|
const nodes: Node<AgentNodeData>[] = [
|
|
90
90
|
{
|
|
91
91
|
id: 'agent1',
|
|
92
|
-
type: NodeType.
|
|
92
|
+
type: NodeType.SubAgent,
|
|
93
93
|
position: { x: 0, y: 0 },
|
|
94
94
|
data: {
|
|
95
95
|
id: 'agent1',
|
|
@@ -105,7 +105,7 @@ describe('serializeGraphData', () => {
|
|
|
105
105
|
];
|
|
106
106
|
const edges: Edge[] = [];
|
|
107
107
|
|
|
108
|
-
const result =
|
|
108
|
+
const result = serializeAgentData(nodes, edges, undefined, {}, {}, {});
|
|
109
109
|
|
|
110
110
|
expect((result.subAgents.agent1 as any).models).toEqual({
|
|
111
111
|
base: undefined,
|
|
@@ -118,7 +118,7 @@ describe('serializeGraphData', () => {
|
|
|
118
118
|
const nodes: Node<AgentNodeData>[] = [
|
|
119
119
|
{
|
|
120
120
|
id: 'agent1',
|
|
121
|
-
type: NodeType.
|
|
121
|
+
type: NodeType.SubAgent,
|
|
122
122
|
position: { x: 0, y: 0 },
|
|
123
123
|
data: {
|
|
124
124
|
id: 'agent1',
|
|
@@ -134,7 +134,7 @@ describe('serializeGraphData', () => {
|
|
|
134
134
|
];
|
|
135
135
|
const edges: Edge[] = [];
|
|
136
136
|
|
|
137
|
-
const result =
|
|
137
|
+
const result = serializeAgentData(nodes, edges, undefined, {}, {}, {});
|
|
138
138
|
|
|
139
139
|
expect((result.subAgents.agent1 as any).models).toEqual({
|
|
140
140
|
base: undefined,
|
|
@@ -147,7 +147,7 @@ describe('serializeGraphData', () => {
|
|
|
147
147
|
const nodes: Node<AgentNodeData>[] = [
|
|
148
148
|
{
|
|
149
149
|
id: 'agent1',
|
|
150
|
-
type: NodeType.
|
|
150
|
+
type: NodeType.SubAgent,
|
|
151
151
|
position: { x: 0, y: 0 },
|
|
152
152
|
data: {
|
|
153
153
|
id: 'agent1',
|
|
@@ -163,7 +163,7 @@ describe('serializeGraphData', () => {
|
|
|
163
163
|
];
|
|
164
164
|
const edges: Edge[] = [];
|
|
165
165
|
|
|
166
|
-
const result =
|
|
166
|
+
const result = serializeAgentData(nodes, edges, undefined, {}, {}, {});
|
|
167
167
|
|
|
168
168
|
expect((result.subAgents.agent1 as any).models).toEqual({
|
|
169
169
|
base: { model: 'gpt-4' },
|
|
@@ -176,7 +176,7 @@ describe('serializeGraphData', () => {
|
|
|
176
176
|
const nodes: Node<AgentNodeData>[] = [
|
|
177
177
|
{
|
|
178
178
|
id: 'agent1',
|
|
179
|
-
type: NodeType.
|
|
179
|
+
type: NodeType.SubAgent,
|
|
180
180
|
position: { x: 0, y: 0 },
|
|
181
181
|
data: {
|
|
182
182
|
id: 'agent1',
|
|
@@ -188,7 +188,7 @@ describe('serializeGraphData', () => {
|
|
|
188
188
|
];
|
|
189
189
|
const edges: Edge[] = [];
|
|
190
190
|
|
|
191
|
-
const result =
|
|
191
|
+
const result = serializeAgentData(nodes, edges, undefined, {}, {}, {});
|
|
192
192
|
|
|
193
193
|
expect((result.subAgents.agent1 as any).models).toBeUndefined();
|
|
194
194
|
});
|
|
@@ -199,7 +199,7 @@ describe('serializeGraphData', () => {
|
|
|
199
199
|
const nodes: Node[] = [
|
|
200
200
|
{
|
|
201
201
|
id: 'agent1',
|
|
202
|
-
type: NodeType.
|
|
202
|
+
type: NodeType.SubAgent,
|
|
203
203
|
position: { x: 0, y: 0 },
|
|
204
204
|
data: {
|
|
205
205
|
id: 'agent1',
|
|
@@ -228,7 +228,7 @@ describe('serializeGraphData', () => {
|
|
|
228
228
|
},
|
|
229
229
|
];
|
|
230
230
|
|
|
231
|
-
const result =
|
|
231
|
+
const result = serializeAgentData(nodes, edges, undefined, {}, {}, {});
|
|
232
232
|
|
|
233
233
|
expect((result.subAgents.agent1 as any).canUse).toBeDefined();
|
|
234
234
|
expect((result.subAgents.agent1 as any).canUse).toHaveLength(1);
|
|
@@ -243,7 +243,7 @@ describe('serializeGraphData', () => {
|
|
|
243
243
|
const nodes: Node[] = [
|
|
244
244
|
{
|
|
245
245
|
id: 'agent1',
|
|
246
|
-
type: NodeType.
|
|
246
|
+
type: NodeType.SubAgent,
|
|
247
247
|
position: { x: 0, y: 0 },
|
|
248
248
|
data: {
|
|
249
249
|
id: 'agent1',
|
|
@@ -273,7 +273,7 @@ describe('serializeGraphData', () => {
|
|
|
273
273
|
},
|
|
274
274
|
];
|
|
275
275
|
|
|
276
|
-
const result =
|
|
276
|
+
const result = serializeAgentData(nodes, edges, undefined, {}, {}, {});
|
|
277
277
|
|
|
278
278
|
// When tempSelectedTools is null, all tools should be selected (toolSelection: null)
|
|
279
279
|
expect((result.subAgents.agent1 as any).canUse).toBeDefined();
|
|
@@ -289,7 +289,7 @@ describe('serializeGraphData', () => {
|
|
|
289
289
|
const nodes: Node[] = [
|
|
290
290
|
{
|
|
291
291
|
id: 'agent1',
|
|
292
|
-
type: NodeType.
|
|
292
|
+
type: NodeType.SubAgent,
|
|
293
293
|
position: { x: 0, y: 0 },
|
|
294
294
|
data: {
|
|
295
295
|
id: 'agent1',
|
|
@@ -318,7 +318,7 @@ describe('serializeGraphData', () => {
|
|
|
318
318
|
},
|
|
319
319
|
];
|
|
320
320
|
|
|
321
|
-
const result =
|
|
321
|
+
const result = serializeAgentData(nodes, edges, undefined, {}, {}, {});
|
|
322
322
|
|
|
323
323
|
expect((result.subAgents.agent1 as any).canUse).toBeDefined();
|
|
324
324
|
expect((result.subAgents.agent1 as any).canUse).toHaveLength(1);
|
|
@@ -333,7 +333,7 @@ describe('serializeGraphData', () => {
|
|
|
333
333
|
const nodes: Node[] = [
|
|
334
334
|
{
|
|
335
335
|
id: 'agent1',
|
|
336
|
-
type: NodeType.
|
|
336
|
+
type: NodeType.SubAgent,
|
|
337
337
|
position: { x: 0, y: 0 },
|
|
338
338
|
data: {
|
|
339
339
|
id: 'agent1',
|
|
@@ -362,7 +362,7 @@ describe('serializeGraphData', () => {
|
|
|
362
362
|
},
|
|
363
363
|
];
|
|
364
364
|
|
|
365
|
-
const result =
|
|
365
|
+
const result = serializeAgentData(nodes, edges, undefined, {}, {}, {});
|
|
366
366
|
|
|
367
367
|
// selectedTools should not be created if tempSelectedTools is undefined
|
|
368
368
|
expect((result.subAgents.agent1 as any).selectedTools).toBeUndefined();
|
|
@@ -372,7 +372,7 @@ describe('serializeGraphData', () => {
|
|
|
372
372
|
const nodes: Node[] = [
|
|
373
373
|
{
|
|
374
374
|
id: 'agent1',
|
|
375
|
-
type: NodeType.
|
|
375
|
+
type: NodeType.SubAgent,
|
|
376
376
|
position: { x: 0, y: 0 },
|
|
377
377
|
data: {
|
|
378
378
|
id: 'agent1',
|
|
@@ -403,7 +403,7 @@ describe('serializeGraphData', () => {
|
|
|
403
403
|
},
|
|
404
404
|
];
|
|
405
405
|
|
|
406
|
-
const result =
|
|
406
|
+
const result = serializeAgentData(nodes, edges, undefined, {}, {}, {});
|
|
407
407
|
|
|
408
408
|
// When tempSelectedTools is undefined and there's an edge to MCP tool,
|
|
409
409
|
// the toolSelection will be null (all tools selected by default)
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { ContextConfig, AgentMetadata } from '@/components/agent/configuration/agent-types';
|
|
2
|
+
import type { FullAgentDefinition } from '@/lib/types/agent-full';
|
|
3
|
+
import { formatJsonField } from '@/lib/utils';
|
|
4
|
+
|
|
5
|
+
export type ExtendedFullAgentDefinition = FullAgentDefinition & {
|
|
6
|
+
contextConfig?: Partial<Pick<ContextConfig, 'id'>> & {
|
|
7
|
+
contextVariables?: Record<string, any>;
|
|
8
|
+
headersSchema?: Record<string, any>;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Extracts and formats agent metadata from a FullAgentDefinition object.
|
|
14
|
+
* This helper function handles the complex transformation of the agent data
|
|
15
|
+
* into the format expected by the AgentMetadata type, including proper
|
|
16
|
+
* JSON field formatting for form compatibility.
|
|
17
|
+
*/
|
|
18
|
+
export function extractAgentMetadata(
|
|
19
|
+
agent: ExtendedFullAgentDefinition | null | undefined
|
|
20
|
+
): AgentMetadata {
|
|
21
|
+
return {
|
|
22
|
+
id: agent?.id,
|
|
23
|
+
name: agent?.name ?? '',
|
|
24
|
+
description: agent?.description ?? '',
|
|
25
|
+
agentPrompt: agent?.agentPrompt,
|
|
26
|
+
models: agent?.models
|
|
27
|
+
? {
|
|
28
|
+
base: agent.models.base
|
|
29
|
+
? {
|
|
30
|
+
model: agent.models.base.model,
|
|
31
|
+
providerOptions: formatJsonField(agent.models.base.providerOptions),
|
|
32
|
+
}
|
|
33
|
+
: undefined,
|
|
34
|
+
structuredOutput: agent.models.structuredOutput
|
|
35
|
+
? {
|
|
36
|
+
model: agent.models.structuredOutput.model,
|
|
37
|
+
providerOptions: formatJsonField(agent.models.structuredOutput.providerOptions),
|
|
38
|
+
}
|
|
39
|
+
: undefined,
|
|
40
|
+
summarizer: agent.models.summarizer
|
|
41
|
+
? {
|
|
42
|
+
model: agent.models.summarizer.model,
|
|
43
|
+
providerOptions: formatJsonField(agent.models.summarizer.providerOptions),
|
|
44
|
+
}
|
|
45
|
+
: undefined,
|
|
46
|
+
}
|
|
47
|
+
: undefined,
|
|
48
|
+
stopWhen: agent?.stopWhen,
|
|
49
|
+
statusUpdates: agent?.statusUpdates
|
|
50
|
+
? {
|
|
51
|
+
...agent.statusUpdates,
|
|
52
|
+
statusComponents: formatJsonField(agent.statusUpdates.statusComponents) || '',
|
|
53
|
+
}
|
|
54
|
+
: undefined,
|
|
55
|
+
contextConfig: {
|
|
56
|
+
id: agent?.contextConfig?.id ?? '',
|
|
57
|
+
contextVariables: formatJsonField(agent?.contextConfig?.contextVariables) || '',
|
|
58
|
+
headersSchema: formatJsonField(agent?.contextConfig?.headersSchema) || '',
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Edge, Node } from '@xyflow/react';
|
|
2
2
|
import * as dagre from 'dagre';
|
|
3
3
|
import { nanoid } from 'nanoid';
|
|
4
|
-
import { EdgeType } from '@/components/
|
|
4
|
+
import { EdgeType } from '@/components/agent/configuration/edge-types';
|
|
5
5
|
import {
|
|
6
6
|
agentNodeSourceHandleId,
|
|
7
7
|
agentNodeTargetHandleId,
|
|
@@ -9,12 +9,12 @@ import {
|
|
|
9
9
|
functionToolNodeHandleId,
|
|
10
10
|
mcpNodeHandleId,
|
|
11
11
|
NodeType,
|
|
12
|
-
} from '@/components/
|
|
12
|
+
} from '@/components/agent/configuration/node-types';
|
|
13
13
|
import type {
|
|
14
14
|
ExternalAgentDefinition,
|
|
15
|
-
|
|
15
|
+
FullAgentDefinition,
|
|
16
16
|
InternalAgentDefinition,
|
|
17
|
-
} from '@/lib/types/
|
|
17
|
+
} from '@/lib/types/agent-full';
|
|
18
18
|
import { formatJsonField } from '@/lib/utils';
|
|
19
19
|
|
|
20
20
|
interface TransformResult {
|
|
@@ -31,7 +31,7 @@ function calculateNodeHeight(node: Node): number {
|
|
|
31
31
|
let height = MIN_NODE_HEIGHT;
|
|
32
32
|
|
|
33
33
|
// Agent and External Agent nodes have dynamic height
|
|
34
|
-
if (node.type === NodeType.
|
|
34
|
+
if (node.type === NodeType.SubAgent || node.type === NodeType.ExternalAgent) {
|
|
35
35
|
const data = node.data as any;
|
|
36
36
|
|
|
37
37
|
// Add height for description if it exists
|
|
@@ -101,7 +101,7 @@ export function applyDagreLayout(nodes: Node[], edges: Edge[]): Node[] {
|
|
|
101
101
|
});
|
|
102
102
|
}
|
|
103
103
|
|
|
104
|
-
export function
|
|
104
|
+
export function deserializeAgentData(data: FullAgentDefinition): TransformResult {
|
|
105
105
|
const nodes: Node[] = [];
|
|
106
106
|
const edges: Edge[] = [];
|
|
107
107
|
|
|
@@ -111,7 +111,7 @@ export function deserializeGraphData(data: FullGraphDefinition): TransformResult
|
|
|
111
111
|
const isDefault = subAgentId === data.defaultSubAgentId;
|
|
112
112
|
const isExternal = agent.type === 'external';
|
|
113
113
|
|
|
114
|
-
const nodeType = isExternal ? NodeType.ExternalAgent : NodeType.
|
|
114
|
+
const nodeType = isExternal ? NodeType.ExternalAgent : NodeType.SubAgent;
|
|
115
115
|
const agentNodeData = isExternal
|
|
116
116
|
? {
|
|
117
117
|
id: agent.id,
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import type { Edge, Node } from '@xyflow/react';
|
|
2
2
|
import { nanoid } from 'nanoid';
|
|
3
|
-
import type {
|
|
4
|
-
import {
|
|
5
|
-
import type {
|
|
6
|
-
import {
|
|
7
|
-
import
|
|
3
|
+
import type { AgentToolConfigLookup } from '@/components/agent/agent';
|
|
4
|
+
import type { AgentMetadata } from '@/components/agent/configuration/agent-types';
|
|
5
|
+
import type { A2AEdgeData } from '@/components/agent/configuration/edge-types';
|
|
6
|
+
import { EdgeType } from '@/components/agent/configuration/edge-types';
|
|
7
|
+
import { NodeType } from '@/components/agent/configuration/node-types';
|
|
8
8
|
import type { ArtifactComponent } from '@/lib/api/artifact-components';
|
|
9
9
|
import type { DataComponent } from '@/lib/api/data-components';
|
|
10
|
-
import type {
|
|
10
|
+
import type { FullAgentDefinition, InternalAgentDefinition } from '@/lib/types/agent-full';
|
|
11
11
|
|
|
12
12
|
// Use the exported InternalAgentDefinition from core
|
|
13
13
|
type InternalAgent = InternalAgentDefinition;
|
|
@@ -26,19 +26,19 @@ export type ExtendedAgent =
|
|
|
26
26
|
| (InternalAgent & {
|
|
27
27
|
dataComponents: string[];
|
|
28
28
|
artifactComponents: string[];
|
|
29
|
-
models?:
|
|
29
|
+
models?: AgentMetadata['models'];
|
|
30
30
|
type: 'internal';
|
|
31
31
|
})
|
|
32
32
|
| ExternalAgent;
|
|
33
33
|
|
|
34
34
|
// Type guard to check if an agent is an internal agent
|
|
35
35
|
function isInternalAgent(
|
|
36
|
-
agent: ExtendedAgent |
|
|
36
|
+
agent: ExtendedAgent | FullAgentDefinition['subAgents'][string]
|
|
37
37
|
): agent is InternalAgent {
|
|
38
38
|
return agent.type === 'internal' && 'canUse' in agent;
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
// Note: Tools are now project-scoped, not part of
|
|
41
|
+
// Note: Tools are now project-scoped, not part of FullAgentDefinition
|
|
42
42
|
|
|
43
43
|
/**
|
|
44
44
|
* Safely parse a JSON string, returning undefined if parsing fails or input is falsy
|
|
@@ -53,7 +53,7 @@ function safeJsonParse(jsonString: string | undefined | null): any {
|
|
|
53
53
|
return undefined;
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
|
-
function processModels(modelsData:
|
|
56
|
+
function processModels(modelsData: AgentMetadata['models']): AgentMetadata['models'] | undefined {
|
|
57
57
|
if (modelsData && typeof modelsData === 'object') {
|
|
58
58
|
const hasNonEmptyValue = Object.values(modelsData).some(
|
|
59
59
|
(value) => value !== null && value !== undefined && String(value).trim() !== ''
|
|
@@ -87,24 +87,24 @@ function processModels(modelsData: GraphMetadata['models']): GraphMetadata['mode
|
|
|
87
87
|
/**
|
|
88
88
|
* Transforms React Flow nodes and edges back into the API data structure
|
|
89
89
|
*/
|
|
90
|
-
export function
|
|
90
|
+
export function serializeAgentData(
|
|
91
91
|
nodes: Node[],
|
|
92
92
|
edges: Edge[],
|
|
93
|
-
metadata?:
|
|
93
|
+
metadata?: AgentMetadata,
|
|
94
94
|
dataComponentLookup?: Record<string, DataComponent>,
|
|
95
95
|
artifactComponentLookup?: Record<string, ArtifactComponent>,
|
|
96
96
|
agentToolConfigLookup?: AgentToolConfigLookup
|
|
97
|
-
):
|
|
97
|
+
): FullAgentDefinition {
|
|
98
98
|
const subAgents: Record<string, ExtendedAgent> = {};
|
|
99
99
|
const functionTools: Record<string, any> = {};
|
|
100
100
|
const functions: Record<string, any> = {};
|
|
101
|
-
// Note: Tools are now project-scoped and not included in
|
|
101
|
+
// Note: Tools are now project-scoped and not included in agent serialization
|
|
102
102
|
const usedDataComponents = new Set<string>();
|
|
103
103
|
const usedArtifactComponents = new Set<string>();
|
|
104
104
|
let defaultSubAgentId = '';
|
|
105
105
|
|
|
106
106
|
for (const node of nodes) {
|
|
107
|
-
if (node.type === NodeType.
|
|
107
|
+
if (node.type === NodeType.SubAgent) {
|
|
108
108
|
const subAgentId = (node.data.id as string) || node.id;
|
|
109
109
|
const subAgentDataComponents = (node.data.dataComponents as string[]) || [];
|
|
110
110
|
const subAgentArtifactComponents = (node.data.artifactComponents as string[]) || [];
|
|
@@ -116,7 +116,7 @@ export function serializeGraphData(
|
|
|
116
116
|
usedArtifactComponents.add(componentId);
|
|
117
117
|
});
|
|
118
118
|
// Process models - only include if it has non-empty, non-whitespace values
|
|
119
|
-
const modelsData = node.data.models as
|
|
119
|
+
const modelsData = node.data.models as AgentMetadata['models'] | undefined;
|
|
120
120
|
const processedModels = processModels(modelsData);
|
|
121
121
|
|
|
122
122
|
const stopWhen = (node.data as any).stopWhen;
|
|
@@ -383,20 +383,20 @@ export function serializeGraphData(
|
|
|
383
383
|
});
|
|
384
384
|
}
|
|
385
385
|
|
|
386
|
-
const result:
|
|
386
|
+
const result: FullAgentDefinition = {
|
|
387
387
|
id: metadata?.id || nanoid(),
|
|
388
|
-
name: metadata?.name || 'Untitled
|
|
388
|
+
name: metadata?.name || 'Untitled Agent',
|
|
389
389
|
description: metadata?.description || undefined,
|
|
390
390
|
defaultSubAgentId,
|
|
391
391
|
subAgents: subAgents,
|
|
392
392
|
...(Object.keys(functionTools).length > 0 && { functionTools }),
|
|
393
393
|
...(Object.keys(functions).length > 0 && { functions }),
|
|
394
|
-
// Note: Tools are now project-scoped and not included in
|
|
394
|
+
// Note: Tools are now project-scoped and not included in FullAgentDefinition
|
|
395
395
|
// ...(Object.keys(dataComponents).length > 0 && { dataComponents }),
|
|
396
396
|
// ...(Object.keys(artifactComponents).length > 0 && { artifactComponents }),
|
|
397
397
|
};
|
|
398
398
|
|
|
399
|
-
// Add new
|
|
399
|
+
// Add new agent-level fields
|
|
400
400
|
if (metadata?.models) {
|
|
401
401
|
(result as any).models = {
|
|
402
402
|
base: metadata.models.base
|
|
@@ -424,8 +424,8 @@ export function serializeGraphData(
|
|
|
424
424
|
(result as any).stopWhen = metadata.stopWhen;
|
|
425
425
|
}
|
|
426
426
|
|
|
427
|
-
if (metadata?.
|
|
428
|
-
(result as any).
|
|
427
|
+
if (metadata?.agentPrompt) {
|
|
428
|
+
(result as any).agentPrompt = metadata.agentPrompt;
|
|
429
429
|
}
|
|
430
430
|
|
|
431
431
|
if (metadata?.statusUpdates) {
|
|
@@ -459,7 +459,7 @@ interface StructuredValidationError {
|
|
|
459
459
|
}
|
|
460
460
|
|
|
461
461
|
export function validateSerializedData(
|
|
462
|
-
data:
|
|
462
|
+
data: FullAgentDefinition,
|
|
463
463
|
functionToolNodeMap?: Map<string, string>
|
|
464
464
|
): StructuredValidationError[] {
|
|
465
465
|
const errors: StructuredValidationError[] = [];
|
|
@@ -3,20 +3,20 @@ import { addEdge, applyEdgeChanges, applyNodeChanges } from '@xyflow/react';
|
|
|
3
3
|
import { create } from 'zustand';
|
|
4
4
|
import { devtools } from 'zustand/middleware';
|
|
5
5
|
import { useShallow } from 'zustand/react/shallow';
|
|
6
|
-
import type {
|
|
7
|
-
import { mcpNodeHandleId, NodeType } from '@/components/
|
|
8
|
-
import type { AgentToolConfigLookup } from '@/components/
|
|
6
|
+
import type { AgentMetadata } from '@/components/agent/configuration/agent-types';
|
|
7
|
+
import { mcpNodeHandleId, NodeType } from '@/components/agent/configuration/node-types';
|
|
8
|
+
import type { AgentToolConfigLookup } from '@/components/agent/agent';
|
|
9
9
|
import type { ArtifactComponent } from '@/lib/api/artifact-components';
|
|
10
10
|
import type { DataComponent } from '@/lib/api/data-components';
|
|
11
11
|
import type { MCPTool } from '@/lib/types/tools';
|
|
12
|
-
import type {
|
|
12
|
+
import type { AgentErrorSummary } from '@/lib/utils/agent-error-parser';
|
|
13
13
|
|
|
14
14
|
type HistoryEntry = { nodes: Node[]; edges: Edge[] };
|
|
15
15
|
|
|
16
|
-
type
|
|
16
|
+
type AgentStateData = {
|
|
17
17
|
nodes: Node[];
|
|
18
18
|
edges: Edge[];
|
|
19
|
-
metadata:
|
|
19
|
+
metadata: AgentMetadata;
|
|
20
20
|
dataComponentLookup: Record<string, DataComponent>;
|
|
21
21
|
artifactComponentLookup: Record<string, ArtifactComponent>;
|
|
22
22
|
toolLookup: Record<string, MCPTool>;
|
|
@@ -24,15 +24,15 @@ type GraphStateData = {
|
|
|
24
24
|
dirty: boolean;
|
|
25
25
|
history: HistoryEntry[];
|
|
26
26
|
future: HistoryEntry[];
|
|
27
|
-
errors:
|
|
27
|
+
errors: AgentErrorSummary | null;
|
|
28
28
|
showErrors: boolean;
|
|
29
29
|
};
|
|
30
30
|
|
|
31
|
-
type
|
|
31
|
+
type AgentActions = {
|
|
32
32
|
setInitial(
|
|
33
33
|
nodes: Node[],
|
|
34
34
|
edges: Edge[],
|
|
35
|
-
metadata:
|
|
35
|
+
metadata: AgentMetadata,
|
|
36
36
|
dataComponentLookup?: Record<string, DataComponent>,
|
|
37
37
|
artifactComponentLookup?: Record<string, ArtifactComponent>,
|
|
38
38
|
toolLookup?: Record<string, MCPTool>,
|
|
@@ -47,7 +47,7 @@ type GraphActions = {
|
|
|
47
47
|
onNodesChange(changes: NodeChange[]): void;
|
|
48
48
|
onEdgesChange(changes: EdgeChange[]): void;
|
|
49
49
|
onConnect(connection: Connection): void;
|
|
50
|
-
setMetadata<K extends keyof
|
|
50
|
+
setMetadata<K extends keyof AgentMetadata>(field: K, value: AgentMetadata[K]): void;
|
|
51
51
|
push(nodes: Node[], edges: Edge[]): void;
|
|
52
52
|
undo(): void;
|
|
53
53
|
redo(): void;
|
|
@@ -55,19 +55,19 @@ type GraphActions = {
|
|
|
55
55
|
markUnsaved(): void;
|
|
56
56
|
clearSelection(): void;
|
|
57
57
|
deleteSelected(): void;
|
|
58
|
-
setErrors(errors:
|
|
58
|
+
setErrors(errors: AgentErrorSummary | null): void;
|
|
59
59
|
clearErrors(): void;
|
|
60
60
|
setShowErrors(show: boolean): void;
|
|
61
61
|
hasErrors(): boolean;
|
|
62
|
-
getNodeErrors(nodeId: string):
|
|
63
|
-
getEdgeErrors(edgeId: string):
|
|
62
|
+
getNodeErrors(nodeId: string): AgentErrorSummary['allErrors'];
|
|
63
|
+
getEdgeErrors(edgeId: string): AgentErrorSummary['allErrors'];
|
|
64
64
|
};
|
|
65
65
|
|
|
66
|
-
type
|
|
67
|
-
actions:
|
|
66
|
+
type AgentState = AgentStateData & {
|
|
67
|
+
actions: AgentActions;
|
|
68
68
|
};
|
|
69
69
|
|
|
70
|
-
export const
|
|
70
|
+
export const agentStore = create<AgentState>()(
|
|
71
71
|
devtools((set, get) => ({
|
|
72
72
|
nodes: [],
|
|
73
73
|
edges: [],
|
|
@@ -81,7 +81,7 @@ export const graphStore = create<GraphState>()(
|
|
|
81
81
|
},
|
|
82
82
|
models: undefined,
|
|
83
83
|
stopWhen: undefined,
|
|
84
|
-
|
|
84
|
+
agentPrompt: undefined,
|
|
85
85
|
statusUpdates: undefined,
|
|
86
86
|
},
|
|
87
87
|
dataComponentLookup: {},
|
|
@@ -144,7 +144,7 @@ export const graphStore = create<GraphState>()(
|
|
|
144
144
|
}));
|
|
145
145
|
},
|
|
146
146
|
onNodesChange(changes) {
|
|
147
|
-
// Check if any change type would modify the
|
|
147
|
+
// Check if any change type would modify the agent (not just selection changes)
|
|
148
148
|
const hasModifyingChange = changes.some(
|
|
149
149
|
// Don't trigger `position` as modified change, since when the nodes are repositioned,
|
|
150
150
|
// they'll be re-laid out during the initial load anyway
|
|
@@ -158,7 +158,7 @@ export const graphStore = create<GraphState>()(
|
|
|
158
158
|
}));
|
|
159
159
|
},
|
|
160
160
|
onEdgesChange(changes) {
|
|
161
|
-
// Check if any change type would modify the
|
|
161
|
+
// Check if any change type would modify the agent (not just selection changes)
|
|
162
162
|
const hasModifyingChange = changes.some(
|
|
163
163
|
(change) => change.type === 'remove' || change.type === 'add' || change.type === 'replace'
|
|
164
164
|
);
|
|
@@ -284,15 +284,15 @@ export const graphStore = create<GraphState>()(
|
|
|
284
284
|
*
|
|
285
285
|
* @see https://tkdodo.eu/blog/working-with-zustand#separate-actions-from-state
|
|
286
286
|
*/
|
|
287
|
-
export const
|
|
287
|
+
export const useAgentActions = () => agentStore((state) => state.actions);
|
|
288
288
|
|
|
289
289
|
/**
|
|
290
|
-
* Select values from the
|
|
290
|
+
* Select values from the agent store (excluding actions).
|
|
291
291
|
*
|
|
292
|
-
* We explicitly use `
|
|
293
|
-
* which includes actions, to encourage using `
|
|
292
|
+
* We explicitly use `AgentStateData` instead of `AgentState`,
|
|
293
|
+
* which includes actions, to encourage using `useAgentActions`
|
|
294
294
|
* when accessing or calling actions.
|
|
295
295
|
*/
|
|
296
|
-
export function
|
|
297
|
-
return
|
|
296
|
+
export function useAgentStore<T>(selector: (state: AgentStateData) => T): T {
|
|
297
|
+
return agentStore(useShallow(selector));
|
|
298
298
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { useCallback, useEffect } from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { useAgentActions } from '@/features/agent/state/use-agent-store';
|
|
3
3
|
|
|
4
|
-
export function
|
|
5
|
-
const { undo, redo, deleteSelected } =
|
|
4
|
+
export function useAgentShortcuts() {
|
|
5
|
+
const { undo, redo, deleteSelected } = useAgentActions();
|
|
6
6
|
|
|
7
7
|
const onKeyDown = useCallback(
|
|
8
8
|
(e: KeyboardEvent) => {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Hook for accessing
|
|
2
|
+
* Hook for accessing agent error state and utilities
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
5
|
import { useCallback } from 'react';
|
|
6
|
-
import {
|
|
6
|
+
import { useAgentStore, useAgentActions } from '@/features/agent/state/use-agent-store';
|
|
7
7
|
|
|
8
8
|
export interface ErrorHelpers {
|
|
9
9
|
hasFieldError: (fieldName: string) => boolean;
|
|
@@ -11,13 +11,13 @@ export interface ErrorHelpers {
|
|
|
11
11
|
getFirstErrorField: () => string | undefined;
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
export function
|
|
15
|
-
const { errors, showErrors } =
|
|
14
|
+
export function useAgentErrors() {
|
|
15
|
+
const { errors, showErrors } = useAgentStore((state) => ({
|
|
16
16
|
errors: state.errors,
|
|
17
17
|
showErrors: state.showErrors,
|
|
18
18
|
}));
|
|
19
19
|
const { hasErrors, getNodeErrors, getEdgeErrors, setErrors, clearErrors, setShowErrors } =
|
|
20
|
-
|
|
20
|
+
useAgentActions();
|
|
21
21
|
|
|
22
22
|
const getNodeErrorCount = (nodeId: string): number => {
|
|
23
23
|
return getNodeErrors(nodeId).length;
|