@@ -89,6 +89,7 @@ def _create_stub_module(name: str, **attrs):
8989sys .modules ['database.agent_db' ] = MagicMock ()
9090sys .modules ['database.tool_db' ] = MagicMock ()
9191sys .modules ['database.model_management_db' ] = MagicMock ()
92+ sys .modules ['database.agent_version_db' ] = MagicMock ()
9293sys .modules ['services.vectordatabase_service' ] = MagicMock ()
9394sys .modules ['services.tenant_config_service' ] = MagicMock ()
9495sys .modules ['utils.prompt_template_utils' ] = MagicMock ()
@@ -1630,7 +1631,8 @@ async def test_create_agent_run_info_success(self):
16301631 patch ('backend.agents.create_agent_info.create_agent_config' ) as mock_create_agent , \
16311632 patch ('backend.agents.create_agent_info.filter_mcp_servers_and_tools' ) as mock_filter , \
16321633 patch ('backend.agents.create_agent_info.urljoin' ) as mock_urljoin , \
1633- patch ('backend.agents.create_agent_info.threading' ) as mock_threading :
1634+ patch ('backend.agents.create_agent_info.threading' ) as mock_threading , \
1635+ patch ('backend.agents.create_agent_info.query_current_version_no' ) as mock_version_no :
16341636
16351637 # Set mock return values
16361638 mock_join_query .return_value = "processed_query"
@@ -1647,6 +1649,7 @@ async def test_create_agent_run_info_success(self):
16471649 mock_urljoin .return_value = "http://nexent.mcp/sse"
16481650 mock_filter .return_value = ["http://test.server" ]
16491651 mock_threading .Event .return_value = "stop_event"
1652+ mock_version_no .return_value = 1 # Mock published version
16501653
16511654 result = await create_agent_run_info (
16521655 agent_id = "agent_1" ,
@@ -1684,6 +1687,7 @@ async def test_create_agent_run_info_success(self):
16841687 language = "zh" ,
16851688 last_user_query = "processed_query" ,
16861689 allow_memory_search = True ,
1690+ version_no = 1 ,
16871691 )
16881692 mock_get_mcp .assert_called_once_with (tenant_id = "tenant_1" )
16891693 mock_filter .assert_called_once_with ("agent_config" , {
@@ -1711,7 +1715,8 @@ async def test_create_agent_run_info_with_authorization_token(self):
17111715 patch ('backend.agents.create_agent_info.create_agent_config' ) as mock_create_agent , \
17121716 patch ('backend.agents.create_agent_info.filter_mcp_servers_and_tools' ) as mock_filter , \
17131717 patch ('backend.agents.create_agent_info.urljoin' ) as mock_urljoin , \
1714- patch ('backend.agents.create_agent_info.threading' ) as mock_threading :
1718+ patch ('backend.agents.create_agent_info.threading' ) as mock_threading , \
1719+ patch ('backend.agents.create_agent_info.query_current_version_no' ) as mock_version_no :
17151720
17161721 mock_join_query .return_value = "processed_query"
17171722 mock_create_models .return_value = ["model_config" ]
@@ -1727,6 +1732,7 @@ async def test_create_agent_run_info_with_authorization_token(self):
17271732 mock_urljoin .return_value = "http://nexent.mcp/sse"
17281733 mock_filter .return_value = ["http://test.server" ]
17291734 mock_threading .Event .return_value = "stop_event"
1735+ mock_version_no .return_value = 1
17301736
17311737 await create_agent_run_info (
17321738 agent_id = "agent_1" ,
@@ -1759,7 +1765,8 @@ async def test_create_agent_run_info_with_sse_transport(self):
17591765 patch ('backend.agents.create_agent_info.create_agent_config' ) as mock_create_agent , \
17601766 patch ('backend.agents.create_agent_info.filter_mcp_servers_and_tools' ) as mock_filter , \
17611767 patch ('backend.agents.create_agent_info.urljoin' ) as mock_urljoin , \
1762- patch ('backend.agents.create_agent_info.threading' ) as mock_threading :
1768+ patch ('backend.agents.create_agent_info.threading' ) as mock_threading , \
1769+ patch ('backend.agents.create_agent_info.query_current_version_no' ) as mock_version_no :
17631770
17641771 mock_join_query .return_value = "processed_query"
17651772 mock_create_models .return_value = ["model_config" ]
@@ -1775,6 +1782,7 @@ async def test_create_agent_run_info_with_sse_transport(self):
17751782 mock_urljoin .return_value = "http://nexent.mcp/sse"
17761783 mock_filter .return_value = ["http://sse.server/sse" ]
17771784 mock_threading .Event .return_value = "stop_event"
1785+ mock_version_no .return_value = 1
17781786
17791787 await create_agent_run_info (
17801788 agent_id = "agent_1" ,
@@ -1806,7 +1814,8 @@ async def test_create_agent_run_info_fallback_to_string_format(self):
18061814 patch ('backend.agents.create_agent_info.create_agent_config' ) as mock_create_agent , \
18071815 patch ('backend.agents.create_agent_info.filter_mcp_servers_and_tools' ) as mock_filter , \
18081816 patch ('backend.agents.create_agent_info.urljoin' ) as mock_urljoin , \
1809- patch ('backend.agents.create_agent_info.threading' ) as mock_threading :
1817+ patch ('backend.agents.create_agent_info.threading' ) as mock_threading , \
1818+ patch ('backend.agents.create_agent_info.query_current_version_no' ) as mock_version_no :
18101819
18111820 mock_join_query .return_value = "processed_query"
18121821 mock_create_models .return_value = ["model_config" ]
@@ -1817,6 +1826,7 @@ async def test_create_agent_run_info_fallback_to_string_format(self):
18171826 # Filter returns a URL that doesn't exist in remote_mcp_list
18181827 mock_filter .return_value = ["http://unknown.server" ]
18191828 mock_threading .Event .return_value = "stop_event"
1829+ mock_version_no .return_value = 1
18201830
18211831 await create_agent_run_info (
18221832 agent_id = "agent_1" ,
@@ -1845,7 +1855,8 @@ async def test_create_agent_run_info_mixed_scenarios(self):
18451855 patch ('backend.agents.create_agent_info.create_agent_config' ) as mock_create_agent , \
18461856 patch ('backend.agents.create_agent_info.filter_mcp_servers_and_tools' ) as mock_filter , \
18471857 patch ('backend.agents.create_agent_info.urljoin' ) as mock_urljoin , \
1848- patch ('backend.agents.create_agent_info.threading' ) as mock_threading :
1858+ patch ('backend.agents.create_agent_info.threading' ) as mock_threading , \
1859+ patch ('backend.agents.create_agent_info.query_current_version_no' ) as mock_version_no :
18491860
18501861 mock_join_query .return_value = "processed_query"
18511862 mock_create_models .return_value = ["model_config" ]
@@ -1878,6 +1889,7 @@ async def test_create_agent_run_info_mixed_scenarios(self):
18781889 "http://unknown.server"
18791890 ]
18801891 mock_threading .Event .return_value = "stop_event"
1892+ mock_version_no .return_value = 1
18811893
18821894 await create_agent_run_info (
18831895 agent_id = "agent_1" ,
@@ -1918,7 +1930,8 @@ async def test_create_agent_run_info_with_status_false(self):
19181930 patch ('backend.agents.create_agent_info.create_agent_config' ) as mock_create_agent , \
19191931 patch ('backend.agents.create_agent_info.filter_mcp_servers_and_tools' ) as mock_filter , \
19201932 patch ('backend.agents.create_agent_info.urljoin' ) as mock_urljoin , \
1921- patch ('backend.agents.create_agent_info.threading' ) as mock_threading :
1933+ patch ('backend.agents.create_agent_info.threading' ) as mock_threading , \
1934+ patch ('backend.agents.create_agent_info.query_current_version_no' ) as mock_version_no :
19221935
19231936 mock_join_query .return_value = "processed_query"
19241937 mock_create_models .return_value = ["model_config" ]
@@ -1935,6 +1948,7 @@ async def test_create_agent_run_info_with_status_false(self):
19351948 # Filter returns URL that exists but has status=False
19361949 mock_filter .return_value = ["http://disabled.server" ]
19371950 mock_threading .Event .return_value = "stop_event"
1951+ mock_version_no .return_value = 1
19381952
19391953 await create_agent_run_info (
19401954 agent_id = "agent_1" ,
@@ -1974,6 +1988,7 @@ async def test_create_agent_run_info_forwards_allow_memory_false(self):
19741988 ) as mock_filter ,
19751989 patch ("backend.agents.create_agent_info.urljoin" ) as mock_urljoin ,
19761990 patch ("backend.agents.create_agent_info.threading" ) as mock_threading ,
1991+ patch ("backend.agents.create_agent_info.query_current_version_no" ) as mock_version_no ,
19771992 ):
19781993 mock_join_query .return_value = "processed_query"
19791994 mock_create_models .return_value = ["model_config" ]
@@ -1982,6 +1997,7 @@ async def test_create_agent_run_info_forwards_allow_memory_false(self):
19821997 mock_urljoin .return_value = "http://nexent.mcp/sse"
19831998 mock_filter .return_value = []
19841999 mock_threading .Event .return_value = "stop_event"
2000+ mock_version_no .return_value = 1
19852001
19862002 await create_agent_run_info (
19872003 agent_id = "agent_1" ,
@@ -2001,6 +2017,7 @@ async def test_create_agent_run_info_forwards_allow_memory_false(self):
20012017 language = "zh" ,
20022018 last_user_query = "processed_query" ,
20032019 allow_memory_search = False ,
2020+ version_no = 1 ,
20042021 )
20052022
20062023
0 commit comments