@inkeep/agents-manage-ui 0.19.8 → 0.20.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 (191) 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 +166 -166
  3. package/.next/standalone/agents-manage-ui/.next/app-path-routes-manifest.json +7 -7
  4. package/.next/standalone/agents-manage-ui/.next/build-manifest.json +5 -5
  5. package/.next/standalone/agents-manage-ui/.next/prerender-manifest.json +20 -20
  6. package/.next/standalone/agents-manage-ui/.next/react-loadable-manifest.json +5 -5
  7. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/page.js +1 -1
  8. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/page_client-reference-manifest.js +1 -1
  9. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/[agentId]/page.js +1 -1
  10. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/[agentId]/page_client-reference-manifest.js +1 -1
  11. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/new/page.js +2 -2
  12. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/new/page_client-reference-manifest.js +1 -1
  13. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/page.js +2 -2
  14. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/page_client-reference-manifest.js +1 -1
  15. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/api-keys/page.js +3 -3
  16. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/api-keys/page_client-reference-manifest.js +1 -1
  17. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page.js +1 -1
  18. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page.js.nft.json +1 -1
  19. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page_client-reference-manifest.js +1 -1
  20. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/new/page.js +1 -1
  21. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/new/page.js.nft.json +1 -1
  22. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/new/page_client-reference-manifest.js +1 -1
  23. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/page.js +2 -2
  24. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/page_client-reference-manifest.js +1 -1
  25. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/page.js +2 -2
  26. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/page.js.nft.json +1 -1
  27. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/page_client-reference-manifest.js +1 -1
  28. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/new/page.js +2 -2
  29. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/new/page.js.nft.json +1 -1
  30. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/new/page_client-reference-manifest.js +1 -1
  31. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/page.js +1 -1
  32. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/page_client-reference-manifest.js +1 -1
  33. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page.js +1 -1
  34. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page.js.nft.json +1 -1
  35. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page_client-reference-manifest.js +1 -1
  36. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page.js +2 -2
  37. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page.js.nft.json +1 -1
  38. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page_client-reference-manifest.js +1 -1
  39. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/page.js +1 -1
  40. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/page.js.nft.json +1 -1
  41. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/page_client-reference-manifest.js +1 -1
  42. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page.js +2 -2
  43. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page.js.nft.json +1 -1
  44. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page_client-reference-manifest.js +1 -1
  45. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/page.js +2 -2
  46. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/page.js.nft.json +1 -1
  47. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/page_client-reference-manifest.js +1 -1
  48. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/page.js +2 -2
  49. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/page_client-reference-manifest.js +1 -1
  50. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page.js +2 -2
  51. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page_client-reference-manifest.js +1 -1
  52. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page.js +1 -1
  53. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page_client-reference-manifest.js +1 -1
  54. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/new/page.js +2 -2
  55. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/new/page_client-reference-manifest.js +1 -1
  56. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/page.js +1 -1
  57. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/page_client-reference-manifest.js +1 -1
  58. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/page.js +1 -1
  59. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/page_client-reference-manifest.js +1 -1
  60. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/settings/page.js +1 -1
  61. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/settings/page_client-reference-manifest.js +1 -1
  62. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page.js +1 -1
  63. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page.js.nft.json +1 -1
  64. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page_client-reference-manifest.js +1 -1
  65. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page.js +2 -2
  66. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page_client-reference-manifest.js +1 -1
  67. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/page.js +3 -3
  68. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/page.js.nft.json +1 -1
  69. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/page_client-reference-manifest.js +1 -1
  70. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/page.js +1 -1
  71. package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/page_client-reference-manifest.js +1 -1
  72. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found/page.js +1 -1
  73. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  74. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found.html +1 -1
  75. package/.next/standalone/agents-manage-ui/.next/server/app/_not-found.rsc +8 -8
  76. package/.next/standalone/agents-manage-ui/.next/server/app/api/signoz/conversations/[conversationId]/route.js +1 -1
  77. package/.next/standalone/agents-manage-ui/.next/server/app/api/signoz/conversations/[conversationId]/route_client-reference-manifest.js +1 -1
  78. package/.next/standalone/agents-manage-ui/.next/server/app/api/signoz/route_client-reference-manifest.js +1 -1
  79. package/.next/standalone/agents-manage-ui/.next/server/app/page.js +2 -2
  80. package/.next/standalone/agents-manage-ui/.next/server/app/page_client-reference-manifest.js +1 -1
  81. package/.next/standalone/agents-manage-ui/.next/server/app-paths-manifest.json +7 -7
  82. package/.next/standalone/agents-manage-ui/.next/server/chunks/1186.js +1 -0
  83. package/.next/standalone/agents-manage-ui/.next/server/chunks/2067.js +1 -1
  84. package/.next/standalone/agents-manage-ui/.next/server/chunks/2083.js +1 -1
  85. package/.next/standalone/agents-manage-ui/.next/server/chunks/3002.js +1 -0
  86. package/.next/standalone/agents-manage-ui/.next/server/chunks/3547.js +1 -1
  87. package/.next/standalone/agents-manage-ui/.next/server/chunks/5660.js +1 -0
  88. package/.next/standalone/agents-manage-ui/.next/server/chunks/6641.js +1 -1
  89. package/.next/standalone/agents-manage-ui/.next/server/chunks/7457.js +2 -2
  90. package/.next/standalone/agents-manage-ui/.next/server/chunks/7504.js +7 -7
  91. package/.next/standalone/agents-manage-ui/.next/server/chunks/8498.js +1 -1
  92. package/.next/standalone/agents-manage-ui/.next/server/chunks/{6451.js → 9796.js} +1 -1
  93. package/.next/standalone/agents-manage-ui/.next/server/chunks/9849.js +1 -0
  94. package/.next/standalone/agents-manage-ui/.next/server/middleware-build-manifest.js +1 -1
  95. package/.next/standalone/agents-manage-ui/.next/server/middleware-react-loadable-manifest.js +1 -1
  96. package/.next/standalone/agents-manage-ui/.next/server/pages/404.html +1 -1
  97. package/.next/standalone/agents-manage-ui/.next/server/pages/500.html +1 -1
  98. package/.next/standalone/agents-manage-ui/.next/server/server-reference-manifest.js +1 -1
  99. package/.next/standalone/agents-manage-ui/.next/server/server-reference-manifest.json +1 -1
  100. package/.next/standalone/agents-manage-ui/.next/static/chunks/29440.44fedd2ec0823a02.js +1 -0
  101. package/.next/standalone/agents-manage-ui/.next/static/chunks/35090-089113748c66be03.js +1 -0
  102. package/.next/standalone/agents-manage-ui/.next/static/chunks/{37213-a3d5fa67db657652.js → 37213-cef21d9a27515b0d.js} +1 -1
  103. package/.next/standalone/agents-manage-ui/.next/static/chunks/49858-80fbae619dcf597d.js +1 -0
  104. package/.next/standalone/agents-manage-ui/.next/static/chunks/71558-45b211b48f93150b.js +1 -0
  105. package/.next/standalone/agents-manage-ui/.next/static/chunks/7190-099f08f4db4a3d86.js +1 -0
  106. package/.next/standalone/agents-manage-ui/.next/static/chunks/{92775-6154f3e2dbf25027.js → 92775-ab130c0d2917cb5e.js} +1 -1
  107. package/.next/standalone/agents-manage-ui/.next/static/chunks/{93054.b9b99fcc99a5d40c.js → 93054.332d53645001bbec.js} +1 -1
  108. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/page-c5cd32206a24b578.js +1 -0
  109. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/api-keys/page-2b6657e31c305523.js +1 -0
  110. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page-92119462bbc8ce7e.js +1 -0
  111. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/new/page-92119462bbc8ce7e.js +1 -0
  112. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/{page-e1712be9ee333bd7.js → page-af5e6fec44f77780.js} +1 -1
  113. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/page-5057d375b3c7ee89.js +1 -0
  114. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/new/page-5057d375b3c7ee89.js +1 -0
  115. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/page-58f22d551d15ea6c.js +1 -0
  116. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page-cd4e7e283d6b263d.js +1 -0
  117. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page-aef43e3257735bc5.js +1 -0
  118. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page-0ced82b6fa5a916e.js +1 -0
  119. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/page-374d72a68e8a4b15.js +1 -0
  120. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/new/{page-50bb2f6d74e4b76a.js → page-4cb3fc58c4f78dad.js} +1 -1
  121. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/{page-0e6edfe2c3f181a7.js → page-a58ccecc11b79c94.js} +1 -1
  122. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/settings/{page-ca36fd27027464aa.js → page-ef3c856a0e4a0d4d.js} +1 -1
  123. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/ai-calls/{page-00cee6f3d629b552.js → page-580fa90a20317d9b.js} +1 -1
  124. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page-e860de4595d782bf.js +1 -0
  125. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/page-eadbd47e2c2e368d.js +1 -0
  126. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/{page-87eb618883b4e3f5.js → page-8da3548f82d66b62.js} +1 -1
  127. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/layout-35b2dd4ad49880cf.js +1 -0
  128. package/.next/standalone/agents-manage-ui/.next/static/chunks/{webpack-bae1a6a598e24abf.js → webpack-54e97cb161a7dfd3.js} +1 -1
  129. package/.next/standalone/agents-manage-ui/package.json +1 -1
  130. package/.next/standalone/packages/agents-core/package.json +1 -1
  131. package/package.json +4 -4
  132. package/src/app/[tenantId]/projects/[projectId]/agents/page.tsx +1 -1
  133. package/src/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page.tsx +1 -1
  134. package/src/app/api/signoz/conversations/[conversationId]/route.ts +3 -11
  135. package/src/components/agent/agent.tsx +1 -1
  136. package/src/components/agent/configuration/agent-types.tsx +1 -1
  137. package/src/components/agent/nodes/sub-agent-node.tsx +2 -2
  138. package/src/components/agent/playground/chat-widget.tsx +1 -0
  139. package/src/components/agent/sidepane/edges/edge-editor.tsx +14 -9
  140. package/src/components/agent/sidepane/metadata/metadata-editor.tsx +8 -8
  141. package/src/components/agent/sidepane/nodes/external-agent-node-editor.tsx +1 -1
  142. package/src/components/agent/sidepane/nodes/mcp-node-editor.tsx +9 -4
  143. package/src/components/agent/sidepane/nodes/model-section.tsx +5 -3
  144. package/src/components/agent/sidepane/nodes/sub-agent-node-editor.tsx +7 -7
  145. package/src/components/artifact-components/form/artifact-component-form.tsx +1 -1
  146. package/src/components/data-components/form/data-component-form.tsx +10 -1
  147. package/src/components/form/form-field-wrapper.tsx +1 -1
  148. package/src/components/form/generic-input.tsx +1 -1
  149. package/src/components/projects/form/project-models-section.tsx +1 -1
  150. package/src/components/projects/form/project-sandbox-section.tsx +1 -1
  151. package/src/components/projects/form/project-stopwhen-section.tsx +2 -1
  152. package/src/components/sidebar-nav/project-selector.tsx +1 -1
  153. package/src/components/traces/ai-calls-breakdown.tsx +6 -6
  154. package/src/components/traces/conversation-detail.tsx +57 -13
  155. package/src/components/traces/conversation-stats/conversation-stats-card.tsx +2 -2
  156. package/src/components/traces/filters/agent-filter.tsx +1 -1
  157. package/src/components/traces/timeline/render-panel-content.tsx +3 -7
  158. package/src/components/traces/timeline/timeline-wrapper.tsx +35 -15
  159. package/src/components/ui/combobox.tsx +1 -1
  160. package/src/constants/page-descriptions.tsx +2 -2
  161. package/src/features/agent/domain/agent-initializer-helpers.ts +3 -2
  162. package/src/features/agent/domain/serialize.ts +6 -6
  163. package/src/features/agent/state/use-agent-store.ts +2 -2
  164. package/src/lib/README.md +15 -15
  165. package/src/lib/utils/agent-error-parser.ts +18 -18
  166. package/src/lib/utils/trace-formatter.ts +79 -0
  167. package/.next/standalone/agents-manage-ui/.next/server/chunks/2786.js +0 -1
  168. package/.next/standalone/agents-manage-ui/.next/server/chunks/448.js +0 -1
  169. package/.next/standalone/agents-manage-ui/.next/server/chunks/7181.js +0 -1
  170. package/.next/standalone/agents-manage-ui/.next/server/chunks/901.js +0 -1
  171. package/.next/standalone/agents-manage-ui/.next/static/chunks/29440.b89b85e734301ee2.js +0 -1
  172. package/.next/standalone/agents-manage-ui/.next/static/chunks/49858-9d58688d4acdd420.js +0 -1
  173. package/.next/standalone/agents-manage-ui/.next/static/chunks/71558-ca56cb02e8dc8775.js +0 -1
  174. package/.next/standalone/agents-manage-ui/.next/static/chunks/7190-20b3b477467e2207.js +0 -1
  175. package/.next/standalone/agents-manage-ui/.next/static/chunks/80876-f0b57615fde13548.js +0 -1
  176. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/page-1443c84d0ae5c822.js +0 -1
  177. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/api-keys/page-8f50ad0d7de69701.js +0 -1
  178. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page-9b9ccc14599cbd20.js +0 -1
  179. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/new/page-9b9ccc14599cbd20.js +0 -1
  180. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/page-18ae6491190c6805.js +0 -1
  181. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/new/page-18ae6491190c6805.js +0 -1
  182. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/page-4028a78cd422088d.js +0 -1
  183. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page-d1e68d82991d5e5d.js +0 -1
  184. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page-81023398e97ff7a4.js +0 -1
  185. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page-d2f31f40b1c0e8cb.js +0 -1
  186. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/page-fe9376891c8931ec.js +0 -1
  187. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page-48512f59a08d0878.js +0 -1
  188. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/page-1a5884ccb79f23d6.js +0 -1
  189. package/.next/standalone/agents-manage-ui/.next/static/chunks/app/layout-e037ed1265e8779d.js +0 -1
  190. /package/.next/standalone/agents-manage-ui/.next/static/{cEO8EC1LXYvvdtL1arXWQ → Z3JEU8ftGipmcCmA1QiXN}/_buildManifest.js +0 -0
  191. /package/.next/standalone/agents-manage-ui/.next/static/{cEO8EC1LXYvvdtL1arXWQ → Z3JEU8ftGipmcCmA1QiXN}/_ssgManifest.js +0 -0
@@ -52,7 +52,7 @@ export const AgentFilter = ({ onSelect, selectedValue }: AgentFilterProps) => {
52
52
  return (
53
53
  <Combobox
54
54
  defaultValue={selectedValue}
55
- notFoundMessage={'No agent found'}
55
+ notFoundMessage={'No agents found.'}
56
56
  onSelect={(value) => {
57
57
  onSelect(value);
58
58
  }}
@@ -74,7 +74,7 @@ export function renderPanelContent({
74
74
  const AdvancedBlock = span ? (
75
75
  <SpanAttributes span={span.data} />
76
76
  ) : (
77
- <div className="text-center py-4 text-xs text-muted-foreground">Span not found</div>
77
+ <div className="text-center py-4 text-xs text-muted-foreground">Span not found.</div>
78
78
  );
79
79
 
80
80
  switch (selected.type) {
@@ -261,14 +261,10 @@ export function renderPanelContent({
261
261
  <>
262
262
  <Section>
263
263
  <LabeledBlock label="From sub agent">
264
- <Badge variant="code">
265
- {a.transferFromSubAgentId || 'Unknown sub agent'}
266
- </Badge>
264
+ <Badge variant="code">{a.transferFromSubAgentId || 'Unknown sub agent'}</Badge>
267
265
  </LabeledBlock>
268
266
  <LabeledBlock label="To sub agent">
269
- <Badge variant="code">
270
- {a.transferToSubAgentId || 'Unknown target'}
271
- </Badge>
267
+ <Badge variant="code">{a.transferToSubAgentId || 'Unknown target'}</Badge>
272
268
  </LabeledBlock>
273
269
  <Info
274
270
  label="Tool name"
@@ -1,4 +1,4 @@
1
- import { AlertTriangle, ChevronDown, ChevronUp, Loader2, RefreshCw } from 'lucide-react';
1
+ import { AlertTriangle, ChevronDown, ChevronUp, Copy, Loader2, RefreshCw } from 'lucide-react';
2
2
  import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
3
3
  import { toast } from 'sonner';
4
4
  import { StickToBottom } from 'use-stick-to-bottom';
@@ -63,6 +63,8 @@ interface TimelineWrapperProps {
63
63
  refreshOnce?: () => Promise<{ hasNewActivity: boolean }>;
64
64
  showConversationTracesLink?: boolean;
65
65
  conversationId?: string;
66
+ onCopyTrace?: () => void;
67
+ isCopying?: boolean;
66
68
  }
67
69
 
68
70
  function EmptyTimeline({
@@ -152,6 +154,8 @@ export function TimelineWrapper({
152
154
  refreshOnce,
153
155
  showConversationTracesLink = false,
154
156
  conversationId,
157
+ onCopyTrace,
158
+ isCopying = false,
155
159
  }: TimelineWrapperProps) {
156
160
  const [selected, setSelected] = useState<SelectedPanel | null>(null);
157
161
  const [panelVisible, setPanelVisible] = useState(false);
@@ -236,7 +240,7 @@ export function TimelineWrapper({
236
240
  // Track which messages we've already processed
237
241
  const processedIdsRef = useRef<Set<string>>(new Set());
238
242
  const lastConversationRef = useRef<string | undefined>(undefined);
239
-
243
+
240
244
  useEffect(() => {
241
245
  // Reset when conversation changes
242
246
  if (conversationId !== lastConversationRef.current) {
@@ -245,37 +249,39 @@ export function TimelineWrapper({
245
249
  setCollapsedAiMessages(new Set());
246
250
  setAiMessagesGloballyCollapsed(false);
247
251
  }
248
-
252
+
249
253
  // Determine which IDs to auto-collapse based on view type
250
254
  const idsToProcess = enableAutoScroll ? aiMessageIds : streamTextIds;
251
-
255
+
252
256
  // Find new IDs that haven't been processed yet
253
- const newIds = idsToProcess.filter(id => !processedIdsRef.current.has(id));
254
-
257
+ const newIds = idsToProcess.filter((id) => !processedIdsRef.current.has(id));
258
+
255
259
  if (newIds.length > 0) {
256
260
  // Mark these as processed
257
- newIds.forEach(id => {
261
+ newIds.forEach((id) => {
258
262
  processedIdsRef.current.add(id);
259
263
  });
260
-
264
+
261
265
  // Add new IDs to collapsed set
262
- setCollapsedAiMessages(prev => {
266
+ setCollapsedAiMessages((prev) => {
263
267
  const updated = new Set(prev);
264
- newIds.forEach(id => {
268
+ newIds.forEach((id) => {
265
269
  updated.add(id);
266
270
  });
267
271
  return updated;
268
272
  });
269
273
  // Update global state
270
- const allProcessed = idsToProcess.every(id => processedIdsRef.current.has(id));
274
+ const allProcessed = idsToProcess.every((id) => processedIdsRef.current.has(id));
271
275
  if (enableAutoScroll) {
272
276
  setAiMessagesGloballyCollapsed(allProcessed && aiMessageIds.length > 0);
273
277
  } else {
274
- setAiMessagesGloballyCollapsed(allProcessed && streamTextIds.length === aiMessageIds.length && aiMessageIds.length > 0);
278
+ setAiMessagesGloballyCollapsed(
279
+ allProcessed && streamTextIds.length === aiMessageIds.length && aiMessageIds.length > 0
280
+ );
275
281
  }
276
282
  }
277
283
  }, [conversationId, aiMessageIds, streamTextIds, enableAutoScroll]);
278
-
284
+
279
285
  // Functions to handle expand/collapse all (memoized to prevent unnecessary re-renders)
280
286
  const expandAllAiMessages = useCallback(() => {
281
287
  setCollapsedAiMessages(new Set());
@@ -344,11 +350,11 @@ export function TimelineWrapper({
344
350
  try {
345
351
  const result = await refreshOnce();
346
352
  if (!result.hasNewActivity) {
347
- toast.info('No new activity found');
353
+ toast.info('No new activity found.');
348
354
  }
349
355
  setIsRefreshing(false);
350
356
  } catch {
351
- toast.error('Failed to refresh activities');
357
+ toast.error('Failed to refresh activities.');
352
358
  setIsRefreshing(false);
353
359
  }
354
360
  };
@@ -361,6 +367,20 @@ export function TimelineWrapper({
361
367
  <div className="flex items-center justify-between px-6 pb-4">
362
368
  <div className="text-foreground text-md font-medium">Activity timeline</div>
363
369
  <div className="flex items-center gap-2">
370
+ {/* Copy JSON Button */}
371
+ {onCopyTrace && (
372
+ <Button
373
+ variant="ghost"
374
+ size="sm"
375
+ onClick={onCopyTrace}
376
+ disabled={isCopying}
377
+ className="h-7 px-2 text-xs text-muted-foreground hover:text-foreground"
378
+ title="Copy trace as JSON"
379
+ >
380
+ <Copy className="h-3 w-3 mr-1" />
381
+ {isCopying ? 'Copying...' : 'Copy Trace'}
382
+ </Button>
383
+ )}
364
384
  {/* Expand/Collapse AI Messages Buttons */}
365
385
  {sortedActivities.some(
366
386
  (activity) =>
@@ -44,7 +44,7 @@ export function Combobox({
44
44
  defaultValue,
45
45
  searchPlaceholder = 'Search...',
46
46
  placeholder = '...',
47
- notFoundMessage = 'Not found',
47
+ notFoundMessage = 'Not found.',
48
48
  shouldCloseOnSelect = true,
49
49
  TriggerComponent,
50
50
  onOpenChange,
@@ -23,7 +23,7 @@ export const dataComponentDescription = (
23
23
 
24
24
  export const agentDescription = (
25
25
  <>
26
- Agents are visual representations of the data flow between agents and tools.
26
+ Agents are visual representations of the data flow between sub agents and tools.
27
27
  {'\n'}
28
28
  <ExternalLink href={`${DOCS_BASE_URL}/visual-builder/agent`}>Learn more</ExternalLink>
29
29
  </>
@@ -31,7 +31,7 @@ export const agentDescription = (
31
31
 
32
32
  export const apiKeyDescription = (
33
33
  <>
34
- API keys are use to authenticate against the Inkeep Agents Run API. They are associated with a
34
+ API keys are use to authenticate against the Inkeep Agents Run API. They are associated with an
35
35
  agent and can be used to chat with the agent programmatically.
36
36
  {'\n'}
37
37
  </>
@@ -1,8 +1,9 @@
1
- import type { ContextConfig, AgentMetadata } from '@/components/agent/configuration/agent-types';
1
+ import type { AgentMetadata, ContextConfig } from '@/components/agent/configuration/agent-types';
2
2
  import type { FullAgentDefinition } from '@/lib/types/agent-full';
3
3
  import { formatJsonField } from '@/lib/utils';
4
4
 
5
5
  export type ExtendedFullAgentDefinition = FullAgentDefinition & {
6
+ prompt?: string;
6
7
  contextConfig?: Partial<Pick<ContextConfig, 'id'>> & {
7
8
  contextVariables?: Record<string, any>;
8
9
  headersSchema?: Record<string, any>;
@@ -22,7 +23,7 @@ export function extractAgentMetadata(
22
23
  id: agent?.id,
23
24
  name: agent?.name ?? '',
24
25
  description: agent?.description ?? '',
25
- agentPrompt: agent?.agentPrompt,
26
+ prompt: agent?.prompt,
26
27
  models: agent?.models
27
28
  ? {
28
29
  base: agent.models.base
@@ -424,8 +424,8 @@ export function serializeAgentData(
424
424
  (result as any).stopWhen = metadata.stopWhen;
425
425
  }
426
426
 
427
- if (metadata?.agentPrompt) {
428
- (result as any).agentPrompt = metadata.agentPrompt;
427
+ if (metadata?.prompt) {
428
+ (result as any).prompt = metadata.prompt;
429
429
  }
430
430
 
431
431
  if (metadata?.statusUpdates) {
@@ -466,7 +466,7 @@ export function validateSerializedData(
466
466
 
467
467
  if (data.defaultSubAgentId && !data.subAgents[data.defaultSubAgentId]) {
468
468
  errors.push({
469
- message: `Default agent ID '${data.defaultSubAgentId}' not found in agents`,
469
+ message: `Default agent ID '${data.defaultSubAgentId}' not found in agents.`,
470
470
  field: 'defaultSubAgentId',
471
471
  code: 'invalid_reference',
472
472
  path: ['defaultSubAgentId'],
@@ -483,7 +483,7 @@ export function validateSerializedData(
483
483
  const toolId = canUseItem.toolId;
484
484
  if (!toolsData[toolId]) {
485
485
  errors.push({
486
- message: `Tool '${toolId}' not found`,
486
+ message: `Tool '${toolId}' not found.`,
487
487
  field: 'toolId',
488
488
  code: 'invalid_reference',
489
489
  path: ['agents', subAgentId, 'canUse'],
@@ -565,7 +565,7 @@ export function validateSerializedData(
565
565
  for (const targetId of agent.canTransferTo ?? []) {
566
566
  if (!data.subAgents[targetId]) {
567
567
  errors.push({
568
- message: `Transfer target '${targetId}' not found in agents`,
568
+ message: `Transfer target '${targetId}' not found in agents.`,
569
569
  field: 'canTransferTo',
570
570
  code: 'invalid_reference',
571
571
  path: ['agents', subAgentId, 'canTransferTo'],
@@ -575,7 +575,7 @@ export function validateSerializedData(
575
575
  for (const targetId of agent.canDelegateTo ?? []) {
576
576
  if (!data.subAgents[targetId]) {
577
577
  errors.push({
578
- message: `Delegate target '${targetId}' not found in agents`,
578
+ message: `Delegate target '${targetId}' not found in agents.`,
579
579
  field: 'canDelegateTo',
580
580
  code: 'invalid_reference',
581
581
  path: ['agents', subAgentId, 'canDelegateTo'],
@@ -3,9 +3,9 @@ import { addEdge, applyEdgeChanges, applyNodeChanges } from '@xyflow/react';
3
3
  import { create } from 'zustand';
4
4
  import { devtools } from 'zustand/middleware';
5
5
  import { useShallow } from 'zustand/react/shallow';
6
+ import type { AgentToolConfigLookup } from '@/components/agent/agent';
6
7
  import type { AgentMetadata } from '@/components/agent/configuration/agent-types';
7
8
  import { mcpNodeHandleId, NodeType } from '@/components/agent/configuration/node-types';
8
- import type { AgentToolConfigLookup } from '@/components/agent/agent';
9
9
  import type { ArtifactComponent } from '@/lib/api/artifact-components';
10
10
  import type { DataComponent } from '@/lib/api/data-components';
11
11
  import type { MCPTool } from '@/lib/types/tools';
@@ -81,7 +81,7 @@ export const agentStore = create<AgentState>()(
81
81
  },
82
82
  models: undefined,
83
83
  stopWhen: undefined,
84
- agentPrompt: undefined,
84
+ prompt: undefined,
85
85
  statusUpdates: undefined,
86
86
  },
87
87
  dataComponentLookup: {},
package/src/lib/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Agent Builder Library
2
2
 
3
- This library provides server actions and types for interacting with the GraphFull API from the inkeep-chat backend. It imports the original schemas from the inkeep-chat package to avoid duplication and ensure consistency.
3
+ This library provides server actions and types for interacting with the AgentFull API from the inkeep-chat backend. It imports the original schemas from the inkeep-chat package to avoid duplication and ensure consistency.
4
4
 
5
5
  ## Configuration
6
6
 
@@ -17,13 +17,13 @@ INKEEP_AGENTS_MANAGE_API_URL="http://localhost:3002"
17
17
 
18
18
  ```typescript
19
19
  import {
20
- createFullGraphAction,
21
- getFullGraphAction,
22
- updateFullGraphAction,
23
- deleteFullGraphAction,
24
- validateGraphData,
25
- FullGraphDefinitionSchema,
26
- type FullGraphDefinition,
20
+ createFullAgentAction,
21
+ deleteFullAgentAction,
22
+ getFullAgentAction,
23
+ updateFullAgentAction,
24
+ validateAgentData,
25
+ FullAgentDefinitionSchema,
26
+ type FullAgentDefinition,
27
27
  type ActionResult,
28
28
  } from '@/lib';
29
29
  ```
@@ -31,10 +31,10 @@ import {
31
31
  ### Create a new agent
32
32
 
33
33
  ```typescript
34
- const result = await createFullGraphAction('tenant-123', {
34
+ const result = await createFullAgentAction('tenant-123', {
35
35
  id: 'my-agent',
36
36
  name: 'My Customer Service Agent',
37
- description: 'A agent for customer service operations',
37
+ description: 'An agent for customer service operations',
38
38
  defaultSubAgentId: 'support-agent',
39
39
  agents: {
40
40
  'support-agent': {
@@ -64,7 +64,7 @@ if (result.success) {
64
64
  ### Get an existing agent
65
65
 
66
66
  ```typescript
67
- const result = await getFullGraphAction('tenant-123', 'my-agent');
67
+ const result = await getFullAgentAction('tenant-123', 'my-agent');
68
68
 
69
69
  if (result.success) {
70
70
  console.log('Agent retrieved:', result.data);
@@ -76,13 +76,13 @@ if (result.success) {
76
76
  ### Update an agent
77
77
 
78
78
  ```typescript
79
- const updatedGraph = {
79
+ const updatedAgent = {
80
80
  id: 'my-agent',
81
81
  name: 'Updated Customer Service Agent',
82
82
  // ... other properties
83
83
  };
84
84
 
85
- const result = await updateFullGraphAction('tenant-123', 'my-agent', updatedGraph);
85
+ const result = await updateFullAgentAction('tenant-123', 'my-agent', updatedAgent);
86
86
 
87
87
  if (result.success) {
88
88
  console.log('Agent updated:', result.data);
@@ -94,7 +94,7 @@ if (result.success) {
94
94
  ### Delete an agent
95
95
 
96
96
  ```typescript
97
- const result = await deleteFullGraphAction('tenant-123', 'my-agent');
97
+ const result = await deleteFullAgentAction('tenant-123', 'my-agent');
98
98
 
99
99
  if (result.success) {
100
100
  console.log('Agent deleted successfully');
@@ -108,7 +108,7 @@ if (result.success) {
108
108
  Use this for form validation before submitting:
109
109
 
110
110
  ```typescript
111
- const result = await validateGraphData(formData);
111
+ const result = await validateAgentData(formData);
112
112
 
113
113
  if (result.success) {
114
114
  // Data is valid, proceed with submission
@@ -14,7 +14,7 @@ export interface ValidationErrorDetail {
14
14
 
15
15
  export interface ProcessedAgentError {
16
16
  type: 'node' | 'edge' | 'agent';
17
- nodeType?: 'agent' | 'functionTool';
17
+ nodeType?: 'subAgent' | 'functionTool';
18
18
  nodeId?: string;
19
19
  edgeId?: string;
20
20
  field: string;
@@ -100,7 +100,7 @@ function processValidationError(
100
100
 
101
101
  // Determine error type and extract IDs
102
102
  let type: 'node' | 'edge' | 'agent' = 'agent';
103
- let nodeType: 'agent' | 'functionTool' | undefined;
103
+ let nodeType: 'subAgent' | 'functionTool' | undefined;
104
104
  let nodeId: string | undefined;
105
105
  let edgeId: string | undefined;
106
106
  let field: string;
@@ -115,9 +115,9 @@ function processValidationError(
115
115
  nodeType = 'functionTool';
116
116
  nodeId = fullPath[1];
117
117
  field = error.path.slice(2).join('.') || (error as any).field || 'configuration';
118
- } else if (fullPath[0] === 'agents' && fullPath[1]) {
118
+ } else if (fullPath[0] === 'subAgents' && fullPath[1]) {
119
119
  type = 'node';
120
- nodeType = 'agent';
120
+ nodeType = 'subAgent';
121
121
  nodeId = fullPath[1];
122
122
  field = error.path.join('.') || 'configuration';
123
123
  } else if (fullPath[0] === 'edges' && fullPath[1]) {
@@ -150,11 +150,11 @@ function createUserFriendlyMessage(
150
150
  error: ValidationErrorDetail,
151
151
  field: string,
152
152
  type: 'node' | 'edge' | 'agent',
153
- nodeType?: 'agent' | 'functionTool'
153
+ nodeType?: 'subAgent' | 'functionTool'
154
154
  ): string {
155
155
  let entityType: string;
156
156
  if (type === 'node') {
157
- entityType = nodeType === 'functionTool' ? 'Function Tool' : 'Agent';
157
+ entityType = nodeType === 'functionTool' ? 'Function Tool' : 'Sub Agent';
158
158
  } else if (type === 'edge') {
159
159
  entityType = 'Connection';
160
160
  } else {
@@ -193,25 +193,25 @@ function createUserFriendlyMessage(
193
193
  function getFieldDisplayName(field: string): string {
194
194
  const fieldMap: Record<string, string> = {
195
195
  instructions: 'Instructions',
196
- projectId: 'Project ID',
196
+ projectId: 'Project id',
197
197
  baseUrl: 'Host URL',
198
198
  name: 'Name',
199
199
  description: 'Description',
200
200
  model: 'Model',
201
201
  temperature: 'Temperature',
202
- maxTokens: 'Max Tokens',
203
- systemPrompt: 'System Prompt',
202
+ maxTokens: 'Max tokens',
203
+ systemPrompt: 'System prompt',
204
204
  tools: 'Tools',
205
205
  dataComponents: 'Components',
206
206
  artifactComponents: 'Artifacts',
207
207
  relationships: 'Relationships',
208
- transferTargetToSource: 'Transfer (Target to Source)',
209
- transferSourceToTarget: 'Transfer (Source to Target)',
210
- delegateTargetToSource: 'Delegate (Target to Source)',
211
- delegateSourceToTarget: 'Delegate (Source to Target)',
212
- contextConfig: 'Context Configuration',
213
- contextVariables: 'Context Variables',
214
- headersSchema: 'Headers Schema',
208
+ transferTargetToSource: 'Transfer (target to source)',
209
+ transferSourceToTarget: 'Transfer (source to target)',
210
+ delegateTargetToSource: 'Delegate (target to source)',
211
+ delegateSourceToTarget: 'Delegate (source to target)',
212
+ contextConfig: 'Context configuration',
213
+ contextVariables: 'Context variables',
214
+ headersSchema: 'Headers schema',
215
215
  };
216
216
 
217
217
  return (
@@ -289,12 +289,12 @@ export function getErrorSummaryMessage(errorSummary: AgentErrorSummary): string
289
289
 
290
290
  const parts: string[] = [];
291
291
 
292
- const subAgentErrorCount = Object.keys(agentErrors).length;
292
+ const subAgentErrorCount = Object.keys(subAgentErrors).length;
293
293
  const functionToolErrorCount = Object.keys(functionToolErrors).length;
294
294
  const edgeErrorCount = Object.keys(edgeErrors).length;
295
295
  const agentErrorCount = agentErrors.length;
296
296
  if (subAgentErrorCount > 0) {
297
- parts.push(`${subAgentErrorCount} subAgent${subAgentErrorCount > 1 ? 's' : ''}`);
297
+ parts.push(`${subAgentErrorCount} sub agent${subAgentErrorCount > 1 ? 's' : ''}`);
298
298
  }
299
299
  if (functionToolErrorCount > 0) {
300
300
  parts.push(`${functionToolErrorCount} function tool${functionToolErrorCount > 1 ? 's' : ''}`);
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Utility to format OpenTelemetry trace data from conversation details
3
+ * into a human-readable, prettified JSON format
4
+ */
5
+
6
+ import type { ActivityItem, ConversationDetail } from '@/components/traces/timeline/types';
7
+
8
+ export interface PrettifiedTrace {
9
+ metadata: {
10
+ conversationId: string;
11
+ traceId?: string;
12
+ agentId?: string;
13
+ agentName?: string;
14
+ exportedAt: string;
15
+ };
16
+ timing: {
17
+ startTime: string;
18
+ endTime: string ;
19
+ durationMs: number;
20
+ };
21
+ timeline: Omit<ActivityItem, 'id' | 'timestamp'>[];
22
+ }
23
+
24
+ /**
25
+ * Formats conversation detail data into a prettified OTEL trace structure
26
+ */
27
+ export function formatConversationAsPrettifiedTrace(
28
+ conversation: ConversationDetail,
29
+ ): PrettifiedTrace {
30
+ const trace: PrettifiedTrace = {
31
+ metadata: {
32
+ conversationId: conversation.conversationId,
33
+ traceId: conversation.traceId,
34
+ agentName: conversation.agentName,
35
+ agentId: conversation.agentId,
36
+ exportedAt: new Date().toISOString(),
37
+ },
38
+ timing: {
39
+ startTime: conversation.conversationStartTime || '',
40
+ endTime: conversation.conversationEndTime || '',
41
+ durationMs: conversation.duration
42
+ },
43
+ timeline: (conversation.activities || []).map((activity) => {
44
+ // Destructure to exclude unwanted fields
45
+ const { id: _id, timestamp: _timestamp, ...rest } = activity;
46
+ return {
47
+ ...rest
48
+ };
49
+ }),
50
+ };
51
+
52
+ return trace;
53
+ }
54
+
55
+ /**
56
+ * Converts the trace to a prettified JSON string
57
+ */
58
+ export function traceToJSON(trace: PrettifiedTrace, indent = 2): string {
59
+ return JSON.stringify(trace, null, indent);
60
+ }
61
+
62
+ /**
63
+ * Copies the prettified trace to clipboard with compact defaults
64
+ */
65
+ export async function copyTraceToClipboard(
66
+ conversation: ConversationDetail,
67
+ ): Promise<{ success: boolean; error?: string }> {
68
+ try {
69
+ const trace = formatConversationAsPrettifiedTrace(conversation);
70
+ const json = traceToJSON(trace);
71
+ await navigator.clipboard.writeText(json);
72
+ return { success: true };
73
+ } catch (error) {
74
+ return {
75
+ success: false,
76
+ error: error instanceof Error ? error.message : 'Failed to copy trace',
77
+ };
78
+ }
79
+ }
@@ -1 +0,0 @@
1
- exports.id=2786,exports.ids=[2786],exports.modules={5294:(a,b,c)=>{"use strict";c.d(b,{$Y:()=>g,GO:()=>i,K3:()=>h,h9:()=>k});var d=c(29991);c(58415);var e=c(8703),f=c(45796);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(33451).D)([g,h,i,j,k]),(0,d.A)(g,"788da43332c5ab1720d73ff85a4b7dc3d2eec01dd7",null),(0,d.A)(h,"709fda575a6673fef6b3b598f8811b5432e403c703",null),(0,d.A)(i,"70fae18aeefc42a7799acb30f6d523d1cd4c6f438b",null),(0,d.A)(j,"7843f3a0fd5cb245b31ee07d10527203203d3d494d",null),(0,d.A)(k,"7032087d9624e44e962c0c3660351d6eac77f00c6a",null)},7503:(a,b,c)=>{"use strict";c.d(b,{U:()=>e});var d=c(90147);let e=(0,d.createServerReference)("70e45e460b761b6018812c87ebc8f23817a550032a",d.callServer,void 0,d.findSourceMapURL,"findOrCreateCredential")},19329:(a,b,c)=>{"use strict";c.d(b,{U:()=>f});var d=c(29991);c(58415);var e=c(5294);async function f(a,b,c){try{let d=await (0,e.K3)(a,b,c.id);if(d)return d}catch{}try{return await (0,e.GO)(a,b,c)}catch(a){throw console.error("Failed to save credential to database:",a),Error(`Failed to save credential '${c.id}' to database`)}}(0,c(33451).D)([f]),(0,d.A)(f,"70e45e460b761b6018812c87ebc8f23817a550032a",null)},21395:(a,b,c)=>{"use strict";c.d(b,{RN:()=>t,Ak:()=>q,uP:()=>u,tN:()=>r,Mj:()=>p,tQ:()=>o,pv:()=>n,Mb:()=>m,H6:()=>v,EN:()=>l,P:()=>w});var d=c(29991);c(58415);var e=c(56129),f=c(55797),g=c(67417);class h extends Error{constructor(a,b,c){super(a),this.operation=b,this.cause=c,this.name="NangoError"}}function i(a,b,c){if(a instanceof h)throw a;throw new h(b,c,a)}var j=c(33451);let k=()=>{let a=process.env.NANGO_SECRET_KEY;if(!a)throw new h("NANGO_SECRET_KEY environment variable is required for Nango integration");try{return new f.CA({secretKey:a,host:process.env.NANGO_SERVER_URL||void 0})}catch(a){throw new h("Failed to initialize Nango client","new Nango",a)}};async function l(){let a=process.env.NANGO_SECRET_KEY;return!!(a&&""!==a.trim())}async function m(){try{let a=k();return(await a.listProviders({})).data}catch(a){console.error("Failed to fetch providers:",a),i(a,"Unable to retrieve available providers from Nango","listProviders")}}async function n(a){try{let b=k();return(await b.getProvider({provider:a})).data}catch(b){console.error(`Failed to fetch provider ${a}:`,b),i(b,`Provider '${a}' not found or inaccessible`,"getProvider")}}async function o(){try{let a=k();return(await a.listIntegrations()).configs}catch(a){console.error("Failed to fetch integrations:",a),i(a,"Unable to retrieve existing integrations","listIntegrations")}}async function p(a){try{let b=k(),c=(await b.getIntegration({uniqueKey:a},{include:["credentials"]})).data,d=!1;d=c.credentials?.type==="OAUTH2"||c.credentials?.type==="OAUTH1"||c.credentials?.type==="TBA"?!!(c.credentials?.client_id&&c.credentials?.client_secret):c.credentials?.type!=="APP"||!!(c.credentials?.app_id&&c.credentials?.app_link);let{credentials:e,...f}=c;return{...f,areCredentialsSet:d}}catch(b){if(b&&"object"==typeof b&&"status"in b&&404===b.status)return null;console.error(`Failed to fetch integration ${a}:`,b),i(b,`Unable to fetch integration with key '${a}'`,"getIntegration")}}async function q(a){try{let b=k();return(await b.createIntegration({provider:a.provider,unique_key:a.uniqueKey,display_name:a.displayName,credentials:a.credentials})).data}catch(b){console.error("Failed to create integration:",b),i(b,`Failed to create integration '${a.uniqueKey}' for provider '${a.provider}'`,"createIntegration")}}async function r(a){try{let a=k();return(await a.listConnections()).connections}catch(c){let b=a?` for integration '${a}'`:"";console.error(`Failed to fetch connections${b}:`,c),i(c,`Unable to retrieve connections${b}`,"listConnections")}}async function s({endUserId:a="test-tenant",endUserEmail:b="test@test-tenant.com",endUserDisplayName:c="Test User",organizationId:d=process.env.TENANT_ID||g.P3,organizationDisplayName:e="Test Organization",integrationId:f}){try{let g=k(),{data:h}=await g.createConnectSession({end_user:{id:a,email:b,display_name:c},organization:{id:d,display_name:e},allowed_integrations:[f]});return h}catch(a){console.error("Failed to create connect session:",a),i(a,`Unable to create connect session for integration '${f}'`,"createConnectSession")}}async function t({name:a,apiKeyToSet:b,metadata:c}){let d=(0,e.K_)(a);try{let e;try{e=await q({provider:"private-api-bearer",uniqueKey:d,displayName:a})}catch(a){if(a instanceof h&&a.cause&&"object"==typeof a.cause&&"status"in a.cause&&400===a.cause.status){let b=await p(d);b?e=b:i(a,"Integration creation failed for unexpected reasons","create")}else i(a,`Failed to create or retrieve integration '${d}'`,"create")}try{let a=`${process.env.NANGO_SERVER_URL||"https://api.nango.dev"}/connections`,f={provider_config_key:e.unique_key,connection_id:d,metadata:c,credentials:{type:"API_KEY",apiKey:b}},g=await fetch(a,{method:"POST",headers:{Authorization:`Bearer ${process.env.NANGO_SECRET_KEY}`,"Content-Type":"application/json"},body:JSON.stringify(f)});if(!g.ok)throw new h(`Failed to import connection: HTTP ${g.status} - ${g.statusText}`,"importConnection")}catch(a){i(a,"Failed to import API key connection to Nango","importConnection")}try{await w({providerConfigKey:e.unique_key,connectionId:d,metadata:c})}catch(a){console.warn(`Failed to set metadata for connection ${d}:`,a)}return{integration:e}}catch(b){console.error("Unexpected error creating API key credential:",b),i(b,`Unexpected error creating API key credential '${a}'`,"createNangoApiKeyConnection")}}async function u({providerName:a,credentials:b}){try{let c,d=null;try{d=await p(a)}catch(b){if(b instanceof h)throw b;console.debug(`Integration '${a}' not found, will create new one`)}if(d?.areCredentialsSet)c=d;else try{c=await q({provider:a,uniqueKey:a,displayName:a,credentials:b})}catch(b){i(b,`Failed to create integration for provider '${a}'`,"create")}try{return(await s({integrationId:c.unique_key})).token}catch(a){i(a,`Failed to create connect session for integration '${c.unique_key}'`,"createConnectSession")}}catch(b){console.error("Unexpected error creating provider connect session:",b),i(b,`Unexpected error creating connect session for provider '${a}'`,"createProviderConnectSession")}}async function v({providerConfigKey:a,connectionId:b}){try{let c=k();return await c.getMetadata(a,b)}catch(a){if(a&&"object"==typeof a&&"status"in a&&404===a.status)return null;console.error("Failed to get connection metadata:",a),i(a,`Unable to retrieve metadata for connection '${b}'`,"getMetadata")}}async function w({providerConfigKey:a,connectionId:b,metadata:c}){try{let d=k();await d.setMetadata(a,b,c)}catch(a){console.error("Failed to set connection metadata:",a),i(a,`Unable to update metadata for connection '${b}'`,"setMetadata")}}(0,j.D)([l,m,n,o,p,q,r,t,u,v,w]),(0,d.A)(l,"00a1439792d436da8f9a6968bff1c8b62e8c06c530",null),(0,d.A)(m,"0092638e642a6c4671374788fbbcc02b111fc23271",null),(0,d.A)(n,"4077a41207aab0e0ecd656dc2c74661bfd8b5a06c9",null),(0,d.A)(o,"00b92e9ab76888c9a2d34c61b310f95be549065807",null),(0,d.A)(p,"402ce0fb9cd7910c809f1e5e8aeb89af4bf458b767",null),(0,d.A)(q,"401ec1cec1fce1152cc8c2474b5558ef02f67544d0",null),(0,d.A)(r,"4032855c3fb0b378e384ac6599de0c06a68d0a5143",null),(0,d.A)(t,"40911ed92406caeb1c0ca61ada454be8d20b877555",null),(0,d.A)(u,"402a6e476d7093a7d5f9684c8c70ddb733e1729038",null),(0,d.A)(v,"4083ad61f506792056ec8ebde21905bfd5c0295357",null),(0,d.A)(w,"408e81e00ba58ec2ea74965877bd7f22a70f659a6f",null)},22427:(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."})}},25600:(a,b,c)=>{Promise.resolve().then(c.bind(c,22427))},62048:(a,b,c)=>{Promise.resolve().then(c.bind(c,80969))},73340:(a,b,c)=>{"use strict";c.r(b),c.d(b,{"400682b0f71f6352b4c6abb9e47d2efee47058a805":()=>d.vj,"6062e7e61b9e062539f55b0c9826a6396c51988689":()=>d.Sw,"608ab65f20c33051b7102b2e980ff451f0817d2994":()=>d.xx,"60b92e75736364609f77b9d1245227090e819fb09e":()=>d.gA,"7059d26cae9466b496730a5f8b904eaaa951b1fd07":()=>d.vr});var d=c(54637)},80969:(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]/credentials/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]/credentials/error.tsx","default")}};
@@ -1 +0,0 @@
1
- exports.id=448,exports.ids=[448],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"}]])},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})}},33285:(a,b,c)=>{"use strict";c.r(b),c.d(b,{"403fb050847574c5fa32c3df3e4521eb966d992630":()=>d.bW,"6018b59d2317f74eb895db25a11c5c6872777a4d48":()=>p,"6043d8e25e8057590105a05ae589ab7f82d5c1e93e":()=>d.Dv,"6068964a1f132ffecb2677a7f44fd20b23d780ac19":()=>d.qf,"60a3f3b3dbd1c4fceb0ea06e0f80c4e8a588ee4535":()=>d.gL,"703cbc3e62af94cc96915f35590250111e34e81dd6":()=>r,"706bf3db03d80caf054e6cf0268c219d8a8f93aec2":()=>s,"70ca81c549226f5f58629281a2c6fd44ef508ba7c9":()=>d.Tg,"70e16481642d7b68453d23cced1881afcee279e8bd":()=>q});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,"602cb8110a4b4cacf0550113d30fd77caa6655367c",null),(0,e.A)(k,"7052447d6f67e13c33e294496d0940e8726f272906",null),(0,e.A)(l,"700f45d2f3472819cca86ebe27962aa8c839ad2f8f",null),(0,e.A)(m,"70cdfe91dd3772357fd582ad510810efd7933ce99e",null),(0,e.A)(n,"70b5b2263ac7552a0b51ea9318e2667183c0bcaae9",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}/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}/components`),(0,f.revalidatePath)(`/${a}/projects/${b}/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}/components`),(0,f.revalidatePath)(`/${a}/projects/${b}/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,"6018b59d2317f74eb895db25a11c5c6872777a4d48",null),(0,e.A)(q,"70e16481642d7b68453d23cced1881afcee279e8bd",null),(0,e.A)(r,"703cbc3e62af94cc96915f35590250111e34e81dd6",null),(0,e.A)(s,"706bf3db03d80caf054e6cf0268c219d8a8f93aec2",null)},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"})]})})}},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})]})}},41325:(a,b,c)=>{Promise.resolve().then(c.bind(c,60458)),Promise.resolve().then(c.bind(c,24003)),Promise.resolve().then(c.bind(c,19603)),Promise.resolve().then(c.t.bind(c,61678,23))},45622:()=>{},53261:(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]/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]/components/error.tsx","default")},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})})}},60458:(a,b,c)=>{"use strict";c.d(b,{DataComponentForm:()=>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)("703cbc3e62af94cc96915f35590250111e34e81dd6",o.callServer,void 0,o.findSourceMapURL,"updateDataComponentAction"),q=(0,o.createServerReference)("70e16481642d7b68453d23cced1881afcee279e8bd",o.callServer,void 0,o.findSourceMapURL,"createDataComponentAction");var r=c(42723);let s={id:"",name:"",description:"",props:""};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.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 component");h.oR.success("Component updated")}else{let c=await q(a,b,e);if(!c.success)return void h.oR.error(c.error||"Failed to create component");h.oR.success("Component created"),v.push(`/${a}/projects/${b}/components`)}}catch(b){console.error("Error submitting 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"})]})})}},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.")},71708:(a,b,c)=>{Promise.resolve().then(c.bind(c,81331))},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,{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"}},81331:(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."})}},85276:(a,b,c)=>{Promise.resolve().then(c.bind(c,53261))},92107:(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:"Components"}],children:(0,d.jsxs)(f.D,{children:[(0,d.jsx)(g.zY,{title:"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}`))})]})})}},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=7181,exports.ids=[7181],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")},16454:(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)("7011744d0d4b7fdfeadd04d9ffa90800f66da0128e",o.callServer,void 0,o.findSourceMapURL,"updateArtifactComponentAction"),q=(0,o.createServerReference)("709b8721206d8cfd89e6f9b74a2adf7aed3af53717",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"})]})})}},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})}},33373:(a,b,c)=>{"use strict";c.r(b),c.d(b,{"403fb050847574c5fa32c3df3e4521eb966d992630":()=>d.bW,"6043d8e25e8057590105a05ae589ab7f82d5c1e93e":()=>d.Dv,"6068964a1f132ffecb2677a7f44fd20b23d780ac19":()=>d.qf,"6095369dde44cb8925f7623768808f2d974425c4a9":()=>p,"60a3f3b3dbd1c4fceb0ea06e0f80c4e8a588ee4535":()=>d.gL,"7011744d0d4b7fdfeadd04d9ffa90800f66da0128e":()=>r,"709b8721206d8cfd89e6f9b74a2adf7aed3af53717":()=>q,"70ca81c549226f5f58629281a2c6fd44ef508ba7c9":()=>d.Tg,"70f168f1418f51b4f1ecbff8a6c8994bf093eba78b":()=>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){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,"604ee58cce7cf94b40a7c91904391962f4294d6883",null),(0,e.A)(k,"70c4163d6c23a12a9415686cf7c5e85e1c3af04fe8",null),(0,e.A)(l,"7007c709b8efb38f3d0fd08e331f133c625c82fb40",null),(0,e.A)(m,"708d28c03a5d28f038e6a862819ef79c92a697602c",null),(0,e.A)(n,"70bd4f369d38048353c9f068afdaeb34e2e31e01f2",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,"6095369dde44cb8925f7623768808f2d974425c4a9",null),(0,e.A)(q,"709b8721206d8cfd89e6f9b74a2adf7aed3af53717",null),(0,e.A)(r,"7011744d0d4b7fdfeadd04d9ffa90800f66da0128e",null),(0,e.A)(s,"70f168f1418f51b4f1ecbff8a6c8994bf093eba78b",null)},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"})]})})}},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,16454)),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))}};