| 144 | } |
| 145 | |
| 146 | func GetPermissionStateFromMap(m map[string]any) (PermissionState, error) { |
| 147 | state := DefaultPermissionState() |
| 148 | for _, path := range stringSliceFromAny(m["confirmed_paths"]) { |
| 149 | state.ConfirmedPaths.Add(path) |
| 150 | } |
| 151 | for _, tool := range stringSliceFromAny(m["confirmed_tools"]) { |
| 152 | state.ConfirmedTools.Add(tool) |
| 153 | } |
| 154 | rules := stringSliceFromAny(m["confirmed_command_rules"]) |
| 155 | if len(rules) == 0 { |
| 156 | rules = stringSliceFromAny(m["confitment_commad_rules"]) |
| 157 | } |
| 158 | for _, rule := range rules { |
| 159 | state.ConfirmedCommandRules.Add(rule) |
| 160 | } |
| 161 | if yolo, ok := m["yolo_mode"].(bool); ok { |
| 162 | state.YoloMode = yolo |
| 163 | } |
| 164 | return *state, nil |
| 165 | } |
| 166 | |
| 167 | func NeedUserPermission(toolName string, toolInput any, state *PermissionState) bool { |
| 168 | if state == nil { |