agentpage 0.0.40 → 0.0.42

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
@@ -259,7 +259,21 @@ Round 3: 执行 C → REMAINING: DONE
259
259
  | `autoSnapshot` | `boolean` | `true` | chat 前自动生成首轮快照 |
260
260
  | `snapshotOptions` | `SnapshotOptions` | `{}` | 快照参数(深度、裁剪、节点上限等) |
261
261
  | `roundStabilityWait` | `RoundStabilityWaitOptions` | `{ enabled: true }` | 轮次后稳定等待配置 |
262
- | `panel` | `boolean \| PanelOptions` | - | 内置 UI 面板配置 |
262
+ | `panel` | `boolean \| PanelOptions` | - | 内置 UI 面板配置(见下方 PanelOptions 表) |
263
+
264
+ ### 面板配置(PanelOptions)
265
+
266
+ | 参数 | 类型 | 默认值 | 说明 |
267
+ | --- | --- | --- | --- |
268
+ | `container` | `HTMLElement` | `document.body` | 面板挂载容器 |
269
+ | `mount` | `boolean` | `true` | 构造时是否自动挂载到 DOM |
270
+ | `enableMask` | `boolean` | `true` | Agent 运行时是否显示操作遮罩 |
271
+ | `maskOpacity` | `number` | `0.15` | 遮罩背景透明度(0–1,0 全透明,1 纯白) |
272
+ | `expanded` | `boolean` | `false` | 面板初始展开状态 |
273
+ | `title` | `string` | `"AutoPilot"` | 面板标题 |
274
+ | `placeholder` | `string` | `"输入要执行的网页操作..."` | 输入框占位文本 |
275
+ | `maskText` | `string` | `"AutoPilot 正在操作页面"` | 遮罩提示文本 |
276
+ | `emptyText` | `string` | `"发送一条消息,AI 将帮你操作页面"` | 空状态提示文本 |
263
277
 
264
278
  ### Provider 支持矩阵
265
279
 
@@ -271,6 +285,7 @@ Round 3: 执行 C → REMAINING: DONE
271
285
  | `deepseek` | `https://api.deepseek.com` | `deepseek-chat` |
272
286
  | `doubao` | `https://ark.cn-beijing.volces.com/api/v3` | `doubao-1.5-pro-32k` |
273
287
  | `qwen` | `https://dashscope.aliyuncs.com/compatible-mode/v1` | `qwen-plus` |
288
+ | `minimax` | `https://api.minimaxi.com/v1` | `MiniMax-M2.5` |
274
289
 
275
290
  ### 快照参数(SnapshotOptions)
276
291
 
@@ -283,6 +298,7 @@ Round 3: 执行 C → REMAINING: DONE
283
298
  | `maxChildren` | `number` | `30` | 每个父节点最大子元素数 |
284
299
  | `maxTextLength` | `number` | `40` | 文本截断长度 |
285
300
  | `listenerEvents` | `string[]` | 9 种常用事件 | 快照输出的 listener 事件白名单 |
301
+ | `classNameFilter` | `string[] \| false` | 内置 UI 框架过滤 | class 名过滤正则列表,匹配即剔除;`false` 禁用 |
286
302
 
287
303
  ### 轮次稳定等待(RoundStabilityWaitOptions)
288
304
 
package/dist/index.d.mts CHANGED
@@ -221,6 +221,14 @@ type SnapshotOptions = {
221
221
  * 仅影响 `listeners="..."` 文本输出,不影响内部交互判定与 hash 分配。
222
222
  */
223
223
  listenerEvents?: string[];
224
+ /**
225
+ * class 名过滤正则列表(默认开启常用 UI 框架过滤)。
226
+ * 每项为正则字符串,class 名匹配任一正则即从快照中剔除。
227
+ * - 默认(undefined):启用内置规则,剔除 Element Plus / AntD / BK / TDesign / Arco / Vant / Naive 等。
228
+ * - 自定义 string[]:替换默认规则,使用自定义正则。
229
+ * - false:禁用过滤,保留所有 class。
230
+ */
231
+ classNameFilter?: string[] | false;
224
232
  };
