@mearl/setup 2.22.5 → 2.23.0

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
@@ -2,25 +2,25 @@
2
2
 
3
3
  Mearl 环境的一次性安装、更新、卸载与配置工具。无需先全局安装 setup:
4
4
 
5
- 要求 Node.js >= 20.18.0。首次安装可执行 `npx @mearl/setup@latest` 显式选择最新版;
6
- 若出现 `Unknown operation: plugin`,先检查 `node --version`,再用 `npx @mearl/setup@latest --version`
5
+ 要求 Node.js >= 20.18.0。首次安装可执行 `npx @mearl/setup@2` 选择最新稳定 2.x;
6
+ 若出现 `Unknown operation: plugin`,先检查 `node --version`,再用 `npx @mearl/setup@2 --version`
7
7
  确认安装器版本。未指定版本时,npm 可能优先选择兼容旧 Node 的历史版本。
8
8
 
9
9
  ```bash
10
- npx @mearl/setup [install] [--local] [--cloud|--qoder-cloud] [--mcp]
11
- npx @mearl/setup update [--local] [--cloud|--qoder-cloud] [--mcp]
12
- npx @mearl/setup uninstall [--local] [--cloud|--qoder-cloud] [--mcp] [--full]
13
- npx @mearl/setup extension [--full] [--force]
14
- npx @mearl/setup plugin [name] <path>
15
- npx @mearl/setup plugin install <ali-skills add 参数...>
16
- npx @mearl/setup plugin uninstall <name>
17
- npx @mearl/setup provider <install|update|uninstall> <package|id>
10
+ npx @mearl/setup@2 [install] [--local] [--cloud|--qoder-cloud] [--mcp]
11
+ npx @mearl/setup@2 update [--local] [--cloud|--qoder-cloud] [--mcp]
12
+ npx @mearl/setup@2 uninstall [--local] [--cloud|--qoder-cloud] [--mcp] [--full]
13
+ npx @mearl/setup@2 extension [--full] [--force]
14
+ npx @mearl/setup@2 plugin [name] <path>
15
+ npx @mearl/setup@2 plugin install <ali-skills add 参数...>
16
+ npx @mearl/setup@2 plugin uninstall <name>
17
+ npx @mearl/setup@2 provider <install|update|uninstall> <package|id>
18
18
  ```
19
19
 
20
20
  浏览器 Provider 独立安装和演进。安装后运行 `mearl <providerId>` 查看该版本声明的能力、
21
21
  配置和启动参数。
22
22
 
23
- 在 Qoder Cloud Agent 环境中,使用 `npx @mearl/setup --qoder-cloud --yes` 选择 Qoder
23
+ 在 Qoder Cloud Agent 环境中,使用 `npx @mearl/setup@2 --qoder-cloud --yes` 选择 Qoder
24
24
  配对模式。它与 `--cloud` 安装同一套 cloud-server、client 和 Skill,只把 cloud-server
25
25
  模式记录为 Qoder;`mearl-cloud-server` 的命令交互保持不变,`start` 和 `restart` 输出新的
26
26
  配对指令后退出,不监听端口或保留守护进程。配对 URL 不包含 Qoder PAT。
@@ -30,7 +30,7 @@ npx @mearl/setup provider <install|update|uninstall> <package|id>
30
30
  一个命令安装 skill 并注册它的 CLI、SDK 和 MCP 能力:
31
31
 
32
32
  ```bash
33
- npx @mearl/setup plugin install trip/mearl --skill yuque-doc-fetch --yes
33
+ npx @mearl/setup@2 plugin install trip/mearl --branch 2.x --skill yuque-doc-fetch --yes
34
34
  mearl yuque read "https://aliyuque.antfin.com/group/book/doc"
35
35
  ```
36
36
 
@@ -45,7 +45,7 @@ registry 可访问时通过 Ali Skills 批量处理 `mearl` 与 `tdbank-account`
45
45
  更新发现 TDBank 插件缺少注册时,会在批量更新已跟踪项后通过一次 `add` 补装并恢复注册。
46
46
  该 registry 不用于下载插件。
47
47
  探测不可用时按普通外网流程只处理 Mearl Skill;内网批量命令失败时 setup 失败,不再逐项重试。
