openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
2 lines • 3.27 kB
JavaScript
import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{Kn as t}from"./control-ui-foundation-Cydpkyqa.js";function n(e){return e===null||typeof e==`string`}function r(e){return Array.isArray(e)&&Array.from(e).every(e=>typeof e==`string`)}function i(e){return Array.isArray(e)&&Array.from(e).every(e=>t(e)&&typeof e.id==`string`&&typeof e.name==`string`)}function a(e){if(!t(e)||e.contract!==1)return!1;let{device:a,app:o,capabilities:s,browser:l,permissions:u,voice:d,updates:f}=e;if(!t(a)||!t(o)||!t(s)||!t(l)||!t(u)||!t(d)||!t(f))return!1;let p=l.cookieSync,m=u.location,h=d.microphone,g=d.locale;return!t(p)||!t(m)||!t(h)||!t(g)?!1:a.platform===`macos`&&typeof a.appVersion==`string`&&typeof a.appBuild==`string`&&n(a.profileName)&&[`showDockIcon`,`iconAnimationsEnabled`,`launchAtLogin`,`launchAtLoginAvailable`,`quickChatEnabled`,`debugPaneEnabled`].every(e=>typeof o[e]==`boolean`)&&n(o.quickChatShortcut)&&[`canvasEnabled`,`cameraEnabled`,`computerControlEnabled`,`cuaDriverBundled`,`peekabooBridgeEnabled`,`activeComputerPresenceEnabled`].every(e=>typeof s[e]==`boolean`)&&(s.computerControlProvider===`peekaboo`||s.computerControlProvider===`cua`)&&typeof l.importAvailable==`boolean`&&typeof p.available==`boolean`&&typeof p.enabled==`boolean`&&r(p.domains)&&typeof p.targetProfile==`string`&&typeof p.state==`string`&&[`off`,`idle`,`running`,`error`].includes(p.state)&&n(p.detail)&&Array.isArray(u.entries)&&u.entries.length===c.length&&Array.from(u.entries).every((e,n)=>t(e)&&e.id===c[n]&&typeof e.status==`string`&&[`granted`,`denied`,`notDetermined`,`unavailable`].includes(e.status))&&typeof m.mode==`string`&&[`off`,`whileUsing`,`always`].includes(m.mode)&&typeof m.precise==`boolean`&&[`supported`,`wakeEnabled`,`wakeTriggersTalkMode`,`pushToTalkEnabled`,`talkPhaseSoundsEnabled`,`talkShiftToStopEnabled`,`realtimeRelayEnabled`,`triggerChime`,`sendChime`].every(e=>typeof d[e]==`boolean`)&&n(h.selectedId)&&i(h.devices)&&typeof g.primary==`string`&&r(g.additional)&&i(g.available)&&typeof f.available==`boolean`&&typeof f.automatic==`boolean`&&n(f.unavailableReason)}function o(){if(typeof window>`u`)return null;let e=window,t=e.webkit?.messageHandlers?.openclawDeviceSettings;if(typeof t?.postMessage!=`function`)return null;let n=t.postMessage.bind(t),r=e.__OPENCLAW_NATIVE_DEVICE_SETTINGS__,i=a(r)?r:null,o=new Set,c=e=>{if(!(e instanceof CustomEvent))return;let t=e.detail;a(t)&&(i=t,o.forEach(e=>e(t)))},l=()=>n({type:`status`});return window.addEventListener(s,c),window.addEventListener(`focus`,l),l(),{get snapshot(){return i},subscribe(e){return o.add(e),()=>o.delete(e)},set:(e,t)=>n({type:`set`,key:e,value:t}),requestPermission:e=>n({type:`request-permission`,id:e}),openSystemSettings:e=>n({type:`open-system-settings`,id:e}),openPanel:e=>n({type:`open`,panel:e}),checkForUpdates:()=>n({type:`check-for-updates`}),refresh:l,dispose(){window.removeEventListener(s,c),window.removeEventListener(`focus`,l),o.clear()}}}var s,c;function l(){return(l=e((()=>{s=`openclaw:native-device-settings-changed`,c=[`notifications`,`accessibility`,`screenRecording`,`microphone`,`camera`,`speechRecognition`,`location`,`automation`]})))()}l();export{o as createNativeDeviceSettingsCapability};
//# sourceMappingURL=native-device-settings-CcSm3s9I.js.map