mirror of
https://github.com/HKUDS/nanobot.git
synced 2026-05-20 16:42:25 +00:00
- Add `ModelPresetConfig` schema for named model presets - Add `model_presets` dict to `Config` and `model_preset` field to `AgentDefaults` - Add `resolve_preset()` to return effective model params from preset or defaults - Add `@model_validator` to reject unknown preset names - Update `_match_provider()` to use resolved preset model/provider - Update `make_provider()` and `provider_signature()` to use `resolve_preset()` - Add `model_preset` property to `AgentLoop` for atomic runtime switching - Update `AgentLoop.from_config()` to inject a runtime `default` preset - Wire self-tool to inspect/clear preset state - Update CLI display strings to show active preset
60 lines
1.3 KiB
Python
60 lines
1.3 KiB
Python
"""RuntimeState protocol: agent loop state exposed to MyTool."""
|
|
|
|
from typing import Any, Protocol
|
|
|
|
|
|
class RuntimeState(Protocol):
|
|
"""Minimum contract that MyTool requires from its runtime state provider.
|
|
|
|
In practice, this is always satisfied by ``AgentLoop``. MyTool also
|
|
accesses arbitrary attributes dynamically (via ``getattr`` / ``setattr``)
|
|
for dot-path inspection and modification; those paths are validated at
|
|
runtime rather than by this protocol.
|
|
"""
|
|
|
|
@property
|
|
def model(self) -> str: ...
|
|
|
|
@property
|
|
def max_iterations(self) -> int: ...
|
|
|
|
@property
|
|
def current_iteration(self) -> int: ...
|
|
|
|
@property
|
|
def tool_names(self) -> list[str]: ...
|
|
|
|
@property
|
|
def workspace(self) -> str: ...
|
|
|
|
@property
|
|
def provider_retry_mode(self) -> str: ...
|
|
|
|
@property
|
|
def max_tool_result_chars(self) -> int: ...
|
|
|
|
@property
|
|
def context_window_tokens(self) -> int: ...
|
|
|
|
@property
|
|
def web_config(self) -> Any: ...
|
|
|
|
@property
|
|
def exec_config(self) -> Any: ...
|
|
|
|
@property
|
|
def subagents(self) -> Any: ...
|
|
|
|
@property
|
|
def _runtime_vars(self) -> dict[str, Any]: ...
|
|
|
|
@property
|
|
def _last_usage(self) -> Any: ...
|
|
|
|
def _sync_subagent_runtime_limits(self) -> None: ...
|
|
|
|
@property
|
|
def model_preset(self) -> str | None: ...
|
|
|
|
_active_preset: str | None
|