@becrafter/prompt-manager 0.0.19 → 0.1.1
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 +145 -234
- package/app/desktop/assets/app.1.png +0 -0
- package/app/desktop/assets/app.png +0 -0
- package/app/desktop/assets/icons/icon.icns +0 -0
- package/app/desktop/assets/icons/icon.ico +0 -0
- package/app/desktop/assets/icons/icon.png +0 -0
- package/app/desktop/assets/icons/tray.png +0 -0
- package/app/desktop/assets/tray.1.png +0 -0
- package/app/desktop/assets/tray.png +0 -0
- package/app/desktop/main.js +27 -0
- package/app/desktop/package-lock.json +216 -48
- package/app/desktop/package.json +23 -29
- package/app/desktop/src/services/module-loader.js +43 -22
- package/app/desktop/src/services/runtime-manager.js +172 -23
- package/app/desktop/src/ui/admin-window-manager.js +757 -0
- package/app/desktop/src/ui/splash-manager.js +253 -0
- package/app/desktop/src/ui/tray-manager.js +8 -24
- package/app/desktop/src/utils/icon-manager.js +39 -47
- package/app/desktop/src/utils/resource-paths.js +0 -23
- package/app/desktop/src/utils/resource-sync.js +260 -0
- package/app/desktop/src/utils/runtime-sync.js +241 -0
- package/examples/prompts/recommend/human_3-0_growth_diagnostic_coach_prompt.yaml +105 -0
- package/package.json +16 -13
- package/packages/admin-ui/.babelrc +3 -0
- package/packages/admin-ui/admin.html +237 -4784
- package/packages/admin-ui/css/main.css +2592 -0
- package/packages/admin-ui/css/recommended-prompts.css +610 -0
- package/packages/admin-ui/package-lock.json +6981 -0
- package/packages/admin-ui/package.json +36 -0
- package/packages/admin-ui/src/codemirror.js +53 -0
- package/packages/admin-ui/src/index.js +3188 -0
- package/packages/admin-ui/webpack.config.js +76 -0
- package/packages/resources/tools/chrome-devtools/README.md +310 -0
- package/packages/resources/tools/chrome-devtools/chrome-devtools.tool.js +1703 -0
- package/packages/resources/tools/file-reader/README.md +289 -0
- package/packages/resources/tools/file-reader/file-reader.tool.js +1545 -0
- package/packages/resources/tools/filesystem/README.md +359 -0
- package/packages/resources/tools/filesystem/filesystem.tool.js +514 -160
- package/packages/resources/tools/ollama-remote/README.md +192 -0
- package/packages/resources/tools/ollama-remote/ollama-remote.tool.js +421 -0
- package/packages/resources/tools/pdf-reader/README.md +236 -0
- package/packages/resources/tools/pdf-reader/pdf-reader.tool.js +565 -0
- package/packages/resources/tools/playwright/README.md +306 -0
- package/packages/resources/tools/playwright/playwright.tool.js +1186 -0
- package/packages/resources/tools/todolist/README.md +394 -0
- package/packages/resources/tools/todolist/todolist.tool.js +1312 -0
- package/packages/server/README.md +142 -0
- package/packages/server/api/admin.routes.js +42 -11
- package/packages/server/api/surge.routes.js +43 -0
- package/packages/server/app.js +119 -14
- package/packages/server/index.js +39 -0
- package/packages/server/mcp/mcp.server.js +324 -105
- package/packages/server/mcp/sequential-thinking.handler.js +318 -0
- package/packages/server/mcp/think-plan.handler.js +274 -0
- package/packages/server/middlewares/auth.middleware.js +6 -0
- package/packages/server/package.json +51 -0
- package/packages/server/server.js +37 -1
- package/packages/server/toolm/index.js +9 -0
- package/packages/server/toolm/package-installer.service.js +267 -0
- package/packages/server/toolm/test-tools.js +264 -0
- package/packages/server/toolm/tool-context.service.js +334 -0
- package/packages/server/toolm/tool-dependency.service.js +168 -0
- package/packages/server/toolm/tool-description-generator-optimized.service.js +375 -0
- package/packages/server/toolm/tool-description-generator.service.js +312 -0
- package/packages/server/toolm/tool-environment.service.js +200 -0
- package/packages/server/toolm/tool-execution.service.js +277 -0
- package/packages/server/toolm/tool-loader.service.js +219 -0
- package/packages/server/toolm/tool-logger.service.js +223 -0
- package/packages/server/toolm/tool-manager.handler.js +65 -0
- package/packages/server/toolm/tool-manual-generator.service.js +389 -0
- package/packages/server/toolm/tool-mode-handlers.service.js +224 -0
- package/packages/server/toolm/tool-storage.service.js +111 -0
- package/packages/server/toolm/tool-sync.service.js +138 -0
- package/packages/server/toolm/tool-utils.js +20 -0
- package/packages/server/toolm/tool-yaml-parser.service.js +81 -0
- package/packages/server/toolm/validate-system.js +421 -0
- package/packages/server/utils/config.js +49 -5
- package/packages/server/utils/util.js +65 -10
- package/scripts/build-icons.js +99 -69
- package/scripts/build.sh +57 -0
- package/scripts/surge/CNAME +1 -0
- package/scripts/surge/README.md +47 -0
- package/scripts/surge/package-lock.json +34 -0
- package/scripts/surge/package.json +20 -0
- package/scripts/surge/sync-to-surge.js +151 -0
- package/app/desktop/assets/icons/icon_1024x1024.png +0 -0
- package/app/desktop/assets/icons/icon_128x128.png +0 -0
- package/app/desktop/assets/icons/icon_16x16.png +0 -0
- package/app/desktop/assets/icons/icon_24x24.png +0 -0
- package/app/desktop/assets/icons/icon_256x256.png +0 -0
- package/app/desktop/assets/icons/icon_32x32.png +0 -0
- package/app/desktop/assets/icons/icon_48x48.png +0 -0
- package/app/desktop/assets/icons/icon_512x512.png +0 -0
- package/app/desktop/assets/icons/icon_64x64.png +0 -0
- package/app/desktop/assets/icons/icon_96x96.png +0 -0
- package/packages/admin-ui/js/closebrackets.min.js +0 -8
- package/packages/admin-ui/js/codemirror.min.js +0 -8
- package/packages/admin-ui/js/js-yaml.min.js +0 -2
- package/packages/admin-ui/js/markdown.min.js +0 -8
- package/packages/resources/tools/index.js +0 -16
- package/packages/server/mcp/toolx.handler.js +0 -131
- package/scripts/icns-builder/package.json +0 -12
- /package/packages/server/mcp/{mcp.handler.js → prompt.handler.js} +0 -0
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
# Playwright Tool
|
|
2
|
+
|
|
3
|
+
基于 Playwright 的浏览器自动化工具,支持页面导航、元素操作、截图、内容提取等功能。
|
|
4
|
+
|
|
5
|
+
## 功能特性
|
|
6
|
+
|
|
7
|
+
1. **页面导航** (`navigate`, `goBack`, `goForward`, `reload`)
|
|
8
|
+
- 导航到指定 URL
|
|
9
|
+
- 浏览器前进/后退
|
|
10
|
+
- 刷新页面
|
|
11
|
+
|
|
12
|
+
2. **元素操作** (`click`, `fill`, `waitForSelector`)
|
|
13
|
+
- 点击元素
|
|
14
|
+
- 填写表单
|
|
15
|
+
- 等待元素出现
|
|
16
|
+
|
|
17
|
+
3. **内容获取** (`getContent`, `getTitle`, `getUrl`)
|
|
18
|
+
- 获取页面 HTML 内容
|
|
19
|
+
- 获取页面标题
|
|
20
|
+
- 获取当前 URL
|
|
21
|
+
|
|
22
|
+
4. **截图功能** (`screenshot`)
|
|
23
|
+
- 页面截图
|
|
24
|
+
- 支持整页截图
|
|
25
|
+
- 自动保存到工具目录
|
|
26
|
+
|
|
27
|
+
5. **脚本执行** (`evaluate`)
|
|
28
|
+
- 在页面中执行 JavaScript 代码
|
|
29
|
+
- 获取执行结果
|
|
30
|
+
|
|
31
|
+
6. **浏览器管理** (`close`)
|
|
32
|
+
- 关闭浏览器实例
|
|
33
|
+
|
|
34
|
+
## 环境变量配置
|
|
35
|
+
|
|
36
|
+
工具支持以下环境变量:
|
|
37
|
+
|
|
38
|
+
- `PLAYWRIGHT_BROWSER` (可选): 默认浏览器类型(chromium/firefox/webkit),默认 `chromium`
|
|
39
|
+
- `PLAYWRIGHT_HEADLESS` (可选): 是否无头模式(true/false),默认 `true`
|
|
40
|
+
- `PLAYWRIGHT_TIMEOUT` (可选): 默认超时时间(毫秒),默认 `30000`
|
|
41
|
+
|
|
42
|
+
## 使用方法
|
|
43
|
+
|
|
44
|
+
### 1. 配置环境变量
|
|
45
|
+
|
|
46
|
+
```yaml
|
|
47
|
+
tool: tool://playwright
|
|
48
|
+
mode: configure
|
|
49
|
+
parameters:
|
|
50
|
+
PLAYWRIGHT_BROWSER: "chromium"
|
|
51
|
+
PLAYWRIGHT_HEADLESS: "true"
|
|
52
|
+
PLAYWRIGHT_TIMEOUT: "30000"
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### 2. 导航到页面
|
|
56
|
+
|
|
57
|
+
```yaml
|
|
58
|
+
tool: tool://playwright
|
|
59
|
+
mode: execute
|
|
60
|
+
parameters:
|
|
61
|
+
method: navigate
|
|
62
|
+
url: "https://example.com"
|
|
63
|
+
options:
|
|
64
|
+
headless: true
|
|
65
|
+
waitUntil: "load"
|
|
66
|
+
timeout: 30000
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### 3. 点击元素
|
|
70
|
+
|
|
71
|
+
```yaml
|
|
72
|
+
tool: tool://playwright
|
|
73
|
+
mode: execute
|
|
74
|
+
parameters:
|
|
75
|
+
method: click
|
|
76
|
+
selector: "button#submit"
|
|
77
|
+
options:
|
|
78
|
+
timeout: 5000
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### 4. 填写表单
|
|
82
|
+
|
|
83
|
+
```yaml
|
|
84
|
+
tool: tool://playwright
|
|
85
|
+
mode: execute
|
|
86
|
+
parameters:
|
|
87
|
+
method: fill
|
|
88
|
+
selector: "input#username"
|
|
89
|
+
text: "用户名"
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### 5. 截图
|
|
93
|
+
|
|
94
|
+
```yaml
|
|
95
|
+
tool: tool://playwright
|
|
96
|
+
mode: execute
|
|
97
|
+
parameters:
|
|
98
|
+
method: screenshot
|
|
99
|
+
url: "https://example.com" # 可选,如果页面未导航则自动导航
|
|
100
|
+
fullPage: true
|
|
101
|
+
screenshotPath: "screenshot.png" # 可选,默认保存到工具目录
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### 6. 获取页面内容
|
|
105
|
+
|
|
106
|
+
```yaml
|
|
107
|
+
tool: tool://playwright
|
|
108
|
+
mode: execute
|
|
109
|
+
parameters:
|
|
110
|
+
method: getContent
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### 7. 执行脚本
|
|
114
|
+
|
|
115
|
+
```yaml
|
|
116
|
+
tool: tool://playwright
|
|
117
|
+
mode: execute
|
|
118
|
+
parameters:
|
|
119
|
+
method: evaluate
|
|
120
|
+
script: "document.title"
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### 8. 保持浏览器打开(连续操作)
|
|
124
|
+
|
|
125
|
+
```yaml
|
|
126
|
+
tool: tool://playwright
|
|
127
|
+
mode: execute
|
|
128
|
+
parameters:
|
|
129
|
+
method: navigate
|
|
130
|
+
url: "https://example.com"
|
|
131
|
+
keepAlive: true # 保持浏览器打开
|
|
132
|
+
options:
|
|
133
|
+
keepAlive: true
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## 参数说明
|
|
137
|
+
|
|
138
|
+
### 通用参数
|
|
139
|
+
|
|
140
|
+
- `method` (必需): 操作方法名称
|
|
141
|
+
- `keepAlive` (可选): 操作完成后是否保持浏览器打开(默认 false)。设置为 true 时,浏览器会保持打开状态,可用于连续操作或调试
|
|
142
|
+
- `options` (可选): 操作选项对象
|
|
143
|
+
- `browser`: 浏览器类型(chromium/firefox/webkit),默认 `chromium`
|
|
144
|
+
- `headless`: 是否无头模式,默认 `true`
|
|
145
|
+
- `timeout`: 超时时间(毫秒),默认 `30000`
|
|
146
|
+
- `waitUntil`: 等待页面加载状态(load/domcontentloaded/networkidle),默认 `load`
|
|
147
|
+
- `keepAlive`: 是否保持浏览器打开,默认 `false`
|
|
148
|
+
|
|
149
|
+
### 导航相关参数
|
|
150
|
+
|
|
151
|
+
- `url`: 目标 URL(navigate 方法必需,screenshot 方法可选)
|
|
152
|
+
|
|
153
|
+
### 元素操作参数
|
|
154
|
+
|
|
155
|
+
- `selector`: CSS选择器(click、fill、waitForSelector 方法需要)
|
|
156
|
+
- `text`: 要填写的文本(fill 方法需要)
|
|
157
|
+
|
|
158
|
+
### 截图参数
|
|
159
|
+
|
|
160
|
+
- `screenshotPath`: 截图保存路径(可选,默认保存到工具目录的 data 子目录)
|
|
161
|
+
- `fullPage`: 是否截取整页,默认 `false`
|
|
162
|
+
- `url`: 目标 URL(可选,如果页面未导航则自动导航)
|
|
163
|
+
|
|
164
|
+
### 脚本执行参数
|
|
165
|
+
|
|
166
|
+
- `script`: 要执行的JavaScript代码(evaluate 方法需要)
|
|
167
|
+
|
|
168
|
+
## 返回格式
|
|
169
|
+
|
|
170
|
+
### navigate 返回
|
|
171
|
+
|
|
172
|
+
```json
|
|
173
|
+
{
|
|
174
|
+
"success": true,
|
|
175
|
+
"url": "https://example.com",
|
|
176
|
+
"title": "页面标题"
|
|
177
|
+
}
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
### click 返回
|
|
181
|
+
|
|
182
|
+
```json
|
|
183
|
+
{
|
|
184
|
+
"success": true,
|
|
185
|
+
"selector": "button#submit"
|
|
186
|
+
}
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
### fill 返回
|
|
190
|
+
|
|
191
|
+
```json
|
|
192
|
+
{
|
|
193
|
+
"success": true,
|
|
194
|
+
"selector": "input#username",
|
|
195
|
+
"text": "用户名"
|
|
196
|
+
}
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
### screenshot 返回
|
|
200
|
+
|
|
201
|
+
```json
|
|
202
|
+
{
|
|
203
|
+
"success": true,
|
|
204
|
+
"path": "/path/to/screenshot.png",
|
|
205
|
+
"url": "https://example.com"
|
|
206
|
+
}
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
### getContent 返回
|
|
210
|
+
|
|
211
|
+
```json
|
|
212
|
+
{
|
|
213
|
+
"success": true,
|
|
214
|
+
"content": "<html>...</html>",
|
|
215
|
+
"length": 1024
|
|
216
|
+
}
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
### evaluate 返回
|
|
220
|
+
|
|
221
|
+
```json
|
|
222
|
+
{
|
|
223
|
+
"success": true,
|
|
224
|
+
"result": "执行结果"
|
|
225
|
+
}
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
## 错误处理
|
|
229
|
+
|
|
230
|
+
工具定义了以下业务错误:
|
|
231
|
+
|
|
232
|
+
- `BROWSER_LAUNCH_FAILED`: 浏览器启动失败
|
|
233
|
+
- `NAVIGATION_FAILED`: 页面导航失败
|
|
234
|
+
- `ELEMENT_NOT_FOUND`: 元素未找到
|
|
235
|
+
- `SCREENSHOT_FAILED`: 截图失败
|
|
236
|
+
- `NETWORK_ERROR`: 网络错误
|
|
237
|
+
- `INVALID_SELECTOR`: 无效的选择器
|
|
238
|
+
- `TIMEOUT`: 操作超时
|
|
239
|
+
|
|
240
|
+
## 注意事项
|
|
241
|
+
|
|
242
|
+
1. **服务器同步**: 新添加的工具需要重启服务器才能被加载
|
|
243
|
+
2. **浏览器安装**: 首次使用时需要安装 Playwright 浏览器(会自动安装,可能需要几分钟)
|
|
244
|
+
3. **浏览器生命周期**: 默认情况下操作完成后会自动关闭浏览器(可通过 `keepAlive` 参数控制)
|
|
245
|
+
4. **跨执行保持**: 使用 `keepAlive: true` 时,浏览器实例会跨执行保持,便于连续操作
|
|
246
|
+
5. **一个指令一个页面**: 一个指令(一个 execute 调用)中只会使用一个浏览器窗口/页面实例
|
|
247
|
+
6. **数据存储**: 工具数据存储在 `~/.prompt-manager/toolbox/playwright/data/` 目录下
|
|
248
|
+
7. **浏览器二进制**: 浏览器二进制文件会下载到 `~/.cache/ms-playwright/` 目录
|
|
249
|
+
|
|
250
|
+
## 测试步骤
|
|
251
|
+
|
|
252
|
+
1. **重启服务器**(如果服务器已在运行)
|
|
253
|
+
|
|
254
|
+
2. **查看工具手册**
|
|
255
|
+
```yaml
|
|
256
|
+
tool: tool://playwright
|
|
257
|
+
mode: manual
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
3. **配置环境变量**
|
|
261
|
+
```yaml
|
|
262
|
+
tool: tool://playwright
|
|
263
|
+
mode: configure
|
|
264
|
+
parameters:
|
|
265
|
+
PLAYWRIGHT_BROWSER: "chromium"
|
|
266
|
+
PLAYWRIGHT_HEADLESS: "true"
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
4. **测试导航**
|
|
270
|
+
```yaml
|
|
271
|
+
tool: tool://playwright
|
|
272
|
+
mode: execute
|
|
273
|
+
parameters:
|
|
274
|
+
method: navigate
|
|
275
|
+
url: "https://example.com"
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
5. **测试截图**
|
|
279
|
+
```yaml
|
|
280
|
+
tool: tool://playwright
|
|
281
|
+
mode: execute
|
|
282
|
+
parameters:
|
|
283
|
+
method: screenshot
|
|
284
|
+
url: "https://example.com"
|
|
285
|
+
fullPage: true
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
## 开发说明
|
|
289
|
+
|
|
290
|
+
工具基于 Playwright 库开发,遵循 Prompt Manager 工具开发规范:
|
|
291
|
+
|
|
292
|
+
- 使用 ES6 模块格式 (`export default`)
|
|
293
|
+
- 实现必需方法 `execute()`
|
|
294
|
+
- 实现推荐方法:`getDependencies()`, `getMetadata()`, `getSchema()`, `getBusinessErrors()`
|
|
295
|
+
- 完整的错误处理和日志记录
|
|
296
|
+
- 智能浏览器生命周期管理
|
|
297
|
+
- 符合工具开发指南的所有要求
|
|
298
|
+
|
|
299
|
+
## 版本历史
|
|
300
|
+
|
|
301
|
+
- **1.1.0** (2025-01-01): 当前版本
|
|
302
|
+
- 实现所有 Playwright 核心功能
|
|
303
|
+
- 支持 keepAlive 参数保持浏览器状态
|
|
304
|
+
- 自动浏览器安装和验证
|
|
305
|
+
- 完整的错误处理和日志记录
|
|
306
|
+
|