225
233
  /**
226
234
  * 生成页面 DOM 快照 — 将 DOM 树转为 AI 可理解的文本描述。
@@ -250,7 +258,8 @@ declare function createPageInfoTool(): ToolDefinition;
250
258
  type PanelOptions = {
251
259
  /** 面板容器挂载点(默认 document.body) */container?: HTMLElement; /** 构造时是否自动挂载到 DOM(默认 true)。设为 false 时需手动调用 mount() */
252
260
  mount?: boolean; /** 是否在 Agent 运行时自动显示操作遮罩(默认 true) */
253
- enableMask?: boolean; /** 面板默认展开状态(默认 false,即收起状态,只显示 FAB) */
261
+ enableMask?: boolean; /** 遮罩背景透明度(0–1,默认 0.15)。0 = 全透明,1 = 纯白不透明 */
262
+ maskOpacity?: number; /** 面板默认展开状态(默认 false,即收起状态,只显示 FAB) */
254
263
  expanded?: boolean; /** 面板标题(默认 "AutoPilot") */
255
264
  title?: string; /** 输入框占位文本 */
256
265
  placeholder?: string; /** 遮罩提示文本 */
@@ -278,6 +287,7 @@ type PanelStatus = "idle" | "running" | "error";
278
287
  declare class Panel {
279
288
  private container;
280
289
  private enableMask;
290
+ private maskOpacity;
281
291
  private title;
282
292
  private placeholder;
283
293
  private maskText;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/core/tool-registry.ts","../src/core/types.ts","../src/core/agent-loop/types.ts","../src/web/ref-store.ts","../src/web/tools/page-info-tool.ts","../src/web/ui/panel.ts","../src/web/tools/dom-tool.ts","../src/web/tools/navigate-tool.ts","../src/web/tools/wait-tool.ts","../src/web/tools/evaluate-tool.ts","../src/web/messaging.ts","../src/web/index.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/core/tool-registry.ts","../src/core/types.ts","../src/core/agent-loop/types.ts","../src/web/ref-store.ts","../src/web/tools/page-info-tool.ts","../src/web/ui/panel.ts","../src/web/tools/dom-tool.ts","../src/web/tools/navigate-tool.ts","../src/web/tools/wait-tool.ts","../src/web/tools/evaluate-tool.ts","../src/web/messaging.ts","../src/web/index.ts"],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -896,7 +896,7 @@ async function executeAgentLoop(params) {
896
896
  }
897
897
  pendingNotFoundRetry = void 0;
898
898
  }
