@inkeep/agents-manage-ui 0.8.2 → 0.8.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 +80 -80
- package/.next/standalone/agents-manage-ui/.next/app-path-routes-manifest.json +5 -5
- package/.next/standalone/agents-manage-ui/.next/build-manifest.json +2 -2
- package/.next/standalone/agents-manage-ui/.next/prerender-manifest.json +15 -15
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/page.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/api-keys/page.js +3 -3
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/api-keys/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifact-components/[artifactComponentId]/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifact-components/[artifactComponentId]/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifact-components/[artifactComponentId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifact-components/new/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifact-components/new/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifact-components/new/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifact-components/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifact-components/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/page.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/data-components/[dataComponentId]/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/data-components/[dataComponentId]/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/data-components/[dataComponentId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/data-components/new/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/data-components/new/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/data-components/new/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/data-components/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/data-components/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/[graphId]/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/[graphId]/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/[graphId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/new/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/new/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/new/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page.js +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.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/new/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/settings/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/settings/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/page.js +3 -3
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/page.js +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 +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/_not-found.html +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/_not-found.rsc +8 -8
- 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 +5 -5
- package/.next/standalone/agents-manage-ui/.next/server/chunks/2284.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/server/chunks/{2124.js → 2539.js} +3 -3
- package/.next/standalone/agents-manage-ui/.next/server/chunks/2949.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/4227.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/server/chunks/464.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/server/chunks/5232.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/6536.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/server/chunks/6608.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/71.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/8449.js +4 -4
- package/.next/standalone/agents-manage-ui/.next/server/chunks/9751.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/server/chunks/9808.js +1 -0
- 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/{7820-5628646ae2b0f1f6.js → 2295-efa0524459d391a1.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{8158-8615ec07e7ee270b.js → 5485-54b29c2f14ef310c.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{6497-4e922cb6838db594.js → 6497-d25dae53e4f0b68a.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/7167-a7cdfdcc0a7d570c.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/78-67fd0a1c39c0b52c.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/api-keys/page-3f1dd352e744cdaa.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifact-components/[artifactComponentId]/{page-a902479408487201.js → page-9a91932761172bed.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifact-components/new/{page-a902479408487201.js → page-9a91932761172bed.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifact-components/page-08e7aea35bb61fe6.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page-74f71d537bc6888f.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page-4bb610b8d7251802.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/{page-cda60ce5b7814494.js → page-f1dc5567afe88415.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/page-5af872a347267bf2.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/data-components/[dataComponentId]/{page-6c3189c5a6dcff34.js → page-54e99d376c05edcc.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/data-components/new/{page-6c3189c5a6dcff34.js → page-54e99d376c05edcc.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/data-components/page-041c151cd28994b6.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/graphs/{page-e1d1660ac8ad81ed.js → page-e5e56ae6ca93fac2.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/{page-7e4097fbe767b09f.js → page-0eba7ac0af2af2ea.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/new/{page-16c2d4ef3b42b6ca.js → page-ba35f6e74cbbdbb2.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/page-09a30d45de0ad5c7.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/settings/{page-92fd96a32dea362c.js → page-1db5cec98ca637c9.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/page-74dbf4c63d9e51f3.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/page-68acff22390ba388.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/{layout-a26e8df8afd6fc35.js → layout-844c57f2fd925741.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]/graphs/[graphId]/page.tsx +12 -3
- package/src/app/[tenantId]/projects/[projectId]/graphs/new/page.tsx +6 -1
- package/src/components/graph/configuration/node-types.tsx +2 -0
- package/src/components/graph/graph.tsx +6 -0
- package/src/components/graph/sidepane/nodes/credential-selector.tsx +173 -0
- package/src/components/graph/sidepane/nodes/external-agent-node-editor.tsx +27 -5
- package/src/components/graph/sidepane/nodes/model-selector.tsx +229 -216
- package/src/components/graph/sidepane/sidepane.tsx +4 -0
- package/src/components/projects/form/form-configuration.ts +1 -4
- package/src/components/projects/form/project-form.tsx +35 -3
- package/src/components/projects/form/project-models-section.tsx +52 -49
- package/src/features/graph/domain/deserialize.ts +2 -1
- package/src/features/graph/domain/serialize.ts +8 -0
- package/src/lib/actions/credentials.ts +31 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/295.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/4446.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/5117.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/5330.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/640.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/83.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/4130-ab98ce21ff35281d.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/7167-4fa838f0f7b317b3.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/api-keys/page-02c5c9c88d7ab2b3.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifact-components/page-bbd70d3db34aff36.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page-c6e9e91ec8fc537d.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page-dd9b869214273592.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/page-3a4414df3241627d.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/data-components/page-24e1074f8fa32f75.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/page-e9de32a9a6b2e2de.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/page-1c8856f3de066bd4.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/page-babbd13ec2c08665.js +0 -1
- /package/.next/standalone/agents-manage-ui/.next/static/{t339BszWE91q9Cp5Tl1vT → Do4JjeG3oXsSE-JDPd5lz}/_buildManifest.js +0 -0
- /package/.next/standalone/agents-manage-ui/.next/static/{t339BszWE91q9Cp5Tl1vT → Do4JjeG3oXsSE-JDPd5lz}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { ChevronsUpDown } from 'lucide-react';
|
|
4
|
+
import { useState } from 'react';
|
|
5
|
+
import { Badge } from '@/components/ui/badge';
|
|
6
|
+
import { Button } from '@/components/ui/button';
|
|
7
|
+
import {
|
|
8
|
+
Command,
|
|
9
|
+
CommandEmpty,
|
|
10
|
+
CommandGroup,
|
|
11
|
+
CommandInput,
|
|
12
|
+
CommandItem,
|
|
13
|
+
CommandList,
|
|
14
|
+
} from '@/components/ui/command';
|
|
15
|
+
import { Label } from '@/components/ui/label';
|
|
16
|
+
import { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover';
|
|
17
|
+
import type { Credential } from '@/lib/api/credentials';
|
|
18
|
+
|
|
19
|
+
// Header component - shows label and status
|
|
20
|
+
interface CredentialHeaderProps {
|
|
21
|
+
label: string;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function CredentialHeader({ label }: CredentialHeaderProps) {
|
|
25
|
+
return (
|
|
26
|
+
<div className="flex gap-2">
|
|
27
|
+
<Label>{label}</Label>
|
|
28
|
+
</div>
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// Dropdown for selecting credentials
|
|
33
|
+
interface CredentialDropdownProps {
|
|
34
|
+
selectedCredentialId: string | null;
|
|
35
|
+
onSelect: (credentialId: string | null) => void;
|
|
36
|
+
availableCredentials: Credential[];
|
|
37
|
+
placeholder?: string;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
function CredentialDropdown({
|
|
41
|
+
selectedCredentialId,
|
|
42
|
+
onSelect,
|
|
43
|
+
availableCredentials,
|
|
44
|
+
placeholder = 'Select credential...',
|
|
45
|
+
}: CredentialDropdownProps) {
|
|
46
|
+
const [open, setOpen] = useState(false);
|
|
47
|
+
|
|
48
|
+
return (
|
|
49
|
+
<div className="flex w-full">
|
|
50
|
+
<Popover open={open} onOpenChange={setOpen}>
|
|
51
|
+
<PopoverTrigger asChild>
|
|
52
|
+
<Button
|
|
53
|
+
variant="outline"
|
|
54
|
+
role="combobox"
|
|
55
|
+
aria-expanded={open}
|
|
56
|
+
className="w-full justify-between bg-transparent text-gray-700"
|
|
57
|
+
>
|
|
58
|
+
{selectedCredentialId === null ? (
|
|
59
|
+
<div className="text-muted-foreground">No Authentication</div>
|
|
60
|
+
) : selectedCredentialId ? (
|
|
61
|
+
<div className="flex items-center gap-2">
|
|
62
|
+
<span className="font-medium">
|
|
63
|
+
{availableCredentials.find((c) => c.id === selectedCredentialId)?.id ||
|
|
64
|
+
selectedCredentialId}
|
|
65
|
+
</span>
|
|
66
|
+
<span className="text-xs text-muted-foreground">
|
|
67
|
+
(
|
|
68
|
+
{availableCredentials.find((c) => c.id === selectedCredentialId)?.type ||
|
|
69
|
+
'Unknown'}
|
|
70
|
+
)
|
|
71
|
+
</span>
|
|
72
|
+
</div>
|
|
73
|
+
) : (
|
|
74
|
+
<div className="text-muted-foreground">{placeholder}</div>
|
|
75
|
+
)}
|
|
76
|
+
<ChevronsUpDown className="ml-2 h-4 w-4 shrink-0 opacity-50" />
|
|
77
|
+
</Button>
|
|
78
|
+
</PopoverTrigger>
|
|
79
|
+
<PopoverContent className="w-[var(--radix-popover-trigger-width)] p-0">
|
|
80
|
+
<Command>
|
|
81
|
+
<CommandInput placeholder="Search credentials..." />
|
|
82
|
+
<CommandList>
|
|
83
|
+
<CommandEmpty>No credentials found.</CommandEmpty>
|
|
84
|
+
<CommandGroup>
|
|
85
|
+
{/* No Authentication option */}
|
|
86
|
+
<CommandItem
|
|
87
|
+
value=""
|
|
88
|
+
onSelect={() => {
|
|
89
|
+
onSelect(null);
|
|
90
|
+
setOpen(false);
|
|
91
|
+
}}
|
|
92
|
+
className="cursor-pointer"
|
|
93
|
+
>
|
|
94
|
+
<div className="flex items-center justify-between w-full">
|
|
95
|
+
<div>
|
|
96
|
+
<div className="font-medium">No Authentication</div>
|
|
97
|
+
<div className="text-xs text-muted-foreground">Unsecured connection</div>
|
|
98
|
+
</div>
|
|
99
|
+
{selectedCredentialId === null && (
|
|
100
|
+
<Badge variant="success" className="text-[10px]">
|
|
101
|
+
Selected
|
|
102
|
+
</Badge>
|
|
103
|
+
)}
|
|
104
|
+
</div>
|
|
105
|
+
</CommandItem>
|
|
106
|
+
|
|
107
|
+
{/* Available credentials */}
|
|
108
|
+
{availableCredentials.map((credential) => (
|
|
109
|
+
<CommandItem
|
|
110
|
+
key={credential.id}
|
|
111
|
+
value={credential.id}
|
|
112
|
+
onSelect={() => {
|
|
113
|
+
onSelect(credential.id);
|
|
114
|
+
setOpen(false);
|
|
115
|
+
}}
|
|
116
|
+
className="cursor-pointer"
|
|
117
|
+
>
|
|
118
|
+
<div className="flex items-center justify-between w-full">
|
|
119
|
+
<div>
|
|
120
|
+
<div className="font-medium">{credential.id}</div>
|
|
121
|
+
<div className="text-xs text-muted-foreground">{credential.type}</div>
|
|
122
|
+
</div>
|
|
123
|
+
{selectedCredentialId === credential.id && (
|
|
124
|
+
<Badge variant="success" className="text-[10px]">
|
|
125
|
+
Selected
|
|
126
|
+
</Badge>
|
|
127
|
+
)}
|
|
128
|
+
</div>
|
|
129
|
+
</CommandItem>
|
|
130
|
+
))}
|
|
131
|
+
</CommandGroup>
|
|
132
|
+
</CommandList>
|
|
133
|
+
</Command>
|
|
134
|
+
</PopoverContent>
|
|
135
|
+
</Popover>
|
|
136
|
+
</div>
|
|
137
|
+
);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
// Main selector component
|
|
141
|
+
interface CredentialSelectorProps {
|
|
142
|
+
label?: string;
|
|
143
|
+
value?: string | null;
|
|
144
|
+
onValueChange?: (value: string | null) => void;
|
|
145
|
+
placeholder?: string;
|
|
146
|
+
credentialLookup: Record<string, Credential>;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
export function CredentialSelector({
|
|
150
|
+
label = 'Credential',
|
|
151
|
+
value,
|
|
152
|
+
credentialLookup,
|
|
153
|
+
onValueChange,
|
|
154
|
+
placeholder = 'Select credential...',
|
|
155
|
+
}: CredentialSelectorProps) {
|
|
156
|
+
const handleSelect = (credentialId: string | null) => {
|
|
157
|
+
onValueChange?.(credentialId);
|
|
158
|
+
};
|
|
159
|
+
|
|
160
|
+
return (
|
|
161
|
+
<div className="flex flex-col gap-2">
|
|
162
|
+
<div className="flex flex-col gap-2">
|
|
163
|
+
<CredentialHeader label={label} />
|
|
164
|
+
</div>
|
|
165
|
+
<CredentialDropdown
|
|
166
|
+
selectedCredentialId={value || null}
|
|
167
|
+
onSelect={handleSelect}
|
|
168
|
+
availableCredentials={Object.values(credentialLookup)}
|
|
169
|
+
placeholder={placeholder}
|
|
170
|
+
/>
|
|
171
|
+
</div>
|
|
172
|
+
);
|
|
173
|
+
}
|
|
@@ -1,32 +1,35 @@
|
|
|
1
1
|
import type { Node } from '@xyflow/react';
|
|
2
2
|
import { useCallback } from 'react';
|
|
3
|
+
import { ExpandableJsonEditor } from '@/components/form/expandable-json-editor';
|
|
3
4
|
import { useAutoPrefillIdZustand } from '@/hooks/use-auto-prefill-id-zustand';
|
|
4
5
|
import type { ErrorHelpers } from '@/hooks/use-graph-errors';
|
|
5
6
|
import { useNodeEditor } from '@/hooks/use-node-editor';
|
|
7
|
+
import type { Credential } from '@/lib/api/credentials';
|
|
6
8
|
import type { ExternalAgentNodeData } from '../../configuration/node-types';
|
|
9
|
+
import { CredentialSelector } from './credential-selector';
|
|
7
10
|
import { InputField, TextareaField } from './form-fields';
|
|
8
11
|
|
|
9
12
|
interface ExternalAgentNodeEditorProps {
|
|
10
13
|
selectedNode: Node<ExternalAgentNodeData>;
|
|
14
|
+
credentialLookup: Record<string, Credential>;
|
|
11
15
|
errorHelpers?: ErrorHelpers;
|
|
12
16
|
}
|
|
13
17
|
|
|
14
18
|
export function ExternalAgentNodeEditor({
|
|
15
19
|
selectedNode,
|
|
20
|
+
credentialLookup,
|
|
16
21
|
errorHelpers,
|
|
17
22
|
}: ExternalAgentNodeEditorProps) {
|
|
18
|
-
const { handleInputChange, getFieldError, setFieldRef } = useNodeEditor({
|
|
23
|
+
const { handleInputChange, getFieldError, setFieldRef, updateField } = useNodeEditor({
|
|
19
24
|
selectedNodeId: selectedNode.id,
|
|
20
25
|
errorHelpers,
|
|
21
26
|
});
|
|
22
27
|
|
|
23
28
|
const handleIdChange = useCallback(
|
|
24
29
|
(generatedId: string) => {
|
|
25
|
-
|
|
26
|
-
target: { name: 'id', value: generatedId },
|
|
27
|
-
} as React.ChangeEvent<HTMLInputElement>);
|
|
30
|
+
updateField('id', generatedId);
|
|
28
31
|
},
|
|
29
|
-
[
|
|
32
|
+
[updateField]
|
|
30
33
|
);
|
|
31
34
|
|
|
32
35
|
// Auto-prefill ID based on name field (always enabled for agent nodes)
|
|
@@ -91,6 +94,25 @@ export function ExternalAgentNodeEditor({
|
|
|
91
94
|
error={getFieldError('baseUrl')}
|
|
92
95
|
tooltip="This URL is used to discover the agent's capabilities and communicate with it using the A2A protocol. For locally hosted graphs defined with the agent-framework this would be: http://localhost:3002/tenants/:tenantId/projects/:projectId/agents/:graphId"
|
|
93
96
|
/>
|
|
97
|
+
<ExpandableJsonEditor
|
|
98
|
+
name="headers"
|
|
99
|
+
label="Headers"
|
|
100
|
+
value={selectedNode.data.headers}
|
|
101
|
+
onChange={(value) => updateField('headers', value)}
|
|
102
|
+
placeholder="{}"
|
|
103
|
+
className=""
|
|
104
|
+
/>
|
|
105
|
+
<CredentialSelector
|
|
106
|
+
label="Credential"
|
|
107
|
+
credentialLookup={credentialLookup}
|
|
108
|
+
value={
|
|
109
|
+
typeof selectedNode.data.credentialReferenceId === 'string'
|
|
110
|
+
? selectedNode.data.credentialReferenceId
|
|
111
|
+
: null
|
|
112
|
+
}
|
|
113
|
+
onValueChange={(value) => updateField('credentialReferenceId', value || '')}
|
|
114
|
+
placeholder="Select a credential"
|
|
115
|
+
/>
|
|
94
116
|
</div>
|
|
95
117
|
);
|
|
96
118
|
}
|