{"id":"c1525790-f909-4f81-836f-994692078a66","entityType":"agent","slug":"clawhub-radyakaze-xiaomi-air-purifier","name":"Xiaomi Air Purifier","canonicalUrl":"https://www.xpersona.co/agent/clawhub-radyakaze-xiaomi-air-purifier","canonicalPath":"/agent/clawhub-radyakaze-xiaomi-air-purifier","generatedAt":"2026-10-10T04:26:41.206Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-09T23:16:13.664Z","emptyReason":null},"description":"Monitor and control Xiaomi Air Purifier 4 Lite via Mi Cloud. Use when asked to check air quality, humidity, purifier status, turn on/off the air purifier, or... Skill: Xiaomi Air Purifier Owner: radyakaze Summary: Monitor and control Xiaomi Air Purifier 4 Lite via Mi Cloud. Use when asked to check air quality, humidity, purifier status, turn on/off the air purifier, or... Tags: latest:1.1.2 Version history: v1.1.2 | 2026-02-17T09:42:27.131Z | user Security: Exclude config.json from package v1.1.1 | 2026-02-17T09:38:13.170Z | user Fix property write access for xmihome 1.4.0+","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.9K downloads reported by the source. Last updated 10/9/2026.","installCommand":"clawhub skill install s175pdj1bsadzyn8xwd16ecqn58850pk:xiaomi-air-purifier","sourceUrl":"https://clawhub.ai/radyakaze/xiaomi-air-purifier","homepage":"https://clawhub.ai/radyakaze/skills/xiaomi-air-purifier","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/radyakaze/xiaomi-air-purifier","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/radyakaze/skills/xiaomi-air-purifier","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":66,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Monitor and control Xiaomi Air Purifier 4 Lite via Mi Cloud. Use when asked to check air quality, humidity, purifier status, turn on/off the air purifier, or..."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-09T23:16:13.664Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T23:16:13.664Z","emptyReason":null},"stars":null,"forks":null,"downloads":1901,"packageName":null,"latestVersion":"1.1.2","tractionLabel":"1.9K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T23:16:13.664Z","emptyReason":null},"lastUpdatedAt":"2026-10-09T23:16:13.664Z","lastCrawledAt":"2026-10-09T23:16:13.664Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-10T23:16:13.664Z","lastVerifiedAt":null,"highlights":[{"version":"1.1.2","createdAt":"2026-02-17T09:42:27.131Z","changelog":"Security: Exclude config.json from package","fileCount":7,"zipByteSize":21171},{"version":"1.1.1","createdAt":"2026-02-17T09:38:13.170Z","changelog":"Fix property write access for xmihome 1.4.0+ by bypassing direct setProperty check and updating dependencies","fileCount":8,"zipByteSize":21469},{"version":"1.1.0","createdAt":"2026-02-10T18:15:23.035Z","changelog":"Added local-first logic with automatic Cloud HTTP fallback for improved connectivity.","fileCount":6,"zipByteSize":6832},{"version":"1.0.2","createdAt":"2026-02-06T15:40:39.742Z","changelog":"Excluded config.json by moving it during publish.","fileCount":5,"zipByteSize":19052},{"version":"1.0.1","createdAt":"2026-02-06T15:19:42.605Z","changelog":"Added .clawignore to exclude local config.json from publication.","fileCount":6,"zipByteSize":19233},{"version":"1.0.0","createdAt":"2026-02-06T15:13:39.045Z","changelog":"Initial release - Monitor and control Xiaomi Air Purifier 4 Lite via Mi Cloud.","fileCount":6,"zipByteSize":19233}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s175pdj1bsadzyn8xwd16ecqn58850pk:xiaomi-air-purifier","setupComplexity":"low","setupSteps":["Node.js workspace detected. Install dependencies securely: run `npm ci --ignore-scripts` to prevent post-install lifecycle triggers from running arbitrary code, then selectively audit the dependency tree.","Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-radyakaze-xiaomi-air-purifier/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-radyakaze-xiaomi-air-purifier/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-radyakaze-xiaomi-air-purifier/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-radyakaze-xiaomi-air-purifier/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-radyakaze-xiaomi-air-purifier/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-radyakaze-xiaomi-air-purifier/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T04:26:41.203Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-radyakaze-xiaomi-air-purifier/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-radyakaze-xiaomi-air-purifier/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-radyakaze-xiaomi-air-purifier/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-radyakaze-xiaomi-air-purifier/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-09T23:16:13.664Z","emptyReason":null},"readme":"Skill: Xiaomi Air Purifier\n\nOwner: radyakaze\n\nSummary: Monitor and control Xiaomi Air Purifier 4 Lite via Mi Cloud. Use when asked to check air quality, humidity, purifier status, turn on/off the air purifier, or...\n\nTags: latest:1.1.2\n\nVersion history:\n\nv1.1.2 | 2026-02-17T09:42:27.131Z | user\n\nSecurity: Exclude config.json from package\n\nv1.1.1 | 2026-02-17T09:38:13.170Z | user\n\nFix property write access for xmihome 1.4.0+ by bypassing direct setProperty check and updating dependencies\n\nv1.1.0 | 2026-02-10T18:15:23.035Z | user\n\nAdded local-first logic with automatic Cloud HTTP fallback for improved connectivity.\n\nv1.0.2 | 2026-02-06T15:40:39.742Z | user\n\nExcluded config.json by moving it during publish.\n\nv1.0.1 | 2026-02-06T15:19:42.605Z | user\n\nAdded .clawignore to exclude local config.json from publication.\n\nv1.0.0 | 2026-02-06T15:13:39.045Z | user\n\nInitial release - Monitor and control Xiaomi Air Purifier 4 Lite via Mi Cloud.\n\nArchive index:\n\nArchive v1.1.2: 7 files, 21171 bytes\n\nFiles: package.json (359b), pnpm-lock.yaml (38260b), scripts/extract-token.js (1112b), scripts/purifier.js (12307b), scripts/test-local.js (1480b), SKILL.md (2138b), _meta.json (138b)\n\nFile v1.1.2:SKILL.md\n\n---\nname: xiaomi-air-purifier\ndescription: Monitor and control Xiaomi Air Purifier 4 Lite via Mi Cloud. Use when asked to check air quality, humidity, purifier status, turn on/off the air purifier, or change fan mode/level. Supports multi-room setups.\n---\n\n# Xiaomi Air Purifier Control\n\nControl and monitor Xiaomi Air Purifier 4 Lite (`zhimi.airp.rmb1`) via Xiaomi Cloud API. Supports multiple devices and room-based targeting.\n\n## Setup\n\n1. Install dependencies:\n```bash\ncd xiaomi-air-purifier && pnpm install\n```\n\n2. Login to Mi Cloud (OTP will be sent via SMS/Email):\n```bash\npnpm exec xmihome login -u <email/phone> -p <password> -c <country>\n```\nSupported countries: `sg`, `ru`, `us`, `cn`\n\n3. List devices to verify discovery:\n```bash\nnode scripts/purifier.js devices\n```\n\n## Usage\n\nCommands can be targeted by **Room Name**, **Device Name**, or **DID**. If no target is provided, it uses the selected default or the only available device.\n\n```bash\nnode scripts/purifier.js status [room]      # Check status (e.g., status Bedroom)\nnode scripts/purifier.js status-full [room] # Show full status (incl. filter)\nnode scripts/purifier.js on [room]          # Power on\nnode scripts/purifier.js off [room]         # Power off\nnode scripts/purifier.js mode <0-2> [room]  # 0=Auto, 1=Sleep, 2=Favorite\nnode scripts/purifier.js level <0-14> [room]# Fan speed (Favorite mode)\nnode scripts/purifier.js brightness <0-2> [room]\nnode scripts/purifier.js buzzer <on|off> [room]\nnode scripts/purifier.js lock <on|off> [room]\n```\n\n## Quick Reference\n\n| Property | siid | piid | Type | Description |\n|----------|------|------|------|-------------|\n| Power | 2 | 1 | bool | On/Off |\n| Mode | 2 | 4 | int | 0=Auto, 1=Sleep, 2=Favorite |\n| Humidity | 3 | 1 | int | Relative humidity (%) |\n| PM2.5 | 3 | 4 | int | Air quality (μg/m³) |\n| Temperature | 3 | 7 | float | Temperature (°C) |\n| Filter Life | 4 | 1 | int | Filter remaining (%) |\n| Buzzer | 6 | 1 | bool | Notification sound on/off |\n| Child Lock | 8 | 1 | bool | Physical button lock |\n| Fan Level | 9 | 11 | int | 0-14 (Favorite mode) |\n| Brightness | 13 | 2 | int | 0=Off, 1=Dim, 2=On |\n\nFile v1.1.2:_meta.json\n\n{\n  \"ownerId\": \"kn74vgx2pwyf7sazbq47byzxgx80mejy\",\n  \"slug\": \"xiaomi-air-purifier\",\n  \"version\": \"1.1.2\",\n  \"publishedAt\": 1771321347131\n}\n\nFile v1.1.2:package.json\n\n{\n  \"name\": \"xiaomi-air-purifier\",\n  \"version\": \"1.0.0\",\n  \"description\": \"Xiaomi Air Purifier control skill for OpenClaw\",\n  \"main\": \"scripts/purifier.js\",\n  \"scripts\": {\n    \"status\": \"node scripts/purifier.js status\",\n    \"on\": \"node scripts/purifier.js on\",\n    \"off\": \"node scripts/purifier.js off\"\n  },\n  \"dependencies\": {\n    \"xmihome\": \"^1.4.0\"\n  }\n}\n\nFile v1.1.2:pnpm-lock.yaml\n\nlockfileVersion: '9.0'\n\nsettings:\n  autoInstallPeers: true\n  excludeLinksFromLockfile: false\n\nimporters:\n\n  .:\n    dependencies:\n      xmihome:\n        specifier: ^1.4.0\n        version: 1.4.0\n\npackages:\n\n  '@inquirer/ansi@1.0.2':\n    resolution: {integrity: sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==}\n    engines: {node: '>=18'}\n\n  '@inquirer/checkbox@4.3.2':\n    resolution: {integrity: sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/confirm@5.1.21':\n    resolution: {integrity: sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/core@10.3.2':\n    resolution: {integrity: sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/editor@4.2.23':\n    resolution: {integrity: sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/expand@4.0.23':\n    resolution: {integrity: sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/external-editor@1.0.3':\n    resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/figures@1.0.15':\n    resolution: {integrity: sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==}\n    engines: {node: '>=18'}\n\n  '@inquirer/input@4.3.1':\n    resolution: {integrity: sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/number@3.0.23':\n    resolution: {integrity: sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/password@4.0.23':\n    resolution: {integrity: sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/prompts@7.10.1':\n    resolution: {integrity: sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/rawlist@4.1.11':\n    resolution: {integrity: sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/search@3.2.2':\n    resolution: {integrity: sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/select@4.4.2':\n    resolution: {integrity: sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/type@3.0.10':\n    resolution: {integrity: sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@nornagon/put@0.0.8':\n    resolution: {integrity: sha512-ugvXJjwF5ldtUpa7D95kruNJ41yFQDEKyF5CW4TgKJnh+W/zmlBzXXeKTyqIgwMFrkePN2JqOBqcF0M0oOunow==}\n    engines: {node: '>=0.3.0'}\n\n  abstract-things@0.9.0:\n    resolution: {integrity: sha512-2JJU/nfKfdqan+95KZdrBU/xUfFe/V8O5SE54tFx2e1gsL6dgEd2fcHUaVYJ/tkbRVdIdsIYWk4WyfKxC989rQ==}\n    engines: {node: '>=6.6.0'}\n\n  amounts@0.5.0:\n    resolution: {integrity: sha512-ffvMjyj6mmn8aPmfdqPeHvt6KO1bTMx0fUi0O7KUtuhitUsxjk23RV8CaLUurX4zwLKfZ009WPfsIvge/XTzJg==}\n\n  ansi-regex@5.0.1:\n    resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}\n    engines: {node: '>=8'}\n\n  ansi-regex@6.2.2:\n    resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==}\n    engines: {node: '>=12'}\n\n  ansi-styles@3.2.1:\n    resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}\n    engines: {node: '>=4'}\n\n  ansi-styles@4.3.0:\n    resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}\n    engines: {node: '>=8'}\n\n  ansi-styles@6.2.3:\n    resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==}\n    engines: {node: '>=12'}\n\n  appdirectory@0.1.0:\n    resolution: {integrity: sha512-DJ5DV8vZXBbusyiyPlH28xppwS8eAMRuuyMo88xeEcf4bV64lbLtbxRxqixZuJBXsZzLtXFmA13GwVjJc7vdQw==}\n    deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.\n\n  call-bind-apply-helpers@1.0.2:\n    resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}\n    engines: {node: '>= 0.4'}\n\n  call-bind@1.0.8:\n    resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==}\n    engines: {node: '>= 0.4'}\n\n  call-bound@1.0.4:\n    resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==}\n    engines: {node: '>= 0.4'}\n\n  chalk@2.4.2:\n    resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}\n    engines: {node: '>=4'}\n\n  chardet@2.1.1:\n    resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==}\n\n  cli-width@4.1.0:\n    resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==}\n    engines: {node: '>= 12'}\n\n  cliui@8.0.1:\n    resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}\n    engines: {node: '>=12'}\n\n  cliui@9.0.1:\n    resolution: {integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==}\n    engines: {node: '>=20'}\n\n  color-convert@1.9.3:\n    resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}\n\n  color-convert@2.0.1:\n    resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}\n    engines: {node: '>=7.0.0'}\n\n  color-name@1.1.3:\n    resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}\n\n  color-name@1.1.4:\n    resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}\n\n  color-string@1.9.1:\n    resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==}\n\n  color-temperature@0.2.7:\n    resolution: {integrity: sha512-hFuGKuSBO4V2+AY4KAUvPr3fnNgfgSR1Kf3P1zp80t+zJF0Y37Z1VW2HZIPN90g29NkrlZK5ATIrDul7PCJYZA==}\n\n  core-util-is@1.0.3:\n    resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}\n\n  dbus-next@https://codeload.github.com/dcodeIO/node-dbus-next/tar.gz/0d0cea2ebb0487a051e735f1f488db2115fc16e1:\n    resolution: {tarball: https://codeload.github.com/dcodeIO/node-dbus-next/tar.gz/0d0cea2ebb0487a051e735f1f488db2115fc16e1}\n    version: 0.10.2\n\n  debug@3.2.7:\n    resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}\n    peerDependencies:\n      supports-color: '*'\n    peerDependenciesMeta:\n      supports-color:\n        optional: true\n\n  deep-equal@1.1.2:\n    resolution: {integrity: sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==}\n    engines: {node: '>= 0.4'}\n\n  define-data-property@1.1.4:\n    resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}\n    engines: {node: '>= 0.4'}\n\n  define-properties@1.2.1:\n    resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}\n    engines: {node: '>= 0.4'}\n\n  dunder-proto@1.0.1:\n    resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}\n    engines: {node: '>= 0.4'}\n\n  duplexer@0.1.2:\n    resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==}\n\n  dwaal@0.1.4:\n    resolution: {integrity: sha512-k/r/3bHW4/uqYC0q+yVFh2ZC2sWHVn+/nmGdVOXpj8sPyBCbK/1xJRrUZZ3mbGy080QKkU+Uv4Nz2936zi7Aaw==}\n    engines: {node: '>=6.0.0'}\n\n  emoji-regex@10.6.0:\n    resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==}\n\n  emoji-regex@8.0.0:\n    resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}\n\n  end-of-stream@1.4.5:\n    resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==}\n\n  es-define-property@1.0.1:\n    resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}\n    engines: {node: '>= 0.4'}\n\n  es-errors@1.3.0:\n    resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}\n    engines: {node: '>= 0.4'}\n\n  es-object-atoms@1.1.1:\n    resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}\n    engines: {node: '>= 0.4'}\n\n  escalade@3.2.0:\n    resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}\n    engines: {node: '>=6'}\n\n  escape-string-regexp@1.0.5:\n    resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}\n    engines: {node: '>=0.8.0'}\n\n  event-lite@0.1.3:\n    resolution: {integrity: sha512-8qz9nOz5VeD2z96elrEKD2U433+L3DWdUdDkOINLGOJvx1GsMBbMn0aCeu28y8/e85A6mCigBiFlYMnTBEGlSw==}\n\n  event-stream@3.3.4:\n    resolution: {integrity: sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==}\n\n  eventemitter3@2.0.3:\n    resolution: {integrity: sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg==}\n\n  foibles@0.2.0:\n    resolution: {integrity: sha512-/5Xm2tfFoDRALzwAZ9mQN0cfOY4aGNmespIn2uS47uPqm9ofuoJZKnj9TJMqMLufaK9vCtLwd3jNweYeKr/7yA==}\n\n  from@0.1.7:\n    resolution: {integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==}\n\n  fs-write-stream-atomic@1.0.10:\n    resolution: {integrity: sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==}\n    deprecated: This package is no longer supported.\n\n  function-bind@1.1.2:\n    resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}\n\n  functions-have-names@1.2.3:\n    resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}\n\n  get-caller-file@2.0.5:\n    resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}\n    engines: {node: 6.* || 8.* || >= 10.*}\n\n  get-east-asian-width@1.4.0:\n    resolution: {integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==}\n    engines: {node: '>=18'}\n\n  get-intrinsic@1.3.0:\n    resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}\n    engines: {node: '>= 0.4'}\n\n  get-proto@1.0.1:\n    resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}\n    engines: {node: '>= 0.4'}\n\n  gopd@1.2.0:\n    resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}\n    engines: {node: '>= 0.4'}\n\n  graceful-fs@4.2.11:\n    resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}\n\n  has-flag@3.0.0:\n    resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}\n    engines: {node: '>=4'}\n\n  has-property-descriptors@1.0.2:\n    resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}\n\n  has-symbols@1.1.0:\n    resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}\n    engines: {node: '>= 0.4'}\n\n  has-tostringtag@1.0.2:\n    resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}\n    engines: {node: '>= 0.4'}\n\n  hasown@2.0.2:\n    resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}\n    engines: {node: '>= 0.4'}\n\n  iconv-lite@0.7.2:\n    resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==}\n    engines: {node: '>=0.10.0'}\n\n  ieee754@1.2.1:\n    resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}\n\n  iferr@0.1.5:\n    resolution: {integrity: sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==}\n\n  imurmurhash@0.1.4:\n    resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}\n    engines: {node: '>=0.8.19'}\n\n  inherits@2.0.4:\n    resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}\n\n  int64-buffer@0.1.10:\n    resolution: {integrity: sha512-v7cSY1J8ydZ0GyjUHqF+1bshJ6cnEVLo9EnjB8p+4HDRPZc9N5jjmvUV7NvEsqQOKyH0pmIBFWXVQbiS0+OBbA==}\n\n  is-arguments@1.2.0:\n    resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==}\n    engines: {node: '>= 0.4'}\n\n  is-arrayish@0.3.4:\n    resolution: {integrity: sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==}\n\n  is-date-object@1.1.0:\n    resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==}\n    engines: {node: '>= 0.4'}\n\n  is-fullwidth-code-point@3.0.0:\n    resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}\n    engines: {node: '>=8'}\n\n  is-mergeable-object@1.1.1:\n    resolution: {integrity: sha512-CPduJfuGg8h8vW74WOxHtHmtQutyQBzR+3MjQ6iDHIYdbOnm1YC7jv43SqCoU8OPGTJD4nibmiryA4kmogbGrA==}\n\n  is-regex@1.2.1:\n    resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==}\n    engines: {node: '>= 0.4'}\n\n  isarray@1.0.0:\n    resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}\n\n  jsbi@2.0.5:\n    resolution: {integrity: sha512-TzO/62Hxeb26QMb4IGlI/5X+QLr9Uqp1FPkwp2+KOICW+Q+vSuFj61c8pkT6wAns4WcK56X7CmSHhJeDGWOqxQ==}\n\n  long@4.0.0:\n    resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==}\n\n  map-stream@0.1.0:\n    resolution: {integrity: sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==}\n\n  math-intrinsics@1.1.0:\n    resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}\n    engines: {node: '>= 0.4'}\n\n  mijia-io@https://codeload.github.com/salamwaddah/mijia-io/tar.gz/21b46c3fc4cdb6a4b520f0867d63715de81c5acc:\n    resolution: {tarball: https://codeload.github.com/salamwaddah/mijia-io/tar.gz/21b46c3fc4cdb6a4b520f0867d63715de81c5acc}\n    version: 0.18.6\n    engines: {node: '>=6.6.0'}\n    hasBin: true\n\n  minimist@1.2.8:\n    resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}\n\n  mkdirp@0.5.6:\n    resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==}\n    hasBin: true\n\n  ms@2.1.3:\n    resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}\n\n  msgpack-lite@0.1.26:\n    resolution: {integrity: sha512-SZ2IxeqZ1oRFGo0xFGbvBJWMp3yLIY9rlIJyxy8CGrwZn1f0ZK4r6jV/AM1r0FZMDUkWkglOk/eeKIL9g77Nxw==}\n    hasBin: true\n\n  msgpack-sock@1.1.0:\n    resolution: {integrity: sha512-sFmfd9KlOj+UYYDB6T6RdUFpUFNfwKNYGKhOwDqkdYMurrV5lArul8XpBE4nwO0D+0AM0AqOq7fo4IXmPJGyAw==}\n\n  mute-stream@2.0.0:\n    resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==}\n    engines: {node: ^18.17.0 || >=20.5.0}\n\n  object-is@1.1.6:\n    resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==}\n    engines: {node: '>= 0.4'}\n\n  object-keys@1.1.1:\n    resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}\n    engines: {node: '>= 0.4'}\n\n  once@1.4.0:\n    resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}\n\n  pause-stream@0.0.11:\n    resolution: {integrity: sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==}\n\n  pidlockfile@1.1.1:\n    resolution: {integrity: sha512-ajekn/eYVndTnBFntsBhWebdOn4V1+8FHv3YC6X6LxOcVs78UQNaI9ebU2Q72dzZP/B2h5EPs+ymGKPwuFPafA==}\n\n  process-nextick-args@2.0.1:\n    resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}\n\n  readable-stream@2.3.8:\n    resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}\n\n  regexp.prototype.flags@1.5.4:\n    resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==}\n    engines: {node: '>= 0.4'}\n\n  require-directory@2.1.1:\n    resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}\n    engines: {node: '>=0.10.0'}\n\n  safe-buffer@5.1.2:\n    resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}\n\n  safe-buffer@5.2.1:\n    resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}\n\n  safer-buffer@2.1.2:\n    resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}\n\n  sax@1.4.4:\n    resolution: {integrity: sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==}\n    engines: {node: '>=11.0.0'}\n\n  set-function-length@1.2.2:\n    resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}\n    engines: {node: '>= 0.4'}\n\n  set-function-name@2.0.2:\n    resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==}\n    engines: {node: '>= 0.4'}\n\n  signal-exit@4.1.0:\n    resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}\n    engines: {node: '>=14'}\n\n  simple-swizzle@0.2.4:\n    resolution: {integrity: sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==}\n\n  split@0.3.3:\n    resolution: {integrity: sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==}\n\n  stream-combiner@0.0.4:\n    resolution: {integrity: sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==}\n\n  string-width@4.2.3:\n    resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}\n    engines: {node: '>=8'}\n\n  string-width@7.2.0:\n    resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==}\n    engines: {node: '>=18'}\n\n  string_decoder@1.1.1:\n    resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}\n\n  strip-ansi@6.0.1:\n    resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}\n    engines: {node: '>=8'}\n\n  strip-ansi@7.1.2:\n    resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==}\n    engines: {node: '>=12'}\n\n  supports-color@5.5.0:\n    resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}\n    engines: {node: '>=4'}\n\n  through@2.3.8:\n    resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}\n\n  tinkerhub-discovery@0.3.1:\n    resolution: {integrity: sha512-SAf6yys8Klxw7BeXa3sSRuA9q2EVfnwGc1wX1NGTsa7wnCE72T7csyAvUpqc/Tu39ed1wIGvxcejxZF5ZwaZbw==}\n    engines: {node: '>=6.0.0'}\n\n  unix-socket-leader@0.1.2:\n    resolution: {integrity: sha512-svuttzC+iU31xDHfTh/rurauRCh3HouxBxjCWFmaazoEUTxvF+IrFPqDo4xtMfL+ehBaNGdv4KXsFA7Jv1GvnQ==}\n\n  util-deprecate@1.0.2:\n    resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}\n\n  wrap-ansi@6.2.0:\n    resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}\n    engines: {node: '>=8'}\n\n  wrap-ansi@7.0.0:\n    resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}\n    engines: {node: '>=10'}\n\n  wrap-ansi@9.0.2:\n    resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==}\n    engines: {node: '>=18'}\n\n  wrappy@1.0.2:\n    resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}\n\n  xmihome-devices@1.4.0:\n    resolution: {integrity: sha512-xT/iYkhCdQM1U0fHnp55kE2sIWvpXsd4p5m/mUcsnEg+BdwsY1/A+wTp/FawGkCnA1eut6Y0dXREqPhVzYKgOg==}\n\n  xmihome@1.4.0:\n    resolution: {integrity: sha512-+yLV2puETuz224binzEsR4mAk6a2fWQDaYa655uaBYbv6xEA/opp2H6USHDNCTv/L06cuHQpF2t8MAXycpDF9A==}\n    engines: {node: '>=18.0.0'}\n    hasBin: true\n\n  xml2js@0.6.2:\n    resolution: {integrity: sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==}\n    engines: {node: '>=4.0.0'}\n\n  xmlbuilder@11.0.1:\n    resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==}\n    engines: {node: '>=4.0'}\n\n  y18n@5.0.8:\n    resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}\n    engines: {node: '>=10'}\n\n  yargs-parser@21.1.1:\n    resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}\n    engines: {node: '>=12'}\n\n  yargs-parser@22.0.0:\n    resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==}\n    engines: {node: ^20.19.0 || ^22.12.0 || >=23}\n\n  yargs@17.7.2:\n    resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}\n    engines: {node: '>=12'}\n\n  yargs@18.0.0:\n    resolution: {integrity: sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==}\n    engines: {node: ^20.19.0 || ^22.12.0 || >=23}\n\n  yoctocolors-cjs@2.1.3:\n    resolution: {integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==}\n    engines: {node: '>=18'}\n\nsnapshots:\n\n  '@inquirer/ansi@1.0.2': {}\n\n  '@inquirer/checkbox@4.3.2':\n    dependencies:\n      '@inquirer/ansi': 1.0.2\n      '@inquirer/core': 10.3.2\n      '@inquirer/figures': 1.0.15\n      '@inquirer/type': 3.0.10\n      yoctocolors-cjs: 2.1.3\n\n  '@inquirer/confirm@5.1.21':\n    dependencies:\n      '@inquirer/core': 10.3.2\n      '@inquirer/type': 3.0.10\n\n  '@inquirer/core@10.3.2':\n    dependencies:\n      '@inquirer/ansi': 1.0.2\n      '@inquirer/figures': 1.0.15\n      '@inquirer/type': 3.0.10\n      cli-width: 4.1.0\n      mute-stream: 2.0.0\n      signal-exit: 4.1.0\n      wrap-ansi: 6.2.0\n      yoctocolors-cjs: 2.1.3\n\n  '@inquirer/editor@4.2.23':\n    dependencies:\n      '@inquirer/core': 10.3.2\n      '@inquirer/external-editor': 1.0.3\n      '@inquirer/type': 3.0.10\n\n  '@inquirer/expand@4.0.23':\n    dependencies:\n      '@inquirer/core': 10.3.2\n      '@inquirer/type': 3.0.10\n      yoctocolors-cjs: 2.1.3\n\n  '@inquirer/external-editor@1.0.3':\n    dependencies:\n      chardet: 2.1.1\n      iconv-lite: 0.7.2\n\n  '@inquirer/figures@1.0.15': {}\n\n  '@inquirer/input@4.3.1':\n    dependencies:\n      '@inquirer/core': 10.3.2\n      '@inquirer/type': 3.0.10\n\n  '@inquirer/number@3.0.23':\n    dependencies:\n      '@inquirer/core': 10.3.2\n      '@inquirer/type': 3.0.10\n\n  '@inquirer/password@4.0.23':\n    dependencies:\n      '@inquirer/ansi': 1.0.2\n      '@inquirer/core': 10.3.2\n      '@inquirer/type': 3.0.10\n\n  '@inquirer/prompts@7.10.1':\n    dependencies:\n      '@inquirer/checkbox': 4.3.2\n      '@inquirer/confirm': 5.1.21\n      '@inquirer/editor': 4.2.23\n      '@inquirer/expand': 4.0.23\n      '@inquirer/input': 4.3.1\n      '@inquirer/number': 3.0.23\n      '@inquirer/password': 4.0.23\n      '@inquirer/rawlist': 4.1.11\n      '@inquirer/search': 3.2.2\n      '@inquirer/select': 4.4.2\n\n  '@inquirer/rawlist@4.1.11':\n    dependencies:\n      '@inquirer/core': 10.3.2\n      '@inquirer/type': 3.0.10\n      yoctocolors-cjs: 2.1.3\n\n  '@inquirer/search@3.2.2':\n    dependencies:\n      '@inquirer/core': 10.3.2\n      '@inquirer/figures': 1.0.15\n      '@inquirer/type': 3.0.10\n      yoctocolors-cjs: 2.1.3\n\n  '@inquirer/select@4.4.2':\n    dependencies:\n      '@inquirer/ansi': 1.0.2\n      '@inquirer/core': 10.3.2\n      '@inquirer/figures': 1.0.15\n      '@inquirer/type': 3.0.10\n      yoctocolors-cjs: 2.1.3\n\n  '@inquirer/type@3.0.10': {}\n\n  '@nornagon/put@0.0.8':\n    optional: true\n\n  abstract-things@0.9.0:\n    dependencies:\n      amounts: 0.5.0\n      appdirectory: 0.1.0\n      color-convert: 1.9.3\n      color-string: 1.9.1\n      color-temperature: 0.2.7\n      debug: 3.2.7\n      deep-equal: 1.1.2\n      dwaal: 0.1.4\n      foibles: 0.2.0\n      is-mergeable-object: 1.1.1\n      mkdirp: 0.5.6\n      tinkerhub-discovery: 0.3.1\n    transitivePeerDependencies:\n      - supports-color\n\n  amounts@0.5.0: {}\n\n  ansi-regex@5.0.1: {}\n\n  ansi-regex@6.2.2: {}\n\n  ansi-styles@3.2.1:\n    dependencies:\n      color-convert: 1.9.3\n\n  ansi-styles@4.3.0:\n    dependencies:\n      color-convert: 2.0.1\n\n  ansi-styles@6.2.3: {}\n\n  appdirectory@0.1.0: {}\n\n  call-bind-apply-helpers@1.0.2:\n    dependencies:\n      es-errors: 1.3.0\n      function-bind: 1.1.2\n\n  call-bind@1.0.8:\n    dependencies:\n      call-bind-apply-helpers: 1.0.2\n      es-define-property: 1.0.1\n      get-intrinsic: 1.3.0\n      set-function-length: 1.2.2\n\n  call-bound@1.0.4:\n    dependencies:\n      call-bind-apply-helpers: 1.0.2\n      get-intrinsic: 1.3.0\n\n  chalk@2.4.2:\n    dependencies:\n      ansi-styles: 3.2.1\n      escape-string-regexp: 1.0.5\n      supports-color: 5.5.0\n\n  chardet@2.1.1: {}\n\n  cli-width@4.1.0: {}\n\n  cliui@8.0.1:\n    dependencies:\n      string-width: 4.2.3\n      strip-ansi: 6.0.1\n      wrap-ansi: 7.0.0\n\n  cliui@9.0.1:\n    dependencies:\n      string-width: 7.2.0\n      strip-ansi: 7.1.2\n      wrap-ansi: 9.0.2\n\n  color-convert@1.9.3:\n    dependencies:\n      color-name: 1.1.3\n\n  color-convert@2.0.1:\n    dependencies:\n      color-name: 1.1.4\n\n  color-name@1.1.3: {}\n\n  color-name@1.1.4: {}\n\n  color-string@1.9.1:\n    dependencies:\n      color-name: 1.1.4\n      simple-swizzle: 0.2.4\n\n  color-temperature@0.2.7: {}\n\n  core-util-is@1.0.3: {}\n\n  dbus-next@https://codeload.github.com/dcodeIO/node-dbus-next/tar.gz/0d0cea2ebb0487a051e735f1f488db2115fc16e1:\n    dependencies:\n      '@nornagon/put': 0.0.8\n      event-stream: 3.3.4\n      jsbi: 2.0.5\n      long: 4.0.0\n      safe-buffer: 5.2.1\n      xml2js: 0.6.2\n    optional: true\n\n  debug@3.2.7:\n    dependencies:\n      ms: 2.1.3\n\n  deep-equal@1.1.2:\n    dependencies:\n      is-arguments: 1.2.0\n      is-date-object: 1.1.0\n      is-regex: 1.2.1\n      object-is: 1.1.6\n      object-keys: 1.1.1\n      regexp.prototype.flags: 1.5.4\n\n  define-data-property@1.1.4:\n    dependencies:\n      es-define-property: 1.0.1\n      es-errors: 1.3.0\n      gopd: 1.2.0\n\n  define-properties@1.2.1:\n    dependencies:\n      define-data-property: 1.1.4\n      has-property-descriptors: 1.0.2\n      object-keys: 1.1.1\n\n  dunder-proto@1.0.1:\n    dependencies:\n      call-bind-apply-helpers: 1.0.2\n      es-errors: 1.3.0\n      gopd: 1.2.0\n\n  duplexer@0.1.2:\n    optional: true\n\n  dwaal@0.1.4:\n    dependencies:\n      debug: 3.2.7\n      deep-equal: 1.1.2\n      end-of-stream: 1.4.5\n      fs-write-stream-atomic: 1.0.10\n      msgpack-lite: 0.1.26\n      msgpack-sock: 1.1.0\n      unix-socket-leader: 0.1.2\n    transitivePeerDependencies:\n      - supports-color\n\n  emoji-regex@10.6.0: {}\n\n  emoji-regex@8.0.0: {}\n\n  end-of-stream@1.4.5:\n    dependencies:\n      once: 1.4.0\n\n  es-define-property@1.0.1: {}\n\n  es-errors@1.3.0: {}\n\n  es-object-atoms@1.1.1:\n    dependencies:\n      es-errors: 1.3.0\n\n  escalade@3.2.0: {}\n\n  escape-string-regexp@1.0.5: {}\n\n  event-lite@0.1.3: {}\n\n  event-stream@3.3.4:\n    dependencies:\n      duplexer: 0.1.2\n      from: 0.1.7\n      map-stream: 0.1.0\n      pause-stream: 0.0.11\n      split: 0.3.3\n      stream-combiner: 0.0.4\n      through: 2.3.8\n    optional: true\n\n  eventemitter3@2.0.3: {}\n\n  foibles@0.2.0: {}\n\n  from@0.1.7:\n    optional: true\n\n  fs-write-stream-atomic@1.0.10:\n    dependencies:\n      graceful-fs: 4.2.11\n      iferr: 0.1.5\n      imurmurhash: 0.1.4\n      readable-stream: 2.3.8\n\n  function-bind@1.1.2: {}\n\n  functions-have-names@1.2.3: {}\n\n  get-caller-file@2.0.5: {}\n\n  get-east-asian-width@1.4.0: {}\n\n  get-intrinsic@1.3.0:\n    dependencies:\n      call-bind-apply-helpers: 1.0.2\n      es-define-property: 1.0.1\n      es-errors: 1.3.0\n      es-object-atoms: 1.1.1\n      function-bind: 1.1.2\n      get-proto: 1.0.1\n      gopd: 1.2.0\n      has-symbols: 1.1.0\n      hasown: 2.0.2\n      math-intrinsics: 1.1.0\n\n  get-proto@1.0.1:\n    dependencies:\n      dunder-proto: 1.0.1\n      es-object-atoms: 1.1.1\n\n  gopd@1.2.0: {}\n\n  graceful-fs@4.2.11: {}\n\n  has-flag@3.0.0: {}\n\n  has-property-descriptors@1.0.2:\n    dependencies:\n      es-define-property: 1.0.1\n\n  has-symbols@1.1.0: {}\n\n  has-tostringtag@1.0.2:\n    dependencies:\n      has-symbols: 1.1.0\n\n  hasown@2.0.2:\n    dependencies:\n      function-bind: 1.1.2\n\n  iconv-lite@0.7.2:\n    dependencies:\n      safer-buffer: 2.1.2\n\n  ieee754@1.2.1: {}\n\n  iferr@0.1.5: {}\n\n  imurmurhash@0.1.4: {}\n\n  inherits@2.0.4: {}\n\n  int64-buffer@0.1.10: {}\n\n  is-arguments@1.2.0:\n    dependencies:\n      call-bound: 1.0.4\n      has-tostringtag: 1.0.2\n\n  is-arrayish@0.3.4: {}\n\n  is-date-object@1.1.0:\n    dependencies:\n      call-bound: 1.0.4\n      has-tostringtag: 1.0.2\n\n  is-fullwidth-code-point@3.0.0: {}\n\n  is-mergeable-object@1.1.1: {}\n\n  is-regex@1.2.1:\n    dependencies:\n      call-bound: 1.0.4\n      gopd: 1.2.0\n      has-tostringtag: 1.0.2\n      hasown: 2.0.2\n\n  isarray@1.0.0: {}\n\n  jsbi@2.0.5:\n    optional: true\n\n  long@4.0.0:\n    optional: true\n\n  map-stream@0.1.0:\n    optional: true\n\n  math-intrinsics@1.1.0: {}\n\n  mijia-io@https://codeload.github.com/salamwaddah/mijia-io/tar.gz/21b46c3fc4cdb6a4b520f0867d63715de81c5acc:\n    dependencies:\n      abstract-things: 0.9.0\n      appdirectory: 0.1.0\n      chalk: 2.4.2\n      debug: 3.2.7\n      deep-equal: 1.1.2\n      mkdirp: 0.5.6\n      tinkerhub-discovery: 0.3.1\n      yargs: 17.7.2\n    transitivePeerDependencies:\n      - supports-color\n\n  minimist@1.2.8: {}\n\n  mkdirp@0.5.6:\n    dependencies:\n      minimist: 1.2.8\n\n  ms@2.1.3: {}\n\n  msgpack-lite@0.1.26:\n    dependencies:\n      event-lite: 0.1.3\n      ieee754: 1.2.1\n      int64-buffer: 0.1.10\n      isarray: 1.0.0\n\n  msgpack-sock@1.1.0:\n    dependencies:\n      msgpack-lite: 0.1.26\n\n  mute-stream@2.0.0: {}\n\n  object-is@1.1.6:\n    dependencies:\n      call-bind: 1.0.8\n      define-properties: 1.2.1\n\n  object-keys@1.1.1: {}\n\n  once@1.4.0:\n    dependencies:\n      wrappy: 1.0.2\n\n  pause-stream@0.0.11:\n    dependencies:\n      through: 2.3.8\n    optional: true\n\n  pidlockfile@1.1.1: {}\n\n  process-nextick-args@2.0.1: {}\n\n  readable-stream@2.3.8:\n    dependencies:\n      core-util-is: 1.0.3\n      inherits: 2.0.4\n      isarray: 1.0.0\n      process-nextick-args: 2.0.1\n      safe-buffer: 5.1.2\n      string_decoder: 1.1.1\n      util-deprecate: 1.0.2\n\n  regexp.prototype.flags@1.5.4:\n    dependencies:\n      call-bind: 1.0.8\n      define-properties: 1.2.1\n      es-errors: 1.3.0\n      get-proto: 1.0.1\n      gopd: 1.2.0\n      set-function-name: 2.0.2\n\n  require-directory@2.1.1: {}\n\n  safe-buffer@5.1.2: {}\n\n  safe-buffer@5.2.1:\n    optional: true\n\n  safer-buffer@2.1.2: {}\n\n  sax@1.4.4:\n    optional: true\n\n  set-function-length@1.2.2:\n    dependencies:\n      define-data-property: 1.1.4\n      es-errors: 1.3.0\n      function-bind: 1.1.2\n      get-intrinsic: 1.3.0\n      gopd: 1.2.0\n      has-property-descriptors: 1.0.2\n\n  set-function-name@2.0.2:\n    dependencies:\n      define-data-property: 1.1.4\n      es-errors: 1.3.0\n      functions-have-names: 1.2.3\n      has-property-descriptors: 1.0.2\n\n  signal-exit@4.1.0: {}\n\n  simple-swizzle@0.2.4:\n    dependencies:\n      is-arrayish: 0.3.4\n\n  split@0.3.3:\n    dependencies:\n      through: 2.3.8\n    optional: true\n\n  stream-combiner@0.0.4:\n    dependencies:\n      duplexer: 0.1.2\n    optional: true\n\n  string-width@4.2.3:\n    dependencies:\n      emoji-regex: 8.0.0\n      is-fullwidth-code-point: 3.0.0\n      strip-ansi: 6.0.1\n\n  string-width@7.2.0:\n    dependencies:\n      emoji-regex: 10.6.0\n      get-east-asian-width: 1.4.0\n      strip-ansi: 7.1.2\n\n  string_decoder@1.1.1:\n    dependencies:\n      safe-buffer: 5.1.2\n\n  strip-ansi@6.0.1:\n    dependencies:\n      ansi-regex: 5.0.1\n\n  strip-ansi@7.1.2:\n    dependencies:\n      ansi-regex: 6.2.2\n\n  supports-color@5.5.0:\n    dependencies:\n      has-flag: 3.0.0\n\n  through@2.3.8:\n    optional: true\n\n  tinkerhub-discovery@0.3.1:\n    dependencies:\n      debug: 3.2.7\n      eventemitter3: 2.0.3\n    transitivePeerDependencies:\n      - supports-color\n\n  unix-socket-leader@0.1.2:\n    dependencies:\n      end-of-stream: 1.4.5\n      pidlockfile: 1.1.1\n\n  util-deprecate@1.0.2: {}\n\n  wrap-ansi@6.2.0:\n    dependencies:\n      ansi-styles: 4.3.0\n      string-width: 4.2.3\n      strip-ansi: 6.0.1\n\n  wrap-ansi@7.0.0:\n    dependencies:\n      ansi-styles: 4.3.0\n      string-width: 4.2.3\n      strip-ansi: 6.0.1\n\n  wrap-ansi@9.0.2:\n    dependencies:\n      ansi-styles: 6.2.3\n      string-width: 7.2.0\n      strip-ansi: 7.1.2\n\n  wrappy@1.0.2: {}\n\n  xmihome-devices@1.4.0: {}\n\n  xmihome@1.4.0:\n    dependencies:\n      '@inquirer/prompts': 7.10.1\n      mijia-io: https://codeload.github.com/salamwaddah/mijia-io/tar.gz/21b46c3fc4cdb6a4b520f0867d63715de81c5acc\n      xmihome-devices: 1.4.0\n      yargs: 18.0.0\n    optionalDependencies:\n      dbus-next: https://codeload.github.com/dcodeIO/node-dbus-next/tar.gz/0d0cea2ebb0487a051e735f1f488db2115fc16e1\n    transitivePeerDependencies:\n      - '@types/node'\n      - supports-color\n\n  xml2js@0.6.2:\n    dependencies:\n      sax: 1.4.4\n      xmlbuilder: 11.0.1\n    optional: true\n\n  xmlbuilder@11.0.1:\n    optional: true\n\n  y18n@5.0.8: {}\n\n  yargs-parser@21.1.1: {}\n\n  yargs-parser@22.0.0: {}\n\n  yargs@17.7.2:\n    dependencies:\n      cliui: 8.0.1\n      escalade: 3.2.0\n      get-caller-file: 2.0.5\n      require-directory: 2.1.1\n      string-width: 4.2.3\n      y18n: 5.0.8\n      yargs-parser: 21.1.1\n\n  yargs@18.0.0:\n    dependencies:\n      cliui: 9.0.1\n      escalade: 3.2.0\n      get-caller-file: 2.0.5\n      string-width: 7.2.0\n      y18n: 5.0.8\n      yargs-parser: 22.0.0\n\n  yoctocolors-cjs@2.1.3: {}\n\nArchive v1.1.1: 8 files, 21469 bytes\n\nFiles: config.json (319b), package.json (359b), pnpm-lock.yaml (38260b), scripts/extract-token.js (1112b), scripts/purifier.js (12307b), scripts/test-local.js (1480b), SKILL.md (2138b), _meta.json (138b)\n\nFile v1.1.1:SKILL.md\n\n---\nname: xiaomi-air-purifier\ndescription: Monitor and control Xiaomi Air Purifier 4 Lite via Mi Cloud. Use when asked to check air quality, humidity, purifier status, turn on/off the air purifier, or change fan mode/level. Supports multi-room setups.\n---\n\n# Xiaomi Air Purifier Control\n\nControl and monitor Xiaomi Air Purifier 4 Lite (`zhimi.airp.rmb1`) via Xiaomi Cloud API. Supports multiple devices and room-based targeting.\n\n## Setup\n\n1. Install dependencies:\n```bash\ncd xiaomi-air-purifier && pnpm install\n```\n\n2. Login to Mi Cloud (OTP will be sent via SMS/Email):\n```bash\npnpm exec xmihome login -u <email/phone> -p <password> -c <country>\n```\nSupported countries: `sg`, `ru`, `us`, `cn`\n\n3. List devices to verify discovery:\n```bash\nnode scripts/purifier.js devices\n```\n\n## Usage\n\nCommands can be targeted by **Room Name**, **Device Name**, or **DID**. If no target is provided, it uses the selected default or the only available device.\n\n```bash\nnode scripts/purifier.js status [room]      # Check status (e.g., status Bedroom)\nnode scripts/purifier.js status-full [room] # Show full status (incl. filter)\nnode scripts/purifier.js on [room]          # Power on\nnode scripts/purifier.js off [room]         # Power off\nnode scripts/purifier.js mode <0-2> [room]  # 0=Auto, 1=Sleep, 2=Favorite\nnode scripts/purifier.js level <0-14> [room]# Fan speed (Favorite mode)\nnode scripts/purifier.js brightness <0-2> [room]\nnode scripts/purifier.js buzzer <on|off> [room]\nnode scripts/purifier.js lock <on|off> [room]\n```\n\n## Quick Reference\n\n| Property | siid | piid | Type | Description |\n|----------|------|------|------|-------------|\n| Power | 2 | 1 | bool | On/Off |\n| Mode | 2 | 4 | int | 0=Auto, 1=Sleep, 2=Favorite |\n| Humidity | 3 | 1 | int | Relative humidity (%) |\n| PM2.5 | 3 | 4 | int | Air quality (μg/m³) |\n| Temperature | 3 | 7 | float | Temperature (°C) |\n| Filter Life | 4 | 1 | int | Filter remaining (%) |\n| Buzzer | 6 | 1 | bool | Notification sound on/off |\n| Child Lock | 8 | 1 | bool | Physical button lock |\n| Fan Level | 9 | 11 | int | 0-14 (Favorite mode) |\n| Brightness | 13 | 2 | int | 0=Off, 1=Dim, 2=On |\n\nFile v1.1.1:_meta.json\n\n{\n  \"ownerId\": \"kn74vgx2pwyf7sazbq47byzxgx80mejy\",\n  \"slug\": \"xiaomi-air-purifier\",\n  \"version\": \"1.1.1\",\n  \"publishedAt\": 1771321093170\n}\n\nFile v1.1.1:config.json\n\n{\n  \"did\": \"875218925\",\n  \"name\": \"Xiaomi Smart Air Purifier 4 Lite\",\n  \"devices\": [\n    {\n      \"did\": \"875218925\",\n      \"name\": \"Xiaomi Smart Air Purifier 4 Lite\",\n      \"room\": \"Bedroom\",\n      \"token\": \"3a8e11ebfb306f9d87e941c6b0f0e910\",\n      \"model\": \"zhimi.airp.rmb1\",\n      \"address\": \"192.168.1.2\"\n    }\n  ]\n}\n\nFile v1.1.1:package.json\n\n{\n  \"name\": \"xiaomi-air-purifier\",\n  \"version\": \"1.0.0\",\n  \"description\": \"Xiaomi Air Purifier control skill for OpenClaw\",\n  \"main\": \"scripts/purifier.js\",\n  \"scripts\": {\n    \"status\": \"node scripts/purifier.js status\",\n    \"on\": \"node scripts/purifier.js on\",\n    \"off\": \"node scripts/purifier.js off\"\n  },\n  \"dependencies\": {\n    \"xmihome\": \"^1.4.0\"\n  }\n}\n\nFile v1.1.1:pnpm-lock.yaml\n\nlockfileVersion: '9.0'\n\nsettings:\n  autoInstallPeers: true\n  excludeLinksFromLockfile: false\n\nimporters:\n\n  .:\n    dependencies:\n      xmihome:\n        specifier: ^1.4.0\n        version: 1.4.0\n\npackages:\n\n  '@inquirer/ansi@1.0.2':\n    resolution: {integrity: sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==}\n    engines: {node: '>=18'}\n\n  '@inquirer/checkbox@4.3.2':\n    resolution: {integrity: sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/confirm@5.1.21':\n    resolution: {integrity: sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/core@10.3.2':\n    resolution: {integrity: sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/editor@4.2.23':\n    resolution: {integrity: sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/expand@4.0.23':\n    resolution: {integrity: sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/external-editor@1.0.3':\n    resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/figures@1.0.15':\n    resolution: {integrity: sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==}\n    engines: {node: '>=18'}\n\n  '@inquirer/input@4.3.1':\n    resolution: {integrity: sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/number@3.0.23':\n    resolution: {integrity: sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/password@4.0.23':\n    resolution: {integrity: sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/prompts@7.10.1':\n    resolution: {integrity: sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/rawlist@4.1.11':\n    resolution: {integrity: sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/search@3.2.2':\n    resolution: {integrity: sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/select@4.4.2':\n    resolution: {integrity: sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/type@3.0.10':\n    resolution: {integrity: sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@nornagon/put@0.0.8':\n    resolution: {integrity: sha512-ugvXJjwF5ldtUpa7D95kruNJ41yFQDEKyF5CW4TgKJnh+W/zmlBzXXeKTyqIgwMFrkePN2JqOBqcF0M0oOunow==}\n    engines: {node: '>=0.3.0'}\n\n  abstract-things@0.9.0:\n    resolution: {integrity: sha512-2JJU/nfKfdqan+95KZdrBU/xUfFe/V8O5SE54tFx2e1gsL6dgEd2fcHUaVYJ/tkbRVdIdsIYWk4WyfKxC989rQ==}\n    engines: {node: '>=6.6.0'}\n\n  amounts@0.5.0:\n    resolution: {integrity: sha512-ffvMjyj6mmn8aPmfdqPeHvt6KO1bTMx0fUi0O7KUtuhitUsxjk23RV8CaLUurX4zwLKfZ009WPfsIvge/XTzJg==}\n\n  ansi-regex@5.0.1:\n    resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}\n    engines: {node: '>=8'}\n\n  ansi-regex@6.2.2:\n    resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==}\n    engines: {node: '>=12'}\n\n  ansi-styles@3.2.1:\n    resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}\n    engines: {node: '>=4'}\n\n  ansi-styles@4.3.0:\n    resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}\n    engines: {node: '>=8'}\n\n  ansi-styles@6.2.3:\n    resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==}\n    engines: {node: '>=12'}\n\n  appdirectory@0.1.0:\n    resolution: {integrity: sha512-DJ5DV8vZXBbusyiyPlH28xppwS8eAMRuuyMo88xeEcf4bV64lbLtbxRxqixZuJBXsZzLtXFmA13GwVjJc7vdQw==}\n    deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.\n\n  call-bind-apply-helpers@1.0.2:\n    resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}\n    engines: {node: '>= 0.4'}\n\n  call-bind@1.0.8:\n    resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==}\n    engines: {node: '>= 0.4'}\n\n  call-bound@1.0.4:\n    resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==}\n    engines: {node: '>= 0.4'}\n\n  chalk@2.4.2:\n    resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}\n    engines: {node: '>=4'}\n\n  chardet@2.1.1:\n    resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==}\n\n  cli-width@4.1.0:\n    resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==}\n    engines: {node: '>= 12'}\n\n  cliui@8.0.1:\n    resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}\n    engines: {node: '>=12'}\n\n  cliui@9.0.1:\n    resolution: {integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==}\n    engines: {node: '>=20'}\n\n  color-convert@1.9.3:\n    resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}\n\n  color-convert@2.0.1:\n    resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}\n    engines: {node: '>=7.0.0'}\n\n  color-name@1.1.3:\n    resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}\n\n  color-name@1.1.4:\n    resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}\n\n  color-string@1.9.1:\n    resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==}\n\n  color-temperature@0.2.7:\n    resolution: {integrity: sha512-hFuGKuSBO4V2+AY4KAUvPr3fnNgfgSR1Kf3P1zp80t+zJF0Y37Z1VW2HZIPN90g29NkrlZK5ATIrDul7PCJYZA==}\n\n  core-util-is@1.0.3:\n    resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}\n\n  dbus-next@https://codeload.github.com/dcodeIO/node-dbus-next/tar.gz/0d0cea2ebb0487a051e735f1f488db2115fc16e1:\n    resolution: {tarball: https://codeload.github.com/dcodeIO/node-dbus-next/tar.gz/0d0cea2ebb0487a051e735f1f488db2115fc16e1}\n    version: 0.10.2\n\n  debug@3.2.7:\n    resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}\n    peerDependencies:\n      supports-color: '*'\n    peerDependenciesMeta:\n      supports-color:\n        optional: true\n\n  deep-equal@1.1.2:\n    resolution: {integrity: sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==}\n    engines: {node: '>= 0.4'}\n\n  define-data-property@1.1.4:\n    resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}\n    engines: {node: '>= 0.4'}\n\n  define-properties@1.2.1:\n    resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}\n    engines: {node: '>= 0.4'}\n\n  dunder-proto@1.0.1:\n    resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}\n    engines: {node: '>= 0.4'}\n\n  duplexer@0.1.2:\n    resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==}\n\n  dwaal@0.1.4:\n    resolution: {integrity: sha512-k/r/3bHW4/uqYC0q+yVFh2ZC2sWHVn+/nmGdVOXpj8sPyBCbK/1xJRrUZZ3mbGy080QKkU+Uv4Nz2936zi7Aaw==}\n    engines: {node: '>=6.0.0'}\n\n  emoji-regex@10.6.0:\n    resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==}\n\n  emoji-regex@8.0.0:\n    resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}\n\n  end-of-stream@1.4.5:\n    resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==}\n\n  es-define-property@1.0.1:\n    resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}\n    engines: {node: '>= 0.4'}\n\n  es-errors@1.3.0:\n    resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}\n    engines: {node: '>= 0.4'}\n\n  es-object-atoms@1.1.1:\n    resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}\n    engines: {node: '>= 0.4'}\n\n  escalade@3.2.0:\n    resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}\n    engines: {node: '>=6'}\n\n  escape-string-regexp@1.0.5:\n    resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}\n    engines: {node: '>=0.8.0'}\n\n  event-lite@0.1.3:\n    resolution: {integrity: sha512-8qz9nOz5VeD2z96elrEKD2U433+L3DWdUdDkOINLGOJvx1GsMBbMn0aCeu28y8/e85A6mCigBiFlYMnTBEGlSw==}\n\n  event-stream@3.3.4:\n    resolution: {integrity: sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==}\n\n  eventemitter3@2.0.3:\n    resolution: {integrity: sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg==}\n\n  foibles@0.2.0:\n    resolution: {integrity: sha512-/5Xm2tfFoDRALzwAZ9mQN0cfOY4aGNmespIn2uS47uPqm9ofuoJZKnj9TJMqMLufaK9vCtLwd3jNweYeKr/7yA==}\n\n  from@0.1.7:\n    resolution: {integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==}\n\n  fs-write-stream-atomic@1.0.10:\n    resolution: {integrity: sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==}\n    deprecated: This package is no longer supported.\n\n  function-bind@1.1.2:\n    resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}\n\n  functions-have-names@1.2.3:\n    resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}\n\n  get-caller-file@2.0.5:\n    resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}\n    engines: {node: 6.* || 8.* || >= 10.*}\n\n  get-east-asian-width@1.4.0:\n    resolution: {integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==}\n    engines: {node: '>=18'}\n\n  get-intrinsic@1.3.0:\n    resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}\n    engines: {node: '>= 0.4'}\n\n  get-proto@1.0.1:\n    resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}\n    engines: {node: '>= 0.4'}\n\n  gopd@1.2.0:\n    resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}\n    engines: {node: '>= 0.4'}\n\n  graceful-fs@4.2.11:\n    resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}\n\n  has-flag@3.0.0:\n    resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}\n    engines: {node: '>=4'}\n\n  has-property-descriptors@1.0.2:\n    resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}\n\n  has-symbols@1.1.0:\n    resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}\n    engines: {node: '>= 0.4'}\n\n  has-tostringtag@1.0.2:\n    resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}\n    engines: {node: '>= 0.4'}\n\n  hasown@2.0.2:\n    resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}\n    engines: {node: '>= 0.4'}\n\n  iconv-lite@0.7.2:\n    resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==}\n    engines: {node: '>=0.10.0'}\n\n  ieee754@1.2.1:\n    resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}\n\n  iferr@0.1.5:\n    resolution: {integrity: sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==}\n\n  imurmurhash@0.1.4:\n    resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}\n    engines: {node: '>=0.8.19'}\n\n  inherits@2.0.4:\n    resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}\n\n  int64-buffer@0.1.10:\n    resolution: {integrity: sha512-v7cSY1J8ydZ0GyjUHqF+1bshJ6cnEVLo9EnjB8p+4HDRPZc9N5jjmvUV7NvEsqQOKyH0pmIBFWXVQbiS0+OBbA==}\n\n  is-arguments@1.2.0:\n    resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==}\n    engines: {node: '>= 0.4'}\n\n  is-arrayish@0.3.4:\n    resolution: {integrity: sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==}\n\n  is-date-object@1.1.0:\n    resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==}\n    engines: {node: '>= 0.4'}\n\n  is-fullwidth-code-point@3.0.0:\n    resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}\n    engines: {node: '>=8'}\n\n  is-mergeable-object@1.1.1:\n    resolution: {integrity: sha512-CPduJfuGg8h8vW74WOxHtHmtQutyQBzR+3MjQ6iDHIYdbOnm1YC7jv43SqCoU8OPGTJD4nibmiryA4kmogbGrA==}\n\n  is-regex@1.2.1:\n    resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==}\n    engines: {node: '>= 0.4'}\n\n  isarray@1.0.0:\n    resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}\n\n  jsbi@2.0.5:\n    resolution: {integrity: sha512-TzO/62Hxeb26QMb4IGlI/5X+QLr9Uqp1FPkwp2+KOICW+Q+vSuFj61c8pkT6wAns4WcK56X7CmSHhJeDGWOqxQ==}\n\n  long@4.0.0:\n    resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==}\n\n  map-stream@0.1.0:\n    resolution: {integrity: sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==}\n\n  math-intrinsics@1.1.0:\n    resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}\n    engines: {node: '>= 0.4'}\n\n  mijia-io@https://codeload.github.com/salamwaddah/mijia-io/tar.gz/21b46c3fc4cdb6a4b520f0867d63715de81c5acc:\n    resolution: {tarball: https://codeload.github.com/salamwaddah/mijia-io/tar.gz/21b46c3fc4cdb6a4b520f0867d63715de81c5acc}\n    version: 0.18.6\n    engines: {node: '>=6.6.0'}\n    hasBin: true\n\n  minimist@1.2.8:\n    resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}\n\n  mkdirp@0.5.6:\n    resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==}\n    hasBin: true\n\n  ms@2.1.3:\n    resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}\n\n  msgpack-lite@0.1.26:\n    resolution: {integrity: sha512-SZ2IxeqZ1oRFGo0xFGbvBJWMp3yLIY9rlIJyxy8CGrwZn1f0ZK4r6jV/AM1r0FZMDUkWkglOk/eeKIL9g77Nxw==}\n    hasBin: true\n\n  msgpack-sock@1.1.0:\n    resolution: {integrity: sha512-sFmfd9KlOj+UYYDB6T6RdUFpUFNfwKNYGKhOwDqkdYMurrV5lArul8XpBE4nwO0D+0AM0AqOq7fo4IXmPJGyAw==}\n\n  mute-stream@2.0.0:\n    resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==}\n    engines: {node: ^18.17.0 || >=20.5.0}\n\n  object-is@1.1.6:\n    resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==}\n    engines: {node: '>= 0.4'}\n\n  object-keys@1.1.1:\n    resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}\n    engines: {node: '>= 0.4'}\n\n  once@1.4.0:\n    resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}\n\n  pause-stream@0.0.11:\n    resolution: {integrity: sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==}\n\n  pidlockfile@1.1.1:\n    resolution: {integrity: sha512-ajekn/eYVndTnBFntsBhWebdOn4V1+8FHv3YC6X6LxOcVs78UQNaI9ebU2Q72dzZP/B2h5EPs+ymGKPwuFPafA==}\n\n  process-nextick-args@2.0.1:\n    resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}\n\n  readable-stream@2.3.8:\n    resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}\n\n  regexp.prototype.flags@1.5.4:\n    resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==}\n    engines: {node: '>= 0.4'}\n\n  require-directory@2.1.1:\n    resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}\n    engines: {node: '>=0.10.0'}\n\n  safe-buffer@5.1.2:\n    resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}\n\n  safe-buffer@5.2.1:\n    resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}\n\n  safer-buffer@2.1.2:\n    resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}\n\n  sax@1.4.4:\n    resolution: {integrity: sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==}\n    engines: {node: '>=11.0.0'}\n\n  set-function-length@1.2.2:\n    resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}\n    engines: {node: '>= 0.4'}\n\n  set-function-name@2.0.2:\n    resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==}\n    engines: {node: '>= 0.4'}\n\n  signal-exit@4.1.0:\n    resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}\n    engines: {node: '>=14'}\n\n  simple-swizzle@0.2.4:\n    resolution: {integrity: sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==}\n\n  split@0.3.3:\n    resolution: {integrity: sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==}\n\n  stream-combiner@0.0.4:\n    resolution: {integrity: sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==}\n\n  string-width@4.2.3:\n    resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}\n    engines: {node: '>=8'}\n\n  string-width@7.2.0:\n    resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==}\n    engines: {node: '>=18'}\n\n  string_decoder@1.1.1:\n    resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}\n\n  strip-ansi@6.0.1:\n    resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}\n    engines: {node: '>=8'}\n\n  strip-ansi@7.1.2:\n    resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==}\n    engines: {node: '>=12'}\n\n  supports-color@5.5.0:\n    resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}\n    engines: {node: '>=4'}\n\n  through@2.3.8:\n    resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}\n\n  tinkerhub-discovery@0.3.1:\n    resolution: {integrity: sha512-SAf6yys8Klxw7BeXa3sSRuA9q2EVfnwGc1wX1NGTsa7wnCE72T7csyAvUpqc/Tu39ed1wIGvxcejxZF5ZwaZbw==}\n    engines: {node: '>=6.0.0'}\n\n  unix-socket-leader@0.1.2:\n    resolution: {integrity: sha512-svuttzC+iU31xDHfTh/rurauRCh3HouxBxjCWFmaazoEUTxvF+IrFPqDo4xtMfL+ehBaNGdv4KXsFA7Jv1GvnQ==}\n\n  util-deprecate@1.0.2:\n    resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}\n\n  wrap-ansi@6.2.0:\n    resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}\n    engines: {node: '>=8'}\n\n  wrap-ansi@7.0.0:\n    resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}\n    engines: {node: '>=10'}\n\n  wrap-ansi@9.0.2:\n    resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==}\n    engines: {node: '>=18'}\n\n  wrappy@1.0.2:\n    resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}\n\n  xmihome-devices@1.4.0:\n    resolution: {integrity: sha512-xT/iYkhCdQM1U0fHnp55kE2sIWvpXsd4p5m/mUcsnEg+BdwsY1/A+wTp/FawGkCnA1eut6Y0dXREqPhVzYKgOg==}\n\n  xmihome@1.4.0:\n    resolution: {integrity: sha512-+yLV2puETuz224binzEsR4mAk6a2fWQDaYa655uaBYbv6xEA/opp2H6USHDNCTv/L06cuHQpF2t8MAXycpDF9A==}\n    engines: {node: '>=18.0.0'}\n    hasBin: true\n\n  xml2js@0.6.2:\n    resolution: {integrity: sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==}\n    engines: {node: '>=4.0.0'}\n\n  xmlbuilder@11.0.1:\n    resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==}\n    engines: {node: '>=4.0'}\n\n  y18n@5.0.8:\n    resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}\n    engines: {node: '>=10'}\n\n  yargs-parser@21.1.1:\n    resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}\n    engines: {node: '>=12'}\n\n  yargs-parser@22.0.0:\n    resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==}\n    engines: {node: ^20.19.0 || ^22.12.0 || >=23}\n\n  yargs@17.7.2:\n    resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}\n    engines: {node: '>=12'}\n\n  yargs@18.0.0:\n    resolution: {integrity: sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==}\n    engines: {node: ^20.19.0 || ^22.12.0 || >=23}\n\n  yoctocolors-cjs@2.1.3:\n    resolution: {integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==}\n    engines: {node: '>=18'}\n\nsnapshots:\n\n  '@inquirer/ansi@1.0.2': {}\n\n  '@inquirer/checkbox@4.3.2':\n    dependencies:\n      '@inquirer/ansi': 1.0.2\n      '@inquirer/core': 10.3.2\n      '@inquirer/figures': 1.0.15\n      '@inquirer/type': 3.0.10\n      yoctocolors-cjs: 2.1.3\n\n  '@inquirer/confirm@5.1.21':\n    dependencies:\n      '@inquirer/core': 10.3.2\n      '@inquirer/type': 3.0.10\n\n  '@inquirer/core@10.3.2':\n    dependencies:\n      '@inquirer/ansi': 1.0.2\n      '@inquirer/figures': 1.0.15\n      '@inquirer/type': 3.0.10\n      cli-width: 4.1.0\n      mute-stream: 2.0.0\n      signal-exit: 4.1.0\n      wrap-ansi: 6.2.0\n      yoctocolors-cjs: 2.1.3\n\n  '@inquirer/editor@4.2.23':\n    dependencies:\n      '@inquirer/core': 10.3.2\n      '@inquirer/external-editor': 1.0.3\n      '@inquirer/type': 3.0.10\n\n  '@inquirer/expand@4.0.23':\n    dependencies:\n      '@inquirer/core': 10.3.2\n      '@inquirer/type': 3.0.10\n      yoctocolors-cjs: 2.1.3\n\n  '@inquirer/external-editor@1.0.3':\n    dependencies:\n      chardet: 2.1.1\n      iconv-lite: 0.7.2\n\n  '@inquirer/figures@1.0.15': {}\n\n  '@inquirer/input@4.3.1':\n    dependencies:\n      '@inquirer/core': 10.3.2\n      '@inquirer/type': 3.0.10\n\n  '@inquirer/number@3.0.23':\n    dependencies:\n      '@inquirer/core': 10.3.2\n      '@inquirer/type': 3.0.10\n\n  '@inquirer/password@4.0.23':\n    dependencies:\n      '@inquirer/ansi': 1.0.2\n      '@inquirer/core': 10.3.2\n      '@inquirer/type': 3.0.10\n\n  '@inquirer/prompts@7.10.1':\n    dependencies:\n      '@inquirer/checkbox': 4.3.2\n      '@inquirer/confirm': 5.1.21\n      '@inquirer/editor': 4.2.23\n      '@inquirer/expand': 4.0.23\n      '@inquirer/input': 4.3.1\n      '@inquirer/number': 3.0.23\n      '@inquirer/password': 4.0.23\n      '@inquirer/rawlist': 4.1.11\n      '@inquirer/search': 3.2.2\n      '@inquirer/select': 4.4.2\n\n  '@inquirer/rawlist@4.1.11':\n    dependencies:\n      '@inquirer/core': 10.3.2\n      '@inquirer/type': 3.0.10\n      yoctocolors-cjs: 2.1.3\n\n  '@inquirer/search@3.2.2':\n    dependencies:\n      '@inquirer/core': 10.3.2\n      '@inquirer/figures': 1.0.15\n      '@inquirer/type': 3.0.10\n      yoctocolors-cjs: 2.1.3\n\n  '@inquirer/select@4.4.2':\n    dependencies:\n      '@inquirer/ansi': 1.0.2\n      '@inquirer/core': 10.3.2\n      '@inquirer/figures': 1.0.15\n      '@inquirer/type': 3.0.10\n      yoctocolors-cjs: 2.1.3\n\n  '@inquirer/type@3.0.10': {}\n\n  '@nornagon/put@0.0.8':\n    optional: true\n\n  abstract-things@0.9.0:\n    dependencies:\n      amounts: 0.5.0\n      appdirectory: 0.1.0\n      color-convert: 1.9.3\n      color-string: 1.9.1\n      color-temperature: 0.2.7\n      debug: 3.2.7\n      deep-equal: 1.1.2\n      dwaal: 0.1.4\n      foibles: 0.2.0\n      is-mergeable-object: 1.1.1\n      mkdirp: 0.5.6\n      tinkerhub-discovery: 0.3.1\n    transitivePeerDependencies:\n      - supports-color\n\n  amounts@0.5.0: {}\n\n  ansi-regex@5.0.1: {}\n\n  ansi-regex@6.2.2: {}\n\n  ansi-styles@3.2.1:\n    dependencies:\n      color-convert: 1.9.3\n\n  ansi-styles@4.3.0:\n    dependencies:\n      color-convert: 2.0.1\n\n  ansi-styles@6.2.3: {}\n\n  appdirectory@0.1.0: {}\n\n  call-bind-apply-helpers@1.0.2:\n    dependencies:\n      es-errors: 1.3.0\n      function-bind: 1.1.2\n\n  call-bind@1.0.8:\n    dependencies:\n      call-bind-apply-helpers: 1.0.2\n      es-define-property: 1.0.1\n      get-intrinsic: 1.3.0\n      set-function-length: 1.2.2\n\n  call-bound@1.0.4:\n    dependencies:\n      call-bind-apply-helpers: 1.0.2\n      get-intrinsic: 1.3.0\n\n  chalk@2.4.2:\n    dependencies:\n      ansi-styles: 3.2.1\n      escape-string-regexp: 1.0.5\n      supports-color: 5.5.0\n\n  chardet@2.1.1: {}\n\n  cli-width@4.1.0: {}\n\n  cliui@8.0.1:\n    dependencies:\n      string-width: 4.2.3\n      strip-ansi: 6.0.1\n      wrap-ansi: 7.0.0\n\n  cliui@9.0.1:\n    dependencies:\n      string-width: 7.2.0\n      strip-ansi: 7.1.2\n      wrap-ansi: 9.0.2\n\n  color-convert@1.9.3:\n    dependencies:\n      color-name: 1.1.3\n\n  color-convert@2.0.1:\n    dependencies:\n      color-name: 1.1.4\n\n  color-name@1.1.3: {}\n\n  color-name@1.1.4: {}\n\n  color-string@1.9.1:\n    dependencies:\n      color-name: 1.1.4\n      simple-swizzle: 0.2.4\n\n  color-temperature@0.2.7: {}\n\n  core-util-is@1.0.3: {}\n\n  dbus-next@https://codeload.github.com/dcodeIO/node-dbus-next/tar.gz/0d0cea2ebb0487a051e735f1f488db2115fc16e1:\n    dependencies:\n      '@nornagon/put': 0.0.8\n      event-stream: 3.3.4\n      jsbi: 2.0.5\n      long: 4.0.0\n      safe-buffer: 5.2.1\n      xml2js: 0.6.2\n    optional: true\n\n  debug@3.2.7:\n    dependencies:\n      ms: 2.1.3\n\n  deep-equal@1.1.2:\n    dependencies:\n      is-arguments: 1.2.0\n      is-date-object: 1.1.0\n      is-regex: 1.2.1\n      object-is: 1.1.6\n      object-keys: 1.1.1\n      regexp.prototype.flags: 1.5.4\n\n  define-data-property@1.1.4:\n    dependencies:\n      es-define-property: 1.0.1\n      es-errors: 1.3.0\n      gopd: 1.2.0\n\n  define-properties@1.2.1:\n    dependencies:\n      define-data-property: 1.1.4\n      has-property-descriptors: 1.0.2\n      object-keys: 1.1.1\n\n  dunder-proto@1.0.1:\n    dependencies:\n      call-bind-apply-helpers: 1.0.2\n      es-errors: 1.3.0\n      gopd: 1.2.0\n\n  duplexer@0.1.2:\n    optional: true\n\n  dwaal@0.1.4:\n    dependencies:\n      debug: 3.2.7\n      deep-equal: 1.1.2\n      end-of-stream: 1.4.5\n      fs-write-stream-atomic: 1.0.10\n      msgpack-lite: 0.1.26\n      msgpack-sock: 1.1.0\n      unix-socket-leader: 0.1.2\n    transitivePeerDependencies:\n      - supports-color\n\n  emoji-regex@10.6.0: {}\n\n  emoji-regex@8.0.0: {}\n\n  end-of-stream@1.4.5:\n    dependencies:\n      once: 1.4.0\n\n  es-define-property@1.0.1: {}\n\n  es-errors@1.3.0: {}\n\n  es-object-atoms@1.1.1:\n    dependencies:\n      es-errors: 1.3.0\n\n  escalade@3.2.0: {}\n\n  escape-string-regexp@1.0.5: {}\n\n  event-lite@0.1.3: {}\n\n  event-stream@3.3.4:\n    dependencies:\n      duplexer: 0.1.2\n      from: 0.1.7\n      map-stream: 0.1.0\n      pause-stream: 0.0.11\n      split: 0.3.3\n      stream-combiner: 0.0.4\n      through: 2.3.8\n    optional: true\n\n  eventemitter3@2.0.3: {}\n\n  foibles@0.2.0: {}\n\n  from@0.1.7:\n    optional: true\n\n  fs-write-stream-atomic@1.0.10:\n    dependencies:\n      graceful-fs: 4.2.11\n      iferr: 0.1.5\n      imurmurhash: 0.1.4\n      readable-stream: 2.3.8\n\n  function-bind@1.1.2: {}\n\n  functions-have-names@1.2.3: {}\n\n  get-caller-file@2.0.5: {}\n\n  get-east-asian-width@1.4.0: {}\n\n  get-intrinsic@1.3.0:\n    dependencies:\n      call-bind-apply-helpers: 1.0.2\n      es-define-property: 1.0.1\n      es-errors: 1.3.0\n      es-object-atoms: 1.1.1\n      function-bind: 1.1.2\n      get-proto: 1.0.1\n      gopd: 1.2.0\n      has-symbols: 1.1.0\n      hasown: 2.0.2\n      math-intrinsics: 1.1.0\n\n  get-proto@1.0.1:\n    dependencies:\n      dunder-proto: 1.0.1\n      es-object-atoms: 1.1.1\n\n  gopd@1.2.0: {}\n\n  graceful-fs@4.2.11: {}\n\n  has-flag@3.0.0: {}\n\n  has-property-descriptors@1.0.2:\n    dependencies:\n      es-define-property: 1.0.1\n\n  has-symbols@1.1.0: {}\n\n  has-tostringtag@1.0.2:\n    dependencies:\n      has-symbols: 1.1.0\n\n  hasown@2.0.2:\n    dependencies:\n      function-bind: 1.1.2\n\n  iconv-lite@0.7.2:\n    dependencies:\n      safer-buffer: 2.1.2\n\n  ieee754@1.2.1: {}\n\n  iferr@0.1.5: {}\n\n  imurmurhash@0.1.4: {}\n\n  inherits@2.0.4: {}\n\n  int64-buffer@0.1.10: {}\n\n  is-arguments@1.2.0:\n    dependencies:\n      call-bound: 1.0.4\n      has-tostringtag: 1.0.2\n\n  is-arrayish@0.3.4: {}\n\n  is-date-object@1.1.0:\n    dependencies:\n      call-bound: 1.0.4\n      has-tostringtag: 1.0.2\n\n  is-fullwidth-code-point@3.0.0: {}\n\n  is-mergeable-object@1.1.1: {}\n\n  is-regex@1.2.1:\n    dependencies:\n      call-bound: 1.0.4\n      gopd: 1.2.0\n      has-tostringtag: 1.0.2\n      hasown: 2.0.2\n\n  isarray@1.0.0: {}\n\n  jsbi@2.0.5:\n    optional: true\n\n  long@4.0.0:\n    optional: true\n\n  map-stream@0.1.0:\n    optional: true\n\n  math-intrinsics@1.1.0: {}\n\n  mijia-io@https://codeload.github.com/salamwaddah/mijia-io/tar.gz/21b46c3fc4cdb6a4b520f0867d63715de81c5acc:\n    dependencies:\n      abstract-things: 0.9.0\n      appdirectory: 0.1.0\n      chalk: 2.4.2\n      debug: 3.2.7\n      deep-equal: 1.1.2\n      mkdirp: 0.5.6\n      tinkerhub-discovery: 0.3.1\n      yargs: 17.7.2\n    transitivePeerDependencies:\n      - supports-color\n\n  minimist@1.2.8: {}\n\n  mkdirp@0.5.6:\n    dependencies:\n      minimist: 1.2.8\n\n  ms@2.1.3: {}\n\n  msgpack-lite@0.1.26:\n    dependencies:\n      event-lite: 0.1.3\n      ieee754: 1.2.1\n      int64-buffer: 0.1.10\n      isarray: 1.0.0\n\n  msgpack-sock@1.1.0:\n    dependencies:\n      msgpack-lite: 0.1.26\n\n  mute-stream@2.0.0: {}\n\n  object-is@1.1.6:\n    dependencies:\n      call-bind: 1.0.8\n      define-properties: 1.2.1\n\n  object-keys@1.1.1: {}\n\n  once@1.4.0:\n    dependencies:\n      wrappy: 1.0.2\n\n  pause-stream@0.0.11:\n    dependencies:\n      through: 2.3.8\n    optional: true\n\n  pidlockfile@1.1.1: {}\n\n  process-nextick-args@2.0.1: {}\n\n  readable-stream@2.3.8:\n    dependencies:\n      core-util-is: 1.0.3\n      inherits: 2.0.4\n      isarray: 1.0.0\n      process-nextick-args: 2.0.1\n      safe-buffer: 5.1.2\n      string_decoder: 1.1.1\n      util-deprecate: 1.0.2\n\n  regexp.prototype.flags@1.5.4:\n    dependencies:\n      call-bind: 1.0.8\n      define-properties: 1.2.1\n      es-errors: 1.3.0\n      get-proto: 1.0.1\n      gopd: 1.2.0\n      set-function-name: 2.0.2\n\n  require-directory@2.1.1: {}\n\n  safe-buffer@5.1.2: {}\n\n  safe-buffer@5.2.1:\n    optional: true\n\n  safer-buffer@2.1.2: {}\n\n  sax@1.4.4:\n    optional: true\n\n  set-function-length@1.2.2:\n    dependencies:\n      define-data-property: 1.1.4\n      es-errors: 1.3.0\n      function-bind: 1.1.2\n      get-intrinsic: 1.3.0\n      gopd: 1.2.0\n      has-property-descriptors: 1.0.2\n\n  set-function-name@2.0.2:\n    dependencies:\n      define-data-property: 1.1.4\n      es-errors: 1.3.0\n      functions-have-names: 1.2.3\n      has-property-descriptors: 1.0.2\n\n  signal-exit@4.1.0: {}\n\n  simple-swizzle@0.2.4:\n    dependencies:\n      is-arrayish: 0.3.4\n\n  split@0.3.3:\n    dependencies:\n      through: 2.3.8\n    optional: true\n\n  stream-combiner@0.0.4:\n    dependencies:\n      duplexer: 0.1.2\n    optional: true\n\n  string-width@4.2.3:\n    dependencies:\n      emoji-regex: 8.0.0\n      is-fullwidth-code-point: 3.0.0\n      strip-ansi: 6.0.1\n\n  string-width@7.2.0:\n    dependencies:\n      emoji-regex: 10.6.0\n      get-east-asian-width: 1.4.0\n      strip-ansi: 7.1.2\n\n  string_decoder@1.1.1:\n    dependencies:\n      safe-buffer: 5.1.2\n\n  strip-ansi@6.0.1:\n    dependencies:\n      ansi-regex: 5.0.1\n\n  strip-ansi@7.1.2:\n    dependencies:\n      ansi-regex: 6.2.2\n\n  supports-color@5.5.0:\n    dependencies:\n      has-flag: 3.0.0\n\n  through@2.3.8:\n    optional: true\n\n  tinkerhub-discovery@0.3.1:\n    dependencies:\n      debug: 3.2.7\n      eventemitter3: 2.0.3\n    transitivePeerDependencies:\n      - supports-color\n\n  unix-socket-leader@0.1.2:\n    dependencies:\n      end-of-stream: 1.4.5\n      pidlockfile: 1.1.1\n\n  util-deprecate@1.0.2: {}\n\n  wrap-ansi@6.2.0:\n    dependencies:\n      ansi-styles: 4.3.0\n      string-width: 4.2.3\n      strip-ansi: 6.0.1\n\n  wrap-ansi@7.0.0:\n    dependencies:\n      ansi-styles: 4.3.0\n      string-width: 4.2.3\n      strip-ansi: 6.0.1\n\n  wrap-ansi@9.0.2:\n    dependencies:\n      ansi-styles: 6.2.3\n      string-width: 7.2.0\n      strip-ansi: 7.1.2\n\n  wrappy@1.0.2: {}\n\n  xmihome-devices@1.4.0: {}\n\n  xmihome@1.4.0:\n    dependencies:\n      '@inquirer/prompts': 7.10.1\n      mijia-io: https://codeload.github.com/salamwaddah/mijia-io/tar.gz/21b46c3fc4cdb6a4b520f0867d63715de81c5acc\n      xmihome-devices: 1.4.0\n      yargs: 18.0.0\n    optionalDependencies:\n      dbus-next: https://codeload.github.com/dcodeIO/node-dbus-next/tar.gz/0d0cea2ebb0487a051e735f1f488db2115fc16e1\n    transitivePeerDependencies:\n      - '@types/node'\n      - supports-color\n\n  xml2js@0.6.2:\n    dependencies:\n      sax: 1.4.4\n      xmlbuilder: 11.0.1\n    optional: true\n\n  xmlbuilder@11.0.1:\n    optional: true\n\n  y18n@5.0.8: {}\n\n  yargs-parser@21.1.1: {}\n\n  yargs-parser@22.0.0: {}\n\n  yargs@17.7.2:\n    dependencies:\n      cliui: 8.0.1\n      escalade: 3.2.0\n      get-caller-file: 2.0.5\n      require-directory: 2.1.1\n      string-width: 4.2.3\n      y18n: 5.0.8\n      yargs-parser: 21.1.1\n\n  yargs@18.0.0:\n    dependencies:\n      cliui: 9.0.1\n      escalade: 3.2.0\n      get-caller-file: 2.0.5\n      string-width: 7.2.0\n      y18n: 5.0.8\n      yargs-parser: 22.0.0\n\n  yoctocolors-cjs@2.1.3: {}\n\nArchive v1.1.0: 6 files, 6832 bytes\n\nFiles: package.json (354b), scripts/extract-token.js (1112b), scripts/purifier.js (11798b), scripts/test-local.js (1480b), SKILL.md (2138b), _meta.json (138b)\n\nFile v1.1.0:SKILL.md\n\n---\nname: xiaomi-air-purifier\ndescription: Monitor and control Xiaomi Air Purifier 4 Lite via Mi Cloud. Use when asked to check air quality, humidity, purifier status, turn on/off the air purifier, or change fan mode/level. Supports multi-room setups.\n---\n\n# Xiaomi Air Purifier Control\n\nControl and monitor Xiaomi Air Purifier 4 Lite (`zhimi.airp.rmb1`) via Xiaomi Cloud API. Supports multiple devices and room-based targeting.\n\n## Setup\n\n1. Install dependencies:\n```bash\ncd xiaomi-air-purifier && pnpm install\n```\n\n2. Login to Mi Cloud (OTP will be sent via SMS/Email):\n```bash\npnpm exec xmihome login -u <email/phone> -p <password> -c <country>\n```\nSupported countries: `sg`, `ru`, `us`, `cn`\n\n3. List devices to verify discovery:\n```bash\nnode scripts/purifier.js devices\n```\n\n## Usage\n\nCommands can be targeted by **Room Name**, **Device Name**, or **DID**. If no target is provided, it uses the selected default or the only available device.\n\n```bash\nnode scripts/purifier.js status [room]      # Check status (e.g., status Bedroom)\nnode scripts/purifier.js status-full [room] # Show full status (incl. filter)\nnode scripts/purifier.js on [room]          # Power on\nnode scripts/purifier.js off [room]         # Power off\nnode scripts/purifier.js mode <0-2> [room]  # 0=Auto, 1=Sleep, 2=Favorite\nnode scripts/purifier.js level <0-14> [room]# Fan speed (Favorite mode)\nnode scripts/purifier.js brightness <0-2> [room]\nnode scripts/purifier.js buzzer <on|off> [room]\nnode scripts/purifier.js lock <on|off> [room]\n```\n\n## Quick Reference\n\n| Property | siid | piid | Type | Description |\n|----------|------|------|------|-------------|\n| Power | 2 | 1 | bool | On/Off |\n| Mode | 2 | 4 | int | 0=Auto, 1=Sleep, 2=Favorite |\n| Humidity | 3 | 1 | int | Relative humidity (%) |\n| PM2.5 | 3 | 4 | int | Air quality (μg/m³) |\n| Temperature | 3 | 7 | float | Temperature (°C) |\n| Filter Life | 4 | 1 | int | Filter remaining (%) |\n| Buzzer | 6 | 1 | bool | Notification sound on/off |\n| Child Lock | 8 | 1 | bool | Physical button lock |\n| Fan Level | 9 | 11 | int | 0-14 (Favorite mode) |\n| Brightness | 13 | 2 | int | 0=Off, 1=Dim, 2=On |\n\nFile v1.1.0:_meta.json\n\n{\n  \"ownerId\": \"kn74vgx2pwyf7sazbq47byzxgx80mejy\",\n  \"slug\": \"xiaomi-air-purifier\",\n  \"version\": \"1.1.0\",\n  \"publishedAt\": 1770747323035\n}\n\nFile v1.1.0:package.json\n\n{\n  \"name\": \"xiaomi-air-purifier\",\n  \"version\": \"1.0.0\",\n  \"description\": \"Xiaomi Air Purifier control skill for OpenClaw\",\n  \"main\": \"scripts/purifier.js\",\n  \"scripts\": {\n    \"status\": \"node scripts/purifier.js status\",\n    \"on\": \"node scripts/purifier.js on\",\n    \"off\": \"node scripts/purifier.js off\"\n  },\n  \"dependencies\": {\n    \"xmihome\": \"*\"\n  }\n}\n\nArchive v1.0.2: 5 files, 19052 bytes\n\nFiles: package.json (354b), pnpm-lock.yaml (38257b), scripts/purifier.js (9589b), SKILL.md (2138b), _meta.json (138b)\n\nFile v1.0.2:SKILL.md\n\n---\nname: xiaomi-air-purifier\ndescription: Monitor and control Xiaomi Air Purifier 4 Lite via Mi Cloud. Use when asked to check air quality, humidity, purifier status, turn on/off the air purifier, or change fan mode/level. Supports multi-room setups.\n---\n\n# Xiaomi Air Purifier Control\n\nControl and monitor Xiaomi Air Purifier 4 Lite (`zhimi.airp.rmb1`) via Xiaomi Cloud API. Supports multiple devices and room-based targeting.\n\n## Setup\n\n1. Install dependencies:\n```bash\ncd xiaomi-air-purifier && pnpm install\n```\n\n2. Login to Mi Cloud (OTP will be sent via SMS/Email):\n```bash\npnpm exec xmihome login -u <email/phone> -p <password> -c <country>\n```\nSupported countries: `sg`, `ru`, `us`, `cn`\n\n3. List devices to verify discovery:\n```bash\nnode scripts/purifier.js devices\n```\n\n## Usage\n\nCommands can be targeted by **Room Name**, **Device Name**, or **DID**. If no target is provided, it uses the selected default or the only available device.\n\n```bash\nnode scripts/purifier.js status [room]      # Check status (e.g., status Bedroom)\nnode scripts/purifier.js status-full [room] # Show full status (incl. filter)\nnode scripts/purifier.js on [room]          # Power on\nnode scripts/purifier.js off [room]         # Power off\nnode scripts/purifier.js mode <0-2> [room]  # 0=Auto, 1=Sleep, 2=Favorite\nnode scripts/purifier.js level <0-14> [room]# Fan speed (Favorite mode)\nnode scripts/purifier.js brightness <0-2> [room]\nnode scripts/purifier.js buzzer <on|off> [room]\nnode scripts/purifier.js lock <on|off> [room]\n```\n\n## Quick Reference\n\n| Property | siid | piid | Type | Description |\n|----------|------|------|------|-------------|\n| Power | 2 | 1 | bool | On/Off |\n| Mode | 2 | 4 | int | 0=Auto, 1=Sleep, 2=Favorite |\n| Humidity | 3 | 1 | int | Relative humidity (%) |\n| PM2.5 | 3 | 4 | int | Air quality (μg/m³) |\n| Temperature | 3 | 7 | float | Temperature (°C) |\n| Filter Life | 4 | 1 | int | Filter remaining (%) |\n| Buzzer | 6 | 1 | bool | Notification sound on/off |\n| Child Lock | 8 | 1 | bool | Physical button lock |\n| Fan Level | 9 | 11 | int | 0-14 (Favorite mode) |\n| Brightness | 13 | 2 | int | 0=Off, 1=Dim, 2=On |\n\nFile v1.0.2:_meta.json\n\n{\n  \"ownerId\": \"kn74vgx2pwyf7sazbq47byzxgx80mejy\",\n  \"slug\": \"xiaomi-air-purifier\",\n  \"version\": \"1.0.2\",\n  \"publishedAt\": 1770392439742\n}\n\nFile v1.0.2:package.json\n\n{\n  \"name\": \"xiaomi-air-purifier\",\n  \"version\": \"1.0.0\",\n  \"description\": \"Xiaomi Air Purifier control skill for OpenClaw\",\n  \"main\": \"scripts/purifier.js\",\n  \"scripts\": {\n    \"status\": \"node scripts/purifier.js status\",\n    \"on\": \"node scripts/purifier.js on\",\n    \"off\": \"node scripts/purifier.js off\"\n  },\n  \"dependencies\": {\n    \"xmihome\": \"*\"\n  }\n}\n\nFile v1.0.2:pnpm-lock.yaml\n\nlockfileVersion: '9.0'\n\nsettings:\n  autoInstallPeers: true\n  excludeLinksFromLockfile: false\n\nimporters:\n\n  .:\n    dependencies:\n      xmihome:\n        specifier: '*'\n        version: 1.3.3\n\npackages:\n\n  '@inquirer/ansi@1.0.2':\n    resolution: {integrity: sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==}\n    engines: {node: '>=18'}\n\n  '@inquirer/checkbox@4.3.2':\n    resolution: {integrity: sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/confirm@5.1.21':\n    resolution: {integrity: sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/core@10.3.2':\n    resolution: {integrity: sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/editor@4.2.23':\n    resolution: {integrity: sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/expand@4.0.23':\n    resolution: {integrity: sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/external-editor@1.0.3':\n    resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/figures@1.0.15':\n    resolution: {integrity: sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==}\n    engines: {node: '>=18'}\n\n  '@inquirer/input@4.3.1':\n    resolution: {integrity: sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/number@3.0.23':\n    resolution: {integrity: sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/password@4.0.23':\n    resolution: {integrity: sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/prompts@7.10.1':\n    resolution: {integrity: sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/rawlist@4.1.11':\n    resolution: {integrity: sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/search@3.2.2':\n    resolution: {integrity: sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/select@4.4.2':\n    resolution: {integrity: sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/type@3.0.10':\n    resolution: {integrity: sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@nornagon/put@0.0.8':\n    resolution: {integrity: sha512-ugvXJjwF5ldtUpa7D95kruNJ41yFQDEKyF5CW4TgKJnh+W/zmlBzXXeKTyqIgwMFrkePN2JqOBqcF0M0oOunow==}\n    engines: {node: '>=0.3.0'}\n\n  abstract-things@0.9.0:\n    resolution: {integrity: sha512-2JJU/nfKfdqan+95KZdrBU/xUfFe/V8O5SE54tFx2e1gsL6dgEd2fcHUaVYJ/tkbRVdIdsIYWk4WyfKxC989rQ==}\n    engines: {node: '>=6.6.0'}\n\n  amounts@0.5.0:\n    resolution: {integrity: sha512-ffvMjyj6mmn8aPmfdqPeHvt6KO1bTMx0fUi0O7KUtuhitUsxjk23RV8CaLUurX4zwLKfZ009WPfsIvge/XTzJg==}\n\n  ansi-regex@5.0.1:\n    resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}\n    engines: {node: '>=8'}\n\n  ansi-regex@6.2.2:\n    resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==}\n    engines: {node: '>=12'}\n\n  ansi-styles@3.2.1:\n    resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}\n    engines: {node: '>=4'}\n\n  ansi-styles@4.3.0:\n    resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}\n    engines: {node: '>=8'}\n\n  ansi-styles@6.2.3:\n    resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==}\n    engines: {node: '>=12'}\n\n  appdirectory@0.1.0:\n    resolution: {integrity: sha512-DJ5DV8vZXBbusyiyPlH28xppwS8eAMRuuyMo88xeEcf4bV64lbLtbxRxqixZuJBXsZzLtXFmA13GwVjJc7vdQw==}\n    deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.\n\n  call-bind-apply-helpers@1.0.2:\n    resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}\n    engines: {node: '>= 0.4'}\n\n  call-bind@1.0.8:\n    resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==}\n    engines: {node: '>= 0.4'}\n\n  call-bound@1.0.4:\n    resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==}\n    engines: {node: '>= 0.4'}\n\n  chalk@2.4.2:\n    resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}\n    engines: {node: '>=4'}\n\n  chardet@2.1.1:\n    resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==}\n\n  cli-width@4.1.0:\n    resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==}\n    engines: {node: '>= 12'}\n\n  cliui@8.0.1:\n    resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}\n    engines: {node: '>=12'}\n\n  cliui@9.0.1:\n    resolution: {integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==}\n    engines: {node: '>=20'}\n\n  color-convert@1.9.3:\n    resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}\n\n  color-convert@2.0.1:\n    resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}\n    engines: {node: '>=7.0.0'}\n\n  color-name@1.1.3:\n    resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}\n\n  color-name@1.1.4:\n    resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}\n\n  color-string@1.9.1:\n    resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==}\n\n  color-temperature@0.2.7:\n    resolution: {integrity: sha512-hFuGKuSBO4V2+AY4KAUvPr3fnNgfgSR1Kf3P1zp80t+zJF0Y37Z1VW2HZIPN90g29NkrlZK5ATIrDul7PCJYZA==}\n\n  core-util-is@1.0.3:\n    resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}\n\n  dbus-next@https://codeload.github.com/dcodeIO/node-dbus-next/tar.gz/0d0cea2ebb0487a051e735f1f488db2115fc16e1:\n    resolution: {tarball: https://codeload.github.com/dcodeIO/node-dbus-next/tar.gz/0d0cea2ebb0487a051e735f1f488db2115fc16e1}\n    version: 0.10.2\n\n  debug@3.2.7:\n    resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}\n    peerDependencies:\n      supports-color: '*'\n    peerDependenciesMeta:\n      supports-color:\n        optional: true\n\n  deep-equal@1.1.2:\n    resolution: {integrity: sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==}\n    engines: {node: '>= 0.4'}\n\n  define-data-property@1.1.4:\n    resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}\n    engines: {node: '>= 0.4'}\n\n  define-properties@1.2.1:\n    resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}\n    engines: {node: '>= 0.4'}\n\n  dunder-proto@1.0.1:\n    resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}\n    engines: {node: '>= 0.4'}\n\n  duplexer@0.1.2:\n    resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==}\n\n  dwaal@0.1.4:\n    resolution: {integrity: sha512-k/r/3bHW4/uqYC0q+yVFh2ZC2sWHVn+/nmGdVOXpj8sPyBCbK/1xJRrUZZ3mbGy080QKkU+Uv4Nz2936zi7Aaw==}\n    engines: {node: '>=6.0.0'}\n\n  emoji-regex@10.6.0:\n    resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==}\n\n  emoji-regex@8.0.0:\n    resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}\n\n  end-of-stream@1.4.5:\n    resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==}\n\n  es-define-property@1.0.1:\n    resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}\n    engines: {node: '>= 0.4'}\n\n  es-errors@1.3.0:\n    resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}\n    engines: {node: '>= 0.4'}\n\n  es-object-atoms@1.1.1:\n    resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}\n    engines: {node: '>= 0.4'}\n\n  escalade@3.2.0:\n    resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}\n    engines: {node: '>=6'}\n\n  escape-string-regexp@1.0.5:\n    resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}\n    engines: {node: '>=0.8.0'}\n\n  event-lite@0.1.3:\n    resolution: {integrity: sha512-8qz9nOz5VeD2z96elrEKD2U433+L3DWdUdDkOINLGOJvx1GsMBbMn0aCeu28y8/e85A6mCigBiFlYMnTBEGlSw==}\n\n  event-stream@3.3.4:\n    resolution: {integrity: sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==}\n\n  eventemitter3@2.0.3:\n    resolution: {integrity: sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg==}\n\n  foibles@0.2.0:\n    resolution: {integrity: sha512-/5Xm2tfFoDRALzwAZ9mQN0cfOY4aGNmespIn2uS47uPqm9ofuoJZKnj9TJMqMLufaK9vCtLwd3jNweYeKr/7yA==}\n\n  from@0.1.7:\n    resolution: {integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==}\n\n  fs-write-stream-atomic@1.0.10:\n    resolution: {integrity: sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==}\n    deprecated: This package is no longer supported.\n\n  function-bind@1.1.2:\n    resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}\n\n  functions-have-names@1.2.3:\n    resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}\n\n  get-caller-file@2.0.5:\n    resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}\n    engines: {node: 6.* || 8.* || >= 10.*}\n\n  get-east-asian-width@1.4.0:\n    resolution: {integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==}\n    engines: {node: '>=18'}\n\n  get-intrinsic@1.3.0:\n    resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}\n    engines: {node: '>= 0.4'}\n\n  get-proto@1.0.1:\n    resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}\n    engines: {node: '>= 0.4'}\n\n  gopd@1.2.0:\n    resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}\n    engines: {node: '>= 0.4'}\n\n  graceful-fs@4.2.11:\n    resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}\n\n  has-flag@3.0.0:\n    resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}\n    engines: {node: '>=4'}\n\n  has-property-descriptors@1.0.2:\n    resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}\n\n  has-symbols@1.1.0:\n    resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}\n    engines: {node: '>= 0.4'}\n\n  has-tostringtag@1.0.2:\n    resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}\n    engines: {node: '>= 0.4'}\n\n  hasown@2.0.2:\n    resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}\n    engines: {node: '>= 0.4'}\n\n  iconv-lite@0.7.2:\n    resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==}\n    engines: {node: '>=0.10.0'}\n\n  ieee754@1.2.1:\n    resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}\n\n  iferr@0.1.5:\n    resolution: {integrity: sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==}\n\n  imurmurhash@0.1.4:\n    resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}\n    engines: {node: '>=0.8.19'}\n\n  inherits@2.0.4:\n    resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}\n\n  int64-buffer@0.1.10:\n    resolution: {integrity: sha512-v7cSY1J8ydZ0GyjUHqF+1bshJ6cnEVLo9EnjB8p+4HDRPZc9N5jjmvUV7NvEsqQOKyH0pmIBFWXVQbiS0+OBbA==}\n\n  is-arguments@1.2.0:\n    resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==}\n    engines: {node: '>= 0.4'}\n\n  is-arrayish@0.3.4:\n    resolution: {integrity: sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==}\n\n  is-date-object@1.1.0:\n    resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==}\n    engines: {node: '>= 0.4'}\n\n  is-fullwidth-code-point@3.0.0:\n    resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}\n    engines: {node: '>=8'}\n\n  is-mergeable-object@1.1.1:\n    resolution: {integrity: sha512-CPduJfuGg8h8vW74WOxHtHmtQutyQBzR+3MjQ6iDHIYdbOnm1YC7jv43SqCoU8OPGTJD4nibmiryA4kmogbGrA==}\n\n  is-regex@1.2.1:\n    resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==}\n    engines: {node: '>= 0.4'}\n\n  isarray@1.0.0:\n    resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}\n\n  jsbi@2.0.5:\n    resolution: {integrity: sha512-TzO/62Hxeb26QMb4IGlI/5X+QLr9Uqp1FPkwp2+KOICW+Q+vSuFj61c8pkT6wAns4WcK56X7CmSHhJeDGWOqxQ==}\n\n  long@4.0.0:\n    resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==}\n\n  map-stream@0.1.0:\n    resolution: {integrity: sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==}\n\n  math-intrinsics@1.1.0:\n    resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}\n    engines: {node: '>= 0.4'}\n\n  mijia-io@https://codeload.github.com/salamwaddah/mijia-io/tar.gz/21b46c3fc4cdb6a4b520f0867d63715de81c5acc:\n    resolution: {tarball: https://codeload.github.com/salamwaddah/mijia-io/tar.gz/21b46c3fc4cdb6a4b520f0867d63715de81c5acc}\n    version: 0.18.6\n    engines: {node: '>=6.6.0'}\n    hasBin: true\n\n  minimist@1.2.8:\n    resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}\n\n  mkdirp@0.5.6:\n    resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==}\n    hasBin: true\n\n  ms@2.1.3:\n    resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}\n\n  msgpack-lite@0.1.26:\n    resolution: {integrity: sha512-SZ2IxeqZ1oRFGo0xFGbvBJWMp3yLIY9rlIJyxy8CGrwZn1f0ZK4r6jV/AM1r0FZMDUkWkglOk/eeKIL9g77Nxw==}\n    hasBin: true\n\n  msgpack-sock@1.1.0:\n    resolution: {integrity: sha512-sFmfd9KlOj+UYYDB6T6RdUFpUFNfwKNYGKhOwDqkdYMurrV5lArul8XpBE4nwO0D+0AM0AqOq7fo4IXmPJGyAw==}\n\n  mute-stream@2.0.0:\n    resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==}\n    engines: {node: ^18.17.0 || >=20.5.0}\n\n  object-is@1.1.6:\n    resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==}\n    engines: {node: '>= 0.4'}\n\n  object-keys@1.1.1:\n    resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}\n    engines: {node: '>= 0.4'}\n\n  once@1.4.0:\n    resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}\n\n  pause-stream@0.0.11:\n    resolution: {integrity: sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==}\n\n  pidlockfile@1.1.1:\n    resolution: {integrity: sha512-ajekn/eYVndTnBFntsBhWebdOn4V1+8FHv3YC6X6LxOcVs78UQNaI9ebU2Q72dzZP/B2h5EPs+ymGKPwuFPafA==}\n\n  process-nextick-args@2.0.1:\n    resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}\n\n  readable-stream@2.3.8:\n    resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}\n\n  regexp.prototype.flags@1.5.4:\n    resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==}\n    engines: {node: '>= 0.4'}\n\n  require-directory@2.1.1:\n    resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}\n    engines: {node: '>=0.10.0'}\n\n  safe-buffer@5.1.2:\n    resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}\n\n  safe-buffer@5.2.1:\n    resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}\n\n  safer-buffer@2.1.2:\n    resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}\n\n  sax@1.4.4:\n    resolution: {integrity: sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==}\n    engines: {node: '>=11.0.0'}\n\n  set-function-length@1.2.2:\n    resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}\n    engines: {node: '>= 0.4'}\n\n  set-function-name@2.0.2:\n    resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==}\n    engines: {node: '>= 0.4'}\n\n  signal-exit@4.1.0:\n    resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}\n    engines: {node: '>=14'}\n\n  simple-swizzle@0.2.4:\n    resolution: {integrity: sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==}\n\n  split@0.3.3:\n    resolution: {integrity: sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==}\n\n  stream-combiner@0.0.4:\n    resolution: {integrity: sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==}\n\n  string-width@4.2.3:\n    resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}\n    engines: {node: '>=8'}\n\n  string-width@7.2.0:\n    resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==}\n    engines: {node: '>=18'}\n\n  string_decoder@1.1.1:\n    resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}\n\n  strip-ansi@6.0.1:\n    resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}\n    engines: {node: '>=8'}\n\n  strip-ansi@7.1.2:\n    resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==}\n    engines: {node: '>=12'}\n\n  supports-color@5.5.0:\n    resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}\n    engines: {node: '>=4'}\n\n  through@2.3.8:\n    resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}\n\n  tinkerhub-discovery@0.3.1:\n    resolution: {integrity: sha512-SAf6yys8Klxw7BeXa3sSRuA9q2EVfnwGc1wX1NGTsa7wnCE72T7csyAvUpqc/Tu39ed1wIGvxcejxZF5ZwaZbw==}\n    engines: {node: '>=6.0.0'}\n\n  unix-socket-leader@0.1.2:\n    resolution: {integrity: sha512-svuttzC+iU31xDHfTh/rurauRCh3HouxBxjCWFmaazoEUTxvF+IrFPqDo4xtMfL+ehBaNGdv4KXsFA7Jv1GvnQ==}\n\n  util-deprecate@1.0.2:\n    resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}\n\n  wrap-ansi@6.2.0:\n    resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}\n    engines: {node: '>=8'}\n\n  wrap-ansi@7.0.0:\n    resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}\n    engines: {node: '>=10'}\n\n  wrap-ansi@9.0.2:\n    resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==}\n    engines: {node: '>=18'}\n\n  wrappy@1.0.2:\n    resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}\n\n  xmihome-devices@1.3.3:\n    resolution: {integrity: sha512-6B3sQs11aQU8xKUXmbYIrL61qMxV7VGr0WSXIJKOtNDEYXT2v7pZBhoK1ajoNOfTDAFrjHYu3n0j7doOXC1vbg==}\n\n  xmihome@1.3.3:\n    resolution: {integrity: sha512-NY42l2TAJbIdCMvZVnf+mhc+Qo7QAEJ5pCwp503h5BSIHz4q5YwTZnnHanH08UFOVVh3AAEVfTDsYQGSSYI1GA==}\n    engines: {node: '>=18.0.0'}\n    hasBin: true\n\n  xml2js@0.6.2:\n    resolution: {integrity: sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==}\n    engines: {node: '>=4.0.0'}\n\n  xmlbuilder@11.0.1:\n    resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==}\n    engines: {node: '>=4.0'}\n\n  y18n@5.0.8:\n    resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}\n    engines: {node: '>=10'}\n\n  yargs-parser@21.1.1:\n    resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}\n    engines: {node: '>=12'}\n\n  yargs-parser@22.0.0:\n    resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==}\n    engines: {node: ^20.19.0 || ^22.12.0 || >=23}\n\n  yargs@17.7.2:\n    resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}\n    engines: {node: '>=12'}\n\n  yargs@18.0.0:\n    resolution: {integrity: sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==}\n    engines: {node: ^20.19.0 || ^22.12.0 || >=23}\n\n  yoctocolors-cjs@2.1.3:\n    resolution: {integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==}\n    engines: {node: '>=18'}\n\nsnapshots:\n\n  '@inquirer/ansi@1.0.2': {}\n\n  '@inquirer/checkbox@4.3.2':\n    dependencies:\n      '@inquirer/ansi': 1.0.2\n      '@inquirer/core': 10.3.2\n      '@inquirer/figures': 1.0.15\n      '@inquirer/type': 3.0.10\n      yoctocolors-cjs: 2.1.3\n\n  '@inquirer/confirm@5.1.21':\n    dependencies:\n      '@inquirer/core': 10.3.2\n      '@inquirer/type': 3.0.10\n\n  '@inquirer/core@10.3.2':\n    dependencies:\n      '@inquirer/ansi': 1.0.2\n      '@inquirer/figures': 1.0.15\n      '@inquirer/type': 3.0.10\n      cli-width: 4.1.0\n      mute-stream: 2.0.0\n      signal-exit: 4.1.0\n      wrap-ansi: 6.2.0\n      yoctocolors-cjs: 2.1.3\n\n  '@inquirer/editor@4.2.23':\n    dependencies:\n      '@inquirer/core': 10.3.2\n      '@inquirer/external-editor': 1.0.3\n      '@inquirer/type': 3.0.10\n\n  '@inquirer/expand@4.0.23':\n    dependencies:\n      '@inquirer/core': 10.3.2\n      '@inquirer/type': 3.0.10\n      yoctocolors-cjs: 2.1.3\n\n  '@inquirer/external-editor@1.0.3':\n    dependencies:\n      chardet: 2.1.1\n      iconv-lite: 0.7.2\n\n  '@inquirer/figures@1.0.15': {}\n\n  '@inquirer/input@4.3.1':\n    dependencies:\n      '@inquirer/core': 10.3.2\n      '@inquirer/type': 3.0.10\n\n  '@inquirer/number@3.0.23':\n    dependencies:\n      '@inquirer/core': 10.3.2\n      '@inquirer/type': 3.0.10\n\n  '@inquirer/password@4.0.23':\n    dependencies:\n      '@inquirer/ansi': 1.0.2\n      '@inquirer/core': 10.3.2\n      '@inquirer/type': 3.0.10\n\n  '@inquirer/prompts@7.10.1':\n    dependencies:\n      '@inquirer/checkbox': 4.3.2\n      '@inquirer/confirm': 5.1.21\n      '@inquirer/editor': 4.2.23\n      '@inquirer/expand': 4.0.23\n      '@inquirer/input': 4.3.1\n      '@inquirer/number': 3.0.23\n      '@inquirer/password': 4.0.23\n      '@inquirer/rawlist': 4.1.11\n      '@inquirer/search': 3.2.2\n      '@inquirer/select': 4.4.2\n\n  '@inquirer/rawlist@4.1.11':\n    dependencies:\n      '@inquirer/core': 10.3.2\n      '@inquirer/type': 3.0.10\n      yoctocolors-cjs: 2.1.3\n\n  '@inquirer/search@3.2.2':\n    dependencies:\n      '@inquirer/core': 10.3.2\n      '@inquirer/figures': 1.0.15\n      '@inquirer/type': 3.0.10\n      yoctocolors-cjs: 2.1.3\n\n  '@inquirer/select@4.4.2':\n    dependencies:\n      '@inquirer/ansi': 1.0.2\n      '@inquirer/core': 10.3.2\n      '@inquirer/figures': 1.0.15\n      '@inquirer/type': 3.0.10\n      yoctocolors-cjs: 2.1.3\n\n  '@inquirer/type@3.0.10': {}\n\n  '@nornagon/put@0.0.8':\n    optional: true\n\n  abstract-things@0.9.0:\n    dependencies:\n      amounts: 0.5.0\n      appdirectory: 0.1.0\n      color-convert: 1.9.3\n      color-string: 1.9.1\n      color-temperature: 0.2.7\n      debug: 3.2.7\n      deep-equal: 1.1.2\n      dwaal: 0.1.4\n      foibles: 0.2.0\n      is-mergeable-object: 1.1.1\n      mkdirp: 0.5.6\n      tinkerhub-discovery: 0.3.1\n    transitivePeerDependencies:\n      - supports-color\n\n  amounts@0.5.0: {}\n\n  ansi-regex@5.0.1: {}\n\n  ansi-regex@6.2.2: {}\n\n  ansi-styles@3.2.1:\n    dependencies:\n      color-convert: 1.9.3\n\n  ansi-styles@4.3.0:\n    dependencies:\n      color-convert: 2.0.1\n\n  ansi-styles@6.2.3: {}\n\n  appdirectory@0.1.0: {}\n\n  call-bind-apply-helpers@1.0.2:\n    dependencies:\n      es-errors: 1.3.0\n      function-bind: 1.1.2\n\n  call-bind@1.0.8:\n    dependencies:\n      call-bind-apply-helpers: 1.0.2\n      es-define-property: 1.0.1\n      get-intrinsic: 1.3.0\n      set-function-length: 1.2.2\n\n  call-bound@1.0.4:\n    dependencies:\n      call-bind-apply-helpers: 1.0.2\n      get-intrinsic: 1.3.0\n\n  chalk@2.4.2:\n    dependencies:\n      ansi-styles: 3.2.1\n      escape-string-regexp: 1.0.5\n      supports-color: 5.5.0\n\n  chardet@2.1.1: {}\n\n  cli-width@4.1.0: {}\n\n  cliui@8.0.1:\n    dependencies:\n      string-width: 4.2.3\n      strip-ansi: 6.0.1\n      wrap-ansi: 7.0.0\n\n  cliui@9.0.1:\n    dependencies:\n      string-width: 7.2.0\n      strip-ansi: 7.1.2\n      wrap-ansi: 9.0.2\n\n  color-convert@1.9.3:\n    dependencies:\n      color-name: 1.1.3\n\n  color-convert@2.0.1:\n    dependencies:\n      color-name: 1.1.4\n\n  color-name@1.1.3: {}\n\n  color-name@1.1.4: {}\n\n  color-string@1.9.1:\n    dependencies:\n      color-name: 1.1.4\n      simple-swizzle: 0.2.4\n\n  color-temperature@0.2.7: {}\n\n  core-util-is@1.0.3: {}\n\n  dbus-next@https://codeload.github.com/dcodeIO/node-dbus-next/tar.gz/0d0cea2ebb0487a051e735f1f488db2115fc16e1:\n    dependencies:\n      '@nornagon/put': 0.0.8\n      event-stream: 3.3.4\n      jsbi: 2.0.5\n      long: 4.0.0\n      safe-buffer: 5.2.1\n      xml2js: 0.6.2\n    optional: true\n\n  debug@3.2.7:\n    dependencies:\n      ms: 2.1.3\n\n  deep-equal@1.1.2:\n    dependencies:\n      is-arguments: 1.2.0\n      is-date-object: 1.1.0\n      is-regex: 1.2.1\n      object-is: 1.1.6\n      object-keys: 1.1.1\n      regexp.prototype.flags: 1.5.4\n\n  define-data-property@1.1.4:\n    dependencies:\n      es-define-property: 1.0.1\n      es-errors: 1.3.0\n      gopd: 1.2.0\n\n  define-properties@1.2.1:\n    dependencies:\n      define-data-property: 1.1.4\n      has-property-descriptors: 1.0.2\n      object-keys: 1.1.1\n\n  dunder-proto@1.0.1:\n    dependencies:\n      call-bind-apply-helpers: 1.0.2\n      es-errors: 1.3.0\n      gopd: 1.2.0\n\n  duplexer@0.1.2:\n    optional: true\n\n  dwaal@0.1.4:\n    dependencies:\n      debug: 3.2.7\n      deep-equal: 1.1.2\n      end-of-stream: 1.4.5\n      fs-write-stream-atomic: 1.0.10\n      msgpack-lite: 0.1.26\n      msgpack-sock: 1.1.0\n      unix-socket-leader: 0.1.2\n    transitivePeerDependencies:\n      - supports-color\n\n  emoji-regex@10.6.0: {}\n\n  emoji-regex@8.0.0: {}\n\n  end-of-stream@1.4.5:\n    dependencies:\n      once: 1.4.0\n\n  es-define-property@1.0.1: {}\n\n  es-errors@1.3.0: {}\n\n  es-object-atoms@1.1.1:\n    dependencies:\n      es-errors: 1.3.0\n\n  escalade@3.2.0: {}\n\n  escape-string-regexp@1.0.5: {}\n\n  event-lite@0.1.3: {}\n\n  event-stream@3.3.4:\n    dependencies:\n      duplexer: 0.1.2\n      from: 0.1.7\n      map-stream: 0.1.0\n      pause-stream: 0.0.11\n      split: 0.3.3\n      stream-combiner: 0.0.4\n      through: 2.3.8\n    optional: true\n\n  eventemitter3@2.0.3: {}\n\n  foibles@0.2.0: {}\n\n  from@0.1.7:\n    optional: true\n\n  fs-write-stream-atomic@1.0.10:\n    dependencies:\n      graceful-fs: 4.2.11\n      iferr: 0.1.5\n      imurmurhash: 0.1.4\n      readable-stream: 2.3.8\n\n  function-bind@1.1.2: {}\n\n  functions-have-names@1.2.3: {}\n\n  get-caller-file@2.0.5: {}\n\n  get-east-asian-width@1.4.0: {}\n\n  get-intrinsic@1.3.0:\n    dependencies:\n      call-bind-apply-helpers: 1.0.2\n      es-define-property: 1.0.1\n      es-errors: 1.3.0\n      es-object-atoms: 1.1.1\n      function-bind: 1.1.2\n      get-proto: 1.0.1\n      gopd: 1.2.0\n      has-symbols: 1.1.0\n      hasown: 2.0.2\n      math-intrinsics: 1.1.0\n\n  get-proto@1.0.1:\n    dependencies:\n      dunder-proto: 1.0.1\n      es-object-atoms: 1.1.1\n\n  gopd@1.2.0: {}\n\n  graceful-fs@4.2.11: {}\n\n  has-flag@3.0.0: {}\n\n  has-property-descriptors@1.0.2:\n    dependencies:\n      es-define-property: 1.0.1\n\n  has-symbols@1.1.0: {}\n\n  has-tostringtag@1.0.2:\n    dependencies:\n      has-symbols: 1.1.0\n\n  hasown@2.0.2:\n    dependencies:\n      function-bind: 1.1.2\n\n  iconv-lite@0.7.2:\n    dependencies:\n      safer-buffer: 2.1.2\n\n  ieee754@1.2.1: {}\n\n  iferr@0.1.5: {}\n\n  imurmurhash@0.1.4: {}\n\n  inherits@2.0.4: {}\n\n  int64-buffer@0.1.10: {}\n\n  is-arguments@1.2.0:\n    dependencies:\n      call-bound: 1.0.4\n      has-tostringtag: 1.0.2\n\n  is-arrayish@0.3.4: {}\n\n  is-date-object@1.1.0:\n    dependencies:\n      call-bound: 1.0.4\n      has-tostringtag: 1.0.2\n\n  is-fullwidth-code-point@3.0.0: {}\n\n  is-mergeable-object@1.1.1: {}\n\n  is-regex@1.2.1:\n    dependencies:\n      call-bound: 1.0.4\n      gopd: 1.2.0\n      has-tostringtag: 1.0.2\n      hasown: 2.0.2\n\n  isarray@1.0.0: {}\n\n  jsbi@2.0.5:\n    optional: true\n\n  long@4.0.0:\n    optional: true\n\n  map-stream@0.1.0:\n    optional: true\n\n  math-intrinsics@1.1.0: {}\n\n  mijia-io@https://codeload.github.com/salamwaddah/mijia-io/tar.gz/21b46c3fc4cdb6a4b520f0867d63715de81c5acc:\n    dependencies:\n      abstract-things: 0.9.0\n      appdirectory: 0.1.0\n      chalk: 2.4.2\n      debug: 3.2.7\n      deep-equal: 1.1.2\n      mkdirp: 0.5.6\n      tinkerhub-discovery: 0.3.1\n      yargs: 17.7.2\n    transitivePeerDependencies:\n      - supports-color\n\n  minimist@1.2.8: {}\n\n  mkdirp@0.5.6:\n    dependencies:\n      minimist: 1.2.8\n\n  ms@2.1.3: {}\n\n  msgpack-lite@0.1.26:\n    dependencies:\n      event-lite: 0.1.3\n      ieee754: 1.2.1\n      int64-buffer: 0.1.10\n      isarray: 1.0.0\n\n  msgpack-sock@1.1.0:\n    dependencies:\n      msgpack-lite: 0.1.26\n\n  mute-stream@2.0.0: {}\n\n  object-is@1.1.6:\n    dependencies:\n      call-bind: 1.0.8\n      define-properties: 1.2.1\n\n  object-keys@1.1.1: {}\n\n  once@1.4.0:\n    dependencies:\n      wrappy: 1.0.2\n\n  pause-stream@0.0.11:\n    dependencies:\n      through: 2.3.8\n    optional: true\n\n  pidlockfile@1.1.1: {}\n\n  process-nextick-args@2.0.1: {}\n\n  readable-stream@2.3.8:\n    dependencies:\n      core-util-is: 1.0.3\n      inherits: 2.0.4\n      isarray: 1.0.0\n      process-nextick-args: 2.0.1\n      safe-buffer: 5.1.2\n      string_decoder: 1.1.1\n      util-deprecate: 1.0.2\n\n  regexp.prototype.flags@1.5.4:\n    dependencies:\n      call-bind: 1.0.8\n      define-properties: 1.2.1\n      es-errors: 1.3.0\n      get-proto: 1.0.1\n      gopd: 1.2.0\n      set-function-name: 2.0.2\n\n  require-directory@2.1.1: {}\n\n  safe-buffer@5.1.2: {}\n\n  safe-buffer@5.2.1:\n    optional: true\n\n  safer-buffer@2.1.2: {}\n\n  sax@1.4.4:\n    optional: true\n\n  set-function-length@1.2.2:\n    dependencies:\n      define-data-property: 1.1.4\n      es-errors: 1.3.0\n      function-bind: 1.1.2\n      get-intrinsic: 1.3.0\n      gopd: 1.2.0\n      has-property-descriptors: 1.0.2\n\n  set-function-name@2.0.2:\n    dependencies:\n      define-data-property: 1.1.4\n      es-errors: 1.3.0\n      functions-have-names: 1.2.3\n      has-property-descriptors: 1.0.2\n\n  signal-exit@4.1.0: {}\n\n  simple-swizzle@0.2.4:\n    dependencies:\n      is-arrayish: 0.3.4\n\n  split@0.3.3:\n    dependencies:\n      through: 2.3.8\n    optional: true\n\n  stream-combiner@0.0.4:\n    dependencies:\n      duplexer: 0.1.2\n    optional: true\n\n  string-width@4.2.3:\n    dependencies:\n      emoji-regex: 8.0.0\n      is-fullwidth-code-point: 3.0.0\n      strip-ansi: 6.0.1\n\n  string-width@7.2.0:\n    dependencies:\n      emoji-regex: 10.6.0\n      get-east-asian-width: 1.4.0\n      strip-ansi: 7.1.2\n\n  string_decoder@1.1.1:\n    dependencies:\n      safe-buffer: 5.1.2\n\n  strip-ansi@6.0.1:\n    dependencies:\n      ansi-regex: 5.0.1\n\n  strip-ansi@7.1.2:\n    dependencies:\n      ansi-regex: 6.2.2\n\n  supports-color@5.5.0:\n    dependencies:\n      has-flag: 3.0.0\n\n  through@2.3.8:\n    optional: true\n\n  tinkerhub-discovery@0.3.1:\n    dependencies:\n      debug: 3.2.7\n      eventemitter3: 2.0.3\n    transitivePeerDependencies:\n      - supports-color\n\n  unix-socket-leader@0.1.2:\n    dependencies:\n      end-of-stream: 1.4.5\n      pidlockfile: 1.1.1\n\n  util-deprecate@1.0.2: {}\n\n  wrap-ansi@6.2.0:\n    dependencies:\n      ansi-styles: 4.3.0\n      string-width: 4.2.3\n      strip-ansi: 6.0.1\n\n  wrap-ansi@7.0.0:\n    dependencies:\n      ansi-styles: 4.3.0\n      string-width: 4.2.3\n      strip-ansi: 6.0.1\n\n  wrap-ansi@9.0.2:\n    dependencies:\n      ansi-styles: 6.2.3\n      string-width: 7.2.0\n      strip-ansi: 7.1.2\n\n  wrappy@1.0.2: {}\n\n  xmihome-devices@1.3.3: {}\n\n  xmihome@1.3.3:\n    dependencies:\n      '@inquirer/prompts': 7.10.1\n      mijia-io: https://codeload.github.com/salamwaddah/mijia-io/tar.gz/21b46c3fc4cdb6a4b520f0867d63715de81c5acc\n      xmihome-devices: 1.3.3\n      yargs: 18.0.0\n    optionalDependencies:\n      dbus-next: https://codeload.github.com/dcodeIO/node-dbus-next/tar.gz/0d0cea2ebb0487a051e735f1f488db2115fc16e1\n    transitivePeerDependencies:\n      - '@types/node'\n      - supports-color\n\n  xml2js@0.6.2:\n    dependencies:\n      sax: 1.4.4\n      xmlbuilder: 11.0.1\n    optional: true\n\n  xmlbuilder@11.0.1:\n    optional: true\n\n  y18n@5.0.8: {}\n\n  yargs-parser@21.1.1: {}\n\n  yargs-parser@22.0.0: {}\n\n  yargs@17.7.2:\n    dependencies:\n      cliui: 8.0.1\n      escalade: 3.2.0\n      get-caller-file: 2.0.5\n      require-directory: 2.1.1\n      string-width: 4.2.3\n      y18n: 5.0.8\n      yargs-parser: 21.1.1\n\n  yargs@18.0.0:\n    dependencies:\n      cliui: 9.0.1\n      escalade: 3.2.0\n      get-caller-file: 2.0.5\n      string-width: 7.2.0\n      y18n: 5.0.8\n      yargs-parser: 22.0.0\n\n  yoctocolors-cjs@2.1.3: {}\n\nArchive v1.0.1: 6 files, 19233 bytes\n\nFiles: config.json (70b), package.json (354b), pnpm-lock.yaml (38257b), scripts/purifier.js (9589b), SKILL.md (2138b), _meta.json (138b)\n\nFile v1.0.1:SKILL.md\n\n---\nname: xiaomi-air-purifier\ndescription: Monitor and control Xiaomi Air Purifier 4 Lite via Mi Cloud. Use when asked to check air quality, humidity, purifier status, turn on/off the air purifier, or change fan mode/level. Supports multi-room setups.\n---\n\n# Xiaomi Air Purifier Control\n\nControl and monitor Xiaomi Air Purifier 4 Lite (`zhimi.airp.rmb1`) via Xiaomi Cloud API. Supports multiple devices and room-based targeting.\n\n## Setup\n\n1. Install dependencies:\n```bash\ncd xiaomi-air-purifier && pnpm install\n```\n\n2. Login to Mi Cloud (OTP will be sent via SMS/Email):\n```bash\npnpm exec xmihome login -u <email/phone> -p <password> -c <country>\n```\nSupported countries: `sg`, `ru`, `us`, `cn`\n\n3. List devices to verify discovery:\n```bash\nnode scripts/purifier.js devices\n```\n\n## Usage\n\nCommands can be targeted by **Room Name**, **Device Name**, or **DID**. If no target is provided, it uses the selected default or the only available device.\n\n```bash\nnode scripts/purifier.js status [room]      # Check status (e.g., status Bedroom)\nnode scripts/purifier.js status-full [room] # Show full status (incl. filter)\nnode scripts/purifier.js on [room]          # Power on\nnode scripts/purifier.js off [room]         # Power off\nnode scripts/purifier.js mode <0-2> [room]  # 0=Auto, 1=Sleep, 2=Favorite\nnode scripts/purifier.js level <0-14> [room]# Fan speed (Favorite mode)\nnode scripts/purifier.js brightness <0-2> [room]\nnode scripts/purifier.js buzzer <on|off> [room]\nnode scripts/purifier.js lock <on|off> [room]\n```\n\n## Quick Reference\n\n| Property | siid | piid | Type | Description |\n|----------|------|------|------|-------------|\n| Power | 2 | 1 | bool | On/Off |\n| Mode | 2 | 4 | int | 0=Auto, 1=Sleep, 2=Favorite |\n| Humidity | 3 | 1 | int | Relative humidity (%) |\n| PM2.5 | 3 | 4 | int | Air quality (μg/m³) |\n| Temperature | 3 | 7 | float | Temperature (°C) |\n| Filter Life | 4 | 1 | int | Filter remaining (%) |\n| Buzzer | 6 | 1 | bool | Notification sound on/off |\n| Child Lock | 8 | 1 | bool | Physical button lock |\n| Fan Level | 9 | 11 | int | 0-14 (Favorite mode) |\n| Brightness | 13 | 2 | int | 0=Off, 1=Dim, 2=On |\n\nFile v1.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn74vgx2pwyf7sazbq47byzxgx80mejy\",\n  \"slug\": \"xiaomi-air-purifier\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1770391182605\n}\n\nFile v1.0.1:config.json\n\n{\n  \"did\": \"875218925\",\n  \"name\": \"Xiaomi Smart Air Purifier 4 Lite\"\n}\n\nFile v1.0.1:package.json\n\n{\n  \"name\": \"xiaomi-air-purifier\",\n  \"version\": \"1.0.0\",\n  \"description\": \"Xiaomi Air Purifier control skill for OpenClaw\",\n  \"main\": \"scripts/purifier.js\",\n  \"scripts\": {\n    \"status\": \"node scripts/purifier.js status\",\n    \"on\": \"node scripts/purifier.js on\",\n    \"off\": \"node scripts/purifier.js off\"\n  },\n  \"dependencies\": {\n    \"xmihome\": \"*\"\n  }\n}\n\nFile v1.0.1:pnpm-lock.yaml\n\nlockfileVersion: '9.0'\n\nsettings:\n  autoInstallPeers: true\n  excludeLinksFromLockfile: false\n\nimporters:\n\n  .:\n    dependencies:\n      xmihome:\n        specifier: '*'\n        version: 1.3.3\n\npackages:\n\n  '@inquirer/ansi@1.0.2':\n    resolution: {integrity: sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==}\n    engines: {node: '>=18'}\n\n  '@inquirer/checkbox@4.3.2':\n    resolution: {integrity: sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/confirm@5.1.21':\n    resolution: {integrity: sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/core@10.3.2':\n    resolution: {integrity: sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/editor@4.2.23':\n    resolution: {integrity: sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/expand@4.0.23':\n    resolution: {integrity: sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/external-editor@1.0.3':\n    resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/figures@1.0.15':\n    resolution: {integrity: sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==}\n    engines: {node: '>=18'}\n\n  '@inquirer/input@4.3.1':\n    resolution: {integrity: sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/number@3.0.23':\n    resolution: {integrity: sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/password@4.0.23':\n    resolution: {integrity: sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/prompts@7.10.1':\n    resolution: {integrity: sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/rawlist@4.1.11':\n    resolution: {integrity: sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/search@3.2.2':\n    resolution: {integrity: sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/select@4.4.2':\n    resolution: {integrity: sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/type@3.0.10':\n    resolution: {integrity: sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@nornagon/put@0.0.8':\n    resolution: {integrity: sha512-ugvXJjwF5ldtUpa7D95kruNJ41yFQDEKyF5CW4TgKJnh+W/zmlBzXXeKTyqIgwMFrkePN2JqOBqcF0M0oOunow==}\n    engines: {node: '>=0.3.0'}\n\n  abstract-things@0.9.0:\n    resolution: {integrity: sha512-2JJU/nfKfdqan+95KZdrBU/xUfFe/V8O5SE54tFx2e1gsL6dgEd2fcHUaVYJ/tkbRVdIdsIYWk4WyfKxC989rQ==}\n    engines: {node: '>=6.6.0'}\n\n  amounts@0.5.0:\n    resolution: {integrity: sha512-ffvMjyj6mmn8aPmfdqPeHvt6KO1bTMx0fUi0O7KUtuhitUsxjk23RV8CaLUurX4zwLKfZ009WPfsIvge/XTzJg==}\n\n  ansi-regex@5.0.1:\n    resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}\n    engines: {node: '>=8'}\n\n  ansi-regex@6.2.2:\n    resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==}\n    engines: {node: '>=12'}\n\n  ansi-styles@3.2.1:\n    resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}\n    engines: {node: '>=4'}\n\n  ansi-styles@4.3.0:\n    resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}\n    engines: {node: '>=8'}\n\n  ansi-styles@6.2.3:\n    resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==}\n    engines: {node: '>=12'}\n\n  appdirectory@0.1.0:\n    resolution: {integrity: sha512-DJ5DV8vZXBbusyiyPlH28xppwS8eAMRuuyMo88xeEcf4bV64lbLtbxRxqixZuJBXsZzLtXFmA13GwVjJc7vdQw==}\n    deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.\n\n  call-bind-apply-helpers@1.0.2:\n    resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}\n    engines: {node: '>= 0.4'}\n\n  call-bind@1.0.8:\n    resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==}\n    engines: {node: '>= 0.4'}\n\n  call-bound@1.0.4:\n    resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==}\n    engines: {node: '>= 0.4'}\n\n  chalk@2.4.2:\n    resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}\n    engines: {node: '>=4'}\n\n  chardet@2.1.1:\n    resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==}\n\n  cli-width@4.1.0:\n    resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==}\n    engines: {node: '>= 12'}\n\n  cliui@8.0.1:\n    resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}\n    engines: {node: '>=12'}\n\n  cliui@9.0.1:\n    resolution: {integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==}\n    engines: {node: '>=20'}\n\n  color-convert@1.9.3:\n    resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}\n\n  color-convert@2.0.1:\n    resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}\n    engines: {node: '>=7.0.0'}\n\n  color-name@1.1.3:\n    resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}\n\n  color-name@1.1.4:\n    resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}\n\n  color-string@1.9.1:\n    resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==}\n\n  color-temperature@0.2.7:\n    resolution: {integrity: sha512-hFuGKuSBO4V2+AY4KAUvPr3fnNgfgSR1Kf3P1zp80t+zJF0Y37Z1VW2HZIPN90g29NkrlZK5ATIrDul7PCJYZA==}\n\n  core-util-is@1.0.3:\n    resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}\n\n  dbus-next@https://codeload.github.com/dcodeIO/node-dbus-next/tar.gz/0d0cea2ebb0487a051e735f1f488db2115fc16e1:\n    resolution: {tarball: https://codeload.github.com/dcodeIO/node-dbus-next/tar.gz/0d0cea2ebb0487a051e735f1f488db2115fc16e1}\n    version: 0.10.2\n\n  debug@3.2.7:\n    resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}\n    peerDependencies:\n      supports-color: '*'\n    peerDependenciesMeta:\n      supports-color:\n        optional: true\n\n  deep-equal@1.1.2:\n    resolution: {integrity: sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==}\n    engines: {node: '>= 0.4'}\n\n  define-data-property@1.1.4:\n    resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}\n    engines: {node: '>= 0.4'}\n\n  define-properties@1.2.1:\n    resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}\n    engines: {node: '>= 0.4'}\n\n  dunder-proto@1.0.1:\n    resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}\n    engines: {node: '>= 0.4'}\n\n  duplexer@0.1.2:\n    resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==}\n\n  dwaal@0.1.4:\n    resolution: {integrity: sha512-k/r/3bHW4/uqYC0q+yVFh2ZC2sWHVn+/nmGdVOXpj8sPyBCbK/1xJRrUZZ3mbGy080QKkU+Uv4Nz2936zi7Aaw==}\n    engines: {node: '>=6.0.0'}\n\n  emoji-regex@10.6.0:\n    resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==}\n\n  emoji-regex@8.0.0:\n    resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}\n\n  end-of-stream@1.4.5:\n    resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==}\n\n  es-define-property@1.0.1:\n    resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}\n    engines: {node: '>= 0.4'}\n\n  es-errors@1.3.0:\n    resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}\n    engines: {node: '>= 0.4'}\n\n  es-object-atoms@1.1.1:\n    resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}\n    engines: {node: '>= 0.4'}\n\n  escalade@3.2.0:\n    resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}\n    engines: {node: '>=6'}\n\n  escape-string-regexp@1.0.5:\n    resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrb\n\nArchive v1.0.0: 6 files, 19233 bytes\n\nFiles: config.json (70b), package.json (354b), pnpm-lock.yaml (38257b), scripts/purifier.js (9589b), SKILL.md (2138b), _meta.json (138b)","readmeExcerpt":"Skill: Xiaomi Air Purifier Owner: radyakaze Summary: Monitor and control Xiaomi Air Purifier 4 Lite via Mi Cloud. Use when asked to check air quality, humidity, purifier status, turn on/off the air purifier, or... Tags: latest:1.1.2 Version history: v1.1.2 | 2026-02-17T09:42:27.131Z | user Security: Exclude config.json from package v1.1.1 | 2026-02-17T09:38:13.170Z | user Fix property write access for xmihome 1.4.0+ ","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"cd xiaomi-air-purifier && pnpm install"},{"language":"bash","snippet":"pnpm exec xmihome login -u <email/phone> -p <password> -c <country>"},{"language":"bash","snippet":"node scripts/purifier.js devices"},{"language":"bash","snippet":"node scripts/purifier.js status [room]      # Check status (e.g., status Bedroom)\nnode scripts/purifier.js status-full [room] # Show full status (incl. filter)\nnode scripts/purifier.js on [room]          # Power on\nnode scripts/purifier.js off [room]         # Power off\nnode scripts/purifier.js mode <0-2> [room]  # 0=Auto, 1=Sleep, 2=Favorite\nnode scripts/purifier.js level <0-14> [room]# Fan speed (Favorite mode)\nnode scripts/purifier.js brightness <0-2> [room]\nnode scripts/purifier.js buzzer <on|off> [room]\nnode scripts/purifier.js lock <on|off> [room]"},{"language":"bash","snippet":"cd xiaomi-air-purifier && pnpm install"},{"language":"bash","snippet":"pnpm exec xmihome login -u <email/phone> -p <password> -c <country>"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: xiaomi-air-purifier\ndescription: Monitor and control Xiaomi Air Purifier 4 Lite via Mi Cloud. Use when asked to check air quality, humidity, purifier status, turn on/off the air purifier, or change fan mode/level. Supports multi-room setups.\n---\n\n# Xiaomi Air Purifier Control\n\nControl and monitor Xiaomi Air Purifier 4 Lite (`zhimi.airp.rmb1`) via Xiaomi Cloud API. Supports multiple devices and room-based targeting.\n\n## Setup\n\n1. Install dependencies:\n```bash\ncd xiaomi-air-purifier && pnpm install\n```\n\n2. Login to Mi Cloud (OTP will be sent via SMS/Email):\n```bash\npnpm exec xmihome login -u <email/phone> -p <password> -c <country>\n```\nSupported countries: `sg`, `ru`, `us`, `cn`\n\n3. List devices to verify discovery:\n```bash\nnode scripts/purifier.js devices\n```\n\n## Usage\n\nCommands can be targeted by **Room Name**, **Device Name**, or **DID**. If no target is provided, it uses the selected default or the only available device.\n\n```bash\nnode scripts/purifier.js status [room]      # Check status (e.g., status Bedroom)\nnode scripts/purifier.js status-full [room] # Show full status (incl. filter)\nnode scripts/purifier.js on [room]          # Power on\nnode scripts/purifier.js off [room]         # Power off\nnode scripts/purifier.js mode <0-2> [room]  # 0=Auto, 1=Sleep, 2=Favorite\nnode scripts/purifier.js level <0-14> [room]# Fan speed (Favorite mode)\nnode scripts/purifier.js brightness <0-2> [room]\nnode scripts/purifier.js buzzer <on|off> [room]\nnode scripts/purifier.js lock <on|off> [room]\n```\n\n## Quick Reference\n\n| Property | siid | piid | Type | Description |\n|----------|------|------|------|-------------|\n| Power | 2 | 1 | bool | On/Off |\n| Mode | 2 | 4 | int | 0=Auto, 1=Sleep, 2=Favorite |\n| Humidity | 3 | 1 | int | Relative humidity (%) |\n| PM2.5 | 3 | 4 | int | Air quality (μg/m³) |\n| Temperature | 3 | 7 | float | Temperature (°C) |\n| Filter Life | 4 | 1 | int | Filter remaining (%) |\n| Buzzer | 6 | 1 | bool | Notification sound on/off |\n| Child Lock | 8 | 1 | bool | Physical button lock |\n| Fan Level | 9 | 11 | int | 0-14 (Favorite mode) |\n| Brightness | 13 | 2 | int | 0=Off, 1=Dim, 2=On |"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn74vgx2pwyf7sazbq47byzxgx80mejy\",\n  \"slug\": \"xiaomi-air-purifier\",\n  \"version\": \"1.1.2\",\n  \"publishedAt\": 1771321347131\n}"},{"path":"package.json","content":"{\n  \"name\": \"xiaomi-air-purifier\",\n  \"version\": \"1.0.0\",\n  \"description\": \"Xiaomi Air Purifier control skill for OpenClaw\",\n  \"main\": \"scripts/purifier.js\",\n  \"scripts\": {\n    \"status\": \"node scripts/purifier.js status\",\n    \"on\": \"node scripts/purifier.js on\",\n    \"off\": \"node scripts/purifier.js off\"\n  },\n  \"dependencies\": {\n    \"xmihome\": \"^1.4.0\"\n  }\n}"},{"path":"pnpm-lock.yaml","content":"lockfileVersion: '9.0'\n\nsettings:\n  autoInstallPeers: true\n  excludeLinksFromLockfile: false\n\nimporters:\n\n  .:\n    dependencies:\n      xmihome:\n        specifier: ^1.4.0\n        version: 1.4.0\n\npackages:\n\n  '@inquirer/ansi@1.0.2':\n    resolution: {integrity: sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==}\n    engines: {node: '>=18'}\n\n  '@inquirer/checkbox@4.3.2':\n    resolution: {integrity: sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/confirm@5.1.21':\n    resolution: {integrity: sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/core@10.3.2':\n    resolution: {integrity: sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/editor@4.2.23':\n    resolution: {integrity: sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/expand@4.0.23':\n    resolution: {integrity: sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/external-editor@1.0.3':\n    resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/figures@1.0.15':\n    resolution: {integrity: sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==}\n    engines: {node: '>=18'}\n\n  '@inquirer/input@4.3.1':\n    resolution: {integrity: sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n  '@inquirer/number@3.0.23':\n    resolution: {integrity: sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==}\n    engines: {node: '>=18'}\n    peerDependencies:\n      '@types/node': '>=18'\n    peerDependenciesMeta:\n      '@types/node':\n        optional: true\n\n "}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Monitor and control Xiaomi Air Purifier 4 Lite via Mi Cloud. Use when asked to check air quality, humidity, purifier status, turn on/off the air purifier, or... Skill: Xiaomi Air Purifier Owner: radyakaze Summary: Monitor and control Xiaomi Air Purifier 4 Lite via Mi Cloud. Use when asked to check air quality, humidity, purifier status, turn on/off the air purifier, or... Tags: latest:1.1.2 Version history: v1.1.2 | 2026-02-17T09:42:27.131Z | user Security: Exclude config.json from package v1.1.1 | 2026-02-17T09:38:13.170Z | user Fix property write access for xmihome 1.4.0+","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":923,"uniquenessScore":52,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-09T23:16:13.664Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-09T23:16:13.664Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T04:26:41.206Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}