@inkeep/agents-manage-ui 0.0.0-dev-20251015171558 → 0.0.0-dev-20251015173613

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 (179) 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 +142 -142
  3. package/.next/standalone/agents-manage-ui/.next/app-path-routes-manifest.json +10 -10
  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 +2 -2
  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]/agents/[agentId]/page.js +1 -1
  9. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/[agentId]/page_client-reference-manifest.js +1 -1
  10. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/new/page.js +2 -2
  11. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/new/page_client-reference-manifest.js +1 -1
  12. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/page.js +2 -2
  13. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/page_client-reference-manifest.js +1 -1
  14. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/api-keys/page.js +3 -3
  15. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/api-keys/page_client-reference-manifest.js +1 -1
  16. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page.js +2 -2
  17. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page.js.nft.json +1 -1
  18. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page_client-reference-manifest.js +1 -1
  19. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/new/page.js +2 -2
  20. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/new/page.js.nft.json +1 -1
  21. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/new/page_client-reference-manifest.js +1 -1
  22. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/page.js +2 -2
  23. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/page_client-reference-manifest.js +1 -1
  24. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/page.js +2 -2
  25. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/page.js.nft.json +1 -1
  26. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/page_client-reference-manifest.js +1 -1
  27. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/new/page.js +2 -2
  28. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/new/page.js.nft.json +1 -1
  29. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/new/page_client-reference-manifest.js +1 -1
  30. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/page.js +2 -2
  31. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/page_client-reference-manifest.js +1 -1
  32. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page.js +1 -1
  33. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page_client-reference-manifest.js +1 -1
  34. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page.js +2 -2
  35. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page.js.nft.json +1 -1
  36. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page_client-reference-manifest.js +1 -1
  37. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/page.js +1 -1
  38. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/page_client-reference-manifest.js +1 -1
  39. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page.js +2 -2
  40. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page.js.nft.json +1 -1
  41. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page_client-reference-manifest.js +1 -1
  42. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/page.js +1 -1
  43. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/page_client-reference-manifest.js +1 -1
  44. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/page.js +2 -2
  45. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/page_client-reference-manifest.js +1 -1
  46. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page.js +2 -2
  47. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page_client-reference-manifest.js +1 -1
  48. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page.js +2 -2
  49. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page_client-reference-manifest.js +1 -1
  50. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/new/page.js +2 -2
  51. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/new/page_client-reference-manifest.js +1 -1
  52. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/page.js +2 -2
  53. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/page_client-reference-manifest.js +1 -1
  54. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/page.js +2 -2
  55. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/page_client-reference-manifest.js +1 -1
  56. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/settings/page.js +2 -2
  57. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/settings/page_client-reference-manifest.js +1 -1
  58. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page.js +2 -2
  59. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page.js.nft.json +1 -1
  60. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page_client-reference-manifest.js +1 -1
  61. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page.js +1 -1
  62. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page_client-reference-manifest.js +1 -1
  63. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/page.js +2 -2
  64. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/page.js.nft.json +1 -1
  65. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/page_client-reference-manifest.js +1 -1
  66. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/page.js +1 -1
  67. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/page_client-reference-manifest.js +1 -1
  68. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found/page.js +1 -1
  69. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  70. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found.html +1 -1
  71. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found.rsc +8 -8
  72. package/.next/standalone/agents-manage-ui/.next/server/app/api/signoz/conversations/[conversationId]/route_client-reference-manifest.js +1 -1
  73. package/.next/standalone/agents-manage-ui/.next/server/app/api/signoz/route_client-reference-manifest.js +1 -1
  74. package/.next/standalone/agents-manage-ui/.next/server/app/page.js +2 -2
  75. package/.next/standalone/agents-manage-ui/.next/server/app/page_client-reference-manifest.js +1 -1
  76. package/.next/standalone/agents-manage-ui/.next/server/app-paths-manifest.json +10 -10
  77. package/.next/standalone/agents-manage-ui/.next/server/chunks/175.js +1 -1
  78. package/.next/standalone/agents-manage-ui/.next/server/chunks/1947.js +1 -0
  79. package/.next/standalone/agents-manage-ui/.next/server/chunks/2096.js +1 -0
  80. package/.next/standalone/agents-manage-ui/.next/server/chunks/{8481.js → 2524.js} +1 -1
  81. package/.next/standalone/agents-manage-ui/.next/server/chunks/3547.js +1 -1
  82. package/.next/standalone/agents-manage-ui/.next/server/chunks/6212.js +1 -1
  83. package/.next/standalone/agents-manage-ui/.next/server/chunks/7140.js +1 -1
  84. package/.next/standalone/agents-manage-ui/.next/server/chunks/7457.js +2 -2
  85. package/.next/standalone/agents-manage-ui/.next/server/chunks/7504.js +4 -4
  86. package/.next/standalone/agents-manage-ui/.next/server/chunks/{6444.js → 7692.js} +1 -1
  87. package/.next/standalone/agents-manage-ui/.next/server/pages/404.html +1 -1
  88. package/.next/standalone/agents-manage-ui/.next/server/pages/500.html +1 -1
  89. package/.next/standalone/agents-manage-ui/.next/server/server-reference-manifest.js +1 -1
  90. package/.next/standalone/agents-manage-ui/.next/server/server-reference-manifest.json +1 -1
  91. package/.next/standalone/agents-manage-ui/.next/static/chunks/{14909-c9f94557fbe169c3.js → 19622-0fb20f959c846dab.js} +1 -1
  92. package/.next/standalone/agents-manage-ui/.next/static/chunks/{71558-4b63c3b2035d6e03.js → 71558-62ad25a5f83cefc2.js} +1 -1
  93. package/.next/standalone/agents-manage-ui/.next/static/chunks/7190-cbdaa94c6114d535.js +1 -0
  94. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/page-03f4d57db9504381.js +1 -0
  95. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/api-keys/page-a0de41c5ca60854d.js +1 -0
  96. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page-13ba4022e47994bd.js +1 -0
  97. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/new/page-13ba4022e47994bd.js +1 -0
  98. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/{page-4de0569ac1b6f316.js → page-858702e250d0dce1.js} +1 -1
  99. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/page-0cb9bcfd428d01bd.js +1 -0
  100. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/new/page-0cb9bcfd428d01bd.js +1 -0
  101. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/{page-d1e2a39b365ead5b.js → page-d74b918ff5f8ad36.js} +1 -1
  102. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page-d501d2f02788cbc4.js +1 -0
  103. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page-e9a6eb4c526c5cfe.js +1 -0
  104. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page-9e653497256f1297.js +1 -0
  105. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/page-01e2aba63aaab8bd.js +1 -0
  106. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/new/{page-5911d859b6ddf52b.js → page-e6192c029a02b821.js} +1 -1
  107. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/page-37b586718dfa74ee.js +1 -0
  108. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/settings/{page-22a8abdb83301388.js → page-f369a5e6757a7cf9.js} +1 -1
  109. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/page-4096863bd5c9056f.js +1 -0
  110. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/{page-ea4fc0c4890ba4ee.js → page-68042c97a77a39fb.js} +1 -1
  111. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/{layout-a654ed46bff65f21.js → layout-2bd17c073426a0d9.js} +1 -1
  112. package/package.json +4 -4
  113. package/src/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page.tsx +0 -1
  114. package/src/app/api/signoz/route.ts +0 -2
  115. package/src/app/utils/active-tools.ts +0 -2
  116. package/src/app/utils/format-date.ts +0 -2
  117. package/src/components/agent/agent.tsx +0 -7
  118. package/src/components/agent/edges/self-loop-edge.tsx +0 -1
  119. package/src/components/agent/nodes/function-tool-node.tsx +0 -1
  120. package/src/components/agent/nodes/mcp-node.tsx +0 -1
  121. package/src/components/agent/playground/chat-widget.tsx +0 -1
  122. package/src/components/agent/playground/ikp-message.tsx +0 -3
  123. package/src/components/agent/sidepane/edges/edge-editor.tsx +0 -3
  124. package/src/components/agent/sidepane/nodes/function-tool-node-editor.tsx +0 -1
  125. package/src/components/agent/sidepane/nodes/mcp-node-editor.tsx +0 -1
  126. package/src/components/agent/sidepane/nodes/sub-agent-node-editor.tsx +0 -2
  127. package/src/components/artifact-components/form/validation.ts +0 -2
  128. package/src/components/credentials/views/edit-credential-form.tsx +0 -2
  129. package/src/components/credentials/views/generic-auth-form.tsx +0 -1
  130. package/src/components/data-components/form/validation.ts +0 -1
  131. package/src/components/form/prompt-editor.tsx +0 -4
  132. package/src/components/mcp-servers/mcp-tool-image.tsx +0 -1
  133. package/src/components/projects/form/project-form.tsx +0 -2
  134. package/src/components/projects/form/project-models-section.tsx +0 -2
  135. package/src/components/projects/form/project-stopwhen-section.tsx +0 -1
  136. package/src/components/traces/conversation-stats/conversation-list-item.tsx +0 -1
  137. package/src/components/traces/editors/json-editor-with-copy.tsx +0 -3
  138. package/src/components/traces/timeline/span-attributes.tsx +0 -1
  139. package/src/components/traces/timeline/timeline-wrapper.tsx +0 -2
  140. package/src/components/traces/traces-overview.tsx +0 -3
  141. package/src/components/ui/card-grid.tsx +0 -1
  142. package/src/components/ui/chart.tsx +0 -1
  143. package/src/components/ui/inheritance-indicator.tsx +0 -3
  144. package/src/components/ui/item-card-grid.tsx +0 -1
  145. package/src/features/agent/domain/deserialize.ts +0 -5
  146. package/src/features/agent/domain/serialize.ts +0 -8
  147. package/src/features/agent/state/use-agent-store.ts +0 -2
  148. package/src/hooks/use-chat-activities-polling.ts +0 -2
  149. package/src/hooks/use-node-editor.ts +0 -1
  150. package/src/hooks/use-oauth-login.ts +0 -1
  151. package/src/hooks/use-traces-query-state.ts +0 -1
  152. package/src/lib/api/api-config.ts +0 -1
  153. package/src/lib/api/artifact-components.ts +0 -4
  154. package/src/lib/api/projects.ts +0 -4
  155. package/src/lib/api/signoz-sql.ts +0 -1
  156. package/src/lib/api/signoz-stats.ts +0 -1
  157. package/src/lib/json-schema-validation.ts +0 -5
  158. package/src/lib/mcp-tools/nango-types.ts +0 -1
  159. package/src/lib/mcp-tools/nango.ts +0 -8
  160. package/src/lib/utils/agent-error-parser.ts +0 -2
  161. package/src/lib/utils/credentials-utils.ts +0 -1
  162. package/src/lib/utils/mcp-urls.ts +0 -2
  163. package/.next/standalone/agents-manage-ui/.next/server/chunks/4063.js +0 -1
  164. package/.next/standalone/agents-manage-ui/.next/server/chunks/6234.js +0 -1
  165. package/.next/standalone/agents-manage-ui/.next/static/chunks/7190-f9b7539b00f58884.js +0 -1
  166. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/page-05979d61fc9d022d.js +0 -1
  167. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/api-keys/page-e271cab8121e8c5e.js +0 -1
  168. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page-9ed0ac7a8d68d9f6.js +0 -1
  169. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/new/page-9ed0ac7a8d68d9f6.js +0 -1
  170. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/page-84fad863954d7f5a.js +0 -1
  171. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/new/page-84fad863954d7f5a.js +0 -1
  172. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page-6ff176b163e02744.js +0 -1
  173. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page-b3b06792fb9e4874.js +0 -1
  174. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page-b3250eae9b9f8c68.js +0 -1
  175. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/page-3238dd4ffa3799cd.js +0 -1
  176. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/page-895a795b0295dd98.js +0 -1
  177. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/page-e6671919d0c6f65e.js +0 -1
  178. /package/.next/standalone/agents-manage-ui/.next/static/{JamBQrLnwjG5pQos2wkPe → p3BKuZskU-ZBmibQcyAHZ}/_buildManifest.js +0 -0
  179. /package/.next/standalone/agents-manage-ui/.next/static/{JamBQrLnwjG5pQos2wkPe → p3BKuZskU-ZBmibQcyAHZ}/_ssgManifest.js +0 -0
