diff --git a/apps/macos/Sources/Clawdis/PermissionsSettings.swift b/apps/macos/Sources/Clawdis/PermissionsSettings.swift index a6d72dd59..f35eaa7b2 100644 --- a/apps/macos/Sources/Clawdis/PermissionsSettings.swift +++ b/apps/macos/Sources/Clawdis/PermissionsSettings.swift @@ -79,6 +79,7 @@ struct PermissionRow: View { private var title: String { switch self.capability { + case .appleScript: "Automation (AppleScript)" case .notifications: "Notifications" case .accessibility: "Accessibility" case .screenRecording: "Screen Recording" @@ -89,6 +90,8 @@ struct PermissionRow: View { private var subtitle: String { switch self.capability { + case .appleScript: + "Control other apps (e.g. Terminal) for automation actions" case .notifications: "Show desktop alerts for agent activity" case .accessibility: "Control UI elements when an action requires it" case .screenRecording: "Capture the screen for context or screenshots" @@ -99,6 +102,7 @@ struct PermissionRow: View { private var icon: String { switch self.capability { + case .appleScript: "applescript" case .notifications: "bell" case .accessibility: "hand.raised" case .screenRecording: "display" diff --git a/apps/macos/Sources/ClawdisIPC/IPC.swift b/apps/macos/Sources/ClawdisIPC/IPC.swift index f4859fb74..9c97b881a 100644 --- a/apps/macos/Sources/ClawdisIPC/IPC.swift +++ b/apps/macos/Sources/ClawdisIPC/IPC.swift @@ -3,6 +3,8 @@ import Foundation // MARK: - Capabilities public enum Capability: String, Codable, CaseIterable, Sendable { + /// AppleScript / Automation access to control other apps (TCC Automation). + case appleScript case notifications case accessibility case screenRecording diff --git a/docs/clawdis-mac.md b/docs/clawdis-mac.md index 73b5031c5..09ee33cbe 100644 --- a/docs/clawdis-mac.md +++ b/docs/clawdis-mac.md @@ -5,7 +5,7 @@ Author: steipete · Status: draft spec · Date: 2025-12-05 ## Purpose - Single macOS menu-bar app named **Clawdis** that: - Shows native notifications for Clawdis/warelay events. - - Owns TCC prompts (Notifications, Accessibility, Screen Recording). + - Owns TCC prompts (Notifications, Accessibility, Screen Recording, Automation/AppleScript, Microphone, Speech Recognition). - Brokers privileged actions (screen capture, shell with elevated UI context) via XPC. - Provides a tiny CLI (`clawdis-mac`) that talks to the app; Node/TS shells out to it. - Replace the separate notifier helper pattern (Oracle) with a built-in notifier. @@ -26,7 +26,7 @@ Author: steipete · Status: draft spec · Date: 2025-12-05 - Codable enums; small payloads (<1 MB enforced in listener): ``` -enum Capability { notifications, accessibility, screenRecording } +enum Capability { notifications, accessibility, screenRecording, appleScript, microphone, speechRecognition } enum Request { notify(title, body, sound?) ensurePermissions([Capability], interactive: Bool) diff --git a/scripts/package-mac-app.sh b/scripts/package-mac-app.sh index 1e19f23bb..71e07b3c2 100755 --- a/scripts/package-mac-app.sh +++ b/scripts/package-mac-app.sh @@ -63,6 +63,8 @@ cat > "$APP_ROOT/Contents/Info.plist" <Clawdis needs the mic for Voice Wake tests and agent audio capture. NSSpeechRecognitionUsageDescription Clawdis uses speech recognition to detect your Voice Wake trigger phrase. + NSAppleEventsUsageDescription + Clawdis needs Automation (AppleScript) permission to drive Terminal and other apps for agent actions. PLIST