48
- `--skip-skill` 和 `--target-line` 安装不执行自动插件步骤。
48
+ 安装和更新默认选择 2.x 的最新稳定运行包。`--target-line` 可指定次版本系列。`--skip-skill` 和 `--target-line` 安装不执行自动插件步骤。
49
49
 
50
50
  Mearl client 内置 `buc`、`authx` 与 `tdbank` 的安装来源。CLI、SDK、MCP 或另一个插件首次调用尚未注册的这些插件时,会通过内部幂等流程安装并重试一次;其他未注册名称不会触发安装。BUC 与 AuthX 不随 setup 预装。
51
51
 
@@ -56,8 +56,8 @@ Mearl client 内置 `buc`、`authx` 与 `tdbank` 的安装来源。CLI、SDK、M
56
56
  已通过其他渠道分发的 skill 或自定义入口,可以直接传入路径注册:
57
57
 
58
58
  ```bash
59
- npx @mearl/setup plugin /absolute/path/to/yuque-doc-fetch
60
- npx @mearl/setup plugin custom ./skills/custom/entry.mjs
59
+ npx @mearl/setup@2 plugin /absolute/path/to/yuque-doc-fetch
60
+ npx @mearl/setup@2 plugin custom ./skills/custom/entry.mjs
61
61
  ```
62
62
 
63
63
  path 接受目录或具体文件;目录默认读取 `scripts/main.mjs` 或 `scripts/main.py`,相对路径基于调用工作目录解析。插件名优先使用显式 name,其次读取入口的 `name` metadata,最后回退到 Skill 目录名;常规注册只传 path,显式 name 仅用于覆盖或兼容旧入口。Python 插件要求 `python3 >= 3.9`,可通过 `MEARL_PYTHON` 指定解释器路径;setup 只验证入口可加载,不安装 Python,也不执行 `pip install`。
@@ -70,7 +70,7 @@ native-host 会幂等初始化 Skills 模式。基础环境补齐或初始化失
70
70
  不再需要插件时执行:
71
71
 
72
72
  ```bash
73
- npx @mearl/setup plugin uninstall yuque
73
+ npx @mearl/setup@2 plugin uninstall yuque
74
74
  ```
75
75
 
76
76
  若入口位于 `~/.agents/skills/<skill>/`,setup 会先执行
@@ -86,9 +86,9 @@ Provider 由 npm 包分发,但包本身无需暴露 CLI 或安装脚本。setu
86
86
  可创建的浏览器类型名称及其表单参数:
87
87
 
88
88
  ```bash
89
- npx @mearl/setup provider install @ali/mearl-provider-brow
90
- npx @mearl/setup provider update brow
91
- npx @mearl/setup provider uninstall brow
89
+ npx @mearl/setup@2 provider install @ali/mearl-provider-brow
90
+ npx @mearl/setup@2 provider update brow
91
+ npx @mearl/setup@2 provider uninstall brow
92
92
  ```
93
93
 
94
94
  安装参数接受包名、版本或 dist-tag;更新和卸载可使用 `providerId` 或完整包名。`@ali/*` 包的
@@ -100,8 +100,8 @@ npx @mearl/setup provider uninstall brow
100
100
  ## 行为
101
101
 
102
102
  - Mearl 自有 npm 包的安装和更新固定使用 `https://registry.npmjs.org/`,与最新版本查询使用同一来源;第三方包沿用当前包管理器的源配置。
103
- - `install` 可以省略;直接执行 `npx @mearl/setup` 等同于 `npx @mearl/setup install`。
104
- 以选项开头时也默认安装,例如 `npx @mearl/setup --cloud --yes`。
103
+ - `install` 可以省略;直接执行 `npx @mearl/setup@2` 等同于 `npx @mearl/setup@2 install`。
104
+ 以选项开头时也默认安装,例如 `npx @mearl/setup@2 --cloud --yes`。
105
105
  - `install` 未指定环境时默认 `--local`。
106
106
  - `-h` / `--help` 显示帮助,`-v` / `--version` 显示 setup 版本。
107
107
  - `update` 和 `uninstall` 未指定环境时,从当前 `PATH` 中的
@@ -149,19 +149,19 @@ npx @mearl/setup provider uninstall brow
149
149
  ## 安装或更新浏览器扩展
150
150
 
151
151
  ```bash
152
- npx @mearl/setup extension
152
+ npx @mearl/setup@2 extension
153
153
  ```