@@ -13,7 +13,6 @@ export const dataComponentSchema = z.object({
13
13
  try {
14
14
  const parsed = JSON.parse(str);
15
15
 
16
- // Validate it's a proper LLM-compatible JSON schema
17
16
  const validationResult = validateJsonSchemaForLlm(str);
18
17
  if (!validationResult.isValid) {
19
18
  const errorMessage = validationResult.errors[0]?.message || 'Invalid JSON schema';
@@ -76,7 +76,6 @@ function isJMESPathExpressions(key: string): boolean {
76
76
  return key.includes('[?') || key.includes('[*]');
77
77
  }
78
78
 
79
- // Create linter for template variable validation
80
79
  function createTemplateVariableLinter(suggestions: string[]) {
81
80
  return linter((view) => {
82
81
  const diagnostics: Diagnostic[] = [];
@@ -92,7 +91,6 @@ function createTemplateVariableLinter(suggestions: string[]) {
92
91
  const to = line.from + match.index + match[0].length;
93
92
  const variableName = match[1];
94
93
 
95
- // Check if variable is valid (in suggestions) or reserved
96
94
  const isValid =
97
95
  validVariables.has(variableName) ||
98
96
  RESERVED_KEYS.has(variableName) ||
@@ -116,14 +114,12 @@ function createTemplateVariableLinter(suggestions: string[]) {
116
114
  });
117
115
  }
118
116
 
119
- // Create autocomplete source for context variables
120
117
  function createContextAutocompleteSource(suggestions: string[]): CompletionSource {
121
118
  return (context) => {
122
119
  const { state, pos } = context;
123
120
  const line = state.doc.lineAt(pos);
124
121
  const to = pos - line.from;
125
122
  const textBefore = line.text.slice(0, to);
126
- // Check if we're after a { character
127
123
  const match = textBefore.match(/\{([^}]*)$/);
128
124
  if (!match) return null;
129
125
 
@@ -24,7 +24,6 @@ export function MCPToolImage({
24
24
  const [imageError, setImageError] = useState(false);
25
25
  const [imageLoading, setImageLoading] = useState(true);
26
26
 
27
- // If no imageUrl or image failed to load, show fallback
28
27
  if (!imageUrl || imageError) {
29
28
  if (provider) {
30
29
  return <ProviderIcon provider={provider} size={size} className={className} />;
@@ -26,7 +26,6 @@ interface ProjectFormProps {
26
26
 
27
27
  const serializeData = (data: ProjectFormData) => {
28
28
  const cleanProviderOptions = (options: any) => {
29
- // Convert null, empty object, or falsy values to undefined
30
29
  if (!options || (typeof options === 'object' && Object.keys(options).length === 0)) {
31
30
  return undefined;
32
31
  }
@@ -48,7 +47,6 @@ const serializeData = (data: ProjectFormData) => {
48
47
  cleaned.stepCountIs = stopWhen.stepCountIs;
49
48
  }
50
49
 
51
- // If no valid properties, return empty object (undefined will not update the field)
52
50
  if (Object.keys(cleaned).length === 0) {
53
51
  return {};
54
52
  }
@@ -75,7 +75,6 @@ function StructuredOutputModelSection({ control }: { control: Control<ProjectFor
75
75
  name: 'models.structuredOutput.providerOptions',
76
76
  });
77
77
 
78
- // Get the base model to show as inherited value
79
78
  const baseModel = useWatch({ control, name: 'models.base.model' });
80
79
 
81
80
  return (
@@ -130,7 +129,6 @@ function SummarizerModelSection({ control }: { control: Control<ProjectFormData>
130
129
  name: 'models.summarizer.providerOptions',
131
130
  });
132
131
 
133
- // Get the base model to show as inherited value
134
132
  const baseModel = useWatch({ control, name: 'models.base.model' });
135
133
 
136
134
  return (
@@ -16,7 +16,6 @@ interface ProjectStopWhenSectionProps {
16
16
  }
17
17
 
18
18
  export function ProjectStopWhenSection({ control }: ProjectStopWhenSectionProps) {
19
- // Check if any stopWhen values are configured to determine default open state
20
19
  const stopWhen = useWatch({ control, name: 'stopWhen' });
21
20
  const hasConfiguredStopWhen = !!(stopWhen?.transferCountIs || stopWhen?.stepCountIs);
22
21
  const [isOpen, setIsOpen] = useState(hasConfiguredStopWhen);
@@ -40,7 +40,6 @@ export function ConversationListItem({ conversation, projectId }: ConversationLi
40
40
  (() => {
41
41
  try {
42
42
  const date = new Date(startTime);
43
- // Check if the date is valid
44
43
  if (Number.isNaN(date.getTime())) return null;
45
44
 
46
45
  const isoString = date.toISOString();
@@ -85,7 +85,6 @@ export const JsonEditorWithCopy: FC<{ value: string; uri: `${string}.json`; titl
85
85
  if (model.isDisposed()) {
86
86
  return;
87
87
  }
88
- // Update height based on content
89
88
  const contentHeight = editorInstance.getContentHeight();
90
89
  if (container) {
91
90
  container.style.height = `${contentHeight}px`;
@@ -134,9 +133,7 @@ export const JsonEditorWithCopy: FC<{ value: string; uri: `${string}.json`; titl
134
133
 
135
134
  const handleDownloadCode = useCallback(() => {
136
135
  const code = editorRef.current?.getValue() || '';
137
- // Create a blob with the JSON content
138
136
  const blob = new Blob([code], { type: 'application/json' });
139
- // Create a download link
140
137
  const url = URL.createObjectURL(blob);
141
138
  const link = document.createElement('a');
142
139
  link.href = url;
@@ -77,7 +77,6 @@ function sortAttributes(attributes: AttributeMap): AttributeMap {
77
77
  }
78
78
  });
79
79
 
80
- // Get remaining attributes sorted alphabetically
81
80
  const remainingKeys = Object.keys(attributes)
82
81
  .filter((key) => !PINNED_ATTRIBUTE_KEYS.includes(key as any))
83
82
  .sort();
@@ -270,7 +270,6 @@ export function TimelineWrapper({
270
270
  });
271
271
  return updated;
272
272
  });
273
- // Update global state
274
273
  const allProcessed = idsToProcess.every((id) => processedIdsRef.current.has(id));
275
274
  if (enableAutoScroll) {
276
275
  setAiMessagesGloballyCollapsed(allProcessed && aiMessageIds.length > 0);
@@ -303,7 +302,6 @@ export function TimelineWrapper({
303
302
  }
304
303
  setCollapsedAiMessages(newCollapsed);
305
304
 
306
- // Update global state based on current state
307
305
  const aiMessageIds = sortedActivities
308
306
  .filter(
309
307
  (activity) =>
@@ -110,7 +110,6 @@ export function TracesOverview({ refreshKey }: TracesOverviewProps) {
110
110
  return () => clearTimeout(timer);
111
111
  }, [searchQuery]);
112
112
 
113
- // Build span filters
114
113
  const spanFilters = useMemo<SpanFilterOptions | undefined>(() => {
115
114
  if (!spanName && attributes.length === 0) {
116
115
  return undefined;
@@ -122,7 +121,6 @@ export function TracesOverview({ refreshKey }: TracesOverviewProps) {
122
121
  return filters;
123
122
  }, [spanName, attributes]);
124
123
 
125
- // Get aggregate stats efficiently (server-side aggregation)
126
124
  const {
127
125
  aggregateStats,
128
126
  loading: aggregateLoading,
@@ -136,7 +134,6 @@ export function TracesOverview({ refreshKey }: TracesOverviewProps) {
136
134
  agentId: selectedAgent,
137
135
  });
138
136
 
139
- // Get paginated conversations for the list display
140
137
  const { stats, loading, error, refresh, pagination } = useConversationStats({
141
138
  startTime,
142
139
  endTime,
@@ -64,5 +64,4 @@ export interface CardItem {
64
64
  [key: string]: any;
65
65
  }
66
66
 
67
- // Helper function for items that have an id property
68
67
  export const getItemId = <T extends CardItem>(item: T): string | number => item.id;
@@ -286,7 +286,6 @@ function ChartLegendContent({
286
286
  );
287
287
  }
288
288
 
289
- // Helper to extract item config from a payload.
290
289
  function getPayloadConfigFromPayload(config: ChartConfig, payload: unknown, key: string) {
291
290
  if (typeof payload !== 'object' || payload === null) {
292
291
  return undefined;
@@ -102,7 +102,6 @@ export function InheritanceIndicator({
102
102
  );
103
103
  }
104
104
 
105
- // Helper function to determine inheritance status for models
106
105
  export function getModelInheritanceStatus(
107
106
  currentLevel: 'project' | 'agent' | 'subagent',
108
107
  currentValue: any,
@@ -195,7 +194,6 @@ export function getModelInheritanceStatus(
195
194
  };
196
195
  }
197
196
 
198
- // Helper function for execution limits inheritance
199
197
  export function getExecutionLimitInheritanceStatus(
200
198
  currentLevel: 'project' | 'agent' | 'agent',
201
199
  limitType: 'transferCountIs' | 'stepCountIs',
@@ -209,7 +207,6 @@ export function getExecutionLimitInheritanceStatus(
209
207
  const hasCurrentValue = currentValue !== undefined && currentValue !== null;
210
208
  const hasParentValue = parentValue !== undefined && parentValue !== null;
211
209
 
212
- // Check if current value matches parent value (indicating inheritance after builder resolution)
213
210
  if (hasCurrentValue && hasParentValue && currentValue === parentValue) {
214
211
  // Inheritance rules for execution limits
215
212
  if (limitType === 'transferCountIs' && currentLevel === 'agent') {
@@ -113,5 +113,4 @@ export interface CardItem {
113
113
  [key: string]: any;
114
114
  }
115
115
 
116
- // Helper function for items that have an id property
117
116
  export const getItemId = <T extends CardItem>(item: T): string | number => item.id;
@@ -164,7 +164,6 @@ export function deserializeAgentData(data: FullAgentDefinition): TransformResult
164
164
  ? { stepCountIs: internalAgent.stopWhen.stepCountIs }
165
165
  : undefined,
166
166
  type: agent.type,
167
- // Convert canUse back to tools, selectedTools, headers for UI
168
167
  tools: internalAgent.canUse ? internalAgent.canUse.map((item) => item.toolId) : [],
169
168
  selectedTools: internalAgent.canUse
170
169
  ? internalAgent.canUse.reduce(
@@ -201,17 +200,14 @@ export function deserializeAgentData(data: FullAgentDefinition): TransformResult
201
200
  nodes.push(agentNode);
202
201
  }
203
202
 
204
- // Create tool nodes from canUse items (using tools and functions lookups)
205
203
  for (const subAgentId of subAgentIds) {
206
204
  const agent = data.subAgents[subAgentId];
207
- // Check if agent has canUse property (internal agents)
208
205
  if ('canUse' in agent && agent.canUse && agent.canUse.length > 0) {
209
206
  for (const canUseItem of agent.canUse) {
210
207
  const toolId = canUseItem.toolId;
211
208
  const toolNodeId = nanoid();
212
209
  const relationshipId = canUseItem.agentToolRelationId;
213
210
 
214
- // Get tool details from lookup
215
211
  const tool = data.tools?.[toolId] || data.functionTools?.[toolId];
216
212
 
217
213
  // Determine node type based on tool type
@@ -277,7 +273,6 @@ export function deserializeAgentData(data: FullAgentDefinition): TransformResult
277
273
  for (const sourceSubAgentId of subAgentIds) {
278
274
  const sourceAgent = data.subAgents[sourceSubAgentId];
279
275
 
280
- // Check if agent has relationship properties (internal agents only)
281
276
  if ('canTransferTo' in sourceAgent && sourceAgent.canTransferTo) {
282
277
  for (const targetSubAgentId of sourceAgent.canTransferTo) {
283
278
  if (data.subAgents[targetSubAgentId]) {
@@ -31,7 +31,6 @@ export type ExtendedAgent =
31
31
  })
32
32
  | ExternalAgent;
33
33
 
34
- // Type guard to check if an agent is an internal agent
35
34
  function isInternalAgent(
36
35
  agent: ExtendedAgent | FullAgentDefinition['subAgents'][string]
37
36
  ): agent is InternalAgent {
@@ -121,7 +120,6 @@ export function serializeAgentData(
121
120
 
122
121
  const stopWhen = (node.data as any).stopWhen;
123
122
 
124
- // Build canUse array from edges connecting this agent to tool nodes (MCP and Function)
125
123
  const canUse: Array<{
126
124
  toolId: string;
127
125
  toolSelection?: string[] | null;
@@ -143,11 +141,9 @@ export function serializeAgentData(
143
141
  const toolId = (mcpNode.data as any).toolId;
144
142
 
145
143
  if (toolId) {
146
- // Get selected tools from MCP node's tempSelectedTools
147
144
  const tempSelectedTools = (mcpNode.data as any).tempSelectedTools;
148
145
  let toolSelection: string[] | null = null;
149
146
 
150
- // Get the relationshipId from the MCP node first
151
147
  const relationshipId = (mcpNode.data as any).relationshipId;
152
148
 
153
149
  if (tempSelectedTools !== undefined) {
@@ -217,10 +213,8 @@ export function serializeAgentData(
217
213
  const functionToolId = nodeData.functionToolId || nodeData.toolId || functionToolNode.id;
218
214
  const relationshipId = nodeData.relationshipId;
219
215
 
220
- // Get the function ID from the node data (should reference existing function)
221
216
  const functionId = nodeData.functionId || functionToolId;
222
217
 
223
- // Create function tool entry
224
218
  const functionToolData = {
225
219
  id: functionToolId,
226
220
  name: nodeData.name || '',
@@ -493,7 +487,6 @@ export function validateSerializedData(
493
487
  }
494
488
  }
495
489
 
496
- // Validate function tools for internal agents (check canUse array for function tools)
497
490
  if (isInternalAgent(agent) && agent.canUse) {
498
491
  for (const canUseItem of agent.canUse) {
499
492
  const toolId = canUseItem.toolId;
@@ -519,7 +512,6 @@ export function validateSerializedData(
519
512
  // Use the node map to get the React Flow node ID if available
520
513
  const nodeId = functionToolNodeMap?.get(toolId) || toolId;
521
514
 
522
- // Validate required fields for function tools
523
515
  if (!functionTool.name || String(functionTool.name).trim() === '') {
524
516
  errors.push({
525
517
  message: 'Function tool name is required',
@@ -144,7 +144,6 @@ export const agentStore = create<AgentState>()(
144
144
  }));
145
145
  },
146
146
  onNodesChange(changes) {
147
- // Check if any change type would modify the agent (not just selection changes)
148
147
  const hasModifyingChange = changes.some(
149
148
  // Don't trigger `position` as modified change, since when the nodes are repositioned,
150
149
  // they'll be re-laid out during the initial load anyway
@@ -158,7 +157,6 @@ export const agentStore = create<AgentState>()(
158
157
  }));
159
158
  },
160
159
  onEdgesChange(changes) {
161
- // Check if any change type would modify the agent (not just selection changes)
162
160
  const hasModifyingChange = changes.some(
163
161
  (change) => change.type === 'remove' || change.type === 'add' || change.type === 'replace'
164
162
  );
@@ -33,7 +33,6 @@ export const useChatActivitiesPolling = ({
33
33
  try {
34
34
  setError(null);
35
35
 
36
- // Create new abort controller for this request
37
36
  abortControllerRef.current = new AbortController();
38
37
  const currentConversationId = conversationId; // Capture current ID
39
38
 
@@ -63,7 +62,6 @@ export const useChatActivitiesPolling = ({
63
62
 
64
63
  const data: ConversationDetail = await response.json();
65
64
 
66
- // Validate that the response is still for the current conversation
67
65
  if (isComponentMountedRef.current && currentConversationId === conversationId) {
68
66
  // Only update state if data actually changed (by checking activity count)
69
67
  const newCount = data.activities?.length || 0;
@@ -107,7 +107,6 @@ export function useNodeEditor({ selectedNodeId, errorHelpers }: UseNodeEditorOpt
107
107
  const finalKey = nestedPath[nestedPath.length - 1];
108
108
  if (value === undefined || value === null || value === '') {
109
109
  delete current[finalKey];
110
- // Check if the parent object becomes empty after deletion
111
110
  if (Object.keys(updatedParent).length === 0) {
112
111
  updateField(parentField, null);
113
112
  return;
@@ -25,7 +25,6 @@ export function useOAuthLogin({ tenantId, projectId, onFinish, onError }: UseOAu
25
25
  activeAttempts.delete(toolId);
26
26
  }
27
27
  try {
28
- // Get the OAuth URL and open in popup window
29
28
  const oauthUrl = getOAuthLoginUrl({
30
29
  PUBLIC_INKEEP_AGENTS_MANAGE_API_URL,
31
30
  tenantId,
@@ -46,7 +46,6 @@ export function useTracesQueryState() {
46
46
  // Span filtering
47
47
  spanName: parseAsString.withDefault(''),
48
48
  spanAttributes: parseAsJson((value: unknown): SpanAttribute[] => {
49
- // Validate that the parsed JSON is an array of SpanAttribute objects
50
49
  if (!Array.isArray(value)) return [];
51
50
 
52
51
  return value.filter(
@@ -66,7 +66,6 @@ async function makeApiRequestInternal<T>(
66
66
  );
67
67
  }
68
68
 
69
- // Check if there's actually content to parse
70
69
  const contentType = response.headers.get('content-type');
71
70
  const hasJsonContent = contentType?.includes('application/json');
72
71
 
@@ -35,7 +35,6 @@ export async function fetchArtifactComponents(
35
35
  `tenants/${tenantId}/projects/${projectId}/artifact-components`
36
36
  );
37
37
 
38
- // Return the response as-is, preserving null/undefined props
39
38
  return response;
40
39
  }
41
40
 
@@ -54,7 +53,6 @@ export async function fetchArtifactComponent(
54
53
  `tenants/${tenantId}/projects/${projectId}/artifact-components/${artifactComponentId}`
55
54
  );
56
55
 
57
- // Return the response as-is, preserving null/undefined props
58
56
  return response.data;
59
57
  }
60
58
 
@@ -77,7 +75,6 @@ export async function createArtifactComponent(
77
75
  }
78
76
  );
79
77
 
80
- // Return the response as-is, preserving null/undefined props
81
78
  return response.data;
82
79
  }
83
80
 
@@ -100,7 +97,6 @@ export async function updateArtifactComponent(
100
97
  }
101
98
  );
102
99
 
103
- // Return the response as-is, preserving null/undefined props
104
100
  return response.data;
105
101
  }
106
102
 
@@ -13,7 +13,6 @@ export async function fetchProjects(tenantId: string): Promise<ListResponse<Proj
13
13
  `tenants/${tenantId}/projects`
14
14
  );
15
15
 
16
- // Map backend 'id' field to 'projectId' for frontend consistency
17
16
  if (response.data) {
18
17
  response.data = response.data.map((project: any) => ({
19
18
  ...project,
@@ -34,7 +33,6 @@ export async function fetchProject(
34
33
  `tenants/${tenantId}/projects/${projectId}`
35
34
  );
36
35
 
37
- // Map backend 'id' field to 'projectId' for frontend consistency
38
36
  if (response.data) {
39
37
  response.data = {
40
38
  ...response.data,
@@ -59,7 +57,6 @@ export async function createProject(
59
57
  }
60
58
  );
61
59
 
62
- // Map backend 'id' field to 'projectId' for frontend consistency
63
60
  if (response.data) {
64
61
  response.data = {
65
62
  ...response.data,
@@ -84,7 +81,6 @@ export async function updateProject(
84
81
  body: JSON.stringify(project),
85
82
  }
86
83
  );
87
- // Map backend 'id' field to 'projectId' for frontend consistency
88
84
  if (response.data) {
89
85
  response.data = {
90
86
  ...response.data,
@@ -123,7 +123,6 @@ export async function fetchAllSpanAttributes_SQL(
123
123
  }
124
124
 
125
125
  for (const r of rows) {
126
- // Build the span.data bag from the projected JSON maps
127
126
  const attrsString = JSON.parse(r.attributes_string_json || '{}');
128
127
  const attrsNum = JSON.parse(r.attributes_number_json || '{}');
129
128
  const attrsBool = JSON.parse(r.attributes_bool_json || '{}');
@@ -103,7 +103,6 @@ const asTypedFilterValue = (v: string): FilterValue => {
103
103
  return FilterValueSchema.parse(numericValue);
104
104
  }
105
105
 
106
- // Return as validated string
107
106
  return FilterValueSchema.parse(v);
108
107
  } catch (error) {
109
108
  // If validation fails, log the error and return the original string
@@ -97,7 +97,6 @@ function validateJsonSchema(schema: any): ValidationError[] {
97
97
  return errors;
98
98
  }
99
99
 
100
- // Check if it's a valid object schema
101
100
  if (!objectValidator.Check(schema)) {
102
101
  // Check individual properties for better error messages
103
102
  if (!schema.type || schema.type !== 'object') {
@@ -124,7 +123,6 @@ function validateJsonSchema(schema: any): ValidationError[] {
124
123
  });
125
124
  }
126
125
 
127
- // Validate each property
128
126
  if (schema.properties && typeof schema.properties === 'object') {
129
127
  Object.entries(schema.properties).forEach(([propertyName, propertySchema]) => {
130
128
  if (!propertyValidator.Check(propertySchema)) {
@@ -205,7 +203,6 @@ function validateLlmRequirements(schema: any): ValidationError[] {
205
203
  export function validateJsonSchemaForLlm(jsonString: string): ValidationResult {
206
204
  const warnings: string[] = [];
207
205
 
208
- // Step 1: Validate JSON syntax
209
206
  const { parsed, errors: syntaxErrors } = validateJsonSyntax(jsonString);
210
207
 
211
208
  if (syntaxErrors.length > 0) {
@@ -224,10 +221,8 @@ export function validateJsonSchemaForLlm(jsonString: string): ValidationResult {
224
221
  };
225
222
  }
226
223
 
227
- // Step 2: Validate JSON Schema structure
228
224
  const schemaErrors = validateJsonSchema(parsed);
229
225
 
230
- // Step 3: Validate LLM-specific requirements
231
226
  const llmErrors = validateLlmRequirements(parsed);
232
227
 
233
228
  const allErrors = [...schemaErrors, ...llmErrors];
@@ -10,7 +10,6 @@ export class NangoError extends Error {
10
10
  }
11
11
  }
12
12
 
13
- // Helper to wrap errors, preserving existing NangoErrors
14
13
  export function wrapNangoError(error: unknown, message: string, operation?: string): never {
15
14
  if (error instanceof NangoError) {
16
15
  throw error;
@@ -131,7 +131,6 @@ export async function fetchNangoIntegration(
131
131
  areCredentialsSet,
132
132
  };
133
133
  } catch (error) {
134
- // Check if this is a 404 (integration not found) - return null for this case
135
134
  if (error && typeof error === 'object' && 'status' in error && error.status === 404) {
136
135
  return null;
137
136
  }
@@ -245,7 +244,6 @@ export async function createNangoApiKeyConnection({
245
244
  const idFromName = generateIdFromName(name);
246
245
 
247
246
  try {
248
- // Step 1: Ensure Nango integration exists
249
247
  let integration: ApiPublicIntegration;
250
248
 
251
249
  /*
@@ -291,7 +289,6 @@ export async function createNangoApiKeyConnection({
291
289
  }
292
290
  }
293
291
 
294
- // Step 2: Import the connection to Nango
295
292
  try {
296
293
  const importConnectionUrl = `${process.env.NANGO_SERVER_URL || process.env.PUBLIC_NANGO_SERVER_URL || DEFAULT_NANGO_SERVER_URL}/connections`;
297
294
 
@@ -326,7 +323,6 @@ export async function createNangoApiKeyConnection({
326
323
  wrapNangoError(error, `Failed to import API key connection to Nango`, 'importConnection');
327
324
  }
328
325
 
329
- // Step 3: Set metadata (Nango workaround)
330
326
  try {
331
327
  await setNangoConnectionMetadata({
332
328
  providerConfigKey: integration.unique_key,
@@ -359,7 +355,6 @@ export async function createProviderConnectSession({
359
355
  credentials?: ApiPublicIntegrationCredentials;
360
356
  }): Promise<string> {
361
357
  try {
362
- // Step 1: Check for existing integration
363
358
  let integration: ApiPublicIntegration;
364
359
  let existingIntegration: (ApiPublicIntegration & { areCredentialsSet: boolean }) | null = null;
365
360
 
@@ -373,7 +368,6 @@ export async function createProviderConnectSession({
373
368
  console.debug(`Integration '${providerName}' not found, will create new one`);
374
369
  }
375
370
 
376
- // Step 2: Use existing or create new integration
377
371
  if (existingIntegration?.areCredentialsSet) {
378
372
  integration = existingIntegration;
379
373
  } else {
@@ -393,7 +387,6 @@ export async function createProviderConnectSession({
393
387
  }
394
388
  }
395
389
 
396
- // Step 3: Create connect session
397
390
  try {
398
391
  const connectSession = await createNangoConnectSession({
399
392
  integrationId: integration.unique_key,
@@ -432,7 +425,6 @@ export async function getNangoConnectionMetadata({
432
425
  const metadata = await nango.getMetadata(providerConfigKey, connectionId);
433
426
  return metadata as Record<string, string>;
434
427
  } catch (error) {
435
- // Check if this is a 404 (connection not found) - return null for this case
436
428
  if (error && typeof error === 'object' && 'status' in error && error.status === 404) {
437
429
  return null;
438
430
  }
@@ -128,7 +128,6 @@ function processValidationError(
128
128
  field = error.path.join('.') || 'configuration';
129
129
  }
130
130
 
131
- // Create user-friendly message
132
131
  const message = createUserFriendlyMessage(error, field, type, nodeType);
133
132
 
134
133
  return {
@@ -176,7 +175,6 @@ function createUserFriendlyMessage(
176
175
  return `${entityType} ${fieldName} has an invalid value. Please select a valid option`;
177
176
 
178
177
  case 'invalid_union':
179
- // Check if this is an agent type discrimination error
180
178
  if (field.includes('type') || error.message.includes('discriminator')) {
181
179
  return `${entityType} type must be specified as either 'internal' or 'external'`;
182
180
  }
@@ -21,7 +21,6 @@ export async function findOrCreateCredential(
21
21
  // Credential not found, continue with creation
22
22
  }
23
23
 
24
- // Create new credential
25
24
  try {
26
25
  return await createCredential(tenantId, projectId, credentialData);
27
26
  } catch (error) {
@@ -18,7 +18,6 @@ export function getOAuthLoginUrl({
18
18
  projectId: string;
19
19
  id: string;
20
20
  }): string {
21
- // Validate input parameters
22
21
  if (!tenantId || typeof tenantId !== 'string') {
23
22
  throw new Error('Invalid tenantId: must be a non-empty string');
24
23
  }
@@ -31,7 +30,6 @@ export function getOAuthLoginUrl({
31
30
  throw new Error('Invalid projectId: must be a non-empty string');
32
31
  }
33
32
 
34
- // Validate format - only allow alphanumeric, hyphens, and underscores
35
33
  const validFormat = /^[a-zA-Z0-9-_]+$/;
36
34
 
37
35
  if (!validFormat.test(tenantId)) {
@@ -1 +0,0 @@
1
- exports.id=4063,exports.ids=[4063],exports.modules={437:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(89892).A)("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]])},3339:(a,b,c)=>{Promise.resolve().then(c.bind(c,7838))},7838:(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]/artifacts/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]/artifacts/error.tsx","default")},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")},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})}},30823:(a,b,c)=>{"use strict";c.r(b),c.d(b,{"402ddf8dc528b58c590d41e2145b5ef317ed927127":()=>d.bW,"6012dc422836c76a5b87317b947b221b1851266944":()=>p,"603aeca63aad8b1af2ea52ec97aecbcd2457908219":()=>d.qf,"609834bd28619c52fef0481455d3d0fb27fbe85d5b":()=>d.Dv,"60daf8b2ede548a972c03f59d6392da65e6b5fbe00":()=>d.gL,"70297c984237cf2af265ddf638f871e0682eeeb887":()=>d.Tg,"707017e1367589e6ce8df6f2acdf6f03f64e21d47d":()=>q,"70c1b9a5e8799a5c2f01c2af6997cae546b671021b":()=>s,"70dd2472d3ce361ca83060485949a4e5d94322e449":()=>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){return(0,h.M2)(a),(0,h.nt)(b),await (0,g.J)(`tenants/${a}/projects/${b}/artifact-components`)}async function k(a,b,c){return(0,h.M2)(a),(0,h.nt)(b),(await (0,g.J)(`tenants/${a}/projects/${b}/artifact-components/${c}`)).data}async function l(a,b,c){return(0,h.M2)(a),(0,h.nt)(b),(await (0,g.J)(`tenants/${a}/projects/${b}/artifact-components`,{method:"POST",body:JSON.stringify(c)})).data}async function m(a,b,c){return(0,h.M2)(a),(0,h.nt)(b),(await (0,g.J)(`tenants/${a}/projects/${b}/artifact-components/${c.id}`,{method:"PUT",body:JSON.stringify(c)})).data}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,"607e814478d218500d932b2ebf71edb531e6797a16",null),(0,e.A)(k,"708e69fd9bde0be4ab359bd764edb543d5d5293e21",null),(0,e.A)(l,"7063f6f8a954da36a179a629ae649eea704ee6abc1",null),(0,e.A)(m,"70e01ba9bc2f294514860cb9147d145116475f9af6",null),(0,e.A)(n,"70bd8259169a34df9c242edca828e052b29fe47016",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}/artifacts`),{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}/artifacts`),(0,f.revalidatePath)(`/${a}/projects/${b}/artifacts/${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}/artifacts`),(0,f.revalidatePath)(`/${a}/projects/${b}/artifacts/${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,"6012dc422836c76a5b87317b947b221b1851266944",null),(0,e.A)(q,"707017e1367589e6ce8df6f2acdf6f03f64e21d47d",null),(0,e.A)(r,"70dd2472d3ce361ca83060485949a4e5d94322e449",null),(0,e.A)(s,"70c1b9a5e8799a5c2f01c2af6997cae546b671021b",null)},35859:(a,b,c)=>{Promise.resolve().then(c.bind(c,8636))},36746:(a,b,c)=>{"use strict";c.d(b,{ArtifactComponentForm:()=>x});var d=c(59111),e=c(6614),f=c(485),g=c(75823),h=c(68156),i=c(17130),j=c(16426),k=c(56019),l=c(2856),m=c(93622),n=c(35283),o=c(90147);let p=(0,o.createServerReference)("70dd2472d3ce361ca83060485949a4e5d94322e449",o.callServer,void 0,o.findSourceMapURL,"updateArtifactComponentAction"),q=(0,o.createServerReference)("707017e1367589e6ce8df6f2acdf6f03f64e21d47d",o.callServer,void 0,o.findSourceMapURL,"createArtifactComponentAction");var r=c(42723);let s={id:"",name:"",description:"",props:void 0};var t=c(34576),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.union([t.string(),t.null(),t.undefined()]).transform((a,b)=>{if(a&&""!==a&&null!==a)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({id:a,tenantId:b,projectId: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:!!a});let x=async d=>{try{let e={...d};if(void 0===e.props&&(e.props=null),a){let a=await p(b,c,e);if(!a.success)return void h.oR.error(a.error||"Failed to update artifact.");h.oR.success("Artifact updated.")}else{let a=await q(b,c,e);if(!a.success)return void h.oR.error(a.error||"Failed to create artifact");h.oR.success("Artifact created."),v.push(`/${b}/projects/${c}/artifacts`)}}catch(b){console.error("Error submitting artifact:",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:"Document Artifact",isRequired:!0}),(0,d.jsx)(i.a,{control:t.control,name:"id",label:"Id",placeholder:"my-artifact",disabled:!!a,isRequired:!0,description:a?"":"Choose a unique identifier for this artifact. Using an existing id will replace that artifact."}),(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:"props",label:"Props (JSON schema with inPreview indicators)",placeholder:"Enter a valid JSON Schema with inPreview flags, or leave empty to save entire tool result...",description:"Optional: Define specific fields with inPreview flags, or leave empty to capture the complete tool response."}),(0,d.jsx)(l.$,{type:"submit",disabled:u,children:"Save"})]})})}},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"})]})})}},39878:(a,b,c)=>{"use strict";c.d(b,{$:()=>i});var d=c(59111),e=c(2856),f=c(80974),g=c(42723),h=c(67466);function i(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)(e.$,{type:"button",onClick:()=>{let b=(0,f.Qj)();a.onChange(b)},variant:"outline",size:"sm",className:"h-6 px-2 text-xs rounded-sm",children:"Template"}),(0,d.jsx)(e.$,{type:"button",onClick:()=>{let b=a.value;if(b?.trim()){let c=(0,g.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)(h.i,{value:a.value||"",onChange:a.onChange,placeholder:a.placeholder,disabled:a.disabled,readOnly:a.readOnly})]})}},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:()=>{},56019:(a,b,c)=>{"use strict";c.d(b,{S:()=>g});var d=c(59111),e=c(71771),f=c(39878);function g({control:a,name:b,label:c="JSON Schema",placeholder:g,disabled:h,description:i,readOnly:j,isRequired:k=!1}){return(0,d.jsx)(e.u,{control:a,name:b,label:c,description:i,isRequired:k,children:a=>(0,d.jsx)(f.$,{placeholder:g,...a,onChange:a.onChange,readOnly:j,disabled:h})})}},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(34576).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,36746)),Promise.resolve().then(c.bind(c,24003)),Promise.resolve().then(c.bind(c,19603)),Promise.resolve().then(c.t.bind(c,61678,23))},79363:(a,b,c)=>{Promise.resolve().then(c.bind(c,82408))},80974:(a,b,c)=>{"use strict";c.d(b,{Qj:()=>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"}},82408:(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:()=>{},93056:(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(43461);function j(){return(0,d.jsx)(e.H,{breadcrumbs:[{label:"Artifacts"}],children:(0,d.jsxs)(f.D,{children:[(0,d.jsx)(g.zY,{title:"Artifacts",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}`))})]})})}},96107:(a,b,c)=>{Promise.resolve().then(c.bind(c,37830))}};