@inkeep/agents-manage-ui 0.19.7 → 0.19.9
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 +184 -184
- package/.next/standalone/agents-manage-ui/.next/app-path-routes-manifest.json +6 -6
- package/.next/standalone/agents-manage-ui/.next/build-manifest.json +5 -5
- package/.next/standalone/agents-manage-ui/.next/prerender-manifest.json +13 -13
- package/.next/standalone/agents-manage-ui/.next/react-loadable-manifest.json +3 -3
- 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_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_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 +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/new/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/new/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/new/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/new/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/new/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/new/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/page.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page_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 +3 -3
- 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 +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 +8 -8
- package/.next/standalone/agents-manage-ui/.next/server/app/api/signoz/conversations/[conversationId]/route.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/api/signoz/conversations/[conversationId]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/api/signoz/route_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app-paths-manifest.json +6 -6
- package/.next/standalone/agents-manage-ui/.next/server/chunks/2067.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/{5889.js → 3400.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/3547.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/3722.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/server/chunks/480.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/server/chunks/4889.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/server/chunks/6218.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/7457.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/chunks/7504.js +7 -7
- 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/29440.44fedd2ec0823a02.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/49858-80fbae619dcf597d.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{71558-8c90050e5b46bdf0.js → 71558-15582eb2578602c7.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/7190-1e2d739fc04faeaf.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/93677-c2967ad8c191461e.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/page-a4388aae9b646fbd.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/api-keys/page-7288c0df010d0cc6.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/{page-ba7bbb5f394d08c6.js → page-0f5b8283e533a741.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/new/{page-ba7bbb5f394d08c6.js → page-0f5b8283e533a741.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/page-4cbf2f50465ca194.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/page-05021c0d1b5b3b9e.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/new/page-05021c0d1b5b3b9e.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/{page-a3a9abf70d9708cb.js → page-993b81d7cc4a8c48.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page-c1d1b0c33f6b3a95.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page-fd43a6e9943d7131.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page-10a60aad2603cc3f.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/{page-392b54a9fcca9c82.js → page-9ac2a6a56a5f8007.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/new/{page-081794f241d22954.js → page-851cde7b5754a696.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/page-d88b98f0c69f21ab.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/settings/{page-f60a2b27bb64a938.js → page-8c55d9d495a2783c.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/ai-calls/{page-00cee6f3d629b552.js → page-580fa90a20317d9b.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page-e860de4595d782bf.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/page-70d78da1fdb78ef0.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/page-c7a3db784f88966f.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/layout-c70e6e74af560638.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{webpack-bae1a6a598e24abf.js → webpack-ef3a13f9d4749344.js} +1 -1
- package/.next/standalone/agents-manage-ui/package.json +1 -1
- package/.next/standalone/packages/agents-core/package.json +1 -1
- package/package.json +4 -4
- package/src/app/[tenantId]/projects/[projectId]/agents/page.tsx +1 -1
- package/src/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page.tsx +1 -1
- package/src/app/api/signoz/conversations/[conversationId]/route.ts +3 -11
- package/src/components/agent/agent.tsx +1 -1
- package/src/components/agent/configuration/agent-types.tsx +1 -1
- package/src/components/agent/nodes/sub-agent-node.tsx +2 -2
- package/src/components/agent/playground/chat-widget.tsx +1 -0
- package/src/components/agent/sidepane/edges/edge-editor.tsx +14 -9
- package/src/components/agent/sidepane/metadata/metadata-editor.tsx +8 -8
- package/src/components/agent/sidepane/nodes/external-agent-node-editor.tsx +1 -1
- package/src/components/agent/sidepane/nodes/mcp-node-editor.tsx +9 -4
- package/src/components/agent/sidepane/nodes/model-section.tsx +5 -3
- package/src/components/agent/sidepane/nodes/sub-agent-node-editor.tsx +7 -7
- package/src/components/artifact-components/form/artifact-component-form.tsx +1 -1
- package/src/components/data-components/form/data-component-form.tsx +10 -1
- package/src/components/form/form-field-wrapper.tsx +1 -1
- package/src/components/form/generic-input.tsx +1 -1
- package/src/components/projects/form/project-models-section.tsx +1 -1
- package/src/components/projects/form/project-sandbox-section.tsx +1 -1
- package/src/components/projects/form/project-stopwhen-section.tsx +2 -1
- package/src/components/sidebar-nav/project-selector.tsx +1 -1
- package/src/components/traces/ai-calls-breakdown.tsx +6 -6
- package/src/components/traces/conversation-detail.tsx +57 -13
- package/src/components/traces/conversation-stats/conversation-stats-card.tsx +2 -2
- package/src/components/traces/filters/agent-filter.tsx +1 -1
- package/src/components/traces/timeline/render-panel-content.tsx +3 -7
- package/src/components/traces/timeline/timeline-wrapper.tsx +35 -15
- package/src/components/ui/combobox.tsx +1 -1
- package/src/constants/page-descriptions.tsx +2 -2
- package/src/features/agent/domain/agent-initializer-helpers.ts +3 -2
- package/src/features/agent/domain/serialize.ts +6 -6
- package/src/features/agent/state/use-agent-store.ts +2 -2
- package/src/lib/README.md +15 -15
- package/src/lib/utils/agent-error-parser.ts +18 -18
- package/src/lib/utils/trace-formatter.ts +79 -0
- package/.next/standalone/agents-manage-ui/.next/server/chunks/2782.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/5272.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/8113.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/9030.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/29440.b89b85e734301ee2.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/49858-9d58688d4acdd420.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/6719-bb09f191938cb7ac.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/7190-ffb071960bb6a52d.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/page-b960036bcc85d3b9.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/api-keys/page-b6820d15c91f654e.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/page-70b2c0bde95fb111.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/page-7cfcfb3a80bf221e.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/new/page-7cfcfb3a80bf221e.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page-410153ca99558d01.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page-4dc5dfe14604ed79.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page-e68d844d3b805e0c.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/page-2e21df93ae170354.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page-48512f59a08d0878.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/page-6cc996c59acc014b.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/page-9ff5161ce114bde5.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/layout-599c4be2f5e54c71.js +0 -1
- /package/.next/standalone/agents-manage-ui/.next/static/{2eCWRxylMQoerKDNqjgMo → DpJf4ZoPjE78fg2jHh4S4}/_buildManifest.js +0 -0
- /package/.next/standalone/agents-manage-ui/.next/static/{2eCWRxylMQoerKDNqjgMo → DpJf4ZoPjE78fg2jHh4S4}/_ssgManifest.js +0 -0
|
@@ -82,10 +82,10 @@ export function SubAgentNode(props: NodeProps & { data: AgentNodeData }) {
|
|
|
82
82
|
<BaseNodeHeader className="flex items-center justify-between gap-2">
|
|
83
83
|
<div className="flex items-center gap-2 min-w-0">
|
|
84
84
|
<Bot className="size-4 text-muted-foreground" />
|
|
85
|
-
<BaseNodeHeaderTitle>{name || '
|
|
85
|
+
<BaseNodeHeaderTitle>{name || 'Sub Agent'}</BaseNodeHeaderTitle>
|
|
86
86
|
</div>
|
|
87
87
|
<Badge variant="primary" className="text-xs uppercase">
|
|
88
|
-
|
|
88
|
+
Sub Agent
|
|
89
89
|
</Badge>
|
|
90
90
|
{hasErrors && (
|
|
91
91
|
<ErrorIndicator errors={nodeErrors} className="absolute -top-2 -right-2 w-6 h-6" />
|
|
@@ -252,6 +252,7 @@ export function ChatWidget({
|
|
|
252
252
|
'x-inkeep-tenant-id': tenantId,
|
|
253
253
|
'x-inkeep-project-id': projectId,
|
|
254
254
|
'x-inkeep-agent-id': agentId,
|
|
255
|
+
'x-emit-operations': 'true',
|
|
255
256
|
Authorization: `Bearer ${INKEEP_AGENTS_RUN_API_BYPASS_SECRET}`,
|
|
256
257
|
...customHeaders,
|
|
257
258
|
},
|
|
@@ -131,6 +131,11 @@ function EdgeEditor({ selectedEdge }: EdgeEditorProps) {
|
|
|
131
131
|
}
|
|
132
132
|
};
|
|
133
133
|
|
|
134
|
+
const sourceName =
|
|
135
|
+
(sourceNode?.data.name as string) || (sourceNode?.data.id as string) || 'Sub Agent';
|
|
136
|
+
const targetName =
|
|
137
|
+
(targetNode?.data.name as string) || (targetNode?.data.id as string) || 'Sub Agent';
|
|
138
|
+
|
|
134
139
|
const transferOptions = isSelfLoop
|
|
135
140
|
? [
|
|
136
141
|
{
|
|
@@ -138,7 +143,7 @@ function EdgeEditor({ selectedEdge }: EdgeEditorProps) {
|
|
|
138
143
|
label: (
|
|
139
144
|
<div>
|
|
140
145
|
<Badge variant="code" className="my-0.5">
|
|
141
|
-
{
|
|
146
|
+
{sourceName}
|
|
142
147
|
</Badge>{' '}
|
|
143
148
|
can transfer to itself
|
|
144
149
|
</div>
|
|
@@ -151,11 +156,11 @@ function EdgeEditor({ selectedEdge }: EdgeEditorProps) {
|
|
|
151
156
|
label: (
|
|
152
157
|
<div>
|
|
153
158
|
<Badge variant="code" className="my-0.5">
|
|
154
|
-
{
|
|
159
|
+
{sourceName}
|
|
155
160
|
</Badge>{' '}
|
|
156
161
|
can transfer to{' '}
|
|
157
162
|
<Badge variant="code" className="my-0.5">
|
|
158
|
-
{
|
|
163
|
+
{targetName}
|
|
159
164
|
</Badge>
|
|
160
165
|
</div>
|
|
161
166
|
),
|
|
@@ -165,11 +170,11 @@ function EdgeEditor({ selectedEdge }: EdgeEditorProps) {
|
|
|
165
170
|
label: (
|
|
166
171
|
<div>
|
|
167
172
|
<Badge variant="code" className="my-0.5">
|
|
168
|
-
{
|
|
173
|
+
{targetName}
|
|
169
174
|
</Badge>{' '}
|
|
170
175
|
can transfer to{' '}
|
|
171
176
|
<Badge variant="code" className="my-0.5">
|
|
172
|
-
{
|
|
177
|
+
{sourceName}
|
|
173
178
|
</Badge>
|
|
174
179
|
</div>
|
|
175
180
|
),
|
|
@@ -183,7 +188,7 @@ function EdgeEditor({ selectedEdge }: EdgeEditorProps) {
|
|
|
183
188
|
label: (
|
|
184
189
|
<div>
|
|
185
190
|
<Badge variant="code" className="my-0.5">
|
|
186
|
-
{
|
|
191
|
+
{sourceName}
|
|
187
192
|
</Badge>{' '}
|
|
188
193
|
can delegate to itself
|
|
189
194
|
</div>
|
|
@@ -196,11 +201,11 @@ function EdgeEditor({ selectedEdge }: EdgeEditorProps) {
|
|
|
196
201
|
label: (
|
|
197
202
|
<div>
|
|
198
203
|
<Badge variant="code" className="my-0.5">
|
|
199
|
-
{
|
|
204
|
+
{sourceName}
|
|
200
205
|
</Badge>{' '}
|
|
201
206
|
can delegate to{' '}
|
|
202
207
|
<Badge variant="code" className="my-0.5">
|
|
203
|
-
{
|
|
208
|
+
{targetName}
|
|
204
209
|
</Badge>
|
|
205
210
|
</div>
|
|
206
211
|
),
|
|
@@ -210,7 +215,7 @@ function EdgeEditor({ selectedEdge }: EdgeEditorProps) {
|
|
|
210
215
|
label: (
|
|
211
216
|
<div>
|
|
212
217
|
<Badge variant="code" className="my-0.5">
|
|
213
|
-
{
|
|
218
|
+
{targetName}
|
|
214
219
|
</Badge>{' '}
|
|
215
220
|
can delegate to{' '}
|
|
216
221
|
<Badge variant="code" className="my-0.5">
|
|
@@ -34,7 +34,7 @@ const ExecutionLimitInheritanceInfo = () => {
|
|
|
34
34
|
<ul className="space-y-1.5 list-disc list-outside pl-4">
|
|
35
35
|
<li>
|
|
36
36
|
<span className="font-medium">transferCountIs</span>: Project → Agent only (controls
|
|
37
|
-
transfers between agents)
|
|
37
|
+
transfers between sub agents)
|
|
38
38
|
</li>
|
|
39
39
|
<li>
|
|
40
40
|
<span className="font-medium">Explicit settings</span> always take precedence over inherited
|
|
@@ -45,8 +45,8 @@ const ExecutionLimitInheritanceInfo = () => {
|
|
|
45
45
|
set anywhere
|
|
46
46
|
</li>
|
|
47
47
|
<li>
|
|
48
|
-
<span className="font-medium">Agent scope</span>: This limit applies to all agents
|
|
49
|
-
this agent
|
|
48
|
+
<span className="font-medium">Agent scope</span>: This limit applies to all sub agents
|
|
49
|
+
within this agent
|
|
50
50
|
</li>
|
|
51
51
|
</ul>
|
|
52
52
|
);
|
|
@@ -56,7 +56,7 @@ function MetadataEditor() {
|
|
|
56
56
|
const params = useParams();
|
|
57
57
|
const metadata = useAgentStore((state) => state.metadata);
|
|
58
58
|
const { agentId, tenantId, projectId } = params;
|
|
59
|
-
const { id, name, description, contextConfig, models, stopWhen,
|
|
59
|
+
const { id, name, description, contextConfig, models, stopWhen, prompt, statusUpdates } =
|
|
60
60
|
metadata;
|
|
61
61
|
const { INKEEP_AGENTS_RUN_API_URL } = useRuntimeConfig();
|
|
62
62
|
const agentUrl = `${INKEEP_AGENTS_RUN_API_URL}/api/chat`;
|
|
@@ -149,14 +149,14 @@ function MetadataEditor() {
|
|
|
149
149
|
<ExpandableTextArea
|
|
150
150
|
id="agent-prompt"
|
|
151
151
|
label="Agent prompt"
|
|
152
|
-
value={
|
|
153
|
-
onChange={(value) => updateMetadata('
|
|
152
|
+
value={prompt || ''}
|
|
153
|
+
onChange={(value) => updateMetadata('prompt', value)}
|
|
154
154
|
placeholder="System-level instructions for this agent..."
|
|
155
155
|
className="max-h-96"
|
|
156
156
|
/>
|
|
157
157
|
<p className="text-xs text-muted-foreground">
|
|
158
158
|
System-level prompt that defines the intended audience and overall goal of this agent.
|
|
159
|
-
Applied to all agents.
|
|
159
|
+
Applied to all sub agents.
|
|
160
160
|
</p>
|
|
161
161
|
</div>
|
|
162
162
|
<Separator />
|
|
@@ -165,7 +165,7 @@ function MetadataEditor() {
|
|
|
165
165
|
<div className="space-y-8">
|
|
166
166
|
<SectionHeader
|
|
167
167
|
title="Default models"
|
|
168
|
-
description="Set default models that will be inherited by agents that don't have their own models configured."
|
|
168
|
+
description="Set default models that will be inherited by sub agents that don't have their own models configured."
|
|
169
169
|
titleTooltip={
|
|
170
170
|
<div>
|
|
171
171
|
<p>How model inheritance works:</p>
|
|
@@ -44,7 +44,7 @@ export function ExternalAgentNodeEditor({
|
|
|
44
44
|
<div className="space-y-8 flex flex-col">
|
|
45
45
|
<p className="text-sm text-muted-foreground">
|
|
46
46
|
External agents are agents that live outside of your project that can communicate using the
|
|
47
|
-
A2A (Agent-to-Agent) protocol. External agents enable you to delegate tasks between
|
|
47
|
+
A2A (Agent-to-Agent) protocol. External agents enable you to delegate tasks between agents
|
|
48
48
|
within the agent framework or to third-party services.
|
|
49
49
|
</p>
|
|
50
50
|
|
|
@@ -16,8 +16,8 @@ import {
|
|
|
16
16
|
getCurrentHeadersForNode,
|
|
17
17
|
getCurrentSelectedToolsForNode,
|
|
18
18
|
} from '@/lib/utils/orphaned-tools-detector';
|
|
19
|
-
import type { MCPNodeData } from '../../configuration/node-types';
|
|
20
19
|
import type { AgentToolConfigLookup } from '../../agent';
|
|
20
|
+
import type { MCPNodeData } from '../../configuration/node-types';
|
|
21
21
|
|
|
22
22
|
interface MCPServerNodeEditorProps {
|
|
23
23
|
selectedNode: Node<MCPNodeData>;
|
|
@@ -61,7 +61,10 @@ export function MCPServerNodeEditor({
|
|
|
61
61
|
|
|
62
62
|
const activeTools = getActiveTools({
|
|
63
63
|
availableTools: availableTools,
|
|
64
|
-
activeTools:
|
|
64
|
+
activeTools:
|
|
65
|
+
toolData?.config && toolData.config.type === 'mcp'
|
|
66
|
+
? toolData.config.mcp.activeTools
|
|
67
|
+
: undefined,
|
|
65
68
|
});
|
|
66
69
|
|
|
67
70
|
// Handle missing tool data
|
|
@@ -69,7 +72,7 @@ export function MCPServerNodeEditor({
|
|
|
69
72
|
return (
|
|
70
73
|
<div className="flex items-center justify-center p-4">
|
|
71
74
|
<div className="text-sm text-muted-foreground">
|
|
72
|
-
Tool data not found for {selectedNode.data.toolId}
|
|
75
|
+
Tool data not found for {selectedNode.data.toolId}.
|
|
73
76
|
</div>
|
|
74
77
|
</div>
|
|
75
78
|
);
|
|
@@ -191,7 +194,9 @@ export function MCPServerNodeEditor({
|
|
|
191
194
|
<Input
|
|
192
195
|
id="url"
|
|
193
196
|
name="url"
|
|
194
|
-
value={
|
|
197
|
+
value={
|
|
198
|
+
toolData?.config && toolData.config.type === 'mcp' ? toolData.config.mcp.server.url : ''
|
|
199
|
+
}
|
|
195
200
|
onChange={handleInputChange}
|
|
196
201
|
placeholder="https://mcp.inkeep.com"
|
|
197
202
|
disabled
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ExpandableJsonEditor } from '@/components/form/expandable-json-editor';
|
|
2
1
|
import type { AgentNodeData } from '@/components/agent/configuration/node-types';
|
|
2
|
+
import { ExpandableJsonEditor } from '@/components/form/expandable-json-editor';
|
|
3
3
|
import { ModelInheritanceInfo } from '@/components/projects/form/model-inheritance-info';
|
|
4
4
|
import {
|
|
5
5
|
getModelInheritanceStatus,
|
|
@@ -29,7 +29,7 @@ export function ModelSection({
|
|
|
29
29
|
<div className="space-y-8">
|
|
30
30
|
<SectionHeader
|
|
31
31
|
title="Models"
|
|
32
|
-
description="Configure agent-level models."
|
|
32
|
+
description="Configure sub agent-level models."
|
|
33
33
|
titleTooltip={
|
|
34
34
|
<div>
|
|
35
35
|
<p>How model inheritance works:</p>
|
|
@@ -59,7 +59,9 @@ export function ModelSection({
|
|
|
59
59
|
</div>
|
|
60
60
|
}
|
|
61
61
|
/>
|
|
62
|
-
<p className="text-xs text-muted-foreground">
|
|
62
|
+
<p className="text-xs text-muted-foreground">
|
|
63
|
+
Primary model for general sub agent responses
|
|
64
|
+
</p>
|
|
63
65
|
</div>
|
|
64
66
|
|
|
65
67
|
<CollapsibleSettings defaultOpen={!!hasAdvancedOptions} title="Advanced Model Options">
|
|
@@ -26,7 +26,7 @@ const ExecutionLimitInheritanceInfo = () => {
|
|
|
26
26
|
return (
|
|
27
27
|
<ul className="space-y-1.5 list-disc list-outside pl-4">
|
|
28
28
|
<li>
|
|
29
|
-
<span className="font-medium">stepCountIs</span>: Project → Agent only (agent-level
|
|
29
|
+
<span className="font-medium">stepCountIs</span>: Project → Agent only (sub agent-level
|
|
30
30
|
execution limit)
|
|
31
31
|
</li>
|
|
32
32
|
<li>
|
|
@@ -35,10 +35,10 @@ const ExecutionLimitInheritanceInfo = () => {
|
|
|
35
35
|
</li>
|
|
36
36
|
<li>
|
|
37
37
|
<span className="font-medium">Agent scope</span>: This limit applies only to this specific
|
|
38
|
-
agent's execution steps
|
|
38
|
+
sub agent's execution steps
|
|
39
39
|
</li>
|
|
40
40
|
<li>
|
|
41
|
-
<span className="font-medium">Independent from transfers</span>: Steps are counted per
|
|
41
|
+
<span className="font-medium">Independent from transfers</span>: Steps are counted per sub
|
|
42
42
|
agent, transfers are counted per conversation
|
|
43
43
|
</li>
|
|
44
44
|
</ul>
|
|
@@ -119,7 +119,7 @@ export function SubAgentNodeEditor({
|
|
|
119
119
|
onChange={(e) => updatePath('id', e.target.value)}
|
|
120
120
|
placeholder="my-agent"
|
|
121
121
|
error={getFieldError('id')}
|
|
122
|
-
description="Choose a unique identifier for this sub
|
|
122
|
+
description="Choose a unique identifier for this sub agent. Using an existing id will replace that sub agent."
|
|
123
123
|
isRequired
|
|
124
124
|
/>
|
|
125
125
|
<TextareaField
|
|
@@ -129,7 +129,7 @@ export function SubAgentNodeEditor({
|
|
|
129
129
|
label="Description"
|
|
130
130
|
value={selectedNode.data.description || ''}
|
|
131
131
|
onChange={(e) => updatePath('description', e.target.value)}
|
|
132
|
-
placeholder="This agent is responsible for..."
|
|
132
|
+
placeholder="This sub agent is responsible for..."
|
|
133
133
|
error={getFieldError('description')}
|
|
134
134
|
/>
|
|
135
135
|
|
|
@@ -160,7 +160,7 @@ export function SubAgentNodeEditor({
|
|
|
160
160
|
<div className="space-y-8">
|
|
161
161
|
<SectionHeader
|
|
162
162
|
title="Execution limits"
|
|
163
|
-
description="Configure agent-level execution limits for steps within this agent."
|
|
163
|
+
description="Configure sub agent-level execution limits for steps within this sub agent."
|
|
164
164
|
titleTooltip={
|
|
165
165
|
<div>
|
|
166
166
|
<p>How execution limit inheritance works:</p>
|
|
@@ -197,7 +197,7 @@ export function SubAgentNodeEditor({
|
|
|
197
197
|
placeholder="50"
|
|
198
198
|
/>
|
|
199
199
|
<p className="text-xs text-muted-foreground">
|
|
200
|
-
Maximum number of execution steps for this agent (defaults to 50 if not set)
|
|
200
|
+
Maximum number of execution steps for this sub agent (defaults to 50 if not set)
|
|
201
201
|
</p>
|
|
202
202
|
</div>
|
|
203
203
|
</div>
|
|
@@ -127,7 +127,7 @@ export function ArtifactComponentForm({
|
|
|
127
127
|
name="props"
|
|
128
128
|
label="Props (JSON schema with inPreview indicators)"
|
|
129
129
|
placeholder="Enter a valid JSON Schema with inPreview flags, or leave empty to save entire tool result..."
|
|
130
|
-
description="Optional: Define specific fields with inPreview flags, or leave empty to capture the complete tool response"
|
|
130
|
+
description="Optional: Define specific fields with inPreview flags, or leave empty to capture the complete tool response."
|
|
131
131
|
/>
|
|
132
132
|
<Button type="submit" disabled={isSubmitting}>
|
|
133
133
|
Save
|
|
@@ -8,6 +8,7 @@ import { GenericInput } from '@/components/form/generic-input';
|
|
|
8
8
|
import { GenericTextarea } from '@/components/form/generic-textarea';
|
|
9
9
|
import { JsonSchemaInput } from '@/components/form/json-schema-input';
|
|
10
10
|
import { Button } from '@/components/ui/button';
|
|
11
|
+
import { ExternalLink } from '@/components/ui/external-link';
|
|
11
12
|
import { Form } from '@/components/ui/form';
|
|
12
13
|
import { useAutoPrefillId } from '@/hooks/use-auto-prefill-id';
|
|
13
14
|
import {
|
|
@@ -93,7 +94,15 @@ export function DataComponentForm({
|
|
|
93
94
|
label="Name"
|
|
94
95
|
placeholder="ListOrders"
|
|
95
96
|
description={
|
|
96
|
-
|
|
97
|
+
<>
|
|
98
|
+
This name is used to identify the component in chat widget integration.{' '}
|
|
99
|
+
<ExternalLink
|
|
100
|
+
href="https://docs.inkeep.com/typescript-sdk/structured-outputs/data-components#frontend-integration"
|
|
101
|
+
target="_blank"
|
|
102
|
+
>
|
|
103
|
+
Learn more
|
|
104
|
+
</ExternalLink>
|
|
105
|
+
</>
|
|
97
106
|
}
|
|
98
107
|
isRequired
|
|
99
108
|
/>
|
|
@@ -17,7 +17,7 @@ interface FormFieldWrapperProps<T extends FieldValues> {
|
|
|
17
17
|
name: FieldPath<T>;
|
|
18
18
|
label: string;
|
|
19
19
|
children: (field: FieldValues) => React.ReactNode;
|
|
20
|
-
description?: string;
|
|
20
|
+
description?: string | React.ReactNode;
|
|
21
21
|
rules?: RegisterOptions<T, FieldPath<T>>;
|
|
22
22
|
isRequired?: boolean;
|
|
23
23
|
}
|
|
@@ -204,7 +204,7 @@ export function ProjectModelsSection({ control }: ProjectModelsSectionProps) {
|
|
|
204
204
|
<div>
|
|
205
205
|
<Label className="text-sm font-medium">Default models</Label>
|
|
206
206
|
<p className="text-sm text-muted-foreground mt-1">
|
|
207
|
-
Set default models that will be inherited by
|
|
207
|
+
Set default models that will be inherited by agents and sub agents in this project.
|
|
208
208
|
</p>
|
|
209
209
|
</div>
|
|
210
210
|
|
|
@@ -48,7 +48,7 @@ export function ProjectSandboxSection({ control }: ProjectSandboxSectionProps) {
|
|
|
48
48
|
<div>
|
|
49
49
|
<Label className="text-sm font-medium">Sandbox configuration</Label>
|
|
50
50
|
<p className="text-sm text-muted-foreground mt-1">
|
|
51
|
-
Configure the execution environment for functions in this project
|
|
51
|
+
Configure the execution environment for functions in this project.
|
|
52
52
|
</p>
|
|
53
53
|
</div>
|
|
54
54
|
|
|
@@ -36,7 +36,8 @@ export function ProjectStopWhenSection({ control }: ProjectStopWhenSectionProps)
|
|
|
36
36
|
<div>
|
|
37
37
|
<Label className="text-sm font-medium">Execution limits</Label>
|
|
38
38
|
<p className="text-sm text-muted-foreground mt-1">
|
|
39
|
-
Set default execution limits that will be inherited by
|
|
39
|
+
Set default execution limits that will be inherited by agents and sub agents in this
|
|
40
|
+
project.
|
|
40
41
|
</p>
|
|
41
42
|
</div>
|
|
42
43
|
|
|
@@ -52,7 +52,7 @@ export function ProjectSelector({ projects, selectedProjectId, tenantId }: Proje
|
|
|
52
52
|
</PopoverTrigger>
|
|
53
53
|
<PopoverContent className="w-[var(--radix-popover-trigger-width)] p-0">
|
|
54
54
|
<Command>
|
|
55
|
-
<CommandEmpty>No projects found
|
|
55
|
+
<CommandEmpty>No projects found.</CommandEmpty>
|
|
56
56
|
<CommandList className="max-h-64">
|
|
57
57
|
<CommandGroup>
|
|
58
58
|
{projects.map((project) => (
|
|
@@ -394,11 +394,11 @@ export function AICallsBreakdown({ onBack }: AICallsBreakdownProps) {
|
|
|
394
394
|
) : (
|
|
395
395
|
<div className="text-center py-8">
|
|
396
396
|
<Brain className="h-8 w-8 text-muted-foreground mx-auto mb-2" />
|
|
397
|
-
<p className="text-sm text-muted-foreground">No AI calls found
|
|
397
|
+
<p className="text-sm text-muted-foreground">No AI calls found.</p>
|
|
398
398
|
<p className="text-xs text-muted-foreground/70 mt-1">
|
|
399
399
|
{selectedAgent === 'all'
|
|
400
|
-
? 'No AI calls detected in the selected time range'
|
|
401
|
-
: 'No AI calls found for the selected agent'}
|
|
400
|
+
? 'No AI calls detected in the selected time range.'
|
|
401
|
+
: 'No AI calls found for the selected agent.'}
|
|
402
402
|
</p>
|
|
403
403
|
</div>
|
|
404
404
|
)}
|
|
@@ -452,11 +452,11 @@ export function AICallsBreakdown({ onBack }: AICallsBreakdownProps) {
|
|
|
452
452
|
) : (
|
|
453
453
|
<div className="text-center py-8">
|
|
454
454
|
<Cpu className="h-8 w-8 text-muted-foreground mx-auto mb-2" />
|
|
455
|
-
<p className="text-sm text-muted-foreground">No model data found
|
|
455
|
+
<p className="text-sm text-muted-foreground">No model data found.</p>
|
|
456
456
|
<p className="text-xs text-muted-foreground/70 mt-1">
|
|
457
457
|
{selectedAgent === 'all'
|
|
458
|
-
? 'No model data detected in the selected time range'
|
|
459
|
-
: 'No model data found for the selected agent'}
|
|
458
|
+
? 'No model data detected in the selected time range.'
|
|
459
|
+
: 'No model data found for the selected agent.'}
|
|
460
460
|
</p>
|
|
461
461
|
</div>
|
|
462
462
|
)}
|
|
@@ -19,11 +19,13 @@ import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
|
|
|
19
19
|
import { ExternalLink } from '@/components/ui/external-link';
|
|
20
20
|
import { ResizablePanelGroup } from '@/components/ui/resizable';
|
|
21
21
|
import { Skeleton } from '@/components/ui/skeleton';
|
|
22
|
+
import { useRuntimeConfig } from '@/contexts/runtime-config-context';
|
|
22
23
|
import { getSignozTracesExplorerUrl } from '@/lib/utils/signoz-links';
|
|
24
|
+
import { copyTraceToClipboard } from '@/lib/utils/trace-formatter';
|
|
23
25
|
import { SignozLink } from './signoz-link';
|
|
24
26
|
import { InfoRow } from './timeline/blocks';
|
|
25
27
|
import { TimelineWrapper } from './timeline/timeline-wrapper';
|
|
26
|
-
import {
|
|
28
|
+
import { toast } from 'sonner';
|
|
27
29
|
|
|
28
30
|
interface ConversationDetailProps {
|
|
29
31
|
conversationId: string;
|
|
@@ -34,9 +36,35 @@ export function ConversationDetail({ conversationId, onBack }: ConversationDetai
|
|
|
34
36
|
const [conversation, setConversation] = useState<ConversationDetailType | null>(null);
|
|
35
37
|
const [loading, setLoading] = useState(true);
|
|
36
38
|
const [error, setError] = useState<string | null>(null);
|
|
39
|
+
const [isCopying, setIsCopying] = useState(false);
|
|
37
40
|
const { tenantId, projectId } = useParams();
|
|
38
41
|
const { SIGNOZ_URL } = useRuntimeConfig();
|
|
39
42
|
|
|
43
|
+
const handleCopyTrace = async () => {
|
|
44
|
+
if (!conversation) return;
|
|
45
|
+
|
|
46
|
+
setIsCopying(true);
|
|
47
|
+
try {
|
|
48
|
+
const result = await copyTraceToClipboard(conversation);
|
|
49
|
+
if (result.success) {
|
|
50
|
+
toast.success('Trace copied to clipboard', {
|
|
51
|
+
description: 'The OTEL trace has been copied successfully.',
|
|
52
|
+
});
|
|
53
|
+
} else {
|
|
54
|
+
toast.error('Failed to copy trace', {
|
|
55
|
+
description: result.error || 'An unknown error occurred',
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
} catch (err) {
|
|
59
|
+
toast.error('Failed to copy trace', {
|
|
60
|
+
description: err instanceof Error ? err.message : 'An unknown error occurred',
|
|
61
|
+
});
|
|
62
|
+
} finally {
|
|
63
|
+
await new Promise((resolve) => setTimeout(resolve, 200));
|
|
64
|
+
setIsCopying(false);
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
|
|
40
68
|
useEffect(() => {
|
|
41
69
|
const fetchConversationDetail = async () => {
|
|
42
70
|
try {
|
|
@@ -80,7 +108,7 @@ export function ConversationDetail({ conversationId, onBack }: ConversationDetai
|
|
|
80
108
|
<CardTitle className="text-destructive">Error Loading Conversation</CardTitle>
|
|
81
109
|
</CardHeader>
|
|
82
110
|
<CardContent>
|
|
83
|
-
<p className="text-sm text-muted-foreground">{error || 'Conversation not found'}</p>
|
|
111
|
+
<p className="text-sm text-muted-foreground">{error || 'Conversation not found.'}</p>
|
|
84
112
|
{onBack && (
|
|
85
113
|
<Button onClick={onBack} variant="outline" className="mt-4">
|
|
86
114
|
<ArrowLeft className="h-4 w-4 mr-2" />
|
|
@@ -216,7 +244,7 @@ export function ConversationDetail({ conversationId, onBack }: ConversationDetai
|
|
|
216
244
|
) : (
|
|
217
245
|
<div className="text-center">
|
|
218
246
|
<div className="text-2xl font-bold text-muted-foreground mb-1">0</div>
|
|
219
|
-
<p className="text-xs text-muted-foreground">No AI calls found
|
|
247
|
+
<p className="text-xs text-muted-foreground">No AI calls found.</p>
|
|
220
248
|
</div>
|
|
221
249
|
)}
|
|
222
250
|
</div>
|
|
@@ -243,16 +271,24 @@ export function ConversationDetail({ conversationId, onBack }: ConversationDetai
|
|
|
243
271
|
<div className="space-y-1">
|
|
244
272
|
{errors > 0 && (
|
|
245
273
|
<div className="flex items-baseline gap-2">
|
|
246
|
-
<span className="text-2xl font-bold font-mono text-red-600">
|
|
247
|
-
|
|
274
|
+
<span className="text-2xl font-bold font-mono text-red-600">
|
|
275
|
+
{errors}
|
|
276
|
+
</span>
|
|
277
|
+
<span className="text-sm text-muted-foreground">
|
|
278
|
+
error{errors > 1 ? 's' : ''}
|
|
279
|
+
</span>
|
|
280
|
+
</div>
|
|
281
|
+
)}
|
|
282
|
+
{warnings > 0 && (
|
|
283
|
+
<div className="flex items-baseline gap-2">
|
|
284
|
+
<span className="text-2xl font-bold font-mono text-yellow-500">
|
|
285
|
+
{warnings}
|
|
286
|
+
</span>
|
|
287
|
+
<span className="text-sm text-muted-foreground">
|
|
288
|
+
warning{warnings > 1 ? 's' : ''}
|
|
289
|
+
</span>
|
|
248
290
|
</div>
|
|
249
291
|
)}
|
|
250
|
-
{warnings > 0 && (
|
|
251
|
-
<div className="flex items-baseline gap-2">
|
|
252
|
-
<span className="text-2xl font-bold font-mono text-yellow-500">{warnings}</span>
|
|
253
|
-
<span className="text-sm text-muted-foreground">warning{warnings > 1 ? 's' : ''}</span>
|
|
254
|
-
</div>
|
|
255
|
-
)}
|
|
256
292
|
</div>
|
|
257
293
|
) : (
|
|
258
294
|
<div>
|
|
@@ -266,7 +302,10 @@ export function ConversationDetail({ conversationId, onBack }: ConversationDetai
|
|
|
266
302
|
size="sm"
|
|
267
303
|
className="mt-3 w-full flex items-center justify-center gap-1"
|
|
268
304
|
onClick={() => {
|
|
269
|
-
window.open(
|
|
305
|
+
window.open(
|
|
306
|
+
getSignozTracesExplorerUrl(conversationId as string, SIGNOZ_URL),
|
|
307
|
+
'_blank'
|
|
308
|
+
);
|
|
270
309
|
}}
|
|
271
310
|
>
|
|
272
311
|
<ExternalLinkIcon className="h-3 w-3" />
|
|
@@ -286,7 +325,12 @@ export function ConversationDetail({ conversationId, onBack }: ConversationDetai
|
|
|
286
325
|
direction="horizontal"
|
|
287
326
|
className="h-full border rounded-xl bg-background"
|
|
288
327
|
>
|
|
289
|
-
<TimelineWrapper
|
|
328
|
+
<TimelineWrapper
|
|
329
|
+
conversation={conversation}
|
|
330
|
+
conversationId={conversationId}
|
|
331
|
+
onCopyTrace={handleCopyTrace}
|
|
332
|
+
isCopying={isCopying}
|
|
333
|
+
/>
|
|
290
334
|
</ResizablePanelGroup>
|
|
291
335
|
</div>
|
|
292
336
|
</div>
|
|
@@ -162,10 +162,10 @@ export function ConversationStatsCard({
|
|
|
162
162
|
<EmptyState
|
|
163
163
|
title={
|
|
164
164
|
localQuery
|
|
165
|
-
? 'No conversations found'
|
|
165
|
+
? 'No conversations found.'
|
|
166
166
|
: selectedTimeRange === '24h'
|
|
167
167
|
? 'No conversation statistics found.'
|
|
168
|
-
: `No data for ${selectedTimeRange === '7d' ? '7 days' : selectedTimeRange === '15d' ? '15 days' : 'this time range'}
|
|
168
|
+
: `No data for ${selectedTimeRange === '7d' ? '7 days' : selectedTimeRange === '15d' ? '15 days' : 'this time range'}.`
|
|
169
169
|
}
|
|
170
170
|
description={
|
|
171
171
|
localQuery
|
|
@@ -52,7 +52,7 @@ export const AgentFilter = ({ onSelect, selectedValue }: AgentFilterProps) => {
|
|
|
52
52
|
return (
|
|
53
53
|
<Combobox
|
|
54
54
|
defaultValue={selectedValue}
|
|
55
|
-
notFoundMessage={'No
|
|
55
|
+
notFoundMessage={'No agents found.'}
|
|
56
56
|
onSelect={(value) => {
|
|
57
57
|
onSelect(value);
|
|
58
58
|
}}
|
|
@@ -74,7 +74,7 @@ export function renderPanelContent({
|
|
|
74
74
|
const AdvancedBlock = span ? (
|
|
75
75
|
<SpanAttributes span={span.data} />
|
|
76
76
|
) : (
|
|
77
|
-
<div className="text-center py-4 text-xs text-muted-foreground">Span not found
|
|
77
|
+
<div className="text-center py-4 text-xs text-muted-foreground">Span not found.</div>
|
|
78
78
|
);
|
|
79
79
|
|
|
80
80
|
switch (selected.type) {
|
|
@@ -261,14 +261,10 @@ export function renderPanelContent({
|
|
|
261
261
|
<>
|
|
262
262
|
<Section>
|
|
263
263
|
<LabeledBlock label="From sub agent">
|
|
264
|
-
<Badge variant="code">
|
|
265
|
-
{a.transferFromSubAgentId || 'Unknown sub agent'}
|
|
266
|
-
</Badge>
|
|
264
|
+
<Badge variant="code">{a.transferFromSubAgentId || 'Unknown sub agent'}</Badge>
|
|
267
265
|
</LabeledBlock>
|
|
268
266
|
<LabeledBlock label="To sub agent">
|
|
269
|
-
<Badge variant="code">
|
|
270
|
-
{a.transferToSubAgentId || 'Unknown target'}
|
|
271
|
-
</Badge>
|
|
267
|
+
<Badge variant="code">{a.transferToSubAgentId || 'Unknown target'}</Badge>
|
|
272
268
|
</LabeledBlock>
|
|
273
269
|
<Info
|
|
274
270
|
label="Tool name"
|