154
154
 
155
155
  首次使用时可一次安装完整的本地浏览器环境:
156
156
 
157
157
  ```bash
158
- npx @mearl/setup extension --full
158
+ npx @mearl/setup@2 extension --full
159
159
  ```
160
160
 
161
161
  首次安装、旧版 setup 扩展首次迁移,或 Native Host reload 不可用时才需要 CDP。如果
162
162
  Chrome 尚未开放 CDP,交互命令会提示打开
163
163
  `chrome://inspect/#remote-debugging`、启用远程调试并允许连接,然后等待安装完成。面向人的
164
- 安装指引不要添加 `--yes`。无 TTY 环境使用 `npx @mearl/setup extension --yes`;它只尝试
164
+ 安装指引不要添加 `--yes`。无 TTY 环境使用 `npx @mearl/setup@2 extension --yes`;它只尝试
165
165
  一次,CDP 不可用时立即中断。无法确认 setup 管理来源且 CDP 不可用时不会下载或修改插件
166
166
  目录,打开 CDP 后重新执行同一命令即可。Chrome 版本过低、缺少扩展安装所需的 CDP 方法时,
167
167
  命令会中断并提示升级 Chrome。
@@ -191,7 +191,7 @@ DevTools 面板的设置按钮会显示红点,快捷设置中提供“立即
191
191
 
192
192
  自动更新不会降级较新的 Host,也不会改动 cloud、MCP 或独立安装的 Mearl Skill。
193
193
  目标 npm 版本尚未发布、网络不可用或更新失败时,旧 Host 会继续运行;下一次扩展后台
194
- 生命周期可重新尝试,也可手动执行 `npx @mearl/setup update --local`。
194
+ 生命周期可重新尝试,也可手动执行 `npx @mearl/setup@2 update --local`。
195
195
 
196
196
  ## 人工与 Agent 使用
197
197
 
@@ -206,41 +206,41 @@ DevTools 面板的设置按钮会显示红点,快捷设置中提供“立即
206
206
 
207
207
  ```bash
208
208
  # 默认安装本地浏览器环境
209
- npx @mearl/setup
209
+ npx @mearl/setup@2
210
210
 
211
211
  # 与上一条等价
212
- npx @mearl/setup install
212
+ npx @mearl/setup@2 install
213
213
 
214
214
  # Agent / CI 无交互安装
215
- npx @mearl/setup --yes
215
+ npx @mearl/setup@2 --yes
216
216
 
217
217
  # 安装云端 Agent 环境
218
- npx @mearl/setup --cloud
218
+ npx @mearl/setup@2 --cloud
219
219
 
220
220
  # 同一台机器同时作为本地浏览器宿主和云端 Agent
221
- npx @mearl/setup --local --cloud
221
+ npx @mearl/setup@2 --local --cloud
222
222
 
223
223
  # 自动更新当前 PATH 中检测到的全部 Mearl 环境
224
- npx @mearl/setup update
224
+ npx @mearl/setup@2 update
225
225
 
226
226
  # 独立安装或更新到最新浏览器扩展
227
- npx @mearl/setup extension
227
+ npx @mearl/setup@2 extension
228
228
 
229
229
  # 安装完整本地环境(client、Native Host、Skill 和扩展)
230
- npx @mearl/setup extension --full
230
+ npx @mearl/setup@2 extension --full
231
231
 
232
232
  # 只卸载本地环境
233
- npx @mearl/setup uninstall --local
233
+ npx @mearl/setup@2 uninstall --local
234
234
 
235
235
  # 自动检测并无交互卸载
236
- npx @mearl/setup uninstall --yes
236
+ npx @mearl/setup@2 uninstall --yes
237
237
 
238
238
  # 卸载环境,并清理全部 CLI 插件与 Provider
239
- npx @mearl/setup uninstall --full
239
+ npx @mearl/setup@2 uninstall --full
240
240
 
241
241
  # 安装可选浏览器 Provider
242
- npx @mearl/setup provider install @ali/mearl-provider-brow
243
- npx @mearl/setup provider install @ali/mearl-provider-agentbay
242
+ npx @mearl/setup@2 provider install @ali/mearl-provider-brow
243
+ npx @mearl/setup@2 provider install @ali/mearl-provider-agentbay
244
244
  ```
245
245
 
246
246
  原有 Mearl 环境包的 npm/npx 安装方式和 CLI 保持可用;setup 是统一的便利入口。
@@ -6,7 +6,7 @@ import { runUnifiedCheck } from '@mearl/client/check';
6
6
  import { CLIENT_VERSION, invoke as invokeLocalMearl } from '@mearl/client/local';
7
7
  import extractZip from 'extract-zip';
8
8
  import WebSocket from 'ws';
9
- import { compareMearlReleaseVersions, isMearlReleaseVersion } from './version.js';
9
+ import { compareMearlReleaseVersions, isMearlReleaseVersion, parseMearlReleaseVersion, } from './version.js';
10
10
  export const MEARL_EXTENSION_DOWNLOAD_PAGE = 'https://mearl.alibaba-inc.com/';
11
11
  export const MEARL_EXTENSION_REMOTE_CONFIG_URL = `${MEARL_EXTENSION_DOWNLOAD_PAGE}config.json`;
12
12
  export const MEARL_EXTENSION_DIRECTORY_NAME = 'chrome-extension';
@@ -78,22 +78,16 @@ export async function fetchBrowserExtensionRelease(fetchImpl = fetch) {
78
78
  throw new Error(`Extension config returned HTTP ${response.status}`);
79
79
  }
80
80
  const config = (await response.json());
81
+ const version = parseMearlReleaseVersion(config.latestVersion);
82
+ if (version?.major !== 2 || version.channel !== 'stable') {
83
+ throw new Error('Remote extension config must select a stable Mearl 2.x release');
84
+ }
81
85
  return validateExtensionRelease({
82
86
  archiveUrl: typeof config.downloadUrl === 'string' ? config.downloadUrl : '',
83
87
  ...(typeof config.downloadSha256 === 'string' ? { sha256: config.downloadSha256 } : {}),
84
- version: typeof config.latestVersion === 'string' ? config.latestVersion : '',
88
+ version: version.raw,
85
89
  });
86
90
  }
