@tanzerfe/page-use 0.0.5 → 0.0.7

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
@@ -1,10 +1,6 @@
1
1
  # @tanzerfe/page-use
2
2
 
3
- 基于 [page-agent](https://github.com/alibaba/page-agent) 的页面操作智能体:接收自然语言指令,在当前页面中模拟点击与输入完成操作,并返回结论。
4
-
5
- - **框架无关**:核心不依赖 Vue / React,UI 为 Lit Web Component,在 Shadow DOM 中与宿主样式隔离。
6
- - **可供其它智能体调用**:支持模块 API、function calling 工具、结构化指令块与全局对象 `window.__TZ_PAGE_USE__`。
7
- - **Vue 适配层**:`@tanzerfe/page-use/vue` 提供 `PageUseHost` 组件。
3
+ 用自然语言操作当前页面:输入一句指令,智能体在页面中自动点击、输入并返回结论。基于 [page-agent](https://github.com/alibaba/page-agent),框架无关,附带操作面板与 Vue 组件。
8
4
 
9
5
  ## 安装
10
6
 
@@ -12,315 +8,99 @@
12
8
  pnpm add @tanzerfe/page-use zod
13
9
  ```
14
10
 
15
- `zod` 为必需的 peer 依赖;`vue` / `vue-router` 仅在使用 `@tanzerfe/page-use/vue` 时需要。
16
-
17
11
  ## 快速开始
18
12
 
19
- ### 非 Vue 项目
20
-
21
- ```ts
22
- import { createPageUse, mountPageUseUI, readLauncherSwitch } from '@tanzerfe/page-use'
23
-
24
- const handle = createPageUse({
25
- llm: { baseURL: '/api/llm-proxy/v1', model: 'deepseek-chat' },
26
- appName: '订单管理系统',
27
- getMenus: () => myMenus, // [{ label, path, hidden?, children? }]
28
- routerMode: 'hash', // 或 'history'
29
- })
30
-
31
- // 调试面板:URL 参数 ?pageUseDebug=1 / 0 可临时开关,否则使用 fallback
32
- // 生产环境需由业务系统按需调出时,改为常驻挂载:mountPageUseUI({ launcher: { defaultHidden: true } })
33
- const unmount = mountPageUseUI({ launcher: readLauncherSwitch(import.meta.env.DEV) })
34
-
35
- // 登出 / 卸载时
36
- unmount()
37
- handle.destroy()
38
- ```
39
-
40
- ### Vue 3 项目
13
+ ### Vue 3
41
14
 
42
15
  ```vue
43
16
  <template>
44
- <PageUseHost v-if="options.llm.baseURL" :options="options" :launcher="launcher" />
17
+ <PageUseHost :options="options" launcher />
45
18
  </template>
46
19
 
47
20
  <script setup lang="ts">
48
- import { PageUseHost, readLauncherSwitch, type PageUseOptions } from '@tanzerfe/page-use/vue'
21
+ import { PageUseHost, type PageUseOptions } from '@tanzerfe/page-use/vue'
49
22
 
50
23
  const options: PageUseOptions = {
51
- llm: { baseURL: import.meta.env.VITE_PAGE_USE_BASE_URL },
24
+ llm: { baseURL: '/api/llm-proxy/v1', model: 'deepseek-flash' },
52
25
  appName: '订单管理系统',
53
26
  getMenus: () => permissionStore.menus,
54
27
  }
55
- const launcher = readLauncherSwitch(import.meta.env.DEV) && { scenarios: [/* ... */] }
56
28
  </script>
57
29
  ```
58
30
 
59
- `PageUseHost` 自动完成初始化、UI 挂载与卸载销毁,并从 vue-router 推导 `routerMode`、`getCurrentPath`、`resolveRouteName`(显式传入优先)。UI 挂在 `document.body` 下,无需配置 `isCustomElement`。
60
-
61
- ## 配置 `PageUseOptions`
62
-
63
- | 选项 | 类型 | 默认 | 说明 |
64
- |---|---|---|---|
65
- | `llm.baseURL` | `string` | — | OpenAI 兼容端点(到版本前缀为止),可用相对路径。**为空时能力不可用** |
66
- | `llm.apiKey` | `string` | 空 | 前端直连时使用,生产环境建议留空 |
67
- | `llm.model` | `string` | `deepseek-chat` | 需支持 function calling。默认值仅为示例,使用其它端点时应显式指定 |
68
- | `llm.maxSteps` | `number` | `20` | 单任务最大步数 |
69
- | `llm.disableNamedToolChoice` | `boolean` | `false` | 模型不支持对象形式 `tool_choice` 时开启 |
70
- | `llm.extraBody` | `object` | `{}` | 合并进请求体 |
71
- | `llm.sessionHeader` | `string \| false` | `x-opencode-session` | 会话 ID 请求头,`false` 不发送 |
72
- | `appName` | `string` | — | 写入系统提示 |
73
- | `getMenus` | `() => PageUseMenuNode[]` | 空 | 可见菜单树,用于生成站点地图 |
74
- | `routerMode` | `'hash' \| 'history'` | `'hash'` | 路由模式 |
75
- | `getCurrentPath` | `() => string` | 从 location 读取 | 当前路由路径,不含 `#` |
76
- | `resolveRouteName` | `(path) => string` | — | 由路径解析路由名,用于匹配 `routeHints` |
77
- | `routeHints` | `Record<string, string>` | `{}` | 按页操作提示,key 为路由名或路径(不带前导 `/`) |
78
- | `layoutHint` | `string` | 通用描述 | 替换系统提示中的「页面结构」段落 |
79
- | `beforeTask` | `() => void \| Promise<void>` | — | 任务开始前的预处理,如展开侧栏 |
80
- | `beforeTaskLabel` | `string` | — | `beforeTask` 在设置面板中的显示名 |
81
- | `storageKeyPrefix` | `string` | `tz-page-use` | 本地存储键前缀 |
82
- | `pageAgentOptions` | `Partial<PageAgentConfig>` | `{}` | 透传给 page-agent |
83
- | `exposeGlobal` | `boolean` | `true` | 是否安装 `window.__TZ_PAGE_USE__` |
84
- | `tts` | `PageUseTtsEngine \| PageUseTtsEngine[]` | — | 演示播报的在线语音合成引擎,见「自定义语音合成引擎」 |
85
-
86
- ### 调试面板 `PageUseLauncherConfig`
87
-
88
- | 选项 | 说明 |
89
- |---|---|
90
- | `title` | 标题,默认 `Page Use` |
91
- | `presets` | 追加到「常用」分组的快捷指令 `{ label, task }[]` |
92
- | `scenarios` | 「复杂场景」分组的快捷指令 |
93
- | `menuPresetLimit` | 由菜单生成「打开 XX」的数量上限,默认 6 |
94
- | `sourceLabels` | 任务来源到展示名的映射,如 `{ assistant: 'AI 助手' }` |
95
- | `defaultHidden` | 默认隐藏调试入口,由业务系统调用方法或 URL 参数调出;仅在用户从未关闭 / 显示过入口时生效,默认 `false` |
96
-
97
- **标题栏**:从左到右为状态圆点、标题、执行状态,以及按钮「静音 · 设置(⚙)· 收起(−)· 关闭(×)」。
98
-
99
- - 执行状态:空闲时不显示(悬停状态圆点可查看,设置页顶部显示「当前状态」);其它状态显示「状态 · N 步 · token · 耗时」,token 数小于 1000 显示原值,否则以 `k` / `M` 为单位并保留 1 位小数(如 `12.3k tok`、`1.5M tok`)。
100
- - 静音:仅在任务执行中且开启语音播报时显示,见「演示播报」。
101
- - 收起:面板收起为浮动入口。
102
- - 关闭:隐藏面板与浮动入口,状态持久化,刷新后仍隐藏;重新打开见「调试入口的显示与隐藏」。
103
-
104
- **元信息面板**:在任意连续 5 秒内点击面板标题 10 次打开,用于开发排查,展示包版本、LLM 端点完整地址、模型、API Key 是否已配置(只显示「已配置 / 未配置」,不展示明文)、存储键前缀、当前播报引擎与音色、全部可选引擎(id、名称、是否可用)。点击 ⚙ 位置的按钮返回;打开状态不持久化。设置页不再展示端点与模型。
105
-
106
- #### 快捷指令
107
-
108
- 快捷指令在空执行记录页与输入框上方的「快捷指令」托盘中展示,分组顺序为:
109
-
110
- 1. 「我的」:用户在面板中自定义的指令;没有自定义指令时不显示;
111
- 2. 「常用」:由菜单生成的「打开 XX」(最多 `menuPresetLimit` 条)、库内置通用示例、宿主 `presets`;
112
- 3. 「复杂场景」:宿主 `scenarios`,为空时不显示。
113
-
114
- 设置页最底部的「快捷指令设置」进入编辑视图,标题栏返回按钮依次回到设置页、主视图:
115
-
116
- - 自定义指令:可新增、编辑、删除;名称与指令内容必填,指令内容不能与已有自定义指令重复;新增的指令排在最前。
117
- - 来源指令(上述菜单、内置、`presets`、`scenarios` 四类):可删除。删除只是在本地隐藏,不修改宿主配置。隐藏记录以指令内容(`task`)为标识,宿主修改某条指令的 `task` 后,该条会重新显示。
118
- - 菜单生成的指令被隐藏后,由后续菜单补位,数量仍为 `menuPresetLimit`(可见菜单不足时除外)。
119
- - 「恢复默认指令」:恢复全部已隐藏的来源指令,不影响自定义指令;当前没有被隐藏的来源指令时禁用。
120
- - 任务执行中也可编辑,只影响之后的展示,不影响正在执行的任务。
121
-
122
- 自定义指令与隐藏记录保存在 localStorage,键为 `${storageKeyPrefix}-presets`。宿主也可通过导出的 `pageUsePresets` 读取或维护这些数据(`add` / `update` / `remove` / `hide` / `restoreHidden`,订阅使用 `pageUsePresets.store`)。
123
-
124
- #### 调试入口的显示与隐藏
125
-
126
- 入口是否显示按以下优先级判定(面板挂载时):
127
-
128
- 1. URL 参数 `pageUseDebug`:`1` / `true` 显示,`0` / `false` 隐藏,并写入持久化状态;
129
- 2. 持久化状态(设置 `launcherVisible`,localStorage):用户点击关闭或调用下述方法后写入;
130
- 3. 宿主配置 `defaultHidden`:前两者都未设置时生效,默认显示。
131
-
132
- 业务系统可调用以下方法调出或隐藏入口(显示方法同时展开面板),状态均持久化:
133
-
134
- ```ts
135
- import { showPageUseLauncher, hidePageUseLauncher } from '@tanzerfe/page-use'
136
-
137
- showPageUseLauncher()
138
- hidePageUseLauncher()
139
-
140
- // 不走模块导入时
141
- window.__TZ_PAGE_USE__.showLauncher()
142
- window.__TZ_PAGE_USE__.hideLauncher()
143
- ```
144
-
145
- 方法只作用于已挂载的面板:宿主未挂载面板时调用显示方法只保存状态并在控制台警告。若希望生产环境默认不显示、由业务系统按需调出,应常驻挂载面板并设置 `defaultHidden`:
31
+ ### 其它框架
146
32
 
147
33
  ```ts
148
- mountPageUseUI({ launcher: { defaultHidden: true } })
149
- // Vue:<PageUseHost :options="options" :launcher="{ defaultHidden: true }" />
150
- ```
151
-
152
- 用户关闭入口后,也可在 URL 上加 `?pageUseDebug=1` 重新显示。隐藏入口不会中断正在执行的任务,也不影响运行期光晕;此时可通过模块 API 或全局对象的 `stop()` 终止任务。
153
-
154
- 调试面板设置中不提供「显示 page-agent 自带面板」与「定制光晕与光标配色」:自带面板始终隐藏,蒙层始终使用定制光晕与光标配色,本地存储中的旧值会被忽略。`PageUseSettings` 仍保留 `showBuiltinPanel` / `customMaskEffect` 字段,但修改不生效。
155
-
156
- ## 演示播报
157
-
158
- 演示时可用语音同步播报智能体的执行过程。默认使用浏览器语音合成(`speechSynthesis`),无需宿主额外配置;宿主也可注入在线语音合成引擎(见下文「自定义语音合成引擎」)。
159
-
160
- - **开关**:调试面板「设置 → 语音播报」,**默认关闭**,状态保存在本地存储(`voiceEnabled`)。关闭时设置中只显示该开关;开启后显示:
161
- - **播报引擎**(`voiceEngineId`):仅在宿主注入了在线引擎时显示,可在注入引擎与「本地语音(浏览器)」之间切换,切换时立即停止当前播报;
162
- - **语速**(`voiceRate`,倍率 0.5–2,默认 1.1),所有引擎共用;
163
- - **音色**(`voiceNames`,按引擎 id 分别保存):当前引擎提供音色列表时显示,「自动」表示由引擎选择(浏览器引擎为第一个中文语音)。
164
- - **试听**:位于音色下拉框右侧(引擎不提供音色列表时单独一行),用当前引擎、音色与语速播报「您好,我是页面智能体。」;试听中按钮显示「停止」,再次点击、切换引擎或音色、离开设置页、收起或关闭面板时中止。试听与任务播报互斥:任务执行中按钮禁用,任务开始时中止正在进行的试听;当前引擎不可用时同样禁用。试听不受「本次任务静音」影响。**在线引擎每次试听都会发起一次合成请求,消耗一次调用额度。**
34
+ import { createPageUse, mountPageUseUI } from '@tanzerfe/page-use'
165
35
 
166
- 开关对所有来源的任务生效,包括其它智能体经模块 API、function calling 或全局对象下达的任务。
167
- - **设置字段变更(BREAKING)**:`PageUseSettings.voiceName` 已移除,改为 `voiceNames`(`Record<引擎 id, 音色>`)。本地存储中的旧值在读取时自动迁移为 `voiceNames.browser`,用户已选的浏览器语音不会丢失;直接读取 `voiceName` 的宿主代码需改为读取 `voiceNames.browser`。
168
- - **本次任务静音**:任务执行中且开启语音播报时,面板标题栏显示静音按钮。静音后立即停止当前播报,本次任务剩余的步骤、提问与结论都不播报;再次点击取消静音,只播报之后的内容(不补播)。下一次任务开始时自动恢复。静音状态不持久化,也不修改「语音播报」开关。
169
- - **播报内容**:
170
- - 执行步骤:模型对每一步的目标描述;滚动、等待、结束、提问、出错、重试步骤不播报;
171
- - 提问:模型向用户提出的问题;
172
- - 结论:任务结束时的 `summary`(成功、未达成、出错均播报;被终止的任务不播报)。
173
- - **不阻塞执行**:智能体不等待语音结束。正在播报时到达的新步骤只保留最新一条待播,中间步骤被丢弃;提问与结论会打断当前播报;新任务开始、终止、销毁或关闭开关时停止播报。
174
- - **播报时机**:page-agent 在模型调用内部执行点击等动作,目标描述在动作完成后才可获得,因此播报会略晚于页面变化;模型思考期间没有播报。
175
- - **文本清洗**:播报前去除 Markdown 标记、表格分隔线、链接地址、代码块、emoji 与元素编号(如「索引为 23 的」「[23]」);清洗后超过 240 字(语速 1 时约 1 分钟)时在句子边界截断,并追加提示语「详细内容请查看「面板标题」」(面板标题即 `PageUseLauncherConfig.title`,如「详细内容请查看「页面智能体」」;未挂载调试面板时为「详细内容请查看面板」)。清洗只影响播报,`result.summary`、面板展示与返回给调用方的数据保持原样。
176
- - **提示词**:开启播报后的下一次任务起,系统提示追加一条约束,要求 `next_goal` 写成面向观众的一句中文、不含元素编号;关闭时系统提示不变。执行中切换开关只影响下一次任务的提示词。
177
-
178
- 浏览器语音合成的限制:
179
-
180
- - 可用语音取决于操作系统与浏览器。Windows 上的 Edge / Chrome 有中文语音;Linux 上的 Chromium 通常没有,此时设置面板会提示并使用默认语音。
181
- - 浏览器要求用户与页面交互过才允许发声。从调试面板下达任务、在对话框中输入指令均满足条件;页面加载后未经交互直接调用可能无声。
182
- - `speechSynthesis` 是整个页面共用的队列。提问 / 结论打断时会调用 `speechSynthesis.cancel()`,宿主页面同时在播报的其它语音也会被停止;反之,宿主调用 `cancel()` 也会停止 Page Use 的播报。当前引擎不是浏览器引擎时,包内不调用 `speechSynthesis`。
183
-
184
- ### 自定义语音合成引擎
185
-
186
- 通过 `createPageUse({ tts })` 注入一个或多个实现 `PageUseTtsEngine` 的对象,即可接入在线 TTS 服务商(如讯飞、阿里云、Azure 等,不限厂商)。注入的引擎与内置浏览器引擎一起出现在调试面板「设置 → 语音播报 → 播报引擎」中供切换。播报内容、待播与抢占规则、文本清洗均由包统一处理,引擎只负责播出一段文本。
187
-
188
- ```ts
189
- import type { PageUseTtsEngine } from '@tanzerfe/page-use'
190
-
191
- const vendorA: PageUseTtsEngine = {
192
- id: 'vendor-a', // 必填,稳定标识:用于保存所选引擎与该引擎的音色
193
- label: '在线语音 A', // 显示在设置面板「播报引擎」下拉框
194
- splitSentences: false, // false:一组句子合并为一次 speak;true:逐句调用
195
- isAvailable: () => typeof WebSocket !== 'undefined',
196
- // 可选;不提供或返回空时不显示音色下拉框
197
- listVoices: () => [{ value: 'voice-1', label: '音色 1' }],
198
- async speak(text, { rate, voice, signal }) {
199
- // rate:语速倍率(1 为正常);voice:该引擎在设置中的音色(空串表示自动);
200
- // signal 触发时立即停止自身的合成与播放并返回
201
- },
202
- }
203
-
204
- createPageUse({ /* ... */, tts: [vendorA, vendorB] }) // 也可传单个对象
205
- ```
206
-
207
- - **`id`**:必填且应保持不变,修改后已保存的引擎选择与音色会失效。`'browser'` 保留给内置浏览器引擎(`BROWSER_ENGINE_ID`);注入的引擎 id 重复或为 `'browser'` 时,保留先出现者并在控制台警告。
208
- - **默认引擎**:浏览器引擎(本地语音)排在「播报引擎」下拉框最前,用户未选择过引擎时使用它,注入的引擎按注入顺序排在其后,需要用户手动切换。已保存的引擎被宿主移除后,播报回退到浏览器引擎,保存的选择不被改写,宿主恢复该引擎后继续生效。
209
- - `speak()` 在播完、失败或被中止时 resolve,**不应 reject**;失败由引擎自行记录(包仍会兜底捕获并继续播报后续内容)。
210
- - 抢占、终止、销毁、关闭开关、本次任务静音或切换引擎时,包通过 `signal` 中止当前 `speak()`。停止播报只作用于引擎自身的音频,不会停止宿主页面上其它来源的语音。
211
- - 引擎的 `isAvailable()` 为 false 时播报静默跳过;设置面板中该引擎不可选并标注「(不可用)」。
212
-
213
- ## 对接方式
214
-
215
- ### 1. 模块 API
216
-
217
- ```ts
218
- import { pageUseCapability } from '@tanzerfe/page-use'
36
+ const handle = createPageUse({
37
+ llm: { baseURL: '/api/llm-proxy/v1', model: 'deepseek-flash' },
38
+ appName: '订单管理系统',
39
+ getMenus: () => myMenus, // [{ label, path, children? }]
40
+ })
41
+ const unmount = mountPageUseUI({ launcher: true }) // launcher:显示操作面板
219
42
 
220
- if (pageUseCapability.isReady()) {
221
- const result = await pageUseCapability.run('打开订单列表,筛选待发货并查询,告诉我第一条订单的收货地址', {
222
- source: 'my-agent',
223
- signal: controller.signal,
224
- onProgress: (event) => { if (event.type === 'activity') console.log(event.text) },
225
- onAskUser: async (question) => askInMyChat(question), // 可选
226
- })
227
- // result.status: completed | failed | stopped | error;result.summary 为结论
228
- }
43
+ // 退出登录或卸载时
44
+ unmount()
45
+ handle.destroy()
229
46
  ```
230
47
 
231
- `run()` 不会 reject。任务未能开始时 `status='error'` 并带 `errorCode`:
48
+ ## 常用配置
232
49
 
233
- | errorCode | 含义 |
50
+ | 选项 | 说明 |
234
51
  |---|---|
235
- | `NOT_CONFIGURED` | 未初始化或未配置 `llm.baseURL` |
236
- | `NOT_READY` | 已 `destroy` |
237
- | `BUSY` | 已有任务在执行(同一时刻仅一个任务) |
238
- | `EMPTY_TASK` | 指令为空 |
239
- | `AGENT_ERROR` | agent 构造或钩子抛出错误 |
52
+ | `llm.baseURL` | OpenAI 兼容接口地址,必填 |
53
+ | `llm.model` | 模型名称,需支持 function calling |
54
+ | `appName` | 系统名称 |
55
+ | `getMenus` | 返回当前用户可见的菜单树,帮助智能体找到页面 |
56
+ | `routerMode` | `'hash'`(默认)或 `'history'`,Vue 项目自动识别 |
240
57
 
241
- - 模型提问时依次交由 `onAskUser`、调试面板处理;两者都不可用时自动回复「无法补充信息」。
242
- - 进度可订阅 `pageUseStore` 获取,Vue 中使用 `usePageUseState()`。
58
+ > 请勿在前端配置 API Key,生产环境应由网关或代理注入。
243
59
 
244
- ### 2. LLM function calling
60
+ ## 在其它智能体中调用
245
61
 
246
62
  ```ts
247
- import { PAGE_USE_TOOL, PAGE_USE_TOOL_NAME, runPageUseTool } from '@tanzerfe/page-use'
63
+ import { pageUseCapability } from '@tanzerfe/page-use'
248
64
 
249
- // tools: [PAGE_USE_TOOL, ...]
250
- // 模型返回的 tool_call.name === PAGE_USE_TOOL_NAME 时:
251
- const { content } = await runPageUseTool(toolCall.function.arguments, { source: 'my-agent' })
252
- // content 作为 role=tool 的消息回给模型
65
+ const result = await pageUseCapability.run('打开订单列表,告诉我第一条订单的收货地址')
66
+ console.log(result.status, result.summary)
253
67
  ```
254
68
 
255
- ### 3. 结构化指令块
256
-
257
- 模型在回复中输出 `{ "type": "pageAction", "instruction": "..." }`,前端用 `isPageUseCommand(value)` 校验后调用 `pageUseCapability.run(value.instruction)`。
69
+ 也可将 `PAGE_USE_TOOL` 作为 function calling 工具提供给模型,并用 `runPageUseTool` 执行。
258
70
 
259
- ### 4. 全局对象
260
-
261
- `window.__TZ_PAGE_USE__` 包含 `pageUseCapability` 的全部方法及 `tool`、`runTool`,以及调试入口的显示控制 `showLauncher()` / `hideLauncher()`(见「调试入口的显示与隐藏」),可用于控制台调试、E2E 脚本和同源外部脚本:
262
-
263
- ```js
264
- await window.__TZ_PAGE_USE__.run('打开首页')
265
- window.__TZ_PAGE_USE__.showLauncher()
266
- ```
71
+ ## 操作面板
267
72
 
268
- `showLauncher` / `hideLauncher` 只在全局对象上提供,不属于 `pageUseCapability`(交给其它智能体的执行能力不含 UI 控制)。
73
+ - 传入 `launcher` 后,面板入口显示在页面右下角,可拖动。
74
+ - 用户关闭后,可在 URL 上加 `?pageUseDebug=1` 重新显示,或由业务系统调用 `showPageUseLauncher()` 调出。
75
+ - 希望默认隐藏、按需调出时,传入 `launcher: { defaultHidden: true }`。
76
+ - 面板支持快捷指令、历史记录与语音播报。
269
77
 
270
- ## API Key 安全
78
+ ## 页面讲解
271
79
 
272
- `llm.apiKey` 会出现在浏览器请求和前端产物中。**生产环境应由网关或代理注入 Key**,前端只传代理地址。
273
-
274
- 本地开发可用 Vite 代理规避 CORS:
80
+ 用于产品演示:用户说「介绍当前页面」后,智能体逐个高亮页面模块并语音讲解,页面有 Tab 时依次切换。操作类指令不会触发讲解。
275
81
 
276
82
  ```ts
277
- // vite.config.ts
278
- server: {
279
- proxy: {
280
- '/__page-use-llm': {
281
- target: 'https://api.deepseek.com/v1',
282
- changeOrigin: true,
283
- rewrite: (p) => p.replace(/^\/__page-use-llm/, ''),
284
- },
285
- },
286
- }
83
+ createPageUse({
84
+ // ...
85
+ getContentRoot: () => document.querySelector('.layout-content'), // 页面内容区,排除顶部栏与菜单
86
+ pageTour: { defaultStyle: 'user' }, // 内置风格:user(日常使用者)、trainer(培训讲师);false 关闭
87
+ })
287
88
  ```
288
89
 
289
- ## 主题
290
-
291
- 在宿主页面设置 CSS 变量调整配色,例如 `:root { --tz-page-use-primary: #1677ff }`:
90
+ 模块按 `h1`–`h3` 标题或 `<section aria-label>` 自动识别;Tab 需具备 `role="tab"` 语义(element-plus、naive-ui 已支持)。
292
91
 
293
- | 变量 | 默认 | 用途 |
294
- |---|---|---|
295
- | `--tz-page-use-primary` | `#0879ff` | 主色:面板按钮、光晕 |
296
- | `--tz-page-use-flow-gradient` | 橙-黄-绿-青-紫径向渐变 | 流光渐变:收起时入口按钮的背景与展开面板的 2px 边框(放大到 300% 循环移动,执行中加速);可替换为任意渐变,如 `radial-gradient(#0879ff, #36cfc9, #597ef7)` |
297
- | `--tz-page-use-cyan` / `--tz-page-use-indigo` | `#36cfc9` / `#597ef7` | 光晕渐变 |
298
- | `--tz-page-use-warning` | `#fa8c16` | 光晕误触警示 |
299
- | `--tz-page-use-success` / `--tz-page-use-error` / `--tz-page-use-warning-text` | — | 面板状态色 |
300
-
301
- 模拟光标配色见导出常量 `PAGE_USE_MASK_COLORS`。
302
-
303
- ### 机器人图标
304
-
305
- 调试面板入口按钮上的机器人图标以 SVG 字符串常量 `PAGE_USE_ROBOT_ICON_SVG` 导出,供宿主在自身界面中复用(如智能体列表卡片)。颜色跟随 `currentColor`,不含 `width` / `height`,尺寸由宿主 CSS 控制;`viewBox` 为 24×24、线宽 2,小尺寸显示时线条偏粗可用 CSS 覆盖 `stroke-width`。
306
-
307
- ```vue
308
- <template>
309
- <span class="agent-icon" v-html="PAGE_USE_ROBOT_ICON_SVG" />
310
- </template>
92
+ ## 主题
311
93
 
312
- <script setup lang="ts">
313
- import { PAGE_USE_ROBOT_ICON_SVG } from '@tanzerfe/page-use/vue'
314
- </script>
94
+ 通过 CSS 变量调整主色:
315
95
 
316
- <style scoped>
317
- .agent-icon :deep(svg) {
318
- width: 18px;
319
- height: 18px;
96
+ ```css
97
+ :root {
98
+ --tz-page-use-primary: #1677ff;
320
99
  }
321
- </style>
322
100
  ```
323
101
 
102
+ 机器人图标以 `PAGE_USE_ROBOT_ICON_SVG` 导出,可在业务界面中复用。
103
+
324
104
  ## License
325
105
 
326
106
  MIT
@@ -105,6 +105,11 @@ interface PageUseRunOptions {
105
105
  * 不传时:调试面板已挂载则由面板作答;否则自动回复「无法补充信息」让模型自行决策或结束。
106
106
  */
107
107
  onAskUser?: (question: string) => Promise<string>;
108
+ /**
109
+ * 页面讲解风格 key(如 'user'、'trainer'),仅影响「介绍当前页面」类任务的讲解方式。
110
+ * 优先级:本参数 > 面板设置 > pageTour.defaultStyle;不存在的 key 忽略。
111
+ */
112
+ tourStyle?: string;
108
113
  }
109
114
  /** 能力状态快照(非响应式) */
110
115
  interface PageUseSnapshot {
@@ -121,6 +126,8 @@ interface PageUseSnapshot {
121
126
  interface PageUsePreset {
122
127
  label: string;
123
128
  task: string;
129
+ /** 执行该快捷指令时使用的讲解风格 key,如 { label: '介绍当前页面(培训)', task: '介绍当前页面', tourStyle: 'trainer' } */
130
+ tourStyle?: string;
124
131
  }
125
132
  //#endregion
126
133
  //#region src/capability/api.d.ts
@@ -139,6 +146,26 @@ interface PageUseCapability {
139
146
  }
140
147
  declare const pageUseCapability: PageUseCapability;
141
148
  //#endregion
149
+ //#region src/tour/styles.d.ts
150
+ /**
151
+ * 页面讲解风格:同一页面面向不同受众时,讲解的侧重点、详略与语气不同。
152
+ * 风格说明追加在按页提示的模块清单之后;用户指令中另有讲解要求时以用户指令为准(见工具描述)。
153
+ */
154
+ interface PageUseTourStyle {
155
+ /** 唯一标识,快捷指令与运行参数按此引用 */
156
+ key: string;
157
+ /** 面板中显示的名称 */
158
+ label: string;
159
+ /** 给模型的讲解要求:受众、侧重点、每段篇幅、语气 */
160
+ prompt: string;
161
+ }
162
+ /** 内置风格 key:日常使用者 */
163
+ declare const TOUR_STYLE_USER = "user";
164
+ /** 内置风格 key:培训讲师 */
165
+ declare const TOUR_STYLE_TRAINER = "trainer";
166
+ /** 内置风格;宿主以相同 key 配置时覆盖对应项 */
167
+ declare const DEFAULT_TOUR_STYLES: readonly PageUseTourStyle[];
168
+ //#endregion
142
169
  //#region src/voice/engine.d.ts
143
170
  /**
144
171
  * 演示播报的语音合成引擎接口。
@@ -192,6 +219,8 @@ declare const DEFAULT_MAX_STEPS = 20;
192
219
  declare const DEFAULT_SESSION_HEADER = "x-opencode-session";
193
220
  /** localStorage / sessionStorage 键前缀,可通过 storageKeyPrefix 覆盖 */
194
221
  declare const DEFAULT_STORAGE_KEY_PREFIX = "tz-page-use";
222
+ /** 页面讲解单次最多切换 Tab 的次数(不含结束时切回);每次切换多一次 LLM 调用,限制演示时长 */
223
+ declare const DEFAULT_TOUR_MAX_TAB_SWITCHES = 5;
195
224
  interface PageUseLLMOptions {
196
225
  /**
197
226
  * OpenAI 兼容端点(到版本前缀为止,如 https://api.deepseek.com/v1)。
@@ -220,6 +249,18 @@ interface PageUseLLMOptions {
220
249
  * - history:页面 URL 形如 `/a/b`
221
250
  */
222
251
  type PageUseRouterMode = 'hash' | 'history';
252
+ /** 页面讲解(「介绍当前页面」)的配置 */
253
+ interface PageUseTourOptions {
254
+ /** 单次讲解最多切换 Tab 的次数,默认 5;结束时切回初始 Tab 不计入 */
255
+ maxTabSwitches?: number;
256
+ /**
257
+ * 讲解风格:与内置「日常使用者」(user)「培训讲师」(trainer)合并,同 key 覆盖内置项,新 key 追加。
258
+ * 快捷指令的 tourStyle、运行参数 tourStyle 与面板设置按 key 引用。
259
+ */
260
+ styles?: PageUseTourStyle[];
261
+ /** 未指定风格时使用的 key,默认 'user';不存在时回退为第一个风格 */
262
+ defaultStyle?: string;
263
+ }
223
264
  interface PageUseOptions {
224
265
  llm: PageUseLLMOptions;
225
266
  /** 系统名称,写入系统提示「你正在「xxx」内替用户操作页面」 */
@@ -251,6 +292,24 @@ interface PageUseOptions {
251
292
  * 内置浏览器引擎(本地语音)始终可选且为默认引擎,排在下拉框最前;用户可在调试面板设置中切换到注入的引擎。
252
293
  */
253
294
  tts?: PageUseTtsEngine | PageUseTtsEngine[];
295
+ /**
296
+ * 页面内容区根节点,页面讲解只在其中识别模块与 Tab(排除顶部栏、导航菜单)。
297
+ * 未传或返回空时依次使用 main、[role=main]、document.body。
298
+ */
299
+ getContentRoot?: () => Element | null | undefined;
300
+ /**
301
+ * 页面讲解:默认开启,注册讲解工具并在按页提示中附带模块清单;
302
+ * false 关闭(不注册工具、不附带清单);对象形式可调整 Tab 切换上限。
303
+ */
304
+ pageTour?: boolean | PageUseTourOptions;
305
+ }
306
+ interface NormalizedTourOptions {
307
+ enabled: boolean;
308
+ maxTabSwitches: number;
309
+ /** 内置与宿主合并后的风格,至少含两个内置风格 */
310
+ styles: PageUseTourStyle[];
311
+ /** 已校验存在于 styles 中 */
312
+ defaultStyle: string;
254
313
  }
255
314
  interface NormalizedLLMOptions {
256
315
  /** 绝对地址;page-agent 内部 `new URL(baseURL)` 解析,相对路径会抛错 */
@@ -279,6 +338,9 @@ interface NormalizedPageUseOptions {
279
338
  exposeGlobal: boolean;
280
339
  /** 可选引擎:注入引擎(去重)在前,浏览器引擎在最后;至少含浏览器引擎 */
281
340
  ttsEngines: PageUseTtsEngine[];
341
+ /** 已含回退逻辑,始终返回元素(无 DOM 环境时为 null) */
342
+ getContentRoot: () => Element | null;
343
+ pageTour: NormalizedTourOptions;
282
344
  }
283
345
  declare function normalizeOptions(options: PageUseOptions): NormalizedPageUseOptions;
284
346
  /**
@@ -310,6 +372,8 @@ interface PageUseLauncherConfig {
310
372
  scenarios?: PageUsePreset[];
311
373
  /** 由菜单生成「打开 XX」快捷指令的数量上限,默认 6;0 表示不生成 */
312
374
  menuPresetLimit?: number;
375
+ /** 是否在「常用」中加入包内通用示例,默认 true */
376
+ builtinPresets?: boolean;
313
377
  /** 任务来源 → 展示名;未登记的来源直接显示原值 */
314
378
  sourceLabels?: Record<string, string>;
315
379
  /**
@@ -342,12 +406,12 @@ declare class PageUseLauncherElement extends LitElement {
342
406
  private toastTimer;
343
407
  /**
344
408
  * 日志区跟随滚动:默认贴底跟随新内容;用户上翻后停止跟随,
345
- * 回到底部附近(阈值内)或点击「最新」后恢复。
409
+ * 回到底部附近(阈值内)后恢复。
346
410
  */
347
411
  private stickToBottom;
348
412
  /** 上次渲染时日志内容的摘要;仅内容变化时才贴底,避免每秒的耗时刷新把用户拉回底部 */
349
413
  private logSignature;
350
- /** 下次渲染强制滚到底部(点击「最新」、任务开始) */
414
+ /** 下次渲染强制滚到底部(任务开始) */
351
415
  private forceScroll;
352
416
  /**
353
417
  * 入口尺寸缓存:入口在面板展开时被隐藏,offsetWidth 为 0,
@@ -420,6 +484,7 @@ declare class PageUseLauncherElement extends LitElement {
420
484
  private showToast;
421
485
  private clearHistory;
422
486
  private collapse;
487
+ /** tourStyle:快捷指令携带的讲解风格;输入框提交时不传,按面板设置与宿主默认 */
423
488
  private submit;
424
489
  private applyPreset;
425
490
  private lastTaskText;
@@ -433,9 +498,10 @@ declare class PageUseLauncherElement extends LitElement {
433
498
  /**
434
499
  * 滚轮上翻立即停止跟随:平滑滚动的首个 scroll 事件位移可能小于阈值,
435
500
  * 若此时仍判定为贴底,内容刷新会把视图拉回底部,表现为上翻时抖动。
501
+ * 内容不足一屏(或已在顶部)时无法上翻,也不会触发 scroll 事件来恢复跟随,
502
+ * 因此 scrollTop 为 0 时忽略,否则后续内容增长时不再贴底。
436
503
  */
437
504
  private onLogWheel;
438
- private scrollLogToBottom;
439
505
  private toggleTray;
440
506
  private onClearLog;
441
507
  private sourceLabel;
@@ -450,6 +516,12 @@ declare class PageUseLauncherElement extends LitElement {
450
516
  private editPreset;
451
517
  private savePreset;
452
518
  private renderPresetForm;
519
+ /**
520
+ * 表单中的讲解风格(可选):仅页面讲解启用时显示,选项与设置页一致。
521
+ * 已保存的 key 不在当前风格列表中(宿主移除了该风格)时追加「已失效」项并选中,
522
+ * 不改选直接保存会保留原值;执行时由 resolveTourStyle 回退到面板设置与宿主默认
523
+ */
524
+ private renderPresetTourStyle;
453
525
  /** 列表项:名称一行,指令内容灰色单行省略(悬停查看全文),右侧为操作按钮 */
454
526
  private renderPresetItem;
455
527
  /**
@@ -461,6 +533,8 @@ declare class PageUseLauncherElement extends LitElement {
461
533
  * 演示播报:总开关关闭时只显示开关;开启后依次为引擎下拉(可选引擎多于一个时)、
462
534
  * 语速、音色下拉与试听按钮(无音色列表时只有试听按钮)、不可用 / 无中文语音提示。
463
535
  */
536
+ /** 页面讲解风格:面板中未指定风格的讲解任务使用;快捷指令携带的风格优先 */
537
+ private renderTourStyleSetting;
464
538
  private renderVoiceSettings;
465
539
  /** 元信息:与业务无关的配置与运行环境信息,仅供开发排查;API Key 只显示是否已配置 */
466
540
  private renderMeta;
@@ -638,6 +712,8 @@ interface PageUseSettings {
638
712
  voiceEngineId: string;
639
713
  /** 各引擎的音色,键为引擎 id;缺省或空串表示由引擎自动选择(浏览器引擎为第一个中文语音) */
640
714
  voiceNames: Record<string, string>;
715
+ /** 页面讲解风格 key;空串表示跟随宿主 pageTour.defaultStyle */
716
+ tourStyle: string;
641
717
  /**
642
718
  * 调试入口是否显示:true / false 为用户关闭或方法调用后的持久化结果;
643
719
  * null 表示从未操作过,跟随宿主 PageUseLauncherConfig.defaultHidden。
@@ -694,7 +770,7 @@ interface PageUsePresetState {
694
770
  /**
695
771
  * 新增 / 编辑的校验结果:
696
772
  * - label-empty / task-empty:去除首尾空白后为空
697
- * - duplicate:task 与另一条自定义指令相同
773
+ * - duplicate:task 与讲解风格均与另一条自定义指令相同(未指定风格视为一种取值)
698
774
  * - not-found:编辑的 id 不存在(已被其它入口删除)
699
775
  */
700
776
  type PageUsePresetSaveResult = {
@@ -706,9 +782,9 @@ type PageUsePresetSaveResult = {
706
782
  declare const pageUsePresets: {
707
783
  store: ReadonlyStore<PageUsePresetState>;
708
784
  get(): PageUsePresetState;
709
- /** 新增自定义指令,排在最前;label / task 去除首尾空白后保存 */
785
+ /** 新增自定义指令,排在最前;label / task / tourStyle 去除首尾空白后保存 */
710
786
  add(preset: PageUsePreset): PageUsePresetSaveResult;
711
- /** 编辑自定义指令,位置不变 */
787
+ /** 编辑自定义指令,位置不变;整条替换,未传 tourStyle 即清除原风格 */
712
788
  update(id: string, preset: PageUsePreset): PageUsePresetSaveResult;
713
789
  remove(id: string): void;
714
790
  /** 隐藏一条来源指令(以 task 文本为标识);已隐藏时不重复记录 */
@@ -718,7 +794,9 @@ declare const pageUsePresets: {
718
794
  };
719
795
  //#endregion
720
796
  //#region src/ui/presets.d.ts
721
- /** 通用示例:不依赖具体站点,覆盖详情、标签、返回等典型操作 */
797
+ /**
798
+ * 通用示例:预留。
799
+ */
722
800
  declare const PAGE_USE_STATIC_PRESETS: readonly PageUsePreset[];
723
801
  /**
724
802
  * 取前 N 个可见叶子菜单,生成「打开 XX」快捷指令。
@@ -780,4 +858,4 @@ declare const PAGE_USE_MASK_COLORS: {
780
858
  readonly warning: "#fa8c16";
781
859
  };
782
860
  //#endregion
783
- export { PageUseLLMOptions as $, PageUseGlobal as A, MountPageUseUIOptions as B, getElapsedSeconds as C, pageUseStore as D, isRunning as E, PAGE_USE_TOOL_NAME as F, PageUseLauncherElement as G, mountPageUseUI as H, PageUseCommand as I, DEFAULT_MAX_STEPS as J, PageUseHandle as K, formatPageUseResultForModel as L, showPageUseLauncher as M, PAGE_USE_COMMAND_TYPE as N, ReadonlyStore as O, PAGE_USE_TOOL as P, NormalizedPageUseOptions as Q, isPageUseCommand as R, clearPageUseLog as S, isPageUseConfigured as T, PAGE_USE_LAUNCHER_TAG as U, definePageUseElements as V, PageUseLauncherConfig as W, DEFAULT_SESSION_HEADER as X, DEFAULT_MODEL as Y, DEFAULT_STORAGE_KEY_PREFIX as Z, pageUseSettings as _, PageUseTaskSource as _t, PAGE_USE_ROBOT_ICON_SVG as a, PageUseTtsSpeakOptions as at, PageUseQuestion as b, PageUseCustomPreset as c, pageUseCapability as ct, pageUsePresets as d, PageUsePreset as dt, PageUseOptions as et, PageUseHistoryEntry as f, PageUseProgressEvent as ft, PageUseSettings as g, PageUseTaskResult as gt, PageUsePoint as h, PageUseStepLog as ht, PageUseGlowElement as i, PageUseTtsEngine as it, hidePageUseLauncher as j, PAGE_USE_GLOBAL_KEY as k, PageUsePresetSaveResult as l, PageUseErrorCode as lt, DEFAULT_PAGE_USE_SETTINGS as m, PageUseSnapshot as mt, SIMULATOR_MASK_ID as n, normalizeOptions as nt, PAGE_USE_STATIC_PRESETS as o, PageUseTtsVoice as ot, pageUseHistory as p, PageUseRunOptions as pt, createPageUse as q, PAGE_USE_GLOW_TAG as r, readLauncherSwitch as rt, buildMenuPresets as s, PageUseCapability as st, PAGE_USE_MASK_COLORS as t, PageUseRouterMode as tt, PageUsePresetState as u, PageUseMenuNode as ut, BROWSER_ENGINE_ID as v, PageUseTaskStatus as vt, getPageUseConfig as w, PageUseState as x, browserTtsEngine as y, runPageUseTool as z };
861
+ export { NormalizedPageUseOptions as $, PageUseGlobal as A, MountPageUseUIOptions as B, getElapsedSeconds as C, PageUseTaskSource as Ct, pageUseStore as D, isRunning as E, PAGE_USE_TOOL_NAME as F, PageUseLauncherElement as G, mountPageUseUI as H, PageUseCommand as I, DEFAULT_MAX_STEPS as J, PageUseHandle as K, formatPageUseResultForModel as L, showPageUseLauncher as M, PAGE_USE_COMMAND_TYPE as N, ReadonlyStore as O, PAGE_USE_TOOL as P, DEFAULT_TOUR_MAX_TAB_SWITCHES as Q, isPageUseCommand as R, clearPageUseLog as S, PageUseTaskResult as St, isPageUseConfigured as T, PAGE_USE_LAUNCHER_TAG as U, definePageUseElements as V, PageUseLauncherConfig as W, DEFAULT_SESSION_HEADER as X, DEFAULT_MODEL as Y, DEFAULT_STORAGE_KEY_PREFIX as Z, pageUseSettings as _, PageUsePreset as _t, PAGE_USE_ROBOT_ICON_SVG as a, readLauncherSwitch as at, PageUseQuestion as b, PageUseSnapshot as bt, PageUseCustomPreset as c, PageUseTtsVoice as ct, pageUsePresets as d, TOUR_STYLE_TRAINER as dt, PageUseLLMOptions as et, PageUseHistoryEntry as f, TOUR_STYLE_USER as ft, PageUseSettings as g, PageUseMenuNode as gt, PageUsePoint as h, PageUseErrorCode as ht, PageUseGlowElement as i, normalizeOptions as it, hidePageUseLauncher as j, PAGE_USE_GLOBAL_KEY as k, PageUsePresetSaveResult as l, DEFAULT_TOUR_STYLES as lt, DEFAULT_PAGE_USE_SETTINGS as m, pageUseCapability as mt, SIMULATOR_MASK_ID as n, PageUseRouterMode as nt, PAGE_USE_STATIC_PRESETS as o, PageUseTtsEngine as ot, pageUseHistory as p, PageUseCapability as pt, createPageUse as q, PAGE_USE_GLOW_TAG as r, PageUseTourOptions as rt, buildMenuPresets as s, PageUseTtsSpeakOptions as st, PAGE_USE_MASK_COLORS as t, PageUseOptions as tt, PageUsePresetState as u, PageUseTourStyle as ut, BROWSER_ENGINE_ID as v, PageUseProgressEvent as vt, getPageUseConfig as w, PageUseTaskStatus as wt, PageUseState as x, PageUseStepLog as xt, browserTtsEngine as y, PageUseRunOptions as yt, runPageUseTool as z };
package/dist/index.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- import { $ as PageUseLLMOptions, A as PageUseGlobal, B as MountPageUseUIOptions, C as getElapsedSeconds, D as pageUseStore, E as isRunning, F as PAGE_USE_TOOL_NAME, G as PageUseLauncherElement, H as mountPageUseUI, I as PageUseCommand, J as DEFAULT_MAX_STEPS, K as PageUseHandle, L as formatPageUseResultForModel, M as showPageUseLauncher, N as PAGE_USE_COMMAND_TYPE, O as ReadonlyStore, P as PAGE_USE_TOOL, Q as NormalizedPageUseOptions, R as isPageUseCommand, S as clearPageUseLog, T as isPageUseConfigured, U as PAGE_USE_LAUNCHER_TAG, V as definePageUseElements, W as PageUseLauncherConfig, X as DEFAULT_SESSION_HEADER, Y as DEFAULT_MODEL, Z as DEFAULT_STORAGE_KEY_PREFIX, _ as pageUseSettings, _t as PageUseTaskSource, a as PAGE_USE_ROBOT_ICON_SVG, at as PageUseTtsSpeakOptions, b as PageUseQuestion, c as PageUseCustomPreset, ct as pageUseCapability, d as pageUsePresets, dt as PageUsePreset, et as PageUseOptions, f as PageUseHistoryEntry, ft as PageUseProgressEvent, g as PageUseSettings, gt as PageUseTaskResult, h as PageUsePoint, ht as PageUseStepLog, i as PageUseGlowElement, it as PageUseTtsEngine, j as hidePageUseLauncher, k as PAGE_USE_GLOBAL_KEY, l as PageUsePresetSaveResult, lt as PageUseErrorCode, m as DEFAULT_PAGE_USE_SETTINGS, mt as PageUseSnapshot, n as SIMULATOR_MASK_ID, nt as normalizeOptions, o as PAGE_USE_STATIC_PRESETS, ot as PageUseTtsVoice, p as pageUseHistory, pt as PageUseRunOptions, q as createPageUse, r as PAGE_USE_GLOW_TAG, rt as readLauncherSwitch, s as buildMenuPresets, st as PageUseCapability, t as PAGE_USE_MASK_COLORS, tt as PageUseRouterMode, u as PageUsePresetState, ut as PageUseMenuNode, v as BROWSER_ENGINE_ID, vt as PageUseTaskStatus, w as getPageUseConfig, x as PageUseState, y as browserTtsEngine, z as runPageUseTool } from "./index-D4_hId31.mjs";
2
- export { BROWSER_ENGINE_ID, DEFAULT_MAX_STEPS, DEFAULT_MODEL, DEFAULT_PAGE_USE_SETTINGS, DEFAULT_SESSION_HEADER, DEFAULT_STORAGE_KEY_PREFIX, type MountPageUseUIOptions, type NormalizedPageUseOptions, PAGE_USE_COMMAND_TYPE, PAGE_USE_GLOBAL_KEY, PAGE_USE_GLOW_TAG, PAGE_USE_LAUNCHER_TAG, PAGE_USE_MASK_COLORS, PAGE_USE_ROBOT_ICON_SVG, PAGE_USE_STATIC_PRESETS, PAGE_USE_TOOL, PAGE_USE_TOOL_NAME, type PageUseCapability, type PageUseCommand, type PageUseCustomPreset, type PageUseErrorCode, type PageUseGlobal, PageUseGlowElement, type PageUseHandle, type PageUseHistoryEntry, type PageUseLLMOptions, type PageUseLauncherConfig, PageUseLauncherElement, type PageUseMenuNode, type PageUseOptions, type PageUsePoint, type PageUsePreset, type PageUsePresetSaveResult, type PageUsePresetState, type PageUseProgressEvent, type PageUseQuestion, type PageUseRouterMode, type PageUseRunOptions, type PageUseSettings, type PageUseSnapshot, type PageUseState, type PageUseStepLog, type PageUseTaskResult, type PageUseTaskSource, type PageUseTaskStatus, type PageUseTtsEngine, type PageUseTtsSpeakOptions, type PageUseTtsVoice, type ReadonlyStore, SIMULATOR_MASK_ID, browserTtsEngine, buildMenuPresets, clearPageUseLog, createPageUse, definePageUseElements, formatPageUseResultForModel, getElapsedSeconds, getPageUseConfig, hidePageUseLauncher, isPageUseCommand, isPageUseConfigured, isRunning, mountPageUseUI, normalizeOptions, pageUseCapability, pageUseHistory, pageUsePresets, pageUseSettings, pageUseStore, readLauncherSwitch, runPageUseTool, showPageUseLauncher };
1
+ import { $ as NormalizedPageUseOptions, A as PageUseGlobal, B as MountPageUseUIOptions, C as getElapsedSeconds, Ct as PageUseTaskSource, D as pageUseStore, E as isRunning, F as PAGE_USE_TOOL_NAME, G as PageUseLauncherElement, H as mountPageUseUI, I as PageUseCommand, J as DEFAULT_MAX_STEPS, K as PageUseHandle, L as formatPageUseResultForModel, M as showPageUseLauncher, N as PAGE_USE_COMMAND_TYPE, O as ReadonlyStore, P as PAGE_USE_TOOL, Q as DEFAULT_TOUR_MAX_TAB_SWITCHES, R as isPageUseCommand, S as clearPageUseLog, St as PageUseTaskResult, T as isPageUseConfigured, U as PAGE_USE_LAUNCHER_TAG, V as definePageUseElements, W as PageUseLauncherConfig, X as DEFAULT_SESSION_HEADER, Y as DEFAULT_MODEL, Z as DEFAULT_STORAGE_KEY_PREFIX, _ as pageUseSettings, _t as PageUsePreset, a as PAGE_USE_ROBOT_ICON_SVG, at as readLauncherSwitch, b as PageUseQuestion, bt as PageUseSnapshot, c as PageUseCustomPreset, ct as PageUseTtsVoice, d as pageUsePresets, dt as TOUR_STYLE_TRAINER, et as PageUseLLMOptions, f as PageUseHistoryEntry, ft as TOUR_STYLE_USER, g as PageUseSettings, gt as PageUseMenuNode, h as PageUsePoint, ht as PageUseErrorCode, i as PageUseGlowElement, it as normalizeOptions, j as hidePageUseLauncher, k as PAGE_USE_GLOBAL_KEY, l as PageUsePresetSaveResult, lt as DEFAULT_TOUR_STYLES, m as DEFAULT_PAGE_USE_SETTINGS, mt as pageUseCapability, n as SIMULATOR_MASK_ID, nt as PageUseRouterMode, o as PAGE_USE_STATIC_PRESETS, ot as PageUseTtsEngine, p as pageUseHistory, pt as PageUseCapability, q as createPageUse, r as PAGE_USE_GLOW_TAG, rt as PageUseTourOptions, s as buildMenuPresets, st as PageUseTtsSpeakOptions, t as PAGE_USE_MASK_COLORS, tt as PageUseOptions, u as PageUsePresetState, ut as PageUseTourStyle, v as BROWSER_ENGINE_ID, vt as PageUseProgressEvent, w as getPageUseConfig, wt as PageUseTaskStatus, x as PageUseState, xt as PageUseStepLog, y as browserTtsEngine, yt as PageUseRunOptions, z as runPageUseTool } from "./index-BOXzkiXG.mjs";
2
+ export { BROWSER_ENGINE_ID, DEFAULT_MAX_STEPS, DEFAULT_MODEL, DEFAULT_PAGE_USE_SETTINGS, DEFAULT_SESSION_HEADER, DEFAULT_STORAGE_KEY_PREFIX, DEFAULT_TOUR_MAX_TAB_SWITCHES, DEFAULT_TOUR_STYLES, type MountPageUseUIOptions, type NormalizedPageUseOptions, PAGE_USE_COMMAND_TYPE, PAGE_USE_GLOBAL_KEY, PAGE_USE_GLOW_TAG, PAGE_USE_LAUNCHER_TAG, PAGE_USE_MASK_COLORS, PAGE_USE_ROBOT_ICON_SVG, PAGE_USE_STATIC_PRESETS, PAGE_USE_TOOL, PAGE_USE_TOOL_NAME, type PageUseCapability, type PageUseCommand, type PageUseCustomPreset, type PageUseErrorCode, type PageUseGlobal, PageUseGlowElement, type PageUseHandle, type PageUseHistoryEntry, type PageUseLLMOptions, type PageUseLauncherConfig, PageUseLauncherElement, type PageUseMenuNode, type PageUseOptions, type PageUsePoint, type PageUsePreset, type PageUsePresetSaveResult, type PageUsePresetState, type PageUseProgressEvent, type PageUseQuestion, type PageUseRouterMode, type PageUseRunOptions, type PageUseSettings, type PageUseSnapshot, type PageUseState, type PageUseStepLog, type PageUseTaskResult, type PageUseTaskSource, type PageUseTaskStatus, type PageUseTourOptions, type PageUseTourStyle, type PageUseTtsEngine, type PageUseTtsSpeakOptions, type PageUseTtsVoice, type ReadonlyStore, SIMULATOR_MASK_ID, TOUR_STYLE_TRAINER, TOUR_STYLE_USER, browserTtsEngine, buildMenuPresets, clearPageUseLog, createPageUse, definePageUseElements, formatPageUseResultForModel, getElapsedSeconds, getPageUseConfig, hidePageUseLauncher, isPageUseCommand, isPageUseConfigured, isRunning, mountPageUseUI, normalizeOptions, pageUseCapability, pageUseHistory, pageUsePresets, pageUseSettings, pageUseStore, readLauncherSwitch, runPageUseTool, showPageUseLauncher };
package/dist/index.mjs CHANGED
@@ -1,3 +1,3 @@
1
- import { A as pageUseSettings, B as browserTtsEngine, C as getPageUseConfig, D as pageUsePresets, E as pageUseStore, F as normalizeOptions, I as readLauncherSwitch, L as PAGE_USE_MASK_COLORS, M as DEFAULT_MODEL, N as DEFAULT_SESSION_HEADER, O as pageUseHistory, P as DEFAULT_STORAGE_KEY_PREFIX, R as SIMULATOR_MASK_ID, S as getElapsedSeconds, T as isRunning, _ as runPageUseTool, a as PAGE_USE_STATIC_PRESETS, b as pageUseCapability, c as PAGE_USE_GLOW_TAG, d as PAGE_USE_GLOBAL_KEY, f as PAGE_USE_COMMAND_TYPE, g as isPageUseCommand, h as formatPageUseResultForModel, i as PageUseLauncherElement, j as DEFAULT_MAX_STEPS, k as DEFAULT_PAGE_USE_SETTINGS, l as PageUseGlowElement, m as PAGE_USE_TOOL_NAME, n as mountPageUseUI, o as buildMenuPresets, p as PAGE_USE_TOOL, r as PAGE_USE_LAUNCHER_TAG, s as PAGE_USE_ROBOT_ICON_SVG, t as definePageUseElements, u as createPageUse, v as hidePageUseLauncher, w as isPageUseConfigured, x as clearPageUseLog, y as showPageUseLauncher, z as BROWSER_ENGINE_ID } from "./src-tOb9oqjb.mjs";
1
+ import { A as pageUseSettings, B as BROWSER_ENGINE_ID, C as getPageUseConfig, D as pageUsePresets, E as pageUseStore, F as DEFAULT_TOUR_MAX_TAB_SWITCHES, H as DEFAULT_TOUR_STYLES, I as normalizeOptions, L as readLauncherSwitch, M as DEFAULT_MODEL, N as DEFAULT_SESSION_HEADER, O as pageUseHistory, P as DEFAULT_STORAGE_KEY_PREFIX, R as PAGE_USE_MASK_COLORS, S as getElapsedSeconds, T as isRunning, U as TOUR_STYLE_TRAINER, V as browserTtsEngine, W as TOUR_STYLE_USER, _ as runPageUseTool, a as PAGE_USE_STATIC_PRESETS, b as pageUseCapability, c as PAGE_USE_GLOW_TAG, d as PAGE_USE_GLOBAL_KEY, f as PAGE_USE_COMMAND_TYPE, g as isPageUseCommand, h as formatPageUseResultForModel, i as PageUseLauncherElement, j as DEFAULT_MAX_STEPS, k as DEFAULT_PAGE_USE_SETTINGS, l as PageUseGlowElement, m as PAGE_USE_TOOL_NAME, n as mountPageUseUI, o as buildMenuPresets, p as PAGE_USE_TOOL, r as PAGE_USE_LAUNCHER_TAG, s as PAGE_USE_ROBOT_ICON_SVG, t as definePageUseElements, u as createPageUse, v as hidePageUseLauncher, w as isPageUseConfigured, x as clearPageUseLog, y as showPageUseLauncher, z as SIMULATOR_MASK_ID } from "./src-ChJ6q7jl.mjs";
2
2
 
3
- export { BROWSER_ENGINE_ID, DEFAULT_MAX_STEPS, DEFAULT_MODEL, DEFAULT_PAGE_USE_SETTINGS, DEFAULT_SESSION_HEADER, DEFAULT_STORAGE_KEY_PREFIX, PAGE_USE_COMMAND_TYPE, PAGE_USE_GLOBAL_KEY, PAGE_USE_GLOW_TAG, PAGE_USE_LAUNCHER_TAG, PAGE_USE_MASK_COLORS, PAGE_USE_ROBOT_ICON_SVG, PAGE_USE_STATIC_PRESETS, PAGE_USE_TOOL, PAGE_USE_TOOL_NAME, PageUseGlowElement, PageUseLauncherElement, SIMULATOR_MASK_ID, browserTtsEngine, buildMenuPresets, clearPageUseLog, createPageUse, definePageUseElements, formatPageUseResultForModel, getElapsedSeconds, getPageUseConfig, hidePageUseLauncher, isPageUseCommand, isPageUseConfigured, isRunning, mountPageUseUI, normalizeOptions, pageUseCapability, pageUseHistory, pageUsePresets, pageUseSettings, pageUseStore, readLauncherSwitch, runPageUseTool, showPageUseLauncher };
3
+ export { BROWSER_ENGINE_ID, DEFAULT_MAX_STEPS, DEFAULT_MODEL, DEFAULT_PAGE_USE_SETTINGS, DEFAULT_SESSION_HEADER, DEFAULT_STORAGE_KEY_PREFIX, DEFAULT_TOUR_MAX_TAB_SWITCHES, DEFAULT_TOUR_STYLES, PAGE_USE_COMMAND_TYPE, PAGE_USE_GLOBAL_KEY, PAGE_USE_GLOW_TAG, PAGE_USE_LAUNCHER_TAG, PAGE_USE_MASK_COLORS, PAGE_USE_ROBOT_ICON_SVG, PAGE_USE_STATIC_PRESETS, PAGE_USE_TOOL, PAGE_USE_TOOL_NAME, PageUseGlowElement, PageUseLauncherElement, SIMULATOR_MASK_ID, TOUR_STYLE_TRAINER, TOUR_STYLE_USER, browserTtsEngine, buildMenuPresets, clearPageUseLog, createPageUse, definePageUseElements, formatPageUseResultForModel, getElapsedSeconds, getPageUseConfig, hidePageUseLauncher, isPageUseCommand, isPageUseConfigured, isRunning, mountPageUseUI, normalizeOptions, pageUseCapability, pageUseHistory, pageUsePresets, pageUseSettings, pageUseStore, readLauncherSwitch, runPageUseTool, showPageUseLauncher };