mirror of
https://github.com/pewdiepie-archdaemon/odysseus.git
synced 2026-10-07 07:22:21 +02:00
Centralize web fallback and core tool policy
This commit is contained in:
@@ -6,8 +6,8 @@ ROOT = Path(__file__).resolve().parents[1]
|
||||
|
||||
def test_compact_router_keeps_basic_agent_tools_available():
|
||||
source = (ROOT / "src/agent_loop.py").read_text()
|
||||
assert '_core_agent_tools = {"bash", "web_search", "web_fetch", "ask_user"}' in source
|
||||
assert '_core_agent_tools.add("private_browser")' in source
|
||||
assert '"bash", "python", "read_file", "web_search", "web_fetch", "ask_user"' in source
|
||||
assert 'private_browser' not in source[source.index("_core_agent_tools ="):source.index("_core_agent_tools =", source.index("_core_agent_tools =") + 1) if source.count("_core_agent_tools =") > 1 else source.index("logger.info", source.index("_core_agent_tools ="))]
|
||||
assert "_relevant_tools.update(_core_agent_tools)" in source
|
||||
assert "_base_relevant_tools.update(_core_agent_tools)" in source
|
||||
assert "_caller_disabled_tools" in source
|
||||
|
||||
@@ -196,6 +196,7 @@ def test_product_review_request_routes_to_web_search_without_search_verb() -> No
|
||||
from src.turn_contract import selected_tools_for_request
|
||||
|
||||
assert selected_tools_for_request("What's Dyson pencil vac reviews") == frozenset({"web_search"})
|
||||
assert selected_tools_for_request("What are current reviews for Dyson pencil vac?") == frozenset({"web_search"})
|
||||
assert "web" in _classify_agent_request(
|
||||
[{"role": "user", "content": "What's Dyson pencil vac reviews"}],
|
||||
"What's Dyson pencil vac reviews",
|
||||
|
||||
@@ -57,12 +57,12 @@ def test_narrow_lookups_are_not_misclassified_as_broad_briefings(prompt):
|
||||
|
||||
|
||||
def resolve(capabilities=(), *, schemas=FUNCTION_TOOL_SCHEMAS, policy=None, required_tools=(),
|
||||
required_capabilities=None, selected_tools=None, warm_tools=()):
|
||||
required_capabilities=None, selected_tools=None, warm_tools=(), message=None):
|
||||
return resolve_turn_contract(capabilities=capabilities, schemas=schemas,
|
||||
policy=policy or ToolPolicy(), required_tools=required_tools,
|
||||
required_capabilities=required_capabilities,
|
||||
selected_tools=selected_tools,
|
||||
warm_tools=warm_tools)
|
||||
warm_tools=warm_tools, message=message)
|
||||
|
||||
|
||||
def test_latest_topic_info_and_common_news_typo_route_to_web_search():
|
||||
@@ -155,6 +155,20 @@ def test_empty_family_contract_keeps_core_recovery_tools() -> None:
|
||||
assert contract.offered
|
||||
|
||||
|
||||
def test_web_contract_keeps_private_browser_only_as_fallback() -> None:
|
||||
contract = resolve(
|
||||
frozenset(),
|
||||
selected_tools={"web_search"},
|
||||
message="find current reviews for a product",
|
||||
)
|
||||
|
||||
assert "web_search" in contract.offered
|
||||
assert "private_browser" in contract.offered
|
||||
assert "private_browser" not in {
|
||||
"bash", "python", "read_file", "web_search", "web_fetch", "ask_user",
|
||||
}
|
||||
|
||||
|
||||
def test_full_inventory_experiment_respects_disabled_families_without_blocking_others():
|
||||
from src.turn_contract import resolve_full_inventory_contract
|
||||
contract = resolve_full_inventory_contract(
|
||||
|
||||
Reference in New Issue
Block a user