@cloudbase/cloudbase-mcp 1.8.17 → 1.8.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -73,9 +73,9 @@
73
73
  </details>
74
74
 
75
75
  <details>
76
- <summary>安装 Node.js v18及以上版本</summary>
76
+ <summary>安装 Node.js v18.15.0及以上版本</summary>
77
77
 
78
- 确保您的计算机上安装了 Node.js v18 及以上版本。您可以从 [Node.js 官网](https://nodejs.org/) 下载并安装最新版本。
78
+ 确保您的计算机上安装了 Node.js v18.15.0 及以上版本。您可以从 [Node.js 官网](https://nodejs.org/) 下载并安装最新版本。
79
79
 
80
80
  </details>
81
81
 
@@ -97,7 +97,7 @@ npm config set registry https://mirrors.cloud.tencent.com/npm/
97
97
 
98
98
  在**终端命令行**中运行以下命令:
99
99
  ```
100
- npx -y clear-npx-cache
100
+ npx clear-npx-cache
101
101
  ```
102
102
  </details>
103
103
 
@@ -179,7 +179,7 @@ npx -y clear-npx-cache
179
179
  "mcpServers": {
180
180
  "cloudbase-mcp": {
181
181
  "command": "npx",
182
- "args": ["-y", "@cloudbase/cloudbase-mcp@latest"]
182
+ "args": ["@cloudbase/cloudbase-mcp@latest"]
183
183
  }
184
184
  }
185
185
  }
@@ -212,7 +212,7 @@ npx -y clear-npx-cache
212
212
  "mcpServers": {
213
213
  "cloudbase-mcp": {
214
214
  "command": "npx",
215
- "args": ["-y", "@cloudbase/cloudbase-mcp@latest"]
215
+ "args": ["@cloudbase/cloudbase-mcp@latest"]
216
216
  }
217
217
  }
218
218
  }
@@ -248,7 +248,7 @@ npx -y clear-npx-cache
248
248
  "mcpServers": {
249
249
  "cloudbase": {
250
250
  "command": "npx",
251
- "args": ["-y", "@cloudbase/cloudbase-mcp@latest"]
251
+ "args": ["@cloudbase/cloudbase-mcp@latest"]
252
252
  }
253
253
  }
254
254
  }
@@ -357,7 +357,7 @@ npx -y clear-npx-cache
357
357
  "mcpServers": {
358
358
  "cloudbase-mcp": {
359
359
  "command": "npx",
360
- "args": ["-y", "@cloudbase/cloudbase-mcp@latest"]
360
+ "args": ["@cloudbase/cloudbase-mcp@latest"]
361
361
  }
362
362
  }
363
363
  }
@@ -389,7 +389,7 @@ npx -y clear-npx-cache
389
389
  "mcpServers": {
390
390
  "cloudbase-mcp": {
391
391
  "command": "npx",
392
- "args": ["-y", "@cloudbase/cloudbase-mcp@latest"]
392
+ "args": ["@cloudbase/cloudbase-mcp@latest"]
393
393
  }
394
394
  }
395
395
  }
@@ -580,7 +580,7 @@ npx @google/gemini-cli
580
580
  "mcpServers": {
581
581
  "cloudbase-mcp": {
582
582
  "command": "npx",
583
- "args": ["-y", "@cloudbase/cloudbase-mcp@latest"]
583
+ "args": ["@cloudbase/cloudbase-mcp@latest"]
584
584
  }
585
585
  }
586
586
  }
