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 std::fmt;
12use std::fmt::Debug;
13use std::fmt::Formatter;
14
15use super::minimax::MiniMaxClaudeRunner;
16use super::{AgentError, AgentRunner, ParsedResponse, PermissionRules, StreamEvent};
17
18/// Runner for Kimi-via-Claude agents (same output handling as MiniMaxClaude).
19/// Named `KimiClaudeRunner` to distinguish from a future native Kimi CLI runner.
20pub struct KimiClaudeRunner {
21    inner: MiniMaxClaudeRunner,
22}
23
24impl Debug for KimiClaudeRunner {
25    fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
26        f.debug_struct("KimiClaudeRunner").finish_non_exhaustive()
27    }
28}
29
30impl KimiClaudeRunner {
31    pub fn new() -> Self {
32        Self {
33            inner: MiniMaxClaudeRunner::new("kimi"),
34        }
35    }
36}
37
38delegate_agent_runner!(KimiClaudeRunner, inner);
39
40#[cfg(test)]
41mod tests {
42    use super::*;
43
44    #[test]
45    fn kimi_name() {
46        let runner = KimiClaudeRunner::new();
47        assert_eq!(runner.name(), "kimi");
48    }
49}