IB-WP-0020-T03: routing CLI flags
Add --provider routing, --routing-config <yaml>, and --quality-floor
<float> to generate run, generate resume, and generate from-source.
The CLI flag wiring constructs a RoutingAssistedGenerationAdapter from
the parsed config, with the workspace handed in so any ledger_path in
the config resolves relative to it. --quality-floor overrides the
config-level default_quality_floor for a single invocation.
run_generation gains routing_config + quality_floor kwargs and
_adapter_for grew a "routing" branch. Missing --routing-config with
--provider routing fails fast with InfospaceError("missing_routing_config");
missing API key for any candidate fails fast with
InfospaceError("missing_routing_api_key").
Two small bug fixes surfaced while writing T03:
- routing._identify_adapter now also reads ``_model`` from llm-connect
adapters (their public attribute is private), so the per-stage
adapter-choice line shows the model id rather than just the class
name.
- budget.TOKEN_EVENTS_PATH corrected from /state/token-events to the
state-hub HTTP endpoint /token-events/ that actually exists; the
failure-isolation in emit_token_event already kept the prior typo
from breaking runs, but the hub never saw the events.
Five new tests cover: _adapter_for refusal on missing config,
_adapter_for happy path, run_generation end-to-end through routing
with a stubbed OpenRouterAdapter.execute_prompt (no network),
workspace-relative ledger resolution, and a CLI subprocess smoke
asserting fast-fail on missing API key.
173 tests pass, 1 skipped.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
parent
82468c2165
commit
d3562454d7
7 changed files with 348 additions and 9 deletions
|
|
@ -112,7 +112,11 @@ def _identify_adapter(adapter: LLMAdapter) -> str:
|
|||
adapter_id = getattr(adapter, "adapter_id", "")
|
||||
if adapter_id:
|
||||
return str(adapter_id)
|
||||
model = getattr(adapter, "model", "") or getattr(adapter, "model_name", "")
|
||||
model = (
|
||||
getattr(adapter, "model", "")
|
||||
or getattr(adapter, "model_name", "")
|
||||
or getattr(adapter, "_model", "")
|
||||
)
|
||||
name = type(adapter).__name__
|
||||
if model:
|
||||
return f"{name}:{model}"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue