Skip to main content

rtk_hook_preinvocation/
rtk-hook-preinvocation.rs

1//! `rtk-hook-preinvocation` — the plugin's `PreInvocation` hook.
2//!
3//! Antigravity runs this at the start of an execution loop and reads an
4//! `injectSteps` array from stdout. The payload lives in [`rtk_mcp_agy`]; this
5//! file only serializes it.
6
7use rtk_mcp_agy::preinvocation_payload;
8use std::env;
9
10fn main() {
11    let args: Vec<String> = env::args().collect();
12
13    if args.iter().any(|a| a == "--version" || a == "-V") {
14        println!("rtk-hook-preinvocation {}", rtk_mcp_agy::version());
15        return;
16    }
17
18    if args.iter().any(|a| a == "--help" || a == "-h") {
19        println!(
20            "rtk-hook-preinvocation {} — Antigravity PreInvocation hook",
21            rtk_mcp_agy::version()
22        );
23        println!();
24        println!("Usage: rtk-hook-preinvocation");
25        println!("  Outputs an injectSteps JSON array to stdout instructing the agent to use the");
26        println!("  rtk MCP tool instead of the native run_command tool.");
27        return;
28    }
29
30    if let Ok(json_str) = serde_json::to_string(&preinvocation_payload()) {
31        println!("{json_str}");
32    }
33}