flujo-ai 3.10.0 → 3.12.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.
- package/.next/BUILD_ID +1 -1
- package/.next/app-build-manifest.json +173 -173
- package/.next/app-path-routes-manifest.json +14 -14
- package/.next/build-manifest.json +5 -5
- package/.next/prerender-manifest.json +15 -15
- package/.next/react-loadable-manifest.json +7 -7
- package/.next/server/app/_not-found/page.js +2 -2
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +1 -1
- package/.next/server/app/api/backup/route.js +1 -1
- package/.next/server/app/api/backup/route.js.nft.json +1 -1
- package/.next/server/app/api/backup/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/browse/route.js +1 -2
- package/.next/server/app/api/browse/route.js.nft.json +1 -1
- package/.next/server/app/api/browse/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/cwd/route.js +1 -2
- package/.next/server/app/api/cwd/route.js.nft.json +1 -1
- package/.next/server/app/api/cwd/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/encryption/secure/route.js +1 -1
- package/.next/server/app/api/encryption/secure/route.js.nft.json +1 -1
- package/.next/server/app/api/encryption/secure/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/env/route.js +2 -2
- package/.next/server/app/api/env/route.js.nft.json +1 -1
- package/.next/server/app/api/env/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/[id]/route.js +1 -1
- package/.next/server/app/api/flow/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/prompt-renderer/route.js +2 -2
- package/.next/server/app/api/flow/prompt-renderer/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/prompt-renderer/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/route.js +1 -1
- package/.next/server/app/api/flow/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/git/route.js +4 -5
- package/.next/server/app/api/git/route.js.nft.json +1 -1
- package/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/init/route.js +1 -1
- package/.next/server/app/api/init/route.js.nft.json +1 -1
- package/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/cancel/route.js +2 -2
- package/.next/server/app/api/mcp/cancel/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/get/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/read/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/status/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/status/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/route.js +1 -1
- package/.next/server/app/api/mcp/servers/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/test-connection/route.js +1 -1
- package/.next/server/app/api/mcp/test-connection/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/test-connection/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/test-connection/stream/route.js +1 -1
- package/.next/server/app/api/mcp/test-connection/stream/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/test-connection/stream/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp-registry/route.js +1 -2
- package/.next/server/app/api/mcp-registry/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp-registry/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp-registry/spotlight/route.js +1 -1
- package/.next/server/app/api/mcp-registry/spotlight/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp-registry/spotlight/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/model/[id]/route.js +1 -1
- package/.next/server/app/api/model/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/model/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/model/provider/route.js +2 -2
- package/.next/server/app/api/model/provider/route.js.nft.json +1 -1
- package/.next/server/app/api/model/provider/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/model/route.js +1 -1
- package/.next/server/app/api/model/route.js.nft.json +1 -1
- package/.next/server/app/api/model/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/model/test/route.js +2 -2
- package/.next/server/app/api/model/test/route.js.nft.json +1 -1
- package/.next/server/app/api/model/test/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/oauth/callback/route.js +2 -2
- package/.next/server/app/api/oauth/callback/route.js.nft.json +1 -1
- package/.next/server/app/api/oauth/callback/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/oauth/initiate/route.js +2 -2
- package/.next/server/app/api/oauth/initiate/route.js.nft.json +1 -1
- package/.next/server/app/api/oauth/initiate/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/oauth/reset/route.js +2 -2
- package/.next/server/app/api/oauth/reset/route.js.nft.json +1 -1
- package/.next/server/app/api/oauth/reset/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/[id]/route.js +1 -1
- package/.next/server/app/api/planned-executions/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/planned-executions/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/[id]/run/route.js +1 -1
- package/.next/server/app/api/planned-executions/[id]/run/route.js.nft.json +1 -1
- package/.next/server/app/api/planned-executions/[id]/run/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/[id]/runs/route.js +1 -1
- package/.next/server/app/api/planned-executions/[id]/runs/route.js.nft.json +1 -1
- package/.next/server/app/api/planned-executions/[id]/runs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/preview-schedule/route.js +1 -2
- package/.next/server/app/api/planned-executions/preview-schedule/route.js.nft.json +1 -1
- package/.next/server/app/api/planned-executions/preview-schedule/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/route.js +1 -1
- package/.next/server/app/api/planned-executions/route.js.nft.json +1 -1
- package/.next/server/app/api/planned-executions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/restore/route.js +1 -1
- package/.next/server/app/api/restore/route.js.nft.json +1 -1
- package/.next/server/app/api/restore/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/storage/route.js +1 -1
- package/.next/server/app/api/storage/route.js.nft.json +1 -1
- package/.next/server/app/api/storage/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/update/route.js +1 -2
- package/.next/server/app/api/update/route.js.nft.json +1 -1
- package/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/webhooks/[id]/route.js +1 -1
- package/.next/server/app/api/webhooks/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/webhooks/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/chat/page.js +2 -2
- package/.next/server/app/chat/page.js.nft.json +1 -1
- package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
- package/.next/server/app/chat.html +1 -1
- package/.next/server/app/chat.rsc +2 -2
- package/.next/server/app/docs/page.js +1 -1
- package/.next/server/app/docs/page.js.nft.json +1 -1
- package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
- package/.next/server/app/docs.html +1 -1
- package/.next/server/app/docs.rsc +2 -2
- package/.next/server/app/executions/page.js +3 -3
- package/.next/server/app/executions/page.js.nft.json +1 -1
- package/.next/server/app/executions/page_client-reference-manifest.js +1 -1
- package/.next/server/app/executions.html +1 -1
- package/.next/server/app/executions.rsc +2 -2
- package/.next/server/app/flows/page.js +1 -1
- package/.next/server/app/flows/page.js.nft.json +1 -1
- package/.next/server/app/flows/page_client-reference-manifest.js +1 -1
- package/.next/server/app/flows.html +1 -1
- package/.next/server/app/flows.rsc +2 -2
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +2 -2
- package/.next/server/app/mcp/page.js +10 -10
- package/.next/server/app/mcp/page.js.nft.json +1 -1
- package/.next/server/app/mcp/page_client-reference-manifest.js +1 -1
- package/.next/server/app/mcp-flows/route.js +1 -1
- package/.next/server/app/mcp-flows/route.js.nft.json +1 -1
- package/.next/server/app/mcp-flows/route_client-reference-manifest.js +1 -1
- package/.next/server/app/mcp-proxy/[server]/route.js +1 -1
- package/.next/server/app/mcp-proxy/[server]/route.js.nft.json +1 -1
- package/.next/server/app/mcp-proxy/[server]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/mcp.html +1 -1
- package/.next/server/app/mcp.rsc +2 -2
- package/.next/server/app/models/page.js +3 -3
- package/.next/server/app/models/page.js.nft.json +1 -1
- package/.next/server/app/models/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page.js +1 -1
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/page.js +3 -3
- package/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings.html +1 -1
- package/.next/server/app/settings.rsc +2 -2
- package/.next/server/app/v1/chat/completions/route.js +2 -2
- package/.next/server/app/v1/chat/completions/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/completions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js +2 -2
- package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js +6 -6
- package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/events/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/route.js +2 -2
- package/.next/server/app/v1/chat/conversations/[conversationId]/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/route.js +2 -2
- package/.next/server/app/v1/chat/conversations/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/models/route.js +2 -2
- package/.next/server/app/v1/models/route.js.nft.json +1 -1
- package/.next/server/app/v1/models/route_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +14 -14
- package/.next/server/chunks/1050.js +1 -0
- package/.next/server/chunks/{5873.js → 1331.js} +3 -3
- package/.next/server/chunks/1373.js +1 -1
- package/.next/server/chunks/1403.js +2 -2
- package/.next/server/chunks/1692.js +1 -1
- package/.next/server/chunks/1746.js +1 -0
- package/.next/server/chunks/1905.js +2 -2
- package/.next/server/chunks/{5547.js → 2287.js} +2 -2
- package/.next/server/chunks/2776.js +1 -1
- package/.next/server/chunks/3984.js +4 -4
- package/.next/server/chunks/4706.js +1 -1
- package/.next/server/chunks/4729.js +2 -2
- package/.next/server/chunks/5389.js +10 -10
- package/.next/server/chunks/5504.js +17 -0
- package/.next/server/chunks/5558.js +1 -0
- package/.next/server/chunks/5587.js +1 -0
- package/.next/server/chunks/5734.js +6 -6
- package/.next/server/chunks/{9314.js → 5888.js} +3 -3
- package/.next/server/chunks/6936.js +3 -3
- package/.next/server/chunks/6996.js +3 -3
- package/.next/server/chunks/7214.js +1 -1
- package/.next/server/chunks/724.js +2 -2
- package/.next/server/chunks/7328.js +1 -0
- package/.next/server/chunks/7485.js +1 -0
- package/.next/server/chunks/7506.js +1 -1
- package/.next/server/chunks/{473.js → 7731.js} +2 -2
- package/.next/server/chunks/{4323.js → 8126.js} +1 -1
- package/.next/server/chunks/8434.js +1 -0
- package/.next/server/chunks/8739.js +2 -1
- package/.next/server/chunks/9343.js +1 -1
- package/.next/server/chunks/{120.js → 9387.js} +2 -2
- package/.next/server/chunks/{6637.js → 9688.js} +2 -2
- package/.next/server/chunks/9938.js +1 -1
- package/.next/server/chunks/9989.js +1 -1
- package/.next/server/functions-config-manifest.json +2 -2
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/pages-manifest.json +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/1226-af62e7a89fa9032e.js +1 -0
- package/.next/static/chunks/1979-e2d922370ecef69f.js +1 -0
- package/.next/static/chunks/2158-0d6bb5a428ed0688.js +1 -0
- package/.next/static/chunks/256-7f4847b6726c866c.js +1 -0
- package/.next/static/chunks/2709-29f91a54eef90221.js +1 -0
- package/.next/static/chunks/3217.1a7e24fd70294370.js +1 -0
- package/.next/static/chunks/3545.d3a512315a9fce3e.js +1 -0
- package/.next/static/chunks/539-8ddf886986877cfc.js +1 -0
- package/.next/static/chunks/6582-6735fdd6b42b5c35.js +1 -0
- package/.next/static/chunks/6902-cba4e59c4295b4a0.js +1 -0
- package/.next/static/chunks/8867-3f7163974605427b.js +1 -0
- package/.next/static/chunks/8989-401559d9f3bc80a0.js +1 -0
- package/.next/static/chunks/9164-36fedeb944fa71e9.js +1 -0
- package/.next/static/chunks/9195.294887f083b1a11b.js +1 -0
- package/.next/static/chunks/9414-3cd5c3976cba66b2.js +1 -0
- package/.next/static/chunks/9984-1ed094ea9f5b1f17.js +1 -0
- package/.next/static/chunks/app/chat/{page-aea8c8cbfa461e7f.js → page-5c838e3ce9d7a27d.js} +1 -1
- package/.next/static/chunks/app/docs/page-d4005b311ead55f2.js +1 -0
- package/.next/static/chunks/app/executions/{page-95fec57bf97ee809.js → page-870931839b84c8d5.js} +1 -1
- package/.next/static/chunks/app/flows/{page-7fe295069ccdb5fe.js → page-303dc4d2542567a6.js} +1 -1
- package/.next/static/chunks/app/mcp/page-5012a7e5b6366207.js +1 -0
- package/.next/static/chunks/app/models/page-4fc4d100a8b1d4b4.js +1 -0
- package/.next/static/chunks/app/page-6e18a8cd78b2050e.js +1 -0
- package/.next/static/chunks/app/settings/page-199cff457723ee57.js +1 -0
- package/.next/static/chunks/{webpack-6f17a022ac16e8bd.js → webpack-4015bd6f241940a1.js} +1 -1
- package/.next/trace +7 -7
- package/README.md +12 -5
- package/package.json +1 -1
- package/scripts/launch-next.mjs +17 -3
- package/.next/server/chunks/1381.js +0 -1
- package/.next/server/chunks/1555.js +0 -1
- package/.next/server/chunks/2181.js +0 -17
- package/.next/server/chunks/2372.js +0 -2
- package/.next/server/chunks/3426.js +0 -1
- package/.next/server/chunks/4379.js +0 -1
- package/.next/server/chunks/4989.js +0 -1
- package/.next/server/chunks/598.js +0 -1
- package/.next/server/chunks/6064.js +0 -1
- package/.next/static/chunks/1374-e084b3c40554288a.js +0 -1
- package/.next/static/chunks/1424-01898260211a09d0.js +0 -1
- package/.next/static/chunks/1811-8ee01cf37161913c.js +0 -1
- package/.next/static/chunks/2160-4d9f132965bc2a89.js +0 -1
- package/.next/static/chunks/2624-b985ab3eac1139c3.js +0 -1
- package/.next/static/chunks/3217.79ca74c918fc772c.js +0 -1
- package/.next/static/chunks/3403-7c5037145e384171.js +0 -1
- package/.next/static/chunks/3545.c3fbe14528517a75.js +0 -1
- package/.next/static/chunks/4205-b9e33afc7e96ecb9.js +0 -1
- package/.next/static/chunks/5648-2c6caf3d55f95e11.js +0 -1
- package/.next/static/chunks/7396-807a034f58b57712.js +0 -1
- package/.next/static/chunks/7458-4445e76668151564.js +0 -1
- package/.next/static/chunks/8215-a966f4c36f1ca174.js +0 -1
- package/.next/static/chunks/9164-81ca1a1bccdc5ed2.js +0 -1
- package/.next/static/chunks/9195.01a57af6d6cdf1a5.js +0 -1
- package/.next/static/chunks/app/docs/page-2a4cff7c40706a48.js +0 -1
- package/.next/static/chunks/app/mcp/page-0f923960004aa437.js +0 -1
- package/.next/static/chunks/app/models/page-f43476ea07d5b501.js +0 -1
- package/.next/static/chunks/app/page-471879d3918aeeb6.js +0 -1
- package/.next/static/chunks/app/settings/page-88f7e1b65a6681ec.js +0 -1
- /package/.next/static/{geAgl8xNIf0s1v2mfu4tE → 07vmuF5x2Bs8Xj1OeV0QV}/_buildManifest.js +0 -0
- /package/.next/static/{geAgl8xNIf0s1v2mfu4tE → 07vmuF5x2Bs8Xj1OeV0QV}/_ssgManifest.js +0 -0
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
<${a}>${b}</${a}>`}a.push(`<${b.function.name}>${d}
|
|
4
4
|
</${b.function.name}>`)}catch(c){q.error(`[flujo=false] Failed to parse arguments for external tool ${b.function.name}`,{args:b.function.arguments,error:c,convId:A}),a.push(`<${b.function.name}>
|
|
5
5
|
<error>Failed to parse arguments: ${c instanceof Error?c.message:String(c)}</error>
|
|
6
|
-
</${b.function.name}>`)}b.lastResponse={_flujo_xml_tools:a.join("\n\n")},d=i.g4,q.info(`[flujo=false] Prepared XML for external tools. Exiting loop for conv ${A}.`);break}q.warn(`[flujo=false] TOOL_CALL_ACTION received for conv ${A} but no tools found after classification. Treating as final.`),d=i.g4;break}q.warn(`TOOL_CALL_ACTION received for conv ${A} but no tool_calls found in last message. Treating as final.`),d=i.g4;break}let c=await e.FlowExecutor.resolveHandoff(b,d);if(c.isSuccessorEdge){q.info(`[Action Handling] Step ${F}: Handling Handoff Action (Edge ID) for conv ${A}`),q.info(`Handoff action received for conv ${A}. Edge: ${d}`);let a=c.targetNodeId;if("string"==typeof a&&a.length>0){let c,f=b.messages.length>0?b.messages[b.messages.length-1]:null;if(f?.role==="assistant"&&f.tool_calls){let e=f.tool_calls.find(a=>"function"===a.type&&("handoff"===a.function.name||a.function.name.startsWith("handoff_to_")));if(e){c=e.id,q.debug(`Found handoff tool call ID: ${c} for edge ${d}`);let f={id:crypto.randomUUID(),role:"tool",tool_call_id:c,content:JSON.stringify({status:"Handoff processed",targetNodeId:a}),timestamp:Date.now(),processNodeId:b.currentNodeId};b.messages.push(f),q.info(`Appended tool result message for handoff tool call ${c}`)}else q.warn(`Handoff action received for edge ${d}, but could not find corresponding handoff tool call in last assistant message.`)}else q.warn(`Handoff action received for edge ${d}, but the last message was not an assistant message with tool calls.`);J();let g=b.currentNodeId;if(b.currentNodeId=a,b.handoffRequested=void 0,G({type:"handoff",from:g?{nodeId:g}:void 0,toNodeId:a,edgeId:d}),q.info(`Transitioning conv ${A} to node ${b.currentNodeId}`),e.FlowExecutor.conversationStates.set(A,b),K){q.info(`[Debug Step] Paused after handoff to node ${b.currentNodeId} for conv ${A}.`),L();break}q.info(`Continuing loop for conv ${A} after handoff.`);continue}q.error(`Handoff failed for conv ${A}: Successor node for edge ${d} has invalid ID.`),b.lastResponse={success:!1,error:`Handoff failed: Target node for edge ${d} has invalid ID.`},d=i.O;break}if(d===i.E5){q.info(`[Action Handling] Step ${F}: Handling STAY_ON_NODE_ACTION for conv ${A}`),q.info(`Stay on node action received for conv ${A} at step ${F}`);break}q.warn(`Unrecognized action '${d}' received at step ${F} for conv ${A}. Treating as final response.`),d=i.g4;break}}catch(a){if(q.error(`Unhandled error during execution loop for conv ${A}`,{loopError:a}),d!==i.O){let c=a?.details;b.lastResponse={success:!1,error:a instanceof Error?a.message:String(a),errorDetails:a instanceof Error?{name:a.name,message:a.message,stack:a.stack,...c&&"object"==typeof c?c:{}}:void 0},d=i.O}}d===i.O&&"error"!==b.status&&(b.status="error");let M=Date.now()-f,N=b.status||(d===i.g4?"completed":d===i.O?"error":"running");q.info(`Execution finished for conv ${A}. Final Action: ${d}, Final Status: ${N}`,{duration:`${M}ms`}),J(),("completed"===N||"error"===N)&&G({type:"run:done",status:N});try{if(b.updatedAt=Date.now(),"New Conversation"===b.title&&b.messages.length>0){let a=b.messages.find(a=>"user"===a.role);a&&"string"==typeof a.content&&(b.title=a.content.split(" ").slice(0,5).join(" ")+"...",q.verbose(`Updated conversation title for ${A} before final return to: ${b.title}`))}await s(B,b),q.debug(`Saved final state for conversation ${A} before returning.`)}catch(a){q.error(`Failed to save final state for conversation ${A}:`,a)}e.FlowExecutor.conversationStates.set(A,b);let O=()=>{x&&("completed"===b.status||"error"===b.status)&&e.FlowExecutor.conversationStates.delete(A)},P={conversationId:b.conversationId||A,messages:b.messages,usage:b.usage,finalAction:d,sharedState:b};if("paused_debug"===b.status)return q.info(`Returning paused debug state for conv ${A}`),{...P,status:"paused_debug",outputText:"",pendingToolCalls:b.pendingToolCalls};if("error"===b.status||d===i.O){let a,c="Unknown error during execution",d=500;if("object"==typeof b.lastResponse&&null!==b.lastResponse)if("success"in b.lastResponse&&!1===b.lastResponse.success&&"error"in b.lastResponse&&"string"==typeof b.lastResponse.error){if(c=b.lastResponse.error,"errorDetails"in b.lastResponse&&"object"==typeof b.lastResponse.errorDetails&&null!==b.lastResponse.errorDetails){let e=b.lastResponse.errorDetails;(a={message:"string"==typeof e.message?e.message:c,type:"string"==typeof e.type?e.type:void 0,code:"string"==typeof e.code?e.code:void 0,param:"string"==typeof e.param?e.param:void 0,status:"number"==typeof e.status?e.status:void 0,stack:"string"==typeof e.stack?e.stack:void 0,name:"string"==typeof e.name?e.name:void 0}).status&&(d=a.status)}}else try{c=`Unexpected error state object: ${JSON.stringify(b.lastResponse)}`}catch{c="Unexpected error state object (unserializable)"}else"string"==typeof b.lastResponse&&(c=b.lastResponse);return a?a.message=a.message||c:a={message:c},q.error(`Returning error result for conv ${A}`,{errorMessage:c,errorDetails:a,statusCode:d}),"error"!==b.status&&(b.status="error"),O(),{...P,status:"error",outputText:"",error:{message:c,details:a,statusCode:d}}}let Q=b.messages.length>0?b.messages[b.messages.length-1]:null,R="",S="";"object"==typeof b.lastResponse&&null!==b.lastResponse&&"_flujo_xml_tools"in b.lastResponse?(S=b.lastResponse._flujo_xml_tools,R=Q?.role==="assistant"&&"string"==typeof Q.content?Q.content:"",R+=(R?"\n\n":"")+S,b.lastResponse=R):R="string"==typeof b.lastResponse?b.lastResponse:Q?.role==="assistant"&&"string"==typeof Q.content?Q.content:d!==i.Jp||l?"Processing complete.":"";let T=S?void 0:Q?.role==="assistant"?Q.tool_calls:void 0;return q.info(`Returning success result for conv ${A}`,{action:d,status:b.status,flujo:l,requireApproval:t,flujodebug:u}),O(),{...P,status:b.status||(d===i.g4?"completed":"running"),outputText:R,toolCalls:T,pendingToolCalls:b.pendingToolCalls}}},94706:(a,b,c)=>{c.d(b,{validateFlowForRun:()=>m});var d=c(50846),e=c(79989),f=c(20433),g=c(1133),h=c(49181);function i(a){return a.data?.type??a.type??"unknown"}function j(a){return a.data?.label||a.id}function k(a){return a.data?.edgeType==="mcp"}let l=(0,d.h)("backend/execution/flow/validateFlowForRun");async function m(a){let b,c,d=await e.flowService.getFlow(a);if(!d)return l.warn(`validateFlowForRun: flow ${a} could not be loaded; skipping pre-run checks`),{issues:[],errorCount:0,warningCount:0,isRunnable:!0};try{b=await f.modelService.loadModels()}catch(a){l.warn("validateFlowForRun: could not load models; skipping model checks",a)}try{let a=await g.mcpService.loadServerConfigs();Array.isArray(a)&&(c=a.map(a=>({name:a.name,status:a.disabled?"disabled":void 0})))}catch(a){l.warn("validateFlowForRun: could not load servers; skipping server checks",a)}return function(a,b={}){let c=[],d=Array.isArray(a?.nodes)?a.nodes:[],e=Array.isArray(a?.edges)?a.edges:[],f=(a,b,d,e)=>c.push({severity:a,code:b,message:d,nodeId:e?.id,nodeLabel:e?j(e):void 0}),g=new Map((b.models??[]).map(a=>[a.id,a])),l=new Map((b.servers??[]).map(a=>[a.name,a])),m=!!b.models,n=!!b.servers,o=d.filter(a=>"start"===i(a)),p=d.filter(a=>"finish"===i(a)),q=d.filter(a=>"process"===i(a)),r=d.filter(a=>"mcp"===i(a));if(0===o.length)f("error","no-start-node","The flow has no Start node, so it has no entry point.");else if(o.length>1)for(let a of o.slice(1))f("error","multiple-start-nodes","The flow has more than one Start node; only one is allowed.",a);for(let a of(0===p.length&&f("warning","no-finish-node","The flow has no Finish node; it will run but never reaches a defined end."),q)){let b=a.data?.properties??{},c=b.boundModel;if(c){if(m&&!g.has(c)){let c="string"==typeof b.modelName&&b.modelName?` (was "${b.modelName}")`:"";f("error","process-model-missing",`Process node "${j(a)}" is bound to a model that no longer exists${c}.`,a)}}else f("error","process-missing-model",`Process node "${j(a)}" has no model bound.`,a)}for(let a of r){let b=(a.data?.properties??{}).boundServer;if(b){if(n&&!l.has(b))f("warning","mcp-server-missing",`MCP node "${j(a)}" is bound to server "${b}", which isn't in your current MCP server list. It may be offline (e.g. not connected), renamed, or removed — if it was renamed or removed, rebind this node.`,a);else if(n){let c=l.get(b);if(c.status&&"connected"!==c.status){let d="disabled"===c.status?"disabled":`not connected (${c.status})`;f("warning","mcp-server-disconnected",`MCP node "${j(a)}" is bound to server "${b}", which is currently ${d}. It will provide tools again once it reconnects.`,a)}}}else f("warning","mcp-missing-server",`MCP node "${j(a)}" is not bound to a server.`,a);e.some(b=>k(b)&&(b.source===a.id||b.target===a.id))||f("warning","mcp-node-unconnected",`MCP node "${j(a)}" is not connected to any Process node.`,a)}if(o.length>0){let a=function(a){let b=new Map,c=(a,c)=>{b.has(a)||b.set(a,[]),b.get(a).push(c)};for(let b of a)!k(b)&&(c(b.source,b.target),b.data?.bidirectional&&c(b.target,b.source));return b}(e);for(let b of o)a.get(b.id)?.length||f("error","start-no-outgoing","The Start node is not connected to anything; the flow cannot run.",b);let b=function(a,b){let c=new Set(a),d=[...a];for(;d.length;){let a=d.shift();for(let e of b.get(a)??[])c.has(e)||(c.add(e),d.push(e))}return c}(o.map(a=>a.id),a);for(let a of[...q,...p])b.has(a.id)||f("warning","unreachable-node",`${"finish"===i(a)?"Finish":"Process"} node "${j(a)}" is not reachable from the Start node.`,a)}for(let a of d.filter(a=>"subflow"===i(a))){let b=e.filter(b=>!k(b)&&(b.source===a.id||b.target===a.id&&!!b.data?.bidirectional));b.length>1&&f("error","subflow-multiple-outgoing",`Subflow node "${j(a)}" has ${b.length} outgoing connections; a subflow can only have one (either A > B > C or a bidirectional A <> B).`,a)}for(let a of q){let c=a.data?.properties?.promptTemplate;if("string"!=typeof c||!c)continue;let g=function(a,b,c){let d=new Map(b.map(a=>[a.id,a])),e=new Set;for(let b of c){if(!k(b))continue;let c=null;if(b.source===a?c=b.target:b.target===a&&(c=b.source),!c)continue;let f=d.get(c);if(!f||"mcp"!==i(f))continue;let g=f.data?.properties?.boundServer;"string"==typeof g&&g&&e.add(g)}return e}(a.id,d,e),l=new Set;for(let d of(0,h.A$)(c)){if("handoff"===d.server)continue;let c=`${d.kind}:${d.server}:${d.name}`;!l.has(c)&&(l.add(c),g.has(d.server)?"tool"===d.kind&&b.serverTools&&b.serverTools[d.server]&&!b.serverTools[d.server].includes(d.name)&&f("warning","tool-unavailable",`Process node "${j(a)}" references tool "${d.name}" which server "${d.server}" no longer provides.`,a):f("error","tool-pill-disconnected",`Process node "${j(a)}" references ${d.kind} "${d.name}" from server "${d.server}", but it is not connected to that server (the MCP node was removed or the server was renamed).`,a))}}let s=c.filter(a=>"error"===a.severity).length,t=c.length-s;return{issues:c,errorCount:s,warningCount:t,isRunnable:0===s}}(d,{models:b,servers:c})}}};
|
|
6
|
+
</${b.function.name}>`)}b.lastResponse={_flujo_xml_tools:a.join("\n\n")},d=i.g4,q.info(`[flujo=false] Prepared XML for external tools. Exiting loop for conv ${A}.`);break}q.warn(`[flujo=false] TOOL_CALL_ACTION received for conv ${A} but no tools found after classification. Treating as final.`),d=i.g4;break}q.warn(`TOOL_CALL_ACTION received for conv ${A} but no tool_calls found in last message. Treating as final.`),d=i.g4;break}let c=await e.FlowExecutor.resolveHandoff(b,d);if(c.isSuccessorEdge){q.info(`[Action Handling] Step ${F}: Handling Handoff Action (Edge ID) for conv ${A}`),q.info(`Handoff action received for conv ${A}. Edge: ${d}`);let a=c.targetNodeId;if("string"==typeof a&&a.length>0){let c,f=b.messages.length>0?b.messages[b.messages.length-1]:null;if(f?.role==="assistant"&&f.tool_calls){let e=f.tool_calls.find(a=>"function"===a.type&&("handoff"===a.function.name||a.function.name.startsWith("handoff_to_")));if(e){c=e.id,q.debug(`Found handoff tool call ID: ${c} for edge ${d}`);let f={id:crypto.randomUUID(),role:"tool",tool_call_id:c,content:JSON.stringify({status:"Handoff processed",targetNodeId:a}),timestamp:Date.now(),processNodeId:b.currentNodeId};b.messages.push(f),q.info(`Appended tool result message for handoff tool call ${c}`)}else q.warn(`Handoff action received for edge ${d}, but could not find corresponding handoff tool call in last assistant message.`)}else q.warn(`Handoff action received for edge ${d}, but the last message was not an assistant message with tool calls.`);J();let g=b.currentNodeId;if(b.currentNodeId=a,b.handoffRequested=void 0,G({type:"handoff",from:g?{nodeId:g}:void 0,toNodeId:a,edgeId:d}),q.info(`Transitioning conv ${A} to node ${b.currentNodeId}`),e.FlowExecutor.conversationStates.set(A,b),K){q.info(`[Debug Step] Paused after handoff to node ${b.currentNodeId} for conv ${A}.`),L();break}q.info(`Continuing loop for conv ${A} after handoff.`);continue}q.error(`Handoff failed for conv ${A}: Successor node for edge ${d} has invalid ID.`),b.lastResponse={success:!1,error:`Handoff failed: Target node for edge ${d} has invalid ID.`},d=i.O;break}if(d===i.E5){q.info(`[Action Handling] Step ${F}: Handling STAY_ON_NODE_ACTION for conv ${A}`),q.info(`Stay on node action received for conv ${A} at step ${F}`);break}q.warn(`Unrecognized action '${d}' received at step ${F} for conv ${A}. Treating as final response.`),d=i.g4;break}}catch(a){if(q.error(`Unhandled error during execution loop for conv ${A}`,{loopError:a}),d!==i.O){let c=a?.details;b.lastResponse={success:!1,error:a instanceof Error?a.message:String(a),errorDetails:a instanceof Error?{name:a.name,message:a.message,stack:a.stack,...c&&"object"==typeof c?c:{}}:void 0},d=i.O}}d===i.O&&"error"!==b.status&&(b.status="error");let M=Date.now()-f,N=b.status||(d===i.g4?"completed":d===i.O?"error":"running");q.info(`Execution finished for conv ${A}. Final Action: ${d}, Final Status: ${N}`,{duration:`${M}ms`}),J(),("completed"===N||"error"===N)&&G({type:"run:done",status:N});try{if(b.updatedAt=Date.now(),"New Conversation"===b.title&&b.messages.length>0){let a=b.messages.find(a=>"user"===a.role);a&&"string"==typeof a.content&&(b.title=a.content.split(" ").slice(0,5).join(" ")+"...",q.verbose(`Updated conversation title for ${A} before final return to: ${b.title}`))}await s(B,b),q.debug(`Saved final state for conversation ${A} before returning.`)}catch(a){q.error(`Failed to save final state for conversation ${A}:`,a)}e.FlowExecutor.conversationStates.set(A,b);let O=()=>{x&&("completed"===b.status||"error"===b.status)&&e.FlowExecutor.conversationStates.delete(A)},P={conversationId:b.conversationId||A,messages:b.messages,usage:b.usage,finalAction:d,sharedState:b};if("paused_debug"===b.status)return q.info(`Returning paused debug state for conv ${A}`),{...P,status:"paused_debug",outputText:"",pendingToolCalls:b.pendingToolCalls};if("error"===b.status||d===i.O){let a,c="Unknown error during execution",d=500;if("object"==typeof b.lastResponse&&null!==b.lastResponse)if("success"in b.lastResponse&&!1===b.lastResponse.success&&"error"in b.lastResponse&&"string"==typeof b.lastResponse.error){if(c=b.lastResponse.error,"errorDetails"in b.lastResponse&&"object"==typeof b.lastResponse.errorDetails&&null!==b.lastResponse.errorDetails){let e=b.lastResponse.errorDetails;(a={message:"string"==typeof e.message?e.message:c,type:"string"==typeof e.type?e.type:void 0,code:"string"==typeof e.code?e.code:void 0,param:"string"==typeof e.param?e.param:void 0,status:"number"==typeof e.status?e.status:void 0,stack:"string"==typeof e.stack?e.stack:void 0,name:"string"==typeof e.name?e.name:void 0}).status&&(d=a.status)}}else try{c=`Unexpected error state object: ${JSON.stringify(b.lastResponse)}`}catch{c="Unexpected error state object (unserializable)"}else"string"==typeof b.lastResponse&&(c=b.lastResponse);return a?a.message=a.message||c:a={message:c},q.error(`Returning error result for conv ${A}`,{errorMessage:c,errorDetails:a,statusCode:d}),"error"!==b.status&&(b.status="error"),O(),{...P,status:"error",outputText:"",error:{message:c,details:a,statusCode:d}}}let Q=b.messages.length>0?b.messages[b.messages.length-1]:null,R="",S="";"object"==typeof b.lastResponse&&null!==b.lastResponse&&"_flujo_xml_tools"in b.lastResponse?(S=b.lastResponse._flujo_xml_tools,R=Q?.role==="assistant"&&"string"==typeof Q.content?Q.content:"",R+=(R?"\n\n":"")+S,b.lastResponse=R):R="string"==typeof b.lastResponse?b.lastResponse:Q?.role==="assistant"&&"string"==typeof Q.content?Q.content:d!==i.Jp||l?"Processing complete.":"";let T=S?void 0:Q?.role==="assistant"?Q.tool_calls:void 0;return q.info(`Returning success result for conv ${A}`,{action:d,status:b.status,flujo:l,requireApproval:t,flujodebug:u}),O(),{...P,status:b.status||(d===i.g4?"completed":"running"),outputText:R,toolCalls:T,pendingToolCalls:b.pendingToolCalls}}},94706:(a,b,c)=>{c.d(b,{validateFlowForRun:()=>m});var d=c(50846),e=c(79989),f=c(20433),g=c(23514),h=c(49181);function i(a){return a.data?.type??a.type??"unknown"}function j(a){return a.data?.label||a.id}function k(a){return a.data?.edgeType==="mcp"}let l=(0,d.h)("backend/execution/flow/validateFlowForRun");async function m(a){let b,c,d=await e.flowService.getFlow(a);if(!d)return l.warn(`validateFlowForRun: flow ${a} could not be loaded; skipping pre-run checks`),{issues:[],errorCount:0,warningCount:0,isRunnable:!0};try{b=await f.modelService.loadModels()}catch(a){l.warn("validateFlowForRun: could not load models; skipping model checks",a)}try{let a=await g.mcpService.loadServerConfigs();Array.isArray(a)&&(c=a.map(a=>({name:a.name,status:a.disabled?"disabled":void 0})))}catch(a){l.warn("validateFlowForRun: could not load servers; skipping server checks",a)}return function(a,b={}){let c=[],d=Array.isArray(a?.nodes)?a.nodes:[],e=Array.isArray(a?.edges)?a.edges:[],f=(a,b,d,e)=>c.push({severity:a,code:b,message:d,nodeId:e?.id,nodeLabel:e?j(e):void 0}),g=new Map((b.models??[]).map(a=>[a.id,a])),l=new Map((b.servers??[]).map(a=>[a.name,a])),m=!!b.models,n=!!b.servers,o=d.filter(a=>"start"===i(a)),p=d.filter(a=>"finish"===i(a)),q=d.filter(a=>"process"===i(a)),r=d.filter(a=>"mcp"===i(a));if(0===o.length)f("error","no-start-node","The flow has no Start node, so it has no entry point.");else if(o.length>1)for(let a of o.slice(1))f("error","multiple-start-nodes","The flow has more than one Start node; only one is allowed.",a);for(let a of(0===p.length&&f("warning","no-finish-node","The flow has no Finish node; it will run but never reaches a defined end."),q)){let b=a.data?.properties??{},c=b.boundModel;if(c){if(m&&!g.has(c)){let c="string"==typeof b.modelName&&b.modelName?` (was "${b.modelName}")`:"";f("error","process-model-missing",`Process node "${j(a)}" is bound to a model that no longer exists${c}.`,a)}}else f("error","process-missing-model",`Process node "${j(a)}" has no model bound.`,a)}for(let a of r){let b=(a.data?.properties??{}).boundServer;if(b){if(n&&!l.has(b))f("warning","mcp-server-missing",`MCP node "${j(a)}" is bound to server "${b}", which isn't in your current MCP server list. It may be offline (e.g. not connected), renamed, or removed — if it was renamed or removed, rebind this node.`,a);else if(n){let c=l.get(b);if(c.status&&"connected"!==c.status){let d="disabled"===c.status?"disabled":`not connected (${c.status})`;f("warning","mcp-server-disconnected",`MCP node "${j(a)}" is bound to server "${b}", which is currently ${d}. It will provide tools again once it reconnects.`,a)}}}else f("warning","mcp-missing-server",`MCP node "${j(a)}" is not bound to a server.`,a);e.some(b=>k(b)&&(b.source===a.id||b.target===a.id))||f("warning","mcp-node-unconnected",`MCP node "${j(a)}" is not connected to any Process node.`,a)}if(o.length>0){let a=function(a){let b=new Map,c=(a,c)=>{b.has(a)||b.set(a,[]),b.get(a).push(c)};for(let b of a)!k(b)&&(c(b.source,b.target),b.data?.bidirectional&&c(b.target,b.source));return b}(e);for(let b of o)a.get(b.id)?.length||f("error","start-no-outgoing","The Start node is not connected to anything; the flow cannot run.",b);let b=function(a,b){let c=new Set(a),d=[...a];for(;d.length;){let a=d.shift();for(let e of b.get(a)??[])c.has(e)||(c.add(e),d.push(e))}return c}(o.map(a=>a.id),a);for(let a of[...q,...p])b.has(a.id)||f("warning","unreachable-node",`${"finish"===i(a)?"Finish":"Process"} node "${j(a)}" is not reachable from the Start node.`,a)}for(let a of d.filter(a=>"subflow"===i(a))){let b=e.filter(b=>!k(b)&&(b.source===a.id||b.target===a.id&&!!b.data?.bidirectional));b.length>1&&f("error","subflow-multiple-outgoing",`Subflow node "${j(a)}" has ${b.length} outgoing connections; a subflow can only have one (either A > B > C or a bidirectional A <> B).`,a)}for(let a of q){let c=a.data?.properties?.promptTemplate;if("string"!=typeof c||!c)continue;let g=function(a,b,c){let d=new Map(b.map(a=>[a.id,a])),e=new Set;for(let b of c){if(!k(b))continue;let c=null;if(b.source===a?c=b.target:b.target===a&&(c=b.source),!c)continue;let f=d.get(c);if(!f||"mcp"!==i(f))continue;let g=f.data?.properties?.boundServer;"string"==typeof g&&g&&e.add(g)}return e}(a.id,d,e),l=new Set;for(let d of(0,h.A$)(c)){if("handoff"===d.server)continue;let c=`${d.kind}:${d.server}:${d.name}`;!l.has(c)&&(l.add(c),g.has(d.server)?"tool"===d.kind&&b.serverTools&&b.serverTools[d.server]&&!b.serverTools[d.server].includes(d.name)&&f("warning","tool-unavailable",`Process node "${j(a)}" references tool "${d.name}" which server "${d.server}" no longer provides.`,a):f("error","tool-pill-disconnected",`Process node "${j(a)}" references ${d.kind} "${d.name}" from server "${d.server}", but it is not connected to that server (the MCP node was removed or the server was renamed).`,a))}}let s=c.filter(a=>"error"===a.severity).length,t=c.length-s;return{issues:c,errorCount:s,warningCount:t,isRunnable:0===s}}(d,{models:b,servers:c})}}};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";exports.id=724,exports.ids=[724],exports.modules={
|
|
1
|
+
"use strict";exports.id=724,exports.ids=[724],exports.modules={49181:(a,b,c)=>{c.d(b,{A$:()=>g});let d="_-_-_",e=/^(tool|resource):(.+)$/,f=/\$\{((?:tool|resource):[^}]+|_-_-_[^}]+)\}/g;function g(a){let b,c=[];for(f.lastIndex=0;null!==(b=f.exec(a));){let a=function(a){let b=e.exec(a);if(b){let a=b[1],c=function(a){let b=a.indexOf("__");if(b<=0)return null;let c=a.slice(b+2);return c?{server:a.slice(0,b),name:c}:null}(b[2]);return c?{kind:a,server:c.server,name:c.name}:null}if(a.startsWith(d)){let b=a.split(d);if(3===b.length&&b[1]&&b[2])return{kind:"tool",server:b[1],name:b[2]}}return null}(b[1]);a&&c.push({...a,fullMatch:b[0],index:b.index})}return c}},60724:(a,b,c)=>{c.d(b,{h:()=>k});var d=c(79989),e=c(20433),f=c(23514),g=c(50846),h=c(65007);let i=(0,g.h)("backend/utils/PromptRenderer");class j{async renderPrompt(a,b,c){let d=c?.renderMode||"rendered",e=c?.includeConversationHistory||!1;i.info(`Rendering prompt for node ${b} in flow ${a}`,{renderMode:d,includeConversationHistory:e});let{prompt:f,excludeModelPrompt:g,excludeStartNodePrompt:h,excludeSystemPrompt:j}=await this.findNodePrompt(b,a),k=c?.excludeModelPrompt!==void 0?c?.excludeModelPrompt:g,l=c?.excludeStartNodePrompt!==void 0?c?.excludeStartNodePrompt:h,m=c?.excludeSystemPrompt!==void 0?c?.excludeSystemPrompt:j;i.debug("Exclusion settings",{excludeModelPrompt:k,excludeStartNodePrompt:l,excludeSystemPrompt:m,fromOptions:{excludeModelPrompt:c?.excludeModelPrompt!==void 0,excludeStartNodePrompt:c?.excludeStartNodePrompt!==void 0,excludeSystemPrompt:c?.excludeSystemPrompt!==void 0}});let n="",o=null;if(!l){let b=await this.findStartNodePrompt(a);b&&(i.debug("Adding start node prompt",{length:b.length}),n+=b+"\n\n")}if(!k){let c=await this.findModelPrompt(b,a);c.prompt&&(i.debug("Adding model prompt",{modelId:c.modelId,length:c.prompt.length}),n+=c.prompt+"\n\n"),o=c.functionCallingSchema,c.reasoningSchema&&(n+=`Please use the following pattern to mark your reasoning: ${c.reasoningSchema}
|
|
2
2
|
|
|
3
3
|
`),o&&(n+=`Please use the following pattern to use a tool: ${o}
|
|
4
4
|
|
|
@@ -24,4 +24,4 @@ ${JSON.stringify(d,null,2)}]`}formatToolDescriptionXML(a,b,c){let d=`<${b}>
|
|
|
24
24
|
`;if(c.inputSchema?.properties)for(let a in c.inputSchema.properties){let b=c.inputSchema.properties[a];d+=` <${a}>${b.description||a}</${a}>
|
|
25
25
|
`}return d+=`</${b}>`,`[Tool: \`tool:${a}__${b}\` (${c.description||"No description"})
|
|
26
26
|
Example usage:
|
|
27
|
-
${d}]`}formatToolParameters(a){if(!a.inputSchema||!a.inputSchema.properties)return"";let b=[];for(let c in a.inputSchema.properties){let d=a.inputSchema.properties[c],e=d.description?`(${d.description})`:"";b.push(`\`${c}\` ${e}`)}return b.length>0?` with parameters ${b.join(", ")}`:""}delay(a){return new Promise(b=>setTimeout(b,a))}}let k=new j}};
|
|
27
|
+
${d}]`}formatToolParameters(a){if(!a.inputSchema||!a.inputSchema.properties)return"";let b=[];for(let c in a.inputSchema.properties){let d=a.inputSchema.properties[c],e=d.description?`(${d.description})`:"";b.push(`\`${c}\` ${e}`)}return b.length>0?` with parameters ${b.join(", ")}`:""}delay(a){return new Promise(b=>setTimeout(b,a))}}let k=new j},65007:(a,b,c)=>{c.d(b,{A$:()=>e.A$,xc:()=>d.xc});var d=c(1925),e=c(49181);c(73456)}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";exports.id=7328,exports.ids=[7328],exports.modules={354:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(27080),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M20 6h-8l-2-2H7.17l4 4H20v9.17l1.76 1.76c.15-.28.24-.59.24-.93V8c0-1.1-.9-2-2-2M2.1 2.1.69 3.51l1.56 1.56c-.15.28-.24.59-.24.93L2 18c0 1.1.9 2 2 2h13.17l3.31 3.31 1.41-1.41zM4 18V6.83L15.17 18z"}),"FolderOffOutlined")},9863:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(27080),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"m11.99 18.54-7.37-5.73L3 14.07l9 7 9-7-1.63-1.27zM12 16l7.36-5.73L21 9l-9-7-9 7 1.63 1.27z"}),"Layers")},11402:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(27080),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M14.94 4.66h-4.72l2.36-2.36zm-4.69 14.71h4.66l-2.33 2.33zM6.1 6.27 1.6 17.73h1.84l.92-2.45h5.11l.92 2.45h1.84L7.74 6.27zm-1.13 7.37 1.94-5.18 1.94 5.18zm10.76 2.5h6.12v1.59h-8.53v-1.29l5.92-8.56h-5.88v-1.6h8.3v1.26z"}),"SortByAlpha")},18467:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(27080),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"m9.17 6 2 2H20v10H4V6zM10 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2h-8z"}),"FolderOutlined")},22813:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(27080),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5M12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5m0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3"}),"Visibility")},27114:(a,b,c)=>{c.d(b,{A:()=>n});var d=c(38301),e=c(43249),f=c(2783),g=c(18168),h=c(6636),i=c(29565),j=c(33105);function k(a){return(0,j.Ay)("MuiCardContent",a)}(0,i.A)("MuiCardContent",["root"]);var l=c(21124);let m=(0,g.Ay)("div",{name:"MuiCardContent",slot:"Root",overridesResolver:(a,b)=>b.root})({padding:16,"&:last-child":{paddingBottom:24}}),n=d.forwardRef(function(a,b){let c=(0,h.b)({props:a,name:"MuiCardContent"}),{className:d,component:g="div",...i}=c,j={...c,component:g},n=(a=>{let{classes:b}=a;return(0,f.A)({root:["root"]},k,b)})(j);return(0,l.jsx)(m,{as:g,className:(0,e.A)(n.root,d),ownerState:j,ref:b,...i})})},30818:(a,b,c)=>{c.d(b,{A:()=>o});var d=c(38301),e=c(43249),f=c(2783),g=c(18168),h=c(6636),i=c(54573),j=c(29565),k=c(33105);function l(a){return(0,k.Ay)("MuiCard",a)}(0,j.A)("MuiCard",["root"]);var m=c(21124);let n=(0,g.Ay)(i.A,{name:"MuiCard",slot:"Root",overridesResolver:(a,b)=>b.root})({overflow:"hidden"}),o=d.forwardRef(function(a,b){let c=(0,h.b)({props:a,name:"MuiCard"}),{className:d,raised:g=!1,...i}=c,j={...c,raised:g},k=(a=>{let{classes:b}=a;return(0,f.A)({root:["root"]},l,b)})(j);return(0,m.jsx)(n,{className:(0,e.A)(k.root,d),elevation:g?8:void 0,ref:b,ownerState:j,...i})})},31973:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(27080),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M20 6h-8l-2-2H4c-1.11 0-1.99.89-1.99 2L2 18c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V8c0-1.11-.89-2-2-2m0 12H4V6h5.17l2 2H20zm-8-4h2v2h2v-2h2v-2h-2v-2h-2v2h-2z"}),"CreateNewFolderOutlined")},40973:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(27080),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14"}),"Search")},63757:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(27080),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M3 18h6v-2H3zM3 6v2h18V6zm0 7h12v-2H3z"}),"Sort")},67101:(a,b,c)=>{c.d(b,{A:()=>u});var d,e=c(38301),f=c(43249),g=c(2783),h=c(6638),i=c(79515),j=c(78104),k=c(49628),l=c(18168),m=c(68333),n=c(6636),o=c(29565),p=c(33105);function q(a){return(0,p.Ay)("MuiInputAdornment",a)}let r=(0,o.A)("MuiInputAdornment",["root","filled","standard","outlined","positionStart","positionEnd","disablePointerEvents","hiddenLabel","sizeSmall"]);var s=c(21124);let t=(0,l.Ay)("div",{name:"MuiInputAdornment",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.root,b[`position${(0,h.A)(c.position)}`],!0===c.disablePointerEvents&&b.disablePointerEvents,b[c.variant]]}})((0,m.A)(({theme:a})=>({display:"flex",maxHeight:"2em",alignItems:"center",whiteSpace:"nowrap",color:(a.vars||a).palette.action.active,variants:[{props:{variant:"filled"},style:{[`&.${r.positionStart}&:not(.${r.hiddenLabel})`]:{marginTop:16}}},{props:{position:"start"},style:{marginRight:8}},{props:{position:"end"},style:{marginLeft:8}},{props:{disablePointerEvents:!0},style:{pointerEvents:"none"}}]}))),u=e.forwardRef(function(a,b){let c=(0,n.b)({props:a,name:"MuiInputAdornment"}),{children:l,className:m,component:o="div",disablePointerEvents:p=!1,disableTypography:r=!1,position:u,variant:v,...w}=c,x=(0,k.A)()||{},y=v;v&&x.variant,x&&!y&&(y=x.variant);let z={...c,hiddenLabel:x.hiddenLabel,size:x.size,disablePointerEvents:p,position:u,variant:y},A=(a=>{let{classes:b,disablePointerEvents:c,hiddenLabel:d,position:e,size:f,variant:i}=a,j={root:["root",c&&"disablePointerEvents",e&&`position${(0,h.A)(e)}`,i,d&&"hiddenLabel",f&&`size${(0,h.A)(f)}`]};return(0,g.A)(j,q,b)})(z);return(0,s.jsx)(j.A.Provider,{value:null,children:(0,s.jsx)(t,{as:o,ownerState:z,className:(0,f.A)(A.root,m),ref:b,...w,children:"string"!=typeof l||r?(0,s.jsxs)(e.Fragment,{children:["start"===u?d||(d=(0,s.jsx)("span",{className:"notranslate","aria-hidden":!0,children:""})):null,l]}):(0,s.jsx)(i.default,{color:"textSecondary",children:l})})})})},81310:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(27080),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"m19.81 14.99 1.19-.92-1.43-1.43-1.19.92zm-.45-4.72L21 9l-9-7-2.91 2.27 7.87 7.88zM3.27 1 2 2.27l4.22 4.22L3 9l1.63 1.27L12 16l2.1-1.63 1.43 1.43L12 18.54l-7.37-5.73L3 14.07l9 7 4.95-3.85L20.73 21 22 19.73z"}),"LayersClear")},93083:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(27080),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2m5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12z"}),"Cancel")},98463:(a,b,c)=>{c.d(b,{A:()=>n});var d=c(38301),e=c(43249),f=c(2783),g=c(18168),h=c(6636),i=c(29565),j=c(33105);function k(a){return(0,j.Ay)("MuiCardActions",a)}(0,i.A)("MuiCardActions",["root","spacing"]);var l=c(21124);let m=(0,g.Ay)("div",{name:"MuiCardActions",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.root,!c.disableSpacing&&b.spacing]}})({display:"flex",alignItems:"center",padding:8,variants:[{props:{disableSpacing:!1},style:{"& > :not(style) ~ :not(style)":{marginLeft:8}}}]}),n=d.forwardRef(function(a,b){let c=(0,h.b)({props:a,name:"MuiCardActions"}),{disableSpacing:d=!1,className:g,...i}=c,j={...c,disableSpacing:d},n=(a=>{let{classes:b,disableSpacing:c}=a;return(0,f.A)({root:["root",!c&&"spacing"]},k,b)})(j);return(0,l.jsx)(m,{className:(0,e.A)(n.root,g),ownerState:j,ref:b,...i})})}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";exports.id=7485,exports.ids=[7485],exports.modules={67191:(a,b,c)=>{c.d(b,{A:()=>x});var d=c(38301),e=c(43249),f=c(2783),g=c(37489),h=c(6638),i=c(54716),j=c(99515),k=c(18168),l=c(68333),m=c(6636),n=c(29565),o=c(33105);function p(a){return(0,o.Ay)("MuiSwitch",a)}let q=(0,n.A)("MuiSwitch",["root","edgeStart","edgeEnd","switchBase","colorPrimary","colorSecondary","sizeSmall","sizeMedium","checked","disabled","input","thumb","track"]);var r=c(20385),s=c(21124);let t=(0,k.Ay)("span",{name:"MuiSwitch",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.root,c.edge&&b[`edge${(0,h.A)(c.edge)}`],b[`size${(0,h.A)(c.size)}`]]}})({display:"inline-flex",width:58,height:38,overflow:"hidden",padding:12,boxSizing:"border-box",position:"relative",flexShrink:0,zIndex:0,verticalAlign:"middle","@media print":{colorAdjust:"exact"},variants:[{props:{edge:"start"},style:{marginLeft:-8}},{props:{edge:"end"},style:{marginRight:-8}},{props:{size:"small"},style:{width:40,height:24,padding:7,[`& .${q.thumb}`]:{width:16,height:16},[`& .${q.switchBase}`]:{padding:4,[`&.${q.checked}`]:{transform:"translateX(16px)"}}}}]}),u=(0,k.Ay)(j.A,{name:"MuiSwitch",slot:"SwitchBase",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.switchBase,{[`& .${q.input}`]:b.input},"default"!==c.color&&b[`color${(0,h.A)(c.color)}`]]}})((0,l.A)(({theme:a})=>({position:"absolute",top:0,left:0,zIndex:1,color:a.vars?a.vars.palette.Switch.defaultColor:`${"light"===a.palette.mode?a.palette.common.white:a.palette.grey[300]}`,transition:a.transitions.create(["left","transform"],{duration:a.transitions.duration.shortest}),[`&.${q.checked}`]:{transform:"translateX(20px)"},[`&.${q.disabled}`]:{color:a.vars?a.vars.palette.Switch.defaultDisabledColor:`${"light"===a.palette.mode?a.palette.grey[100]:a.palette.grey[600]}`},[`&.${q.checked} + .${q.track}`]:{opacity:.5},[`&.${q.disabled} + .${q.track}`]:{opacity:a.vars?a.vars.opacity.switchTrackDisabled:`${"light"===a.palette.mode?.12:.2}`},[`& .${q.input}`]:{left:"-100%",width:"300%"}})),(0,l.A)(({theme:a})=>({"&:hover":{backgroundColor:a.vars?`rgba(${a.vars.palette.action.activeChannel} / ${a.vars.palette.action.hoverOpacity})`:(0,g.X4)(a.palette.action.active,a.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},variants:[...Object.entries(a.palette).filter((0,i.A)(["light"])).map(([b])=>({props:{color:b},style:{[`&.${q.checked}`]:{color:(a.vars||a).palette[b].main,"&:hover":{backgroundColor:a.vars?`rgba(${a.vars.palette[b].mainChannel} / ${a.vars.palette.action.hoverOpacity})`:(0,g.X4)(a.palette[b].main,a.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},[`&.${q.disabled}`]:{color:a.vars?a.vars.palette.Switch[`${b}DisabledColor`]:`${"light"===a.palette.mode?(0,g.a)(a.palette[b].main,.62):(0,g.e$)(a.palette[b].main,.55)}`}},[`&.${q.checked} + .${q.track}`]:{backgroundColor:(a.vars||a).palette[b].main}}}))]}))),v=(0,k.Ay)("span",{name:"MuiSwitch",slot:"Track",overridesResolver:(a,b)=>b.track})((0,l.A)(({theme:a})=>({height:"100%",width:"100%",borderRadius:7,zIndex:-1,transition:a.transitions.create(["opacity","background-color"],{duration:a.transitions.duration.shortest}),backgroundColor:a.vars?a.vars.palette.common.onBackground:`${"light"===a.palette.mode?a.palette.common.black:a.palette.common.white}`,opacity:a.vars?a.vars.opacity.switchTrack:`${"light"===a.palette.mode?.38:.3}`}))),w=(0,k.Ay)("span",{name:"MuiSwitch",slot:"Thumb",overridesResolver:(a,b)=>b.thumb})((0,l.A)(({theme:a})=>({boxShadow:(a.vars||a).shadows[1],backgroundColor:"currentColor",width:20,height:20,borderRadius:"50%"}))),x=d.forwardRef(function(a,b){let c=(0,m.b)({props:a,name:"MuiSwitch"}),{className:d,color:g="primary",edge:i=!1,size:j="medium",sx:k,slots:l={},slotProps:n={},...o}=c,q={...c,color:g,edge:i,size:j},x=(a=>{let{classes:b,edge:c,size:d,color:e,checked:g,disabled:i}=a,j={root:["root",c&&`edge${(0,h.A)(c)}`,`size${(0,h.A)(d)}`],switchBase:["switchBase",`color${(0,h.A)(e)}`,g&&"checked",i&&"disabled"],thumb:["thumb"],track:["track"],input:["input"]},k=(0,f.A)(j,p,b);return{...b,...k}})(q),y={slots:l,slotProps:n},[z,A]=(0,r.A)("root",{className:(0,e.A)(x.root,d),elementType:t,externalForwardedProps:y,ownerState:q,additionalProps:{sx:k}}),[B,C]=(0,r.A)("thumb",{className:x.thumb,elementType:w,externalForwardedProps:y,ownerState:q}),D=(0,s.jsx)(B,{...C}),[E,F]=(0,r.A)("track",{className:x.track,elementType:v,externalForwardedProps:y,ownerState:q});return(0,s.jsxs)(z,{...A,children:[(0,s.jsx)(u,{type:"checkbox",icon:D,checkedIcon:D,ref:b,ownerState:q,...o,classes:{...x,root:x.switchBase},slots:{...l.switchBase&&{root:l.switchBase},...l.input&&{input:l.input}},slotProps:{...n.switchBase&&{root:"function"==typeof n.switchBase?n.switchBase(q):n.switchBase},...n.input&&{input:"function"==typeof n.input?n.input(q):n.input}}}),(0,s.jsx)(E,{...F})]})})},95587:(a,b,c)=>{c.d(b,{A:()=>v});var d=c(38301),e=c(43249),f=c(2783),g=c(49628),h=c(18168),i=c(68333),j=c(6636),k=c(79515),l=c(6638),m=c(29565),n=c(33105);function o(a){return(0,n.Ay)("MuiFormControlLabel",a)}let p=(0,m.A)("MuiFormControlLabel",["root","labelPlacementStart","labelPlacementTop","labelPlacementBottom","disabled","label","error","required","asterisk"]);var q=c(83738),r=c(20385),s=c(21124);let t=(0,h.Ay)("label",{name:"MuiFormControlLabel",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[{[`& .${p.label}`]:b.label},b.root,b[`labelPlacement${(0,l.A)(c.labelPlacement)}`]]}})((0,i.A)(({theme:a})=>({display:"inline-flex",alignItems:"center",cursor:"pointer",verticalAlign:"middle",WebkitTapHighlightColor:"transparent",marginLeft:-11,marginRight:16,[`&.${p.disabled}`]:{cursor:"default"},[`& .${p.label}`]:{[`&.${p.disabled}`]:{color:(a.vars||a).palette.text.disabled}},variants:[{props:{labelPlacement:"start"},style:{flexDirection:"row-reverse",marginRight:-11}},{props:{labelPlacement:"top"},style:{flexDirection:"column-reverse"}},{props:{labelPlacement:"bottom"},style:{flexDirection:"column"}},{props:({labelPlacement:a})=>"start"===a||"top"===a||"bottom"===a,style:{marginLeft:16}}]}))),u=(0,h.Ay)("span",{name:"MuiFormControlLabel",slot:"Asterisk",overridesResolver:(a,b)=>b.asterisk})((0,i.A)(({theme:a})=>({[`&.${p.error}`]:{color:(a.vars||a).palette.error.main}}))),v=d.forwardRef(function(a,b){let c=(0,j.b)({props:a,name:"MuiFormControlLabel"}),{checked:h,className:i,componentsProps:m={},control:n,disabled:p,disableTypography:v,inputRef:w,label:x,labelPlacement:y="end",name:z,onChange:A,required:B,slots:C={},slotProps:D={},value:E,...F}=c,G=(0,g.A)(),H=p??n.props.disabled??G?.disabled,I=B??n.props.required,J={disabled:H,required:I};["checked","name","onChange","value","inputRef"].forEach(a=>{void 0===n.props[a]&&void 0!==c[a]&&(J[a]=c[a])});let K=(0,q.A)({props:c,muiFormControl:G,states:["error"]}),L={...c,disabled:H,labelPlacement:y,required:I,error:K.error},M=(a=>{let{classes:b,disabled:c,labelPlacement:d,error:e,required:g}=a,h={root:["root",c&&"disabled",`labelPlacement${(0,l.A)(d)}`,e&&"error",g&&"required"],label:["label",c&&"disabled"],asterisk:["asterisk",e&&"error"]};return(0,f.A)(h,o,b)})(L),N={slots:C,slotProps:{...m,...D}},[O,P]=(0,r.A)("typography",{elementType:k.default,externalForwardedProps:N,ownerState:L}),Q=x;return null==Q||Q.type===k.default||v||(Q=(0,s.jsx)(O,{component:"span",...P,className:(0,e.A)(M.label,P?.className),children:Q})),(0,s.jsxs)(t,{className:(0,e.A)(M.root,i),ownerState:L,ref:b,...F,children:[d.cloneElement(n,J),I?(0,s.jsxs)("div",{children:[Q,(0,s.jsxs)(u,{ownerState:L,"aria-hidden":!0,className:M.asterisk,children:[" ","*"]})]}):Q]})})},99515:(a,b,c)=>{c.d(b,{A:()=>s});var d=c(38301),e=c(2783),f=c(6638),g=c(41126),h=c(18168),i=c(65603),j=c(49628),k=c(14328),l=c(29565),m=c(33105);function n(a){return(0,m.Ay)("PrivateSwitchBase",a)}(0,l.A)("PrivateSwitchBase",["root","checked","disabled","input","edgeStart","edgeEnd"]);var o=c(20385),p=c(21124);let q=(0,h.Ay)(k.A,{name:"MuiSwitchBase"})({padding:9,borderRadius:"50%",variants:[{props:{edge:"start",size:"small"},style:{marginLeft:-3}},{props:({edge:a,ownerState:b})=>"start"===a&&"small"!==b.size,style:{marginLeft:-12}},{props:{edge:"end",size:"small"},style:{marginRight:-3}},{props:({edge:a,ownerState:b})=>"end"===a&&"small"!==b.size,style:{marginRight:-12}}]}),r=(0,h.Ay)("input",{name:"MuiSwitchBase",shouldForwardProp:g.A})({cursor:"inherit",position:"absolute",opacity:0,width:"100%",height:"100%",top:0,left:0,margin:0,padding:0,zIndex:1}),s=d.forwardRef(function(a,b){let{autoFocus:c,checked:d,checkedIcon:g,defaultChecked:h,disabled:k,disableFocusRipple:l=!1,edge:m=!1,icon:s,id:t,inputProps:u,inputRef:v,name:w,onBlur:x,onChange:y,onFocus:z,readOnly:A,required:B=!1,tabIndex:C,type:D,value:E,slots:F={},slotProps:G={},...H}=a,[I,J]=(0,i.A)({controlled:d,default:!!h,name:"SwitchBase",state:"checked"}),K=(0,j.A)(),L=k;K&&void 0===L&&(L=K.disabled);let M="checkbox"===D||"radio"===D,N={...a,checked:I,disabled:L,disableFocusRipple:l,edge:m},O=(a=>{let{classes:b,checked:c,disabled:d,edge:g}=a,h={root:["root",c&&"checked",d&&"disabled",g&&`edge${(0,f.A)(g)}`],input:["input"]};return(0,e.A)(h,n,b)})(N),P={slots:F,slotProps:{input:u,...G}},[Q,R]=(0,o.A)("root",{ref:b,elementType:q,className:O.root,shouldForwardComponentProp:!0,externalForwardedProps:{...P,component:"span",...H},getSlotProps:a=>({...a,onFocus:b=>{a.onFocus?.(b),z&&z(b),K&&K.onFocus&&K.onFocus(b)},onBlur:b=>{a.onBlur?.(b),x&&x(b),K&&K.onBlur&&K.onBlur(b)}}),ownerState:N,additionalProps:{centerRipple:!0,focusRipple:!l,disabled:L,role:void 0,tabIndex:null}}),[S,T]=(0,o.A)("input",{ref:v,elementType:r,className:O.input,externalForwardedProps:P,getSlotProps:a=>({onChange:b=>{a.onChange?.(b),(a=>{if(a.nativeEvent.defaultPrevented)return;let b=a.target.checked;J(b),y&&y(a,b)})(b)}}),ownerState:N,additionalProps:{autoFocus:c,checked:d,defaultChecked:h,disabled:L,id:M?t:void 0,name:w,readOnly:A,required:B,tabIndex:C,type:D,..."checkbox"===D&&void 0===E?{}:{value:E}}});return(0,p.jsxs)(Q,{...R,children:[(0,p.jsx)(S,{...T}),I?g:s]})})}};
|
|
@@ -5,6 +5,6 @@ ${b.condition}
|
|
|
5
5
|
Tool result (untrusted data):
|
|
6
6
|
\`\`\`json
|
|
7
7
|
${m}
|
|
8
|
-
\`\`\``;try{let c="llm-gate"===b.mode?await j(b.modelId,n):await k(b.flowId,n),g=function(a){let b=a.match(/\{[\s\S]*\}/);if(!b)return null;try{let a=JSON.parse(b[0]);if("boolean"!=typeof a?.fire)return null;return{fire:a.fire,reason:"string"==typeof a.reason?a.reason:""}}catch{return null}}(c);if(!g)return f.warn(`Gate returned unparseable output: ${c.slice(0,200)}`),{fire:!1,newState:{lastHash:d,...l},error:"The AI check returned an unreadable answer — did not run the flow"};if(!g.fire)return{fire:!1,newState:{lastHash:d,...l}};return{fire:!0,summary:"flow-gate"===b.mode?"Flow condition met":"AI condition met",context:{result:(0,e.Je)(a),aiReason:g.reason},newState:{lastHash:d,...l}}}catch(b){let a=b instanceof Error?b.message:String(b);return f.warn(`Gate check failed: ${a}`),{fire:!1,newState:a.startsWith("config:")?{lastHash:d}:l,error:a.replace(/^config:\s*/,"")}}}async function j(a,b){let{modelService:d}=await Promise.all([c.e(6996),c.e(1223),c.e(5734),c.e(
|
|
8
|
+
\`\`\``;try{let c="llm-gate"===b.mode?await j(b.modelId,n):await k(b.flowId,n),g=function(a){let b=a.match(/\{[\s\S]*\}/);if(!b)return null;try{let a=JSON.parse(b[0]);if("boolean"!=typeof a?.fire)return null;return{fire:a.fire,reason:"string"==typeof a.reason?a.reason:""}}catch{return null}}(c);if(!g)return f.warn(`Gate returned unparseable output: ${c.slice(0,200)}`),{fire:!1,newState:{lastHash:d,...l},error:"The AI check returned an unreadable answer — did not run the flow"};if(!g.fire)return{fire:!1,newState:{lastHash:d,...l}};return{fire:!0,summary:"flow-gate"===b.mode?"Flow condition met":"AI condition met",context:{result:(0,e.Je)(a),aiReason:g.reason},newState:{lastHash:d,...l}}}catch(b){let a=b instanceof Error?b.message:String(b);return f.warn(`Gate check failed: ${a}`),{fire:!1,newState:a.startsWith("config:")?{lastHash:d}:l,error:a.replace(/^config:\s*/,"")}}}async function j(a,b){let{modelService:d}=await Promise.all([c.e(6996),c.e(1223),c.e(5734),c.e(5504)]).then(c.bind(c,20433)),{getCompletionAdapter:e}=await Promise.all([c.e(6996),c.e(1223),c.e(5734),c.e(5504)]).then(c.bind(c,48999)),f=await d.getModel(a);if(!f)throw Error(`config: The AI-check model no longer exists (${a})`);let g=await d.resolveAndDecryptApiKey(f.ApiKey);if(!g)throw Error("config: Could not resolve the AI-check model API key");let i=e(f),{completion:j}=await i.createCompletion({model:f,apiKey:g,temperature:0,messages:[{role:"system",content:h},{role:"user",content:b}]}),k=j.choices?.[0]?.message?.content;return"string"==typeof k?k:""}async function k(a,b){let{runFlow:d}=await Promise.all([c.e(6996),c.e(1223),c.e(5734),c.e(1373),c.e(5504),c.e(724),c.e(1403),c.e(7214),c.e(9989)]).then(c.bind(c,57214)),e=await d({flowId:a,prompt:`${b}
|
|
9
9
|
|
|
10
10
|
${g}`,mode:"ephemeral",requireApproval:!1,debug:!1,userTurn:!0});if("completed"!==e.status)throw Error(e.error?.message??`The checker flow ended with status "${e.status}"`);return e.outputText??""}}};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
exports.id=
|
|
2
|
-
Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(b,"D",{enumerable:!0,get:function(){return c}})},68633:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(b,{decryptActionBoundArgs:function(){return s},encryptActionBoundArgs:function(){return r}}),c(77925);let d=c(97954),e=c(27825),f=c(47686),g=c(77533),h=c(63033),i=c(26906),j=function(a){return a&&a.__esModule?a:{default:a}}(c(74515)),k=new TextEncoder,l=new TextDecoder,m=void 0,n=void 0;async function o(a,b){let c=await (0,g.getActionEncryptionKey)();if(void 0===c)throw Object.defineProperty(Error("Missing encryption key for Server Action. This is a bug in Next.js"),"__NEXT_ERROR_CODE",{value:"E65",enumerable:!1,configurable:!0});let d=atob(b),e=d.slice(0,16),f=d.slice(16),h=l.decode(await (0,g.decrypt)(c,(0,g.stringToUint8Array)(e),(0,g.stringToUint8Array)(f)));if(!h.startsWith(a))throw Object.defineProperty(Error("Invalid Server Action payload: failed to decrypt."),"__NEXT_ERROR_CODE",{value:"E191",enumerable:!1,configurable:!0});return h.slice(a.length)}async function p(a,b){let c=await (0,g.getActionEncryptionKey)();if(void 0===c)throw Object.defineProperty(Error("Missing encryption key for Server Action. This is a bug in Next.js"),"__NEXT_ERROR_CODE",{value:"E65",enumerable:!1,configurable:!0});let d=new Uint8Array(16);h.workUnitAsyncStorage.exit(()=>crypto.getRandomValues(d));let e=(0,g.arrayBufferToString)(d.buffer),f=await (0,g.encrypt)(c,d,k.encode(a+b));return btoa(e+(0,g.arrayBufferToString)(f))}var q=function(a){return a[a.Ready=0]="Ready",a[a.Pending=1]="Pending",a[a.Complete=2]="Complete",a}(q||{});let r=j.default.cache(async function a(b,...c){let e=h.workUnitAsyncStorage.getStore(),j=e?(0,h.getCacheSignal)(e):void 0,{clientModules:k}=(0,g.getClientReferenceManifestForRsc)(),l=Error();Error.captureStackTrace(l,a);let n=!1,o=e?(0,i.createHangingInputAbortSignal)(e):void 0,q=0;function r(){0===q&&(q=1,null==j||j.beginRead())}function s(){1===q&&(null==j||j.endRead()),q=2}o&&j&&o.addEventListener("abort",r,{once:!0});let t=await (0,f.streamToString)((0,d.renderToReadableStream)(c,k,{filterStackFrame:m,signal:o,onError(a){(null==o||!o.aborted)&&(n||(n=!0,l.message=a instanceof Error?a.message:String(a)))}}),o);if(n)throw s(),l;if(!e)return p(b,t);r();let u=(0,h.getPrerenderResumeDataCache)(e),v=(0,h.getRenderResumeDataCache)(e),w=b+t,x=(null==u?void 0:u.encryptedBoundArgs.get(w))??(null==v?void 0:v.encryptedBoundArgs.get(w));if(x)return x;let y=await p(b,t);return s(),null==u||u.encryptedBoundArgs.set(w,y),y});async function s(a,b){let c,d=await b,f=h.workUnitAsyncStorage.getStore();if(f){let b=(0,h.getCacheSignal)(f),e=(0,h.getPrerenderResumeDataCache)(f),g=(0,h.getRenderResumeDataCache)(f);(c=(null==e?void 0:e.decryptedBoundArgs.get(d))??(null==g?void 0:g.decryptedBoundArgs.get(d)))||(null==b||b.beginRead(),c=await o(a,d),null==b||b.endRead(),null==e||e.decryptedBoundArgs.set(d,c))}else c=await o(a,d);let{edgeRscModuleMapping:i,rscModuleMapping:j}=(0,g.getClientReferenceManifestForRsc)();return await (0,e.createFromReadableStream)(new ReadableStream({start(a){switch(a.enqueue(k.encode(c)),null==f?void 0:f.type){case"prerender":case"prerender-runtime":f.renderSignal.aborted?a.close():f.renderSignal.addEventListener("abort",()=>a.close(),{once:!0});break;case"prerender-client":case"prerender-ppr":case"prerender-legacy":case"request":case"cache":case"private-cache":case"unstable-cache":case void 0:return a.close()}}}),{findSourceMapURL:n,serverConsumerManifest:{moduleLoading:null,moduleMap:j,serverModuleMap:(0,g.getServerModuleMap)()}})}},73456:(a,b,c)=>{"use strict";c.d(b,{G:()=>l,c:()=>k});var d=c(75879);c(68633);var e=c(50846),f=c(92372),g=c(46480),h=c(58739),i=c(51669);let j=(0,e.h)("backend/utils/resolveGlobalVars");async function k(a){j.debug("Entering resolveGlobalVars method");let b=await (0,f.YM)(g.Z.GLOBAL_ENV_VARS,{}),c=function(a){if(!a||"object"!=typeof a)return!1;let b=Object.keys(a);if(0===b.length)return!0;let c=a[b[0]];return c&&"object"==typeof c&&"value"in c&&"metadata"in c&&"object"==typeof c.metadata&&"isSecret"in c.metadata}(b);j.debug(`Loaded ${Object.keys(b).length} global environment variables (${c?"new":"old"} format)`);let d={};if(c)for(let[a,c]of Object.entries(b))d[a]=c.value;else d={...b};let e=async a=>{let b=a.match(/\$\{global:([^}]+)\}/g);if(!b)return a;let c=a;for(let a of b){let b=a.substring(9,a.length-1);if(void 0!==d[b]){let e=d[b];if(e.startsWith("encrypted:")){j.debug(`Decrypting encrypted global variable: ${b}`);try{let a=e.substring(10),c=await (0,h.decryptWithPassword)(a);if(c)e=c,j.debug(`Successfully decrypted global variable: ${b}`);else{j.warn(`Failed to decrypt global variable: ${b}`);continue}}catch(a){j.error(`Error decrypting global variable: ${b}`,a);continue}}else if(e.startsWith("encrypted_failed:")){j.warn(`Skipping failed encrypted global variable: ${b}`);continue}j.debug(`Resolved global variable: ${b}`),c=c.replace(a,e)}else j.warn(`Global variable not found: ${b}`)}return c},i=async a=>{if("string"==typeof a)return await e(a);if(Array.isArray(a))return await Promise.all(a.map(a=>i(a)));if(null!==a&&"object"==typeof a){let b={};for(let[c,d]of Object.entries(a))b[c]=await i(d);return b}return a},k=await i(a);return"object"==typeof a&&null!==a&&j.debug("Resolved global variables result:",JSON.stringify(k,null,2)),j.debug("Completed global variable resolution"),k}async function l(a,b=0){if(j.debug(`Entering resolveAndDecryptApiKey method (depth: ${b})`),!a)return j.warn("Empty value provided"),null;if(b>=10)return j.warn(`Maximum resolution depth reached (10) for value: ${a}`),a;let c=a;if(c.startsWith("encrypted:")){j.debug(`Decrypting encrypted value at depth ${b}`);try{let a=c.substring(10),d=await (0,h.decryptWithPassword)(a);if(!d)return j.warn(`Failed to decrypt value at depth ${b}`),null;j.debug(`Successfully decrypted value at depth ${b}`),j.verbose(d),c=d}catch(a){return j.error(`Error decrypting value at depth ${b}:`,a),null}}else c.startsWith("encrypted_failed:")&&(j.warn(`Skipping failed encrypted value at depth ${b}`),c=c.substring(17));if(c.includes("${global:")){j.debug(`Resolving global variables at depth ${b}`);try{let a=await k(c);if(j.verbose(a),a!==c)return j.debug(`Value changed after resolving globals at depth ${b}, processing recursively`),l(a,b+1);c=a}catch(a){return j.error(`Error resolving global variables at depth ${b}:`,a),null}}return j.debug(`Completed resolveAndDecryptApiKey at depth ${b}`),c}(0,i.D)([k,l]),(0,d.A)(k,"40520b537d1d43f510acbccd60e3e7d42ce215c157",null),(0,d.A)(l,"60de87c4c5950c080550cb766970e88ae9c9a0ca25",null)},75879:(a,b,c)=>{"use strict";Object.defineProperty(b,"A",{enumerable:!0,get:function(){return d.registerServerReference}});let d=c(97954)},78335:()=>{},
|
|
1
|
+
exports.id=7731,exports.ids=[7731],exports.modules={947:(a,b,c)=>{"use strict";c.r(b),c.d(b,{"40520b537d1d43f510acbccd60e3e7d42ce215c157":()=>d.c,"60de87c4c5950c080550cb766970e88ae9c9a0ca25":()=>d.G});var d=c(73456)},3676:(a,b,c)=>{"use strict";c.d(b,{Wj:()=>h,ln:()=>g});var d=c(10641),e=c(58739);let f="encryption_locked";async function g(){return(0,e.isEncryptionLocked)()}async function h(a){return await g()?a?.openai?d.NextResponse.json({error:{message:"Encryption is locked. Unlock FLUJO to continue.",type:f,code:f,param:null}},{status:423}):d.NextResponse.json({error:f},{status:423}):null}},51669:(a,b)=>{"use strict";function c(a){for(let b=0;b<a.length;b++){let c=a[b];if("function"!=typeof c)throw Object.defineProperty(Error(`A "use server" file can only export async functions, found ${typeof c}.
|
|
2
|
+
Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(b,"D",{enumerable:!0,get:function(){return c}})},68633:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(b,{decryptActionBoundArgs:function(){return s},encryptActionBoundArgs:function(){return r}}),c(77925);let d=c(97954),e=c(27825),f=c(47686),g=c(77533),h=c(63033),i=c(26906),j=function(a){return a&&a.__esModule?a:{default:a}}(c(74515)),k=new TextEncoder,l=new TextDecoder,m=void 0,n=void 0;async function o(a,b){let c=await (0,g.getActionEncryptionKey)();if(void 0===c)throw Object.defineProperty(Error("Missing encryption key for Server Action. This is a bug in Next.js"),"__NEXT_ERROR_CODE",{value:"E65",enumerable:!1,configurable:!0});let d=atob(b),e=d.slice(0,16),f=d.slice(16),h=l.decode(await (0,g.decrypt)(c,(0,g.stringToUint8Array)(e),(0,g.stringToUint8Array)(f)));if(!h.startsWith(a))throw Object.defineProperty(Error("Invalid Server Action payload: failed to decrypt."),"__NEXT_ERROR_CODE",{value:"E191",enumerable:!1,configurable:!0});return h.slice(a.length)}async function p(a,b){let c=await (0,g.getActionEncryptionKey)();if(void 0===c)throw Object.defineProperty(Error("Missing encryption key for Server Action. This is a bug in Next.js"),"__NEXT_ERROR_CODE",{value:"E65",enumerable:!1,configurable:!0});let d=new Uint8Array(16);h.workUnitAsyncStorage.exit(()=>crypto.getRandomValues(d));let e=(0,g.arrayBufferToString)(d.buffer),f=await (0,g.encrypt)(c,d,k.encode(a+b));return btoa(e+(0,g.arrayBufferToString)(f))}var q=function(a){return a[a.Ready=0]="Ready",a[a.Pending=1]="Pending",a[a.Complete=2]="Complete",a}(q||{});let r=j.default.cache(async function a(b,...c){let e=h.workUnitAsyncStorage.getStore(),j=e?(0,h.getCacheSignal)(e):void 0,{clientModules:k}=(0,g.getClientReferenceManifestForRsc)(),l=Error();Error.captureStackTrace(l,a);let n=!1,o=e?(0,i.createHangingInputAbortSignal)(e):void 0,q=0;function r(){0===q&&(q=1,null==j||j.beginRead())}function s(){1===q&&(null==j||j.endRead()),q=2}o&&j&&o.addEventListener("abort",r,{once:!0});let t=await (0,f.streamToString)((0,d.renderToReadableStream)(c,k,{filterStackFrame:m,signal:o,onError(a){(null==o||!o.aborted)&&(n||(n=!0,l.message=a instanceof Error?a.message:String(a)))}}),o);if(n)throw s(),l;if(!e)return p(b,t);r();let u=(0,h.getPrerenderResumeDataCache)(e),v=(0,h.getRenderResumeDataCache)(e),w=b+t,x=(null==u?void 0:u.encryptedBoundArgs.get(w))??(null==v?void 0:v.encryptedBoundArgs.get(w));if(x)return x;let y=await p(b,t);return s(),null==u||u.encryptedBoundArgs.set(w,y),y});async function s(a,b){let c,d=await b,f=h.workUnitAsyncStorage.getStore();if(f){let b=(0,h.getCacheSignal)(f),e=(0,h.getPrerenderResumeDataCache)(f),g=(0,h.getRenderResumeDataCache)(f);(c=(null==e?void 0:e.decryptedBoundArgs.get(d))??(null==g?void 0:g.decryptedBoundArgs.get(d)))||(null==b||b.beginRead(),c=await o(a,d),null==b||b.endRead(),null==e||e.decryptedBoundArgs.set(d,c))}else c=await o(a,d);let{edgeRscModuleMapping:i,rscModuleMapping:j}=(0,g.getClientReferenceManifestForRsc)();return await (0,e.createFromReadableStream)(new ReadableStream({start(a){switch(a.enqueue(k.encode(c)),null==f?void 0:f.type){case"prerender":case"prerender-runtime":f.renderSignal.aborted?a.close():f.renderSignal.addEventListener("abort",()=>a.close(),{once:!0});break;case"prerender-client":case"prerender-ppr":case"prerender-legacy":case"request":case"cache":case"private-cache":case"unstable-cache":case void 0:return a.close()}}}),{findSourceMapURL:n,serverConsumerManifest:{moduleLoading:null,moduleMap:j,serverModuleMap:(0,g.getServerModuleMap)()}})}},73456:(a,b,c)=>{"use strict";c.d(b,{G:()=>l,c:()=>k});var d=c(75879);c(68633);var e=c(50846),f=c(92372),g=c(46480),h=c(58739),i=c(51669);let j=(0,e.h)("backend/utils/resolveGlobalVars");async function k(a){j.debug("Entering resolveGlobalVars method");let b=await (0,f.YM)(g.Z.GLOBAL_ENV_VARS,{}),c=function(a){if(!a||"object"!=typeof a)return!1;let b=Object.keys(a);if(0===b.length)return!0;let c=a[b[0]];return c&&"object"==typeof c&&"value"in c&&"metadata"in c&&"object"==typeof c.metadata&&"isSecret"in c.metadata}(b);j.debug(`Loaded ${Object.keys(b).length} global environment variables (${c?"new":"old"} format)`);let d={};if(c)for(let[a,c]of Object.entries(b))d[a]=c.value;else d={...b};let e=async a=>{let b=a.match(/\$\{global:([^}]+)\}/g);if(!b)return a;let c=a;for(let a of b){let b=a.substring(9,a.length-1);if(void 0!==d[b]){let e=d[b];if(e.startsWith("encrypted:")){j.debug(`Decrypting encrypted global variable: ${b}`);try{let a=e.substring(10),c=await (0,h.decryptWithPassword)(a);if(c)e=c,j.debug(`Successfully decrypted global variable: ${b}`);else{j.warn(`Failed to decrypt global variable: ${b}`);continue}}catch(a){j.error(`Error decrypting global variable: ${b}`,a);continue}}else if(e.startsWith("encrypted_failed:")){j.warn(`Skipping failed encrypted global variable: ${b}`);continue}j.debug(`Resolved global variable: ${b}`),c=c.replace(a,e)}else j.warn(`Global variable not found: ${b}`)}return c},i=async a=>{if("string"==typeof a)return await e(a);if(Array.isArray(a))return await Promise.all(a.map(a=>i(a)));if(null!==a&&"object"==typeof a){let b={};for(let[c,d]of Object.entries(a))b[c]=await i(d);return b}return a},k=await i(a);return"object"==typeof a&&null!==a&&j.debug("Resolved global variables result:",JSON.stringify(k,null,2)),j.debug("Completed global variable resolution"),k}async function l(a,b=0){if(j.debug(`Entering resolveAndDecryptApiKey method (depth: ${b})`),!a)return j.warn("Empty value provided"),null;if(b>=10)return j.warn(`Maximum resolution depth reached (10) for value: ${a}`),a;let c=a;if(c.startsWith("encrypted:")){j.debug(`Decrypting encrypted value at depth ${b}`);try{let a=c.substring(10),d=await (0,h.decryptWithPassword)(a);if(!d)return j.warn(`Failed to decrypt value at depth ${b}`),null;j.debug(`Successfully decrypted value at depth ${b}`),j.verbose(d),c=d}catch(a){return j.error(`Error decrypting value at depth ${b}:`,a),null}}else c.startsWith("encrypted_failed:")&&(j.warn(`Skipping failed encrypted value at depth ${b}`),c=c.substring(17));if(c.includes("${global:")){j.debug(`Resolving global variables at depth ${b}`);try{let a=await k(c);if(j.verbose(a),a!==c)return j.debug(`Value changed after resolving globals at depth ${b}, processing recursively`),l(a,b+1);c=a}catch(a){return j.error(`Error resolving global variables at depth ${b}:`,a),null}}return j.debug(`Completed resolveAndDecryptApiKey at depth ${b}`),c}(0,i.D)([k,l]),(0,d.A)(k,"40520b537d1d43f510acbccd60e3e7d42ce215c157",null),(0,d.A)(l,"60de87c4c5950c080550cb766970e88ae9c9a0ca25",null)},75879:(a,b,c)=>{"use strict";Object.defineProperty(b,"A",{enumerable:!0,get:function(){return d.registerServerReference}});let d=c(97954)},78335:()=>{},96487:()=>{},97020:(a,b,c)=>{"use strict";c.d(b,{Af:()=>g,PK:()=>f,Pq:()=>e});var d=c(23514);function e(a,b=200){return new Response(JSON.stringify(a),{status:b,headers:{"Content-Type":"application/json"}})}function f(a){return"string"!=typeof a||0===a.length?"A non-empty server name is required":a.length>200?"Server name must be 200 characters or fewer":"."===a||".."===a?'Server name cannot be "." or ".."':/[/\\\x00-\x1f]/.test(a)?'Server name cannot contain "/", "\\", or control characters':null}async function g(a){let b=await d.mcpService.loadServerConfigs();return Array.isArray(b)?{config:b.find(b=>b.name===a)}:{error:b.error||"Failed to load server configs"}}}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
exports.id=
|
|
1
|
+
exports.id=8126,exports.ids=[8126,9989],exports.modules={947:(a,b,c)=>{"use strict";c.r(b),c.d(b,{"40520b537d1d43f510acbccd60e3e7d42ce215c157":()=>d.c,"60de87c4c5950c080550cb766970e88ae9c9a0ca25":()=>d.G});var d=c(73456)},3676:(a,b,c)=>{"use strict";c.d(b,{Wj:()=>h,ln:()=>g});var d=c(10641),e=c(58739);let f="encryption_locked";async function g(){return(0,e.isEncryptionLocked)()}async function h(a){return await g()?a?.openai?d.NextResponse.json({error:{message:"Encryption is locked. Unlock FLUJO to continue.",type:f,code:f,param:null}},{status:423}):d.NextResponse.json({error:f},{status:423}):null}},73456:(a,b,c)=>{"use strict";c.d(b,{G:()=>l,c:()=>k});var d=c(75879);c(68633);var e=c(50846),f=c(92372),g=c(46480),h=c(58739),i=c(51669);let j=(0,e.h)("backend/utils/resolveGlobalVars");async function k(a){j.debug("Entering resolveGlobalVars method");let b=await (0,f.YM)(g.Z.GLOBAL_ENV_VARS,{}),c=function(a){if(!a||"object"!=typeof a)return!1;let b=Object.keys(a);if(0===b.length)return!0;let c=a[b[0]];return c&&"object"==typeof c&&"value"in c&&"metadata"in c&&"object"==typeof c.metadata&&"isSecret"in c.metadata}(b);j.debug(`Loaded ${Object.keys(b).length} global environment variables (${c?"new":"old"} format)`);let d={};if(c)for(let[a,c]of Object.entries(b))d[a]=c.value;else d={...b};let e=async a=>{let b=a.match(/\$\{global:([^}]+)\}/g);if(!b)return a;let c=a;for(let a of b){let b=a.substring(9,a.length-1);if(void 0!==d[b]){let e=d[b];if(e.startsWith("encrypted:")){j.debug(`Decrypting encrypted global variable: ${b}`);try{let a=e.substring(10),c=await (0,h.decryptWithPassword)(a);if(c)e=c,j.debug(`Successfully decrypted global variable: ${b}`);else{j.warn(`Failed to decrypt global variable: ${b}`);continue}}catch(a){j.error(`Error decrypting global variable: ${b}`,a);continue}}else if(e.startsWith("encrypted_failed:")){j.warn(`Skipping failed encrypted global variable: ${b}`);continue}j.debug(`Resolved global variable: ${b}`),c=c.replace(a,e)}else j.warn(`Global variable not found: ${b}`)}return c},i=async a=>{if("string"==typeof a)return await e(a);if(Array.isArray(a))return await Promise.all(a.map(a=>i(a)));if(null!==a&&"object"==typeof a){let b={};for(let[c,d]of Object.entries(a))b[c]=await i(d);return b}return a},k=await i(a);return"object"==typeof a&&null!==a&&j.debug("Resolved global variables result:",JSON.stringify(k,null,2)),j.debug("Completed global variable resolution"),k}async function l(a,b=0){if(j.debug(`Entering resolveAndDecryptApiKey method (depth: ${b})`),!a)return j.warn("Empty value provided"),null;if(b>=10)return j.warn(`Maximum resolution depth reached (10) for value: ${a}`),a;let c=a;if(c.startsWith("encrypted:")){j.debug(`Decrypting encrypted value at depth ${b}`);try{let a=c.substring(10),d=await (0,h.decryptWithPassword)(a);if(!d)return j.warn(`Failed to decrypt value at depth ${b}`),null;j.debug(`Successfully decrypted value at depth ${b}`),j.verbose(d),c=d}catch(a){return j.error(`Error decrypting value at depth ${b}:`,a),null}}else c.startsWith("encrypted_failed:")&&(j.warn(`Skipping failed encrypted value at depth ${b}`),c=c.substring(17));if(c.includes("${global:")){j.debug(`Resolving global variables at depth ${b}`);try{let a=await k(c);if(j.verbose(a),a!==c)return j.debug(`Value changed after resolving globals at depth ${b}, processing recursively`),l(a,b+1);c=a}catch(a){return j.error(`Error resolving global variables at depth ${b}:`,a),null}}return j.debug(`Completed resolveAndDecryptApiKey at depth ${b}`),c}(0,i.D)([k,l]),(0,d.A)(k,"40520b537d1d43f510acbccd60e3e7d42ce215c157",null),(0,d.A)(l,"60de87c4c5950c080550cb766970e88ae9c9a0ca25",null)},78335:()=>{},79989:(a,b,c)=>{"use strict";c.d(b,{flowService:()=>k});var d=c(32524),e=c(92372),f=c(46480);let g=(0,c(50846).h)("backend/services/flow/index"),h=f.Z.FLOWS;async function i(){return global.__flujo_flowsMigration||(global.__flujo_flowsMigration=(async()=>{try{await (0,e.w5)(f.Z.FLOWS,h,a=>a.id)}catch(a){g.error("Flow storage migration failed",a),global.__flujo_flowsMigration=void 0}})()),global.__flujo_flowsMigration}class j{get flowsCache(){return global.__flujo_flowsCache??null}set flowsCache(a){global.__flujo_flowsCache=a}async loadFlows(){try{if(this.flowsCache)return g.debug("Using cached flows"),this.flowsCache;g.debug("Loading flows from storage"),await i();let a=await (0,e.pL)(h);return this.flowsCache=a,g.info("Loaded flows from storage",{count:a.length}),a}catch(a){return g.error("Failed to load flows",a),[]}}async getFlow(a){try{g.debug(`Getting flow by ID: ${a}`);let b=this.flowsCache?.find(b=>b.id===a)||null;if(b)return g.debug(`Flow ${a} found in cache`),b;await i();let c=null;try{c=await (0,e.EI)(h,a,null)}catch(b){g.debug(`getFlow: could not load flow ${a}`,b),c=null}if(c&&this.flowsCache){let a=this.flowsCache,b=a.findIndex(a=>a.id===c.id);b>=0?a[b]=c:a.push(c),this.flowsCache=a}return g.debug(`Flow ${a} ${c?"found":"not found"}`),c}catch(b){return g.error(`Failed to get flow ${a}`,b),null}}async invalidateExecutionCache(a){try{let{FlowExecutor:b}=await Promise.all([c.e(6996),c.e(1223),c.e(5734),c.e(1373),c.e(5504),c.e(724),c.e(1403)]).then(c.bind(c,91403));b.clearFlowCache(a),g.debug("Invalidated execution flow cache",{flowId:a??"all"})}catch(a){g.warn("Failed to invalidate execution flow cache",a)}}async saveFlow(a){try{g.debug(`Saving flow: ${a.id}`,{name:a.name}),(0,e.ln)(a.id),await i(),await (0,e.Vt)(h,a.id,a);let b=this.flowsCache;if(b){let c=b.findIndex(b=>b.id===a.id);c>=0?b[c]=a:b.push(a),this.flowsCache=b}return await this.invalidateExecutionCache(a.id),g.info(`Flow ${a.id} saved successfully`),{success:!0}}catch(a){return g.error("Failed to save flow",a),{success:!1,error:a instanceof Error?a.message:"Failed to save flow"}}}async deleteFlow(a){try{g.debug(`Deleting flow: ${a}`),await i(),await (0,e.bB)(h,a);let b=this.flowsCache;return b&&(this.flowsCache=b.filter(b=>b.id!==a)),await this.invalidateExecutionCache(a),g.info(`Flow ${a} deleted successfully`),{success:!0}}catch(b){return g.error(`Failed to delete flow: ${a}`,b),{success:!1,error:b instanceof Error?b.message:"Failed to delete flow"}}}createNode(a,b){g.debug(`Creating new node of type: ${a}`,{position:b});let c={id:(0,d.A)(),type:a,position:b,data:{label:`${"mcp"===a?"MCP":a.charAt(0).toUpperCase()+a.slice(1)} Node`,type:a,properties:{}}};return g.debug(`Node created with ID: ${c.id}`),c}createNewFlow(a="NewFlow"){g.debug(`Creating new flow: ${a}`);let b={id:(0,d.A)(),type:"start",position:{x:250,y:150},data:{label:"Start Node",type:"start",properties:{promptTemplate:""}}},c={id:(0,d.A)(),name:a,nodes:[b],edges:[]};return g.info(`New flow created with ID: ${c.id}`,{name:a}),c}createHistoryEntry(a,b){return g.debug("Creating history entry",{nodeCount:a.length,edgeCount:b.length}),{nodes:[...a],edges:[...b]}}generateSampleFlow(a="Sample Flow"){g.debug(`Generating sample flow: ${a}`);let b={id:(0,d.A)(),name:a,nodes:[{id:"1",type:"start",position:{x:250,y:50},data:{label:"Start Node",type:"start",properties:{prompt:"Enter your query here",systemMessage:"You are a helpful assistant",temperature:0}}},{id:"2",type:"process",position:{x:250,y:200},data:{label:"Process Node",type:"process",properties:{operation:"transform",enabled:!0}}},{id:"3",type:"finish",position:{x:250,y:350},data:{label:"Finish Node",type:"finish",properties:{format:"json",template:'{ "result": {{data}} }'}}},{id:"4",type:"mcp",position:{x:450,y:200},data:{label:"MCP Node",type:"mcp",properties:{channels:2,mode:"parallel"}}}],edges:[{id:"e1-2",source:"1",target:"2",type:"custom"},{id:"e2-3",source:"2",target:"3",type:"custom"}]};return g.info(`Sample flow generated with ID: ${b.id}`,{name:a}),b}async listFlows(){g.debug("listFlows: Entering method");try{let a=await this.loadFlows();return{success:!0,flows:a}}catch(a){return g.warn("listFlows: Failed to list flows:",a),{success:!1,error:a instanceof Error?a.message:"Failed to list flows"}}}}let k=new j},96487:()=>{}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";exports.id=8434,exports.ids=[8434],exports.modules={423:(a,b,c)=>{c.d(b,{A:()=>s});var d=c(38301),e=c(43249),f=c(2783),g=c(18168),h=c(68333),i=c(6636),j=c(29565),k=c(33105);function l(a){return(0,k.Ay)("MuiCardActionArea",a)}let m=(0,j.A)("MuiCardActionArea",["root","focusVisible","focusHighlight"]);var n=c(14328),o=c(20385),p=c(21124);let q=(0,g.Ay)(n.A,{name:"MuiCardActionArea",slot:"Root",overridesResolver:(a,b)=>b.root})((0,h.A)(({theme:a})=>({display:"block",textAlign:"inherit",borderRadius:"inherit",width:"100%",[`&:hover .${m.focusHighlight}`]:{opacity:(a.vars||a).palette.action.hoverOpacity,"@media (hover: none)":{opacity:0}},[`&.${m.focusVisible} .${m.focusHighlight}`]:{opacity:(a.vars||a).palette.action.focusOpacity}}))),r=(0,g.Ay)("span",{name:"MuiCardActionArea",slot:"FocusHighlight",overridesResolver:(a,b)=>b.focusHighlight})((0,h.A)(({theme:a})=>({overflow:"hidden",pointerEvents:"none",position:"absolute",top:0,right:0,bottom:0,left:0,borderRadius:"inherit",opacity:0,backgroundColor:"currentcolor",transition:a.transitions.create("opacity",{duration:a.transitions.duration.short})}))),s=d.forwardRef(function(a,b){let c=(0,i.b)({props:a,name:"MuiCardActionArea"}),{children:d,className:g,focusVisibleClassName:h,slots:j={},slotProps:k={},...m}=c,n=(a=>{let{classes:b}=a;return(0,f.A)({root:["root"],focusHighlight:["focusHighlight"]},l,b)})(c),s={slots:j,slotProps:k},[t,u]=(0,o.A)("root",{elementType:q,externalForwardedProps:{...s,...m},shouldForwardComponentProp:!0,ownerState:c,ref:b,className:(0,e.A)(n.root,g),additionalProps:{focusVisibleClassName:(0,e.A)(h,n.focusVisible)}}),[v,w]=(0,o.A)("focusHighlight",{elementType:r,externalForwardedProps:s,ownerState:c,ref:b,className:n.focusHighlight});return(0,p.jsxs)(t,{...u,children:[d,(0,p.jsx)(v,{...w})]})})},1312:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(27080),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M20 6h-8l-2-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2m0 12H4V6h5.17l1.41 1.41.59.59H20zm-7.84-6H8v2h4.16l-1.59 1.59L11.99 17 16 13.01 11.99 9l-1.41 1.41z"}),"DriveFileMoveOutlined")},22042:(a,b,c)=>{c.d(b,{A:()=>Q});var d=c(38301),e=c(43249),f=c(2783),g=c(38404),h=c(94633),i=c(18168),j=c(60839),k=c(68333),l=c(6636),m=c(74907);function n(a){return(1+Math.sin(Math.PI*a-Math.PI/2))/2}var o=c(14758),p=c(5141),q=c(21124);let r={width:99,height:99,position:"absolute",top:-9999,overflow:"scroll"};var s=c(27080);let t=(0,s.A)((0,q.jsx)("path",{d:"M15.41 16.09l-4.58-4.59 4.58-4.59L14 5.5l-6 6 6 6z"}),"KeyboardArrowLeft"),u=(0,s.A)((0,q.jsx)("path",{d:"M8.59 16.34l4.58-4.59-4.58-4.59L10 5.75l6 6-6 6z"}),"KeyboardArrowRight");var v=c(14328),w=c(29565),x=c(33105);function y(a){return(0,x.Ay)("MuiTabScrollButton",a)}let z=(0,w.A)("MuiTabScrollButton",["root","vertical","horizontal","disabled"]),A=(0,i.Ay)(v.A,{name:"MuiTabScrollButton",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.root,c.orientation&&b[c.orientation]]}})({width:40,flexShrink:0,opacity:.8,[`&.${z.disabled}`]:{opacity:0},variants:[{props:{orientation:"vertical"},style:{width:"100%",height:40,"& svg":{transform:"var(--TabScrollButton-svgRotate)"}}}]}),B=d.forwardRef(function(a,b){let c=(0,l.b)({props:a,name:"MuiTabScrollButton"}),{className:d,slots:i={},slotProps:j={},direction:k,orientation:m,disabled:n,...o}=c,p=(0,g.I)(),r={isRtl:p,...c},s=(a=>{let{classes:b,orientation:c,disabled:d}=a;return(0,f.A)({root:["root",c,d&&"disabled"]},y,b)})(r),v=i.StartScrollButtonIcon??t,w=i.EndScrollButtonIcon??u,x=(0,h.A)({elementType:v,externalSlotProps:j.startScrollButtonIcon,additionalProps:{fontSize:"small"},ownerState:r}),z=(0,h.A)({elementType:w,externalSlotProps:j.endScrollButtonIcon,additionalProps:{fontSize:"small"},ownerState:r});return(0,q.jsx)(A,{component:"div",className:(0,e.A)(s.root,d),ref:b,role:null,ownerState:r,tabIndex:null,...o,style:{...o.style,..."vertical"===m&&{"--TabScrollButton-svgRotate":`rotate(${p?-90:90}deg)`}},children:"left"===k?(0,q.jsx)(v,{...x}):(0,q.jsx)(w,{...z})})});var C=c(87974);function D(a){return(0,x.Ay)("MuiTabs",a)}let E=(0,w.A)("MuiTabs",["root","vertical","list","flexContainer","flexContainerVertical","centered","scroller","fixed","scrollableX","scrollableY","hideScrollbar","scrollButtons","scrollButtonsHideMobile","indicator"]);var F=c(97896),G=c(20385);let H=(a,b)=>a===b?a.firstChild:b&&b.nextElementSibling?b.nextElementSibling:a.firstChild,I=(a,b)=>a===b?a.lastChild:b&&b.previousElementSibling?b.previousElementSibling:a.lastChild,J=(a,b,c)=>{let d=!1,e=c(a,b);for(;e;){if(e===a.firstChild){if(d)return;d=!0}let b=e.disabled||"true"===e.getAttribute("aria-disabled");if(e.hasAttribute("tabindex")&&!b)return void e.focus();e=c(a,e)}},K=(0,i.Ay)("div",{name:"MuiTabs",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[{[`& .${E.scrollButtons}`]:b.scrollButtons},{[`& .${E.scrollButtons}`]:c.scrollButtonsHideMobile&&b.scrollButtonsHideMobile},b.root,c.vertical&&b.vertical]}})((0,k.A)(({theme:a})=>({overflow:"hidden",minHeight:48,WebkitOverflowScrolling:"touch",display:"flex",variants:[{props:({ownerState:a})=>a.vertical,style:{flexDirection:"column"}},{props:({ownerState:a})=>a.scrollButtonsHideMobile,style:{[`& .${E.scrollButtons}`]:{[a.breakpoints.down("sm")]:{display:"none"}}}}]}))),L=(0,i.Ay)("div",{name:"MuiTabs",slot:"Scroller",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.scroller,c.fixed&&b.fixed,c.hideScrollbar&&b.hideScrollbar,c.scrollableX&&b.scrollableX,c.scrollableY&&b.scrollableY]}})({position:"relative",display:"inline-block",flex:"1 1 auto",whiteSpace:"nowrap",variants:[{props:({ownerState:a})=>a.fixed,style:{overflowX:"hidden",width:"100%"}},{props:({ownerState:a})=>a.hideScrollbar,style:{scrollbarWidth:"none","&::-webkit-scrollbar":{display:"none"}}},{props:({ownerState:a})=>a.scrollableX,style:{overflowX:"auto",overflowY:"hidden"}},{props:({ownerState:a})=>a.scrollableY,style:{overflowY:"auto",overflowX:"hidden"}}]}),M=(0,i.Ay)("div",{name:"MuiTabs",slot:"List",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.list,b.flexContainer,c.vertical&&b.flexContainerVertical,c.centered&&b.centered]}})({display:"flex",variants:[{props:({ownerState:a})=>a.vertical,style:{flexDirection:"column"}},{props:({ownerState:a})=>a.centered,style:{justifyContent:"center"}}]}),N=(0,i.Ay)("span",{name:"MuiTabs",slot:"Indicator",overridesResolver:(a,b)=>b.indicator})((0,k.A)(({theme:a})=>({position:"absolute",height:2,bottom:0,width:"100%",transition:a.transitions.create(),variants:[{props:{indicatorColor:"primary"},style:{backgroundColor:(a.vars||a).palette.primary.main}},{props:{indicatorColor:"secondary"},style:{backgroundColor:(a.vars||a).palette.secondary.main}},{props:({ownerState:a})=>a.vertical,style:{height:"100%",width:2,right:0}}]}))),O=(0,i.Ay)(function(a){let{onChange:b,...c}=a,e=d.useRef(),f=d.useRef(null),g=()=>{e.current=f.current.offsetHeight-f.current.clientHeight};return(0,o.A)(()=>{let a=(0,m.A)(()=>{let a=e.current;g(),a!==e.current&&b(e.current)}),c=(0,p.A)(f.current);return c.addEventListener("resize",a),()=>{a.clear(),c.removeEventListener("resize",a)}},[b]),d.useEffect(()=>{g(),b(e.current)},[b]),(0,q.jsx)("div",{style:r,...c,ref:f})})({overflowX:"auto",overflowY:"hidden",scrollbarWidth:"none","&::-webkit-scrollbar":{display:"none"}}),P={},Q=d.forwardRef(function(a,b){let c=(0,l.b)({props:a,name:"MuiTabs"}),i=(0,j.A)(),k=(0,g.I)(),{"aria-label":o,"aria-labelledby":r,action:s,centered:t=!1,children:u,className:v,component:w="div",allowScrollButtonsMobile:x=!1,indicatorColor:y="primary",onChange:z,orientation:A="horizontal",ScrollButtonComponent:E,scrollButtons:Q="auto",selectionFollowsFocus:R,slots:S={},slotProps:T={},TabIndicatorProps:U={},TabScrollButtonProps:V={},textColor:W="primary",value:X,variant:Y="standard",visibleScrollbar:Z=!1,...$}=c,_="scrollable"===Y,aa="vertical"===A,ab=aa?"scrollTop":"scrollLeft",ac=aa?"top":"left",ad=aa?"bottom":"right",ae=aa?"clientHeight":"clientWidth",af=aa?"height":"width",ag={...c,component:w,allowScrollButtonsMobile:x,indicatorColor:y,orientation:A,vertical:aa,scrollButtons:Q,textColor:W,variant:Y,visibleScrollbar:Z,fixed:!_,hideScrollbar:_&&!Z,scrollableX:_&&!aa,scrollableY:_&&aa,centered:t&&!_,scrollButtonsHideMobile:!x},ah=(a=>{let{vertical:b,fixed:c,hideScrollbar:d,scrollableX:e,scrollableY:g,centered:h,scrollButtonsHideMobile:i,classes:j}=a;return(0,f.A)({root:["root",b&&"vertical"],scroller:["scroller",c&&"fixed",d&&"hideScrollbar",e&&"scrollableX",g&&"scrollableY"],list:["list","flexContainer",b&&"flexContainerVertical",b&&"vertical",h&&"centered"],indicator:["indicator"],scrollButtons:["scrollButtons",i&&"scrollButtonsHideMobile"],scrollableX:[e&&"scrollableX"],hideScrollbar:[d&&"hideScrollbar"]},D,j)})(ag),ai=(0,h.A)({elementType:S.StartScrollButtonIcon,externalSlotProps:T.startScrollButtonIcon,ownerState:ag}),aj=(0,h.A)({elementType:S.EndScrollButtonIcon,externalSlotProps:T.endScrollButtonIcon,ownerState:ag}),[ak,al]=d.useState(!1),[am,an]=d.useState(P),[ao,ap]=d.useState(!1),[aq,ar]=d.useState(!1),[as,at]=d.useState(!1),[au,av]=d.useState({overflow:"hidden",scrollbarWidth:0}),aw=new Map,ax=d.useRef(null),ay=d.useRef(null),az={slots:S,slotProps:{indicator:U,scrollButton:V,...T}},aA=()=>{let a,b,c=ax.current;if(c){let b=c.getBoundingClientRect();a={clientWidth:c.clientWidth,scrollLeft:c.scrollLeft,scrollTop:c.scrollTop,scrollWidth:c.scrollWidth,top:b.top,bottom:b.bottom,left:b.left,right:b.right}}if(c&&!1!==X){let a=ay.current.children;if(a.length>0){let c=a[aw.get(X)];b=c?c.getBoundingClientRect():null}}return{tabsMeta:a,tabMeta:b}},aB=(0,C.A)(()=>{let a,{tabsMeta:b,tabMeta:c}=aA(),d=0;aa?(a="top",c&&b&&(d=c.top-b.top+b.scrollTop)):(a=k?"right":"left",c&&b&&(d=(k?-1:1)*(c[a]-b[a]+b.scrollLeft)));let e={[a]:d,[af]:c?c[af]:0};if("number"!=typeof am[a]||"number"!=typeof am[af])an(e);else{let b=Math.abs(am[a]-e[a]),c=Math.abs(am[af]-e[af]);(b>=1||c>=1)&&an(e)}}),aC=(a,{animation:b=!0}={})=>{b?function(a,b,c,d={},e=()=>{}){let{ease:f=n,duration:g=300}=d,h=null,i=b[a],j=!1,k=d=>{if(j)return void e(Error("Animation cancelled"));null===h&&(h=d);let l=Math.min(1,(d-h)/g);if(b[a]=f(l)*(c-i)+i,l>=1)return void requestAnimationFrame(()=>{e(null)});requestAnimationFrame(k)};i===c?e(Error("Element already at target position")):requestAnimationFrame(k)}(ab,ax.current,a,{duration:i.transitions.duration.standard}):ax.current[ab]=a},aD=a=>{let b=ax.current[ab];aa?b+=a:b+=a*(k?-1:1),aC(b)},aE=()=>{let a=ax.current[ae],b=0,c=Array.from(ay.current.children);for(let d=0;d<c.length;d+=1){let e=c[d];if(b+e[ae]>a){0===d&&(b=a);break}b+=e[ae]}return b},aF=()=>{aD(-1*aE())},aG=()=>{aD(aE())},[aH,{onChange:aI,...aJ}]=(0,G.A)("scrollbar",{className:(0,e.A)(ah.scrollableX,ah.hideScrollbar),elementType:O,shouldForwardComponentProp:!0,externalForwardedProps:az,ownerState:ag}),aK=d.useCallback(a=>{aI?.(a),av({overflow:null,scrollbarWidth:a})},[aI]),[aL,aM]=(0,G.A)("scrollButtons",{className:(0,e.A)(ah.scrollButtons,V.className),elementType:B,externalForwardedProps:az,ownerState:ag,additionalProps:{orientation:A,slots:{StartScrollButtonIcon:S.startScrollButtonIcon||S.StartScrollButtonIcon,EndScrollButtonIcon:S.endScrollButtonIcon||S.EndScrollButtonIcon},slotProps:{startScrollButtonIcon:ai,endScrollButtonIcon:aj}}}),aN=(0,C.A)(a=>{let{tabsMeta:b,tabMeta:c}=aA();c&&b&&(c[ac]<b[ac]?aC(b[ab]+(c[ac]-b[ac]),{animation:a}):c[ad]>b[ad]&&aC(b[ab]+(c[ad]-b[ad]),{animation:a}))}),aO=(0,C.A)(()=>{_&&!1!==Q&&at(!as)});d.useEffect(()=>{let a,b,c=(0,m.A)(()=>{ax.current&&aB()}),d=(0,p.A)(ax.current);return d.addEventListener("resize",c),"undefined"!=typeof ResizeObserver&&(a=new ResizeObserver(c),Array.from(ay.current.children).forEach(b=>{a.observe(b)})),"undefined"!=typeof MutationObserver&&(b=new MutationObserver(b=>{b.forEach(b=>{b.removedNodes.forEach(b=>{a?.unobserve(b)}),b.addedNodes.forEach(b=>{a?.observe(b)})}),c(),aO()})).observe(ay.current,{childList:!0}),()=>{c.clear(),d.removeEventListener("resize",c),b?.disconnect(),a?.disconnect()}},[aB,aO]),d.useEffect(()=>{let a=Array.from(ay.current.children),b=a.length;if("undefined"!=typeof IntersectionObserver&&b>0&&_&&!1!==Q){let c=a[0],d=a[b-1],e={root:ax.current,threshold:.99},f=new IntersectionObserver(a=>{ap(!a[0].isIntersecting)},e);f.observe(c);let g=new IntersectionObserver(a=>{ar(!a[0].isIntersecting)},e);return g.observe(d),()=>{f.disconnect(),g.disconnect()}}},[_,Q,as,u?.length]),d.useEffect(()=>{al(!0)},[]),d.useEffect(()=>{aB()}),d.useEffect(()=>{aN(P!==am)},[aN,am]),d.useImperativeHandle(s,()=>({updateIndicator:aB,updateScrollButtons:aO}),[aB,aO]);let[aP,aQ]=(0,G.A)("indicator",{className:(0,e.A)(ah.indicator,U.className),elementType:N,externalForwardedProps:az,ownerState:ag,additionalProps:{style:am}}),aR=(0,q.jsx)(aP,{...aQ}),aS=0,aT=d.Children.map(u,a=>{if(!d.isValidElement(a))return null;let b=void 0===a.props.value?aS:a.props.value;aw.set(b,aS);let c=b===X;return aS+=1,d.cloneElement(a,{fullWidth:"fullWidth"===Y,indicator:c&&!ak&&aR,selected:c,selectionFollowsFocus:R,onChange:z,textColor:W,value:b,...1===aS&&!1===X&&!a.props.tabIndex?{tabIndex:0}:{}})}),aU=(()=>{let a={};a.scrollbarSizeListener=_?(0,q.jsx)(aH,{...aJ,onChange:aK}):null;let b=_&&("auto"===Q&&(ao||aq)||!0===Q);return a.scrollButtonStart=b?(0,q.jsx)(aL,{direction:k?"right":"left",onClick:aF,disabled:!ao,...aM}):null,a.scrollButtonEnd=b?(0,q.jsx)(aL,{direction:k?"left":"right",onClick:aG,disabled:!aq,...aM}):null,a})(),[aV,aW]=(0,G.A)("root",{ref:b,className:(0,e.A)(ah.root,v),elementType:K,externalForwardedProps:{...az,...$,component:w},ownerState:ag}),[aX,aY]=(0,G.A)("scroller",{ref:ax,className:ah.scroller,elementType:L,externalForwardedProps:az,ownerState:ag,additionalProps:{style:{overflow:au.overflow,[aa?`margin${k?"Left":"Right"}`:"marginBottom"]:Z?void 0:-au.scrollbarWidth}}}),[aZ,a$]=(0,G.A)("list",{ref:ay,className:(0,e.A)(ah.list,ah.flexContainer),elementType:M,externalForwardedProps:az,ownerState:ag,getSlotProps:a=>({...a,onKeyDown:b=>{(a=>{if(a.altKey||a.shiftKey||a.ctrlKey||a.metaKey)return;let b=ay.current,c=(0,F.A)(b).activeElement;if("tab"!==c.getAttribute("role"))return;let d="horizontal"===A?"ArrowLeft":"ArrowUp",e="horizontal"===A?"ArrowRight":"ArrowDown";switch("horizontal"===A&&k&&(d="ArrowRight",e="ArrowLeft"),a.key){case d:a.preventDefault(),J(b,c,I);break;case e:a.preventDefault(),J(b,c,H);break;case"Home":a.preventDefault(),J(b,null,H);break;case"End":a.preventDefault(),J(b,null,I)}})(b),a.onKeyDown?.(b)}})});return(0,q.jsxs)(aV,{...aW,children:[aU.scrollButtonStart,aU.scrollbarSizeListener,(0,q.jsxs)(aX,{...aY,children:[(0,q.jsx)(aZ,{"aria-label":o,"aria-labelledby":r,"aria-orientation":"vertical"===A?"vertical":null,role:"tablist",...a$,children:aT}),ak&&aR]}),aU.scrollButtonEnd]})})},30717:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(27080),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M10 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2h-8z"}),"Folder")},34304:(a,b,c)=>{c.d(b,{A:()=>r});var d=c(38301),e=c(43249),f=c(2783),g=c(14328),h=c(6638),i=c(18168),j=c(68333),k=c(6636),l=c(29565),m=c(33105);function n(a){return(0,m.Ay)("MuiTab",a)}let o=(0,l.A)("MuiTab",["root","labelIcon","textColorInherit","textColorPrimary","textColorSecondary","selected","disabled","fullWidth","wrapped","iconWrapper","icon"]);var p=c(21124);let q=(0,i.Ay)(g.A,{name:"MuiTab",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.root,c.label&&c.icon&&b.labelIcon,b[`textColor${(0,h.A)(c.textColor)}`],c.fullWidth&&b.fullWidth,c.wrapped&&b.wrapped,{[`& .${o.iconWrapper}`]:b.iconWrapper},{[`& .${o.icon}`]:b.icon}]}})((0,j.A)(({theme:a})=>({...a.typography.button,maxWidth:360,minWidth:90,position:"relative",minHeight:48,flexShrink:0,padding:"12px 16px",overflow:"hidden",whiteSpace:"normal",textAlign:"center",lineHeight:1.25,variants:[{props:({ownerState:a})=>a.label&&("top"===a.iconPosition||"bottom"===a.iconPosition),style:{flexDirection:"column"}},{props:({ownerState:a})=>a.label&&"top"!==a.iconPosition&&"bottom"!==a.iconPosition,style:{flexDirection:"row"}},{props:({ownerState:a})=>a.icon&&a.label,style:{minHeight:72,paddingTop:9,paddingBottom:9}},{props:({ownerState:a,iconPosition:b})=>a.icon&&a.label&&"top"===b,style:{[`& > .${o.icon}`]:{marginBottom:6}}},{props:({ownerState:a,iconPosition:b})=>a.icon&&a.label&&"bottom"===b,style:{[`& > .${o.icon}`]:{marginTop:6}}},{props:({ownerState:a,iconPosition:b})=>a.icon&&a.label&&"start"===b,style:{[`& > .${o.icon}`]:{marginRight:a.spacing(1)}}},{props:({ownerState:a,iconPosition:b})=>a.icon&&a.label&&"end"===b,style:{[`& > .${o.icon}`]:{marginLeft:a.spacing(1)}}},{props:{textColor:"inherit"},style:{color:"inherit",opacity:.6,[`&.${o.selected}`]:{opacity:1},[`&.${o.disabled}`]:{opacity:(a.vars||a).palette.action.disabledOpacity}}},{props:{textColor:"primary"},style:{color:(a.vars||a).palette.text.secondary,[`&.${o.selected}`]:{color:(a.vars||a).palette.primary.main},[`&.${o.disabled}`]:{color:(a.vars||a).palette.text.disabled}}},{props:{textColor:"secondary"},style:{color:(a.vars||a).palette.text.secondary,[`&.${o.selected}`]:{color:(a.vars||a).palette.secondary.main},[`&.${o.disabled}`]:{color:(a.vars||a).palette.text.disabled}}},{props:({ownerState:a})=>a.fullWidth,style:{flexShrink:1,flexGrow:1,flexBasis:0,maxWidth:"none"}},{props:({ownerState:a})=>a.wrapped,style:{fontSize:a.typography.pxToRem(12)}}]}))),r=d.forwardRef(function(a,b){let c=(0,k.b)({props:a,name:"MuiTab"}),{className:g,disabled:i=!1,disableFocusRipple:j=!1,fullWidth:l,icon:m,iconPosition:o="top",indicator:r,label:s,onChange:t,onClick:u,onFocus:v,selected:w,selectionFollowsFocus:x,textColor:y="inherit",value:z,wrapped:A=!1,...B}=c,C={...c,disabled:i,disableFocusRipple:j,selected:w,icon:!!m,iconPosition:o,label:!!s,fullWidth:l,textColor:y,wrapped:A},D=(a=>{let{classes:b,textColor:c,fullWidth:d,wrapped:e,icon:g,label:i,selected:j,disabled:k}=a,l={root:["root",g&&i&&"labelIcon",`textColor${(0,h.A)(c)}`,d&&"fullWidth",e&&"wrapped",j&&"selected",k&&"disabled"],icon:["iconWrapper","icon"]};return(0,f.A)(l,n,b)})(C),E=m&&s&&d.isValidElement(m)?d.cloneElement(m,{className:(0,e.A)(D.icon,m.props.className)}):m;return(0,p.jsxs)(q,{focusRipple:!j,className:(0,e.A)(D.root,g),ref:b,role:"tab","aria-selected":w,disabled:i,onClick:a=>{!w&&t&&t(a,z),u&&u(a)},onFocus:a=>{x&&!w&&t&&t(a,z),v&&v(a)},ownerState:C,tabIndex:w?0:-1,...B,children:["top"===o||"start"===o?(0,p.jsxs)(d.Fragment,{children:[E,s]}):(0,p.jsxs)(d.Fragment,{children:[s,E]}),r]})})},38941:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(27080),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2m0 16H8V7h11z"}),"ContentCopy")},46410:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(27080),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M20 6h-8l-2-2H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2m0 12H4V8h16z"}),"FolderOpen")},52399:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(27080),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"m4 12 1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8z"}),"ArrowUpward")},91314:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(27080),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z"}),"Home")},95345:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(27080),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M19 2h-4.18C14.4.84 13.3 0 12 0S9.6.84 9.18 2H5c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2m-7 0c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1m7 18H5V4h2v3h10V4h2z"}),"ContentPaste")},98810:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(27080),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8zM6 20V4h7v5h5v11z"}),"InsertDriveFileOutlined")}};
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
"use strict";exports.id=8739,exports.ids=[8739],exports.modules={
|
|
1
|
+
"use strict";exports.id=8739,exports.ids=[8739],exports.modules={13516:(a,b,c)=>{c.d(b,{G:()=>d});let d={LOG_LEVEL:3,INCLUDE_TOOL_CALLS_IN_RESPONSE:!0,ENABLE_EXECUTION_TRACKER:!1}},43326:(a,b,c)=>{c.d(b,{JC:()=>f,Ne:()=>h,ok:()=>g});var d=c(33873),e=c.n(d);function f(){return process.cwd()}function g(){let a=process.env.FLUJO_DATA_DIR;return a&&a.trim().length>0?e().resolve(a):f()}function h(){return process.env.FLUJO_CONTAINER?"container":process.env.FLUJO_NPM?"npm":"git"}},46480:(a,b,c)=>{c.d(b,{Z:()=>d});var d=function(a){return a.MODELS="models",a.FLOWS="flows",a.CHAT_HISTORY="history",a.THEME="theme",a.ENCRYPTION_KEY="encryption_key",a.MCP_SERVERS="mcp_servers",a.GLOBAL_ENV_VARS="global_env_vars",a.CURRENT_CONVERSATION_ID="current_conversation_id",a.SELECTED_FLOW_ID="selected_flow_id",a.SPEECH_SETTINGS="speech_settings",a.SPOTLIGHT_SERVERS="spotlight_servers",a.PLANNED_EXECUTIONS="planned_executions",a}({})},50846:(a,b,c)=>{c.d(b,{h:()=>i});var d=c(13516);let e={VERBOSE:-1,DEBUG:0,INFO:1,WARN:2,ERROR:3},f="number"==typeof d.G.LOG_LEVEL?d.G.LOG_LEVEL:e.ERROR;function g(a,b=0){if(b>6)return String(a);if(!(a instanceof Error))return a;let c={name:a.name,message:a.message};for(let d of Object.getOwnPropertyNames(a)){if("name"===d||"message"===d)continue;let e=a[d];"function"!=typeof e&&("stack"===d?c.stack=e:"cause"===d?c.cause=g(e,b+1):"errors"===d&&Array.isArray(e)?c.errors=e.map(a=>g(a,b+1)):c[d]=e)}return c}function h(a,b,c,d,h){if(a>=("number"==typeof h?h:f)){if("function"==typeof d)try{d=d()}catch{d="[lazy log data threw]"}let f=new Date().toISOString(),h=`[${f}] [${b}]`,i=`${h} ${c}`;if(void 0!==d)if(d instanceof Error||"object"==typeof d)try{let a=d instanceof Error?g(d):d,b=JSON.stringify(a,(a,b)=>b instanceof Error?g(b):b,2);i+=`:
|
|
2
|
+
${b}`}catch(a){i+=": [Object cannot be stringified]"}else i+=`: ${d}`;switch(a){case e.VERBOSE:console.debug(`[VERBOSE] ${i}`);break;case e.DEBUG:console.debug(i);break;case e.INFO:console.info(i);break;case e.WARN:console.warn(i);break;case e.ERROR:console.error(i);break;default:console.log(i)}}}function i(a,b){let c,d=((c=a.replace(/^src\//,"")).startsWith("/")&&(c=c.substring(1)),c);return{verbose:(a,c)=>{h(e.VERBOSE,d,a,c,b)},debug:(a,c)=>{h(e.DEBUG,d,a,c,b)},info:(a,c)=>{h(e.INFO,d,a,c,b)},warn:(a,c)=>{h(e.WARN,d,a,c,b)},error:(a,c)=>{h(e.ERROR,d,a,c,b)}}}},58739:(a,b,c)=>{c.r(b),c.d(b,{EncryptionLockedError:()=>o,authenticate:()=>G,changeEncryptionPassword:()=>B,decryptWithPassword:()=>E,encryptWithPassword:()=>D,getEncryptionType:()=>L,initializeDefaultEncryption:()=>w,initializeEncryption:()=>x,isEncryptionInitialized:()=>I,isEncryptionLocked:()=>K,isUserEncryptionEnabled:()=>J,logout:()=>H,migrateToUserEncryption:()=>A,verifyPassword:()=>F});var d=c(58862),e=c.n(d),f=c(92372),g=c(46480),h=c(50846),i=c(32524);let j=(0,h.h)("utils/encryption/session"),k=global.__flujo_encryption_sessions??(global.__flujo_encryption_sessions=new Map);function l(){let a=Date.now(),b=0;for(let[c,d]of k.entries())a-d.createdAt>72e5&&(k.delete(c),b++);b>0&&j.info(`Cleaned up ${b} expired encryption sessions`)}let m=null,n=(0,h.h)("utils/encryption/secure");class o extends Error{constructor(a="Encryption is locked: user password required to access secrets"){super(a),this.name="EncryptionLockedError",Object.setPrototypeOf(this,o.prototype)}}let p="data_encryption_key",q="data_encryption_iv",r="data_encryption_salt",s="encryption_version",t="encryption_type";var u=function(a){return a.DEFAULT="default",a.USER="user",a}(u||{});function v(){let a=e().enc.Utf8.parse("flujo_fixed_salt_v1");return e().PBKDF2("FLUJO~",a,{keySize:8,iterations:1e5})}async function w(){n.debug("initializeDefaultEncryption: Entering method");try{if(await I())return!0;let a=v(),b=e().lib.WordArray.random(8),c=e().lib.WordArray.random(16),d=e().AES.encrypt(b.toString(),a,{iv:c,mode:e().mode.CBC,padding:e().pad.Pkcs7}),h=e().enc.Utf8.parse("flujo_fixed_salt_v1"),i={[p]:d.toString(),[q]:c.toString(),[r]:h.toString(),[s]:1,[t]:"default"};return await (0,f.VH)(g.Z.ENCRYPTION_KEY,i),!0}catch(a){return n.error("initializeDefaultEncryption: Failed to initialize default encryption:",a),!1}}async function x(a){n.debug("initializeEncryption: Entering method");try{let b=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);if(b&&"default"===b[t])return await A(a);let c=e().lib.WordArray.random(16),d=e().PBKDF2(a,c,{keySize:8,iterations:1e5}),h=e().lib.WordArray.random(8),i=e().lib.WordArray.random(16),j=e().AES.encrypt(h.toString(),d,{iv:i,mode:e().mode.CBC,padding:e().pad.Pkcs7}),k={[p]:j.toString(),[q]:i.toString(),[r]:c.toString(),[s]:1,[t]:"user"};return await (0,f.VH)(g.Z.ENCRYPTION_KEY,k),!0}catch(a){return n.error("initializeEncryption: Failed to initialize encryption:",a),!1}}async function y(){n.debug("getDefaultDEK: Entering method");try{let a=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);if(!a){if(!await w())return n.error("getDefaultDEK: Failed to initialize default encryption"),null;return await y()}if("default"!==a[t])return n.error("getDefaultDEK: Not using default encryption"),null;let b=a[p],c=e().enc.Hex.parse(a[q]),d=v(),h=e().AES.decrypt(b,d,{iv:c,mode:e().mode.CBC,padding:e().pad.Pkcs7});if(!h.toString())return n.error("getDefaultDEK: Failed to decrypt DEK with default key"),null;return e().enc.Hex.parse(h.toString())}catch(a){return n.error("getDefaultDEK: Failed to get default DEK:",a),null}}async function z(a){n.debug("getUserDEK: Entering method");try{let b=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);if(!b)return n.error("getUserDEK: No encryption metadata found"),null;if("user"!==b[t])return n.error("getUserDEK: Not using user encryption"),null;let c=b[p],d=e().enc.Hex.parse(b[q]),h=e().enc.Hex.parse(b[r]),i=e().PBKDF2(a,h,{keySize:8,iterations:1e5}),j=e().AES.decrypt(c,i,{iv:d,mode:e().mode.CBC,padding:e().pad.Pkcs7});if(!j.toString())return n.error("getUserDEK: Failed to decrypt DEK with provided password"),null;return e().enc.Hex.parse(j.toString())}catch(a){return n.error("getUserDEK: Failed to get user DEK:",a),null}}async function A(a){n.debug("migrateToUserEncryption: Entering method");try{let b=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);if(b&&"user"===b[t])return!0;let c=await y();if(!c)return n.error("migrateToUserEncryption: Failed to get default DEK for migration"),!1;let d=e().lib.WordArray.random(16),h=e().PBKDF2(a,d,{keySize:8,iterations:1e5}),i=e().lib.WordArray.random(16),j=e().AES.encrypt(c.toString(e().enc.Utf8),h,{iv:i,mode:e().mode.CBC,padding:e().pad.Pkcs7}),k={[p]:j.toString(),[q]:i.toString(),[r]:d.toString(),[s]:b?b[s]:1,[t]:"user"};return await (0,f.VH)(g.Z.ENCRYPTION_KEY,k),!0}catch(a){return n.error("migrateToUserEncryption: Failed to migrate to user encryption:",a),!1}}async function B(a,b){n.debug("changeEncryptionPassword: Entering method");try{let c=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);if(!c)return n.error("changeEncryptionPassword: No encryption metadata found"),!1;if("default"===c[t])return await A(b);let d=c[p],h=e().enc.Hex.parse(c[q]),i=e().enc.Hex.parse(c[r]),j=e().PBKDF2(a,i,{keySize:8,iterations:1e5}),k=e().AES.decrypt(d,j,{iv:h,mode:e().mode.CBC,padding:e().pad.Pkcs7});if(!k.toString())return n.error("changeEncryptionPassword: Failed to decrypt DEK with old password"),!1;let l=e().lib.WordArray.random(16),m=e().PBKDF2(b,l,{keySize:8,iterations:1e5}),o=e().lib.WordArray.random(16),u=e().AES.encrypt(k.toString(e().enc.Utf8),m,{iv:o,mode:e().mode.CBC,padding:e().pad.Pkcs7}),v={[p]:u.toString(),[q]:o.toString(),[r]:l.toString(),[s]:c[s],[t]:"user"};return await (0,f.VH)(g.Z.ENCRYPTION_KEY,v),!0}catch(a){return n.error("changeEncryptionPassword: Failed to change encryption password:",a),!1}}async function C(a,b=!1){n.debug("getDEK: Entering method");try{if(b&&a){n.debug("getDEK: Using session token");let b=function(a){let b=k.get(a);if(!b)return j.warn(`Session not found: ${a}`),null;let c=Date.now();return c-b.createdAt>72e5?(j.warn(`Session expired: ${a}`),k.delete(a),null):(b.lastUsed=c,b.dek)}(a);if(b)return e().enc.Hex.parse(b);n.warn("getDEK: Invalid or expired session token, falling back to default encryption")}let c=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);if(!c){if(n.info("getDEK: No encryption metadata found, initializing default encryption"),!await w())return n.error("getDEK: Failed to initialize default encryption"),null;return await C(a,b)}if("user"!==c[t])return await y();{let c=global.__flujo_server_dek??null;if(c)return n.debug("getDEK: Using server unlock state for user encryption"),e().enc.Hex.parse(c);if(a&&!b){let b=await z(a);if(b)return b;n.warn("getDEK: Provided password did not yield a valid user DEK")}throw n.warn("getDEK: User encryption is locked (no unlock state or valid credential)"),new o}}catch(a){if(a instanceof o)throw a;n.error("getDEK: Failed to get DEK:",a);try{if(n.warn("getDEK: Attempting to initialize default encryption as error recovery"),await w())return await y()}catch(a){n.error("getDEK: Failed to initialize default encryption as error recovery:",a)}return null}}async function D(a,b,c=!1){n.debug("encryptWithPassword: Entering method");try{let d=await C(b,c);if(!d)return null;let f=e().lib.WordArray.random(16),g=e().AES.encrypt(a,d,{iv:f,mode:e().mode.CBC,padding:e().pad.Pkcs7});return f.toString()+":"+g.toString()}catch(a){if(a instanceof o)throw a;return n.error("encryptWithPassword: Failed to encrypt data:",a),null}}async function E(a,b,c=!1){n.debug("decryptWithPassword: Entering method");try{let d=await C(b,c);if(!d)return null;let f=a.split(":");if(2!==f.length)return n.error("decryptWithPassword: Invalid ciphertext format"),null;let g=e().enc.Hex.parse(f[0]),h=f[1];return e().AES.decrypt(h,d,{iv:g,mode:e().mode.CBC,padding:e().pad.Pkcs7}).toString(e().enc.Utf8)}catch(a){if(a instanceof o)throw a;return n.error("decryptWithPassword: Failed to decrypt data:",a),null}}async function F(a){n.debug("verifyPassword: Entering method");let b=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);if(!b||"user"!==b[t])return{valid:!1};{let b=await z(a);if(null!==b){var c;return c=b.toString(),global.__flujo_server_dek=c,j.info("Server encryption unlocked"),{valid:!0,token:function(a){let b=(0,i.A)(),c=Date.now();return k.set(b,{token:b,dek:a,createdAt:c,lastUsed:c}),j.info(`Created encryption session: ${b}`),!m&&(m=setInterval(l,36e5)).unref&&m.unref(),b}(b.toString())}}return{valid:!1}}}async function G(a){n.debug("authenticate: Entering method");let b=await F(a);return b.valid&&b.token||null}async function H(a){n.debug("logout: Entering method");try{return k.has(a)&&(k.delete(a),j.info(`Invalidated encryption session: ${a}`)),!0}catch(a){return n.error("logout: Failed to invalidate session:",a),!1}}async function I(){return n.debug("isEncryptionInitialized: Entering method"),null!==await (0,f.YM)(g.Z.ENCRYPTION_KEY,null)}async function J(){n.debug("isUserEncryptionEnabled: Entering method");let a=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);return null!=a&&"user"===a[t]}async function K(){return await J()&&!global.__flujo_server_dek}async function L(){n.debug("getEncryptionType: Entering method");let a=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);return a?a[t]||"default":null}},92372:(a,b,c)=>{c.d(b,{EI:()=>B,N2:()=>u,Pv:()=>o,VH:()=>s,Vt:()=>A,YM:()=>t,bB:()=>C,ln:()=>w,pL:()=>D,w5:()=>E});var d=c(29021),e=c(33873),f=c.n(e),g=c(46480),h=c(50846),i=c(43326);let j=(0,h.h)("utils/storage/backend"),k=f().join((0,i.ok)(),"db"),l=f().join((0,i.ok)(),".next","storage"),m=a=>f().join(k,`${a}.json`);async function n(){try{await d.promises.access(k),j.verbose(`Storage directory exists: ${k}`)}catch{j.debug(`Creating storage directory: ${k}`),await d.promises.mkdir(k,{recursive:!0})}try{await d.promises.access(l),j.warn(`Old storage directory found: ${l}. This may cause data inconsistency issues.`)}catch{}}async function o(){for(let a of(j.debug("Verifying storage system initialization"),await n(),Object.values(g.Z)))try{let b=m(a),c=!1;try{await d.promises.access(b),c=!0}catch{}j.debug(`Storage check: ${a} - ${c?"File exists":"File does not exist yet"}`);let e=f().join(l,`${a}.json`);try{await d.promises.access(e),c?j.warn(`Found ${a} in both old and new storage locations. This may cause data inconsistency.`):j.warn(`Found ${a} in old storage location but not in new location. This may cause data loss.`)}catch{}}catch(b){j.error(`Storage verification failed for ${a}:`,b)}j.debug("Storage verification completed")}let p=new Map,q=0;async function r(a,b){let c=f().dirname(a);await d.promises.mkdir(c,{recursive:!0});let e=`${a}.tmp.${process.pid}.${++q}`;try{await d.promises.writeFile(e,b),await d.promises.rename(e,a)}catch(a){try{await d.promises.unlink(e)}catch{}throw a}}async function s(a,b){let c=m(a),d=(p.get(a)??Promise.resolve()).catch(()=>{}).then(()=>r(c,JSON.stringify(b,null,2)));p.set(a,d);try{await d,j.verbose(`Successfully saved item to: ${c}`)}catch(b){throw j.error(`Error saving item with key "${a}" to ${c}:`,b),b}finally{p.get(a)===d&&p.delete(a)}}async function t(a,b){try{await n();let c=m(a),e=await d.promises.readFile(c,"utf-8");if(0===e.trim().length)return j.warn(`Item with key "${a}" at ${c} is empty; treating as missing and returning default.`),b;try{let a=JSON.parse(e);return j.verbose(`Successfully loaded item from: ${c}`),a}catch(b){j.error(`CRITICAL: Failed to parse JSON from ${c}:`,b);let a=`${c}.corrupted.${Date.now()}.bak`;try{await d.promises.writeFile(a,e),j.info(`Created backup of corrupted file at: ${a}`)}catch(a){j.error("Failed to create backup of corrupted file:",a)}throw Error(`Failed to parse JSON from ${c}. A backup has been created at ${a}. Original error: ${b.message}`)}}catch(c){if("ENOENT"===c.code)return j.verbose(`Item with key "${a}" not found at ${m(a)}, returning default.`),b;throw j.error(`CRITICAL: Error loading item with key "${a}" from ${m(a)}:`,c),c}}async function u(a){let b=m(a);try{await d.promises.unlink(b),j.verbose(`Successfully cleared item: ${b}`)}catch(c){"ENOENT"!==c.code?j.warn(`Error clearing item with key "${a}" at ${b}:`,c):j.verbose(`Item with key "${a}" not found at ${b}, nothing to clear.`)}}let v=/^[A-Za-z0-9_-]{1,64}$/;function w(a){if("string"!=typeof a||!v.test(a))throw Error(`Unsafe collection item id: ${JSON.stringify(a)}`)}let x=a=>f().join(k,a),y=(a,b)=>f().join(x(a),`${b}.json`);function z(a,b){let c=(p.get(a)??Promise.resolve()).catch(()=>{}).then(b);return p.set(a,c),c.catch(()=>{}).finally(()=>{p.get(a)===c&&p.delete(a)}),c}async function A(a,b,c){w(b);let d=y(a,b);try{await z(`${a}/${b}`,()=>r(d,JSON.stringify(c,null,2))),j.verbose(`Successfully saved collection item: ${d}`)}catch(c){throw j.error(`Error saving collection item "${a}/${b}" to ${d}:`,c),c}}async function B(a,b,c){w(b);let e=y(a,b);try{let f=await d.promises.readFile(e,"utf-8");if(0===f.trim().length)return j.warn(`Collection item "${a}/${b}" at ${e} is empty; treating as missing.`),c;try{return JSON.parse(f)}catch(b){j.error(`CRITICAL: Failed to parse JSON from ${e}:`,b);let a=`${e}.corrupted.${Date.now()}.bak`;try{await d.promises.writeFile(a,f),j.info(`Created backup of corrupted file at: ${a}`)}catch(a){j.error("Failed to create backup of corrupted file:",a)}throw Error(`Failed to parse JSON from ${e}. A backup has been created at ${a}. Original error: ${b.message}`)}}catch(d){if("ENOENT"===d.code)return j.verbose(`Collection item "${a}/${b}" not found at ${e}, returning default.`),c;throw j.error(`CRITICAL: Error loading collection item "${a}/${b}" from ${e}:`,d),d}}async function C(a,b){w(b);let c=y(a,b);await z(`${a}/${b}`,async()=>{try{await d.promises.unlink(c),j.verbose(`Successfully deleted collection item: ${c}`)}catch(d){if("ENOENT"!==d.code)throw d;j.verbose(`Collection item "${a}/${b}" not found at ${c}, nothing to delete.`)}})}async function D(a){let b,c=x(a);try{b=await d.promises.readdir(c)}catch(a){if("ENOENT"===a.code)return[];throw a}let e=[];for(let a of b){if(!a.endsWith(".json")||a.includes(".tmp.")||a.includes(".corrupted.")||a.endsWith(".bak"))continue;let b=f().join(c,a);try{let a=await d.promises.readFile(b,"utf-8");if(0===a.trim().length){j.warn(`Collection item file ${b} is empty; skipping.`);continue}e.push(JSON.parse(a))}catch(a){j.error(`Failed to read collection item ${b}; skipping.`,a)}}return e}async function E(a,b,c){let e,f,g=m(a);try{e=await d.promises.readFile(g,"utf-8")}catch(a){if("ENOENT"===a.code)return 0;throw a}if(0===e.trim().length)return await d.promises.rename(g,`${g}.migrated-${Date.now()}.bak`),0;try{f=JSON.parse(e)}catch(b){return j.error(`Migration: legacy ${a}.json is not valid JSON; leaving it in place.`,b),0}if(!Array.isArray(f))return j.error(`Migration: legacy ${a}.json is not an array; leaving it in place.`),0;for(let a of(await d.promises.mkdir(x(b),{recursive:!0}),f)){let e;try{e=c(a),w(e)}catch(a){j.error(`Migration: skipping ${b} item with invalid/unsafe id`,a);continue}let f=y(b,e);try{await d.promises.access(f),j.debug(`Migration: ${b}/${e} already exists; keeping the existing file.`);continue}catch{}await r(f,JSON.stringify(a,null,2))}return await d.promises.rename(g,`${g}.migrated-${Date.now()}.bak`),j.info(`Migration: moved ${f.length} ${b} item(s) from ${a}.json to per-item storage.`),f.length}}};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";exports.id=9343,exports.ids=[9343],exports.modules={49343:(a,b,c)=>{c.r(b),c.d(b,{BashSession:()=>P,betaAgentToolset20260401:()=>N,betaBashTool:()=>Q,betaEditTool:()=>T,betaGlobTool:()=>U,betaGrepTool:()=>V,betaReadTool:()=>R,betaWriteTool:()=>S,extractSkillArchive:()=>I,resolvePath:()=>O,resolveSkillVersion:()=>G,setupSkills:()=>F});var d,e,f,g,h,i,j,k=c(67746),l=c(51455),m=c(73024),n=c(76760),o=c(31421),p=c(77598),q=c(80481),r=c(31390),s=c(42032);function t(a){if("object"!==a.inputSchema.type)throw Error(`JSON schema for tool "${a.name}" must be an object, but got ${a.inputSchema.type}`);return{type:"custom",name:a.name,input_schema:a.inputSchema,description:a.description,run:a.run,parse:a=>a,...a.close?{close:a.close}:{}}}c(
|
|
1
|
+
"use strict";exports.id=9343,exports.ids=[9343],exports.modules={49343:(a,b,c)=>{c.r(b),c.d(b,{BashSession:()=>P,betaAgentToolset20260401:()=>N,betaBashTool:()=>Q,betaEditTool:()=>T,betaGlobTool:()=>U,betaGrepTool:()=>V,betaReadTool:()=>R,betaWriteTool:()=>S,extractSkillArchive:()=>I,resolvePath:()=>O,resolveSkillVersion:()=>G,setupSkills:()=>F});var d,e,f,g,h,i,j,k=c(67746),l=c(51455),m=c(73024),n=c(76760),o=c(31421),p=c(77598),q=c(80481),r=c(31390),s=c(42032);function t(a){if("object"!==a.inputSchema.type)throw Error(`JSON schema for tool "${a.name}" must be an object, but got ${a.inputSchema.type}`);return{type:"custom",name:a.name,input_schema:a.inputSchema,description:a.description,run:a.run,parse:a=>a,...a.close?{close:a.close}:{}}}c(1133),c(98572);var u=c(68491);async function v(a){try{return await l.realpath(a)}catch{return a}}async function w(a){let b=[],c=a;for(;;){let d;try{d=await l.realpath(c)}catch{let d=!1;try{d=(await l.lstat(c)).isSymbolicLink()}catch{}if(d){c=n.resolve(n.dirname(c),await l.readlink(c));continue}let e=n.dirname(c);if(e===c)return a;b.push(n.basename(c)),c=e;continue}return b.length?n.join(d,...b.reverse()):d}}async function x(a,b,c){let d=c?.allowOutside??!1;if(n.isAbsolute(b)){if(!d)throw new s.v(`absolute path ${JSON.stringify(b)} not permitted`);return n.resolve(b)}let e=await v(n.resolve(a)),f=n.resolve(e,b);if(d)return f;let g=await w(f),h=e.endsWith(n.sep)?e:e+n.sep;if(g!==e&&!g.startsWith(h))throw new s.v(`path ${JSON.stringify(b)} escapes workdir`);return g}async function y(a,b){let c,d=n.dirname(a),e=n.join(d,`.tmp-${process.pid}-${(0,p.randomUUID)()}`);try{c=await l.open(e,"wx",420),await c.writeFile(b,"utf-8"),await c.sync(),await c.close(),c=void 0,await l.rename(e,a)}catch(a){throw c&&await c.close().catch(()=>{}),await l.unlink(e).catch(()=>{}),a}}function z(a,b){switch(a?.code){case"ENOENT":return`${b}: no such file or directory`;case"EACCES":case"EPERM":return`${b}: permission denied`;case"ENOTDIR":return`${b}: not a directory`;case"EISDIR":return`${b}: is a directory`;case"ELOOP":return`${b}: too many levels of symbolic links`;case"ENAMETOOLONG":return`${b}: file name too long`;case"ENOSPC":return`${b}: no space left on device`;case"EMFILE":case"ENFILE":return`${b}: too many open files`;default:return`${b}: ${a instanceof Error?a.message:String(a)}`}}var A=c(57975),B=c(57075),C=c(46466),D=c(82562);let E=(0,A.promisify)(o.execFile);async function F(a){let{client:b,sessionId:c}=a;if(!b||!c)return async()=>{};let d=(0,D.WG)(b),e=await b.beta.sessions.retrieve(c),f=n.resolve(a.workdir,"skills"),g=[];for(let a of e.agent.skills)try{let c=await G(b,a.skill_id,a.version),e=await b.beta.skills.versions.retrieve(c,{skill_id:a.skill_id}),h=n.basename(e.name.trim());(""===h||"."===h||".."===h)&&(h=a.skill_id);let i=n.resolve(f,h);if(i!==f&&!i.startsWith(f+n.sep)){d.warn("skill name escapes the skills dir; skipping",{component:"agent-tool-context",name:e.name});continue}let j=await b.beta.skills.versions.download(c,{skill_id:a.skill_id});await l.rm(i,{recursive:!0,force:!0}),await l.mkdir(i,{recursive:!0,mode:493}),g.push(i),await I(j,i),d.info("downloaded skill",{component:"agent-tool-context",skill_id:a.skill_id,version:c,dest:i})}catch(b){d.warn("failed to download skill",{component:"agent-tool-context",skill_id:a.skill_id,error:String(b)})}return async()=>{for(let a of g)await l.rm(a,{recursive:!0,force:!0}).catch(b=>{d.warn("failed to clean up skill",{component:"agent-tool-context",dest:a,error:String(b)})})}}async function G(a,b,c){let d;if(/^\d+$/.test(c))return c;for await(let c of a.beta.skills.versions.list(b))/^\d+$/.test(c.version)&&(void 0===d||BigInt(c.version)>BigInt(d))&&(d=c.version);if(void 0===d)throw new r.pJ(`skill ${JSON.stringify(b)} has no concrete version to resolve ${JSON.stringify(c)} against`);return d}async function H(a,b){try{let{stdout:c}=await E(a,b);return c}catch(b){if(null!=b&&"object"==typeof b&&"ENOENT"===b.code)throw new r.pJ(`skill extraction requires the \`${a}\` command, but it was not found on PATH`);throw b}}async function I(a,b){let c=n.join(b,`.skill-archive-${process.pid}-${Date.now()}`);if(!a.body)throw new r.pJ("skill download response had no body");await (0,C.pipeline)(B.Readable.fromWeb(a.body),m.createWriteStream(c));let d=n.join(n.dirname(b),`.skill-stage-${process.pid}-${Date.now()}`);try{let a=await J(c,4),e=a.length>=4&&80===a[0]&&75===a[1]&&3===a[2]&&4===a[3],f=e?"unzip":"tar",g=await H(f,e?["-Z1",c]:["-tf",c]);for(let a of g.split("\n")){let b=a.trim();if(b&&(n.isAbsolute(b)||b.split(/[\\/]/).includes("..")))throw new r.pJ(`refusing to extract unsafe archive member: ${b}`)}for(let a of(await H(f,e?["-Z",c]:["-tvf",c])).split("\n")){let b=a.trimStart()[0];if("l"===b||"h"===b||"b"===b||"c"===b||"p"===b||"s"===b)throw new r.pJ("refusing to extract archive with symlink/hardlink/device member")}let h=function(a){let b,c=!1;for(let d of a.split("\n")){let a=d.trim().split("/").filter(a=>""!==a&&"."!==a);if(0===a.length)continue;let e=a[0];if(void 0===b)b=e;else if(e!==b)return"";a.length>1&&(c=!0)}return void 0!==b&&c?b:""}(g);await l.mkdir(d,{recursive:!0,mode:493}),await H(f,e?["-oq",c,"-d",d]:["-xf",c,"-C",d]);let i=h?n.join(d,h):d;for(let a of(await l.readdir(i)))await l.rename(n.join(i,a),n.join(b,a))}finally{await l.rm(c,{force:!0}),await l.rm(d,{recursive:!0,force:!0})}}async function J(a,b){let c=await l.open(a,"r");try{let a=Buffer.alloc(b),{bytesRead:d}=await c.read(a,0,b,0);return a.subarray(0,d)}finally{await c.close()}}let K=/\x1b\[[0-9;?]*[ -/]*[@-~]/g,L=l.glob;function M(a){return void 0===a?262144:a}function N(a){return[Q(a),R(a),S(a),T(a),U(a),V(a)]}function O(a,b){return x(a.workdir,b,{allowOutside:a.unrestrictedPaths??!1})}class P{constructor(a,b=function(){let a={};for(let[b,c]of Object.entries(process.env))b.startsWith("ANTHROPIC_")||(a[b]=c);return a}()){d.add(this),e.set(this,void 0),f.set(this,""),g.set(this,!1),h.set(this,!1),i.set(this,null),(0,k.G)(this,e,o.spawn("/bin/bash",["--noprofile","--norc"],{cwd:a,env:{...b,PS1:"",PS2:"",TERM:"dumb"},stdio:["pipe","pipe","pipe"],detached:!0}),"f"),(0,k.g)(this,e,"f").stdout.setEncoding("utf8"),(0,k.g)(this,e,"f").stderr.setEncoding("utf8"),(0,k.g)(this,e,"f").stdout.on("data",a=>(0,k.g)(this,d,"m",j).call(this,a)),(0,k.g)(this,e,"f").stderr.on("data",a=>(0,k.g)(this,d,"m",j).call(this,a)),(0,k.g)(this,e,"f").once("close",()=>{(0,k.G)(this,h,!0,"f");let a=(0,k.g)(this,i,"f");(0,k.G)(this,i,null,"f"),a?.resolve()})}get closed(){return(0,k.g)(this,h,"f")}async exec(a,b={}){if((0,k.g)(this,h,"f"))throw new r.pJ("bash session terminated");let c=b.timeoutMs??12e4,d=b.signal;if(d?.aborted)throw new r.pJ("bash command aborted");(0,k.G)(this,f,"","f"),(0,k.G)(this,g,!1,"f");let j=`__ANT_CMD_${p.randomUUID()}_DONE__`,l=`${j.slice(0,8)}''${j.slice(8)}`,m=`{ ${a}
|
|
2
2
|
} </dev/null 2>&1; printf '\\n${l}%d\\n' $?
|
|
3
3
|
`;if((0,k.g)(this,e,"f").stdin.write(m),0>(0,k.g)(this,f,"f").indexOf(j)){let a,b,{promise:e,resolve:f}=(0,u.n)();(0,k.G)(this,i,{sentinel:j,resolve:f},"f");try{await Promise.race([e,new Promise((b,d)=>{a=setTimeout(()=>d(new r.pJ(`bash command timed out after ${c}ms`)),c)}),new Promise((a,c)=>{d&&(b=()=>c(new r.pJ("bash command aborted")),d.addEventListener("abort",b,{once:!0}))})])}finally{a&&clearTimeout(a),b&&d&&d.removeEventListener("abort",b),(0,k.G)(this,i,null,"f")}}let n=(0,k.g)(this,f,"f").indexOf(j);if(n<0)throw new r.pJ("bash session terminated");let o=(0,k.g)(this,f,"f").slice(n+j.length).match(/^(-?\d+)/),q=o?parseInt(o[1],10):-1,s=(0,k.g)(this,f,"f").slice(0,n).replace(K,"").replace(/\n+$/,"");return(0,k.g)(this,g,"f")&&(s=`[output truncated]
|
|
4
4
|
${s}`),{output:s,exitCode:q}}close(){if((0,k.g)(this,h,"f"))return;(0,k.G)(this,h,!0,"f");let a=(0,k.g)(this,i,"f");(0,k.G)(this,i,null,"f"),a?.resolve(),(0,k.g)(this,e,"f").stdout.destroy(),(0,k.g)(this,e,"f").stderr.destroy(),(0,k.g)(this,e,"f").stdin.destroy();try{process.kill(-(0,k.g)(this,e,"f").pid,"SIGKILL")}catch{(0,k.g)(this,e,"f").kill("SIGKILL")}(0,k.g)(this,e,"f").unref()}}function Q(a){let b,c=Promise.resolve();return t({name:"bash",description:"Run a bash command in a persistent shell. State (cwd, env vars) persists across calls.",inputSchema:{type:"object",properties:{command:{type:"string",description:"The command to run"},restart:{type:"boolean",description:"Restart the persistent shell before running"},timeout_ms:{type:"integer",description:"Per-call timeout in milliseconds"}}},run:async({command:d,restart:e,timeout_ms:f},g)=>{let h=c,i=(0,u.n)();c=i.promise;try{await h}catch{}try{if(e&&(b?.close(),b=void 0),!d){if(e)return"bash session restarted";throw new s.v("bash: command is required")}b??(b=new P(a.workdir,a.env));try{let{output:a,exitCode:c}=await b.exec(d,{timeoutMs:f??12e4,signal:g?.signal});if(0!==c)throw new s.v(a||`exit ${c}`);return a}catch(a){if(a instanceof s.v)throw a;throw b.close(),b=void 0,new s.v(`bash: ${a instanceof Error?a.message:String(a)}`)}}finally{i.resolve()}},close:()=>{b?.close(),b=void 0}})}function R(a){return t({name:"read",description:"Read a UTF-8 text file relative to the workdir.",inputSchema:{type:"object",properties:{file_path:{type:"string"},view_range:{type:"array",items:{type:"integer"},description:"[start_line, end_line] 1-indexed inclusive"}},required:["file_path"]},run:async({file_path:b,view_range:c})=>{let d;if(!b)throw new s.v("read: file_path is required");let e=await O(a,b);try{let c=await l.stat(e);if(!c.isFile())throw new s.v(`read: ${b} is not a regular file`);let f=M(a.maxFileBytes);if(null!==f&&c.size>f)throw new s.v(`read: ${b} is ${c.size} bytes, exceeds ${f}-byte limit. Use bash (head/tail/sed) to read a slice.`);d=await l.readFile(e,"utf8")}catch(a){if(a instanceof s.v)throw a;throw new s.v(`read: ${z(a,b)}`)}if(!c)return d;if(2!==c.length)throw new s.v("read: view_range must be [start_line, end_line]");let[f,g]=c,h=d.split("\n"),i=Math.max(0,f-1),j=g>0?g:h.length;return h.slice(i,j).join("\n")}})}function S(a){return t({name:"write",description:"Write a UTF-8 text file relative to the workdir, creating parent directories as needed.",inputSchema:{type:"object",properties:{file_path:{type:"string"},content:{type:"string"}},required:["file_path","content"]},run:async({file_path:b,content:c})=>{if(!b)throw new s.v("write: file_path is required");let d=await O(a,b);try{await l.mkdir(n.dirname(d),{recursive:!0,mode:493}),await y(d,c??"")}catch(a){throw new s.v(`write: ${z(a,b)}`)}return`wrote ${Buffer.byteLength(c??"")} bytes to ${b}`}})}function T(a){return t({name:"edit",description:"Replace old_string with new_string in a file. old_string must be unique unless replace_all.",inputSchema:{type:"object",properties:{file_path:{type:"string"},old_string:{type:"string"},new_string:{type:"string"},replace_all:{type:"boolean"}},required:["file_path","old_string","new_string"]},run:async({file_path:b,old_string:c,new_string:d,replace_all:e})=>{let f,g;if(!b)throw new s.v("edit: file_path is required");if(!c)throw new s.v("edit: old_string is required");let h=await O(a,b);try{let c=await l.stat(h);if(!c.isFile())throw new s.v(`edit: ${b} is not a regular file`);let d=M(a.maxFileBytes);if(null!==d&&c.size>d)throw new s.v(`edit: ${b} is ${c.size} bytes, exceeds ${d}-byte limit. Use bash (sed/awk) to edit a large file.`);f=await l.readFile(h,"utf8")}catch(a){if(a instanceof s.v)throw a;throw new s.v(`edit: ${z(a,b)}`)}let i=f.split(c).length-1;if(0===i)throw new s.v(`edit: old_string not found in ${b}`);if(e)g=f.split(c).join(d);else{if(i>1)throw new s.v(`edit: old_string appears ${i} times in ${b} (must be unique)`);g=f.replace(c,()=>d)}try{await y(h,g)}catch(a){throw new s.v(`edit: write: ${z(a,b)}`)}return`edited ${b} (${e?i:1} replacement(s))`}})}function U(a){return t({name:"glob",description:"Match files under the workdir against a glob pattern. Results are mtime-sorted, newest first.",inputSchema:{type:"object",properties:{pattern:{type:"string"},path:{type:"string",description:"Directory to search in. Defaults to the workdir."}},required:["pattern"]},run:async({pattern:b,path:c})=>{if(!b)throw new s.v("glob: pattern is required");let d=n.resolve(a.workdir),e=b;if(n.isAbsolute(b)){if(!a.unrestrictedPaths)throw new s.v("glob: absolute pattern not permitted");d=n.parse(b).root,e=n.relative(d,b)}else c&&(d=await O(a,c));if(!a.unrestrictedPaths&&e.split(/[\\/]/).includes(".."))throw new s.v('glob: ".." is not permitted in the pattern');let f=[];try{for await(let b of L(e,{cwd:d,withFileTypes:!0,exclude:a=>".git"===a.name||"node_modules"===a.name})){if(!b.isFile())continue;let c=n.join(b.parentPath,b.name);if(!a.unrestrictedPaths&&!function(a,b){let c=n.relative(a,b);return""===c||!c.startsWith(".."+n.sep)&&".."!==c&&!n.isAbsolute(c)}(d,c))continue;let e=0;try{e=(await l.stat(c)).mtimeMs}catch{}f.push({path:c,mtime:e})}}catch(a){throw new s.v(`glob: ${a instanceof Error?a.message:String(a)}`)}return 0===f.length?"no matches":(f.sort((a,b)=>b.mtime-a.mtime),f.slice(0,200).map(a=>a.path).join("\n"))}})}function V(a){return t({name:"grep",description:"Search file contents for a regex. Uses ripgrep if available, otherwise a built-in walker.",inputSchema:{type:"object",properties:{pattern:{type:"string"},path:{type:"string"}},required:["pattern"]},run:async({pattern:b,path:c},d)=>{var e,f,g,h;if(!b)throw new s.v("grep: pattern is required");let i=n.resolve(a.workdir);c&&(i=await O(a,c));let j=await Z();return j?(e=j,f=b,g=i,h=d?.signal,new Promise((a,b)=>{let c=o.spawn(e,["-n","--no-heading","-e",f,"--",g],{...h?{signal:h}:{}}),d="",i="",j=!1;c.stdout.on("data",a=>{!j&&(d+=a).length>102400&&(j=!0,d=d.slice(0,102400),c.kill("SIGKILL"))}),c.stderr.on("data",a=>i+=a),c.on("close",c=>h?.aborted?b(new s.v("grep: aborted")):j?a(d+`
|