From 10164ee813ed7dbd27f4ba8456b1e5f650cfcd5f Mon Sep 17 00:00:00 2001 From: OpenClaw3827 Date: Tue, 3 Feb 2026 08:20:23 +0800 Subject: [PATCH 1/4] Add deeplink controls and Raycast extension --- README.md | 69 + .../desktop/src-tauri/src/deeplink_actions.rs | 22 + apps/raycast/icon.png | Bin 0 -> 20350 bytes apps/raycast/package-lock.json | 1607 +++++++++++++++++ apps/raycast/package.json | 15 + apps/raycast/raycast.json | 53 + apps/raycast/src/pause-recording.ts | 5 + apps/raycast/src/resume-recording.ts | 5 + apps/raycast/src/start-recording-screen.ts | 13 + apps/raycast/src/start-recording-window.ts | 13 + apps/raycast/src/stop-recording.ts | 5 + apps/raycast/src/switch-camera.ts | 29 + apps/raycast/src/switch-microphone.ts | 26 + apps/raycast/src/utils.ts | 8 + 14 files changed, 1870 insertions(+) create mode 100644 apps/raycast/icon.png create mode 100644 apps/raycast/package-lock.json create mode 100644 apps/raycast/package.json create mode 100644 apps/raycast/raycast.json create mode 100644 apps/raycast/src/pause-recording.ts create mode 100644 apps/raycast/src/resume-recording.ts create mode 100644 apps/raycast/src/start-recording-screen.ts create mode 100644 apps/raycast/src/start-recording-window.ts create mode 100644 apps/raycast/src/stop-recording.ts create mode 100644 apps/raycast/src/switch-camera.ts create mode 100644 apps/raycast/src/switch-microphone.ts create mode 100644 apps/raycast/src/utils.ts diff --git a/README.md b/README.md index 353eb45f99..78a7d94861 100644 --- a/README.md +++ b/README.md @@ -83,6 +83,75 @@ Portions of this software are licensed as follows: - All third party components are licensed under the original license provided by the owner of the applicable component - All other content not mentioned above is available under the AGPLv3 license as defined in [LICENSE](https://github.com/CapSoftware/Cap/blob/main/LICENSE) +# Deeplinks + +Cap Desktop supports deeplinks via the `cap-desktop://` scheme (Tauri deep link). Actions are passed as a JSON payload in the `value` query param. + +**Format** + +``` +cap-desktop://action?value={JSON} +``` + +**Examples** + +Start recording (screen capture): +``` +cap-desktop://action?value={"start_recording":{"capture_mode":{"screen":"Built-in Display"},"camera":null,"mic_label":null,"capture_system_audio":true,"mode":"instant"}} +``` + +Start recording (window capture): +``` +cap-desktop://action?value={"start_recording":{"capture_mode":{"window":"My App"},"camera":null,"mic_label":null,"capture_system_audio":true,"mode":"instant"}} +``` + +Stop recording: +``` +cap-desktop://action?value={"stop_recording":{}} +``` + +Pause recording: +``` +cap-desktop://action?value={"pause_recording":{}} +``` + +Resume recording: +``` +cap-desktop://action?value={"resume_recording":{}} +``` + +Switch microphone (by label): +``` +cap-desktop://action?value={"set_microphone":{"mic_label":"MacBook Pro Microphone"}} +``` + +Switch camera (by device id or model id): +``` +cap-desktop://action?value={"set_camera":{"camera":{"DeviceID":""}}} +``` + +Open settings: +``` +cap-desktop://action?value={"open_settings":{"page":"general"}} +``` + +Open editor (macOS file deeplink): +``` +file:///path/to/project +``` + +## Raycast Extension +A minimal Raycast extension is available under `apps/raycast`. It triggers the same deeplinks above. + +Commands included: +- Start Recording (Screen) +- Start Recording (Window) +- Stop Recording +- Pause Recording +- Resume Recording +- Switch Microphone (by label) +- Switch Camera (by device id or model id) + # Contributing See [CONTRIBUTING.md](CONTRIBUTING.md) for more information. This guide is a work in progress, and is updated regularly as the app matures. diff --git a/apps/desktop/src-tauri/src/deeplink_actions.rs b/apps/desktop/src-tauri/src/deeplink_actions.rs index fce75b4a84..658e138bda 100644 --- a/apps/desktop/src-tauri/src/deeplink_actions.rs +++ b/apps/desktop/src-tauri/src/deeplink_actions.rs @@ -26,6 +26,14 @@ pub enum DeepLinkAction { mode: RecordingMode, }, StopRecording, + PauseRecording, + ResumeRecording, + SetMicrophone { + mic_label: Option, + }, + SetCamera { + camera: Option, + }, OpenEditor { project_path: PathBuf, }, @@ -146,6 +154,20 @@ impl DeepLinkAction { DeepLinkAction::StopRecording => { crate::recording::stop_recording(app.clone(), app.state()).await } + DeepLinkAction::PauseRecording => { + crate::recording::pause_recording(app.clone(), app.state()).await + } + DeepLinkAction::ResumeRecording => { + crate::recording::resume_recording(app.clone(), app.state()).await + } + DeepLinkAction::SetMicrophone { mic_label } => { + let state = app.state::>(); + crate::set_mic_input(state.clone(), mic_label).await + } + DeepLinkAction::SetCamera { camera } => { + let state = app.state::>(); + crate::set_camera_input(app.clone(), state, camera, None).await + } DeepLinkAction::OpenEditor { project_path } => { crate::open_project_from_path(Path::new(&project_path), app.clone()) } diff --git a/apps/raycast/icon.png b/apps/raycast/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..81a7775e9a9b9ee4a6a47c81b2bba7c0346d1952 GIT binary patch literal 20350 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" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/ansi": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.2.tgz", + "integrity": "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/checkbox": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.3.2.tgz", + "integrity": "sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==", + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/confirm": { + "version": "5.1.21", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.21.tgz", + "integrity": "sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/core": { + "version": "10.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", + "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^1.0.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "cli-width": "^4.1.0", + "mute-stream": "^2.0.0", + "signal-exit": "^4.1.0", + "wrap-ansi": "^6.2.0", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/core/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@inquirer/editor": { + "version": "4.2.23", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.23.tgz", + "integrity": "sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/external-editor": "^1.0.3", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/expand": { + "version": "4.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.23.tgz", + "integrity": "sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/external-editor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.3.tgz", + "integrity": "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==", + "license": "MIT", + "dependencies": { + "chardet": "^2.1.1", + "iconv-lite": "^0.7.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/figures": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.15.tgz", + "integrity": "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/input": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.3.1.tgz", + "integrity": "sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/number": { + "version": "3.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.23.tgz", + "integrity": "sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/password": { + "version": "4.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.23.tgz", + "integrity": "sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==", + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/prompts": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.10.1.tgz", + "integrity": "sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==", + "license": "MIT", + "dependencies": { + "@inquirer/checkbox": "^4.3.2", + "@inquirer/confirm": "^5.1.21", + "@inquirer/editor": "^4.2.23", + "@inquirer/expand": "^4.0.23", + "@inquirer/input": "^4.3.1", + "@inquirer/number": "^3.0.23", + "@inquirer/password": "^4.0.23", + "@inquirer/rawlist": "^4.1.11", + "@inquirer/search": "^3.2.2", + "@inquirer/select": "^4.4.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/rawlist": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.11.tgz", + "integrity": "sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/search": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.2.2.tgz", + "integrity": "sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/select": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.4.2.tgz", + "integrity": "sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==", + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/type": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz", + "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@oclif/core": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@oclif/core/-/core-4.8.0.tgz", + "integrity": "sha512-jteNUQKgJHLHFbbz806aGZqf+RJJ7t4gwF4MYa8fCwCxQ8/klJNWc0MvaJiBebk7Mc+J39mdlsB4XraaCKznFw==", + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.3.2", + "ansis": "^3.17.0", + "clean-stack": "^3.0.1", + "cli-spinners": "^2.9.2", + "debug": "^4.4.3", + "ejs": "^3.1.10", + "get-package-type": "^0.1.0", + "indent-string": "^4.0.0", + "is-wsl": "^2.2.0", + "lilconfig": "^3.1.3", + "minimatch": "^9.0.5", + "semver": "^7.7.3", + "string-width": "^4.2.3", + "supports-color": "^8", + "tinyglobby": "^0.2.14", + "widest-line": "^3.1.0", + "wordwrap": "^1.0.0", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@oclif/plugin-autocomplete": { + "version": "3.2.40", + "resolved": "https://registry.npmjs.org/@oclif/plugin-autocomplete/-/plugin-autocomplete-3.2.40.tgz", + "integrity": "sha512-HCfDuUV3l5F5Wz7SKkaoFb+OMQ5vKul8zvsPNgI0QbZcQuGHmn3svk+392wSfXboyA1gq8kzEmKPAoQK6r6UNw==", + "license": "MIT", + "dependencies": { + "@oclif/core": "^4", + "ansis": "^3.16.0", + "debug": "^4.4.1", + "ejs": "^3.1.10" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@oclif/plugin-help": { + "version": "6.2.37", + "resolved": "https://registry.npmjs.org/@oclif/plugin-help/-/plugin-help-6.2.37.tgz", + "integrity": "sha512-5N/X/FzlJaYfpaHwDC0YHzOzKDWa41s9t+4FpCDu4f9OMReds4JeNBaaWk9rlIzdKjh2M6AC5Q18ORfECRkHGA==", + "license": "MIT", + "dependencies": { + "@oclif/core": "^4" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@oclif/plugin-not-found": { + "version": "3.2.74", + "resolved": "https://registry.npmjs.org/@oclif/plugin-not-found/-/plugin-not-found-3.2.74.tgz", + "integrity": "sha512-6RD/EuIUGxAYR45nMQg+nw+PqwCXUxkR6Eyn+1fvbVjtb9d+60OPwB77LCRUI4zKNI+n0LOFaMniEdSpb+A7kQ==", + "license": "MIT", + "dependencies": { + "@inquirer/prompts": "^7.10.1", + "@oclif/core": "^4.8.0", + "ansis": "^3.17.0", + "fast-levenshtein": "^3.0.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@raycast/api": { + "version": "1.104.4", + "resolved": "https://registry.npmjs.org/@raycast/api/-/api-1.104.4.tgz", + "integrity": "sha512-Pz6qmLVfHp1OLKGyzDhFN9IPczG6EiGFIE6pq23SVsYB6lRpfABSVsscnjioa5NAX3cI5/6cz+/nk142ZncupA==", + "license": "MIT", + "dependencies": { + "@oclif/core": "^4.5.4", + "@oclif/plugin-autocomplete": "^3.2.35", + "@oclif/plugin-help": "^6.2.33", + "@oclif/plugin-not-found": "^3.2.68", + "@types/node": "22.13.10", + "@types/react": "19.0.10", + "esbuild": "^0.25.10", + "react": "19.0.0" + }, + "bin": { + "ray": "bin/run.js" + }, + "engines": { + "node": ">=22.14.0" + }, + "peerDependencies": { + "@types/node": "22.13.10", + "@types/react": "19.0.10", + "react-devtools": "6.1.1" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "@types/react": { + "optional": true + }, + "react-devtools": { + "optional": true + } + } + }, + "node_modules/@raycast/utils": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/@raycast/utils/-/utils-1.19.1.tgz", + "integrity": "sha512-/udUGcTZCgZZwzesmjBkqG5naQZTD/ZLHbqRwkWcF+W97vf9tr9raxKyQjKsdZ17OVllw2T3sHBQsVUdEmCm2g==", + "license": "MIT", + "dependencies": { + "cross-fetch": "^3.1.6", + "dequal": "^2.0.3", + "object-hash": "^3.0.0", + "signal-exit": "^4.0.2", + "stream-chain": "^2.2.5", + "stream-json": "^1.8.0" + }, + "peerDependencies": { + "@raycast/api": ">=1.69.0" + } + }, + "node_modules/@types/node": { + "version": "22.13.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.10.tgz", + "integrity": "sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw==", + "license": "MIT", + "dependencies": { + "undici-types": "~6.20.0" + } + }, + "node_modules/@types/react": { + "version": "19.0.10", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.0.10.tgz", + "integrity": "sha512-JuRQ9KXLEjaUNjTWpzuR231Z2WpIwczOkBEIvbHNCzQefFIT0L8IqE6NV6ULLyC1SI/i234JnDoMkfg+RjQj2g==", + "license": "MIT", + "dependencies": { + "csstype": "^3.0.2" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ansis": { + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/ansis/-/ansis-3.17.0.tgz", + "integrity": "sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==", + "license": "ISC", + "engines": { + "node": ">=14" + } + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "license": "MIT" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/chardet": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz", + "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==", + "license": "MIT" + }, + "node_modules/clean-stack": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-3.0.1.tgz", + "integrity": "sha512-lR9wNiMRcVQjSB3a7xXGLuz4cr4wJuuXlaAEbRutGowQTmlp7R72/DOgN21e8jdwblMWl9UOJMJXarX94pzKdg==", + "license": "MIT", + "dependencies": { + "escape-string-regexp": "4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "license": "ISC", + "engines": { + "node": ">= 12" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/cross-fetch": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz", + "integrity": "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==", + "license": "MIT", + "dependencies": { + "node-fetch": "^2.7.0" + } + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "license": "Apache-2.0", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/esbuild": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/fast-levenshtein": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-3.0.0.tgz", + "integrity": "sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ==", + "license": "MIT", + "dependencies": { + "fastest-levenshtein": "^1.0.7" + } + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "license": "MIT", + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/iconv-lite": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jake": { + "version": "10.9.4", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.4.tgz", + "integrity": "sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==", + "license": "Apache-2.0", + "dependencies": { + "async": "^3.2.6", + "filelist": "^1.0.4", + "picocolors": "^1.1.1" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/mute-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", + "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/react": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.0.0.tgz", + "integrity": "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/stream-chain": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/stream-chain/-/stream-chain-2.2.5.tgz", + "integrity": "sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA==", + "license": "BSD-3-Clause" + }, + "node_modules/stream-json": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/stream-json/-/stream-json-1.9.1.tgz", + "integrity": "sha512-uWkjJ+2Nt/LO9Z/JyKZbMusL8Dkh97uUBTv3AJQ74y07lVahLY4eEFsPsE97pxYBwr8nnjMAIch5eqI0gPShyw==", + "license": "BSD-3-Clause", + "dependencies": { + "stream-chain": "^2.2.5" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/undici-types": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "license": "MIT" + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "license": "MIT", + "dependencies": { + "string-width": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "license": "MIT" + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/yoctocolors-cjs": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz", + "integrity": "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/apps/raycast/package.json b/apps/raycast/package.json new file mode 100644 index 0000000000..d26d2a7c0c --- /dev/null +++ b/apps/raycast/package.json @@ -0,0 +1,15 @@ +{ + "name": "cap-raycast", + "version": "0.1.0", + "private": true, + "type": "module", + "scripts": { + "dev": "raycast dev", + "build": "raycast build", + "lint": "raycast lint" + }, + "dependencies": { + "@raycast/api": "^1.74.0", + "@raycast/utils": "^1.17.0" + } +} diff --git a/apps/raycast/raycast.json b/apps/raycast/raycast.json new file mode 100644 index 0000000000..59a05df828 --- /dev/null +++ b/apps/raycast/raycast.json @@ -0,0 +1,53 @@ +{ + "$schema": "https://www.raycast.com/schemas/extension.json", + "name": "cap", + "title": "Cap", + "description": "Control Cap Desktop via deeplinks", + "icon": "icon.png", + "author": "CapSoftware", + "categories": ["Productivity"], + "commands": [ + { + "name": "start-recording-screen", + "title": "Start Recording (Screen)", + "description": "Start a screen recording in Cap", + "mode": "no-view" + }, + { + "name": "start-recording-window", + "title": "Start Recording (Window)", + "description": "Start a window recording in Cap", + "mode": "no-view" + }, + { + "name": "stop-recording", + "title": "Stop Recording", + "description": "Stop the current recording", + "mode": "no-view" + }, + { + "name": "pause-recording", + "title": "Pause Recording", + "description": "Pause the current recording", + "mode": "no-view" + }, + { + "name": "resume-recording", + "title": "Resume Recording", + "description": "Resume the current recording", + "mode": "no-view" + }, + { + "name": "switch-microphone", + "title": "Switch Microphone", + "description": "Switch microphone by label", + "mode": "view" + }, + { + "name": "switch-camera", + "title": "Switch Camera", + "description": "Switch camera by device id or model id", + "mode": "view" + } + ] +} diff --git a/apps/raycast/src/pause-recording.ts b/apps/raycast/src/pause-recording.ts new file mode 100644 index 0000000000..e1dd83ed29 --- /dev/null +++ b/apps/raycast/src/pause-recording.ts @@ -0,0 +1,5 @@ +import { openCapDeepLink } from "./utils"; + +export default async function Command() { + await openCapDeepLink({ pause_recording: {} }); +} diff --git a/apps/raycast/src/resume-recording.ts b/apps/raycast/src/resume-recording.ts new file mode 100644 index 0000000000..a899a159a3 --- /dev/null +++ b/apps/raycast/src/resume-recording.ts @@ -0,0 +1,5 @@ +import { openCapDeepLink } from "./utils"; + +export default async function Command() { + await openCapDeepLink({ resume_recording: {} }); +} diff --git a/apps/raycast/src/start-recording-screen.ts b/apps/raycast/src/start-recording-screen.ts new file mode 100644 index 0000000000..595779f9d6 --- /dev/null +++ b/apps/raycast/src/start-recording-screen.ts @@ -0,0 +1,13 @@ +import { openCapDeepLink } from "./utils"; + +export default async function Command() { + await openCapDeepLink({ + start_recording: { + capture_mode: { screen: "Built-in Display" }, + camera: null, + mic_label: null, + capture_system_audio: true, + mode: "instant", + }, + }); +} diff --git a/apps/raycast/src/start-recording-window.ts b/apps/raycast/src/start-recording-window.ts new file mode 100644 index 0000000000..54c1ee3917 --- /dev/null +++ b/apps/raycast/src/start-recording-window.ts @@ -0,0 +1,13 @@ +import { openCapDeepLink } from "./utils"; + +export default async function Command() { + await openCapDeepLink({ + start_recording: { + capture_mode: { window: "" }, + camera: null, + mic_label: null, + capture_system_audio: true, + mode: "instant", + }, + }); +} diff --git a/apps/raycast/src/stop-recording.ts b/apps/raycast/src/stop-recording.ts new file mode 100644 index 0000000000..773060b989 --- /dev/null +++ b/apps/raycast/src/stop-recording.ts @@ -0,0 +1,5 @@ +import { openCapDeepLink } from "./utils"; + +export default async function Command() { + await openCapDeepLink({ stop_recording: {} }); +} diff --git a/apps/raycast/src/switch-camera.ts b/apps/raycast/src/switch-camera.ts new file mode 100644 index 0000000000..8f08434f4c --- /dev/null +++ b/apps/raycast/src/switch-camera.ts @@ -0,0 +1,29 @@ +import { Form, ActionPanel, Action, showToast, Toast } from "@raycast/api"; +import { openCapDeepLink } from "./utils"; + +export default function Command() { + return ( +
+ { + const deviceId = (values.deviceId as string)?.trim(); + const modelId = (values.modelId as string)?.trim(); + if (!deviceId && !modelId) { + await showToast({ style: Toast.Style.Failure, title: "Provide Device ID or Model ID" }); + return; + } + const camera = deviceId ? { DeviceID: deviceId } : { ModelID: modelId }; + await openCapDeepLink({ set_camera: { camera } }); + }} + /> + + } + > + + + + ); +} diff --git a/apps/raycast/src/switch-microphone.ts b/apps/raycast/src/switch-microphone.ts new file mode 100644 index 0000000000..d9c23a8210 --- /dev/null +++ b/apps/raycast/src/switch-microphone.ts @@ -0,0 +1,26 @@ +import { Form, ActionPanel, Action, showToast, Toast } from "@raycast/api"; +import { openCapDeepLink } from "./utils"; + +export default function Command() { + return ( +
+ { + const micLabel = (values.micLabel as string)?.trim(); + if (!micLabel) { + await showToast({ style: Toast.Style.Failure, title: "Mic label is required" }); + return; + } + await openCapDeepLink({ set_microphone: { mic_label: micLabel } }); + }} + /> + + } + > + + + ); +} diff --git a/apps/raycast/src/utils.ts b/apps/raycast/src/utils.ts new file mode 100644 index 0000000000..e733274284 --- /dev/null +++ b/apps/raycast/src/utils.ts @@ -0,0 +1,8 @@ +import { open } from "@raycast/api"; + +const SCHEME = "cap-desktop://action?value="; + +export function openCapDeepLink(payload: unknown) { + const encoded = encodeURIComponent(JSON.stringify(payload)); + return open(`${SCHEME}${encoded}`); +} From 3124477863385ebe40736234b5230870abc73a26 Mon Sep 17 00:00:00 2001 From: OpenClaw3827 Date: Tue, 3 Feb 2026 08:31:27 +0800 Subject: [PATCH 2/4] Avoid unwrap on deeplink file URL --- apps/desktop/src-tauri/src/deeplink_actions.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/desktop/src-tauri/src/deeplink_actions.rs b/apps/desktop/src-tauri/src/deeplink_actions.rs index 658e138bda..c58caad25b 100644 --- a/apps/desktop/src-tauri/src/deeplink_actions.rs +++ b/apps/desktop/src-tauri/src/deeplink_actions.rs @@ -91,7 +91,9 @@ impl TryFrom<&Url> for DeepLinkAction { #[cfg(target_os = "macos")] if url.scheme() == "file" { return Ok(Self::OpenEditor { - project_path: url.to_file_path().unwrap(), + project_path: url + .to_file_path() + .map_err(|_| ActionParseFromUrlError::Invalid)?, }); } From 891adb1ed51be30149871acc1585d6bff4ab4141 Mon Sep 17 00:00:00 2001 From: OpenClaw3827 Date: Tue, 3 Feb 2026 08:52:51 +0800 Subject: [PATCH 3/4] Fix deeplink examples for unit actions --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 78a7d94861..9f86207399 100644 --- a/README.md +++ b/README.md @@ -105,19 +105,19 @@ Start recording (window capture): cap-desktop://action?value={"start_recording":{"capture_mode":{"window":"My App"},"camera":null,"mic_label":null,"capture_system_audio":true,"mode":"instant"}} ``` -Stop recording: +Stop recording (URL-encoded JSON string): ``` -cap-desktop://action?value={"stop_recording":{}} +cap-desktop://action?value=%22stop_recording%22 ``` -Pause recording: +Pause recording (URL-encoded JSON string): ``` -cap-desktop://action?value={"pause_recording":{}} +cap-desktop://action?value=%22pause_recording%22 ``` -Resume recording: +Resume recording (URL-encoded JSON string): ``` -cap-desktop://action?value={"resume_recording":{}} +cap-desktop://action?value=%22resume_recording%22 ``` Switch microphone (by label): From 9d5ed2c43955bd094446bb7f6d8f1a2aaae94b5b Mon Sep 17 00:00:00 2001 From: OpenClaw3827 Date: Tue, 3 Feb 2026 08:58:03 +0800 Subject: [PATCH 4/4] Make Raycast start commands accept user input --- apps/raycast/raycast.json | 4 +-- apps/raycast/src/start-recording-screen.ts | 41 ++++++++++++++++------ apps/raycast/src/start-recording-window.ts | 41 ++++++++++++++++------ 3 files changed, 64 insertions(+), 22 deletions(-) diff --git a/apps/raycast/raycast.json b/apps/raycast/raycast.json index 59a05df828..e3b87b123a 100644 --- a/apps/raycast/raycast.json +++ b/apps/raycast/raycast.json @@ -11,13 +11,13 @@ "name": "start-recording-screen", "title": "Start Recording (Screen)", "description": "Start a screen recording in Cap", - "mode": "no-view" + "mode": "view" }, { "name": "start-recording-window", "title": "Start Recording (Window)", "description": "Start a window recording in Cap", - "mode": "no-view" + "mode": "view" }, { "name": "stop-recording", diff --git a/apps/raycast/src/start-recording-screen.ts b/apps/raycast/src/start-recording-screen.ts index 595779f9d6..1ba3ca6a70 100644 --- a/apps/raycast/src/start-recording-screen.ts +++ b/apps/raycast/src/start-recording-screen.ts @@ -1,13 +1,34 @@ +import { Form, ActionPanel, Action, showToast, Toast } from "@raycast/api"; import { openCapDeepLink } from "./utils"; -export default async function Command() { - await openCapDeepLink({ - start_recording: { - capture_mode: { screen: "Built-in Display" }, - camera: null, - mic_label: null, - capture_system_audio: true, - mode: "instant", - }, - }); +export default function Command() { + return ( +
+ { + const screenName = (values.screenName as string)?.trim(); + if (!screenName) { + await showToast({ style: Toast.Style.Failure, title: "Screen name is required" }); + return; + } + await openCapDeepLink({ + start_recording: { + capture_mode: { screen: screenName }, + camera: null, + mic_label: null, + capture_system_audio: true, + mode: "instant", + }, + }); + }} + /> + + } + > + + + ); } diff --git a/apps/raycast/src/start-recording-window.ts b/apps/raycast/src/start-recording-window.ts index 54c1ee3917..beafe12743 100644 --- a/apps/raycast/src/start-recording-window.ts +++ b/apps/raycast/src/start-recording-window.ts @@ -1,13 +1,34 @@ +import { Form, ActionPanel, Action, showToast, Toast } from "@raycast/api"; import { openCapDeepLink } from "./utils"; -export default async function Command() { - await openCapDeepLink({ - start_recording: { - capture_mode: { window: "" }, - camera: null, - mic_label: null, - capture_system_audio: true, - mode: "instant", - }, - }); +export default function Command() { + return ( +
+ { + const windowName = (values.windowName as string)?.trim(); + if (!windowName) { + await showToast({ style: Toast.Style.Failure, title: "Window name is required" }); + return; + } + await openCapDeepLink({ + start_recording: { + capture_mode: { window: windowName }, + camera: null, + mic_label: null, + capture_system_audio: true, + mode: "instant", + }, + }); + }} + /> + + } + > + + + ); }