Skip to main content

orch/engine/runner/agents/
kimi.rs

1//! Kimi agent runner — extends the Claude-compatible runner.
2//!
3//! Kimi uses the `claude` CLI via a shell wrapper that sets
4//! `ANTHROPIC_BASE_URL` to the Kimi API. Like MiniMax, the underlying
5//! model may not emit `"type":"result"` events consistently.
6//!
7//! This runner delegates to `MiniMaxRunner` for stream parsing since
8//! both use the same claude CLI wrapper pattern and share the same
9//! output format differences from native Claude.
10
11use super::minimax::MiniMaxClaudeRunner;
12use super::{
13    AgentError, AgentRunner, ParsedResponse, PermissionRules, StreamEvent, delegate_agent_runner,
14};
15
16/// Runner for Kimi-via-Claude agents (same output handling as MiniMaxClaude).
17/// Named `KimiClaudeRunner` to distinguish from a future native Kimi CLI runner.
18pub struct KimiClaudeRunner {
19    inner: MiniMaxClaudeRunner,
20}
21
22impl std::fmt::Debug for KimiClaudeRunner {
23    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
24        f.debug_struct("KimiClaudeRunner").finish_non_exhaustive()
25    }
26}
27
28impl KimiClaudeRunner {
29    pub fn new() -> Self {
30        Self {
31            inner: MiniMaxClaudeRunner::new("kimi"),
32        }
33    }
34}
35
36delegate_agent_runner!(KimiClaudeRunner, inner);
37
38#[cfg(test)]
39mod tests {
40    use super::*;
41
42    #[test]
43    fn kimi_name() {
44        let runner = KimiClaudeRunner::new();
45        assert_eq!(runner.name(), "kimi");
46    }
47}