ms-vite-plugin 1.1.2 → 1.1.3

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.
Files changed (94) hide show
  1. package/dist/build.js +6 -0
  2. package/dist/cli.js +91 -1
  3. package/dist/mcp/device-config.d.ts +55 -0
  4. package/dist/mcp/device-config.js +183 -0
  5. package/dist/mcp/docs-service.d.ts +65 -0
  6. package/dist/mcp/docs-service.js +168 -0
  7. package/dist/mcp/project.d.ts +16 -0
  8. package/dist/mcp/project.js +74 -0
  9. package/dist/mcp/tools.d.ts +18 -0
  10. package/dist/mcp/tools.js +825 -0
  11. package/dist/mcp/types.d.ts +32 -0
  12. package/dist/mcp/types.js +11 -0
  13. package/dist/mcp-server.d.ts +2 -0
  14. package/dist/mcp-server.js +86 -0
  15. package/dist/project.d.ts +89 -0
  16. package/dist/project.js +306 -0
  17. package/dist/version.d.ts +12 -0
  18. package/dist/version.js +63 -0
  19. package/docs/api/action.md +922 -0
  20. package/docs/api/appleocr.md +229 -0
  21. package/docs/api/config.md +122 -0
  22. package/docs/api/cryptoUtils.md +232 -0
  23. package/docs/api/device.md +374 -0
  24. package/docs/api/file.md +516 -0
  25. package/docs/api/global.md +617 -0
  26. package/docs/api/hid.md +1032 -0
  27. package/docs/api/hotUpdate.md +166 -0
  28. package/docs/api/http.md +548 -0
  29. package/docs/api/image.md +907 -0
  30. package/docs/api/ime.md +290 -0
  31. package/docs/api/logger.md +324 -0
  32. package/docs/api/media.md +248 -0
  33. package/docs/api/mysql.md +441 -0
  34. package/docs/api/netCard.md +200 -0
  35. package/docs/api/node.md +353 -0
  36. package/docs/api/paddleocr.md +246 -0
  37. package/docs/api/pip.md +242 -0
  38. package/docs/api/system.md +572 -0
  39. package/docs/api/thread.md +269 -0
  40. package/docs/api/tomatoocr.md +425 -0
  41. package/docs/api/tts.md +334 -0
  42. package/docs/api/ui.md +947 -0
  43. package/docs/api/utils.md +265 -0
  44. package/docs/api/yolo.md +310 -0
  45. package/docs/apicn/action.md +919 -0
  46. package/docs/apicn/appleocr.md +233 -0
  47. package/docs/apicn/config.md +120 -0
  48. package/docs/apicn/device.md +385 -0
  49. package/docs/apicn/file.md +511 -0
  50. package/docs/apicn/global.md +613 -0
  51. package/docs/apicn/hid.md +1033 -0
  52. package/docs/apicn/hotUpdate.md +170 -0
  53. package/docs/apicn/http.md +672 -0
  54. package/docs/apicn/image.md +924 -0
  55. package/docs/apicn/ime.md +290 -0
  56. package/docs/apicn/logger.md +332 -0
  57. package/docs/apicn/media.md +252 -0
  58. package/docs/apicn/mysql.md +445 -0
  59. package/docs/apicn/netCard.md +200 -0
  60. package/docs/apicn/node.md +362 -0
  61. package/docs/apicn/paddleocr.md +255 -0
  62. package/docs/apicn/pip.md +242 -0
  63. package/docs/apicn/system.md +575 -0
  64. package/docs/apicn/thread.md +269 -0
  65. package/docs/apicn/tts.md +338 -0
  66. package/docs/apicn/ui.md +933 -0
  67. package/docs/apicn/utils.md +265 -0
  68. package/docs/apicn/yolo.md +314 -0
  69. package/docs/apipython/action.md +901 -0
  70. package/docs/apipython/appleocr.md +226 -0
  71. package/docs/apipython/config.md +126 -0
  72. package/docs/apipython/cryptoUtils.md +246 -0
  73. package/docs/apipython/device.md +365 -0
  74. package/docs/apipython/file.md +476 -0
  75. package/docs/apipython/g.md +154 -0
  76. package/docs/apipython/hid.md +1059 -0
  77. package/docs/apipython/hotUpdate.md +154 -0
  78. package/docs/apipython/image.md +938 -0
  79. package/docs/apipython/ime.md +306 -0
  80. package/docs/apipython/logger.md +330 -0
  81. package/docs/apipython/media.md +221 -0
  82. package/docs/apipython/mysql.md +432 -0
  83. package/docs/apipython/netCard.md +219 -0
  84. package/docs/apipython/node.md +331 -0
  85. package/docs/apipython/overview.md +66 -0
  86. package/docs/apipython/paddleocr.md +211 -0
  87. package/docs/apipython/pip.md +231 -0
  88. package/docs/apipython/system.md +458 -0
  89. package/docs/apipython/tomatoocr.md +444 -0
  90. package/docs/apipython/tts.md +331 -0
  91. package/docs/apipython/ui.md +949 -0
  92. package/docs/apipython/utils.md +284 -0
  93. package/docs/apipython/yolo.md +281 -0
  94. package/package.json +8 -4