87
- async function resolveExtensionArchive(fetchImpl) {
88
- const response = await fetchImpl(MEARL_EXTENSION_DOWNLOAD_PAGE, { redirect: 'follow' });
89
- if (!response.ok) {
90
- throw new Error(`Extension release page returned HTTP ${response.status}`);
91
- }
92
- const version = findLatestExtensionVersion(await response.text());
93
- if (!version)
94
- throw new Error('No Mearl browser extension archive was found on the release page');
95
- return { version, archiveUrl: extensionArchiveUrl(version) };
96
- }
97
91
  function readDevToolsActivePort(userDataDirectory) {
98
92
  try {
99
93
  const content = fs
@@ -475,7 +469,7 @@ export async function installMearlBrowserExtension(options = {}, dependencies =
475
469
  const targetDirectory = path.resolve(options.targetDirectory ?? resolveMearlExtensionDirectory());
476
470
  const release = options.release
477
471
  ? validateExtensionRelease(options.release)
478
- : await resolveExtensionArchive(fetchImpl);
472
+ : await fetchBrowserExtensionRelease(fetchImpl);
479
473
  const chromeUserDataDirectory = options.chromeUserDataDirectory ?? resolveChromeUserDataDirectory();
480
474
  const waitForCdpMs = Math.max(0, options.waitForCdpMs ?? 0);
481
475
  const useSharedCdpSession = !dependencies.inspectInstallation && !dependencies.loadUnpacked;
package/dist/cli.js CHANGED
@@ -163,7 +163,7 @@ function printHelp() {
163
163
  const output = `Mearl Setup v${SETUP_VERSION}
164
164
 
165
165
  Usage:
166
- npx @mearl/setup [command] [options]
166
+ npx @mearl/setup@2 [command] [options]
167
167
 
168
168
  Environment commands:
169
169
  install [options] Install an environment (default command; target: local)
@@ -186,7 +186,7 @@ Environment options:
186
186
  --cloud Manage cloud packages in WebSocket server mode
187
187
  --qoder-cloud Manage cloud packages in Qoder pairing mode
188
188
  --mcp Manage @mearl/mcp-server and its configuration
189
- --target-line <major.minor.x> Use the latest packages in one release line
189
+ --target-line <major.minor.x> Override the default 2.x package range
190
190
  --skip-skill Keep the independently managed Mearl Skill unchanged
191
191
 
192
192
  Uninstall options:
@@ -203,14 +203,14 @@ General options:
203
203
  --help, -h Show this help
204
204
 
205
205
  Examples:
206
- npx @mearl/setup
207
- npx @mearl/setup --cloud
208
- npx @mearl/setup --local --cloud
209
- npx @mearl/setup update
210
- npx @mearl/setup uninstall --full
211
- npx @mearl/setup plugin uninstall yuque
212
- npx @mearl/setup provider install @ali/mearl-provider-brow
213
- npx @mearl/setup extension --full`;
206
+ npx @mearl/setup@2
207
+ npx @mearl/setup@2 --cloud
208
+ npx @mearl/setup@2 --local --cloud
209
+ npx @mearl/setup@2 update
210
+ npx @mearl/setup@2 uninstall --full
211
+ npx @mearl/setup@2 plugin uninstall yuque
212
+ npx @mearl/setup@2 provider install @ali/mearl-provider-brow
213
+ npx @mearl/setup@2 extension --full`;
214
214
  console.log(output);
215
215
  }
216
216
  export async function main(argv = process.argv.slice(2), interactiveTerminal = process.stdin.isTTY === true && process.stdout.isTTY === true, dependencies = {}) {
@@ -220,7 +220,7 @@ export async function main(argv = process.argv.slice(2), interactiveTerminal = p
220
220
  }
221
221
  catch (error) {
222
222
  console.error(error instanceof Error ? error.message : String(error));
223
- console.error('Run "npx @mearl/setup --help" for usage.');
223
+ console.error('Run "npx @mearl/setup@2 --help" for usage.');
224
224
  return 2;
225
225
  }
226
226
  if (parsed.help) {
@@ -325,11 +325,11 @@ export async function main(argv = process.argv.slice(2), interactiveTerminal = p
325
325
  if (result.cdpError) {
326
326
  console.error(`CDP installation failed: ${result.cdpError}`);
327
327
  if (isUnsupportedCdpMethodError(result.cdpError)) {
328
- console.error('This Chrome version does not support installing extensions through CDP. Update Chrome to version 145 or later, then rerun: npx @mearl/setup extension');
328
+ console.error('This Chrome version does not support installing extensions through CDP. Update Chrome to version 145 or later, then rerun: npx @mearl/setup@2 extension');
329
329
  extensionFailureIsTerminal = true;
330
330
  }
331
331
  else {
332
- console.error('Open chrome://inspect/#remote-debugging, enable remote debugging, approve the connection, then rerun: npx @mearl/setup extension');
332
+ console.error('Open chrome://inspect/#remote-debugging, enable remote debugging, approve the connection, then rerun: npx @mearl/setup@2 extension');
333
333
  extensionFailureIsTerminal = parsed.yes;
334
334
  }
335
335
  }
package/dist/lifecycle.js CHANGED
@@ -79,7 +79,7 @@ async function runLifecycleCommand(runner, command, args, env, label, writeLine,
79
79
  }
80
80
  }
81
81
  async function runPackageOperation(installation, operation, packages, targetLine, runner, env, label, writeLine) {
82
- const command = buildGlobalPackageCommand(installation, operation, packages, targetLine);
82
+ const command = buildGlobalPackageCommand(installation, operation, packages, targetLine ?? '2.x');
83
83
  writeLine(`${label}: ${command.manager}`);
84
84
  const result = await runLifecycleCommand(runner, command.command, command.args, operation === 'uninstall'
85
85
  ? env
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mearl/setup",
3
- "version": "2.22.5",
3
+ "version": "2.23.0",
4
4
  "description": "One-shot environment setup and configuration for Mearl",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -65,9 +65,9 @@
65
65
  "commander": "^14.0.3",
66
66
  "extract-zip": "^2.0.1",
67
67
  "ws": "^8.18.3",
68
- "@mearl/client": "2.22.5",
69
- "@mearl/provider": "2.22.5",
70
- "@mearl/daemon-core": "2.22.5"
68
+ "@mearl/client": "2.23.0",
69
+ "@mearl/provider": "2.23.0",
70
+ "@mearl/daemon-core": "2.23.0"
71
71
  },
72
72
  "devDependencies": {
73
73
  "@types/node": "^24.9.1",