Spaces:
Sleeping
Sleeping
| """ | |
| Capability Protocol | |
| =================== | |
| Base class for the Capability layer (Level 2). | |
| Capabilities are multi-step agent pipelines invoked when the user selects | |
| a deep mode (e.g. Deep Solve, Deep Question). | |
| """ | |
| from __future__ import annotations | |
| from abc import ABC, abstractmethod | |
| from dataclasses import dataclass, field | |
| from typing import Any | |
| from .context import UnifiedContext | |
| from .stream_bus import StreamBus | |
| class CapabilityManifest: | |
| """Static metadata for a capability.""" | |
| name: str | |
| description: str | |
| stages: list[str] = field(default_factory=list) | |
| tools_used: list[str] = field(default_factory=list) | |
| cli_aliases: list[str] = field(default_factory=list) | |
| request_schema: dict[str, Any] = field(default_factory=dict) | |
| config_defaults: dict[str, Any] = field(default_factory=dict) | |
| class BaseCapability(ABC): | |
| """ | |
| Abstract base for all capabilities (deep modes). | |
| Subclasses must provide ``manifest`` and implement ``run``. | |
| Example:: | |
| class MySolverCapability(BaseCapability): | |
| manifest = CapabilityManifest( | |
| name="deep_solve", | |
| description="Multi-agent problem solving.", | |
| stages=["planning", "reasoning", "writing"], | |
| tools_used=["rag", "web_search", "code_execution"], | |
| ) | |
| async def run(self, context, stream): | |
| async with stream.stage("planning", source=self.manifest.name): | |
| plan = await self._plan(context) | |
| ... | |
| """ | |
| manifest: CapabilityManifest | |
| async def run(self, context: UnifiedContext, stream: StreamBus) -> None: | |
| """Execute the full capability pipeline, emitting events to *stream*.""" | |
| ... | |
| def name(self) -> str: | |
| return self.manifest.name | |
| def stages(self) -> list[str]: | |
| return self.manifest.stages | |