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 +17 -1
- package/dist/index.d.mts +11 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +48 -18
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
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; /**
|
|
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;
|
package/dist/index.d.mts.map
CHANGED
|
@@ -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":";;;;;;KA0BY,cAAA;EAuBV,qCArBA,OAAA,WAAkB,MAAA,mBAqBR;EAnBV,OAAA,GAAU,MAAA;AAAA;;;;;;ACfZ;;;KD0BY,cAAA;ECxBV,4CD0BA,IAAA,UCtBA;EDwBA,WAAA,UCxBK;ED0BL,MAAA,EAAQ,OAAA,ECpBW;EDsBnB,OAAA,GAAU,MAAA,EAAQ,MAAA,sBAA4B,OAAA,CAAQ,cAAA;AAAA;;;;KClC5C,UAAA;ED0BA,0BCxBV,EAAA;EAEA,IAAA,UD8BkB;EC5BlB,KAAA;AAAA;;KAMU,SAAA;EACV,IAAA,4CDiBA;ECfA,OAAA,WAAkB,KAAA;IAAQ,UAAA;IAAoB,MAAA;EAAA,IDmBpC;ECjBV,SAAA,GAAY,UAAA;AAAA;;KAMF,cAAA;iBAEV,IAAA;EAEA,SAAA,GAAY,UAAA,IA3BQ;EA6BpB,KAAA;IAAU,WAAA;IAAqB,YAAA;EAAA;AAAA;;;AAjBjC;;;KA2BY,QAAA;EACV,IAAA,CAAK,MAAA;IACH,YAAA;IACA,QAAA,EAAU,SAAA;IACV,KAAA,GAAQ,cAAA;EAAA,IACN,OAAA,CAAQ,cAAA;AAAA;;;;KCjDF,yBAAA;EFoBA,2BElBV,OAAA,YFkBgB;EEhBhB,SAAA,WF2BwB;EEzBxB,OAAA,WF+BQ;EE7BR,gBAAA;AAAA;AAAA,KAGU,gBAAA;EACV,UAAA;EACA,cAAA;EACA,mBAAA;EACA,eAAA;EACA,eAAA;EACA,aAAA;EACA,uBAAA;EACA,iBAAA;EACA,kBAAA;EACA,eAAA;EACA,eAAA;EACA,WAAA;EACA,YAAA;AAAA;;KAMU,kBAAA;EDzBA,mBC2BV,MAAA,IAAU,IAAA;EAEV,UAAA,IAAc,IAAA,UAAc,KAAA,oBD3B5B;EC6BA,YAAA,IAAgB,IAAA,UAAc,MAAA,EAAQ,cAAA,WDzBtC;EC2BA,OAAA,IAAW,KAAA;ED3BN;AAMP;;;;;;;EC8BE,wBAAA,IAA4B,MAAA,oBD3BkB;EC6B9C,SAAA,IAAa,OAAA,EAAS,gBAAA;AAAA;AAAA,KA4BZ,eAAA;EDhCV,iBCkCA,KAAA,UDhCE;ECkCF,SAAA,EAAW,KAAA;IAAQ,IAAA;IAAc,KAAA;IAAgB,MAAA,EAAQ,cAAA;EAAA,IDhC7C;ECkCZ,QAAA,EAAU,SAAA,IDlCgB;ECoC1B,OAAA,EAAS,gBAAA;AAAA;;;;;;AFrEX;;;;;;;;;;AAeA;;;;;;;;;;;;;;cGAa,QAAA;EAAA,QACH,GAAA;EHOsC;EAAA,QGLtC,MAAA;EHK4D;;;;cGCxD,GAAA;EFnCF;;;;;;;EE8CV,GAAA,CAAI,EAAA,EAAI,OAAA,EAAS,IAAA;EFxCZ;AAMP;;;EEkDE,GAAA,CAAI,EAAA,WAAa,OAAA;EFjDjB;EEsDA,GAAA,CAAI,EAAA;EFpDc;EEyDlB,KAAA,CAAA;EFzD8C;;;;;AAQhD;;;EE6DE,KAAA,CAAM,GAAA;EF3DN;EAAA,IEmEI,IAAA,CAAA;AAAA;;;;KCtFM,eAAA;EJKc,oBIHxB,QAAA;EJOgB;;;;;EIDhB,YAAA;EJCgB;AAWlB;;;;EINE,WAAA;EJcsD;;;;;EIRtD,QAAA,GAAW,QAAA,EJMX;EIJA,QAAA,WJMA;EIJA,WAAA,WJIU;EIFV,aAAA;EJEsD;;;;EIGtD,iBAAA;;AHrCF;;;EG0CE,kBAAA,aHxCA;EG0CA,qBAAA;EHtCA;;;AAMF;;EGsCE,cAAA;AAAA
|
|
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 =
|
|
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 >=
|
|
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 >=
|
|
1023
|
-
"Protocol reminder: REMAINING protocol missing for
|
|
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(
|
|
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
|
-
|
|
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,
|
|
4335
|
-
backdrop-filter: blur(
|
|
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
|
-
|
|
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:
|
|
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
|
-
|
|
5283
|
+
requestAnimationFrame(() => {
|
|
5284
|
+
if (!this.messagesEl) return;
|
|
5285
|
+
this.messagesEl.scrollTop = this.messagesEl.scrollHeight;
|
|
5286
|
+
});
|
|
5257
5287
|
});
|
|
5258
5288
|
}
|
|
5259
5289
|
escapeHtml(str) {
|