mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-06-09 07:16:04 +00:00
Phase 0 integration complete - verified minimal loop with local-agent stub runner. Changes: - Add AgentRunOrchestrator for plugin-based agent execution - Add AgentResultNormalizer for Protocol v1 result conversion - Add AgentRunnerDescriptor for runner ID parsing (plugin:author/name/runner) - Update chat handler to use new orchestrator instead of direct runner lookup - Add plugin handler methods for list_agent_runners and run_agent - Add connector methods for AgentRunner protocol forwarding - Update pipeline API to include runner options in metadata - Add integration docs and implementation plan Integration verified: - Runner: plugin:langbot/local-agent/default - Input: "你好" - Output: [stub] Echo: 你好 - Date: 2026-05-10 10:09 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
37 lines
1.3 KiB
Python
37 lines
1.3 KiB
Python
"""Agent runner errors."""
|
|
from __future__ import annotations
|
|
|
|
|
|
class AgentRunnerError(Exception):
|
|
"""Base error for agent runner operations."""
|
|
pass
|
|
|
|
|
|
class RunnerNotFoundError(AgentRunnerError):
|
|
"""Runner not found in registry."""
|
|
def __init__(self, runner_id: str):
|
|
self.runner_id = runner_id
|
|
super().__init__(f'Agent runner not found: {runner_id}')
|
|
|
|
|
|
class RunnerNotAuthorizedError(AgentRunnerError):
|
|
"""Runner not authorized for this pipeline."""
|
|
def __init__(self, runner_id: str, bound_plugins: list[str] | None):
|
|
self.runner_id = runner_id
|
|
self.bound_plugins = bound_plugins
|
|
super().__init__(f'Agent runner {runner_id} not authorized for bound_plugins={bound_plugins}')
|
|
|
|
|
|
class RunnerProtocolError(AgentRunnerError):
|
|
"""Runner protocol version mismatch or invalid manifest."""
|
|
def __init__(self, runner_id: str, message: str):
|
|
self.runner_id = runner_id
|
|
super().__init__(f'Agent runner protocol error for {runner_id}: {message}')
|
|
|
|
|
|
class RunnerExecutionError(AgentRunnerError):
|
|
"""Runner execution failed."""
|
|
def __init__(self, runner_id: str, message: str, retryable: bool = False):
|
|
self.runner_id = runner_id
|
|
self.retryable = retryable
|
|
super().__init__(f'Agent runner {runner_id} execution failed: {message}') |