Files
m4 d4b53bfb08
Docker / build (push) Has been cancelled
Test / pytest (ubuntu-latest, 3.12) (push) Has been cancelled
Test / pytest (windows-latest, 3.11) (push) Has been cancelled
Test / pytest (windows-latest, 3.12) (push) Has been cancelled
Lint / ruff (push) Has been cancelled
Test / pytest (ubuntu-latest, 3.11) (push) Has been cancelled
Build / build (push) Has been cancelled
test: cover stop contract, execution adapters, checkpointer race and runtime identity
2026-09-13 15:12:17 +08:00

162 lines
6.4 KiB
Python

from __future__ import annotations
from typing import Any
from EvoScientist.llm.crypto import HmacKeyRing, KeyMaterial
from EvoScientist.llm.model_config import (
EvoModelConfig,
adapter_revision,
endpoint_fingerprint,
route_semantics_hash,
)
RUNTIME_SECRET = "runtime-secret-for-tests-000000000000000000000000"
IDENTITY_SECRET = "identity-secret-for-tests-00000000000000000000000"
RUNTIME_KEY_ID = "runtime-test"
IDENTITY_KEY_ID = "identity-test"
def identity_ring() -> HmacKeyRing:
return HmacKeyRing(KeyMaterial.create(IDENTITY_KEY_ID, IDENTITY_SECRET))
def v3_payload(*, revision: int = 1) -> dict[str, Any]:
payload: dict[str, Any] = {
"schema_version": 2,
"config_revision": revision,
"config_identity_key_id": IDENTITY_KEY_ID,
"runtime_defaults": {"max_retries": 0},
"purpose_defaults": {
"main_agent": {"reasoning_effort": "medium"},
"tool_selector": {"reasoning_effort": "disabled"},
"deepagents_summarizer": {"reasoning_effort": "disabled"},
"title": {"reasoning_effort": "disabled"},
},
"providers": {
"custom-openai": {
"protocol": "custom-openai",
"params": {},
"endpoints": [
{
"name": "primary",
"base_url": "https://provider.example/v1",
"auth": {"ref": "env://WEB_RUNTIME_TEST_KEY", "revision": 1},
"headers": {"User-Agent": "Ai4Sci-Test"},
"header_refs": {},
"params": {"extra_body": {}},
}
],
"models": [
{
"id": "model-id",
"params": {"output_token_limit": 512},
"supports_vision": True,
"supports_reasoning": True,
"allowed_reasoning_efforts": ["low", "medium", "high"],
"context_window": 8192,
"max_output_tokens": 2048,
"access": {"allowed_plans": [], "allowed_roles": []},
"billing": {
"sku": "visible-model",
"pricing_revision": "test-1",
"currency": "CNY",
"unit_scale": 1_000_000,
"input_microunits_per_million": 1_000_000,
"output_microunits_per_million": 2_000_000,
"cached_microunits_per_million": 500_000,
},
}
],
}
},
"endpoint_pools": {
"default": {
"provider": "custom-openai",
"strategy": "smooth_weighted_round_robin",
"endpoints": [{"name": "primary", "weight": 1}],
}
},
"route_health": {
"failure_threshold": 3,
"cooldown_seconds": 30,
"half_open_max_inflight": 1,
"counted_error_codes": ["PROVIDER_5XX", "PROVIDER_TIMEOUT"],
"open_immediately_error_codes": ["PROVIDER_AUTH_INVALID"],
},
"route_selectors": {
"visible-main": {
"provider": "custom-openai",
"endpoint_pool": "default",
"model": "model-id",
"api_mode": "chat_completions",
"tool_call_transport": "native",
}
},
"purpose_routes": {
"main_agent": {
"default_alias": "visible-model",
"selectable": {"visible-model": "visible-main"},
},
"title": {"default": "visible-main"},
},
"purpose_call_limits": {
"main_agent": {"max_attempts_per_run": 4},
"tool_selector": {"max_attempts_per_run": 2},
"deepagents_summarizer": {"max_attempts_per_run": 1},
"title": {"max_attempts_per_run": 1},
},
"web_runtime": {
"title_start_timeout_seconds": 30,
"prepare_ttl_seconds": 30,
"turn_lease_grace_seconds": 10,
"active_run_timeout_seconds": 60,
"max_run_journal_events": 1000,
"max_run_journal_bytes": 1_048_576,
"max_prepared_runs_per_subject": 2,
"max_prepared_runs_total": 100,
},
"capability_evidence": [],
"tool_protocol_fallbacks": [{"primary": "visible-main", "fallbacks": []}],
}
candidate = EvoModelConfig.parse(payload, require_evidence=False)
ring = identity_ring()
semantics_key = ring.derive_current("ai4sci/route-semantics-hash/v3")[1]
endpoint_key = ring.derive_current("ai4sci/endpoint-fingerprint/v3")[1]
evidence = []
seen = set()
for selector_id in candidate.route_selectors:
for route in candidate.concrete_routes(selector_id):
if route.key() in seen:
continue
seen.add(route.key())
evidence.append(
{
"route": {
"provider": route.provider,
"endpoint": route.endpoint,
"model": route.model,
"api_mode": route.api_mode,
"tool_call_transport": route.tool_call_transport,
},
"connectivity": "supported",
"tool_capability": "supported",
"probe": {
"route_semantics_hash": route_semantics_hash(
candidate, route, semantics_key
),
"endpoint_fingerprint": endpoint_fingerprint(
candidate, route, endpoint_key
),
"config_identity_key_id": IDENTITY_KEY_ID,
"adapter_revision": adapter_revision(
candidate.providers[route.provider].protocol,
route.api_mode,
),
"fixture_digest": "sha256:test-fixture-v3",
"verified_at": "2026-07-20T00:00:00+00:00",
},
}
)
payload["capability_evidence"] = evidence
return payload