dheraingoud's picture
feat: sync upstream commits up to f17c92bc
a1bab2d
Raw
History Blame Contribute Delete
2.16 kB
"""Typed capabilities consumed by application use cases."""
from __future__ import annotations
from collections.abc import AsyncIterator, Callable
from dataclasses import dataclass
from typing import Protocol
from free_claude_code.config.settings import Settings
from free_claude_code.core.anthropic import MessagesRequest
from free_claude_code.core.reasoning import ReasoningPolicy
from .model_metadata import ProviderModelInfo
class ProviderPort(Protocol):
"""Minimal provider capability required to execute one request."""
def preflight_stream(
self,
request: MessagesRequest,
*,
reasoning: ReasoningPolicy,
) -> None: ...
def stream_response(
self,
request: MessagesRequest,
*,
input_tokens: int,
request_id: str,
response_model: str,
reasoning: ReasoningPolicy,
) -> AsyncIterator[str]: ...
ProviderResolver = Callable[[str], ProviderPort]
class RequestRuntimeLease(Protocol):
"""One provider generation retained for a complete API response."""
@property
def generation_id(self) -> int: ...
@property
def settings(self) -> Settings: ...
def is_provider_cached(self, provider_id: str) -> bool: ...
def resolve_provider(self, provider_id: str) -> ProviderPort: ...
async def release(self) -> None: ...
class RequestRuntimePort(Protocol):
"""Provider generation and model metadata required by application requests."""
async def acquire(self) -> RequestRuntimeLease: ...
def current_settings(self) -> Settings: ...
def cached_model_supports_thinking(
self, provider_id: str, model_id: str
) -> bool | None: ...
def cached_prefixed_model_infos(self) -> tuple[ProviderModelInfo, ...]: ...
@dataclass(frozen=True, slots=True)
class StopResult:
"""Implementation-neutral result retaining the existing ``/stop`` variants."""
cancelled_count: int | None = None
source: str | None = None
class TaskController(Protocol):
"""Stop managed work without exposing messaging or CLI resources."""
async def stop_all(self) -> StopResult | None: ...