personal memory agent

feat(think): stop shipping non-responsive tool-loop output as a finish master

Classify once after translator.result(); a refusal strips the result and converts the clean finish into a terminal error, so no output file is written. The three partial exits keep their own reason codes and gain an honest wording arm built on lode A's fragment, since partial result preserved is false once the result is stripped. run_cogitate returns None and never raises, which is what keeps the delegated local lane to exactly one terminal event. usage is preserved on the converted event.


+251 -47
3 changed files