mirror of
https://github.com/instructkr/claude-code.git
synced 2026-04-06 19:28:49 +03:00
This adds a deterministic mock Anthropic-compatible /v1/messages service, a clean-environment CLI harness, and repo docs so the first parity milestone can be validated without live network dependencies. Constraint: First milestone must prove Rust claw can connect from a clean environment and cover streaming, tool assembly, and permission/tool flow Constraint: No new third-party dependencies; reuse the existing Rust workspace stack Rejected: Record/replay live Anthropic traffic | nondeterministic and unsuitable for repeatable CI coverage Confidence: high Scope-risk: moderate Reversibility: clean Directive: Keep scenario markers and expected tool payload shapes synchronized between the mock service and the harness tests Tested: cargo fmt --all Tested: cargo clippy --workspace --all-targets -- -D warnings Tested: cargo test --workspace Tested: ./scripts/run_mock_parity_harness.sh Not-tested: Live Anthropic responses beyond the five scripted harness scenarios
35 lines
1.1 KiB
Rust
35 lines
1.1 KiB
Rust
use std::env;
|
|
|
|
use mock_anthropic_service::MockAnthropicService;
|
|
|
|
#[tokio::main(flavor = "multi_thread")]
|
|
async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|
let mut bind_addr = String::from("127.0.0.1:0");
|
|
let mut args = env::args().skip(1);
|
|
while let Some(arg) = args.next() {
|
|
match arg.as_str() {
|
|
"--bind" => {
|
|
bind_addr = args
|
|
.next()
|
|
.ok_or_else(|| "missing value for --bind".to_string())?;
|
|
}
|
|
flag if flag.starts_with("--bind=") => {
|
|
bind_addr = flag[7..].to_string();
|
|
}
|
|
"--help" | "-h" => {
|
|
println!("Usage: mock-anthropic-service [--bind HOST:PORT]");
|
|
return Ok(());
|
|
}
|
|
other => {
|
|
return Err(format!("unsupported argument: {other}").into());
|
|
}
|
|
}
|
|
}
|
|
|
|
let server = MockAnthropicService::spawn_on(&bind_addr).await?;
|
|
println!("MOCK_ANTHROPIC_BASE_URL={}", server.base_url());
|
|
tokio::signal::ctrl_c().await?;
|
|
drop(server);
|
|
Ok(())
|
|
}
|