演示 Hook 的 exit code 协议
()
| 758 | |
| 759 | |
| 760 | def demo_hook_protocol(): |
| 761 | """演示 Hook 的 exit code 协议""" |
| 762 | print("\n" + "=" * 60) |
| 763 | print("Hook Exit Code 协议演示") |
| 764 | print("=" * 60) |
| 765 | |
| 766 | # 创建不同行为的 Hook |
| 767 | scenarios = [ |
| 768 | ("允许 (exit 0)", "printf 'hook says ok'; exit 0"), |
| 769 | ("拒绝 (exit 2)", "printf 'blocked by security policy'; exit 2"), |
| 770 | ("警告 (exit 1)", "printf 'suspicious but allowed'; exit 1"), |
| 771 | ] |
| 772 | |
| 773 | for name, cmd in scenarios: |
| 774 | print(f"\n--- {name} ---") |
| 775 | runner = HookRunner(pre_tool_use_commands=[cmd]) |
| 776 | result = runner.run_pre_tool_use("Bash", '{"command": "ls"}') |
| 777 | print(f" denied: {result.is_denied()}") |
| 778 | print(f" messages: {result.messages}") |
| 779 | |
| 780 | |
| 781 | def demo_full_pipeline(): |
no test coverage detected