From 2b8f7f90a0660c1d4fa555c548fac53cd42735e7 Mon Sep 17 00:00:00 2001 From: Janardan Singh Kavia Date: Thu, 18 Jun 2026 13:22:50 -0400 Subject: [PATCH 1/3] fix: Raise on an undecryptable secret at the variable-resolution (#13681) fix: Raise on an undecryptable secret at the variable-resolution boundary Co-authored-by: Janardan S Kavia --- .secrets.baseline | 2730 ++++++++++++----- .../langflow/services/variable/service.py | 10 +- .../unit/services/variable/test_service.py | 39 + 3 files changed, 1935 insertions(+), 844 deletions(-) diff --git a/.secrets.baseline b/.secrets.baseline index 1a0a677b07..82314c7e59 100644 --- a/.secrets.baseline +++ b/.secrets.baseline @@ -127,6 +127,40 @@ } ], "results": { + ".agents/skills/frontend-query-mutation/references/query-patterns.md": [ + { + "type": "Secret Keyword", + "filename": ".agents/skills/frontend-query-mutation/references/query-patterns.md", + "hashed_secret": "665b1e3851eefefa3fb878654292f16597d25155", + "is_verified": false, + "line_number": 308 + } + ], + ".agents/skills/frontend-testing/references/common-patterns.md": [ + { + "type": "Secret Keyword", + "filename": ".agents/skills/frontend-testing/references/common-patterns.md", + "hashed_secret": "cbfdac6008f9cab4083784cbd1874f76618d2a97", + "is_verified": false, + "line_number": 147 + } + ], + ".github/workflows/migration-validation.yml": [ + { + "type": "Secret Keyword", + "filename": ".github/workflows/migration-validation.yml", + "hashed_secret": "e80c4f90316c87b6b24d03890493c8d1c7c1c99d", + "is_verified": false, + "line_number": 22 + }, + { + "type": "Basic Auth Credentials", + "filename": ".github/workflows/migration-validation.yml", + "hashed_secret": "e80c4f90316c87b6b24d03890493c8d1c7c1c99d", + "is_verified": false, + "line_number": 53 + } + ], ".github/workflows/nightly_build.yml": [ { "type": "Secret Keyword", @@ -157,22 +191,13 @@ "is_secret": false } ], - "SECURITY.md": [ - { - "type": "Basic Auth Credentials", - "filename": "SECURITY.md", - "hashed_secret": "d67b0bfe20b56dac12b19258dcfe74b0998d8eeb", - "is_verified": false, - "line_number": 153, - "is_secret": false - }, + ".github/workflows/stress-tests.yml": [ { "type": "Secret Keyword", - "filename": "SECURITY.md", - "hashed_secret": "e57eb248dee276a7a8931d338105a49725dd6ec7", + "filename": ".github/workflows/stress-tests.yml", + "hashed_secret": "e80c4f90316c87b6b24d03890493c8d1c7c1c99d", "is_verified": false, - "line_number": 154, - "is_secret": false + "line_number": 23 } ], "deploy/.env.example": [ @@ -215,70 +240,130 @@ "is_secret": false } ], - "docs/docs/API-Reference/api-flows-run.mdx": [ + "docs/agents/TESTING.md": [ { "type": "Secret Keyword", - "filename": "docs/docs/API-Reference/api-flows-run.mdx", - "hashed_secret": "ec3810e10fb78db55ce38b9c18d1c3eb1db739e0", + "filename": "docs/agents/TESTING.md", + "hashed_secret": "62cdb7020ff920e5aa642c3d4066950dd1f01f4d", "is_verified": false, - "line_number": 433, - "is_secret": false + "line_number": 22 } ], - "docs/docs/API-Reference/api-monitor.mdx": [ + "docs/docs/API-Reference/curl-examples/api-monitor/example-request.sh": [ { "type": "Secret Keyword", - "filename": "docs/docs/API-Reference/api-monitor.mdx", + "filename": "docs/docs/API-Reference/curl-examples/api-monitor/example-request.sh", "hashed_secret": "d622736b5a599d5f9798164134b84e1bd96c48fe", "is_verified": false, - "line_number": 704, - "is_secret": false + "line_number": 2 } ], - "docs/docs/API-Reference/api-openai-responses.mdx": [ + "docs/docs/API-Reference/curl-examples/api-users/add-user.sh": [ { "type": "Secret Keyword", - "filename": "docs/docs/API-Reference/api-openai-responses.mdx", - "hashed_secret": "f8f0b44da6dd51f3e5db5129c12a1b95ec71c2d9", - "is_verified": false, - "line_number": 45, - "is_secret": false - } - ], - "docs/docs/API-Reference/api-reference-api-examples.mdx": [ - { - "type": "Secret Keyword", - "filename": "docs/docs/API-Reference/api-reference-api-examples.mdx", - "hashed_secret": "7d268ec0fc8a845ff8e1b1af5317ee5dc164808b", - "is_verified": false, - "line_number": 94, - "is_secret": false - }, - { - "type": "Secret Keyword", - "filename": "docs/docs/API-Reference/api-reference-api-examples.mdx", - "hashed_secret": "ec3810e10fb78db55ce38b9c18d1c3eb1db739e0", - "is_verified": false, - "line_number": 98, - "is_secret": false - } - ], - "docs/docs/API-Reference/api-users.mdx": [ - { - "type": "Secret Keyword", - "filename": "docs/docs/API-Reference/api-users.mdx", + "filename": "docs/docs/API-Reference/curl-examples/api-users/add-user.sh", "hashed_secret": "44cdfc3615970ada14420caaaa5c5745fca06002", "is_verified": false, - "line_number": 21, - "is_secret": false - }, + "line_number": 7 + } + ], + "docs/docs/API-Reference/curl-examples/api-users/reset-password.sh": [ { "type": "Secret Keyword", - "filename": "docs/docs/API-Reference/api-users.mdx", + "filename": "docs/docs/API-Reference/curl-examples/api-users/reset-password.sh", "hashed_secret": "8f7d56d9f06f8f052a331fedbe14548f0a3305a3", "is_verified": false, - "line_number": 213, - "is_secret": false + "line_number": 6 + } + ], + "docs/docs/API-Reference/javascript-examples/api-flows-run/pass-global-variables-in-request-headers.js": [ + { + "type": "Secret Keyword", + "filename": "docs/docs/API-Reference/javascript-examples/api-flows-run/pass-global-variables-in-request-headers.js", + "hashed_secret": "ec3810e10fb78db55ce38b9c18d1c3eb1db739e0", + "is_verified": false, + "line_number": 8 + } + ], + "docs/docs/API-Reference/javascript-examples/api-openai-responses/additional-configuration-for-openai-client-libraries.ts": [ + { + "type": "Secret Keyword", + "filename": "docs/docs/API-Reference/javascript-examples/api-openai-responses/additional-configuration-for-openai-client-libraries.ts", + "hashed_secret": "f8f0b44da6dd51f3e5db5129c12a1b95ec71c2d9", + "is_verified": false, + "line_number": 8 + } + ], + "docs/docs/API-Reference/javascript-examples/api-openai-responses/pass-global-variables-to-your-flows-in-headers.js": [ + { + "type": "Secret Keyword", + "filename": "docs/docs/API-Reference/javascript-examples/api-openai-responses/pass-global-variables-to-your-flows-in-headers.js", + "hashed_secret": "ec3810e10fb78db55ce38b9c18d1c3eb1db739e0", + "is_verified": false, + "line_number": 8 + } + ], + "docs/docs/API-Reference/javascript-examples/api-users/add-user.js": [ + { + "type": "Secret Keyword", + "filename": "docs/docs/API-Reference/javascript-examples/api-users/add-user.js", + "hashed_secret": "44cdfc3615970ada14420caaaa5c5745fca06002", + "is_verified": false, + "line_number": 11 + } + ], + "docs/docs/API-Reference/javascript-examples/api-users/reset-password.js": [ + { + "type": "Secret Keyword", + "filename": "docs/docs/API-Reference/javascript-examples/api-users/reset-password.js", + "hashed_secret": "8f7d56d9f06f8f052a331fedbe14548f0a3305a3", + "is_verified": false, + "line_number": 10 + } + ], + "docs/docs/API-Reference/python-examples/api-openai-responses/additional-configuration-for-openai-client-libraries.py": [ + { + "type": "Secret Keyword", + "filename": "docs/docs/API-Reference/python-examples/api-openai-responses/additional-configuration-for-openai-client-libraries.py", + "hashed_secret": "f8f0b44da6dd51f3e5db5129c12a1b95ec71c2d9", + "is_verified": false, + "line_number": 12 + } + ], + "docs/docs/API-Reference/python-examples/api-openai-responses/pass-global-variables-to-your-flows-in-headers.py": [ + { + "type": "Secret Keyword", + "filename": "docs/docs/API-Reference/python-examples/api-openai-responses/pass-global-variables-to-your-flows-in-headers.py", + "hashed_secret": "ec3810e10fb78db55ce38b9c18d1c3eb1db739e0", + "is_verified": false, + "line_number": 10 + } + ], + "docs/docs/API-Reference/python-examples/api-users/add-user.py": [ + { + "type": "Secret Keyword", + "filename": "docs/docs/API-Reference/python-examples/api-users/add-user.py", + "hashed_secret": "44cdfc3615970ada14420caaaa5c5745fca06002", + "is_verified": false, + "line_number": 13 + } + ], + "docs/docs/API-Reference/python-examples/api-users/delete-user.py": [ + { + "type": "Secret Keyword", + "filename": "docs/docs/API-Reference/python-examples/api-users/delete-user.py", + "hashed_secret": "44cdfc3615970ada14420caaaa5c5745fca06002", + "is_verified": false, + "line_number": 14 + } + ], + "docs/docs/API-Reference/python-examples/api-users/reset-password.py": [ + { + "type": "Secret Keyword", + "filename": "docs/docs/API-Reference/python-examples/api-users/reset-password.py", + "hashed_secret": "d2dda7662b3f7d6021c82324fd9a5eb04da2c252", + "is_verified": false, + "line_number": 15 } ], "docs/docs/API-Reference/typescript-client.mdx": [ @@ -297,7 +382,7 @@ "filename": "docs/docs/Agents/mcp-client.mdx", "hashed_secret": "9111962ab5f488016ff73a5139d30dd69b2db6de", "is_verified": false, - "line_number": 167, + "line_number": 172, "is_secret": false } ], @@ -307,8 +392,15 @@ "filename": "docs/docs/Deployment/deployment-docker.mdx", "hashed_secret": "91dfd9ddb4198affc5c194cd8ce6d338fde470e2", "is_verified": false, - "line_number": 83, + "line_number": 76, "is_secret": false + }, + { + "type": "Basic Auth Credentials", + "filename": "docs/docs/Deployment/deployment-docker.mdx", + "hashed_secret": "e80c4f90316c87b6b24d03890493c8d1c7c1c99d", + "is_verified": false, + "line_number": 285 } ], "docs/docs/Deployment/deployment-kubernetes-dev.mdx": [ @@ -321,6 +413,15 @@ "is_secret": false } ], + "docs/docs/Deployment/deployment-multi-worker.mdx": [ + { + "type": "Basic Auth Credentials", + "filename": "docs/docs/Deployment/deployment-multi-worker.mdx", + "hashed_secret": "e80c4f90316c87b6b24d03890493c8d1c7c1c99d", + "is_verified": false, + "line_number": 74 + } + ], "docs/docs/Deployment/deployment-public-server.mdx": [ { "type": "Base64 High Entropy String", @@ -435,7 +536,7 @@ "filename": "docs/docs/Develop/integrations-langwatch.mdx", "hashed_secret": "28676f3e163fda95ab69f9f29c3948009a04e0e0", "is_verified": false, - "line_number": 17, + "line_number": 23, "is_secret": false } ], @@ -481,7 +582,7 @@ "filename": "docs/docs/Develop/memory.mdx", "hashed_secret": "5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8", "is_verified": false, - "line_number": 76, + "line_number": 100, "is_secret": false } ], @@ -513,13 +614,22 @@ "is_secret": false } ], + "docs/docs/Support/troubleshooting.mdx": [ + { + "type": "Basic Auth Credentials", + "filename": "docs/docs/Support/troubleshooting.mdx", + "hashed_secret": "5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8", + "is_verified": false, + "line_number": 689 + } + ], "docs/docs/Tutorials/agent.mdx": [ { "type": "Secret Keyword", "filename": "docs/docs/Tutorials/agent.mdx", "hashed_secret": "e42fd8b9ad15d8fa5f4718cad7cf19b522807996", "is_verified": false, - "line_number": 82, + "line_number": 83, "is_secret": false } ], @@ -529,7 +639,7 @@ "filename": "docs/docusaurus.config.js", "hashed_secret": "2dc79dceb6a4e48f38ef47d8dcabbbfaa441218f", "is_verified": false, - "line_number": 540, + "line_number": 588, "is_secret": false }, { @@ -537,7 +647,7 @@ "filename": "docs/docusaurus.config.js", "hashed_secret": "2dc79dceb6a4e48f38ef47d8dcabbbfaa441218f", "is_verified": false, - "line_number": 540, + "line_number": 588, "is_secret": false } ], @@ -551,6 +661,357 @@ "is_secret": false } ], + "docs/versioned_docs/version-1.10.0/API-Reference/curl-examples/api-monitor/example-request.sh": [ + { + "type": "Secret Keyword", + "filename": "docs/versioned_docs/version-1.10.0/API-Reference/curl-examples/api-monitor/example-request.sh", + "hashed_secret": "d622736b5a599d5f9798164134b84e1bd96c48fe", + "is_verified": false, + "line_number": 2 + } + ], + "docs/versioned_docs/version-1.10.0/API-Reference/curl-examples/api-users/add-user.sh": [ + { + "type": "Secret Keyword", + "filename": "docs/versioned_docs/version-1.10.0/API-Reference/curl-examples/api-users/add-user.sh", + "hashed_secret": "44cdfc3615970ada14420caaaa5c5745fca06002", + "is_verified": false, + "line_number": 7 + } + ], + "docs/versioned_docs/version-1.10.0/API-Reference/curl-examples/api-users/reset-password.sh": [ + { + "type": "Secret Keyword", + "filename": "docs/versioned_docs/version-1.10.0/API-Reference/curl-examples/api-users/reset-password.sh", + "hashed_secret": "8f7d56d9f06f8f052a331fedbe14548f0a3305a3", + "is_verified": false, + "line_number": 6 + } + ], + "docs/versioned_docs/version-1.10.0/API-Reference/javascript-examples/api-flows-run/pass-global-variables-in-request-headers.js": [ + { + "type": "Secret Keyword", + "filename": "docs/versioned_docs/version-1.10.0/API-Reference/javascript-examples/api-flows-run/pass-global-variables-in-request-headers.js", + "hashed_secret": "ec3810e10fb78db55ce38b9c18d1c3eb1db739e0", + "is_verified": false, + "line_number": 8 + } + ], + "docs/versioned_docs/version-1.10.0/API-Reference/javascript-examples/api-openai-responses/additional-configuration-for-openai-client-libraries.ts": [ + { + "type": "Secret Keyword", + "filename": "docs/versioned_docs/version-1.10.0/API-Reference/javascript-examples/api-openai-responses/additional-configuration-for-openai-client-libraries.ts", + "hashed_secret": "f8f0b44da6dd51f3e5db5129c12a1b95ec71c2d9", + "is_verified": false, + "line_number": 8 + } + ], + "docs/versioned_docs/version-1.10.0/API-Reference/javascript-examples/api-openai-responses/pass-global-variables-to-your-flows-in-headers.js": [ + { + "type": "Secret Keyword", + "filename": "docs/versioned_docs/version-1.10.0/API-Reference/javascript-examples/api-openai-responses/pass-global-variables-to-your-flows-in-headers.js", + "hashed_secret": "ec3810e10fb78db55ce38b9c18d1c3eb1db739e0", + "is_verified": false, + "line_number": 8 + } + ], + "docs/versioned_docs/version-1.10.0/API-Reference/javascript-examples/api-users/add-user.js": [ + { + "type": "Secret Keyword", + "filename": "docs/versioned_docs/version-1.10.0/API-Reference/javascript-examples/api-users/add-user.js", + "hashed_secret": "44cdfc3615970ada14420caaaa5c5745fca06002", + "is_verified": false, + "line_number": 11 + } + ], + "docs/versioned_docs/version-1.10.0/API-Reference/javascript-examples/api-users/reset-password.js": [ + { + "type": "Secret Keyword", + "filename": "docs/versioned_docs/version-1.10.0/API-Reference/javascript-examples/api-users/reset-password.js", + "hashed_secret": "8f7d56d9f06f8f052a331fedbe14548f0a3305a3", + "is_verified": false, + "line_number": 10 + } + ], + "docs/versioned_docs/version-1.10.0/API-Reference/python-examples/api-openai-responses/additional-configuration-for-openai-client-libraries.py": [ + { + "type": "Secret Keyword", + "filename": "docs/versioned_docs/version-1.10.0/API-Reference/python-examples/api-openai-responses/additional-configuration-for-openai-client-libraries.py", + "hashed_secret": "f8f0b44da6dd51f3e5db5129c12a1b95ec71c2d9", + "is_verified": false, + "line_number": 12 + } + ], + "docs/versioned_docs/version-1.10.0/API-Reference/python-examples/api-openai-responses/pass-global-variables-to-your-flows-in-headers.py": [ + { + "type": "Secret Keyword", + "filename": "docs/versioned_docs/version-1.10.0/API-Reference/python-examples/api-openai-responses/pass-global-variables-to-your-flows-in-headers.py", + "hashed_secret": "ec3810e10fb78db55ce38b9c18d1c3eb1db739e0", + "is_verified": false, + "line_number": 10 + } + ], + "docs/versioned_docs/version-1.10.0/API-Reference/python-examples/api-users/add-user.py": [ + { + "type": "Secret Keyword", + "filename": "docs/versioned_docs/version-1.10.0/API-Reference/python-examples/api-users/add-user.py", + "hashed_secret": "44cdfc3615970ada14420caaaa5c5745fca06002", + "is_verified": false, + "line_number": 13 + } + ], + "docs/versioned_docs/version-1.10.0/API-Reference/python-examples/api-users/delete-user.py": [ + { + "type": "Secret Keyword", + "filename": "docs/versioned_docs/version-1.10.0/API-Reference/python-examples/api-users/delete-user.py", + "hashed_secret": "44cdfc3615970ada14420caaaa5c5745fca06002", + "is_verified": false, + "line_number": 14 + } + ], + "docs/versioned_docs/version-1.10.0/API-Reference/python-examples/api-users/reset-password.py": [ + { + "type": "Secret Keyword", + "filename": "docs/versioned_docs/version-1.10.0/API-Reference/python-examples/api-users/reset-password.py", + "hashed_secret": "d2dda7662b3f7d6021c82324fd9a5eb04da2c252", + "is_verified": false, + "line_number": 15 + } + ], + "docs/versioned_docs/version-1.10.0/API-Reference/typescript-client.mdx": [ + { + "type": "Secret Keyword", + "filename": "docs/versioned_docs/version-1.10.0/API-Reference/typescript-client.mdx", + "hashed_secret": "159500287c06851df741128ec4b073ea394414b6", + "is_verified": false, + "line_number": 55 + } + ], + "docs/versioned_docs/version-1.10.0/Agents/mcp-client.mdx": [ + { + "type": "Secret Keyword", + "filename": "docs/versioned_docs/version-1.10.0/Agents/mcp-client.mdx", + "hashed_secret": "9111962ab5f488016ff73a5139d30dd69b2db6de", + "is_verified": false, + "line_number": 172 + } + ], + "docs/versioned_docs/version-1.10.0/Deployment/deployment-docker.mdx": [ + { + "type": "Basic Auth Credentials", + "filename": "docs/versioned_docs/version-1.10.0/Deployment/deployment-docker.mdx", + "hashed_secret": "91dfd9ddb4198affc5c194cd8ce6d338fde470e2", + "is_verified": false, + "line_number": 83 + } + ], + "docs/versioned_docs/version-1.10.0/Deployment/deployment-kubernetes-dev.mdx": [ + { + "type": "Secret Keyword", + "filename": "docs/versioned_docs/version-1.10.0/Deployment/deployment-kubernetes-dev.mdx", + "hashed_secret": "0324bd7e241b5b7c50b91d8a6036f8134bafb078", + "is_verified": false, + "line_number": 115 + } + ], + "docs/versioned_docs/version-1.10.0/Deployment/deployment-multi-worker.mdx": [ + { + "type": "Basic Auth Credentials", + "filename": "docs/versioned_docs/version-1.10.0/Deployment/deployment-multi-worker.mdx", + "hashed_secret": "e80c4f90316c87b6b24d03890493c8d1c7c1c99d", + "is_verified": false, + "line_number": 74 + } + ], + "docs/versioned_docs/version-1.10.0/Deployment/deployment-public-server.mdx": [ + { + "type": "Base64 High Entropy String", + "filename": "docs/versioned_docs/version-1.10.0/Deployment/deployment-public-server.mdx", + "hashed_secret": "991dcae394b42727eca3fc81bf221cecb92370e5", + "is_verified": false, + "line_number": 71 + } + ], + "docs/versioned_docs/version-1.10.0/Develop/configuration-custom-database.mdx": [ + { + "type": "Basic Auth Credentials", + "filename": "docs/versioned_docs/version-1.10.0/Develop/configuration-custom-database.mdx", + "hashed_secret": "5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8", + "is_verified": false, + "line_number": 22 + } + ], + "docs/versioned_docs/version-1.10.0/Develop/enterprise-database-guide.mdx": [ + { + "type": "Basic Auth Credentials", + "filename": "docs/versioned_docs/version-1.10.0/Develop/enterprise-database-guide.mdx", + "hashed_secret": "5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8", + "is_verified": false, + "line_number": 30 + }, + { + "type": "Basic Auth Credentials", + "filename": "docs/versioned_docs/version-1.10.0/Develop/enterprise-database-guide.mdx", + "hashed_secret": "ea0c04513c32717f3a09ff7b1fa882c4d8424b2a", + "is_verified": false, + "line_number": 30 + }, + { + "type": "Basic Auth Credentials", + "filename": "docs/versioned_docs/version-1.10.0/Develop/enterprise-database-guide.mdx", + "hashed_secret": "e80c4f90316c87b6b24d03890493c8d1c7c1c99d", + "is_verified": false, + "line_number": 68 + } + ], + "docs/versioned_docs/version-1.10.0/Develop/environment-variables.mdx": [ + { + "type": "Basic Auth Credentials", + "filename": "docs/versioned_docs/version-1.10.0/Develop/environment-variables.mdx", + "hashed_secret": "5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8", + "is_verified": false, + "line_number": 97 + }, + { + "type": "Base64 High Entropy String", + "filename": "docs/versioned_docs/version-1.10.0/Develop/environment-variables.mdx", + "hashed_secret": "dacd53eb505b8486197552a888eef99192ffd390", + "is_verified": false, + "line_number": 219 + }, + { + "type": "Secret Keyword", + "filename": "docs/versioned_docs/version-1.10.0/Develop/environment-variables.mdx", + "hashed_secret": "5ffe533b830f08a0326348a9160afafc8ada44db", + "is_verified": false, + "line_number": 289 + }, + { + "type": "Secret Keyword", + "filename": "docs/versioned_docs/version-1.10.0/Develop/environment-variables.mdx", + "hashed_secret": "2d301f84472a0bacb783628ee7badae5566c0b4b", + "is_verified": false, + "line_number": 291 + }, + { + "type": "Secret Keyword", + "filename": "docs/versioned_docs/version-1.10.0/Develop/environment-variables.mdx", + "hashed_secret": "74913f5cd5f61ec0bcfdb775414c2fb3d161b620", + "is_verified": false, + "line_number": 294 + } + ], + "docs/versioned_docs/version-1.10.0/Develop/integrations-langfuse.mdx": [ + { + "type": "Basic Auth Credentials", + "filename": "docs/versioned_docs/version-1.10.0/Develop/integrations-langfuse.mdx", + "hashed_secret": "e80c4f90316c87b6b24d03890493c8d1c7c1c99d", + "is_verified": false, + "line_number": 100 + } + ], + "docs/versioned_docs/version-1.10.0/Develop/integrations-langsmith.mdx": [ + { + "type": "Secret Keyword", + "filename": "docs/versioned_docs/version-1.10.0/Develop/integrations-langsmith.mdx", + "hashed_secret": "6a0ece37dcf14c4acd0710a1a54bfbdcc7bc55fb", + "is_verified": false, + "line_number": 21 + } + ], + "docs/versioned_docs/version-1.10.0/Develop/integrations-langwatch.mdx": [ + { + "type": "Secret Keyword", + "filename": "docs/versioned_docs/version-1.10.0/Develop/integrations-langwatch.mdx", + "hashed_secret": "28676f3e163fda95ab69f9f29c3948009a04e0e0", + "is_verified": false, + "line_number": 23 + } + ], + "docs/versioned_docs/version-1.10.0/Develop/integrations-openlayer.mdx": [ + { + "type": "Secret Keyword", + "filename": "docs/versioned_docs/version-1.10.0/Develop/integrations-openlayer.mdx", + "hashed_secret": "1e3667aaaaa887721550cf5cc8a0c5c5760810ed", + "is_verified": false, + "line_number": 39 + } + ], + "docs/versioned_docs/version-1.10.0/Develop/jwt-authentication.mdx": [ + { + "type": "JSON Web Token", + "filename": "docs/versioned_docs/version-1.10.0/Develop/jwt-authentication.mdx", + "hashed_secret": "d6b66ddd9ea7dbe760114bfe9a97352a5e139134", + "is_verified": false, + "line_number": 24 + }, + { + "type": "Secret Keyword", + "filename": "docs/versioned_docs/version-1.10.0/Develop/jwt-authentication.mdx", + "hashed_secret": "c64762e07c71726176ac412099a50ae51e103275", + "is_verified": false, + "line_number": 81 + }, + { + "type": "Private Key", + "filename": "docs/versioned_docs/version-1.10.0/Develop/jwt-authentication.mdx", + "hashed_secret": "1348b145fa1a555461c1b790a2f66614781091e9", + "is_verified": false, + "line_number": 102 + } + ], + "docs/versioned_docs/version-1.10.0/Develop/memory.mdx": [ + { + "type": "Basic Auth Credentials", + "filename": "docs/versioned_docs/version-1.10.0/Develop/memory.mdx", + "hashed_secret": "5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8", + "is_verified": false, + "line_number": 100 + } + ], + "docs/versioned_docs/version-1.10.0/Flows/concepts-publish.mdx": [ + { + "type": "Secret Keyword", + "filename": "docs/versioned_docs/version-1.10.0/Flows/concepts-publish.mdx", + "hashed_secret": "7d268ec0fc8a845ff8e1b1af5317ee5dc164808b", + "is_verified": false, + "line_number": 60 + } + ], + "docs/versioned_docs/version-1.10.0/Get-Started/get-started-quickstart.mdx": [ + { + "type": "Secret Keyword", + "filename": "docs/versioned_docs/version-1.10.0/Get-Started/get-started-quickstart.mdx", + "hashed_secret": "7d268ec0fc8a845ff8e1b1af5317ee5dc164808b", + "is_verified": false, + "line_number": 35 + }, + { + "type": "Secret Keyword", + "filename": "docs/versioned_docs/version-1.10.0/Get-Started/get-started-quickstart.mdx", + "hashed_secret": "f8ca0d7266886f4b5be9adddc9b66017b3bf1a4b", + "is_verified": false, + "line_number": 560 + } + ], + "docs/versioned_docs/version-1.10.0/Support/troubleshooting.mdx": [ + { + "type": "Basic Auth Credentials", + "filename": "docs/versioned_docs/version-1.10.0/Support/troubleshooting.mdx", + "hashed_secret": "5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8", + "is_verified": false, + "line_number": 689 + } + ], + "docs/versioned_docs/version-1.10.0/Tutorials/agent.mdx": [ + { + "type": "Secret Keyword", + "filename": "docs/versioned_docs/version-1.10.0/Tutorials/agent.mdx", + "hashed_secret": "e42fd8b9ad15d8fa5f4718cad7cf19b522807996", + "is_verified": false, + "line_number": 83 + } + ], "docs/versioned_docs/version-1.8.0/API-Reference/api-flows-run.mdx": [ { "type": "Secret Keyword", @@ -1159,16 +1620,6 @@ "line_number": 82 } ], - "scripts/aws/lib/construct/db.ts": [ - { - "type": "Secret Keyword", - "filename": "scripts/aws/lib/construct/db.ts", - "hashed_secret": "b2f2354186676ab3ecbeeb978199cbffb32eb6f9", - "is_verified": false, - "line_number": 25, - "is_secret": false - } - ], "src/backend/base/langflow/agentic/flows/LangflowAssistant.json": [ { "type": "Secret Keyword", @@ -1263,14 +1714,55 @@ "is_secret": false } ], - "src/backend/base/langflow/agentic/flows/langflow_assistant.py": [ + "src/backend/base/langflow/agentic/flows/TranslationFlow.json": [ + { + "type": "Hex High Entropy String", + "filename": "src/backend/base/langflow/agentic/flows/TranslationFlow.json", + "hashed_secret": "54ed260e3bc31bc77ee06754dff850981d39a66c", + "is_verified": false, + "line_number": 121 + }, + { + "type": "Hex High Entropy String", + "filename": "src/backend/base/langflow/agentic/flows/TranslationFlow.json", + "hashed_secret": "35be14614e83fe56d9b2ca1c0e2c2a74890b6889", + "is_verified": false, + "line_number": 650 + }, + { + "type": "Hex High Entropy String", + "filename": "src/backend/base/langflow/agentic/flows/TranslationFlow.json", + "hashed_secret": "2317af15ade380e78be36f9ffdc6415d596a8715", + "is_verified": false, + "line_number": 931 + }, { "type": "Secret Keyword", - "filename": "src/backend/base/langflow/agentic/flows/langflow_assistant.py", + "filename": "src/backend/base/langflow/agentic/flows/TranslationFlow.json", "hashed_secret": "665b1e3851eefefa3fb878654292f16597d25155", "is_verified": false, - "line_number": 123, - "is_secret": false + "line_number": 1122 + }, + { + "type": "Secret Keyword", + "filename": "src/backend/base/langflow/agentic/flows/TranslationFlow.json", + "hashed_secret": "3f2df46921dd8e2c36e2ce85238705ac0774c74a", + "is_verified": false, + "line_number": 1254 + }, + { + "type": "Secret Keyword", + "filename": "src/backend/base/langflow/agentic/flows/TranslationFlow.json", + "hashed_secret": "d3d6fe3f7d33d0f4aa28c49544a865982a48a00a", + "is_verified": false, + "line_number": 1314 + }, + { + "type": "Secret Keyword", + "filename": "src/backend/base/langflow/agentic/flows/TranslationFlow.json", + "hashed_secret": "d4c3d66fd0c38547a3c7a4c6bdc29c36911bc030", + "is_verified": false, + "line_number": 1379 } ], "src/backend/base/langflow/alembic/versions/006b3990db50_add_unique_constraints.py": [ @@ -1968,17 +2460,24 @@ "filename": "src/backend/base/langflow/initial_setup/starter_projects/Blog Writer.json", "hashed_secret": "2317af15ade380e78be36f9ffdc6415d596a8715", "is_verified": false, - "line_number": 1266, + "line_number": 1283, "is_secret": false } ], "src/backend/base/langflow/initial_setup/starter_projects/Custom Component Generator.json": [ + { + "type": "Hex High Entropy String", + "filename": "src/backend/base/langflow/initial_setup/starter_projects/Custom Component Generator.json", + "hashed_secret": "a121a58418212de709f6fdb31f0e7153c074fa98", + "is_verified": false, + "line_number": 247 + }, { "type": "Hex High Entropy String", "filename": "src/backend/base/langflow/initial_setup/starter_projects/Custom Component Generator.json", "hashed_secret": "54ed260e3bc31bc77ee06754dff850981d39a66c", "is_verified": false, - "line_number": 2117, + "line_number": 2168, "is_secret": false }, { @@ -1986,14 +2485,14 @@ "filename": "src/backend/base/langflow/initial_setup/starter_projects/Custom Component Generator.json", "hashed_secret": "d6e6d7b4b115cd3b9d172623199f8c403055fecc", "is_verified": false, - "line_number": 2395 + "line_number": 2446 }, { "type": "Hex High Entropy String", "filename": "src/backend/base/langflow/initial_setup/starter_projects/Custom Component Generator.json", "hashed_secret": "2317af15ade380e78be36f9ffdc6415d596a8715", "is_verified": false, - "line_number": 2682, + "line_number": 2733, "is_secret": false } ], @@ -2069,22 +2568,6 @@ "is_verified": false, "line_number": 1171 }, - { - "type": "Secret Keyword", - "filename": "src/backend/base/langflow/initial_setup/starter_projects/Hybrid Search RAG.json", - "hashed_secret": "665b1e3851eefefa3fb878654292f16597d25155", - "is_verified": false, - "line_number": 1317, - "is_secret": false - }, - { - "type": "Secret Keyword", - "filename": "src/backend/base/langflow/initial_setup/starter_projects/Hybrid Search RAG.json", - "hashed_secret": "d3d6fe3f7d33d0f4aa28c49544a865982a48a00a", - "is_verified": false, - "line_number": 1452, - "is_secret": false - }, { "type": "Hex High Entropy String", "filename": "src/backend/base/langflow/initial_setup/starter_projects/Hybrid Search RAG.json", @@ -2180,6 +2663,13 @@ "is_verified": false, "line_number": 899, "is_secret": false + }, + { + "type": "Hex High Entropy String", + "filename": "src/backend/base/langflow/initial_setup/starter_projects/Invoice Summarizer.json", + "hashed_secret": "2098350316c1e9de52d2630f82eba3a35e04a8cc", + "is_verified": false, + "line_number": 1185 } ], "src/backend/base/langflow/initial_setup/starter_projects/Knowledge Retrieval.json": [ @@ -2196,6 +2686,13 @@ "hashed_secret": "d6e6d7b4b115cd3b9d172623199f8c403055fecc", "is_verified": false, "line_number": 408 + }, + { + "type": "Hex High Entropy String", + "filename": "src/backend/base/langflow/initial_setup/starter_projects/Knowledge Retrieval.json", + "hashed_secret": "d8bf803f4c4ff97bd7787d1ac70d10abb33ca9ae", + "is_verified": false, + "line_number": 697 } ], "src/backend/base/langflow/initial_setup/starter_projects/Market Research.json": [ @@ -2214,12 +2711,19 @@ "is_verified": false, "line_number": 450 }, + { + "type": "Hex High Entropy String", + "filename": "src/backend/base/langflow/initial_setup/starter_projects/Market Research.json", + "hashed_secret": "2098350316c1e9de52d2630f82eba3a35e04a8cc", + "is_verified": false, + "line_number": 1195 + }, { "type": "Hex High Entropy String", "filename": "src/backend/base/langflow/initial_setup/starter_projects/Market Research.json", "hashed_secret": "13f728be4fd927580a98667bcd624f511f459de0", "is_verified": false, - "line_number": 2009 + "line_number": 1962 } ], "src/backend/base/langflow/initial_setup/starter_projects/Meeting Summary.json": [ @@ -2230,6 +2734,13 @@ "is_verified": false, "line_number": 683 }, + { + "type": "Hex High Entropy String", + "filename": "src/backend/base/langflow/initial_setup/starter_projects/Meeting Summary.json", + "hashed_secret": "a121a58418212de709f6fdb31f0e7153c074fa98", + "is_verified": false, + "line_number": 1737 + }, { "type": "Hex High Entropy String", "filename": "src/backend/base/langflow/initial_setup/starter_projects/Meeting Summary.json", @@ -2266,7 +2777,7 @@ { "type": "Hex High Entropy String", "filename": "src/backend/base/langflow/initial_setup/starter_projects/Memory Chatbot.json", - "hashed_secret": "124b4911c19a9b66b7a7037c77cc27d1e4715719", + "hashed_secret": "a121a58418212de709f6fdb31f0e7153c074fa98", "is_verified": false, "line_number": 933 }, @@ -2291,17 +2802,23 @@ { "type": "Hex High Entropy String", "filename": "src/backend/base/langflow/initial_setup/starter_projects/News Aggregator.json", - "hashed_secret": "f1bd76c4aa6a65698214508669f07eb4c000a08b", + "hashed_secret": "d6e6d7b4b115cd3b9d172623199f8c403055fecc", "is_verified": false, - "line_number": 887, - "is_secret": false + "line_number": 887 + }, + { + "type": "Hex High Entropy String", + "filename": "src/backend/base/langflow/initial_setup/starter_projects/News Aggregator.json", + "hashed_secret": "2098350316c1e9de52d2630f82eba3a35e04a8cc", + "is_verified": false, + "line_number": 1179 }, { "type": "Hex High Entropy String", "filename": "src/backend/base/langflow/initial_setup/starter_projects/News Aggregator.json", "hashed_secret": "dea7780a5450c1b04313cf7731f3b066d158ad77", "is_verified": false, - "line_number": 1812, + "line_number": 1765, "is_secret": false } ], @@ -2311,7 +2828,7 @@ "filename": "src/backend/base/langflow/initial_setup/starter_projects/Nvidia Remix.json", "hashed_secret": "54ed260e3bc31bc77ee06754dff850981d39a66c", "is_verified": false, - "line_number": 233, + "line_number": 234, "is_secret": false }, { @@ -2319,37 +2836,21 @@ "filename": "src/backend/base/langflow/initial_setup/starter_projects/Nvidia Remix.json", "hashed_secret": "d6e6d7b4b115cd3b9d172623199f8c403055fecc", "is_verified": false, - "line_number": 510 + "line_number": 511 }, { "type": "Hex High Entropy String", "filename": "src/backend/base/langflow/initial_setup/starter_projects/Nvidia Remix.json", - "hashed_secret": "b8205f6293ceac2bf593580250e865708c8a9aeb", + "hashed_secret": "2098350316c1e9de52d2630f82eba3a35e04a8cc", "is_verified": false, - "line_number": 2157 - } - ], - "src/backend/base/langflow/initial_setup/starter_projects/Pok\u00e9dex Agent.json": [ - { - "type": "Hex High Entropy String", - "filename": "src/backend/base/langflow/initial_setup/starter_projects/Pok\u00e9dex Agent.json", - "hashed_secret": "54ed260e3bc31bc77ee06754dff850981d39a66c", - "is_verified": false, - "line_number": 115 + "line_number": 803 }, { "type": "Hex High Entropy String", - "filename": "src/backend/base/langflow/initial_setup/starter_projects/Pok\u00e9dex Agent.json", - "hashed_secret": "d6e6d7b4b115cd3b9d172623199f8c403055fecc", + "filename": "src/backend/base/langflow/initial_setup/starter_projects/Nvidia Remix.json", + "hashed_secret": "e16489ca34cf23e49a9171404db6d59748d46286", "is_verified": false, - "line_number": 394 - }, - { - "type": "Hex High Entropy String", - "filename": "src/backend/base/langflow/initial_setup/starter_projects/Pok\u00e9dex Agent.json", - "hashed_secret": "ecdbe30d19e36761df3620b37270f23c8e3eaa4c", - "is_verified": false, - "line_number": 774 + "line_number": 2111 } ], "src/backend/base/langflow/initial_setup/starter_projects/Portfolio Website Code Generator.json": [ @@ -2391,6 +2892,13 @@ "hashed_secret": "d6e6d7b4b115cd3b9d172623199f8c403055fecc", "is_verified": false, "line_number": 418 + }, + { + "type": "Hex High Entropy String", + "filename": "src/backend/base/langflow/initial_setup/starter_projects/Price Deal Finder.json", + "hashed_secret": "2098350316c1e9de52d2630f82eba3a35e04a8cc", + "is_verified": false, + "line_number": 1614 } ], "src/backend/base/langflow/initial_setup/starter_projects/Research Agent.json": [ @@ -2416,6 +2924,13 @@ "is_verified": false, "line_number": 2053, "is_secret": false + }, + { + "type": "Hex High Entropy String", + "filename": "src/backend/base/langflow/initial_setup/starter_projects/Research Agent.json", + "hashed_secret": "2098350316c1e9de52d2630f82eba3a35e04a8cc", + "is_verified": false, + "line_number": 2814 } ], "src/backend/base/langflow/initial_setup/starter_projects/Research Translation Loop.json": [ @@ -2441,22 +2956,6 @@ "is_verified": false, "line_number": 961, "is_secret": false - }, - { - "type": "Secret Keyword", - "filename": "src/backend/base/langflow/initial_setup/starter_projects/Research Translation Loop.json", - "hashed_secret": "665b1e3851eefefa3fb878654292f16597d25155", - "is_verified": false, - "line_number": 1151, - "is_secret": false - }, - { - "type": "Secret Keyword", - "filename": "src/backend/base/langflow/initial_setup/starter_projects/Research Translation Loop.json", - "hashed_secret": "d3d6fe3f7d33d0f4aa28c49544a865982a48a00a", - "is_verified": false, - "line_number": 1229, - "is_secret": false } ], "src/backend/base/langflow/initial_setup/starter_projects/SEO Keyword Generator.json": [ @@ -2490,6 +2989,13 @@ "hashed_secret": "de5b1f2ea12440f0a19893e82535166ea24c7ce3", "is_verified": false, "line_number": 721 + }, + { + "type": "Hex High Entropy String", + "filename": "src/backend/base/langflow/initial_setup/starter_projects/SaaS Pricing.json", + "hashed_secret": "2098350316c1e9de52d2630f82eba3a35e04a8cc", + "is_verified": false, + "line_number": 896 } ], "src/backend/base/langflow/initial_setup/starter_projects/Search agent.json": [ @@ -2507,15 +3013,29 @@ "hashed_secret": "d6e6d7b4b115cd3b9d172623199f8c403055fecc", "is_verified": false, "line_number": 569 + }, + { + "type": "Hex High Entropy String", + "filename": "src/backend/base/langflow/initial_setup/starter_projects/Search agent.json", + "hashed_secret": "2098350316c1e9de52d2630f82eba3a35e04a8cc", + "is_verified": false, + "line_number": 945 } ], "src/backend/base/langflow/initial_setup/starter_projects/Sequential Tasks Agents.json": [ + { + "type": "Hex High Entropy String", + "filename": "src/backend/base/langflow/initial_setup/starter_projects/Sequential Tasks Agents.json", + "hashed_secret": "2098350316c1e9de52d2630f82eba3a35e04a8cc", + "is_verified": false, + "line_number": 360 + }, { "type": "Hex High Entropy String", "filename": "src/backend/base/langflow/initial_setup/starter_projects/Sequential Tasks Agents.json", "hashed_secret": "54ed260e3bc31bc77ee06754dff850981d39a66c", "is_verified": false, - "line_number": 2183, + "line_number": 2089, "is_secret": false }, { @@ -2523,7 +3043,7 @@ "filename": "src/backend/base/langflow/initial_setup/starter_projects/Sequential Tasks Agents.json", "hashed_secret": "b8e5d31cffa4e410fe6b03a0855c592bceb48d82", "is_verified": false, - "line_number": 3130, + "line_number": 2989, "is_secret": false }, { @@ -2531,14 +3051,14 @@ "filename": "src/backend/base/langflow/initial_setup/starter_projects/Sequential Tasks Agents.json", "hashed_secret": "de5b1f2ea12440f0a19893e82535166ea24c7ce3", "is_verified": false, - "line_number": 3366 + "line_number": 3225 }, { "type": "Hex High Entropy String", "filename": "src/backend/base/langflow/initial_setup/starter_projects/Sequential Tasks Agents.json", "hashed_secret": "d6e6d7b4b115cd3b9d172623199f8c403055fecc", "is_verified": false, - "line_number": 3949 + "line_number": 3808 } ], "src/backend/base/langflow/initial_setup/starter_projects/Simple Agent.json": [ @@ -2563,6 +3083,13 @@ "hashed_secret": "d6e6d7b4b115cd3b9d172623199f8c403055fecc", "is_verified": false, "line_number": 652 + }, + { + "type": "Hex High Entropy String", + "filename": "src/backend/base/langflow/initial_setup/starter_projects/Simple Agent.json", + "hashed_secret": "2098350316c1e9de52d2630f82eba3a35e04a8cc", + "is_verified": false, + "line_number": 943 } ], "src/backend/base/langflow/initial_setup/starter_projects/Social Media Agent.json": [ @@ -2588,6 +3115,13 @@ "hashed_secret": "d6e6d7b4b115cd3b9d172623199f8c403055fecc", "is_verified": false, "line_number": 977 + }, + { + "type": "Hex High Entropy String", + "filename": "src/backend/base/langflow/initial_setup/starter_projects/Social Media Agent.json", + "hashed_secret": "2098350316c1e9de52d2630f82eba3a35e04a8cc", + "is_verified": false, + "line_number": 1295 } ], "src/backend/base/langflow/initial_setup/starter_projects/Structured Data Analysis Agent.json": [ @@ -2678,7 +3212,14 @@ "filename": "src/backend/base/langflow/initial_setup/starter_projects/Travel Planning Agents.json", "hashed_secret": "de5b1f2ea12440f0a19893e82535166ea24c7ce3", "is_verified": false, - "line_number": 1264 + "line_number": 1281 + }, + { + "type": "Hex High Entropy String", + "filename": "src/backend/base/langflow/initial_setup/starter_projects/Travel Planning Agents.json", + "hashed_secret": "2098350316c1e9de52d2630f82eba3a35e04a8cc", + "is_verified": false, + "line_number": 1725 } ], "src/backend/base/langflow/initial_setup/starter_projects/Twitter Thread Generator.json": [ @@ -2729,22 +3270,36 @@ "is_verified": false, "line_number": 1232, "is_secret": false + }, + { + "type": "Hex High Entropy String", + "filename": "src/backend/base/langflow/initial_setup/starter_projects/Vector Store RAG.json", + "hashed_secret": "d8bf803f4c4ff97bd7787d1ac70d10abb33ca9ae", + "is_verified": false, + "line_number": 1614 } ], "src/backend/base/langflow/initial_setup/starter_projects/Youtube Analysis.json": [ + { + "type": "Hex High Entropy String", + "filename": "src/backend/base/langflow/initial_setup/starter_projects/Youtube Analysis.json", + "hashed_secret": "2098350316c1e9de52d2630f82eba3a35e04a8cc", + "is_verified": false, + "line_number": 503 + }, { "type": "Hex High Entropy String", "filename": "src/backend/base/langflow/initial_setup/starter_projects/Youtube Analysis.json", "hashed_secret": "d6e6d7b4b115cd3b9d172623199f8c403055fecc", "is_verified": false, - "line_number": 1344 + "line_number": 1297 }, { "type": "Hex High Entropy String", "filename": "src/backend/base/langflow/initial_setup/starter_projects/Youtube Analysis.json", "hashed_secret": "54ed260e3bc31bc77ee06754dff850981d39a66c", "is_verified": false, - "line_number": 2116, + "line_number": 2069, "is_secret": false } ], @@ -2772,7 +3327,7 @@ "filename": "src/backend/base/langflow/locales/es.json", "hashed_secret": "1348b145fa1a555461c1b790a2f66614781091e9", "is_verified": false, - "line_number": 4553 + "line_number": 4695 } ], "src/backend/base/langflow/locales/fr.json": [ @@ -2808,7 +3363,7 @@ "filename": "src/backend/base/langflow/locales/zh-Hans.json", "hashed_secret": "1348b145fa1a555461c1b790a2f66614781091e9", "is_verified": false, - "line_number": 4553 + "line_number": 4695 } ], "src/backend/base/langflow/services/auth/utils.py": [ @@ -2949,22 +3504,13 @@ "is_secret": false } ], - "src/backend/tests/unit/agentic/flows/test_langflow_assistant.py": [ + "src/backend/tests/unit/agentic/flows/test_flow_builder_assistant.py": [ { "type": "Secret Keyword", - "filename": "src/backend/tests/unit/agentic/flows/test_langflow_assistant.py", - "hashed_secret": "665b1e3851eefefa3fb878654292f16597d25155", + "filename": "src/backend/tests/unit/agentic/flows/test_flow_builder_assistant.py", + "hashed_secret": "02ecb94373bfb3dfe827ca18409f50b016e8302a", "is_verified": false, - "line_number": 29, - "is_secret": false - }, - { - "type": "Secret Keyword", - "filename": "src/backend/tests/unit/agentic/flows/test_langflow_assistant.py", - "hashed_secret": "e5ad10f370283c6276789de684bca60e30306ad5", - "is_verified": false, - "line_number": 139, - "is_secret": false + "line_number": 590 } ], "src/backend/tests/unit/agentic/flows/test_translation_flow.py": [ @@ -3009,7 +3555,7 @@ "filename": "src/backend/tests/unit/agentic/services/helpers/test_intent_classification.py", "hashed_secret": "e5e9fa1ba31ecd1ae84f75caaa474f3a663f05f4", "is_verified": false, - "line_number": 279, + "line_number": 293, "is_secret": false }, { @@ -3017,24 +3563,83 @@ "filename": "src/backend/tests/unit/agentic/services/helpers/test_intent_classification.py", "hashed_secret": "02ecb94373bfb3dfe827ca18409f50b016e8302a", "is_verified": false, - "line_number": 283, + "line_number": 297, "is_secret": false } ], + "src/backend/tests/unit/agentic/services/test_assistant_service_model_fallback.py": [ + { + "type": "Secret Keyword", + "filename": "src/backend/tests/unit/agentic/services/test_assistant_service_model_fallback.py", + "hashed_secret": "02ecb94373bfb3dfe827ca18409f50b016e8302a", + "is_verified": false, + "line_number": 124 + } + ], + "src/backend/tests/unit/agentic/services/test_assistant_service_run_intent.py": [ + { + "type": "Secret Keyword", + "filename": "src/backend/tests/unit/agentic/services/test_assistant_service_run_intent.py", + "hashed_secret": "e9a5f12a8ecbb3eb46eca5096b5c52aa5e7c9fdd", + "is_verified": false, + "line_number": 369 + } + ], + "src/backend/tests/unit/agentic/services/test_assistant_service_streaming.py": [ + { + "type": "Secret Keyword", + "filename": "src/backend/tests/unit/agentic/services/test_assistant_service_streaming.py", + "hashed_secret": "02ecb94373bfb3dfe827ca18409f50b016e8302a", + "is_verified": false, + "line_number": 79 + } + ], "src/backend/tests/unit/agentic/services/test_flow_executor.py": [ { "type": "Secret Keyword", "filename": "src/backend/tests/unit/agentic/services/test_flow_executor.py", + "hashed_secret": "e5e9fa1ba31ecd1ae84f75caaa474f3a663f05f4", + "is_verified": false, + "line_number": 368 + } + ], + "src/backend/tests/unit/agentic/services/test_flow_preparation.py": [ + { + "type": "Secret Keyword", + "filename": "src/backend/tests/unit/agentic/services/test_flow_preparation.py", "hashed_secret": "665b1e3851eefefa3fb878654292f16597d25155", "is_verified": false, - "line_number": 24 + "line_number": 26 + }, + { + "type": "Secret Keyword", + "filename": "src/backend/tests/unit/agentic/services/test_flow_preparation.py", + "hashed_secret": "fe72967536aedcae9b1b1e4eaf2c53494e17a638", + "is_verified": false, + "line_number": 41 }, { "type": "Secret Keyword", "filename": "src/backend/tests/unit/agentic/services/test_flow_preparation.py", "hashed_secret": "f514a018f63030cf5c50d8e646fbc581111ab9ed", "is_verified": false, - "line_number": 87 + "line_number": 119 + }, + { + "type": "Secret Keyword", + "filename": "src/backend/tests/unit/agentic/services/test_flow_preparation.py", + "hashed_secret": "02ecb94373bfb3dfe827ca18409f50b016e8302a", + "is_verified": false, + "line_number": 249 + } + ], + "src/backend/tests/unit/agentic/services/test_generate_component_tool.py": [ + { + "type": "Secret Keyword", + "filename": "src/backend/tests/unit/agentic/services/test_generate_component_tool.py", + "hashed_secret": "02ecb94373bfb3dfe827ca18409f50b016e8302a", + "is_verified": false, + "line_number": 86 } ], "src/backend/tests/unit/agentic/services/test_provider_service.py": [ @@ -3047,6 +3652,22 @@ "is_secret": false } ], + "src/backend/tests/unit/alembic/test_seed_authz_system_roles.py": [ + { + "type": "Hex High Entropy String", + "filename": "src/backend/tests/unit/alembic/test_seed_authz_system_roles.py", + "hashed_secret": "bbf920f2e0703ad0ba1efed05835faf103d298e8", + "is_verified": false, + "line_number": 57 + }, + { + "type": "Hex High Entropy String", + "filename": "src/backend/tests/unit/alembic/test_seed_authz_system_roles.py", + "hashed_secret": "8ca729c5f46e26ea63ec487edec106f4ed73f8c5", + "is_verified": false, + "line_number": 58 + } + ], "src/backend/tests/unit/api/v1/test_api_key.py": [ { "type": "Secret Keyword", @@ -3097,7 +3718,7 @@ "filename": "src/backend/tests/unit/api/v1/test_mcp_projects.py", "hashed_secret": "4258d43e3b1f9658067ceea9c682a96cbdbb5ca0", "is_verified": false, - "line_number": 739, + "line_number": 741, "is_secret": false } ], @@ -3443,6 +4064,15 @@ "is_secret": false } ], + "src/backend/tests/unit/components/bundles/mem0/test_mem0_component.py": [ + { + "type": "Secret Keyword", + "filename": "src/backend/tests/unit/components/bundles/mem0/test_mem0_component.py", + "hashed_secret": "3acfb2c2b433c0ea7ff107e33df91b18e52f960f", + "is_verified": false, + "line_number": 41 + } + ], "src/backend/tests/unit/components/embeddings/test_ollama_embeddings_component.py": [ { "type": "Secret Keyword", @@ -3467,7 +4097,7 @@ "filename": "src/backend/tests/unit/components/files_and_knowledge/test_file_component.py", "hashed_secret": "72cb70dbbafe97e5ea13ad88acd65d08389439b0", "is_verified": false, - "line_number": 585, + "line_number": 603, "is_secret": false } ], @@ -3543,6 +4173,15 @@ "is_secret": false } ], + "src/backend/tests/unit/components/languagemodels/test_perplexity.py": [ + { + "type": "Secret Keyword", + "filename": "src/backend/tests/unit/components/languagemodels/test_perplexity.py", + "hashed_secret": "9139236dfe89960fee34d53b6089795fe376682e", + "is_verified": false, + "line_number": 75 + } + ], "src/backend/tests/unit/components/languagemodels/test_xai.py": [ { "type": "Secret Keyword", @@ -3629,7 +4268,7 @@ "filename": "src/backend/tests/unit/components/models_and_agents/test_agent_component.py", "hashed_secret": "d4c3d66fd0c38547a3c7a4c6bdc29c36911bc030", "is_verified": false, - "line_number": 201, + "line_number": 199, "is_secret": false }, { @@ -3637,7 +4276,7 @@ "filename": "src/backend/tests/unit/components/models_and_agents/test_agent_component.py", "hashed_secret": "665b1e3851eefefa3fb878654292f16597d25155", "is_verified": false, - "line_number": 240, + "line_number": 238, "is_secret": false }, { @@ -3645,7 +4284,7 @@ "filename": "src/backend/tests/unit/components/models_and_agents/test_agent_component.py", "hashed_secret": "2e7a7ee14caebf378fc32d6cf6f557f347c96773", "is_verified": false, - "line_number": 281, + "line_number": 279, "is_secret": false } ], @@ -3895,7 +4534,7 @@ "filename": "src/backend/tests/unit/services/variable/test_service.py", "hashed_secret": "30abc0a833efea23496b4d226fffa2f90c0855c0", "is_verified": false, - "line_number": 40, + "line_number": 43, "is_secret": false } ], @@ -3963,6 +4602,22 @@ "is_secret": false } ], + "src/backend/tests/unit/test_credential_resolution.py": [ + { + "type": "Secret Keyword", + "filename": "src/backend/tests/unit/test_credential_resolution.py", + "hashed_secret": "12dcc54ef052c1f562615079a111fa6f01319200", + "is_verified": false, + "line_number": 258 + }, + { + "type": "Secret Keyword", + "filename": "src/backend/tests/unit/test_credential_resolution.py", + "hashed_secret": "2da30019ccc752904fc22bf25a0305f777d446f6", + "is_verified": false, + "line_number": 275 + } + ], "src/backend/tests/unit/test_database_windows_postgres_integration.py": [ { "type": "Basic Auth Credentials", @@ -3973,13 +4628,22 @@ "is_secret": false } ], + "src/backend/tests/unit/test_flow_validation.py": [ + { + "type": "Hex High Entropy String", + "filename": "src/backend/tests/unit/test_flow_validation.py", + "hashed_secret": "90bd1b48e958257948487b90bee080ba5ed00caa", + "is_verified": false, + "line_number": 316 + } + ], "src/backend/tests/unit/test_get_api_key.py": [ { "type": "Secret Keyword", "filename": "src/backend/tests/unit/test_get_api_key.py", "hashed_secret": "d378f22450ce32736345a7a4647561bca9f4095a", "is_verified": false, - "line_number": 74, + "line_number": 69, "is_secret": false }, { @@ -3987,7 +4651,7 @@ "filename": "src/backend/tests/unit/test_get_api_key.py", "hashed_secret": "d3d442c7b46954cf767fbb60a2643917c55ac964", "is_verified": false, - "line_number": 76, + "line_number": 71, "is_secret": false } ], @@ -4136,7 +4800,7 @@ "filename": "src/frontend/src/CustomNodes/GenericNode/components/NodeStatus/index.tsx", "hashed_secret": "1fc7e28f6929181fa221e6ead6d9a07b4dd4ddfe", "is_verified": false, - "line_number": 358, + "line_number": 360, "is_secret": false } ], @@ -4160,32 +4824,6 @@ "is_secret": false } ], - "src/frontend/src/constants/alerts_constants.tsx": [ - { - "type": "Secret Keyword", - "filename": "src/frontend/src/constants/alerts_constants.tsx", - "hashed_secret": "d2c98a3ccd3706c8e941300f1ac53c8ae293b69e", - "is_verified": false, - "line_number": 33, - "is_secret": false - }, - { - "type": "Secret Keyword", - "filename": "src/frontend/src/constants/alerts_constants.tsx", - "hashed_secret": "d69c3b1ac54be7da3666d9937b9c78e7c309d6e8", - "is_verified": false, - "line_number": 34, - "is_secret": false - }, - { - "type": "Secret Keyword", - "filename": "src/frontend/src/constants/alerts_constants.tsx", - "hashed_secret": "af58392e77ee336caf0d1aad15057ad0745985e5", - "is_verified": false, - "line_number": 39, - "is_secret": false - } - ], "src/frontend/src/constants/constants.ts": [ { "type": "Secret Keyword", @@ -4208,7 +4846,7 @@ "filename": "src/frontend/src/constants/constants.ts", "hashed_secret": "c04f8fbf55c9096907a982750b1c6b0e4c1dd658", "is_verified": false, - "line_number": 947, + "line_number": 948, "is_secret": false } ], @@ -4222,6 +4860,99 @@ "is_secret": false } ], + "src/frontend/src/icons/Agentics/Agentics.jsx": [ + { + "type": "Hex High Entropy String", + "filename": "src/frontend/src/icons/Agentics/Agentics.jsx", + "hashed_secret": "64edfe799fc656565698b7fa8f85196dff718f99", + "is_verified": false, + "line_number": 28 + }, + { + "type": "Hex High Entropy String", + "filename": "src/frontend/src/icons/Agentics/Agentics.jsx", + "hashed_secret": "87e0250d2588f9c6a054d6686b2b5c7903416e8e", + "is_verified": false, + "line_number": 90 + }, + { + "type": "Hex High Entropy String", + "filename": "src/frontend/src/icons/Agentics/Agentics.jsx", + "hashed_secret": "df8968f85fb273af031355f9782caa3f4ac7b52a", + "is_verified": false, + "line_number": 144 + }, + { + "type": "Hex High Entropy String", + "filename": "src/frontend/src/icons/Agentics/Agentics.jsx", + "hashed_secret": "48f7abc53adb9ef4cc54d10d83892504e08c2245", + "is_verified": false, + "line_number": 150 + }, + { + "type": "Hex High Entropy String", + "filename": "src/frontend/src/icons/Agentics/Agentics.jsx", + "hashed_secret": "2e660334911bf0f6dae9268a890f23d9dabeb120", + "is_verified": false, + "line_number": 180 + }, + { + "type": "Hex High Entropy String", + "filename": "src/frontend/src/icons/Agentics/Agentics.jsx", + "hashed_secret": "819a378ef03728f267eb392e8a9de9e14a70a5bd", + "is_verified": false, + "line_number": 192 + }, + { + "type": "Hex High Entropy String", + "filename": "src/frontend/src/icons/Agentics/Agentics.jsx", + "hashed_secret": "67804b2998f2b3404c98a4b6370deb5a0bcc12f3", + "is_verified": false, + "line_number": 213 + }, + { + "type": "Hex High Entropy String", + "filename": "src/frontend/src/icons/Agentics/Agentics.jsx", + "hashed_secret": "2e5e560070827acaff97b9bb572cde5ef36385b7", + "is_verified": false, + "line_number": 225 + }, + { + "type": "Hex High Entropy String", + "filename": "src/frontend/src/icons/Agentics/Agentics.jsx", + "hashed_secret": "d0457be9267a69e6d8650ea62904103b2889a747", + "is_verified": false, + "line_number": 231 + }, + { + "type": "Hex High Entropy String", + "filename": "src/frontend/src/icons/Agentics/Agentics.jsx", + "hashed_secret": "0de77228dc0ec35dc635777bdc13a9c63057e106", + "is_verified": false, + "line_number": 234 + }, + { + "type": "Hex High Entropy String", + "filename": "src/frontend/src/icons/Agentics/Agentics.jsx", + "hashed_secret": "d0af6b80c1e2fd39150976da4d83240323099628", + "is_verified": false, + "line_number": 240 + }, + { + "type": "Hex High Entropy String", + "filename": "src/frontend/src/icons/Agentics/Agentics.jsx", + "hashed_secret": "c641a0469dd38ee51826f882ca1110210827c107", + "is_verified": false, + "line_number": 252 + }, + { + "type": "Hex High Entropy String", + "filename": "src/frontend/src/icons/Agentics/Agentics.jsx", + "hashed_secret": "5f0d78d561c5e285b8bc3b01c561939edd3e95fe", + "is_verified": false, + "line_number": 288 + } + ], "src/frontend/src/icons/Azure/Azure.jsx": [ { "type": "Hex High Entropy String", @@ -4316,266 +5047,280 @@ "filename": "src/frontend/src/locales/de.json", "hashed_secret": "071241279b1ee9edc0e265315fba2833f3c6e1d9", "is_verified": false, - "line_number": 81 + "line_number": 151 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/de.json", "hashed_secret": "40a6165fa766809c4d5cc31c9d69bf592b2e930e", "is_verified": false, - "line_number": 88 + "line_number": 158 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/de.json", "hashed_secret": "029a9cd4161ece9fcf5eda09f07874d228daa9e6", "is_verified": false, - "line_number": 90 + "line_number": 160 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/de.json", "hashed_secret": "e71719056a00aeb51887b49912f107d7075e3953", "is_verified": false, - "line_number": 91 + "line_number": 161 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/de.json", "hashed_secret": "a24f75c63a48219c05df0f39831e66aa1faa6189", "is_verified": false, - "line_number": 111 + "line_number": 181 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/de.json", "hashed_secret": "d66dc430b7aff7717100701ed8a112a9601384ed", "is_verified": false, - "line_number": 120 + "line_number": 190 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/de.json", "hashed_secret": "94173eade3ec4ad38c084c42138773fa4220afcf", "is_verified": false, - "line_number": 121 - }, - { - "type": "Secret Keyword", - "filename": "src/frontend/src/locales/de.json", - "hashed_secret": "02d9eee31941ef494b8b63c50484720e21e9a92b", - "is_verified": false, - "line_number": 325 + "line_number": 191 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/de.json", "hashed_secret": "eea025da01ac30af81911443bd4e7e6bc02dd458", "is_verified": false, - "line_number": 357 + "line_number": 396 + }, + { + "type": "Secret Keyword", + "filename": "src/frontend/src/locales/de.json", + "hashed_secret": "cdd92c9d2578e0cdc2e57591425298e0d2ecaaed", + "is_verified": false, + "line_number": 397 + }, + { + "type": "Secret Keyword", + "filename": "src/frontend/src/locales/de.json", + "hashed_secret": "02d9eee31941ef494b8b63c50484720e21e9a92b", + "is_verified": false, + "line_number": 420 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/de.json", "hashed_secret": "e7cc230ba82f53830501c9e07f40554ee59596d3", "is_verified": false, - "line_number": 388 + "line_number": 492 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/de.json", "hashed_secret": "33401d90fa17dd65aeb2468f398353281be85596", "is_verified": false, - "line_number": 463 + "line_number": 564 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/de.json", "hashed_secret": "e686334c3bec530179fc0d6f81b75005b8a3541f", "is_verified": false, - "line_number": 464 + "line_number": 566 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/de.json", "hashed_secret": "7981d45b19cca6f0be5538f9864663e7685bf052", "is_verified": false, - "line_number": 476 + "line_number": 582 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/de.json", "hashed_secret": "cfd32aee63f6617c1aa367ff901f9f16abc25ccc", "is_verified": false, - "line_number": 505 + "line_number": 610 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/de.json", "hashed_secret": "7f9b4ce8fafe27fd7f28e30503ff90be2c51f6f1", "is_verified": false, - "line_number": 512 + "line_number": 617 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/de.json", "hashed_secret": "02eed8625057933776c899e6e60175a552231af3", "is_verified": false, - "line_number": 525 + "line_number": 632 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/de.json", "hashed_secret": "5781fbe4c19d47db72e814fe889cab2ee138b254", "is_verified": false, - "line_number": 676 + "line_number": 883 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/de.json", "hashed_secret": "0098f0e36ee02376e287e99d76328b76cbf395b8", "is_verified": false, - "line_number": 956 + "line_number": 1220 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/de.json", "hashed_secret": "85accf06c43563c063d399baf5e1d4dbc2bd69b0", "is_verified": false, - "line_number": 957 + "line_number": 1221 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/de.json", "hashed_secret": "7af90a388f3f51da50bd0ccfc074ac83a5e77abf", "is_verified": false, - "line_number": 1036 + "line_number": 1349 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/de.json", "hashed_secret": "e116d3fdaa720e8822922071931a7da18b34ddd3", "is_verified": false, - "line_number": 1105 + "line_number": 1419 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/de.json", "hashed_secret": "06e10503631d5b1680e4a08e3a5e0ab109812c48", "is_verified": false, - "line_number": 1265 + "line_number": 1580 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/de.json", "hashed_secret": "de70a102ac9fe37a0714c25453e50afb4f078359", "is_verified": false, - "line_number": 1267 + "line_number": 1582 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/de.json", "hashed_secret": "da5b4695b6132090955c121e932d6f9b833c0b1d", "is_verified": false, - "line_number": 1278 + "line_number": 1637 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/de.json", "hashed_secret": "d4f39052ccfaf9ef5b8fd360ed75d23cf12fa2c4", "is_verified": false, - "line_number": 1279 + "line_number": 1638 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/de.json", "hashed_secret": "bfc0c1d4d70399476ea81e40a48418ed9962832d", "is_verified": false, - "line_number": 1280 + "line_number": 1639 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/de.json", "hashed_secret": "2a24f50d36559883d2bc391e4e99f9a7afd56ef9", "is_verified": false, - "line_number": 1300 + "line_number": 1660 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/de.json", "hashed_secret": "fd0543de99a00bd6e67f3e522a18ed417089b6b4", "is_verified": false, - "line_number": 1311 + "line_number": 1671 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/de.json", "hashed_secret": "fa4b98297401af5e6ab7a402330a12715e891325", "is_verified": false, - "line_number": 1436 + "line_number": 1805 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/de.json", "hashed_secret": "9c46c22e7a8ff423706b990fc02c85e0d324f134", "is_verified": false, - "line_number": 1449 + "line_number": 1818 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/de.json", "hashed_secret": "91cde4236a3754b4b57733682edfc50571d954c6", "is_verified": false, - "line_number": 1451 + "line_number": 1820 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/de.json", "hashed_secret": "9625c6b66710b648d27ee284940849a6b5abf3f0", "is_verified": false, - "line_number": 1454 + "line_number": 1823 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/de.json", "hashed_secret": "370c53187d8e550db85edabdcb86547dab96e300", "is_verified": false, - "line_number": 1459 + "line_number": 1828 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/de.json", "hashed_secret": "cc57a2140542893b4c9396b6a7186b26351c6fe5", "is_verified": false, - "line_number": 1475 + "line_number": 1844 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/de.json", "hashed_secret": "d922d16c3bbc818b6fab4e8d2662fa361309fa9d", "is_verified": false, - "line_number": 1625 + "line_number": 2042 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/de.json", "hashed_secret": "8ea601e5cac549eef50d2743f915e4af54135789", "is_verified": false, - "line_number": 1626 + "line_number": 2043 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/de.json", "hashed_secret": "e498ebe977c948f4d1b7eddd6bb77be398ed4d7c", "is_verified": false, - "line_number": 1632 + "line_number": 2049 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/de.json", "hashed_secret": "02e680473cb1ee7473e2cdb5b0b6c48cd8aae081", "is_verified": false, - "line_number": 1633 + "line_number": 2050 + }, + { + "type": "Secret Keyword", + "filename": "src/frontend/src/locales/de.json", + "hashed_secret": "cc50b2aac5d886516a06afb79b4931f4ee66422d", + "is_verified": false, + "line_number": 2060 } ], "src/frontend/src/locales/en.json": [ @@ -4633,217 +5378,231 @@ "filename": "src/frontend/src/locales/en.json", "hashed_secret": "19a2fbd0dd38b4097f419c962342ef5e109eab07", "is_verified": false, - "line_number": 171 + "line_number": 177 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/en.json", "hashed_secret": "cb88e78a13f07467c3e44000869553e709ecd44f", "is_verified": false, - "line_number": 172 + "line_number": 178 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/en.json", "hashed_secret": "c04f8fbf55c9096907a982750b1c6b0e4c1dd658", "is_verified": false, - "line_number": 218 + "line_number": 224 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/en.json", "hashed_secret": "8be3c943b1609fffbfc51aad666d0a04adf83c9d", "is_verified": false, - "line_number": 249 + "line_number": 255 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/en.json", "hashed_secret": "29333d2356d5dd3aafb45a8614c6d825b6f58424", "is_verified": false, - "line_number": 251 + "line_number": 257 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/en.json", "hashed_secret": "198b73ffd1a6d9c83101382c6df255edac0d3625", "is_verified": false, - "line_number": 257 + "line_number": 263 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/en.json", "hashed_secret": "51d69ae6046d2a3be245449d5b38165d5d78def5", "is_verified": false, - "line_number": 259 + "line_number": 265 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/en.json", "hashed_secret": "2e19560960addfd442570c5b2830afc1115cd3f0", "is_verified": false, - "line_number": 261 + "line_number": 267 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/en.json", "hashed_secret": "ad0cb64bb04fb2dd4e7072fca59f7f23eb025df9", "is_verified": false, - "line_number": 267 + "line_number": 273 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/en.json", "hashed_secret": "c2d404cb7bad34de0af2136b8efa809ea96170fa", "is_verified": false, - "line_number": 269 + "line_number": 275 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/en.json", "hashed_secret": "1abaf3f0bb2d459a0fdefe08084901710603a6be", "is_verified": false, - "line_number": 281 + "line_number": 287 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/en.json", "hashed_secret": "4a7c565d4c4430e3bb8fa6c560125d5eb37e7c3d", "is_verified": false, - "line_number": 322 + "line_number": 372 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/en.json", "hashed_secret": "47acd2028cf81b5da88ddeedb2aea4eca4b71fbd", "is_verified": false, - "line_number": 382 + "line_number": 438 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/en.json", "hashed_secret": "c23d0f85d66cef95852d6a63811ab919de76b02a", "is_verified": false, - "line_number": 414 + "line_number": 470 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/en.json", "hashed_secret": "76b33d23eee6aaa96f11abb4cbf1e5abd66aa46d", "is_verified": false, - "line_number": 514 + "line_number": 573 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/en.json", "hashed_secret": "e9013532fd4966ed4b3aab1ae711b21f180e4c26", "is_verified": false, - "line_number": 515 + "line_number": 574 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/en.json", "hashed_secret": "8f16563f8a1751c141fd1c47148369ca1c380bb1", "is_verified": false, - "line_number": 554 + "line_number": 613 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/en.json", "hashed_secret": "2c4e1babc2d1448dfcfdd24fb92068644227d6f1", "is_verified": false, - "line_number": 575 + "line_number": 634 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/en.json", "hashed_secret": "7ce9180d54b399cafbe6515ca2ca4710a6b9554c", "is_verified": false, - "line_number": 581 + "line_number": 640 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/en.json", "hashed_secret": "924cf2c6cefbba9e88dc676bd2575b7f21f9661e", "is_verified": false, - "line_number": 588 + "line_number": 647 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/en.json", "hashed_secret": "9d6bd29f94e1e565bd5de8f44c875638b26e85b6", "is_verified": false, - "line_number": 589 + "line_number": 648 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/en.json", "hashed_secret": "8e77e1ff96d9be727f25fc393a48f767935660db", "is_verified": false, - "line_number": 1038 + "line_number": 1129 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/en.json", "hashed_secret": "29538b53771fff5bad78e3a48a3a8f88c2f141d2", "is_verified": false, - "line_number": 1327 + "line_number": 1420 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/en.json", "hashed_secret": "8d24e5afd2e9b40d21e4300c893a486aab979795", "is_verified": false, - "line_number": 1328 + "line_number": 1421 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/en.json", "hashed_secret": "ed05045c1666dd556d9a09f9eb6889f42a81aa5a", "is_verified": false, - "line_number": 1420 + "line_number": 1514 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/en.json", "hashed_secret": "8f616a4d4abc959d505a5b83f1b3fa1a6bce6b2e", "is_verified": false, - "line_number": 1422 + "line_number": 1516 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/en.json", "hashed_secret": "1bbb8fd38e8fef4280c7218b961ae2ceeb83bbc9", "is_verified": false, - "line_number": 1423 + "line_number": 1517 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/en.json", "hashed_secret": "0b8eacdde75bb24c6f29adf660f50ca4d9846358", "is_verified": false, - "line_number": 1425 + "line_number": 1519 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/en.json", "hashed_secret": "8cde7462c1ce55676dc45124068d844ad3b86dcf", "is_verified": false, - "line_number": 1446 + "line_number": 1540 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/en.json", "hashed_secret": "afbf9aed8c22c3faf4d92dccadabe324d49bc5a8", "is_verified": false, - "line_number": 1602 + "line_number": 1762 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/en.json", "hashed_secret": "651f66f27bbfaed040c836e22515162e20c4fa0d", "is_verified": false, - "line_number": 1616 + "line_number": 1776 + }, + { + "type": "Secret Keyword", + "filename": "src/frontend/src/locales/en.json", + "hashed_secret": "e38ef0e653c39ce1a4dde13da87333c43ced6cab", + "is_verified": false, + "line_number": 1860 + }, + { + "type": "Secret Keyword", + "filename": "src/frontend/src/locales/en.json", + "hashed_secret": "a3e4ec7cb1a57129b074bdd0b9403a008a7f0019", + "is_verified": false, + "line_number": 1876 } ], "src/frontend/src/locales/es.json": [ @@ -4887,238 +5646,252 @@ "filename": "src/frontend/src/locales/es.json", "hashed_secret": "e0bb5d3509b1c0a528192ba194fd358e7cf68aa1", "is_verified": false, - "line_number": 90 + "line_number": 160 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/es.json", "hashed_secret": "641e0eab068bccd95b4b55a4c361e4115c418a5f", "is_verified": false, - "line_number": 91 + "line_number": 161 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/es.json", "hashed_secret": "fc4cb17d803c31094c9d646d708e73a8f618f1f3", "is_verified": false, - "line_number": 111 + "line_number": 181 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/es.json", "hashed_secret": "cd21bce173804809539fac60a9168e184f12b284", "is_verified": false, - "line_number": 120 + "line_number": 190 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/es.json", "hashed_secret": "c37c841b6c7b009dad7db06b8d78c5a60e231dce", "is_verified": false, - "line_number": 121 - }, - { - "type": "Secret Keyword", - "filename": "src/frontend/src/locales/es.json", - "hashed_secret": "82842c3c911be2b0d80d3c5f8d94b52ac2413de9", - "is_verified": false, - "line_number": 325 + "line_number": 191 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/es.json", "hashed_secret": "13a8cca2ca0db558c6a15f4d856d5137f2498f20", "is_verified": false, - "line_number": 357 + "line_number": 396 + }, + { + "type": "Secret Keyword", + "filename": "src/frontend/src/locales/es.json", + "hashed_secret": "5457a352b60f70e37ab5066d7cadbbe5e0271ef1", + "is_verified": false, + "line_number": 397 + }, + { + "type": "Secret Keyword", + "filename": "src/frontend/src/locales/es.json", + "hashed_secret": "82842c3c911be2b0d80d3c5f8d94b52ac2413de9", + "is_verified": false, + "line_number": 420 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/es.json", "hashed_secret": "f5503a4b8c5a1977fffa2f0e95d877eb7c7c4ee6", "is_verified": false, - "line_number": 388 + "line_number": 492 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/es.json", "hashed_secret": "192b20f92ccd805d527886bed6301b7b371fe348", "is_verified": false, - "line_number": 463 + "line_number": 564 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/es.json", "hashed_secret": "765294f5f2dd1748dbd78e9b59afc3a1787697a2", "is_verified": false, - "line_number": 464 + "line_number": 566 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/es.json", "hashed_secret": "d469771eafcb03655d11eed0f3e8811f2c721d02", "is_verified": false, - "line_number": 476 + "line_number": 582 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/es.json", "hashed_secret": "9b230eabf26be3b9d702c89641b984f98d206061", "is_verified": false, - "line_number": 505 + "line_number": 610 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/es.json", "hashed_secret": "dbfcc263a0fdacc0d688abea5294c8c4968f6dcb", "is_verified": false, - "line_number": 512 + "line_number": 617 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/es.json", "hashed_secret": "8014424f8694a36a30603e437661446e2eb8c299", "is_verified": false, - "line_number": 525 + "line_number": 632 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/es.json", "hashed_secret": "c2051bb5c40f7970a7dfe6cc779623aab444c55e", "is_verified": false, - "line_number": 676 + "line_number": 883 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/es.json", "hashed_secret": "8986077949f64e6ae0027b081075699ce824e0dd", "is_verified": false, - "line_number": 956 + "line_number": 1220 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/es.json", "hashed_secret": "96457c5a9db1de39b24d9043cdbe6360f2b19f86", "is_verified": false, - "line_number": 957 + "line_number": 1221 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/es.json", "hashed_secret": "0f89cb19175c596fc2ae829f5c09d4d04512cc0d", "is_verified": false, - "line_number": 1036 + "line_number": 1349 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/es.json", "hashed_secret": "bd8021713f01b31ab9cb3aa0a88e9a88c6531598", "is_verified": false, - "line_number": 1105 + "line_number": 1419 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/es.json", "hashed_secret": "d35e35ce246c917e0d30a073363f12eb6b412d5e", "is_verified": false, - "line_number": 1265 + "line_number": 1580 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/es.json", "hashed_secret": "bd2d890bd01b9843827f1583db8f9ee99564f270", "is_verified": false, - "line_number": 1278 + "line_number": 1637 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/es.json", "hashed_secret": "b245ddc4e5dfcb57cba8d08000e59c5dc0809ceb", "is_verified": false, - "line_number": 1279 + "line_number": 1638 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/es.json", "hashed_secret": "443fd1115c9bd30afaac31a42fc192b86476f288", "is_verified": false, - "line_number": 1280 + "line_number": 1639 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/es.json", "hashed_secret": "5c324bbf8f0a15d640a2ca93b4bb0183d106edd8", "is_verified": false, - "line_number": 1300 + "line_number": 1660 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/es.json", "hashed_secret": "49d8b438094e36554d1d2ec73dbc4adbdca1a891", "is_verified": false, - "line_number": 1311 + "line_number": 1671 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/es.json", "hashed_secret": "bdd17febdd742a928650952ec63b0ab0d7eeddac", "is_verified": false, - "line_number": 1449 + "line_number": 1818 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/es.json", "hashed_secret": "15e4f8d5f1d2759b1e83f9082a8ce8e194eb5600", "is_verified": false, - "line_number": 1451 + "line_number": 1820 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/es.json", "hashed_secret": "c8700cb4716f270e7c37191104366e7b1cadc9de", "is_verified": false, - "line_number": 1454 + "line_number": 1823 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/es.json", "hashed_secret": "60b0610326aa371e079775047f4e66c77aabb0a2", "is_verified": false, - "line_number": 1459 + "line_number": 1828 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/es.json", "hashed_secret": "0147f29ee8d8343d8d70f94b71b0053b268461e3", "is_verified": false, - "line_number": 1475 + "line_number": 1844 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/es.json", "hashed_secret": "3c89182cf4fc330080cfb2352105827a904d5691", "is_verified": false, - "line_number": 1625 + "line_number": 2042 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/es.json", "hashed_secret": "998c11b06dfd04593f289507da2b499cf4bca6e8", "is_verified": false, - "line_number": 1626 + "line_number": 2043 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/es.json", "hashed_secret": "ccaa726ee57e4ccdab0a28886273feee26d647ec", "is_verified": false, - "line_number": 1632 + "line_number": 2049 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/es.json", "hashed_secret": "2e329e7c25daa340c17b719f5371248f691de123", "is_verified": false, - "line_number": 1633 + "line_number": 2050 + }, + { + "type": "Secret Keyword", + "filename": "src/frontend/src/locales/es.json", + "hashed_secret": "6e09157ed6a7516c860d26d0747fb229badf190a", + "is_verified": false, + "line_number": 2060 } ], "src/frontend/src/locales/fr.json": [ @@ -5169,147 +5942,161 @@ "filename": "src/frontend/src/locales/fr.json", "hashed_secret": "f4cde692d8841bc82500a858c0b039b87d5aac25", "is_verified": false, - "line_number": 81 + "line_number": 151 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/fr.json", "hashed_secret": "bd03c54cd14fd738c7cea7add3ae43058b612392", "is_verified": false, - "line_number": 90 + "line_number": 160 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/fr.json", "hashed_secret": "6a4a9f5fd35aba4316eae8fecd22b6520130d3bb", "is_verified": false, - "line_number": 91 + "line_number": 161 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/fr.json", "hashed_secret": "45c1ab5429738bffb961d2445c838901298f97cc", "is_verified": false, - "line_number": 120 + "line_number": 190 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/fr.json", "hashed_secret": "af0189df8c27e3378d3692a62ce4e75985a787e5", "is_verified": false, - "line_number": 121 - }, - { - "type": "Secret Keyword", - "filename": "src/frontend/src/locales/fr.json", - "hashed_secret": "5146a90f97b0950b25e7ce9fb097fefa5a3d6817", - "is_verified": false, - "line_number": 322 + "line_number": 191 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/fr.json", "hashed_secret": "a51009a48a2d62cd6a67ebf1989fa680dc4506be", "is_verified": false, - "line_number": 354 + "line_number": 396 + }, + { + "type": "Secret Keyword", + "filename": "src/frontend/src/locales/fr.json", + "hashed_secret": "d40974ec3d7496c834d5cfd3287e73336dcf7bf2", + "is_verified": false, + "line_number": 397 + }, + { + "type": "Secret Keyword", + "filename": "src/frontend/src/locales/fr.json", + "hashed_secret": "5146a90f97b0950b25e7ce9fb097fefa5a3d6817", + "is_verified": false, + "line_number": 420 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/fr.json", "hashed_secret": "7af1b1a9f5075623b9535583703bef93d789dfaf", "is_verified": false, - "line_number": 381 + "line_number": 492 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/fr.json", "hashed_secret": "cb3228774ef442aa34e93da66e3c2ebbac09a3b6", "is_verified": false, - "line_number": 445 + "line_number": 564 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/fr.json", "hashed_secret": "d3a999088e8965ab9ce5c092d636171c69665666", "is_verified": false, - "line_number": 446 + "line_number": 566 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/fr.json", "hashed_secret": "8e55bc411656a3791cd177161db4595e24e459ee", "is_verified": false, - "line_number": 458 + "line_number": 582 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/fr.json", "hashed_secret": "d2c76f41b31e908dc84bc33fa1a3f210f70cf49a", "is_verified": false, - "line_number": 937 + "line_number": 1220 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/fr.json", "hashed_secret": "d3f815b74ab709a72cf9cdce437053fa0dce6287", "is_verified": false, - "line_number": 1006 + "line_number": 1349 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/fr.json", "hashed_secret": "7f49bb36f7d78041a9c8e79fdead35277249f701", "is_verified": false, - "line_number": 1234 + "line_number": 1580 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/fr.json", "hashed_secret": "88362d0d044cf4144e78f646e101110e3f44a9e5", "is_verified": false, - "line_number": 1236 + "line_number": 1582 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/fr.json", "hashed_secret": "89400786d11d1ee5d936d6cd1890e99e4e3aa54b", "is_verified": false, - "line_number": 1249 + "line_number": 1639 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/fr.json", "hashed_secret": "b1df0ac48f734b370fc58c591ef0772266f88bb4", "is_verified": false, - "line_number": 1269 + "line_number": 1660 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/fr.json", "hashed_secret": "541b6268f8abceae80c498212280ee7136eba255", "is_verified": false, - "line_number": 1280 + "line_number": 1671 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/fr.json", "hashed_secret": "ff959bbe348ba1b8176852cd2e3d6ba8dbf4062d", "is_verified": false, - "line_number": 1418 + "line_number": 1818 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/fr.json", "hashed_secret": "73f311b6a3b5bb2b45eccad848db62d85ae37b58", "is_verified": false, - "line_number": 1428 + "line_number": 1828 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/fr.json", "hashed_secret": "7294ab5b6d4cf3ea2deab49cecb0a7baacd16447", "is_verified": false, - "line_number": 1601 + "line_number": 2049 + }, + { + "type": "Secret Keyword", + "filename": "src/frontend/src/locales/fr.json", + "hashed_secret": "8dfdd0969287ef24a795d71e17f53f148d37d766", + "is_verified": false, + "line_number": 2060 } ], "src/frontend/src/locales/ja.json": [ @@ -5325,217 +6112,231 @@ "filename": "src/frontend/src/locales/ja.json", "hashed_secret": "ad309c2e61dfa1a5c0dc9896da7fd830af70b8f6", "is_verified": false, - "line_number": 91 + "line_number": 161 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/ja.json", "hashed_secret": "20cff9da46719805d7fe563353ad67624227b054", "is_verified": false, - "line_number": 111 - }, - { - "type": "Secret Keyword", - "filename": "src/frontend/src/locales/ja.json", - "hashed_secret": "712dfa64243423e83279b034519831d3d43f1222", - "is_verified": false, - "line_number": 325 + "line_number": 181 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/ja.json", "hashed_secret": "72eaf58c3aa4f501f65b26053d3802e3bd7d5620", "is_verified": false, - "line_number": 357 + "line_number": 396 + }, + { + "type": "Secret Keyword", + "filename": "src/frontend/src/locales/ja.json", + "hashed_secret": "3199448fd2effa51a31410243be3e2aa21843521", + "is_verified": false, + "line_number": 397 + }, + { + "type": "Secret Keyword", + "filename": "src/frontend/src/locales/ja.json", + "hashed_secret": "712dfa64243423e83279b034519831d3d43f1222", + "is_verified": false, + "line_number": 420 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/ja.json", "hashed_secret": "6d3f6918ae280307281aca3f1dc9489d44565214", "is_verified": false, - "line_number": 388 + "line_number": 492 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/ja.json", "hashed_secret": "4479d5f53df4c7c7bf5e956086be99f06a1de389", "is_verified": false, - "line_number": 463 + "line_number": 564 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/ja.json", "hashed_secret": "f94bedb507c27a67d2641721479db8680ce9388e", "is_verified": false, - "line_number": 476 + "line_number": 582 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/ja.json", "hashed_secret": "6dbe389b0fad2a6c97e803c3b6b5a2d8d22522b5", "is_verified": false, - "line_number": 505 + "line_number": 610 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/ja.json", "hashed_secret": "8ce3126ccfb3229f34fe26a2d087ec4e4e159b9d", "is_verified": false, - "line_number": 512 + "line_number": 617 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/ja.json", "hashed_secret": "de6f8e3f2efe3d1041ea12f5151130da05447df8", "is_verified": false, - "line_number": 525 + "line_number": 632 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/ja.json", "hashed_secret": "dcfb876c95540f212731659ce9603d9741a763cc", "is_verified": false, - "line_number": 676 + "line_number": 883 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/ja.json", "hashed_secret": "cd5eda56c4e5deaeeb92d6154d05c3dc9264553f", "is_verified": false, - "line_number": 956 + "line_number": 1220 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/ja.json", "hashed_secret": "d4d29807d5f0a184bd28b2dad2a034da1970042a", "is_verified": false, - "line_number": 957 + "line_number": 1221 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/ja.json", "hashed_secret": "3cf78799d5f2ac03456fc62edd2ad65120b64f05", "is_verified": false, - "line_number": 1036 + "line_number": 1349 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/ja.json", "hashed_secret": "fcbab870c3fac2547fc10dfe4d134111aabc18b8", "is_verified": false, - "line_number": 1105 + "line_number": 1419 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/ja.json", "hashed_secret": "d46f0990d79bb487d60ff3a855f6916f3e4e6a1a", "is_verified": false, - "line_number": 1265 + "line_number": 1580 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/ja.json", "hashed_secret": "c0428438c20615c80570a0bd88158db6a5cc6003", "is_verified": false, - "line_number": 1278 + "line_number": 1637 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/ja.json", "hashed_secret": "c22e6661861b4203426d47e3a1a50363c09c812e", "is_verified": false, - "line_number": 1279 + "line_number": 1638 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/ja.json", "hashed_secret": "b360f8c2eb4e5aeab3a63c711ffe95b4fa24afde", "is_verified": false, - "line_number": 1280 + "line_number": 1639 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/ja.json", "hashed_secret": "b6416594e1de4cfc0351c6562ab936519130f5b2", "is_verified": false, - "line_number": 1289 + "line_number": 1648 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/ja.json", "hashed_secret": "b7cd1a2885e8998336c89a87d4df110a6b66e2f2", "is_verified": false, - "line_number": 1311 + "line_number": 1671 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/ja.json", "hashed_secret": "5e8bcadfaab440649c70e43a015503e9109a7bfa", "is_verified": false, - "line_number": 1436 + "line_number": 1805 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/ja.json", "hashed_secret": "44ed46c9ee10a3a7308c6d1a5df4cb082c57b9e0", "is_verified": false, - "line_number": 1449 + "line_number": 1818 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/ja.json", "hashed_secret": "20e6aa34a3dd984dd602c294ee85714b53a0a872", "is_verified": false, - "line_number": 1451 + "line_number": 1820 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/ja.json", "hashed_secret": "b5426a913c9da60eff621ee15e0b195bf6aaa8da", "is_verified": false, - "line_number": 1454 + "line_number": 1823 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/ja.json", "hashed_secret": "415c03a82cd5f390ad3e28dd82c88e36fb540548", "is_verified": false, - "line_number": 1459 + "line_number": 1828 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/ja.json", "hashed_secret": "9e7ba6c71dc246eee615e88e31861a563e33b42d", "is_verified": false, - "line_number": 1475 + "line_number": 1844 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/ja.json", "hashed_secret": "18a887dd97555ab726e7f4d4d999dedd236763eb", "is_verified": false, - "line_number": 1625 + "line_number": 2042 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/ja.json", "hashed_secret": "e4777a4b7b9c6fd1911762e35405c0b6b80ae735", "is_verified": false, - "line_number": 1626 + "line_number": 2043 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/ja.json", "hashed_secret": "8847d054d32b57b7a5633fed58444d7237209e24", "is_verified": false, - "line_number": 1632 + "line_number": 2049 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/ja.json", "hashed_secret": "369cb27892790b429dacabb4ee12cdfd63d6c250", "is_verified": false, - "line_number": 1633 + "line_number": 2050 + }, + { + "type": "Secret Keyword", + "filename": "src/frontend/src/locales/ja.json", + "hashed_secret": "b9743a370a7e12046cbb762dda96137a0327fc28", + "is_verified": false, + "line_number": 2060 } ], "src/frontend/src/locales/pt.json": [ @@ -5586,245 +6387,259 @@ "filename": "src/frontend/src/locales/pt.json", "hashed_secret": "f5256124567ff538827b07cd38077b4d2f0ff4cd", "is_verified": false, - "line_number": 90 + "line_number": 160 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/pt.json", "hashed_secret": "30ec8da443543f88f3717d8198a3ea4c07734e5f", "is_verified": false, - "line_number": 91 + "line_number": 161 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/pt.json", "hashed_secret": "8390eaf853b58ba7ac38db1b8a2cc0808e701547", "is_verified": false, - "line_number": 111 + "line_number": 181 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/pt.json", "hashed_secret": "6fc474866c39ce50d555b284bb6c530d22db3f7c", "is_verified": false, - "line_number": 120 + "line_number": 190 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/pt.json", "hashed_secret": "e2a8853c024be2da10167eb42b19c6cc259f66db", "is_verified": false, - "line_number": 121 - }, - { - "type": "Secret Keyword", - "filename": "src/frontend/src/locales/pt.json", - "hashed_secret": "15444730dd1d753e5ab5717d1dc9a76f1540352d", - "is_verified": false, - "line_number": 325 + "line_number": 191 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/pt.json", "hashed_secret": "6ab7275b94c1be125facd6df7ebdfee8b26931e3", "is_verified": false, - "line_number": 357 + "line_number": 396 + }, + { + "type": "Secret Keyword", + "filename": "src/frontend/src/locales/pt.json", + "hashed_secret": "da4345e5dde7d1d6f387ec90d089cb0a944843cf", + "is_verified": false, + "line_number": 397 + }, + { + "type": "Secret Keyword", + "filename": "src/frontend/src/locales/pt.json", + "hashed_secret": "15444730dd1d753e5ab5717d1dc9a76f1540352d", + "is_verified": false, + "line_number": 420 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/pt.json", "hashed_secret": "265a547151e5ac45c15a75c94d14dd585066e379", "is_verified": false, - "line_number": 388 + "line_number": 492 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/pt.json", "hashed_secret": "42f1178697edfac6f6b2532587187fdd33accaf0", "is_verified": false, - "line_number": 463 + "line_number": 564 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/pt.json", "hashed_secret": "60743e0ecf39ab99f572bb2f4358ce144499395c", "is_verified": false, - "line_number": 464 + "line_number": 566 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/pt.json", "hashed_secret": "e8d5154134abcd60165e058618f2cf069841ee38", "is_verified": false, - "line_number": 476 + "line_number": 582 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/pt.json", "hashed_secret": "1422160d3d897876d721df10805d9fe293add09d", "is_verified": false, - "line_number": 505 + "line_number": 610 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/pt.json", "hashed_secret": "cc0bedebf2fadcc1bfbfa9daf41bba27a2d9aad0", "is_verified": false, - "line_number": 512 + "line_number": 617 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/pt.json", "hashed_secret": "792615431c8645d5df08db0bf84f5db8014f4a17", "is_verified": false, - "line_number": 525 + "line_number": 632 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/pt.json", "hashed_secret": "861c6c413b2f9ca56854fb7602d3c690d8a1dc97", "is_verified": false, - "line_number": 676 + "line_number": 883 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/pt.json", "hashed_secret": "4306c81dbceadb0effaac422f16658897a8034ef", "is_verified": false, - "line_number": 956 + "line_number": 1220 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/pt.json", "hashed_secret": "539811754f4eced6174b2365b581aca032a29904", "is_verified": false, - "line_number": 957 + "line_number": 1221 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/pt.json", "hashed_secret": "8610717164ef598531238326ede1ac540dd7a74c", "is_verified": false, - "line_number": 1036 + "line_number": 1349 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/pt.json", "hashed_secret": "50e3a9595f402d5afdd0ee67c71b68cf57bab78d", "is_verified": false, - "line_number": 1105 + "line_number": 1419 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/pt.json", "hashed_secret": "29022bd1c2181fbd36940c13cc3fa70041b48ab6", "is_verified": false, - "line_number": 1265 + "line_number": 1580 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/pt.json", "hashed_secret": "924dffdc29e36152ac5c5ad72472d4012c453619", "is_verified": false, - "line_number": 1278 + "line_number": 1637 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/pt.json", "hashed_secret": "3cf10d8f342037e71cf0fa4f902939cce046db88", "is_verified": false, - "line_number": 1279 + "line_number": 1638 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/pt.json", "hashed_secret": "83107836c3fbb4f7126e1c62127d867f2115c66e", "is_verified": false, - "line_number": 1280 + "line_number": 1639 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/pt.json", "hashed_secret": "e5de519e1707a85ae531c311d440ee66c9d92013", "is_verified": false, - "line_number": 1300 + "line_number": 1660 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/pt.json", "hashed_secret": "5e210e2b1f3abec2110bc9be8e64d7f330fa1077", "is_verified": false, - "line_number": 1311 + "line_number": 1671 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/pt.json", "hashed_secret": "0f0b397ea447a3fa2ad71bf2275fef3c57c19ced", "is_verified": false, - "line_number": 1436 + "line_number": 1805 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/pt.json", "hashed_secret": "9a36a9b7c6bfc059b4f02372fff29d59a7d28956", "is_verified": false, - "line_number": 1449 + "line_number": 1818 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/pt.json", "hashed_secret": "d041f1238574c9fda80f329a69df103dd0362201", "is_verified": false, - "line_number": 1451 + "line_number": 1820 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/pt.json", "hashed_secret": "cb9c85cb748ddd0400375630f5ec0206759ddb89", "is_verified": false, - "line_number": 1454 + "line_number": 1823 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/pt.json", "hashed_secret": "0f426df5e9101c108190dccfd037a953d0d402f2", "is_verified": false, - "line_number": 1459 + "line_number": 1828 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/pt.json", "hashed_secret": "01817544892d96dedca2ad884fa493fea87ba133", "is_verified": false, - "line_number": 1475 + "line_number": 1844 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/pt.json", "hashed_secret": "187a0dc92fd69a86bd0e675941e7f1898e3b55e1", "is_verified": false, - "line_number": 1625 + "line_number": 2042 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/pt.json", "hashed_secret": "685a15b5a75fafecd74ad06561f50711e97d7275", "is_verified": false, - "line_number": 1626 + "line_number": 2043 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/pt.json", "hashed_secret": "47a5deeb29d9b4f9d88464d050560a7f7b294ddd", "is_verified": false, - "line_number": 1632 + "line_number": 2049 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/pt.json", "hashed_secret": "32c3af10cab241e0b425cebc42831cbaa236f1c6", "is_verified": false, - "line_number": 1633 + "line_number": 2050 + }, + { + "type": "Secret Keyword", + "filename": "src/frontend/src/locales/pt.json", + "hashed_secret": "4cb21cbeac2b9488b0fde6c6291caf37245c54c2", + "is_verified": false, + "line_number": 2060 } ], "src/frontend/src/locales/zh-Hans.json": [ @@ -5840,203 +6655,217 @@ "filename": "src/frontend/src/locales/zh-Hans.json", "hashed_secret": "7d4449172fe7f8214f3b91655c013aa2de3fc8aa", "is_verified": false, - "line_number": 91 + "line_number": 161 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/zh-Hans.json", "hashed_secret": "5df1d83e18c6e5903e3f4805f0af1415fd050ef7", "is_verified": false, - "line_number": 111 - }, - { - "type": "Secret Keyword", - "filename": "src/frontend/src/locales/zh-Hans.json", - "hashed_secret": "0ecfe8c3af9e1c44ecb32a27b2e873ea862d972a", - "is_verified": false, - "line_number": 322 + "line_number": 181 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/zh-Hans.json", "hashed_secret": "3244c8c5d271a1057fc569daacc04432f9c870f7", "is_verified": false, - "line_number": 354 + "line_number": 396 + }, + { + "type": "Secret Keyword", + "filename": "src/frontend/src/locales/zh-Hans.json", + "hashed_secret": "e15b9952a55ccd2f94bf52984458b57a7b1f8fdd", + "is_verified": false, + "line_number": 397 + }, + { + "type": "Secret Keyword", + "filename": "src/frontend/src/locales/zh-Hans.json", + "hashed_secret": "0ecfe8c3af9e1c44ecb32a27b2e873ea862d972a", + "is_verified": false, + "line_number": 420 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/zh-Hans.json", "hashed_secret": "8ccc7338429262ed661178a7bc14e6d9f0d86661", "is_verified": false, - "line_number": 381 + "line_number": 492 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/zh-Hans.json", "hashed_secret": "15017ab3ec0dda97b754524421ed4dcff8bc2252", "is_verified": false, - "line_number": 445 + "line_number": 564 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/zh-Hans.json", "hashed_secret": "4d24cbb80b72bf05ad9710c3a801359cf417a91a", "is_verified": false, - "line_number": 458 + "line_number": 582 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/zh-Hans.json", "hashed_secret": "d9bbe5c31c394c33128697ada5ad6bb2386b2d50", "is_verified": false, - "line_number": 486 + "line_number": 610 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/zh-Hans.json", "hashed_secret": "47d79393f1549ed6bc311a334cda7f88bea287cc", "is_verified": false, - "line_number": 493 + "line_number": 617 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/zh-Hans.json", "hashed_secret": "596d019fb62944b96319dc89f44d017cd8fb7152", "is_verified": false, - "line_number": 506 + "line_number": 632 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/zh-Hans.json", "hashed_secret": "f316aecc6ce46d58af4c90ec4c007a3cb2339949", "is_verified": false, - "line_number": 657 + "line_number": 883 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/zh-Hans.json", "hashed_secret": "8559e3a2fe94eb8b5201083eb5e4f50680934376", "is_verified": false, - "line_number": 937 + "line_number": 1220 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/zh-Hans.json", "hashed_secret": "bbfbbb23d7af0d8f4b452ca1cf95af7bbe98b547", "is_verified": false, - "line_number": 938 + "line_number": 1221 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/zh-Hans.json", "hashed_secret": "925ec0cb3d802b1c10bd74612833338e38f123e9", "is_verified": false, - "line_number": 1006 + "line_number": 1349 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/zh-Hans.json", "hashed_secret": "6d09a8bbd2e67a11d0f0be76d5c2f1bc239327bc", "is_verified": false, - "line_number": 1074 + "line_number": 1419 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/zh-Hans.json", "hashed_secret": "00e66990421091c8a0f9084a1997c317ffe34000", "is_verified": false, - "line_number": 1234 + "line_number": 1580 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/zh-Hans.json", "hashed_secret": "d370647062f8a9ebf57183122e6aacd46c2a7bda", "is_verified": false, - "line_number": 1247 + "line_number": 1637 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/zh-Hans.json", "hashed_secret": "7d2d5daebdd522b7de7fab94e153cbea4620c369", "is_verified": false, - "line_number": 1249 + "line_number": 1639 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/zh-Hans.json", "hashed_secret": "74a3dd23222f2bc1888171506f585281009f79a4", "is_verified": false, - "line_number": 1280 + "line_number": 1671 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/zh-Hans.json", "hashed_secret": "c10e8dbe79654ae8ed496c4c50f5e188b7924a4e", "is_verified": false, - "line_number": 1405 + "line_number": 1805 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/zh-Hans.json", "hashed_secret": "7223cfc50b72fe9b091b46275f561526aba9e705", "is_verified": false, - "line_number": 1418 + "line_number": 1818 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/zh-Hans.json", "hashed_secret": "4aa9a3231780af9a37413cb7034ecdf72d43cfec", "is_verified": false, - "line_number": 1420 + "line_number": 1820 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/zh-Hans.json", "hashed_secret": "68af7627d36cc6b923f5928a198165857f1ba5f1", "is_verified": false, - "line_number": 1423 + "line_number": 1823 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/zh-Hans.json", "hashed_secret": "7acd3659ef48c980ce4aef1d0f2f218ff25efc89", "is_verified": false, - "line_number": 1428 + "line_number": 1828 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/zh-Hans.json", "hashed_secret": "7443c6e0ef4c013461140fb1aa2a7a60b40a0b89", "is_verified": false, - "line_number": 1444 + "line_number": 1844 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/zh-Hans.json", "hashed_secret": "3c274d81d83ceba5bfaaaf2ac4f6b0aedcf431a0", "is_verified": false, - "line_number": 1594 + "line_number": 2042 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/zh-Hans.json", "hashed_secret": "583ddc85a613ceef2e54f9d2251113f3acef73a3", "is_verified": false, - "line_number": 1595 + "line_number": 2043 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/zh-Hans.json", "hashed_secret": "8494b7db80f8bfedeef8cc5697bed5339cd1a4ee", "is_verified": false, - "line_number": 1601 + "line_number": 2049 }, { "type": "Secret Keyword", "filename": "src/frontend/src/locales/zh-Hans.json", "hashed_secret": "d45af2467cb991008a273eb0c4590fa9a96fc497", "is_verified": false, - "line_number": 1602 + "line_number": 2050 + }, + { + "type": "Secret Keyword", + "filename": "src/frontend/src/locales/zh-Hans.json", + "hashed_secret": "8da5daf1ef780fe5e37ae02bee48cbdb023c7101", + "is_verified": false, + "line_number": 2060 } ], "src/frontend/src/modals/IOModal/components/chatView/chatInput/components/voice-assistant/voice-assistant.tsx": [ @@ -6045,7 +6874,7 @@ "filename": "src/frontend/src/modals/IOModal/components/chatView/chatInput/components/voice-assistant/voice-assistant.tsx", "hashed_secret": "02ecb94373bfb3dfe827ca18409f50b016e8302a", "is_verified": false, - "line_number": 312, + "line_number": 314, "is_secret": false }, { @@ -6053,7 +6882,7 @@ "filename": "src/frontend/src/modals/IOModal/components/chatView/chatInput/components/voice-assistant/voice-assistant.tsx", "hashed_secret": "1b447eca6f69c26354668f050d0c2cc893605aa5", "is_verified": false, - "line_number": 314, + "line_number": 316, "is_secret": false } ], @@ -6267,24 +7096,63 @@ "filename": "src/frontend/tests/core/features/user-flow-state-cleanup.spec.ts", "hashed_secret": "66904568acfa1e59b8b072cbe602e0ba3688019c", "is_verified": false, - "line_number": 41, + "line_number": 46, "is_secret": false } ], + "src/frontend/tests/utils/constants/testIds.ts": [ + { + "type": "Secret Keyword", + "filename": "src/frontend/tests/utils/constants/testIds.ts", + "hashed_secret": "a8efc9d2c3fcebecc1b27b8a5b68d4d673e36e57", + "is_verified": false, + "line_number": 52 + } + ], + "src/frontend/tests/utils/constants/texts.ts": [ + { + "type": "Secret Keyword", + "filename": "src/frontend/tests/utils/constants/texts.ts", + "hashed_secret": "def70f3dcbf1bcbe925c6d838543917bfc924064", + "is_verified": false, + "line_number": 59 + }, + { + "type": "Secret Keyword", + "filename": "src/frontend/tests/utils/constants/texts.ts", + "hashed_secret": "8be3c943b1609fffbfc51aad666d0a04adf83c9d", + "is_verified": false, + "line_number": 72 + }, + { + "type": "Secret Keyword", + "filename": "src/frontend/tests/utils/constants/texts.ts", + "hashed_secret": "68ffa1093987b79e528aa879ad7a47c7d03b3e37", + "is_verified": false, + "line_number": 75 + } + ], "src/lfx/README.md": [ { "type": "Secret Keyword", "filename": "src/lfx/README.md", "hashed_secret": "7d268ec0fc8a845ff8e1b1af5317ee5dc164808b", "is_verified": false, - "line_number": 80 + "line_number": 102 }, { "type": "Secret Keyword", "filename": "src/lfx/README.md", "hashed_secret": "ec3810e10fb78db55ce38b9c18d1c3eb1db739e0", "is_verified": false, - "line_number": 117 + "line_number": 143 + }, + { + "type": "Secret Keyword", + "filename": "src/lfx/README.md", + "hashed_secret": "4595b1de33969ff29db6a0e28d1892b8a2e5ce2e", + "is_verified": false, + "line_number": 405 } ], "src/lfx/src/lfx/_assets/component_index.json": [ @@ -6293,47 +7161,47 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "46df7d934ead26ee1c954d5e997acc3b157d56c4", "is_verified": false, - "line_number": 302 + "line_number": 303 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "30a2a8335760cb94085e13994c660605216798b4", "is_verified": false, - "line_number": 479 + "line_number": 480 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "ae599515f76955f80e617e5094977bc3e34ad6ee", "is_verified": false, - "line_number": 620 + "line_number": 621 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "29864a43636a47b564bcb813c6b274a94b974e58", "is_verified": false, - "line_number": 930 + "line_number": 931 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "790f32ea451dcd1b0439e5039709769d582fbfe3", "is_verified": false, - "line_number": 1271 + "line_number": 1272 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "9469330d1ca2f99e4a225fe4cac886ea0b96b7e1", "is_verified": false, - "line_number": 1464 + "line_number": 1465 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", - "hashed_secret": "697ccfba2c15c7cd8cf6307fd83a491b5c2c9e3e", + "hashed_secret": "6ec4fa9c659c1a8f406814e5482dee2e6588d335", "is_verified": false, "line_number": 2008 }, @@ -6345,12 +7213,19 @@ "line_number": 3110, "is_secret": false }, + { + "type": "Hex High Entropy String", + "filename": "src/lfx/src/lfx/_assets/component_index.json", + "hashed_secret": "858fd33efe75ddf1e6b28e2cba5f3e0a5ba76f7c", + "is_verified": false, + "line_number": 3583 + }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "7014798bb60656a38da4a856545a06c773976112", "is_verified": false, - "line_number": 4386, + "line_number": 5062, "is_secret": false }, { @@ -6358,7 +7233,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "36ec1308f12e9f599e3845a6ad07d6591fb0c301", "is_verified": false, - "line_number": 4809, + "line_number": 5485, "is_secret": false }, { @@ -6366,14 +7241,14 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "ef44ace2f949ed2f7fe71ef6441c1053a73cc004", "is_verified": false, - "line_number": 5049 + "line_number": 5725 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "59d43c509612f89c187f862266890ae0dd5fbb9a", "is_verified": false, - "line_number": 5391, + "line_number": 6067, "is_secret": false }, { @@ -6381,7 +7256,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "597868714ac401a26b57be0f857457eeb984be18", "is_verified": false, - "line_number": 8627, + "line_number": 9145, "is_secret": false }, { @@ -6389,7 +7264,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "a178830480afc434270a7a53512d97758ec6d139", "is_verified": false, - "line_number": 8887, + "line_number": 9405, "is_secret": false }, { @@ -6397,7 +7272,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "794ae8fea8a51838b63423486552f5398a47e6fc", "is_verified": false, - "line_number": 9804, + "line_number": 10322, "is_secret": false }, { @@ -6405,7 +7280,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "97e68220b094141268772b8b601fa6cd7432de92", "is_verified": false, - "line_number": 10092, + "line_number": 10610, "is_secret": false }, { @@ -6413,7 +7288,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "a5af47522dc8a08746c380da81917bdd6eda057a", "is_verified": false, - "line_number": 10732, + "line_number": 11250, "is_secret": false }, { @@ -6421,7 +7296,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "9f66cbc518bb79dc6f0a78af0aa52bbadefe2399", "is_verified": false, - "line_number": 11209, + "line_number": 11727, "is_secret": false }, { @@ -6429,7 +7304,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "b3c2f9fda15f2d3816c7edc667bb24267be41a58", "is_verified": false, - "line_number": 12213, + "line_number": 12731, "is_secret": false }, { @@ -6437,7 +7312,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "72be8a21dd766c795332576419e6864eddc5db4e", "is_verified": false, - "line_number": 12444, + "line_number": 12962, "is_secret": false }, { @@ -6445,21 +7320,21 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "0b6acfe9ab06f9489b4d60aec671f88de3fe9bd3", "is_verified": false, - "line_number": 12885 + "line_number": 13403 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "cf172e0e6081b9a5187b3ad7afca6f184dd3481d", "is_verified": false, - "line_number": 13249 + "line_number": 13767 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "1659f95bebec345a9e20e32fa71e8eac4f32f6a2", "is_verified": false, - "line_number": 14756, + "line_number": 15274, "is_secret": false }, { @@ -6467,7 +7342,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "15e5f792860e53987a756bed19fba1204a671e19", "is_verified": false, - "line_number": 15409, + "line_number": 15927, "is_secret": false }, { @@ -6475,7 +7350,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "91700b2378ff5d682d1d57cff40818586609015d", "is_verified": false, - "line_number": 16715, + "line_number": 17233, "is_secret": false }, { @@ -6483,7 +7358,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "4b9838e8ff9ae89c3d23d3c853e0d07935618f00", "is_verified": false, - "line_number": 18674, + "line_number": 19192, "is_secret": false }, { @@ -6491,7 +7366,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "1aa0d90add98cf00965a327eed79bf65d589e3ce", "is_verified": false, - "line_number": 19327, + "line_number": 19845, "is_secret": false }, { @@ -6499,7 +7374,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "3698dc86868353e8ff5ed4564f78d45f1e6c08b7", "is_verified": false, - "line_number": 19980, + "line_number": 20498, "is_secret": false }, { @@ -6507,7 +7382,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "def35d315dd1ab5b0b4a05fc66847f6b73d0d853", "is_verified": false, - "line_number": 23245, + "line_number": 23763, "is_secret": false }, { @@ -6515,7 +7390,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "932fd84fba062a90506c3086945b53d4a6a3f169", "is_verified": false, - "line_number": 24551, + "line_number": 25069, "is_secret": false }, { @@ -6523,7 +7398,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "d1a66c6f4de1b56cc6e24cb0a9c78f5ba0230f56", "is_verified": false, - "line_number": 25204, + "line_number": 25722, "is_secret": false }, { @@ -6531,7 +7406,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "ddd35c43ce79e9b7ffc5f2894a1a92ad4da3297d", "is_verified": false, - "line_number": 25857, + "line_number": 26375, "is_secret": false }, { @@ -6539,7 +7414,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "bfa2c52c96d82a086f93287e90c3c889e292989e", "is_verified": false, - "line_number": 26510, + "line_number": 27028, "is_secret": false }, { @@ -6547,7 +7422,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "ac40271e91c0d84c26bf3613a94545872a801998", "is_verified": false, - "line_number": 29775, + "line_number": 30293, "is_secret": false }, { @@ -6555,7 +7430,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "691ee8aa156c92e8ae67859d9463020d1d5bec11", "is_verified": false, - "line_number": 32387, + "line_number": 32905, "is_secret": false }, { @@ -6563,7 +7438,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "5c33c0e3b39aa99ab095bf885b5f0688a9332b95", "is_verified": false, - "line_number": 33040, + "line_number": 33558, "is_secret": false }, { @@ -6571,7 +7446,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "7bfbc3a0161bb7553a4e14c1eb459d30cf104fdf", "is_verified": false, - "line_number": 33693, + "line_number": 34211, "is_secret": false }, { @@ -6579,7 +7454,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "da7592fd328658e5e783f4d16c62d1d6f9d3acd4", "is_verified": false, - "line_number": 34346, + "line_number": 34864, "is_secret": false }, { @@ -6587,7 +7462,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "f0e0ec0ff365d37b4fe860d63a9625ae529d3079", "is_verified": false, - "line_number": 34999, + "line_number": 35517, "is_secret": false }, { @@ -6595,7 +7470,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "23ce66526235ae0035cd8da3920a63c12c1c137a", "is_verified": false, - "line_number": 36958, + "line_number": 37476, "is_secret": false }, { @@ -6603,7 +7478,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "a75703e0eb9d3a13d977bf04fa3cc42e9d3c94a2", "is_verified": false, - "line_number": 40223, + "line_number": 40741, "is_secret": false }, { @@ -6611,7 +7486,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "2efc38920659af83e871e71004839171d3eaeba4", "is_verified": false, - "line_number": 42182, + "line_number": 42700, "is_secret": false }, { @@ -6619,7 +7494,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "4f514a159d49488561a2efe8585871ce25141548", "is_verified": false, - "line_number": 42835, + "line_number": 43353, "is_secret": false }, { @@ -6627,7 +7502,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "adb1d675969fb13f1d752232026b9872475aca4b", "is_verified": false, - "line_number": 46100, + "line_number": 46618, "is_secret": false }, { @@ -6635,7 +7510,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "99b6e13d3c63e4f323776aec40dda0551bc0aa56", "is_verified": false, - "line_number": 46753, + "line_number": 47271, "is_secret": false }, { @@ -6643,7 +7518,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "914bd29a063d63f5cda65b9193612041bf1b04e9", "is_verified": false, - "line_number": 49365, + "line_number": 49883, "is_secret": false }, { @@ -6651,7 +7526,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "dca20b45dc15f99f985e0f87aacf5569b014ede8", "is_verified": false, - "line_number": 50018, + "line_number": 50536, "is_secret": false }, { @@ -6659,7 +7534,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "9d48b00c8700d1dcab9108609465af7112840243", "is_verified": false, - "line_number": 50671, + "line_number": 51189, "is_secret": false }, { @@ -6667,7 +7542,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "e72cb4e0e589831cbbd71514f5b6db7f0d09fd37", "is_verified": false, - "line_number": 53283, + "line_number": 53801, "is_secret": false }, { @@ -6675,7 +7550,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "753c0fdfc1e518b8c44cd464fb28080f3f94a9f4", "is_verified": false, - "line_number": 54168, + "line_number": 54686, "is_secret": false }, { @@ -6683,7 +7558,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "ab9b46808af9e1164b7a21d946a2cefcbfa9b769", "is_verified": false, - "line_number": 54847, + "line_number": 55365, "is_secret": false }, { @@ -6691,7 +7566,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "f4a6791157ee757125b9f46c2cf72ea19cdfb50e", "is_verified": false, - "line_number": 55295, + "line_number": 55813, "is_secret": false }, { @@ -6699,37 +7574,29 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "23a1f3524f7b992e6a225072ec63fc780f21da34", "is_verified": false, - "line_number": 55529, + "line_number": 56047, "is_secret": false }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", - "hashed_secret": "4f13243a41377053bdff4112389d0b55d5d841e2", + "hashed_secret": "cc2bfc63edd3abb13672afafea4cc92867fc975f", "is_verified": false, - "line_number": 56188 + "line_number": 56705 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", - "hashed_secret": "ecdbe30d19e36761df3620b37270f23c8e3eaa4c", + "hashed_secret": "e1669ca3ce86dda828b7f754b565ff79de818e5f", "is_verified": false, - "line_number": 56986 + "line_number": 57474 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "9a96eb0a8598688b358bdb4b37cdd0019f9934c7", "is_verified": false, - "line_number": 57714, - "is_secret": false - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/component_index.json", - "hashed_secret": "f846d79058594083280ddae8a1dbce083aaf6427", - "is_verified": false, - "line_number": 58070, + "line_number": 58202, "is_secret": false }, { @@ -6737,7 +7604,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "fb0e32db4013340e8e096da4d7cba00c099d9542", "is_verified": false, - "line_number": 58203, + "line_number": 58691, "is_secret": false }, { @@ -6745,14 +7612,14 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "d2d44958e9ddf0f3c8f9019ce3f56548e801c023", "is_verified": false, - "line_number": 59070 + "line_number": 59575 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "7863a3a0eb2ed4e19329374549df3cef1ab7ed16", "is_verified": false, - "line_number": 59950, + "line_number": 60455, "is_secret": false }, { @@ -6760,14 +7627,14 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "eca5e6b1b96b09f30d372961bede3f8bbbe09965", "is_verified": false, - "line_number": 61155 + "line_number": 61660 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "41da17b522aa582bfb292d52e8dd307bada14400", "is_verified": false, - "line_number": 61956, + "line_number": 62461, "is_secret": false }, { @@ -6775,7 +7642,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "3632913dea26578a835e7c77ab7f4293d6ec1fe6", "is_verified": false, - "line_number": 62619, + "line_number": 63124, "is_secret": false }, { @@ -6783,7 +7650,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "0321ad34ab13e2dee03faa30b7645b932f24c4d6", "is_verified": false, - "line_number": 63809, + "line_number": 64221, "is_secret": false }, { @@ -6791,30 +7658,15 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "cb2623c527dbce4b4e4ac56407979cad7149ea9a", "is_verified": false, - "line_number": 64071, + "line_number": 64483, "is_secret": false }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/component_index.json", - "hashed_secret": "427a8b3d029b9d8020cf1648330b5b0a01eb7e65", - "is_verified": false, - "line_number": 65787, - "is_secret": false - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/component_index.json", - "hashed_secret": "87d712244041d657ff8a9655050879f99a3fb359", - "is_verified": false, - "line_number": 66176 - }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "2fd7f5b7d8a18e5143661e9f7b51a5d9d36a917a", "is_verified": false, - "line_number": 67002, + "line_number": 65930, "is_secret": false }, { @@ -6822,14 +7674,14 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "100955eed8ccc46c514985ee3e53a31e4dbf0cb9", "is_verified": false, - "line_number": 67665 + "line_number": 66593 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "5bc62a0f48f3bd1f4c9aa548fba2a0b0234fbbd8", "is_verified": false, - "line_number": 68507, + "line_number": 67435, "is_secret": false }, { @@ -6837,76 +7689,65 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "af246ca4758a5700d172533c40ff71522ae42d99", "is_verified": false, - "line_number": 68637, + "line_number": 67565, "is_secret": false }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", - "hashed_secret": "6013d04817cc58f85a52de666af48e6e55b526f0", + "hashed_secret": "2588beeb76e6049e30e6b66eb3772e11bf1a021c", "is_verified": false, - "line_number": 69782 + "line_number": 68708 + }, + { + "type": "Hex High Entropy String", + "filename": "src/lfx/src/lfx/_assets/component_index.json", + "hashed_secret": "d8bf803f4c4ff97bd7787d1ac70d10abb33ca9ae", + "is_verified": false, + "line_number": 68864 + }, + { + "type": "Hex High Entropy String", + "filename": "src/lfx/src/lfx/_assets/component_index.json", + "hashed_secret": "7439b4205e5c02e8147bbc3fcae3306e5439040a", + "is_verified": false, + "line_number": 69403 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "dea7780a5450c1b04313cf7731f3b066d158ad77", "is_verified": false, - "line_number": 70597 + "line_number": 70620 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "cc90b9344d8dbcab46509c000a71b9e2e720d87d", "is_verified": false, - "line_number": 71075 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/component_index.json", - "hashed_secret": "a0378f1e9fbdee2f5792824f32acc16f95534180", - "is_verified": false, - "line_number": 71548, - "is_secret": false - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/component_index.json", - "hashed_secret": "38245225908230e946fe961530d7b9bceca0d939", - "is_verified": false, - "line_number": 72154, - "is_secret": false - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/component_index.json", - "hashed_secret": "1d3051aec8271f45991f72a68fc9be099d3e92c1", - "is_verified": false, - "line_number": 72360, - "is_secret": false + "line_number": 71098 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "fb5c8ecafee0b2788e395c40f95b13eb45b464d8", "is_verified": false, - "line_number": 73227, + "line_number": 72441, "is_secret": false }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", - "hashed_secret": "d377ef5b36367a118f28c20eb126e6ec376e02ea", + "hashed_secret": "b5aee2b8804febfde4cf08f0400ca2905c40682d", "is_verified": false, - "line_number": 73493, - "is_secret": false + "line_number": 72707 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "f0b2022fc412b5599ddcb48c6f8f87c5a53c26af", "is_verified": false, - "line_number": 74356, + "line_number": 73570, "is_secret": false }, { @@ -6914,7 +7755,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "78f473648929d4b9dd716a3874df23eca9a2d9ed", "is_verified": false, - "line_number": 74504, + "line_number": 73718, "is_secret": false }, { @@ -6922,7 +7763,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "446fa65c4cc6c235fabac8cb7d9241fb018514b8", "is_verified": false, - "line_number": 75872, + "line_number": 75089, "is_secret": false }, { @@ -6930,7 +7771,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "54be28b91891ca9ef7b85502a59b32a2a03a5cb9", "is_verified": false, - "line_number": 76728, + "line_number": 75945, "is_secret": false }, { @@ -6938,7 +7779,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "60f948a394e2811370ba0bb6849777f217ab5274", "is_verified": false, - "line_number": 76901, + "line_number": 76118, "is_secret": false }, { @@ -6946,7 +7787,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "54ed260e3bc31bc77ee06754dff850981d39a66c", "is_verified": false, - "line_number": 77599, + "line_number": 76816, "is_secret": false }, { @@ -6954,14 +7795,21 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "d6e6d7b4b115cd3b9d172623199f8c403055fecc", "is_verified": false, - "line_number": 77874 + "line_number": 77091 + }, + { + "type": "Hex High Entropy String", + "filename": "src/lfx/src/lfx/_assets/component_index.json", + "hashed_secret": "bb428b655fb7fdf412882c7975b07d17dd343b8b", + "is_verified": false, + "line_number": 77365 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "8b7be7f7fae86960989b939578d36ce617b498c6", "is_verified": false, - "line_number": 78536, + "line_number": 77759, "is_secret": false }, { @@ -6969,7 +7817,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "a6c79dfeb177d34d195c2be48cc62800e629f115", "is_verified": false, - "line_number": 79059, + "line_number": 78282, "is_secret": false }, { @@ -6977,7 +7825,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "ef417aa1e71aee527bd6fa12f4490f7d960ec54f", "is_verified": false, - "line_number": 79259, + "line_number": 78482, "is_secret": false }, { @@ -6985,7 +7833,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "a356ce34c2d87126e0170adbec7077e4421af5a5", "is_verified": false, - "line_number": 80115, + "line_number": 79338, "is_secret": false }, { @@ -6993,7 +7841,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "ccc2dbe82ed3362b249ba70e1bb009cebe0896da", "is_verified": false, - "line_number": 81065, + "line_number": 80258, "is_secret": false }, { @@ -7001,14 +7849,14 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "38e0a75d25980732f3822d2dbe70100bb45f7776", "is_verified": false, - "line_number": 81234 + "line_number": 80427 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "6adc7a1a0903ddb6445918094b91181d7a0ad97b", "is_verified": false, - "line_number": 81385, + "line_number": 80578, "is_secret": false }, { @@ -7016,21 +7864,21 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "05d0ff0999b7811f8ff071b6f5dc32f5ae247761", "is_verified": false, - "line_number": 81538 + "line_number": 80730 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "1479a9069ddd49f42039efa05395334ad689b340", "is_verified": false, - "line_number": 81800 + "line_number": 80963 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "aa89465172bb84c366111aeeac493739fa195482", "is_verified": false, - "line_number": 82475, + "line_number": 81638, "is_secret": false }, { @@ -7038,21 +7886,21 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "ff086e8fd35b9e537814cb5ac04d10ec05c94f02", "is_verified": false, - "line_number": 83114 + "line_number": 82246 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "b6614a286d3c09a4d6f972ed0e3b1a55681291d2", "is_verified": false, - "line_number": 83882 + "line_number": 82985 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "9373f1ccd9980640fbcec9c685d34eac3c4b9867", "is_verified": false, - "line_number": 84454, + "line_number": 83527, "is_secret": false }, { @@ -7060,84 +7908,91 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "e7d81734cc31a30009dfe21648a9b451db20b26c", "is_verified": false, - "line_number": 84559 + "line_number": 83632 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "e9e7e5965c4c11af0b9a7f7a9ac475b1035d8dfa", "is_verified": false, - "line_number": 84765 + "line_number": 83838 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "c6a8f64789fbf7f87ab31562cae511b75b12a9de", "is_verified": false, - "line_number": 84961 + "line_number": 84034 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", - "hashed_secret": "587ab6e0dceacde848002b696bf0b6987b7faaa9", + "hashed_secret": "1151aa85f98a9d52c47f4ef6c1eff7d0505cd6a9", "is_verified": false, - "line_number": 85525 + "line_number": 84597 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "1a6049bfe4e287d8b253d70a298ac6c120a009e8", "is_verified": false, - "line_number": 85917 + "line_number": 84960 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "60bbe883679e9c5ffdd59dbe0f648ab932d43894", "is_verified": false, - "line_number": 86075 + "line_number": 85117 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "d055c1cb1713ebd8761a419fc69f22251cba60c1", "is_verified": false, - "line_number": 86336 + "line_number": 85348 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "67d247104edf3aeb0788e153e8a5f1f2cdb2aa54", "is_verified": false, - "line_number": 87026 + "line_number": 86009 + }, + { + "type": "Hex High Entropy String", + "filename": "src/lfx/src/lfx/_assets/component_index.json", + "hashed_secret": "500215e2dc325b8c6ef4619c7a9953c3c8b34387", + "is_verified": false, + "line_number": 86675 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "c9ce51e50c6ffd3b77ff3903f8ccb33f079edb93", "is_verified": false, - "line_number": 87983 + "line_number": 86983 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "7fe6e271898f4d9d4790d69df9b6f04b75cd1a9d", "is_verified": false, - "line_number": 88515 + "line_number": 87515 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "13f728be4fd927580a98667bcd624f511f459de0", "is_verified": false, - "line_number": 88799 + "line_number": 87799 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "3b991cdd2510d7fd1de8b025f0c7cbb9ac84b931", "is_verified": false, - "line_number": 89116, + "line_number": 88116, "is_secret": false }, { @@ -7145,59 +8000,57 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "573b6322edd45ab8e47491791f0909764e4a2f37", "is_verified": false, - "line_number": 89637, + "line_number": 88637, "is_secret": false }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", - "hashed_secret": "8712dea5a30e8180a3f3cfb94b94dd2dce7db414", + "hashed_secret": "2098350316c1e9de52d2630f82eba3a35e04a8cc", "is_verified": false, - "line_number": 89914, - "is_secret": false + "line_number": 90350 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "576b913cccfba00adedec14117889ded0c4c2685", "is_verified": false, - "line_number": 92341 + "line_number": 91324 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", - "hashed_secret": "b8205f6293ceac2bf593580250e865708c8a9aeb", + "hashed_secret": "e16489ca34cf23e49a9171404db6d59748d46286", "is_verified": false, - "line_number": 92700 + "line_number": 91684 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", - "hashed_secret": "47ce443fa2c6d2894c896af5bf215e058b9211a7", + "hashed_secret": "a121a58418212de709f6fdb31f0e7153c074fa98", "is_verified": false, - "line_number": 92924 + "line_number": 91935 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "ab71233c0b8ad3a6e0dfd0cd33ffd640bc39f4c0", "is_verified": false, - "line_number": 93430 + "line_number": 92441 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", - "hashed_secret": "4676cd86733e19676c0704d55f548833f5273643", + "hashed_secret": "abb241e714ffcf58535adf4789d908118e40e9e6", "is_verified": false, - "line_number": 93705, - "is_secret": false + "line_number": 92716 }, { "type": "Private Key", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "1348b145fa1a555461c1b790a2f66614781091e9", "is_verified": false, - "line_number": 93784, + "line_number": 92795, "is_secret": false }, { @@ -7205,7 +8058,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "f16b56e2e46c4df6bf412a7a9b90c86957016575", "is_verified": false, - "line_number": 94190, + "line_number": 93201, "is_secret": false }, { @@ -7213,14 +8066,14 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "362e18a5d235523febf382bcf21836e271c435c3", "is_verified": false, - "line_number": 95229 + "line_number": 94240 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "dede8930d7418d092a12d114de08e444bf0dd82e", "is_verified": false, - "line_number": 96216, + "line_number": 95227, "is_secret": false }, { @@ -7228,7 +8081,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "2a6863fb102cdb7c5f83b6afd00a794efb701566", "is_verified": false, - "line_number": 96544, + "line_number": 95555, "is_secret": false }, { @@ -7236,7 +8089,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "4048123bacfc4d262ce85016a54ae55c8063edeb", "is_verified": false, - "line_number": 96777, + "line_number": 95788, "is_secret": false }, { @@ -7244,7 +8097,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "89a477e59f5dec443fcb5e0487bc4816bba70cad", "is_verified": false, - "line_number": 96960, + "line_number": 95971, "is_secret": false }, { @@ -7252,7 +8105,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "3de7722ca43ab9676c384eb479950083fb2385bb", "is_verified": false, - "line_number": 97794, + "line_number": 96805, "is_secret": false }, { @@ -7260,22 +8113,21 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "392387c9ad6b316839f2e2add73f8ac8ce48df9d", "is_verified": false, - "line_number": 98350 + "line_number": 97361 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", - "hashed_secret": "5ab5903f6c15a46a71c8db55e70119352304cc15", + "hashed_secret": "37f94bbd57740bacd5f9b1b335f3c939f10917ee", "is_verified": false, - "line_number": 99110, - "is_secret": false + "line_number": 98121 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "4311a7e1eaf728d4f31467084f690eff7493a9e4", "is_verified": false, - "line_number": 99693, + "line_number": 98704, "is_secret": false }, { @@ -7283,7 +8135,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "778447ca63a67ae59fea8307b5c436abe9ebeb4f", "is_verified": false, - "line_number": 100021, + "line_number": 99032, "is_secret": false }, { @@ -7291,7 +8143,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "a229317aa176166d90f06d566b71932cff018638", "is_verified": false, - "line_number": 100207, + "line_number": 99218, "is_secret": false }, { @@ -7299,14 +8151,14 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "3f3646f2abbfff91cf6323ae334975615368d647", "is_verified": false, - "line_number": 101164 + "line_number": 100175 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "f11f7e5870cc432ebcfeeca740aa4d4c351a3d95", "is_verified": false, - "line_number": 101985, + "line_number": 100996, "is_secret": false }, { @@ -7314,7 +8166,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "39a0fb1555a8bcd605b65b7b76dc3af2652d1bb8", "is_verified": false, - "line_number": 102113, + "line_number": 101124, "is_secret": false }, { @@ -7322,7 +8174,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "6516fc2579d674314a52e49462a84159df8479d9", "is_verified": false, - "line_number": 102298, + "line_number": 101309, "is_secret": false }, { @@ -7330,7 +8182,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "9d8a13c0d939f6b5790c6cb248c86f0a4aecc3e1", "is_verified": false, - "line_number": 102463, + "line_number": 101474, "is_secret": false }, { @@ -7338,7 +8190,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "c89fdd11b805574e2ba8910cf63c4273044b887c", "is_verified": false, - "line_number": 102693, + "line_number": 101704, "is_secret": false }, { @@ -7346,7 +8198,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "d7b281574944c11832ceba7860689cc5a6606a56", "is_verified": false, - "line_number": 102816, + "line_number": 101827, "is_secret": false }, { @@ -7354,7 +8206,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "7f06239cd274b6930ed82b15c617c6bee4e455aa", "is_verified": false, - "line_number": 103447, + "line_number": 102458, "is_secret": false }, { @@ -7362,7 +8214,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "162232a42f9158e82bb9cd3bac15ff2b2d7efc59", "is_verified": false, - "line_number": 103587, + "line_number": 102598, "is_secret": false }, { @@ -7370,7 +8222,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "76d1ef48b3fa8990b7a1aff6a177e5a5b2d018f8", "is_verified": false, - "line_number": 103719, + "line_number": 102730, "is_secret": false }, { @@ -7378,7 +8230,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "efa90513d8e6348d4005c33485f2981bb2cc3411", "is_verified": false, - "line_number": 103964, + "line_number": 102975, "is_secret": false }, { @@ -7386,7 +8238,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "df722750079d5f4eafa6946825f9dbc2dbb50330", "is_verified": false, - "line_number": 104180, + "line_number": 103191, "is_secret": false }, { @@ -7394,22 +8246,15 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "cb9c3fb93bf299a1eeaa8085a06e791f72d1c245", "is_verified": false, - "line_number": 104938, + "line_number": 103949, "is_secret": false }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/component_index.json", - "hashed_secret": "35e291e7311fd649b14b26dc15467ec2a77002d1", - "is_verified": false, - "line_number": 105259 - }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "cd50293b35634a61add9cbfeb9e48fbd44e78bc3", "is_verified": false, - "line_number": 106008, + "line_number": 105019, "is_secret": false }, { @@ -7417,7 +8262,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "b016c72dac43dd6eec034d8b49aa1ded1cc0c6fa", "is_verified": false, - "line_number": 106250, + "line_number": 105261, "is_secret": false }, { @@ -7425,7 +8270,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "72979300428bd6d483243f5d1cb7430ed1ebf6d3", "is_verified": false, - "line_number": 106588, + "line_number": 105599, "is_secret": false }, { @@ -7433,22 +8278,15 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "08509f7cd25c76dc5ca97e64d21478a617fa193b", "is_verified": false, - "line_number": 106830, + "line_number": 105841, "is_secret": false }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/component_index.json", - "hashed_secret": "3aca1b93acb7f31881d4a1bc366baa64cd0d6eb4", - "is_verified": false, - "line_number": 108408 - }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "2dd96ae1cb8802018fb2f6a27926bb5f78957fb0", "is_verified": false, - "line_number": 108555, + "line_number": 107420, "is_secret": false }, { @@ -7456,49 +8294,35 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "d2f0ff9062fd675b53ed11c8f0bdced20c9ca2da", "is_verified": false, - "line_number": 108741 + "line_number": 107606 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", - "hashed_secret": "5e470d5f88efb21f038e1dc7235e574b3786494c", + "hashed_secret": "fc5550e9b1ed873b1ce2a5d3e4df800c97882b77", "is_verified": false, - "line_number": 108964 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/component_index.json", - "hashed_secret": "2d693a7a1c790c58b5b95735fcd83326b331dd58", - "is_verified": false, - "line_number": 109259 - }, - { - "type": "Hex High Entropy String", - "filename": "src/lfx/src/lfx/_assets/component_index.json", - "hashed_secret": "711ebff4ea0d7c18d03b813853cda7a8eb32f484", - "is_verified": false, - "line_number": 109425 + "line_number": 107826 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "827eb24988be42f09d74f7b6fbe9196f9c48ed95", "is_verified": false, - "line_number": 109612 + "line_number": 108175 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "2371d9dfeea6253b30d1affa457d5be6ec5f61bc", "is_verified": false, - "line_number": 109851 + "line_number": 108414 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "76377d63ef7d864c0cefc5b38c762e16d3ab39b5", "is_verified": false, - "line_number": 110471, + "line_number": 109034, "is_secret": false }, { @@ -7506,7 +8330,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "562c0bc758bca6446fabf1aacf71f63d47bc62ed", "is_verified": false, - "line_number": 110606, + "line_number": 109169, "is_secret": false }, { @@ -7514,7 +8338,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "8c8c106382a84413372980d0991df3e2a20c3797", "is_verified": false, - "line_number": 111017, + "line_number": 109580, "is_secret": false }, { @@ -7522,7 +8346,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "1fd6ae619425c7c342273faad31539a8d2f61787", "is_verified": false, - "line_number": 111601, + "line_number": 110164, "is_secret": false }, { @@ -7530,7 +8354,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "4ffc5d8cd514be957c9b87ac84c66205ab6d08d3", "is_verified": false, - "line_number": 112606, + "line_number": 111169, "is_secret": false }, { @@ -7538,14 +8362,14 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "de5b1f2ea12440f0a19893e82535166ea24c7ce3", "is_verified": false, - "line_number": 112923 + "line_number": 111486 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "c0576697d180e97695dd29883a4e1ccb01b2f653", "is_verified": false, - "line_number": 113020, + "line_number": 111583, "is_secret": false }, { @@ -7553,15 +8377,22 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "497af5dcf573db44fc30ac071ebb008e7ac37669", "is_verified": false, - "line_number": 113359, + "line_number": 111922, "is_secret": false }, + { + "type": "Hex High Entropy String", + "filename": "src/lfx/src/lfx/_assets/component_index.json", + "hashed_secret": "6225c15fe9f6da7d31a4e566d0f92cb9063a664d", + "is_verified": false, + "line_number": 112613 + }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "6a5f46048b547457e72572c2d38fb1046591ca71", "is_verified": false, - "line_number": 114407, + "line_number": 112970, "is_secret": false }, { @@ -7569,7 +8400,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "7d770d0728208206c486b536b06077c9953d21f2", "is_verified": false, - "line_number": 114791, + "line_number": 113354, "is_secret": false }, { @@ -7577,7 +8408,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "6fb5a96582d72c338a3f3a7d8144190630d64133", "is_verified": false, - "line_number": 115193, + "line_number": 113756, "is_secret": false }, { @@ -7585,7 +8416,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "270c9abba84329e1be2fa7130b44134c23891f1f", "is_verified": false, - "line_number": 115531, + "line_number": 114094, "is_secret": false }, { @@ -7593,15 +8424,22 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "a781a6064ef5e2cb085282bb1912e65232fb55d1", "is_verified": false, - "line_number": 115936, + "line_number": 114499, "is_secret": false }, + { + "type": "Hex High Entropy String", + "filename": "src/lfx/src/lfx/_assets/component_index.json", + "hashed_secret": "78e2315651b1db5372d90ce2ae975e99acbb0eb3", + "is_verified": false, + "line_number": 114752 + }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "4943819ce50b5209882a4b91dd4b6140260ec428", "is_verified": false, - "line_number": 116499, + "line_number": 115105, "is_secret": false }, { @@ -7609,7 +8447,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "12690ce26e17773a811f28f4ce4fc91b7e42a747", "is_verified": false, - "line_number": 116808, + "line_number": 115414, "is_secret": false }, { @@ -7617,7 +8455,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "b8e5d31cffa4e410fe6b03a0855c592bceb48d82", "is_verified": false, - "line_number": 117328, + "line_number": 115934, "is_secret": false }, { @@ -7625,7 +8463,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "be1df677c309419f4efa0ac48afb2a573beeb95d", "is_verified": false, - "line_number": 118420, + "line_number": 117026, "is_secret": false }, { @@ -7633,7 +8471,7 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "5d65cf087adec89fb18354508030304fc3809586", "is_verified": false, - "line_number": 118687, + "line_number": 117293, "is_secret": false }, { @@ -7641,15 +8479,15 @@ "filename": "src/lfx/src/lfx/_assets/component_index.json", "hashed_secret": "76913f65d6da6c5660de587c8a3e807aafa039dd", "is_verified": false, - "line_number": 118899, + "line_number": 117505, "is_secret": false }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/component_index.json", - "hashed_secret": "54c18b51f94834edcdb35a2ac9f2c5df32e3c2b7", + "hashed_secret": "34ff4ff81e0745dda918ad5003ce695eb099a074", "is_verified": false, - "line_number": 119063 + "line_number": 117669 } ], "src/lfx/src/lfx/_assets/stable_hash_history.json": [ @@ -8064,791 +8902,798 @@ "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "0321ad34ab13e2dee03faa30b7645b932f24c4d6", "is_verified": false, - "line_number": 820 + "line_number": 814 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "cb2623c527dbce4b4e4ac56407979cad7149ea9a", "is_verified": false, - "line_number": 826 + "line_number": 820 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "f9ca36cde6942f27b76eac83290189854ff3acd5", "is_verified": false, - "line_number": 832 + "line_number": 826 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "cf2179b851fcddc8328e4f40e46bec14a56747f8", "is_verified": false, - "line_number": 838 + "line_number": 832 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "427a8b3d029b9d8020cf1648330b5b0a01eb7e65", "is_verified": false, - "line_number": 862 + "line_number": 856 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "2fd7f5b7d8a18e5143661e9f7b51a5d9d36a917a", "is_verified": false, - "line_number": 886 + "line_number": 880 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "5bc62a0f48f3bd1f4c9aa548fba2a0b0234fbbd8", "is_verified": false, - "line_number": 904 + "line_number": 898 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "af246ca4758a5700d172533c40ff71522ae42d99", "is_verified": false, - "line_number": 910 + "line_number": 904 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "8c21d79a6f6a5080d3521470b90b316c89080f83", "is_verified": false, - "line_number": 922 + "line_number": 916 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "c1e78fbca179cfef4bcedc4b01c055a5018cb4e0", "is_verified": false, - "line_number": 929 + "line_number": 923 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "baacde28e4cf5095a02fd332813556fb52842d7b", "is_verified": false, - "line_number": 934 + "line_number": 928 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "f1bd76c4aa6a65698214508669f07eb4c000a08b", "is_verified": false, - "line_number": 939 + "line_number": 933 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "a0378f1e9fbdee2f5792824f32acc16f95534180", "is_verified": false, - "line_number": 945 + "line_number": 939 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "38245225908230e946fe961530d7b9bceca0d939", "is_verified": false, - "line_number": 963 + "line_number": 957 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "1d3051aec8271f45991f72a68fc9be099d3e92c1", "is_verified": false, - "line_number": 969 + "line_number": 963 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "fb5c8ecafee0b2788e395c40f95b13eb45b464d8", "is_verified": false, - "line_number": 999 + "line_number": 993 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "d377ef5b36367a118f28c20eb126e6ec376e02ea", "is_verified": false, - "line_number": 1011 + "line_number": 1005 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "78f473648929d4b9dd716a3874df23eca9a2d9ed", "is_verified": false, - "line_number": 1041 + "line_number": 1035 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "f0b2022fc412b5599ddcb48c6f8f87c5a53c26af", "is_verified": false, - "line_number": 1047 + "line_number": 1041 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "446fa65c4cc6c235fabac8cb7d9241fb018514b8", "is_verified": false, - "line_number": 1089 + "line_number": 1083 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "9cc81943eb951dbf87e0fbb52da90903304b8db9", "is_verified": false, - "line_number": 1101 + "line_number": 1095 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "c69107ff29daaa4b30788f9cecd01d67bfc29b71", "is_verified": false, - "line_number": 1107 + "line_number": 1101 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "60f948a394e2811370ba0bb6849777f217ab5274", "is_verified": false, - "line_number": 1113 + "line_number": 1107 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "54be28b91891ca9ef7b85502a59b32a2a03a5cb9", "is_verified": false, - "line_number": 1119 + "line_number": 1113 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "54ed260e3bc31bc77ee06754dff850981d39a66c", "is_verified": false, - "line_number": 1143 + "line_number": 1137 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "8b7be7f7fae86960989b939578d36ce617b498c6", "is_verified": false, - "line_number": 1173 + "line_number": 1167 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "a6c79dfeb177d34d195c2be48cc62800e629f115", "is_verified": false, - "line_number": 1191 + "line_number": 1185 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "ef417aa1e71aee527bd6fa12f4490f7d960ec54f", "is_verified": false, - "line_number": 1197 + "line_number": 1191 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "a356ce34c2d87126e0170adbec7077e4421af5a5", "is_verified": false, - "line_number": 1221 + "line_number": 1215 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "ccc2dbe82ed3362b249ba70e1bb009cebe0896da", "is_verified": false, - "line_number": 1239 + "line_number": 1233 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "6adc7a1a0903ddb6445918094b91181d7a0ad97b", "is_verified": false, - "line_number": 1263 + "line_number": 1257 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "871ca8e6c9f88aba0a0e921f9d2f47120b55bdfc", "is_verified": false, - "line_number": 1293 + "line_number": 1287 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "aa89465172bb84c366111aeeac493739fa195482", "is_verified": false, - "line_number": 1305 + "line_number": 1299 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "f746c3a4610d3b777453c50c95dc93598c8ad694", "is_verified": false, - "line_number": 1311 + "line_number": 1305 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "9642beb5b6c76a3297af5faac75f10976e860717", "is_verified": false, - "line_number": 1312 + "line_number": 1306 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "cd37616882a8287de17e49c9f91ecad00e0b0eae", "is_verified": false, - "line_number": 1329 + "line_number": 1323 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "18399f965563fb31e56d87ebaec9de2f697f6fd2", "is_verified": false, - "line_number": 1354 + "line_number": 1348 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "9373f1ccd9980640fbcec9c685d34eac3c4b9867", "is_verified": false, - "line_number": 1359 + "line_number": 1353 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "227af0d6a86c8c8619233794dcb4ea5ed1195be3", "is_verified": false, - "line_number": 1365 + "line_number": 1359 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "e907fb1ce9090d3555f18d6b2f2ea364d94c6217", "is_verified": false, - "line_number": 1371 + "line_number": 1365 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "8b4eda70b9518efe3b9b2d03b791324ef4b913e7", "is_verified": false, - "line_number": 1407 + "line_number": 1401 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "15978126ab20054ba1215d2250564590cb6ba403", "is_verified": false, - "line_number": 1413 + "line_number": 1407 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "4f9f1d4210481eceb4a2db42f9f85e854b5837c3", "is_verified": false, - "line_number": 1414 + "line_number": 1408 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "7bdcea8d073c580f79a0a1982007a226a2439dbb", "is_verified": false, - "line_number": 1419 + "line_number": 1413 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "2a296c37a4e26df0a86488d15b17ac9d8ec0dfcd", "is_verified": false, - "line_number": 1425 + "line_number": 1419 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "f69076e0689d6012fd63ec498336feee177aae0a", "is_verified": false, - "line_number": 1426 + "line_number": 1420 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "3b991cdd2510d7fd1de8b025f0c7cbb9ac84b931", "is_verified": false, - "line_number": 1431 + "line_number": 1425 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "573b6322edd45ab8e47491791f0909764e4a2f37", "is_verified": false, - "line_number": 1443 + "line_number": 1437 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "8712dea5a30e8180a3f3cfb94b94dd2dce7db414", "is_verified": false, - "line_number": 1449 + "line_number": 1443 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "591e20afc4fe981a10fed4cff9ea150e520d8585", "is_verified": false, - "line_number": 1479 + "line_number": 1473 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "7efbf3fa62542d73e5008c319fcd7629017c14b0", "is_verified": false, - "line_number": 1480 + "line_number": 1474 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "47ce443fa2c6d2894c896af5bf215e058b9211a7", "is_verified": false, - "line_number": 1503 + "line_number": 1497 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "4676cd86733e19676c0704d55f548833f5273643", "is_verified": false, - "line_number": 1509 + "line_number": 1503 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "f16b56e2e46c4df6bf412a7a9b90c86957016575", "is_verified": false, - "line_number": 1515 + "line_number": 1509 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "a60fc256aaca59a332b08d58bd88404348a8bcb9", "is_verified": false, - "line_number": 1521 + "line_number": 1515 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "04d0a3a2f4c5f2e29f293507958a27b53728c4e8", "is_verified": false, - "line_number": 1533 + "line_number": 1527 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "dede8930d7418d092a12d114de08e444bf0dd82e", "is_verified": false, - "line_number": 1551 + "line_number": 1545 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "2a6863fb102cdb7c5f83b6afd00a794efb701566", "is_verified": false, - "line_number": 1563 + "line_number": 1557 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "89a477e59f5dec443fcb5e0487bc4816bba70cad", "is_verified": false, - "line_number": 1569 + "line_number": 1563 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "4048123bacfc4d262ce85016a54ae55c8063edeb", "is_verified": false, - "line_number": 1575 + "line_number": 1569 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "3de7722ca43ab9676c384eb479950083fb2385bb", "is_verified": false, - "line_number": 1581 + "line_number": 1575 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "5ab5903f6c15a46a71c8db55e70119352304cc15", "is_verified": false, - "line_number": 1599 + "line_number": 1593 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "4311a7e1eaf728d4f31467084f690eff7493a9e4", "is_verified": false, - "line_number": 1611 + "line_number": 1605 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "778447ca63a67ae59fea8307b5c436abe9ebeb4f", "is_verified": false, - "line_number": 1617 + "line_number": 1611 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "a229317aa176166d90f06d566b71932cff018638", "is_verified": false, - "line_number": 1623 + "line_number": 1617 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "b4e24e4256b2c7bc502403f3155d8c5b70dc490c", "is_verified": false, - "line_number": 1647 + "line_number": 1641 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "f11f7e5870cc432ebcfeeca740aa4d4c351a3d95", "is_verified": false, - "line_number": 1677 + "line_number": 1671 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "39a0fb1555a8bcd605b65b7b76dc3af2652d1bb8", "is_verified": false, - "line_number": 1683 + "line_number": 1677 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "6516fc2579d674314a52e49462a84159df8479d9", "is_verified": false, - "line_number": 1689 + "line_number": 1683 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "9d8a13c0d939f6b5790c6cb248c86f0a4aecc3e1", "is_verified": false, - "line_number": 1695 + "line_number": 1689 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "c89fdd11b805574e2ba8910cf63c4273044b887c", "is_verified": false, - "line_number": 1707 + "line_number": 1701 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "d7b281574944c11832ceba7860689cc5a6606a56", "is_verified": false, - "line_number": 1713 + "line_number": 1707 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "29f233f1b444c5844c32773ad0e4db968a2e60ae", "is_verified": false, - "line_number": 1725 + "line_number": 1719 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "7f06239cd274b6930ed82b15c617c6bee4e455aa", "is_verified": false, - "line_number": 1737 + "line_number": 1731 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "162232a42f9158e82bb9cd3bac15ff2b2d7efc59", "is_verified": false, - "line_number": 1743 + "line_number": 1737 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "76d1ef48b3fa8990b7a1aff6a177e5a5b2d018f8", "is_verified": false, - "line_number": 1749 + "line_number": 1743 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "efa90513d8e6348d4005c33485f2981bb2cc3411", "is_verified": false, - "line_number": 1755 + "line_number": 1749 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "df722750079d5f4eafa6946825f9dbc2dbb50330", "is_verified": false, - "line_number": 1761 + "line_number": 1755 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "cb9c3fb93bf299a1eeaa8085a06e791f72d1c245", "is_verified": false, - "line_number": 1767 + "line_number": 1761 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "cd50293b35634a61add9cbfeb9e48fbd44e78bc3", "is_verified": false, - "line_number": 1791 + "line_number": 1785 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "b016c72dac43dd6eec034d8b49aa1ded1cc0c6fa", "is_verified": false, - "line_number": 1797 + "line_number": 1791 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "72979300428bd6d483243f5d1cb7430ed1ebf6d3", "is_verified": false, - "line_number": 1803 + "line_number": 1797 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "08509f7cd25c76dc5ca97e64d21478a617fa193b", "is_verified": false, - "line_number": 1815 + "line_number": 1809 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "2acd680fbb8b14e98aea68cfef28ce81eba86c71", "is_verified": false, - "line_number": 1851 + "line_number": 1845 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "2dd96ae1cb8802018fb2f6a27926bb5f78957fb0", "is_verified": false, - "line_number": 1857 + "line_number": 1851 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "3b61d62768cfb3c63d994d7988306f1ebd2acd6b", "is_verified": false, - "line_number": 1863 + "line_number": 1857 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "d17b2d823c9310229ad18c83ffe543f49406ff9b", "is_verified": false, - "line_number": 1875 + "line_number": 1863 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "e7d0065af9edfc8b2de193bbe26faf5a636e0e9f", "is_verified": false, - "line_number": 1887 + "line_number": 1875 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "1bfed9fbd700374425b35a35ddf0f49a1e2469c2", "is_verified": false, - "line_number": 1893 + "line_number": 1881 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "28ab1b1b9c8f05c055b6741bcaeab7337f5b5dc7", "is_verified": false, - "line_number": 1899 + "line_number": 1887 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "76377d63ef7d864c0cefc5b38c762e16d3ab39b5", "is_verified": false, - "line_number": 1905 + "line_number": 1893 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "562c0bc758bca6446fabf1aacf71f63d47bc62ed", "is_verified": false, - "line_number": 1911 + "line_number": 1899 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "0113110e3d49f7b3a48e00192d478584449800e7", "is_verified": false, - "line_number": 1917 + "line_number": 1905 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "8c8c106382a84413372980d0991df3e2a20c3797", "is_verified": false, - "line_number": 1923 + "line_number": 1911 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "1fd6ae619425c7c342273faad31539a8d2f61787", "is_verified": false, - "line_number": 1929 + "line_number": 1917 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "4ffc5d8cd514be957c9b87ac84c66205ab6d08d3", "is_verified": false, - "line_number": 1971 + "line_number": 1959 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "c0576697d180e97695dd29883a4e1ccb01b2f653", "is_verified": false, - "line_number": 1983 + "line_number": 1971 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "497af5dcf573db44fc30ac071ebb008e7ac37669", "is_verified": false, - "line_number": 2001 + "line_number": 1989 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "7d770d0728208206c486b536b06077c9953d21f2", "is_verified": false, - "line_number": 2019 + "line_number": 2007 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "6a5f46048b547457e72572c2d38fb1046591ca71", "is_verified": false, - "line_number": 2025 + "line_number": 2013 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "270c9abba84329e1be2fa7130b44134c23891f1f", "is_verified": false, - "line_number": 2031 + "line_number": 2019 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "6fb5a96582d72c338a3f3a7d8144190630d64133", "is_verified": false, - "line_number": 2037 + "line_number": 2025 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "a781a6064ef5e2cb085282bb1912e65232fb55d1", "is_verified": false, - "line_number": 2043 + "line_number": 2031 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "4943819ce50b5209882a4b91dd4b6140260ec428", "is_verified": false, - "line_number": 2055 + "line_number": 2043 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "12690ce26e17773a811f28f4ce4fc91b7e42a747", "is_verified": false, - "line_number": 2067 + "line_number": 2055 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "b8e5d31cffa4e410fe6b03a0855c592bceb48d82", "is_verified": false, - "line_number": 2079 + "line_number": 2067 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "ef3435e29e3a2c5dcbbb633856c85561848cd995", "is_verified": false, - "line_number": 2091 + "line_number": 2079 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "be1df677c309419f4efa0ac48afb2a573beeb95d", "is_verified": false, - "line_number": 2109 + "line_number": 2097 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "5d65cf087adec89fb18354508030304fc3809586", "is_verified": false, - "line_number": 2115 + "line_number": 2103 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "76913f65d6da6c5660de587c8a3e807aafa039dd", "is_verified": false, - "line_number": 2127 + "line_number": 2115 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "a71266907512ba33211f8ee38accedd3b84bf81a", "is_verified": false, - "line_number": 2133 + "line_number": 2121 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "697ccfba2c15c7cd8cf6307fd83a491b5c2c9e3e", "is_verified": false, - "line_number": 2151 + "line_number": 2139 }, { "type": "Hex High Entropy String", "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", "hashed_secret": "1f01a7c11bde62eaf153d74394c282aa11574f2a", "is_verified": false, - "line_number": 2163 + "line_number": 2151 + }, + { + "type": "Hex High Entropy String", + "filename": "src/lfx/src/lfx/_assets/stable_hash_history.json", + "hashed_secret": "6940b5e009fe93ed7225e683b5412568c283de99", + "is_verified": false, + "line_number": 2157 } ], "src/lfx/src/lfx/base/models/unified_models/class_registry.py": [ @@ -8857,21 +9702,21 @@ "filename": "src/lfx/src/lfx/base/models/unified_models/class_registry.py", "hashed_secret": "665b1e3851eefefa3fb878654292f16597d25155", "is_verified": false, - "line_number": 61 + "line_number": 69 }, { "type": "Secret Keyword", "filename": "src/lfx/src/lfx/base/models/unified_models/class_registry.py", "hashed_secret": "3f2df46921dd8e2c36e2ce85238705ac0774c74a", "is_verified": false, - "line_number": 72 + "line_number": 80 }, { "type": "Secret Keyword", "filename": "src/lfx/src/lfx/base/models/unified_models/class_registry.py", "hashed_secret": "d4c3d66fd0c38547a3c7a4c6bdc29c36911bc030", "is_verified": false, - "line_number": 87 + "line_number": 95 } ], "src/lfx/src/lfx/base/models/unified_models/model_catalog.py": [ @@ -8880,7 +9725,7 @@ "filename": "src/lfx/src/lfx/base/models/unified_models/model_catalog.py", "hashed_secret": "665b1e3851eefefa3fb878654292f16597d25155", "is_verified": false, - "line_number": 413 + "line_number": 435 } ], "src/lfx/src/lfx/cli/serve_app.py": [ @@ -8889,7 +9734,7 @@ "filename": "src/lfx/src/lfx/cli/serve_app.py", "hashed_secret": "b894b81be94cf8fa8d7536475aaec876addf05c8", "is_verified": false, - "line_number": 49, + "line_number": 50, "is_secret": false } ], @@ -8899,7 +9744,7 @@ "filename": "src/lfx/src/lfx/components/mem0/mem0_chat_memory.py", "hashed_secret": "45d676e7c6ab44cf4b8fa366ef2d8fccd3e6d6e6", "is_verified": false, - "line_number": 34, + "line_number": 32, "is_secret": false } ], @@ -8933,6 +9778,31 @@ "is_secret": false } ], + "src/lfx/src/lfx/templates/shell/ci-push.sh": [ + { + "type": "Secret Keyword", + "filename": "src/lfx/src/lfx/templates/shell/ci-push.sh", + "hashed_secret": "9ae536c0eb83307aa3b94c341829b7e2be39c2ea", + "is_verified": false, + "line_number": 32 + }, + { + "type": "Secret Keyword", + "filename": "src/lfx/src/lfx/templates/shell/ci-push.sh", + "hashed_secret": "51a3d375cd085b9c856551ae3e6f5fbcab909382", + "is_verified": false, + "line_number": 36 + } + ], + "src/lfx/src/lfx/templates/shell/ci-test.sh": [ + { + "type": "Secret Keyword", + "filename": "src/lfx/src/lfx/templates/shell/ci-test.sh", + "hashed_secret": "9ae536c0eb83307aa3b94c341829b7e2be39c2ea", + "is_verified": false, + "line_number": 31 + } + ], "src/lfx/tests/data/starter_projects_1_6_0/Basic Prompting.json": [ { "type": "Hex High Entropy String", @@ -9119,6 +9989,148 @@ "is_secret": false } ], + "src/lfx/tests/fixtures/starter_flows/v1.9.0/basic_prompting.json": [ + { + "type": "Hex High Entropy String", + "filename": "src/lfx/tests/fixtures/starter_flows/v1.9.0/basic_prompting.json", + "hashed_secret": "54ed260e3bc31bc77ee06754dff850981d39a66c", + "is_verified": false, + "line_number": 124 + }, + { + "type": "Hex High Entropy String", + "filename": "src/lfx/tests/fixtures/starter_flows/v1.9.0/basic_prompting.json", + "hashed_secret": "d6e6d7b4b115cd3b9d172623199f8c403055fecc", + "is_verified": false, + "line_number": 620 + }, + { + "type": "Hex High Entropy String", + "filename": "src/lfx/tests/fixtures/starter_flows/v1.9.0/basic_prompting.json", + "hashed_secret": "2317af15ade380e78be36f9ffdc6415d596a8715", + "is_verified": false, + "line_number": 904 + } + ], + "src/lfx/tests/fixtures/starter_flows/v1.9.0/meeting_summary.json": [ + { + "type": "Hex High Entropy String", + "filename": "src/lfx/tests/fixtures/starter_flows/v1.9.0/meeting_summary.json", + "hashed_secret": "d6e6d7b4b115cd3b9d172623199f8c403055fecc", + "is_verified": false, + "line_number": 683 + }, + { + "type": "Hex High Entropy String", + "filename": "src/lfx/tests/fixtures/starter_flows/v1.9.0/meeting_summary.json", + "hashed_secret": "124b4911c19a9b66b7a7037c77cc27d1e4715719", + "is_verified": false, + "line_number": 1737 + }, + { + "type": "Hex High Entropy String", + "filename": "src/lfx/tests/fixtures/starter_flows/v1.9.0/meeting_summary.json", + "hashed_secret": "54ed260e3bc31bc77ee06754dff850981d39a66c", + "is_verified": false, + "line_number": 2097 + }, + { + "type": "Hex High Entropy String", + "filename": "src/lfx/tests/fixtures/starter_flows/v1.9.0/meeting_summary.json", + "hashed_secret": "2317af15ade380e78be36f9ffdc6415d596a8715", + "is_verified": false, + "line_number": 3048 + } + ], + "src/lfx/tests/fixtures/starter_flows/v1.9.0/research_agent.json": [ + { + "type": "Hex High Entropy String", + "filename": "src/lfx/tests/fixtures/starter_flows/v1.9.0/research_agent.json", + "hashed_secret": "54ed260e3bc31bc77ee06754dff850981d39a66c", + "is_verified": false, + "line_number": 510 + }, + { + "type": "Hex High Entropy String", + "filename": "src/lfx/tests/fixtures/starter_flows/v1.9.0/research_agent.json", + "hashed_secret": "d6e6d7b4b115cd3b9d172623199f8c403055fecc", + "is_verified": false, + "line_number": 1766 + }, + { + "type": "Hex High Entropy String", + "filename": "src/lfx/tests/fixtures/starter_flows/v1.9.0/research_agent.json", + "hashed_secret": "2317af15ade380e78be36f9ffdc6415d596a8715", + "is_verified": false, + "line_number": 2052 + } + ], + "src/lfx/tests/fixtures/starter_flows/v1.9.0/sequential_tasks_agents.json": [ + { + "type": "Hex High Entropy String", + "filename": "src/lfx/tests/fixtures/starter_flows/v1.9.0/sequential_tasks_agents.json", + "hashed_secret": "54ed260e3bc31bc77ee06754dff850981d39a66c", + "is_verified": false, + "line_number": 2077 + }, + { + "type": "Hex High Entropy String", + "filename": "src/lfx/tests/fixtures/starter_flows/v1.9.0/sequential_tasks_agents.json", + "hashed_secret": "b8e5d31cffa4e410fe6b03a0855c592bceb48d82", + "is_verified": false, + "line_number": 2970 + }, + { + "type": "Hex High Entropy String", + "filename": "src/lfx/tests/fixtures/starter_flows/v1.9.0/sequential_tasks_agents.json", + "hashed_secret": "d6e6d7b4b115cd3b9d172623199f8c403055fecc", + "is_verified": false, + "line_number": 3789 + } + ], + "src/lfx/tests/unit/base/models/test_credentials.py": [ + { + "type": "Secret Keyword", + "filename": "src/lfx/tests/unit/base/models/test_credentials.py", + "hashed_secret": "7557954d20a888e3721a4b7f0cc7d6cab1abea32", + "is_verified": false, + "line_number": 192 + } + ], + "src/lfx/tests/unit/base/models/test_get_llm_error_messages.py": [ + { + "type": "Secret Keyword", + "filename": "src/lfx/tests/unit/base/models/test_get_llm_error_messages.py", + "hashed_secret": "3f2df46921dd8e2c36e2ce85238705ac0774c74a", + "is_verified": false, + "line_number": 49 + }, + { + "type": "Secret Keyword", + "filename": "src/lfx/tests/unit/base/models/test_get_llm_error_messages.py", + "hashed_secret": "5f44f65c38edb6e7ecc36fa226feda1343ce83ef", + "is_verified": false, + "line_number": 103 + } + ], + "src/lfx/tests/unit/components/agentics/test_llm_factory.py": [ + { + "type": "Secret Keyword", + "filename": "src/lfx/tests/unit/components/agentics/test_llm_factory.py", + "hashed_secret": "d58f8c42247f1cf100bf63f196d93d7d302e8ca9", + "is_verified": false, + "line_number": 23 + } + ], + "src/lfx/tests/unit/components/agentics/test_llm_setup.py": [ + { + "type": "Secret Keyword", + "filename": "src/lfx/tests/unit/components/agentics/test_llm_setup.py", + "hashed_secret": "543bc16afa0bada3dac147c8df8d361065149f0b", + "is_verified": false, + "line_number": 14 + } + ], "src/lfx/tests/unit/components/langchain_utilities/test_csv_agent.py": [ { "type": "Secret Keyword", @@ -9164,6 +10176,29 @@ "is_secret": false } ], + "src/lfx/tests/unit/interface/test_loading_no_env_fallback.py": [ + { + "type": "Secret Keyword", + "filename": "src/lfx/tests/unit/interface/test_loading_no_env_fallback.py", + "hashed_secret": "8be8adcd67ecd47e99d7ac1894b40b2fce30693b", + "is_verified": false, + "line_number": 14 + }, + { + "type": "Secret Keyword", + "filename": "src/lfx/tests/unit/interface/test_loading_no_env_fallback.py", + "hashed_secret": "425697fa9692ea5035739863d2481dbfcddfa31f", + "is_verified": false, + "line_number": 15 + }, + { + "type": "Secret Keyword", + "filename": "src/lfx/tests/unit/interface/test_loading_no_env_fallback.py", + "hashed_secret": "4e0206658c0676a93fdbad27f1c7a8bfafc6ece6", + "is_verified": false, + "line_number": 44 + } + ], "src/lfx/tests/unit/run/test_base.py": [ { "type": "Secret Keyword", @@ -9228,6 +10263,15 @@ "is_secret": false } ], + "src/lfx/tests/unit/services/test_request_scope_isolation.py": [ + { + "type": "Secret Keyword", + "filename": "src/lfx/tests/unit/services/test_request_scope_isolation.py", + "hashed_secret": "e493f561d90c6638c1f51c5a8a069c3b129b79ed", + "is_verified": false, + "line_number": 118 + } + ], "src/lfx/tests/unit/utils/test_database_url_sanitization.py": [ { "type": "Basic Auth Credentials", @@ -9287,5 +10331,5 @@ } ] }, - "generated_at": "2026-06-17T19:13:55Z" + "generated_at": "2026-06-18T14:17:20Z" } diff --git a/src/backend/base/langflow/services/variable/service.py b/src/backend/base/langflow/services/variable/service.py index 1e0ad75997..41a7e51ea8 100644 --- a/src/backend/base/langflow/services/variable/service.py +++ b/src/backend/base/langflow/services/variable/service.py @@ -219,7 +219,15 @@ class DatabaseVariableService(VariableService, Service): if variable.type == CREDENTIAL_TYPE: from pydantic import SecretStr - return SecretStr(auth_utils.decrypt_api_key(variable.value)) + decrypted = auth_utils.decrypt_api_key(variable.value) + if not decrypted: + msg = ( + f"Could not decrypt credential variable '{name}'. The stored value cannot be " + "decrypted with the current LANGFLOW_SECRET_KEY — it may have been encrypted " + "with a different key." + ) + raise ValueError(msg) + return SecretStr(decrypted) # GENERIC type - return as-is return variable.value diff --git a/src/backend/tests/unit/services/variable/test_service.py b/src/backend/tests/unit/services/variable/test_service.py index e8944efcdb..517e770ffc 100644 --- a/src/backend/tests/unit/services/variable/test_service.py +++ b/src/backend/tests/unit/services/variable/test_service.py @@ -1,8 +1,11 @@ +import secrets from datetime import datetime from unittest.mock import patch from uuid import uuid4 import pytest +from cryptography.fernet import Fernet +from langflow.services.auth.utils import ensure_fernet_key from langflow.services.database.models.variable.model import VariableUpdate from langflow.services.deps import get_settings_service from langflow.services.variable.constants import CREDENTIAL_TYPE, GENERIC_TYPE @@ -103,6 +106,42 @@ async def test_get_variable__typeerror(service, session: AsyncSession): assert "purpose is to prevent the exposure of value" in str(exc.value) +async def test_get_variable__credential_decrypt_failure(service, session: AsyncSession): + """Store credential under SECRET_KEY=A, resolve with SECRET_KEY=B → raises naming the variable. + + Uses ensure_fernet_key (the real SECRET_KEY→Fernet derivation path) so the test exercises + the exact mismatch scenario described in the ticket: a key rotation or missing persisted key. + The test auth service (lfx stub) is a passthrough, so we patch at the auth_utils boundary. + """ + secret_key_a = secrets.token_urlsafe(32) + secret_key_b = secrets.token_urlsafe(32) + fernet_a = Fernet(ensure_fernet_key(secret_key_a)) + fernet_b = Fernet(ensure_fernet_key(secret_key_b)) + + user_id = uuid4() + name = "MY_CRED" + + # Phase 1: store credential encrypted under SECRET_KEY = secret_key_a. + with patch( + "langflow.services.variable.service.auth_utils.encrypt_api_key", + side_effect=lambda v: fernet_a.encrypt(v.encode()).decode(), + ): + await service.create_variable(user_id, name, "secret123", type_=CREDENTIAL_TYPE, session=session) + + # Phase 2: resolve with SECRET_KEY = secret_key_b (mismatched) — Fernet raises InvalidToken → "". + def decrypt_with_wrong_key(ciphertext: str) -> str: + try: + return fernet_b.decrypt(ciphertext.encode()).decode() + except Exception: + return "" + + with ( + patch("langflow.services.variable.service.auth_utils.decrypt_api_key", side_effect=decrypt_with_wrong_key), + pytest.raises(ValueError, match=r"MY_CRED.*SECRET_KEY"), + ): + await service.get_variable(user_id, name, "", session=session) + + async def test_list_variables(service, session: AsyncSession): user_id = uuid4() names = ["name1", "name2", "name3"] From c368aded0eefa4eb2ac9e26e515827c294c21e4e Mon Sep 17 00:00:00 2001 From: olayinkaadelakun Date: Mon, 22 Jun 2026 06:28:17 -0700 Subject: [PATCH 2/3] fix(a11y): restore focus-visible indicators (#13664) * fix(a11y): restore focus-visible indicators * [autofix.ci] apply automated fixes --------- Co-authored-by: Olayinka Adelakun Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Viktor Avelino <64113566+viktoravelino@users.noreply.github.com> --- .../components/OutputComponent/index.tsx | 2 +- .../core/dropdownComponent/index.tsx | 2 +- .../dbProviderInputComponent/index.tsx | 2 +- .../components/ModelTrigger.tsx | 2 +- .../components/chat-header-actions.tsx | 2 +- src/frontend/src/style/applies.css | 10 +- src/frontend/src/style/index.css | 8 ++ src/frontend/tailwind.config.mjs | 4 - .../extended/features/focus-visible.spec.ts | 120 ++++++++++++++++++ 9 files changed, 134 insertions(+), 18 deletions(-) create mode 100644 src/frontend/tests/extended/features/focus-visible.spec.ts diff --git a/src/frontend/src/CustomNodes/GenericNode/components/OutputComponent/index.tsx b/src/frontend/src/CustomNodes/GenericNode/components/OutputComponent/index.tsx index a67d7cfd4f..49cc2a6d6f 100644 --- a/src/frontend/src/CustomNodes/GenericNode/components/OutputComponent/index.tsx +++ b/src/frontend/src/CustomNodes/GenericNode/components/OutputComponent/index.tsx @@ -76,7 +76,7 @@ export default function OutputComponent({ unstyled role="combobox" ref={refButton} - className="no-focus-visible group flex items-center gap-2" + className="focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-2 group flex items-center gap-2" data-testid={`dropdown-output-${outputName?.toLowerCase()}`} >
diff --git a/src/frontend/src/components/core/dropdownComponent/index.tsx b/src/frontend/src/components/core/dropdownComponent/index.tsx index a1319f8977..f1bf44648d 100644 --- a/src/frontend/src/components/core/dropdownComponent/index.tsx +++ b/src/frontend/src/components/core/dropdownComponent/index.tsx @@ -380,7 +380,7 @@ export default function Dropdown({ editNode ? "dropdown-component-outline input-edit-node" : "dropdown-component-false-outline py-2", - "no-focus-visible w-full justify-between font-normal disabled:bg-muted disabled:text-muted-foreground", + "focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-2 w-full justify-between font-normal disabled:bg-muted disabled:text-muted-foreground", )} > diff --git a/src/frontend/src/style/applies.css b/src/frontend/src/style/applies.css index d34efc6fbe..f1a813f381 100644 --- a/src/frontend/src/style/applies.css +++ b/src/frontend/src/style/applies.css @@ -1240,7 +1240,7 @@ input[type="password"]::-ms-clear { @apply top-[-23px]; } .popover-input { - @apply h-fit w-fit flex-1 border-none bg-transparent p-0 shadow-none outline-none ring-0 ring-offset-0 placeholder:text-muted-foreground focus:border-foreground focus:outline-none focus:ring-0 focus:ring-offset-0 focus-visible:ring-0 focus-visible:ring-offset-0 disabled:cursor-not-allowed disabled:opacity-50; + @apply h-fit w-fit flex-1 border-none bg-transparent p-0 shadow-none outline-none ring-0 ring-offset-0 placeholder:text-muted-foreground focus:border-foreground focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50; } .beta-badge { @@ -1295,14 +1295,6 @@ input[type="password"]::-ms-clear { @apply flex h-[32px] w-[32px] items-center justify-center rounded-md bg-muted font-bold transition-all; } - .no-focus-visible { - @apply focus-visible:outline-none focus-visible:ring-0 focus-visible:ring-offset-0; - --tw-ring-offset-width: none !important; - --tw-ring-shadow: none !important; - --tw-ring-offset-shadow: none !important; - --tw-ring-color: none !important; - } - .helper-lines { @apply pointer-events-none absolute left-0 top-0 z-10 h-full w-full; } diff --git a/src/frontend/src/style/index.css b/src/frontend/src/style/index.css index 4cb54cce74..14127dea32 100644 --- a/src/frontend/src/style/index.css +++ b/src/frontend/src/style/index.css @@ -493,3 +493,11 @@ --indigo-foreground: 234.5 89.5% 73.9%; } } + +/* WCAG 2.4.7 — visible focus indicator fallback for any element not covered + by component-level Tailwind ring classes. Component ring classes (box-shadow) + take precedence over this outline via the cascade. */ +:focus-visible { + outline: 2px solid hsl(var(--ring)); + outline-offset: 2px; +} diff --git a/src/frontend/tailwind.config.mjs b/src/frontend/tailwind.config.mjs index d683703cfd..ba56569b30 100644 --- a/src/frontend/tailwind.config.mjs +++ b/src/frontend/tailwind.config.mjs @@ -480,10 +480,6 @@ const config = { ".text-align-last-right": { "text-align-last": "right", }, - ":focus-visible": { - outline: "none !important", - outlineOffset: "0px !important", - }, ".note-node-markdown": { lineHeight: "1", "& ul li::marker": { diff --git a/src/frontend/tests/extended/features/focus-visible.spec.ts b/src/frontend/tests/extended/features/focus-visible.spec.ts new file mode 100644 index 0000000000..2269ca801d --- /dev/null +++ b/src/frontend/tests/extended/features/focus-visible.spec.ts @@ -0,0 +1,120 @@ +import { expect, test } from "../../fixtures"; + +/** + * WCAG 2.4.7 Focus Visible regression tests. + * + * Each test tabs to an interactive element and confirms it has a visible + * focus indicator — either a non-zero outline or a non-"none" box-shadow + * (Tailwind ring classes render as box-shadow). + */ + +async function getFocusStyle(page) { + return page.evaluate(() => { + const el = document.activeElement as HTMLElement | null; + if (!el) return null; + const style = window.getComputedStyle(el); + return { + tag: el.tagName.toLowerCase(), + testId: el.getAttribute("data-testid") ?? "", + outlineWidth: style.outlineWidth, + outlineStyle: style.outlineStyle, + boxShadow: style.boxShadow, + }; + }); +} + +function hasFocusIndicator(focusStyle: { + outlineWidth: string; + outlineStyle: string; + boxShadow: string; +}) { + const hasOutline = + focusStyle.outlineStyle !== "none" && + focusStyle.outlineWidth !== "0px" && + focusStyle.outlineWidth !== ""; + const hasRing = + focusStyle.boxShadow !== "none" && focusStyle.boxShadow !== ""; + return hasOutline || hasRing; +} + +test( + "login page — every interactive element shows a visible focus indicator when tabbed to", + { tag: ["@release", "@workspace"] }, + async ({ page }) => { + await page.goto("/login"); + await page.waitForLoadState("networkidle"); + + // Tab through up to 20 focusable elements + const violations: string[] = []; + for (let i = 0; i < 20; i++) { + await page.keyboard.press("Tab"); + const focusStyle = await getFocusStyle(page); + if (!focusStyle) continue; + + // Skip elements that are intentionally not interactive (body, html) + if (["body", "html"].includes(focusStyle.tag)) continue; + + if (!hasFocusIndicator(focusStyle)) { + violations.push( + `Element <${focusStyle.tag}> data-testid="${focusStyle.testId}" has no visible focus indicator (outline: ${focusStyle.outlineWidth} ${focusStyle.outlineStyle}, box-shadow: ${focusStyle.boxShadow})`, + ); + } + } + + expect( + violations, + `Focus visible violations found:\n${violations.join("\n")}`, + ).toHaveLength(0); + }, +); + +test( + "canvas controls — add note, zoom, and fit view buttons show focus ring when tabbed to", + { tag: ["@release", "@workspace"] }, + async ({ page }) => { + await page.goto("/"); + await page.waitForLoadState("networkidle"); + + const controlTestIds = [ + "canvas-add-note-button", + "zoom_in", + "zoom_out", + "fit_view", + ]; + + for (const testId of controlTestIds) { + const button = page.getByTestId(testId); + if (!(await button.isVisible())) continue; + + await button.focus(); + const focusStyle = await getFocusStyle(page); + if (!focusStyle) continue; + + expect( + hasFocusIndicator(focusStyle), + `Canvas control [data-testid="${testId}"] has no visible focus indicator`, + ).toBe(true); + } + }, +); + +test( + "dropdown trigger shows focus ring on keyboard focus", + { tag: ["@release", "@workspace"] }, + async ({ page }) => { + await page.goto("/"); + await page.waitForLoadState("networkidle"); + + // Find any visible button-role element and tab to it + const triggers = page.locator('[role="combobox"]:visible').first(); + if (!(await triggers.isVisible())) return; + + await triggers.focus(); + const focusStyle = await getFocusStyle(page); + + expect( + focusStyle && hasFocusIndicator(focusStyle), + `Dropdown trigger has no visible focus indicator (outline: ${focusStyle?.outlineWidth}, box-shadow: ${focusStyle?.boxShadow})`, + ).toBe(true); + }, +); From d36083e17dbc5666c0c0a0125b2411ed04abbe91 Mon Sep 17 00:00:00 2001 From: Viktor Avelino <64113566+viktoravelino@users.noreply.github.com> Date: Mon, 22 Jun 2026 09:32:15 -0400 Subject: [PATCH 3/3] a11y: improve auth accessibility coverage (#13724) * fix: improve auth accessibility coverage * fix(a11y): restore delete trigger tab focus * test(dialog): cover nested description --- a11y-action-plan.md | 19 +- a11y-gap-report.md | 38 ++-- .../__tests__/displayArea.a11y.test.tsx | 41 +++- src/frontend/src/alerts/displayArea/index.tsx | 42 ++-- .../common/GradientWrapper/index.tsx | 9 +- .../components/inputComponent/index.tsx | 5 + .../components/ui/__tests__/dialog.test.tsx | 45 ++++ src/frontend/src/components/ui/dialog.tsx | 29 ++- src/frontend/src/locales/de.json | 3 + src/frontend/src/locales/en.json | 3 + src/frontend/src/locales/es.json | 3 + src/frontend/src/locales/fr.json | 3 + src/frontend/src/locales/ja.json | 3 + src/frontend/src/locales/pt.json | 3 + src/frontend/src/locales/zh-Hans.json | 3 + .../DeleteConfirmationModal.a11y.test.tsx | 67 ++++++ .../modals/deleteConfirmationModal/index.tsx | 2 +- .../__tests__/LoginPage.a11y.test.tsx | 160 ++++++++++++++ src/frontend/src/pages/LoginPage/index.tsx | 112 +++++++--- .../__tests__/SignUpPage.a11y.test.tsx | 192 +++++++++++++++++ src/frontend/src/pages/SignUpPage/index.tsx | 201 ++++++++++++------ src/frontend/src/style/index.css | 6 +- src/frontend/src/types/components/index.ts | 3 +- src/frontend/src/utils/authErrorMessages.ts | 19 ++ .../tests/a11y/auth-pages.a11y.spec.ts | 171 +++++++++++++++ 25 files changed, 1043 insertions(+), 139 deletions(-) create mode 100644 src/frontend/src/modals/deleteConfirmationModal/__tests__/DeleteConfirmationModal.a11y.test.tsx create mode 100644 src/frontend/src/pages/LoginPage/__tests__/LoginPage.a11y.test.tsx create mode 100644 src/frontend/src/pages/SignUpPage/__tests__/SignUpPage.a11y.test.tsx create mode 100644 src/frontend/src/utils/authErrorMessages.ts create mode 100644 src/frontend/tests/a11y/auth-pages.a11y.spec.ts diff --git a/a11y-action-plan.md b/a11y-action-plan.md index 2ee749ecc4..0184225b53 100644 --- a/a11y-action-plan.md +++ b/a11y-action-plan.md @@ -228,30 +228,31 @@ Work top-to-bottom. Early phases fix shared primitives first, then page surfaces ### 4.1 — Fix validation message announcement -- [ ] **Fix:** In auth flows, make validation messages screen-reader discoverable and announced when they appear. +- [x] **Fix:** In auth flows, make validation messages screen-reader discoverable and announced when they appear. - `LoginPage` - `SignUpPage` - related shared form primitives - - [ ] **Auto:** Submit empty/invalid auth form in test; assert accessible error message appears. + - [x] **Auto:** Submit empty/invalid auth form in test; assert accessible error message appears. - [ ] **Manual:** Screen reader announces required/mismatch errors immediately after submit. ### 4.2 — Fix alert/toast semantics -- [ ] **Fix:** Add live-region behavior to `src/frontend/src/alerts/displayArea/index.tsx` so success/error/notice messages are announced appropriately. - - [ ] **Auto:** Unit test dispatches alert and checks `aria-live` / urgent semantics. +- [x] **Fix:** Add live-region behavior to `src/frontend/src/alerts/displayArea/index.tsx` so success/error/notice messages are announced appropriately. + - [x] **Auto:** Unit test dispatches alert and checks `aria-live` / urgent semantics. - [ ] **Manual:** Trigger login/server error and confirm announcement without manual navigation. ### 4.3 — Re-verify `3.3.3` Error Suggestion -- [ ] **Fix:** After auth/message changes, re-test signup and auth error flows. Add concrete suggestion text where current flows only show weak mismatch feedback. - - [ ] **Auto:** Form tests cover password mismatch and server-side auth failures. +- [x] **Fix:** After auth/message changes, re-test signup and auth error flows. Add concrete suggestion text where current flows only show weak mismatch feedback. + - [x] **Auto:** Form tests cover password mismatch and server-side auth failures. - [ ] **Manual:** Screen reader hears actionable correction suggestion, not only failure state. ### 4.4 — Re-verify `3.3.4` Error Prevention -- [ ] **Fix:** Audit destructive/data-affecting user flows after dialog fixes. Ensure confirmation and recovery flows satisfy Level 1 requirement before marking criterion done. - - [ ] **Auto:** Add representative tests for destructive confirmation flow. - - [ ] **Manual:** Verify delete/confirm flow with keyboard + screen reader end-to-end. +- [x] **Fix:** Audit destructive/data-affecting user flows after dialog fixes. Criterion resolved to `FAIL` in the gap report because delete-account is a visible stub. + - [x] **Auto:** Add representative tests for destructive confirmation flow. + - [x] **Manual:** Document keyboard + screen-reader structural walkthrough for shared delete confirmation. + - [ ] **Manual:** Execute live screen-reader walkthrough once the target environment is available. --- diff --git a/a11y-gap-report.md b/a11y-gap-report.md index c1ed8616c5..2ece46f978 100644 --- a/a11y-gap-report.md +++ b/a11y-gap-report.md @@ -6,6 +6,7 @@ > **Scope:** Frontend code analysis against IBM `Level 1` filtered requirements > **Reference:** [a11y-level-1-requirements.md](/Users/viktoravelino/projects/langflow/a11y-level-1-requirements.md) > **Method:** Direct source code analysis + targeted re-validation of current frontend sources +> **Latest targeted update:** 2026-06-17, LE-1518 error handling and announcements --- @@ -45,10 +46,10 @@ IBM's `Level 1` filter currently returns these `21` requirements: | `2.4.7` | Focus Visible | FAIL | Global and local CSS suppress visible focus indicators | | `3.1.1` | Language of Page | PASS | `` is set | | `3.2.4` | Consistent Identification | FAIL | Icon-only actions remain inconsistently and often invisibly identified | -| `3.3.1` | Error Identification | FAIL | Validation and toast error feedback are not robustly announced | +| `3.3.1` | Error Identification | PARTIAL | Auth validation and toast announcements fixed; non-auth error surfaces still need broader audit | | `3.3.2` | Labels or Instructions | FAIL | Placeholder-only inputs still exist in key flows | -| `3.3.3` | Error Suggestion | AT RISK | Weak in signup/auth flows; needs runtime confirmation for final severity | -| `3.3.4` | Error Prevention (Legal, Financial, Data) | NEEDS TARGETED AUDIT | Destructive flows exist, but criterion not fully re-verified in this pass | +| `3.3.3` | Error Suggestion | PASS (TARGETED AUTH) | Login/signup required, mismatch, and server-error flows now expose actionable suggestions | +| `3.3.4` | Error Prevention (Legal, Financial, Data) | FAIL | Flow/folder/deployment confirmations exist, but delete-account is a visible stub and cannot be verified end-to-end | | `4.1.2` | Name, Role, Value | FAIL | Widespread issues across controls, dialogs, toggles, list cards, and canvas | --- @@ -150,10 +151,15 @@ IBM's `Level 1` filter currently returns these `21` requirements: - Notification, toolbar, dropdown, canvas, and list-card actions rely heavily on unlabeled or inconsistently labeled icon-only patterns. - Same action types are not consistently exposed with the same accessible naming strategy. -### `3.3.1` Error Identification — FAIL +### `3.3.1` Error Identification — PARTIAL -- Login form validation messages are not robustly announced in [LoginPage/index.tsx](/Users/viktoravelino/projects/langflow/src/frontend/src/pages/LoginPage/index.tsx:106). -- Alert/toast area still has no live region semantics in [alerts/displayArea/index.tsx](/Users/viktoravelino/projects/langflow/src/frontend/src/alerts/displayArea/index.tsx:16). +- Login and signup required-field errors are now rendered as `role="alert"` messages and associated with their controls via `aria-describedby` in [LoginPage/index.tsx](/Users/viktoravelino/projects/langflow/src/frontend/src/pages/LoginPage/index.tsx:78) and [SignUpPage/index.tsx](/Users/viktoravelino/projects/langflow/src/frontend/src/pages/SignUpPage/index.tsx:86). +- Toasts now map severity to live-region semantics in [alerts/displayArea/index.tsx](/Users/viktoravelino/projects/langflow/src/frontend/src/alerts/displayArea/index.tsx:18): errors use `role="alert"` / `aria-live="assertive"`; success and notice use `role="status"` / `aria-live="polite"`. +- Automated evidence: + - [LoginPage.a11y.test.tsx](/Users/viktoravelino/projects/langflow/src/frontend/src/pages/LoginPage/__tests__/LoginPage.a11y.test.tsx:63) + - [SignUpPage.a11y.test.tsx](/Users/viktoravelino/projects/langflow/src/frontend/src/pages/SignUpPage/__tests__/SignUpPage.a11y.test.tsx:65) + - [displayArea.a11y.test.tsx](/Users/viktoravelino/projects/langflow/src/frontend/src/alerts/displayArea/__tests__/displayArea.a11y.test.tsx:34) +- Remaining risk: non-auth validation/error surfaces were not exhaustively re-audited in this LE-1518 pass. ### `3.3.2` Labels or Instructions — FAIL @@ -161,14 +167,23 @@ IBM's `Level 1` filter currently returns these `21` requirements: - Required markers and instructions are still not clearly exposed in all auth forms. - Several admin/settings/search surfaces still depend on placeholder-only or weakly associated labels. -### `3.3.3` Error Suggestion — AT RISK +### `3.3.3` Error Suggestion — PASS (TARGETED AUTH) -- Signup password mismatch handling is weak in [SignUpPage/index.tsx](/Users/viktoravelino/projects/langflow/src/frontend/src/pages/SignUpPage/index.tsx:156). -- This criterion needs runtime confirmation before finalizing severity, but current implementation is not strong enough to call compliant. +- Signup password mismatch now announces actionable correction text: "Passwords do not match. Re-enter both passwords so they match." +- Server-side login errors append "Check your username and password, then try again." +- Server-side signup errors append "Use a different username or contact an administrator if you already have an account." +- Automated evidence: + - [LoginPage.a11y.test.tsx](/Users/viktoravelino/projects/langflow/src/frontend/src/pages/LoginPage/__tests__/LoginPage.a11y.test.tsx:87) + - [SignUpPage.a11y.test.tsx](/Users/viktoravelino/projects/langflow/src/frontend/src/pages/SignUpPage/__tests__/SignUpPage.a11y.test.tsx:86) -### `3.3.4` Error Prevention (Legal, Financial, Data) — NEEDS TARGETED AUDIT +### `3.3.4` Error Prevention (Legal, Financial, Data) — FAIL -- Destructive confirmations exist, but this pass did not fully validate the requirement end-to-end against all relevant user data flows. +- Folder/flow deletion uses [DeleteConfirmationModal](/Users/viktoravelino/projects/langflow/src/frontend/src/modals/deleteConfirmationModal/index.tsx:33), which presents a named destructive confirmation dialog, explicit permanent-delete copy, a cancel action, and a destructive delete action. +- Shared dialog title detection now recognizes nested `DialogHeader > DialogTitle` structures in [dialog.tsx](/Users/viktoravelino/projects/langflow/src/frontend/src/components/ui/dialog.tsx:32), so delete dialogs announce their specific title instead of the fallback "Dialog". +- Automated evidence: [DeleteConfirmationModal.a11y.test.tsx](/Users/viktoravelino/projects/langflow/src/frontend/src/modals/deleteConfirmationModal/__tests__/DeleteConfirmationModal.a11y.test.tsx:5) verifies the named dialog, permanent-delete warning, cancel path, and no accidental confirmation on cancel. +- Deployment deletion has stronger type-to-confirm protection in [type-to-confirm-delete-dialog.tsx](/Users/viktoravelino/projects/langflow/src/frontend/src/pages/MainPage/pages/deploymentsPage/components/type-to-confirm-delete-dialog.tsx:25). +- Account deletion remains unimplemented: [DeleteAccountPage/index.tsx](/Users/viktoravelino/projects/langflow/src/frontend/src/pages/DeleteAccountPage/index.tsx:12) contains only placeholder comments and no real deletion/recovery path. This prevents a pass for the criterion across the targeted destructive/data-affecting flows. +- Keyboard walkthrough, shared delete dialog: open the delete trigger, focus enters the named "Delete" dialog container, `Tab` reaches `Cancel`, `Delete`, and `Close`, `Cancel` exits without calling confirm, and activating `Delete` runs the destructive callback. Screen-reader structural announcement is supported by `role="dialog"` plus the visible `DialogTitle`; live assistive-technology execution was not performed in this source/test pass. ### `4.1.2` Name, Role, Value — FAIL @@ -191,4 +206,3 @@ IBM's `Level 1` filter currently returns these `21` requirements: 6. Fix high-impact semantic primitives: `Input`, `CheckBoxDiv`, `AccordionTrigger`, full-screen modal container. 7. Repair route titles so non-playground pages set meaningful `document.title`. 8. Adjust failing text and non-text contrast tokens before page-level QA. - diff --git a/src/frontend/src/alerts/displayArea/__tests__/displayArea.a11y.test.tsx b/src/frontend/src/alerts/displayArea/__tests__/displayArea.a11y.test.tsx index ae4e83f216..3cfb6b4d55 100644 --- a/src/frontend/src/alerts/displayArea/__tests__/displayArea.a11y.test.tsx +++ b/src/frontend/src/alerts/displayArea/__tests__/displayArea.a11y.test.tsx @@ -31,14 +31,41 @@ describe("AlertDisplayArea accessibility", () => { expect(screen.getByText("Flow saved")).toBeInTheDocument(); }); - // Known gap (a11y-action-plan 4.2): the alert display area has no - // aria-live region, so success/error/notice messages are never announced - // to screen readers. Fails until the fix lands. - it("should_announce_alerts_via_live_region", () => { + it("keeps_live_regions_mounted_before_alerts_are_inserted", () => { const { container } = render(); - const wrapper = container.firstElementChild; - expect(wrapper).not.toBeNull(); - expect(wrapper).toHaveAttribute("aria-live"); + expect( + container.querySelector('[aria-live="assertive"]'), + ).toBeInTheDocument(); + expect(screen.getByRole("status")).toHaveAttribute("aria-live", "polite"); + expect(screen.queryByRole("alert")).not.toBeInTheDocument(); + }); + + it("announces_success_and_notice_alerts_politely", () => { + render(); + + act(() => { + useAlertStore.getState().setSuccessData({ title: "Flow saved" }); + }); + + const status = screen.getByRole("status"); + expect(status).toHaveAttribute("aria-live", "polite"); + expect(status).toHaveAttribute("aria-atomic", "true"); + expect(status).toHaveTextContent("Flow saved"); + }); + + it("announces_error_alerts_assertively", () => { + const { container } = render(); + + act(() => { + useAlertStore.getState().setErrorData({ title: "Build failed" }); + }); + + const assertiveRegion = container.querySelector('[aria-live="assertive"]'); + expect(assertiveRegion).toHaveAttribute("aria-atomic", "true"); + expect(assertiveRegion).toHaveTextContent("Build failed"); + + const alert = screen.getByRole("alert"); + expect(alert).toHaveTextContent("Build failed"); }); }); diff --git a/src/frontend/src/alerts/displayArea/index.tsx b/src/frontend/src/alerts/displayArea/index.tsx index 24e655dafb..62a11b8e85 100644 --- a/src/frontend/src/alerts/displayArea/index.tsx +++ b/src/frontend/src/alerts/displayArea/index.tsx @@ -13,25 +13,39 @@ export default function AlertDisplayArea() { const removeAlert = (id: string) => { removeFromTempNotificationList(id); }; + const errorAlerts = tempNotificationList.filter( + (alert) => alert.type === "error", + ); + const politeAlerts = tempNotificationList.filter( + (alert) => alert.type !== "error", + ); return ( -
- {tempNotificationList.map((alert) => ( -
- {alert.type === "error" ? ( +
+
+ {errorAlerts.map((alert) => ( +
- ) : alert.type === "notice" ? ( +
+ ))} +
+
+ {politeAlerts.map((alert) => + alert.type === "notice" ? ( ) - )} -
- ))} + ), + )} +
); } diff --git a/src/frontend/src/components/common/GradientWrapper/index.tsx b/src/frontend/src/components/common/GradientWrapper/index.tsx index 7f7ab5566d..1065ddb313 100644 --- a/src/frontend/src/components/common/GradientWrapper/index.tsx +++ b/src/frontend/src/components/common/GradientWrapper/index.tsx @@ -3,7 +3,14 @@ import type { ReactNode } from "react"; export function GradientWrapper({ children }: { children: ReactNode }) { return ( <> - +
+
+
+
+
+
+ Too deep +
+
+
+
+
+
+ Test description + + , + ); + + expect(screen.getByText("Dialog")).toBeInTheDocument(); + }); }); diff --git a/src/frontend/src/components/ui/dialog.tsx b/src/frontend/src/components/ui/dialog.tsx index ea6ae46b01..8f1afa4429 100644 --- a/src/frontend/src/components/ui/dialog.tsx +++ b/src/frontend/src/components/ui/dialog.tsx @@ -34,6 +34,26 @@ const DialogOverlay = React.forwardRef< )); DialogOverlay.displayName = DialogPrimitive.Overlay.displayName; +const MAX_DIALOG_CHILD_SCAN_DEPTH = 4; + +const hasChildOfType = ( + children: React.ReactNode, + targetType: React.ElementType, + depth = 0, +): boolean => + React.Children.toArray(children).some((child) => { + if (!React.isValidElement<{ children?: React.ReactNode }>(child)) { + return false; + } + if (child.type === targetType) { + return true; + } + if (depth >= MAX_DIALOG_CHILD_SCAN_DEPTH) { + return false; + } + return hasChildOfType(child.props.children, targetType, depth + 1); + }); + // Create a VisuallyHidden component for accessibility const VisuallyHidden = React.forwardRef< HTMLSpanElement, @@ -73,13 +93,8 @@ const DialogContent = React.forwardRef< ref, ) => { // Check if DialogTitle is included in children - const hasDialogTitle = React.Children.toArray(children).some( - (child) => React.isValidElement(child) && child.type === DialogTitle, - ); - const hasDialogDescription = React.Children.toArray(children).some( - (child) => - React.isValidElement(child) && child.type === DialogDescription, - ); + const hasDialogTitle = hasChildOfType(children, DialogTitle); + const hasDialogDescription = hasChildOfType(children, DialogDescription); return ( diff --git a/src/frontend/src/locales/de.json b/src/frontend/src/locales/de.json index ce75655c5a..7ebe08d960 100644 --- a/src/frontend/src/locales/de.json +++ b/src/frontend/src/locales/de.json @@ -623,6 +623,7 @@ "errors.noResponseBody": "Kein Antworttext", "errors.parameterNotFound": "Parameter in der Vorlage nicht gefunden", "errors.passwordMismatch": "Kennwörter stimmen nicht überein", + "errors.passwordMismatchSuggestion": "Geben Sie beide Kennwörter erneut ein, damit sie übereinstimmen.", "errors.profilePictures": "Fehler beim Abrufen der Profilbilder", "errors.prompt": "Mit dieser Eingabeaufforderung stimmt etwas nicht. Bitte überprüfe sie", "errors.receivedMalformedEvent": "Vom Server wurde ein fehlerhaftes Ereignis empfangen", @@ -635,7 +636,9 @@ "errors.sendMessage": "Beim Senden der Nachricht ist ein Fehler aufgetreten", "errors.sessionDeletedLocalStorage": "Sitzung aus dem lokalen Speicher gelöscht", "errors.signin": "Fehler beim Anmelden", + "errors.signinSuggestion": "Überprüfen Sie Ihren Benutzernamen und Ihr Kennwort und versuchen Sie es erneut.", "errors.signup": "Fehler bei der Anmeldung", + "errors.signupSuggestion": "Verwenden Sie einen anderen Benutzernamen oder wenden Sie sich an einen Administrator, wenn Sie bereits ein Konto haben.", "errors.templateNotFound": "Vorlage in der Komponente nicht gefunden", "errors.tooManyFiles": "Es wurden zu viele Dateien erkannt ( {{count}} ). Dazu gehören wahrscheinlich auch große bzw. versteckte Verzeichnisse. Bitte wählen Sie einen kleineren Ordner aus oder schließen Sie Ordner wie „node_modules“ aus.", "errors.transformUndefined": "Die Umwandlung ergab einen undefinierten Wert", diff --git a/src/frontend/src/locales/en.json b/src/frontend/src/locales/en.json index c5250fdd57..b13c42608e 100644 --- a/src/frontend/src/locales/en.json +++ b/src/frontend/src/locales/en.json @@ -27,14 +27,17 @@ "errors.editUser": "Error on edit user", "errors.addUser": "Error when adding new user", "errors.signin": "Error signing in", + "errors.signinSuggestion": "Check your username and password, then try again.", "errors.deleteKey": "Error on delete key", "errors.deleteKeys": "Error on delete keys", "errors.invalidSelection": "Invalid selection", "errors.changePassword": "Error changing password", "errors.passwordMismatch": "Passwords do not match", + "errors.passwordMismatchSuggestion": "Re-enter both passwords so they match.", "errors.saveChanges": "Error saving changes", "errors.profilePictures": "Error retrieving profile pictures", "errors.signup": "Error signing up", + "errors.signupSuggestion": "Use a different username or contact an administrator if you already have an account.", "errors.apiKey": "API Key Error", "errors.noApiKey": "You don't have an API Key. Please add one to use the Langflow Store.", "errors.invalidApiKey": "Your API Key is not valid. Please add a valid API Key to use the Langflow Store.", diff --git a/src/frontend/src/locales/es.json b/src/frontend/src/locales/es.json index 212ebfc34d..2a973441f0 100644 --- a/src/frontend/src/locales/es.json +++ b/src/frontend/src/locales/es.json @@ -623,6 +623,7 @@ "errors.noResponseBody": "No hay cuerpo de respuesta", "errors.parameterNotFound": "Parámetro no encontrado en la plantilla", "errors.passwordMismatch": "Las contraseñas no coinciden", + "errors.passwordMismatchSuggestion": "Vuelve a introducir ambas contraseñas para que coincidan.", "errors.profilePictures": "Error al recuperar las fotos de perfil", "errors.prompt": "Hay un error en esta indicación; por favor, revísala", "errors.receivedMalformedEvent": "Se ha recibido un evento con formato incorrecto del servidor", @@ -635,7 +636,9 @@ "errors.sendMessage": "Se ha producido un error al enviar el mensaje", "errors.sessionDeletedLocalStorage": "Sesión eliminada del almacenamiento local", "errors.signin": "Error al iniciar sesión", + "errors.signinSuggestion": "Comprueba tu nombre de usuario y contraseña e inténtalo de nuevo.", "errors.signup": "Error al registrarse", + "errors.signupSuggestion": "Usa otro nombre de usuario o ponte en contacto con un administrador si ya tienes una cuenta.", "errors.templateNotFound": "No se ha encontrado la plantilla en el componente", "errors.tooManyFiles": "Se han detectado demasiados archivos ( {{count}} ). Es probable que esto incluya directorios grandes u ocultos. Selecciona una carpeta más pequeña o excluye carpetas como «node_modules».", "errors.transformUndefined": "La transformación ha dado como resultado un valor indefinido", diff --git a/src/frontend/src/locales/fr.json b/src/frontend/src/locales/fr.json index bf3fdacbc1..51b571b2c6 100644 --- a/src/frontend/src/locales/fr.json +++ b/src/frontend/src/locales/fr.json @@ -623,6 +623,7 @@ "errors.noResponseBody": "Pas de corps de réponse", "errors.parameterNotFound": "Paramètre introuvable dans le modèle", "errors.passwordMismatch": "Les mots de passe ne correspondent pas", + "errors.passwordMismatchSuggestion": "Saisissez à nouveau les deux mots de passe afin qu'ils correspondent.", "errors.profilePictures": "Erreur lors de la récupération des photos de profil", "errors.prompt": "Il y a un problème avec cette consigne, merci de la vérifier", "errors.receivedMalformedEvent": "Événement mal formé reçu du serveur", @@ -635,7 +636,9 @@ "errors.sendMessage": "Une erreur s'est produite lors de l'envoi du message", "errors.sessionDeletedLocalStorage": "Session supprimée de la mémoire locale", "errors.signin": "Erreur lors de la connexion", + "errors.signinSuggestion": "Vérifiez votre nom d'utilisateur et votre mot de passe, puis réessayez.", "errors.signup": "Erreur lors de l'inscription", + "errors.signupSuggestion": "Utilisez un autre nom d'utilisateur ou contactez un administrateur si vous avez déjà un compte.", "errors.templateNotFound": "Modèle introuvable dans le composant", "errors.tooManyFiles": "Trop de fichiers détectés ( {{count}} ). Cela inclut probablement les répertoires volumineux ou cachés. Veuillez sélectionner un dossier plus petit ou exclure des dossiers tels que node_modules.", "errors.transformUndefined": "La transformation a donné lieu à une valeur indéfinie", diff --git a/src/frontend/src/locales/ja.json b/src/frontend/src/locales/ja.json index 10750a82cb..ca50f80c81 100644 --- a/src/frontend/src/locales/ja.json +++ b/src/frontend/src/locales/ja.json @@ -623,6 +623,7 @@ "errors.noResponseBody": "レスポンス本文なし", "errors.parameterNotFound": "テンプレートにそのパラメータが見つかりません", "errors.passwordMismatch": "パスワードが一致しません", + "errors.passwordMismatchSuggestion": "両方のパスワードを一致するように再入力してください。", "errors.profilePictures": "プロフィール画像の取得に失敗しました", "errors.prompt": "このプロンプトに問題があります。確認してください", "errors.receivedMalformedEvent": "サーバーから形式が不正なイベントを受信しました", @@ -635,7 +636,9 @@ "errors.sendMessage": "メッセージの送信中にエラーが発生しました", "errors.sessionDeletedLocalStorage": "ローカルストレージからセッションが削除されました", "errors.signin": "ログイン中にエラーが発生しました", + "errors.signinSuggestion": "ユーザー名とパスワードを確認して、もう一度お試しください。", "errors.signup": "登録中にエラーが発生しました", + "errors.signupSuggestion": "別のユーザー名を使用するか、すでにアカウントをお持ちの場合は管理者にお問い合わせください。", "errors.templateNotFound": "コンポーネント内にテンプレートが見つかりません", "errors.tooManyFiles": "ファイルが多すぎます( {{count}} )。 これには、大規模なディレクトリや隠しディレクトリも含まれる可能性が高い。 より小さなフォルダを選択するか、node_modules などのフォルダを除外してください。", "errors.transformUndefined": "変換の結果、未定義の値が得られました", diff --git a/src/frontend/src/locales/pt.json b/src/frontend/src/locales/pt.json index 55b8addc56..b689dfd635 100644 --- a/src/frontend/src/locales/pt.json +++ b/src/frontend/src/locales/pt.json @@ -623,6 +623,7 @@ "errors.noResponseBody": "Sem corpo da resposta", "errors.parameterNotFound": "Parâmetro não encontrado no modelo", "errors.passwordMismatch": "As senhas não correspondem", + "errors.passwordMismatchSuggestion": "Digite novamente as duas senhas para que elas correspondam.", "errors.profilePictures": "Erro ao recuperar fotos de perfil", "errors.prompt": "Há algo de errado com esta solicitação; por favor, verifique-a", "errors.receivedMalformedEvent": "Recebido evento com formato inválido do servidor", @@ -635,7 +636,9 @@ "errors.sendMessage": "Ocorreu um erro ao enviar a mensagem", "errors.sessionDeletedLocalStorage": "Sessão excluída do armazenamento local", "errors.signin": "Erro ao fazer login", + "errors.signinSuggestion": "Verifique seu nome de usuário e senha e tente novamente.", "errors.signup": "Erro ao se inscrever", + "errors.signupSuggestion": "Use um nome de usuário diferente ou entre em contato com um administrador se você já tiver uma conta.", "errors.templateNotFound": "Modelo não encontrado no componente", "errors.tooManyFiles": "Foram detectados muitos arquivos ( {{count}} ). Isso provavelmente inclui diretórios grandes ou ocultos. Selecione uma pasta menor ou exclua pastas como node_modules.", "errors.transformUndefined": "A transformação resultou em um valor indefinido", diff --git a/src/frontend/src/locales/zh-Hans.json b/src/frontend/src/locales/zh-Hans.json index bf30d8a2be..10c63b4166 100644 --- a/src/frontend/src/locales/zh-Hans.json +++ b/src/frontend/src/locales/zh-Hans.json @@ -623,6 +623,7 @@ "errors.noResponseBody": "没有响应正文", "errors.parameterNotFound": "模板中未找到该参数", "errors.passwordMismatch": "密码不匹配", + "errors.passwordMismatchSuggestion": "请重新输入两次密码以确保一致。", "errors.profilePictures": "无法获取个人头像", "errors.prompt": "此提示存在问题,请检查一下", "errors.receivedMalformedEvent": "从服务器收到格式错误的事件", @@ -635,7 +636,9 @@ "errors.sendMessage": "发送消息时发生错误", "errors.sessionDeletedLocalStorage": "已从本地存储中删除会话", "errors.signin": "登录失败", + "errors.signinSuggestion": "请检查您的用户名和密码,然后重试。", "errors.signup": "注册失败", + "errors.signupSuggestion": "请使用其他用户名;如果您已有账户,请联系管理员。", "errors.templateNotFound": "在组件中未找到该模板", "errors.tooManyFiles": "检测到文件过多( {{count}} )。 这可能包括大型或隐藏的目录。 请选择一个较小的文件夹,或排除如 node_modules 之类的文件夹。", "errors.transformUndefined": "转换后得到未定义的值", diff --git a/src/frontend/src/modals/deleteConfirmationModal/__tests__/DeleteConfirmationModal.a11y.test.tsx b/src/frontend/src/modals/deleteConfirmationModal/__tests__/DeleteConfirmationModal.a11y.test.tsx new file mode 100644 index 0000000000..721ac6611a --- /dev/null +++ b/src/frontend/src/modals/deleteConfirmationModal/__tests__/DeleteConfirmationModal.a11y.test.tsx @@ -0,0 +1,67 @@ +import { fireEvent, render, screen } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import DeleteConfirmationModal from "../index"; + +describe("DeleteConfirmationModal accessibility", () => { + it("exposes_destructive_confirmation_copy_and_cancel_path", () => { + const onConfirm = jest.fn(); + + render( + + + , + ); + + expect(screen.getByRole("dialog", { name: "Delete" })).toBeInTheDocument(); + expect( + screen.getByText((content) => + content.includes( + "This will permanently delete the folder and all associated flows and components.", + ), + ), + ).toBeInTheDocument(); + expect( + screen.getByText((content) => content.includes("This can't be undone.")), + ).toBeInTheDocument(); + expect( + screen.getByTestId("btn_cancel_delete_confirmation_modal"), + ).toHaveTextContent("Cancel"); + expect( + screen.getByTestId("btn_delete_delete_confirmation_modal"), + ).toHaveTextContent("Delete"); + + fireEvent.click(screen.getByTestId("btn_cancel_delete_confirmation_modal")); + expect(onConfirm).not.toHaveBeenCalled(); + }); + + it("keeps_trigger_reachable_by_keyboard_tab", async () => { + const user = userEvent.setup(); + + render( + + + , + ); + + const trigger = screen.getByRole("button", { + name: "Open delete dialog", + }); + + expect(trigger).not.toHaveAttribute("tabindex", "-1"); + + await user.tab(); + + expect(trigger).toHaveFocus(); + }); +}); diff --git a/src/frontend/src/modals/deleteConfirmationModal/index.tsx b/src/frontend/src/modals/deleteConfirmationModal/index.tsx index 01366c2aaf..9a648e868c 100644 --- a/src/frontend/src/modals/deleteConfirmationModal/index.tsx +++ b/src/frontend/src/modals/deleteConfirmationModal/index.tsx @@ -32,7 +32,7 @@ export default function DeleteConfirmationModal({ return ( - + {children} diff --git a/src/frontend/src/pages/LoginPage/__tests__/LoginPage.a11y.test.tsx b/src/frontend/src/pages/LoginPage/__tests__/LoginPage.a11y.test.tsx new file mode 100644 index 0000000000..6737e2a86f --- /dev/null +++ b/src/frontend/src/pages/LoginPage/__tests__/LoginPage.a11y.test.tsx @@ -0,0 +1,160 @@ +import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; +import { fireEvent, render, screen } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import useAlertStore from "@/stores/alertStore"; +import { axe } from "@/utils/a11y-test"; +import LoginPage from "../index"; + +const mockLoginMutate = jest.fn(); + +jest.mock("@/assets/LangflowLogo.svg?react", () => ({ + __esModule: true, + default: (props: React.SVGProps) => , +})); + +jest.mock("@radix-ui/react-form", () => { + const React = require("react"); + return { + __esModule: true, + Root: ({ children, ...props }) => + React.createElement("form", props, children), + Field: ({ children }) => React.createElement("div", null, children), + Label: ({ children, ...props }) => + React.createElement("label", props, children), + Control: ({ children }) => children, + Message: ({ children, ...props }) => + React.createElement("p", props, children), + Submit: ({ children }) => children, + }; +}); + +jest.mock("@/controllers/API/queries/auth", () => ({ + useLoginUser: () => ({ mutate: mockLoginMutate }), +})); + +jest.mock("@/customization/components/custom-link", () => ({ + CustomLink: ({ children, to }: { children: React.ReactNode; to: string }) => ( + {children} + ), +})); + +jest.mock("@/hooks/use-sanitize-redirect-url", () => ({ + useSanitizeRedirectUrl: jest.fn(), +})); + +function renderLoginPage() { + const queryClient = new QueryClient(); + return render( + + + , + ); +} + +describe("LoginPage accessibility", () => { + beforeEach(() => { + jest.clearAllMocks(); + useAlertStore.setState({ + notificationList: [], + tempNotificationList: [], + }); + }); + + it("announces_required_field_errors_on_empty_submit", async () => { + const user = userEvent.setup(); + renderLoginPage(); + + await user.click(screen.getByRole("button", { name: /sign in/i })); + + expect( + await screen.findByText("Please enter your username"), + ).toHaveAttribute("role", "alert"); + expect(screen.getByText("Please enter your password")).toHaveAttribute( + "role", + "alert", + ); + expect(screen.getByPlaceholderText("Username")).toHaveAttribute( + "aria-describedby", + "login-username-error", + ); + expect(screen.getByPlaceholderText("Password")).toHaveAttribute( + "aria-describedby", + "login-password-error", + ); + expect(mockLoginMutate).not.toHaveBeenCalled(); + }); + + it("should_have_no_axe_violations", async () => { + const { container } = renderLoginPage(); + + expect(await axe(container)).toHaveNoViolations(); + }); + + it("uses_valid_external_labels_for_username_and_password", () => { + renderLoginPage(); + + expect( + screen.getByRole("textbox", { name: /username/i }), + ).toBeInTheDocument(); + expect( + screen.getByLabelText(/^Password/i, { selector: "input" }), + ).toBeInTheDocument(); + }); + + it("adds_actionable_suggestion_to_server_login_errors", () => { + mockLoginMutate.mockImplementation((_user, options) => { + options.onError({ + response: { data: { detail: "Incorrect username or password." } }, + }); + }); + const { container } = renderLoginPage(); + + fireEvent.change(screen.getByPlaceholderText("Username"), { + target: { value: "alice" }, + }); + fireEvent.change(screen.getByPlaceholderText("Password"), { + target: { value: "wrong-password" }, + }); + fireEvent.submit(container.querySelector("form")!); + + expect(useAlertStore.getState().tempNotificationList[0]).toMatchObject({ + title: "Error signing in", + type: "error", + list: [ + "Incorrect username or password. Check your username and password, then try again.", + ], + }); + }); + + it("preserves_fastapi_validation_error_details_for_login_errors", () => { + mockLoginMutate.mockImplementation((_user, options) => { + options.onError({ + response: { + data: { + detail: [ + { msg: "Username must be a string" }, + { msg: "Password is required" }, + ], + }, + }, + }); + }); + const { container } = renderLoginPage(); + + fireEvent.change(screen.getByPlaceholderText("Username"), { + target: { value: "alice" }, + }); + fireEvent.change(screen.getByPlaceholderText("Password"), { + target: { value: "wrong-password" }, + }); + fireEvent.submit(container.querySelector("form")!); + + expect(useAlertStore.getState().tempNotificationList[0]).toMatchObject({ + title: "Error signing in", + type: "error", + list: [ + "Username must be a string; Password is required. Check your username and password, then try again.", + ], + }); + }); +}); diff --git a/src/frontend/src/pages/LoginPage/index.tsx b/src/frontend/src/pages/LoginPage/index.tsx index da166238a5..a83a4385f1 100644 --- a/src/frontend/src/pages/LoginPage/index.tsx +++ b/src/frontend/src/pages/LoginPage/index.tsx @@ -4,9 +4,14 @@ import { useContext, useState } from "react"; import { useTranslation } from "react-i18next"; import LangflowLogo from "@/assets/LangflowLogo.svg?react"; import ShadTooltip from "@/components/common/shadTooltipComponent"; +import { extractApiErrorMessage } from "@/controllers/API/helpers/extract-api-error-message"; import { useLoginUser } from "@/controllers/API/queries/auth"; import { CustomLink } from "@/customization/components/custom-link"; import { useSanitizeRedirectUrl } from "@/hooks/use-sanitize-redirect-url"; +import { + appendErrorSuggestion, + getRequiredFieldError, +} from "@/utils/authErrorMessages"; import InputComponent from "../../components/core/parameterRenderComponent/components/inputComponent"; import { Button } from "../../components/ui/button"; import { Input } from "../../components/ui/input"; @@ -22,6 +27,7 @@ import type { export default function LoginPage(): JSX.Element { const [inputState, setInputState] = useState(CONTROL_LOGIN_STATE); + const [submitAttempted, setSubmitAttempted] = useState(false); const { password, username } = inputState; @@ -55,16 +61,40 @@ export default function LoginPage(): JSX.Element { onError: (error) => { setErrorData({ title: t("errors.signin"), - list: [error["response"]["data"]["detail"]], + list: [ + appendErrorSuggestion( + extractApiErrorMessage( + error as Parameters[0], + t("errors.signin"), + ), + t("errors.signinSuggestion", { + defaultValue: + "Check your username and password, then try again.", + }), + ), + ], }); }, }); } + const usernameError = getRequiredFieldError( + submitAttempted, + username, + t("auth.usernameRequired"), + ); + const passwordError = getRequiredFieldError( + submitAttempted, + password, + t("auth.passwordRequired"), + ); + return ( setSubmitAttempted(true)} onSubmit={(event) => { - if (password === "") { + setSubmitAttempted(true); + if (username.trim() === "" || password.trim() === "") { event.preventDefault(); return; } @@ -85,35 +115,56 @@ export default function LoginPage(): JSX.Element {
- + + - - { - handleInput({ target: { name: "username", value } }); - }} - value={username} - className="w-full" - required - placeholder={t("auth.usernamePlaceholder")} - /> - + { + handleInput({ target: { name: "username", value } }); + }} + value={username} + className="w-full" + required + aria-describedby={ + usernameError ? "login-username-error" : undefined + } + aria-invalid={Boolean(usernameError)} + placeholder={t("auth.usernamePlaceholder")} + /> - - {t("auth.usernameRequired")} - + {usernameError && ( + + )}
- + + { @@ -123,13 +174,26 @@ export default function LoginPage(): JSX.Element { isForm password={true} required + id="login-password" + inputProps={{ + "aria-describedby": passwordError + ? "login-password-error" + : undefined, + "aria-invalid": Boolean(passwordError) || undefined, + }} placeholder={t("auth.passwordPlaceholder")} className="w-full" /> - - {t("auth.passwordRequired")} - + {passwordError && ( + + )}
diff --git a/src/frontend/src/pages/SignUpPage/__tests__/SignUpPage.a11y.test.tsx b/src/frontend/src/pages/SignUpPage/__tests__/SignUpPage.a11y.test.tsx new file mode 100644 index 0000000000..ff1c123b54 --- /dev/null +++ b/src/frontend/src/pages/SignUpPage/__tests__/SignUpPage.a11y.test.tsx @@ -0,0 +1,192 @@ +import { fireEvent, render, screen } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import useAlertStore from "@/stores/alertStore"; +import { axe } from "@/utils/a11y-test"; +import SignUp from "../index"; + +const mockAddUserMutate = jest.fn(); +const mockNavigate = jest.fn(); + +jest.mock("@/assets/LangflowLogo.svg?react", () => ({ + __esModule: true, + default: (props: React.SVGProps) => , +})); + +jest.mock("@radix-ui/react-form", () => { + const React = require("react"); + return { + __esModule: true, + Root: ({ children, ...props }) => + React.createElement("form", props, children), + Field: ({ children }) => React.createElement("div", null, children), + Label: ({ children, ...props }) => + React.createElement("label", props, children), + Control: ({ children }) => children, + Message: ({ children, ...props }) => + React.createElement("p", props, children), + Submit: ({ children }) => children, + }; +}); + +jest.mock("@/controllers/API/queries/auth", () => ({ + useAddUser: () => ({ mutate: mockAddUserMutate }), +})); + +jest.mock("@/customization/components/custom-link", () => ({ + CustomLink: ({ children, to }: { children: React.ReactNode; to: string }) => ( + {children} + ), +})); + +jest.mock("@/customization/hooks/use-custom-navigate", () => ({ + useCustomNavigate: () => mockNavigate, +})); + +jest.mock("@/customization/utils/analytics", () => ({ + track: jest.fn(), +})); + +function renderSignUpPage() { + return render(); +} + +describe("SignUpPage accessibility", () => { + beforeEach(() => { + jest.clearAllMocks(); + useAlertStore.setState({ + notificationList: [], + tempNotificationList: [], + }); + }); + + it("announces_required_field_errors_on_empty_submit", async () => { + const user = userEvent.setup(); + renderSignUpPage(); + + await user.click(screen.getByRole("button", { name: /sign up/i })); + + expect( + await screen.findByText("Please enter your username"), + ).toHaveAttribute("role", "alert"); + expect(screen.getByText("Please enter a password")).toHaveAttribute( + "role", + "alert", + ); + expect(screen.getByText("Please confirm your password")).toHaveAttribute( + "role", + "alert", + ); + expect(mockAddUserMutate).not.toHaveBeenCalled(); + }); + + it("should_have_no_axe_violations", async () => { + const { container } = renderSignUpPage(); + + expect(await axe(container)).toHaveNoViolations(); + }); + + it("uses_valid_external_labels_for_all_fields", () => { + renderSignUpPage(); + + expect( + screen.getByRole("textbox", { name: /username/i }), + ).toBeInTheDocument(); + expect(screen.getByLabelText(/^Password/i)).toBeInTheDocument(); + expect( + screen.getByLabelText(/^Confirm your password/i), + ).toBeInTheDocument(); + }); + + it("announces_actionable_password_mismatch_suggestion_after_confirm_blur", async () => { + const user = userEvent.setup(); + renderSignUpPage(); + + await user.type(screen.getByPlaceholderText("Password"), "first-password"); + await user.type( + screen.getByPlaceholderText("Confirm your password"), + "second-password", + ); + + expect( + screen.queryByText( + "Passwords do not match. Re-enter both passwords so they match.", + ), + ).not.toBeInTheDocument(); + + fireEvent.blur(screen.getByPlaceholderText("Confirm your password")); + + const mismatch = await screen.findByText( + "Passwords do not match. Re-enter both passwords so they match.", + ); + expect(mismatch).toHaveAttribute("role", "alert"); + expect(screen.getByPlaceholderText("Password")).not.toHaveAttribute( + "aria-describedby", + ); + expect( + screen.getByPlaceholderText("Confirm your password"), + ).toHaveAttribute("aria-describedby", "signup-confirm-password-error"); + }); + + it("adds_actionable_suggestion_to_server_signup_errors", () => { + mockAddUserMutate.mockImplementation((_user, options) => { + options.onError({ + response: { data: { detail: "This username is unavailable." } }, + }); + }); + const { container } = renderSignUpPage(); + + fireEvent.change(screen.getByPlaceholderText("Username"), { + target: { value: "alice" }, + }); + fireEvent.change(screen.getByPlaceholderText("Password"), { + target: { value: "same-password" }, + }); + fireEvent.change(screen.getByPlaceholderText("Confirm your password"), { + target: { value: "same-password" }, + }); + fireEvent.submit(container.querySelector("form")!); + + expect(useAlertStore.getState().tempNotificationList[0]).toMatchObject({ + title: "Error signing up", + type: "error", + list: [ + "This username is unavailable. Use a different username or contact an administrator if you already have an account.", + ], + }); + }); + + it("preserves_fastapi_validation_error_details_for_signup_errors", () => { + mockAddUserMutate.mockImplementation((_user, options) => { + options.onError({ + response: { + data: { + detail: [ + { msg: "Username must be unique" }, + { msg: "Password is too short" }, + ], + }, + }, + }); + }); + const { container } = renderSignUpPage(); + + fireEvent.change(screen.getByPlaceholderText("Username"), { + target: { value: "alice" }, + }); + fireEvent.change(screen.getByPlaceholderText("Password"), { + target: { value: "same-password" }, + }); + fireEvent.change(screen.getByPlaceholderText("Confirm your password"), { + target: { value: "same-password" }, + }); + fireEvent.submit(container.querySelector("form")!); + + expect(useAlertStore.getState().tempNotificationList[0]).toMatchObject({ + title: "Error signing up", + type: "error", + list: [ + "Username must be unique; Password is too short. Use a different username or contact an administrator if you already have an account.", + ], + }); + }); +}); diff --git a/src/frontend/src/pages/SignUpPage/index.tsx b/src/frontend/src/pages/SignUpPage/index.tsx index de2f14de2f..48f20d8dfa 100644 --- a/src/frontend/src/pages/SignUpPage/index.tsx +++ b/src/frontend/src/pages/SignUpPage/index.tsx @@ -1,13 +1,18 @@ import * as Form from "@radix-ui/react-form"; -import { type FormEvent, useEffect, useState } from "react"; +import { type FormEvent, useState } from "react"; import { useTranslation } from "react-i18next"; import LangflowLogo from "@/assets/LangflowLogo.svg?react"; import ShadTooltip from "@/components/common/shadTooltipComponent"; import InputComponent from "@/components/core/parameterRenderComponent/components/inputComponent"; +import { extractApiErrorMessage } from "@/controllers/API/helpers/extract-api-error-message"; import { useAddUser } from "@/controllers/API/queries/auth"; import { CustomLink } from "@/customization/components/custom-link"; import { useCustomNavigate } from "@/customization/hooks/use-custom-navigate"; import { track } from "@/customization/utils/analytics"; +import { + appendErrorSuggestion, + getRequiredFieldError, +} from "@/utils/authErrorMessages"; import { Button } from "../../components/ui/button"; import { Input } from "../../components/ui/input"; import { CONTROL_INPUT_STATE } from "../../constants/constants"; @@ -21,8 +26,8 @@ import type { export default function SignUp(): JSX.Element { const [inputState, setInputState] = useState(CONTROL_INPUT_STATE); - - const [isDisabled, setDisableBtn] = useState(true); + const [submitAttempted, setSubmitAttempted] = useState(false); + const [confirmPasswordTouched, setConfirmPasswordTouched] = useState(false); const { t } = useTranslation(); const { password, cnfPassword, username } = inputState; @@ -38,13 +43,6 @@ export default function SignUp(): JSX.Element { setInputState((prev) => ({ ...prev, [name]: value })); } - useEffect(() => { - if (password !== cnfPassword) return setDisableBtn(true); - if (password === "" || cnfPassword === "") return setDisableBtn(true); - if (username === "") return setDisableBtn(true); - setDisableBtn(false); - }, [password, cnfPassword, username, handleInput]); - function handleSignup(): void { const { username, password } = inputState; const newUser: UserInputType = { @@ -61,29 +59,72 @@ export default function SignUp(): JSX.Element { navigate("/login"); }, onError: (error) => { - const { - response: { - data: { detail }, - }, - } = error; setErrorData({ title: t("errors.signup"), - list: [detail], + list: [ + appendErrorSuggestion( + extractApiErrorMessage( + error as Parameters[0], + t("errors.signup"), + ), + t("errors.signupSuggestion", { + defaultValue: + "Use a different username or contact an administrator if you already have an account.", + }), + ), + ], }); }, }); } + const passwordMismatch = + password !== "" && cnfPassword !== "" && password !== cnfPassword; + const usernameError = getRequiredFieldError( + submitAttempted, + username, + t("auth.usernameRequired"), + ); + const passwordError = getRequiredFieldError( + submitAttempted, + password, + t("auth.passwordEnterRequired"), + ); + const shouldShowPasswordMismatch = + passwordMismatch && (submitAttempted || confirmPasswordTouched); + const confirmPasswordRequiredError = getRequiredFieldError( + submitAttempted, + cnfPassword, + t("auth.confirmPasswordRequired"), + ); + const confirmPasswordError = + confirmPasswordRequiredError ?? + (shouldShowPasswordMismatch + ? `${t("errors.passwordMismatch")}. ${t( + "errors.passwordMismatchSuggestion", + { + defaultValue: "Re-enter both passwords so they match.", + }, + )}` + : undefined); + return ( setSubmitAttempted(true)} onSubmit={(event: FormEvent) => { - if (password === "") { + setSubmitAttempted(true); + if ( + username.trim() === "" || + password.trim() === "" || + cnfPassword.trim() === "" || + passwordMismatch + ) { event.preventDefault(); return; } - const _data = Object.fromEntries(new FormData(event.currentTarget)); event.preventDefault(); + handleSignup(); }} className="h-screen w-full" > @@ -98,7 +139,12 @@ export default function SignUp(): JSX.Element {
- + + - - { - handleInput({ target: { name: "username", value } }); - }} - value={username} - className="w-full" - required - placeholder={t("auth.usernamePlaceholder")} - /> - + { + handleInput({ target: { name: "username", value } }); + }} + value={username} + className="w-full" + required + aria-describedby={ + usernameError ? "signup-username-error" : undefined + } + aria-invalid={Boolean(usernameError)} + placeholder={t("auth.usernamePlaceholder")} + /> - - {t("auth.usernameRequired")} - + {usernameError && ( + + )}
- - + + + { handleInput({ target: { name: "password", value } }); @@ -145,27 +207,39 @@ export default function SignUp(): JSX.Element { isForm password={true} required + id="signup-password" + inputProps={{ + "aria-describedby": passwordError + ? "signup-password-error" + : undefined, + "aria-invalid": Boolean(passwordError) || undefined, + }} placeholder={t("auth.passwordPlaceholder")} className="w-full" /> - - {t("auth.passwordEnterRequired")} - - - {password != cnfPassword && ( - - {t("errors.passwordMismatch")} - + {passwordError && ( + )}
- + + { handleInput({ target: { name: "cnfPassword", value } }); }} + onBlur={() => setConfirmPasswordTouched(true)} value={cnfPassword} isForm password={true} required + id="signup-confirm-password" + inputProps={{ + "aria-describedby": confirmPasswordError + ? "signup-confirm-password-error" + : undefined, + "aria-invalid": Boolean(confirmPasswordError) || undefined, + }} placeholder={t("auth.confirmPasswordPlaceholder")} className="w-full" /> - - {t("auth.confirmPasswordRequired")} - + {confirmPasswordError && ( + + )}
- diff --git a/src/frontend/src/style/index.css b/src/frontend/src/style/index.css index 14127dea32..9e7f07738b 100644 --- a/src/frontend/src/style/index.css +++ b/src/frontend/src/style/index.css @@ -26,14 +26,14 @@ --secondary-foreground: 240 4% 16%; /* hsl(240, 4%, 16%) */ --accent: 240 5% 96%; /* hsl(240, 5%, 96%) */ --accent-foreground: 0 0% 0%; /* hsl(0, 0%, 0%) */ - --destructive: 0 72% 51%; /* hsl(0, 72%, 51%) */ + --destructive: 0 72% 45%; /* hsl(0, 72%, 45%) */ --destructive-foreground: 0 0% 100%; /* hsl(0, 0%, 100%) */ --accent-amber: 26 90% 37%; /* hsl(26, 90%, 37%) */ --accent-amber-foreground: 26 90% 37%; /* hsl(26, 90%, 37%) */ --ring: 0 0% 0%; /* hsl(0, 0%, 0%) */ --primary-hover: 240 4% 16%; /* hsl(240, 4%, 16%) */ --secondary-hover: 240 6% 90%; /* hsl(240, 6%, 90%) */ - --placeholder-foreground: 240 5% 65%; /* hsl(240, 5%, 65%) */ + --placeholder-foreground: 240 4% 42%; /* hsl(240, 4%, 42%) */ --canvas: 240 5% 96%; /* hsl(240, 5%, 96%) */ --canvas-dot: 240 5% 65%; /* hsl(240, 5%, 65%) */ --accent-emerald: 149 80% 90%; /* hsl(149, 80%, 90%) */ @@ -240,7 +240,7 @@ --ring: 0 0% 100%; /* hsl(0, 0%, 100%) */ --primary-hover: 240 6% 90%; /* hsl(240, 6%, 90%) */ --secondary-hover: 240 4% 16%; /* hsl(240, 4%, 16%) */ - --placeholder-foreground: 240 4% 46%; /* hsl(240, 4%, 46%) */ + --placeholder-foreground: 240 5% 65%; /* hsl(240, 5%, 65%) */ --canvas: 0 0% 0%; /* hsl(0, 0%, 0%) */ --canvas-dot: 240 5.3% 26.1%; /* hsl(240, 5.3%, 26.1%) */ diff --git a/src/frontend/src/types/components/index.ts b/src/frontend/src/types/components/index.ts index a8a7f88f7a..cc522889f0 100644 --- a/src/frontend/src/types/components/index.ts +++ b/src/frontend/src/types/components/index.ts @@ -1,5 +1,5 @@ import type { ReactFlowJsonObject } from "@xyflow/react"; -import type { ReactElement, ReactNode } from "react"; +import type { InputHTMLAttributes, ReactElement, ReactNode } from "react"; import type { handleOnNewValueType } from "@/CustomNodes/hooks/use-handle-new-value"; import type { InputOutput } from "../../constants/enums"; import type { @@ -32,6 +32,7 @@ export type InputComponentType = { placeholder?: string; className?: string; id?: string; + inputProps?: InputHTMLAttributes; blurOnEnter?: boolean; optionsIcon?: string; optionsPlaceholder?: string; diff --git a/src/frontend/src/utils/authErrorMessages.ts b/src/frontend/src/utils/authErrorMessages.ts new file mode 100644 index 0000000000..06eb9cbc1d --- /dev/null +++ b/src/frontend/src/utils/authErrorMessages.ts @@ -0,0 +1,19 @@ +export function appendErrorSuggestion( + detail: string | undefined, + suggestion: string, +): string { + if (!detail) return suggestion; + if (detail.includes(suggestion)) return detail; + + const trimmedDetail = detail.trim(); + const separator = /[.!?]$/.test(trimmedDetail) ? " " : ". "; + return `${trimmedDetail}${separator}${suggestion}`; +} + +export function getRequiredFieldError( + shouldValidate: boolean, + value: string, + message: string, +): string | undefined { + return shouldValidate && value.trim() === "" ? message : undefined; +} diff --git a/src/frontend/tests/a11y/auth-pages.a11y.spec.ts b/src/frontend/tests/a11y/auth-pages.a11y.spec.ts new file mode 100644 index 0000000000..5f1fdda951 --- /dev/null +++ b/src/frontend/tests/a11y/auth-pages.a11y.spec.ts @@ -0,0 +1,171 @@ +import { expect, type LangflowPage, test } from "../fixtures"; + +async function disableAutoLogin(page: LangflowPage) { + await page.route("**/api/v1/auto_login", (route) => { + route.fulfill({ + status: 403, + contentType: "application/json", + body: JSON.stringify({ + detail: { message: "Auto login is disabled.", auto_login: false }, + }), + }); + }); +} + +async function disableAnimations(page: LangflowPage) { + await page.addStyleTag({ + content: ` + *, + *::before, + *::after { + animation-duration: 0s !important; + animation-delay: 0s !important; + transition-duration: 0s !important; + transition-delay: 0s !important; + scroll-behavior: auto !important; + } + `, + }); +} + +async function mockLoginError(page: LangflowPage) { + await page.route("**/api/v1/login", (route) => { + route.fulfill({ + status: 401, + contentType: "application/json", + body: JSON.stringify({ detail: "Incorrect username or password." }), + }); + }); +} + +async function mockSignupError(page: LangflowPage) { + await page.route("**/api/v1/users/", (route) => { + route.fulfill({ + status: 400, + contentType: "application/json", + body: JSON.stringify({ detail: "This username is unavailable." }), + }); + }); +} + +async function forceDarkTheme(page: LangflowPage) { + await page.addInitScript(() => { + window.localStorage.setItem("themePreference", "dark"); + window.localStorage.setItem("isDark", "true"); + }); +} + +async function forceLightTheme(page: LangflowPage) { + await page.addInitScript(() => { + window.localStorage.setItem("themePreference", "light"); + window.localStorage.setItem("isDark", "false"); + }); +} + +test.describe("auth page accessibility", () => { + test("scans empty login", { tag: ["@a11y"] }, async ({ page }) => { + await forceLightTheme(page); + await disableAutoLogin(page); + + await page.goto("/login"); + await disableAnimations(page); + await expect(page.getByRole("button", { name: /sign in/i })).toBeVisible(); + await page.runA11yScan("auth-login-empty"); + }); + + test("scans login validation", { tag: ["@a11y"] }, async ({ page }) => { + await forceLightTheme(page); + await disableAutoLogin(page); + + await page.goto("/login"); + await disableAnimations(page); + await expect(page.getByRole("button", { name: /sign in/i })).toBeVisible(); + await page.getByRole("button", { name: /sign in/i }).click(); + await expect(page.getByRole("alert").first()).toBeVisible(); + await page.runA11yScan("auth-login-validation"); + }); + + test("scans login error toast", { tag: ["@a11y"] }, async ({ page }) => { + await forceLightTheme(page); + await disableAutoLogin(page); + await mockLoginError(page); + + await page.goto("/login"); + await disableAnimations(page); + await expect(page.getByRole("button", { name: /sign in/i })).toBeVisible(); + await page.getByRole("textbox", { name: /^Username \*$/ }).fill("alice"); + await page.getByLabel(/^Password/).fill("wrong-password"); + await page.getByRole("button", { name: /sign in/i }).click(); + await expect(page.getByText("Error signing in")).toBeVisible(); + await expect( + page.getByText( + "Incorrect username or password. Check your username and password, then try again.", + ), + ).toBeVisible(); + await page.runA11yScan("auth-login-error-toast"); + }); + + test("scans empty signup", { tag: ["@a11y"] }, async ({ page }) => { + await forceLightTheme(page); + await disableAutoLogin(page); + await page.goto("/signup"); + await disableAnimations(page); + await expect(page.getByRole("button", { name: /sign up/i })).toBeVisible(); + await page.runA11yScan("auth-signup-empty"); + }); + + test( + "scans signup password mismatch", + { tag: ["@a11y"] }, + async ({ page }) => { + await forceLightTheme(page); + await disableAutoLogin(page); + + await page.goto("/signup"); + await disableAnimations(page); + await expect( + page.getByRole("button", { name: /sign up/i }), + ).toBeVisible(); + await page.getByLabel(/^Password/).fill("first-password"); + await page.getByLabel(/^Confirm your password/).fill("second-password"); + await page.getByLabel(/^Confirm your password/).blur(); + await expect(page.getByText(/Passwords do not match/)).toContainText( + "Passwords do not match", + ); + await page.runA11yScan("auth-signup-mismatch"); + }, + ); + + test("scans signup error toast", { tag: ["@a11y"] }, async ({ page }) => { + await forceLightTheme(page); + await disableAutoLogin(page); + await mockSignupError(page); + + await page.goto("/signup"); + await disableAnimations(page); + await expect(page.getByRole("button", { name: /sign up/i })).toBeVisible(); + await page.getByRole("textbox", { name: /^Username \*$/ }).fill("alice"); + await page.getByLabel(/^Password/).fill("same-password"); + await page.getByLabel(/^Confirm your password/).fill("same-password"); + await page.getByRole("button", { name: /sign up/i }).click(); + await expect(page.getByText("Error signing up")).toBeVisible(); + await expect( + page.getByText( + "This username is unavailable. Use a different username or contact an administrator if you already have an account.", + ), + ).toBeVisible(); + await page.runA11yScan("auth-signup-error-toast"); + }); + + test("scans login in dark mode", { tag: ["@a11y"] }, async ({ page }) => { + await forceDarkTheme(page); + await disableAutoLogin(page); + + await page.goto("/login"); + await disableAnimations(page); + await expect(page.getByRole("button", { name: /sign in/i })).toBeVisible(); + await expect(page.locator("body")).toHaveClass(/dark/); + + await page.runA11yScan("auth-login-dark-empty"); + }); +});