899
- if (parsedInstructionState.hasRemainingProtocol) remainingInstruction = parsedInstructionState.nextInstruction;
899
+ if (parsedInstructionState.hasRemainingProtocol && parsedInstructionState.nextInstruction.trim().length === 0) remainingInstruction = "";
900
900
  if (remainingInstruction.trim().length > 0 && round < maxRounds - 1) {
901
901
  protocolViolationHint = [
902
902
  "Protocol violation in previous round:",
@@ -1007,6 +1007,7 @@ async function executeAgentLoop(params) {
1007
1007
  }
1008
1008
  previousRoundModelOutput = parsedInstructionState.hasRemainingProtocol ? normalizeModelOutput(response.text) : `REMAINING: ${remainingInstruction || "DONE"}`;
1009
1009
  lastRoundHadError = roundHasError;
1010
+ if (executedTaskCalls.length === 0 && response.toolCalls.length > 0) lastRoundHadError = true;
1010
1011
  previousRoundTasks = buildTaskArray(executedTaskCalls);
1011
1012
  previousRoundPlannedTasks = plannedTasksCurrentRound;
1012
1013
  if (parsedInstructionState.hasRemainingProtocol && remainingInstruction.trim().length === 0 && !roundHasError) {
@@ -1014,20 +1015,17 @@ async function executeAgentLoop(params) {
1014
1015
  if (finalReply) callbacks?.onText?.(finalReply);
1015
1016
  break;
1016
1017
  }
1017
- if (consecutiveNoProtocolRounds >= 3) {
1018
+ if (consecutiveNoProtocolRounds >= 5) {
1018
1019
  finalReply = response.text?.trim() || "任务已完成。";
1019
1020
  if (finalReply) callbacks?.onText?.(finalReply);
1020
1021
  break;
1021
1022
  }
1022
- if (consecutiveNoProtocolRounds >= 2) protocolViolationHint = [
1023
- "Protocol reminder: REMAINING protocol missing for 2+ rounds with tool calls.",
1023
+ if (consecutiveNoProtocolRounds >= 3) protocolViolationHint = [
1024
+ "Protocol reminder: REMAINING protocol missing for 3+ rounds with tool calls.",
1024
1025
  "You MUST include REMAINING: <text> or REMAINING: DONE in every response.",
1025
1026
  "If the task is fully complete, return REMAINING: DONE with no tool calls."
1026
1027
  ].join("\n");
1027
- const idleResult = detectIdleLoop(response.toolCalls.map((tc) => ({
1028
- name: tc.name,
1029
- input: tc.input
1030
- })), consecutiveReadOnlyRounds);
1028
+ const idleResult = detectIdleLoop(executedTaskCalls, consecutiveReadOnlyRounds);
1031
1029
  if (idleResult === -1) {
1032
1030
  finalReply = response.text?.trim() || "任务已完成。";
1033
1031
  if (finalReply) callbacks?.onText?.(finalReply);
@@ -1083,7 +1081,8 @@ const PROVIDER_ENDPOINTS = {
1083
1081
  anthropic: "https://api.anthropic.com",
1084
1082
  deepseek: "https://api.deepseek.com",
1085
1083
  doubao: "https://ark.cn-beijing.volces.com/api/v3",
1086
- qwen: "https://dashscope.aliyuncs.com/compatible-mode/v1"
1084
+ qwen: "https://dashscope.aliyuncs.com/compatible-mode/v1",
1085
+ minimax: "https://api.minimaxi.com/v1"
1087
1086
  };
1088
1087
  /** 校验 provider(中)/ Validate provider support (EN). */
1089
1088
  function validateProvider(provider) {
@@ -1634,6 +1633,22 @@ var DoubaoClient = class extends OpenAIClient {};
1634
1633
  */
1635
1634
  var QwenClient = class extends OpenAIClient {};
1636
1635
 
1636
+ //#endregion
1637
+ //#region src/core/ai-client/minimax.ts
1638
+ /**
1639
+ * MiniMax 客户端封装(中)/ MiniMax client wrapper (EN).
1640
+ *
1641
+ * MiniMax 与 OpenAI Chat Completions 兼容,直接复用 OpenAIClient。
1642
+ * MiniMax is OpenAI-compatible, so it reuses OpenAIClient behavior.
1643
+ *
1644
+ * 默认端点:https://api.minimaxi.com/v1
1645
+ * 推荐模型:MiniMax-M2.5 / MiniMax-M2.5-highspeed
1646
+ */
1647
+ /**
1648
+ * MiniMax 客户端类(中)/ MiniMax client class extending OpenAIClient (EN).
1649
+ */
1650
+ var MiniMaxClient = class extends OpenAIClient {};
1651
+
1637
1652
  //#endregion
1638
1653
  //#region src/core/ai-client/index.ts
1639
1654
  /**
@@ -1648,7 +1663,8 @@ function createAIClient(config) {
1648
1663
  case "qwen": return new QwenClient(config);
1649
1664
  case "anthropic": return new AnthropicClient(config);
1650
1665
  case "deepseek": return new DeepSeekClient(config);
1651
- default: throw new Error(`Unknown AI provider: ${config.provider}. Supported: openai, copilot, anthropic, deepseek, doubao, qwen`);
1666
+ case "minimax": return new MiniMaxClient(config);
1667
+ default: throw new Error(`Unknown AI provider: ${config.provider}. Supported: openai, copilot, anthropic, deepseek, doubao, qwen, minimax`);
1652
1668
  }
1653
1669
  }
1654
1670
 
@@ -3143,6 +3159,12 @@ function createDomTool() {
3143
3159
  * snapshot — 获取页面 DOM 结构快照(AI 可读的文本描述)
3144
3160
  * query_all — 查询所有匹配选择器的元素,返回摘要信息
3145
3161
  */
3162
+ /**
3163
+ * 内置 class 名过滤正则(剔除常见 UI 框架噪音类名)。
3164
+ * 通过匹配组件关键词(如 -button、-input、-dialog)统一覆盖所有框架,
3165
+ * 无需逐一枚举框架前缀。
3166
+ */
3167
+ const DEFAULT_CLASSNAME_FILTERS = ["-(?:button|btn|input|select|option|tag|badge|menu|menuitem|tab|tabs|table|thead|tbody|tfoot|th|td|form|form-item|field|label|checkbox|radio|switch|slider|rate|upload|tree|collapse|breadcrumb|pagination|pager|step|steps|progress|cascader|transfer|picker|date-picker|time-picker|color-picker|auto-complete|autocomplete|card|alert|message|notification|notify|toast|spin|spinner|loading|skeleton|empty|result|avatar|icon|image|divider|space|scrollbar|affix|anchor|back-top|backtop|watermark|segmented|descriptions|statistic|countdown|row|col|grid|layout|container|header|footer|aside|main|sidebar|wrapper|inner|content|prefix|suffix|append|prepend|cell|column|group|panel|item|list|body|close|arrow|placeholder|trigger|reference|transition)"];
3146
3168
  /** 快照属性值最大保留长度(超出截断)。 */
3147
3169
  const MAX_SNAPSHOT_ATTR_VALUE_LENGTH = 120;
3148
3170
  /** 选项列表放宽时的子节点上限(仍保留硬上限,避免快照无限膨胀)。 */
@@ -3249,6 +3271,7 @@ function generateSnapshot(root = document.body, options = {}) {
3249
3271
  const expandedChildrenLimit = Math.min(MAX_EXPANDED_CHILDREN_LIMIT, Math.max(1, opts.expandedChildrenLimit ?? MAX_EXPANDED_LIST_CHILDREN));
3250
3272
  const expandChildrenRefSet = new Set((opts.expandChildrenRefs ?? []).map((ref) => ref.trim().replace(/^#/, "")).filter(Boolean));
3251
3273
  const allowedListenerEvents = new Set((opts.listenerEvents && opts.listenerEvents.length > 0 ? opts.listenerEvents : DEFAULT_SNAPSHOT_LISTENER_EVENTS).map(normalizeSnapshotListenerEvent).filter(Boolean));
3274
+ const classNameFilterRegexps = opts.classNameFilter === false ? null : (opts.classNameFilter && opts.classNameFilter.length > 0 ? opts.classNameFilter : DEFAULT_CLASSNAME_FILTERS).map((p) => new RegExp(p));
3252
3275
  let emittedNodes = 0;
3253
3276
  let truncatedByNodeBudget = false;
3254
3277
  const refStore = opts.refStore;
@@ -3562,7 +3585,7 @@ function generateSnapshot(root = document.body, options = {}) {
3562
3585
  if (elId) attrs.push(`id="${elId}"`);
3563
3586
  const className = el.getAttribute("class")?.trim();
3564
3587
  if (className) {
3565
- const cls = className.split(/\s+/).find((c) => c && !c.startsWith("data-v-") && c.length < 25 && !/^[a-z]{1,2}\d|^_|^css-/.test(c));
3588
+ const cls = className.split(/\s+/).find((c) => c && !c.startsWith("data-v-") && c.length < 25 && !/^[a-z]{1,2}\d|^_|^css-/.test(c) && !(classNameFilterRegexps && classNameFilterRegexps.some((r) => r.test(c))));
3566
3589
  if (cls) attrs.push(`class="${cls}"`);
3567
3590
  }
3568
3591
  for (const attr of INTERACTIVE_ATTRS) {
@@ -4328,11 +4351,12 @@ const PANEL_STYLES = `
4328
4351
 
4329
4352
  /* ─── 操作遮罩 ─── */
4330
4353
  #autopilot-mask {
4354
+ --ap-mask-opacity: 0.15;
4331
4355
  position: fixed;
4332
4356
  inset: 0;
4333
4357
  z-index: 99998;
4334
- background: rgba(255, 255, 255, 0.5);
4335
- backdrop-filter: blur(2px);
4358
+ background: rgba(255, 255, 255, var(--ap-mask-opacity));
4359
+ backdrop-filter: blur(1px);
4336
4360
  opacity: 0;
4337
4361
  pointer-events: none;
4338
4362
  transition: opacity var(--ap-transition);
@@ -4379,7 +4403,8 @@ const PANEL_STYLES = `
4379
4403
  position: fixed;
4380
4404
  z-index: 99999;
4381
4405
  width: 520px;
4382
- max-height: 680px;
4406
+ height: min(75vh, 820px);
4407
+ max-height: min(75vh, 820px);
4383
4408
  display: flex;
4384
4409
  flex-direction: column;
4385
4410
  background: var(--ap-bg);
@@ -4548,14 +4573,13 @@ const PANEL_STYLES = `
4548
4573
 
4549
4574
  /* ─── 消息区 ─── */
4550
4575
  .ap-messages {
4551
- flex: 1;
4576
+ flex: 1 1 0;
4552
4577
  overflow-y: auto;
4553
4578
  padding: 16px;
4554
4579
  display: flex;
4555
4580
  flex-direction: column;
4556
4581
  gap: 12px;
4557
- min-height: 200px;
4558
- max-height: 420px;
4582
+ min-height: 0;
4559
4583
  scroll-behavior: smooth;
4560
4584
  }
4561
4585
  .ap-messages::-webkit-scrollbar { width: 4px; }
@@ -4822,6 +4846,7 @@ const ICONS = {
4822
4846
  var Panel = class {
4823
4847
  container;
4824
4848
  enableMask;
4849
+ maskOpacity;
4825
4850
  title;
4826
4851
  placeholder;
4827
4852
  maskText;
@@ -4849,6 +4874,7 @@ var Panel = class {
4849
4874
  constructor(options = {}) {
4850
4875
  this.container = options.container ?? document.body;
4851
4876
  this.enableMask = options.enableMask ?? true;
4877
+ this.maskOpacity = Math.max(0, Math.min(1, options.maskOpacity ?? .15));
4852
4878
  this.expanded = options.expanded ?? false;
4853
4879
  this.title = options.title ?? "AutoPilot";
4854
4880
  this.placeholder = options.placeholder ?? "输入要执行的网页操作...";
@@ -4994,6 +5020,7 @@ var Panel = class {
4994
5020
  this.root.setAttribute("data-autopilot-ignore", "");
4995
5021
  this.mask = document.createElement("div");
4996
5022
  this.mask.id = "autopilot-mask";
5023
+ this.mask.style.setProperty("--ap-mask-opacity", String(this.maskOpacity));
4997
5024
  this.mask.innerHTML = `
4998
5025
  <div class="ap-mask-label">
4999
5026
  <div class="ap-mask-spinner"></div>
@@ -5253,7 +5280,10 @@ var Panel = class {
5253
5280
  scrollToBottom() {
5254
5281
  if (!this.messagesEl) return;
5255
5282
  requestAnimationFrame(() => {
5256
- this.messagesEl.scrollTop = this.messagesEl.scrollHeight;
5283
+ requestAnimationFrame(() => {
5284
+ if (!this.messagesEl) return;
5285
+ this.messagesEl.scrollTop = this.messagesEl.scrollHeight;
5286
+ });
5257
5287
  });
5258
5288
  }
5259
5289
  escapeHtml(str) {