源码: main.rs:2338-2382
| 108 | # ============================================================ |
| 109 | |
| 110 | class CliPermissionPrompter: |
| 111 | """源码: main.rs:2338-2382""" |
| 112 | |
| 113 | def decide(self, request: PermissionRequest) -> PermissionResult: |
| 114 | """终端交互询问。源码: main.rs:2348-2381""" |
| 115 | print() |
| 116 | print("Permission approval required") |
| 117 | print(f" Tool {request.tool_name}") |
| 118 | print(f" Current mode {request.current_mode.as_str()}") |
| 119 | print(f" Required mode {request.required_mode.as_str()}") |
| 120 | print(f" Input {request.input}") |
| 121 | |
| 122 | try: |
| 123 | response = input("Approve this tool call? [y/N]: ").strip().lower() |
| 124 | except (EOFError, KeyboardInterrupt): |
| 125 | return PermissionResult.deny( |
| 126 | f"tool '{request.tool_name}' denied: input interrupted" |
| 127 | ) |
| 128 | |
| 129 | if response in ("y", "yes"): |
| 130 | return PermissionResult.allow() |
| 131 | return PermissionResult.deny( |
| 132 | f"tool '{request.tool_name}' denied by user approval prompt" |
| 133 | ) |
| 134 | |
| 135 | |
| 136 | # ============================================================ |