@@ -0,0 +1,246 @@
1
+ # PaddleOCR 模块 (PaddleOCR)
2
+
3
+ PaddleOCR 模块基于百度飞桨 PaddleOCR 技术,提供强大的光学字符识别(OCR)功能,支持中英文文本识别,可用于屏幕截图、图片文件等多种输入源的文字识别。
4
+
5
+ ## 功能概览
6
+
7
+ - **模型管理**: PP-OCRv5 模型加载和资源管理
8
+ - **多源识别**: 支持屏幕截图、图片文件、URL 等多种输入源
9
+ - **区域识别**: 支持指定区域的精确文字识别
10
+ - **结构化结果**: 提供详细的文本位置、置信度和方向信息
11
+ - **资源控制**: 完整的模型生命周期管理
12
+
13
+ ## 数据类型
14
+
15
+ ### OCRResult 接口
16
+
17
+ 识别结果的数据结构,包含完整的文本信息和位置数据:
18
+
19
+ ```typescript
20
+ interface OCRResult {
21
+ /** 识别的文本内容 */
22
+ text: string;
23
+ /** 识别置信度 (0-1) */
24
+ confidence: number;
25
+ /** 文本区域左上角 x 坐标 */
26
+ x: number;
27
+ /** 文本区域左上角 y 坐标 */
28
+ y: number;
29
+ /** 文本区域右下角 x 坐标 */
30
+ ex: number;
31
+ /** 文本区域右下角 y 坐标 */
32
+ ey: number;
33
+ /** 文本区域宽度 */
34
+ width: number;
35
+ /** 文本区域高度 */
36
+ height: number;
37
+ /** 文本区域中心点 x 坐标 */
38
+ centerX: number;
39
+ /** 文本区域中心点 y 坐标 */
40
+ centerY: number;
41
+ /** 文本区域角度 */
42
+ angle: number;
43
+ /** 文本区域方向 0 横向 1 竖向 */
44
+ orientation: number;
45
+ }
46
+ ```
47
+
48
+ **数据结构说明:**
49
+
50
+ | 字段 | 类型 | 描述 |
51
+ | ------------------ | ------ | ----------------------------------------------------- |
52
+ | `text` | string | 识别出的文本内容 |
53
+ | `confidence` | number | 识别置信度,范围 0-1,值越高表示识别越准确 |
54
+ | `x, y, ex, ey` | number | 文本区域的坐标,分别为左上角和右下角的 x、y 坐标 |
55
+ | `width, height` | number | 文本区域的宽度和高度 |
56
+ | `centerX, centerY` | number | 文本区域的中心点坐标 |
57
+ | `angle` | number | 文本区域的角度,范围 -90 到 90 度,正值表示逆时针旋转 |
58
+ | `orientation` | number | 文本区域的方向,0 表示横向,1 表示竖向 |
59
+
60
+ ## API 参考
61
+
62
+ ### 模型管理
63
+
64
+ #### loadV5 - 初始化 PP-OCRv5 模型,这是使用 OCR 功能的前提。
65
+
66
+ ```typescript
67
+ function loadV5(maxSideLen?: number): boolean;
68
+ ```
69
+
70
+ **参数:**
71
+
72
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
73
+ | ------------ | ------ | -------- | ------ | -------------------------------- |
74
+ | `maxSideLen` | number | 否 | 640 | 输入图像的最大边长,默认值为 640 |
75
+
76
+ **返回值:**
77
+
78
+ | 类型 | 描述 |
79
+ | ------- | ---------------- |
80
+ | boolean | 是否成功加载模型 |
81
+
82
+ **示例:**
83
+
84
+ ```javascript
85
+ // 使用默认参数加载模型
86
+ const loaded = paddleOcr.loadV5();
87
+ if (loaded) {
88
+ logi("PP-OCRv5 模型加载成功");
89
+ }
90
+ ```
91
+
92
+ ### 文字识别
93
+
94
+ #### recognize - 执行 OCR 文字识别,支持多种输入源和指定识别区域。
95
+
96
+ ```typescript
97
+ function recognize(
98
+ input: string,
99
+ x?: number,
100
+ y?: number,
101
+ ex?: number,
102
+ ey?: number,
103
+ confidenceThreshold?: number,
104
+ ): OCRResult[];
105
+ ```
106
+
107
+ **参数:**
108
+
109
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
110
+ | --------------------- | ------ | -------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------- |
111
+ | `input` | string | 是 | | 输入源,支持以下类型:<br>- `"screen"` - 当前屏幕截图<br>- `string` - 图片文件路径或 URL<br>- `imageId` - 图片 ID(通过 image 模块获取) |
112
+ | `x` | number | 否 | 0 | 识别区域左上角 x 坐标 |
113
+ | `y` | number | 否 | 0 | 识别区域左上角 y 坐标 |
114
+ | `ex` | number | 否 | 0 | 识别区域右下角 x 坐标 |
115
+ | `ey` | number | 否 | 0 | 识别区域右下角 y 坐标 |
116
+ | `confidenceThreshold` | number | 否 | 0.6 | 置信度阈值,默认值为 0.6 |
117
+
118
+ **返回值:**
119
+
120
+ | 类型 | 描述 |
121
+ | ------------- | --------------------------------------------------------------------------------- |
122
+ | `OCRResult[]` | 识别结果数组,每个元素为 OCRResult 对象,包含文本内容、位置信息和置信度等详细数据 |
123
+
124
+ **示例:**
125
+
126
+ ```javascript
127
+ // 首先加载模型
128
+ if (!paddleOcr.loadV5()) {
129
+ logi("模型加载失败");
130
+ return;
131
+ }
132
+
133
+ // 识别整个屏幕
134
+ const fullScreenResults = paddleOcr.recognize("screen", 0, 0, 0, 0);
135
+ logi(`识别到 ${fullScreenResults.length} 个文本区域`);
136
+ fullScreenResults.forEach((result, index) => {
137
+ logi(`文本 ${index + 1}: ${JSON.stringify(result)}`);
138
+ });
139
+
140
+ // 识别屏幕指定区域
141
+ const regionResults = paddleOcr.recognize("screen", 100, 100, 500, 300);
142
+ logi(`指定区域识别结果: ${JSON.stringify(regionResults)}`);
143
+
144
+ // 识别图片文件
145
+ const imageResults = paddleOcr.recognize("/path/to/image.png", 0, 0, 800, 600);
146
+ if (imageResults.length > 0) {
147
+ logi("图片文字识别成功");
148
+ imageResults.forEach((result) => {
149
+ logi(`识别文字: ${JSON.stringify(result)}`);
150
+ });
151
+ } else {
152
+ logi("图片中未识别到文字");
153
+ }
154
+
155
+ // 识别网络图片
156
+ const urlResults = paddleOcr.recognize(
157
+ "https://example.com/image.jpg",
158
+ 0,
159
+ 0,
160
+ 1000,
161
+ 800,
162
+ );
163
+ logi(`网络图片识别结果: ${JSON.stringify(urlResults)}`);
164
+ ```
165
+
166
+ #### findText - 在识别结果中查找目标文本并返回对应子串坐标。
167
+
168
+ ```typescript
169
+ function findText(
170
+ input: string,
171
+ targetTexts: string[],
172
+ x?: number,
173
+ y?: number,
174
+ ex?: number,
175
+ ey?: number,
176
+ confidenceThreshold?: number,
177
+ ): OCRResult[];
178
+ ```
179
+
180
+ **参数:**
181
+
182
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
183
+ | --------------------- | -------- | -------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------- |
184
+ | `input` | string | 是 | | 输入源,支持以下类型:<br>- `"screen"` - 当前屏幕截图<br>- `string` - 图片文件路径或 URL<br>- `imageId` - 图片 ID(通过 image 模块获取) |
185
+ | `targetTexts` | string[] | 是 | | 目标文本数组,例如 `["你好", "确定"]` |
186
+ | `x` | number | 否 | 0 | 查找区域左上角 x 坐标 |
187
+ | `y` | number | 否 | 0 | 查找区域左上角 y 坐标 |
188
+ | `ex` | number | 否 | 0 | 查找区域右下角 x 坐标 |
189
+ | `ey` | number | 否 | 0 | 查找区域右下角 y 坐标 |
190
+ | `confidenceThreshold` | number | 否 | 0.6 | 置信度阈值,默认值为 0.6 |
191
+
192
+ **返回值:**
193
+
194
+ | 类型 | 描述 |
195
+ | ------------- | ----------------------------------------------------------------------------------------------------------- |
196
+ | `OCRResult[]` | 匹配结果数组。每个元素为命中的文本片段坐标信息,`text` 字段为命中的目标文本,其他字段包含位置和置信度等信息 |
197
+
198
+ **示例:**
199
+
200
+ ```javascript
201
+ // 首先加载模型
202
+ if (!paddleOcr.loadV5()) {
203
+ logi("模型加载失败");
204
+ return;
205
+ }
206
+
207
+ // 在整个屏幕中查找目标文本
208
+ const hitResults = paddleOcr.findText(
209
+ "screen",
210
+ ["登录", "确定"],
211
+ 0,
212
+ 0,
213
+ 0,
214
+ 0,
215
+ 0.6,
216
+ );
217
+ if (hitResults.length > 0) {
218
+ hitResults.forEach((item, index) => {
219
+ logi(
220
+ `命中 ${index + 1}: ${item.text}, 中心点: (${item.centerX}, ${item.centerY})`,
221
+ );
222
+ });
223
+ } else {
224
+ logi("未命中目标文本");
225
+ }
226
+
227
+ // 在指定区域查找目标文本
228
+ const regionHits = paddleOcr.findText("screen", ["下一步"], 100, 100, 500, 400);
229
+ logi(`区域命中数量: ${regionHits.length}`);
230
+ ```
231
+
232
+ ### 资源管理
233
+
234
+ #### free - 释放 OCR 模型占用的内存资源。
235
+
236
+ ```typescript
237
+ function free(): void;
238
+ ```
239
+
240
+ **示例:**
241
+
242
+ ```javascript
243
+ // 使用完毕后释放资源
244
+ paddleOcr.free();
245
+ logi("OCR 模型资源已释放");
246
+ ```
@@ -0,0 +1,242 @@
1
+ # 悬浮窗模块 (PIP)
2
+
3
+ 悬浮窗模块提供了画中画(Picture in Picture)功能,允许在应用中显示悬浮的日志窗口,支持自定义样式和控制脚本启停。
4
+
5
+ ## 功能特性
6
+
7
+ - 🖼️ **悬浮窗显示** - 支持在屏幕上显示悬浮的日志窗口
8
+ - 🎨 **自定义样式** - 可配置窗口大小、字体、颜色等
9
+ - 🎮 **脚本控制** - 支持通过悬浮窗控制脚本的启停
10
+
11
+ ## 接口定义
12
+
13
+ ### LogViewParams - 悬浮窗参数配置
14
+
15
+ ```typescript
16
+ interface LogViewParams {
17
+ /**
18
+ * 悬浮窗宽度,不能小于 100
19
+ */
20
+ width: number;
21
+ /**
22
+ * 悬浮窗高度,不能小于 100
23
+ */
24
+ height: number;
25
+ /**
26
+ * 日志的字体大小
27
+ */
28
+ textSize: number;
29
+ /**
30
+ * 日志的文字颜色,格式如 #FFFFFF
31
+ */
32
+ textColor: string;
33
+ /**
34
+ * 日志的背景颜色,格式如 #000000
35
+ */
36
+ backgroundColor: string;
37
+ }
38
+ ```
39
+
40
+ **参数说明:**
41
+
42
+ | 参数 | 类型 | 是否必填 | 默认值 | 描述 |
43
+ | ----------------- | ------ | -------- | ------ | --------------------------------------- |
44
+ | `width` | number | 是 | | 悬浮窗宽度(像素),最小值为 100 |
45
+ | `height` | number | 是 | | 悬浮窗高度(像素),最小值为 100 |
46
+ | `textSize` | number | 是 | | 日志文字大小(像素) |
47
+ | `textColor` | string | 是 | | 文字颜色,十六进制格式(如:`#FFFFFF`) |
48
+ | `backgroundColor` | string | 是 | | 背景颜色,十六进制格式(如:`#000000`) |
49
+
50
+ ## API 方法
51
+
52
+ ### setLogViewParams - 设置悬浮窗显示参数
53
+
54
+ ```typescript
55
+ function setLogViewParams(params: LogViewParams): void;
56
+ ```
57
+
58
+ 设置悬浮窗日志窗口的显示参数,必须在显示日志窗口之前调用才会生效。
59
+
60
+ **参数:**
61
+
62
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
63
+ | -------- | ------------- | -------- | ------ | ---------------------- |
64
+ | `params` | LogViewParams | 是 | | 包含显示参数的配置对象 |
65
+
66
+ **示例:**
67
+
68
+ ```typescript
69
+ // 配置悬浮窗参数
70
+ pip.setLogViewParams({
71
+ width: 300,
72
+ height: 400,
73
+ textSize: 14,
74
+ textColor: "#FFFFFF",
75
+ backgroundColor: "#000000",
76
+ });
77
+ ```
78
+
79
+ ### isPipActive - 判断悬浮窗是否打开
80
+
81
+ ```typescript
82
+ function isPipActive(): boolean;
83
+ ```
84
+
85
+ 判断悬浮窗是否当前打开。
86
+
87
+ **返回值:**
88
+
89
+ | 类型 | 描述 |
90
+ | --------- | --------------------------------------------- |
91
+ | `boolean` | `true` 代表开启了悬浮窗,`false` 代表没有开启 |
92
+
93
+ **示例:**
94
+
95
+ ```typescript
96
+ // 检查悬浮窗是否打开
97
+ const isActive = pip.isPipActive();
98
+ if (isActive) {
99
+ logi("悬浮窗当前已打开");
100
+ } else {
101
+ logi("悬浮窗当前未打开");
102
+ }
103
+ ```
104
+
105
+ ### showLogWindow - 显示日志窗口
106
+
107
+ ```typescript
108
+ function showLogWindow(): boolean;
109
+ ```
110
+
111
+ 显示悬浮窗日志窗口。应用必须在前台才可调用
112
+
113
+ **返回值:**
114
+
115
+ | 类型 | 描述 |
116
+ | --------- | --------------------------------- |
117
+ | `boolean` | `true` 代表成功,`false` 代表失败 |
118
+
119
+ **示例:**
120
+
121
+ ```typescript
122
+ // 将应用切入前台
123
+ takeMeToFront();
124
+ // 显示悬浮窗
125
+ const success = pip.showLogWindow();
126
+ if (success) {
127
+ logi("悬浮窗显示成功");
128
+ } else {
129
+ logi("悬浮窗显示失败,请检查权限设置");
130
+ }
131
+ ```
132
+
133
+ ### closeLogWindow - 关闭日志窗口
134
+
135
+ ```typescript
136
+ function closeLogWindow(): boolean;
137
+ ```
138
+
139
+ 关闭悬浮窗日志窗口。应用必须在前台才可调用。
140
+
141
+ **返回值:**
142
+
143
+ | 类型 | 描述 |
144
+ | --------- | --------------------------------- |
145
+ | `boolean` | `true` 代表成功,`false` 代表失败 |
146
+
147
+ **示例:**
148
+
149
+ ```typescript
150
+ // 将应用切入前台
151
+ takeMeToFront();
152
+ // 关闭悬浮窗
153
+ const success = pip.closeLogWindow();
154
+ if (success) {
155
+ logi("悬浮窗关闭成功");
156
+ } else {
157
+ logi("悬浮窗关闭失败");
158
+ }
159
+ ```
160
+
161
+ ### setPipCtrlScript - 设置脚本控制权限
162
+
163
+ ```typescript
164
+ function setPipCtrlScript(ctrl: boolean): boolean;
165
+ ```
166
+
167
+ 设置是否允许悬浮窗控制脚本的启停。
168
+
169
+ **参数:**
170
+
171
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
172
+ | ------ | ------- | -------- | ------ | ------------------------------------------- |
173
+ | `ctrl` | boolean | 是 | | `true` 代表允许控制,`false` 代表不允许控制 |
174
+
175
+ **示例:**
176
+
177
+ **返回值:**
178
+
179
+ | 类型 | 描述 |
180
+ | --------- | --------------------------------- |
181
+ | `boolean` | `true` 代表成功,`false` 代表失败 |
182
+
183
+ **示例:**
184
+
185
+ ```typescript
186
+ // 允许悬浮窗控制脚本
187
+ const ok1 = pip.setPipCtrlScript(true);
188
+ // 禁止悬浮窗控制脚本
189
+ const ok2 = pip.setPipCtrlScript(false);
190
+ ```
191
+
192
+ ## 完整使用示例
193
+
194
+ ```typescript
195
+ // 将应用切入前台
196
+ takeMeToFront();
197
+ // 1. 配置悬浮窗参数
198
+ pip.setLogViewParams({
199
+ width: 350,
200
+ height: 500,
201
+ textSize: 16,
202
+ textColor: "#00FF00", // 绿色文字
203
+ backgroundColor: "#1A1A1A", // 深灰色背景
204
+ });
205
+
206
+ // 2. 允许悬浮窗控制脚本
207
+ pip.setPipCtrlScript(true);
208
+
209
+ // 3. 显示悬浮窗
210
+ const showResult = pip.showLogWindow();
211
+ ```
212
+
213
+ ## 注意事项
214
+
215
+ 1. **前台限制**:所有悬浮窗操作都必须在应用前台状态下进行
216
+ 2. **设备兼容性**:仅支持 iOS 15+ 且具备画中画功能的设备
217
+ 3. **参数限制**:悬浮窗的宽度和高度都不能小于 100 像素
218
+ 4. **配置时机**:`setLogViewParams()` 必须在 `showLogWindow()` 之前调用
219
+ 5. **颜色格式**:颜色值必须使用十六进制格式(如:`#FFFFFF`)
220
+ 6. **尺寸适配**:iOS 系统会对画中画窗口的尺寸进行限制和自动调整,实际显示的画中画窗口大小可能与设置的 `width` 和 `height` 参数不完全一致
221
+ 7. **内容渲染**:画中画内容渲染会自动适配系统分配的实际窗口尺寸,而不是使用配置的尺寸参数
222
+ 8. **脚本控制**:如果已调用 `setPipCtrlScript(true)`,则可以通过悬浮窗控制脚本的启停
223
+
224
+ ## 故障排除
225
+
226
+ ### 悬浮窗无法显示
227
+
228
+ - 确认设备支持悬浮窗功能
229
+ - 检查悬浮窗权限是否已开启
230
+ - 确认参数配置是否正确(宽高不小于 100)
231
+
232
+ ### 悬浮窗显示异常
233
+
234
+ - 检查颜色值格式是否正确
235
+ - 确认字体大小设置是否合理
236
+ - 验证窗口尺寸是否在有效范围内
237
+
238
+ ### 脚本控制无效
239
+
240
+ - 确认已调用 `setPipCtrlScript(true)`
241
+ - 检查悬浮窗是否正常显示
242
+ - 验证脚本运行状态是否正常