(version 1)
(deny default)

(define (home-regex home-relative-regex)
       (regex (string-append "^" (regex-quote (param "_HOME")) home-relative-regex)))
(define regex-home home-regex)

(define (home-subpath home-relative-subpath)
       (subpath (string-append (param "_HOME") home-relative-subpath)))

(define (home-literal home-relative-literal)
       (literal (string-append (param "_HOME") home-relative-literal)))

 (define (apply-read-and-issue-extension op path-filter)
        (op file-read* path-filter)
        (op file-issue-extension (require-all (extension-class "com.apple.app-sandbox.read") path-filter)))

 (define (apply-write-and-issue-extension op path-filter)
        (op file-write* path-filter)
        (op file-issue-extension (require-all (extension-class "com.apple.app-sandbox.read-write") path-filter)))

 (define (read-write-and-issue-extensions path-filter)
        (apply-read-and-issue-extension allow path-filter)
        (apply-write-and-issue-extension allow path-filter))

 ;;; Return a regex string which matches capital hex digit patterns
 ;;; pattern descriptor is an list of integers where the element specifies the repeat
 ;;; count of the hex digit; 0 means insert a dash
 ;;; You can paste these functions into: https://repl.it/languages/Scheme
 (define (HEX-pattern-match-generator pattern-descriptor)
         (letrec ((pattern-string ""))
                 (for-each  (lambda (repeat-count)
                         (if (zero? repeat-count)
                                 (set! pattern-string (string-append  pattern-string "-"))
                                 (let appender ((count repeat-count))
                                         (if (> count 0)
                                                 (begin
                                                         (set! pattern-string (string-append  pattern-string "[0-9A-F]"))
                                                         (appender (- count 1)))))))
                         pattern-descriptor)
                 pattern-string))

 ;; return a regex pattern matching string for 8-4-4-4-12 UUIDs:
 (define (uuid-HEX-pattern-match-string)
        (HEX-pattern-match-generator '(8 0 4 0 4 0 4 0 12)))

 ;; global to hold the computed UUID matching pattern.
 (define *uuid-pattern* "")

 (define (uuid-regex-string)
        (if (zero? (string-length *uuid-pattern*))
               (set! *uuid-pattern* (uuid-HEX-pattern-match-string)))
        *uuid-pattern*)

(import "system.sb")
(import "com.apple.corefoundation.sb")

;;; initialize CF sandbox actions
(corefoundation)

(allow user-preference-read
    (preference-domain "com.apple.GenerativeFunctions.GenerativeFunctionsInstrumentation")
    (preference-domain "com.apple.UnifiedAssetFramework")
    (preference-domain "com.apple.modelcatalog.ajax")
    (preference-domain "kCFPreferencesAnyApplication")
)

(allow mach-lookup
    (global-name "com.apple.biome.access.user")
)
(allow mach-lookup (global-name "com.apple.containermanagerd"))

(allow file-read-metadata)

(allow file-read*)

(allow lsopen)

(allow device-microphone)

(allow distributed-notification-post)

(deny file-write-setugid)

(allow file-read* file-write* (subpath (param "_TEMPDIR")))
(allow file-read* file-write* (subpath (param "_CACHEDIR")))

(allow file-read* file-write* (extension "com.apple.app-sandbox.read-write"))
(allow file-read* (extension "com.apple.app-sandbox.read"))
(allow file-read* file-write*
    (extension "com.apple.sandbox.application-group"))

(allow file-read* file-write*
    (home-regex (regex-quote "/Library/Caches/com.apple.siri.bundleservicecache.plist")))

(allow file-read* (home-subpath "/Library/Caches/GeoServices"))

(allow file-issue-extension (require-all
    (extension-class "com.apple.app-sandbox.read-write")
    (home-subpath "/Library/Caches/com.apple.AssistantServices")))

(allow file-issue-extension (require-all
    (extension-class "com.apple.app-sandbox.read-write")
    (home-subpath "/Library/Caches/com.apple.assistantd")))

(allow file-issue-extension
       (require-all
                    (require-any
                                 (extension-class "com.apple.app-sandbox.read-write")
                                 (extension-class "com.apple.app-sandbox.read"))
       (home-subpath "/Library/com.apple.aiml.instrumentation")))

(allow file-issue-extension
       (regex #"^/private/var/folders/[^/]+/[^/]+/0/com.apple.corespeechd/Caches/VoiceTrigger/SATUpdate"))
(allow file-issue-extension
       (regex #"^/private/var/folders/[^/]+/[^/]+/0/com.apple.corespeechd/Caches/VoiceTrigger/SATUpdateNewerZone"))

(allow user-preference*
       (preference-domain "com.apple.assistant")
       (preference-domain "com.apple.assistant.support")
       (preference-domain "com.apple.assistant.token")
       (preference-domain "com.apple.assistant.logging")
       (preference-domain "com.apple.AssistantServices")
       (preference-domain "com.apple.GEO")
       (preference-domain "com.apple.iCal")
       (preference-domain "com.apple.internal.ck")
       (preference-domain "com.apple.parsecd")
       (preference-domain "com.apple.security")
       (preference-domain "com.apple.siri.cdm")
       (preference-domain "com.apple.siri.morphun")
       (preference-domain "com.apple.speakerrecognition")
       (preference-domain "com.apple.suggestions")
       (preference-domain "com.apple.voicetrigger"))

(allow user-preference-read
       (preference-domain "com.apple.itunescloud.internal")
       (preference-domain "com.apple.iTunes")
       (preference-domain "com.apple.CloudKit")
       (preference-domain "com.apple.universalaccess"))

(allow file-read* file-write*
       (home-subpath "/Library/Caches/com.apple.feedbacklogger")
       (home-subpath "/Library/Keychains")
       (home-subpath "/Library/Security")
       (home-subpath "/Library/VoiceTrigger")
       (home-subpath "/Library/Caches/VoiceTrigger")
       (home-subpath "/Library/Caches/CoreSpeech"))

(allow file-read*
       (subpath "/private/var/mobile/Library/IntelligencePlatform")
       (subpath "/private/var/db/com.apple.modelcatalog/sideload/")
       (subpath "/private/var/db/mds")
       (literal "/private/var/db/DetachedSignatures")
       (literal "/Library/Managed Preferences/com.apple.assistant.managedconfiguration.plist")
       (subpath "/Library/Keychains")
       (subpath "/System/Library/Audio")
       (subpath "/Library/Audio")
       (home-subpath "/Library/Audio")
       (subpath "/System/Library/AssetsV2/locks/com.apple.UnifiedAssetFramework/")
       (subpath "/System/Library/AssetsV2/com_apple_MobileAsset_UAF_FM_GenerativeModels/purpose_auto/")
       (subpath "/System/Library/AssetsV2/com_apple_MobileAsset_UAF_FM_Overrides/purpose_auto/")
       (subpath "/System/Library/Components/CoreAudio.component/Contents/SharedSupport/SystemSounds/siri")
       (subpath "/System/Library/Components/AudioCodecs.component/Contents/MacOS")
       (subpath "/System/Library/Components/AudioDSP.component/Contents/Resources/Tunings/Generic/AU"))

(allow network-outbound (literal "/private/var/run/mDNSResponder"))
(allow network-outbound (remote tcp))
(allow network-outbound (remote udp))

(allow system-socket)

(system-network)

(allow file-read* file-write*
       (mount-relative-regex #"^/\.TemporaryItems(/|$)")
       (regex #"^/private/var/folders/[^/]+/[^/]+/[A-Z]/assistantd/TemporaryItems(/|$)")
       (regex #"^/private/var/folders/[^/]+/[^/]+/0/com.apple.corespeechd(/|$)"))

(allow file-read* file-write*
       (home-subpath "/Library/Assistant")
       (home-subpath "/Library/Logs/Assistant")
       (home-subpath "/Library/Logs/com.apple.FeatureStore")
       (home-subpath "/Library/Caches/com.apple.assistantd")
       (home-subpath "/Library/Caches/com.apple.iTunesCloud/HTTPArchives/assistantd")
       (home-subpath "/Library/HTTPStorages/com.apple.assistantd")
       (home-literal "/Library/Preferences/com.apple.assistantd.plist")
       (home-literal "/Library/Preferences/com.apple.assistant.backedup.plist")
       (home-literal "/Library/Preferences/com.apple.assistant.backedup.encrypted.plist")
       (home-literal "/Library/Preferences/com.apple.AddressBook.plist")
       (literal "/Library/Caches/com.apple.DiagnosticReporting.HasBeenAppleInternal"))

(allow file-read* file-read-metadata
       (home-literal "/Library/Preferences/.GlobalPreferences.plist")
       (home-regex "/Library/Preferences/ByHost/\.GlobalPreferences\.")
       (literal "/AppleInternal/Library/Assistant/InternalConfig.plist")
       (literal "/Library/Preferences/.GlobalPreferences.plist")
       (literal "/Library/Preferences/com.apple.iTunes.secure.plist")
       (literal "/Library/Caches/com.apple.DiagnosticReporting.Networks.plist"))

(allow file-read*
        (subpath "/private/var/db/mds")
        (literal "/Library/Preferences/com.apple.security.plist")
        (literal "/Library/Preferences/com.apple.security.common.plist")
        (literal "/Library/Preferences/com.apple.security.revocation.plist")
        (home-literal "/Library/Preferences/com.apple.security.plist")
        (home-literal "/Library/Preferences/com.apple.security.revocation.plist"))

(allow file-read*
       (literal "/Library/Application Support/CrashReporter/SubmitDiagInfo.domains")
       (home-literal "/Library/Preferences/com.apple.LaunchServices.plist")
       (home-literal "/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist"))

(allow file-read* file-write*
       (subpath "/private/var/tmp")
       (regex #"^/private/var/folders/[^/]+/[^/]+/T/(assistantd/)?\.AddressBookLocks.*")
       (home-subpath "/Library/Application Support/AddressBook"))

(allow appleevent-send)

(allow mach-lookup
       (global-name "com.apple.xpc.amsaccountsd")
       (global-name "com.apple.accountsd.accountmanager")
       (global-name "com.apple.accountsd.oauthsigner")
       (global-name "com.apple.airportd")
       (global-name "com.apple.ak.anisette.xpc")
       (global-name "com.apple.amp.artworkd")
       (global-name "com.apple.amp.library.framework")
       (global-name "com.apple.analyticsd")
       (global-name "com.apple.apsd")
       (global-name "com.apple.assertiond.processassertionconnection")
       (global-name "com.apple.assistant.analytics")
       (global-name "com.apple.siri.analytics.assistant")
       (global-name "com.apple.assistant_service")
       (global-name "com.apple.siri.execution_service")
       (global-name "com.apple.siri.external_request")
       (global-name "com.apple.siri.shared_flow_plugin_service")
       (global-name "com.apple.assistant.settings")
       (global-name "com.apple.audio.audiohald")
       (global-name "com.apple.audio.coreaudiod")
       (global-name "com.apple.audio.AudioComponentRegistrar")
       (global-name "com.apple.audio.SystemSoundServer-OSX")
       (global-name "com.apple.awdd")
       (global-name "com.apple.biome.PublicStreamAccessService")
       (global-name "com.apple.bluetoothd")
       (global-name "com.apple.cfnetwork.cfnetworkagent")
       (global-name "com.apple.cfnetwork.AuthBrokerAgent")
       (global-name "com.apple.cloudd")
       (global-name "com.apple.CompanionLink")
       (global-name "com.apple.cookied")
       (global-name "com.apple.coreduetd")
       (global-name "com.apple.coreduetd.context")
       (global-name "com.apple.coreduetd.knowledge")
       (global-name "com.apple.coreduetd.knowledge.user")
       (global-name "com.apple.corerecents.recentsd")
       (global-name "com.apple.coreservices.appleevents")
       (global-name "com.apple.coreservices.launchservicesd")
       (global-name "com.apple.coreservices.lsuseractivitymanager.xpc")
       (global-name "com.apple.coreservices.quarantine-resolver")
       (global-name "com.apple.corespeech.corespeechd.xpc")
       (global-name "com.apple.corespeech.corespeechd.endpointer.service")
       (global-name "com.apple.corespeech.corespeechd.rchandling.service")
       (global-name "com.apple.corespeech.speechmodeltraining.xpc")
       (global-name "com.apple.corespeech.voicetriggerservice")
       (global-name "com.apple.duetactivityscheduler")
       (global-name "com.apple.generativeexperiences.availabilityService")
       (global-name "com.apple.geod.defaults")
       (global-name "com.apple.homed.xpc")
       (global-name "com.apple.identityservicesd.desktop.auth")
       (global-name "com.apple.identityservicesd.idquery.desktop.auth")
       (global-name "com.apple.imdpersistence.IMDPersistenceAgent")
       (global-name "com.apple.locationd.desktop.registration")
       (global-name "com.apple.locationd.desktop.spi")
       (global-name "com.apple.locationd.desktop.synchronous")
       (global-name "com.apple.logd.events")
       (global-name "com.apple.logind")
       (global-name "com.apple.ls.boxd")
       (global-name "com.apple.lsd.mapdb")
       (global-name "com.apple.lsd.modifydb")
       (global-name "com.apple.lsd.open")
       (global-name "com.apple.lsd.openurl")
       (global-name "com.apple.marco")
       (global-name "com.apple.mediaremoted.xpc")
       (global-name "com.apple.metadata.mds")
       (global-name "com.apple.metadata.mds.legacy")
       (global-name "com.apple.mobileassetd")
       (global-name "com.apple.mobileassetd.v2")
       (global-name "com.apple.networkd")
       (global-name "com.apple.networkserviceproxy")
       (global-name "com.apple.ocspd")
       (global-name "com.apple.parsecd")
       (global-name "com.apple.pluginkit.pkd")
       (global-name "com.apple.proactive.PersonalizationPortrait.Topic.readWrite")
       (global-name "com.apple.remindd")
       (global-name "com.apple.remoted")
       (global-name "com.apple.secd")
       (global-name "com.apple.securityd.xpc")
       (global-name "com.apple.siri.activation")
       (global-name "com.apple.siri.activation.horseman")
       (global-name "com.apple.siri.activation.application")
       (global-name "com.apple.siri.client_lite")
       (global-name "com.apple.siri.context.service")
       (global-name "com.apple.siri.invoke")
       (global-name "com.apple.siri.localspeechrecognitionbridge.xpc")
       (global-name "com.apple.siri.morphunassetsupdaterd")
       (global-name "com.apple.siri.UnifiedSiriTest.BridgeService")
       (global-name "com.apple.siri.VoiceShortcuts.xpc")
       (global-name "com.apple.siriknowledged")
       (global-name "com.apple.siri.reference_resolution_module")
       (global-name "com.apple.siriknowledged.vocabulary.admin")
       (global-name "com.apple.sirittsd")
       (global-name "com.apple.spotlight.IndexAgent")
       (global-name "com.apple.suggestd.contacts")
       (global-name "com.apple.suggestd.PersonalizationPortrait.StringDonation")
       (global-name "com.apple.symptomsd.helper")
       (global-name "com.apple.symptom_analytics")
       (global-name "com.apple.symptom_diagnostics")
       (global-name "com.apple.system.opendirectoryd.api")
       (global-name "com.apple.tccd")
       (global-name "com.apple.telephonyutilities.callservicesdaemon.conversationprovidermanager")
       (global-name "com.apple.telephonyutilities.callservicesdaemon.conversationmanager")
       (global-name "com.apple.telephonyutilities.callservicesdaemon.callcapabilities")
       (global-name "com.apple.telephonyutilities.callservicesdaemon.callstatecontroller")
       (global-name "com.apple.trial.status")
       (global-name "com.apple.triald.namespace-management")
       (global-name "com.apple.usernotifications.listener")
       (global-name "com.apple.usernotifications.usernotificationservice")
       (global-name "com.apple.windowserver.active")
       (global-name "com.apple.AddressBook.abd")
       (global-name "com.apple.AddressBook.AddressBookApplicationFrameworkIPC")
       (global-name "com.apple.AddressBook.ContactsAccountsService")
       (global-name "com.apple.AddressBook.SourceSync")
       (global-name "com.apple.BluetoothDOServer")
       (global-name "com.apple.BTLEAudioController.xpc")
       (global-name "com.apple.contactsd.bookkeeping")
       (global-name "com.apple.contactsd.persistence")
       (global-name "com.apple.CalendarAgent.database")
       (global-name "com.apple.CalendarAgent.proxy")
       (global-name "com.apple.ContactsAgent.addressbook")
       (global-name "com.apple.CoreLocation.agent")
       (global-name "com.apple.CrashReporterSupportHelper")
       (global-name "com.apple.DiskArbitration.diskarbitrationd")
       (global-name "com.apple.NetworkDiagnostic.agent")
       (global-name "com.apple.PowerManagement.control")
       (global-name "com.apple.SecurityServer")
       (global-name "com.apple.SystemConfiguration.configd")
       (global-name "com.apple.server.bluetooth.classic.xpc")
       (global-name "com.apple.corespeech.corespeechd.voiceid.xpc")
       (global-name "com.apple.proactive.PersonalizationPortrait.NamedEntity.readWrite")
       (global-name "com.apple.proactive.PersonalizationPortrait.Topic.readWrite")
       (global-name "com.apple.intelligenceflow.orchestrator")
       (global-name "com.apple.mitigationasset.xpc.service"))

(allow ipc-posix-shm
       (ipc-posix-name-regex #"^AudioIO")
       (ipc-posix-name "apple.shm.notification_center")
       (ipc-posix-name "FNetwork.defaultStorageSession")
       (ipc-posix-name "com.apple.AppleDatabaseChanged")
       (ipc-posix-name-regex #"^/tmp/com\.apple\.csseed\.")
       (ipc-posix-name-regex #"^ls\."))

(allow iokit-open
       (iokit-user-client-class "AppleSMCClient")
       (iokit-user-client-class "IOAudioEngineUserClient")
       (iokit-user-client-class "IOAudioControlUserClient")
       (iokit-user-client-class "RootDomainUserClient")
       (iokit-user-client-class "IOBluetoothHCIUserClient")
       (iokit-user-client-class "IOSurfaceRootUserClient"))

(allow system-fsctl
       (fsctl-command (_IO "h" 24))       ;; HFS_VOLUME_STATUS
       (fsctl-command (_IO "h" 32))       ;; HFSIOC_TRANSFER_DOCUMENT_ID
       (fsctl-command (_IO "h" 47))       ;; HFSIOC_SET_HOTFILE_STATE
       (fsctl-command (_IO "z" 12))       ;; afpfsGetMountInfoFSCTL
       (fsctl-command (_IO "z" 19))       ;; smbfsUniqueShareIDFSCTL
       (fsctl-command (_IO "z" 23)))      ;; afpfsByteRangeLock2FSCTL

(read-write-and-issue-extensions (regex (string-append "^/Volumes/" (uuid-regex-string) "(/|$)")))

;; Consume sandbox extensions
(with-filter (extension "com.apple.app-sandbox.read")
    (allow file-read*)
    (allow file-issue-extension (extension-class "com.apple.app-sandbox.read")))
(with-filter (extension "com.apple.app-sandbox.read-write")
    (allow file-read* file-write*)
    (allow file-issue-extension (extension-class "com.apple.app-sandbox.read" "com.apple.app-sandbox.read-write")))

;; Contacts
(import "contacts.sb")
(contacts-client (param "_HOME") (param "_TEMPDIR"))

(import "com.apple.assistantd.transcoded.sb")
