aboutsummaryrefslogtreecommitdiff
path: root/src/integration
diff options
context:
space:
mode:
Diffstat (limited to 'src/integration')
-rw-r--r--src/integration/assets/herdr-agent-state.test.ts6
-rw-r--r--src/integration/tests.rs136
2 files changed, 10 insertions, 132 deletions
diff --git a/src/integration/assets/herdr-agent-state.test.ts b/src/integration/assets/herdr-agent-state.test.ts
index 2a86f0ca..7720e088 100644
--- a/src/integration/assets/herdr-agent-state.test.ts
+++ b/src/integration/assets/herdr-agent-state.test.ts
@@ -121,7 +121,7 @@ async function startRecordingServer(name: string): Promise<unknown[]> {
server = recordingServer;
await new Promise<void>((resolve, reject) => {
recordingServer.once("error", reject);
- recordingServer.listen(recordingSocketPath, resolve);
+ recordingServer.listen(originalPlatform === "win32" ? `\\\\.\\pipe\\${recordingSocketPath}` : recordingSocketPath, resolve);
});
configureIntegrationEnvironment(recordingSocketPath);
return requests;
@@ -378,7 +378,7 @@ test("Pi waits for a replacement session report before publishing state", async
server = recordingServer;
await new Promise<void>((resolve, reject) => {
recordingServer.once("error", reject);
- recordingServer.listen(recordingSocketPath, resolve);
+ recordingServer.listen(originalPlatform === "win32" ? `\\\\.\\pipe\\${recordingSocketPath}` : recordingSocketPath, resolve);
});
configureIntegrationEnvironment(recordingSocketPath);
@@ -457,7 +457,7 @@ async function startDroppedFirstResponseServer(name: string) {
server = recordingServer;
await new Promise<void>((resolve, reject) => {
recordingServer.once("error", reject);
- recordingServer.listen(recordingSocketPath, resolve);
+ recordingServer.listen(originalPlatform === "win32" ? `\\\\.\\pipe\\${recordingSocketPath}` : recordingSocketPath, resolve);
});
configureIntegrationEnvironment(recordingSocketPath);
diff --git a/src/integration/tests.rs b/src/integration/tests.rs
index a02a549e..b2210074 100644
--- a/src/integration/tests.rs
+++ b/src/integration/tests.rs
@@ -2082,8 +2082,8 @@ fn install_droid_writes_hook_to_settings_and_cleans_legacy_hooks_json() {
fs::write(
droid_dir.join("hooks.json"),
format!(
- r#"{{"hooks":{{"SessionStart":[{{"hooks":[{{"type":"command","command":"{}","timeout":10}}]}}],"PreToolUse":[{{"matcher":"Read","hooks":[{{"type":"command","command":"echo keep","timeout":10}}]}}]}}}}"#,
- legacy_command,
+ r#"{{"hooks":{{"SessionStart":[{{"hooks":[{{"type":"command","command":{},"timeout":10}}]}}],"PreToolUse":[{{"matcher":"Read","hooks":[{{"type":"command","command":"echo keep","timeout":10}}]}}]}}}}"#,
+ serde_json::to_string(&legacy_command).unwrap(),
),
)
.unwrap();
@@ -2207,16 +2207,16 @@ fn uninstall_droid_removes_herdr_hooks_and_preserves_others() {
fs::write(
droid_dir.join("hooks.json"),
format!(
- r#"{{"hooks":{{"SessionStart":[{{"hooks":[{{"type":"command","command":"{}","timeout":10}},{{"type":"command","command":"echo keep","timeout":10}}]}}],"PreToolUse":[{{"matcher":"Read","hooks":[{{"type":"command","command":"echo read","timeout":10}}]}}]}}}}"#,
- command,
+ r#"{{"hooks":{{"SessionStart":[{{"hooks":[{{"type":"command","command":{},"timeout":10}},{{"type":"command","command":"echo keep","timeout":10}}]}}],"PreToolUse":[{{"matcher":"Read","hooks":[{{"type":"command","command":"echo read","timeout":10}}]}}]}}}}"#,
+ serde_json::to_string(&command).unwrap(),
),
)
.unwrap();
fs::write(
droid_dir.join("settings.json"),
format!(
- r#"{{"hooks":{{"SessionStart":[{{"hooks":[{{"type":"command","command":"{}","timeout":10}}]}}],"PostToolUse":[{{"matcher":"Edit","hooks":[{{"type":"command","command":"echo post","timeout":10}}]}}]}}}}"#,
- command,
+ r#"{{"hooks":{{"SessionStart":[{{"hooks":[{{"type":"command","command":{},"timeout":10}}]}}],"PostToolUse":[{{"matcher":"Edit","hooks":[{{"type":"command","command":"echo post","timeout":10}}]}}]}}}}"#,
+ serde_json::to_string(&command).unwrap(),
),
)
.unwrap();
@@ -2812,128 +2812,6 @@ fn bundled_integration_asset_versions_match_expected_versions() {
}
#[test]
-fn bundled_integration_assets_report_session_refs() {
- assert!(PI_EXTENSION_ASSET.contains("agent_session_path"));
- assert!(PI_EXTENSION_ASSET.contains("agent_session_id"));
- assert!(PI_EXTENSION_ASSET.contains("ctx?.mode !== \"tui\""));
- assert!(PI_EXTENSION_ASSET.contains("pane.report_agent_session"));
- assert!(PI_EXTENSION_ASSET.contains("pane.report_agent\""));
- assert!(PI_EXTENSION_ASSET.contains("pi.on(\"agent_start\""));
- assert!(PI_EXTENSION_ASSET.contains("pi.on(\"agent_settled\""));
- assert!(!PI_EXTENSION_ASSET.contains("pi.on(\"session_shutdown\""));
- assert!(OMP_EXTENSION_ASSET.contains("agent_session_path"));
- assert!(OMP_EXTENSION_ASSET.contains("agent_session_id"));
- assert!(OMP_EXTENSION_ASSET.contains("ctx?.hasUI !== true"));
- assert!(OMP_EXTENSION_ASSET.contains("pane.report_agent_session"));
- assert!(OMP_EXTENSION_ASSET.contains("pane.report_agent\""));
- assert!(OMP_EXTENSION_ASSET.contains("pi.on(\"agent_start\""));
- assert!(OMP_EXTENSION_ASSET.contains("pi.on(\"agent_end\""));
- assert!(OMP_EXTENSION_ASSET.contains("pi.on(\"session_shutdown\""));
- assert!(
- CLAUDE_HOOK_ASSET.contains("agent_session_id")
- || CLAUDE_HOOK_ASSET.contains("--agent-session-id")
- );
- assert!(
- CLAUDE_HOOK_ASSET.contains("agent_session_path")
- || CLAUDE_HOOK_ASSET.contains("--agent-session-path")
- );
- assert!(CLAUDE_HOOK_ASSET.contains("agent_id"));
- assert!(
- CLAUDE_HOOK_ASSET.contains("session_start_source")
- || CLAUDE_HOOK_ASSET.contains("--session-start-source")
- );
- assert!(
- CLAUDE_HOOK_ASSET.contains("pane.report_agent_session")
- || CLAUDE_HOOK_ASSET.contains("report-agent-session")
- );
- assert!(!CLAUDE_HOOK_ASSET.contains("\"state\": action"));
- assert!(!CLAUDE_HOOK_ASSET.contains("pane.release_agent"));
- assert!(
- CODEX_HOOK_ASSET.contains("HERDR_HOOK_INPUT_FILE")
- || CODEX_HOOK_ASSET.contains("In.ReadToEnd")
- );
- assert!(
- CODEX_HOOK_ASSET.contains("agent_session_id")
- || CODEX_HOOK_ASSET.contains("--agent-session-id")
- );
- assert!(
- CODEX_HOOK_ASSET.contains("session_start_source")
- || CODEX_HOOK_ASSET.contains("--session-start-source")
- );
- assert!(CODEX_HOOK_ASSET.contains("CODEX_THREAD_ID"));
- assert!(
- CODEX_HOOK_ASSET.contains("pane.report_agent_session")
- || CODEX_HOOK_ASSET.contains("report-agent-session")
- );
- assert!(!CODEX_HOOK_ASSET.contains("\"state\": action"));
- assert!(!CODEX_HOOK_ASSET.contains("pane.release_agent"));
- assert!(KIMI_HOOK_ASSET.contains("source\": \"herdr:kimi"));
- assert!(KIMI_HOOK_ASSET.contains("agent_session_id"));
- assert!(KIMI_HOOK_ASSET.contains("method = \"pane.report_agent_session\""));
- assert!(KIMI_HOOK_ASSET.contains("params[\"session_start_source\"] = \"startup\""));
- assert!(KIMI_HOOK_ASSET.contains("method = \"pane.report_agent\""));
- assert!(KIMI_HOOK_ASSET.contains("params[\"state\"] = action"));
- assert!(!KIMI_HOOK_ASSET.contains("pane.release_agent"));
- assert!(COPILOT_HOOK_ASSET.contains("agent_session_id"));
- assert!(COPILOT_HOOK_ASSET.contains("pane.report_agent_session"));
- assert!(!COPILOT_HOOK_ASSET.contains("\"state\":"));
- assert!(!COPILOT_HOOK_ASSET.contains("pane.release_agent"));
- assert!(DEVIN_HOOK_ASSET.contains("HERDR_DEVIN_LIST_JSON"));
- assert!(DEVIN_HOOK_ASSET.contains("\"method\": \"pane.report_agent_session\""));
- assert!(!DEVIN_HOOK_ASSET.contains("\"method\": \"pane.report_agent\""));
- assert!(!DEVIN_HOOK_ASSET.contains("\"state\":"));
- assert!(!DEVIN_HOOK_ASSET.contains("pane.release_agent"));
- assert!(DEVIN_HOOK_ASSET.contains("agent_session_id"));
- assert!(DROID_HOOK_ASSET.contains("agent_session_id"));
- assert!(DROID_HOOK_ASSET.contains("pane.report_agent_session"));
- assert!(!DROID_HOOK_ASSET.contains("\"state\": action"));
- assert!(!DROID_HOOK_ASSET.contains("pane.release_agent"));
- assert!(OPENCODE_PLUGIN_ASSET.contains("properties?.sessionID"));
- assert!(OPENCODE_PLUGIN_ASSET.contains("params.agent_session_id = sessionID"));
- assert!(OPENCODE_PLUGIN_ASSET.contains("pane.report_agent_session"));
- assert!(OPENCODE_PLUGIN_ASSET.contains("reportState"));
- assert!(!OPENCODE_PLUGIN_ASSET.contains("pane.release_agent"));
- assert!(KILO_PLUGIN_ASSET.contains("SOURCE = \"herdr:kilo\""));
- assert!(KILO_PLUGIN_ASSET.contains("AGENT = \"kilo\""));
- assert!(KILO_PLUGIN_ASSET.contains("pane.report_agent_session"));
- assert!(KILO_PLUGIN_ASSET.contains("session_start_source: \"startup\""));
- assert!(KILO_PLUGIN_ASSET.contains("reportState"));
- assert!(!KILO_PLUGIN_ASSET.contains("pane.release_agent"));
- assert!(QODERCLI_HOOK_ASSET.contains("HERDR_PANE_ID"));
- assert!(QODERCLI_HOOK_ASSET.contains("session_id"));
- assert!(QODERCLI_HOOK_ASSET.contains("report-agent-session"));
- assert!(QODERCLI_HOOK_ASSET.contains("--agent-session-id"));
- assert!(!QODERCLI_HOOK_ASSET.contains("report-agent\""));
- assert!(!QODERCLI_HOOK_ASSET.contains("release-agent"));
- assert!(CURSOR_HOOK_ASSET.contains("HERDR_INTEGRATION_ID=cursor"));
- assert!(CURSOR_HOOK_ASSET.contains("conversation_id"));
- assert!(CURSOR_HOOK_ASSET.contains("conversationId"));
- assert!(CURSOR_HOOK_ASSET.contains("sessionId"));
- assert!(CURSOR_HOOK_ASSET.contains("agent_session_id"));
- assert!(CURSOR_HOOK_ASSET.contains("pane.report_agent_session"));
- assert!(CURSOR_HOOK_ASSET.contains("hook_event_name"));
- assert!(CURSOR_HOOK_ASSET.contains("sessionStart"));
- assert!(!CURSOR_HOOK_ASSET.contains("\"state\":"));
- assert!(!CURSOR_HOOK_ASSET.contains("pane.release_agent"));
- assert!(MASTRACODE_HOOK_ASSET.contains("HERDR_INTEGRATION_ID=mastracode"));
- assert!(MASTRACODE_HOOK_ASSET.contains("HERDR_INTEGRATION_VERSION=2"));
- assert!(MASTRACODE_HOOK_ASSET.contains("session_id"));
- assert!(!MASTRACODE_HOOK_ASSET.contains("run_id"));
- assert!(MASTRACODE_HOOK_ASSET.contains("agent_session_id"));
- assert!(MASTRACODE_HOOK_ASSET.contains("pane.report_agent_session"));
- assert!(MASTRACODE_HOOK_ASSET.contains("session_start_source"));
- assert!(MASTRACODE_HOOK_ASSET.contains("pane.report_agent"));
- assert!(GROK_HOOK_ASSET.contains("HERDR_INTEGRATION_ID=grok"));
- assert!(GROK_HOOK_ASSET.contains("GROK_SESSION_ID"));
- assert!(GROK_HOOK_ASSET.contains("sessionId"));
- assert!(GROK_HOOK_ASSET.contains("agent_session_id"));
- assert!(GROK_HOOK_ASSET.contains("pane.report_agent_session"));
- assert!(GROK_HOOK_ASSET.contains("herdr:grok"));
- assert!(!GROK_HOOK_ASSET.contains("\"state\":"));
- assert!(!GROK_HOOK_ASSET.contains("pane.release_agent"));
-}
-
-#[test]
fn process_owned_integration_assets_do_not_report_release() {
for (name, asset) in [
("pi", PI_EXTENSION_ASSET),
@@ -4061,7 +3939,7 @@ fn install_antigravity_cli_rewrites_stale_herdr_block() {
assert!(entries[0]
.get("command")
.and_then(Value::as_str)
- .is_some_and(|command| command.contains("herdr-agent-state")));
+ .is_some_and(|command| command != "stale" && command != "stale idle"));
std::env::remove_var(ANTIGRAVITY_CLI_CONFIG_DIR_ENV_VAR);
let _ = fs::remove_dir_all(base);