( decisionReason: PermissionDecisionReason | undefined, )
| 59 | } |
| 60 | |
| 61 | function decisionReasonToString( |
| 62 | decisionReason: PermissionDecisionReason | undefined, |
| 63 | ): string { |
| 64 | if (!decisionReason) { |
| 65 | return 'No decision reason' |
| 66 | } |
| 67 | if ( |
| 68 | (feature('BASH_CLASSIFIER') || feature('TRANSCRIPT_CLASSIFIER')) && |
| 69 | decisionReason.type === 'classifier' |
| 70 | ) { |
| 71 | return `Classifier: ${decisionReason.classifier}, Reason: ${decisionReason.reason}` |
| 72 | } |
| 73 | switch (decisionReason.type) { |
| 74 | case 'rule': |
| 75 | return `Rule: ${permissionRuleValueToString(decisionReason.rule.ruleValue)}` |
| 76 | case 'mode': |
| 77 | return `Mode: ${decisionReason.mode}` |
| 78 | case 'subcommandResults': |
| 79 | return `Subcommand Results: ${Array.from(decisionReason.reasons.entries()) |
| 80 | .map(([key, value]) => `${key}: ${permissionResultToLog(value)}`) |
| 81 | .join(', \n')}` |
| 82 | case 'permissionPromptTool': |
| 83 | return `Permission Tool: ${decisionReason.permissionPromptToolName}, Result: ${jsonStringify(decisionReason.toolResult)}` |
| 84 | case 'hook': |
| 85 | return `Hook: ${decisionReason.hookName}${decisionReason.reason ? `, Reason: ${decisionReason.reason}` : ''}` |
| 86 | case 'workingDir': |
| 87 | return `Working Directory: ${decisionReason.reason}` |
| 88 | case 'safetyCheck': |
| 89 | return `Safety check: ${decisionReason.reason}` |
| 90 | case 'other': |
| 91 | return `Other: ${decisionReason.reason}` |
| 92 | default: |
| 93 | return jsonStringify(decisionReason, null, 2) |
| 94 | } |
| 95 | } |
| 96 | |
| 97 | /** |
| 98 | * Logs permission request events using analytics and unary logging. |
no test coverage detected