@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.
Files changed (160) hide show
  1. package/.next/standalone/agents-manage-ui/.next/BUILD_ID +1 -1
  2. package/.next/standalone/agents-manage-ui/.next/app-build-manifest.json +80 -80
  3. package/.next/standalone/agents-manage-ui/.next/app-path-routes-manifest.json +5 -5
  4. package/.next/standalone/agents-manage-ui/.next/build-manifest.json +2 -2
  5. package/.next/standalone/agents-manage-ui/.next/prerender-manifest.json +15 -15
  6. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/page.js +1 -1
  7. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/page_client-reference-manifest.js +1 -1
  8. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/api-keys/page.js +3 -3
  9. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/api-keys/page_client-reference-manifest.js +1 -1
  10. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifact-components/[artifactComponentId]/page.js +2 -2
  11. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifact-components/[artifactComponentId]/page.js.nft.json +1 -1
  12. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifact-components/[artifactComponentId]/page_client-reference-manifest.js +1 -1
  13. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifact-components/new/page.js +2 -2
  14. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifact-components/new/page.js.nft.json +1 -1
  15. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifact-components/new/page_client-reference-manifest.js +1 -1
  16. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifact-components/page.js +2 -2
  17. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifact-components/page_client-reference-manifest.js +1 -1
  18. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page.js +2 -2
  19. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page.js.nft.json +1 -1
  20. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page_client-reference-manifest.js +1 -1
  21. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page.js +2 -2
  22. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page.js.nft.json +1 -1
  23. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page_client-reference-manifest.js +1 -1
  24. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/page.js +1 -1
  25. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/page_client-reference-manifest.js +1 -1
  26. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page.js +2 -2
  27. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page.js.nft.json +1 -1
  28. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page_client-reference-manifest.js +1 -1
  29. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/page.js +2 -2
  30. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/page.js.nft.json +1 -1
  31. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/page_client-reference-manifest.js +1 -1
  32. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/page.js +2 -2
  33. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/page_client-reference-manifest.js +1 -1
  34. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/data-components/[dataComponentId]/page.js +2 -2
  35. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/data-components/[dataComponentId]/page.js.nft.json +1 -1
  36. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/data-components/[dataComponentId]/page_client-reference-manifest.js +1 -1
  37. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/data-components/new/page.js +2 -2
  38. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/data-components/new/page.js.nft.json +1 -1
  39. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/data-components/new/page_client-reference-manifest.js +1 -1
  40. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/data-components/page.js +2 -2
  41. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/data-components/page_client-reference-manifest.js +1 -1
  42. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/[graphId]/page.js +2 -2
  43. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/[graphId]/page.js.nft.json +1 -1
  44. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/[graphId]/page_client-reference-manifest.js +1 -1
  45. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/new/page.js +2 -2
  46. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/new/page.js.nft.json +1 -1
  47. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/new/page_client-reference-manifest.js +1 -1
  48. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/page.js +2 -2
  49. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/page_client-reference-manifest.js +1 -1
  50. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page.js +2 -2
  51. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page.js.nft.json +1 -1
  52. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page_client-reference-manifest.js +1 -1
  53. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page.js +2 -2
  54. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page_client-reference-manifest.js +1 -1
  55. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/new/page.js +2 -2
  56. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/new/page.js.nft.json +1 -1
  57. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/new/page_client-reference-manifest.js +1 -1
  58. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/page.js +2 -2
  59. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/page_client-reference-manifest.js +1 -1
  60. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/page.js +2 -2
  61. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/page_client-reference-manifest.js +1 -1
  62. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/settings/page.js +2 -2
  63. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/settings/page_client-reference-manifest.js +1 -1
  64. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page.js +2 -2
  65. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page.js.nft.json +1 -1
  66. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page_client-reference-manifest.js +1 -1
  67. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page.js +2 -2
  68. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page.js.nft.json +1 -1
  69. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page_client-reference-manifest.js +1 -1
  70. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/page.js +3 -3
  71. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/page.js.nft.json +1 -1
  72. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/page_client-reference-manifest.js +1 -1
  73. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/page.js +1 -1
  74. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/page_client-reference-manifest.js +1 -1
  75. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found/page.js +2 -2
  76. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  77. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found.html +1 -1
  78. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found.rsc +8 -8
  79. package/.next/standalone/agents-manage-ui/.next/server/app/api/signoz/conversations/[conversationId]/route_client-reference-manifest.js +1 -1
  80. package/.next/standalone/agents-manage-ui/.next/server/app/api/signoz/route_client-reference-manifest.js +1 -1
  81. package/.next/standalone/agents-manage-ui/.next/server/app/page.js +2 -2
  82. package/.next/standalone/agents-manage-ui/.next/server/app/page_client-reference-manifest.js +1 -1
  83. package/.next/standalone/agents-manage-ui/.next/server/app-paths-manifest.json +5 -5
  84. package/.next/standalone/agents-manage-ui/.next/server/chunks/2284.js +1 -0
  85. package/.next/standalone/agents-manage-ui/.next/server/chunks/{2124.js → 2539.js} +3 -3
  86. package/.next/standalone/agents-manage-ui/.next/server/chunks/2949.js +1 -1
  87. package/.next/standalone/agents-manage-ui/.next/server/chunks/3547.js +1 -1
  88. package/.next/standalone/agents-manage-ui/.next/server/chunks/4227.js +1 -0
  89. package/.next/standalone/agents-manage-ui/.next/server/chunks/464.js +1 -0
  90. package/.next/standalone/agents-manage-ui/.next/server/chunks/5232.js +1 -1
  91. package/.next/standalone/agents-manage-ui/.next/server/chunks/6536.js +1 -0
  92. package/.next/standalone/agents-manage-ui/.next/server/chunks/6608.js +1 -1
  93. package/.next/standalone/agents-manage-ui/.next/server/chunks/71.js +1 -1
  94. package/.next/standalone/agents-manage-ui/.next/server/chunks/8449.js +4 -4
  95. package/.next/standalone/agents-manage-ui/.next/server/chunks/9751.js +1 -0
  96. package/.next/standalone/agents-manage-ui/.next/server/chunks/9808.js +1 -0
  97. package/.next/standalone/agents-manage-ui/.next/server/pages/404.html +1 -1
  98. package/.next/standalone/agents-manage-ui/.next/server/pages/500.html +1 -1
  99. package/.next/standalone/agents-manage-ui/.next/server/server-reference-manifest.js +1 -1
  100. package/.next/standalone/agents-manage-ui/.next/server/server-reference-manifest.json +1 -1
  101. package/.next/standalone/agents-manage-ui/.next/static/chunks/{7820-5628646ae2b0f1f6.js → 2295-efa0524459d391a1.js} +1 -1
  102. package/.next/standalone/agents-manage-ui/.next/static/chunks/{8158-8615ec07e7ee270b.js → 5485-54b29c2f14ef310c.js} +1 -1
  103. package/.next/standalone/agents-manage-ui/.next/static/chunks/{6497-4e922cb6838db594.js → 6497-d25dae53e4f0b68a.js} +1 -1
  104. package/.next/standalone/agents-manage-ui/.next/static/chunks/7167-a7cdfdcc0a7d570c.js +1 -0
  105. package/.next/standalone/agents-manage-ui/.next/static/chunks/78-67fd0a1c39c0b52c.js +1 -0
  106. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/api-keys/page-3f1dd352e744cdaa.js +1 -0
  107. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifact-components/[artifactComponentId]/{page-a902479408487201.js → page-9a91932761172bed.js} +1 -1
  108. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifact-components/new/{page-a902479408487201.js → page-9a91932761172bed.js} +1 -1
  109. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifact-components/page-08e7aea35bb61fe6.js +1 -0
  110. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page-74f71d537bc6888f.js +1 -0
  111. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page-4bb610b8d7251802.js +1 -0
  112. 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
  113. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/page-5af872a347267bf2.js +1 -0
  114. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/data-components/[dataComponentId]/{page-6c3189c5a6dcff34.js → page-54e99d376c05edcc.js} +1 -1
  115. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/data-components/new/{page-6c3189c5a6dcff34.js → page-54e99d376c05edcc.js} +1 -1
  116. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/data-components/page-041c151cd28994b6.js +1 -0
  117. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/graphs/{page-e1d1660ac8ad81ed.js → page-e5e56ae6ca93fac2.js} +1 -1
  118. 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
  119. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/new/{page-16c2d4ef3b42b6ca.js → page-ba35f6e74cbbdbb2.js} +1 -1
  120. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/page-09a30d45de0ad5c7.js +1 -0
  121. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/settings/{page-92fd96a32dea362c.js → page-1db5cec98ca637c9.js} +1 -1
  122. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/page-74dbf4c63d9e51f3.js +1 -0
  123. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/page-68acff22390ba388.js +1 -0
  124. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/{layout-a26e8df8afd6fc35.js → layout-844c57f2fd925741.js} +1 -1
  125. package/.next/standalone/agents-manage-ui/package.json +1 -1
  126. package/.next/standalone/packages/agents-core/package.json +1 -1
  127. package/package.json +4 -4
  128. package/src/app/[tenantId]/projects/[projectId]/graphs/[graphId]/page.tsx +12 -3
  129. package/src/app/[tenantId]/projects/[projectId]/graphs/new/page.tsx +6 -1
  130. package/src/components/graph/configuration/node-types.tsx +2 -0
  131. package/src/components/graph/graph.tsx +6 -0
  132. package/src/components/graph/sidepane/nodes/credential-selector.tsx +173 -0
  133. package/src/components/graph/sidepane/nodes/external-agent-node-editor.tsx +27 -5
  134. package/src/components/graph/sidepane/nodes/model-selector.tsx +229 -216
  135. package/src/components/graph/sidepane/sidepane.tsx +4 -0
  136. package/src/components/projects/form/form-configuration.ts +1 -4
  137. package/src/components/projects/form/project-form.tsx +35 -3
  138. package/src/components/projects/form/project-models-section.tsx +52 -49
  139. package/src/features/graph/domain/deserialize.ts +2 -1
  140. package/src/features/graph/domain/serialize.ts +8 -0
  141. package/src/lib/actions/credentials.ts +31 -1
  142. package/.next/standalone/agents-manage-ui/.next/server/chunks/295.js +0 -1
  143. package/.next/standalone/agents-manage-ui/.next/server/chunks/4446.js +0 -1
  144. package/.next/standalone/agents-manage-ui/.next/server/chunks/5117.js +0 -1
  145. package/.next/standalone/agents-manage-ui/.next/server/chunks/5330.js +0 -1
  146. package/.next/standalone/agents-manage-ui/.next/server/chunks/640.js +0 -1
  147. package/.next/standalone/agents-manage-ui/.next/server/chunks/83.js +0 -1
  148. package/.next/standalone/agents-manage-ui/.next/static/chunks/4130-ab98ce21ff35281d.js +0 -1
  149. package/.next/standalone/agents-manage-ui/.next/static/chunks/7167-4fa838f0f7b317b3.js +0 -1
  150. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/api-keys/page-02c5c9c88d7ab2b3.js +0 -1
  151. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifact-components/page-bbd70d3db34aff36.js +0 -1
  152. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page-c6e9e91ec8fc537d.js +0 -1
  153. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page-dd9b869214273592.js +0 -1
  154. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/page-3a4414df3241627d.js +0 -1
  155. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/data-components/page-24e1074f8fa32f75.js +0 -1
  156. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/page-e9de32a9a6b2e2de.js +0 -1
  157. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/page-1c8856f3de066bd4.js +0 -1
  158. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/page-babbd13ec2c08665.js +0 -1
  159. /package/.next/standalone/agents-manage-ui/.next/static/{t339BszWE91q9Cp5Tl1vT → Do4JjeG3oXsSE-JDPd5lz}/_buildManifest.js +0 -0
  160. /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
- handleInputChange({
26
- target: { name: 'id', value: generatedId },
27
- } as React.ChangeEvent<HTMLInputElement>);
30
+ updateField('id', generatedId);
28
31
  },
29
- [handleInputChange]
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
  }