@mearl/client 2.16.1 → 2.16.2

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
@@ -171,7 +171,7 @@ const result = await invokePlugin(
171
171
  );
172
172
  ```
173
173
 
174
- MCP Server 通过固定工具 `mearl_plugin` 接受同样的 `plugin`、`command` 和 `input`,不会把插件子命令动态扩展成 MCP 工具。SDK 与 MCP 不接受任意入口路径;调用官方目录中尚未注册的插件时,会通过匹配当前 client 版本的 setup 自动安装并重试一次。未知名称仍返回 `PLUGIN_NOT_REGISTERED`。
174
+ MCP Server 通过固定工具 `mearl_plugin` 接受同样的 `plugin`、`command` 和 `input`,不会把插件子命令动态扩展成 MCP 工具。SDK 与 MCP 不接受任意入口路径;调用尚未注册的 `buc` 或 `tdbank` 时,会通过匹配当前 client 版本的 setup 自动安装并重试一次。其他未注册名称返回 `PLUGIN_NOT_REGISTERED`。
175
175
 
176
176
  注册记录在 `~/.mearl/plugins/<name>.json`,保存入口路径和可选的简短描述;skill 业务代码原地更新直接生效,换路径或更新描述后重新注册。
177
177
  `plugin uninstall <name>` 会对 `~/.agents/skills` 中的全局 Skill 调用 `ali-skills remove --global --yes`,
@@ -201,7 +201,6 @@ MCP Server 通过固定工具 `mearl_plugin` 接受同样的 `plugin`、`command
201
201
  | 组合调用 | `run_actions` |
202
202
  | 页面感知 | `page_snapshot` `page_screenshot` `page_selected_element` `page_frames` |
203
203
  | 环境与 Cookie | `set_device_emulation` `set_app_profile` `set_timezone` `get_cookie` `set_cookie` |
204
- | 录制 | `record_start` `record_stop` |
205
204
  | 浏览器 | `browser_list` `browser_release` `browser_launch` `browser_close` |
206
205
 
207
206
  页面交互动作(`page_click` / `page_drag` / `page_type` / `page_hover` / `page_scroll` / `page_press` / `page_upload`)默认等待异步稳定并返回 `{ action, observation }`。参数、ref 或目标解析在派发前失败时返回 `action.stage: "precondition"`,省略无意义的 `observation` / `diagnostics`,CLI 退出码为 1。传 `observe: false` 可执行裸动作;需要同一动作期间的新增 error logs 和业务 requests 时传 `diagnostics: true`,埋点通过 `diagnostics.events` 按需开启。`page_eval` 默认裸执行,可按需开启观察或诊断。
package/dist/cli.js CHANGED
@@ -46,7 +46,6 @@ const CATEGORIES = [
46
46
  title: '环境与 Cookie',
47
47
  names: ['set_device_emulation', 'set_app_profile', 'set_timezone', 'get_cookie', 'set_cookie'],
48
48
  },
49
- { title: '录制', names: ['record_start', 'record_stop'] },
50
49
  {
51
50
  title: '浏览器',
52
51
  names: ['browser_list', 'browser_release', 'browser_launch', 'browser_close'],
@@ -59,7 +58,7 @@ const BUILTIN_COMMANDS = [
59
58
  examples: ['check'],
60
59
  },
61
60
  ];