@@ -794,6 +794,10 @@ CloudBase MCP 采用插件化架构,支持按需启用工具模块。[查看
794
794
  ### 📄 文章
795
795
  - [1小时开发微信小游戏《我的早餐店》——基于CloudBase AI Toolkit](https://cloud.tencent.com/developer/article/2532595)
796
796
  - [AI Coding宝藏组合:Cursor + Cloudbase-AI-Toolkit 开发游戏实战](https://juejin.cn/post/7518783423277695028#comment)
797
+ - [我用「CloudBase AI ToolKit」一天做出"网络热词"小程序](https://cloud.tencent.com/developer/article/2537907)
798
+ - [我用AI开发并上线了一款小程序:解忧百宝盒](https://mp.weixin.qq.com/s/DYekRheNQ2u8LAl_F830fA)
799
+ - [2天上线一款可联机的分手厨房小游戏](https://mp.weixin.qq.com/s/nKfhHUf8w-EVKvA0u1rdeg)
800
+ - [AI时代,从零基础到全栈开发者之路:Figma + Cursor + Cloudbase快速搭建微信小程序](https://mp.weixin.qq.com/s/nT2JsKnwBiup1imniCr2jA)
797
801
 
798
802
  ### 📱 应用项目
799
803
  - [简历助手小程序](https://gitcode.com/qq_33681891/resume_template)
@@ -928,7 +932,7 @@ CloudBase MCP 采用插件化架构,支持按需启用工具模块。[查看
928
932
 
929
933
  ## 🛠️ 云开发 MCP 工具一览
930
934
 
931
- 目前共有 **36 个工具**,涵盖环境管理、数据库操作、云函数管理、静态托管等核心功能。
935
+ 目前共有 **39 个工具**,涵盖环境管理、数据库操作、云函数管理、静态托管、小程序发布等核心功能。
932
936
 
933
937
  📋 **完整工具文档**: [查看 MCP 工具详细说明](doc/mcp-tools.md) | [查看工具规格 JSON](scripts/tools.json)
934
938
 
@@ -941,6 +945,7 @@ CloudBase MCP 采用插件化架构,支持按需启用工具模块。[查看
941
945
  | ⚡ **云函数管理** | 9 个 | 函数创建、更新、调用、日志、触发器 |
942
946
  | 🌐 **静态托管** | 5 个 | 文件上传管理、域名配置、网站部署 |
943
947
  | 📁 **文件操作** | 2 个 | 远程文件下载、云存储上传 |
948
+ | 📱 **小程序发布** | 7 个 | 小程序上传、预览、构建、配置、调试、质量检查 |
944
949
  | 🛠️ **工具支持** | 4 个 | 项目模板、知识库搜索、联网搜索、交互对话 |
945
950
  | 🔌 **HTTP访问** | 1 个 | HTTP 函数访问配置 |
946
951
 
@@ -957,7 +962,7 @@ CloudBase MCP 采用插件化架构,支持按需启用工具模块。[查看
957
962
 
958
963
  ### 💡 工具优化说明
959
964
 
960
- 我们将原来 40 个工具优化为 36 个,通过合并相关功能提供更好的使用体验
965
+ 我们将原来 40 个工具优化为 36 个,并新增了 3 个小程序调试工具,现在共有 39 个工具,通过合并相关功能和新增小程序完整工具链提供更好的使用体验
961
966
 
962
967
  🔗 **想了解每个工具的详细功能?** 请查看 [MCP 工具完整文档](doc/mcp-tools.md)
963
968
 
@@ -0,0 +1 @@
1
+ "use strict";exports.id=440,exports.ids=[440],exports.modules={83440:(e,r,o)=>{o.r(r),o.d(r,{apps:()=>k,default:()=>O,openApp:()=>$});var t=o(81329),n=o(6258),i=o(26743),a=o(42413),s=o(3776),c=o(60636),l=o(94658),m=o(81258),p=o(89971);let d,f;function u(){return void 0===f&&(f=(()=>{try{return p.statSync("/run/.containerenv"),!0}catch{return!1}})()||(void 0===d&&(d=function(){try{return p.statSync("/.dockerenv"),!0}catch{return!1}}()||function(){try{return p.readFileSync("/proc/self/cgroup","utf8").includes("docker")}catch{return!1}}()),d)),f}const w=()=>{if("linux"!==t.platform)return!1;if(m.release().toLowerCase().includes("microsoft"))return!u();try{return!!p.readFileSync("/proc/version","utf8").toLowerCase().includes("microsoft")&&!u()}catch{return!1}},g=t.env.__IS_WSL_TEST__?w:w(),h=(()=>{const e="/mnt/";let r;return async function(){if(r)return r;const o="/etc/wsl.conf";let t=!1;try{await l.access(o,l.constants.F_OK),t=!0}catch{}if(!t)return e;const n=await l.readFile(o,{encoding:"utf8"}),i=/(?<!#.*)root\s*=\s*(?<mountPoint>.*)/g.exec(n);return i?(r=i.groups.mountPoint.trim(),r=r.endsWith("/")?r:`${r}/`,r):e}})(),x=async()=>g?(async()=>`${await h()}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe`)():`${t.env.SYSTEMROOT||t.env.windir||String.raw`C:\Windows`}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`;function y(e,r,o){const t=o=>Object.defineProperty(e,r,{value:o,enumerable:!0,writable:!0});return Object.defineProperty(e,r,{configurable:!0,enumerable:!0,get(){const e=o();return t(e),e},set(e){t(e)}}),e}const v=(0,s.promisify)(c.execFile),b=(0,s.promisify)(c.execFile);async function S(e){return async function(e,{humanReadableOutput:r=!0}={}){if("darwin"!==t.platform)throw new Error("macOS only");const o=r?[]:["-ss"],{stdout:n}=await b("osascript",["-e",e,o]);return n.trim()}(`tell application "Finder" to set app_path to application file id "${e}" as string\ntell application "System Events" to get value of property list item "CFBundleName" of property list file (app_path & ":Contents:Info.plist")`)}const E=(0,s.promisify)(c.execFile),P={AppXq0fevzme2pys62n3e0fbqa7peapykr8v:{name:"Edge",id:"com.microsoft.edge.old"},MSEdgeDHTML:{name:"Edge",id:"com.microsoft.edge"},MSEdgeHTM:{name:"Edge",id:"com.microsoft.edge"},"IE.HTTP":{name:"Internet Explorer",id:"com.microsoft.ie"},FirefoxURL:{name:"Firefox",id:"org.mozilla.firefox"},ChromeHTML:{name:"Chrome",id:"com.google.chrome"},BraveHTML:{name:"Brave",id:"com.brave.Browser"},BraveBHTML:{name:"Brave Beta",id:"com.brave.Browser.beta"},BraveSSHTM:{name:"Brave Nightly",id:"com.brave.Browser.nightly"}};class A extends Error{}const B=(0,s.promisify)(c.execFile);const F=(0,s.promisify)(c.execFile),C=i.dirname((0,a.fileURLToPath)("file:///Users/bookerzhao/Projects/cloudbase-turbo-delploy/mcp/node_modules/open/index.js")),L=i.join(C,"xdg-open"),{platform:T,arch:M}=t,H=async(e,r)=>{let o;for(const t of e)try{return await r(t)}catch(e){o=e}throw o},U=async e=>{if(e={wait:!1,background:!1,newInstance:!1,allowNonzeroExitCode:!1,...e},Array.isArray(e.app))return H(e.app,r=>U({...e,app:r}));let r,{name:o,arguments:i=[]}=e.app??{};if(i=[...i],Array.isArray(o))return H(o,r=>U({...e,app:{name:r,arguments:i}}));if("browser"===o||"browserPrivate"===o){const r={"com.google.chrome":"chrome","google-chrome.desktop":"chrome","com.brave.Browser":"brave","org.mozilla.firefox":"firefox","firefox.desktop":"firefox","com.microsoft.msedge":"edge","com.microsoft.edge":"edge","com.microsoft.edgemac":"edge","microsoft-edge.desktop":"edge"},a={chrome:"--incognito",brave:"--incognito",firefox:"--private-window",edge:"--inPrivate"},s=g?await async function(){const e=await x(),r=String.raw`(Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice").ProgId`,o=n.Buffer.from(r,"utf16le").toString("base64"),{stdout:t}=await F(e,["-NoProfile","-NonInteractive","-ExecutionPolicy","Bypass","-EncodedCommand",o],{encoding:"utf8"}),i=t.trim(),a={ChromeHTML:"com.google.chrome",BraveHTML:"com.brave.Browser",MSEdgeHTM:"com.microsoft.edge",FirefoxURL:"org.mozilla.firefox"};return a[i]?{id:a[i]}:{}}():await async function(){if("darwin"===t.platform){const e=await async function(){if("darwin"!==t.platform)throw new Error("macOS only");const{stdout:e}=await v("defaults",["read","com.apple.LaunchServices/com.apple.launchservices.secure","LSHandlers"]),r=/LSHandlerRoleAll = "(?!-)(?<id>[^"]+?)";\s+?LSHandlerURLScheme = (?:http|https);/.exec(e);return r?.groups.id??"com.apple.Safari"}();return{name:await S(e),id:e}}if("linux"===t.platform){const{stdout:e}=await B("xdg-mime",["query","default","x-scheme-handler/http"]),r=e.trim();return{name:r.replace(/.desktop$/,"").replace("-"," ").toLowerCase().replaceAll(/(?:^|\s|-)\S/g,e=>e.toUpperCase()),id:r}}if("win32"===t.platform)return async function(e=E){const{stdout:r}=await e("reg",["QUERY"," HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\http\\UserChoice","/v","ProgId"]),o=/ProgId\s*REG_SZ\s*(?<id>\S+)/.exec(r);if(!o)throw new A(`Cannot find Windows browser in stdout: ${JSON.stringify(r)}`);const{id:t}=o.groups,n=P[t];if(!n)throw new A(`Unknown browser ID: ${t}`);return n}();throw new Error("Only macOS, Linux, and Windows are supported")}();if(s.id in r){const t=r[s.id];return"browserPrivate"===o&&i.push(a[t]),U({...e,app:{name:k[t],arguments:i}})}throw new Error(`${s.name} is not supported as a default browser`)}const a=[],s={};if("darwin"===T)r="open",e.wait&&a.push("--wait-apps"),e.background&&a.push("--background"),e.newInstance&&a.push("--new"),o&&a.push("-a",o);else if("win32"===T||g&&!u()&&!o){r=await x(),a.push("-NoProfile","-NonInteractive","-ExecutionPolicy","Bypass","-EncodedCommand"),g||(s.windowsVerbatimArguments=!0);const t=["Start"];e.wait&&t.push("-Wait"),o?(t.push(`"\`"${o}\`""`),e.target&&i.push(e.target)):e.target&&t.push(`"${e.target}"`),i.length>0&&(i=i.map(e=>`"\`"${e}\`""`),t.push("-ArgumentList",i.join(","))),e.target=n.Buffer.from(t.join(" "),"utf16le").toString("base64")}else{if(o)r=o;else{const e=!C||"/"===C;let o=!1;try{await l.access(L,l.constants.X_OK),o=!0}catch{}r=t.versions.electron??("android"===T||e||!o)?"xdg-open":L}i.length>0&&a.push(...i),e.wait||(s.stdio="ignore",s.detached=!0)}"darwin"===T&&i.length>0&&a.push("--args",...i),e.target&&a.push(e.target);const m=c.spawn(r,a,s);return e.wait?new Promise((r,o)=>{m.once("error",o),m.once("close",t=>{!e.allowNonzeroExitCode&&t>0?o(new Error(`Exited with code ${t}`)):r(m)})}):(m.unref(),m)},$=(e,r)=>{if("string"!=typeof e&&!Array.isArray(e))throw new TypeError("Expected a valid `name`");const{arguments:o=[]}=r??{};if(null!=o&&!Array.isArray(o))throw new TypeError("Expected `appArguments` as Array type");return U({...r,app:{name:e,arguments:o}})};function _(e){if("string"==typeof e||Array.isArray(e))return e;const{[M]:r}=e;if(!r)throw new Error(`${M} is not supported`);return r}function I({[T]:e},{wsl:r}){if(r&&g)return _(r);if(!e)throw new Error(`${T} is not supported`);return _(e)}const k={};y(k,"chrome",()=>I({darwin:"google chrome",win32:"chrome",linux:["google-chrome","google-chrome-stable","chromium"]},{wsl:{ia32:"/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe",x64:["/mnt/c/Program Files/Google/Chrome/Application/chrome.exe","/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe"]}})),y(k,"brave",()=>I({darwin:"brave browser",win32:"brave",linux:["brave-browser","brave"]},{wsl:{ia32:"/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe",x64:["/mnt/c/Program Files/BraveSoftware/Brave-Browser/Application/brave.exe","/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe"]}})),y(k,"firefox",()=>I({darwin:"firefox",win32:String.raw`C:\Program Files\Mozilla Firefox\firefox.exe`,linux:"firefox"},{wsl:"/mnt/c/Program Files/Mozilla Firefox/firefox.exe"})),y(k,"edge",()=>I({darwin:"microsoft edge",win32:"msedge",linux:["microsoft-edge","microsoft-edge-dev"]},{wsl:"/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe"})),y(k,"browser",()=>"browser"),y(k,"browserPrivate",()=>"browserPrivate");const O=(e,r)=>{if("string"!=typeof e)throw new TypeError("Expected a `target`");return U({...r,target:e})}}};
@@ -0,0 +1 @@
1
+ "use strict";exports.id=440,exports.ids=[440],exports.modules={83440:(e,r,o)=>{o.r(r),o.d(r,{apps:()=>k,default:()=>O,openApp:()=>$});var t=o(81329),n=o(6258),i=o(26743),a=o(42413),s=o(3776),c=o(60636),l=o(94658),m=o(81258),p=o(89971);let d,f;function u(){return void 0===f&&(f=(()=>{try{return p.statSync("/run/.containerenv"),!0}catch{return!1}})()||(void 0===d&&(d=function(){try{return p.statSync("/.dockerenv"),!0}catch{return!1}}()||function(){try{return p.readFileSync("/proc/self/cgroup","utf8").includes("docker")}catch{return!1}}()),d)),f}const w=()=>{if("linux"!==t.platform)return!1;if(m.release().toLowerCase().includes("microsoft"))return!u();try{return!!p.readFileSync("/proc/version","utf8").toLowerCase().includes("microsoft")&&!u()}catch{return!1}},g=t.env.__IS_WSL_TEST__?w:w(),h=(()=>{const e="/mnt/";let r;return async function(){if(r)return r;const o="/etc/wsl.conf";let t=!1;try{await l.access(o,l.constants.F_OK),t=!0}catch{}if(!t)return e;const n=await l.readFile(o,{encoding:"utf8"}),i=/(?<!#.*)root\s*=\s*(?<mountPoint>.*)/g.exec(n);return i?(r=i.groups.mountPoint.trim(),r=r.endsWith("/")?r:`${r}/`,r):e}})(),x=async()=>g?(async()=>`${await h()}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe`)():`${t.env.SYSTEMROOT||t.env.windir||String.raw`C:\Windows`}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`;function y(e,r,o){const t=o=>Object.defineProperty(e,r,{value:o,enumerable:!0,writable:!0});return Object.defineProperty(e,r,{configurable:!0,enumerable:!0,get(){const e=o();return t(e),e},set(e){t(e)}}),e}const v=(0,s.promisify)(c.execFile),b=(0,s.promisify)(c.execFile);async function S(e){return async function(e,{humanReadableOutput:r=!0}={}){if("darwin"!==t.platform)throw new Error("macOS only");const o=r?[]:["-ss"],{stdout:n}=await b("osascript",["-e",e,o]);return n.trim()}(`tell application "Finder" to set app_path to application file id "${e}" as string\ntell application "System Events" to get value of property list item "CFBundleName" of property list file (app_path & ":Contents:Info.plist")`)}const E=(0,s.promisify)(c.execFile),P={AppXq0fevzme2pys62n3e0fbqa7peapykr8v:{name:"Edge",id:"com.microsoft.edge.old"},MSEdgeDHTML:{name:"Edge",id:"com.microsoft.edge"},MSEdgeHTM:{name:"Edge",id:"com.microsoft.edge"},"IE.HTTP":{name:"Internet Explorer",id:"com.microsoft.ie"},FirefoxURL:{name:"Firefox",id:"org.mozilla.firefox"},ChromeHTML:{name:"Chrome",id:"com.google.chrome"},BraveHTML:{name:"Brave",id:"com.brave.Browser"},BraveBHTML:{name:"Brave Beta",id:"com.brave.Browser.beta"},BraveSSHTM:{name:"Brave Nightly",id:"com.brave.Browser.nightly"}};class A extends Error{}const B=(0,s.promisify)(c.execFile);const F=(0,s.promisify)(c.execFile),C=i.dirname((0,a.fileURLToPath)("file:///Users/bookerzhao/Projects/cloudbase-turbo-delploy/mcp/node_modules/open/index.js")),L=i.join(C,"xdg-open"),{platform:T,arch:M}=t,H=async(e,r)=>{let o;for(const t of e)try{return await r(t)}catch(e){o=e}throw o},U=async e=>{if(e={wait:!1,background:!1,newInstance:!1,allowNonzeroExitCode:!1,...e},Array.isArray(e.app))return H(e.app,r=>U({...e,app:r}));let r,{name:o,arguments:i=[]}=e.app??{};if(i=[...i],Array.isArray(o))return H(o,r=>U({...e,app:{name:r,arguments:i}}));if("browser"===o||"browserPrivate"===o){const r={"com.google.chrome":"chrome","google-chrome.desktop":"chrome","com.brave.Browser":"brave","org.mozilla.firefox":"firefox","firefox.desktop":"firefox","com.microsoft.msedge":"edge","com.microsoft.edge":"edge","com.microsoft.edgemac":"edge","microsoft-edge.desktop":"edge"},a={chrome:"--incognito",brave:"--incognito",firefox:"--private-window",edge:"--inPrivate"},s=g?await async function(){const e=await x(),r=String.raw`(Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice").ProgId`,o=n.Buffer.from(r,"utf16le").toString("base64"),{stdout:t}=await F(e,["-NoProfile","-NonInteractive","-ExecutionPolicy","Bypass","-EncodedCommand",o],{encoding:"utf8"}),i=t.trim(),a={ChromeHTML:"com.google.chrome",BraveHTML:"com.brave.Browser",MSEdgeHTM:"com.microsoft.edge",FirefoxURL:"org.mozilla.firefox"};return a[i]?{id:a[i]}:{}}():await async function(){if("darwin"===t.platform){const e=await async function(){if("darwin"!==t.platform)throw new Error("macOS only");const{stdout:e}=await v("defaults",["read","com.apple.LaunchServices/com.apple.launchservices.secure","LSHandlers"]),r=/LSHandlerRoleAll = "(?!-)(?<id>[^"]+?)";\s+?LSHandlerURLScheme = (?:http|https);/.exec(e);return r?.groups.id??"com.apple.Safari"}();return{name:await S(e),id:e}}if("linux"===t.platform){const{stdout:e}=await B("xdg-mime",["query","default","x-scheme-handler/http"]),r=e.trim();return{name:r.replace(/.desktop$/,"").replace("-"," ").toLowerCase().replaceAll(/(?:^|\s|-)\S/g,e=>e.toUpperCase()),id:r}}if("win32"===t.platform)return async function(e=E){const{stdout:r}=await e("reg",["QUERY"," HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\http\\UserChoice","/v","ProgId"]),o=/ProgId\s*REG_SZ\s*(?<id>\S+)/.exec(r);if(!o)throw new A(`Cannot find Windows browser in stdout: ${JSON.stringify(r)}`);const{id:t}=o.groups,n=P[t];if(!n)throw new A(`Unknown browser ID: ${t}`);return n}();throw new Error("Only macOS, Linux, and Windows are supported")}();if(s.id in r){const t=r[s.id];return"browserPrivate"===o&&i.push(a[t]),U({...e,app:{name:k[t],arguments:i}})}throw new Error(`${s.name} is not supported as a default browser`)}const a=[],s={};if("darwin"===T)r="open",e.wait&&a.push("--wait-apps"),e.background&&a.push("--background"),e.newInstance&&a.push("--new"),o&&a.push("-a",o);else if("win32"===T||g&&!u()&&!o){r=await x(),a.push("-NoProfile","-NonInteractive","-ExecutionPolicy","Bypass","-EncodedCommand"),g||(s.windowsVerbatimArguments=!0);const t=["Start"];e.wait&&t.push("-Wait"),o?(t.push(`"\`"${o}\`""`),e.target&&i.push(e.target)):e.target&&t.push(`"${e.target}"`),i.length>0&&(i=i.map(e=>`"\`"${e}\`""`),t.push("-ArgumentList",i.join(","))),e.target=n.Buffer.from(t.join(" "),"utf16le").toString("base64")}else{if(o)r=o;else{const e=!C||"/"===C;let o=!1;try{await l.access(L,l.constants.X_OK),o=!0}catch{}r=t.versions.electron??("android"===T||e||!o)?"xdg-open":L}i.length>0&&a.push(...i),e.wait||(s.stdio="ignore",s.detached=!0)}"darwin"===T&&i.length>0&&a.push("--args",...i),e.target&&a.push(e.target);const m=c.spawn(r,a,s);return e.wait?new Promise((r,o)=>{m.once("error",o),m.once("close",t=>{!e.allowNonzeroExitCode&&t>0?o(new Error(`Exited with code ${t}`)):r(m)})}):(m.unref(),m)},$=(e,r)=>{if("string"!=typeof e&&!Array.isArray(e))throw new TypeError("Expected a valid `name`");const{arguments:o=[]}=r??{};if(null!=o&&!Array.isArray(o))throw new TypeError("Expected `appArguments` as Array type");return U({...r,app:{name:e,arguments:o}})};function _(e){if("string"==typeof e||Array.isArray(e))return e;const{[M]:r}=e;if(!r)throw new Error(`${M} is not supported`);return r}function I({[T]:e},{wsl:r}){if(r&&g)return _(r);if(!e)throw new Error(`${T} is not supported`);return _(e)}const k={};y(k,"chrome",()=>I({darwin:"google chrome",win32:"chrome",linux:["google-chrome","google-chrome-stable","chromium"]},{wsl:{ia32:"/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe",x64:["/mnt/c/Program Files/Google/Chrome/Application/chrome.exe","/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe"]}})),y(k,"brave",()=>I({darwin:"brave browser",win32:"brave",linux:["brave-browser","brave"]},{wsl:{ia32:"/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe",x64:["/mnt/c/Program Files/BraveSoftware/Brave-Browser/Application/brave.exe","/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe"]}})),y(k,"firefox",()=>I({darwin:"firefox",win32:String.raw`C:\Program Files\Mozilla Firefox\firefox.exe`,linux:"firefox"},{wsl:"/mnt/c/Program Files/Mozilla Firefox/firefox.exe"})),y(k,"edge",()=>I({darwin:"microsoft edge",win32:"msedge",linux:["microsoft-edge","microsoft-edge-dev"]},{wsl:"/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe"})),y(k,"browser",()=>"browser"),y(k,"browserPrivate",()=>"browserPrivate");const O=(e,r)=>{if("string"!=typeof e)throw new TypeError("Expected a `target`");return U({...r,target:e})}}};