aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/detect/mod.rs29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/detect/mod.rs b/src/detect/mod.rs
index 0248d5ce..7326ec32 100644
--- a/src/detect/mod.rs
+++ b/src/detect/mod.rs
@@ -634,6 +634,15 @@ fn agent_name_from_known_package_path(path: &str) -> Option<String> {
]) {
return Some(agent_label(Agent::Pi).to_string());
}
+ if ends_with(&[
+ "node_modules",
+ "@moonshot-ai",
+ "kimi-code",
+ "dist",
+ "main.mjs",
+ ]) {
+ return Some(agent_label(Agent::Kimi).to_string());
+ }
let components: Vec<String> = raw_components
.into_iter()
@@ -1304,6 +1313,26 @@ mod tests {
}
#[test]
+ fn identify_agent_in_job_detects_node_wrapped_kimi_package_cli() {
+ let job = crate::platform::ForegroundJob {
+ process_group_id: 123,
+ processes: vec![foreground_process(
+ 123,
+ "node.exe",
+ &[
+ r"C:\Program Files\nodejs\node.exe",
+ r"C:\repro-3317-kimi-prefix\node_modules\@moonshot-ai\kimi-code\dist\main.mjs",
+ ],
+ )],
+ };
+
+ assert_eq!(
+ identify_agent_in_job(&job),
+ Some((Agent::Kimi, "kimi".to_string()))
+ );
+ }
+
+ #[test]
fn identify_agent_in_job_ignores_non_cli_pi_package_scripts() {
for script in [
r"C:\Users\herdr\AppData\Roaming\npm\node_modules\@earendil-works\pi-coding-agent\scripts\build.js",