ms-vite-plugin 1.4.47 → 1.4.49
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/dist/build.js +1 -292
- package/dist/cli.js +6 -1234
- package/dist/mcp/device-config.d.ts +0 -47
- package/dist/mcp/device-config.js +1 -183
- package/dist/mcp/device-log.d.ts +0 -8
- package/dist/mcp/device-log.js +3 -27
- package/dist/mcp/doc-tools.d.ts +0 -7
- package/dist/mcp/doc-tools.js +2 -39
- package/dist/mcp/docs-service.d.ts +0 -13
- package/dist/mcp/docs-service.js +1 -63
- package/dist/mcp/httpapi-docs-service.d.ts +0 -31
- package/dist/mcp/httpapi-docs-service.js +1 -122
- package/dist/mcp/httpapi-tools.d.ts +0 -7
- package/dist/mcp/httpapi-tools.js +4 -222
- package/dist/mcp/image-tools.d.ts +0 -62
- package/dist/mcp/image-tools.js +8 -607
- package/dist/mcp/ocr-tools.d.ts +0 -25
- package/dist/mcp/ocr-tools.js +5 -413
- package/dist/mcp/project.d.ts +0 -14
- package/dist/mcp/project.js +1 -74
- package/dist/mcp/runtime-tools.d.ts +0 -7
- package/dist/mcp/runtime-tools.js +11 -308
- package/dist/mcp/tool-utils.d.ts +0 -40
- package/dist/mcp/tool-utils.js +1 -81
- package/dist/mcp/tools.d.ts +0 -12
- package/dist/mcp/tools.js +1 -31
- package/dist/mcp/types.d.ts +0 -12
- package/dist/mcp/types.js +1 -11
- package/dist/mcp-server.js +1 -85
- package/dist/packager.d.ts +0 -7
- package/dist/packager.js +1 -125
- package/dist/project.d.ts +0 -61
- package/dist/project.js +1 -619
- package/dist/stopGuardPlugin.d.ts +0 -6
- package/dist/stopGuardPlugin.js +1 -165
- package/dist/version.d.ts +0 -10
- package/dist/version.js +1 -63
- package/dist/ws-manager.d.ts +0 -95
- package/dist/ws-manager.js +1 -392
- package/docs/api/image.md +249 -25
- package/docs/apicn/image.md +245 -19
- package/docs/apipython/image.md +238 -18
- package/package.json +3 -2
package/docs/apipython/image.md
CHANGED
|
@@ -461,6 +461,8 @@ if imageId:
|
|
|
461
461
|
|
|
462
462
|
### findImage - 找图
|
|
463
463
|
|
|
464
|
+
在大图(通常是屏幕截图)中查找小图(模板)。支持多种匹配算法,可按 `|` 同时传入多个模板。
|
|
465
|
+
|
|
464
466
|
```python
|
|
465
467
|
def findImage(id: str, templateImageId: str, x: int, y: int, ex: int, ey: int, threshold: float, limit: int, method: int, rgb: bool = False, options: dict = {}) -> List[Rect]
|
|
466
468
|
```
|
|
@@ -472,46 +474,264 @@ def findImage(id: str, templateImageId: str, x: int, y: int, ex: int, ey: int, t
|
|
|
472
474
|
| `imageId` | str | 是 | <br /> | `"screen"`-当前屏幕截图, `string`-图片文件路径或 URL ,`imageId`-图片 ID(通过 image 模块获取) |
|
|
473
475
|
| `templateImageId` | str | 是 | <br /> | `"screen"`-当前屏幕截图, `string`-图片文件路径或 URL ,`imageId`-图片 ID(通过 image 模块获取)支持按\|分割,多个图片按顺序查找 |
|
|
474
476
|
| `x, y` | int | 是 | <br /> | 搜索区域左上角坐标 |
|
|
475
|
-
| `ex, ey` | int | 是 | <br /> |
|
|
476
|
-
| `threshold` | float | 是 | <br /> | 匹配阈值 (0.0-1.0)
|
|
477
|
+
| `ex, ey` | int | 是 | <br /> | 搜索区域右下角坐标;传 `0` 表示延伸到图片右侧或底部边界 |
|
|
478
|
+
| `threshold` | float | 是 | <br /> | 匹配阈值 (0.0-1.0)。method `0`/`99` 建议 `0.5`–`0.6`;普通模板匹配(`1`/`3`/`5`)建议 `0.9`–`0.995` |
|
|
477
479
|
| `limit` | int | 是 | <br /> | 最大查找数量,每个模板图片最多找 limit 个匹配结果 |
|
|
478
|
-
| `method` | int | 是 | <br /> |
|
|
480
|
+
| `method` | int | 是 | <br /> | 匹配方法,见下方说明 |
|
|
479
481
|
| `rgb` | bool | 否 | `False` | 是否使用 RGB 找图,默认 `False` 会自动转灰度找图 |
|
|
480
|
-
| `options` | dict | 否 | `{}` |
|
|
481
|
-
| `options.scaleFactors` | list\[float] | 否 | `[1.0, 0.9, 1.1, 0.8, 1.2]` |
|
|
482
|
+
| `options` | dict | 否 | `{}` | 额外选项,目前仅 method=`99` 时生效 |
|
|
483
|
+
| `options.scaleFactors` | list\[float] | 否 | `[1.0, 0.9, 1.1, 0.8, 1.2]` | 仅 method=`99` 生效。模板相对当前图的缩放比列表(**不是** `device.getScreenScale()`)。应按 baseScale 动态计算,见下方详解;默认值只适合尺寸接近时的盲扫 |
|
|
484
|
+
|
|
485
|
+
#### method 匹配方法说明
|
|
486
|
+
|
|
487
|
+
| method | 名称 | 原理简述 | 适用场景 | 速度 |
|
|
488
|
+
| ------ | ------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------ | -------- |
|
|
489
|
+
| `5` | TM_CCOEFF_NORMED | 标准模板匹配(归一化相关系数),模板必须与目标**像素尺寸一致** | 同分辨率、同尺寸截图模板,最常用 | 快 |
|
|
490
|
+
| `3` | TM_CCORR_NORMED | 标准模板匹配(归一化相关) | 同尺寸模板;PNG 透明模板带 mask 时内部会优先用它 | 快 |
|
|
491
|
+
| `1` | TM_SQDIFF_NORMED | 标准模板匹配(归一化平方差),分数越小越像,引擎已换算为越大越像 | 同尺寸模板 | 快 |
|
|
492
|
+
| `0` | SIFT 全分辨率 | 提取 SIFT 特征点做匹配,对旋转、轻微形变更鲁棒,不要求模板与目标同尺寸 | 目标可能旋转/形变,或跨分辨率找图 | 较慢 |
|
|
493
|
+
| `99` | 全分辨率缩放匹配法 | 把**模板**按多个比例缩放后,再做 `TM_CCOEFF_NORMED` 模板匹配(有透明通道时用 `TM_CCORR_NORMED`) | 目标与模板尺寸不完全一致,但形状相同 | 中等偏慢 |
|
|
494
|
+
|
|
495
|
+
#### 什么是「缩放」全分辨率找图(method = 99)
|
|
496
|
+
|
|
497
|
+
这里的「缩放」**不是**把屏幕截图缩小,也**不是**设备显示缩放(`device.getScreenScale()`),而是:
|
|
498
|
+
|
|
499
|
+
> 在匹配前,把**模板小图**按 `scaleFactors` 里的比例逐个放大/缩小,再与**原尺寸**搜索区域做模板匹配。
|
|
500
|
+
|
|
501
|
+
- `factor = 1.0`:模板保持原像素尺寸去匹配
|
|
502
|
+
- `factor < 1.0`:先把模板缩小再匹配(当前屏幕上的目标比模板更小)
|
|
503
|
+
- `factor > 1.0`:先把模板放大再匹配(当前屏幕上的目标比模板更大)
|
|
504
|
+
|
|
505
|
+
引擎内部是对模板做等比缩放(横向、纵向同一个比例)。
|
|
506
|
+
返回结果里的 `width` / `height` 是缩放后的模板尺寸,`scaleX` / `scaleY` 是本次命中用到的比例。
|
|
507
|
+
|
|
508
|
+
工作流程:
|
|
509
|
+
|
|
510
|
+
1. 读取搜索区域(大图)和模板(小图),默认转灰度(`rgb=True` 时保留彩色)。
|
|
511
|
+
2. 按 `scaleFactors` **数组顺序**,对模板执行等比缩放。
|
|
512
|
+
3. 若缩放后的模板比搜索区域还大,跳过该比例。
|
|
513
|
+
4. 用缩放后的模板做 `TM_CCOEFF_NORMED` 匹配(透明 PNG 用 `TM_CCORR_NORMED` + alpha mask)。
|
|
514
|
+
5. 收集 `confidence >= threshold` 的命中;重叠区域去重,保留置信度更高者。
|
|
515
|
+
6. 找满 `limit` 个后提前结束——所以**更可能命中的比例要放前面**。
|
|
516
|
+
|
|
517
|
+
#### 如何选择 `scaleFactors`(重点)
|
|
518
|
+
|
|
519
|
+
`scaleFactors` 不是随便填几个小数,而是回答这个问题:
|
|
520
|
+
|
|
521
|
+
> 「模板图里的目标,到当前屏幕上会变成原来的几倍宽/高?」
|
|
522
|
+
|
|
523
|
+
##### 1. 先算「目标比例」baseScale
|
|
524
|
+
|
|
525
|
+
UI 随分辨率等比变化时(大多数 App / 游戏界面):
|
|
526
|
+
|
|
527
|
+
```text
|
|
528
|
+
baseScale = 当前设备逻辑宽 / 截取模板时设备的逻辑宽
|
|
529
|
+
```
|
|
530
|
+
|
|
531
|
+
也可用高:
|
|
532
|
+
|
|
533
|
+
```text
|
|
534
|
+
baseScale = 当前设备逻辑高 / 截取模板时设备的逻辑高
|
|
535
|
+
```
|
|
536
|
+
|
|
537
|
+
宽高比一致时两者相同;不一致时优先用**与布局更相关的那条边**(竖屏 App 常用高,横屏游戏常用宽),或取两者平均。
|
|
538
|
+
|
|
539
|
+
这里的「逻辑宽高」请用找图坐标系对应的尺寸,一般是 `device.getScreenRealSize()`(实际像素分辨率)。
|
|
540
|
+
**不要**把 `device.getScreenScale()`(屏幕 scale 因子)直接当成 `scaleFactors` 里的值——两者不是一回事。
|
|
541
|
+
|
|
542
|
+
若你确切知道模板像素尺寸和屏幕上目标像素尺寸,也可以直接:
|
|
543
|
+
|
|
544
|
+
```text
|
|
545
|
+
baseScale = 屏幕上目标宽度(px) / 模板宽度(px)
|
|
546
|
+
# 或
|
|
547
|
+
baseScale = 屏幕上目标高度(px) / 模板高度(px)
|
|
548
|
+
```
|
|
549
|
+
|
|
550
|
+
**数值例子:**
|
|
551
|
+
|
|
552
|
+
| 截模板设备 | 当前运行设备 | 计算 | baseScale |
|
|
553
|
+
| -------------- | -------------- | ----------- | --------- |
|
|
554
|
+
| iPhone 8 750px | 同机 | 750 / 750 | `1.0` |
|
|
555
|
+
| 750 宽 | 1170 宽 | 1170 / 750 | `1.56` |
|
|
556
|
+
| 1170 宽 | 750 宽 | 750 / 1170 | `0.641` |
|
|
557
|
+
| 1080 宽安卓 | 1440 宽安卓 | 1440 / 1080 | `1.333` |
|
|
558
|
+
| 模板按钮 120px | 屏上按钮 96px | 96 / 120 | `0.8` |
|
|
559
|
+
|
|
560
|
+
含义对照:
|
|
561
|
+
|
|
562
|
+
| baseScale | 含义 | 引擎会对模板做什么 |
|
|
563
|
+
| --------- | -------------------------------------------- | ------------------ |
|
|
564
|
+
| `1.0` | 当前目标与模板同尺寸 | 不缩放 |
|
|
565
|
+
| `0.64` | 当前目标大约是模板的 64%(高分屏模板跑低分) | 缩到 64% 再匹配 |
|
|
566
|
+
| `1.56` | 当前目标大约是模板的 156%(低分屏模板跑高分) | 放大到 156% 再匹配 |
|
|
567
|
+
|
|
568
|
+
##### 2. 再围绕 baseScale 生成搜索列表
|
|
569
|
+
|
|
570
|
+
真实设备上还会有状态栏、安全区、App 缩放、截图工具裁切误差等,baseScale 很少绝对精确,所以要在 baseScale **附近扫一小段**:
|
|
571
|
+
|
|
572
|
+
```text
|
|
573
|
+
scaleFactors ≈ [ baseScale,
|
|
574
|
+
baseScale ± step,
|
|
575
|
+
baseScale ± 2*step,
|
|
576
|
+
... ]
|
|
577
|
+
```
|
|
578
|
+
|
|
579
|
+
推荐参数:
|
|
580
|
+
|
|
581
|
+
| 项目 | 建议 | 原因 |
|
|
582
|
+
| -------------- | ---------------------------------- | ------------------------------------------ |
|
|
583
|
+
| 中心值 | 算出来的 `baseScale` | 最可能命中,必须放第一位 |
|
|
584
|
+
| 步进 `step` | `0.05`~`0.1` | 太疏容易跳过真实尺寸;太密浪费时间 |
|
|
585
|
+
| 半宽度 | `±0.1`~`±0.2`(约 ±10%~20%) | 覆盖状态栏/安全区/轻微布局差 |
|
|
586
|
+
| 总档数 | 3~7 个 | 每多一档就多跑一轮全图模板匹配 |
|
|
587
|
+
| 阈值 threshold | `0.5`~`0.6` 起调 | 缩放插值会降低相关分数,别用 0.9+ |
|
|
588
|
+
| 顺序 | **baseScale 最先**,再左右交替扩开 | 找满 limit 会提前结束 |
|
|
589
|
+
|
|
590
|
+
生成示例:
|
|
591
|
+
|
|
592
|
+
```python
|
|
593
|
+
from kuaijs import device
|
|
594
|
+
|
|
595
|
+
# 截模板时的设备宽(写进脚本配置,或写在模板文件名里)
|
|
596
|
+
template_device_width = 750
|
|
597
|
+
# 当前设备实际宽
|
|
598
|
+
current_width = device.getScreenRealSize().width
|
|
599
|
+
base_scale = current_width / template_device_width
|
|
600
|
+
|
|
601
|
+
def build_scale_factors(base, step=0.05, half_range=2):
|
|
602
|
+
scales = [round(base, 4)]
|
|
603
|
+
for i in range(1, half_range + 1):
|
|
604
|
+
scales.append(round(base - step * i, 4))
|
|
605
|
+
scales.append(round(base + step * i, 4))
|
|
606
|
+
# 过滤掉无意义的比例
|
|
607
|
+
return [s for s in scales if 0.05 < s < 8]
|
|
608
|
+
|
|
609
|
+
scale_factors = build_scale_factors(base_scale)
|
|
610
|
+
# 例如 base_scale=1.56, step=0.05, half_range=2
|
|
611
|
+
# → [1.56, 1.51, 1.61, 1.46, 1.66]
|
|
612
|
+
```
|
|
613
|
+
|
|
614
|
+
##### 3. 按场景怎么选
|
|
615
|
+
|
|
616
|
+
| 场景 | 怎么设 `scaleFactors` | threshold |
|
|
617
|
+
| ---------------------------------------- | -------------------------------------------------------------- | ------------- |
|
|
618
|
+
| 模板就是本机截的,尺寸确定一致 | 不必用 99,直接 method `5`;若坚持用 99 则 `[1.0]` | `0.9+` / `0.55` |
|
|
619
|
+
| 已知截图机型与当前机型分辨率 | 算 `baseScale`,再 `±0.05`~`±0.1` 扩 3~5 档 | `0.5`~`0.6` |
|
|
620
|
+
| 多机型跑同一套模板,分辨率跨度大 | 按每台设备运行时动态算 baseScale,不要写死默认那组 | `0.5`~`0.6` |
|
|
621
|
+
| 完全不知道模板来源分辨率 | 先用 method `0`(SIFT);或宽范围粗扫(慢,如 0.5~2.0 步进 0.1) | `0.5` 左右 |
|
|
622
|
+
| 只要微调(系统字体/显示缩放导致差几像素) | `[1.0, 0.95, 1.05, 0.9, 1.1]` | `0.55`~`0.65` |
|
|
623
|
+
| 横竖屏切换 / 目标会旋转 | method `99` **不够**,改用 method `0` SIFT | `0.5`~`0.6` |
|
|
624
|
+
|
|
625
|
+
默认值 `[1.0, 0.9, 1.1, 0.8, 1.2]` 的定位:
|
|
626
|
+
|
|
627
|
+
- 假设「模板大致接近当前尺寸」,在 80%~120% 之间盲扫
|
|
628
|
+
- **只适合尺寸差不大的兜底**,不适合 750 ↔ 1170 这种跨度(baseScale≈1.56,默认列表根本扫不到)
|
|
629
|
+
- 生产脚本应**按设备算 baseScale**,不要依赖这组默认值硬扛跨分辨率
|
|
630
|
+
|
|
631
|
+
##### 4. 常见误区
|
|
632
|
+
|
|
633
|
+
1. **把 `device.getScreenScale()` 填进 scaleFactors**
|
|
634
|
+
`getScreenScale()` 是屏幕 scale(如 2x/3x 显示倍率),不是「模板相对当前图」的缩放比。
|
|
635
|
+
|
|
636
|
+
2. **跨大分辨率仍用默认 `[1.0, 0.9, 1.1, 0.8, 1.2]`**
|
|
637
|
+
真实 baseScale 在 1.5 时,默认列表全军覆没。
|
|
638
|
+
|
|
639
|
+
3. **threshold 仍用 0.9**
|
|
640
|
+
resize 插值会损失细节,method `99` 相关分通常明显低于同尺寸 method `5`,建议从 `0.55` 左右调。
|
|
641
|
+
|
|
642
|
+
4. **档位又多又密**
|
|
643
|
+
全屏 × 10 个 factor ≈ 10 次模板匹配,卡顿明显。先算准 baseScale,再小范围扩。
|
|
644
|
+
|
|
645
|
+
5. **模板含大量透明/JPEG 压缩噪点**
|
|
646
|
+
缩放后更易误匹配;优先 PNG 透明模板,并尽量裁紧目标外轮廓。
|
|
647
|
+
|
|
648
|
+
6. **搜索区域小于放大后的模板**
|
|
649
|
+
该 factor 会被跳过。放大场景请保证 ROI 足够大,或全屏搜。
|
|
650
|
+
|
|
651
|
+
##### 5. 与 method `0`(SIFT)怎么选
|
|
652
|
+
|
|
653
|
+
| | method `99` 缩放匹配 | method `0` SIFT |
|
|
654
|
+
| -------------- | ---------------------------------- | ---------------------------------- |
|
|
655
|
+
| 尺寸变化 | 支持(靠你提供的比例穷举) | 支持(特征点,不靠固定比例) |
|
|
656
|
+
| 你需要知道比例 | 最好先算 baseScale | 不需要 |
|
|
657
|
+
| 旋转 / 形变 | 基本不支持 | 较鲁棒 |
|
|
658
|
+
| 阈值建议 | `0.5`–`0.6` | `0.5`–`0.6` |
|
|
659
|
+
| 透明 PNG 模板 | 支持(alpha 作权重 mask) | 支持(alpha 作特征掩码) |
|
|
660
|
+
| 性能 | 与 factor 数量近似成正比,通常更快 | 特征提取重,通常更慢 |
|
|
661
|
+
| 推荐 | 比例可估算的跨分辨率找图 | 比例未知、或有旋转/透视时 |
|
|
482
662
|
|
|
483
663
|
**返回值:**
|
|
484
664
|
|
|
485
|
-
| 类型 | 描述
|
|
486
|
-
| ------------ |
|
|
487
|
-
| `List[Rect]` |
|
|
665
|
+
| 类型 | 描述 |
|
|
666
|
+
| ------------ | ----------------------------------------------------------------------------------------------------------------------------------------- |
|
|
667
|
+
| `List[Rect]` | 匹配结果数组。`index` 为模板在 `templateImageId` 中的索引(从 0 开始)。method=`99` 时额外包含 `scaleX`、`scaleY`(本次命中使用的缩放比) |
|
|
488
668
|
|
|
489
669
|
**示例:**
|
|
490
670
|
|
|
491
671
|
```python
|
|
492
|
-
from kuaijs import image, action
|
|
672
|
+
from kuaijs import image, action, device
|
|
493
673
|
|
|
674
|
+
# 1) 同分辨率标准找图(最常用,模板就是本机截的)
|
|
494
675
|
matches = image.findImage(
|
|
495
676
|
"screen",
|
|
496
677
|
"template.jpg|template2.jpg",
|
|
497
678
|
0,
|
|
498
679
|
0,
|
|
499
680
|
400,
|
|
500
|
-
800,
|
|
501
|
-
0.
|
|
502
|
-
3,
|
|
503
|
-
5,
|
|
504
|
-
False
|
|
681
|
+
800,
|
|
682
|
+
0.9,
|
|
683
|
+
3,
|
|
684
|
+
5, # TM_CCOEFF_NORMED
|
|
685
|
+
False,
|
|
505
686
|
)
|
|
506
687
|
|
|
507
688
|
if len(matches) > 0:
|
|
508
689
|
best = matches[0]
|
|
509
690
|
print(f"找到匹配,置信度: {best.confidence}")
|
|
691
|
+
action.click(best.centerX, best.centerY, 100, False)
|
|
692
|
+
|
|
693
|
+
# 2) 缩放全分辨率找图:按「截模板设备宽 / 当前设备宽」计算比例
|
|
694
|
+
# 假设模板是在宽度 750 的设备上截的
|
|
695
|
+
template_device_width = 750
|
|
696
|
+
current_width = device.getScreenRealSize().width
|
|
697
|
+
base_scale = current_width / template_device_width
|
|
698
|
+
|
|
699
|
+
|
|
700
|
+
def build_scale_factors(base, step=0.05, half_range=2):
|
|
701
|
+
scales = [round(base, 4)]
|
|
702
|
+
for i in range(1, half_range + 1):
|
|
703
|
+
scales.append(round(base - step * i, 4))
|
|
704
|
+
scales.append(round(base + step * i, 4))
|
|
705
|
+
return [s for s in scales if 0.05 < s < 8]
|
|
706
|
+
|
|
707
|
+
|
|
708
|
+
scale_factors = build_scale_factors(base_scale)
|
|
709
|
+
# 750 → 1170 时约等于 [1.56, 1.51, 1.61, 1.46, 1.66]
|
|
710
|
+
print(f"baseScale={base_scale:.3f} scaleFactors={scale_factors}")
|
|
711
|
+
|
|
712
|
+
scaled = image.findImage(
|
|
713
|
+
"screen",
|
|
714
|
+
"btn_start.png",
|
|
715
|
+
0,
|
|
716
|
+
0,
|
|
717
|
+
0,
|
|
718
|
+
0, # 全屏;放大模板时 ROI 太小会被跳过
|
|
719
|
+
0.55, # 多尺度建议 0.5-0.6,不要用 0.9
|
|
720
|
+
1,
|
|
721
|
+
99,
|
|
722
|
+
False,
|
|
723
|
+
{"scaleFactors": scale_factors},
|
|
724
|
+
)
|
|
725
|
+
|
|
726
|
+
if len(scaled) > 0:
|
|
727
|
+
hit = scaled[0]
|
|
728
|
+
print(
|
|
729
|
+
f"命中 scale={hit.scaleX} 尺寸={hit.width}x{hit.height} 置信度={hit.confidence}"
|
|
730
|
+
)
|
|
731
|
+
action.click(hit.centerX, hit.centerY, 100, False)
|
|
510
732
|
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
centerY = best.centerY
|
|
514
|
-
action.click(centerX, centerY, 100, False)
|
|
733
|
+
# 3) 已知模板宽和屏幕目标大概宽时,直接用像素比
|
|
734
|
+
# base_scale = expected_target_width_px / template_width_px
|
|
515
735
|
```
|
|
516
736
|
|
|
517
737
|
## 图像处理
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ms-vite-plugin",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.49",
|
|
4
4
|
"type": "commonjs",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"publishConfig": {
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"ms-mcp": "dist/mcp-server.js"
|
|
18
18
|
},
|
|
19
19
|
"scripts": {
|
|
20
|
-
"build": "tsc",
|
|
20
|
+
"build": "tsc && node scripts/minify-dist.js",
|
|
21
21
|
"prepublishOnly": "npm run build"
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
@@ -42,6 +42,7 @@
|
|
|
42
42
|
"@types/node": "^25.9.0",
|
|
43
43
|
"@types/uuid": "^11.0.0",
|
|
44
44
|
"@types/ws": "^8.18.1",
|
|
45
|
+
"esbuild": "^0.28.2",
|
|
45
46
|
"typescript": "~6.0.3"
|
|
46
47
|
}
|
|
47
48
|
}
|