diff --git a/src/clean_agent_preview.py b/src/clean_agent_preview.py index 6d7b5e230..98ca99bd5 100644 --- a/src/clean_agent_preview.py +++ b/src/clean_agent_preview.py @@ -3459,9 +3459,13 @@ def preserve_requested_web_recency(name, args, *, user_text='', prior_search_int user = str(user_text or '') query = str(args.get('query') or '').strip() if not query: - query = re.sub(r'\s+', ' ', user).strip().rstrip('?.!') if prior_search_intents: - query += ' corroborating analysis authoritative sources' + raise ValueError( + 'web_search requires an explicit query for a follow-up. Supply a ' + 'specific missing fact, entity, or corroboration question based on ' + 'the evidence already returned; do not repeat the original query.' + ) + query = re.sub(r'\s+', ' ', user).strip().rstrip('?.!') if not query: return args normalized = dict(args) diff --git a/tests/test_clean_agent_preview.py b/tests/test_clean_agent_preview.py index 28c36a7ed..13a1034ff 100644 --- a/tests/test_clean_agent_preview.py +++ b/tests/test_clean_agent_preview.py @@ -2017,17 +2017,14 @@ def test_current_search_arguments_repair_stale_year_and_add_freshness(): assert args['time_filter'] == 'day' -def test_missing_refinement_query_is_grounded_in_user_request(): - args = preserve_requested_web_recency( - 'web_search', - {'time_filter': 'day'}, - user_text='What are the latest important AI developments?', - prior_search_intents=['important ai developments'], - ) - - assert 'AI developments' in args['query'] - assert 'corroborating analysis' in args['query'] - assert args['time_filter'] == 'day' +@pytest.mark.parametrize('missing_query', [{}, {'query': ''}, {'query': ' ', 'time_filter': 'day'}]) +def test_missing_refinement_query_is_not_fabricated(missing_query): + with pytest.raises(ValueError, match='explicit query for a follow-up'): + preserve_requested_web_recency( + 'web_search', missing_query, + user_text='serch latest ai news pls', + prior_search_intents=['ai news'], + ) def test_official_manual_does_not_invent_pdf_requirement():