62
- const OFFICIAL_PLUGIN_COMMANDS = listOfficialPluginNames().map(name => ({
61
+ const AUTO_INSTALL_PLUGIN_COMMANDS = listOfficialPluginNames().map(name => ({
63
62
  name,
64
63
  description: findOfficialPlugin(name).description,
65
64
  examples: [name],
@@ -67,7 +66,7 @@ const OFFICIAL_PLUGIN_COMMANDS = listOfficialPluginNames().map(name => ({
67
66
  const SUGGESTABLE_COMMANDS = [
68
67
  ...COMMANDS,
69
68
  ...BUILTIN_COMMANDS,
70
- ...OFFICIAL_PLUGIN_COMMANDS,
69
+ ...AUTO_INSTALL_PLUGIN_COMMANDS,
71
70
  ];
72
71
  const ADVANCED_BUILTIN_COMMANDS = new Set(['connector_list']);
73
72
  const PLUGIN_HOST_OPTIONS = new Set([
@@ -155,14 +154,6 @@ function printUsage(commandName, version) {
155
154
  });
156
155
  lines.push('', '已注册插件:', ...entries);
157
156
  }
158
- const installed = new Set(plugins);
159
- const available = listOfficialPluginNames().filter(name => !installed.has(name));
160
- if (available.length) {
161
- lines.push('', '官方插件(首次调用自动安装):', ...available.map(name => {
162
- const description = findOfficialPlugin(name).description;
163
- return ` ${name.padEnd(TOP_LEVEL_COMMAND_NAME_WIDTH)}${description}`;
164
- }));
165
- }
166
157
  }
167
158
  catch (error) {
168
159
  lines.push('', error instanceof Error ? error.message : String(error));
@@ -790,25 +790,6 @@ export declare const COMMANDS: readonly [{
790
790
  readonly description: "目标标签页 ID";
791
791
  }];
792
792
  readonly examples: ["page_selected_element", "page_selected_element --output ./element.png"];
793
- }, {
794
- readonly name: "record_start";
795
- readonly description: "开始录制用户操作";
796
- readonly params: [{
797
- readonly name: "tabId";
798
- readonly type: "number";
799
- readonly description: "目标标签页 ID,从 tab_list 获取";
800
- }];
801
- readonly examples: ["record_start"];
802
- }, {
803
- readonly name: "record_stop";
804
- readonly description: "停止录制并返回完整结果(操作 + 关联请求);未在录制时不报错,返回 wasRecording: false";
805
- readonly summary: "停止录制并返回操作和关联请求";
806
- readonly params: [{
807
- readonly name: "tabId";
808
- readonly type: "number";
809
- readonly description: "目标标签页 ID,从 tab_list 获取";
810
- }];
811
- readonly examples: ["record_stop"];
812
793
  }, {
813
794
  readonly name: "set_device_emulation";
814
795
  readonly description: "把目标 tab 切换为移动端模拟(视口/DPR/UA/触摸/视觉比例),等价 DevTools 设备工具栏,作用域 per-tab;需保持调试控制才持续生效";
package/dist/commands.js CHANGED
@@ -740,20 +740,6 @@ export const COMMANDS = [
740
740
  ],
741
741
  examples: ['page_selected_element', 'page_selected_element --output ./element.png'],
742
742
  },
743
- // ── 录制 ──────────────────────────────────────────────────────────────────
744
- {
745
- name: 'record_start',
746
- description: '开始录制用户操作',
747
- params: [{ name: 'tabId', type: 'number', description: '目标标签页 ID,从 tab_list 获取' }],
748
- examples: ['record_start'],
749
- },
750
- {
751
- name: 'record_stop',
752
- description: '停止录制并返回完整结果(操作 + 关联请求);未在录制时不报错,返回 wasRecording: false',
753
- summary: '停止录制并返回操作和关联请求',
754
- params: [{ name: 'tabId', type: 'number', description: '目标标签页 ID,从 tab_list 获取' }],
755
- examples: ['record_stop'],
756
- },
757
743
  // ── 移动端模拟 ────────────────────────────────────────────────────────────
758
744
  {
759
745
  name: 'set_device_emulation',
@@ -610,9 +610,6 @@ export interface SetCookieResult {
610
610
  path: string;
611
611
  reloaded: boolean;
612
612
  }
613
- export interface RecordParams {
614
- tabId?: number;
615
- }
616
613
  export interface RequestDomainPermissionParams {
617
614
  domain: string;
618
615
  }
@@ -779,14 +776,6 @@ export interface BrowserActionMap {
779
776
  request: SetCookieParams;
780
777
  response: SetCookieResult;
781
778
  };
782
- record_start: {
783
- request: RecordParams;
784
- response: unknown;
785
- };
786
- record_stop: {
787
- request: RecordParams;
788
- response: unknown;
789
- };
790
779
  request_domain_permission: {
791
780
  request: RequestDomainPermissionParams;
792
781
  response: unknown;
@@ -842,8 +831,6 @@ export declare const BROWSER_ACTIONS: {
842
831
  readonly set_timezone: true;
843
832
  readonly get_cookie: true;
844
833
  readonly set_cookie: true;
845
- readonly record_start: true;
846
- readonly record_stop: true;
847
834
  readonly request_domain_permission: true;
848
835
  readonly run_actions: true;
849
836
  };
@@ -885,8 +872,6 @@ export declare const BROWSER_COMMAND_ACTIONS: {
885
872
  readonly set_timezone: true;
886
873
  readonly get_cookie: true;
887
874
  readonly set_cookie: true;
888
- readonly record_start: true;
889
- readonly record_stop: true;
890
875
  readonly request_domain_permission: true;
891
876
  readonly run_actions: true;
892
877
  };
@@ -925,8 +910,6 @@ export declare const EXTENSION_BROWSER_ACTIONS: {
925
910
  readonly set_timezone: true;
926
911
  readonly get_cookie: true;
927
912
  readonly set_cookie: true;
928
- readonly record_start: true;
929
- readonly record_stop: true;
930
913
  readonly request_domain_permission: true;
931
914
  readonly run_actions: true;
932
915
  };
@@ -97,8 +97,6 @@ export const BROWSER_ACTIONS = {
97
97
  set_timezone: true,
98
98
  get_cookie: true,
99
99
  set_cookie: true,
100
- record_start: true,
101
- record_stop: true,
102
100
  request_domain_permission: true,
103
101
  run_actions: true,
104
102
  };
@@ -140,8 +138,6 @@ export const BROWSER_COMMAND_ACTIONS = {
140
138
  set_timezone: true,
141
139
  get_cookie: true,
142
140
  set_cookie: true,
143
- record_start: true,
144
- record_stop: true,
145
141
  request_domain_permission: true,
146
142
  run_actions: true,
147
143
  };
@@ -180,8 +176,6 @@ export const EXTENSION_BROWSER_ACTIONS = {
180
176
  set_timezone: true,
181
177
  get_cookie: true,
182
178
  set_cookie: true,
183
- record_start: true,
184
- record_stop: true,
185
179
  request_domain_permission: true,
186
180
  run_actions: true,
187
181
  };
package/dist/index.d.ts CHANGED
@@ -8,7 +8,7 @@ export { UnifiedClient, UnifiedClient as MearlClient, decodeBrowserTarget, invok
8
8
  export type { UnifiedClientOptions, UnifiedInvokeOptions, UnifiedInvokeOptions as InvokeOptions, } from './unified.js';
9
9
  export type { PluginInvocation, PluginInvokeOptions } from './plugin.js';
10
10
  export { APP_PROFILE_NAMES, BROWSER_DEVICE_PRESET_NAMES, BROWSER_ACTIONS, BROWSER_COMMAND_ACTIONS, EXTENSION_BROWSER_ACTIONS, PAGE_ACT_ACTIONS, SEND_REQUEST_MAX_FILES, SEND_REQUEST_MAX_TOTAL_BASE64_FILE_BYTES, SEND_REQUEST_MAX_TOTAL_FILE_BYTES, isBrowserAction, isBrowserCapabilityAction, isBrowserCommandAction, isExtensionBrowserAction, } from './generated-browser-action-protocol.js';
11
- export type { ActionStep, AppProfileName, BrowserAction, BrowserActionMap, BrowserActionRequest, BrowserActionResponse, BrowserCapabilities, BrowserCapabilityAction, BrowserCloseParams, BrowserCommandAction, BrowserInfo, BrowserInfoBase, BrowserJsonValue, BrowserLaunchParams, BrowserProviderOperation, BrowserListResult, BrowserPairingInfo, BrowserReleaseFailure, BrowserReleaseResult, BrowserProviderDefinition, BrowserProviderIdentity, BrowserProviderInputSchema, BrowserProviderListResult, BrowserReference, BrowserDetails, BrowserSource, BrowserStatus, BrowserScreenshotKind, BrowserTransport, CaptureCheckpointParams, CaptureCheckpointResult, BrowserDevicePresetName, BrowserEmulationOptions, ExtensionBrowserAction, GetCookieParams, GetCookieResult, GetEventsParams, GetLogsParams, GetMocksParams, GetRequestsParams, ManagedBrowserInfo, PageClickParams, PageDragEndpoint, PageDragParams, PageDragPoint, PageActAction, PageDiagnosticsOptions, PageDiagnosticsSetting, PageEvalParams, PageFramesParams, PageHoverParams, PageNavigateParams, PageObservationWaitOptions, PagePressParams, PageScreenshotParams, PageScrollParams, PageSelectedElementParams, PageSnapshotParams, PageSnapshotQuery, PageTypeParams, PageUploadParams, PageWaitParams, RecordParams, RegularBrowserInfo, RequestDomainPermissionParams, RulesResult, RunActionName, RunActionsParams, SelectBrowserParams, SelectBrowserResult, SendRequestFile, SendRequestFormValue, SendMtopRequestParams, SendRequestParams, SetAppProfileParams, SetCookieParams, SetCookieResult, SetDeviceEmulationParams, SetMockParams, SetRuleParams, SetTimezoneParams, SetTimezoneResult, TabCloseParams, TabOpenParams, } from './generated-browser-action-protocol.js';
11
+ export type { ActionStep, AppProfileName, BrowserAction, BrowserActionMap, BrowserActionRequest, BrowserActionResponse, BrowserCapabilities, BrowserCapabilityAction, BrowserCloseParams, BrowserCommandAction, BrowserInfo, BrowserInfoBase, BrowserJsonValue, BrowserLaunchParams, BrowserProviderOperation, BrowserListResult, BrowserPairingInfo, BrowserReleaseFailure, BrowserReleaseResult, BrowserProviderDefinition, BrowserProviderIdentity, BrowserProviderInputSchema, BrowserProviderListResult, BrowserReference, BrowserDetails, BrowserSource, BrowserStatus, BrowserScreenshotKind, BrowserTransport, CaptureCheckpointParams, CaptureCheckpointResult, BrowserDevicePresetName, BrowserEmulationOptions, ExtensionBrowserAction, GetCookieParams, GetCookieResult, GetEventsParams, GetLogsParams, GetMocksParams, GetRequestsParams, ManagedBrowserInfo, PageClickParams, PageDragEndpoint, PageDragParams, PageDragPoint, PageActAction, PageDiagnosticsOptions, PageDiagnosticsSetting, PageEvalParams, PageFramesParams, PageHoverParams, PageNavigateParams, PageObservationWaitOptions, PagePressParams, PageScreenshotParams, PageScrollParams, PageSelectedElementParams, PageSnapshotParams, PageSnapshotQuery, PageTypeParams, PageUploadParams, PageWaitParams, RegularBrowserInfo, RequestDomainPermissionParams, RulesResult, RunActionName, RunActionsParams, SelectBrowserParams, SelectBrowserResult, SendRequestFile, SendRequestFormValue, SendMtopRequestParams, SendRequestParams, SetAppProfileParams, SetCookieParams, SetCookieResult, SetDeviceEmulationParams, SetMockParams, SetRuleParams, SetTimezoneParams, SetTimezoneResult, TabCloseParams, TabOpenParams, } from './generated-browser-action-protocol.js';
12
12
  import { type UnifiedInvokeOptions } from './unified.js';
13
13
  import type * as Protocol from './generated-browser-action-protocol.js';
14
14
  export declare function tabCheckpoint(params?: Protocol.CaptureCheckpointParams, options?: UnifiedInvokeOptions): Promise<Protocol.BrowserActionResponse<'tab_checkpoint'>>;
@@ -18,61 +18,6 @@ export declare const OFFICIAL_PLUGINS: {
18
18
  readonly setup: "alibaba";
19
19
  readonly skill: "tdbank-account";
20
20
  };
21
- readonly agentforce: {
22
- readonly description: "管理 AgentForce 数字员工";
23
- readonly installArgs: readonly ["trip/mearl", "--skill", "agentforce-manage", "--yes"];
24
- readonly skill: "agentforce-manage";
25
- };
26
- readonly aliway: {
27
- readonly description: "读取和管理 Aliway 内容";
28
- readonly installArgs: readonly ["trip/mearl", "--skill", "aliway-doc-fetch", "--yes"];
29
- readonly skill: "aliway-doc-fetch";
30
- };
31
- readonly ata: {
32
- readonly description: "读取和管理 ATA 内容";
33
- readonly installArgs: readonly ["trip/mearl", "--skill", "ata-doc-fetch", "--yes"];
34
- readonly skill: "ata-doc-fetch";
35
- };
36
- readonly code: {
37
- readonly description: "读取 code.alibaba-inc.com 代码";
38
- readonly installArgs: readonly ["trip/mearl", "--skill", "code-file-fetch", "--yes"];
39
- readonly skill: "code-file-fetch";
40
- };
41
- readonly dingtalk: {
42
- readonly description: "读取钉钉文档与表格";
43
- readonly installArgs: readonly ["trip/mearl", "--skill", "dingtalk-doc-fetch", "--yes"];
44
- readonly skill: "dingtalk-doc-fetch";
45
- };
46
- readonly figma: {
47
- readonly description: "提取 Figma 设计数据与素材";
48
- readonly installArgs: readonly ["trip/mearl", "--skill", "figma-design-fetch", "--yes"];
49
- readonly skill: "figma-design-fetch";
50
- };
51
- readonly flyeye: {
52
- readonly description: "查询 FlyEye 分布式链路日志";
53
- readonly installArgs: readonly ["trip/mearl", "--skill", "flyeye-trace-query", "--yes"];
54
- readonly skill: "flyeye-trace-query";
55
- };
56
- readonly jarvis: {
57
- readonly description: "查询和处理 Jarvis 机票退改";
58
- readonly installArgs: readonly ["trip/mearl", "--skill", "jarvis-order-operations", "--yes"];
59
- readonly skill: "jarvis-order-operations";
60
- };
61
- readonly loginsight: {
62
- readonly description: "分析 LogInsight 全链路日志";
63
- readonly installArgs: readonly ["trip/mearl", "--skill", "loginsight-analyze", "--yes"];
64
- readonly skill: "loginsight-analyze";
65
- };
66
- readonly tps: {
67
- readonly description: "上传 TPS 图片并获取 CDN 地址";
68
- readonly installArgs: readonly ["trip/mearl", "--skill", "tps-image-upload", "--yes"];
69
- readonly skill: "tps-image-upload";
70
- };
71
- readonly yuque: {
72
- readonly description: "读取和管理阿里语雀文档";
73
- readonly installArgs: readonly ["trip/mearl", "--skill", "yuque-doc-fetch", "--yes"];
74
- readonly skill: "yuque-doc-fetch";
75
- };
76
21
  };
77
22
  export type OfficialPluginName = keyof typeof OFFICIAL_PLUGINS;
78
23
  export declare function findOfficialPlugin(name: string): OfficialPluginDefinition | undefined;
@@ -12,61 +12,6 @@ export const OFFICIAL_PLUGINS = {
12
12
  setup: 'alibaba',
13
13
  skill: 'tdbank-account',
14
14
  },
15
- agentforce: {
16
- description: '管理 AgentForce 数字员工',
17
- installArgs: ['trip/mearl', '--skill', 'agentforce-manage', '--yes'],
18
- skill: 'agentforce-manage',
19
- },
20
- aliway: {
21
- description: '读取和管理 Aliway 内容',
22
- installArgs: ['trip/mearl', '--skill', 'aliway-doc-fetch', '--yes'],
23
- skill: 'aliway-doc-fetch',
24
- },
25
- ata: {
26
- description: '读取和管理 ATA 内容',
27
- installArgs: ['trip/mearl', '--skill', 'ata-doc-fetch', '--yes'],
28
- skill: 'ata-doc-fetch',
29
- },
30
- code: {
31
- description: '读取 code.alibaba-inc.com 代码',
32
- installArgs: ['trip/mearl', '--skill', 'code-file-fetch', '--yes'],
33
- skill: 'code-file-fetch',
34
- },
35
- dingtalk: {
36
- description: '读取钉钉文档与表格',
37
- installArgs: ['trip/mearl', '--skill', 'dingtalk-doc-fetch', '--yes'],
38
- skill: 'dingtalk-doc-fetch',
39
- },
40
- figma: {
41
- description: '提取 Figma 设计数据与素材',
42
- installArgs: ['trip/mearl', '--skill', 'figma-design-fetch', '--yes'],
43
- skill: 'figma-design-fetch',
44
- },
45
- flyeye: {
46
- description: '查询 FlyEye 分布式链路日志',
47
- installArgs: ['trip/mearl', '--skill', 'flyeye-trace-query', '--yes'],
48
- skill: 'flyeye-trace-query',
49
- },
50
- jarvis: {
51
- description: '查询和处理 Jarvis 机票退改',
52
- installArgs: ['trip/mearl', '--skill', 'jarvis-order-operations', '--yes'],
53
- skill: 'jarvis-order-operations',
54
- },
55
- loginsight: {
56
- description: '分析 LogInsight 全链路日志',
57
- installArgs: ['trip/mearl', '--skill', 'loginsight-analyze', '--yes'],
58
- skill: 'loginsight-analyze',
59
- },
60
- tps: {
61
- description: '上传 TPS 图片并获取 CDN 地址',
62
- installArgs: ['trip/mearl', '--skill', 'tps-image-upload', '--yes'],
63
- skill: 'tps-image-upload',
64
- },
65
- yuque: {
66
- description: '读取和管理阿里语雀文档',
67
- installArgs: ['trip/mearl', '--skill', 'yuque-doc-fetch', '--yes'],
68
- skill: 'yuque-doc-fetch',
69
- },
70
15
  };
71
16
  export function findOfficialPlugin(name) {
72
17
  return Object.hasOwn(OFFICIAL_PLUGINS, name)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mearl/client",
3
- "version": "2.16.1",
3
+ "version": "2.16.2",
4
4
  "description": "Unified Mearl SDK & CLI for local and remote browsers",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -59,8 +59,8 @@
59
59
  "commander": "^15.0.0",
60
60
  "fastest-levenshtein": "^1.0.16",
61
61
  "ws": "^8.18.0",
62
- "@mearl/cloud-types": "2.16.1",
63
- "@mearl/provider": "2.16.1"
62
+ "@mearl/cloud-types": "2.16.2",
63
+ "@mearl/provider": "2.16.2"
64
64
  },
65
65
  "devDependencies": {
66
66
  "@types/node": "^24.9.1",