@inkeep/agents-manage-ui 0.6.6 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) 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 +64 -64
  3. package/.next/standalone/agents-manage-ui/.next/app-path-routes-manifest.json +3 -3
  4. package/.next/standalone/agents-manage-ui/.next/build-manifest.json +2 -2
  5. package/.next/standalone/agents-manage-ui/.next/prerender-manifest.json +3 -3
  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 +1 -1
  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_client-reference-manifest.js +1 -1
  47. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/page.js +2 -2
  48. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/graphs/page_client-reference-manifest.js +1 -1
  49. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page.js +2 -2
  50. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page.js.nft.json +1 -1
  51. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page_client-reference-manifest.js +1 -1
  52. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page.js +2 -2
  53. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page.js.nft.json +1 -1
  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 +1 -1
  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.js.nft.json +1 -1
  60. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/page_client-reference-manifest.js +1 -1
  61. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/page.js +2 -2
  62. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/page_client-reference-manifest.js +1 -1
  63. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/settings/page.js +2 -2
  64. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/settings/page_client-reference-manifest.js +1 -1
  65. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page.js +2 -2
  66. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page.js.nft.json +1 -1
  67. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page_client-reference-manifest.js +1 -1
  68. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page.js +2 -2
  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 +2 -2
  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 +3 -3
  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 +1 -1
  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 +9 -9
  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 +3 -3
  84. package/.next/standalone/agents-manage-ui/.next/server/chunks/1267.js +1 -0
  85. package/.next/standalone/agents-manage-ui/.next/server/chunks/1828.js +1 -0
  86. package/.next/standalone/agents-manage-ui/.next/server/chunks/2124.js +13 -13
  87. package/.next/standalone/agents-manage-ui/.next/server/chunks/{3793.js → 3144.js} +1 -1
  88. package/.next/standalone/agents-manage-ui/.next/server/chunks/3460.js +1 -0
  89. package/.next/standalone/agents-manage-ui/.next/server/chunks/3547.js +1 -1
  90. package/.next/standalone/agents-manage-ui/.next/server/chunks/499.js +1 -0
  91. package/.next/standalone/agents-manage-ui/.next/server/chunks/5232.js +1 -1
  92. package/.next/standalone/agents-manage-ui/.next/server/chunks/{7067.js → 6831.js} +1 -1
  93. package/.next/standalone/agents-manage-ui/.next/server/chunks/8449.js +2 -2
  94. package/.next/standalone/agents-manage-ui/.next/server/pages/404.html +1 -1
  95. package/.next/standalone/agents-manage-ui/.next/server/pages/500.html +1 -1
  96. package/.next/standalone/agents-manage-ui/.next/server/server-reference-manifest.js +1 -1
  97. package/.next/standalone/agents-manage-ui/.next/server/server-reference-manifest.json +1 -1
  98. package/.next/standalone/agents-manage-ui/.next/static/chunks/2915-f48fe90984ae5d8b.js +1 -0
  99. package/.next/standalone/agents-manage-ui/.next/static/chunks/6497-b90b21b559925fc6.js +1 -0
  100. package/.next/standalone/agents-manage-ui/.next/static/chunks/6763-5c2401becfe1a959.js +1 -0
  101. package/.next/standalone/agents-manage-ui/.next/static/chunks/7167-efbb83dcb2b4c5ce.js +1 -0
  102. package/.next/standalone/agents-manage-ui/.next/static/chunks/{4931-1291b39db1c5dedf.js → 8825-c4a769ea3a8e81d1.js} +1 -1
  103. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/api-keys/page-c92a1f042f5ea538.js +1 -0
  104. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifact-components/[artifactComponentId]/{page-ac2f8091f8a53342.js → page-d8c96c8cefdfd4bd.js} +1 -1
  105. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifact-components/new/{page-ac2f8091f8a53342.js → page-d8c96c8cefdfd4bd.js} +1 -1
  106. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifact-components/{page-e3e9163c148c1239.js → page-9723ca38f4d36dda.js} +1 -1
  107. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page-a1be97e0e467835a.js +1 -0
  108. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page-dcc6276bc353efb2.js +1 -0
  109. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page-b4038baed88b93f9.js +1 -0
  110. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/{page-876f0c019187591d.js → page-72ecfe1df8e379a5.js} +1 -1
  111. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/data-components/[dataComponentId]/{page-b945a6e458056f00.js → page-ee89187f61e8d315.js} +1 -1
  112. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/data-components/new/{page-b945a6e458056f00.js → page-ee89187f61e8d315.js} +1 -1
  113. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/data-components/page-e8b99c1272c1540c.js +1 -0
  114. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/graphs/page-78554443bb163ae9.js +1 -0
  115. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/{page-6ffb17fc6301b481.js → page-6a1affa547b51cd8.js} +1 -1
  116. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page-aa753859a6cd98f8.js +1 -0
  117. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/new/{page-539caba402ab546f.js → page-6222398da9ee2271.js} +1 -1
  118. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/{page-f819dadc0a6d3e17.js → page-cdf6cf1143f6a553.js} +1 -1
  119. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/settings/{page-8731d2271ec07d33.js → page-77f0a0e0e4372681.js} +1 -1
  120. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/page-b2e49d12c1c10e47.js +1 -0
  121. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/page-fc18e3ba5c2fc6a5.js +1 -0
  122. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/layout-35c8d055f3f8d91c.js +1 -0
  123. package/.next/standalone/agents-manage-ui/.next/static/css/98c416ff19152db0.css +1 -0
  124. package/.next/standalone/agents-manage-ui/package.json +1 -1
  125. package/.next/standalone/packages/agents-core/package.json +1 -1
  126. package/package.json +4 -4
  127. package/src/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page.tsx +12 -12
  128. package/src/components/credentials/credential-tools-list.tsx +0 -25
  129. package/src/components/graph/configuration/node-types.tsx +6 -2
  130. package/src/components/graph/graph.tsx +66 -8
  131. package/src/components/graph/nodes/mcp-node.tsx +6 -11
  132. package/src/components/graph/sidepane/nodes/mcp-node-editor.tsx +69 -68
  133. package/src/components/graph/sidepane/nodes/mcp-selector/mcp-selector.tsx +44 -44
  134. package/src/components/graph/sidepane/sidepane.tsx +5 -0
  135. package/src/components/mcp-servers/form/mcp-server-form.tsx +47 -46
  136. package/src/components/mcp-servers/mcp-tool-item.tsx +3 -0
  137. package/src/components/mcp-servers/view-mcp-server-details.tsx +76 -37
  138. package/src/components/ui/copyable-multi-line-code.tsx +17 -0
  139. package/src/features/graph/domain/__tests__/serialize.test.ts +21 -51
  140. package/src/features/graph/domain/deserialize.ts +5 -26
  141. package/src/features/graph/domain/serialize.ts +56 -52
  142. package/src/lib/api/tools.ts +2 -92
  143. package/src/lib/utils/orphaned-tools-detector.ts +145 -0
  144. package/.next/standalone/agents-manage-ui/.next/server/chunks/241.js +0 -1
  145. package/.next/standalone/agents-manage-ui/.next/server/chunks/3995.js +0 -1
  146. package/.next/standalone/agents-manage-ui/.next/server/chunks/6300.js +0 -1
  147. package/.next/standalone/agents-manage-ui/.next/server/chunks/6838.js +0 -1
  148. package/.next/standalone/agents-manage-ui/.next/server/chunks/9435.js +0 -1
  149. package/.next/standalone/agents-manage-ui/.next/static/chunks/1984-b89ef6de05884930.js +0 -1
  150. package/.next/standalone/agents-manage-ui/.next/static/chunks/6497-1503999d28bd793b.js +0 -1
  151. package/.next/standalone/agents-manage-ui/.next/static/chunks/7167-0892927ad1317753.js +0 -1
  152. package/.next/standalone/agents-manage-ui/.next/static/chunks/9202-65ce376d47468b8c.js +0 -1
  153. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/api-keys/page-b12544e5422bb5f5.js +0 -1
  154. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page-188cdc82aa6e4bc3.js +0 -1
  155. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page-a45222825f0acc29.js +0 -1
  156. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page-1952e6ae0b259e5e.js +0 -1
  157. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/data-components/page-e289128665acffb1.js +0 -1
  158. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/graphs/page-e89edd98413b78a4.js +0 -1
  159. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page-190351c7f4b5d2f8.js +0 -1
  160. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/page-d48cbe5a8a533023.js +0 -1
  161. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/page-39ca81e212d9fe4a.js +0 -1
  162. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/layout-46ffc47ebd7010d6.js +0 -1
  163. package/.next/standalone/agents-manage-ui/.next/static/css/70e9093ef73fbe1b.css +0 -1
  164. /package/.next/standalone/agents-manage-ui/.next/static/{rTyWV-dnM3YFFcXfKZYFu → 0c8HYV9Bsdgx06_BNb0kR}/_buildManifest.js +0 -0
  165. /package/.next/standalone/agents-manage-ui/.next/static/{rTyWV-dnM3YFFcXfKZYFu → 0c8HYV9Bsdgx06_BNb0kR}/_ssgManifest.js +0 -0
@@ -9,7 +9,10 @@ import type { DataComponent } from '@/lib/api/data-components';
9
9
  import type { FullGraphDefinition } from '@/lib/types/graph-full';
10
10
 
11
11
  // Extract the internal agent type from the union
12
- type InternalAgent = Extract<FullGraphDefinition['agents'][string], { canUse: Array<{ toolId: string; toolSelection?: string[] | null }> }>;
12
+ type InternalAgent = Extract<
13
+ FullGraphDefinition['agents'][string],
14
+ { canUse: Array<{ toolId: string; toolSelection?: string[] | null }> }
15
+ >;
13
16
 
