Consolidate Odysseus agent harness and tool contracts

This commit is contained in:
pewdiepie-archdaemon
2026-09-17 10:07:40 +00:00
parent 84aa9a91de
commit 218d762427
229 changed files with 28899 additions and 1551 deletions
+40 -4
View File
@@ -3,6 +3,7 @@
from src.endpoint_resolver import (
resolve_endpoint,
resolve_utility_fallback_candidates,
same_endpoint_base as _same_endpoint_base,
)
from src.llm_core import llm_call_async_with_fallback
from src.interactive_gate import wait_for_interactive_quiet
@@ -22,6 +23,9 @@ def resolve_task_candidates(
fallback_url=None,
fallback_model=None,
fallback_headers=None,
override_url=None,
override_model=None,
override_headers=None,
owner=None,
):
"""Return ordered background-task LLM candidates.
@@ -42,6 +46,26 @@ def resolve_task_candidates(
return
candidates.append((url, model, headers or {}))
if override_url and override_model:
headers = override_headers or {}
try:
from src.database import ModelEndpoint, SessionLocal
from src.endpoint_resolver import normalize_base, resolve_endpoint_runtime, build_headers
db = SessionLocal()
try:
from src.auth_helpers import owner_filter
query = db.query(ModelEndpoint).filter(ModelEndpoint.is_enabled == True)
for ep in owner_filter(query, ModelEndpoint, owner).all():
base = normalize_base(getattr(ep, "base_url", "") or "")
if _same_endpoint_base(override_url, base):
runtime_base, api_key = resolve_endpoint_runtime(ep, owner=owner)
headers = build_headers(api_key, runtime_base or base)
break
finally:
db.close()
except Exception:
pass
_append(override_url, override_model, headers)
_append(*resolve_task_endpoint(fallback_url, fallback_model, fallback_headers, owner=owner))
_append(*resolve_endpoint("utility", owner=owner))
_append(*resolve_endpoint("default", owner=owner))
@@ -56,15 +80,27 @@ async def task_llm_call_async(
fallback_url=None,
fallback_model=None,
fallback_headers=None,
override_url=None,
override_model=None,
override_headers=None,
owner=None,
**kwargs,
):
"""Call the shared background-task LLM candidate chain."""
resolver_kwargs = {
"fallback_url": fallback_url,
"fallback_model": fallback_model,
"fallback_headers": fallback_headers,
"owner": owner,
}
if override_url is not None:
resolver_kwargs["override_url"] = override_url
if override_model is not None:
resolver_kwargs["override_model"] = override_model
if override_headers is not None:
resolver_kwargs["override_headers"] = override_headers
candidates = resolve_task_candidates(
fallback_url=fallback_url,
fallback_model=fallback_model,
fallback_headers=fallback_headers,
owner=owner,
**resolver_kwargs,
)
if not candidates:
raise RuntimeError("No LLM endpoint available for background task")