mirror of
https://github.com/NanmiCoder/claude-code-haha.git
synced 2026-10-10 11:53:10 +08:00
0cea7b5a61
`check:agent-flow` proves the protocol with the mock CLI, which is what makes it CI-safe and lets any contributor run it with no credentials. It cannot prove the thing this product actually is: a desktop agent talking to a real model. That can only run where the credentials are, so this lane is local and manual by construction — registered in no quality-gate mode, referenced by no workflow, and live.test.ts fails if either changes. Six scenarios, sharing the existing harness rather than a second copy of it: first turn, permission allow, permission deny, interrupt, reconnect, and history recovery. Prompts induce the behaviour instead of dictating it, and assertions only look at protocol shape and side effects on disk — never at generated text — so the lane passes on any provider, including a local one. The three flows left out (api-error, tool-error, runtime-select) each carry a written reason, because a silently missing flow reads as a covered one. Spending someone's quota is the failure mode worth engineering against, so the runner refuses to guess: no implicit fallback to the active provider, an ambiguous selector is an error rather than a pick, and without --yes it prints the provider, model and config path it would use and exits without sending anything. User state is copied into a throwaway config dir and the real ~/.claude is fingerprinted before and after — a run that writes to it fails loudly instead of being cleaned up quietly. Not yet run end to end: the local LM Studio endpoint answers 502 here, so the six runners have only been verified for structure. Target resolution, the confirmation gate, and lane placement are covered by 14 tests that need no provider at all.