mirror of
https://github.com/pewdiepie-archdaemon/odysseus.git
synced 2026-10-06 06:52:20 +02:00
keep compact agent core tools available
This commit is contained in:
@@ -3093,6 +3093,28 @@ def test_preview_contract_keeps_only_routed_family_from_trained_inventory():
|
||||
assert scoped.active_capabilities == {'notes'}
|
||||
|
||||
|
||||
def test_preview_contract_adds_safe_interactive_core_beside_routed_tools():
|
||||
core = {'web_search', 'web_fetch', 'private_browser', 'bash', 'ask_user'}
|
||||
schemas = [
|
||||
schema for schema in FUNCTION_TOOL_SCHEMAS
|
||||
if schema['function']['name'] in core | {'manage_notes'}
|
||||
]
|
||||
preview = resolve_full_inventory_contract(schemas=schemas, policy=ToolPolicy())
|
||||
routed = SimpleNamespace(
|
||||
unavailable=frozenset(), offered=frozenset({'manage_notes'}),
|
||||
required=frozenset({'manage_notes'}), capabilities=frozenset({'notes'}),
|
||||
required_read_operation=None,
|
||||
)
|
||||
|
||||
scoped = scope_preview_contract(
|
||||
preview, routed, {'notes'}, extra_tools=core,
|
||||
)
|
||||
|
||||
assert scoped.offered == core | {'manage_notes'}
|
||||
assert scoped.required == {'manage_notes'}
|
||||
assert {schema['function']['name'] for schema in scoped.schemas()} == core | {'manage_notes'}
|
||||
|
||||
|
||||
def test_preview_contract_keeps_available_family_when_an_independent_family_is_unavailable():
|
||||
schemas = [s for s in FUNCTION_TOOL_SCHEMAS if s['function']['name'] in {
|
||||
'write_file', 'web_search',
|
||||
|
||||
@@ -34,6 +34,15 @@ def test_latest_topic_info_and_common_news_typo_route_to_web_search():
|
||||
assert requested_capabilities(prompt) == frozenset({"search_browser"})
|
||||
|
||||
|
||||
@pytest.mark.parametrize("prompt", [
|
||||
"I'm using a WIKING fireplace; can I find an English manual online?",
|
||||
"Can you look online",
|
||||
"Could you search online for the operator's manual?",
|
||||
])
|
||||
def test_explicit_online_lookup_requests_route_to_web_search(prompt):
|
||||
assert requested_capabilities(prompt) == frozenset({"search_browser"})
|
||||
|
||||
|
||||
def test_successfully_used_tool_stays_offered_when_next_turn_routes_elsewhere():
|
||||
contract = resolve(
|
||||
{"notes"},
|
||||
|
||||
Reference in New Issue
Block a user