feat: support for codex as external CLI
fix: improved handling of MCP token limits when handling CLI output
This commit is contained in:
@@ -5,10 +5,12 @@ from __future__ import annotations
|
||||
from clink.models import ResolvedCLIClient
|
||||
|
||||
from .base import AgentOutput, BaseCLIAgent, CLIAgentError
|
||||
from .codex import CodexAgent
|
||||
from .gemini import GeminiAgent
|
||||
|
||||
_AGENTS: dict[str, type[BaseCLIAgent]] = {
|
||||
"gemini": GeminiAgent,
|
||||
"codex": CodexAgent,
|
||||
}
|
||||
|
||||
|
||||
|
||||
41
clink/agents/codex.py
Normal file
41
clink/agents/codex.py
Normal file
@@ -0,0 +1,41 @@
|
||||
"""Codex-specific CLI agent hooks."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from clink.models import ResolvedCLIClient
|
||||
from clink.parsers.base import ParserError
|
||||
|
||||
from .base import AgentOutput, BaseCLIAgent
|
||||
|
||||
|
||||
class CodexAgent(BaseCLIAgent):
|
||||
"""Codex CLI agent with JSONL recovery support."""
|
||||
|
||||
def __init__(self, client: ResolvedCLIClient):
|
||||
super().__init__(client)
|
||||
|
||||
def _recover_from_error(
|
||||
self,
|
||||
*,
|
||||
returncode: int,
|
||||
stdout: str,
|
||||
stderr: str,
|
||||
sanitized_command: list[str],
|
||||
duration_seconds: float,
|
||||
output_file_content: str | None,
|
||||
) -> AgentOutput | None:
|
||||
try:
|
||||
parsed = self._parser.parse(stdout, stderr)
|
||||
except ParserError:
|
||||
return None
|
||||
|
||||
return AgentOutput(
|
||||
parsed=parsed,
|
||||
sanitized_command=sanitized_command,
|
||||
returncode=returncode,
|
||||
stdout=stdout,
|
||||
stderr=stderr,
|
||||
duration_seconds=duration_seconds,
|
||||
parser_name=self._parser.name,
|
||||
output_file_content=output_file_content,
|
||||
)
|
||||
Reference in New Issue
Block a user