14
17
  type ExternalAgent = {
15
18
  id: string;
@@ -82,7 +85,8 @@ export function serializeGraphData(
82
85
  edges: Edge[],
83
86
  metadata?: GraphMetadata,
84
87
  dataComponentLookup?: Record<string, DataComponent>,
85
- artifactComponentLookup?: Record<string, ArtifactComponent>
88
+ artifactComponentLookup?: Record<string, ArtifactComponent>,
89
+ selectedToolsLookup?: Record<string, Record<string, string[]>>
86
90
  ): FullGraphDefinition {
87
91
  const agents: Record<string, ExtendedAgent> = {};
88
92
  // Note: Tools are now project-scoped and not included in graph serialization
@@ -108,13 +112,56 @@ export function serializeGraphData(
108
112
 
109
113
  const stopWhen = (node.data as any).stopWhen;
110
114
 
111
- // Convert tools and selectedTools to canUse array
112
- const tools = (node.data as any).tools || [];
113
- const selectedTools = (node.data as any).selectedTools || {};
114
- const canUse = tools.map((toolId: string) => ({
115
- toolId,
116
- toolSelection: selectedTools[toolId] || null
117
- }));
115
+ // Build canUse array from edges connecting this agent to MCP nodes
116
+ const canUse: Array<{ toolId: string; toolSelection?: string[] | null }> = [];
117
+
118
+ // Find edges from this agent to MCP nodes
119
+ const agentToMcpEdges = edges.filter(
120
+ (edge) =>
121
+ edge.source === node.id &&
122
+ nodes.some((n) => n.id === edge.target && n.type === NodeType.MCP)
123
+ );
124
+
125
+ for (const edge of agentToMcpEdges) {
126
+ const mcpNode = nodes.find((n) => n.id === edge.target);
127
+
128
+ if (mcpNode && mcpNode.type === NodeType.MCP) {
129
+ const toolId = (mcpNode.data as any).toolId;
130
+
131
+ if (toolId) {
132
+ // Get selected tools from MCP node's tempSelectedTools
133
+ const tempSelectedTools = (mcpNode.data as any).tempSelectedTools;
134
+ let toolSelection: string[] | null = null;
135
+
136
+ if (tempSelectedTools !== undefined) {
137
+ // User has made changes to tool selection in the UI
138
+ if (Array.isArray(tempSelectedTools)) {
139
+ toolSelection = tempSelectedTools;
140
+ } else if (tempSelectedTools === null) {
141
+ toolSelection = null; // All tools selected
142
+ }
143
+ } else {
144
+ // No changes made to tool selection - preserve existing selection
145
+ if (
146
+ selectedToolsLookup &&
147
+ selectedToolsLookup[agentId] &&
148
+ selectedToolsLookup[agentId][toolId] !== undefined
149
+ ) {
150
+ // Get existing selection from saved data
151
+ toolSelection = selectedToolsLookup[agentId][toolId];
152
+ } else {
153
+ // Default to all tools selected when no existing data found
154
+ toolSelection = null;
155
+ }
156
+ }
157
+
158
+ canUse.push({
159
+ toolId,
160
+ toolSelection,
161
+ });
162
+ }
163
+ }
164
+ }
118
165
 
119
166
  const agent: ExtendedAgent = {
120
167
  id: agentId,
@@ -151,10 +198,6 @@ export function serializeGraphData(
151
198
  }
152
199
 
153
200
  agents[agentId] = agent;
154
- } else if (node.type === NodeType.MCP) {
155
- // Note: Tools are now project-scoped and not processed during graph serialization
156
- // Tool nodes in the UI are handled separately at the project level
157
- console.log('Skipping MCP tool node during graph serialization (tools are project-scoped)');
158
201
  }
159
202
  }
160
203
 
@@ -209,45 +252,6 @@ export function serializeGraphData(
209
252
  addRelationship(targetAgent, 'canDelegateTo', sourceAgentId);
210
253
  }
211
254
  }
212
- } else if (edge.type === EdgeType.Default) {
213
- const sourceAgentNode = nodes.find((node) => node.id === edge.source);
214
- const sourceAgentId = (sourceAgentNode?.data.id || sourceAgentNode?.id) as string;
215
- const sourceAgent: ExtendedAgent = agents[sourceAgentId];
216
- const targetToolNode = nodes.find((node) => node.id === edge.target);
217
- if (sourceAgent && targetToolNode && sourceAgent.type === 'internal') {
218
- const toolId = (targetToolNode.data as any).id as string;
219
- const internalAgent = sourceAgent as InternalAgent & {
220
- dataComponents: string[];
221
- artifactComponents: string[];
222
- models?: GraphMetadata['models'];
223
- type: 'internal';
224
- };
225
-
226
- // Check if tool is already in canUse array
227
- const existingCanUse = internalAgent.canUse.find(item => item.toolId === toolId);
228
- if (!existingCanUse) {
229
- internalAgent.canUse.push({
230
- toolId,
231
- toolSelection: null
232
- });
233
- }
234
-
235
- // Only override toolSelection if user made changes in the UI for this specific tool
236
- const userSelectedTools = (targetToolNode.data as any).tempSelectedTools;
237
- if (userSelectedTools !== undefined) {
238
- // User has made selections in the UI for this tool
239
- const canUseItem = internalAgent.canUse.find(item => item.toolId === toolId);
240
- if (canUseItem) {
241
- if (userSelectedTools === null) {
242
- // User selected all tools - set to null (null = all)
243
- canUseItem.toolSelection = null;
244
- } else {
245
- // User selected specific tools (including empty array for "none selected")
246
- canUseItem.toolSelection = userSelectedTools;
247
- }
248
- }
249
- }
250
- }
251
255
  }
252
256
  }
253
257
 
