mechaharness.core.types
Shared domain types used across inference and harness layers.
These models form the stable public contract. Keep them serializable so future language bindings (via FFI / IPC / OpenAPI) can share the same shapes.
- class mechaharness.core.types.ChatMessage(*, role: Role, content: str | None = None, name: str | None = None, tool_calls: list[ToolCall] | None = None, tool_call_id: str | None = None, reasoning_content: str | None = None, extra: dict[str, ~typing.Any]=<factory>)[source]
Bases:
BaseModelOne turn in a chat transcript (portable across providers).
- model_config = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class mechaharness.core.types.CompletionRequest(*, model: str, messages: list[~mechaharness.core.types.ChatMessage], tools: list[~mechaharness.core.types.ToolDefinition] | None = None, temperature: float | None = None, max_tokens: int | None = None, stop: list[str] | None = None, extra: dict[str, ~typing.Any] = <factory>)[source]
Bases:
BaseModelNormalized request handed to an InferenceStrategy.
- messages: list[ChatMessage]
- model_config = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- tools: list[ToolDefinition] | None
- class mechaharness.core.types.CompletionResponse(*, message: ChatMessage, finish_reason: str | None = None, usage: Usage | None = None, raw: dict[str, Any] | None = None, cost: Any | None = None)[source]
Bases:
BaseModelNormalized response returned by an InferenceStrategy.
- message: ChatMessage
- model_config = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class mechaharness.core.types.Role(*values)[source]
-
- ASSISTANT = 'assistant'
- SYSTEM = 'system'
- TOOL = 'tool'
- USER = 'user'
- class mechaharness.core.types.ToolCall(*, id: str, name: str, arguments: dict[str, ~typing.Any]=<factory>)[source]
Bases:
BaseModelModel-requested tool invocation (id, name, decoded arguments).
- model_config = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class mechaharness.core.types.ToolDefinition(*, name: str, description: str = '', parameters: dict[str, ~typing.Any]=<factory>)[source]
Bases:
BaseModelProvider-agnostic tool/function schema exposed to a harness.
- model_config = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class mechaharness.core.types.ToolResult(*, tool_call_id: str, content: str, is_error: bool = False)[source]
Bases:
BaseModelResult of executing a tool, fed back as a tool-role message.
- model_config = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class mechaharness.core.types.Usage(*, prompt_tokens: int | None = None, completion_tokens: int | None = None, total_tokens: int | None = None)[source]
Bases:
BaseModelToken usage reported by a provider (fields may be unset).
- model_config = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].