@inkeep/agents-manage-ui 0.29.2 → 0.29.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/standalone/agents-manage-ui/.next/BUILD_ID +1 -1
- package/.next/standalone/agents-manage-ui/.next/app-build-manifest.json +171 -171
- package/.next/standalone/agents-manage-ui/.next/app-path-routes-manifest.json +6 -6
- package/.next/standalone/agents-manage-ui/.next/build-manifest.json +5 -5
- package/.next/standalone/agents-manage-ui/.next/prerender-manifest.json +3 -3
- package/.next/standalone/agents-manage-ui/.next/react-loadable-manifest.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/[agentId]/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/[agentId]/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/[agentId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/new/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/new/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/new/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/agents/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/api-keys/page.js +3 -3
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/api-keys/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/api-keys/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/new/page.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/new/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/new/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/artifacts/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/new/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/new/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/new/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/components/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/page.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/new/providers/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/credentials/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/edit/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/edit/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/edit/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/new/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/new/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/new/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/external-agents/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/new/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/new/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/new/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/mcp-servers/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/settings/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/settings/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/settings/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/ai-calls/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/conversations/[conversationId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/[projectId]/traces/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/[tenantId]/projects/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/_not-found/page.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/_not-found.html +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/_not-found.rsc +9 -9
- package/.next/standalone/agents-manage-ui/.next/server/app/api/data-components/[dataComponentId]/generate-render/route.js +190 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/api/data-components/[dataComponentId]/generate-render/route.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/api/data-components/[dataComponentId]/generate-render/route_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/api/signoz/conversations/[conversationId]/route.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/api/signoz/conversations/[conversationId]/route.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/api/signoz/conversations/[conversationId]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/api/signoz/route_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/page.js +3 -3
- package/.next/standalone/agents-manage-ui/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/app-paths-manifest.json +6 -6
- package/.next/standalone/agents-manage-ui/.next/server/chunks/1063.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/1344.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/server/chunks/{7457.js → 1401.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/1989.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/2420.js +7 -0
- package/.next/standalone/agents-manage-ui/.next/server/chunks/279.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/3003.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/server/chunks/3069.js +60 -0
- package/.next/standalone/agents-manage-ui/.next/server/chunks/{3196.js → 3813.js} +7 -7
- package/.next/standalone/agents-manage-ui/.next/server/chunks/4477.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/server/chunks/4608.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/chunks/4629.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/4745.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/server/chunks/493.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/5206.js +2 -2
- package/.next/standalone/agents-manage-ui/.next/server/chunks/5450.js +1 -60
- package/.next/standalone/agents-manage-ui/.next/server/chunks/6641.js +4 -4
- package/.next/standalone/agents-manage-ui/.next/server/chunks/6915.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/7494.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/7512.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/server/chunks/7711.js +13 -13
- package/.next/standalone/agents-manage-ui/.next/server/chunks/9122.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/9887.js +6 -6
- package/.next/standalone/agents-manage-ui/.next/server/chunks/9896.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/server/middleware-build-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/middleware-manifest.json +5 -5
- package/.next/standalone/agents-manage-ui/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/pages/404.html +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/pages/500.html +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/agents-manage-ui/.next/server/server-reference-manifest.json +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{16631-83c57c63df818fc3.js → 16631-2a2a541fcfdbe906.js} +2 -2
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{23113.55bc672c251e3d69.js → 23113.eab371e0dd48dc4c.js} +12 -12
- package/.next/standalone/agents-manage-ui/.next/static/chunks/33813-c4eb369c53f8ac93.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{42030-a83b3fde02a9fc33.js → 35364-ef0ff982651f0f59.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/42205-456df2e3b5029fb0.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/73281-8420f80fb480f4c5.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/88709-8f9f337b7374646b.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{68506-eee7452f8d6dc81d.js → 98756-724c7ad2165d13c7.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{10308-4af0dce8daab21de.js → 98867-9e6e0df444d8e790.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/[agentId]/{page-64109609ab05441c.js → page-21c812688bef2281.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/new/{page-619ee3b5b898e6e1.js → page-2cc39a02cb7422a8.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/agents/{page-e7d358160e5ed96c.js → page-e78af893793f27d6.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/api-keys/page-3aa77027467ce62b.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page-1b309134485310b2.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/new/page-8d8915a02178ca58.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/{page-71ae3e7ec7ab5b6e.js → page-592137ee13bed19e.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/[dataComponentId]/{page-126491ea71534bed.js → page-a3deb1a50fdc51f2.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/new/{page-e2ac1380cfe466ff.js → page-886a40f7e90fc534.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/page-0d7c0bbd220a9474.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page-339ddc7426cb291a.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page-9d9fb520d5f9dfec.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page-73d3f6bea3deaa4e.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/{page-36e38e6992a19f8d.js → page-8ece2de2bac001cd.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/edit/page-eb3921a5a9051e63.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/page-4af233894f263f3e.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/new/page-cc5d7222724559ca.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/page-2e5a79009984cfcd.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/edit/{page-4cc3d388f7462242.js → page-aee94a9ea8cb78a6.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page-6ab968db910f8dc8.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/new/{page-c715bf246a43a1d6.js → page-cd81666db623b5a2.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/page-6b79bf0fe215ecd2.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/settings/{page-5463b3f5bcc72b68.js → page-44da2cae57ef5a8a.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/page-a9c15e6fcd929fac.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/{page-93a9fb4841d4aeb2.js → page-38d15dbaf6bb6e4f.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/layout-1a3b4af9569548d1.js +1 -0
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{d834c995-6cac1c819820d459.js → d834c995-e7d29efff67c3fbe.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/{webpack-764582acf46b90b9.js → webpack-4f03d3dee03e888e.js} +1 -1
- package/.next/standalone/agents-manage-ui/.next/static/css/71874d21f6b73070.css +1 -0
- package/.next/standalone/agents-manage-ui/package.json +9 -3
- package/.next/standalone/packages/agents-core/package.json +1 -1
- package/package.json +12 -6
- package/src/app/api/data-components/[dataComponentId]/generate-render/route.ts +250 -34
- package/src/components/ui/external-link.tsx +1 -1
- package/src/components/ui/item-card.tsx +1 -1
- package/src/lib/ai/model-factory.ts +204 -0
- package/.next/standalone/agents-manage-ui/.next/server/chunks/3138.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/4658.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/6295.js +0 -7
- package/.next/standalone/agents-manage-ui/.next/server/chunks/883.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/server/chunks/9756.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/36719-2e4ae0e53f1880fb.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/49016-78e5b21328af2c40.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/73281-643b9a02ca117c7b.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/86765-6cf3428519e24552.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/api-keys/page-a8dfdbf494cf6d13.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/[artifactComponentId]/page-eb10b3776d760496.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/artifacts/new/page-99e6ba922b39f475.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/components/page-6f2de4e866ff1985.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/[credentialId]/page-89c81e747dabd808.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/bearer/page-412e2152f4672813.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/credentials/new/providers/[providerId]/page-29f958450d50389e.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/edit/page-9b2c73f476234789.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/[externalAgentId]/page-d2a380ee0bc84d15.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/new/page-acfc73b76d91cd55.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/external-agents/page-d799c6bf642120df.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/[mcpServerId]/page-b64fb6883e60ce6f.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/mcp-servers/page-a646042c4465beb3.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/[tenantId]/projects/[projectId]/traces/page-225d37a466d4dabb.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/chunks/app/layout-84f813b44abed66f.js +0 -1
- package/.next/standalone/agents-manage-ui/.next/static/css/b83d1d0ee3fbce7c.css +0 -1
- /package/.next/standalone/agents-manage-ui/.next/static/{9sMPaUzQEXBPfDCC2b3aN → Oghx7DYFsZcQA9XMVroQX}/_buildManifest.js +0 -0
- /package/.next/standalone/agents-manage-ui/.next/static/{9sMPaUzQEXBPfDCC2b3aN → Oghx7DYFsZcQA9XMVroQX}/_ssgManifest.js +0 -0
|
@@ -1,9 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API Route: Generate Component Render
|
|
3
|
+
*
|
|
4
|
+
* Generates a React/Tailwind component using AI based on a data component's schema.
|
|
5
|
+
* This route:
|
|
6
|
+
* 1. Fetches the data component from manage-api
|
|
7
|
+
* 2. Fetches the project to get base model configuration
|
|
8
|
+
* 3. Uses AI SDK streamObject to generate component code and sample data
|
|
9
|
+
* 4. Streams NDJSON response back to client
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import { streamObject } from 'ai';
|
|
1
13
|
import type { NextRequest } from 'next/server';
|
|
14
|
+
import { z } from 'zod';
|
|
15
|
+
import { ModelFactory } from '@/lib/ai/model-factory';
|
|
16
|
+
import { fetchDataComponent } from '@/lib/api/data-components';
|
|
17
|
+
import { fetchProject } from '@/lib/api/projects';
|
|
18
|
+
|
|
19
|
+
interface RouteContext {
|
|
20
|
+
params: Promise<{
|
|
21
|
+
dataComponentId: string;
|
|
22
|
+
}>;
|
|
23
|
+
}
|
|
2
24
|
|
|
3
|
-
export async function POST(
|
|
4
|
-
request: NextRequest,
|
|
5
|
-
context: RouteContext<'/api/data-components/[dataComponentId]/generate-render'>
|
|
6
|
-
) {
|
|
25
|
+
export async function POST(request: NextRequest, context: RouteContext) {
|
|
7
26
|
try {
|
|
8
27
|
const { dataComponentId } = await context.params;
|
|
9
28
|
const body = await request.json();
|
|
@@ -13,45 +32,242 @@ export async function POST(
|
|
|
13
32
|
return new Response('Missing tenantId or projectId', { status: 400 });
|
|
14
33
|
}
|
|
15
34
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
'Content-Type': 'application/json',
|
|
23
|
-
...(process.env.PUBLIC_INKEEP_AGENTS_RUN_API_BYPASS_SECRET && {
|
|
24
|
-
Authorization: `Bearer ${process.env.PUBLIC_INKEEP_AGENTS_RUN_API_BYPASS_SECRET}`,
|
|
25
|
-
'x-inkeep-tenant-id': tenantId,
|
|
26
|
-
'x-inkeep-project-id': projectId,
|
|
27
|
-
}),
|
|
28
|
-
},
|
|
29
|
-
body: JSON.stringify({
|
|
30
|
-
instructions: instructions || undefined,
|
|
31
|
-
existingCode: existingCode || undefined,
|
|
32
|
-
}),
|
|
35
|
+
console.log('Generating component render', {
|
|
36
|
+
tenantId,
|
|
37
|
+
projectId,
|
|
38
|
+
dataComponentId,
|
|
39
|
+
hasInstructions: !!instructions,
|
|
40
|
+
hasExistingCode: !!existingCode,
|
|
33
41
|
});
|
|
34
42
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
43
|
+
// Fetch data component from manage-api
|
|
44
|
+
const dataComponent = await fetchDataComponent(tenantId, projectId, dataComponentId);
|
|
45
|
+
|
|
46
|
+
if (!dataComponent) {
|
|
47
|
+
return new Response('Data component not found', { status: 404 });
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// Fetch project to get model configuration
|
|
51
|
+
const projectResponse = await fetchProject(tenantId, projectId);
|
|
52
|
+
|
|
53
|
+
if (!projectResponse.data) {
|
|
54
|
+
return new Response('Project not found', { status: 404 });
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const project = projectResponse.data;
|
|
58
|
+
|
|
59
|
+
if (!project.models?.base) {
|
|
60
|
+
return new Response('Project base model configuration is required', { status: 400 });
|
|
44
61
|
}
|
|
45
62
|
|
|
46
|
-
//
|
|
47
|
-
|
|
63
|
+
// Build prompt for AI generation
|
|
64
|
+
const prompt = buildGenerationPrompt(dataComponent, instructions, existingCode);
|
|
65
|
+
|
|
66
|
+
// Prepare model configuration
|
|
67
|
+
const modelConfig = ModelFactory.prepareGenerationConfig(project.models?.base as any);
|
|
68
|
+
|
|
69
|
+
// Define schema for generated output
|
|
70
|
+
const renderSchema = z.object({
|
|
71
|
+
component: z.string().describe('The React component code'),
|
|
72
|
+
mockData: z.any().describe('Sample data matching the props schema'),
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
// Generate using AI SDK streamObject
|
|
76
|
+
const result = streamObject({
|
|
77
|
+
...modelConfig,
|
|
78
|
+
prompt,
|
|
79
|
+
schema: renderSchema,
|
|
80
|
+
temperature: 0.7,
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
// Get existing data if we're modifying (to preserve sample data)
|
|
84
|
+
const existingData =
|
|
85
|
+
existingCode &&
|
|
86
|
+
dataComponent.render &&
|
|
87
|
+
typeof dataComponent.render === 'object' &&
|
|
88
|
+
'mockData' in dataComponent.render
|
|
89
|
+
? (dataComponent.render as any).mockData
|
|
90
|
+
: null;
|
|
91
|
+
|
|
92
|
+
// Create a ReadableStream for NDJSON streaming
|
|
93
|
+
const stream = new ReadableStream({
|
|
94
|
+
async start(controller) {
|
|
95
|
+
try {
|
|
96
|
+
for await (const partialObject of result.partialObjectStream) {
|
|
97
|
+
// If modifying with instructions, preserve existing data
|
|
98
|
+
const outputObject =
|
|
99
|
+
instructions && existingData
|
|
100
|
+
? { ...(partialObject as any), mockData: existingData }
|
|
101
|
+
: partialObject;
|
|
102
|
+
|
|
103
|
+
// Write NDJSON (newline-delimited JSON)
|
|
104
|
+
const line = `${JSON.stringify(outputObject)}\n`;
|
|
105
|
+
controller.enqueue(new TextEncoder().encode(line));
|
|
106
|
+
}
|
|
107
|
+
controller.close();
|
|
108
|
+
} catch (error) {
|
|
109
|
+
console.error('Error streaming preview generation:', error);
|
|
110
|
+
// Send error as final line
|
|
111
|
+
const errorLine = `${JSON.stringify({ component: '// Error generating component', mockData: {} })}\n`;
|
|
112
|
+
controller.enqueue(new TextEncoder().encode(errorLine));
|
|
113
|
+
controller.close();
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
return new Response(stream, {
|
|
48
119
|
headers: {
|
|
49
120
|
'Content-Type': 'application/x-ndjson',
|
|
50
121
|
'Transfer-Encoding': 'chunked',
|
|
122
|
+
'Cache-Control': 'no-cache',
|
|
51
123
|
},
|
|
52
124
|
});
|
|
53
125
|
} catch (error) {
|
|
54
|
-
console.error('Error generating
|
|
55
|
-
return new Response('Internal server error', {
|
|
126
|
+
console.error('Error generating component render:', error);
|
|
127
|
+
return new Response(error instanceof Error ? error.message : 'Internal server error', {
|
|
128
|
+
status: 500,
|
|
129
|
+
});
|
|
56
130
|
}
|
|
57
131
|
}
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Build the prompt for AI generation
|
|
135
|
+
*/
|
|
136
|
+
function buildGenerationPrompt(
|
|
137
|
+
dataComponent: {
|
|
138
|
+
name: string;
|
|
139
|
+
description: string;
|
|
140
|
+
props: Record<string, unknown> | null;
|
|
141
|
+
},
|
|
142
|
+
instructions?: string,
|
|
143
|
+
existingCode?: string
|
|
144
|
+
): string {
|
|
145
|
+
const propsSchema = dataComponent.props || {};
|
|
146
|
+
const propsJson = JSON.stringify(propsSchema, null, 2);
|
|
147
|
+
const componentName = sanitizeComponentName(dataComponent.name);
|
|
148
|
+
|
|
149
|
+
// If we have custom instructions and existing code, modify the prompt
|
|
150
|
+
if (instructions && existingCode) {
|
|
151
|
+
return `You are an expert React and Tailwind CSS developer. You need to modify an existing React component based on specific instructions.
|
|
152
|
+
|
|
153
|
+
COMPONENT DETAILS:
|
|
154
|
+
- Original Name: ${dataComponent.name}
|
|
155
|
+
- Component Function Name: ${componentName}
|
|
156
|
+
- Description: ${dataComponent.description}
|
|
157
|
+
- Props Schema (JSON Schema): ${propsJson}
|
|
158
|
+
|
|
159
|
+
EXISTING COMPONENT CODE:
|
|
160
|
+
\`\`\`jsx
|
|
161
|
+
${existingCode}
|
|
162
|
+
\`\`\`
|
|
163
|
+
|
|
164
|
+
MODIFICATION INSTRUCTIONS:
|
|
165
|
+
${instructions}
|
|
166
|
+
|
|
167
|
+
REQUIREMENTS:
|
|
168
|
+
1. Modify the existing component code according to the instructions
|
|
169
|
+
2. Keep using Tailwind CSS SEMANTIC COLOR CLASSES (bg-background, text-foreground, etc.)
|
|
170
|
+
3. Maintain the balanced spacing and design principles from the original
|
|
171
|
+
4. Keep using lucide-react icons where appropriate
|
|
172
|
+
5. DO NOT include export statements - just the imports and function
|
|
173
|
+
6. DO NOT include TypeScript type annotations
|
|
174
|
+
7. Component name should remain: ${componentName}
|
|
175
|
+
8. DO NOT regenerate sample data - keep the same data structure
|
|
176
|
+
|
|
177
|
+
OUTPUT FORMAT:
|
|
178
|
+
You need to generate only one thing:
|
|
179
|
+
1. "component": The modified React component code as a string
|
|
180
|
+
|
|
181
|
+
Return ONLY the component field, the mockData field will be reused from the existing render.
|
|
182
|
+
|
|
183
|
+
EXAMPLE OUTPUT:
|
|
184
|
+
{
|
|
185
|
+
"component": "import { Mail, User } from 'lucide-react';\\n\\nfunction ${componentName}(props) {\\n // Modified component code here\\n}"
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
Focus on making the requested changes while maintaining the component's quality and design principles.`;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
return `You are an expert React and Tailwind CSS developer. Generate a beautiful, modern React component for displaying data and sample data to preview it.
|
|
192
|
+
|
|
193
|
+
COMPONENT DETAILS:
|
|
194
|
+
- Original Name: ${dataComponent.name}
|
|
195
|
+
- Component Function Name: ${componentName}
|
|
196
|
+
- Description: ${dataComponent.description}
|
|
197
|
+
- Props Schema (JSON Schema): ${propsJson}
|
|
198
|
+
|
|
199
|
+
REQUIREMENTS:
|
|
200
|
+
1. Create a React functional component (JSX, not TypeScript)
|
|
201
|
+
2. Use Tailwind CSS SEMANTIC COLOR CLASSES (these automatically adapt to light/dark mode):
|
|
202
|
+
- Background: bg-background, bg-card, bg-muted, bg-muted/40, bg-accent, bg-primary
|
|
203
|
+
- Text: text-foreground, text-muted-foreground, text-card-foreground, text-primary-foreground
|
|
204
|
+
- Borders: border-border, border-input, border-muted
|
|
205
|
+
- DO NOT use direct colors like bg-white, bg-gray-800, text-gray-900, etc.
|
|
206
|
+
- DO NOT use dark: prefix - semantic classes handle dark mode automatically
|
|
207
|
+
3. Make it balanced - comfortable but efficient:
|
|
208
|
+
- Use moderate padding: p-4, px-4 py-3 (balanced, not cramped or excessive)
|
|
209
|
+
- Use appropriate text sizes: text-sm for body, text-base for headings, text-xs for captions
|
|
210
|
+
- Use balanced spacing: gap-2.5, gap-3, space-y-2, mt-2, mb-3
|
|
211
|
+
- Aim for a clean, professional look with good readability
|
|
212
|
+
4. Design for embedding - this component blends into existing content:
|
|
213
|
+
- DO NOT add redundant titles or headers unless they're part of the actual data schema
|
|
214
|
+
- Focus on displaying the data directly and elegantly
|
|
215
|
+
- Assume the component is part of a larger conversation or content flow
|
|
216
|
+
- If the schema has a "title" or "name" property, display it as data, not as a wrapper heading
|
|
217
|
+
5. Use LUCIDE-REACT ICONS to enhance UI aesthetics:
|
|
218
|
+
- Import icons from lucide-react: import { User, Mail, Clock } from 'lucide-react'
|
|
219
|
+
- Use icons with size-4 or size-5 classes for balanced visibility
|
|
220
|
+
- Place icons inline with text or as visual indicators
|
|
221
|
+
- Example: <User className="size-4" /> or <Mail className="size-4 text-muted-foreground" />
|
|
222
|
+
- Common useful icons: User, Mail, Calendar, Clock, Check, X, Star, Heart, Settings, Search, etc.
|
|
223
|
+
6. The component should accept props that match the JSON Schema properties
|
|
224
|
+
7. Make it visually appealing and professional - clean with good whitespace
|
|
225
|
+
8. Use semantic HTML elements
|
|
226
|
+
9. Make it responsive and accessible
|
|
227
|
+
10. You can import icons from 'lucide-react' at the top
|
|
228
|
+
11. DO NOT include export statements - just the imports and function
|
|
229
|
+
12. DO NOT include TypeScript type annotations
|
|
230
|
+
13. Component name should be exactly: ${componentName}
|
|
231
|
+
|
|
232
|
+
AVAILABLE SEMANTIC COLOR CLASSES:
|
|
233
|
+
- Backgrounds: bg-background, bg-foreground, bg-card, bg-popover, bg-primary, bg-secondary, bg-muted, bg-accent, bg-destructive
|
|
234
|
+
- Text: text-foreground, text-background, text-card-foreground, text-popover-foreground, text-primary-foreground, text-secondary-foreground, text-muted-foreground, text-accent-foreground, text-destructive
|
|
235
|
+
- Borders: border-border, border-input, border-ring
|
|
236
|
+
- You can use opacity modifiers: bg-muted/40, bg-accent/10, etc.
|
|
237
|
+
|
|
238
|
+
OUTPUT FORMAT:
|
|
239
|
+
You need to generate two things:
|
|
240
|
+
1. "component": The complete React component code as a string
|
|
241
|
+
2. "mockData": Realistic sample data that matches the props schema (as a JSON object)
|
|
242
|
+
|
|
243
|
+
EXAMPLE OUTPUT (for a user profile schema with name, email, role):
|
|
244
|
+
{
|
|
245
|
+
"component": "import { Mail, User } from 'lucide-react';\\n\\nfunction ${componentName}(props) {\\n return (\\n <div className=\\"p-4 rounded-lg border border-border bg-card\\">\\n <div className=\\"flex items-center gap-2.5 mb-2\\">\\n <User className=\\"size-4 text-muted-foreground\\" />\\n <span className=\\"text-base font-medium text-foreground\\">{props.name}</span>\\n </div>\\n <div className=\\"flex items-center gap-2 text-sm text-muted-foreground\\">\\n <Mail className=\\"size-4\\" />\\n <span>{props.email}</span>\\n </div>\\n <div className=\\"text-xs text-muted-foreground mt-2\\">Role: {props.role}</div>\\n </div>\\n );\\n}",
|
|
246
|
+
"mockData": {
|
|
247
|
+
"name": "Sarah Chen",
|
|
248
|
+
"email": "sarah.chen@example.com",
|
|
249
|
+
"role": "Product Manager"
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
REMEMBER:
|
|
254
|
+
- ONLY use semantic color classes (bg-card, text-foreground, etc.)
|
|
255
|
+
- NO direct colors (bg-white, text-gray-900, etc.)
|
|
256
|
+
- NO dark: prefix needed - semantic classes adapt automatically
|
|
257
|
+
- Use balanced spacing (p-4, gap-2.5/gap-3, text-sm for body, text-base for headings)
|
|
258
|
+
- Use lucide-react icons where appropriate for better UI
|
|
259
|
+
- NO redundant titles - just display the actual data from props
|
|
260
|
+
- Design for embedding - this blends into existing content, not a standalone card
|
|
261
|
+
- Make the sample data realistic and useful for previewing the component`;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
/**
|
|
265
|
+
* Sanitize component name to be a valid React component name
|
|
266
|
+
*/
|
|
267
|
+
function sanitizeComponentName(name: string): string {
|
|
268
|
+
return name
|
|
269
|
+
.split(/\s+/)
|
|
270
|
+
.map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
|
|
271
|
+
.join('')
|
|
272
|
+
.replace(/[^a-zA-Z0-9]/g, '');
|
|
273
|
+
}
|
|
@@ -91,7 +91,7 @@ export function ItemCardFooter({ footerText }: { footerText: string }) {
|
|
|
91
91
|
<div className="relative flex items-center justify-between">
|
|
92
92
|
<div className="flex items-center text-xs text-muted-foreground">{footerText}</div>
|
|
93
93
|
<div className="opacity-0 group-hover:opacity-60 transform translate-x-1 group-hover:translate-x-0 transition-all duration-300">
|
|
94
|
-
<ArrowRight className="w-4 h-4 text-muted-foreground
|
|
94
|
+
<ArrowRight className="w-4 h-4 text-muted-foreground opacity-60" />
|
|
95
95
|
</div>
|
|
96
96
|
</div>
|
|
97
97
|
);
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ModelFactory for creating AI SDK language models from configuration
|
|
3
|
+
* Copied from agents-run-api for use in manage-ui API routes
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { anthropic, createAnthropic } from '@ai-sdk/anthropic';
|
|
7
|
+
import { createGateway, gateway } from '@ai-sdk/gateway';
|
|
8
|
+
import { createGoogleGenerativeAI, google } from '@ai-sdk/google';
|
|
9
|
+
import { createOpenAI, openai } from '@ai-sdk/openai';
|
|
10
|
+
import { createOpenRouter, openrouter } from '@openrouter/ai-sdk-provider';
|
|
11
|
+
import type { LanguageModel } from 'ai';
|
|
12
|
+
|
|
13
|
+
export interface ModelSettings {
|
|
14
|
+
model?: string;
|
|
15
|
+
providerOptions?: Record<string, unknown>;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Factory for creating AI SDK language models from configuration
|
|
20
|
+
* Supports multiple providers and AI Gateway integration
|
|
21
|
+
*/
|
|
22
|
+
export class ModelFactory {
|
|
23
|
+
/**
|
|
24
|
+
* Create a provider instance with custom configuration
|
|
25
|
+
*/
|
|
26
|
+
private static createProvider(provider: string, config: Record<string, unknown>): any {
|
|
27
|
+
switch (provider) {
|
|
28
|
+
case 'anthropic':
|
|
29
|
+
return createAnthropic(config);
|
|
30
|
+
case 'openai':
|
|
31
|
+
return createOpenAI(config);
|
|
32
|
+
case 'google':
|
|
33
|
+
return createGoogleGenerativeAI(config);
|
|
34
|
+
case 'openrouter':
|
|
35
|
+
return createOpenRouter(config);
|
|
36
|
+
case 'gateway':
|
|
37
|
+
return createGateway(config);
|
|
38
|
+
default:
|
|
39
|
+
throw new Error(`Unsupported provider: ${provider}`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Extract provider configuration from providerOptions
|
|
45
|
+
* Only includes settings that go to the provider constructor (baseURL, apiKey, etc.)
|
|
46
|
+
*/
|
|
47
|
+
private static extractProviderConfig(
|
|
48
|
+
providerOptions?: Record<string, unknown>
|
|
49
|
+
): Record<string, unknown> {
|
|
50
|
+
if (!providerOptions) {
|
|
51
|
+
return {};
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
const providerConfig: Record<string, unknown> = {};
|
|
55
|
+
|
|
56
|
+
if (providerOptions.baseUrl || providerOptions.baseURL) {
|
|
57
|
+
providerConfig.baseURL = providerOptions.baseUrl || providerOptions.baseURL;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
if (providerOptions.gateway) {
|
|
61
|
+
Object.assign(providerConfig, providerOptions.gateway);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
return providerConfig;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Create a language model instance from configuration
|
|
69
|
+
* Throws error if no config provided - models must be configured at project level
|
|
70
|
+
*/
|
|
71
|
+
static createModel(config: ModelSettings): any {
|
|
72
|
+
if (!config?.model?.trim()) {
|
|
73
|
+
throw new Error(
|
|
74
|
+
'Model configuration is required. Please configure models at the project level.'
|
|
75
|
+
);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
const modelSettings = config;
|
|
79
|
+
if (!modelSettings.model) {
|
|
80
|
+
throw new Error('Model configuration is required');
|
|
81
|
+
}
|
|
82
|
+
const modelString = modelSettings.model.trim();
|
|
83
|
+
const { provider, modelName } = ModelFactory.parseModelString(modelString);
|
|
84
|
+
|
|
85
|
+
console.log('Creating language model', {
|
|
86
|
+
provider,
|
|
87
|
+
model: modelName,
|
|
88
|
+
hasProviderOptions: !!modelSettings.providerOptions,
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
const providerConfig = ModelFactory.extractProviderConfig(modelSettings.providerOptions);
|
|
92
|
+
|
|
93
|
+
if (Object.keys(providerConfig).length > 0) {
|
|
94
|
+
console.log(`Applying custom ${provider} provider configuration`, providerConfig);
|
|
95
|
+
const customProvider = ModelFactory.createProvider(provider, providerConfig);
|
|
96
|
+
return customProvider.languageModel(modelName);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
switch (provider) {
|
|
100
|
+
case 'anthropic':
|
|
101
|
+
return anthropic(modelName);
|
|
102
|
+
case 'openai':
|
|
103
|
+
return openai(modelName);
|
|
104
|
+
case 'google':
|
|
105
|
+
return google(modelName);
|
|
106
|
+
case 'openrouter':
|
|
107
|
+
return openrouter(modelName);
|
|
108
|
+
case 'gateway':
|
|
109
|
+
return gateway(modelName);
|
|
110
|
+
default:
|
|
111
|
+
throw new Error(
|
|
112
|
+
`Unsupported provider: ${provider}. ` +
|
|
113
|
+
`Supported providers are: ${ModelFactory.BUILT_IN_PROVIDERS.join(', ')}. ` +
|
|
114
|
+
`To access other models, use OpenRouter (openrouter/model-id) or Vercel AI Gateway (gateway/model-id).`
|
|
115
|
+
);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Built-in providers that have special handling
|
|
121
|
+
*/
|
|
122
|
+
private static readonly BUILT_IN_PROVIDERS = [
|
|
123
|
+
'anthropic',
|
|
124
|
+
'openai',
|
|
125
|
+
'google',
|
|
126
|
+
'openrouter',
|
|
127
|
+
'gateway',
|
|
128
|
+
] as const;
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Parse model string to extract provider and model name
|
|
132
|
+
* Examples: "anthropic/claude-sonnet-4" -> { provider: "anthropic", modelName: "claude-sonnet-4" }
|
|
133
|
+
* "openrouter/anthropic/claude-sonnet-4" -> { provider: "openrouter", modelName: "anthropic/claude-sonnet-4" }
|
|
134
|
+
*/
|
|
135
|
+
static parseModelString(modelString: string): { provider: string; modelName: string } {
|
|
136
|
+
if (modelString.includes('/')) {
|
|
137
|
+
const [provider, ...modelParts] = modelString.split('/');
|
|
138
|
+
const normalizedProvider = provider.toLowerCase();
|
|
139
|
+
|
|
140
|
+
if (!ModelFactory.BUILT_IN_PROVIDERS.includes(normalizedProvider as any)) {
|
|
141
|
+
throw new Error(
|
|
142
|
+
`Unsupported provider: ${normalizedProvider}. ` +
|
|
143
|
+
`Supported providers are: ${ModelFactory.BUILT_IN_PROVIDERS.join(', ')}. ` +
|
|
144
|
+
`To access other models, use OpenRouter (openrouter/model-id) or Vercel AI Gateway (gateway/model-id).`
|
|
145
|
+
);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
return {
|
|
149
|
+
provider: normalizedProvider,
|
|
150
|
+
modelName: modelParts.join('/'),
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
throw new Error(`No provider specified in model string: ${modelString}`);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Get generation parameters from provider options
|
|
159
|
+
* These are parameters that get passed to generateText/streamText calls
|
|
160
|
+
*/
|
|
161
|
+
static getGenerationParams(providerOptions?: Record<string, unknown>): Record<string, unknown> {
|
|
162
|
+
if (!providerOptions) {
|
|
163
|
+
return {};
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
const excludedKeys = ['apiKey', 'baseURL', 'baseUrl', 'maxDuration'];
|
|
167
|
+
|
|
168
|
+
const params: Record<string, unknown> = {};
|
|
169
|
+
for (const [key, value] of Object.entries(providerOptions)) {
|
|
170
|
+
if (!excludedKeys.includes(key) && value !== undefined) {
|
|
171
|
+
params[key] = value;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
return params;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Prepare complete generation configuration from model settings
|
|
180
|
+
* Returns model instance and generation parameters ready to spread into generateText/streamText
|
|
181
|
+
* Includes maxDuration if specified in provider options (in seconds, following Vercel standard)
|
|
182
|
+
*/
|
|
183
|
+
static prepareGenerationConfig(modelSettings?: ModelSettings): {
|
|
184
|
+
model: LanguageModel;
|
|
185
|
+
maxDuration?: number;
|
|
186
|
+
} & Record<string, unknown> {
|
|
187
|
+
const modelString = modelSettings?.model?.trim();
|
|
188
|
+
|
|
189
|
+
const model = ModelFactory.createModel({
|
|
190
|
+
model: modelString,
|
|
191
|
+
providerOptions: modelSettings?.providerOptions,
|
|
192
|
+
});
|
|
193
|
+
|
|
194
|
+
const generationParams = ModelFactory.getGenerationParams(modelSettings?.providerOptions);
|
|
195
|
+
|
|
196
|
+
const maxDuration = modelSettings?.providerOptions?.maxDuration as number | undefined;
|
|
197
|
+
|
|
198
|
+
return {
|
|
199
|
+
model,
|
|
200
|
+
...generationParams,
|
|
201
|
+
...(maxDuration !== undefined && { maxDuration }),
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";exports.id=3138,exports.ids=[3138],exports.modules={8092:(a,b,c)=>{c.d(b,{S:()=>e});var d=c(90147);let e=(0,d.createServerReference)("609b0f64326b57ea1ec7fa8deb11f4c5bce934e2a1",d.callServer,void 0,d.findSourceMapURL,"listCredentialStores")},15485:(a,b,c)=>{c.d(b,{S:()=>g,U:()=>h});var d=c(29991);c(58415);var e=c(8703),f=c(45796);async function g(a,b){return(0,f.M2)(a),(0,f.nt)(b),(await (0,e.J)(`tenants/${a}/projects/${b}/credential-stores`)).data}async function h({tenantId:a,projectId:b,storeId:c,key:d,value:g,metadata:h}){return(0,f.M2)(a),(0,f.nt)(b),(await (0,e.J)(`tenants/${a}/projects/${b}/credential-stores/${c}/credentials`,{method:"POST",body:JSON.stringify({key:d,value:g,metadata:h})})).data}(0,c(33451).D)([g,h]),(0,d.A)(g,"609b0f64326b57ea1ec7fa8deb11f4c5bce934e2a1",null),(0,d.A)(h,"4041517e8ba6abbb1167203c0c39d19787a0a206d9",null)},24703:(a,b,c)=>{c.d(b,{S:()=>h});var d=c(59111),e=c(32191),f=c(39108),g=c(42723);function h({className:a,...b}){return(0,d.jsx)(e.bL,{"data-slot":"checkbox",className:(0,g.cn)("peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",a),...b,children:(0,d.jsx)(e.C1,{"data-slot":"checkbox-indicator",className:"flex items-center justify-center text-current transition-none",children:(0,d.jsx)(f.A,{className:"size-3.5"})})})}},27159:(a,b,c)=>{c.d(b,{bq:()=>l,eb:()=>n,gC:()=>m,l6:()=>j,yv:()=>k});var d=c(59111),e=c(29477),f=c(67048),g=c(39108),h=c(25773),i=c(42723);function j({...a}){return(0,d.jsx)(e.bL,{"data-slot":"select",...a})}function k({...a}){return(0,d.jsx)(e.WT,{"data-slot":"select-value",...a})}function l({className:a,size:b="default",children:c,...g}){return(0,d.jsxs)(e.l9,{"data-slot":"select-trigger","data-size":b,className:(0,i.cn)("border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 font-normal normal-case",a),...g,children:[c,(0,d.jsx)(e.In,{asChild:!0,children:(0,d.jsx)(f.A,{className:"size-4 opacity-50"})})]})}function m({className:a,children:b,position:c="popper",...f}){return(0,d.jsx)(e.ZL,{children:(0,d.jsxs)(e.UC,{"data-slot":"select-content",className:(0,i.cn)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto scrollbar-thin scrollbar-thumb-muted-foreground/30 dark:scrollbar-thumb-muted-foreground/50 scrollbar-track-transparent rounded-md border shadow-md","popper"===c&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",a),position:c,...f,children:[(0,d.jsx)(o,{}),(0,d.jsx)(e.LM,{className:(0,i.cn)("p-1","popper"===c&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"),children:b}),(0,d.jsx)(p,{})]})})}function n({className:a,children:b,...c}){return(0,d.jsxs)(e.q7,{"data-slot":"select-item",className:(0,i.cn)("focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",a),...c,children:[(0,d.jsx)("span",{className:"absolute right-2 flex size-3.5 items-center justify-center",children:(0,d.jsx)(e.VF,{children:(0,d.jsx)(g.A,{className:"size-4"})})}),(0,d.jsx)(e.p4,{children:b})]})}function o({className:a,...b}){return(0,d.jsx)(e.PP,{"data-slot":"select-scroll-up-button",className:(0,i.cn)("flex cursor-default items-center justify-center py-1",a),...b,children:(0,d.jsx)(h.A,{className:"size-4"})})}function p({className:a,...b}){return(0,d.jsx)(e.wn,{"data-slot":"select-scroll-down-button",className:(0,i.cn)("flex cursor-default items-center justify-center py-1",a),...b,children:(0,d.jsx)(f.A,{className:"size-4"})})}},28905:(a,b,c)=>{c.d(b,{U:()=>n});var d=c(4558),e=c(485),f=c(14450),g=c(68156),h=c(59072),i=c(8092),j=c(60968),k=c(57805),l=c(45007),m=c(25623);function n({tenantId:a,projectId:b,onFinish:c}){let n=(0,e.useRouter)(),{PUBLIC_INKEEP_AGENTS_MANAGE_API_URL:o}=(0,h.y)(),{openNangoConnectHeadless:p}=(0,m.$)(),q=(0,f.useRef)(new Map),r=(0,f.useCallback)(d=>new Promise((e,f)=>{let g=q.current.get(d);g&&(g(),q.current.delete(d));try{let g=function({PUBLIC_INKEEP_AGENTS_MANAGE_API_URL:a,tenantId:b,projectId:c,id:d}){if(!b||"string"!=typeof b)throw Error("Invalid tenantId: must be a non-empty string");if(!d||"string"!=typeof d)throw Error("Invalid tool id: must be a non-empty string");if(!c||"string"!=typeof c)throw Error("Invalid projectId: must be a non-empty string");let e=/^[a-zA-Z0-9-_]+$/;if(!e.test(b))throw Error("Invalid tenantId format: only alphanumeric characters, hyphens, and underscores allowed");if(!e.test(d))throw Error("Invalid tool id format: only alphanumeric characters, hyphens, and underscores allowed");if(!e.test(c))throw Error("Invalid projectId format: only alphanumeric characters, hyphens, and underscores allowed");let f=`${a}/oauth/login?tenantId=${encodeURIComponent(b)}&projectId=${encodeURIComponent(c)}&toolId=${encodeURIComponent(d)}`;if(!f.startsWith(a))throw Error("Invalid OAuth URL generated");return f}({PUBLIC_INKEEP_AGENTS_MANAGE_API_URL:o,tenantId:a,projectId:b,id:d}),h=window.open(g,"oauth-popup","width=600,height=700,scrollbars=yes,resizable=yes,status=yes,location=yes");if(!h){let a=Error(`Failed to open popup for ${d} - blocked by browser`);console.error(a.message),f(a);return}let i=!1,j=(g,h)=>{i||(i=!0,window.removeEventListener("message",k),l&&clearInterval(l),clearTimeout(m),q.current.delete(d),g?(c?c(d):n.push(`/${a}/projects/${b}/mcp-servers/${d}`),e()):f(h||Error("OAuth login failed")))},k=a=>{"oauth-success"===a.data.type?j(!0):"oauth-error"===a.data.type&&j(!1,Error(a.data.error||"OAuth login failed"))};window.addEventListener("message",k);let l=null,m=setTimeout(()=>{i||(l=setInterval(()=>{try{h.closed&&j(!0)}catch{}},1e3))},3e3);q.current.set(d,()=>{j(!1,Error("OAuth login cancelled"))})}catch(a){f(a instanceof Error?a:Error("OAuth login failed"))}}),[o,a,b,c,n]),s=(0,f.useCallback)(async({toolId:e,mcpServerUrl:f,toolName:g})=>{let h=await p({mcpServerUrl:f,providerUniqueKey:`${(0,d.K_)(g)}_${e}`,providerDisplayName:g}),i={id:(0,l.$)(),name:`${g} OAuth Credential`,type:d.Ns.nango,credentialStoreId:"nango-default",retrievalParams:{connectionId:h.connectionId,providerConfigKey:h.providerConfigKey,provider:"mcp-generic",authMode:"OAUTH2"}},m=await (0,k.U)(a,b,i);await (0,j.Y)(a,b,e,{credentialReferenceId:m.id}),c?c(e):n.push(`/${a}/projects/${b}/mcp-servers/${e}`)},[p,c,n,a,b]);return{handleOAuthLogin:(0,f.useCallback)(async({toolId:c,mcpServerUrl:e,toolName:f})=>{try{let g=await (0,i.S)(a,b),h=g.some(a=>a.type===d.Ns.nango&&a.available),j=g.some(a=>a.type===d.Ns.keychain&&a.available);if(h)await s({toolId:c,mcpServerUrl:e,toolName:f});else if(j)await r(c);else throw Error("No credential store available. Please configure Nango or Keychain.")}catch(b){let a=b instanceof Error?b:Error("OAuth login failed");throw g.oR.error(a.message),a}},[a,b,s,r])}}},32191:(a,b,c)=>{c.d(b,{C1:()=>x,bL:()=>v});var d=c(14450),e=c(30181),f=c(57351),g=c(13254),h=c(40474),i=c(69602),j=c(4970),k=c(80844),l=c(24702),m=c(59111),n="Checkbox",[o,p]=(0,f.A)(n),[q,r]=o(n);function s(a){let{__scopeCheckbox:b,checked:c,children:e,defaultChecked:f,disabled:g,form:i,name:j,onCheckedChange:k,required:l,value:o="on",internal_do_not_use_render:p}=a,[r,s]=(0,h.i)({prop:c,defaultProp:f??!1,onChange:k,caller:n}),[t,u]=d.useState(null),[v,w]=d.useState(null),x=d.useRef(!1),y=!t||!!i||!!t.closest("form"),z={checked:r,disabled:g,setChecked:s,control:t,setControl:u,name:j,form:i,value:o,hasConsumerStoppedPropagationRef:x,required:l,defaultChecked:!A(f)&&f,isFormControl:y,bubbleInput:v,setBubbleInput:w};return(0,m.jsx)(q,{scope:b,...z,children:"function"==typeof p?p(z):e})}var t="CheckboxTrigger",u=d.forwardRef(({__scopeCheckbox:a,onKeyDown:b,onClick:c,...f},h)=>{let{control:i,value:j,disabled:k,checked:n,required:o,setControl:p,setChecked:q,hasConsumerStoppedPropagationRef:s,isFormControl:u,bubbleInput:v}=r(t,a),w=(0,e.s)(h,p),x=d.useRef(n);return d.useEffect(()=>{let a=i?.form;if(a){let b=()=>q(x.current);return a.addEventListener("reset",b),()=>a.removeEventListener("reset",b)}},[i,q]),(0,m.jsx)(l.sG.button,{type:"button",role:"checkbox","aria-checked":A(n)?"mixed":n,"aria-required":o,"data-state":B(n),"data-disabled":k?"":void 0,disabled:k,value:j,...f,ref:w,onKeyDown:(0,g.mK)(b,a=>{"Enter"===a.key&&a.preventDefault()}),onClick:(0,g.mK)(c,a=>{q(a=>!!A(a)||!a),v&&u&&(s.current=a.isPropagationStopped(),s.current||a.stopPropagation())})})});u.displayName=t;var v=d.forwardRef((a,b)=>{let{__scopeCheckbox:c,name:d,checked:e,defaultChecked:f,required:g,disabled:h,value:i,onCheckedChange:j,form:k,...l}=a;return(0,m.jsx)(s,{__scopeCheckbox:c,checked:e,defaultChecked:f,disabled:h,required:g,onCheckedChange:j,name:d,form:k,value:i,internal_do_not_use_render:({isFormControl:a})=>(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(u,{...l,ref:b,__scopeCheckbox:c}),a&&(0,m.jsx)(z,{__scopeCheckbox:c})]})})});v.displayName=n;var w="CheckboxIndicator",x=d.forwardRef((a,b)=>{let{__scopeCheckbox:c,forceMount:d,...e}=a,f=r(w,c);return(0,m.jsx)(k.C,{present:d||A(f.checked)||!0===f.checked,children:(0,m.jsx)(l.sG.span,{"data-state":B(f.checked),"data-disabled":f.disabled?"":void 0,...e,ref:b,style:{pointerEvents:"none",...a.style}})})});x.displayName=w;var y="CheckboxBubbleInput",z=d.forwardRef(({__scopeCheckbox:a,...b},c)=>{let{control:f,hasConsumerStoppedPropagationRef:g,checked:h,defaultChecked:k,required:n,disabled:o,name:p,value:q,form:s,bubbleInput:t,setBubbleInput:u}=r(y,a),v=(0,e.s)(c,u),w=(0,i.Z)(h),x=(0,j.X)(f);d.useEffect(()=>{if(!t)return;let a=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set,b=!g.current;if(w!==h&&a){let c=new Event("click",{bubbles:b});t.indeterminate=A(h),a.call(t,!A(h)&&h),t.dispatchEvent(c)}},[t,w,h,g]);let z=d.useRef(!A(h)&&h);return(0,m.jsx)(l.sG.input,{type:"checkbox","aria-hidden":!0,defaultChecked:k??z.current,required:n,disabled:o,name:p,value:q,form:s,...b,tabIndex:-1,ref:v,style:{...b.style,...x,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});function A(a){return"indeterminate"===a}function B(a){return A(a)?"indeterminate":a?"checked":"unchecked"}z.displayName=y},44667:(a,b,c)=>{c.d(b,{X:()=>e});var d=c(90147);let e=(0,d.createServerReference)("70d3ce6da284dc32c386ebae20b9854263b31bbe23",d.callServer,void 0,d.findSourceMapURL,"createMCPTool")},49153:(a,b,c)=>{c.d(b,{Wy:()=>k,XL:()=>i,YU:()=>j,iu:()=>g,xl:()=>h});var d=c(29991);c(58415);var e=c(8703),f=c(45796);async function g(a,b,c=1,d=50,h){(0,f.M2)(a),(0,f.nt)(b);let i=new URLSearchParams({page:c.toString(),limit:d.toString()});return h&&i.append("status",h),(await (0,e.J)(`tenants/${a}/projects/${b}/tools?${i}`)).data.filter(a=>a.config?.type==="mcp")}async function h(a,b,c){return(0,f.M2)(a),(0,f.nt)(b),(await (0,e.J)(`tenants/${a}/projects/${b}/tools/${c}`)).data}async function i(a,b,c){return(0,f.M2)(a),(0,f.nt)(b),(await (0,e.J)(`tenants/${a}/projects/${b}/tools`,{method:"POST",body:JSON.stringify(c)})).data}async function j(a,b,c,d){return(0,f.M2)(a),(0,f.nt)(b),(await (0,e.J)(`tenants/${a}/projects/${b}/tools/${c}`,{method:"PUT",body:JSON.stringify(d)})).data}async function k(a,b,c){(0,f.M2)(a),(0,f.nt)(b),await (0,e.J)(`tenants/${a}/projects/${b}/tools/${c}`,{method:"DELETE"})}(0,c(33451).D)([g,h,i,j,k]),(0,d.A)(g,"7c6a6abae6912c4a5d5ab84d77644bc5d65b24da80",null),(0,d.A)(h,"70823f5b9e638b8b467722a1e2b757142043269ead",null),(0,d.A)(i,"70d3ce6da284dc32c386ebae20b9854263b31bbe23",null),(0,d.A)(j,"781dde6fe8d492b94e4b7dcb90fb8fdd1193bca4a2",null),(0,d.A)(k,"70d9546f45945500a2d2f1573c188628b3e5cffb78",null)},50035:(a,b,c)=>{c.d(b,{MCPServerForm:()=>I});var d=c(59111),e=c(35197),f=c(4558),g=c(485),h=c(14450),i=c(51820),j=c(68156),k=c(17130),l=c(55124),m=c(2856),n=c(93755),o=c(96032),p=c(93622),q=c(35229),r=c(28905),s=c(90147);let t=(0,s.createServerReference)("40c6eda21386647aa1af6a64c19d5461a377904d59",s.callServer,void 0,s.findSourceMapURL,"detectOAuthServerAction");var u=c(96365),v=c(44667),w=c(60968),x=c(45007),y=c(91740),z=c(39108),A=c(12463),B=c(24703),C=c(37671);function D({control:a,name:b,label:c,availableTools:e=[],description:f,disabled:g=!1}){let{field:{value:j,onChange:k},fieldState:{error:l}}=(0,i.as)({name:b,control:a}),n=(0,h.useMemo)(()=>"object"==typeof j&&null!==j&&"type"in j?"all"===j.type?{type:"all"}:"selective"===j.type&&Array.isArray(j.tools)?{type:"selective",tools:j.tools}:{type:"selective",tools:[]}:{type:"selective",tools:[]},[j]),o=()=>{k({type:"all"})},q=()=>{k({type:"selective",tools:[]})},r=(a,b)=>{if("all"===n.type){let c=e.map(a=>a.name).filter(b=>b!==a);k({type:"selective",tools:b?[...c,a]:c})}else k({type:"selective",tools:b?[...n.tools.filter(b=>b!==a),a]:n.tools.filter(b=>b!==a)})},s=()=>{switch(n.type){case"all":return e.length;case"selective":return n.tools.filter(a=>e.some(b=>b.name===a)).length;default:return 0}},t=s()===e.length;return(0,d.jsx)(p.zB,{control:a,name:b,render:()=>(0,d.jsxs)(p.eI,{children:[(0,d.jsxs)(p.lR,{children:[c,(0,d.jsx)(A.E,{variant:"code",className:"border-none px-2 text-[10px] text-muted-foreground",children:s()})]}),f&&(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:f}),(0,d.jsxs)("div",{className:"mt-2",children:[0===e.length&&(0,d.jsx)("div",{className:"text-sm text-muted-foreground border rounded-md p-3 py-2 bg-gray-100/80 dark:bg-sidebar",children:"No tools available from this server"}),e.length>0&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 justify-between py-3 px-6 rounded-t-lg border border-b-0",children:[(0,d.jsxs)("div",{className:"text-sm",children:[s()," ",(0,d.jsxs)("span",{className:"text-gray-400 dark:text-white/40",children:["/ ",e.length," tool",1===e.length?"":"s"]})]}),t?(0,d.jsxs)(m.$,{type:"button",variant:"outline",size:"sm",onClick:q,disabled:g,children:[(0,d.jsx)(y.A,{className:"w-4 h-4 text-muted-foreground"}),"Deselect all"]}):(0,d.jsxs)(m.$,{type:"button",variant:"outline",size:"sm",onClick:o,disabled:g,children:[(0,d.jsx)(z.A,{className:"w-4 h-4 text-muted-foreground"}),"Select all"]})]}),(0,d.jsx)("div",{className:"max-h-96 overflow-y-auto border rounded-lg rounded-t-none scrollbar-thin scrollbar-thumb-muted-foreground/30 dark:scrollbar-thumb-muted-foreground/50 scrollbar-track-transparent",children:e.map(a=>{let b=(a=>{switch(n.type){case"all":return e.some(b=>b.name===a);case"selective":return n.tools.includes(a)&&e.some(b=>b.name===a);default:return!1}})(a.name);return(0,d.jsxs)("div",{className:"space-y-2 flex items-start gap-6 border-b last:border-b-0 py-4 px-6 relative",children:[(0,d.jsx)("div",{className:"flex items-center h-[22px]",children:(0,d.jsx)(B.S,{checked:b,disabled:g,className:"mb-0",onClick:()=>!g&&r(a.name,!b)})}),(0,d.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,d.jsx)(A.E,{variant:b?"primary":"code",className:`font-mono font-medium text-xs cursor-pointer transition-colors ${g?"opacity-50 cursor-not-allowed":""}`,onClick:()=>!g&&r(a.name,!b),children:a.name}),(0,d.jsxs)(C.Tooltip,{delayDuration:800,children:[(0,d.jsx)(C.TooltipTrigger,{asChild:!0,children:(0,d.jsx)("p",{className:"text-sm text-muted-foreground line-clamp-1",children:a.description})}),(0,d.jsx)(C.TooltipContent,{side:"bottom",align:"start",children:a.description})]})]})]},a.name)})})]})]}),(0,d.jsx)(p.C5,{children:l?.message})]})})}var E=c(34576);let F=E.discriminatedUnion("type",[E.object({type:E.literal("all")}),E.object({type:E.literal("selective"),tools:E.array(E.string())})]),G=E.object({name:E.string().min(1,"Name is required."),config:E.object({type:E.literal("mcp"),mcp:E.object({server:E.object({url:E.string().url("Must be a valid URL.")}),transport:E.object({type:E.nativeEnum(f.o7)}),toolsConfig:F.default({type:"all"})})}),credentialReferenceId:E.string().nullish(),imageUrl:E.string().optional()}),H={name:"",config:{type:"mcp",mcp:{server:{url:""},transport:{type:f.o7.streamableHttp},toolsConfig:{type:"all"}}},imageUrl:"",credentialReferenceId:"oauth"};function I({initialData:a,mode:b="create",tool:c,credentials:s,tenantId:y,projectId:z}){let A=(0,g.useRouter)(),[B,C]=(0,h.useState)(!1),[E,F]=(0,h.useState)(!1),I=(0,i.mN)({resolver:(0,e.u)(G),defaultValues:{...H,...a}}),{handleOAuthLogin:J}=(0,r.U)({tenantId:y,projectId:z}),{isSubmitting:K}=I.formState,L=async a=>{try{if("oauth"===a.credentialReferenceId){let b=await t(a.config.mcp.server.url);if(!b.success)return void j.oR.error(b.error||"Failed to detect OAuth support");if(!b.data)return void j.oR.error("This MCP server does not support OAuth authentication. Please select a different credential.");let c={id:(0,x.$)(),name:a.name,config:{type:"mcp",mcp:{server:{url:a.config.mcp.server.url},transport:{type:a.config.mcp.transport.type}}},credentialReferenceId:null,imageUrl:a.imageUrl},d=await (0,v.X)(y,z,c);J({toolId:d.id,mcpServerUrl:a.config.mcp.server.url,toolName:a.name});return}let d={...a,credentialReferenceId:"none"===a.credentialReferenceId?null:a.credentialReferenceId,config:{...a.config,mcp:{...a.config.mcp,activeTools:(a=>{if("all"===a.type)return;let b=c?.availableTools?.map(a=>a.name)||[];return a.tools.filter(a=>b.includes(a))})(a.config.mcp.toolsConfig)}}};if("update"===b&&c)await (0,w.Y)(y,z,c.id,d),j.oR.success("MCP server updated successfully"),A.push(`/${y}/projects/${z}/mcp-servers/${c.id}`);else{let a=await (0,v.X)(y,z,{...d,id:(0,x.$)()});j.oR.success("MCP server created successfully"),A.push(`/${y}/projects/${z}/mcp-servers/${a.id}`)}}catch(a){console.error(`Failed to ${b} MCP tool:`,a),j.oR.error(`Failed to ${b} MCP server. Please try again.`)}},M=async()=>{if(c){F(!0);try{let a=await (0,u.o)(y,z,c.id,!1);a.success?(C(!1),j.oR.success("MCP server deleted."),A.push(`/${y}/projects/${z}/mcp-servers`)):j.oR.error(a.error||"Failed to delete MCP server.")}finally{F(!1)}}};return(0,d.jsxs)(o.lG,{open:B,onOpenChange:C,children:[(0,d.jsx)(p.lV,{...I,children:(0,d.jsxs)("form",{onSubmit:I.handleSubmit(L),className:"space-y-8",children:[(0,d.jsx)(k.a,{control:I.control,name:"name",label:"Name",placeholder:"MCP server",isRequired:!0}),(0,d.jsx)(k.a,{control:I.control,name:"config.mcp.server.url",label:"URL",placeholder:"https://api.example.com/mcp",isRequired:!0}),(0,d.jsx)(l.U,{control:I.control,selectTriggerClassName:"w-full",name:"config.mcp.transport.type",label:"Transport type",placeholder:"Select transport type",options:[{value:f.o7.streamableHttp,label:"Streamable HTTP"},{value:f.o7.sse,label:"Server-Sent Events (SSE)"}]}),(0,d.jsx)(k.a,{control:I.control,name:"imageUrl",label:"Image URL (optional)",placeholder:"https://example.com/icon.png or data:image/png;base64,..."}),(0,d.jsxs)("div",{className:"space-y-3",children:[(0,d.jsx)(l.U,{control:I.control,selectTriggerClassName:"w-full",name:"credentialReferenceId",label:"Credential",placeholder:"Select a credential",options:[{value:"oauth",label:"OAuth"},{value:"none",label:"No Authentication"},...s.map(a=>({value:a.id,label:a.name}))]}),(0,d.jsx)(q.n,{title:"How this works",children:(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsxs)("p",{children:["Select ",(0,d.jsx)("code",{className:"bg-background px-1.5 py-0.5 rounded border",children:"OAuth"})," ",'to authenticate with the MCP server\'s OAuth flow, which will start after you click "Create".']}),(0,d.jsxs)("p",{children:["Select"," ",(0,d.jsx)("code",{className:"bg-background px-1.5 py-0.5 rounded border",children:"No Authentication"})," ","to skip authentication (i.e. none required or add a credential later)."]}),(0,d.jsx)("p",{children:"Or select from the existing credentials you have already created."})]})})]}),"update"===b&&(0,d.jsx)(D,{control:I.control,name:"config.mcp.toolsConfig",label:"Tools",availableTools:c?.availableTools||[],description:"Select which tools should be enabled for this MCP server"}),(0,d.jsxs)("div",{className:"flex w-full justify-between",children:[(0,d.jsx)(m.$,{type:"submit",disabled:K,children:"update"===b?"Save":"Create"}),"update"===b&&c&&(0,d.jsx)(o.zM,{asChild:!0,children:(0,d.jsx)(m.$,{type:"button",variant:"destructive-outline",children:"Delete Server"})})]})]})}),B&&c&&(0,d.jsx)(n.J,{itemName:c.name||"this MCP server",isSubmitting:E,onDelete:M})]})}},53710:(a,b,c)=>{c.d(b,{A:()=>d});let d=(0,c(55272).A)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]])},55124:(a,b,c)=>{c.d(b,{U:()=>g});var d=c(59111),e=c(27159),f=c(71771);function g({control:a,name:b,label:c,placeholder:g,options:h,disabled:i=!1,selectTriggerClassName:j,description:k,isRequired:l=!1}){return(0,d.jsx)(f.u,{control:a,name:b,label:c,description:k,isRequired:l,children:a=>(0,d.jsxs)(e.l6,{onValueChange:a.onChange,defaultValue:a.value,disabled:i,children:[(0,d.jsx)(e.bq,{disabled:i,className:j,children:(0,d.jsx)(e.yv,{placeholder:g})}),(0,d.jsx)(e.gC,{children:h.map(a=>(0,d.jsx)(e.eb,{value:a.value,disabled:a.disabled,children:a.label},a.value))})]})})}},60968:(a,b,c)=>{c.d(b,{Y:()=>e});var d=c(90147);let e=(0,d.createServerReference)("781dde6fe8d492b94e4b7dcb90fb8fdd1193bca4a2",d.callServer,void 0,d.findSourceMapURL,"updateMCPTool")},68932:(a,b,c)=>{c.d(b,{Q1:()=>i,cZ:()=>k,oU:()=>j});var d=c(29991);c(58415);var e=c(47990),f=c(83248),g=c(49153),h=c(36608);async function i(a,b){try{let c=await (0,g.iu)(a,b);return{success:!0,data:c}}catch(a){if(a instanceof h.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 j(a,b,c,d=!0){try{return await (0,g.Wy)(a,b,c),d&&(0,f.revalidatePath)(`/${a}/projects/${b}/mcp-servers`,"page"),{success:!0}}catch(a){if(a instanceof h.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 k(a){try{let b=await (0,e.Rt)({serverUrl:a});return{success:!0,data:b}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to detect OAuth support",code:"oauth_detection_failed"}}}(0,c(33451).D)([i,j,k]),(0,d.A)(i,"608f975a4a3486d6ad2174118064daa2dbeec3b31d",null),(0,d.A)(j,"78fa0d256100d71f461e92edebc162b7e7a7ecd43a",null),(0,d.A)(k,"40c6eda21386647aa1af6a64c19d5461a377904d59",null)},81097:(a,b,c)=>{c.d(b,{$Y:()=>g,GO:()=>i,K3:()=>h,h9:()=>k,nZ:()=>j});var d=c(1274);c(2082);var e=c(53842),f=c(41979);async function g(a,b,c=1,d=50){(0,f.M2)(a),(0,f.nt)(b);let h=new URLSearchParams({page:c.toString(),limit:d.toString()});return(await (0,e.J)(`tenants/${a}/projects/${b}/credentials?${h}`)).data}async function h(a,b,c){return(0,f.M2)(a),(0,f.nt)(b),(await (0,e.J)(`tenants/${a}/projects/${b}/credentials/${c}`)).data}async function i(a,b,c){return(0,f.M2)(a),(0,f.nt)(b),(await (0,e.J)(`tenants/${a}/projects/${b}/credentials`,{method:"POST",body:JSON.stringify(c)})).data}async function j(a,b,c,d){return(0,f.M2)(a),(0,f.nt)(b),(await (0,e.J)(`tenants/${a}/projects/${b}/credentials/${c}`,{method:"PUT",body:JSON.stringify(d)})).data}async function k(a,b,c){(0,f.M2)(a),(0,f.nt)(b),await (0,e.J)(`tenants/${a}/projects/${b}/credentials/${c}`,{method:"DELETE"})}(0,c(95454).D)([g,h,i,j,k]),(0,d.A)(g,"78d23e39df59a9fff20fe9e0b5247ee581cf7b3004",null),(0,d.A)(h,"7031aa3a53dbf67e6229697845a774818c914117e0",null),(0,d.A)(i,"700c145cfdb25e3f2f6b46f7369dac0907de52a86f",null),(0,d.A)(j,"78e2ccd5b5e74e55576a6afcb06435330312f02486",null),(0,d.A)(k,"70bdceeac5821f562e54bc1d0265d7307e65cb0808",null)},93755:(a,b,c)=>{c.d(b,{J:()=>h});var d=c(59111),e=c(53710),f=c(2856),g=c(96032);function h({itemName:a,isSubmitting:b,onDelete:c,customTitle:h,customDescription:i}){let j=async()=>{await c()};return(0,d.jsxs)(g.Cf,{children:[(0,d.jsx)(g.L3,{children:h||`Delete ${a||"this item"}`}),(0,d.jsx)(g.rr,{children:i||`Are you sure you want to delete ${a||"this item"}? This action cannot be undone.`}),(0,d.jsxs)(g.Es,{children:[(0,d.jsx)(g.HM,{asChild:!0,children:(0,d.jsx)(f.$,{variant:"outline",children:"Cancel"})}),(0,d.jsx)(f.$,{variant:"destructive",onClick:j,disabled:b,children:b?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(e.A,{className:"size-4 animate-spin"})," Deleting..."]}):"Delete"})]})]})}},96365:(a,b,c)=>{c.d(b,{o:()=>e});var d=c(90147);let e=(0,d.createServerReference)("78fa0d256100d71f461e92edebc162b7e7a7ecd43a",d.callServer,void 0,d.findSourceMapURL,"deleteToolAction")}};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";exports.id=4658,exports.ids=[4658],exports.modules={4599:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{ArtifactComponentForm:()=>y});var e=c(59111),f=c(35197),g=c(485),h=c(14450),i=c(51820),j=c(68156),k=c(17130),l=c(16426),m=c(56019),n=c(2856),o=c(96032),p=c(93622),q=c(35283),r=c(50557),s=c(61291),t=c(42723),u=c(84015),v=c(68933),w=c(59245),x=a([m]);function y({id:a,tenantId:b,projectId:c,initialData:d}){let[x,y]=(0,h.useState)(!1),z=(0,i.mN)({resolver:(0,f.u)(w.z),defaultValues:(a=>{if(!a)return v.g;let b={...a};return b.props&&(b.props=(0,t.S_)(b.props)),b})(d)}),{isSubmitting:A}=z.formState,B=(0,g.useRouter)();(0,q.S)({form:z,nameField:"name",idField:"id",isEditing:!!a});let C=async d=>{try{let e={...d};if(void 0===e.props&&(e.props=null),a){let a=await (0,r.X)(b,c,e);if(!a.success)return void j.oR.error(a.error||"Failed to update artifact.");j.oR.success("Artifact updated.")}else{let a=await (0,s.o)(b,c,e);if(!a.success)return void j.oR.error(a.error||"Failed to create artifact");j.oR.success("Artifact created."),B.push(`/${b}/projects/${c}/artifacts`)}}catch(b){console.error("Error submitting artifact:",b);let a=b instanceof Error?b.message:"An unexpected error occurred.";j.oR.error(a)}};return(0,e.jsxs)(o.lG,{open:x,onOpenChange:y,children:[(0,e.jsx)(p.lV,{...z,children:(0,e.jsxs)("form",{onSubmit:z.handleSubmit(C),className:"space-y-8",children:[(0,e.jsx)(k.a,{control:z.control,name:"name",label:"Name",placeholder:"Document Artifact",isRequired:!0}),(0,e.jsx)(k.a,{control:z.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,e.jsx)(l.K,{control:z.control,name:"description",label:"Description",placeholder:"Structured factual information extracted from search results",className:"min-h-[80px]",isRequired:!0}),(0,e.jsx)(m.S,{control:z.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,e.jsxs)("div",{className:"flex w-full justify-between",children:[(0,e.jsx)(n.$,{type:"submit",disabled:A,children:"Save"}),a&&(0,e.jsx)(o.zM,{asChild:!0,children:(0,e.jsx)(n.$,{type:"button",variant:"destructive-outline",children:"Delete Artifact"})})]})]})}),x&&a&&(0,e.jsx)(u.W,{artifactComponentId:a,artifactComponentName:z.getValues("name"),setIsOpen:y,redirectOnDelete:!0})]})}m=(x.then?(await x)():x)[0],d()}catch(a){d(a)}})},44733:(a,b,c)=>{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")},50557:(a,b,c)=>{c.d(b,{X:()=>e});var d=c(90147);let e=(0,d.createServerReference)("7066d7227ca4d44c8ba82b0d562530c15834bcc7f2",d.callServer,void 0,d.findSourceMapURL,"updateArtifactComponentAction")},52604:(a,b,c)=>{c.r(b),c.d(b,{"4056ab5d540eef7bed22fd7d3970e1a3f460972720":()=>d.bW,"601746a8d191af5a00c4a9354b39f0be7989c22278":()=>d.Dv,"606ef7aeaf73140ba7f82515c4874b060d897c0024":()=>d.gL,"60abc11c22a559acaaeca8fe51b81499487e17c9ec":()=>d.qf,"60e28212f827941eb6f32c02fbd264192c67f5ed4d":()=>p,"7066959008eea0f34264bee273bf4fb4766bd21534":()=>s,"7066d7227ca4d44c8ba82b0d562530c15834bcc7f2":()=>r,"70a0c6d38e0f8433fdd0a06796e000b51cb2ccf3cb":()=>q,"70fb690b6aa89e97170e83f3a2bd93cf2cdd774c10":()=>d.Tg});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,"6055117d927767c90703964d4bd513b2e82e1fcd7f",null),(0,e.A)(k,"706b5d8924fd0c7c928d8e9e7dc97937b591b267ae",null),(0,e.A)(l,"707307e9e0b9fb1bf1033a6c92958017cf805e80a0",null),(0,e.A)(m,"70c2837a31b2085293cd9e4ac4afe5102268576207",null),(0,e.A)(n,"70240377abfa2f873e286f4b56b4aa2f56d06e3e28",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`),{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,"60e28212f827941eb6f32c02fbd264192c67f5ed4d",null),(0,e.A)(q,"70a0c6d38e0f8433fdd0a06796e000b51cb2ccf3cb",null),(0,e.A)(r,"7066d7227ca4d44c8ba82b0d562530c15834bcc7f2",null),(0,e.A)(s,"7066959008eea0f34264bee273bf4fb4766bd21534",null)},56019:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{S:()=>i});var e=c(59111),f=c(71771),g=c(76394),h=a([g]);function i({control:a,name:b,label:c="JSON Schema",placeholder:d,disabled:h,description:i,readOnly:j,isRequired:k=!1}){return(0,e.jsx)(f.u,{control:a,name:b,label:c,description:i,isRequired:k,children:a=>(0,e.jsx)(g.$,{placeholder:d,...a,value:a.value||"",onChange:a.onChange,readOnly:j,disabled:h})})}g=(h.then?(await h)():h)[0],d()}catch(a){d(a)}})},59245:(a,b,c)=>{c.d(b,{z:()=>g});var d=c(34576),e=c(80974),f=c(62503);let g=d.object({id:f.f,name:d.string().min(1,"Name is required."),description:d.string().min(1,"Description is required."),props:d.union([d.string(),d.null(),d.undefined()]).transform((a,b)=>{if(a&&""!==a&&null!==a)try{let c=JSON.parse(a),f=(0,e._O)(a);if(!f.isValid){let a=f.errors[0]?.message||"Invalid JSON schema";return b.addIssue({code:d.ZodIssueCode.custom,message:a}),d.NEVER}return c}catch(a){return b.addIssue({code:d.ZodIssueCode.custom,message:(0,e.SR)(a)}),d.NEVER}}).optional()})},61291:(a,b,c)=>{c.d(b,{o:()=>e});var d=c(90147);let e=(0,d.createServerReference)("70a0c6d38e0f8433fdd0a06796e000b51cb2ccf3cb",d.callServer,void 0,d.findSourceMapURL,"createArtifactComponentAction")},62503:(a,b,c)=>{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.")},68933:(a,b,c)=>{c.d(b,{g:()=>d});let d={id:"",name:"",description:"",props:void 0}},84015:(a,b,c)=>{c.d(b,{W:()=>k});var d=c(59111),e=c(485),f=c(14450),g=c(68156),h=c(93755),i=c(90147);let j=(0,i.createServerReference)("7066959008eea0f34264bee273bf4fb4766bd21534",i.callServer,void 0,i.findSourceMapURL,"deleteArtifactComponentAction");function k({artifactComponentId:a,artifactComponentName:b,setIsOpen:c,redirectOnDelete:i=!1}){let[k,l]=(0,f.useState)(!1),m=(0,e.useRouter)(),{tenantId:n,projectId:o}=(0,e.useParams)(),p=async()=>{l(!0);try{let b=await j(n,o,a);b.success?(c(!1),g.oR.success("Artifact deleted."),i&&m.push(`/${n}/projects/${o}/artifacts`)):g.oR.error(b.error)}finally{l(!1)}};return(0,d.jsx)(h.J,{itemName:b||"this artifact",isSubmitting:k,onDelete:p})}},93056:(a,b,c)=>{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}`))})]})})}},93755:(a,b,c)=>{c.d(b,{J:()=>h});var d=c(59111),e=c(53710),f=c(2856),g=c(96032);function h({itemName:a,isSubmitting:b,onDelete:c,customTitle:h,customDescription:i}){let j=async()=>{await c()};return(0,d.jsxs)(g.Cf,{children:[(0,d.jsx)(g.L3,{children:h||`Delete ${a||"this item"}`}),(0,d.jsx)(g.rr,{children:i||`Are you sure you want to delete ${a||"this item"}? This action cannot be undone.`}),(0,d.jsxs)(g.Es,{children:[(0,d.jsx)(g.HM,{asChild:!0,children:(0,d.jsx)(f.$,{variant:"outline",children:"Cancel"})}),(0,d.jsx)(f.$,{variant:"destructive",onClick:j,disabled:b,children:b?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(e.A,{className:"size-4 animate-spin"})," Deleting..."]}):"Delete"})]})]})}}};
|