| 595 | # ---- HookRunner: 重现 hooks.rs 的核心逻辑 ---- |
| 596 | |
| 597 | class HookCommandOutcome: |
| 598 | def __init__(self, outcome: str, message: str | None = None): |
| 599 | self.outcome = outcome |
| 600 | self.message = message |
| 601 | |
| 602 | class HookRunResult: |
| 603 | """对应 hooks.rs:24-47""" |