@inkeep/agents-manage-ui 0.22.2 → 0.22.4
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 +148 -138
- package/.next/standalone/agents-manage-ui/.next/app-path-routes-manifest.json +6 -6
- package/.next/standalone/agents-manage-ui/.next/build-manifest.json +7 -7
- package/.next/standalone/agents-manage-ui/.next/prerender-manifest.json +3 -3
- package/.next/standalone/agents-manage-ui/.next/react-loadable-manifest.json +12 -12
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/page.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/[agentId]/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/[agentId]/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/[agentId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/new/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/new/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/new/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/api-keys/page.js +3 -3
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/api-keys/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page.js +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 +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 +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/page.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/page.js +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 +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 +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 +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/_not-found/page.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/_not-found.html +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/_not-found.rsc +9 -9
- package/.next/standalone/agents-manage-ui/.next/server/app/api/signoz/conversations/[conversationId]/route.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/api/signoz/conversations/[conversationId]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/api/signoz/route.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/api/signoz/route_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app-paths-manifest.json +6 -6
- package/.next/standalone/agents-manage-ui/.next/server/chunks/1670.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/175.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/207.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/server/chunks/2153.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/2496.js +184 -0
- package/.next/standalone/agents-manage-ui/.next/server/chunks/3205.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/6212.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/6494.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/server/chunks/7457.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/chunks/7641.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/server/chunks/8275.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/8982.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/edge-runtime-webpack.js +2 -0
- package/.next/standalone/agents-manage-ui/.next/server/middleware-build-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/middleware-manifest.json +28 -2
- 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/server/src/middleware.js +14 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/13162.51bfeffa888e765d.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/2100.0cc29b56dc39a91c.js +93 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{21078.db6a097e0944219f.js → 21078.a7d987aaf4965f33.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/26917.cd86a6e50adbcaf7.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/331.4a73e2854eaaf329.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/47065.981fe771a3ebbc89.js +55 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{48da6a00.4291466416c0a466.js → 48da6a00.6d972ca63d2c3e83.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/53779.3c6baf4968503ed4.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/54855.9990b0a1efe89008.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/71558-78422b7aaa85fd6c.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/7190-fd3c76249a4dd920.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/72963-d8f87b0ac91409cd.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/73974.646f6f06a0fb78fb.js +62 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/78225-259f39396b8ad0f3.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{89814.9c8e7e476bf1798d.js → 89814.587633678bc1263b.js} +2 -2
- package/.next/standalone/agents-manage-ui/.next/static/chunks/93453.066f92e65561f306.js +59 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/[agentId]/loading-e1f169e1ecbf908b.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/new/loading-e1f169e1ecbf908b.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/page-e003706d61e1eafe.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/api-keys/page-ef99f039107dd345.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/{page-6ab5b1c9b9c92d88.js → page-afdaf855aec8af05.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/new/{page-6ab5b1c9b9c92d88.js → page-afdaf855aec8af05.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/{page-8842ae2edb4c6e8a.js → page-bc4833a45b33a47d.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/{page-13c3de79eda66a55.js → page-ef06eff512088fdf.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/new/{page-13c3de79eda66a55.js → page-ef06eff512088fdf.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/{page-d77e2ac63d239436.js → page-78b8833482d1f877.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page-a2772a4b6f4e0249.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page-4864c8674778ee06.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page-b40d929333c3ce65.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/page-9d1905ada8938af6.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/new/layout-e1f169e1ecbf908b.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/new/{page-d7cae41b8240cc54.js → page-89cef449fcf9ef7d.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/page-069621ec5b0970e5.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/settings/{page-caa266f7bab90cae.js → page-1273d3fada0586f8.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/page-b23914a33d42bd42.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/page-c605715de4c89b47.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/layout-c0ecff8c2b6e0bcc.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/main-f6a588d23fbb5abc.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{webpack-eac97a6e1c9c9ceb.js → webpack-59bf208cf832faea.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/css/a813c86aed230074.css +1 -0
- package/.next/standalone/agents-manage-ui/package.json +1 -1
- package/.next/standalone/package.json +3 -2
- package/.next/standalone/packages/agents-core/package.json +1 -1
- package/package.json +4 -4
- package/src/app/[tenantId]/projects/[projectId]/agents/[agentId]/loading.tsx +2 -26
- package/src/app/[tenantId]/projects/[projectId]/agents/[agentId]/page.tsx +1 -1
- package/src/app/[tenantId]/projects/[projectId]/agents/new/loading.tsx +5 -0
- package/src/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page.tsx +0 -1
- package/src/app/api/signoz/conversations/[conversationId]/route.ts +6 -2
- package/src/app/api/signoz/route.ts +3 -5
- package/src/app/layout.tsx +5 -2
- package/src/app/utils/active-tools.ts +0 -2
- package/src/app/utils/format-date.ts +0 -2
- package/src/components/agent/agent-loading-skeleton.tsx +26 -0
- package/src/components/agent/agent.tsx +21 -39
- package/src/components/agent/configuration/model-options.tsx +11 -8
- package/src/components/agent/edges/self-loop-edge.tsx +0 -1
- package/src/components/agent/nodes/function-tool-node.tsx +0 -1
- package/src/components/agent/nodes/mcp-node.tsx +0 -1
- package/src/components/agent/playground/chat-widget.tsx +0 -1
- package/src/components/agent/playground/ikp-message.tsx +0 -3
- package/src/components/agent/sidepane/edges/edge-editor.tsx +0 -3
- package/src/components/agent/sidepane/editor-loading-skeleton.tsx +40 -0
- package/src/components/agent/sidepane/nodes/function-tool-node-editor.tsx +0 -1
- package/src/components/agent/sidepane/nodes/mcp-node-editor.tsx +0 -1
- package/src/components/agent/sidepane/nodes/sub-agent-node-editor.tsx +0 -2
- package/src/components/agent/sidepane/sidepane.tsx +14 -4
- package/src/components/artifact-components/form/validation.ts +0 -2
- package/src/components/credentials/views/edit-credential-form.tsx +0 -2
- package/src/components/credentials/views/generic-auth-form.tsx +0 -1
- package/src/components/data-components/form/validation.ts +0 -1
- package/src/components/form/prompt-editor.tsx +0 -4
- package/src/components/mcp-servers/mcp-tool-image.tsx +0 -1
- package/src/components/projects/form/project-form.tsx +0 -4
- package/src/components/projects/form/project-models-section.tsx +0 -2
- package/src/components/projects/form/project-stopwhen-section.tsx +0 -1
- package/src/components/traces/conversation-stats/conversation-list-item.tsx +0 -1
- package/src/components/traces/editors/json-editor-with-copy.tsx +0 -3
- package/src/components/traces/timeline/span-attributes.tsx +0 -1
- package/src/components/traces/timeline/timeline-wrapper.tsx +0 -2
- package/src/components/traces/traces-overview.tsx +0 -3
- package/src/components/ui/card-grid.tsx +0 -1
- package/src/components/ui/chart.tsx +0 -1
- package/src/components/ui/inheritance-indicator.tsx +0 -3
- package/src/components/ui/item-card-grid.tsx +0 -1
- package/src/features/agent/domain/deserialize.ts +0 -5
- package/src/features/agent/domain/serialize.ts +0 -8
- package/src/features/agent/state/use-agent-store.ts +32 -26
- package/src/hooks/use-chat-activities-polling.ts +0 -2
- package/src/hooks/use-node-editor.ts +0 -1
- package/src/hooks/use-oauth-login.ts +0 -1
- package/src/hooks/use-side-pane.ts +5 -2
- package/src/hooks/use-traces-query-state.ts +0 -1
- package/src/lib/api/api-config.ts +8 -3
- package/src/lib/api/artifact-components.ts +0 -4
- package/src/lib/api/projects.ts +0 -4
- package/src/lib/api/signoz-sql.ts +0 -1
- package/src/lib/api/signoz-stats.ts +0 -1
- package/src/lib/json-schema-validation.ts +0 -5
- package/src/lib/mcp-tools/nango-types.ts +0 -1
- package/src/lib/mcp-tools/nango.ts +6 -11
- package/src/lib/runtime-config/defaults.ts +2 -0
- package/src/lib/utils/agent-error-parser.ts +0 -2
- package/src/lib/utils/credentials-utils.ts +0 -1
- package/src/lib/utils/mcp-urls.ts +0 -2
- package/src/middleware.ts +18 -0
- package/.next/standalone/agents-manage-ui/.next/server/chunks/1343.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/7504.js +0 -184
- package/.next/standalone/agents-manage-ui/.next/server/chunks/7677.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/7922.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/890.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/13162.49a473711bfc9106.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/2100.6da5ac53af6a50b9.js +0 -93
- package/.next/standalone/agents-manage-ui/.next/static/chunks/26917.44af95c2220d2d7a.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/331.4164e5bbbf2109c5.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/47065.a2df61ae309c6b30.js +0 -55
- package/.next/standalone/agents-manage-ui/.next/static/chunks/48547-46b2aca219933ae4.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/53779.d1ecdd05fd8620ac.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/54855.ac5c4000030e49f3.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/71558-04af7fd4fa73f796.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/7190-5071ba626f194c39.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/73974.c41c4a27e5a42554.js +0 -62
- package/.next/standalone/agents-manage-ui/.next/static/chunks/78225-a58a44669962b471.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/93453.a61a7f6334280207.js +0 -59
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/[agentId]/loading-721e10fd249e4b77.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/page-2cb4090d3f1f6f9f.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/api-keys/page-87bfed6979b25fab.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page-60c63d1a901d5da5.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page-949e1d3292a1561d.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page-0a104a968bd1001f.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/page-9d9d3956f0fdef24.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/new/layout-721e10fd249e4b77.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/page-0b520408803bd6bf.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/page-759a15fe463a0f2f.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/page-f107388fc86ac832.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/layout-6a056d9cf53ed3f6.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/main-2ddea5276081c6f7.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/css/42e93c4387888412.css +0 -1
- /package/.next/standalone/agents-manage-ui/.next/static/{Xg7gVl1RyYHIkcm9ovJHc → D8h6pxVIqA0GQjbq_VQqo}/_buildManifest.js +0 -0
- /package/.next/standalone/agents-manage-ui/.next/static/{Xg7gVl1RyYHIkcm9ovJHc → D8h6pxVIqA0GQjbq_VQqo}/_ssgManifest.js +0 -0
|
@@ -164,7 +164,6 @@ export function deserializeAgentData(data: FullAgentDefinition): TransformResult
|
|
|
164
164
|
? { stepCountIs: internalAgent.stopWhen.stepCountIs }
|
|
165
165
|
: undefined,
|
|
166
166
|
type: agent.type,
|
|
167
|
-
// Convert canUse back to tools, selectedTools, headers for UI
|
|
168
167
|
tools: internalAgent.canUse ? internalAgent.canUse.map((item) => item.toolId) : [],
|
|
169
168
|
selectedTools: internalAgent.canUse
|
|
170
169
|
? internalAgent.canUse.reduce(
|
|
@@ -201,17 +200,14 @@ export function deserializeAgentData(data: FullAgentDefinition): TransformResult
|
|
|
201
200
|
nodes.push(agentNode);
|
|
202
201
|
}
|
|
203
202
|
|
|
204
|
-
// Create tool nodes from canUse items (using tools and functions lookups)
|
|
205
203
|
for (const subAgentId of subAgentIds) {
|
|
206
204
|
const agent = data.subAgents[subAgentId];
|
|
207
|
-
// Check if agent has canUse property (internal agents)
|
|
208
205
|
if ('canUse' in agent && agent.canUse && agent.canUse.length > 0) {
|
|
209
206
|
for (const canUseItem of agent.canUse) {
|
|
210
207
|
const toolId = canUseItem.toolId;
|
|
211
208
|
const toolNodeId = nanoid();
|
|
212
209
|
const relationshipId = canUseItem.agentToolRelationId;
|
|
213
210
|
|
|
214
|
-
// Get tool details from lookup
|
|
215
211
|
const tool = data.tools?.[toolId] || data.functionTools?.[toolId];
|
|
216
212
|
|
|
217
213
|
// Determine node type based on tool type
|
|
@@ -277,7 +273,6 @@ export function deserializeAgentData(data: FullAgentDefinition): TransformResult
|
|
|
277
273
|
for (const sourceSubAgentId of subAgentIds) {
|
|
278
274
|
const sourceAgent = data.subAgents[sourceSubAgentId];
|
|
279
275
|
|
|
280
|
-
// Check if agent has relationship properties (internal agents only)
|
|
281
276
|
if ('canTransferTo' in sourceAgent && sourceAgent.canTransferTo) {
|
|
282
277
|
for (const targetSubAgentId of sourceAgent.canTransferTo) {
|
|
283
278
|
if (data.subAgents[targetSubAgentId]) {
|
|
@@ -31,7 +31,6 @@ export type ExtendedAgent =
|
|
|
31
31
|
})
|
|
32
32
|
| ExternalAgent;
|
|
33
33
|
|
|
34
|
-
// Type guard to check if an agent is an internal agent
|
|
35
34
|
function isInternalAgent(
|
|
36
35
|
agent: ExtendedAgent | FullAgentDefinition['subAgents'][string]
|
|
37
36
|
): agent is InternalAgent {
|
|
@@ -121,7 +120,6 @@ export function serializeAgentData(
|
|
|
121
120
|
|
|
122
121
|
const stopWhen = (node.data as any).stopWhen;
|
|
123
122
|
|
|
124
|
-
// Build canUse array from edges connecting this agent to tool nodes (MCP and Function)
|
|
125
123
|
const canUse: Array<{
|
|
126
124
|
toolId: string;
|
|
127
125
|
toolSelection?: string[] | null;
|
|
@@ -143,11 +141,9 @@ export function serializeAgentData(
|
|
|
143
141
|
const toolId = (mcpNode.data as any).toolId;
|
|
144
142
|
|
|
145
143
|
if (toolId) {
|
|
146
|
-
// Get selected tools from MCP node's tempSelectedTools
|
|
147
144
|
const tempSelectedTools = (mcpNode.data as any).tempSelectedTools;
|
|
148
145
|
let toolSelection: string[] | null = null;
|
|
149
146
|
|
|
150
|
-
// Get the relationshipId from the MCP node first
|
|
151
147
|
const relationshipId = (mcpNode.data as any).relationshipId;
|
|
152
148
|
|
|
153
149
|
if (tempSelectedTools !== undefined) {
|
|
@@ -217,10 +213,8 @@ export function serializeAgentData(
|
|
|
217
213
|
const functionToolId = nodeData.functionToolId || nodeData.toolId || functionToolNode.id;
|
|
218
214
|
const relationshipId = nodeData.relationshipId;
|
|
219
215
|
|
|
220
|
-
// Get the function ID from the node data (should reference existing function)
|
|
221
216
|
const functionId = nodeData.functionId || functionToolId;
|
|
222
217
|
|
|
223
|
-
// Create function tool entry
|
|
224
218
|
const functionToolData = {
|
|
225
219
|
id: functionToolId,
|
|
226
220
|
name: nodeData.name || '',
|
|
@@ -493,7 +487,6 @@ export function validateSerializedData(
|
|
|
493
487
|
}
|
|
494
488
|
}
|
|
495
489
|
|
|
496
|
-
// Validate function tools for internal agents (check canUse array for function tools)
|
|
497
490
|
if (isInternalAgent(agent) && agent.canUse) {
|
|
498
491
|
for (const canUseItem of agent.canUse) {
|
|
499
492
|
const toolId = canUseItem.toolId;
|
|
@@ -519,7 +512,6 @@ export function validateSerializedData(
|
|
|
519
512
|
// Use the node map to get the React Flow node ID if available
|
|
520
513
|
const nodeId = functionToolNodeMap?.get(toolId) || toolId;
|
|
521
514
|
|
|
522
|
-
// Validate required fields for function tools
|
|
523
515
|
if (!functionTool.name || String(functionTool.name).trim() === '') {
|
|
524
516
|
errors.push({
|
|
525
517
|
message: 'Function tool name is required',
|
|
@@ -38,6 +38,7 @@ type AgentActions = {
|
|
|
38
38
|
toolLookup?: Record<string, MCPTool>,
|
|
39
39
|
agentToolConfigLookup?: AgentToolConfigLookup
|
|
40
40
|
): void;
|
|
41
|
+
reset(): void;
|
|
41
42
|
setDataComponentLookup(dataComponentLookup: Record<string, DataComponent>): void;
|
|
42
43
|
setArtifactComponentLookup(artifactComponentLookup: Record<string, ArtifactComponent>): void;
|
|
43
44
|
setToolLookup(toolLookup: Record<string, MCPTool>): void;
|
|
@@ -67,32 +68,36 @@ type AgentState = AgentStateData & {
|
|
|
67
68
|
actions: AgentActions;
|
|
68
69
|
};
|
|
69
70
|
|
|
71
|
+
const initialAgentState: AgentStateData = {
|
|
72
|
+
nodes: [],
|
|
73
|
+
edges: [],
|
|
74
|
+
metadata: {
|
|
75
|
+
id: undefined,
|
|
76
|
+
name: '',
|
|
77
|
+
description: '',
|
|
78
|
+
contextConfig: {
|
|
79
|
+
contextVariables: '',
|
|
80
|
+
headersSchema: '',
|
|
81
|
+
},
|
|
82
|
+
models: undefined,
|
|
83
|
+
stopWhen: undefined,
|
|
84
|
+
prompt: undefined,
|
|
85
|
+
statusUpdates: undefined,
|
|
86
|
+
},
|
|
87
|
+
dataComponentLookup: {},
|
|
88
|
+
artifactComponentLookup: {},
|
|
89
|
+
toolLookup: {},
|
|
90
|
+
agentToolConfigLookup: {},
|
|
91
|
+
dirty: false,
|
|
92
|
+
history: [],
|
|
93
|
+
future: [],
|
|
94
|
+
errors: null,
|
|
95
|
+
showErrors: false,
|
|
96
|
+
};
|
|
97
|
+
|
|
70
98
|
export const agentStore = create<AgentState>()(
|
|
71
99
|
devtools((set, get) => ({
|
|
72
|
-
|
|
73
|
-
edges: [],
|
|
74
|
-
metadata: {
|
|
75
|
-
id: undefined,
|
|
76
|
-
name: '',
|
|
77
|
-
description: '',
|
|
78
|
-
contextConfig: {
|
|
79
|
-
contextVariables: '',
|
|
80
|
-
headersSchema: '',
|
|
81
|
-
},
|
|
82
|
-
models: undefined,
|
|
83
|
-
stopWhen: undefined,
|
|
84
|
-
prompt: undefined,
|
|
85
|
-
statusUpdates: undefined,
|
|
86
|
-
},
|
|
87
|
-
dataComponentLookup: {},
|
|
88
|
-
artifactComponentLookup: {},
|
|
89
|
-
toolLookup: {},
|
|
90
|
-
agentToolConfigLookup: {},
|
|
91
|
-
dirty: false,
|
|
92
|
-
history: [],
|
|
93
|
-
future: [],
|
|
94
|
-
errors: null,
|
|
95
|
-
showErrors: false,
|
|
100
|
+
...initialAgentState,
|
|
96
101
|
// Separate "namespace" for actions
|
|
97
102
|
actions: {
|
|
98
103
|
setInitial(
|
|
@@ -119,6 +124,9 @@ export const agentStore = create<AgentState>()(
|
|
|
119
124
|
showErrors: false,
|
|
120
125
|
});
|
|
121
126
|
},
|
|
127
|
+
reset() {
|
|
128
|
+
set(initialAgentState);
|
|
129
|
+
},
|
|
122
130
|
setDataComponentLookup(dataComponentLookup) {
|
|
123
131
|
set({ dataComponentLookup });
|
|
124
132
|
},
|
|
@@ -144,7 +152,6 @@ export const agentStore = create<AgentState>()(
|
|
|
144
152
|
}));
|
|
145
153
|
},
|
|
146
154
|
onNodesChange(changes) {
|
|
147
|
-
// Check if any change type would modify the agent (not just selection changes)
|
|
148
155
|
const hasModifyingChange = changes.some(
|
|
149
156
|
// Don't trigger `position` as modified change, since when the nodes are repositioned,
|
|
150
157
|
// they'll be re-laid out during the initial load anyway
|
|
@@ -158,7 +165,6 @@ export const agentStore = create<AgentState>()(
|
|
|
158
165
|
}));
|
|
159
166
|
},
|
|
160
167
|
onEdgesChange(changes) {
|
|
161
|
-
// Check if any change type would modify the agent (not just selection changes)
|
|
162
168
|
const hasModifyingChange = changes.some(
|
|
163
169
|
(change) => change.type === 'remove' || change.type === 'add' || change.type === 'replace'
|
|
164
170
|
);
|
|
@@ -33,7 +33,6 @@ export const useChatActivitiesPolling = ({
|
|
|
33
33
|
try {
|
|
34
34
|
setError(null);
|
|
35
35
|
|
|
36
|
-
// Create new abort controller for this request
|
|
37
36
|
abortControllerRef.current = new AbortController();
|
|
38
37
|
const currentConversationId = conversationId; // Capture current ID
|
|
39
38
|
|
|
@@ -63,7 +62,6 @@ export const useChatActivitiesPolling = ({
|
|
|
63
62
|
|
|
64
63
|
const data: ConversationDetail = await response.json();
|
|
65
64
|
|
|
66
|
-
// Validate that the response is still for the current conversation
|
|
67
65
|
if (isComponentMountedRef.current && currentConversationId === conversationId) {
|
|
68
66
|
// Only update state if data actually changed (by checking activity count)
|
|
69
67
|
const newCount = data.activities?.length || 0;
|
|
@@ -107,7 +107,6 @@ export function useNodeEditor({ selectedNodeId, errorHelpers }: UseNodeEditorOpt
|
|
|
107
107
|
const finalKey = nestedPath[nestedPath.length - 1];
|
|
108
108
|
if (value === undefined || value === null || value === '') {
|
|
109
109
|
delete current[finalKey];
|
|
110
|
-
// Check if the parent object becomes empty after deletion
|
|
111
110
|
if (Object.keys(updatedParent).length === 0) {
|
|
112
111
|
updateField(parentField, null);
|
|
113
112
|
return;
|
|
@@ -25,7 +25,6 @@ export function useOAuthLogin({ tenantId, projectId, onFinish, onError }: UseOAu
|
|
|
25
25
|
activeAttempts.delete(toolId);
|
|
26
26
|
}
|
|
27
27
|
try {
|
|
28
|
-
// Get the OAuth URL and open in popup window
|
|
29
28
|
const oauthUrl = getOAuthLoginUrl({
|
|
30
29
|
PUBLIC_INKEEP_AGENTS_MANAGE_API_URL,
|
|
31
30
|
tenantId,
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { parseAsString, parseAsStringLiteral, useQueryStates } from 'nuqs';
|
|
2
2
|
|
|
3
|
-
const
|
|
3
|
+
export const PANE_TYPES = ['agent', 'node', 'edge'] as const;
|
|
4
|
+
export type PaneType = (typeof PANE_TYPES)[number];
|
|
5
|
+
|
|
6
|
+
export const DEFAULT_NEW_AGENT_PANE: PaneType = 'agent';
|
|
4
7
|
|
|
5
8
|
export function useSidePane() {
|
|
6
9
|
const [queryState, setQueryState] = useQueryStates({
|
|
7
|
-
pane: parseAsStringLiteral(
|
|
10
|
+
pane: parseAsStringLiteral(PANE_TYPES),
|
|
8
11
|
nodeId: parseAsString,
|
|
9
12
|
edgeId: parseAsString,
|
|
10
13
|
});
|
|
@@ -46,7 +46,6 @@ export function useTracesQueryState() {
|
|
|
46
46
|
// Span filtering
|
|
47
47
|
spanName: parseAsString.withDefault(''),
|
|
48
48
|
spanAttributes: parseAsJson((value: unknown): SpanAttribute[] => {
|
|
49
|
-
// Validate that the parsed JSON is an array of SpanAttribute objects
|
|
50
49
|
if (!Array.isArray(value)) return [];
|
|
51
50
|
|
|
52
51
|
return value.filter(
|
|
@@ -14,9 +14,15 @@ let hasWarnedManageApi = false;
|
|
|
14
14
|
function getManageApiUrl(): string {
|
|
15
15
|
if (INKEEP_AGENTS_MANAGE_API_URL === null) {
|
|
16
16
|
INKEEP_AGENTS_MANAGE_API_URL =
|
|
17
|
-
process.env.INKEEP_AGENTS_MANAGE_API_URL ||
|
|
17
|
+
process.env.INKEEP_AGENTS_MANAGE_API_URL ||
|
|
18
|
+
process.env.PUBLIC_INKEEP_AGENTS_MANAGE_API_URL ||
|
|
19
|
+
DEFAULT_INKEEP_AGENTS_MANAGE_API_URL;
|
|
18
20
|
|
|
19
|
-
if (
|
|
21
|
+
if (
|
|
22
|
+
!process.env.INKEEP_AGENTS_MANAGE_API_URL &&
|
|
23
|
+
!process.env.PUBLIC_INKEEP_AGENTS_MANAGE_API_URL &&
|
|
24
|
+
!hasWarnedManageApi
|
|
25
|
+
) {
|
|
20
26
|
console.warn(
|
|
21
27
|
`INKEEP_AGENTS_MANAGE_API_URL is not set, falling back to: ${DEFAULT_INKEEP_AGENTS_MANAGE_API_URL}`
|
|
22
28
|
);
|
|
@@ -60,7 +66,6 @@ async function makeApiRequestInternal<T>(
|
|
|
60
66
|
);
|
|
61
67
|
}
|
|
62
68
|
|
|
63
|
-
// Check if there's actually content to parse
|
|
64
69
|
const contentType = response.headers.get('content-type');
|
|
65
70
|
const hasJsonContent = contentType?.includes('application/json');
|
|
66
71
|
|
|
@@ -35,7 +35,6 @@ export async function fetchArtifactComponents(
|
|
|
35
35
|
`tenants/${tenantId}/projects/${projectId}/artifact-components`
|
|
36
36
|
);
|
|
37
37
|
|
|
38
|
-
// Return the response as-is, preserving null/undefined props
|
|
39
38
|
return response;
|
|
40
39
|
}
|
|
41
40
|
|
|
@@ -54,7 +53,6 @@ export async function fetchArtifactComponent(
|
|
|
54
53
|
`tenants/${tenantId}/projects/${projectId}/artifact-components/${artifactComponentId}`
|
|
55
54
|
);
|
|
56
55
|
|
|
57
|
-
// Return the response as-is, preserving null/undefined props
|
|
58
56
|
return response.data;
|
|
59
57
|
}
|
|
60
58
|
|
|
@@ -77,7 +75,6 @@ export async function createArtifactComponent(
|
|
|
77
75
|
}
|
|
78
76
|
);
|
|
79
77
|
|
|
80
|
-
// Return the response as-is, preserving null/undefined props
|
|
81
78
|
return response.data;
|
|
82
79
|
}
|
|
83
80
|
|
|
@@ -100,7 +97,6 @@ export async function updateArtifactComponent(
|
|
|
100
97
|
}
|
|
101
98
|
);
|
|
102
99
|
|
|
103
|
-
// Return the response as-is, preserving null/undefined props
|
|
104
100
|
return response.data;
|
|
105
101
|
}
|
|
106
102
|
|
package/src/lib/api/projects.ts
CHANGED
|
@@ -13,7 +13,6 @@ export async function fetchProjects(tenantId: string): Promise<ListResponse<Proj
|
|
|
13
13
|
`tenants/${tenantId}/projects`
|
|
14
14
|
);
|
|
15
15
|
|
|
16
|
-
// Map backend 'id' field to 'projectId' for frontend consistency
|
|
17
16
|
if (response.data) {
|
|
18
17
|
response.data = response.data.map((project: any) => ({
|
|
19
18
|
...project,
|
|
@@ -34,7 +33,6 @@ export async function fetchProject(
|
|
|
34
33
|
`tenants/${tenantId}/projects/${projectId}`
|
|
35
34
|
);
|
|
36
35
|
|
|
37
|
-
// Map backend 'id' field to 'projectId' for frontend consistency
|
|
38
36
|
if (response.data) {
|
|
39
37
|
response.data = {
|
|
40
38
|
...response.data,
|
|
@@ -59,7 +57,6 @@ export async function createProject(
|
|
|
59
57
|
}
|
|
60
58
|
);
|
|
61
59
|
|
|
62
|
-
// Map backend 'id' field to 'projectId' for frontend consistency
|
|
63
60
|
if (response.data) {
|
|
64
61
|
response.data = {
|
|
65
62
|
...response.data,
|
|
@@ -84,7 +81,6 @@ export async function updateProject(
|
|
|
84
81
|
body: JSON.stringify(project),
|
|
85
82
|
}
|
|
86
83
|
);
|
|
87
|
-
// Map backend 'id' field to 'projectId' for frontend consistency
|
|
88
84
|
if (response.data) {
|
|
89
85
|
response.data = {
|
|
90
86
|
...response.data,
|
|
@@ -123,7 +123,6 @@ export async function fetchAllSpanAttributes_SQL(
|
|
|
123
123
|
}
|
|
124
124
|
|
|
125
125
|
for (const r of rows) {
|
|
126
|
-
// Build the span.data bag from the projected JSON maps
|
|
127
126
|
const attrsString = JSON.parse(r.attributes_string_json || '{}');
|
|
128
127
|
const attrsNum = JSON.parse(r.attributes_number_json || '{}');
|
|
129
128
|
const attrsBool = JSON.parse(r.attributes_bool_json || '{}');
|
|
@@ -103,7 +103,6 @@ const asTypedFilterValue = (v: string): FilterValue => {
|
|
|
103
103
|
return FilterValueSchema.parse(numericValue);
|
|
104
104
|
}
|
|
105
105
|
|
|
106
|
-
// Return as validated string
|
|
107
106
|
return FilterValueSchema.parse(v);
|
|
108
107
|
} catch (error) {
|
|
109
108
|
// If validation fails, log the error and return the original string
|
|
@@ -97,7 +97,6 @@ function validateJsonSchema(schema: any): ValidationError[] {
|
|
|
97
97
|
return errors;
|
|
98
98
|
}
|
|
99
99
|
|
|
100
|
-
// Check if it's a valid object schema
|
|
101
100
|
if (!objectValidator.Check(schema)) {
|
|
102
101
|
// Check individual properties for better error messages
|
|
103
102
|
if (!schema.type || schema.type !== 'object') {
|
|
@@ -124,7 +123,6 @@ function validateJsonSchema(schema: any): ValidationError[] {
|
|
|
124
123
|
});
|
|
125
124
|
}
|
|
126
125
|
|
|
127
|
-
// Validate each property
|
|
128
126
|
if (schema.properties && typeof schema.properties === 'object') {
|
|
129
127
|
Object.entries(schema.properties).forEach(([propertyName, propertySchema]) => {
|
|
130
128
|
if (!propertyValidator.Check(propertySchema)) {
|
|
@@ -205,7 +203,6 @@ function validateLlmRequirements(schema: any): ValidationError[] {
|
|
|
205
203
|
export function validateJsonSchemaForLlm(jsonString: string): ValidationResult {
|
|
206
204
|
const warnings: string[] = [];
|
|
207
205
|
|
|
208
|
-
// Step 1: Validate JSON syntax
|
|
209
206
|
const { parsed, errors: syntaxErrors } = validateJsonSyntax(jsonString);
|
|
210
207
|
|
|
211
208
|
if (syntaxErrors.length > 0) {
|
|
@@ -224,10 +221,8 @@ export function validateJsonSchemaForLlm(jsonString: string): ValidationResult {
|
|
|
224
221
|
};
|
|
225
222
|
}
|
|
226
223
|
|
|
227
|
-
// Step 2: Validate JSON Schema structure
|
|
228
224
|
const schemaErrors = validateJsonSchema(parsed);
|
|
229
225
|
|
|
230
|
-
// Step 3: Validate LLM-specific requirements
|
|
231
226
|
const llmErrors = validateLlmRequirements(parsed);
|
|
232
227
|
|
|
233
228
|
const allErrors = [...schemaErrors, ...llmErrors];
|
|
@@ -10,7 +10,6 @@ export class NangoError extends Error {
|
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
// Helper to wrap errors, preserving existing NangoErrors
|
|
14
13
|
export function wrapNangoError(error: unknown, message: string, operation?: string): never {
|
|
15
14
|
if (error instanceof NangoError) {
|
|
16
15
|
throw error;
|
|
@@ -20,7 +20,7 @@ import type {
|
|
|
20
20
|
ApiPublicIntegration,
|
|
21
21
|
ApiPublicIntegrationCredentials,
|
|
22
22
|
} from '@nangohq/types';
|
|
23
|
-
import { DEFAULT_TENANT_ID } from '@/lib/runtime-config/defaults';
|
|
23
|
+
import { DEFAULT_NANGO_SERVER_URL, DEFAULT_TENANT_ID } from '@/lib/runtime-config/defaults';
|
|
24
24
|
import { NangoError, wrapNangoError } from './nango-types';
|
|
25
25
|
|
|
26
26
|
// Initialize Nango client with environment variables
|
|
@@ -33,7 +33,10 @@ const getNangoClient = () => {
|
|
|
33
33
|
try {
|
|
34
34
|
return new Nango({
|
|
35
35
|
secretKey,
|
|
36
|
-
host:
|
|
36
|
+
host:
|
|
37
|
+
process.env.NANGO_SERVER_URL ||
|
|
38
|
+
process.env.PUBLIC_NANGO_SERVER_URL ||
|
|
39
|
+
DEFAULT_NANGO_SERVER_URL,
|
|
37
40
|
});
|
|
38
41
|
} catch (error) {
|
|
39
42
|
throw new NangoError('Failed to initialize Nango client', 'new Nango', error);
|
|
@@ -128,7 +131,6 @@ export async function fetchNangoIntegration(
|
|
|
128
131
|
areCredentialsSet,
|
|
129
132
|
};
|
|
130
133
|
} catch (error) {
|
|
131
|
-
// Check if this is a 404 (integration not found) - return null for this case
|
|
132
134
|
if (error && typeof error === 'object' && 'status' in error && error.status === 404) {
|
|
133
135
|
return null;
|
|
134
136
|
}
|
|
@@ -242,7 +244,6 @@ export async function createNangoApiKeyConnection({
|
|
|
242
244
|
const idFromName = generateIdFromName(name);
|
|
243
245
|
|
|
244
246
|
try {
|
|
245
|
-
// Step 1: Ensure Nango integration exists
|
|
246
247
|
let integration: ApiPublicIntegration;
|
|
247
248
|
|
|
248
249
|
/*
|
|
@@ -288,9 +289,8 @@ export async function createNangoApiKeyConnection({
|
|
|
288
289
|
}
|
|
289
290
|
}
|
|
290
291
|
|
|
291
|
-
// Step 2: Import the connection to Nango
|
|
292
292
|
try {
|
|
293
|
-
const importConnectionUrl = `${process.env.NANGO_SERVER_URL ||
|
|
293
|
+
const importConnectionUrl = `${process.env.NANGO_SERVER_URL || process.env.PUBLIC_NANGO_SERVER_URL || DEFAULT_NANGO_SERVER_URL}/connections`;
|
|
294
294
|
|
|
295
295
|
const credentials: ApiKeyCredentials = {
|
|
296
296
|
type: 'API_KEY',
|
|
@@ -323,7 +323,6 @@ export async function createNangoApiKeyConnection({
|
|
|
323
323
|
wrapNangoError(error, `Failed to import API key connection to Nango`, 'importConnection');
|
|
324
324
|
}
|
|
325
325
|
|
|
326
|
-
// Step 3: Set metadata (Nango workaround)
|
|
327
326
|
try {
|
|
328
327
|
await setNangoConnectionMetadata({
|
|
329
328
|
providerConfigKey: integration.unique_key,
|
|
@@ -356,7 +355,6 @@ export async function createProviderConnectSession({
|
|
|
356
355
|
credentials?: ApiPublicIntegrationCredentials;
|
|
357
356
|
}): Promise<string> {
|
|
358
357
|
try {
|
|
359
|
-
// Step 1: Check for existing integration
|
|
360
358
|
let integration: ApiPublicIntegration;
|
|
361
359
|
let existingIntegration: (ApiPublicIntegration & { areCredentialsSet: boolean }) | null = null;
|
|
362
360
|
|
|
@@ -370,7 +368,6 @@ export async function createProviderConnectSession({
|
|
|
370
368
|
console.debug(`Integration '${providerName}' not found, will create new one`);
|
|
371
369
|
}
|
|
372
370
|
|
|
373
|
-
// Step 2: Use existing or create new integration
|
|
374
371
|
if (existingIntegration?.areCredentialsSet) {
|
|
375
372
|
integration = existingIntegration;
|
|
376
373
|
} else {
|
|
@@ -390,7 +387,6 @@ export async function createProviderConnectSession({
|
|
|
390
387
|
}
|
|
391
388
|
}
|
|
392
389
|
|
|
393
|
-
// Step 3: Create connect session
|
|
394
390
|
try {
|
|
395
391
|
const connectSession = await createNangoConnectSession({
|
|
396
392
|
integrationId: integration.unique_key,
|
|
@@ -429,7 +425,6 @@ export async function getNangoConnectionMetadata({
|
|
|
429
425
|
const metadata = await nango.getMetadata(providerConfigKey, connectionId);
|
|
430
426
|
return metadata as Record<string, string>;
|
|
431
427
|
} catch (error) {
|
|
432
|
-
// Check if this is a 404 (connection not found) - return null for this case
|
|
433
428
|
if (error && typeof error === 'object' && 'status' in error && error.status === 404) {
|
|
434
429
|
return null;
|
|
435
430
|
}
|
|
@@ -2,3 +2,5 @@ export const DEFAULT_INKEEP_AGENTS_MANAGE_API_URL = 'http://localhost:3002';
|
|
|
2
2
|
export const DEFAULT_INKEEP_AGENTS_RUN_API_URL = 'http://localhost:3003';
|
|
3
3
|
export const DEFAULT_SIGNOZ_URL = 'http://localhost:3080';
|
|
4
4
|
export const DEFAULT_TENANT_ID = 'default';
|
|
5
|
+
export const DEFAULT_NANGO_SERVER_URL = 'http://localhost:3050';
|
|
6
|
+
export const DEFAULT_NANGO_CONNECT_BASE_URL = 'http://localhost:3051';
|
|
@@ -128,7 +128,6 @@ function processValidationError(
|
|
|
128
128
|
field = error.path.join('.') || 'configuration';
|
|
129
129
|
}
|
|
130
130
|
|
|
131
|
-
// Create user-friendly message
|
|
132
131
|
const message = createUserFriendlyMessage(error, field, type, nodeType);
|
|
133
132
|
|
|
134
133
|
return {
|
|
@@ -176,7 +175,6 @@ function createUserFriendlyMessage(
|
|
|
176
175
|
return `${entityType} ${fieldName} has an invalid value. Please select a valid option`;
|
|
177
176
|
|
|
178
177
|
case 'invalid_union':
|
|
179
|
-
// Check if this is an agent type discrimination error
|
|
180
178
|
if (field.includes('type') || error.message.includes('discriminator')) {
|
|
181
179
|
return `${entityType} type must be specified as either 'internal' or 'external'`;
|
|
182
180
|
}
|
|
@@ -18,7 +18,6 @@ export function getOAuthLoginUrl({
|
|
|
18
18
|
projectId: string;
|
|
19
19
|
id: string;
|
|
20
20
|
}): string {
|
|
21
|
-
// Validate input parameters
|
|
22
21
|
if (!tenantId || typeof tenantId !== 'string') {
|
|
23
22
|
throw new Error('Invalid tenantId: must be a non-empty string');
|
|
24
23
|
}
|
|
@@ -31,7 +30,6 @@ export function getOAuthLoginUrl({
|
|
|
31
30
|
throw new Error('Invalid projectId: must be a non-empty string');
|
|
32
31
|
}
|
|
33
32
|
|
|
34
|
-
// Validate format - only allow alphanumeric, hyphens, and underscores
|
|
35
33
|
const validFormat = /^[a-zA-Z0-9-_]+$/;
|
|
36
34
|
|
|
37
35
|
if (!validFormat.test(tenantId)) {
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type NextRequest, NextResponse } from 'next/server';
|
|
2
|
+
import { DEFAULT_NEW_AGENT_PANE } from './hooks/use-side-pane';
|
|
3
|
+
|
|
4
|
+
export function middleware(request: NextRequest) {
|
|
5
|
+
const { pathname, searchParams } = request.nextUrl;
|
|
6
|
+
|
|
7
|
+
if (pathname.endsWith('/agents/new') && !searchParams.has('pane')) {
|
|
8
|
+
const url = request.nextUrl.clone();
|
|
9
|
+
url.searchParams.set('pane', DEFAULT_NEW_AGENT_PANE);
|
|
10
|
+
return NextResponse.redirect(url);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
return NextResponse.next();
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export const config = {
|
|
17
|
+
matcher: '/:tenantId/projects/:projectId/agents/new',
|
|
18
|
+
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
exports.id=1343,exports.ids=[1343],exports.modules={5294:(a,b,c)=>{"use strict";c.d(b,{$Y:()=>g,GO:()=>i,K3:()=>h,h9:()=>k});var d=c(29991);c(58415);var e=c(8703),f=c(45796);async function g(a,b,c=1,d=50){(0,f.M2)(a),(0,f.nt)(b);let h=new URLSearchParams({page:c.toString(),limit:d.toString()});return(await (0,e.J)(`tenants/${a}/projects/${b}/credentials?${h}`)).data}async function h(a,b,c){return(0,f.M2)(a),(0,f.nt)(b),(await (0,e.J)(`tenants/${a}/projects/${b}/credentials/${c}`)).data}async function i(a,b,c){return(0,f.M2)(a),(0,f.nt)(b),(await (0,e.J)(`tenants/${a}/projects/${b}/credentials`,{method:"POST",body:JSON.stringify(c)})).data}async function j(a,b,c,d){return(0,f.M2)(a),(0,f.nt)(b),(await (0,e.J)(`tenants/${a}/projects/${b}/credentials/${c}`,{method:"PUT",body:JSON.stringify(d)})).data}async function k(a,b,c){(0,f.M2)(a),(0,f.nt)(b),await (0,e.J)(`tenants/${a}/projects/${b}/credentials/${c}`,{method:"DELETE"})}(0,c(33451).D)([g,h,i,j,k]),(0,d.A)(g,"783aa031aed26b156f9b70491fca106df176a213be",null),(0,d.A)(h,"70c72165ae54a769fee9ec23ddc80620fd12c8c2ac",null),(0,d.A)(i,"70f90eae8a2398b2c4247b3bc2d58e7a659458d14d",null),(0,d.A)(j,"785bab7dc3cfba64c4ccfbbdadad9c8f6d182b9f4c",null),(0,d.A)(k,"70eaba2a24bd7533922756a3c30dc57d3caa755c5c",null)},19329:(a,b,c)=>{"use strict";c.d(b,{U:()=>f});var d=c(29991);c(58415);var e=c(5294);async function f(a,b,c){try{let d=await (0,e.K3)(a,b,c.id);if(d)return d}catch{}try{return await (0,e.GO)(a,b,c)}catch(a){throw console.error("Failed to save credential to database:",a),Error(`Failed to save credential '${c.id}' to database`)}}(0,c(33451).D)([f]),(0,d.A)(f,"70f13f2f3b5a7ca018ac1d5e89e23f10d51bc732ae",null)},21395:(a,b,c)=>{"use strict";c.d(b,{RN:()=>t,Ak:()=>q,uP:()=>u,tN:()=>r,Mj:()=>p,tQ:()=>o,pv:()=>n,Mb:()=>m,H6:()=>v,EN:()=>l,P:()=>w});var d=c(29991);c(58415);var e=c(56129),f=c(55797),g=c(67417);class h extends Error{constructor(a,b,c){super(a),this.operation=b,this.cause=c,this.name="NangoError"}}function i(a,b,c){if(a instanceof h)throw a;throw new h(b,c,a)}var j=c(33451);let k=()=>{let a=process.env.NANGO_SECRET_KEY;if(!a)throw new h("NANGO_SECRET_KEY environment variable is required for Nango integration");try{return new f.CA({secretKey:a,host:process.env.NANGO_SERVER_URL||void 0})}catch(a){throw new h("Failed to initialize Nango client","new Nango",a)}};async function l(){let a=process.env.NANGO_SECRET_KEY;return!!(a&&""!==a.trim())}async function m(){try{let a=k();return(await a.listProviders({})).data}catch(a){console.error("Failed to fetch providers:",a),i(a,"Unable to retrieve available providers from Nango","listProviders")}}async function n(a){try{let b=k();return(await b.getProvider({provider:a})).data}catch(b){console.error(`Failed to fetch provider ${a}:`,b),i(b,`Provider '${a}' not found or inaccessible`,"getProvider")}}async function o(){try{let a=k();return(await a.listIntegrations()).configs}catch(a){console.error("Failed to fetch integrations:",a),i(a,"Unable to retrieve existing integrations","listIntegrations")}}async function p(a){try{let b=k(),c=(await b.getIntegration({uniqueKey:a},{include:["credentials"]})).data,d=!1;d=c.credentials?.type==="OAUTH2"||c.credentials?.type==="OAUTH1"||c.credentials?.type==="TBA"?!!(c.credentials?.client_id&&c.credentials?.client_secret):c.credentials?.type!=="APP"||!!(c.credentials?.app_id&&c.credentials?.app_link);let{credentials:e,...f}=c;return{...f,areCredentialsSet:d}}catch(b){if(b&&"object"==typeof b&&"status"in b&&404===b.status)return null;console.error(`Failed to fetch integration ${a}:`,b),i(b,`Unable to fetch integration with key '${a}'`,"getIntegration")}}async function q(a){try{let b=k();return(await b.createIntegration({provider:a.provider,unique_key:a.uniqueKey,display_name:a.displayName,credentials:a.credentials})).data}catch(b){console.error("Failed to create integration:",b),i(b,`Failed to create integration '${a.uniqueKey}' for provider '${a.provider}'`,"createIntegration")}}async function r(a){try{let a=k();return(await a.listConnections()).connections}catch(c){let b=a?` for integration '${a}'`:"";console.error(`Failed to fetch connections${b}:`,c),i(c,`Unable to retrieve connections${b}`,"listConnections")}}async function s({endUserId:a="test-tenant",endUserEmail:b="test@test-tenant.com",endUserDisplayName:c="Test User",organizationId:d=process.env.TENANT_ID||g.P3,organizationDisplayName:e="Test Organization",integrationId:f}){try{let g=k(),{data:h}=await g.createConnectSession({end_user:{id:a,email:b,display_name:c},organization:{id:d,display_name:e},allowed_integrations:[f]});return h}catch(a){console.error("Failed to create connect session:",a),i(a,`Unable to create connect session for integration '${f}'`,"createConnectSession")}}async function t({name:a,apiKeyToSet:b,metadata:c}){let d=(0,e.K_)(a);try{let e;try{e=await q({provider:"private-api-bearer",uniqueKey:d,displayName:a})}catch(a){if(a instanceof h&&a.cause&&"object"==typeof a.cause&&"status"in a.cause&&400===a.cause.status){let b=await p(d);b?e=b:i(a,"Integration creation failed for unexpected reasons","create")}else i(a,`Failed to create or retrieve integration '${d}'`,"create")}try{let a=`${process.env.NANGO_SERVER_URL||"https://api.nango.dev"}/connections`,f={provider_config_key:e.unique_key,connection_id:d,metadata:c,credentials:{type:"API_KEY",apiKey:b}},g=await fetch(a,{method:"POST",headers:{Authorization:`Bearer ${process.env.NANGO_SECRET_KEY}`,"Content-Type":"application/json"},body:JSON.stringify(f)});if(!g.ok)throw new h(`Failed to import connection: HTTP ${g.status} - ${g.statusText}`,"importConnection")}catch(a){i(a,"Failed to import API key connection to Nango","importConnection")}try{await w({providerConfigKey:e.unique_key,connectionId:d,metadata:c})}catch(a){console.warn(`Failed to set metadata for connection ${d}:`,a)}return{integration:e}}catch(b){console.error("Unexpected error creating API key credential:",b),i(b,`Unexpected error creating API key credential '${a}'`,"createNangoApiKeyConnection")}}async function u({providerName:a,credentials:b}){try{let c,d=null;try{d=await p(a)}catch(b){if(b instanceof h)throw b;console.debug(`Integration '${a}' not found, will create new one`)}if(d?.areCredentialsSet)c=d;else try{c=await q({provider:a,uniqueKey:a,displayName:a,credentials:b})}catch(b){i(b,`Failed to create integration for provider '${a}'`,"create")}try{return(await s({integrationId:c.unique_key})).token}catch(a){i(a,`Failed to create connect session for integration '${c.unique_key}'`,"createConnectSession")}}catch(b){console.error("Unexpected error creating provider connect session:",b),i(b,`Unexpected error creating connect session for provider '${a}'`,"createProviderConnectSession")}}async function v({providerConfigKey:a,connectionId:b}){try{let c=k();return await c.getMetadata(a,b)}catch(a){if(a&&"object"==typeof a&&"status"in a&&404===a.status)return null;console.error("Failed to get connection metadata:",a),i(a,`Unable to retrieve metadata for connection '${b}'`,"getMetadata")}}async function w({providerConfigKey:a,connectionId:b,metadata:c}){try{let d=k();await d.setMetadata(a,b,c)}catch(a){console.error("Failed to set connection metadata:",a),i(a,`Unable to update metadata for connection '${b}'`,"setMetadata")}}(0,j.D)([l,m,n,o,p,q,r,t,u,v,w]),(0,d.A)(l,"0039db484f8537248411eb8471b1c9f54afffc6fb9",null),(0,d.A)(m,"00b4b812ca1f551b1bc660b119346f8edd09adc331",null),(0,d.A)(n,"40752324736817fee7ef6cc26484259ae914678a7b",null),(0,d.A)(o,"00f5233991f62b136f9f27b0dc46e29d08b7bb95a0",null),(0,d.A)(p,"4099c5c810bc15034d0178aee15f57d3efc36fa092",null),(0,d.A)(q,"400238208ed4f263aa38385750f91a724da85a315b",null),(0,d.A)(r,"4083fbd336be20678cad1fc6cd0d4c6de406f34ca2",null),(0,d.A)(t,"405cf597234a0124547ec657f1121198bd4ed40c56",null),(0,d.A)(u,"4020828b8993258e5273fceb4d7696048fd60cd286",null),(0,d.A)(v,"40237f9ddff66933da9ac15e168644606f92dfa082",null),(0,d.A)(w,"40733f9c5563a2bcebb29b901fd45aaf231df9b034",null)},22427:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>f});var d=c(59111),e=c(43433);function f(){return(0,d.jsx)(e.A,{description:"Something went wrong."})}},23767:(a,b,c)=>{"use strict";c.r(b),c.d(b,{"40618f7f926fe5180b85f463736d4fa77dd81bf2bd":()=>d.vj,"601be75218fb05713996a73241c26760bfe3f442ec":()=>d.gA,"60b49f8c6150c223a0f730486dc69568d330e849d0":()=>d.Sw,"60bff370534813566b1706292316fd77dd6de3d61a":()=>d.xx,"705b0fe0995ad695d24cc8d87bb210911000ee0be5":()=>d.vr});var d=c(54637)},25600:(a,b,c)=>{Promise.resolve().then(c.bind(c,22427))},62048:(a,b,c)=>{Promise.resolve().then(c.bind(c,80969))},68523:(a,b,c)=>{"use strict";c.d(b,{U:()=>e});var d=c(90147);let e=(0,d.createServerReference)("70f13f2f3b5a7ca018ac1d5e89e23f10d51bc732ae",d.callServer,void 0,d.findSourceMapURL,"findOrCreateCredential")},80969:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(60241).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/agents/agents/agents-manage-ui/src/app/[tenantId]/projects/[projectId]/credentials/error.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/agents/agents/agents-manage-ui/src/app/[tenantId]/projects/[projectId]/credentials/error.tsx","default")}};
|