You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Framework-vs-host boundary tightening from the architecture audit.
Added — SessionOptions::with_llm_client(Arc<dyn LlmClient>):
- The LlmClient trait + Arc<dyn> engine already existed but were injectable
only in #[cfg(test)] code (build_session); every public session path resolved
via a hardcoded provider-string factory. This adds the public seam and has
resolve_session_llm_client prefer a host-supplied client, bringing the
Action-layer backend to parity with workspace/memory/store/security (all
object-injectable). The provider/model factory stays the default when unset.
Enables custom/unsupported providers, record/replay clients, and proxy/audit
wrappers without forking core.
Fixed — framework no longer writes to the host's stderr:
- Replaced a stray eprintln!("[DEBUG] HTTP error...") in the OpenAI client
(fired on every transport error) with tracing::error!, matching the rest of
the crate.
Removed — dead Planner trait (planning::Planner):
- Re-exported but had zero dyn-dispatch and no consumer; all call sites use
LlmPlanner's inherent methods. Pruned per Rule 9 (the only real variability,
the LLM, is now swappable via with_llm_client). LlmPlanner unchanged.
Tests: 2 new resolver tests (override bypasses config; control case errors).
cargo test -p a3s-code-core --lib: 1757 passed, 0 failed. clippy clean.
Co-authored-by: Claude <claude@anthropic.com>
0 commit comments