@@ -122,97 +122,7 @@ export async function deleteMCPTool(
122
122
  validateTenantId(tenantId);
123
123
  validateProjectId(projectId);
124
124
 
125
- await makeManagementApiRequest<void>(
126
- `tenants/${tenantId}/projects/${projectId}/tools/${id}`,
127
- {
128
- method: 'DELETE',
129
- }
130
- );
131
- }
132
-
133
- /**
134
- * Check health of an MCP tool
135
- */
136
- export async function checkMCPToolHealth(
137
- tenantId: string,
138
- projectId: string,
139
- id: string
140
- ): Promise<{
141
- tool: McpTool;
142
- healthCheck: {
143
- status: McpTool['status'];
144
- error?: string;
145
- };
146
- }> {
147
- validateTenantId(tenantId);
148
- validateProjectId(projectId);
149
-
150
- const response = await makeManagementApiRequest<
151
- SingleResponse<{
152
- tool: McpTool;
153
- healthCheck: {
154
- status: McpTool['status'];
155
- error?: string;
156
- };
157
- }>
158
- >(`tenants/${tenantId}/projects/${projectId}/tools/${id}/health-check`, {
159
- method: 'POST',
125
+ await makeManagementApiRequest<void>(`tenants/${tenantId}/projects/${projectId}/tools/${id}`, {
126
+ method: 'DELETE',
160
127
  });
161
-
162
- return response.data;
163
- }
164
-
165
- /**
166
- * Get available tools from an MCP server
167
- */
168
- export async function getMCPToolAvailableTools(
169
- tenantId: string,
170
- projectId: string,
171
- id: string
172
- ): Promise<{
173
- availableTools: Array<{
174
- name: string;
175
- description?: string;
176
- inputSchema?: Record<string, unknown>;
177
- }>;
178
- lastSync?: string;
179
- status: McpTool['status'];
180
- }> {
181
- validateTenantId(tenantId);
182
- validateProjectId(projectId);
183
-
184
- const response = await makeManagementApiRequest<
185
- SingleResponse<{
186
- availableTools: Array<{
187
- name: string;
188
- description?: string;
189
- inputSchema?: Record<string, unknown>;
190
- }>;
191
- lastSync?: string;
192
- status: McpTool['status'];
193
- }>
194
- >(`tenants/${tenantId}/projects/${projectId}/tools/${id}/available-tools`);
195
-
196
- return response.data;
197
- }
198
-
199
- /**
200
- * Sync tool definitions from an MCP server
201
- */
202
- export async function syncMCPTool(
203
- tenantId: string,
204
- projectId: string,
205
- id: string
206
- ): Promise<McpTool> {
207
- validateTenantId(tenantId);
208
- validateProjectId(projectId);
209
-
210
- const response = await makeManagementApiRequest<SingleResponse<McpTool>>(
211
- `tenants/${tenantId}/projects/${projectId}/tools/${id}/sync`,
212
- {
213
- method: 'POST',
214
- }
215
- );
216
-
217
- return response.data;
218
128
  }
@@ -0,0 +1,145 @@
1
+ import type { Node } from '@xyflow/react';
2
+ import { getActiveTools } from '@/app/utils/active-tools';
3
+ import type { MCPNodeData } from '@/components/graph/configuration/node-types';
4
+ import { NodeType } from '@/components/graph/configuration/node-types';
5
+ import type { MCPTool } from '@/lib/types/tools';
6
+
7
+ export interface OrphanedToolsInfo {
8
+ nodeId: string;
9
+ nodeName: string;
10
+ orphanedTools: string[];
11
+ }
12
+
13
+ export interface OrphanedToolsDetectionResult {
14
+ hasOrphanedTools: boolean;
15
+ orphanedToolsByNode: OrphanedToolsInfo[];
16
+ totalOrphanedCount: number;
17
+ }
18
+
19
+ /**
20
+ * Simplified API that combines detection and message creation
21
+ * Returns null if no orphaned tools found, otherwise returns the warning message
22
+ */
23
+ export function detectOrphanedToolsAndGetWarning(
24
+ nodes: Node[],
25
+ selectedToolsLookup: Record<string, Record<string, string[]>>,
26
+ toolLookup: Record<string, MCPTool>
27
+ ): string | null {
28
+ const result = detectOrphanedToolsInGraph(nodes, selectedToolsLookup, toolLookup);
29
+ return result.hasOrphanedTools ? createOrphanedToolsWarningMessage(result) : null;
30
+ }
31
+
32
+ /**
33
+ * Extract shared logic for getting selected tools for a node
34
+ * This replaces the duplicated logic between detector and MCP node editor
35
+ */
36
+ export function getCurrentSelectedToolsForNode(
37
+ node: Node<MCPNodeData>,
38
+ selectedToolsLookup: Record<string, Record<string, string[]>>
39
+ ): string[] | null {
40
+ // First check if we have temporary selections stored on the node (from recent clicks)
41
+ if ((node.data as any).tempSelectedTools !== undefined) {
42
+ return (node.data as any).tempSelectedTools;
43
+ }
44
+
45
+ // Otherwise, get from the database/initial state
46
+ const allSelectedTools = new Set<string>();
47
+ let hasAnyData = false;
48
+ let hasEmptyArray = false;
49
+ let hasNullValue = false;
50
+
51
+ Object.values(selectedToolsLookup).forEach((agentTools) => {
52
+ const toolsForThisMCP = agentTools[node.data.toolId];
53
+ if (toolsForThisMCP !== undefined) {
54
+ hasAnyData = true;
55
+ if (Array.isArray(toolsForThisMCP) && toolsForThisMCP.length === 0) {
56
+ hasEmptyArray = true;
57
+ } else if (toolsForThisMCP === null) {
58
+ hasNullValue = true;
59
+ } else if (Array.isArray(toolsForThisMCP)) {
60
+ toolsForThisMCP.forEach((tool) => {
61
+ allSelectedTools.add(tool);
62
+ });
63
+ }
64
+ }
65
+ });
66
+
67
+ if (hasNullValue) return null;
68
+ if (hasEmptyArray) return [];
69
+ if (!hasAnyData) return null;
70
+
71
+ return Array.from(allSelectedTools);
72
+ }
73
+
74
+ /**
75
+ * Detects orphaned tools across all MCP nodes in the graph
76
+ * Orphaned tools are tools that were selected but are no longer available in the MCP server
77
+ */
78
+ export function detectOrphanedToolsInGraph(
79
+ nodes: Node[],
80
+ selectedToolsLookup: Record<string, Record<string, string[]>>,
81
+ toolLookup: Record<string, MCPTool>
82
+ ): OrphanedToolsDetectionResult {
83
+ const orphanedToolsByNode: OrphanedToolsInfo[] = [];
84
+
85
+ // Find all MCP nodes
86
+ const mcpNodes = nodes.filter((node): node is Node<MCPNodeData> => node.type === NodeType.MCP);
87
+
88
+ for (const node of mcpNodes) {
89
+ const toolData = toolLookup[node.data.toolId];
90
+ if (!toolData) continue; // Skip if tool data not found
91
+
92
+ const activeTools = getActiveTools({
93
+ availableTools: toolData.availableTools,
94
+ activeTools: toolData.config?.mcp?.activeTools,
95
+ });
96
+
97
+ const selectedTools = getCurrentSelectedToolsForNode(node, selectedToolsLookup);
98
+
99
+ // Find orphaned tools for this node
100
+ const orphanedTools =
101
+ selectedTools && Array.isArray(selectedTools)
102
+ ? selectedTools.filter((toolName) => !activeTools?.some((tool) => tool.name === toolName))
103
+ : [];
104
+
105
+ if (orphanedTools.length > 0) {
106
+ orphanedToolsByNode.push({
107
+ nodeId: node.data.toolId,
108
+ nodeName: node.data.name || toolData.name || 'Unnamed MCP Server',
109
+ orphanedTools,
110
+ });
111
+ }
112
+ }
113
+
114
+ const totalOrphanedCount = orphanedToolsByNode.reduce(
115
+ (total, nodeInfo) => total + nodeInfo.orphanedTools.length,
116
+ 0
117
+ );
118
+
119
+ return {
120
+ hasOrphanedTools: orphanedToolsByNode.length > 0,
121
+ orphanedToolsByNode,
122
+ totalOrphanedCount,
123
+ };
124
+ }
125
+
126
+ /**
127
+ * Creates a user-friendly warning message for orphaned tools
128
+ * Assumes result.hasOrphanedTools is true (should be checked by caller)
129
+ */
130
+ export function createOrphanedToolsWarningMessage(result: OrphanedToolsDetectionResult): string {
131
+ const nodeCount = result.orphanedToolsByNode.length;
132
+ const toolCount = result.totalOrphanedCount;
133
+
134
+ if (nodeCount === 1) {
135
+ const nodeInfo = result.orphanedToolsByNode[0];
136
+ const toolList = nodeInfo.orphanedTools.join(', ');
137
+ const toolText = toolCount > 1 ? 'tools' : 'tool';
138
+ const verbText = toolCount > 1 ? 'are' : 'is';
139
+ const pronounText = toolCount > 1 ? 'These tools' : 'This tool';
140
+
141
+ return `The MCP server "${nodeInfo.nodeName}" has ${toolCount} selected ${toolText} that ${verbText} no longer available: ${toolList}. ${pronounText} will not be available at runtime. Please update your tool selections.`;
142
+ }
143
+
144
+ return `${nodeCount} MCP servers have a total of ${toolCount} selected tools that are no longer available. These orphaned tools will not be available at runtime. Please update your tool selections.`;
145
+ }
@@ -1 +0,0 @@
1
- exports.id=241,exports.ids=[241],exports.modules={7493:(a,b,c)=>{"use strict";c.r(b),c.d(b,{"402a60e86eb8f5124f05bb6c3f048230f9de8c77e2":()=>d.bW,"604df70d93818c6d34c7addbbc027aff1c37de0e7a":()=>d.Dv,"60a2611cb014a3bcb5cdb27b19c951743cfee30bb8":()=>p,"60a3a46af0697c6ba6a44aa44cfa624abd221acbe8":()=>d.gL,"60d748e1614c07d34d11142c5d3d9d54dce710b60f":()=>d.qf,"7001482f3ab6c884363356254df98d04bf0bcac16b":()=>s,"7082fc3a0a03fcfe74aa148418f8b8778b9c963b02":()=>q,"70d5f2c811db3932ba6f418f089805d0adc761a065":()=>d.Tg,"70d851ffda2d8bafa81addf5dbf762004b51f0bcce":()=>r});var d=c(72025),e=c(29991);c(58415);var f=c(83248),g=c(8703),h=c(45796),i=c(33451);async function j(a,b){(0,h.M2)(a),(0,h.nt)(b);let c=await (0,g.J)(`tenants/${a}/projects/${b}/data-components`);return{...c,data:c.data.map(a=>({...a,props:a.props||{}}))}}async function k(a,b,c){(0,h.M2)(a),(0,h.nt)(b);let d=await (0,g.J)(`tenants/${a}/projects/${b}/data-components/${c}`);return{...d.data,props:d.data.props||{}}}async function l(a,b,c){(0,h.M2)(a),(0,h.nt)(b);let d=await (0,g.J)(`tenants/${a}/projects/${b}/data-components`,{method:"POST",body:JSON.stringify(c)});return{...d.data,props:d.data.props||{}}}async function m(a,b,c){(0,h.M2)(a),(0,h.nt)(b);let d=await (0,g.J)(`tenants/${a}/projects/${b}/data-components/${c.id}`,{method:"PUT",body:JSON.stringify(c)});return{...d.data,props:d.data.props||{}}}async function n(a,b,c){(0,h.M2)(a),(0,h.nt)(b),await (0,g.J)(`tenants/${a}/projects/${b}/data-components/${c}`,{method:"DELETE"})}(0,i.D)([j,k,l,m,n]),(0,e.A)(j,"60bcfbe170a75175ccec147457fae5a98aa771aa93",null),(0,e.A)(k,"708bc2b53d1a50dd19bbd24763f7d4e44408a4d537",null),(0,e.A)(l,"70a63106320a4755be1146de290f8b69875d2af2bc",null),(0,e.A)(m,"70a799de62a33c491c9eb0a2d19e32fa426345449c",null),(0,e.A)(n,"7054ad63e8647b6645f256dec1d2824a89709a0a6b",null);var o=c(36608);async function p(a,b){try{let c=await j(a,b);return{success:!0,data:c.data}}catch(a){if(a instanceof o.h)return{success:!1,error:a.message,code:a.error.code};return{success:!1,error:a instanceof Error?a.message:"Unknown error occurred",code:"unknown_error"}}}async function q(a,b,c){try{let d=await l(a,b,c);return(0,f.revalidatePath)(`/${a}/projects/${b}/data-components`),{success:!0,data:d}}catch(a){if(a instanceof o.h)return{success:!1,error:a.message,code:a.error.code};return{success:!1,error:a instanceof Error?a.message:"Unknown error occurred",code:"unknown_error"}}}async function r(a,b,c){try{let d=await m(a,b,c);return(0,f.revalidatePath)(`/${a}/projects/${b}/data-components`),(0,f.revalidatePath)(`/${a}/projects/${b}/data-components/${c.id}`),{success:!0,data:d}}catch(a){if(a instanceof o.h)return{success:!1,error:a.message,code:a.error.code};return{success:!1,error:a instanceof Error?a.message:"Unknown error occurred",code:"unknown_error"}}}async function s(a,b,c){try{return await n(a,b,c),(0,f.revalidatePath)(`/${a}/projects/${b}/data-components`),(0,f.revalidatePath)(`/${a}/projects/${b}/data-components/${c}`),{success:!0}}catch(a){if(a instanceof o.h)return{success:!1,error:a.message,code:a.error.code};return{success:!1,error:a instanceof Error?a.message:"Unknown error occurred",code:"unknown_error"}}}(0,i.D)([p,q,r,s]),(0,e.A)(p,"60a2611cb014a3bcb5cdb27b19c951743cfee30bb8",null),(0,e.A)(q,"7082fc3a0a03fcfe74aa148418f8b8778b9c963b02",null),(0,e.A)(r,"70d851ffda2d8bafa81addf5dbf762004b51f0bcce",null),(0,e.A)(s,"7001482f3ab6c884363356254df98d04bf0bcac16b",null)},8636:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(60241).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/agents/agents/agents-manage-ui/src/app/[tenantId]/projects/[projectId]/not-found.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/agents/agents/agents-manage-ui/src/app/[tenantId]/projects/[projectId]/not-found.tsx","default")},8671:(a,b,c)=>{Promise.resolve().then(c.bind(c,92364))},23413:(a,b,c)=>{"use strict";c.d(b,{S:()=>k});var d=c(59111),e=c(71771),f=c(2856),g=c(80974),h=c(42723),i=c(67466);function j(a){return(0,d.jsxs)("div",{"data-slot":"json-editor",className:`space-y-3 relative overflow-hidden p-1 ${a.className||""}`,children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 absolute top-3 right-3 z-10",children:[!a.value?.trim()&&(0,d.jsx)(f.$,{type:"button",onClick:()=>{let b=(0,g.Fc)();a.onChange(b)},variant:"outline",size:"sm",className:"h-6 px-2 text-xs rounded-sm",children:"Template"}),(0,d.jsx)(f.$,{type:"button",onClick:()=>{let b=a.value;if(b?.trim()){let c=(0,h.IB)(b);a.onChange(c)}},variant:"outline",size:"sm",className:"h-6 px-2 text-xs rounded-sm",disabled:!a.value?.trim(),children:"Format"})]}),(0,d.jsx)(i.i,{value:a.value||"",onChange:a.onChange,placeholder:a.placeholder,disabled:a.disabled,readOnly:a.readOnly})]})}function k({control:a,name:b,label:c="JSON Schema",placeholder:f,disabled:g,description:h,readOnly:i,isRequired:k=!1}){return(0,d.jsx)(e.u,{control:a,name:b,label:c,description:h,isRequired:k,children:a=>(0,d.jsx)(j,{placeholder:f,...a,onChange:a.onChange,readOnly:i,disabled:g})})}},26823:(a,b,c)=>{Promise.resolve().then(c.bind(c,35490))},29160:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>h,dynamic:()=>g});var d=c(72669),e=c(95460),f=c(54637);let g="force-dynamic";async function h({children:a,params:b}){let{tenantId:c,projectId:g}=await b;try{await (0,f.Sw)(c,g)}catch(a){(0,e.notFound)()}return(0,d.jsx)(d.Fragment,{children:a})}},35490:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(60241).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/agents/agents/agents-manage-ui/src/app/[tenantId]/projects/[projectId]/data-components/error.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/agents/agents/agents-manage-ui/src/app/[tenantId]/projects/[projectId]/data-components/error.tsx","default")},35859:(a,b,c)=>{Promise.resolve().then(c.bind(c,8636))},37830:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>h});var d=c(59111),e=c(437),f=c(485);c(14450);var g=c(2856);function h(){let a=(0,f.useParams)(),b=(0,f.useRouter)(),c=a.tenantId,h=a.projectId;return(0,d.jsx)("div",{className:"flex min-h-[400px] flex-col items-center justify-center p-8",children:(0,d.jsxs)("div",{className:"text-center max-w-md",children:[(0,d.jsx)("div",{className:"mb-4 flex justify-center",children:(0,d.jsx)(e.A,{className:"h-12 w-12 text-muted-foreground"})}),(0,d.jsx)("h1",{className:"text-2xl font-semibold mb-2",children:"Project Not Found"}),(0,d.jsxs)("p",{className:"text-muted-foreground mb-6",children:['The project "',h,"\" does not exist or you don't have access to it."]}),(0,d.jsx)("p",{className:"text-sm text-muted-foreground mb-6",children:"Redirecting to projects list in 3 seconds..."}),(0,d.jsx)(g.$,{onClick:()=>b.push(`/${c}/projects`),variant:"default",children:"Go to Projects List"})]})})}},41325:(a,b,c)=>{Promise.resolve().then(c.bind(c,87728)),Promise.resolve().then(c.bind(c,24003)),Promise.resolve().then(c.bind(c,19603)),Promise.resolve().then(c.t.bind(c,61678,23))},45622:()=>{},62503:(a,b,c)=>{"use strict";c.d(b,{f:()=>d});let d=c(45809).string().min(1,"Id is required.").max(64,"Id must be less than 64 characters.").regex(/^[a-zA-Z0-9_-]+$/,"Id must contain only alphanumeric characters, underscores, and dashes. No spaces allowed.")},64220:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>j});var d=c(72669),e=c(17932),f=c(96737),g=c(39885),h=c(3687),i=c(82058);function j(){return(0,d.jsx)(e.H,{breadcrumbs:[{label:"Data components"}],children:(0,d.jsxs)(f.D,{children:[(0,d.jsx)(g.zY,{title:"Data components",description:i.yr}),(0,d.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-3 md:gap-4",children:Array.from({length:6}).map((a,b)=>(0,d.jsx)(h.E,{className:"h-36 w-full rounded-lg"},`loading-skeleton-${b}`))})]})})}},77709:(a,b,c)=>{Promise.resolve().then(c.bind(c,98261)),Promise.resolve().then(c.bind(c,97633)),Promise.resolve().then(c.bind(c,80248)),Promise.resolve().then(c.t.bind(c,93520,23))},80974:(a,b,c)=>{"use strict";c.d(b,{Fc:()=>k,SR:()=>l,_O:()=>j});var d=c(7352),e=c(43381);let f=d.ZU.Object({type:d.ZU.Union([d.ZU.Literal("string"),d.ZU.Literal("number"),d.ZU.Literal("integer"),d.ZU.Literal("boolean"),d.ZU.Literal("array"),d.ZU.Literal("object"),d.ZU.Literal("null")]),description:d.ZU.String({minLength:1}),format:d.ZU.Optional(d.ZU.String()),pattern:d.ZU.Optional(d.ZU.String()),minimum:d.ZU.Optional(d.ZU.Number()),maximum:d.ZU.Optional(d.ZU.Number()),minLength:d.ZU.Optional(d.ZU.Number()),maxLength:d.ZU.Optional(d.ZU.Number()),items:d.ZU.Optional(d.ZU.Any()),properties:d.ZU.Optional(d.ZU.Any()),enum:d.ZU.Optional(d.ZU.Array(d.ZU.Any())),const:d.ZU.Optional(d.ZU.Any()),default:d.ZU.Optional(d.ZU.Any())}),g=d.ZU.Object({type:d.ZU.Literal("object"),properties:d.ZU.Record(d.ZU.String(),f),required:d.ZU.Array(d.ZU.String(),{minItems:1}),additionalProperties:d.ZU.Optional(d.ZU.Boolean()),description:d.ZU.Optional(d.ZU.String())}),h=e.gv.Compile(f),i=e.gv.Compile(g);function j(a){let b=[],{parsed:c,errors:d}=function(a){let b=[],c=null;if(!a?.trim())return{parsed:null,errors:b};try{c=JSON.parse(a)}catch(a){b.push({path:"root",message:a instanceof Error?a.message:"Invalid JSON syntax",type:"syntax"})}return{parsed:c,errors:b}}(a);if(d.length>0)return{isValid:!1,errors:d,warnings:b};if(!c)return{isValid:!0,errors:[],warnings:["Empty schema provided"]};let e=[...function(a){let b=[];return a&&"object"==typeof a?!i.Check(a)&&(a.type&&"object"===a.type||b.push({path:"type",message:'Schema must have type: "object" for LLM compatibility',type:"llm_requirement"}),a.properties&&"object"==typeof a.properties||b.push({path:"properties",message:'Schema must have a "properties" object',type:"schema"}),a.required&&Array.isArray(a.required)||b.push({path:"required",message:'Schema must have a "required" array (can be empty)',type:"llm_requirement"}),a.properties&&"object"==typeof a.properties&&Object.entries(a.properties).forEach(([a,c])=>{h.Check(c)||[...h.Errors(c)].forEach(c=>{let d=c.message;"/description"===c.path?d='Each property must have a "description" for LLM compatibility':"/type"===c.path&&(d='Each property must have a valid "type"'),b.push({path:`properties.${a}${c.path}`,message:d,type:"/description"===c.path?"llm_requirement":"schema"})})})):b.push({path:"root",message:"Schema must be an object",type:"schema"}),b}(c),...function(a){let b=[];return a&&"object"==typeof a&&(a.required&&Array.isArray(a.required)&&a.properties&&a.required.forEach(c=>{a.properties[c]||b.push({path:"required",message:`Required property "${c}" must exist in properties`,type:"schema"})}),a.properties&&"object"==typeof a.properties&&Object.entries(a.properties).forEach(([a,c])=>{c.description&&"string"==typeof c.description&&0!==c.description.trim().length||b.push({path:`properties.${a}.description`,message:"Each property must have a non-empty description for LLM compatibility",type:"llm_requirement"})})),b}(c)];return{isValid:0===e.length,errors:e,warnings:b}}function k(){return JSON.stringify({type:"object",properties:{example_property:{type:"string",description:"Description of what this property represents"}},required:["example_property"]},null,2)}function l(a){if(a instanceof SyntaxError){let b=a.message.toLowerCase();return b.includes("unexpected end of json input")?"Incomplete JSON - missing closing brackets or quotes":b.includes("unexpected token")?"Invalid character in JSON - check for missing commas, quotes, or brackets":b.includes("expected property name")||b.includes("expected ':' after property name")?"Property names must be in double quotes":b.includes("duplicate keys")?"Duplicate property names are not allowed":"Invalid JSON syntax - check structure and formatting"}return"Unable to parse JSON"}},87728:(a,b,c)=>{"use strict";c.d(b,{DataComponentForm:()=>x});var d=c(59111),e=c(59099),f=c(485),g=c(94150),h=c(68156),i=c(17130),j=c(16426),k=c(23413),l=c(2856),m=c(93622),n=c(35283),o=c(90147);let p=(0,o.createServerReference)("70d851ffda2d8bafa81addf5dbf762004b51f0bcce",o.callServer,void 0,o.findSourceMapURL,"updateDataComponentAction"),q=(0,o.createServerReference)("7082fc3a0a03fcfe74aa148418f8b8778b9c963b02",o.callServer,void 0,o.findSourceMapURL,"createDataComponentAction");var r=c(42723);let s={id:"",name:"",description:"",props:""};var t=c(45809),u=c(80974),v=c(62503);let w=t.object({id:v.f,name:t.string().min(1,"Name is required."),description:t.string().min(1,"Description is required."),props:t.string().min(1,"Props schema is required.").transform((a,b)=>{try{let c=JSON.parse(a),d=(0,u._O)(a);if(!d.isValid){let a=d.errors[0]?.message||"Invalid JSON schema";return b.addIssue({code:t.ZodIssueCode.custom,message:a}),t.NEVER}return c}catch(a){return b.addIssue({code:t.ZodIssueCode.custom,message:(0,u.SR)(a)}),t.NEVER}}).optional()});function x({tenantId:a,projectId:b,id:c,initialData:o}){let t=(0,g.mN)({resolver:(0,e.u)(w),defaultValues:(a=>{if(!a)return s;let b={...a};return b.props&&(b.props=(0,r.S_)(b.props)),b})(o)}),{isSubmitting:u}=t.formState,v=(0,f.useRouter)();(0,n.S)({form:t,nameField:"name",idField:"id",isEditing:!!c});let x=async d=>{try{let e={...d};if(c){let c=await p(a,b,e);if(!c.success)return void h.oR.error(c.error||"Failed to update data component");h.oR.success("Data component updated")}else{let c=await q(a,b,e);if(!c.success)return void h.oR.error(c.error||"Failed to create data component");h.oR.success("Data component created"),v.push(`/${a}/projects/${b}/data-components`)}}catch(b){console.error("Error submitting data component:",b);let a=b instanceof Error?b.message:"An unexpected error occurred";h.oR.error(a)}};return(0,d.jsx)(m.lV,{...t,children:(0,d.jsxs)("form",{onSubmit:t.handleSubmit(x),className:"space-y-8",children:[(0,d.jsx)(i.a,{control:t.control,name:"name",label:"Name",placeholder:"ListOrders",description:"This name is used to identify the component in chat widget integration. Example: components: { ListOrders: MyListOrdersComponent }",isRequired:!0}),(0,d.jsx)(i.a,{control:t.control,name:"id",label:"Id",placeholder:"my-data-component",disabled:!!c,description:c?"":"Choose a unique identifier for this component. Using an existing id will replace that component.",isRequired:!0}),(0,d.jsx)(j.K,{control:t.control,name:"description",label:"Description",placeholder:"Display a list of user orders with interactive options",className:"min-h-[80px]",isRequired:!0}),(0,d.jsx)(k.S,{control:t.control,name:"props",label:"Props (JSON schema)",placeholder:"Enter a valid JSON Schema...",isRequired:!0}),(0,d.jsx)(l.$,{type:"submit",disabled:u,children:"Save"})]})})}},92364:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>f});var d=c(59111),e=c(43433);function f(){return(0,d.jsx)(e.A,{description:"Something went wrong."})}},92478:()=>{},96107:(a,b,c)=>{Promise.resolve().then(c.bind(c,37830))},98261:(a,b,c)=>{"use strict";c.d(b,{DataComponentForm:()=>d});let d=(0,c(60241).registerClientReference)(function(){throw Error("Attempted to call DataComponentForm() from the server but DataComponentForm is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/agents/agents/agents-manage-ui/src/components/data-components/form/data-component-form.tsx","DataComponentForm")}};
@@ -1 +0,0 @@
1
- exports.id=3995,exports.ids=[3995],exports.modules={8065:(a,b,c)=>{"use strict";c.r(b),c.d(b,{"402a60e86eb8f5124f05bb6c3f048230f9de8c77e2":()=>d.bW,"604df70d93818c6d34c7addbbc027aff1c37de0e7a":()=>d.Dv,"607f5ee4db321fe440ff2a215bcae40d69cb10f27a":()=>p,"60a3a46af0697c6ba6a44aa44cfa624abd221acbe8":()=>d.gL,"60d748e1614c07d34d11142c5d3d9d54dce710b60f":()=>d.qf,"7085fdceafe8b4c0eb3e41578b6029aebc6d28600d":()=>r,"708a5820434473acf4a5140ea590980f2fb73df044":()=>q,"70d5f2c811db3932ba6f418f089805d0adc761a065":()=>d.Tg,"70f71fe3190bce6fb836a1ddd61a212a81cfee9ce7":()=>s});var d=c(72025),e=c(29991);c(58415);var f=c(83248),g=c(8703),h=c(45796),i=c(33451);async function j(a,b){(0,h.M2)(a),(0,h.nt)(b);let c=await (0,g.J)(`tenants/${a}/projects/${b}/artifact-components`);return{...c,data:c.data.map(a=>({...a,summaryProps:a.summaryProps||{},fullProps:a.fullProps||{}}))}}async function k(a,b,c){(0,h.M2)(a),(0,h.nt)(b);let d=await (0,g.J)(`tenants/${a}/projects/${b}/artifact-components/${c}`);return{...d.data,summaryProps:d.data.summaryProps||{},fullProps:d.data.fullProps||{}}}async function l(a,b,c){(0,h.M2)(a),(0,h.nt)(b);let d=await (0,g.J)(`tenants/${a}/projects/${b}/artifact-components`,{method:"POST",body:JSON.stringify(c)});return{...d.data,summaryProps:d.data.summaryProps||{},fullProps:d.data.fullProps||{}}}async function m(a,b,c){(0,h.M2)(a),(0,h.nt)(b);let d=await (0,g.J)(`tenants/${a}/projects/${b}/artifact-components/${c.id}`,{method:"PUT",body:JSON.stringify(c)});return{...d.data,summaryProps:d.data.summaryProps||{},fullProps:d.data.fullProps||{}}}async function n(a,b,c){(0,h.M2)(a),(0,h.nt)(b),await (0,g.J)(`tenants/${a}/projects/${b}/artifact-components/${c}`,{method:"DELETE"})}(0,i.D)([j,k,l,m,n]),(0,e.A)(j,"60f3249d4c25decc3d598725ab8864c51687825c19",null),(0,e.A)(k,"70f17575b4647b6c5936609a50fae4a121a0f0e6a3",null),(0,e.A)(l,"705444828aee215d8262ced353896f6b9443ec77f5",null),(0,e.A)(m,"70e2b5e708d5bef778f837922041ffff46eb512311",null),(0,e.A)(n,"70157c415756a003b605907c8cd837b3ad8b309b13",null);var o=c(36608);async function p(a,b){try{let c=await j(a,b);return{success:!0,data:c.data}}catch(a){if(a instanceof o.h)return{success:!1,error:a.message,code:a.error.code};return{success:!1,error:a instanceof Error?a.message:"Unknown error occurred",code:"unknown_error"}}}async function q(a,b,c){try{let d=await l(a,b,c);return(0,f.revalidatePath)(`/${a}/projects/${b}/artifact-components`),{success:!0,data:d}}catch(a){if(a instanceof o.h)return{success:!1,error:a.message,code:a.error.code};return{success:!1,error:a instanceof Error?a.message:"Unknown error occurred",code:"unknown_error"}}}async function r(a,b,c){try{let d=await m(a,b,c);return(0,f.revalidatePath)(`/${a}/projects/${b}/artifact-components`),(0,f.revalidatePath)(`/${a}/projects/${b}/artifact-components/${c.id}`),{success:!0,data:d}}catch(a){if(a instanceof o.h)return{success:!1,error:a.message,code:a.error.code};return{success:!1,error:a instanceof Error?a.message:"Unknown error occurred",code:"unknown_error"}}}async function s(a,b,c){try{return await n(a,b,c),(0,f.revalidatePath)(`/${a}/projects/${b}/artifact-components`),(0,f.revalidatePath)(`/${a}/projects/${b}/artifact-components/${c}`),{success:!0}}catch(a){if(a instanceof o.h)return{success:!1,error:a.message,code:a.error.code};return{success:!1,error:a instanceof Error?a.message:"Unknown error occurred",code:"unknown_error"}}}(0,i.D)([p,q,r,s]),(0,e.A)(p,"607f5ee4db321fe440ff2a215bcae40d69cb10f27a",null),(0,e.A)(q,"708a5820434473acf4a5140ea590980f2fb73df044",null),(0,e.A)(r,"7085fdceafe8b4c0eb3e41578b6029aebc6d28600d",null),(0,e.A)(s,"70f71fe3190bce6fb836a1ddd61a212a81cfee9ce7",null)},8636:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(60241).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/agents/agents/agents-manage-ui/src/app/[tenantId]/projects/[projectId]/not-found.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/agents/agents/agents-manage-ui/src/app/[tenantId]/projects/[projectId]/not-found.tsx","default")},23413:(a,b,c)=>{"use strict";c.d(b,{S:()=>k});var d=c(59111),e=c(71771),f=c(2856),g=c(80974),h=c(42723),i=c(67466);function j(a){return(0,d.jsxs)("div",{"data-slot":"json-editor",className:`space-y-3 relative overflow-hidden p-1 ${a.className||""}`,children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 absolute top-3 right-3 z-10",children:[!a.value?.trim()&&(0,d.jsx)(f.$,{type:"button",onClick:()=>{let b=(0,g.Fc)();a.onChange(b)},variant:"outline",size:"sm",className:"h-6 px-2 text-xs rounded-sm",children:"Template"}),(0,d.jsx)(f.$,{type:"button",onClick:()=>{let b=a.value;if(b?.trim()){let c=(0,h.IB)(b);a.onChange(c)}},variant:"outline",size:"sm",className:"h-6 px-2 text-xs rounded-sm",disabled:!a.value?.trim(),children:"Format"})]}),(0,d.jsx)(i.i,{value:a.value||"",onChange:a.onChange,placeholder:a.placeholder,disabled:a.disabled,readOnly:a.readOnly})]})}function k({control:a,name:b,label:c="JSON Schema",placeholder:f,disabled:g,description:h,readOnly:i,isRequired:k=!1}){return(0,d.jsx)(e.u,{control:a,name:b,label:c,description:h,isRequired:k,children:a=>(0,d.jsx)(j,{placeholder:f,...a,onChange:a.onChange,readOnly:i,disabled:g})})}},23757:(a,b,c)=>{Promise.resolve().then(c.bind(c,36132))},29160:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>h,dynamic:()=>g});var d=c(72669),e=c(95460),f=c(54637);let g="force-dynamic";async function h({children:a,params:b}){let{tenantId:c,projectId:g}=await b;try{await (0,f.Sw)(c,g)}catch(a){(0,e.notFound)()}return(0,d.jsx)(d.Fragment,{children:a})}},35859:(a,b,c)=>{Promise.resolve().then(c.bind(c,8636))},36132:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(60241).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/agents/agents/agents-manage-ui/src/app/[tenantId]/projects/[projectId]/artifact-components/error.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/agents/agents/agents-manage-ui/src/app/[tenantId]/projects/[projectId]/artifact-components/error.tsx","default")},37830:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>h});var d=c(59111),e=c(437),f=c(485);c(14450);var g=c(2856);function h(){let a=(0,f.useParams)(),b=(0,f.useRouter)(),c=a.tenantId,h=a.projectId;return(0,d.jsx)("div",{className:"flex min-h-[400px] flex-col items-center justify-center p-8",children:(0,d.jsxs)("div",{className:"text-center max-w-md",children:[(0,d.jsx)("div",{className:"mb-4 flex justify-center",children:(0,d.jsx)(e.A,{className:"h-12 w-12 text-muted-foreground"})}),(0,d.jsx)("h1",{className:"text-2xl font-semibold mb-2",children:"Project Not Found"}),(0,d.jsxs)("p",{className:"text-muted-foreground mb-6",children:['The project "',h,"\" does not exist or you don't have access to it."]}),(0,d.jsx)("p",{className:"text-sm text-muted-foreground mb-6",children:"Redirecting to projects list in 3 seconds..."}),(0,d.jsx)(g.$,{onClick:()=>b.push(`/${c}/projects`),variant:"default",children:"Go to Projects List"})]})})}},44733:(a,b,c)=>{"use strict";c.d(b,{ArtifactComponentForm:()=>d});let d=(0,c(60241).registerClientReference)(function(){throw Error("Attempted to call ArtifactComponentForm() from the server but ArtifactComponentForm is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/agents/agents/agents-manage-ui/src/components/artifact-components/form/artifact-component-form.tsx","ArtifactComponentForm")},45622:()=>{},49698:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>f});var d=c(59111),e=c(43433);function f(){return(0,d.jsx)(e.A,{description:"Something went wrong."})}},59567:(a,b,c)=>{Promise.resolve().then(c.bind(c,44733)),Promise.resolve().then(c.bind(c,97633)),Promise.resolve().then(c.bind(c,80248)),Promise.resolve().then(c.t.bind(c,93520,23))},62503:(a,b,c)=>{"use strict";c.d(b,{f:()=>d});let d=c(45809).string().min(1,"Id is required.").max(64,"Id must be less than 64 characters.").regex(/^[a-zA-Z0-9_-]+$/,"Id must contain only alphanumeric characters, underscores, and dashes. No spaces allowed.")},67815:(a,b,c)=>{Promise.resolve().then(c.bind(c,93596)),Promise.resolve().then(c.bind(c,24003)),Promise.resolve().then(c.bind(c,19603)),Promise.resolve().then(c.t.bind(c,61678,23))},71021:(a,b,c)=>{Promise.resolve().then(c.bind(c,49698))},74402:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>j});var d=c(72669),e=c(17932),f=c(96737),g=c(39885),h=c(3687),i=c(82058);function j(){return(0,d.jsx)(e.H,{breadcrumbs:[{label:"Artifact components"}],children:(0,d.jsxs)(f.D,{children:[(0,d.jsx)(g.zY,{title:"Artifact components",description:i.lh}),(0,d.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-3 md:gap-4",children:Array.from({length:6}).map((a,b)=>(0,d.jsx)(h.E,{className:"h-36 w-full rounded-lg"},`loading-artifact-${b}`))})]})})}},80974:(a,b,c)=>{"use strict";c.d(b,{Fc:()=>k,SR:()=>l,_O:()=>j});var d=c(7352),e=c(43381);let f=d.ZU.Object({type:d.ZU.Union([d.ZU.Literal("string"),d.ZU.Literal("number"),d.ZU.Literal("integer"),d.ZU.Literal("boolean"),d.ZU.Literal("array"),d.ZU.Literal("object"),d.ZU.Literal("null")]),description:d.ZU.String({minLength:1}),format:d.ZU.Optional(d.ZU.String()),pattern:d.ZU.Optional(d.ZU.String()),minimum:d.ZU.Optional(d.ZU.Number()),maximum:d.ZU.Optional(d.ZU.Number()),minLength:d.ZU.Optional(d.ZU.Number()),maxLength:d.ZU.Optional(d.ZU.Number()),items:d.ZU.Optional(d.ZU.Any()),properties:d.ZU.Optional(d.ZU.Any()),enum:d.ZU.Optional(d.ZU.Array(d.ZU.Any())),const:d.ZU.Optional(d.ZU.Any()),default:d.ZU.Optional(d.ZU.Any())}),g=d.ZU.Object({type:d.ZU.Literal("object"),properties:d.ZU.Record(d.ZU.String(),f),required:d.ZU.Array(d.ZU.String(),{minItems:1}),additionalProperties:d.ZU.Optional(d.ZU.Boolean()),description:d.ZU.Optional(d.ZU.String())}),h=e.gv.Compile(f),i=e.gv.Compile(g);function j(a){let b=[],{parsed:c,errors:d}=function(a){let b=[],c=null;if(!a?.trim())return{parsed:null,errors:b};try{c=JSON.parse(a)}catch(a){b.push({path:"root",message:a instanceof Error?a.message:"Invalid JSON syntax",type:"syntax"})}return{parsed:c,errors:b}}(a);if(d.length>0)return{isValid:!1,errors:d,warnings:b};if(!c)return{isValid:!0,errors:[],warnings:["Empty schema provided"]};let e=[...function(a){let b=[];return a&&"object"==typeof a?!i.Check(a)&&(a.type&&"object"===a.type||b.push({path:"type",message:'Schema must have type: "object" for LLM compatibility',type:"llm_requirement"}),a.properties&&"object"==typeof a.properties||b.push({path:"properties",message:'Schema must have a "properties" object',type:"schema"}),a.required&&Array.isArray(a.required)||b.push({path:"required",message:'Schema must have a "required" array (can be empty)',type:"llm_requirement"}),a.properties&&"object"==typeof a.properties&&Object.entries(a.properties).forEach(([a,c])=>{h.Check(c)||[...h.Errors(c)].forEach(c=>{let d=c.message;"/description"===c.path?d='Each property must have a "description" for LLM compatibility':"/type"===c.path&&(d='Each property must have a valid "type"'),b.push({path:`properties.${a}${c.path}`,message:d,type:"/description"===c.path?"llm_requirement":"schema"})})})):b.push({path:"root",message:"Schema must be an object",type:"schema"}),b}(c),...function(a){let b=[];return a&&"object"==typeof a&&(a.required&&Array.isArray(a.required)&&a.properties&&a.required.forEach(c=>{a.properties[c]||b.push({path:"required",message:`Required property "${c}" must exist in properties`,type:"schema"})}),a.properties&&"object"==typeof a.properties&&Object.entries(a.properties).forEach(([a,c])=>{c.description&&"string"==typeof c.description&&0!==c.description.trim().length||b.push({path:`properties.${a}.description`,message:"Each property must have a non-empty description for LLM compatibility",type:"llm_requirement"})})),b}(c)];return{isValid:0===e.length,errors:e,warnings:b}}function k(){return JSON.stringify({type:"object",properties:{example_property:{type:"string",description:"Description of what this property represents"}},required:["example_property"]},null,2)}function l(a){if(a instanceof SyntaxError){let b=a.message.toLowerCase();return b.includes("unexpected end of json input")?"Incomplete JSON - missing closing brackets or quotes":b.includes("unexpected token")?"Invalid character in JSON - check for missing commas, quotes, or brackets":b.includes("expected property name")||b.includes("expected ':' after property name")?"Property names must be in double quotes":b.includes("duplicate keys")?"Duplicate property names are not allowed":"Invalid JSON syntax - check structure and formatting"}return"Unable to parse JSON"}},92478:()=>{},93596:(a,b,c)=>{"use strict";c.d(b,{ArtifactComponentForm:()=>y});var d=c(59111),e=c(59099),f=c(485),g=c(94150),h=c(68156),i=c(17130),j=c(16426),k=c(23413),l=c(2856),m=c(93622),n=c(35283),o=c(90147);let p=(0,o.createServerReference)("7085fdceafe8b4c0eb3e41578b6029aebc6d28600d",o.callServer,void 0,o.findSourceMapURL,"updateArtifactComponentAction"),q=(0,o.createServerReference)("708a5820434473acf4a5140ea590980f2fb73df044",o.callServer,void 0,o.findSourceMapURL,"createArtifactComponentAction");var r=c(42723);let s={id:"",name:"",description:"",summaryProps:"",fullProps:""};var t=c(45809),u=c(80974),v=c(62503);let w=a=>t.string().min(1,`${a} schema is required.`).transform((a,b)=>{try{let c=JSON.parse(a),d=(0,u._O)(a);if(!d.isValid){let a=d.errors[0]?.message||"Invalid JSON schema";return b.addIssue({code:t.ZodIssueCode.custom,message:a}),t.NEVER}return c}catch(a){return b.addIssue({code:t.ZodIssueCode.custom,message:(0,u.SR)(a)}),t.NEVER}}),x=t.object({id:v.f,name:t.string().min(1,"Name is required."),description:t.string().min(1,"Description is required."),summaryProps:w("Summary props").optional(),fullProps:w("Full props").optional()});function y({id:a,tenantId:b,projectId:c,initialData:o}){let t=(0,g.mN)({resolver:(0,e.u)(x),defaultValues:(a=>{if(!a)return s;let b={...a};return b.summaryProps&&(b.summaryProps=(0,r.S_)(b.summaryProps)),b.fullProps&&(b.fullProps=(0,r.S_)(b.fullProps)),b})(o)}),{isSubmitting:u}=t.formState,v=(0,f.useRouter)();(0,n.S)({form:t,nameField:"name",idField:"id",isEditing:!!a});let w=async d=>{try{let e={...d};if(a){let a=await p(b,c,e);if(!a.success)return void h.oR.error(a.error||"Failed to update artifact component");h.oR.success("Artifact component updated")}else{let a=await q(b,c,e);if(!a.success)return void h.oR.error(a.error||"Failed to create artifact component");h.oR.success("Artifact component created"),v.push(`/${b}/projects/${c}/artifact-components`)}}catch(b){console.error("Error submitting artifact component:",b);let a=b instanceof Error?b.message:"An unexpected error occurred";h.oR.error(a)}};return(0,d.jsx)(m.lV,{...t,children:(0,d.jsxs)("form",{onSubmit:t.handleSubmit(w),className:"space-y-8",children:[(0,d.jsx)(i.a,{control:t.control,name:"name",label:"Name",placeholder:"Document Artifact",isRequired:!0}),(0,d.jsx)(i.a,{control:t.control,name:"id",label:"Id",placeholder:"my-artifact-component",disabled:!!a,isRequired:!0,description:a?"":"Choose a unique identifier for this component. Using an existing id will replace that component."}),(0,d.jsx)(j.K,{control:t.control,name:"description",label:"Description",placeholder:"Structured factual information extracted from search results",className:"min-h-[80px]",isRequired:!0}),(0,d.jsx)(k.S,{control:t.control,name:"summaryProps",label:"Summary props (JSON schema)",placeholder:"Enter a valid JSON Schema...",isRequired:!0}),(0,d.jsx)(k.S,{control:t.control,name:"fullProps",label:"Full props (JSON schema)",placeholder:"Enter a valid JSON Schema...",isRequired:!0}),(0,d.jsx)(l.$,{type:"submit",disabled:u,children:"Save"})]})})}},96107:(a,b,c)=>{Promise.resolve().then(c.bind(c,37830))}};
@@ -1 +0,0 @@
1
- "use strict";exports.id=6300,exports.ids=[6300],exports.modules={6461:(a,b,c)=>{let d,e;c.d(b,{Ak:()=>g});var f=c(77598);function g(a=21){var b;b=a|=0,!d||d.length<b?(d=Buffer.allocUnsafe(128*b),f.webcrypto.getRandomValues(d),e=0):e+b>d.length&&(f.webcrypto.getRandomValues(d),e=0),e+=b;let c="";for(let b=e-a;b<e;b++)c+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[63&d[b]];return c}},9710:(a,b,c)=>{c.d(b,{MCPServerForm:()=>D});var d=c(59111),e=c(59099),f=c(35558),g=c(6461),h=c(485),i=c(94150),j=c(68156),k=c(17130),l=c(55124),m=c(2856),n=c(93622),o=c(45471),p=c(90147);let q=(0,p.createServerReference)("70d3997f89872e74536b15ed9bcc3e455aec1a87d0",p.callServer,void 0,p.findSourceMapURL,"syncMCPTool"),r=(0,p.createServerReference)("706d244b77116e74687b306c9b0bff113dd35b7404",p.callServer,void 0,p.findSourceMapURL,"createMCPTool");var s=c(91740),t=c(39108),u=c(14450),v=c(12463),w=c(24703),x=c(37671);function y({control:a,name:b,label:c,availableTools:e=[],description:f,disabled:g=!1}){let{field:{value:h,onChange:j},fieldState:{error:k}}=(0,i.as)({name:b,control:a}),l=(0,u.useMemo)(()=>"object"==typeof h&&null!==h&&"type"in h?"all"===h.type?{type:"all"}:"selective"===h.type&&Array.isArray(h.tools)?{type:"selective",tools:h.tools}:{type:"selective",tools:[]}:{type:"selective",tools:[]},[h]),o=()=>{j({type:"all"})},p=()=>{j({type:"selective",tools:[]})},q=(a,b)=>{if("all"===l.type){let c=e.map(a=>a.name).filter(b=>b!==a);j({type:"selective",tools:b?[...c,a]:c})}else j({type:"selective",tools:b?[...l.tools.filter(b=>b!==a),a]:l.tools.filter(b=>b!==a)})},r=()=>{switch(l.type){case"all":return e.length;case"selective":return l.tools.filter(a=>e.some(b=>b.name===a)).length;default:return 0}},y=r()===e.length;return(0,d.jsx)(n.zB,{control:a,name:b,render:()=>(0,d.jsxs)(n.eI,{children:[(0,d.jsxs)(n.lR,{children:[c,(0,d.jsx)(v.E,{variant:"code",className:"border-none px-2 text-[10px] text-muted-foreground",children:r()})]}),f&&(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:f}),(0,d.jsxs)("div",{className:"mt-2",children:[0===e.length&&(0,d.jsx)("div",{className:"text-sm text-muted-foreground border rounded-md p-3 py-2 bg-gray-100/80 dark:bg-sidebar",children:"No tools available from this server"}),e.length>0&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 justify-between py-3 px-6 rounded-t-lg border border-b-0",children:[(0,d.jsxs)("div",{className:"text-sm",children:[r()," ",(0,d.jsxs)("span",{className:"text-gray-400 dark:text-white/40",children:["/ ",e.length," tool",1===e.length?"":"s"]})]}),y?(0,d.jsxs)(m.$,{type:"button",variant:"outline",size:"sm",onClick:p,disabled:g,children:[(0,d.jsx)(s.A,{className:"w-4 h-4 text-muted-foreground"}),"Deselect all"]}):(0,d.jsxs)(m.$,{type:"button",variant:"outline",size:"sm",onClick:o,disabled:g,children:[(0,d.jsx)(t.A,{className:"w-4 h-4 text-muted-foreground"}),"Select all"]})]}),(0,d.jsx)("div",{className:"max-h-96 overflow-y-auto border rounded-lg rounded-t-none scrollbar-thin scrollbar-thumb-muted-foreground/30 dark:scrollbar-thumb-muted-foreground/50 scrollbar-track-transparent",children:e.map(a=>{let b=(a=>{switch(l.type){case"all":return e.some(b=>b.name===a);case"selective":return l.tools.includes(a)&&e.some(b=>b.name===a);default:return!1}})(a.name);return(0,d.jsxs)("div",{className:"space-y-2 flex items-start gap-6 border-b last:border-b-0 py-4 px-6 relative",children:[(0,d.jsx)("div",{className:"flex items-center h-[22px]",children:(0,d.jsx)(w.S,{checked:b,disabled:g,className:"mb-0",onClick:()=>!g&&q(a.name,!b)})}),(0,d.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,d.jsx)(v.E,{variant:b?"primary":"code",className:`font-mono font-medium text-xs cursor-pointer transition-colors ${g?"opacity-50 cursor-not-allowed":""}`,onClick:()=>!g&&q(a.name,!b),children:a.name}),(0,d.jsxs)(x.Tooltip,{delayDuration:800,children:[(0,d.jsx)(x.TooltipTrigger,{asChild:!0,children:(0,d.jsx)("p",{className:"text-sm text-muted-foreground line-clamp-1",children:a.description})}),(0,d.jsx)(x.TooltipContent,{side:"bottom",align:"start",children:a.description})]})]})]},a.name)})})]})]}),(0,d.jsx)(n.C5,{children:k?.message})]})})}var z=c(45809);let A=z.discriminatedUnion("type",[z.object({type:z.literal("all")}),z.object({type:z.literal("selective"),tools:z.array(z.string())})]),B=z.object({name:z.string().min(1,"Name is required."),config:z.object({type:z.literal("mcp"),mcp:z.object({server:z.object({url:z.string().url("Must be a valid URL.")}),transport:z.object({type:z.nativeEnum(f.o7)}),toolsConfig:A.default({type:"all"})})}),credentialReferenceId:z.string().nullish(),imageUrl:z.string().optional()}),C={name:"",config:{type:"mcp",mcp:{server:{url:""},transport:{type:f.o7.streamableHttp},toolsConfig:{type:"all"}}},imageUrl:"",credentialReferenceId:"none"};function D({initialData:a,mode:b="create",tool:c,credentials:p,tenantId:s,projectId:t}){let u=(0,h.useRouter)(),v=(0,i.mN)({resolver:(0,e.u)(B),defaultValues:{...C,...a}}),{isSubmitting:w}=v.formState,x=async a=>{try{let d={...a,credentialReferenceId:"none"===a.credentialReferenceId?null:a.credentialReferenceId,config:{...a.config,mcp:{server:a.config.mcp.server,transport:a.config.mcp.transport,activeTools:"all"===a.config.mcp.toolsConfig.type?void 0:a.config.mcp.toolsConfig.tools}}};if("update"===b&&c)await (0,o.Y)(s,t,c.id,d),await q(s,t,c.id),j.oR.success("MCP server updated successfully"),u.push(`/${s}/projects/${t}/mcp-servers/${c.id}`);else{let a=await r(s,t,{...d,id:(0,g.Ak)()});await q(s,t,a.id),j.oR.success("MCP server created successfully"),u.push(`/${s}/projects/${t}/mcp-servers/${a.id}`)}}catch(a){console.error(`Failed to ${b} MCP tool:`,a),j.oR.error(`Failed to ${b} MCP server. Please try again.`)}};return(0,d.jsx)(n.lV,{...v,children:(0,d.jsxs)("form",{onSubmit:v.handleSubmit(x),className:"space-y-8",children:[(0,d.jsx)(k.a,{control:v.control,name:"name",label:"Name",placeholder:"MCP server",isRequired:!0}),(0,d.jsx)(k.a,{control:v.control,name:"config.mcp.server.url",label:"URL",placeholder:"https://api.example.com/mcp",isRequired:!0}),(0,d.jsx)(l.U,{control:v.control,selectTriggerClassName:"w-full",name:"config.mcp.transport.type",label:"Transport type",placeholder:"Select transport type",options:[{value:f.o7.streamableHttp,label:"Streamable HTTP"},{value:f.o7.sse,label:"Server-Sent Events (SSE)"}]}),(0,d.jsx)(k.a,{control:v.control,name:"imageUrl",label:"Image URL (optional)",placeholder:"https://example.com/icon.png or data:image/png;base64,..."}),(0,d.jsx)(l.U,{control:v.control,selectTriggerClassName:"w-full",name:"credentialReferenceId",label:"Credential",placeholder:"Select a credential",options:[{value:"none",label:"No Authentication"},...p.map(a=>({value:a.id,label:a.id}))]}),"update"===b&&(0,d.jsx)(y,{control:v.control,name:"config.mcp.toolsConfig",label:"Tools",availableTools:c?.availableTools||[],description:"Select which tools should be enabled for this MCP server"}),(0,d.jsx)(m.$,{type:"submit",disabled:w,children:"update"===b?"Save":"Create"})]})})}},12463:(a,b,c)=>{c.d(b,{E:()=>i});var d=c(59111),e=c(98848),f=c(53433),g=c(42723);let h=(0,f.F)("inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",secondary:"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",primary:"border border-primary/50 text-primary bg-primary/5 rounded-sm p-0.5 px-1.5 font-mono",destructive:"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground",code:"text-xs text-muted-foreground border bg-muted/80 dark:bg-muted/50 rounded-sm p-0.5 px-1.5 font-mono",success:"text-xs text-muted-foreground border rounded-sm p-0.5 px-1.5 font-mono bg-emerald-50 border-emerald-200 text-emerald-800 dark:text-emerald-300 dark:bg-emerald-950/40 uppercase",error:"text-xs text-muted-foreground border rounded-sm p-0.5 px-1.5 font-mono bg-red-50 border-red-200 text-red-800 dark:border-red-700 dark:text-red-300 dark:bg-red-950/40 uppercase",warning:"text-xs text-muted-foreground border rounded-sm p-0.5 px-1.5 font-mono bg-amber-50 border-amber-200 text-amber-800 dark:border-amber-700 dark:text-amber-300 dark:bg-amber-950/40 uppercase",sky:"text-xs text-muted-foreground border rounded-sm p-0.5 px-1.5 font-mono bg-sky-50 border-sky-200 text-sky-800 dark:border-sky-700 dark:text-sky-300 dark:bg-sky-950/40",violet:"text-xs text-muted-foreground border rounded-sm p-0.5 px-1.5 font-mono bg-violet-50 border-violet-200 text-violet-800 dark:border-violet-700 dark:text-violet-300 dark:bg-violet-950/40",orange:"text-xs text-muted-foreground border rounded-sm p-0.5 px-1.5 font-mono bg-orange-50 border-orange-200 text-orange-800 dark:border-orange-700 dark:text-orange-300 dark:bg-orange-950/40"}},defaultVariants:{variant:"default"}});function i({className:a,variant:b,asChild:c=!1,...f}){let i=c?e.DX:"span";return(0,d.jsx)(i,{"data-slot":"badge",className:(0,g.cn)(h({variant:b}),a),...f})}},24703:(a,b,c)=>{c.d(b,{S:()=>h});var d=c(59111),e=c(51006),f=c(39108),g=c(42723);function h({className:a,...b}){return(0,d.jsx)(e.bL,{"data-slot":"checkbox",className:(0,g.cn)("peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",a),...b,children:(0,d.jsx)(e.C1,{"data-slot":"checkbox-indicator",className:"flex items-center justify-center text-current transition-none",children:(0,d.jsx)(f.A,{className:"size-3.5"})})})}},45471:(a,b,c)=>{c.d(b,{Y:()=>e});var d=c(90147);let e=(0,d.createServerReference)("78d610d0f74ec78e7a3bba4836295a8695a0aff764",d.callServer,void 0,d.findSourceMapURL,"updateMCPTool")},49540:(a,b,c)=>{c.d(b,{bq:()=>l,eb:()=>n,gC:()=>m,l6:()=>j,yv:()=>k});var d=c(59111),e=c(41404),f=c(67048),g=c(39108),h=c(25773),i=c(42723);function j({...a}){return(0,d.jsx)(e.bL,{"data-slot":"select",...a})}function k({...a}){return(0,d.jsx)(e.WT,{"data-slot":"select-value",...a})}function l({className:a,size:b="default",children:c,...g}){return(0,d.jsxs)(e.l9,{"data-slot":"select-trigger","data-size":b,className:(0,i.cn)("border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 font-normal normal-case",a),...g,children:[c,(0,d.jsx)(e.In,{asChild:!0,children:(0,d.jsx)(f.A,{className:"size-4 opacity-50"})})]})}function m({className:a,children:b,position:c="popper",...f}){return(0,d.jsx)(e.ZL,{children:(0,d.jsxs)(e.UC,{"data-slot":"select-content",className:(0,i.cn)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto scrollbar-thin scrollbar-thumb-muted-foreground/30 dark:scrollbar-thumb-muted-foreground/50 scrollbar-track-transparent rounded-md border shadow-md","popper"===c&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",a),position:c,...f,children:[(0,d.jsx)(o,{}),(0,d.jsx)(e.LM,{className:(0,i.cn)("p-1","popper"===c&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"),children:b}),(0,d.jsx)(p,{})]})})}function n({className:a,children:b,...c}){return(0,d.jsxs)(e.q7,{"data-slot":"select-item",className:(0,i.cn)("focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",a),...c,children:[(0,d.jsx)("span",{className:"absolute right-2 flex size-3.5 items-center justify-center",children:(0,d.jsx)(e.VF,{children:(0,d.jsx)(g.A,{className:"size-4"})})}),(0,d.jsx)(e.p4,{children:b})]})}function o({className:a,...b}){return(0,d.jsx)(e.PP,{"data-slot":"select-scroll-up-button",className:(0,i.cn)("flex cursor-default items-center justify-center py-1",a),...b,children:(0,d.jsx)(h.A,{className:"size-4"})})}function p({className:a,...b}){return(0,d.jsx)(e.wn,{"data-slot":"select-scroll-down-button",className:(0,i.cn)("flex cursor-default items-center justify-center py-1",a),...b,children:(0,d.jsx)(f.A,{className:"size-4"})})}},51006:(a,b,c)=>{c.d(b,{C1:()=>x,bL:()=>v});var d=c(14450),e=c(90890),f=c(2102),g=c(13254),h=c(19975),i=c(82087),j=c(22871),k=c(66261),l=c(6118),m=c(59111),n="Checkbox",[o,p]=(0,f.A)(n),[q,r]=o(n);function s(a){let{__scopeCheckbox:b,checked:c,children:e,defaultChecked:f,disabled:g,form:i,name:j,onCheckedChange:k,required:l,value:o="on",internal_do_not_use_render:p}=a,[r,s]=(0,h.i)({prop:c,defaultProp:f??!1,onChange:k,caller:n}),[t,u]=d.useState(null),[v,w]=d.useState(null),x=d.useRef(!1),y=!t||!!i||!!t.closest("form"),z={checked:r,disabled:g,setChecked:s,control:t,setControl:u,name:j,form:i,value:o,hasConsumerStoppedPropagationRef:x,required:l,defaultChecked:!A(f)&&f,isFormControl:y,bubbleInput:v,setBubbleInput:w};return(0,m.jsx)(q,{scope:b,...z,children:"function"==typeof p?p(z):e})}var t="CheckboxTrigger",u=d.forwardRef(({__scopeCheckbox:a,onKeyDown:b,onClick:c,...f},h)=>{let{control:i,value:j,disabled:k,checked:n,required:o,setControl:p,setChecked:q,hasConsumerStoppedPropagationRef:s,isFormControl:u,bubbleInput:v}=r(t,a),w=(0,e.s)(h,p),x=d.useRef(n);return d.useEffect(()=>{let a=i?.form;if(a){let b=()=>q(x.current);return a.addEventListener("reset",b),()=>a.removeEventListener("reset",b)}},[i,q]),(0,m.jsx)(l.sG.button,{type:"button",role:"checkbox","aria-checked":A(n)?"mixed":n,"aria-required":o,"data-state":B(n),"data-disabled":k?"":void 0,disabled:k,value:j,...f,ref:w,onKeyDown:(0,g.mK)(b,a=>{"Enter"===a.key&&a.preventDefault()}),onClick:(0,g.mK)(c,a=>{q(a=>!!A(a)||!a),v&&u&&(s.current=a.isPropagationStopped(),s.current||a.stopPropagation())})})});u.displayName=t;var v=d.forwardRef((a,b)=>{let{__scopeCheckbox:c,name:d,checked:e,defaultChecked:f,required:g,disabled:h,value:i,onCheckedChange:j,form:k,...l}=a;return(0,m.jsx)(s,{__scopeCheckbox:c,checked:e,defaultChecked:f,disabled:h,required:g,onCheckedChange:j,name:d,form:k,value:i,internal_do_not_use_render:({isFormControl:a})=>(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(u,{...l,ref:b,__scopeCheckbox:c}),a&&(0,m.jsx)(z,{__scopeCheckbox:c})]})})});v.displayName=n;var w="CheckboxIndicator",x=d.forwardRef((a,b)=>{let{__scopeCheckbox:c,forceMount:d,...e}=a,f=r(w,c);return(0,m.jsx)(k.C,{present:d||A(f.checked)||!0===f.checked,children:(0,m.jsx)(l.sG.span,{"data-state":B(f.checked),"data-disabled":f.disabled?"":void 0,...e,ref:b,style:{pointerEvents:"none",...a.style}})})});x.displayName=w;var y="CheckboxBubbleInput",z=d.forwardRef(({__scopeCheckbox:a,...b},c)=>{let{control:f,hasConsumerStoppedPropagationRef:g,checked:h,defaultChecked:k,required:n,disabled:o,name:p,value:q,form:s,bubbleInput:t,setBubbleInput:u}=r(y,a),v=(0,e.s)(c,u),w=(0,i.Z)(h),x=(0,j.X)(f);d.useEffect(()=>{if(!t)return;let a=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set,b=!g.current;if(w!==h&&a){let c=new Event("click",{bubbles:b});t.indeterminate=A(h),a.call(t,!A(h)&&h),t.dispatchEvent(c)}},[t,w,h,g]);let z=d.useRef(!A(h)&&h);return(0,m.jsx)(l.sG.input,{type:"checkbox","aria-hidden":!0,defaultChecked:k??z.current,required:n,disabled:o,name:p,value:q,form:s,...b,tabIndex:-1,ref:v,style:{...b.style,...x,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});function A(a){return"indeterminate"===a}function B(a){return A(a)?"indeterminate":a?"checked":"unchecked"}z.displayName=y},55124:(a,b,c)=>{c.d(b,{U:()=>g});var d=c(59111),e=c(49540),f=c(71771);function g({control:a,name:b,label:c,placeholder:g,options:h,disabled:i=!1,selectTriggerClassName:j,isRequired:k=!1}){return(0,d.jsx)(f.u,{control:a,name:b,label:c,isRequired:k,children:a=>(0,d.jsxs)(e.l6,{onValueChange:a.onChange,defaultValue:a.value,disabled:i,children:[(0,d.jsx)(e.bq,{disabled:i,className:j,children:(0,d.jsx)(e.yv,{placeholder:g})}),(0,d.jsx)(e.gC,{children:h.map(a=>(0,d.jsx)(e.eb,{value:a.value,disabled:a.disabled,children:a.label},a.value))})]})})}},72969:(a,b,c)=>{c.d(b,{MCPServerForm:()=>d});let d=(0,c(60241).registerClientReference)(function(){throw Error("Attempted to call MCPServerForm() from the server but MCPServerForm is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/agents/agents/agents-manage-ui/src/components/mcp-servers/form/mcp-server-form.tsx","MCPServerForm")},81097:(a,b,c)=>{c.d(b,{$Y:()=>g,GO:()=>i,K3:()=>h,h9:()=>k,nZ:()=>j});var d=c(1274);c(2082);var e=c(53842),f=c(41979);async function g(a,b,c=1,d=50){(0,f.M2)(a),(0,f.nt)(b);let h=new URLSearchParams({page:c.toString(),limit:d.toString()});return(await (0,e.J)(`tenants/${a}/projects/${b}/credentials?${h}`)).data}async function h(a,b,c){return(0,f.M2)(a),(0,f.nt)(b),(await (0,e.J)(`tenants/${a}/projects/${b}/credentials/${c}`)).data}async function i(a,b,c){return(0,f.M2)(a),(0,f.nt)(b),(await (0,e.J)(`tenants/${a}/projects/${b}/credentials`,{method:"POST",body:JSON.stringify(c)})).data}async function j(a,b,c,d){return(0,f.M2)(a),(0,f.nt)(b),(await (0,e.J)(`tenants/${a}/projects/${b}/credentials/${c}`,{method:"PUT",body:JSON.stringify(d)})).data}async function k(a,b,c){(0,f.M2)(a),(0,f.nt)(b),await (0,e.J)(`tenants/${a}/projects/${b}/credentials/${c}`,{method:"DELETE"})}(0,c(95454).D)([g,h,i,j,k]),(0,d.A)(g,"788bcc2d490ee6fafe94686b43fe258e23c6e45d2f",null),(0,d.A)(h,"7071ee4a497d701463cc58e418d70cd8e60fccc5b2",null),(0,d.A)(i,"704ae21ae2f483618be2bffb1b97c4fd2f555c755c",null),(0,d.A)(j,"780cc26ef5c3c1d02f5c4b4fe90398431b5ff3c7d3",null),(0,d.A)(k,"708fe5f5fc0aaf6282e55c91b8407bc246503d8682",null)}};
@@ -1 +0,0 @@
1
- exports.id=6838,exports.ids=[6838],exports.modules={88:(a,b,c)=>{"use strict";c.d(b,{T:()=>d});let d=a=>{let[b,c]=a.name.split("::");return{type:b,name:c}}},310:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(89892).A)("lock-open",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 9.9-1",key:"1mm8w8"}]])},8636:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(60241).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/agents/agents/agents-manage-ui/src/app/[tenantId]/projects/[projectId]/not-found.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/agents/agents/agents-manage-ui/src/app/[tenantId]/projects/[projectId]/not-found.tsx","default")},12463:(a,b,c)=>{"use strict";c.d(b,{E:()=>i});var d=c(59111),e=c(98848),f=c(53433),g=c(42723);let h=(0,f.F)("inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",secondary:"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",primary:"border border-primary/50 text-primary bg-primary/5 rounded-sm p-0.5 px-1.5 font-mono",destructive:"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground",code:"text-xs text-muted-foreground border bg-muted/80 dark:bg-muted/50 rounded-sm p-0.5 px-1.5 font-mono",success:"text-xs text-muted-foreground border rounded-sm p-0.5 px-1.5 font-mono bg-emerald-50 border-emerald-200 text-emerald-800 dark:text-emerald-300 dark:bg-emerald-950/40 uppercase",error:"text-xs text-muted-foreground border rounded-sm p-0.5 px-1.5 font-mono bg-red-50 border-red-200 text-red-800 dark:border-red-700 dark:text-red-300 dark:bg-red-950/40 uppercase",warning:"text-xs text-muted-foreground border rounded-sm p-0.5 px-1.5 font-mono bg-amber-50 border-amber-200 text-amber-800 dark:border-amber-700 dark:text-amber-300 dark:bg-amber-950/40 uppercase",sky:"text-xs text-muted-foreground border rounded-sm p-0.5 px-1.5 font-mono bg-sky-50 border-sky-200 text-sky-800 dark:border-sky-700 dark:text-sky-300 dark:bg-sky-950/40",violet:"text-xs text-muted-foreground border rounded-sm p-0.5 px-1.5 font-mono bg-violet-50 border-violet-200 text-violet-800 dark:border-violet-700 dark:text-violet-300 dark:bg-violet-950/40",orange:"text-xs text-muted-foreground border rounded-sm p-0.5 px-1.5 font-mono bg-orange-50 border-orange-200 text-orange-800 dark:border-orange-700 dark:text-orange-300 dark:bg-orange-950/40"}},defaultVariants:{variant:"default"}});function i({className:a,variant:b,asChild:c=!1,...f}){let i=c?e.DX:"span";return(0,d.jsx)(i,{"data-slot":"badge",className:(0,g.cn)(h({variant:b}),a),...f})}},29160:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>h,dynamic:()=>g});var d=c(72669),e=c(95460),f=c(54637);let g="force-dynamic";async function h({children:a,params:b}){let{tenantId:c,projectId:g}=await b;try{await (0,f.Sw)(c,g)}catch(a){(0,e.notFound)()}return(0,d.jsx)(d.Fragment,{children:a})}},35859:(a,b,c)=>{Promise.resolve().then(c.bind(c,8636))},37830:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>h});var d=c(59111),e=c(437),f=c(485);c(14450);var g=c(2856);function h(){let a=(0,f.useParams)(),b=(0,f.useRouter)(),c=a.tenantId,h=a.projectId;return(0,d.jsx)("div",{className:"flex min-h-[400px] flex-col items-center justify-center p-8",children:(0,d.jsxs)("div",{className:"text-center max-w-md",children:[(0,d.jsx)("div",{className:"mb-4 flex justify-center",children:(0,d.jsx)(e.A,{className:"h-12 w-12 text-muted-foreground"})}),(0,d.jsx)("h1",{className:"text-2xl font-semibold mb-2",children:"Project Not Found"}),(0,d.jsxs)("p",{className:"text-muted-foreground mb-6",children:['The project "',h,"\" does not exist or you don't have access to it."]}),(0,d.jsx)("p",{className:"text-sm text-muted-foreground mb-6",children:"Redirecting to projects list in 3 seconds..."}),(0,d.jsx)(g.$,{onClick:()=>b.push(`/${c}/projects`),variant:"default",children:"Go to Projects List"})]})})}},38224:(a,b,c)=>{"use strict";c.d(b,{BW:()=>m,Wy:()=>k,XL:()=>i,YU:()=>j,ai:()=>n,iu:()=>g,xl:()=>h,zp:()=>l});var d=c(1274);c(2082);var e=c(53842),f=c(41979);async function g(a,b,c=1,d=50,h){(0,f.M2)(a),(0,f.nt)(b);let i=new URLSearchParams({page:c.toString(),limit:d.toString()});return h&&i.append("status",h),(await (0,e.J)(`tenants/${a}/projects/${b}/tools?${i}`)).data}async function h(a,b,c){return(0,f.M2)(a),(0,f.nt)(b),(await (0,e.J)(`tenants/${a}/projects/${b}/tools/${c}`)).data}async function i(a,b,c){return(0,f.M2)(a),(0,f.nt)(b),(await (0,e.J)(`tenants/${a}/projects/${b}/tools`,{method:"POST",body:JSON.stringify(c)})).data}async function j(a,b,c,d){return(0,f.M2)(a),(0,f.nt)(b),(await (0,e.J)(`tenants/${a}/projects/${b}/tools/${c}`,{method:"PUT",body:JSON.stringify(d)})).data}async function k(a,b,c){(0,f.M2)(a),(0,f.nt)(b),await (0,e.J)(`tenants/${a}/projects/${b}/tools/${c}`,{method:"DELETE"})}async function l(a,b,c){return(0,f.M2)(a),(0,f.nt)(b),(await (0,e.J)(`tenants/${a}/projects/${b}/tools/${c}/health-check`,{method:"POST"})).data}async function m(a,b,c){return(0,f.M2)(a),(0,f.nt)(b),(await (0,e.J)(`tenants/${a}/projects/${b}/tools/${c}/available-tools`)).data}async function n(a,b,c){return(0,f.M2)(a),(0,f.nt)(b),(await (0,e.J)(`tenants/${a}/projects/${b}/tools/${c}/sync`,{method:"POST"})).data}(0,c(95454).D)([g,h,i,j,k,l,m,n]),(0,d.A)(g,"7cf50623a70828b93d4c0e24b59e3cf705ac251d07",null),(0,d.A)(h,"70e44b70b3ac5ba360da0f946c0234b40f0e4c1fce",null),(0,d.A)(i,"706d244b77116e74687b306c9b0bff113dd35b7404",null),(0,d.A)(j,"78d610d0f74ec78e7a3bba4836295a8695a0aff764",null),(0,d.A)(k,"70549c34e743227f52a08857692c66f1772aa44480",null),(0,d.A)(l,"7031748bfdeefb1858e800df3199bbd2bc90223a31",null),(0,d.A)(m,"7084834858b744036d73947b881ffbc7e9669ac54b",null),(0,d.A)(n,"70d3997f89872e74536b15ed9bcc3e455aec1a87d0",null)},38416:(a,b,c)=>{"use strict";c.d(b,{u:()=>j});var d=c(59111),e=c(75116),f=c(24146),g=c(14450),h=c(42723),i=c(73913);function j({imageUrl:a,name:b,provider:c,size:j=24,className:k}){let[l,m]=(0,g.useState)(!1),[n,o]=(0,g.useState)(!0);return!a||l?c?(0,d.jsx)(i.r,{provider:c,size:j,className:k}):(0,d.jsx)(e.A,{className:(0,h.cn)("text-muted-foreground",k),style:{width:j,height:j}}):a.startsWith("data:image/")?(0,d.jsx)(f.default,{src:a,alt:b,width:j,height:j,className:(0,h.cn)("object-contain",k),onError:()=>m(!0)}):(0,d.jsxs)("div",{className:(0,h.cn)("relative",k),style:{width:j,height:j},children:[n&&c&&(0,d.jsx)(i.r,{provider:c,size:j,className:"absolute inset-0"}),(0,d.jsx)(f.default,{src:a,alt:b,width:j,height:j,className:(0,h.cn)("object-contain transition-opacity duration-200",n?"opacity-0":"opacity-100"),onError:()=>{m(!0),o(!1)},onLoad:()=>o(!1),unoptimized:!0})]})}},45622:()=>{},51026:(a,b,c)=>{"use strict";c.r(b),c.d(b,{"40ed7230bdf5c5b8f2b00d4b02b1a3591ce5c39c06":()=>d.vj,"602b55558d8e03a24263fb3738ab9c3abd633cb41b":()=>d.Sw,"606b73619d7a77e338d8351ceee8f473ef59227b1b":()=>d.gA,"60c3c1105d7d0ede67074cc4777bd58b84601c96cb":()=>d.xx,"7031748bfdeefb1858e800df3199bbd2bc90223a31":()=>e.zp,"70549c34e743227f52a08857692c66f1772aa44480":()=>e.Wy,"706d244b77116e74687b306c9b0bff113dd35b7404":()=>e.XL,"7084834858b744036d73947b881ffbc7e9669ac54b":()=>e.BW,"70a690d1202294f849bfab33e487285f9a56985c3c":()=>d.vr,"70d3997f89872e74536b15ed9bcc3e455aec1a87d0":()=>e.ai,"70e44b70b3ac5ba360da0f946c0234b40f0e4c1fce":()=>e.xl,"78d610d0f74ec78e7a3bba4836295a8695a0aff764":()=>e.YU,"7cf50623a70828b93d4c0e24b59e3cf705ac251d07":()=>e.iu});var d=c(54637),e=c(38224)},73913:(a,b,c)=>{"use strict";c.d(b,{r:()=>g});var d=c(59111),e=c(24146),f=c(14450);function g({provider:a,fallback:b=!1,className:c,size:g=20}){let[h,i]=(0,f.useState)(!1),[j,k]=(0,f.useState)(!1),l=(a=>{let b=a.toLowerCase().replace(/[^a-z0-9-]/g,"-");return`/assets/provider-icons/${b}.svg`})(a);return(0,d.jsxs)("div",{className:`inline-flex items-center justify-center relative ${c||""}`,style:{width:g,height:g},children:[j&&(0,d.jsx)("div",{className:"absolute",children:b||((a,b)=>{let c=a.charAt(0),e=Math.max(8,Math.floor(.6*("string"==typeof b?Number.parseInt(b,10)||20:b)));return(0,d.jsx)("div",{className:"rounded-sm bg-gray-100 dark:bg-muted/50 text-muted-foreground font-medium flex items-center justify-center",style:{width:b,height:b,fontSize:`${e}px`,lineHeight:1},children:c})})(a,g)}),(0,d.jsx)(e.default,{src:l,alt:`${a} icon`,width:"string"==typeof g?Number.parseInt(g,10)||20:g,height:"string"==typeof g?Number.parseInt(g,10)||20:g,onLoad:()=>{i(!0)},onError:()=>{k(!0)},style:{maxWidth:"100%",maxHeight:"100%",opacity:h&&!j?1:0},unoptimized:!0},a)]})}},75116:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(89892).A)("hammer",[["path",{d:"m15 12-9.373 9.373a1 1 0 0 1-3.001-3L12 9",key:"1hayfq"}],["path",{d:"m18 15 4-4",key:"16gjal"}],["path",{d:"m21.5 11.5-1.914-1.914A2 2 0 0 1 19 8.172v-.344a2 2 0 0 0-.586-1.414l-1.657-1.657A6 6 0 0 0 12.516 3H9l1.243 1.243A6 6 0 0 1 12 8.485V10l2 2h1.172a2 2 0 0 1 1.414.586L18.5 14.5",key:"15ts47"}]])},92478:()=>{},96107:(a,b,c)=>{Promise.resolve().then(c.bind(c,37830))}};