diff --git a/backend/app/core/__pycache__/config.cpython-313.pyc b/backend/app/core/__pycache__/config.cpython-313.pyc index 4577591..3107c7b 100644 Binary files a/backend/app/core/__pycache__/config.cpython-313.pyc and b/backend/app/core/__pycache__/config.cpython-313.pyc differ diff --git a/backend/app/core/__pycache__/orchestrator.cpython-313.pyc b/backend/app/core/__pycache__/orchestrator.cpython-313.pyc index 15bf252..09e930d 100644 Binary files a/backend/app/core/__pycache__/orchestrator.cpython-313.pyc and b/backend/app/core/__pycache__/orchestrator.cpython-313.pyc differ diff --git a/backend/app/services/__pycache__/report_processor.cpython-313.pyc b/backend/app/services/__pycache__/report_processor.cpython-313.pyc index c1fcfed..896073a 100644 Binary files a/backend/app/services/__pycache__/report_processor.cpython-313.pyc and b/backend/app/services/__pycache__/report_processor.cpython-313.pyc differ diff --git a/backend/app/services/agents/tests/__pycache__/test_code_audit_agent.cpython-313-pytest-8.4.2.pyc b/backend/app/services/agents/tests/__pycache__/test_code_audit_agent.cpython-313-pytest-8.4.2.pyc index 75648c3..434714e 100644 Binary files a/backend/app/services/agents/tests/__pycache__/test_code_audit_agent.cpython-313-pytest-8.4.2.pyc and b/backend/app/services/agents/tests/__pycache__/test_code_audit_agent.cpython-313-pytest-8.4.2.pyc differ diff --git a/backend/app/services/agents/tests/__pycache__/test_onchain_agent.cpython-313-pytest-8.4.2.pyc b/backend/app/services/agents/tests/__pycache__/test_onchain_agent.cpython-313-pytest-8.4.2.pyc index a6fd164..ee7e242 100644 Binary files a/backend/app/services/agents/tests/__pycache__/test_onchain_agent.cpython-313-pytest-8.4.2.pyc and b/backend/app/services/agents/tests/__pycache__/test_onchain_agent.cpython-313-pytest-8.4.2.pyc differ diff --git a/backend/app/services/agents/tests/test_onchain_agent.py b/backend/app/services/agents/tests/test_onchain_agent.py index 6899f39..55a6f12 100644 --- a/backend/app/services/agents/tests/test_onchain_agent.py +++ b/backend/app/services/agents/tests/test_onchain_agent.py @@ -156,10 +156,12 @@ async def test_fetch_onchain_metrics_http_error_raises_onchainagenthttperror(moc create_mock_response(404) # All attempts fail ] - with pytest.raises(OnchainAgentHTTPError) as excinfo: - await fetch_onchain_metrics(url="http://test.com/onchain") - assert excinfo.value.status_code == 404 - assert mock_client_instance.get.call_count == 3 # Retries should still happen + with patch.object(fetch_onchain_metrics.retry, 'wait', new=wait_fixed(0.01)), \ + patch.object(fetch_onchain_metrics.retry, 'stop', new=stop_after_attempt(3)): + with pytest.raises(OnchainAgentHTTPError) as excinfo: + await fetch_onchain_metrics(url="http://test.com/onchain") + assert excinfo.value.status_code == 404 + assert mock_client_instance.get.call_count == 3 # Retries should still happen @pytest.mark.asyncio @patch('httpx.AsyncClient') @@ -172,9 +174,11 @@ async def test_fetch_onchain_metrics_unexpected_error_raises_onchainagentexcepti Exception("Unexpected error") ] - with pytest.raises(OnchainAgentException): - await fetch_onchain_metrics(url="http://test.com/onchain") - assert mock_client_instance.get.call_count == 3 # Retries should still happen + with patch.object(fetch_onchain_metrics.retry, 'wait', new=wait_fixed(0.01)), \ + patch.object(fetch_onchain_metrics.retry, 'stop', new=stop_after_attempt(3)): + with pytest.raises(OnchainAgentException): + await fetch_onchain_metrics(url="http://test.com/onchain") + assert mock_client_instance.get.call_count == 3 # Retries should still happen @pytest.mark.asyncio @patch('httpx.AsyncClient') @@ -187,10 +191,12 @@ async def test_fetch_tokenomics_http_error_raises_onchainagenthttperror(mock_asy create_mock_response(403) ] - with pytest.raises(OnchainAgentHTTPError) as excinfo: - await fetch_tokenomics(url="http://test.com/tokenomics") - assert excinfo.value.status_code == 403 - assert mock_client_instance.get.call_count == 3 # Retries should still happen + with patch.object(fetch_tokenomics.retry, 'wait', new=wait_fixed(0.01)), \ + patch.object(fetch_tokenomics.retry, 'stop', new=stop_after_attempt(3)): + with pytest.raises(OnchainAgentHTTPError) as excinfo: + await fetch_tokenomics(url="http://test.com/tokenomics") + assert excinfo.value.status_code == 403 + assert mock_client_instance.get.call_count == 3 # Retries should still happen @pytest.mark.asyncio @patch('httpx.AsyncClient') @@ -203,6 +209,137 @@ async def test_fetch_tokenomics_unexpected_error_raises_onchainagentexception(mo Exception("Another unexpected error") ] - with pytest.raises(OnchainAgentException): - await fetch_tokenomics(url="http://test.com/tokenomics") - assert mock_client_instance.get.call_count == 3 # Retries should still happen + with patch.object(fetch_tokenomics.retry, 'wait', new=wait_fixed(0.01)), \ + patch.object(fetch_tokenomics.retry, 'stop', new=stop_after_attempt(3)): + with pytest.raises(OnchainAgentException): + await fetch_tokenomics(url="http://test.com/tokenomics") + assert mock_client_instance.get.call_count == 3 # Retries should still happen + +# --- New tests for successful fetching and schema validation --- + +@pytest.mark.asyncio +@patch('httpx.AsyncClient') +async def test_fetch_onchain_metrics_success_and_schema(mock_async_client): + mock_client_instance = AsyncMock() + mock_async_client.return_value.__aenter__.return_value = mock_client_instance + + expected_metrics = { + "total_transactions": 1000, + "active_users": 500, + "average_transaction_value": 150.75, + "timestamp": "2023-10-27T10:00:00Z" + } + mock_client_instance.get.return_value = create_mock_response(200, expected_metrics) + + result = await fetch_onchain_metrics(url="http://test.com/onchain") + assert result == expected_metrics + assert "total_transactions" in result + assert "active_users" in result + assert "average_transaction_value" in result + assert "timestamp" in result + assert isinstance(result["total_transactions"], int) + assert isinstance(result["active_users"], int) + assert isinstance(result["average_transaction_value"], float) + assert isinstance(result["timestamp"], str) + +@pytest.mark.asyncio +@patch('httpx.AsyncClient') +async def test_fetch_tokenomics_success_and_schema(mock_async_client): + mock_client_instance = AsyncMock() + mock_async_client.return_value.__aenter__.return_value = mock_client_instance + + expected_tokenomics = { + "total_supply": "1000000000", + "circulating_supply": "800000000", + "market_cap_usd": "1500000000.50", + "token_price_usd": "1.50", + "last_updated": "2023-10-27T10:00:00Z" + } + mock_client_instance.get.return_value = create_mock_response(200, expected_tokenomics) + + result = await fetch_tokenomics(url="http://test.com/tokenomics") + assert result == expected_tokenomics + assert "total_supply" in result + assert "circulating_supply" in result + assert "market_cap_usd" in result + assert "token_price_usd" in result + assert "last_updated" in result + assert isinstance(result["total_supply"], str) + assert isinstance(result["circulating_supply"], str) + assert isinstance(result["market_cap_usd"], str) + assert isinstance(result["token_price_usd"], str) + assert isinstance(result["last_updated"], str) + +# --- New tests for handling missing fields --- + +@pytest.mark.asyncio +@patch('httpx.AsyncClient') +async def test_fetch_onchain_metrics_missing_fields(mock_async_client): + mock_client_instance = AsyncMock() + mock_async_client.return_value.__aenter__.return_value = mock_client_instance + + # Simulate a response with some missing fields + incomplete_metrics = { + "total_transactions": 1234, + "timestamp": "2023-10-27T11:00:00Z" + } + mock_client_instance.get.return_value = create_mock_response(200, incomplete_metrics) + + result = await fetch_onchain_metrics(url="http://test.com/onchain") + assert result == incomplete_metrics + # The agent should return whatever it gets, schema validation is typically done downstream + assert "total_transactions" in result + assert "active_users" not in result + assert "average_transaction_value" not in result + assert "timestamp" in result + +@pytest.mark.asyncio +@patch('httpx.AsyncClient') +async def test_fetch_tokenomics_missing_fields(mock_async_client): + mock_client_instance = AsyncMock() + mock_async_client.return_value.__aenter__.return_value = mock_client_instance + + # Simulate a response with some missing fields + incomplete_tokenomics = { + "total_supply": "999999999", + "token_price_usd": "2.10" + } + mock_client_instance.get.return_value = create_mock_response(200, incomplete_tokenomics) + + result = await fetch_tokenomics(url="http://test.com/tokenomics") + assert result == incomplete_tokenomics + assert "total_supply" in result + assert "circulating_supply" not in result + assert "market_cap_usd" not in result + assert "token_price_usd" in result + assert "last_updated" not in result + +# --- New tests for invalid token IDs (simulated via API response) --- + +@pytest.mark.asyncio +@patch('httpx.AsyncClient') +async def test_fetch_onchain_metrics_invalid_token_id(mock_async_client): + mock_client_instance = AsyncMock() + mock_async_client.return_value.__aenter__.return_value = mock_client_instance + + # Simulate an API response indicating an invalid token ID (e.g., 400 Bad Request) + error_response_data = {"error": "Invalid token ID provided"} + mock_client_instance.get.return_value = create_mock_response(400, error_response_data) + + with pytest.raises(OnchainAgentHTTPError) as excinfo: + await fetch_onchain_metrics(url="http://test.com/onchain", params={"token_id": "invalid"}) + assert excinfo.value.status_code == 400 + +@pytest.mark.asyncio +@patch('httpx.AsyncClient') +async def test_fetch_tokenomics_invalid_token_id(mock_async_client): + mock_client_instance = AsyncMock() + mock_async_client.return_value.__aenter__.return_value = mock_client_instance + + # Simulate an API response indicating an invalid token ID (e.g., 404 Not Found) + error_response_data = {"message": "Token not found"} + mock_client_instance.get.return_value = create_mock_response(404, error_response_data) + + with pytest.raises(OnchainAgentHTTPError) as excinfo: + await fetch_tokenomics(url="http://test.com/tokenomics", params={"token_id": "nonexistent"}) + assert excinfo.value.status_code == 404 \ No newline at end of file diff --git a/backend/logs/app.log b/backend/logs/app.log index d756dab..26f1561 100644 --- a/backend/logs/app.log +++ b/backend/logs/app.log @@ -3765,3 +3765,119 @@ Exception: Agent failed 2025-11-07 09:20:00,606 - services - WARNING - Report with id non_existent_report not found when attempting to retrieve data. 2025-11-07 09:20:00,606 - api - ERROR - Report with id non_existent_report not found or not completed for data request. 2025-11-07 09:20:00,606 - api - ERROR - ReportNotFoundException: Report not found or not completed +2025-11-07 15:13:21,600 - orchestrator - WARNING - Configuration Error: ONCHAIN_METRICS_URL is missing. Skipping agent registration. +2025-11-07 15:13:21,600 - orchestrator - WARNING - Onchain Data Agent will not be registered due to invalid configuration. +2025-11-07 15:13:21,600 - orchestrator - INFO - Registering agent: social_sentiment_agent +2025-11-07 15:13:21,600 - orchestrator - INFO - Registering agent: team_documentation_agent +2025-11-07 15:13:21,600 - orchestrator - WARNING - Configuration Error: CODE_AUDIT_REPO_URL is missing. Skipping agent registration. +2025-11-07 15:13:21,600 - orchestrator - WARNING - Code/Audit Agent will not be registered due to invalid CODE_AUDIT_REPO_URL configuration. +2025-11-07 15:13:21,600 - orchestrator - INFO - Registering agent: AgentOne +2025-11-07 15:13:21,600 - orchestrator - INFO - Registering agent: AgentTwo +2025-11-07 15:13:48,005 - orchestrator - INFO - Registering agent: price_agent +2025-11-07 15:13:48,005 - orchestrator - INFO - Registering agent: trend_agent +2025-11-07 15:13:48,005 - orchestrator - INFO - Registering agent: volume_agent +2025-11-07 15:13:48,005 - orchestrator - INFO - Executing agents for report_id: test_report_1, token_id: test_token_1 +2025-11-07 15:13:48,005 - orchestrator - INFO - Agent price_agent completed for report test_report_1. +2025-11-07 15:13:48,005 - orchestrator - INFO - Agent trend_agent completed for report test_report_1. +2025-11-07 15:13:48,005 - orchestrator - INFO - Agent volume_agent completed for report test_report_1. +2025-11-07 15:13:48,006 - orchestrator - INFO - Aggregating results from executed agents. +2025-11-07 15:13:48,011 - orchestrator - INFO - Registering agent: price_agent +2025-11-07 15:13:48,011 - orchestrator - INFO - Registering agent: trend_agent +2025-11-07 15:13:48,011 - orchestrator - INFO - Registering agent: volume_agent +2025-11-07 15:13:48,011 - orchestrator - INFO - Executing agents for report_id: test_report_3, token_id: test_token_3 +2025-11-07 15:13:48,011 - orchestrator - ERROR - Agent price_agent failed for report test_report_3 +Traceback (most recent call last): + File "/home/repositories/LumintelAnalytics/ChainReport-API/backend/app/core/orchestrator.py", line 54, in execute_agents + result = await asyncio.wait_for(task, timeout=settings.AGENT_TIMEOUT) # Added timeout + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3.13/asyncio/tasks.py", line 507, in wait_for + return await fut + ^^^^^^^^^ + File "/usr/lib/python3.13/unittest/mock.py", line 2321, in _execute_mock_call + raise effect +Exception: Agent error +2025-11-07 15:13:48,112 - orchestrator - INFO - Agent trend_agent completed for report test_report_3. +2025-11-07 15:13:48,112 - orchestrator - INFO - Agent volume_agent completed for report test_report_3. +2025-11-07 15:13:48,112 - orchestrator - INFO - Aggregating results from executed agents. +2025-11-07 15:13:48,118 - orchestrator - INFO - Registering agent: price_agent +2025-11-07 15:13:48,119 - orchestrator - INFO - Registering agent: trend_agent +2025-11-07 15:13:48,119 - orchestrator - INFO - Registering agent: volume_agent +2025-11-07 15:13:48,119 - orchestrator - INFO - Executing agents for report_id: concurrent_report, token_id: concurrent_token +2025-11-07 15:13:48,123 - orchestrator - INFO - Agent price_agent completed for report concurrent_report. +2025-11-07 15:13:48,123 - orchestrator - INFO - Agent trend_agent completed for report concurrent_report. +2025-11-07 15:13:48,123 - orchestrator - INFO - Agent volume_agent completed for report concurrent_report. +2025-11-07 15:13:48,123 - orchestrator - INFO - Aggregating results from executed agents. +2025-11-07 15:13:48,126 - orchestrator - INFO - Registering agent: AgentOne +2025-11-07 15:13:48,126 - orchestrator - INFO - Registering agent: AgentTwo +2025-11-07 15:13:48,126 - orchestrator - INFO - Executing agents concurrently for report_id: test_report_id_success, token_id: test_token_id +2025-11-07 15:13:48,126 - orchestrator - INFO - Executing agents for report_id: test_report_id_success, token_id: test_token_id +2025-11-07 15:13:48,126 - orchestrator - INFO - Agent AgentOne completed for report test_report_id_success. +2025-11-07 15:13:48,126 - orchestrator - INFO - Agent AgentTwo completed for report test_report_id_success. +2025-11-07 15:13:48,126 - orchestrator - INFO - Aggregating results from executed agents. +2025-11-07 15:13:48,126 - orchestrator - INFO - Report test_report_id_success status updated to completed. +2025-11-07 15:13:48,128 - orchestrator - INFO - Registering agent: AgentOne +2025-11-07 15:13:48,128 - orchestrator - INFO - Registering agent: AgentFailing +2025-11-07 15:13:48,128 - orchestrator - INFO - Executing agents concurrently for report_id: test_report_id_failure, token_id: test_token_id +2025-11-07 15:13:48,128 - orchestrator - INFO - Executing agents for report_id: test_report_id_failure, token_id: test_token_id +2025-11-07 15:13:48,129 - orchestrator - INFO - Agent AgentOne completed for report test_report_id_failure. +2025-11-07 15:13:48,129 - orchestrator - ERROR - Agent AgentFailing failed for report test_report_id_failure +Traceback (most recent call last): + File "/home/repositories/LumintelAnalytics/ChainReport-API/backend/app/core/orchestrator.py", line 54, in execute_agents + result = await asyncio.wait_for(task, timeout=settings.AGENT_TIMEOUT) # Added timeout + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/usr/lib/python3.13/asyncio/tasks.py", line 507, in wait_for + return await fut + ^^^^^^^^^ + File "/usr/lib/python3.13/unittest/mock.py", line 2321, in _execute_mock_call + raise effect +Exception: Agent failed +2025-11-07 15:13:48,129 - orchestrator - INFO - Aggregating results from executed agents. +2025-11-07 15:13:48,129 - orchestrator - ERROR - Report test_report_id_failure failed due to one or more agent failures. +2025-11-07 15:13:48,129 - orchestrator - INFO - Report test_report_id_failure status updated to failed. +2025-11-07 15:13:48,131 - orchestrator - INFO - Registering agent: a +2025-11-07 15:13:48,132 - orchestrator - WARNING - Configuration Error: ONCHAIN_METRICS_URL is missing. Skipping agent registration. +2025-11-07 15:13:48,132 - orchestrator - WARNING - Onchain Data Agent will not be registered due to invalid configuration. +2025-11-07 15:13:48,132 - orchestrator - INFO - Registering agent: social_sentiment_agent +2025-11-07 15:13:48,132 - orchestrator - INFO - Registering agent: team_documentation_agent +2025-11-07 15:13:48,132 - orchestrator - WARNING - Configuration Error: CODE_AUDIT_REPO_URL is missing. Skipping agent registration. +2025-11-07 15:13:48,132 - orchestrator - WARNING - Code/Audit Agent will not be registered due to invalid CODE_AUDIT_REPO_URL configuration. +2025-11-07 15:13:48,133 - orchestrator - INFO - Registering agent: dummy_agent +2025-11-07 15:13:48,133 - orchestrator - WARNING - Configuration Error: ONCHAIN_METRICS_URL is missing. Skipping agent registration. +2025-11-07 15:13:48,133 - orchestrator - WARNING - Onchain Data Agent will not be registered due to invalid configuration. +2025-11-07 15:13:48,133 - orchestrator - INFO - Registering agent: social_sentiment_agent +2025-11-07 15:13:48,133 - orchestrator - INFO - Registering agent: team_documentation_agent +2025-11-07 15:13:48,133 - orchestrator - WARNING - Configuration Error: CODE_AUDIT_REPO_URL is missing. Skipping agent registration. +2025-11-07 15:13:48,133 - orchestrator - WARNING - Code/Audit Agent will not be registered due to invalid CODE_AUDIT_REPO_URL configuration. +2025-11-07 15:13:48,157 - api - INFO - Received report generation request for token_id: test_token +2025-11-07 15:13:48,158 - services - INFO - Generating new report for token_id: test_token +2025-11-07 15:13:48,160 - api - INFO - Received data request for report_id: 5f665296-6ffe-454a-8e19-12dfa670b608 +2025-11-07 15:13:48,160 - services - INFO - Attempting to retrieve data for report_id: 5f665296-6ffe-454a-8e19-12dfa670b608 +2025-11-07 15:13:48,160 - services - INFO - Report 5f665296-6ffe-454a-8e19-12dfa670b608 is in status: processing, returning status only. +2025-11-07 15:13:48,160 - api - WARNING - Report 5f665296-6ffe-454a-8e19-12dfa670b608 is still processing. +2025-11-07 15:13:48,167 - api - INFO - Received report generation request for token_id: test_token +2025-11-07 15:13:48,167 - services - INFO - Generating new report for token_id: test_token +2025-11-07 15:13:48,167 - orchestrator - INFO - Executing agents concurrently for report_id: a398972f-0aa2-4e73-a15b-2787dbfd7d47, token_id: test_token +2025-11-07 15:13:48,167 - orchestrator - INFO - Executing agents for report_id: a398972f-0aa2-4e73-a15b-2787dbfd7d47, token_id: test_token +2025-11-07 15:13:48,167 - orchestrator - INFO - Calling Social Sentiment Agent for report_id: a398972f-0aa2-4e73-a15b-2787dbfd7d47, token_id: test_token +2025-11-07 15:13:48,167 - orchestrator - INFO - Calling Team and Documentation Agent for report_id: a398972f-0aa2-4e73-a15b-2787dbfd7d47, token_id: test_token +2025-11-07 15:13:48,167 - orchestrator - INFO - Scraping team profiles for token test_token from URLs: [] +2025-11-07 15:13:48,168 - orchestrator - INFO - Team profile scraping completed for token test_token. +2025-11-07 15:13:48,168 - orchestrator - WARNING - No whitepaper text source provided for token test_token. Skipping whitepaper analysis. +2025-11-07 15:13:51,227 - orchestrator - INFO - Social Sentiment Agent completed for report a398972f-0aa2-4e73-a15b-2787dbfd7d47. +2025-11-07 15:13:51,227 - orchestrator - INFO - Agent social_sentiment_agent completed for report a398972f-0aa2-4e73-a15b-2787dbfd7d47. +2025-11-07 15:13:51,227 - orchestrator - INFO - Agent team_documentation_agent completed for report a398972f-0aa2-4e73-a15b-2787dbfd7d47. +2025-11-07 15:13:51,227 - orchestrator - INFO - Agent AgentOne completed for report a398972f-0aa2-4e73-a15b-2787dbfd7d47. +2025-11-07 15:13:51,227 - orchestrator - INFO - Agent AgentTwo completed for report a398972f-0aa2-4e73-a15b-2787dbfd7d47. +2025-11-07 15:13:51,227 - orchestrator - INFO - Aggregating results from executed agents. +2025-11-07 15:13:51,227 - orchestrator - INFO - Report a398972f-0aa2-4e73-a15b-2787dbfd7d47 status updated to completed. +2025-11-07 15:13:51,229 - api - INFO - Received status request for report_id: a398972f-0aa2-4e73-a15b-2787dbfd7d47 +2025-11-07 15:13:51,229 - services - INFO - Retrieving status for report_id: a398972f-0aa2-4e73-a15b-2787dbfd7d47 from memory. +2025-11-07 15:13:51,231 - api - INFO - Received data request for report_id: a398972f-0aa2-4e73-a15b-2787dbfd7d47 +2025-11-07 15:13:51,231 - services - INFO - Attempting to retrieve data for report_id: a398972f-0aa2-4e73-a15b-2787dbfd7d47 +2025-11-07 15:13:51,231 - services - INFO - Report a398972f-0aa2-4e73-a15b-2787dbfd7d47 is completed, returning data. +2025-11-07 15:13:51,231 - api - INFO - Returning data for report_id: a398972f-0aa2-4e73-a15b-2787dbfd7d47 +2025-11-07 15:13:51,239 - api - INFO - Received data request for report_id: non_existent_report +2025-11-07 15:13:51,240 - services - INFO - Attempting to retrieve data for report_id: non_existent_report +2025-11-07 15:13:51,240 - services - WARNING - Report with id non_existent_report not found when attempting to retrieve data. +2025-11-07 15:13:51,240 - api - ERROR - Report with id non_existent_report not found or not completed for data request. +2025-11-07 15:13:51,240 - api - ERROR - ReportNotFoundException: Report not found or not completed diff --git a/backend/tests/__pycache__/test_orchestrator.cpython-313-pytest-8.4.2.pyc b/backend/tests/__pycache__/test_orchestrator.cpython-313-pytest-8.4.2.pyc index e4faa70..8340d2f 100644 Binary files a/backend/tests/__pycache__/test_orchestrator.cpython-313-pytest-8.4.2.pyc and b/backend/tests/__pycache__/test_orchestrator.cpython-313-pytest-8.4.2.pyc differ diff --git a/backend/tests/__pycache__/test_orchestrator_config.cpython-313-pytest-8.4.2.pyc b/backend/tests/__pycache__/test_orchestrator_config.cpython-313-pytest-8.4.2.pyc index 1a35732..2a2dcc1 100644 Binary files a/backend/tests/__pycache__/test_orchestrator_config.cpython-313-pytest-8.4.2.pyc and b/backend/tests/__pycache__/test_orchestrator_config.cpython-313-pytest-8.4.2.pyc differ