flujo-ai 3.38.0 → 3.40.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 +617 -433
- package/.next/app-path-routes-manifest.json +42 -26
- package/.next/build-manifest.json +5 -5
- package/.next/prerender-manifest.json +90 -18
- package/.next/react-loadable-manifest.json +40 -47
- package/.next/routes-manifest.json +34 -0
- package/.next/server/app/_not-found/page.js +3 -4
- 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 +5 -5
- package/.next/server/app/api/approvals/[id]/route.js +1 -1
- package/.next/server/app/api/approvals/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/approvals/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/approvals/route.js +2 -2
- package/.next/server/app/api/approvals/route.js.nft.json +1 -1
- package/.next/server/app/api/approvals/route_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/bugs/enhance/route.js +2 -2
- package/.next/server/app/api/bugs/enhance/route.js.nft.json +1 -1
- package/.next/server/app/api/bugs/enhance/route_client-reference-manifest.js +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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/[id]/convert-process-to-subflow/route.js +1 -0
- package/.next/server/app/api/flow/[id]/convert-process-to-subflow/route.js.nft.json +1 -0
- package/.next/server/app/api/flow/[id]/convert-process-to-subflow/route_client-reference-manifest.js +1 -0
- 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/[id]/versions/[versionId]/route.js +1 -1
- package/.next/server/app/api/flow/[id]/versions/[versionId]/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/[id]/versions/[versionId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/[id]/versions/route.js +1 -1
- package/.next/server/app/api/flow/[id]/versions/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/[id]/versions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/assist/route.js +1 -0
- package/.next/server/app/api/flow/assist/route.js.nft.json +1 -0
- package/.next/server/app/api/flow/assist/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/flow/compile/route.js +1 -1
- package/.next/server/app/api/flow/compile/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/compile/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/generate/route.js +1 -1
- package/.next/server/app/api/flow/generate/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/generate/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/generator/route.js +2 -2
- package/.next/server/app/api/flow/generator/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/generator/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/improve/route.js +1 -1
- package/.next/server/app/api/flow/improve/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/improve/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/quick-chat/route.js +1 -1
- package/.next/server/app/api/flow/quick-chat/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/quick-chat/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/repair/route.js +1 -1
- package/.next/server/app/api/flow/repair/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/repair/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 +6 -6
- 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/local-models/capability/route.js +1 -1
- package/.next/server/app/api/local-models/capability/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/local-models/pull/route.js +1 -1
- package/.next/server/app/api/local-models/pull/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/local-models/suggest/route.js +1 -1
- package/.next/server/app/api/local-models/suggest/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/app-sandbox/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/flujo/authoring/route.js +1 -0
- package/.next/server/app/api/mcp/flujo/authoring/route.js.nft.json +1 -0
- package/.next/server/app/api/mcp/flujo/authoring/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/mcp/flujo/automation/route.js +1 -0
- package/.next/server/app/api/mcp/flujo/automation/route.js.nft.json +1 -0
- package/.next/server/app/api/mcp/flujo/automation/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/mcp/flujo/flows/route.js +1 -0
- package/.next/server/app/api/mcp/flujo/flows/route.js.nft.json +1 -0
- package/.next/server/app/api/mcp/flujo/flows/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/mcp/flujo/resources/read/route.js +1 -0
- package/.next/server/app/api/mcp/flujo/resources/read/route.js.nft.json +1 -0
- package/.next/server/app/api/mcp/flujo/resources/read/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/mcp/flujo/resources/route.js +1 -0
- package/.next/server/app/api/mcp/flujo/resources/route.js.nft.json +1 -0
- package/.next/server/app/api/mcp/flujo/resources/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/mcp/flujo/servers/route.js +1 -0
- package/.next/server/app/api/mcp/flujo/servers/route.js.nft.json +1 -0
- package/.next/server/app/api/mcp/flujo/servers/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/mcp/flujo/state/route.js +1 -0
- package/.next/server/app/api/mcp/flujo/state/route.js.nft.json +1 -0
- package/.next/server/app/api/mcp/flujo/state/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/mcp/flujo/tools/route.js +1 -0
- package/.next/server/app/api/mcp/flujo/tools/route.js.nft.json +1 -0
- package/.next/server/app/api/mcp/flujo/tools/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/mcp/oauth-capability/route.js +1 -1
- package/.next/server/app/api/mcp/oauth-capability/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/oauth-capability/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 +2 -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_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 +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 +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/packages/build/route.js +1 -1
- package/.next/server/app/api/packages/build/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/build/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/derive-secrets/route.js +1 -1
- package/.next/server/app/api/packages/derive-secrets/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/derive-secrets/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/install/route.js +1 -1
- package/.next/server/app/api/packages/install/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/install/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/install/status/route.js +1 -1
- package/.next/server/app/api/packages/install/status/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/install/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/installed/route.js +1 -1
- package/.next/server/app/api/packages/installed/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/installed/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/resolve/route.js +1 -1
- package/.next/server/app/api/packages/resolve/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/resolve/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/scan-targets/route.js +1 -1
- package/.next/server/app/api/packages/scan-targets/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/scan-targets/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/search/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/uninstall/route.js +1 -1
- package/.next/server/app/api/packages/uninstall/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/uninstall/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/[id]/route.js +2 -2
- 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 +2 -2
- 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 +2 -2
- 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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/reconcile/route.js +1 -1
- package/.next/server/app/api/planned-executions/reconcile/route.js.nft.json +1 -1
- package/.next/server/app/api/planned-executions/reconcile/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/registry/auth/resend/route.js +1 -1
- package/.next/server/app/api/registry/auth/resend/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/registry/auth/reset/route.js +1 -1
- package/.next/server/app/api/registry/auth/reset/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/registry/auth/route.js +1 -1
- package/.next/server/app/api/registry/auth/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/registry/feedback/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/registry/oauth/callback/route.js +1 -1
- package/.next/server/app/api/registry/oauth/callback/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/registry/oauth/initiate/route.js +1 -1
- package/.next/server/app/api/registry/oauth/initiate/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/registry/packages/route.js +1 -1
- package/.next/server/app/api/registry/packages/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/registry/publish/route.js +1 -1
- package/.next/server/app/api/registry/publish/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/registry/settings/route.js +1 -1
- package/.next/server/app/api/registry/settings/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/runs/active/route.js +2 -2
- package/.next/server/app/api/runs/active/route.js.nft.json +1 -1
- package/.next/server/app/api/runs/active/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/setup/ai-cli/route.js +3 -0
- package/.next/server/app/api/setup/ai-cli/route.js.nft.json +1 -0
- package/.next/server/app/api/setup/ai-cli/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/statistics/route.js +2 -0
- package/.next/server/app/api/statistics/route.js.nft.json +1 -0
- package/.next/server/app/api/statistics/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/storage/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/telemetry/daily-active/route.js +1 -1
- package/.next/server/app/api/telemetry/daily-active/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/waves/route.js +1 -1
- package/.next/server/app/api/waves/route.js.nft.json +1 -1
- package/.next/server/app/api/waves/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/automation/triggers/page.js +2 -0
- package/.next/server/app/automation/triggers/page.js.nft.json +1 -0
- package/.next/server/app/automation/triggers/page_client-reference-manifest.js +1 -0
- package/.next/server/app/automation/triggers.html +1 -0
- package/.next/server/app/automation/triggers.meta +7 -0
- package/.next/server/app/automation/triggers.rsc +23 -0
- package/.next/server/app/automation/waves/page.js +2 -0
- package/.next/server/app/automation/waves/page.js.nft.json +1 -0
- package/.next/server/app/automation/waves/page_client-reference-manifest.js +1 -0
- package/.next/server/app/automation/waves.html +1 -0
- package/.next/server/app/automation/waves.meta +7 -0
- package/.next/server/app/automation/waves.rsc +22 -0
- package/.next/server/app/chat/page.js +6 -58
- 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 +7 -6
- package/.next/server/app/docs/page.js +3 -4
- 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 +6 -6
- package/.next/server/app/executions/page.js +2 -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 +7 -6
- package/.next/server/app/flows/page.js +3 -3
- 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 +7 -7
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +6 -6
- package/.next/server/app/mcp/page.js +6 -57
- 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 +2 -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 +2 -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 +7 -6
- package/.next/server/app/models/page.js +64 -2
- 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/packages/page.js +2 -2
- package/.next/server/app/packages/page.js.nft.json +1 -1
- package/.next/server/app/packages/page_client-reference-manifest.js +1 -1
- package/.next/server/app/packages.html +1 -1
- package/.next/server/app/packages.rsc +6 -6
- package/.next/server/app/page.js +3 -4
- 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 +2 -2
- 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 +6 -6
- package/.next/server/app/statistics/page.js +54 -0
- package/.next/server/app/statistics/page.js.nft.json +1 -0
- package/.next/server/app/statistics/page_client-reference-manifest.js +1 -0
- package/.next/server/app/statistics.html +1 -0
- package/.next/server/app/statistics.meta +7 -0
- package/.next/server/app/statistics.rsc +22 -0
- package/.next/server/app/v1/chat/completions/route.js +1 -1
- 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 +2 -2
- 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 +2 -2
- 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 +3 -3
- 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]/inject/route.js +2 -2
- package/.next/server/app/v1/chat/conversations/[conversationId]/inject/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/inject/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/resources/[resourceId]/content/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/resources/[resourceId]/content/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/resources/[resourceId]/content/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/resources/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/resources/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/resources/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]/revert/route.js +2 -0
- package/.next/server/app/v1/chat/conversations/[conversationId]/revert/route.js.nft.json +1 -0
- package/.next/server/app/v1/chat/conversations/[conversationId]/revert/route_client-reference-manifest.js +1 -0
- 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/chat/events/route.js +6 -6
- package/.next/server/app/v1/chat/events/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/events/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/waves/page.js +2 -4
- package/.next/server/app/waves/page.js.nft.json +1 -1
- package/.next/server/app/waves/page_client-reference-manifest.js +1 -1
- package/.next/server/app/waves.html +1 -1
- package/.next/server/app/waves.rsc +6 -6
- package/.next/server/app-paths-manifest.json +42 -26
- package/.next/server/chunks/1227.js +1 -1
- package/.next/server/chunks/1314.js +1 -1
- package/.next/server/chunks/1403.js +3 -0
- package/.next/server/chunks/{180.js → 1532.js} +1 -1
- package/.next/server/chunks/1539.js +1 -0
- package/.next/server/chunks/1662.js +2 -0
- package/.next/server/chunks/1805.js +1 -1
- package/.next/server/chunks/1925.js +1 -1
- package/.next/server/chunks/2069.js +1 -0
- package/.next/server/chunks/227.js +1 -1
- package/.next/server/chunks/2372.js +2 -2
- package/.next/server/chunks/2446.js +1 -0
- package/.next/server/chunks/2828.js +2 -0
- package/.next/server/chunks/2949.js +1 -0
- package/.next/server/chunks/{6034.js → 300.js} +15 -15
- package/.next/server/chunks/3032.js +29 -0
- package/.next/server/chunks/3206.js +2 -0
- package/.next/server/chunks/3262.js +90 -0
- package/.next/server/chunks/3418.js +1 -0
- package/.next/server/chunks/3945.js +10 -0
- package/.next/server/chunks/{6967.js → 3954.js} +3 -3
- package/.next/server/chunks/3963.js +6 -0
- package/.next/server/chunks/3991.js +2 -0
- package/.next/server/chunks/4265.js +1 -1
- package/.next/server/chunks/4306.js +1 -1
- package/.next/server/chunks/4671.js +1 -1
- package/.next/server/chunks/4681.js +1 -1
- package/.next/server/chunks/4771.js +2 -2
- package/.next/server/chunks/5096.js +1 -1
- package/.next/server/chunks/5141.js +2 -0
- package/.next/server/chunks/519.js +2 -2
- package/.next/server/chunks/5444.js +2 -0
- package/.next/server/chunks/5446.js +1 -0
- package/.next/server/chunks/{7058.js → 5494.js} +2 -2
- package/.next/server/chunks/558.js +1 -1
- package/.next/server/chunks/5591.js +1 -0
- package/.next/server/chunks/{3312.js → 5642.js} +1 -1
- package/.next/server/chunks/566.js +2 -0
- package/.next/server/chunks/5750.js +1 -0
- package/.next/server/chunks/{7519.js → 5807.js} +1 -1
- package/.next/server/chunks/5858.js +1 -0
- package/.next/server/chunks/5918.js +436 -0
- package/.next/server/chunks/5936.js +1 -0
- package/.next/server/chunks/6033.js +1 -0
- package/.next/server/chunks/6226.js +4 -4
- package/.next/server/chunks/6607.js +1 -0
- package/.next/server/chunks/6687.js +1 -0
- package/.next/server/chunks/701.js +2 -2
- package/.next/server/chunks/7031.js +1 -0
- package/.next/server/chunks/7147.js +1 -0
- package/.next/server/chunks/7480.js +2 -0
- package/.next/server/chunks/{8284.js → 7498.js} +2 -2
- package/.next/server/chunks/7506.js +2 -2
- package/.next/server/chunks/7508.js +5 -0
- package/.next/server/chunks/7628.js +1 -1
- package/.next/server/chunks/7630.js +1 -1
- package/.next/server/chunks/773.js +9 -0
- package/.next/server/chunks/7821.js +1 -1
- package/.next/server/chunks/7883.js +1 -0
- package/.next/server/chunks/7969.js +1 -1
- package/.next/server/chunks/8001.js +1 -1
- package/.next/server/chunks/8092.js +1 -1
- package/.next/server/chunks/8291.js +1 -0
- package/.next/server/chunks/8598.js +1 -0
- package/.next/server/chunks/8645.js +1 -1
- package/.next/server/chunks/{3489.js → 8730.js} +1 -1
- package/.next/server/chunks/8897.js +1 -0
- package/.next/server/chunks/8903.js +4 -0
- package/.next/server/chunks/8940.js +1 -0
- package/.next/server/chunks/9088.js +6 -0
- package/.next/server/chunks/9543.js +8 -0
- package/.next/server/chunks/9624.js +136 -0
- package/.next/server/functions-config-manifest.json +4 -3
- package/.next/server/instrumentation.js +1 -1
- package/.next/server/instrumentation.js.nft.json +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-manifest.json +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/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/b1aMk0634gkkiunttd1SQ/_buildManifest.js +1 -0
- package/.next/static/chunks/1161-19176c3e7c655121.js +1 -0
- package/.next/static/chunks/1521-1c98c9a56726e053.js +1 -0
- package/.next/static/chunks/155-12f2a537db5dacec.js +1 -0
- package/.next/static/chunks/1576.bc6ae6c9e6d939d8.js +1 -0
- package/.next/static/chunks/1871-dd8c10ed9d37100b.js +1 -0
- package/.next/static/chunks/1983-242862b3dc022a26.js +1 -0
- package/.next/static/chunks/2005.300528b5119c2d38.js +1 -0
- package/.next/static/chunks/2141-dba0d13715fe1a28.js +1 -0
- package/.next/static/chunks/2498-4f7f5de1cac6feba.js +1 -0
- package/.next/static/chunks/2499-92cd97ce4993999f.js +1 -0
- package/.next/static/chunks/3272-42d1acae08d1ef0a.js +1 -0
- package/.next/static/chunks/3303-febfba58226aebed.js +1 -0
- package/.next/static/chunks/{361.bb75b03b740930cd.js → 361.51d642c530c84295.js} +1 -1
- package/.next/static/chunks/3731-64070760ae44448f.js +1 -0
- package/.next/static/chunks/3776.72638b35ce9bb874.js +1 -0
- package/.next/static/chunks/3816-807978463638bb71.js +1 -0
- package/.next/static/chunks/4122-d82fad8d1fca26d6.js +1 -0
- package/.next/static/chunks/4123-906362aeb986d6db.js +1 -0
- package/.next/static/chunks/4156-3823d1c89c4a7e3d.js +1 -0
- package/.next/static/chunks/{4555-c9070f8c79bccfad.js → 4483-00dc5c1b601ec898.js} +3 -3
- package/.next/static/chunks/4755-83df83d0dbd97483.js +1 -0
- package/.next/static/chunks/4814-31eb5f3b10c651c1.js +1 -0
- package/.next/static/chunks/4965.39e24b54c3c6ca58.js +1 -0
- package/.next/static/chunks/57-64bab7d5db89c9cc.js +1 -0
- package/.next/static/chunks/5954-dd2b25224f389fc0.js +1 -0
- package/.next/static/chunks/5962-8c59d06b3ee1c42a.js +1 -0
- package/.next/static/chunks/5967-59fde8c214c9ca9f.js +1 -0
- package/.next/static/chunks/6417.70056fe81ca21682.js +1 -0
- package/.next/static/chunks/6420-25dd04f98f3b34b8.js +1 -0
- package/.next/static/chunks/6547-2adc20e1ace927fc.js +1 -0
- package/.next/static/chunks/684-289a73150568def2.js +1 -0
- package/.next/static/chunks/7203-2704865539fa551d.js +1 -0
- package/.next/static/chunks/760-2ad13a61701630da.js +1 -0
- package/.next/static/chunks/7711-4b017720ec49c96d.js +1 -0
- package/.next/static/chunks/7758-42ab0b9cce1dc0e3.js +1 -0
- package/.next/static/chunks/8124-94140ee1dd8ed87c.js +1 -0
- package/.next/static/chunks/8135-5b975b9014f8920b.js +1 -0
- package/.next/static/chunks/{8198.cd0d3f8429c02862.js → 8198.a9cc35771b354b03.js} +1 -1
- package/.next/static/chunks/8326-4915403bc93459d2.js +1 -0
- package/.next/static/chunks/8529.b5a43e728bb5bb8a.js +1 -0
- package/.next/static/chunks/{6428-951188daa6f74b86.js → 8620-c9fa9d75cdc18a5e.js} +3 -3
- package/.next/static/chunks/8853-b80e50cbec6fd13c.js +1 -0
- package/.next/static/chunks/8862-0e37dd5488b21c77.js +1 -0
- package/.next/static/chunks/889-e64385ddb2259b1b.js +1 -0
- package/.next/static/chunks/9001-4c27a608feddb878.js +1 -0
- package/.next/static/chunks/9050-fcb7a0c89314acb4.js +1 -0
- package/.next/static/chunks/9053-283dd8d615f904a5.js +8 -0
- package/.next/static/chunks/9136-9c415453ec02519c.js +1 -0
- package/.next/static/chunks/9140.6502327a2c098d33.js +1 -0
- package/.next/static/chunks/9195-3c9c4300e7505d9e.js +1 -0
- package/.next/static/chunks/9524-b9d2c7e4426edd07.js +1 -0
- package/.next/static/chunks/9562-5494feecd8c6f7a3.js +1 -0
- package/.next/static/chunks/9611-190b55ade8b3af3c.js +1 -0
- package/.next/static/chunks/app/api/approvals/[id]/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/approvals/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/backup/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/browse/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/bugs/enhance/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/cwd/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/encryption/secure/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/env/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/flow/[id]/convert-process-to-subflow/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/flow/[id]/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/flow/[id]/versions/[versionId]/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/flow/[id]/versions/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/flow/assist/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/flow/compile/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/flow/generate/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/flow/generator/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/flow/improve/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/flow/prompt-renderer/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/flow/quick-chat/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/flow/repair/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/flow/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/git/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/init/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/local-models/capability/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/local-models/pull/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/local-models/suggest/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/mcp/app-sandbox/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/mcp/cancel/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/mcp/flujo/authoring/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/mcp/flujo/automation/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/mcp/flujo/flows/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/mcp/flujo/resources/read/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/mcp/flujo/resources/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/mcp/flujo/servers/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/mcp/flujo/state/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/mcp/flujo/tools/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/mcp/oauth-capability/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/mcp/test-connection/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/mcp/test-connection/stream/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/mcp-registry/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/mcp-registry/spotlight/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/model/[id]/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/model/provider/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/model/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/model/test/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/oauth/callback/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/oauth/initiate/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/oauth/reset/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/packages/build/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/packages/derive-secrets/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/packages/install/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/packages/install/status/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/packages/installed/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/packages/resolve/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/packages/scan-targets/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/packages/search/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/packages/uninstall/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/[id]/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/[id]/run/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/reconcile/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/registry/auth/resend/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/registry/auth/reset/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/registry/auth/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/registry/feedback/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/registry/oauth/callback/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/registry/oauth/initiate/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/registry/packages/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/registry/publish/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/registry/settings/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/restore/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/runs/active/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/setup/ai-cli/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/statistics/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/storage/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/telemetry/daily-active/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/update/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/waves/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/api/webhooks/[id]/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/automation/triggers/page-594a6294c58344bf.js +1 -0
- package/.next/static/chunks/app/automation/waves/page-ce2fef4996cad8e6.js +1 -0
- package/.next/static/chunks/app/chat/page-203cb7bf21638ada.js +1 -0
- package/.next/static/chunks/app/docs/page-c466a58caf5e3336.js +1 -0
- package/.next/static/chunks/app/executions/page-fcc848de86714386.js +1 -0
- package/.next/static/chunks/app/flows/page-172c759ca81ba02f.js +1 -0
- package/.next/static/chunks/app/layout-a6ca531683a518a7.js +1 -0
- package/.next/static/chunks/app/mcp/page-0a96e6b30e45b1e6.js +1 -0
- package/.next/static/chunks/app/mcp-flows/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/mcp-proxy/[server]/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/models/error-1964203c5c6e7d0e.js +1 -0
- package/.next/static/chunks/app/models/{loading-1687ae86584f5b1b.js → loading-0cdcf9bae7d3b8f3.js} +1 -1
- package/.next/static/chunks/app/models/page-ad1cbea6d3324966.js +1 -0
- package/.next/static/chunks/app/packages/page-dda48425be9fc137.js +1 -0
- package/.next/static/chunks/app/page-04189aa1b1318c2d.js +1 -0
- package/.next/static/chunks/app/settings/page-906c229c87011ead.js +1 -0
- package/.next/static/chunks/app/statistics/page-9b13a95549f438c0.js +1 -0
- package/.next/static/chunks/app/v1/chat/completions/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/inject/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/resources/[resourceId]/content/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/resources/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/revert/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/v1/chat/events/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/v1/models/route-e70b5e2b4e09002b.js +1 -0
- package/.next/static/chunks/app/waves/page-5b53af3eb9409414.js +1 -0
- package/.next/static/chunks/webpack-9fbd3587b9ef4dca.js +1 -0
- package/.next/static/css/400b1b927c3ffaf6.css +1 -0
- package/.next/static/css/82efa7d39b03a714.css +1 -0
- package/.next/trace +11 -10
- package/.next/types/app/api/flow/[id]/convert-process-to-subflow/route.ts +347 -0
- package/.next/types/app/api/flow/assist/route.ts +347 -0
- package/.next/types/app/api/mcp/flujo/authoring/route.ts +347 -0
- package/.next/types/app/api/mcp/flujo/automation/route.ts +347 -0
- package/.next/types/app/api/mcp/flujo/flows/route.ts +347 -0
- package/.next/types/app/api/mcp/flujo/resources/read/route.ts +347 -0
- package/.next/types/app/api/mcp/flujo/resources/route.ts +347 -0
- package/.next/types/app/api/mcp/flujo/servers/route.ts +347 -0
- package/.next/types/app/api/mcp/flujo/state/route.ts +347 -0
- package/.next/types/app/api/mcp/flujo/tools/route.ts +347 -0
- package/.next/types/app/api/setup/ai-cli/route.ts +347 -0
- package/.next/types/app/api/statistics/route.ts +347 -0
- package/.next/types/app/{layout.ts → automation/triggers/page.ts} +6 -6
- package/.next/types/app/{waves → automation/waves}/page.ts +3 -3
- package/.next/types/app/{executions → statistics}/page.ts +3 -3
- package/.next/types/app/v1/chat/conversations/[conversationId]/revert/route.ts +347 -0
- package/.next/types/routes.d.ts +18 -2
- package/.next/types/validator.ts +144 -0
- package/README.md +79 -52
- package/bin/flujo.mjs +42 -5
- package/mcp-servers/README.md +94 -0
- package/mcp-servers/bash/dist/index.d.ts +3 -0
- package/mcp-servers/bash/dist/index.js +85 -0
- package/mcp-servers/bash/dist/index.js.map +1 -0
- package/mcp-servers/bash/dist/resources.d.ts +13 -0
- package/mcp-servers/bash/dist/resources.js +298 -0
- package/mcp-servers/bash/dist/resources.js.map +1 -0
- package/mcp-servers/bash/dist/shared.d.ts +24 -0
- package/mcp-servers/bash/dist/shared.js +161 -0
- package/mcp-servers/bash/dist/shared.js.map +1 -0
- package/mcp-servers/bash/dist/tools.d.ts +59 -0
- package/mcp-servers/bash/dist/tools.js +1493 -0
- package/mcp-servers/bash/dist/tools.js.map +1 -0
- package/mcp-servers/bash/package.json +33 -0
- package/mcp-servers/browser/dist/index.d.ts +4 -0
- package/mcp-servers/browser/dist/index.js +34 -0
- package/mcp-servers/browser/dist/index.js.map +1 -0
- package/mcp-servers/browser/dist/resources.d.ts +6 -0
- package/mcp-servers/browser/dist/resources.js +78 -0
- package/mcp-servers/browser/dist/resources.js.map +1 -0
- package/mcp-servers/browser/dist/runtime.d.ts +26 -0
- package/mcp-servers/browser/dist/runtime.js +343 -0
- package/mcp-servers/browser/dist/runtime.js.map +1 -0
- package/mcp-servers/browser/dist/tools.d.ts +3 -0
- package/mcp-servers/browser/dist/tools.js +283 -0
- package/mcp-servers/browser/dist/tools.js.map +1 -0
- package/mcp-servers/browser/package.json +31 -0
- package/mcp-servers/filesystem/dist/index.d.ts +3 -0
- package/mcp-servers/filesystem/dist/index.js +56 -0
- package/mcp-servers/filesystem/dist/index.js.map +1 -0
- package/mcp-servers/filesystem/dist/resources.d.ts +49 -0
- package/{.next/server/chunks/9724.js → mcp-servers/filesystem/dist/resources.js} +592 -391
- package/mcp-servers/filesystem/dist/resources.js.map +1 -0
- package/mcp-servers/filesystem/dist/shared.d.ts +24 -0
- package/mcp-servers/filesystem/dist/shared.js +161 -0
- package/mcp-servers/filesystem/dist/shared.js.map +1 -0
- package/mcp-servers/filesystem/dist/tools.d.ts +3 -0
- package/mcp-servers/filesystem/dist/tools.js +1229 -0
- package/mcp-servers/filesystem/dist/tools.js.map +1 -0
- package/mcp-servers/filesystem/package.json +30 -0
- package/mcp-servers/flujo/dist/client.d.ts +12 -0
- package/mcp-servers/flujo/dist/client.js +144 -0
- package/mcp-servers/flujo/dist/client.js.map +1 -0
- package/mcp-servers/flujo/dist/index.d.ts +2 -0
- package/mcp-servers/flujo/dist/index.js +31 -0
- package/mcp-servers/flujo/dist/index.js.map +1 -0
- package/mcp-servers/flujo/package.json +29 -0
- package/mcp-servers/mcp-whatsapp-web/dist/auth/link-page.d.ts +11 -0
- package/mcp-servers/mcp-whatsapp-web/dist/auth/link-page.js +161 -0
- package/mcp-servers/mcp-whatsapp-web/dist/auth/link-page.js.map +1 -0
- package/mcp-servers/mcp-whatsapp-web/dist/auth/oauth-provider.d.ts +53 -0
- package/mcp-servers/mcp-whatsapp-web/dist/auth/oauth-provider.js +206 -0
- package/mcp-servers/mcp-whatsapp-web/dist/auth/oauth-provider.js.map +1 -0
- package/mcp-servers/mcp-whatsapp-web/dist/index.d.ts +2 -0
- package/mcp-servers/mcp-whatsapp-web/dist/index.js +128 -0
- package/mcp-servers/mcp-whatsapp-web/dist/index.js.map +1 -0
- package/mcp-servers/mcp-whatsapp-web/dist/server.d.ts +28 -0
- package/mcp-servers/mcp-whatsapp-web/dist/server.js +268 -0
- package/mcp-servers/mcp-whatsapp-web/dist/server.js.map +1 -0
- package/mcp-servers/mcp-whatsapp-web/dist/services/whatsapp.d.ts +149 -0
- package/mcp-servers/mcp-whatsapp-web/dist/services/whatsapp.js +818 -0
- package/mcp-servers/mcp-whatsapp-web/dist/services/whatsapp.js.map +1 -0
- package/mcp-servers/mcp-whatsapp-web/dist/tools/auth.d.ts +8 -0
- package/mcp-servers/mcp-whatsapp-web/dist/tools/auth.js +232 -0
- package/mcp-servers/mcp-whatsapp-web/dist/tools/auth.js.map +1 -0
- package/mcp-servers/mcp-whatsapp-web/dist/tools/chats.d.ts +3 -0
- package/mcp-servers/mcp-whatsapp-web/dist/tools/chats.js +90 -0
- package/mcp-servers/mcp-whatsapp-web/dist/tools/chats.js.map +1 -0
- package/mcp-servers/mcp-whatsapp-web/dist/tools/contacts.d.ts +3 -0
- package/mcp-servers/mcp-whatsapp-web/dist/tools/contacts.js +65 -0
- package/mcp-servers/mcp-whatsapp-web/dist/tools/contacts.js.map +1 -0
- package/mcp-servers/mcp-whatsapp-web/dist/tools/media.d.ts +3 -0
- package/mcp-servers/mcp-whatsapp-web/dist/tools/media.js +245 -0
- package/mcp-servers/mcp-whatsapp-web/dist/tools/media.js.map +1 -0
- package/mcp-servers/mcp-whatsapp-web/dist/tools/messages.d.ts +3 -0
- package/mcp-servers/mcp-whatsapp-web/dist/tools/messages.js +141 -0
- package/mcp-servers/mcp-whatsapp-web/dist/tools/messages.js.map +1 -0
- package/mcp-servers/mcp-whatsapp-web/dist/types/index.d.ts +1 -0
- package/mcp-servers/mcp-whatsapp-web/dist/types/index.js +3 -0
- package/mcp-servers/mcp-whatsapp-web/dist/types/index.js.map +1 -0
- package/mcp-servers/mcp-whatsapp-web/dist/types/whatsapp.d.ts +16 -0
- package/mcp-servers/mcp-whatsapp-web/dist/types/whatsapp.js +5 -0
- package/mcp-servers/mcp-whatsapp-web/dist/types/whatsapp.js.map +1 -0
- package/mcp-servers/mcp-whatsapp-web/dist/utils/audio.d.ts +23 -0
- package/mcp-servers/mcp-whatsapp-web/dist/utils/audio.js +99 -0
- package/mcp-servers/mcp-whatsapp-web/dist/utils/audio.js.map +1 -0
- package/mcp-servers/mcp-whatsapp-web/dist/utils/browser-finder.d.ts +12 -0
- package/mcp-servers/mcp-whatsapp-web/dist/utils/browser-finder.js +72 -0
- package/mcp-servers/mcp-whatsapp-web/dist/utils/browser-finder.js.map +1 -0
- package/mcp-servers/mcp-whatsapp-web/dist/utils/browser-process-manager.d.ts +84 -0
- package/mcp-servers/mcp-whatsapp-web/dist/utils/browser-process-manager.js +297 -0
- package/mcp-servers/mcp-whatsapp-web/dist/utils/browser-process-manager.js.map +1 -0
- package/mcp-servers/mcp-whatsapp-web/dist/utils/cleanup-browsers.d.ts +12 -0
- package/mcp-servers/mcp-whatsapp-web/dist/utils/cleanup-browsers.js +141 -0
- package/mcp-servers/mcp-whatsapp-web/dist/utils/cleanup-browsers.js.map +1 -0
- package/mcp-servers/mcp-whatsapp-web/dist/utils/logger.d.ts +2 -0
- package/mcp-servers/mcp-whatsapp-web/dist/utils/logger.js +69 -0
- package/mcp-servers/mcp-whatsapp-web/dist/utils/logger.js.map +1 -0
- package/mcp-servers/mcp-whatsapp-web/package.json +75 -0
- package/mcp-servers/mcp-windows-desktop-automation/dist/index.d.ts +8 -0
- package/mcp-servers/mcp-windows-desktop-automation/dist/index.js +95 -0
- package/mcp-servers/mcp-windows-desktop-automation/dist/index.js.map +1 -0
- package/mcp-servers/mcp-windows-desktop-automation/dist/prompts/index.d.ts +8 -0
- package/mcp-servers/mcp-windows-desktop-automation/dist/prompts/index.js +195 -0
- package/mcp-servers/mcp-windows-desktop-automation/dist/prompts/index.js.map +1 -0
- package/mcp-servers/mcp-windows-desktop-automation/dist/resources/index.d.ts +8 -0
- package/mcp-servers/mcp-windows-desktop-automation/dist/resources/index.js +214 -0
- package/mcp-servers/mcp-windows-desktop-automation/dist/resources/index.js.map +1 -0
- package/mcp-servers/mcp-windows-desktop-automation/dist/server/server.d.ts +21 -0
- package/mcp-servers/mcp-windows-desktop-automation/dist/server/server.js +108 -0
- package/mcp-servers/mcp-windows-desktop-automation/dist/server/server.js.map +1 -0
- package/mcp-servers/mcp-windows-desktop-automation/dist/tools/control.d.ts +8 -0
- package/mcp-servers/mcp-windows-desktop-automation/dist/tools/control.js +301 -0
- package/mcp-servers/mcp-windows-desktop-automation/dist/tools/control.js.map +1 -0
- package/mcp-servers/mcp-windows-desktop-automation/dist/tools/index.d.ts +8 -0
- package/mcp-servers/mcp-windows-desktop-automation/dist/tools/index.js +22 -0
- package/mcp-servers/mcp-windows-desktop-automation/dist/tools/index.js.map +1 -0
- package/mcp-servers/mcp-windows-desktop-automation/dist/tools/keyboard.d.ts +8 -0
- package/mcp-servers/mcp-windows-desktop-automation/dist/tools/keyboard.js +146 -0
- package/mcp-servers/mcp-windows-desktop-automation/dist/tools/keyboard.js.map +1 -0
- package/mcp-servers/mcp-windows-desktop-automation/dist/tools/mouse.d.ts +8 -0
- package/mcp-servers/mcp-windows-desktop-automation/dist/tools/mouse.js +179 -0
- package/mcp-servers/mcp-windows-desktop-automation/dist/tools/mouse.js.map +1 -0
- package/mcp-servers/mcp-windows-desktop-automation/dist/tools/process.d.ts +8 -0
- package/mcp-servers/mcp-windows-desktop-automation/dist/tools/process.js +236 -0
- package/mcp-servers/mcp-windows-desktop-automation/dist/tools/process.js.map +1 -0
- package/mcp-servers/mcp-windows-desktop-automation/dist/tools/window.d.ts +8 -0
- package/mcp-servers/mcp-windows-desktop-automation/dist/tools/window.js +300 -0
- package/mcp-servers/mcp-windows-desktop-automation/dist/tools/window.js.map +1 -0
- package/mcp-servers/mcp-windows-desktop-automation/dist/utils/logger/logger.d.ts +50 -0
- package/mcp-servers/mcp-windows-desktop-automation/dist/utils/logger/logger.js +78 -0
- package/mcp-servers/mcp-windows-desktop-automation/dist/utils/logger/logger.js.map +1 -0
- package/mcp-servers/mcp-windows-desktop-automation/dist/utils/types.d.ts +51 -0
- package/mcp-servers/mcp-windows-desktop-automation/dist/utils/types.js +61 -0
- package/mcp-servers/mcp-windows-desktop-automation/dist/utils/types.js.map +1 -0
- package/mcp-servers/mcp-windows-desktop-automation/package.json +38 -0
- package/mcp-servers/patchright-mcp/package.json +32 -0
- package/mcp-servers/reddit-mcp-server/package.json +88 -0
- package/mcp-servers/servers/package.json +31 -0
- package/mcp-servers/shared/dist/index.d.ts +24 -0
- package/mcp-servers/shared/dist/index.js +161 -0
- package/mcp-servers/shared/dist/index.js.map +1 -0
- package/mcp-servers/shared/package.json +26 -0
- package/package.json +119 -99
- package/scripts/launch-next.mjs +13 -1
- package/.next/server/chunks/1114.js +0 -1
- package/.next/server/chunks/1439.js +0 -1
- package/.next/server/chunks/1578.js +0 -5
- package/.next/server/chunks/1634.js +0 -1
- package/.next/server/chunks/166.js +0 -5
- package/.next/server/chunks/1664.js +0 -2
- package/.next/server/chunks/1690.js +0 -1
- package/.next/server/chunks/2859.js +0 -1
- package/.next/server/chunks/3629.js +0 -1
- package/.next/server/chunks/3653.js +0 -2
- package/.next/server/chunks/366.js +0 -2
- package/.next/server/chunks/3717.js +0 -1
- package/.next/server/chunks/3935.js +0 -4
- package/.next/server/chunks/3984.js +0 -9
- package/.next/server/chunks/4013.js +0 -1
- package/.next/server/chunks/4436.js +0 -1
- package/.next/server/chunks/4466.js +0 -1
- package/.next/server/chunks/4551.js +0 -6
- package/.next/server/chunks/4663.js +0 -1
- package/.next/server/chunks/4822.js +0 -1
- package/.next/server/chunks/5200.js +0 -1
- package/.next/server/chunks/5285.js +0 -1
- package/.next/server/chunks/5309.js +0 -78
- package/.next/server/chunks/544.js +0 -136
- package/.next/server/chunks/5463.js +0 -1
- package/.next/server/chunks/5544.js +0 -5
- package/.next/server/chunks/5880.js +0 -1
- package/.next/server/chunks/6747.js +0 -435
- package/.next/server/chunks/6793.js +0 -1
- package/.next/server/chunks/7069.js +0 -6
- package/.next/server/chunks/7104.js +0 -1
- package/.next/server/chunks/7634.js +0 -4
- package/.next/server/chunks/793.js +0 -403
- package/.next/server/chunks/7965.js +0 -39
- package/.next/server/chunks/7993.js +0 -2
- package/.next/server/chunks/8356.js +0 -1
- package/.next/server/chunks/8387.js +0 -1
- package/.next/server/chunks/87.js +0 -1
- package/.next/server/chunks/9085.js +0 -2
- package/.next/server/chunks/9174.js +0 -1
- package/.next/server/chunks/9235.js +0 -29
- package/.next/server/chunks/94.js +0 -1
- package/.next/server/chunks/9983.js +0 -2
- package/.next/static/chunks/1871-14c3e63ca865d85e.js +0 -1
- package/.next/static/chunks/2003-f826c607d609d1fa.js +0 -1
- package/.next/static/chunks/2005.4eea65c00d9a29cd.js +0 -1
- package/.next/static/chunks/2318-13ef0d3048e97834.js +0 -1
- package/.next/static/chunks/3077-565833c67440a7fa.js +0 -1
- package/.next/static/chunks/3217.260785c2198d1e9d.js +0 -1
- package/.next/static/chunks/3272-fd8d59523f61da96.js +0 -1
- package/.next/static/chunks/3429-34fb1a84aed96703.js +0 -1
- package/.next/static/chunks/3545.353a62a68d3b7fd1.js +0 -1
- package/.next/static/chunks/3659-0ab9580d5ee5deea.js +0 -1
- package/.next/static/chunks/3772-20197853c04a6993.js +0 -1
- package/.next/static/chunks/422-61b173ba64cf0c94.js +0 -1
- package/.next/static/chunks/4523-a540747aa2ed34e8.js +0 -1
- package/.next/static/chunks/454.5fc2f8eef98483e3.js +0 -1
- package/.next/static/chunks/488-7ab54d8ae2b4b550.js +0 -1
- package/.next/static/chunks/4919-6c8a48e3cc642349.js +0 -1
- package/.next/static/chunks/4929-150b03595474c9d8.js +0 -1
- package/.next/static/chunks/5733-1419095a28c1ddc3.js +0 -1
- package/.next/static/chunks/639-90ed75d402dc872b.js +0 -1
- package/.next/static/chunks/6404-86615a5f5ce5c00f.js +0 -1
- package/.next/static/chunks/6430-8c6dac4a758119f2.js +0 -1
- package/.next/static/chunks/6539-118a0084e0bfae34.js +0 -1
- package/.next/static/chunks/7264-91d1fa99abcd91ad.js +0 -1
- package/.next/static/chunks/7328-c8a51bb8c7470d77.js +0 -1
- package/.next/static/chunks/7391-5a0abd837ba241f5.js +0 -1
- package/.next/static/chunks/7445-d8a8be6e451c522e.js +0 -1
- package/.next/static/chunks/7561-2b366ddcbc3cc0ec.js +0 -1
- package/.next/static/chunks/8124-4a80e3201b8e51b0.js +0 -1
- package/.next/static/chunks/8345.bc5534ec13abc9ee.js +0 -1
- package/.next/static/chunks/8404-5aa8ea49197b98b8.js +0 -1
- package/.next/static/chunks/8405.a425f94b6b13d2be.js +0 -1
- package/.next/static/chunks/8470-72cf748472d4d501.js +0 -1
- package/.next/static/chunks/8551-a28272acfda62ac9.js +0 -1
- package/.next/static/chunks/8650-f879564a0ed89bc3.js +0 -1
- package/.next/static/chunks/8989-5fa9c7c670eb9a1a.js +0 -1
- package/.next/static/chunks/9164-de1d167d87614a6d.js +0 -1
- package/.next/static/chunks/9195.294887f083b1a11b.js +0 -1
- package/.next/static/chunks/9203-786f457ecf60b49c.js +0 -1
- package/.next/static/chunks/9244-3281f7fd02003a2c.js +0 -1
- package/.next/static/chunks/9345-11d6e48d892b1862.js +0 -8
- package/.next/static/chunks/9562-f8371be653010627.js +0 -1
- package/.next/static/chunks/9581-6d2523fd68a5e3c4.js +0 -1
- package/.next/static/chunks/9611-9867e6e8e65172ec.js +0 -1
- package/.next/static/chunks/9951-566fc6b05c12209e.js +0 -1
- package/.next/static/chunks/app/api/approvals/[id]/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/approvals/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/backup/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/browse/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/bugs/enhance/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/cwd/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/encryption/secure/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/env/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/flow/[id]/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/flow/[id]/versions/[versionId]/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/flow/[id]/versions/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/flow/compile/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/flow/generate/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/flow/generator/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/flow/improve/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/flow/prompt-renderer/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/flow/quick-chat/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/flow/repair/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/flow/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/git/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/init/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/local-models/capability/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/local-models/pull/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/local-models/suggest/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/mcp/app-sandbox/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/mcp/cancel/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/mcp/oauth-capability/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/mcp/test-connection/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/mcp/test-connection/stream/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/mcp-registry/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/mcp-registry/spotlight/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/model/[id]/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/model/provider/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/model/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/model/test/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/oauth/callback/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/oauth/initiate/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/oauth/reset/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/packages/build/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/packages/derive-secrets/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/packages/install/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/packages/install/status/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/packages/installed/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/packages/resolve/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/packages/scan-targets/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/packages/search/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/packages/uninstall/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/[id]/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/[id]/run/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/reconcile/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/registry/auth/resend/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/registry/auth/reset/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/registry/auth/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/registry/feedback/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/registry/oauth/callback/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/registry/oauth/initiate/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/registry/packages/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/registry/publish/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/registry/settings/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/restore/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/runs/active/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/storage/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/telemetry/daily-active/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/update/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/waves/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/api/webhooks/[id]/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/chat/page-e37bbc561f40ce60.js +0 -1
- package/.next/static/chunks/app/docs/page-3b9ce48854b2147d.js +0 -1
- package/.next/static/chunks/app/executions/page-8296fd69c439ccee.js +0 -1
- package/.next/static/chunks/app/flows/page-e52c8943555e38dd.js +0 -1
- package/.next/static/chunks/app/layout-abed1f211e03152f.js +0 -1
- package/.next/static/chunks/app/mcp/page-4a3e5a643d84ee89.js +0 -1
- package/.next/static/chunks/app/mcp-flows/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/mcp-proxy/[server]/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/models/error-1718b538d6967e56.js +0 -1
- package/.next/static/chunks/app/models/page-595597042e227970.js +0 -1
- package/.next/static/chunks/app/packages/page-2f2d29c17841b3cf.js +0 -1
- package/.next/static/chunks/app/page-2f9da78a4891731a.js +0 -1
- package/.next/static/chunks/app/settings/page-f35e939032b0277d.js +0 -1
- package/.next/static/chunks/app/v1/chat/completions/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/inject/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/resources/[resourceId]/content/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/resources/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/v1/chat/events/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/v1/models/route-b9c783850b4c2acf.js +0 -1
- package/.next/static/chunks/app/waves/page-dc99a16141dd902b.js +0 -1
- package/.next/static/chunks/webpack-9d09d53b271f49e2.js +0 -1
- package/.next/static/css/30253fcfa8035221.css +0 -1
- package/.next/static/css/69ab44eb350e0b6c.css +0 -1
- package/.next/static/kIFnN4S0HHOnvpPGsSzi9/_buildManifest.js +0 -1
- /package/.next/static/{kIFnN4S0HHOnvpPGsSzi9 → b1aMk0634gkkiunttd1SQ}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";exports.id=5936,exports.ids=[5936],exports.modules={29715:(a,b,c)=>{c.d(b,{N:()=>k});var d=c(23628),e=c(92372),f=c(60184),g=c(38291),h=c(50846),i=c(52446);let j=(0,h.h)("backend/execution/flow/loadConversationState");async function k(a){try{(0,e.ln)(a)}catch{j.warn("Rejected unsafe conversationId on load",{conversationId:a});return}if(d.FlowExecutor.conversationStates.has(a))return j.debug("Loaded state from memory",{conversationId:a}),d.FlowExecutor.conversationStates.get(a);let b=`conversations/${a}`;try{let c=await (0,e.loadItem)(b,void 0);if(c){j.debug("Loaded state from storage",{conversationId:a}),await (0,f.jM)(c),await (0,i.aC)(b,c);try{let d=(0,f.bS)(c);d.length&&(j.info("Repaired dangling tool call(s) on load",{conversationId:a,count:d.length}),(0,i.MM)(c),await (0,f.D$)(c,[...d.map(a=>({type:"message",message:a})),{type:"recovery:checkpoint",checkpoint:c.recovery.currentCheckpoint},{type:"recovery:transition",recovery:{...c.recovery}}]),await (0,g.persistConversationState)(b,c))}catch(b){j.warn("Failed to repair dangling tool calls on load; continuing",{conversationId:a,repairError:b})}return d.FlowExecutor.conversationStates.set(a,c),c}}catch(b){j.warn("Error loading conversation state from storage",{conversationId:a,error:b})}}},35936:(a,b,c)=>{c.r(b),c.d(b,{internalCallTool:()=>aB,internalToolDefinitions:()=>V});var d=c(50846),e=c(87821),f=c(20433),g=c(4771),h=c(52189),i=c(16226),j=c(38204),k=c(67512),l=c(49038),m=c(45408);let n=a=>"string"==typeof a?a.trim():"",o=a=>n(a.data?.type)||n(a.type)||"unknown",p=a=>n(a.data?.label)||n(a.data?.properties?.name)||o(a);function q(a,b=180){let c=n(a).replace(/\s+/g," ");return c.length>b?`${c.slice(0,b-1)}…`:c}function r(a){return a.edges.filter(a=>{let b=a.data?.edgeType;return"mcp"!==b&&"resource"!==b})}function s(a){return"isolated"===a?"runs with an isolated authored/caller-supplied prompt, without parent history":"latest-message"===a?"receives only the latest user message":"receives the full conversation history"}function t(a,b,c){let d="incoming"===c?a.fromExecutionId:a.toExecutionId,e=b.get(d),f="signal"===a.via?`signal \`${a.topic??""}\``:`completion${a.on?.length?` (${a.on.join(" or ")})`:""}`;return` - It ${"incoming"===c?"is started by":"can start"} ${f} ${"incoming"===c?"from":"and then invoke"} “${e?.name??d}”.`}var u=c(9312),v=c(29715),w=c(60184),x=c(14214),y=c(23628),z=c(78325),A=c(27709),B=c(86103);let C={schedule:"Schedule",webhook:"Webhook","file-watch":"File watch","mcp-poll":"MCP poll","url-watch":"URL watch","flow-event":"Flow event"};function D(a){if(!a)return 0;let b=Date.parse(a);return Number.isNaN(b)?0:b}function E(a,b){return a.execution.name.localeCompare(b.execution.name)||a.execution.id.localeCompare(b.execution.id)}var F=c(30227);let G=(0,d.h)("backend/services/mcp/internalTools"),H=["name-asc","name-desc","updated-desc","updated-asc","nodes-desc","nodes-asc"],I=["saved-desc","saved-asc"],J=["name-asc","name-desc","status","transport"],K=["name-asc","name-desc"],L=["name-asc","name-desc","provider","context-desc","context-asc"],M=["name-asc","name-desc","newest","oldest","last-run"],N=["activity-desc","activity-asc","created-desc","created-asc","title-asc","title-desc"],O=["not_started","running","awaiting_tool_approval","paused_debug","completed","error","capped"],P=["connected","disconnected","error","connecting","initialization","requires_authentication","unknown"],Q=["stdio","websocket","sse","streamable"],R=["enabled","disabled","running","attention"],S=["schedule","webhook","file-watch","mcp-poll","url-watch","flow-event"],T=["completed","error","skipped","needs_approval","capped"];function U(a,b=!1){return{content:[{type:"text",text:"string"==typeof a?a:JSON.stringify(a,null,2)}],...b?{isError:!0}:{}}}function V(){return[...(0,F.cI)(),{name:"list_flows",description:"List all flows in this FLUJO instance with lightweight metadata only (id, name, description, node count) and no flow content. Use this to enumerate flows cheaply. Use list_flow_building_blocks only when you need the full authoring catalog (models + servers + flows).",inputSchema:(0,B.WS)({folder:{type:"string",description:"Exact folder name; use an empty string for ungrouped flows."},favorite:{type:"boolean",description:"Filter by favorite state."},updatedAfter:{type:"number",description:"Keep flows updated at or after this epoch-millisecond timestamp."},updatedBefore:{type:"number",description:"Keep flows updated at or before this epoch-millisecond timestamp."}},{sorts:H}),outputSchema:(0,B.fM)()},{name:"discover_capabilities",description:"Search FLUJO flows and tools exposed by configured MCP servers in one call. Returns exact invocation recipes and downstream input schemas, so you do not need to guess names or arguments. Use this before execute_flow or call_mcp_tool when you know the goal but not the capability.",inputSchema:{type:"object",additionalProperties:!1,properties:{query:{type:"string",minLength:1,maxLength:256,description:"What you want to accomplish; matched against safe flow/tool names and descriptions."},kinds:{type:"array",minItems:1,uniqueItems:!0,items:{type:"string",enum:["flow","mcp_tool"]},description:"Optional capability kinds to search (default: both)."},server:{type:"string",description:"Optional exact MCP server name. Omit to search every enabled configured server."},limit:{type:"integer",minimum:1,maximum:50,description:"Maximum combined results (default 20, maximum 50)."}},required:["query"]},outputSchema:{type:"object",additionalProperties:!1,properties:{items:{type:"array",items:{type:"object",properties:{kind:{type:"string",enum:["flow","mcp_tool"]},id:{type:"string"},server:{type:"string"},name:{type:"string"},description:{type:"string"},inputSchema:{type:"object"},invocation:{type:"object"},explanation:{type:"object"}},required:["kind","name","invocation"]}},total:{type:"integer",minimum:0},hasMore:{type:"boolean"}},required:["items","total","hasMore"]}},{name:"execute_flow",description:"Run another FLUJO flow (by name or id) with the given input and return its final output. The run is ephemeral (no chat conversation is created). Use list_flows or discover_capabilities to find a flow. Nested runs are limited in depth — a flow cannot recurse through itself indefinitely.",inputSchema:{type:"object",properties:{flow:{type:"string",description:"Flow name or flow id."},input:{type:"string",description:"The message to send to the flow as the user turn."}},required:["flow","input"]}},{name:"explain_flow",description:"Explain one compiled FLUJO flow in natural language: its ordered steps, control connections and conditions, model/MCP capabilities, subflow invocation and fan-out behavior, signal emissions, and how planned executions connect it to trigger Waves. Read-only and deterministic.",inputSchema:{type:"object",additionalProperties:!1,properties:{flow:{type:"string",description:"Flow name or flow id (see list_flows or discover_capabilities)."}},required:["flow"]}},{name:"read_flow",description:"Read a FLUJO flow's full definition (by name or id): its nodes with their prompts, bound models, attached MCP servers/tools and input/output modes, plus the control and MCP edges. Note this is the COMPILED flow (node ids, not FlowSpec keys) — to change it, author a fresh FlowSpec and call update_flow.",inputSchema:{type:"object",properties:{flow:{type:"string",description:"Flow name or flow id."}},required:["flow"]}},{name:"update_flow",description:"REPLACE an existing FLUJO flow's definition (by name or id) with a newly compiled FlowSpec, keeping the flow's id — so planned executions, subflow nodes and conversations that reference it keep working. The spec format is the same as create_flow/validate_flow_spec (see those tool descriptions); saving is gated on zero validation errors. The replaced definition is archived automatically — list_flow_versions / revert_flow can restore it. Note that manual canvas edits made in the builder are part of what gets replaced. Use read_flow first to see what you are replacing.",inputSchema:{type:"object",properties:{flow:{type:"string",description:"Flow name or flow id of the flow to replace."},spec:{type:"object",description:"The FlowSpec object (see the create_flow tool description for the format)."}},required:["flow","spec"]}},{name:"list_flow_versions",description:"List a flow's archived versions (by name or id), newest first. A version is created automatically whenever the flow's definition is overwritten (builder save, update_flow, revert_flow) and holds the definition that was replaced. Use read_flow_version to inspect one and revert_flow to restore one.",inputSchema:(0,B.WS)({flow:{type:"string",description:"Flow name or flow id."},savedAfter:{type:"number",description:"Keep versions saved at or after this epoch-millisecond timestamp."},savedBefore:{type:"number",description:"Keep versions saved at or before this epoch-millisecond timestamp."}},{required:["flow"],sorts:I}),outputSchema:(0,B.fM)()},{name:"read_flow_version",description:"Read one archived version of a flow (see list_flow_versions): the full definition it held before it was replaced, in the same format as read_flow.",inputSchema:{type:"object",properties:{flow:{type:"string",description:"Flow name or flow id."},version:{type:"string",description:"The version id (see list_flow_versions)."}},required:["flow","version"]}},{name:"revert_flow",description:"Restore an archived version (see list_flow_versions) as the flow's CURRENT definition. The definition being reverted away from is archived first, so a revert can itself be undone. References by flow id keep working.",inputSchema:{type:"object",properties:{flow:{type:"string",description:"Flow name or flow id."},version:{type:"string",description:"The version id to restore (see list_flow_versions)."}},required:["flow","version"]}},{name:"delete_flow",description:"PERMANENTLY delete a FLUJO flow (by name or id). This cannot be undone — the flow's version history is deleted with it. Verify the target with list_flow_building_blocks first.",inputSchema:{type:"object",properties:{flow:{type:"string",description:"Flow name or flow id."}},required:["flow"]}},{name:"list_mcp_servers",description:"List the MCP servers configured in this FLUJO instance with their transport, enabled/disabled state and live connection status. Config details (env vars, headers, credentials) are never included.",inputSchema:(0,B.WS)({enabled:{type:"boolean",description:"Filter by enabled state."},statuses:{type:"array",minItems:1,uniqueItems:!0,items:{type:"string",enum:P}},transports:{type:"array",minItems:1,uniqueItems:!0,items:{type:"string",enum:Q}},folder:{type:"string",description:"Exact folder name; use an empty string for ungrouped servers."},favorite:{type:"boolean",description:"Filter by favorite state."}},{sorts:J}),outputSchema:(0,B.fM)()},{name:"list_mcp_server_tools",description:"List the tools of one configured MCP server (name, description, input schema). Use together with call_mcp_tool for servers that are not bound to this flow.",inputSchema:(0,B.WS)({server:{type:"string",description:"The FLUJO server name (see list_mcp_servers)."},includeSchema:{type:"boolean",description:"Include each tool input schema (default true)."}},{required:["server"],sorts:K}),outputSchema:(0,B.fM)()},{name:"call_mcp_tool",description:"Call a tool on any configured MCP server by server name + tool name. This lets you use servers that are not bound to the current flow. Check the tool's input schema with list_mcp_server_tools first.",inputSchema:{type:"object",properties:{server:{type:"string",description:"The FLUJO server name."},tool:{type:"string",description:"The tool name on that server."},args:{type:"object",description:"Arguments for the tool (per its input schema)."},timeout:{type:"number",description:"Optional timeout in seconds."}},required:["server","tool"]}},{name:"restart_mcp_server",description:"Force-reconnect a configured MCP server (tears the connection down and rebuilds it). Useful when a server is in an error state after a config or environment change.",inputSchema:{type:"object",properties:{server:{type:"string",description:"The FLUJO server name."}},required:["server"]}},{name:"set_mcp_server_enabled",description:"Enable or disable a configured MCP server. Disabling disconnects it and prevents any further use; enabling connects it.",inputSchema:{type:"object",properties:{server:{type:"string",description:"The FLUJO server name."},enabled:{type:"boolean",description:"true to enable + connect, false to disable + disconnect."}},required:["server","enabled"]}},{name:"list_models",description:"List the models configured in this FLUJO instance (id, name, display name, description, provider, base URL, context window). API keys are never included. Reference models by id or name in FlowSpecs.",inputSchema:(0,B.WS)({providers:{type:"array",minItems:1,uniqueItems:!0,items:{type:"string"}},adapters:{type:"array",minItems:1,uniqueItems:!0,items:{type:"string"}},supportsTools:{type:"boolean",description:"Filter models with an explicit tool-capability value."},visionInput:{type:"string",enum:["supported","unsupported","unknown"]},folder:{type:"string",description:"Exact folder name; use an empty string for ungrouped models."},favorite:{type:"boolean",description:"Filter by favorite state."},minContextWindow:{type:"number",minimum:0}},{sorts:L}),outputSchema:(0,B.fM)()},{name:"list_planned_executions",description:"List the planned (scheduled/triggered) executions in this FLUJO instance with their trigger type, enabled state, armed status and last run outcome.",inputSchema:(0,B.WS)({states:{type:"array",minItems:1,uniqueItems:!0,items:{type:"string",enum:R}},triggerTypes:{type:"array",minItems:1,uniqueItems:!0,items:{type:"string",enum:S}},lastRunStatuses:{type:"array",minItems:1,uniqueItems:!0,items:{type:"string",enum:T}},flow:{type:"string",description:"Exact flow name or id."},folder:{type:"string",description:"Exact folder name; use an empty string for ungrouped executions."},armed:{type:"boolean"}},{sorts:M}),outputSchema:(0,B.fM)()},{name:"run_planned_execution",description:"Fire a planned execution immediately (by id, see list_planned_executions) and return the run record with its output.",inputSchema:{type:"object",properties:{id:{type:"string",description:"The planned execution id."}},required:["id"]}},{name:"update_planned_execution",description:'Modify an existing planned execution (by id or name, see list_planned_executions). Patch any of: "enabled" (turn the schedule on/off), "prompt" (the run prompt), "flowId" (the flow to run — accepts a flow name or id), "cron" (a convenience for the trigger\'s cron pattern — works for schedule / mcp-poll / url-watch triggers) or a full "trigger" object for complete control. Flow-driven cadence changes are clamped to a minimum interval (a runaway every-second schedule is rejected). The webhook secret token is never returned.',inputSchema:{type:"object",properties:{execution:{type:"string",description:"The planned execution id or name."},enabled:{type:"boolean",description:"Enable or disable the execution."},prompt:{type:"string",description:"The run prompt."},flowId:{type:"string",description:"The flow to run — a flow name or id (resolved to the flow id)."},cron:{type:"string",description:"Cron pattern (croner syntax; 6-field form for seconds) for the trigger's schedule. Applies to schedule / mcp-poll / url-watch triggers."},trigger:{type:"object",description:"Full trigger config object (escape hatch for complete control). Prefer the named fields above."}},required:["execution"]}},{name:"create_planned_execution",description:'Create a new planned execution: bind a flow to a trigger so it runs headlessly. Provide "name", "flow" (a flow name or id), an optional "prompt", optional "enabled" (default true), and EITHER a full "trigger" object OR a convenience "cron" (which creates a schedule trigger). Flow-driven cadence is clamped to a minimum interval. A webhook trigger\'s secret token is minted server-side and never returned.',inputSchema:{type:"object",properties:{name:{type:"string",description:"A name for the planned execution."},flow:{type:"string",description:"The flow to run — a flow name or id."},prompt:{type:"string",description:"The run prompt (may be empty)."},enabled:{type:"boolean",description:"Whether to arm the trigger immediately (default true)."},cron:{type:"string",description:'Cron pattern for a schedule trigger (convenience — use "trigger" for other trigger types).'},trigger:{type:"object",description:"Full trigger config object (schedule / webhook / file-watch / mcp-poll / url-watch)."}},required:["name","flow"]}},{name:"delete_planned_execution",description:"Permanently delete a planned execution (by id or name, see list_planned_executions), along with its run history. This cannot be undone.",inputSchema:{type:"object",properties:{execution:{type:"string",description:"The planned execution id or name."}},required:["execution"]}},{name:"list_conversations",description:"List lightweight chat-conversation summaries with status, flow, activity, planned-execution and hierarchy filters. Defaults to the 50 most recently active conversations. Use read_conversation to get a transcript.",inputSchema:(0,B.WS)({statuses:{type:"array",minItems:1,uniqueItems:!0,items:{type:"string",enum:O}},flow:{type:"string",description:"Exact flow name or id."},plannedExecutionId:{type:"string"},parentConversationId:{type:"string"},rootConversationId:{type:"string"},updatedAfter:{type:"number",description:"Keep conversations active at or after this epoch-millisecond timestamp."},updatedBefore:{type:"number",description:"Keep conversations active at or before this epoch-millisecond timestamp."}},{sorts:N}),outputSchema:(0,B.fM)()},{name:"read_conversation",description:'Read one chat conversation\'s transcript by conversation id (see list_conversations). Returns the displayed messages: system prompts are excluded, nested subflow steps carry a "depth" marker, assistant tool calls are summarized. Long conversations return only the most recent messages — raise "limit" to get more.',inputSchema:{type:"object",properties:{conversation:{type:"string",description:"The conversation id."},limit:{type:"number",description:"Maximum number of most-recent messages to return (default 50). The total transcript size is capped regardless."}},required:["conversation"]}},{name:"kv_get",description:'Read a value from FLUJO\'s PERSISTENT key-value store (the ${kv:NAME} store) — state that survives ACROSS flow runs (loop counters, cursors, flags). Returns { found, value }. Defaults to the instance-global board; pass "scope" to target another board (e.g. a flow-folder board id). Values are plain strings, never secrets.',inputSchema:{type:"object",properties:{name:{type:"string",description:"The key to read (an identifier: letters, digits, _ and -, not starting with a digit)."},scope:{type:"string",description:'Optional board id to read from. Defaults to "global".'}},required:["name"]}},{name:"kv_set",description:'Write a value to FLUJO\'s PERSISTENT key-value store (the ${kv:NAME} store) — state that survives ACROSS flow runs. Last-write-wins. Defaults to the instance-global board; pass "scope" to target another board. Values are plain strings (never secrets — use ${global:} for those) and are size-capped; an oversized write is refused with { saved:false, skipped }.',inputSchema:{type:"object",properties:{name:{type:"string",description:"The key to write (an identifier: letters, digits, _ and -, not starting with a digit)."},value:{type:"string",description:"The string value to store."},scope:{type:"string",description:'Optional board id to write to. Defaults to "global".'}},required:["name","value"]}}]}async function W(a){let b=await e.flowService.loadFlows();return b.find(b=>b.id===a)??b.find(b=>b.name===a)}async function X(a){let b=String(a?.flow??"").trim();if(!b)return U({error:'Provide "flow": a flow name or id.'},!0);let c=await W(b);if(!c)return U({error:`No flow named or with id "${b}". Use list_flow_building_blocks to see the available flows.`},!0);let d=global.__flujo_internal_flow_depth??0;if(d>=4)return U({error:`execute_flow nesting limit (4) reached — refusing to start "${c.name}" to prevent runaway recursion.`},!0);global.__flujo_internal_flow_depth=d+1;try{let b=await (0,i.runFlow)({flowId:c.id,prompt:String(a?.input??""),source:"internal",mode:"ephemeral",flujo:!0,requireApproval:!1});if(b.flowNotFound)return U({error:`Flow not found: ${b.flowNotFound.name}`},!0);if("error"===b.status)return U({error:b.error?.message??"Unknown error during flow execution."},!0);return U(b.outputText??"")}finally{global.__flujo_internal_flow_depth=d}}async function Y(a){let b=String(a?.flow??"").trim();if(!b)return U({error:'Provide "flow": a flow name or id.'},!0);let c=await W(b);if(!c)return U({error:`No flow named or with id "${b}".`},!0);let d=await e.flowService.deleteFlow(c.id);return d.success?U({deleted:!0,flowId:c.id,flowName:c.name}):U({error:d.error??`Failed to delete flow "${c.name}".`},!0)}function Z(a){let b=a.nodes.map(a=>{let{mcpNodes:b,...c}=a.data?.properties??{};return{id:a.id,type:a.type,label:a.data?.label,...a.data?.description?{description:a.data.description}:{},properties:c}}),c=a.edges.map(a=>{let b=a.data;return{from:a.source,to:a.target,type:b?.edgeType==="mcp"?"mcp":b?.edgeType==="resource"?"resource":"control",...b?.bidirectional?{bidirectional:!0}:{}}});return{id:a.id,name:a.name,...a.description?{description:a.description}:{},nodes:b,edges:c}}async function $(a){let b=String(a?.flow??"").trim();if(!b)return U({error:'Provide "flow": a flow name or id.'},!0);let c=await W(b);return c?U({...Z(c),note:"This is the compiled flow (node ids, not FlowSpec keys). To change it, author a fresh FlowSpec and call update_flow — it replaces the whole definition while keeping this flow id."}):U({error:`No flow named or with id "${b}". Use list_flow_building_blocks to see the available flows.`},!0)}async function _(a){let b=(0,B.rp)(a,{allowed:["flow","savedAfter","savedBefore"],sorts:I,defaultSort:"saved-desc",defaultLimit:25}),c=(0,B.sx)(a,"flow")??"";if(!c)return U({error:'Provide "flow": a flow name or id.'},!0);let d=await W(c);if(!d)return U({error:`No flow named or with id "${c}".`},!0);let f=(0,B.bg)(a,"savedAfter"),g=(0,B.bg)(a,"savedBefore"),h=await e.flowService.listFlowVersions(d.id);(h=h.filter(a=>(!b.query||`${a.versionId} ${a.name}`.toLocaleLowerCase().includes(b.query))&&(void 0===f||a.savedAt>=f)&&(void 0===g||a.savedAt<=g))).sort((a,c)=>"saved-asc"===b.sort?a.savedAt-c.savedAt||a.versionId.localeCompare(c.versionId):c.savedAt-a.savedAt||a.versionId.localeCompare(c.versionId));let i=(0,B.yk)(h,b);return{content:[{type:"text",text:JSON.stringify({flowId:d.id,flowName:d.name,versions:i.items,...0===i.items.length?{note:"No archived versions yet — versions appear once the flow's definition is overwritten for the first time."}:{}},null,2)}],structuredContent:i}}async function aa(a){let b=String(a?.flow??"").trim();if(!b)return U({error:'Provide "flow": a flow name or id.'},!0);let c=await e.flowService.loadFlows(),d=c.find(a=>a.id===b)??c.find(a=>a.name===b);return d?U(function(a,b,c){let d=new Map(b.map(a=>[a.id,a])),e=(0,l.X)({executions:c,flows:b}),f=function(a){let b=a.nodes.filter(a=>!["mcp","resource"].includes(o(a))),c=new Map(b.map(a=>[a.id,a])),d=new Map,e=new Map(b.map(a=>[a.id,0]));for(let b of r(a))c.has(b.source)&&c.has(b.target)&&(d.has(b.source)||d.set(b.source,[]),d.get(b.source).push(b.target),e.set(b.target,(e.get(b.target)??0)+1));let f=b.filter(a=>"start"===o(a)),g=(f.length>0?f:b.filter(a=>(e.get(a.id)??0)===0)).map(a=>a.id),h=new Set,i=[];for(;g.length>0;){let a=g.shift();if(h.has(a))continue;h.add(a);let b=c.get(a);for(let c of(b&&i.push(b),d.get(a)??[]))g.push(c)}for(let a of b)h.has(a.id)||i.push(a);return i}(a),g=[`# ${a.name}`,"",a.description?.trim()||`This flow contains ${f.length} executable step(s).`,"","## Steps",""];f.forEach((b,c)=>{for(let e of(g.push(`${c+1}. **${p(b)}** (\`${o(b)}\`)`),function(a,b,c){let d=o(b),e=b.data?.properties??{},f=[];if("start"===d)f.push("Entry point for the user or trigger input."),q(e.promptTemplate)&&f.push(`Adds this starting instruction: “${q(e.promptTemplate)}”`);else if("process"===d){f.push(`Runs a model step${n(e.boundModel)?` bound to \`${n(e.boundModel)}\``:""}; it ${s(e.inputMode)}.`),q(e.promptTemplate)&&f.push(`Primary instruction: “${q(e.promptTemplate)}”`);let c=function(a,b){let c=a.edges.filter(a=>{let c=a.data?.edgeType;return("mcp"===c||"resource"===c)&&(a.source===b.id||a.target===b.id)}),d=new Map(a.nodes.map(a=>[a.id,a]));return c.flatMap(a=>{let c=d.get(a.source===b.id?a.target:a.source);if(!c)return[];let e=c.data?.properties??{};if("mcp"===o(c)){let a=n(e.boundServer)||p(c),b=Array.isArray(e.enabledTools)?e.enabledTools.filter(a=>"string"==typeof a):[];return[`MCP server \`${a}\`${b.length>0?` (tools: ${b.map(a=>`\`${a}\``).join(", ")})`:" (all exposed tools)"}`]}return"resource"===o(c)?[`run resource \`${n(e.runName)||p(c)}\``]:[]})}(a,b);c.length>0&&f.push(`Can use ${c.join("; ")}.`),e.allowQuestion&&f.push("May pause to ask the user a structured question; avoid this in unattended runs."),n(e.captureVariable)&&f.push(`Captures its final answer in run variable \`${n(e.captureVariable)}\`.`),n(e.captureResource)&&f.push(`Captures its final answer as run resource \`${n(e.captureResource)}\`.`),n(e.captureKv)&&f.push(`Persists its final answer in key-value entry \`${n(e.captureKv)}\`.`)}else if("subflow"===d)f.push(...function(a,b){let c=a.data?.properties??{},d=n(c.subflowId),e=Array.isArray(c.parallelSubflowIds)?c.parallelSubflowIds.filter(a=>"string"==typeof a&&!!a.trim()):[],f=[...new Set([d,...e].filter(Boolean))].map(a=>b.get(a)?.name?`"${b.get(a).name}" (${a})`:`missing flow ${a}`),g=[];return f.length>0?g.push(`Invokes ${f.join(", ")}; it ${s(c.inputMode)}.`):g.push("Its target is selected dynamically at runtime or is currently unresolved."),c.allowCallerFanout?g.push("An upstream routing model may call this handoff several times with different task briefs, spawning parallel child runs."):Array.isArray(c.spawnBriefs)&&c.spawnBriefs.length>0?g.push(`It starts ${c.spawnBriefs.length} parallel child run(s), one per authored brief.`):n(c.parallelSubflowIdsVar)?g.push(`The child-flow list may be chosen dynamically from run variable \`${n(c.parallelSubflowIdsVar)}\`; those children run in parallel.`):e.length>0?g.push(`It fans out to ${e.length} child flows in parallel and joins their outputs.`):c.mapOverList?g.push(`It invokes the child once per ${"lines"===c.itemSplit?"non-empty input line":"item in a JSON array"}, ${c.sequential?"sequentially":`with bounded concurrency${c.concurrencyLimit?` (${c.concurrencyLimit})`:""}`}, then joins the outputs.`):g.push("The referenced flow runs as a child and its result is folded back into the parent run."),"final-only"===c.outputMode&&g.push("Only the child’s final output is shown in the parent; intermediate child steps are hidden."),!1===c.saveConversation?g.push("Child runs are ephemeral and do not create separate saved conversations."):g.push("Child runs are saved as linked conversations unless runtime mode overrides persistence."),n(c.captureVariable)&&g.push(`The joined result is captured in run variable \`${n(c.captureVariable)}\`.`),n(c.captureResource)&&g.push(`The joined result is captured as run resource \`${n(c.captureResource)}\`.`),n(c.captureKv)&&g.push(`The joined result is persisted in key-value entry \`${n(c.captureKv)}\`.`),g}(b,c));else if("signal"===d){let a=n(e.topic)||"(unnamed topic)";f.push(`Emits signal topic \`${a}\` immediately when execution reaches this node; this is a mid-run event, not flow completion.`),q(e.payloadTemplate)&&f.push(`Its payload is rendered from: “${q(e.payloadTemplate)}”`),f.push("Any enabled planned execution with a matching flow-event topic can start at this point, while this flow continues along its own outgoing edge(s).")}else"trigger"===d?f.push("Represents an internal trigger/routing point in the graph."):"finish"===d?f.push("Terminates this path; the latest folded output becomes the flow result."):f.push(`Runs a \`${d}\` node.`);return q(b.data?.description)&&f.push(`Author note: ${q(b.data.description)}`),f}(a,b,d)))g.push(` - ${e}`)});let h=function(a){let b=new Map(a.nodes.map(a=>[a.id,a]));return r(a).map(a=>{let c=b.get(a.source),d=b.get(a.target),e=a.data,f=(0,k.P2)(e?.condition),g=f?` when ${f}`:e?.bidirectional?" (bidirectional)":"";return`- “${c?p(c):a.source}” → “${d?p(d):a.target}”${g}.`})}(a);g.push("","## Connections",""),g.push(...h.length>0?h:["- No control connections are defined."]);let i=[...function(a,b){let c=[];for(let d of b)if(d.id!==a.id&&(0,m.sd)(d).includes(a.id))for(let b of d.nodes.filter(a=>"subflow"===o(a))){let e=b.data?.properties??{};if(![n(e.subflowId),...Array.isArray(e.parallelSubflowIds)?e.parallelSubflowIds.map(n):[]].includes(a.id))continue;let f=e.mapOverList?"once per input item":Array.isArray(e.parallelSubflowIds)&&e.parallelSubflowIds.includes(a.id)?"as one lane of a parallel fan-out":Array.isArray(e.spawnBriefs)&&e.spawnBriefs.length>0?`once per authored brief (${e.spawnBriefs.length} possible lanes)`:"as a child run";c.push(`- Parent flow “${d.name}” invokes this flow ${f} at subflow step “${p(b)}”; it ${s(e.inputMode)}.`)}return c}(a,b),...function(a,b,c,d){let e=[],f=new Map(b.map(a=>[a.id,a])),g=(0,m.gX)(a.id,f);for(let b of c){let c=b.nodes.filter(b=>b.flowId===a.id),d=b.nodes.filter(b=>b.flowId!==a.id&&function a(b,c){return b.some(b=>b.flowId===c||a(b.children,c))}(b.subflows,a.id));if(0===c.length&&0===d.length)continue;let f=new Map(b.nodes.map(a=>[a.executionId,a]));for(let a of c){let c="timeline"===a.timing.mode?`${a.triggerKind}${a.timing.cron?` on \`${a.timing.cron}\``:""}`:"fixed"===a.timing.mode?a.triggerKind:`${"signal"===a.timing.via?`signal \`${a.timing.topic??""}\``:"upstream completion"}`;e.push(`- Planned execution “${a.name}” (${a.enabled?"enabled":"disabled"}) invokes this flow via ${c} in wave \`${b.id}\`.`);let d=b.edges.filter(b=>b.toExecutionId===a.executionId),g=b.edges.filter(b=>b.fromExecutionId===a.executionId);e.push(...d.map(a=>t(a,f,"incoming"))),e.push(...g.map(a=>t(a,f,"outgoing")))}for(let a of d)for(let c of(e.push(`- Planned execution “${a.name}” can invoke this flow indirectly as a subflow of “${a.flowName??a.flowId}” in wave \`${b.id}\`.`),b.edges.filter(b=>b.fromExecutionId===a.executionId&&"signal"===b.via&&!!b.topic&&g.has(b.topic))))e.push(` - This flow’s signal \`${c.topic}\` can cause that wave node to start “${f.get(c.toExecutionId)?.name??c.toExecutionId}”.`);b.hasCycle&&e.push(`- Wave \`${b.id}\` contains a trigger cycle; runtime chain-depth and cooldown/overlap guards are what prevent unbounded event recursion.`)}for(let b of d.filter(b=>b.flowId===a.id))e.push(`- Planned execution “${b.name}” is an orphaned flow-event trigger: Waves found no matching producer, so it will not fire until its source is made resolvable.`);return e}(a,b,e.waves,e.orphans)];return g.push("","## Invocation and Waves implications",""),g.push(...i.length>0?i:["- No planned execution currently invokes this flow or links it into a Wave. It can still be run manually, through `execute_flow`, as an MCP flow tool, or as a subflow."]),g.join("\n")}(d,c,await (0,g.getSchedulerService)().list().catch(a=>(G.warn("explain_flow could not load planned executions; omitting Waves context",a),[])))):U({error:`No flow named or with id "${b}". Use list_flows or discover_capabilities.`},!0)}async function ab(a){let b=String(a?.flow??"").trim(),c=String(a?.version??"").trim();if(!b||!c)return U({error:'Provide "flow" (name or id) and "version" (see list_flow_versions).'},!0);let d=await W(b);if(!d)return U({error:`No flow named or with id "${b}".`},!0);let f=await e.flowService.getFlowVersion(d.id,c);return f?U({versionId:f.versionId,savedAt:f.savedAt,...Z(f.flow)}):U({error:`No version "${c}" of flow "${d.name}". Use list_flow_versions to see the archived versions.`},!0)}async function ac(a){let b=String(a?.flow??"").trim(),c=String(a?.version??"").trim();if(!b||!c)return U({error:'Provide "flow" (name or id) and "version" (see list_flow_versions).'},!0);let d=await W(b);if(!d)return U({error:`No flow named or with id "${b}".`},!0);let f=await e.flowService.revertFlow(d.id,c);return f.success?U({reverted:!0,flowId:d.id,versionId:c,note:"The definition that was just replaced has been archived too, so this revert can itself be undone via list_flow_versions / revert_flow."}):U({error:f.error??`Failed to revert flow "${d.name}".`},!0)}async function ad(a){let b=String(a?.flow??"").trim();if(!b)return U({error:'Provide "flow": the name or id of the flow to replace.'},!0);let c=function(a){let b=a?.spec;if("string"==typeof b)try{return JSON.parse(b)}catch{return null}return b??null}(a);if(!c)return U({error:'Provide a "spec" argument: a FlowSpec object (or a JSON string of one).'},!0);let d=await W(b);if(!d)return U({error:`No flow named or with id "${b}". Use list_flow_building_blocks to see the available flows.`},!0);let e=await (0,j.V)(c,{save:!0,updateFlowId:d.id});return e.success?U({flowId:e.flow.id,flowName:e.flow.name,nodeCount:e.flow.nodes.length,edgeCount:e.flow.edges.length,validation:e.validation,saved:e.saved,...e.saved?{note:`Flow "${e.flow.name}" was replaced (id ${e.flow.id} kept — existing references keep working).`}:{note:"NOT saved: validation found errors. The existing flow is unchanged. Fix the issues and call update_flow again."}},!e.saved):U({error:e.error,issues:e.issues??[]},!0)}async function ae(a,b){let c=(0,B.rp)(b,{allowed:["enabled","statuses","transports","folder","favorite"],sorts:J,defaultSort:"name-asc"}),d=(0,B.Jz)(b,"enabled"),e=(0,B.li)(b,"statuses",P),f=(0,B.li)(b,"transports",Q),g=(0,B.sx)(b,"folder",{allowEmpty:!0}),h=(0,B.Jz)(b,"favorite"),i=await a.loadServerConfigs();if(!Array.isArray(i))return U({error:i.error??"Failed to load server configs."},!0);let j=i.filter(a=>(void 0===d||!a.disabled===d)&&(!f||f.includes(a.transport))&&(void 0===g||(a.folder??"")===g)&&(void 0===h||!!a.favorite===h)),k=await Promise.all(j.map(async b=>{let c="unknown";try{c=(await a.getServerStatus(b.name)).status}catch(a){G.debug(`list_mcp_servers: getServerStatus failed for ${b.name}`,a)}return{name:b.name,transport:b.transport,enabled:!b.disabled,status:c,...b.folder?{folder:b.folder}:{},...b.favorite?{favorite:!0}:{}}}));return(k=k.filter(a=>(!e||e.includes(a.status))&&(!c.query||`${a.name} ${a.transport} ${a.status} ${a.folder??""}`.toLocaleLowerCase().includes(c.query)))).sort((a,b)=>{switch(c.sort){case"name-desc":return b.name.localeCompare(a.name);case"status":return a.status.localeCompare(b.status)||a.name.localeCompare(b.name);case"transport":return a.transport.localeCompare(b.transport)||a.name.localeCompare(b.name);default:return a.name.localeCompare(b.name)}}),(0,B.Bc)((0,B.yk)(k,c))}async function af(a,b,c){let d=(0,B.rp)(b,{allowed:["server","includeSchema"],sorts:K,defaultSort:"name-asc"}),e=(0,B.sx)(b,"server")??"",f=(0,B.Jz)(b,"includeSchema")??!0;if(!e)return U({error:'Provide "server": a FLUJO server name.'},!0);let{tools:g,error:h}=await a.listServerTools(e,"host"===c?"all":c);if(h)return U({error:h},!0);let i=g.filter(a=>!d.query||`${a.name} ${a.description??""}`.toLocaleLowerCase().includes(d.query)).map(a=>({name:a.name,description:a.description,...f?{inputSchema:a.inputSchema}:{}})).sort((a,b)=>"name-desc"===d.sort?b.name.localeCompare(a.name):a.name.localeCompare(b.name));return(0,B.Bc)((0,B.yk)(i,d))}async function ag(a,b,c){let d=String(b?.query??"").trim();if(!d)return U({error:'Provide a non-empty "query" describing the capability you need.'},!0);if(d.length>256)return U({error:'"query" must be at most 256 characters.'},!0);let f=b?.kinds,g=Array.isArray(f)?f.map(String):["flow","mcp_tool"];if(0===g.length||g.some(a=>!["flow","mcp_tool"].includes(a)))return U({error:'"kinds" may contain only "flow" and "mcp_tool".'},!0);let h="string"==typeof b?.server?b.server.trim():"",i="number"==typeof b?.limit&&Number.isInteger(b.limit)?Math.min(50,Math.max(1,b.limit)):20,j=d.toLocaleLowerCase(),k=new Set(["and","for","from","into","need","that","the","this","tool","want","with"]),l=[...new Set(j.split(/[^a-z0-9_-]+/).filter(a=>a.length>2&&!k.has(a)))],m=(a,b)=>{let c=a.toLocaleLowerCase(),d=b.toLocaleLowerCase();if(c===j)return 1e3;if(c.includes(j))return 800;if(d.includes(j))return 600;let e=l.filter(a=>d.includes(a));return 0===e.length?-1:100*e.length+25*e.filter(a=>c.includes(a)).length},n=[];if(g.includes("flow"))for(let a of(await e.flowService.loadFlows())){let b=m(a.name,`${a.name} ${a.description??""} ${a.folder??""}`);b<0||n.push({score:b,item:{kind:"flow",id:a.id,name:a.name,...a.description?{description:(0,u.xv)(a.description,u.bD)}:{},invocation:{tool:"execute_flow",arguments:{flow:a.id,input:"<user request>"}},explanation:{tool:"explain_flow",arguments:{flow:a.id}}}})}if(g.includes("mcp_tool")){let b=await a.loadServerConfigs();if(!Array.isArray(b))return U({error:b.error??"Failed to load server configs."},!0);let d=b.filter(a=>!a.disabled&&(!h||a.name===h));if(h&&0===d.length)return U({error:`No enabled MCP server named "${h}".`},!0);let e="host"===c?"all":c;for(let{config:b,listed:c}of(await Promise.all(d.map(async b=>({config:b,listed:await a.listServerTools(b.name,e)})))))if(!c.error)for(let a of c.tools){let c=m(a.name,`${b.name} ${a.name} ${a.description??""}`);c<0||n.push({score:c,item:{kind:"mcp_tool",server:b.name,name:a.name,...a.description?{description:a.description}:{},inputSchema:a.inputSchema,invocation:{tool:"call_mcp_tool",arguments:{server:b.name,tool:a.name,args:{}}}}})}}n.sort((a,b)=>{let c=`${a.item.name??""}`.toLocaleLowerCase(),d=`${b.item.name??""}`.toLocaleLowerCase();return b.score-a.score||c.localeCompare(d)||`${a.item.server??""}`.localeCompare(`${b.item.server??""}`)});let o=n.slice(0,i).map(a=>a.item);return{content:[{type:"text",text:JSON.stringify(o,null,2)}],structuredContent:{items:o,total:n.length,hasMore:n.length>o.length}}}async function ah(a,b,c){let d=String(b?.server??"").trim(),e=String(b?.tool??"").trim();if(!d||!e)return U({error:'Provide "server" and "tool".'},!0);let f=b?.args&&"object"==typeof b.args&&!Array.isArray(b.args)?b.args:{},g="number"==typeof b?.timeout?b.timeout:void 0,h=await a.callTool(d,e,f,g,void 0,void 0,void 0,c);if(!h.success)return U({error:h.error??`Tool call failed on ${d}.`},!0);let i=h.data;return i&&Array.isArray(i.content)?i:U(i??{ok:!0})}async function ai(a,b){let c=String(b?.server??"").trim();if(!c)return U({error:'Provide "server": a FLUJO server name.'},!0);let d=await a.forceReconnect(c);if(!d.success)return U({error:d.error??`Failed to restart ${c}.`},!0);let e=await a.getServerStatus(c);return U({restarted:!0,server:c,status:e.status})}async function aj(a,b){let c=String(b?.server??"").trim(),d=b?.enabled;if(!c||"boolean"!=typeof d)return U({error:'Provide "server" (string) and "enabled" (boolean).'},!0);let e=await a.updateServerConfig(c,{disabled:!d});return"error"in e?U({error:e.error},!0):U({server:c,enabled:d})}async function ak(a){try{let b=(0,B.rp)(a,{allowed:["folder","favorite","updatedAfter","updatedBefore"],sorts:H,defaultSort:"name-asc"}),c=(0,B.sx)(a,"folder",{allowEmpty:!0}),d=(0,B.Jz)(a,"favorite"),f=(0,B.bg)(a,"updatedAfter"),g=(0,B.bg)(a,"updatedBefore"),h=(await e.flowService.loadFlows()).map(a=>({id:a.id,name:a.name,...a.description?{description:(0,u.xv)(a.description,u.bD)}:{},nodeCount:a.nodes?.length??0,...a.folder?{folder:a.folder}:{},...a.favorite?{favorite:!0}:{},...void 0!==a.createdAt?{createdAt:a.createdAt}:{},...void 0!==a.updatedAt?{updatedAt:a.updatedAt}:{}})).filter(a=>{let e=a.updatedAt??a.createdAt??0;return(!b.query||`${a.id} ${a.name} ${a.description??""} ${a.folder??""}`.toLocaleLowerCase().includes(b.query))&&(void 0===c||(a.folder??"")===c)&&(void 0===d||!!a.favorite===d)&&(void 0===f||e>=f)&&(void 0===g||e<=g)});return h.sort((a,c)=>{let d=a.updatedAt??a.createdAt??0,e=c.updatedAt??c.createdAt??0;switch(b.sort){case"name-desc":return c.name.localeCompare(a.name)||c.id.localeCompare(a.id);case"updated-desc":return e-d||a.name.localeCompare(c.name)||a.id.localeCompare(c.id);case"updated-asc":return d-e||a.name.localeCompare(c.name)||a.id.localeCompare(c.id);case"nodes-desc":return c.nodeCount-a.nodeCount||a.name.localeCompare(c.name)||a.id.localeCompare(c.id);case"nodes-asc":return a.nodeCount-c.nodeCount||a.name.localeCompare(c.name)||a.id.localeCompare(c.id);default:return a.name.localeCompare(c.name)||a.id.localeCompare(c.id)}}),(0,B.Bc)((0,B.yk)(h,b))}catch(a){if(a instanceof B.EL)throw a;return G.error("list_flows failed",a),U({error:"Failed to load flows."},!0)}}async function al(a){let b=(0,B.rp)(a,{allowed:["providers","adapters","supportsTools","visionInput","folder","favorite","minContextWindow"],sorts:L,defaultSort:"name-asc"}),c=(0,B.li)(a,"providers"),d=(0,B.li)(a,"adapters"),e=(0,B.Jz)(a,"supportsTools"),g=(0,B.sx)(a,"visionInput");if(g&&!["supported","unsupported","unknown"].includes(g))throw new B.EL('"visionInput" must be supported, unsupported, or unknown.');let h=(0,B.sx)(a,"folder",{allowEmpty:!0}),i=(0,B.Jz)(a,"favorite"),j=(0,B.bg)(a,"minContextWindow");if(void 0!==j&&j<0)throw new B.EL('"minContextWindow" must be zero or greater.');let k=(await f.modelService.loadModels()).filter(a=>(!b.query||`${a.id} ${a.name} ${a.displayName??""} ${a.description??""} ${a.provider??""} ${a.adapter??""} ${a.folder??""}`.toLocaleLowerCase().includes(b.query))&&(!c||c.includes(a.provider??"openai"))&&(!d||d.includes(a.adapter??"openai"))&&(void 0===e||a.supportsTools===e)&&(void 0===g||a.visionInputCapability===g)&&(void 0===h||(a.folder??"")===h)&&(void 0===i||!!a.favorite===i)&&(void 0===j||(a.contextWindow??0)>=j)).map(a=>({id:a.id,name:a.name,...a.displayName?{displayName:a.displayName}:{},...a.description?{description:a.description}:{},...a.provider?{provider:a.provider}:{},...a.adapter?{adapter:a.adapter}:{},...a.baseUrl?{baseUrl:a.baseUrl}:{},...a.contextWindow?{contextWindow:a.contextWindow}:{},...void 0!==a.supportsTools?{supportsTools:a.supportsTools}:{},...a.visionInputCapability?{visionInputCapability:a.visionInputCapability}:{},...a.folder?{folder:a.folder}:{},...a.favorite?{favorite:!0}:{}}));return k.sort((a,c)=>{let d=a.displayName??a.name,e=c.displayName??c.name;switch(b.sort){case"name-desc":return e.localeCompare(d)||c.id.localeCompare(a.id);case"provider":return(a.provider??"").localeCompare(c.provider??"")||d.localeCompare(e);case"context-desc":return(c.contextWindow??-1)-(a.contextWindow??-1)||d.localeCompare(e);case"context-asc":if(void 0===a.contextWindow)return void 0===c.contextWindow?d.localeCompare(e):1;if(void 0===c.contextWindow)return -1;return a.contextWindow-c.contextWindow||d.localeCompare(e);default:return d.localeCompare(e)||a.id.localeCompare(c.id)}}),(0,B.Bc)((0,B.yk)(k,b))}async function am(a){var b,c;let d=(0,B.rp)(a,{allowed:["states","triggerTypes","lastRunStatuses","flow","folder","armed"],sorts:M,defaultSort:"name-asc"}),e=(0,B.li)(a,"states",R),f=(0,B.li)(a,"triggerTypes",S),h=(0,B.li)(a,"lastRunStatuses",T),i=(0,B.sx)(a,"flow"),j=(0,B.sx)(a,"folder",{allowEmpty:!0}),k=(0,B.Jz)(a,"armed"),l=i?await W(i):void 0,m=l?.id??i,n=await (0,g.getSchedulerService)().list();b=n=n.filter(a=>(!d.query||function(a,b){let c=b.trim().toLocaleLowerCase();if(!c)return!0;let d=a.execution;return[d.name,d.folder,d.prompt,d.flowId,d.trigger.type,C[d.trigger.type]].some(a=>a?.toLocaleLowerCase().includes(c))}(a,d.query))&&(!e||e.some(b=>(function(a,b){switch(b){case"enabled":return a.execution.enabled;case"disabled":return!a.execution.enabled;case"running":return a.status.running;case"attention":return!!(a.status.lastTriggerError||a.lastRun?.status==="error"||a.lastRun?.status==="needs_approval");default:return!0}})(a,b)))&&(!f||f.includes(a.execution.trigger.type))&&(!h||a.lastRun&&h.includes(a.lastRun.status))&&(void 0===m||a.execution.flowId===m)&&(void 0===j||(a.execution.folder??"")===j)&&(void 0===k||!!a.status?.armed===k)),c=d.sort;let o=(n=[...b].sort((a,b)=>{switch(c){case"name-asc":return E(a,b);case"name-desc":return b.execution.name.localeCompare(a.execution.name)||b.execution.id.localeCompare(a.execution.id);case"newest":return D(b.execution.createdAt)-D(a.execution.createdAt)||E(a,b);case"oldest":return D(a.execution.createdAt)-D(b.execution.createdAt)||E(a,b);case"last-run":return D(b.lastRun?.firedAt)-D(a.lastRun?.firedAt)||E(a,b);default:return 0}})).map(({execution:a,status:b,lastRun:c})=>({id:a.id,name:a.name,enabled:a.enabled,flowId:a.flowId,triggerType:a.trigger?.type,armed:b?.armed??!1,running:b?.running??!1,...b?.lastTriggerError?{lastTriggerError:b.lastTriggerError}:{},...a.folder?{folder:a.folder}:{},...a.createdAt?{createdAt:a.createdAt}:{},...a.updatedAt?{updatedAt:a.updatedAt}:{},...c?{lastRun:{status:c.status,firedAt:c.firedAt,...c.error?{error:c.error}:{}}}:{}}));return(0,B.Bc)((0,B.yk)(o,d))}async function an(a){let b=String(a?.id??"").trim();if(!b)return U({error:'Provide "id": a planned execution id (see list_planned_executions).'},!0);let{record:c,error:d}=await (0,g.getSchedulerService)().runNow(b);return d||!c?U({error:d??"Run failed."},!0):U({runId:c.runId,status:c.status,firedAt:c.firedAt,...c.finishedAt?{finishedAt:c.finishedAt}:{},...c.outputText?{outputText:c.outputText}:{},...c.error?{error:c.error}:{}})}async function ao(a){let b=await (0,g.getSchedulerService)().list(),c=b.find(b=>b.execution.id===a),d=b.find(b=>b.execution.name===a);return(c??d)?.execution??null}function ap(a){return{id:a.id,name:a.name,enabled:a.enabled,flowId:a.flowId,triggerType:a.trigger?.type}}function aq(a,b){try{let c=(0,h.Z9)(a,b,5).map(a=>new Date(a).getTime()),d=1/0;for(let a=1;a<c.length;a++){let b=c[a]-c[a-1];b>0&&b<d&&(d=b)}return Number.isFinite(d)?d:null}catch{return null}}function ar(a){let b=null;return("schedule"===a.type||"url-watch"===a.type?a.cron&&(b=aq(a.cron,a.timezone)):"mcp-poll"===a.type&&(a.cron?b=aq(a.cron,a.timezone):"number"==typeof a.intervalMs&&(b=a.intervalMs)),null!==b&&b<6e4)?`Cadence too fast: the trigger would fire about every ${Math.round(b/1e3)}s, but flow-driven schedule changes are clamped to a minimum interval of 60s. Choose a slower cadence (change it from the Planned Executions page for a faster one).`:null}async function as(a){let b,c=String(a?.execution??"").trim();if(!c)return U({error:'Provide "execution": a planned execution id or name (see list_planned_executions).'},!0);let d=await ao(c);if(!d)return U({error:`No planned execution with id or name "${c}". Use list_planned_executions to see them.`},!0);let e={};"boolean"==typeof a?.enabled&&(e.enabled=a.enabled),"string"==typeof a?.prompt&&(e.prompt=a.prompt);let f=String(a?.flowId??a?.flow??"").trim();if(f){let a=await W(f);if(!a)return U({error:`No flow named or with id "${f}". Use list_flow_building_blocks to see the flows.`},!0);e.flowId=a.id}a?.trigger&&"object"==typeof a.trigger&&!Array.isArray(a.trigger)&&(b=a.trigger);let h="string"==typeof a?.cron?a.cron.trim():"";if(h){let a=b??d.trigger;if("schedule"!==a.type&&"mcp-poll"!==a.type&&"url-watch"!==a.type)return U({error:`The "${a.type}" trigger has no schedule to change with "cron". Pass a full "trigger" object instead.`},!0);b={...a,cron:h}}if(b){let a=ar(b);if(a)return U({error:a},!0);e.trigger=b}if(0===Object.keys(e).length)return U({error:"Nothing to update. Provide at least one of: enabled, prompt, flowId, cron, trigger."},!0);let i=await (0,g.getSchedulerService)().update(d.id,e);return i.error||!i.execution?U({error:i.error??"Update failed."},!0):U({updated:!0,...ap(i.execution)})}async function at(a){let b,c=String(a?.name??"").trim();if(!c)return U({error:'Provide "name": a name for the planned execution.'},!0);let d=String(a?.flow??a?.flowId??"").trim();if(!d)return U({error:'Provide "flow": a flow name or id to run.'},!0);let e=await W(d);if(!e)return U({error:`No flow named or with id "${d}". Use list_flow_building_blocks to see the flows.`},!0);if(a?.trigger&&"object"==typeof a.trigger&&!Array.isArray(a.trigger))b=a.trigger;else{let c="string"==typeof a?.cron?a.cron.trim():"";if(!c)return U({error:'Provide a "trigger" object or a "cron" pattern (which creates a schedule trigger).'},!0);b={type:"schedule",cron:c}}let f=ar(b);if(f)return U({error:f},!0);let h={name:c,enabled:"boolean"!=typeof a?.enabled||a.enabled,flowId:e.id,prompt:"string"==typeof a?.prompt?a.prompt:"",trigger:b},i=await (0,g.getSchedulerService)().create(h);return i.error||!i.execution?U({error:i.error??"Create failed."},!0):U({created:!0,...ap(i.execution)})}async function au(a){let b=String(a?.execution??"").trim();if(!b)return U({error:'Provide "execution": a planned execution id or name (see list_planned_executions).'},!0);let c=await ao(b);if(!c)return U({error:`No planned execution with id or name "${b}". Use list_planned_executions to see them.`},!0);let d=await (0,g.getSchedulerService)().delete(c.id);return d.success?U({deleted:!0,id:c.id,name:c.name}):U({error:d.error??`Failed to delete "${c.name}".`},!0)}async function av(a){let b=(0,B.rp)(a,{allowed:["statuses","flow","plannedExecutionId","parentConversationId","rootConversationId","updatedAfter","updatedBefore"],sorts:N,defaultSort:"activity-desc"}),c=(0,B.li)(a,"statuses",O),d=(0,B.sx)(a,"flow"),e=(0,B.sx)(a,"plannedExecutionId"),f=(0,B.sx)(a,"parentConversationId"),g=(0,B.sx)(a,"rootConversationId"),h=(0,B.bg)(a,"updatedAfter"),i=(0,B.bg)(a,"updatedBefore"),j=d?await W(d):void 0,k=j?.id??d,l=(await (0,A.Mw)()).map(a=>{let b=y.FlowExecutor.conversationStates.get(a.id),c=b?.status??a.status;return"running"===c&&0===x.$.currentSeq(a.id)&&(c="error"),{...a,title:b?.title??a.title,flowId:b?.flowId??a.flowId,...c?{status:c}:{},updatedAt:b?.updatedAt??a.updatedAt,lastUserMessageAt:b?.lastUserMessageAt??a.lastUserMessageAt??null,plannedExecutionId:b?.plannedExecutionId??a.plannedExecutionId??null,parentConversationId:b?.parentConversationId??a.parentConversationId??null,rootConversationId:b?.rootConversationId??a.rootConversationId??null,recovery:b?.recovery??a.recovery}}).filter(a=>{let d=a.status??"not_started",j=a.lastUserMessageAt??a.updatedAt,l=`${a.id} ${a.title} ${a.flowId??""} ${a.plannedExecutionId??""}`.toLocaleLowerCase();return(!b.query||l.includes(b.query))&&(!c||c.includes(d))&&(void 0===k||a.flowId===k)&&(void 0===e||a.plannedExecutionId===e)&&(void 0===f||a.parentConversationId===f)&&(void 0===g||a.rootConversationId===g)&&(void 0===h||j>=h)&&(void 0===i||j<=i)});return l.sort((a,c)=>{let d=a.lastUserMessageAt??a.updatedAt,e=c.lastUserMessageAt??c.updatedAt;switch(b.sort){case"activity-asc":return d-e||a.id.localeCompare(c.id);case"created-desc":return c.createdAt-a.createdAt||a.id.localeCompare(c.id);case"created-asc":return a.createdAt-c.createdAt||a.id.localeCompare(c.id);case"title-asc":return a.title.localeCompare(c.title)||a.id.localeCompare(c.id);case"title-desc":return c.title.localeCompare(a.title)||a.id.localeCompare(c.id);default:return e-d||a.id.localeCompare(c.id)}}),(0,B.Bc)((0,B.yk)(l,b))}async function aw(a){let b=String(a?.conversation??"").trim();if(!b)return U({error:'Provide "conversation": a conversation id (see list_conversations).'},!0);await (0,w.u8)(b);let c=await (0,v.N)(b);if(!c)return U({error:`No conversation with id "${b}". Use list_conversations to see the stored conversations.`},!0);let d=await (0,w.Os)(b),e=d?(0,w.cc)(d):[],f=e.length>0?e:(c.messages||[]).filter(a=>"system"!==a.role),g="number"==typeof a?.limit&&a.limit>0?Math.floor(a.limit):50,h=[],i=0;for(let a=f.length-1;a>=0&&h.length<g;a--){let b=function(a){let b="";"string"==typeof a.content?b=a.content:Array.isArray(a.content)&&(b=a.content.map(a=>"text"in a&&"string"==typeof a.text?a.text:"").filter(Boolean).join("\n"));let c={role:a.role,...b?{content:b}:{},...a.timestamp?{timestamp:a.timestamp}:{},...a.depth?{depth:a.depth}:{}};return"assistant"===a.role&&Array.isArray(a.tool_calls)&&a.tool_calls.length>0&&(c.toolCalls=a.tool_calls.map(a=>{let b="function"in a?a.function:void 0,c=b&&"string"==typeof b.arguments?b.arguments:void 0;return{id:a.id,...b?.name?{name:b.name}:{},...void 0!==c?{arguments:c.length>2e3?c.slice(0,2e3)+"…[truncated]":c}:{}}})),"tool"===a.role&&a.tool_call_id&&(c.toolCallId=a.tool_call_id),c}(f[a]),c=JSON.stringify(b).length;if(h.length>0&&i+c>1e5)break;h.push(b),i+=c}return h.reverse(),U({id:c.conversationId||b,title:c.title||"Untitled Conversation",flowId:c.flowId||null,...c.status?{status:c.status}:{},createdAt:c.createdAt||0,updatedAt:c.updatedAt||0,totalMessages:f.length,...h.length<f.length?{note:`Returning the ${h.length} most recent of ${f.length} messages — raise "limit" to get more.`}:{},messages:h})}let ax=/^[A-Za-z0-9_-]{1,64}$/,ay=/^[A-Za-z_][\w-]*$/;async function az(a){let b="string"==typeof a.name?a.name.trim():"",c="string"==typeof a.scope&&a.scope.trim()?a.scope.trim():"global";if(!ay.test(b))return U({error:'kv_get requires a valid "name" (letters, digits, _ and -, not starting with a digit).'},!0);if(!ax.test(c))return U({error:`Invalid kv scope id: ${c}`},!0);let d=await (0,z.M3)(c,b);return U({scope:c,name:b,found:void 0!==d,value:d??null})}async function aA(a){let b="string"==typeof a.name?a.name.trim():"",c="string"==typeof a.scope&&a.scope.trim()?a.scope.trim():"global",d="string"==typeof a.value?a.value:null==a.value?"":String(a.value);if(!ay.test(b))return U({error:'kv_set requires a valid "name" (letters, digits, _ and -, not starting with a digit).'},!0);if(!ax.test(c))return U({error:`Invalid kv scope id: ${c}`},!0);let e=await (0,z.or)(c,b,d);return"skipped"in e?U({scope:c,name:b,saved:!1,skipped:e.skipped},!0):U({scope:c,name:b,saved:!0,size:e.size})}async function aB(a,b,c,d="host"){try{if((0,F.yM)(b))return await (0,F.oV)(b,c);switch(b){case"list_flows":return await ak(c);case"discover_capabilities":return await ag(a,c,d);case"execute_flow":return await X(c);case"explain_flow":return await aa(c);case"read_flow":return await $(c);case"update_flow":return await ad(c);case"list_flow_versions":return await _(c);case"read_flow_version":return await ab(c);case"revert_flow":return await ac(c);case"delete_flow":return await Y(c);case"list_mcp_servers":return await ae(a,c);case"list_mcp_server_tools":return await af(a,c,d);case"call_mcp_tool":return await ah(a,c,d);case"restart_mcp_server":return await ai(a,c);case"set_mcp_server_enabled":return await aj(a,c);case"list_models":return await al(c);case"list_planned_executions":return await am(c);case"run_planned_execution":return await an(c);case"update_planned_execution":return await as(c);case"create_planned_execution":return await at(c);case"delete_planned_execution":return await au(c);case"list_conversations":return await av(c);case"read_conversation":return await aw(c);case"kv_get":return await az(c);case"kv_set":return await aA(c);default:return U({error:`Unknown FLUJO control-plane tool: ${b}`},!0)}}catch(a){return G.error("internalCallTool failed",{toolName:b,err:a}),U({error:`Tool failed: ${a instanceof Error?a.message:String(a)}`},!0)}}}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";exports.id=6033,exports.ids=[6033],exports.modules={66033:(a,b,c)=>{c.d(b,{persistConversationState:()=>o});var d=c(79111),e=c(44479),f=c(18230),g=c(33873),h=c.n(g),i=c(29021),j=c(85510);let k=(0,f.h)("backend/execution/flow/conversationSummaryStore");async function l(a,b,c){(0,d.ln)(a);let e=c??await i.promises.stat(h().join(h().join((0,j.getDataDir)(),"db","conversations"),`${a}.json`)),f={version:1,...{id:b.conversationId||a,title:b.title||"Untitled Conversation",flowId:b.flowId||null,...b.status?{status:b.status}:{},createdAt:b.createdAt||0,updatedAt:b.updatedAt||0,...void 0!==b.lastUserMessageAt?{lastUserMessageAt:b.lastUserMessageAt}:{},...void 0!==b.plannedExecutionId?{plannedExecutionId:b.plannedExecutionId}:{},...void 0!==b.parentConversationId?{parentConversationId:b.parentConversationId}:{},...void 0!==b.rootConversationId?{rootConversationId:b.rootConversationId}:{},...b.recovery?{recovery:b.recovery}:{}},snapshotMtimeMs:e.mtimeMs,snapshotSize:e.size};await (0,d.l_)(`conversation-summaries/${a}`,()=>(0,d.Zf)(h().join(h().join((0,j.getDataDir)(),"db","conversation-summaries"),`${a}.json`),JSON.stringify(f,null,2)))}async function m(a,b){try{await l(a,b)}catch(b){k.warn(`Could not refresh conversation summary ${a}; it will be rebuilt on list.`,b)}}let n=(0,f.h)("backend/execution/flow/persistConversationState");async function o(a,b){let c="conversations/",f=String(a).startsWith(c)?String(a).slice(c.length):String(a);return((0,d.ln)(f),null!=b.conversationId&&(0,d.ln)(b.conversationId),b.ephemeral)?(n.debug(`Refusing to persist ephemeral state (key ${a}); ephemeral runs never reach the conversations store.`),Promise.resolve()):(0,e.isConversationDeleted)(b.conversationId)?(n.info(`Refusing to persist state for deleted conversation ${b.conversationId} (key ${a}).`),Promise.resolve()):void(await (0,d.VH)(a,{...b,executionTrace:void 0,emit:void 0}),await m(f,b))}}};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
"use strict";exports.id=6226,exports.ids=[4681,6226],exports.modules={1686:(a,b,c)=>{c.d(b,{PD:()=>h,PJ:()=>f,fS:()=>j,iS:()=>i,xk:()=>g});let d=globalThis,e=d.__flujoSteeringInbox??(d.__flujoSteeringInbox=new Map);function f(a,b){let c=e.get(a);c?c.push(b):e.set(a,[b])}function g(a){return e.get(a)?.length??0}function h(a){let b=e.get(a);return b&&0!==b.length?(e.delete(a),b):[]}function i(a,b){if(0===b.length)return;let c=e.get(a)??[];e.set(a,[...b,...c])}function j(a){e.delete(a)}},16226:(a,b,c)=>{c.d(b,{runFlow:()=>D});var d=c(50846),e=c(95708),f=c(38291),g=c(60184),h=c(1686),i=c(14214),j=c(56793),k=c(99978),l=c(37816),m=c(75312),n=c(87821),o=c(92372),p=c(13516),q=c(44681),r=c(67490),s=c(75028),t=c(23529),u=c(30767),v=c(48706),w=c(41561);let x=(0,d.h)("backend/execution/flow/runFlow");n.flowService.getFlowByName||(n.flowService.getFlowByName=async a=>(await n.flowService.loadFlows()).find(b=>b.name===a)||null,x.info("Added getFlowByName method directly to flowService instance."));let y=n.flowService,z=f.persistConversationState;async function A(a){let b;if("boolean"==typeof a.unattended)return a.unattended;try{let c=a.flowSnapshot??(a.flowId?await n.flowService.getFlow(a.flowId)??void 0:void 0);b=c?.unattended}catch(a){x.debug("resolveUnattended: flow load failed; using source default",{err:a})}let c="boolean"==typeof b?b:"schedule"===a.source;return a.unattended=c,c}async function B(a,b,c){let d;if(!await A(a))return"complete";let e=a.currentNodeId;if(!e)return"complete";try{d=a.flowSnapshot??(a.flowId?await n.flowService.getFlow(a.flowId)??void 0:void 0)}catch(a){return x.debug("[Unattended] flow load failed; completing normally",{err:a}),"complete"}if(!d)return"complete";let f=d.nodes?.find(a=>a.id===e);if(!f||"process"!==f.type)return"complete";let g=new Set((d.nodes??[]).filter(a=>"mcp"===a.type).map(a=>a.id)),h=Array.from(new Set((d.edges??[]).filter(a=>a.source===e&&"mcpEdge"!==a.type&&a.data?.edgeType!=="mcp"&&a.data?.bidirectional!==!0&&!g.has(a.target)).map(a=>a.target))).filter(a=>(d.nodes??[]).some(b=>b.id===a));if(1===h.length){let d=h[0];x.info(`[Unattended] Process node ${e} ended on plain text; auto-advancing to sole forward successor ${d} for conv ${a.conversationId}.`);let f=a.currentNodeId;return a.currentNodeId=d,a.handoffRequested=void 0,c.delete(e),b({type:"handoff",from:f?{nodeId:f}:void 0,toNodeId:d,edgeId:`unattended-auto:${e}->${d}`}),"advanced"}if(h.length>1){let b=c.get(e)??0;if(b<1)return c.set(e,b+1),x.info(`[Unattended] Process node ${e} ended on plain text with ${h.length} forward successors; nudging to hand off (attempt ${b+1}/1).`),a.messages.push({id:crypto.randomUUID(),role:"user",content:"You ended your turn without calling a tool or handing off, but this is an unattended run that cannot stop at this step. To continue you MUST call one of your handoff tools to route to the next step. If your work at this step is complete, hand off to the finishing/next step now.",timestamp:Date.now(),processNodeId:e}),"nudged";x.warn(`[Unattended] Process node ${e} still did not hand off after 1 nudge(s); completing the run to avoid a loop.`)}return"complete"}async function C(a,b,c){try{let d,e=a.flowId;if(!e)return;try{d=(await n.flowService.getFlow(e))?.name??void 0}catch{}let f="api"===a.source?"api":"chat",g=c&&c.length>4096?`${c.slice(0,4096)}…`:c;(0,j.eh)().publish({flowId:e,flowName:d,executionId:a.plannedExecutionId,runId:a.conversationId||"",conversationId:a.conversationId||"",status:b,outputText:g,firedBy:f,chainDepth:a.chainDepth??0,timestamp:new Date().toISOString()})}catch(a){x.warn("Failed to publish runFlow flow-run event:",a)}}async function D(a){let b,c,d,f=Date.now(),j=a.flujo??!0,A=a.requireApproval??!1,D=a.debug??!1,E=a.continueDebug??!1,F=a.userTurn??!1,G="ephemeral"===a.mode,H=a.messages??(void 0!==a.prompt?[{role:"user",content:a.prompt}]:[]),I={model:a.modelName,messages:H,processNodeId:a.processNodeId};x.info("runFlow invoked",{flowId:a.flowId,model:a.modelName,messageCount:H.length,mode:G?"ephemeral":"conversation",flujo:j,requireApproval:A,flujodebug:D,conversationId:a.conversationId});let J=a.conversationId||crypto.randomUUID(),K=`conversations/${J}`,L="new",M=!1;if(x.info(`Effective Conversation ID for this run: ${J}`,{providedId:a.conversationId}),e.FlowExecutor.conversationStates.has(J))c=e.FlowExecutor.conversationStates.get(J),x.info(`Resuming conversation ${J} from memory`,{currentNodeId:c.currentNodeId}),L="memory";else if(!G)try{(c=await (0,o.loadItem)(K,void 0))?(x.info(`Loaded conversation state from storage: ${J}`),L="storage",await (0,g.recoverMessagesFromLog)(c),e.FlowExecutor.conversationStates.set(J,c)):x.info(`No state found in storage for conversation: ${J}. Will create new state.`)}catch(a){x.warn(`Error loading conversation state from storage for ${J}:`,a)}if(c?((b=c).conversationId!==J&&(x.warn(`Loaded state's internal conversationId (${b.conversationId}) differs from effectiveConvId (${J}). Using effectiveConvId.`),b.conversationId=J),"new"!==L&&("completed"===b.status||"error"===b.status||void 0===b.status)&&(x.info(`Resuming completed/errored/fresh conversation ${J}. Resetting status to 'running'.`),M="error"===b.status,b.status="running",b.lastResponse=void 0,b.isCancelled=!1,"storage"===L&&e.FlowExecutor.conversationStates.set(J,b)),I.processNodeId&&"new"!==L&&(x.info(`Edit detected: Resetting currentNodeId for conversation ${J} to provided processNodeId: ${I.processNodeId}`),b.currentNodeId=I.processNodeId,b.status="running",b.lastResponse=void 0,b.pendingToolCalls=void 0,b.handoffRequested=void 0,b.isCancelled=!1,b.trackingInfo={executionId:crypto.randomUUID(),startTime:Date.now(),nodeExecutionTracker:[]},p.G.ENABLE_EXECUTION_TRACKER&&b.executionTrace&&(b.executionTrace=[]),e.FlowExecutor.conversationStates.set(J,b),x.verbose(`State updated in memory with reset currentNodeId: ${b.currentNodeId}`))):(x.info(`Creating new conversation state object for ID: ${J}`),b={trackingInfo:{executionId:crypto.randomUUID(),startTime:Date.now(),nodeExecutionTracker:(p.G.ENABLE_EXECUTION_TRACKER,[])},messages:[],flowId:"",conversationId:J,currentNodeId:void 0,status:"running",title:a.title?.trim()||"New Conversation",createdAt:Date.now(),updatedAt:Date.now(),debugMode:D,executionTrace:D&&p.G.ENABLE_EXECUTION_TRACKER?[]:void 0,variables:{}}),a.variables&&"object"==typeof a.variables)for(let[c,d]of(b.variables=b.variables??{},Object.entries(a.variables)))null!=d&&(b.variables[c]="string"==typeof d?d:String(d));if(void 0!==a.mcpAppContexts&&(b.mcpAppContexts=a.mcpAppContexts),b.requireApproval=A,a.source&&(b.source=a.source),a.plannedExecutionId&&(b.plannedExecutionId=a.plannedExecutionId),G&&(b.ephemeral=!0),a.parentRunId&&(b.parentRunId=a.parentRunId,b.parentConversationId=a.parentRunId,!b.rootConversationId)){let c=e.FlowExecutor.conversationStates.get(a.parentRunId);b.rootConversationId=c?.rootConversationId??c?.conversationId??a.parentRunId}if(b.runDepth=a.depth??b.runDepth??0,b.chainDepth=a.chainDepth??b.chainDepth??0,b.onApprovalRequired=a.onApprovalRequired??b.onApprovalRequired??"auto",b.runDepth>r.A)return x.error(`runFlow aborted: subflow depth ${b.runDepth} exceeds max ${r.A}`),b.status="error",{status:"error",conversationId:J,outputText:"",messages:b.messages,error:{message:`Subflow recursion limit (${r.A}) exceeded`,statusCode:500},finalAction:k.O,sharedState:b};let N=[...b.messages??[]];if("new"===L){a.flowDefinition&&(b.flowSnapshot=a.flowDefinition,b.flowId=a.flowDefinition.id);let c=a.flowDefinition?a.flowDefinition.id:a.flowId;if(!c&&I.model){let a=I.model.substring(5),d=await y.getFlowByName(a);if(!d)return x.error(`Flow not found: ${a}`),{status:"error",conversationId:J,outputText:"",messages:b.messages,flowNotFound:{name:a},error:{message:`Flow not found: ${a}`,statusCode:400},finalAction:k.O,sharedState:b};c=d.id}if(!c)return x.error("No flow specified for run (neither flowId nor model provided)."),{status:"error",conversationId:J,outputText:"",messages:b.messages,error:{message:"No flow specified (provide flowId or model).",statusCode:400},finalAction:k.O,sharedState:b};b.flowId=c;let d=(I.messages||[]).filter(a=>!(a.depth>0)).map(a=>({...a,id:a.id||crypto.randomUUID(),timestamp:a.timestamp||Date.now(),processNodeId:a.processNodeId||void 0}));b.messages=d;let f=[...d].reverse().find(a=>"user"===a.role);f&&(b.lastUserMessageAt=f.timestamp??Date.now());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=(0,t.oO)(a.content),x.verbose(`Updated conversation title for ${J} during init to: ${b.title}`))}await z(K,b),x.debug(`Saved initial state for new conversation ${J}.`)}catch(a){x.error(`Failed to save initial state for new conversation ${J}:`,a)}e.FlowExecutor.conversationStates.set(J,b)}else{if(I.messages&&I.messages.length>0&&(b.messages=I.messages.filter(a=>!(a.depth>0)).map(a=>({...a,id:a.id||crypto.randomUUID(),timestamp:a.timestamp||Date.now(),processNodeId:a.processNodeId||void 0})),x.info(`Updated conversation ${b.conversationId} with ${b.messages.length} messages from request`),F)){let a=[...b.messages].reverse().find(a=>"user"===a.role);a&&(b.lastUserMessageAt=a.timestamp??Date.now())}(F||void 0===b.debugMode)&&(b.debugMode=D),F&&(b.debugPendingToolCalls=void 0),b.debugMode&&p.G.ENABLE_EXECUTION_TRACKER&&!b.executionTrace&&(b.executionTrace=[])}try{await (0,g.reconcileConversationLog)(b,N);let a=(0,g.repairDanglingToolCalls)(b);a.length&&(x.info(`Repaired ${a.length} dangling tool call(s) for ${J} at run start (issue #256).`),await (0,g.appendRawForState)(b,a.map(a=>({type:"message",message:a}))))}catch(a){x.warn(`Conversation-log reconcile failed for ${J}; continuing`,a)}if(F&&"new"!==L&&!I.processNodeId){let a=b.messages.length>0?b.messages[b.messages.length-1]:void 0;a?.role==="user"&&a.processNodeId&&a.processNodeId!==b.currentNodeId&&(x.info(`New user turn for ${J}: directing execution to node ${a.processNodeId} (was ${b.currentNodeId}).`),b.currentNodeId=a.processNodeId,e.FlowExecutor.conversationStates.set(J,b))}if(M&&F&&!G&&"new"!==L&&!I.processNodeId){let a=b.messages.length>0?b.messages[b.messages.length-1]:void 0;if(a?.role!=="user"){let a;for(let c=b.messages.length-1;c>=0;c--)if("user"===b.messages[c].role){a=b.messages[c].processNodeId;break}if(!a&&b.flowId)try{let c=await n.flowService.getFlow(b.flowId);a=c?.nodes?.find(a=>"start"===a.type)?.id}catch(a){x.warn(`Could not resolve start node for error-resume of ${J}`,a)}a&&a!==b.currentNodeId&&(x.info(`Error-resume for ${J}: replaying turn from entry node ${a} (was ${b.currentNodeId}).`),b.currentNodeId=a,e.FlowExecutor.conversationStates.set(J,b))}}F&&b.flowId&&(e.FlowExecutor.clearFlowCache(b.flowId),x.debug(`Cleared compiled-flow cache for ${b.flowId} at start of user turn ${J}.`));let O=!1,P=0,Q=new Map,R=new Map,S=a.emit??i.$.emitterFor(J),T=new Set(b.messages.map(a=>a.id).filter(a=>!!a)),U=a=>{if(!a.usage)return;let c=b.usage??{promptTokens:0,completionTokens:0,totalTokens:0,costUsd:0,byNode:{}};c.promptTokens+=a.usage.promptTokens,c.completionTokens+=a.usage.completionTokens,c.totalTokens+=a.usage.totalTokens;let d=a.usage.cacheReadTokens??0;d&&(c.cacheReadTokens=(c.cacheReadTokens??0)+d);let e=a.processNodeId||"unknown",f=c.byNode[e]??{promptTokens:0,completionTokens:0,totalTokens:0,costUsd:0};f.promptTokens+=a.usage.promptTokens,f.completionTokens+=a.usage.completionTokens,f.totalTokens+=a.usage.totalTokens,d&&(f.cacheReadTokens=(f.cacheReadTokens??0)+d),c.byNode[e]=f,b.usage=c,S({type:"usage",node:a.processNodeId?{nodeId:a.processNodeId}:void 0,promptTokens:a.usage.promptTokens,completionTokens:a.usage.completionTokens,totalTokens:a.usage.totalTokens,costUsd:0,...d?{cacheReadTokens:d}:{}})},V=()=>{for(let a of b.messages)a.id||(a.id=crypto.randomUUID()),T.has(a.id)||(T.add(a.id),"system"!==a.role&&(S({type:"message",message:a,node:a.processNodeId?{nodeId:a.processNodeId}:void 0}),U(a)))};S({type:"run:start",flowId:b.flowId});let W=[];if(b.flowId)try{let a=b.flowSnapshot??await n.flowService.getFlow(b.flowId);if(a)for(let c of a.nodes||[]){let a=c.data?.properties?.boundServer;c.data?.type==="mcp"&&a&&(W.push(a),(0,u.F7)(a,{conversationId:J,getUnattended:()=>!!b.unattended}))}}catch(a){x.debug("Could not enumerate MCP servers for elicitation context; skipping",{err:a})}if((F||"new"===L)&&b.flowId)try{let a=b.flowSnapshot?await (0,q.Q)(b.flowSnapshot):await (0,q.validateFlowForRun)(b.flowId);if(!a.isRunnable){let c=a.issues.filter(a=>"error"===a.severity),e=`This flow can't run yet — please fix the following before running:
|
|
2
|
-
`+c.map(a=>`• ${a.message}`).join("\n");x.warn(`Pre-run validation blocked flow ${b.flowId} for conv ${J}`,{errorCount:c.length,codes:c.map(a=>a.code)}),b.lastResponse={success:!1,error:e,errorDetails:{message:e,type:"invalid_request_error",code:"flow_invalid",status:400}},d=k.O,O=!0}}catch(a){x.warn(`Pre-run validation could not complete for ${b.flowId}; proceeding`,a)}let X=()=>!!b.isCancelled||!!(0,s.isCancelledByAncestry)(b.parentRunId,e.FlowExecutor.conversationStates)&&(b.isCancelled=!0,!0),Y=async()=>{if(0===(0,h.xk)(J))return!1;if((()=>{let a=new Set;for(let c of b.messages)if("tool"===c.role){let b=c.tool_call_id;b&&a.add(b)}return b.messages.some(b=>"assistant"===b.role&&Array.isArray(b.tool_calls)&&b.tool_calls.some(b=>b.id&&!a.has(b.id)))})())return x.debug(`Steering message(s) waiting for ${J} but a tool exchange is in flight; deferring.`),!1;let a=(0,h.PD)(J);if(0===a.length)return!1;try{for(let c of a)!c.processNodeId&&b.currentNodeId&&(c.processNodeId=b.currentNodeId);return b.messages.push(...a),b.lastUserMessageAt=a[a.length-1].timestamp??Date.now(),e.FlowExecutor.conversationStates.set(J,b),V(),b.ephemeral||await (0,g.appendRawForState)(b,a.map(a=>({type:"message",message:a}))),x.info(`Folded ${a.length} steering message(s) into the live run for ${J}.`),!0}catch(b){return(0,h.iS)(J,a),x.warn(`Failed to fold steering message(s) for ${J}; re-queued`,b),!1}},Z=!!b.debugMode&&!E,$=()=>{b.status="paused_debug",S({type:"run:paused",reason:"debug",node:b.currentNodeId?{nodeId:b.currentNodeId}:void 0})};try{if(!O)for(;;){if(P++,x.debug(`--- Starting Execution Step ${P} for Conv ${J} ---`),P>150){x.warn(`Max internal iterations (150) reached for conv ${J}. Breaking loop.`),d!==k.O&&(b.lastResponse={success:!1,error:"Maximum internal iterations (150) reached."},d=k.O);break}if(X()){x.info(`Cancellation flag detected for conv ${J}. Terminating execution.`),b.status="error",b.lastResponse={success:!1,error:"Execution cancelled by user."},d=k.O;break}if(await Y(),b.debugPendingToolCalls&&b.debugPendingToolCalls.length>0){let a=b.debugPendingToolCalls;b.debugPendingToolCalls=void 0,x.info(`[Debug Step] Executing ${a.length} pending tool call(s) for conv ${J}.`);let c=await l.s.processToolCalls({toolCalls:a,toolNameMap:b.toolNameMap,emit:S,conversationId:b.ephemeral?void 0:b.conversationId,node:b.currentNodeId?{nodeId:b.currentNodeId}:void 0,shouldAbort:X,mcpNodes:b.currentMCPNodes});if(!c.success){x.error(`Debug tool processing failed for conv ${J}`,{error:c.error}),b.lastResponse={success:!1,error:"Tool processing failed",errorDetails:c.error},d=k.O;break}let f=c.value.toolCallMessages.map(a=>({...a,id:crypto.randomUUID(),timestamp:Date.now(),processNodeId:b.currentNodeId}));b.messages.push(...f),e.FlowExecutor.conversationStates.set(J,b),V();try{b.updatedAt=Date.now(),await z(K,b)}catch(a){x.error(`Failed to save state after debug tool execution for conv ${J}:`,a)}if(Z){x.info(`[Debug Step] Paused after tool execution for conv ${J}.`),$();break}continue}if(!Z&&b.breakpoints&&b.breakpoints.length>0){let a=await e.FlowExecutor.peekNextNodeId(b),c=b.breakpoints.includes("*");if(a&&(c||b.breakpoints.includes(a))&&b.lastBreakNodeId!==a){c&&(b.breakpoints=b.breakpoints.filter(a=>"*"!==a)),x.info(`Breakpoint hit at node ${a}${c?" (attach)":""} for conv ${J}. Pausing.`),b.status="paused_debug",b.debugMode=!0,b.lastBreakNodeId=a,S({type:"breakpoint:hit",node:{nodeId:a}}),S({type:"run:paused",reason:"breakpoint",node:{nodeId:a}});try{b.updatedAt=Date.now(),await z(K,b)}catch(a){x.error(`Failed to save state on breakpoint for conv ${J}:`,a)}break}a&&b.lastBreakNodeId&&a!==b.lastBreakNodeId&&(b.lastBreakNodeId=void 0)}if(b.messages.length>0){let a=b.messages.slice(-3);x.verbose(`Message history before step ${P}`,a)}else x.verbose(`No messages in history before step ${P}`);let a=await e.FlowExecutor.executeStep(b,S);if(b=a.sharedState,d=a.action,V(),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=(0,t.oO)(a.content),x.verbose(`Updated conversation title for ${J} after step ${P} to: ${b.title}`))}if(x.info(`Step ${P} completed for conv ${J}. Action: ${d}`,{currentNodeId:b.currentNodeId}),x.verbose(`Shared state after step ${P}`,b),x.debug(`[Action Handling] Step ${P}: Received action "${d}" for conv ${J}`),d===k.O){x.info(`[Action Handling] Step ${P}: Handling ERROR_ACTION for conv ${J}`),x.error(`Error action received during step ${P} for conv ${J}`,{error:b.lastResponse});break}if(d===k.g4){if(x.info(`[Action Handling] Step ${P}: Handling FINAL_RESPONSE_ACTION for conv ${J}`),x.info(`Final response action received at step ${P} for conv ${J}`),b.forceSummaryTurn){b.forceSummaryTurn=!1,b.capped=!0,b.status="capped",x.info(`[#253] Graceful landing complete for conv ${J}; status=capped.`);break}let a=await B(b,S,Q);if("advanced"===a||"nudged"===a){V(),e.FlowExecutor.conversationStates.set(J,b);continue}if(await Y()){x.info(`Steering message arrived as ${J} was completing; continuing the run to answer it.`),e.FlowExecutor.conversationStates.set(J,b);continue}b.status="completed",x.info(`Setting conversation status to 'completed' for conv ${J}`);break}if(d===k.Jp){x.info(`[Action Handling] Step ${P}: Handling TOOL_CALL_ACTION for conv ${J}`),x.info(`Tool call action received at step ${P} for conv ${J}`);let a=b.messages.length>0?b.messages[b.messages.length-1]:null;if(a?.role==="assistant"&&a.tool_calls)if(j){let c=b.currentNodeId;if(c&&!b.forceSummaryTurn){let d=(R.get(c)??0)+1;R.set(c,d);let f=b.turnBudgets?.[c]??w.m;if(d>=f){x.info(`[#253] Turn budget (${f}) reached for node ${c} on conv ${J}; forcing a graceful summary turn instead of executing tools.`);let d=Date.now(),h=a.tool_calls.map(a=>({id:crypto.randomUUID(),role:"tool",tool_call_id:a.id,content:"Turn budget reached: this tool was not executed. No further tool calls are possible. Provide a final text-only summary instead.",timestamp:d,processNodeId:c})),i={id:crypto.randomUUID(),role:"user",content:"SYSTEM NOTICE — TURN BUDGET REACHED. You have used up the maximum number of agentic turns allotted for this task, so no further tool calls are possible. This overrides every previous instruction to keep working or to call a tool. Produce a single, final, text-only message that:\n1. Summarizes what was accomplished so far.\n2. Lists the tasks that remain unfinished.\n3. Recommends concrete next steps for whoever continues this work.\nDo NOT attempt to call any tool. Answer with plain text only.",timestamp:d+1,processNodeId:c};if(b.messages.push(...h,i),b.forceSummaryTurn=!0,b.cappedReason="maxTurns",e.FlowExecutor.conversationStates.set(J,b),V(),!b.ephemeral)try{await (0,g.appendRawForState)(b,[...h,i].map(a=>({type:"message",message:a})))}catch(a){x.warn(`Failed to append graceful-cap messages to log for ${J}`,a)}continue}}if(A&&"fail"===b.onApprovalRequired){let c=a.tool_calls[0],e=c&&"function"===c.type?c.function.name:"unknown";x.info(`[flujo=true, onApprovalRequired=fail] Failing fast for tool "${e}" (conv ${J})`),b.status="error",b.pendingToolCalls=a.tool_calls,b.lastResponse={success:!1,error:`Headless run requires approval for tool "${e}" but no approver is available (approvalPolicy: fail).`,errorDetails:{message:`Headless run requires approval for tool "${e}" but no approver is available (approvalPolicy: fail).`,type:"approval_required",name:e}},d=k.O;break}if(A){let c=[],d=[],f=b.permissionRules??[],g=b.savedPermissionRules??[];if(f.length>0||g.length>0)for(let e of a.tool_calls){let a=(0,m.ud)(e.function.name,b.toolNameMap);if(!a){c.push(e);continue}let h={};try{h=JSON.parse(e.function.arguments)}catch{}let i=(0,v.SX)(h),j=(0,v.R6)(f,g,a.server,a.tool,i);"deny"===j||"allow"===j?d.push(e):c.push(e)}else c.push(...a.tool_calls);if(d.length>0){let a=await l.s.processToolCalls({toolCalls:d,toolNameMap:b.toolNameMap,emit:S,conversationId:b.ephemeral?void 0:b.conversationId,node:b.currentNodeId?{nodeId:b.currentNodeId}:void 0,shouldAbort:X,mcpNodes:b.currentMCPNodes,permissionRules:f,savedPermissionRules:g,unattended:b.unattended});if(a.success){let c=a.value.toolCallMessages.map(a=>({...a,id:crypto.randomUUID(),timestamp:Date.now(),processNodeId:b.currentNodeId}));b.messages.push(...c),V()}}if(0===c.length){e.FlowExecutor.conversationStates.set(J,b);continue}x.info(`[flujo=true, requireApproval=true] Pausing execution for tool approval for conv ${J}`),b.status="awaiting_tool_approval",b.pendingToolCalls=c,b.lastResponse=void 0,e.FlowExecutor.conversationStates.set(J,b);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=(0,t.oO)(a.content),x.verbose(`Updated conversation title for ${J} before pausing to: ${b.title}`))}await z(K,b),x.verbose(`Saved state before pausing for approval for conv ${J}`)}catch(a){x.error(`Failed to save state before pausing for approval for conv ${J}:`,a)}S({type:"run:awaiting_approval",pendingToolCalls:a.tool_calls});break}if(Z){x.info(`[Debug Step] Paused before executing ${a.tool_calls.length} tool call(s) for conv ${J}.`),b.debugPendingToolCalls=a.tool_calls,e.FlowExecutor.conversationStates.set(J,b);try{b.updatedAt=Date.now(),await z(K,b)}catch(a){x.error(`Failed to save state before debug tool pause for conv ${J}:`,a)}$();break}{x.info(`[flujo=true, requireApproval=false] Processing ${a.tool_calls.length} tools internally for conv ${J}`);let c=await l.s.processToolCalls({toolCalls:a.tool_calls,toolNameMap:b.toolNameMap,emit:S,conversationId:b.ephemeral?void 0:b.conversationId,node:b.currentNodeId?{nodeId:b.currentNodeId}:void 0,shouldAbort:X,mcpNodes:b.currentMCPNodes,permissionRules:b.permissionRules,savedPermissionRules:b.savedPermissionRules,unattended:b.unattended});if(!c.success){x.error(`Internal tool processing failed for conv ${J}`,{error:c.error}),b.lastResponse={success:!1,error:"Tool processing failed",errorDetails:c.error},d=k.O;break}x.info(`Adding ${c.value.toolCallMessages.length} tool result messages for conv ${J}`);let f=c.value.toolCallMessages.map(a=>({...a,id:crypto.randomUUID(),timestamp:Date.now(),processNodeId:b.currentNodeId}));b.messages.push(...f),e.FlowExecutor.conversationStates.set(J,b),V(),x.info(`Continuing loop for conv ${J} after internal tool processing (no approval needed).`);continue}}else{x.info(`[flujo=false] Tool call action received for conv ${J}. Checking tool types.`);let c=a.tool_calls||[],f=[],g=[];if(c.forEach(a=>{"function"===a.type&&(0,m.$9)(a.function.name,b.toolNameMap)?(x.verbose("tool is internal:",a.function.name),f.push(a)):(x.verbose("tool is external:",a.function.name),g.push(a))}),f.length>0){x.info(`[flujo=false] Processing ${f.length} internal tools for conv ${J}. External tools (${g.length}) will be ignored this step.`);let a=await l.s.processToolCalls({toolCalls:f,toolNameMap:b.toolNameMap,emit:S,conversationId:b.ephemeral?void 0:b.conversationId,node:b.currentNodeId?{nodeId:b.currentNodeId}:void 0,shouldAbort:X,mcpNodes:b.currentMCPNodes});if(!a.success){x.error(`[flujo=false] Internal tool processing failed for conv ${J}`,{error:a.error}),b.lastResponse={success:!1,error:"Internal tool processing failed",errorDetails:a.error},d=k.O;break}x.info(`Adding ${a.value.toolCallMessages.length} internal tool result messages for conv ${J}`);let c=a.value.toolCallMessages.map(a=>({...a,id:crypto.randomUUID(),timestamp:Date.now(),processNodeId:b.currentNodeId}));b.messages.push(...c),e.FlowExecutor.conversationStates.set(J,b),x.info(`Continuing loop for conv ${J} after internal tool processing (flujo=false).`);continue}if(g.length>0){x.info(`[flujo=false] Found ${g.length} external tools for conv ${J}. Wrapping in XML and returning.`);let a=[];for(let b of g)if("function"===b.type)try{let c=JSON.parse(b.function.arguments||"{}"),d="";for(let a in c){let b=String(c[a]).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'");d+=`
|
|
1
|
+
"use strict";exports.id=6226,exports.ids=[4681,6226],exports.modules={1686:(a,b,c)=>{c.d(b,{PD:()=>h,PJ:()=>f,fS:()=>j,iS:()=>i,xk:()=>g});let d=globalThis,e=d.__flujoSteeringInbox??(d.__flujoSteeringInbox=new Map);function f(a,b){let c=e.get(a);c?c.push(b):e.set(a,[b])}function g(a){return e.get(a)?.length??0}function h(a){let b=e.get(a);return b&&0!==b.length?(e.delete(a),b):[]}function i(a,b){if(0===b.length)return;let c=e.get(a)??[];e.set(a,[...b,...c])}function j(a){e.delete(a)}},16226:(a,b,c)=>{c.d(b,{runFlow:()=>E});var d=c(50846),e=c(23628),f=c(38291),g=c(60184),h=c(1686),i=c(14214),j=c(56793),k=c(99978),l=c(37677),m=c(75312),n=c(87821),o=c(92372),p=c(13516),q=c(44681),r=c(67490),s=c(75028),t=c(23529),u=c(30767),v=c(48706),w=c(41561),x=c(44974),y=c(52446);let z=(0,d.h)("backend/execution/flow/runFlow");n.flowService.getFlowByName||(n.flowService.getFlowByName=async a=>(await n.flowService.loadFlows()).find(b=>b.name===a)||null,z.info("Added getFlowByName method directly to flowService instance."));let A=n.flowService,B=f.persistConversationState;async function C(a,b,c){let d;if(!a.unattended)return"complete";let e=a.currentNodeId;if(!e)return"complete";try{d=a.flowSnapshot??(a.flowId?await n.flowService.getFlow(a.flowId)??void 0:void 0)}catch(a){return z.debug("[Unattended] flow load failed; completing normally",{err:a}),"complete"}if(!d)return"complete";let f=d.nodes?.find(a=>a.id===e);if(!f||"process"!==f.type)return"complete";let g=new Set((d.nodes??[]).filter(a=>"mcp"===a.type).map(a=>a.id)),h=Array.from(new Set((d.edges??[]).filter(a=>a.source===e&&"mcpEdge"!==a.type&&a.data?.edgeType!=="mcp"&&a.data?.bidirectional!==!0&&!g.has(a.target)).map(a=>a.target))).filter(a=>(d.nodes??[]).some(b=>b.id===a));if(1===h.length){let d=h[0];z.info(`[Unattended] Process node ${e} ended on plain text; auto-advancing to sole forward successor ${d} for conv ${a.conversationId}.`);let f=a.currentNodeId;return a.currentNodeId=d,a.handoffRequested=void 0,c.delete(e),b({type:"handoff",from:f?{nodeId:f}:void 0,toNodeId:d,edgeId:`unattended-auto:${e}->${d}`}),"advanced"}if(h.length>1){let b=c.get(e)??0;if(b<1)return c.set(e,b+1),z.info(`[Unattended] Process node ${e} ended on plain text with ${h.length} forward successors; nudging to hand off (attempt ${b+1}/1).`),a.messages.push({id:crypto.randomUUID(),role:"user",content:"You ended your turn without calling a tool or handing off, but this is an unattended run that cannot stop at this step. To continue you MUST call one of your handoff tools to route to the next step. If your work at this step is complete, hand off to the finishing/next step now.",timestamp:Date.now(),processNodeId:e}),"nudged";z.warn(`[Unattended] Process node ${e} still did not hand off after 1 nudge(s); completing the run to avoid a loop.`)}return"complete"}async function D(a,b,c){try{let d,e=a.flowId;if(!e)return;try{d=(await n.flowService.getFlow(e))?.name??void 0}catch{}let f="chat"===a.source?"chat":"api",g=c&&c.length>4096?`${c.slice(0,4096)}…`:c;(0,j.eh)().publish({flowId:e,flowName:d,executionId:a.plannedExecutionId,runId:a.conversationId||"",conversationId:a.conversationId||"",status:b,outputText:g,firedBy:f,chainDepth:a.chainDepth??0,timestamp:new Date().toISOString()})}catch(a){z.warn("Failed to publish runFlow flow-run event:",a)}}async function E(a){let b,c,d;if(!(0,k.M6)(a.source))throw TypeError(`runFlow requires an explicit invocation source (${String(a.source)} is invalid)`);let f=Date.now(),j=a.flujo??!0,E=a.requireApproval??!1,F=a.debug??!1,G=a.continueDebug??!1,H=a.userTurn??!1,I="ephemeral"===a.mode,J=a.messages??(void 0!==a.prompt?[{role:"user",content:a.prompt}]:[]),K={model:a.modelName,messages:J,processNodeId:a.processNodeId};z.info("runFlow invoked",{flowId:a.flowId,model:a.modelName,messageCount:J.length,mode:I?"ephemeral":"conversation",flujo:j,requireApproval:E,flujodebug:F,conversationId:a.conversationId});let L=a.conversationId||crypto.randomUUID(),M=`conversations/${L}`,N="new",O=!1;if(z.info(`Effective Conversation ID for this run: ${L}`,{providedId:a.conversationId}),e.FlowExecutor.conversationStates.has(L))c=e.FlowExecutor.conversationStates.get(L),z.info(`Resuming conversation ${L} from memory`,{currentNodeId:c.currentNodeId}),N="memory";else if(!I)try{(c=await (0,o.loadItem)(M,void 0))?(z.info(`Loaded conversation state from storage: ${L}`),N="storage",await (0,g.jM)(c),await (0,y.aC)(M,c),e.FlowExecutor.conversationStates.set(L,c)):z.info(`No state found in storage for conversation: ${L}. Will create new state.`)}catch(a){z.warn(`Error loading conversation state from storage for ${L}:`,a)}let P=!!(c?.logicalRunId&&("awaiting_tool_approval"===c.status||"paused_debug"===c.status));if(c?((b=c).conversationId!==L&&(z.warn(`Loaded state's internal conversationId (${b.conversationId}) differs from effectiveConvId (${L}). Using effectiveConvId.`),b.conversationId=L),"new"!==N&&("completed"===b.status||"error"===b.status||void 0===b.status)&&(z.info(`Resuming completed/errored/fresh conversation ${L}. Resetting status to 'running'.`),O="error"===b.status,b.status="running",b.lastResponse=void 0,b.isCancelled=!1,"storage"===N&&e.FlowExecutor.conversationStates.set(L,b)),K.processNodeId&&"new"!==N&&(z.info(`Edit detected: Resetting currentNodeId for conversation ${L} to provided processNodeId: ${K.processNodeId}`),b.currentNodeId=K.processNodeId,b.status="running",b.lastResponse=void 0,b.pendingToolCalls=void 0,b.handoffRequested=void 0,b.isCancelled=!1,b.trackingInfo={executionId:crypto.randomUUID(),startTime:Date.now(),nodeExecutionTracker:[]},p.G.ENABLE_EXECUTION_TRACKER&&b.executionTrace&&(b.executionTrace=[]),e.FlowExecutor.conversationStates.set(L,b),z.verbose(`State updated in memory with reset currentNodeId: ${b.currentNodeId}`))):(z.info(`Creating new conversation state object for ID: ${L}`),b={trackingInfo:{executionId:crypto.randomUUID(),startTime:Date.now(),nodeExecutionTracker:(p.G.ENABLE_EXECUTION_TRACKER,[])},messages:[],flowId:"",conversationId:L,currentNodeId:void 0,status:"running",title:a.title?.trim()||"New Conversation",createdAt:Date.now(),updatedAt:Date.now(),debugMode:F,executionTrace:F&&p.G.ENABLE_EXECUTION_TRACKER?[]:void 0,variables:{}}),a.variables&&"object"==typeof a.variables)for(let[c,d]of(b.variables=b.variables??{},Object.entries(a.variables)))null!=d&&(b.variables[c]="string"==typeof d?d:String(d));if(void 0!==a.mcpAppContexts&&(b.mcpAppContexts=a.mcpAppContexts),b.requireApproval=E,b.source=a.source,b.unattended=(0,k.xg)(a.source),a.plannedExecutionId&&(b.plannedExecutionId=a.plannedExecutionId),a.plannedExecutionName&&(b.statisticsPlannedExecutionName=a.plannedExecutionName),I&&(b.ephemeral=!0),a.parentRunId&&(b.parentRunId=a.parentRunId,b.parentConversationId=a.parentRunId,!b.rootConversationId)){let c=e.FlowExecutor.conversationStates.get(a.parentRunId);b.rootConversationId=c?.rootConversationId??c?.conversationId??a.parentRunId}b.runDepth=a.depth??b.runDepth??0,b.chainDepth=a.chainDepth??b.chainDepth??0,b.onApprovalRequired=a.onApprovalRequired??b.onApprovalRequired??"auto",P||(b.logicalRunId=a.runId??crypto.randomUUID(),b.statisticsRunStartedAt=Date.now(),b.statisticsRunStarted=!1,b.statisticsRunFinished=!1,b.statisticsFlowName=a.flowDefinition?.name??(a.modelName?.startsWith("flow-")?a.modelName.slice(5):void 0),b.statisticsPlannedExecutionName=a.plannedExecutionName);let Q=b.logicalRunId??a.runId??crypto.randomUUID();b.logicalRunId=Q,b.statisticsRunStartedAt??=Date.now(),(0,y.GG)(b,Q),a.lane&&(b.recovery.lane=a.lane);let R=()=>({id:b.flowId||a.flowId||a.flowDefinition?.id||a.modelName||"unknown",name:b.statisticsFlowName??b.flowSnapshot?.name??a.flowDefinition?.name}),S=b.plannedExecutionId?{id:b.plannedExecutionId,name:b.statisticsPlannedExecutionName}:void 0,T=()=>{b.statisticsRunStarted||((0,x.z9)((0,x.k)({type:"run.started",runId:Q,source:a.source,flow:R(),plannedExecution:S,conversationId:L})),b.statisticsRunStarted=!0)},U=c=>{T();let d=Math.max(0,Date.now()-(b.statisticsRunStartedAt??f));if("awaiting_tool_approval"===c.status||"paused_debug"===c.status)(0,x.z9)((0,x.k)({type:"run.paused",runId:Q,source:a.source,flow:R(),plannedExecution:S,pauseKind:"paused_debug"===c.status?"debug":"approval",durationMs:d}));else if(!b.statisticsRunFinished){let e=b.isCancelled?"cancelled":"error"===c.status?"error":"capped"===c.status||b.capped?"capped":"completed";(0,x.z9)((0,x.k)({type:"run.finished",runId:Q,source:a.source,flow:R(),plannedExecution:S,outcome:e,durationMs:d,errorClass:"error"===e?(0,x.Ys)(c.error):void 0,usage:c.usage?{inputTokens:c.usage.promptTokens,outputTokens:c.usage.completionTokens,totalTokens:c.usage.totalTokens,cachedInputTokens:c.usage.cacheReadTokens}:void 0})),b.statisticsRunFinished=!0}return{...c,runId:Q}};if(b.runDepth>r.A)return z.error(`runFlow aborted: subflow depth ${b.runDepth} exceeds max ${r.A}`),b.status="error",U({status:"error",conversationId:L,outputText:"",messages:b.messages,error:{message:`Subflow recursion limit (${r.A}) exceeded`,statusCode:500},finalAction:k.O,sharedState:b});let V=[...b.messages??[]];if("new"===N){a.flowDefinition&&(b.flowSnapshot=a.flowDefinition,b.flowId=a.flowDefinition.id);let c=a.flowDefinition?a.flowDefinition.id:a.flowId;if(!c&&K.model){let a=K.model.substring(5),d=await A.getFlowByName(a);if(!d)return z.error(`Flow not found: ${a}`),U({status:"error",conversationId:L,outputText:"",messages:b.messages,flowNotFound:{name:a},error:{message:`Flow not found: ${a}`,statusCode:400},finalAction:k.O,sharedState:b});c=d.id}if(!c)return z.error("No flow specified for run (neither flowId nor model provided)."),U({status:"error",conversationId:L,outputText:"",messages:b.messages,error:{message:"No flow specified (provide flowId or model).",statusCode:400},finalAction:k.O,sharedState:b});b.flowId=c;let d=(K.messages||[]).filter(a=>!(a.depth>0)).map(a=>({...a,id:a.id||crypto.randomUUID(),timestamp:a.timestamp||Date.now(),processNodeId:a.processNodeId||void 0}));b.messages=d;let f=[...d].reverse().find(a=>"user"===a.role);f&&(b.lastUserMessageAt=f.timestamp??Date.now());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=(0,t.oO)(a.content),z.verbose(`Updated conversation title for ${L} during init to: ${b.title}`))}await B(M,b),z.debug(`Saved initial state for new conversation ${L}.`)}catch(a){z.error(`Failed to save initial state for new conversation ${L}:`,a)}e.FlowExecutor.conversationStates.set(L,b)}else{if(K.messages&&K.messages.length>0&&(b.messages=K.messages.filter(a=>!(a.depth>0)).map(a=>({...a,id:a.id||crypto.randomUUID(),timestamp:a.timestamp||Date.now(),processNodeId:a.processNodeId||void 0})),z.info(`Updated conversation ${b.conversationId} with ${b.messages.length} messages from request`),H)){let a=[...b.messages].reverse().find(a=>"user"===a.role);a&&(b.lastUserMessageAt=a.timestamp??Date.now())}(H||void 0===b.debugMode)&&(b.debugMode=F),H&&(b.debugPendingToolCalls=void 0),b.debugMode&&p.G.ENABLE_EXECUTION_TRACKER&&!b.executionTrace&&(b.executionTrace=[])}if(!b.statisticsFlowName&&b.flowId)try{b.statisticsFlowName=(await n.flowService.getFlow(b.flowId))?.name}catch{}T();try{await (0,g.reconcileConversationLog)(b,V);let a=(0,g.bS)(b);a.length&&(z.info(`Repaired ${a.length} dangling tool call(s) for ${L} at run start (issue #256).`),(0,y.MM)(b,"running"),await (0,g.D$)(b,[...a.map(a=>({type:"message",message:a})),{type:"recovery:checkpoint",checkpoint:b.recovery.currentCheckpoint},{type:"recovery:transition",recovery:{...b.recovery}}]))}catch(a){z.warn(`Conversation-log reconcile failed for ${L}; continuing`,a)}if(H&&"new"!==N&&!K.processNodeId){let a=b.messages.length>0?b.messages[b.messages.length-1]:void 0;a?.role==="user"&&a.processNodeId&&a.processNodeId!==b.currentNodeId&&(z.info(`New user turn for ${L}: directing execution to node ${a.processNodeId} (was ${b.currentNodeId}).`),b.currentNodeId=a.processNodeId,e.FlowExecutor.conversationStates.set(L,b))}if(O&&H&&!I&&"new"!==N&&!K.processNodeId){let a=b.messages.length>0?b.messages[b.messages.length-1]:void 0;if(a?.role!=="user"){let a;for(let c=b.messages.length-1;c>=0;c--)if("user"===b.messages[c].role){a=b.messages[c].processNodeId;break}if(!a&&b.flowId)try{let c=await n.flowService.getFlow(b.flowId);a=c?.nodes?.find(a=>"start"===a.type)?.id}catch(a){z.warn(`Could not resolve start node for error-resume of ${L}`,a)}a&&a!==b.currentNodeId&&(z.info(`Error-resume for ${L}: replaying turn from entry node ${a} (was ${b.currentNodeId}).`),b.currentNodeId=a,e.FlowExecutor.conversationStates.set(L,b))}}H&&b.flowId&&(e.FlowExecutor.clearFlowCache(b.flowId),z.debug(`Cleared compiled-flow cache for ${b.flowId} at start of user turn ${L}.`));let W=!1,X=0,Y=new Map,Z=new Map,$=a.emit??i.$.emitterFor(L),_=a.emit?void 0:$,aa=new Set(b.messages.map(a=>a.id).filter(a=>!!a)),ab=a=>{if(!a.usage)return;let c=b.usage??{promptTokens:0,completionTokens:0,totalTokens:0,costUsd:0,byNode:{}};c.promptTokens+=a.usage.promptTokens,c.completionTokens+=a.usage.completionTokens,c.totalTokens+=a.usage.totalTokens;let d=a.usage.cacheReadTokens??0;d&&(c.cacheReadTokens=(c.cacheReadTokens??0)+d);let e=a.processNodeId||"unknown",f=c.byNode[e]??{promptTokens:0,completionTokens:0,totalTokens:0,costUsd:0};f.promptTokens+=a.usage.promptTokens,f.completionTokens+=a.usage.completionTokens,f.totalTokens+=a.usage.totalTokens,d&&(f.cacheReadTokens=(f.cacheReadTokens??0)+d),c.byNode[e]=f,b.usage=c,$({type:"usage",node:a.processNodeId?{nodeId:a.processNodeId}:void 0,promptTokens:a.usage.promptTokens,completionTokens:a.usage.completionTokens,totalTokens:a.usage.totalTokens,costUsd:0,...d?{cacheReadTokens:d}:{}})},ac=()=>{for(let a of b.messages)a.id||(a.id=crypto.randomUUID()),aa.has(a.id)||(aa.add(a.id),"system"!==a.role&&($({type:"message",message:a,node:a.processNodeId?{nodeId:a.processNodeId}:void 0}),ab(a)))};$({type:"run:start",flowId:b.flowId}),await (0,y.wL)(M,b,"running",{},_);let ad=[];if(b.flowId)try{let a=b.flowSnapshot??await n.flowService.getFlow(b.flowId);if(a)for(let c of a.nodes||[]){let a=c.data?.properties?.boundServer;c.data?.type==="mcp"&&a&&(ad.push(a),(0,u.F7)(a,{conversationId:L,getUnattended:()=>!!b.unattended}))}}catch(a){z.debug("Could not enumerate MCP servers for elicitation context; skipping",{err:a})}if((H||"new"===N)&&b.flowId)try{let a=b.flowSnapshot?await (0,q.Q)(b.flowSnapshot):await (0,q.validateFlowForRun)(b.flowId);if(!a.isRunnable){let c=a.issues.filter(a=>"error"===a.severity),e=`This flow can't run yet — please fix the following before running:
|
|
2
|
+
`+c.map(a=>`• ${a.message}`).join("\n");z.warn(`Pre-run validation blocked flow ${b.flowId} for conv ${L}`,{errorCount:c.length,codes:c.map(a=>a.code)}),b.lastResponse={success:!1,error:e,errorDetails:{message:e,type:"invalid_request_error",code:"flow_invalid",status:400}},d=k.O,W=!0}}catch(a){z.warn(`Pre-run validation could not complete for ${b.flowId}; proceeding`,a)}let ae=!1,af=()=>!!b.isCancelled||!!(0,s.isCancelledByAncestry)(b.parentRunId,e.FlowExecutor.conversationStates)&&(ae=!0,b.isCancelled=!0,!0),ag=async a=>{await (0,y.oV)(M,b,a.toolCalls,"before",_);try{let c=await l.s.processToolCalls(a);return c.success||await (0,y.oV)(M,b,a.toolCalls,"unknown",_),c}catch(c){throw await (0,y.oV)(M,b,a.toolCalls,"unknown",_),c}},ah=async()=>{if(0===(0,h.xk)(L))return!1;if((()=>{let a=new Set;for(let c of b.messages)if("tool"===c.role){let b=c.tool_call_id;b&&a.add(b)}return b.messages.some(b=>"assistant"===b.role&&Array.isArray(b.tool_calls)&&b.tool_calls.some(b=>b.id&&!a.has(b.id)))})())return z.debug(`Steering message(s) waiting for ${L} but a tool exchange is in flight; deferring.`),!1;let a=(0,h.PD)(L);if(0===a.length)return!1;try{for(let c of a)!c.processNodeId&&b.currentNodeId&&(c.processNodeId=b.currentNodeId);return b.messages.push(...a),b.lastUserMessageAt=a[a.length-1].timestamp??Date.now(),e.FlowExecutor.conversationStates.set(L,b),ac(),b.ephemeral||await (0,g.D$)(b,a.map(a=>({type:"message",message:a}))),z.info(`Folded ${a.length} steering message(s) into the live run for ${L}.`),!0}catch(b){return(0,h.iS)(L,a),z.warn(`Failed to fold steering message(s) for ${L}; re-queued`,b),!1}},ai=!!b.debugMode&&!G,aj=()=>{b.status="paused_debug",$({type:"run:paused",reason:"debug",node:b.currentNodeId?{nodeId:b.currentNodeId}:void 0})};try{if(!W)for(;;){if(X++,z.debug(`--- Starting Execution Step ${X} for Conv ${L} ---`),X>150){z.warn(`Max internal iterations (150) reached for conv ${L}. Breaking loop.`),d!==k.O&&(b.lastResponse={success:!1,error:"Maximum internal iterations (150) reached."},d=k.O);break}if(af()){z.info(`Cancellation flag detected for conv ${L}. Terminating execution.`),b.status="error",b.lastResponse={success:!1,error:"Execution cancelled by user."},d=k.O;break}if(await ah(),b.debugPendingToolCalls&&b.debugPendingToolCalls.length>0){let a=b.debugPendingToolCalls;b.debugPendingToolCalls=void 0,z.info(`[Debug Step] Executing ${a.length} pending tool call(s) for conv ${L}.`);let c=await ag({toolCalls:a,toolNameMap:b.toolNameMap,emit:$,conversationId:b.ephemeral?void 0:b.conversationId,runId:Q,node:b.currentNodeId?{nodeId:b.currentNodeId}:void 0,shouldAbort:af,mcpNodes:b.currentMCPNodes});if(!c.success){z.error(`Debug tool processing failed for conv ${L}`,{error:c.error}),b.lastResponse={success:!1,error:"Tool processing failed",errorDetails:c.error},d=k.O;break}let f=c.value.toolCallMessages.map(a=>({...a,id:crypto.randomUUID(),timestamp:Date.now(),processNodeId:b.currentNodeId}));b.messages.push(...f),e.FlowExecutor.conversationStates.set(L,b),ac(),await (0,y.oV)(M,b,a,"completed",_);try{b.updatedAt=Date.now(),await B(M,b)}catch(a){z.error(`Failed to save state after debug tool execution for conv ${L}:`,a)}if(ai){z.info(`[Debug Step] Paused after tool execution for conv ${L}.`),aj();break}continue}if(!ai&&b.breakpoints&&b.breakpoints.length>0){let a=await e.FlowExecutor.peekNextNodeId(b),c=b.breakpoints.includes("*");if(a&&(c||b.breakpoints.includes(a))&&b.lastBreakNodeId!==a){c&&(b.breakpoints=b.breakpoints.filter(a=>"*"!==a)),z.info(`Breakpoint hit at node ${a}${c?" (attach)":""} for conv ${L}. Pausing.`),b.status="paused_debug",b.debugMode=!0,b.lastBreakNodeId=a,$({type:"breakpoint:hit",node:{nodeId:a}}),$({type:"run:paused",reason:"breakpoint",node:{nodeId:a}});try{b.updatedAt=Date.now(),await B(M,b)}catch(a){z.error(`Failed to save state on breakpoint for conv ${L}:`,a)}break}a&&b.lastBreakNodeId&&a!==b.lastBreakNodeId&&(b.lastBreakNodeId=void 0)}if(b.messages.length>0){let a=b.messages.slice(-3);z.verbose(`Message history before step ${X}`,a)}else z.verbose(`No messages in history before step ${X}`);let a=await e.FlowExecutor.peekNextNodeId(b)??b.currentNodeId;await (0,y.hk)(M,b,{phase:"node:before",nodeId:a,safe:!0},_);let c=await e.FlowExecutor.executeStep(b,$);if(b=c.sharedState,d=c.action,ac(),d!==k.O&&await (0,y.hk)(M,b,{phase:"node:after",nodeId:a,safe:!0},_),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=(0,t.oO)(a.content),z.verbose(`Updated conversation title for ${L} after step ${X} to: ${b.title}`))}if(z.info(`Step ${X} completed for conv ${L}. Action: ${d}`,{currentNodeId:b.currentNodeId}),z.verbose(`Shared state after step ${X}`,b),z.debug(`[Action Handling] Step ${X}: Received action "${d}" for conv ${L}`),d===k.O){z.info(`[Action Handling] Step ${X}: Handling ERROR_ACTION for conv ${L}`),z.error(`Error action received during step ${X} for conv ${L}`,{error:b.lastResponse});break}if(d===k.g4){if(z.info(`[Action Handling] Step ${X}: Handling FINAL_RESPONSE_ACTION for conv ${L}`),z.info(`Final response action received at step ${X} for conv ${L}`),b.forceSummaryTurn){b.forceSummaryTurn=!1,b.capped=!0,b.status="capped",z.info(`[#253] Graceful landing complete for conv ${L}; status=capped.`);break}let a=await C(b,$,Y);if("advanced"===a||"nudged"===a){ac(),e.FlowExecutor.conversationStates.set(L,b);continue}if(await ah()){z.info(`Steering message arrived as ${L} was completing; continuing the run to answer it.`),e.FlowExecutor.conversationStates.set(L,b);continue}b.status="completed",z.info(`Setting conversation status to 'completed' for conv ${L}`);break}if(d===k.Jp){z.info(`[Action Handling] Step ${X}: Handling TOOL_CALL_ACTION for conv ${L}`),z.info(`Tool call action received at step ${X} for conv ${L}`);let a=b.messages.length>0?b.messages[b.messages.length-1]:null;if(a?.role==="assistant"&&a.tool_calls)if(j){let c=b.currentNodeId;if(c&&!b.forceSummaryTurn){let d=(Z.get(c)??0)+1;Z.set(c,d);let f=b.turnBudgets?.[c]??w.m;if(d>=f){z.info(`[#253] Turn budget (${f}) reached for node ${c} on conv ${L}; forcing a graceful summary turn instead of executing tools.`);let d=Date.now(),h=a.tool_calls.map(a=>({id:crypto.randomUUID(),role:"tool",tool_call_id:a.id,content:"Turn budget reached: this tool was not executed. No further tool calls are possible. Provide a final text-only summary instead.",timestamp:d,processNodeId:c})),i={id:crypto.randomUUID(),role:"user",content:"SYSTEM NOTICE — TURN BUDGET REACHED. You have used up the maximum number of agentic turns allotted for this task, so no further tool calls are possible. This overrides every previous instruction to keep working or to call a tool. Produce a single, final, text-only message that:\n1. Summarizes what was accomplished so far.\n2. Lists the tasks that remain unfinished.\n3. Recommends concrete next steps for whoever continues this work.\nDo NOT attempt to call any tool. Answer with plain text only.",timestamp:d+1,processNodeId:c};if(b.messages.push(...h,i),b.forceSummaryTurn=!0,b.cappedReason="maxTurns",e.FlowExecutor.conversationStates.set(L,b),ac(),!b.ephemeral)try{await (0,g.D$)(b,[...h,i].map(a=>({type:"message",message:a})))}catch(a){z.warn(`Failed to append graceful-cap messages to log for ${L}`,a)}continue}}if(E&&"fail"===b.onApprovalRequired){let c=a.tool_calls[0],e=c&&"function"===c.type?c.function.name:"unknown";z.info(`[flujo=true, onApprovalRequired=fail] Failing fast for tool "${e}" (conv ${L})`),b.status="error",b.pendingToolCalls=a.tool_calls,b.lastResponse={success:!1,error:`Headless run requires approval for tool "${e}" but no approver is available (approvalPolicy: fail).`,errorDetails:{message:`Headless run requires approval for tool "${e}" but no approver is available (approvalPolicy: fail).`,type:"approval_required",name:e}},d=k.O;break}if(E){let c=[],d=[],f=b.permissionRules??[],g=b.savedPermissionRules??[];if(f.length>0||g.length>0)for(let e of a.tool_calls){let a=(0,m.ud)(e.function.name,b.toolNameMap);if(!a){c.push(e);continue}let h={};try{h=JSON.parse(e.function.arguments)}catch{}let i=(0,v.SX)(h),j=(0,v.R6)(f,g,a.server,a.tool,i);"deny"===j||"allow"===j?d.push(e):c.push(e)}else c.push(...a.tool_calls);if(d.length>0){let a=await ag({toolCalls:d,toolNameMap:b.toolNameMap,emit:$,conversationId:b.ephemeral?void 0:b.conversationId,runId:Q,node:b.currentNodeId?{nodeId:b.currentNodeId}:void 0,shouldAbort:af,mcpNodes:b.currentMCPNodes,permissionRules:f,savedPermissionRules:g,unattended:b.unattended});if(a.success){let c=a.value.toolCallMessages.map(a=>({...a,id:crypto.randomUUID(),timestamp:Date.now(),processNodeId:b.currentNodeId}));b.messages.push(...c),ac(),await (0,y.oV)(M,b,d,"completed",_)}}if(0===c.length){e.FlowExecutor.conversationStates.set(L,b);continue}z.info(`[flujo=true, requireApproval=true] Pausing execution for tool approval for conv ${L}`),b.status="awaiting_tool_approval",b.pendingToolCalls=c,b.lastResponse=void 0,e.FlowExecutor.conversationStates.set(L,b);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=(0,t.oO)(a.content),z.verbose(`Updated conversation title for ${L} before pausing to: ${b.title}`))}await B(M,b),z.verbose(`Saved state before pausing for approval for conv ${L}`)}catch(a){z.error(`Failed to save state before pausing for approval for conv ${L}:`,a)}$({type:"run:awaiting_approval",pendingToolCalls:a.tool_calls});break}if(ai){z.info(`[Debug Step] Paused before executing ${a.tool_calls.length} tool call(s) for conv ${L}.`),b.debugPendingToolCalls=a.tool_calls,e.FlowExecutor.conversationStates.set(L,b);try{b.updatedAt=Date.now(),await B(M,b)}catch(a){z.error(`Failed to save state before debug tool pause for conv ${L}:`,a)}aj();break}{z.info(`[flujo=true, requireApproval=false] Processing ${a.tool_calls.length} tools internally for conv ${L}`);let c=await ag({toolCalls:a.tool_calls,toolNameMap:b.toolNameMap,emit:$,conversationId:b.ephemeral?void 0:b.conversationId,runId:Q,node:b.currentNodeId?{nodeId:b.currentNodeId}:void 0,shouldAbort:af,mcpNodes:b.currentMCPNodes,permissionRules:b.permissionRules,savedPermissionRules:b.savedPermissionRules,unattended:b.unattended});if(!c.success){z.error(`Internal tool processing failed for conv ${L}`,{error:c.error}),b.lastResponse={success:!1,error:"Tool processing failed",errorDetails:c.error},d=k.O;break}z.info(`Adding ${c.value.toolCallMessages.length} tool result messages for conv ${L}`);let f=c.value.toolCallMessages.map(a=>({...a,id:crypto.randomUUID(),timestamp:Date.now(),processNodeId:b.currentNodeId}));b.messages.push(...f),e.FlowExecutor.conversationStates.set(L,b),ac(),await (0,y.oV)(M,b,a.tool_calls,"completed",_),z.info(`Continuing loop for conv ${L} after internal tool processing (no approval needed).`);continue}}else{z.info(`[flujo=false] Tool call action received for conv ${L}. Checking tool types.`);let c=a.tool_calls||[],f=[],g=[];if(c.forEach(a=>{"function"===a.type&&(0,m.$9)(a.function.name,b.toolNameMap)?(z.verbose("tool is internal:",a.function.name),f.push(a)):(z.verbose("tool is external:",a.function.name),g.push(a))}),f.length>0){z.info(`[flujo=false] Processing ${f.length} internal tools for conv ${L}. External tools (${g.length}) will be ignored this step.`);let a=await ag({toolCalls:f,toolNameMap:b.toolNameMap,emit:$,conversationId:b.ephemeral?void 0:b.conversationId,runId:Q,node:b.currentNodeId?{nodeId:b.currentNodeId}:void 0,shouldAbort:af,mcpNodes:b.currentMCPNodes});if(!a.success){z.error(`[flujo=false] Internal tool processing failed for conv ${L}`,{error:a.error}),b.lastResponse={success:!1,error:"Internal tool processing failed",errorDetails:a.error},d=k.O;break}z.info(`Adding ${a.value.toolCallMessages.length} internal tool result messages for conv ${L}`);let c=a.value.toolCallMessages.map(a=>({...a,id:crypto.randomUUID(),timestamp:Date.now(),processNodeId:b.currentNodeId}));b.messages.push(...c),e.FlowExecutor.conversationStates.set(L,b),ac(),await (0,y.oV)(M,b,f,"completed",_),z.info(`Continuing loop for conv ${L} after internal tool processing (flujo=false).`);continue}if(g.length>0){z.info(`[flujo=false] Found ${g.length} external tools for conv ${L}. Wrapping in XML and returning.`);let a=[];for(let b of g)if("function"===b.type)try{let c=JSON.parse(b.function.arguments||"{}"),d="";for(let a in c){let b=String(c[a]).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'");d+=`
|
|
3
3
|
<${a}>${b}</${a}>`}a.push(`<${b.function.name}>${d}
|
|
4
|
-
</${b.function.name}>`)}catch(c){
|
|
4
|
+
</${b.function.name}>`)}catch(c){z.error(`[flujo=false] Failed to parse arguments for external tool ${b.function.name}`,{args:b.function.arguments,error:c,convId:L}),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=k.g4,x.info(`[flujo=false] Prepared XML for external tools. Exiting loop for conv ${J}.`);break}x.warn(`[flujo=false] TOOL_CALL_ACTION received for conv ${J} but no tools found after classification. Treating as final.`),d=k.g4;break}x.warn(`TOOL_CALL_ACTION received for conv ${J} but no tool_calls found in last message. Treating as final.`),d=k.g4;break}let c=await e.FlowExecutor.resolveHandoff(b,d);if(c.isSuccessorEdge){x.info(`[Action Handling] Step ${P}: Handling Handoff Action (Edge ID) for conv ${J}`),x.info(`Handoff action received for conv ${J}. Edge: ${d}`);let a=c.targetNodeId;if("string"==typeof a&&a.length>0){b.handoffInput=void 0;let c=b.messages.length>0?b.messages[b.messages.length-1]:null;if(c?.role==="assistant"&&c.tool_calls){let e,f,g=c.tool_calls.filter(a=>"function"===a.type&&("handoff"===a.function.name||a.function.name.startsWith("handoff_to_"))),h=a=>b.handoffNameMap?.[a]||a.replace("handoff_to_",""),i=g.filter(b=>"function"===b.type&&h(b.function.name)===a),j=i.length>0?i:g.slice(0,1);0===j.length&&x.warn(`Handoff action received for edge ${d}, but could not find corresponding handoff tool call in last assistant message.`);let k=[],l="";for(let c of(j.forEach((c,g)=>{if("function"===c.type)try{let a=JSON.parse(c.function.arguments||"{}"),b="string"==typeof a?.task?a.task.trim():"",d="string"==typeof a?.prompt?a.prompt.trim():"",g=b||(j.length>1?d:"");if(g&&k.push(g),!l&&d&&(l=d),!e&&Array.isArray(a?.parallelFlows)){let b=a.parallelFlows.filter(a=>"string"==typeof a&&""!==a.trim());b.length>0&&(e=b)}let h=a?.concurrencyLimit;void 0===f&&"number"==typeof h&&h>=1&&(f=Math.floor(h))}catch(a){x.warn(`Could not parse handoff tool-call arguments for edge ${d}; ignoring caller input for this call`,{parseError:a})}b.messages.push({id:crypto.randomUUID(),role:"tool",tool_call_id:c.id,content:JSON.stringify({status:"Handoff processed",targetNodeId:a,...j.length>1?{lane:g+1,laneCount:j.length}:{}}),timestamp:Date.now(),processNodeId:b.currentNodeId})}),g))j.includes(c)||(b.messages.push({id:crypto.randomUUID(),role:"tool",tool_call_id:c.id,content:JSON.stringify({status:"Not executed",reason:"A different handoff was chosen this turn."}),timestamp:Date.now(),processNodeId:b.currentNodeId}),x.warn(`Handoff call ${"function"===c.type?c.function.name:c.id} targeted a different node than the chosen route; answered as not executed.`));if(l||1!==k.length||(l=k[0]),l||k.length>0||e&&e.length>0)b.handoffInput={targetNodeId:a,prompt:l,...k.length>0?{tasks:k}:{},...e&&e.length>0?{parallelFlows:e}:{},...void 0!==f?{concurrencyLimit:f}:{}},x.info(`Captured caller handoff input for node ${a}`,{promptChars:l.length,spawnBriefs:k.length,fanoutCount:e?.length??0});else try{let c=await n.flowService.getFlow(b.flowId),d=c?.nodes?.find(b=>b.id===a),e=d?.data?.properties,f=d?.type==="subflow"?e?.promptTemplate:e?.isolatedPrompt;d?.type!=="subflow"&&d?.type!=="process"||e?.inputMode!=="isolated"||e?.allowCallerPrompt===!1||e?.allowCallerFanout===!0||f?.trim()||x.warn(`Handoff to isolated ${d?.type} node ${a} has neither a caller-supplied prompt nor an authored message; the target will start with an empty prompt and may stall. The routing model should have supplied the required "prompt" argument (issue #169).`,{targetNodeId:a})}catch(a){x.debug("Issue #169 empty-prompt handoff guard check failed (non-fatal)",{guardErr:a})}}else x.warn(`Handoff action received for edge ${d}, but the last message was not an assistant message with tool calls.`);V();let f=b.currentNodeId;if(b.currentNodeId=a,b.handoffRequested=void 0,S({type:"handoff",from:f?{nodeId:f}:void 0,toNodeId:a,edgeId:d}),x.info(`Transitioning conv ${J} to node ${b.currentNodeId}`),e.FlowExecutor.conversationStates.set(J,b),Z){x.info(`[Debug Step] Paused after handoff to node ${b.currentNodeId} for conv ${J}.`),$();break}x.info(`Continuing loop for conv ${J} after handoff.`);continue}x.error(`Handoff failed for conv ${J}: Successor node for edge ${d} has invalid ID.`),b.lastResponse={success:!1,error:`Handoff failed: Target node for edge ${d} has invalid ID.`},d=k.O;break}if(d===k.E5){x.info(`[Action Handling] Step ${P}: Handling STAY_ON_NODE_ACTION for conv ${J}`),x.info(`Stay on node action received for conv ${J} at step ${P}`);break}x.warn(`Unrecognized action '${d}' received at step ${P} for conv ${J}. Treating as final response.`),d=k.g4;break}}catch(a){if(x.error(`Unhandled error during execution loop for conv ${J}`,{loopError:a}),d!==k.O&&X()&&(b.status="error",b.lastResponse={success:!1,error:"Execution cancelled by user."},d=k.O),d!==k.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=k.O}}for(let a of(d!==k.O&&X()&&(x.info(`Cancellation flag set at run end for conv ${J}; reporting cancelled instead of '${b.status}'.`),b.status="error",b.lastResponse={success:!1,error:"Execution cancelled by user."},d=k.O),d===k.O&&"error"!==b.status&&(b.status="error"),W))(0,u.mR)(a);let _=Date.now()-f,aa=b.status||(d===k.g4?"completed":d===k.O?"error":"running");if(x.info(`Execution finished for conv ${J}. Final Action: ${d}, Final Status: ${aa}`,{duration:`${_}ms`}),V(),("completed"===aa||"error"===aa||"capped"===aa)&&(S({type:"run:done",status:aa}),"schedule"!==b.source&&(b.runDepth??0)===0)){let a=b.messages[b.messages.length-1],c=a&&"assistant"===a.role&&"string"==typeof a.content?a.content:void 0;C(b,"capped"===aa?"completed":aa,c)}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=(0,t.oO)(a.content),x.verbose(`Updated conversation title for ${J} before final return to: ${b.title}`))}await z(K,b),x.debug(`Saved final state for conversation ${J} before returning.`)}catch(a){x.error(`Failed to save final state for conversation ${J}:`,a)}(0,s.isConversationDeleted)(J)?e.FlowExecutor.conversationStates.delete(J):e.FlowExecutor.conversationStates.set(J,b);let ab=()=>{G&&("completed"===b.status||"error"===b.status)&&e.FlowExecutor.conversationStates.delete(J)},ac={conversationId:b.conversationId||J,messages:b.messages,usage:b.usage,finalAction:d,sharedState:b};if("paused_debug"===b.status)return x.info(`Returning paused debug state for conv ${J}`),{...ac,status:"paused_debug",outputText:"",pendingToolCalls:b.pendingToolCalls};if("error"===b.status||d===k.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},x.error(`Returning error result for conv ${J}`,{errorMessage:c,errorDetails:a,statusCode:d}),"error"!==b.status&&(b.status="error"),ab(),{...ac,status:"error",outputText:"",error:{message:c,details:a,statusCode:d}}}let ad=b.messages.length>0?b.messages[b.messages.length-1]:null,ae="",af="";"object"==typeof b.lastResponse&&null!==b.lastResponse&&"_flujo_xml_tools"in b.lastResponse?(af=b.lastResponse._flujo_xml_tools,ae=ad?.role==="assistant"&&"string"==typeof ad.content?ad.content:"",ae+=(ae?"\n\n":"")+af,b.lastResponse=ae):ae="string"==typeof b.lastResponse?b.lastResponse:ad?.role==="assistant"&&"string"==typeof ad.content?ad.content:d!==k.Jp||j?"Processing complete.":"";let ag=af?void 0:ad?.role==="assistant"?ad.tool_calls:void 0;return x.info(`Returning success result for conv ${J}`,{action:d,status:b.status,flujo:j,requireApproval:A,flujodebug:D}),ab(),{...ac,status:b.status||(d===k.g4?"completed":"running"),outputText:ae,toolCalls:ag,pendingToolCalls:b.pendingToolCalls}}},44681:(a,b,c)=>{c.d(b,{Q:()=>j,validateFlowForRun:()=>k});var d=c(50846),e=c(87821),f=c(20433),g=c(60453),h=c(84671);let i=(0,d.h)("backend/execution/flow/validateFlowForRun");async function j(a){let b,c,d,e;try{b=await f.modelService.loadModels()}catch(a){i.warn("validateFlowObjectForRun: could not load models; skipping model checks",a)}try{let a=await g.mcpService.loadServerConfigs();Array.isArray(a)&&(d=a,c=a.map(a=>({name:a.name,status:a.disabled?"disabled":void 0})))}catch(a){i.warn("validateFlowObjectForRun: could not load servers; skipping server checks",a)}try{let b=new Map((Array.isArray(d)?d:[]).map(a=>[a.name,!!a.disabled])),c=new Set;for(let b of a.nodes??[]){let a=b?.data?.type??b?.type,d=b?.data?.properties?.boundServer;"mcp"===a&&"string"==typeof d&&d&&c.add(d)}let f=await Promise.all([...c].map(async a=>{if(b.get(a))return null;let c=await g.mcpService.listServerTools(a);if(c.error||!Array.isArray(c.tools))return null;let d=c.tools.map(a=>a?.name).filter(a=>"string"==typeof a);return[a,d]}));for(let a of(e={},f))a&&(e[a[0]]=a[1])}catch(a){i.warn("validateFlowObjectForRun: could not gather serverTools; skipping tool checks",a),e=void 0}return(0,h.nC)(a,{models:b,servers:c,serverTools:e})}async function k(a){let b=await e.flowService.getFlow(a);return b?j(b):(i.warn(`validateFlowForRun: flow ${a} could not be loaded; skipping pre-run checks`),{issues:[],errorCount:0,warningCount:0,isRunnable:!0})}}};
|
|
6
|
+
</${b.function.name}>`)}b.lastResponse={_flujo_xml_tools:a.join("\n\n")},d=k.g4,z.info(`[flujo=false] Prepared XML for external tools. Exiting loop for conv ${L}.`);break}z.warn(`[flujo=false] TOOL_CALL_ACTION received for conv ${L} but no tools found after classification. Treating as final.`),d=k.g4;break}z.warn(`TOOL_CALL_ACTION received for conv ${L} but no tool_calls found in last message. Treating as final.`),d=k.g4;break}let f=await e.FlowExecutor.resolveHandoff(b,d);if(f.isSuccessorEdge){z.info(`[Action Handling] Step ${X}: Handling Handoff Action (Edge ID) for conv ${L}`),z.info(`Handoff action received for conv ${L}. Edge: ${d}`);let a=f.targetNodeId;if("string"==typeof a&&a.length>0){b.handoffInput=void 0;let c=b.messages.length>0?b.messages[b.messages.length-1]:null;if(c?.role==="assistant"&&c.tool_calls){let e,f,g=c.tool_calls.filter(a=>"function"===a.type&&("handoff"===a.function.name||a.function.name.startsWith("handoff_to_"))),h=a=>b.handoffNameMap?.[a]||a.replace("handoff_to_",""),i=g.filter(b=>"function"===b.type&&h(b.function.name)===a),j=i.length>0?i:g.slice(0,1);0===j.length&&z.warn(`Handoff action received for edge ${d}, but could not find corresponding handoff tool call in last assistant message.`);let k=[],l="",m="";for(let c of(j.forEach((c,g)=>{if("function"===c.type)try{let a=JSON.parse(c.function.arguments||"{}"),b="string"==typeof a?.task?a.task.trim():"",d="string"==typeof a?.prompt?a.prompt.trim():"",g="string"==typeof a?.body?a.body.trim():"";!m&&g&&(m=g);let h=b||(j.length>1?d:"");if(h&&k.push(h),!l&&d&&(l=d),!e&&Array.isArray(a?.parallelFlows)){let b=a.parallelFlows.filter(a=>"string"==typeof a&&""!==a.trim());b.length>0&&(e=b)}let i=a?.concurrencyLimit;void 0===f&&"number"==typeof i&&i>=1&&(f=Math.floor(i))}catch(a){z.warn(`Could not parse handoff tool-call arguments for edge ${d}; ignoring caller input for this call`,{parseError:a})}b.messages.push({id:crypto.randomUUID(),role:"tool",tool_call_id:c.id,content:JSON.stringify({status:"Handoff processed",targetNodeId:a,...j.length>1?{lane:g+1,laneCount:j.length}:{}}),timestamp:Date.now(),processNodeId:b.currentNodeId})}),g))j.includes(c)||(b.messages.push({id:crypto.randomUUID(),role:"tool",tool_call_id:c.id,content:JSON.stringify({status:"Not executed",reason:"A different handoff was chosen this turn."}),timestamp:Date.now(),processNodeId:b.currentNodeId}),z.warn(`Handoff call ${"function"===c.type?c.function.name:c.id} targeted a different node than the chosen route; answered as not executed.`));l||1!==k.length||(l=k[0]);let o=b.handoffTargetTypes?.[a]==="signal";if(o||m||l||k.length>0||e&&e.length>0)b.handoffInput={targetNodeId:a,prompt:l,...o?{fromHandoffTool:!0}:{},...m?{signalBody:m}:{},...k.length>0?{tasks:k}:{},...e&&e.length>0?{parallelFlows:e}:{},...void 0!==f?{concurrencyLimit:f}:{}},z.info(`Captured caller handoff input for node ${a}`,{promptChars:l.length,signalBodyChars:m.length,spawnBriefs:k.length,fanoutCount:e?.length??0});else try{let c=await n.flowService.getFlow(b.flowId),d=c?.nodes?.find(b=>b.id===a),e=d?.data?.properties,f=d?.type==="subflow"?e?.promptTemplate:e?.isolatedPrompt;d?.type!=="subflow"&&d?.type!=="process"||e?.inputMode!=="isolated"||e?.allowCallerPrompt===!1||e?.allowCallerFanout===!0||f?.trim()||z.warn(`Handoff to isolated ${d?.type} node ${a} has neither a caller-supplied prompt nor an authored message; the target will start with an empty prompt and may stall. The routing model should have supplied the required "prompt" argument (issue #169).`,{targetNodeId:a})}catch(a){z.debug("Issue #169 empty-prompt handoff guard check failed (non-fatal)",{guardErr:a})}}else z.warn(`Handoff action received for edge ${d}, but the last message was not an assistant message with tool calls.`);ac();let f=b.currentNodeId;if(b.currentNodeId=a,b.handoffRequested=void 0,$({type:"handoff",from:f?{nodeId:f}:void 0,toNodeId:a,edgeId:d}),z.info(`Transitioning conv ${L} to node ${b.currentNodeId}`),e.FlowExecutor.conversationStates.set(L,b),ai){z.info(`[Debug Step] Paused after handoff to node ${b.currentNodeId} for conv ${L}.`),aj();break}z.info(`Continuing loop for conv ${L} after handoff.`);continue}z.error(`Handoff failed for conv ${L}: Successor node for edge ${d} has invalid ID.`),b.lastResponse={success:!1,error:`Handoff failed: Target node for edge ${d} has invalid ID.`},d=k.O;break}if(d===k.E5){z.info(`[Action Handling] Step ${X}: Handling STAY_ON_NODE_ACTION for conv ${L}`),z.info(`Stay on node action received for conv ${L} at step ${X}`);break}z.warn(`Unrecognized action '${d}' received at step ${X} for conv ${L}. Treating as final response.`),d=k.g4;break}}catch(a){if(z.error(`Unhandled error during execution loop for conv ${L}`,{loopError:a}),d!==k.O&&af()&&(b.status="error",b.lastResponse={success:!1,error:"Execution cancelled by user."},d=k.O),d!==k.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=k.O}}for(let a of(d!==k.O&&af()&&(z.info(`Cancellation flag set at run end for conv ${L}; reporting cancelled instead of '${b.status}'.`),b.status="error",b.lastResponse={success:!1,error:"Execution cancelled by user."},d=k.O),d===k.O&&"error"!==b.status&&(b.status="error"),ad))(0,u.mR)(a);let ak=Date.now()-f,al=b.status||(d===k.g4?"completed":d===k.O?"error":"running");if(z.info(`Execution finished for conv ${L}. Final Action: ${d}, Final Status: ${al}`,{duration:`${ak}ms`}),b.isCancelled)await (0,y.wL)(M,b,"cancelled",{failure:{category:ae?"ancestor_cancelled":"user_cancelled",message:ae?"Execution was cancelled because an ancestor run was cancelled.":"Execution was cancelled by the user.",retryable:!1},cancellationRequestedAt:b.recovery?.cancellationRequestedAt??Date.now()},_);else if("completed"===al)await (0,y.wL)(M,b,"completed",{},_);else if("capped"===al)await (0,y.wL)(M,b,"capped",{},_);else if("awaiting_tool_approval"===al||"paused_debug"===al)await (0,y.wL)(M,b,"paused",{},_);else if("error"===al){let a=(0,y.gw)(b.lastResponse);await (0,y.wL)(M,b,a.classification,{failure:a.failure,retryAfterAt:a.retryAfterAt,manualActionRequired:"tool_failure"===a.failure.category||b.recovery?.manualActionRequired},_)}if(ac(),("completed"===al||"error"===al||"capped"===al)&&($({type:"run:done",status:al}),"schedule"!==b.source&&"trigger"!==b.source&&(b.runDepth??0)===0)){let a=b.messages[b.messages.length-1],c=a&&"assistant"===a.role&&"string"==typeof a.content?a.content:void 0;D(b,"capped"===al?"completed":al,c)}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=(0,t.oO)(a.content),z.verbose(`Updated conversation title for ${L} before final return to: ${b.title}`))}await B(M,b),z.debug(`Saved final state for conversation ${L} before returning.`)}catch(a){z.error(`Failed to save final state for conversation ${L}:`,a)}(0,s.isConversationDeleted)(L)?e.FlowExecutor.conversationStates.delete(L):e.FlowExecutor.conversationStates.set(L,b);let am=()=>{I&&("completed"===b.status||"error"===b.status)&&e.FlowExecutor.conversationStates.delete(L)},an={conversationId:b.conversationId||L,messages:b.messages,usage:b.usage,finalAction:d,sharedState:b};if("paused_debug"===b.status)return z.info(`Returning paused debug state for conv ${L}`),U({...an,status:"paused_debug",outputText:"",pendingToolCalls:b.pendingToolCalls});if("error"===b.status||d===k.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},z.error(`Returning error result for conv ${L}`,{errorMessage:c,errorDetails:a,statusCode:d}),"error"!==b.status&&(b.status="error"),am(),U({...an,status:"error",outputText:"",error:{message:c,details:a,statusCode:d}})}let ao=b.messages.length>0?b.messages[b.messages.length-1]:null,ap="",aq="";"object"==typeof b.lastResponse&&null!==b.lastResponse&&"_flujo_xml_tools"in b.lastResponse?(aq=b.lastResponse._flujo_xml_tools,ap=ao?.role==="assistant"&&"string"==typeof ao.content?ao.content:"",ap+=(ap?"\n\n":"")+aq,b.lastResponse=ap):ap="string"==typeof b.lastResponse?b.lastResponse:ao?.role==="assistant"&&"string"==typeof ao.content?ao.content:d!==k.Jp||j?"Processing complete.":"";let ar=aq?void 0:ao?.role==="assistant"?ao.tool_calls:void 0;return z.info(`Returning success result for conv ${L}`,{action:d,status:b.status,flujo:j,requireApproval:E,flujodebug:F}),am(),U({...an,status:b.status||(d===k.g4?"completed":"running"),outputText:ap,toolCalls:ar,pendingToolCalls:b.pendingToolCalls})}},44681:(a,b,c)=>{c.d(b,{Q:()=>j,validateFlowForRun:()=>k});var d=c(50846),e=c(87821),f=c(20433),g=c(49877),h=c(84671);let i=(0,d.h)("backend/execution/flow/validateFlowForRun");async function j(a){let b,c,d,e;try{b=await f.modelService.loadModels()}catch(a){i.warn("validateFlowObjectForRun: could not load models; skipping model checks",a)}try{let a=await g.mcpService.loadServerConfigs();Array.isArray(a)&&(d=a,c=a.map(a=>({name:a.name,status:a.disabled?"disabled":void 0})))}catch(a){i.warn("validateFlowObjectForRun: could not load servers; skipping server checks",a)}try{let b=new Map((Array.isArray(d)?d:[]).map(a=>[a.name,!!a.disabled])),c=new Set;for(let b of a.nodes??[]){let a=b?.data?.type??b?.type,d=b?.data?.properties?.boundServer;"mcp"===a&&"string"==typeof d&&d&&c.add(d)}let f=await Promise.all([...c].map(async a=>{if(b.get(a))return null;let c=await g.mcpService.listServerTools(a);if(c.error||!Array.isArray(c.tools))return null;let d=c.tools.map(a=>a?.name).filter(a=>"string"==typeof a);return[a,d]}));for(let a of(e={},f))a&&(e[a[0]]=a[1])}catch(a){i.warn("validateFlowObjectForRun: could not gather serverTools; skipping tool checks",a),e=void 0}return(0,h.nC)(a,{models:b,servers:c,serverTools:e})}async function k(a){let b=await e.flowService.getFlow(a);return b?j(b):(i.warn(`validateFlowForRun: flow ${a} could not be loaded; skipping pre-run checks`),{issues:[],errorCount:0,warningCount:0,isRunnable:!0})}}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";exports.id=6607,exports.ids=[6607],exports.modules={1312:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),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")},5748:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M13 13v8h8v-8zM3 21h8v-8H3zM3 3v8h8V3zm13.66-1.31L11 7.34 16.66 13l5.66-5.66z"}),"Widgets")},19787:(a,b,c)=>{c.d(b,{A:()=>u});var d=c(38301),e=c(43249),f=c(2783),g=c(18168),h=c(68333),i=c(6636),j=c(14328),k=c(66512),l=c(29565),m=c(33105);function n(a){return(0,m.Ay)("MuiAccordionSummary",a)}let o=(0,l.A)("MuiAccordionSummary",["root","expanded","focusVisible","disabled","gutters","contentGutters","content","expandIconWrapper"]);var p=c(20385),q=c(21124);let r=(0,g.Ay)(j.A,{name:"MuiAccordionSummary",slot:"Root",overridesResolver:(a,b)=>b.root})((0,h.A)(({theme:a})=>{let b={duration:a.transitions.duration.shortest};return{display:"flex",width:"100%",minHeight:48,padding:a.spacing(0,2),transition:a.transitions.create(["min-height","background-color"],b),[`&.${o.focusVisible}`]:{backgroundColor:(a.vars||a).palette.action.focus},[`&.${o.disabled}`]:{opacity:(a.vars||a).palette.action.disabledOpacity},[`&:hover:not(.${o.disabled})`]:{cursor:"pointer"},variants:[{props:a=>!a.disableGutters,style:{[`&.${o.expanded}`]:{minHeight:64}}}]}})),s=(0,g.Ay)("span",{name:"MuiAccordionSummary",slot:"Content",overridesResolver:(a,b)=>b.content})((0,h.A)(({theme:a})=>({display:"flex",textAlign:"start",flexGrow:1,margin:"12px 0",variants:[{props:a=>!a.disableGutters,style:{transition:a.transitions.create(["margin"],{duration:a.transitions.duration.shortest}),[`&.${o.expanded}`]:{margin:"20px 0"}}}]}))),t=(0,g.Ay)("span",{name:"MuiAccordionSummary",slot:"ExpandIconWrapper",overridesResolver:(a,b)=>b.expandIconWrapper})((0,h.A)(({theme:a})=>({display:"flex",color:(a.vars||a).palette.action.active,transform:"rotate(0deg)",transition:a.transitions.create("transform",{duration:a.transitions.duration.shortest}),[`&.${o.expanded}`]:{transform:"rotate(180deg)"}}))),u=d.forwardRef(function(a,b){let c=(0,i.b)({props:a,name:"MuiAccordionSummary"}),{children:g,className:h,expandIcon:j,focusVisibleClassName:l,onClick:m,slots:o,slotProps:u,...v}=c,{disabled:w=!1,disableGutters:x,expanded:y,toggle:z}=d.useContext(k.A),A={...c,expanded:y,disabled:w,disableGutters:x},B=(a=>{let{classes:b,expanded:c,disabled:d,disableGutters:e}=a;return(0,f.A)({root:["root",c&&"expanded",d&&"disabled",!e&&"gutters"],focusVisible:["focusVisible"],content:["content",c&&"expanded",!e&&"contentGutters"],expandIconWrapper:["expandIconWrapper",c&&"expanded"]},n,b)})(A),C={slots:o,slotProps:u},[D,E]=(0,p.A)("root",{ref:b,shouldForwardComponentProp:!0,className:(0,e.A)(B.root,h),elementType:r,externalForwardedProps:{...C,...v},ownerState:A,additionalProps:{focusRipple:!1,disableRipple:!0,disabled:w,"aria-expanded":y,focusVisibleClassName:(0,e.A)(B.focusVisible,l)},getSlotProps:a=>({...a,onClick:b=>{a.onClick?.(b),z&&z(b),m&&m(b)}})}),[F,G]=(0,p.A)("content",{className:B.content,elementType:s,externalForwardedProps:C,ownerState:A}),[H,I]=(0,p.A)("expandIconWrapper",{className:B.expandIconWrapper,elementType:t,externalForwardedProps:C,ownerState:A});return(0,q.jsxs)(D,{...E,children:[(0,q.jsx)(F,{...G,children:g}),j&&(0,q.jsx)(H,{...I,children:j})]})})},21358:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)([(0,e.jsx)("path",{d:"M12 5.99 19.53 19H4.47zM12 2 1 21h22z"},"0"),(0,e.jsx)("path",{d:"M13 16h-2v2h2zm0-6h-2v5h2z"},"1")],"WarningAmber")},21903:(a,b,c)=>{c.d(b,{x:()=>j});var d=c(38301),e=c(67943),f=c(62383),g=c(46757),h=c(51939);function i(a){return a.substring(2).toLowerCase()}function j(a){let{children:b,disableReactTree:c=!1,mouseEvent:j="onClick",onClickAway:k,touchEvent:l="onTouchEnd"}=a,m=d.useRef(!1),n=d.useRef(null),o=d.useRef(!1),p=d.useRef(!1);d.useEffect(()=>(setTimeout(()=>{o.current=!0},0),()=>{o.current=!1}),[]);let q=(0,e.A)((0,h.A)(b),n),r=(0,f.A)(a=>{let b=p.current;p.current=!1;let d=(0,g.A)(n.current);if(!(!o.current||!n.current||"clientX"in a&&(d.documentElement.clientWidth<a.clientX||d.documentElement.clientHeight<a.clientY))){if(m.current){m.current=!1;return}(a.composedPath?a.composedPath().includes(n.current):!d.documentElement.contains(a.target)||n.current.contains(a.target))||!c&&b||k(a)}}),s=a=>c=>{p.current=!0;let d=b.props[a];d&&d(c)},t={ref:q};return!1!==l&&(t[l]=s(l)),d.useEffect(()=>{if(!1!==l){let a=i(l),b=(0,g.A)(n.current),c=()=>{m.current=!0};return b.addEventListener(a,r),b.addEventListener("touchmove",c),()=>{b.removeEventListener(a,r),b.removeEventListener("touchmove",c)}}},[r,l]),!1!==j&&(t[j]=s(j)),d.useEffect(()=>{if(!1!==j){let a=i(j),b=(0,g.A)(n.current);return b.addEventListener(a,r),()=>{b.removeEventListener(a,r)}}},[r,j]),d.cloneElement(b,t)}},30137:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"}),"Close")},38941:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),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")},49066:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M8 5v14l11-7z"}),"PlayArrow")},53222:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4z"}),"Refresh")},56685:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M20 4H4c-1.11 0-2 .9-2 2v12c0 1.1.89 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.89-2-2-2m0 14H4V8h16zm-2-1h-6v-2h6zM7.5 17l-1.41-1.41L8.67 13l-2.59-2.59L7.5 9l4 4z"}),"Terminal")},61628:(a,b,c)=>{c.d(b,{A:()=>v});var d=c(38301),e=c(43249),f=c(2783),g=c(18168),h=c(68333),i=c(6636),j=c(99561),k=c(54573),l=c(66512),m=c(65603),n=c(20385),o=c(29565),p=c(33105);function q(a){return(0,p.Ay)("MuiAccordion",a)}let r=(0,o.A)("MuiAccordion",["root","heading","rounded","expanded","disabled","gutters","region"]);var s=c(21124);let t=(0,g.Ay)(k.A,{name:"MuiAccordion",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[{[`& .${r.region}`]:b.region},b.root,!c.square&&b.rounded,!c.disableGutters&&b.gutters]}})((0,h.A)(({theme:a})=>{let b={duration:a.transitions.duration.shortest};return{position:"relative",transition:a.transitions.create(["margin"],b),overflowAnchor:"none","&::before":{position:"absolute",left:0,top:-1,right:0,height:1,content:'""',opacity:1,backgroundColor:(a.vars||a).palette.divider,transition:a.transitions.create(["opacity","background-color"],b)},"&:first-of-type":{"&::before":{display:"none"}},[`&.${r.expanded}`]:{"&::before":{opacity:0},"&:first-of-type":{marginTop:0},"&:last-of-type":{marginBottom:0},"& + &":{"&::before":{display:"none"}}},[`&.${r.disabled}`]:{backgroundColor:(a.vars||a).palette.action.disabledBackground}}}),(0,h.A)(({theme:a})=>({variants:[{props:a=>!a.square,style:{borderRadius:0,"&:first-of-type":{borderTopLeftRadius:(a.vars||a).shape.borderRadius,borderTopRightRadius:(a.vars||a).shape.borderRadius},"&:last-of-type":{borderBottomLeftRadius:(a.vars||a).shape.borderRadius,borderBottomRightRadius:(a.vars||a).shape.borderRadius,"@supports (-ms-ime-align: auto)":{borderBottomLeftRadius:0,borderBottomRightRadius:0}}}},{props:a=>!a.disableGutters,style:{[`&.${r.expanded}`]:{margin:"16px 0"}}}]}))),u=(0,g.Ay)("h3",{name:"MuiAccordion",slot:"Heading",overridesResolver:(a,b)=>b.heading})({all:"unset"}),v=d.forwardRef(function(a,b){let c=(0,i.b)({props:a,name:"MuiAccordion"}),{children:g,className:h,defaultExpanded:k=!1,disabled:o=!1,disableGutters:p=!1,expanded:r,onChange:v,square:w=!1,slots:x={},slotProps:y={},TransitionComponent:z,TransitionProps:A,...B}=c,[C,D]=(0,m.A)({controlled:r,default:k,name:"Accordion",state:"expanded"}),E=d.useCallback(a=>{D(!C),v&&v(a,!C)},[C,v,D]),[F,...G]=d.Children.toArray(g),H=d.useMemo(()=>({expanded:C,disabled:o,disableGutters:p,toggle:E}),[C,o,p,E]),I={...c,square:w,disabled:o,disableGutters:p,expanded:C},J=(a=>{let{classes:b,square:c,expanded:d,disabled:e,disableGutters:g}=a;return(0,f.A)({root:["root",!c&&"rounded",d&&"expanded",e&&"disabled",!g&&"gutters"],heading:["heading"],region:["region"]},q,b)})(I),K={slots:{transition:z,...x},slotProps:{transition:A,...y}},[L,M]=(0,n.A)("root",{elementType:t,externalForwardedProps:{...K,...B},className:(0,e.A)(J.root,h),shouldForwardComponentProp:!0,ownerState:I,ref:b,additionalProps:{square:w}}),[N,O]=(0,n.A)("heading",{elementType:u,externalForwardedProps:K,className:J.heading,ownerState:I}),[P,Q]=(0,n.A)("transition",{elementType:j.A,externalForwardedProps:K,ownerState:I});return(0,s.jsxs)(L,{...M,children:[(0,s.jsx)(N,{...O,children:(0,s.jsx)(l.A.Provider,{value:H,children:F})}),(0,s.jsx)(P,{in:C,timeout:"auto",...Q,children:(0,s.jsx)("div",{"aria-labelledby":F.props.id,id:F.props["aria-controls"],role:"region",className:J.region,children:G})})]})})},63908:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"m12 8-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z"}),"ExpandLess")},66512:(a,b,c)=>{c.d(b,{A:()=>d});let d=c(38301).createContext({})},71439:(a,b,c)=>{c.d(b,{Ay:()=>x});var d=c(38301),e=c(43249),f=c(2783),g=c(7103),h=c(18168),i=c(68333),j=c(6636),k=c(67934),l=c(26636),m=c(55470),n=c(29565),o=c(33105);function p(a){return(0,o.Ay)("MuiListItem",a)}(0,n.A)("MuiListItem",["root","container","dense","alignItemsFlexStart","divider","gutters","padding","secondaryAction"]);var q=c(40443);function r(a){return(0,o.Ay)("MuiListItemSecondaryAction",a)}(0,n.A)("MuiListItemSecondaryAction",["root","disableGutters"]);var s=c(21124);let t=(0,h.Ay)("div",{name:"MuiListItemSecondaryAction",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.root,c.disableGutters&&b.disableGutters]}})({position:"absolute",right:16,top:"50%",transform:"translateY(-50%)",variants:[{props:({ownerState:a})=>a.disableGutters,style:{right:0}}]}),u=d.forwardRef(function(a,b){let c=(0,j.b)({props:a,name:"MuiListItemSecondaryAction"}),{className:g,...h}=c,i=d.useContext(m.A),k={...c,disableGutters:i.disableGutters},l=(a=>{let{disableGutters:b,classes:c}=a;return(0,f.A)({root:["root",b&&"disableGutters"]},r,c)})(k);return(0,s.jsx)(t,{className:(0,e.A)(l.root,g),ownerState:k,ref:b,...h})});u.muiName="ListItemSecondaryAction";let v=(0,h.Ay)("div",{name:"MuiListItem",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.root,c.dense&&b.dense,"flex-start"===c.alignItems&&b.alignItemsFlexStart,c.divider&&b.divider,!c.disableGutters&&b.gutters,!c.disablePadding&&b.padding,c.hasSecondaryAction&&b.secondaryAction]}})((0,i.A)(({theme:a})=>({display:"flex",justifyContent:"flex-start",alignItems:"center",position:"relative",textDecoration:"none",width:"100%",boxSizing:"border-box",textAlign:"left",variants:[{props:({ownerState:a})=>!a.disablePadding,style:{paddingTop:8,paddingBottom:8}},{props:({ownerState:a})=>!a.disablePadding&&a.dense,style:{paddingTop:4,paddingBottom:4}},{props:({ownerState:a})=>!a.disablePadding&&!a.disableGutters,style:{paddingLeft:16,paddingRight:16}},{props:({ownerState:a})=>!a.disablePadding&&!!a.secondaryAction,style:{paddingRight:48}},{props:({ownerState:a})=>!!a.secondaryAction,style:{[`& > .${q.A.root}`]:{paddingRight:48}}},{props:{alignItems:"flex-start"},style:{alignItems:"flex-start"}},{props:({ownerState:a})=>a.divider,style:{borderBottom:`1px solid ${(a.vars||a).palette.divider}`,backgroundClip:"padding-box"}},{props:({ownerState:a})=>a.button,style:{transition:a.transitions.create("background-color",{duration:a.transitions.duration.shortest}),"&:hover":{textDecoration:"none",backgroundColor:(a.vars||a).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}}}},{props:({ownerState:a})=>a.hasSecondaryAction,style:{paddingRight:48}}]}))),w=(0,h.Ay)("li",{name:"MuiListItem",slot:"Container",overridesResolver:(a,b)=>b.container})({position:"relative"}),x=d.forwardRef(function(a,b){let c=(0,j.b)({props:a,name:"MuiListItem"}),{alignItems:h="center",children:i,className:n,component:o,components:q={},componentsProps:r={},ContainerComponent:t="li",ContainerProps:{className:x,...y}={},dense:z=!1,disableGutters:A=!1,disablePadding:B=!1,divider:C=!1,secondaryAction:D,slotProps:E={},slots:F={},...G}=c,H=d.useContext(m.A),I=d.useMemo(()=>({dense:z||H.dense||!1,alignItems:h,disableGutters:A}),[h,H.dense,z,A]),J=d.useRef(null),K=d.Children.toArray(i),L=K.length&&(0,k.A)(K[K.length-1],["ListItemSecondaryAction"]),M={...c,alignItems:h,dense:I.dense,disableGutters:A,disablePadding:B,divider:C,hasSecondaryAction:L},N=(a=>{let{alignItems:b,classes:c,dense:d,disableGutters:e,disablePadding:g,divider:h,hasSecondaryAction:i}=a;return(0,f.A)({root:["root",d&&"dense",!e&&"gutters",!g&&"padding",h&&"divider","flex-start"===b&&"alignItemsFlexStart",i&&"secondaryAction"],container:["container"]},p,c)})(M),O=(0,l.A)(J,b),P=F.root||q.Root||v,Q=E.root||r.root||{},R={className:(0,e.A)(N.root,Q.className,n),...G},S=o||"li";return L?(S=R.component||o?S:"div","li"===t&&("li"===S?S="div":"li"===R.component&&(R.component="div")),(0,s.jsx)(m.A.Provider,{value:I,children:(0,s.jsxs)(w,{as:t,className:(0,e.A)(N.container,x),ref:O,ownerState:M,...y,children:[(0,s.jsx)(P,{...Q,...!(0,g.A)(P)&&{as:S,ownerState:{...M,...Q.ownerState}},...R,children:K}),K.pop()]})})):(0,s.jsx)(m.A.Provider,{value:I,children:(0,s.jsxs)(P,{...Q,as:S,ref:O,...!(0,g.A)(P)&&{ownerState:{...M,...Q.ownerState}},...R,children:[K,D&&(0,s.jsx)(u,{children:D})]})})})},72264:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8"}),"RadioButtonUnchecked")},95803:(a,b,c)=>{c.d(b,{A:()=>o});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)("MuiAccordionDetails",a)}(0,j.A)("MuiAccordionDetails",["root"]);var m=c(21124);let n=(0,g.Ay)("div",{name:"MuiAccordionDetails",slot:"Root",overridesResolver:(a,b)=>b.root})((0,h.A)(({theme:a})=>({padding:a.spacing(1,2,2)}))),o=d.forwardRef(function(a,b){let c=(0,i.b)({props:a,name:"MuiAccordionDetails"}),{className:d,...g}=c,h=(a=>{let{classes:b}=a;return(0,f.A)({root:["root"]},l,b)})(c);return(0,m.jsx)(n,{className:(0,e.A)(h.root,d),ref:b,ownerState:c,...g})})}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";exports.id=6687,exports.ids=[1925,4306,6687],exports.modules={1925:(a,b,c)=>{c.d(b,{Hm:()=>f,xc:()=>e});let d=["key","secret","token","password"],e=a=>d.some(b=>a.toLowerCase().includes(b)),f=a=>e(a)||"authorization"===a.trim().toLowerCase()}};
|
|
@@ -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.resolve().then(c.bind(c,12763)),{getCompletionAdapter:e}=await Promise.resolve().then(c.bind(c,
|
|
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.resolve().then(c.bind(c,12763)),{getCompletionAdapter:e}=await Promise.resolve().then(c.bind(c,48458)),{normalizeMaxTokens:f}=await Promise.resolve().then(c.bind(c,5091)),g=await d.getModel(a);if(!g)throw Error(`config: The AI-check model no longer exists (${a})`);let i=await d.resolveAndDecryptApiKey(g.ApiKey);if(!i)throw Error("config: Could not resolve the AI-check model API key");let j=e(g),{completion:k}=await j.createCompletion({model:g,apiKey:i,temperature:0,maxTokens:f(g.maxTokens),messages:[{role:"system",content:h},{role:"user",content:b}]}),l=k.choices?.[0]?.message?.content;return"string"==typeof l?l:""}async function k(a,b){let{runFlow:d}=await c.e(9088).then(c.bind(c,49088)),e=await d({flowId:a,prompt:`${b}
|
|
9
9
|
|
|
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??""}}};
|
|
10
|
+
${g}`,source:"trigger",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??""}}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";exports.id=7031,exports.ids=[7031],exports.modules={885:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M15 3H6c-.83 0-1.54.5-1.84 1.22l-3.02 7.05c-.09.23-.14.47-.14.73v2c0 1.1.9 2 2 2h6.31l-.95 4.57-.03.32c0 .41.17.79.44 1.06L9.83 23l6.59-6.59c.36-.36.58-.86.58-1.41V5c0-1.1-.9-2-2-2m4 0v12h4V3z"}),"ThumbDown")},1010:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M6.99 11 3 15l3.99 4v-3H14v-2H6.99zM21 9l-3.99-4v3H10v2h7.01v3z"}),"SwapHoriz")},1717:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M17 11h3c1.11 0 2-.9 2-2V5c0-1.11-.9-2-2-2h-3c-1.11 0-2 .9-2 2v1H9.01V5c0-1.11-.9-2-2-2H4c-1.1 0-2 .9-2 2v4c0 1.11.9 2 2 2h3c1.11 0 2-.9 2-2V8h2v7.01c0 1.65 1.34 2.99 2.99 2.99H15v1c0 1.11.9 2 2 2h3c1.11 0 2-.9 2-2v-4c0-1.11-.9-2-2-2h-3c-1.11 0-2 .9-2 2v1h-1.01c-.54 0-.99-.45-.99-.99V8h2v1c0 1.1.9 2 2 2"}),"AccountTreeRounded")},5123:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M20.5 11H19V7c0-1.1-.9-2-2-2h-4V3.5C13 2.12 11.88 1 10.5 1S8 2.12 8 3.5V5H4c-1.1 0-1.99.9-1.99 2v3.8H3.5c1.49 0 2.7 1.21 2.7 2.7s-1.21 2.7-2.7 2.7H2V20c0 1.1.9 2 2 2h3.8v-1.5c0-1.49 1.21-2.7 2.7-2.7s2.7 1.21 2.7 2.7V22H17c1.1 0 2-.9 2-2v-4h1.5c1.38 0 2.5-1.12 2.5-2.5S21.88 11 20.5 11"}),"ExtensionRounded")},5240:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M15.5 14h-.79l-.28-.27c1.2-1.4 1.82-3.31 1.48-5.34-.47-2.78-2.79-5-5.59-5.34-4.23-.52-7.79 3.04-7.27 7.27.34 2.8 2.56 5.12 5.34 5.59 2.03.34 3.94-.28 5.34-1.48l.27.28v.79l4.25 4.25c.41.41 1.08.41 1.49 0s.41-1.08 0-1.49zm-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"}),"SearchRounded")},9258:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M16.5 6v11.5c0 2.21-1.79 4-4 4s-4-1.79-4-4V5c0-1.38 1.12-2.5 2.5-2.5s2.5 1.12 2.5 2.5v10.5c0 .55-.45 1-1 1s-1-.45-1-1V6H10v9.5c0 1.38 1.12 2.5 2.5 2.5s2.5-1.12 2.5-2.5V5c0-2.21-1.79-4-4-4S7 2.79 7 5v12.5c0 3.04 2.46 5.5 5.5 5.5s5.5-2.46 5.5-5.5V6z"}),"AttachFile")},11939:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9m-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8z"}),"Restore")},13665:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"m14 4 2.29 2.29-2.88 2.88 1.42 1.42 2.88-2.88L20 10V4zm-4 0H4v6l2.29-2.29 4.71 4.7V20h2v-8.41l-5.29-5.3z"}),"CallSplit")},16348:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2M4 12c0-4.42 3.58-8 8-8 1.85 0 3.55.63 4.9 1.69L5.69 16.9C4.63 15.55 4 13.85 4 12m8 8c-1.85 0-3.55-.63-4.9-1.69L18.31 7.1C19.37 8.45 20 10.15 20 12c0 4.42-3.58 8-8 8"}),"Block")},24077:(a,b,c)=>{c.d(b,{A:()=>j});var d=c(38301),e=c(75249),f=c(44548),g=c(33427);let h={...d}.useSyncExternalStore;function i(a={}){let{themeId:b}=a;return function(a,c={}){let i=(0,g.A)();i&&b&&(i=i[b]||i);let{defaultMatches:j=!1,matchMedia:k=null,ssrMatchMedia:l=null,noSsr:m=!1}=(0,f.A)({name:"MuiUseMediaQuery",props:c,theme:i}),n="function"==typeof a?a(i):a;return(n=n.replace(/^@media( ?)/m,"")).includes("print")&&console.warn("MUI: You have provided a `print` query to the `useMediaQuery` hook.\nUsing the print media query to modify print styles can lead to unexpected results.\nConsider using the `displayPrint` field in the `sx` prop instead.\nMore information about `displayPrint` on our docs: https://mui.com/system/display/#display-in-print."),(void 0!==h?function(a,b,c,e,f){let g=d.useCallback(()=>b,[b]),i=d.useMemo(()=>{if(f&&c)return()=>c(a).matches;if(null!==e){let{matches:b}=e(a);return()=>b}return g},[g,a,e,f,c]),[j,k]=d.useMemo(()=>{if(null===c)return[g,()=>()=>{}];let b=c(a);return[()=>b.matches,a=>(b.addEventListener("change",a),()=>{b.removeEventListener("change",a)})]},[g,c,a]);return h(k,j,i)}:function(a,b,c,f,g){let[h,i]=d.useState(()=>g&&c?c(a).matches:f?f(a).matches:b);return(0,e.A)(()=>{if(!c)return;let b=c(a),d=()=>{i(b.matches)};return d(),b.addEventListener("change",d),()=>{b.removeEventListener("change",d)}},[a,c]),h})(n,j,k,l,m)}}i();let j=i({themeId:c(35864).A})},24276:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M1 21h4V9H1zm22-11c0-1.1-.9-2-2-2h-6.31l.95-4.57.03-.32c0-.41-.17-.79-.44-1.06L14.17 1 7.59 7.59C7.22 7.95 7 8.45 7 9v10c0 1.1.9 2 2 2h9c.83 0 1.54-.5 1.84-1.22l3.02-7.05c.09-.23.14-.47.14-.73z"}),"ThumbUp")},36210:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"m19.46 8 .79-1.75L22 5.46c.39-.18.39-.73 0-.91l-1.75-.79L19.46 2c-.18-.39-.73-.39-.91 0l-.79 1.75-1.76.79c-.39.18-.39.73 0 .91l1.75.79.79 1.76c.18.39.74.39.92 0M11.5 9.5 9.91 6c-.35-.78-1.47-.78-1.82 0L6.5 9.5 3 11.09c-.78.36-.78 1.47 0 1.82l3.5 1.59L8.09 18c.36.78 1.47.78 1.82 0l1.59-3.5 3.5-1.59c.78-.36.78-1.47 0-1.82zm7.04 6.5-.79 1.75-1.75.79c-.39.18-.39.73 0 .91l1.75.79.79 1.76c.18.39.73.39.91 0l.79-1.75 1.76-.79c.39-.18.39-.73 0-.91l-1.75-.79-.79-1.76c-.18-.39-.74-.39-.92 0"}),"AutoAwesomeRounded")},53830:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M15 4v7H5.17L4 12.17V4zm1-2H3c-.55 0-1 .45-1 1v14l4-4h10c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1m5 4h-2v9H6v2c0 .55.45 1 1 1h11l4 4V7c0-.55-.45-1-1-1"}),"ForumOutlined")},56154:(a,b,c)=>{c.d(b,{A:()=>w});var d=c(38301),e=c(43249),f=c(66335),g=c(2783);let h=function(a){let{badgeContent:b,invisible:c=!1,max:d=99,showZero:e=!1}=a,g=(0,f.A)({badgeContent:b,max:d}),h=c;!1!==c||0!==b||e||(h=!0);let{badgeContent:i,max:j=d}=h?g:a,k=i&&Number(i)>j?`${j}+`:i;return{badgeContent:i,invisible:h,max:j,displayValue:k}};var i=c(18168),j=c(68333),k=c(54716),l=c(6636),m=c(6638),n=c(29565),o=c(33105);function p(a){return(0,o.Ay)("MuiBadge",a)}let q=(0,n.A)("MuiBadge",["root","badge","dot","standard","anchorOriginTopRight","anchorOriginBottomRight","anchorOriginTopLeft","anchorOriginBottomLeft","invisible","colorError","colorInfo","colorPrimary","colorSecondary","colorSuccess","colorWarning","overlapRectangular","overlapCircular","anchorOriginTopLeftCircular","anchorOriginTopLeftRectangular","anchorOriginTopRightCircular","anchorOriginTopRightRectangular","anchorOriginBottomLeftCircular","anchorOriginBottomLeftRectangular","anchorOriginBottomRightCircular","anchorOriginBottomRightRectangular"]);var r=c(20385),s=c(21124);let t=(0,i.Ay)("span",{name:"MuiBadge",slot:"Root",overridesResolver:(a,b)=>b.root})({position:"relative",display:"inline-flex",verticalAlign:"middle",flexShrink:0}),u=(0,i.Ay)("span",{name:"MuiBadge",slot:"Badge",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.badge,b[c.variant],b[`anchorOrigin${(0,m.A)(c.anchorOrigin.vertical)}${(0,m.A)(c.anchorOrigin.horizontal)}${(0,m.A)(c.overlap)}`],"default"!==c.color&&b[`color${(0,m.A)(c.color)}`],c.invisible&&b.invisible]}})((0,j.A)(({theme:a})=>({display:"flex",flexDirection:"row",flexWrap:"wrap",justifyContent:"center",alignContent:"center",alignItems:"center",position:"absolute",boxSizing:"border-box",fontFamily:a.typography.fontFamily,fontWeight:a.typography.fontWeightMedium,fontSize:a.typography.pxToRem(12),minWidth:20,lineHeight:1,padding:"0 6px",height:20,borderRadius:10,zIndex:1,transition:a.transitions.create("transform",{easing:a.transitions.easing.easeInOut,duration:a.transitions.duration.enteringScreen}),variants:[...Object.entries(a.palette).filter((0,k.A)(["contrastText"])).map(([b])=>({props:{color:b},style:{backgroundColor:(a.vars||a).palette[b].main,color:(a.vars||a).palette[b].contrastText}})),{props:{variant:"dot"},style:{borderRadius:4,height:8,minWidth:8,padding:0}},{props:({ownerState:a})=>"top"===a.anchorOrigin.vertical&&"right"===a.anchorOrigin.horizontal&&"rectangular"===a.overlap,style:{top:0,right:0,transform:"scale(1) translate(50%, -50%)",transformOrigin:"100% 0%",[`&.${q.invisible}`]:{transform:"scale(0) translate(50%, -50%)"}}},{props:({ownerState:a})=>"bottom"===a.anchorOrigin.vertical&&"right"===a.anchorOrigin.horizontal&&"rectangular"===a.overlap,style:{bottom:0,right:0,transform:"scale(1) translate(50%, 50%)",transformOrigin:"100% 100%",[`&.${q.invisible}`]:{transform:"scale(0) translate(50%, 50%)"}}},{props:({ownerState:a})=>"top"===a.anchorOrigin.vertical&&"left"===a.anchorOrigin.horizontal&&"rectangular"===a.overlap,style:{top:0,left:0,transform:"scale(1) translate(-50%, -50%)",transformOrigin:"0% 0%",[`&.${q.invisible}`]:{transform:"scale(0) translate(-50%, -50%)"}}},{props:({ownerState:a})=>"bottom"===a.anchorOrigin.vertical&&"left"===a.anchorOrigin.horizontal&&"rectangular"===a.overlap,style:{bottom:0,left:0,transform:"scale(1) translate(-50%, 50%)",transformOrigin:"0% 100%",[`&.${q.invisible}`]:{transform:"scale(0) translate(-50%, 50%)"}}},{props:({ownerState:a})=>"top"===a.anchorOrigin.vertical&&"right"===a.anchorOrigin.horizontal&&"circular"===a.overlap,style:{top:"14%",right:"14%",transform:"scale(1) translate(50%, -50%)",transformOrigin:"100% 0%",[`&.${q.invisible}`]:{transform:"scale(0) translate(50%, -50%)"}}},{props:({ownerState:a})=>"bottom"===a.anchorOrigin.vertical&&"right"===a.anchorOrigin.horizontal&&"circular"===a.overlap,style:{bottom:"14%",right:"14%",transform:"scale(1) translate(50%, 50%)",transformOrigin:"100% 100%",[`&.${q.invisible}`]:{transform:"scale(0) translate(50%, 50%)"}}},{props:({ownerState:a})=>"top"===a.anchorOrigin.vertical&&"left"===a.anchorOrigin.horizontal&&"circular"===a.overlap,style:{top:"14%",left:"14%",transform:"scale(1) translate(-50%, -50%)",transformOrigin:"0% 0%",[`&.${q.invisible}`]:{transform:"scale(0) translate(-50%, -50%)"}}},{props:({ownerState:a})=>"bottom"===a.anchorOrigin.vertical&&"left"===a.anchorOrigin.horizontal&&"circular"===a.overlap,style:{bottom:"14%",left:"14%",transform:"scale(1) translate(-50%, 50%)",transformOrigin:"0% 100%",[`&.${q.invisible}`]:{transform:"scale(0) translate(-50%, 50%)"}}},{props:{invisible:!0},style:{transition:a.transitions.create("transform",{easing:a.transitions.easing.easeInOut,duration:a.transitions.duration.leavingScreen})}}]})));function v(a){return{vertical:a?.vertical??"top",horizontal:a?.horizontal??"right"}}let w=d.forwardRef(function(a,b){let c=(0,l.b)({props:a,name:"MuiBadge"}),{anchorOrigin:d,className:i,classes:j,component:k,components:n={},componentsProps:o={},children:q,overlap:w="rectangular",color:x="default",invisible:y=!1,max:z=99,badgeContent:A,slots:B,slotProps:C,showZero:D=!1,variant:E="standard",...F}=c,{badgeContent:G,invisible:H,max:I,displayValue:J}=h({max:z,invisible:y,badgeContent:A,showZero:D}),K=(0,f.A)({anchorOrigin:v(d),color:x,overlap:w,variant:E,badgeContent:A}),L=H||null==G&&"dot"!==E,{color:M=x,overlap:N=w,anchorOrigin:O,variant:P=E}=L?K:c,Q=v(O),R="dot"!==P?J:void 0,S={...c,badgeContent:G,invisible:L,max:I,displayValue:R,showZero:D,anchorOrigin:Q,color:M,overlap:N,variant:P},T=(a=>{let{color:b,anchorOrigin:c,invisible:d,overlap:e,variant:f,classes:h={}}=a,i={root:["root"],badge:["badge",f,d&&"invisible",`anchorOrigin${(0,m.A)(c.vertical)}${(0,m.A)(c.horizontal)}`,`anchorOrigin${(0,m.A)(c.vertical)}${(0,m.A)(c.horizontal)}${(0,m.A)(e)}`,`overlap${(0,m.A)(e)}`,"default"!==b&&`color${(0,m.A)(b)}`]};return(0,g.A)(i,p,h)})(S),U={slots:{root:B?.root??n.Root,badge:B?.badge??n.Badge},slotProps:{root:C?.root??o.root,badge:C?.badge??o.badge}},[V,W]=(0,r.A)("root",{elementType:t,externalForwardedProps:{...U,...F},ownerState:S,className:(0,e.A)(T.root,i),ref:b,additionalProps:{as:k}}),[X,Y]=(0,r.A)("badge",{elementType:u,externalForwardedProps:U,ownerState:S,className:T.badge});return(0,s.jsxs)(V,{...W,children:[q,(0,s.jsx)(X,{...Y,children:R})]})})},61466:(a,b,c)=>{c.d(b,{A:()=>d});let d=c(38301).createContext(void 0)},70011:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M2.01 21 23 12 2.01 3 2 10l15 2-15 2z"}),"Send")},73245:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M12 14c1.66 0 2.99-1.34 2.99-3L15 5c0-1.66-1.34-3-3-3S9 3.34 9 5v6c0 1.66 1.34 3 3 3m5.3-3c0 3-2.54 5.1-5.3 5.1S6.7 14 6.7 11H5c0 3.41 2.72 6.23 6 6.72V21h2v-3.28c3.28-.48 6-3.3 6-6.72z"}),"Mic")},73821:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)([(0,e.jsx)("path",{d:"M19.03 3.56c-1.67-1.39-3.74-2.3-6.03-2.51v2.01c1.73.19 3.31.88 4.61 1.92zM11 3.06V1.05c-2.29.2-4.36 1.12-6.03 2.51l1.42 1.42C7.69 3.94 9.27 3.25 11 3.06M4.98 6.39 3.56 4.97C2.17 6.64 1.26 8.71 1.05 11h2.01c.19-1.73.88-3.31 1.92-4.61M20.94 11h2.01c-.21-2.29-1.12-4.36-2.51-6.03l-1.42 1.42c1.04 1.3 1.73 2.88 1.92 4.61M7 12l3.44 1.56L12 17l1.56-3.44L17 12l-3.44-1.56L12 7l-1.56 3.44z"},"0"),(0,e.jsx)("path",{d:"M12 21c-3.11 0-5.85-1.59-7.46-4H7v-2H1v6h2v-2.7c1.99 2.84 5.27 4.7 9 4.7 4.87 0 9-3.17 10.44-7.56l-1.96-.45C19.25 18.48 15.92 21 12 21"},"1")],"AutoMode")},74419:(a,b,c)=>{c.d(b,{A:()=>H});var d=c(38301),e=c(43249),f=c(2783),g=c(37489),h=c(99515),i=c(11801),j=c(21124);let k=(0,i.A)((0,j.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"}),"RadioButtonUnchecked"),l=(0,i.A)((0,j.jsx)("path",{d:"M8.465 8.465C9.37 7.56 10.62 7 12 7C14.76 7 17 9.24 17 12C17 13.38 16.44 14.63 15.535 15.535C14.63 16.44 13.38 17 12 17C9.24 17 7 14.76 7 12C7 10.62 7.56 9.37 8.465 8.465Z"}),"RadioButtonChecked");var m=c(41126),n=c(18168),o=c(68333);let p=(0,n.Ay)("span",{name:"MuiRadioButtonIcon",shouldForwardProp:m.A})({position:"relative",display:"flex"}),q=(0,n.Ay)(k,{name:"MuiRadioButtonIcon"})({transform:"scale(1)"}),r=(0,n.Ay)(l,{name:"MuiRadioButtonIcon"})((0,o.A)(({theme:a})=>({left:0,position:"absolute",transform:"scale(0)",transition:a.transitions.create("transform",{easing:a.transitions.easing.easeIn,duration:a.transitions.duration.shortest}),variants:[{props:{checked:!0},style:{transform:"scale(1)",transition:a.transitions.create("transform",{easing:a.transitions.easing.easeOut,duration:a.transitions.duration.shortest})}}]}))),s=function(a){let{checked:b=!1,classes:c={},fontSize:d}=a,e={...a,checked:b};return(0,j.jsxs)(p,{className:c.root,ownerState:e,children:[(0,j.jsx)(q,{fontSize:d,className:c.background,ownerState:e}),(0,j.jsx)(r,{fontSize:d,className:c.dot,ownerState:e})]})};var t=c(6638);let u=c(2153).A;var v=c(49628),w=c(61466),x=c(29565),y=c(33105);function z(a){return(0,y.Ay)("MuiRadio",a)}let A=(0,x.A)("MuiRadio",["root","checked","disabled","colorPrimary","colorSecondary","sizeSmall"]);var B=c(54716),C=c(20385),D=c(6636);let E=(0,n.Ay)(h.A,{shouldForwardProp:a=>(0,m.A)(a)||"classes"===a,name:"MuiRadio",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.root,"medium"!==c.size&&b[`size${(0,t.A)(c.size)}`],b[`color${(0,t.A)(c.color)}`]]}})((0,o.A)(({theme:a})=>({color:(a.vars||a).palette.text.secondary,[`&.${A.disabled}`]:{color:(a.vars||a).palette.action.disabled},variants:[{props:{color:"default",disabled:!1,disableRipple:!1},style:{"&: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)}}},...Object.entries(a.palette).filter((0,B.A)()).map(([b])=>({props:{color:b,disabled:!1,disableRipple:!1},style:{"&: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)}}})),...Object.entries(a.palette).filter((0,B.A)()).map(([b])=>({props:{color:b,disabled:!1},style:{[`&.${A.checked}`]:{color:(a.vars||a).palette[b].main}}})),{props:{disableRipple:!1},style:{"&:hover":{"@media (hover: none)":{backgroundColor:"transparent"}}}}]}))),F=(0,j.jsx)(s,{checked:!0}),G=(0,j.jsx)(s,{}),H=d.forwardRef(function(a,b){let c=(0,D.b)({props:a,name:"MuiRadio"}),{checked:g,checkedIcon:h=F,color:i="primary",icon:k=G,name:l,onChange:m,size:n="medium",className:o,disabled:p,disableRipple:q=!1,slots:r={},slotProps:s={},inputProps:x,...y}=c,A=(0,v.A)(),B=p;A&&void 0===B&&(B=A.disabled),B??=!1;let H={...c,disabled:B,disableRipple:q,color:i,size:n},I=(a=>{let{classes:b,color:c,size:d}=a,e={root:["root",`color${(0,t.A)(c)}`,"medium"!==d&&`size${(0,t.A)(d)}`]};return{...b,...(0,f.A)(e,z,b)}})(H),J=d.useContext(w.A),K=g,L=u(m,J&&J.onChange),M=l;if(J){var N,O;void 0===K&&(N=J.value,K="object"==typeof(O=c.value)&&null!==O?N===O:String(N)===String(O)),void 0===M&&(M=J.name)}let P=s.input??x,[Q,R]=(0,C.A)("root",{ref:b,elementType:E,className:(0,e.A)(I.root,o),shouldForwardComponentProp:!0,externalForwardedProps:{slots:r,slotProps:s,...y},getSlotProps:a=>({...a,onChange:(b,...c)=>{a.onChange?.(b,...c),L(b,...c)}}),ownerState:H,additionalProps:{type:"radio",icon:d.cloneElement(k,{fontSize:k.props.fontSize??n}),checkedIcon:d.cloneElement(h,{fontSize:h.props.fontSize??n}),disabled:B,name:M,checked:K,slots:r,slotProps:{input:"function"==typeof P?P(H):P}}});return(0,j.jsx)(Q,{...R,classes:I})})},82543:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M16.59 7.58 10 14.17l-3.59-3.58L5 12l5 5 8-8zM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8"}),"CheckCircleOutline")},84049:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)([(0,e.jsx)("path",{d:"m21.67 18.17-5.3-5.3h-.99l-2.54 2.54v.99l5.3 5.3c.39.39 1.02.39 1.41 0l2.12-2.12c.39-.38.39-1.02 0-1.41"},"0"),(0,e.jsx)("path",{d:"m17.34 10.19 1.41-1.41 2.12 2.12c1.17-1.17 1.17-3.07 0-4.24l-3.54-3.54-1.41 1.41V1.71l-.7-.71-3.54 3.54.71.71h2.83l-1.41 1.41 1.06 1.06-2.89 2.89-4.13-4.13V5.06L4.83 2.04 2 4.87 5.03 7.9h1.41l4.13 4.13-.85.85H7.6l-5.3 5.3c-.39.39-.39 1.02 0 1.41l2.12 2.12c.39.39 1.02.39 1.41 0l5.3-5.3v-2.12l5.15-5.15z"},"1")],"Handyman")},86374:(a,b,c)=>{c.d(b,{A:()=>p});var d=c(38301),e=c(43249),f=c(2783),g=c(73520),h=c(29565),i=c(33105);function j(a){return(0,i.Ay)("MuiRadioGroup",a)}(0,h.A)("MuiRadioGroup",["root","row","error"]);var k=c(26636),l=c(65603),m=c(61466),n=c(70300),o=c(21124);let p=d.forwardRef(function(a,b){let{actions:c,children:h,className:i,defaultValue:p,name:q,onChange:r,value:s,...t}=a,u=d.useRef(null),v=(a=>{let{classes:b,row:c,error:d}=a;return(0,f.A)({root:["root",c&&"row",d&&"error"]},j,b)})(a),[w,x]=(0,l.A)({controlled:s,default:p,name:"RadioGroup"});d.useImperativeHandle(c,()=>({focus:()=>{let a=u.current.querySelector("input:not(:disabled):checked");a||(a=u.current.querySelector("input:not(:disabled)")),a&&a.focus()}}),[]);let y=(0,k.A)(b,u),z=(0,n.A)(q),A=d.useMemo(()=>({name:z,onChange(a){x(a.target.value),r&&r(a,a.target.value)},value:w}),[z,r,x,w]);return(0,o.jsx)(m.A.Provider,{value:A,children:(0,o.jsx)(g.A,{role:"radiogroup",ref:y,className:(0,e.A)(v.root,i),...t,children:h})})})},91353:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M16.01 11H4v2h12.01v3L20 12l-3.99-4z"}),"ArrowRightAlt")},96955:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2m0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2m0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2"}),"MoreVert")}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";exports.id=7147,exports.ids=[7147],exports.modules={31716:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(b,{isRequestAPICallableInsideAfter:function(){return i},throwForSearchParamsAccessInUseCache:function(){return h},throwWithStaticGenerationBailoutError:function(){return f},throwWithStaticGenerationBailoutErrorWithDynamicError:function(){return g}});let d=c(11938),e=c(3295);function f(a,b){throw Object.defineProperty(new d.StaticGenBailoutError(`Route ${a} couldn't be rendered statically because it used ${b}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E576",enumerable:!1,configurable:!0})}function g(a,b){throw Object.defineProperty(new d.StaticGenBailoutError(`Route ${a} with \`dynamic = "error"\` couldn't be rendered statically because it used ${b}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E543",enumerable:!1,configurable:!0})}function h(a,b){let c=Object.defineProperty(Error(`Route ${a.route} used "searchParams" inside "use cache". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await "searchParams" outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E779",enumerable:!1,configurable:!0});throw Error.captureStackTrace(c,b),a.invalidDynamicUsageError??=c,c}function i(){let a=e.afterTaskAsyncStorage.getStore();return(null==a?void 0:a.rootTaskSpawnPhase)==="action"}},40443:(a,b,c)=>{c.d(b,{A:()=>g,Y:()=>f});var d=c(29565),e=c(33105);function f(a){return(0,e.Ay)("MuiListItemButton",a)}let g=(0,d.A)("MuiListItemButton",["root","focusVisible","dense","alignItemsFlexStart","disabled","divider","gutters","selected"])},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})]})})},75983:(a,b,c)=>{c.d(b,{A:()=>s});var d=c(38301),e=c(43249),f=c(2783),g=c(37489),h=c(18168),i=c(68333),j=c(6636),k=c(41126),l=c(14328),m=c(14758),n=c(26636),o=c(55470),p=c(40443),q=c(21124);let r=(0,h.Ay)(l.A,{shouldForwardProp:a=>(0,k.A)(a)||"classes"===a,name:"MuiListItemButton",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.root,c.dense&&b.dense,"flex-start"===c.alignItems&&b.alignItemsFlexStart,c.divider&&b.divider,!c.disableGutters&&b.gutters]}})((0,i.A)(({theme:a})=>({display:"flex",flexGrow:1,justifyContent:"flex-start",alignItems:"center",position:"relative",textDecoration:"none",minWidth:0,boxSizing:"border-box",textAlign:"left",paddingTop:8,paddingBottom:8,transition:a.transitions.create("background-color",{duration:a.transitions.duration.shortest}),"&:hover":{textDecoration:"none",backgroundColor:(a.vars||a).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}},[`&.${p.A.selected}`]:{backgroundColor:a.vars?`rgba(${a.vars.palette.primary.mainChannel} / ${a.vars.palette.action.selectedOpacity})`:(0,g.X4)(a.palette.primary.main,a.palette.action.selectedOpacity),[`&.${p.A.focusVisible}`]:{backgroundColor:a.vars?`rgba(${a.vars.palette.primary.mainChannel} / calc(${a.vars.palette.action.selectedOpacity} + ${a.vars.palette.action.focusOpacity}))`:(0,g.X4)(a.palette.primary.main,a.palette.action.selectedOpacity+a.palette.action.focusOpacity)}},[`&.${p.A.selected}:hover`]:{backgroundColor:a.vars?`rgba(${a.vars.palette.primary.mainChannel} / calc(${a.vars.palette.action.selectedOpacity} + ${a.vars.palette.action.hoverOpacity}))`:(0,g.X4)(a.palette.primary.main,a.palette.action.selectedOpacity+a.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:a.vars?`rgba(${a.vars.palette.primary.mainChannel} / ${a.vars.palette.action.selectedOpacity})`:(0,g.X4)(a.palette.primary.main,a.palette.action.selectedOpacity)}},[`&.${p.A.focusVisible}`]:{backgroundColor:(a.vars||a).palette.action.focus},[`&.${p.A.disabled}`]:{opacity:(a.vars||a).palette.action.disabledOpacity},variants:[{props:({ownerState:a})=>a.divider,style:{borderBottom:`1px solid ${(a.vars||a).palette.divider}`,backgroundClip:"padding-box"}},{props:{alignItems:"flex-start"},style:{alignItems:"flex-start"}},{props:({ownerState:a})=>!a.disableGutters,style:{paddingLeft:16,paddingRight:16}},{props:({ownerState:a})=>a.dense,style:{paddingTop:4,paddingBottom:4}}]}))),s=d.forwardRef(function(a,b){let c=(0,j.b)({props:a,name:"MuiListItemButton"}),{alignItems:g="center",autoFocus:h=!1,component:i="div",children:k,dense:l=!1,disableGutters:s=!1,divider:t=!1,focusVisibleClassName:u,selected:v=!1,className:w,...x}=c,y=d.useContext(o.A),z=d.useMemo(()=>({dense:l||y.dense||!1,alignItems:g,disableGutters:s}),[g,y.dense,l,s]),A=d.useRef(null);(0,m.A)(()=>{h&&A.current&&A.current.focus()},[h]);let B={...c,alignItems:g,dense:z.dense,disableGutters:s,divider:t,selected:v},C=(a=>{let{alignItems:b,classes:c,dense:d,disabled:e,disableGutters:g,divider:h,selected:i}=a,j=(0,f.A)({root:["root",d&&"dense",!g&&"gutters",h&&"divider",e&&"disabled","flex-start"===b&&"alignItemsFlexStart",i&&"selected"]},p.Y,c);return{...c,...j}})(B),D=(0,n.A)(A,b);return(0,q.jsx)(o.A.Provider,{value:z,children:(0,q.jsx)(r,{ref:D,href:x.href||x.to,component:(x.href||x.to)&&"div"===i?"button":i,focusVisibleClassName:(0,e.A)(C.focusVisible,u),ownerState:B,className:(0,e.A)(C.root,w),...x,classes:C,children:k})})})},84226:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(b,{describeHasCheckingStringProperty:function(){return e},describeStringPropertyAccess:function(){return d},wellKnownProperties:function(){return f}});let c=/^[A-Za-z_$][A-Za-z0-9_$]*$/;function d(a,b){return c.test(b)?"`"+a+"."+b+"`":"`"+a+"["+JSON.stringify(b)+"]`"}function e(a,b){let c=JSON.stringify(b);return"`Reflect.has("+a+", "+c+")`, `"+c+" in "+a+"`, or similar"}let f=new Set(["hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toString","valueOf","toLocaleString","then","catch","finally","status","displayName","_debugInfo","toJSON","$$typeof","__esModule"])}};
|