@creatoria/miniapp-mcp 0.1.3 → 0.2.0

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 (246) hide show
  1. package/README.md +14 -3
  2. package/dist/app/cli/index.d.ts +6 -0
  3. package/dist/app/cli/index.d.ts.map +1 -0
  4. package/dist/app/cli/index.js +6 -0
  5. package/dist/app/cli/index.js.map +1 -0
  6. package/dist/app/index.d.ts +6 -0
  7. package/dist/app/index.d.ts.map +1 -0
  8. package/dist/app/index.js +6 -0
  9. package/dist/app/index.js.map +1 -0
  10. package/dist/app/server/index.d.ts +7 -0
  11. package/dist/app/server/index.d.ts.map +1 -0
  12. package/dist/app/server/index.js +6 -0
  13. package/dist/app/server/index.js.map +1 -0
  14. package/dist/capabilities/assert/index.d.ts +5 -0
  15. package/dist/capabilities/assert/index.d.ts.map +1 -0
  16. package/dist/capabilities/assert/index.js +5 -0
  17. package/dist/capabilities/assert/index.js.map +1 -0
  18. package/dist/capabilities/automator/index.d.ts +6 -0
  19. package/dist/capabilities/automator/index.d.ts.map +1 -0
  20. package/dist/capabilities/automator/index.js +6 -0
  21. package/dist/capabilities/automator/index.js.map +1 -0
  22. package/dist/capabilities/automator/schemas/close.d.ts +5 -0
  23. package/dist/capabilities/automator/schemas/close.d.ts.map +1 -0
  24. package/dist/capabilities/automator/schemas/close.js +11 -0
  25. package/dist/capabilities/automator/schemas/close.js.map +1 -0
  26. package/dist/capabilities/automator/schemas/connect.d.ts +11 -0
  27. package/dist/capabilities/automator/schemas/connect.d.ts.map +1 -0
  28. package/dist/capabilities/automator/schemas/connect.js +19 -0
  29. package/dist/capabilities/automator/schemas/connect.js.map +1 -0
  30. package/dist/capabilities/automator/schemas/disconnect.d.ts +5 -0
  31. package/dist/capabilities/automator/schemas/disconnect.d.ts.map +1 -0
  32. package/dist/capabilities/automator/schemas/disconnect.js +11 -0
  33. package/dist/capabilities/automator/schemas/disconnect.js.map +1 -0
  34. package/dist/capabilities/automator/schemas/index.d.ts +4 -0
  35. package/dist/capabilities/automator/schemas/index.d.ts.map +1 -0
  36. package/dist/capabilities/automator/schemas/index.js +12 -0
  37. package/dist/capabilities/automator/schemas/index.js.map +1 -0
  38. package/dist/capabilities/automator/schemas/launch.d.ts +17 -0
  39. package/dist/capabilities/automator/schemas/launch.d.ts.map +1 -0
  40. package/dist/capabilities/automator/schemas/launch.js +26 -0
  41. package/dist/capabilities/automator/schemas/launch.js.map +1 -0
  42. package/dist/capabilities/element/index.d.ts +5 -0
  43. package/dist/capabilities/element/index.d.ts.map +1 -0
  44. package/dist/capabilities/element/index.js +5 -0
  45. package/dist/capabilities/element/index.js.map +1 -0
  46. package/dist/capabilities/index.d.ts +15 -0
  47. package/dist/capabilities/index.d.ts.map +1 -0
  48. package/dist/capabilities/index.js +14 -0
  49. package/dist/capabilities/index.js.map +1 -0
  50. package/dist/capabilities/miniprogram/index.d.ts +5 -0
  51. package/dist/capabilities/miniprogram/index.d.ts.map +1 -0
  52. package/dist/capabilities/miniprogram/index.js +5 -0
  53. package/dist/capabilities/miniprogram/index.js.map +1 -0
  54. package/dist/capabilities/network/index.d.ts +5 -0
  55. package/dist/capabilities/network/index.d.ts.map +1 -0
  56. package/dist/capabilities/network/index.js +5 -0
  57. package/dist/capabilities/network/index.js.map +1 -0
  58. package/dist/capabilities/page/index.d.ts +5 -0
  59. package/dist/capabilities/page/index.d.ts.map +1 -0
  60. package/dist/capabilities/page/index.js +5 -0
  61. package/dist/capabilities/page/index.js.map +1 -0
  62. package/dist/capabilities/record/index.d.ts +5 -0
  63. package/dist/capabilities/record/index.d.ts.map +1 -0
  64. package/dist/capabilities/record/index.js +5 -0
  65. package/dist/capabilities/record/index.js.map +1 -0
  66. package/dist/capabilities/schema-registry.d.ts +4 -0
  67. package/dist/capabilities/schema-registry.d.ts.map +1 -0
  68. package/dist/capabilities/schema-registry.js +18 -0
  69. package/dist/capabilities/schema-registry.js.map +1 -0
  70. package/dist/capabilities/schema-types.d.ts +22 -0
  71. package/dist/capabilities/schema-types.d.ts.map +1 -0
  72. package/dist/capabilities/schema-types.js +2 -0
  73. package/dist/capabilities/schema-types.js.map +1 -0
  74. package/dist/capabilities/snapshot/index.d.ts +5 -0
  75. package/dist/capabilities/snapshot/index.d.ts.map +1 -0
  76. package/dist/capabilities/snapshot/index.js +5 -0
  77. package/dist/capabilities/snapshot/index.js.map +1 -0
  78. package/dist/config/loader.js +1 -1
  79. package/dist/config/loader.js.map +1 -1
  80. package/dist/core/element-ref.d.ts +1 -43
  81. package/dist/core/element-ref.d.ts.map +1 -1
  82. package/dist/core/element-ref.js +1 -212
  83. package/dist/core/element-ref.js.map +1 -1
  84. package/dist/core/logger.d.ts +1 -54
  85. package/dist/core/logger.d.ts.map +1 -1
  86. package/dist/core/logger.js +1 -377
  87. package/dist/core/logger.js.map +1 -1
  88. package/dist/core/output.d.ts +1 -20
  89. package/dist/core/output.d.ts.map +1 -1
  90. package/dist/core/output.js +1 -55
  91. package/dist/core/output.js.map +1 -1
  92. package/dist/core/report-generator.d.ts +1 -23
  93. package/dist/core/report-generator.d.ts.map +1 -1
  94. package/dist/core/report-generator.js +1 -211
  95. package/dist/core/report-generator.js.map +1 -1
  96. package/dist/core/session.d.ts +2 -82
  97. package/dist/core/session.d.ts.map +1 -1
  98. package/dist/core/session.js +2 -305
  99. package/dist/core/session.js.map +1 -1
  100. package/dist/core/timeout.d.ts +1 -48
  101. package/dist/core/timeout.d.ts.map +1 -1
  102. package/dist/core/timeout.js +1 -66
  103. package/dist/core/timeout.js.map +1 -1
  104. package/dist/core/tool-logger.d.ts +1 -82
  105. package/dist/core/tool-logger.d.ts.map +1 -1
  106. package/dist/core/tool-logger.js +1 -452
  107. package/dist/core/tool-logger.js.map +1 -1
  108. package/dist/core/validation.d.ts +1 -38
  109. package/dist/core/validation.d.ts.map +1 -1
  110. package/dist/core/validation.js +1 -92
  111. package/dist/core/validation.js.map +1 -1
  112. package/dist/runtime/element/element-ref.d.ts +44 -0
  113. package/dist/runtime/element/element-ref.d.ts.map +1 -0
  114. package/dist/runtime/element/element-ref.js +214 -0
  115. package/dist/runtime/element/element-ref.js.map +1 -0
  116. package/dist/runtime/element/index.d.ts +2 -0
  117. package/dist/runtime/element/index.d.ts.map +1 -0
  118. package/dist/runtime/element/index.js +2 -0
  119. package/dist/runtime/element/index.js.map +1 -0
  120. package/dist/runtime/index.d.ts +10 -0
  121. package/dist/runtime/index.d.ts.map +1 -0
  122. package/dist/runtime/index.js +10 -0
  123. package/dist/runtime/index.js.map +1 -0
  124. package/dist/runtime/logging/index.d.ts +3 -0
  125. package/dist/runtime/logging/index.d.ts.map +1 -0
  126. package/dist/runtime/logging/index.js +3 -0
  127. package/dist/runtime/logging/index.js.map +1 -0
  128. package/dist/runtime/logging/logger.d.ts +55 -0
  129. package/dist/runtime/logging/logger.d.ts.map +1 -0
  130. package/dist/runtime/logging/logger.js +379 -0
  131. package/dist/runtime/logging/logger.js.map +1 -0
  132. package/dist/runtime/logging/tool-logger.d.ts +83 -0
  133. package/dist/runtime/logging/tool-logger.d.ts.map +1 -0
  134. package/dist/runtime/logging/tool-logger.js +454 -0
  135. package/dist/runtime/logging/tool-logger.js.map +1 -0
  136. package/dist/runtime/outputs/index.d.ts +3 -0
  137. package/dist/runtime/outputs/index.d.ts.map +1 -0
  138. package/dist/runtime/outputs/index.js +3 -0
  139. package/dist/runtime/outputs/index.js.map +1 -0
  140. package/dist/runtime/outputs/output-manager.d.ts +12 -0
  141. package/dist/runtime/outputs/output-manager.d.ts.map +1 -0
  142. package/dist/runtime/outputs/output-manager.js +39 -0
  143. package/dist/runtime/outputs/output-manager.js.map +1 -0
  144. package/dist/runtime/outputs/report-generator.d.ts +5 -0
  145. package/dist/runtime/outputs/report-generator.d.ts.map +1 -0
  146. package/dist/runtime/outputs/report-generator.js +175 -0
  147. package/dist/runtime/outputs/report-generator.js.map +1 -0
  148. package/dist/runtime/session/index.d.ts +3 -0
  149. package/dist/runtime/session/index.d.ts.map +1 -0
  150. package/dist/runtime/session/index.js +3 -0
  151. package/dist/runtime/session/index.js.map +1 -0
  152. package/dist/runtime/session/store.d.ts +28 -0
  153. package/dist/runtime/session/store.d.ts.map +1 -0
  154. package/dist/runtime/session/store.js +154 -0
  155. package/dist/runtime/session/store.js.map +1 -0
  156. package/dist/runtime/session/utils/cleanup.d.ts +3 -0
  157. package/dist/runtime/session/utils/cleanup.d.ts.map +1 -0
  158. package/dist/runtime/session/utils/cleanup.js +78 -0
  159. package/dist/runtime/session/utils/cleanup.js.map +1 -0
  160. package/dist/runtime/timeout/index.d.ts +2 -0
  161. package/dist/runtime/timeout/index.d.ts.map +1 -0
  162. package/dist/runtime/timeout/index.js +2 -0
  163. package/dist/runtime/timeout/index.js.map +1 -0
  164. package/dist/runtime/timeout/timeout.d.ts +49 -0
  165. package/dist/runtime/timeout/timeout.d.ts.map +1 -0
  166. package/dist/runtime/timeout/timeout.js +67 -0
  167. package/dist/runtime/timeout/timeout.js.map +1 -0
  168. package/dist/runtime/validation/index.d.ts +2 -0
  169. package/dist/runtime/validation/index.d.ts.map +1 -0
  170. package/dist/runtime/validation/index.js +2 -0
  171. package/dist/runtime/validation/index.js.map +1 -0
  172. package/dist/runtime/validation/validation.d.ts +39 -0
  173. package/dist/runtime/validation/validation.d.ts.map +1 -0
  174. package/dist/runtime/validation/validation.js +93 -0
  175. package/dist/runtime/validation/validation.js.map +1 -0
  176. package/dist/schemas/automator/miniprogram_close.json +12 -0
  177. package/dist/schemas/automator/miniprogram_connect.json +19 -0
  178. package/dist/schemas/automator/miniprogram_disconnect.json +12 -0
  179. package/dist/schemas/automator/miniprogram_launch.json +30 -0
  180. package/dist/server.js +1 -1
  181. package/dist/server.js.map +1 -1
  182. package/dist/tools/index.js +1 -1
  183. package/dist/tools/index.js.map +1 -1
  184. package/dist/tools/miniprogram.d.ts +0 -1
  185. package/dist/tools/miniprogram.d.ts.map +1 -1
  186. package/dist/tools/miniprogram.js +17 -29
  187. package/dist/tools/miniprogram.js.map +1 -1
  188. package/dist/tools/page.js +2 -2
  189. package/dist/tools/page.js.map +1 -1
  190. package/docs/directory-structure-and-code-style-best-practices.md +91 -0
  191. package/docs/migration/README.md +34 -0
  192. package/docs/migration/TC-ALIGN-01-notes.md +35 -0
  193. package/docs/migration/runtime-skeleton.md +50 -0
  194. package/docs/migration/tool-schema-strategy.md +75 -0
  195. package/docs//345/256/214/346/225/264/345/256/236/347/216/260/346/226/271/346/241/210.md +14 -14
  196. package/docs//347/254/254/344/270/200/347/211/210/346/234/254/346/226/271/346/241/210.md +7 -7
  197. package/package.json +4 -2
  198. package/docs/SIMPLE_USAGE.md +0 -210
  199. package/docs/architecture.E-Docs.md +0 -1359
  200. package/docs/architecture.F1.md +0 -720
  201. package/docs/architecture.F2.md +0 -871
  202. package/docs/architecture.F3.md +0 -905
  203. package/docs/architecture.md +0 -90
  204. package/docs/charter.A1.align.yaml +0 -170
  205. package/docs/charter.A2.align.yaml +0 -199
  206. package/docs/charter.A3.align.yaml +0 -242
  207. package/docs/charter.A4.align.yaml +0 -227
  208. package/docs/charter.B1.align.yaml +0 -179
  209. package/docs/charter.B2.align.yaml +0 -200
  210. package/docs/charter.B3.align.yaml +0 -200
  211. package/docs/charter.B4.align.yaml +0 -188
  212. package/docs/charter.C1.align.yaml +0 -190
  213. package/docs/charter.C2.align.yaml +0 -202
  214. package/docs/charter.C3.align.yaml +0 -211
  215. package/docs/charter.C4.align.yaml +0 -263
  216. package/docs/charter.C5.align.yaml +0 -220
  217. package/docs/charter.D1.align.yaml +0 -190
  218. package/docs/charter.D2.align.yaml +0 -234
  219. package/docs/charter.D3.align.yaml +0 -206
  220. package/docs/charter.E-Docs.align.yaml +0 -294
  221. package/docs/charter.F1.align.yaml +0 -193
  222. package/docs/charter.F2.align.yaml +0 -248
  223. package/docs/charter.F3.align.yaml +0 -287
  224. package/docs/charter.G.align.yaml +0 -174
  225. package/docs/charter.align.yaml +0 -111
  226. package/docs/maintenance.md +0 -682
  227. package/docs/playwright-mcp/350/260/203/347/240/224.md +0 -53
  228. package/docs/setup-guide.md +0 -775
  229. package/docs/tasks.A1.atomize.md +0 -296
  230. package/docs/tasks.A2.atomize.md +0 -408
  231. package/docs/tasks.A3.atomize.md +0 -564
  232. package/docs/tasks.A4.atomize.md +0 -496
  233. package/docs/tasks.B1.atomize.md +0 -352
  234. package/docs/tasks.B2.atomize.md +0 -561
  235. package/docs/tasks.B3.atomize.md +0 -508
  236. package/docs/tasks.B4.atomize.md +0 -504
  237. package/docs/tasks.C1.atomize.md +0 -540
  238. package/docs/tasks.C2.atomize.md +0 -665
  239. package/docs/tasks.C3.atomize.md +0 -745
  240. package/docs/tasks.C4.atomize.md +0 -908
  241. package/docs/tasks.C5.atomize.md +0 -755
  242. package/docs/tasks.D1.atomize.md +0 -547
  243. package/docs/tasks.D2.atomize.md +0 -619
  244. package/docs/tasks.D3.atomize.md +0 -790
  245. package/docs/tasks.E-Docs.atomize.md +0 -1204
  246. package/docs/tasks.atomize.md +0 -189
@@ -1,200 +0,0 @@
1
- # Charter: [B3] ElementRef 解析器
2
-
3
- task_id: B3
4
- task_name: ElementRef 统一元素定位协议
5
- stage: B
6
- phase: Align (Retrospective)
7
- created_at: "2025-10-02"
8
- status: COMPLETED
9
- estimated_hours: 2
10
- actual_hours: 2
11
-
12
- ## Goal (目标)
13
-
14
- 实现 ElementRef 统一元素定位协议,支持 refId/selector/xpath/index/pagePath 多种定位方式,并提供自动缓存和失效机制。
15
-
16
- **核心交付物**:
17
- - `src/core/element-ref.ts` (~150 lines)
18
- - resolveElement() 函数
19
- - resolvePage() 函数
20
- - generateRefId() 函数
21
- - 元素缓存管理
22
-
23
- ## Non-Goals (非目标)
24
-
25
- - ❌ 不支持 XPath 定位(miniprogram-automator 不支持)
26
- - ❌ 不实现元素等待逻辑(属于工具层)
27
- - ❌ 不实现元素查询优化(直接使用 SDK)
28
- - ❌ 不实现跨页面元素引用
29
-
30
- ## Scope (范围)
31
-
32
- ### In Scope (包含)
33
-
34
- 1. **ElementRef 接口**
35
- - ✅ refId?: string - 缓存句柄引用
36
- - ✅ selector?: string - WXML/CSS 选择器
37
- - ✅ xpath?: string - XPath 选择器(抛出不支持错误)
38
- - ✅ index?: number - 多元素索引
39
- - ✅ pagePath?: string - 目标页面路径
40
- - ✅ save?: boolean - 是否缓存并返回 refId
41
-
42
- 2. **resolveElement() 函数**
43
- - ✅ 优先从 elementCache 解析 refId
44
- - ✅ 若无 refId,使用 selector/xpath 查询
45
- - ✅ 支持 index 索引多元素
46
- - ✅ 支持 save 参数缓存元素
47
- - ✅ 返回 Element 对象和新 refId(如果 save=true)
48
-
49
- 3. **resolvePage() 函数**
50
- - ✅ 若提供 pagePath,切换到指定页面
51
- - ✅ 若无 pagePath,返回当前页面
52
- - ✅ 支持 pagePath 格式验证
53
- - ✅ 返回 Page 对象
54
-
55
- 4. **generateRefId() 函数**
56
- - ✅ 生成唯一元素引用 ID
57
- - ✅ 格式:`elem-{timestamp}-{random}`
58
- - ✅ 保证全局唯一性
59
-
60
- 5. **缓存管理**
61
- - ✅ 使用 session.elementCache 存储
62
- - ✅ 自动失效机制(页面切换时清空)
63
- - ✅ 手动清理接口
64
-
65
- ### Out of Scope (不包含)
66
-
67
- - ❌ XPath 查询实现
68
- - ❌ 元素等待和重试
69
- - ❌ 元素查询性能优化
70
- - ❌ 跨会话元素共享
71
-
72
- ## Constraints (约束)
73
-
74
- ### Technical Constraints (技术约束)
75
-
76
- 1. **miniprogram-automator 限制**
77
- - 仅支持 CSS 选择器和组件选择器
78
- - 不支持 XPath
79
- - 元素句柄无法跨页面使用
80
-
81
- 2. **缓存失效规则**
82
- - 页面切换时自动清空缓存
83
- - 元素销毁时句柄失效
84
- - 必须处理失效场景
85
-
86
- 3. **TypeScript 规范**
87
- - 完整类型定义
88
- - 严格模式
89
- - 导入使用 .js 后缀
90
-
91
- 4. **错误处理**
92
- - 明确的错误消息
93
- - 区分不同失败原因
94
- - 提供调试信息
95
-
96
- ### Business Constraints (业务约束)
97
-
98
- 1. **性能要求**: 元素解析 <50ms
99
- 2. **缓存容量**: 单会话最多 1000 个元素
100
- 3. **兼容性**: 支持所有 WXML 组件
101
-
102
- ## Success Criteria (成功标准)
103
-
104
- ### Functional Criteria (功能标准)
105
-
106
- - ✅ resolveElement 正确解析 refId
107
- - ✅ resolveElement 正确解析 selector
108
- - ✅ resolveElement 支持 index 索引
109
- - ✅ resolveElement 支持 save 缓存
110
- - ✅ resolvePage 正确切换页面
111
- - ✅ resolvePage 返回当前页面
112
- - ✅ generateRefId 生成唯一 ID
113
- - ✅ XPath 抛出明确错误
114
-
115
- ### Quality Criteria (质量标准)
116
-
117
- - ✅ TypeScript 编译 0 错误
118
- - ✅ 代码行数 ~150 行
119
- - ✅ 无 ESLint 错误
120
- - ✅ JSDoc 注释完整
121
- - ✅ 单元测试覆盖(随工具测试)
122
-
123
- ### Documentation Criteria (文档标准)
124
-
125
- - ✅ ElementRef 接口文档
126
- - ✅ resolveElement/resolvePage 函数文档
127
- - ✅ 缓存机制说明
128
- - ⏳ charter.B3.align.yaml (本文档)
129
- - ⏳ tasks.B3.atomize.md (任务卡)
130
-
131
- ## Definition of Done (完成标准)
132
-
133
- **代码**:
134
- - ✅ `src/core/element-ref.ts` 实现完成 (~150 lines)
135
- - ✅ TypeScript 编译通过
136
- - ✅ 所有函数实现
137
-
138
- **测试**:
139
- - ✅ 单元测试随工具测试验证
140
- - ✅ 集成测试覆盖各种定位方式
141
- - ✅ 测试缓存和失效机制
142
-
143
- **文档**:
144
- - ⏳ charter.B3.align.yaml (追溯)
145
- - ⏳ tasks.B3.atomize.md (追溯)
146
- - ⏳ session_log (追溯)
147
-
148
- **Git**:
149
- - ✅ 已提交(随 C4 Element 工具提交)
150
-
151
- ## Dependencies (依赖)
152
-
153
- **前置任务**:
154
- - ✅ A3: 仓库结构初始化
155
- - ✅ B2: SessionStore(使用 elementCache)
156
- - ✅ miniprogram-automator SDK 了解
157
-
158
- **后续任务**:
159
- - B3 → C4 (Element 工具使用解析器)
160
- - B3 → 所有元素操作工具
161
-
162
- ## Risks (风险)
163
-
164
- ### Technical Risks (技术风险)
165
-
166
- 1. **XPath 不支持** - 🟢 已缓解
167
- - 影响:用户期望使用 XPath
168
- - 缓解:明确错误消息,引导使用 selector
169
-
170
- 2. **缓存失效** - 🟢 已缓解
171
- - 影响:页面切换后元素句柄失效
172
- - 缓解:自动清空缓存,清晰错误提示
173
-
174
- 3. **选择器冲突** - 🟡 中风险
175
- - 影响:selector 匹配多个元素
176
- - 缓解:支持 index 参数精确定位
177
-
178
- ### Business Risks (业务风险)
179
-
180
- 1. **用户体验** - 🟢 低风险
181
- - 影响:缓存失效导致操作失败
182
- - 缓解:清晰错误消息,引导重新查询
183
-
184
- ## Open Questions (未决问题)
185
-
186
- - ✅ 是否支持 XPath?(否,SDK 不支持)
187
- - ✅ 缓存容量限制?(1000 个元素/会话)
188
- - ❓ 是否需要支持跨页面元素引用?(当前不支持)
189
-
190
- ## References (参考资料)
191
-
192
- - `docs/微信小程序自动化完整操作手册.md` - 元素查询 API
193
- - `docs/完整实现方案.md` - ElementRef 协议设计
194
- - miniprogram-automator 选择器文档
195
-
196
- ---
197
-
198
- **Approval**: ✅ RETROSPECTIVE APPROVED
199
- **Implementation**: ✅ COMPLETED
200
- **Documentation**: ⏳ IN PROGRESS
@@ -1,188 +0,0 @@
1
- # Charter: [B4] Logger 和 OutputManager
2
-
3
- task_id: B4
4
- task_name: Logger 和 OutputManager 实现
5
- stage: B
6
- phase: Align (Retrospective)
7
- created_at: "2025-10-02"
8
- status: COMPLETED
9
- estimated_hours: 1-2
10
- actual_hours: 1.5
11
-
12
- ## Goal (目标)
13
-
14
- 实现结构化日志系统(Logger)和产物管理器(OutputManager),为 MCP Server 提供统一的日志输出和文件管理能力。
15
-
16
- **核心交付物**:
17
- - `src/core/logger.ts` (~50 lines)
18
- - `src/core/output.ts` (~60 lines)
19
- - Logger: info/warn/error 方法
20
- - OutputManager: resolveOutputPath/writeFile 方法
21
-
22
- ## Non-Goals (非目标)
23
-
24
- - ❌ 不实现日志持久化(仅 console 输出)
25
- - ❌ 不实现日志级别过滤
26
- - ❌ 不实现日志轮转
27
- - ❌ 不实现远程日志上传
28
-
29
- ## Scope (范围)
30
-
31
- ### In Scope (包含)
32
-
33
- 1. **Logger 类**
34
- - ✅ info(message: string, meta?: object): void
35
- - ✅ warn(message: string, meta?: object): void
36
- - ✅ error(message: string, meta?: object): void
37
- - ✅ 所有日志输出到 console.error(避免干扰 stdio)
38
- - ✅ 结构化日志格式:[level] message {meta}
39
-
40
- 2. **OutputManager 类**
41
- - ✅ constructor(sessionId: string, baseDir: string)
42
- - ✅ resolveOutputPath(type: string, filename: string): string
43
- - ✅ writeFile(type: string, filename: string, content: string|Buffer): Promise<string>
44
- - ✅ 目录结构:{baseDir}/{sessionId}/{type}/
45
-
46
- 3. **目录管理**
47
- - ✅ 自动创建目录
48
- - ✅ 支持多种产物类型(screenshot/snapshot/log/trace)
49
- - ✅ 返回绝对路径
50
-
51
- 4. **文件操作**
52
- - ✅ 写入文本文件
53
- - ✅ 写入二进制文件(Buffer)
54
- - ✅ 错误处理和重试
55
-
56
- ### Out of Scope (不包含)
57
-
58
- - ❌ 日志持久化到文件
59
- - ❌ 日志级别配置
60
- - ❌ 日志格式化选项
61
- - ❌ 文件压缩和清理
62
-
63
- ## Constraints (约束)
64
-
65
- ### Technical Constraints (技术约束)
66
-
67
- 1. **stdio 避让**
68
- - 所有日志必须输出到 console.error
69
- - 不能使用 console.log(stdout 被 MCP 占用)
70
-
71
- 2. **文件系统**
72
- - 使用 Node.js fs/promises API
73
- - 支持相对路径和绝对路径
74
- - 自动创建目录(recursive)
75
-
76
- 3. **TypeScript 规范**
77
- - 完整类型定义
78
- - 严格模式
79
- - 导入使用 .js 后缀
80
-
81
- 4. **错误处理**
82
- - 捕获文件 I/O 错误
83
- - 记录错误日志
84
- - 抛出明确异常
85
-
86
- ### Business Constraints (业务约束)
87
-
88
- 1. **日志性能**: 日志输出不阻塞主流程
89
- 2. **文件性能**: 文件写入 <100ms
90
- 3. **存储限制**: 单会话产物 <100MB
91
-
92
- ## Success Criteria (成功标准)
93
-
94
- ### Functional Criteria (功能标准)
95
-
96
- - ✅ Logger.info/warn/error 正确输出
97
- - ✅ 日志格式清晰可读
98
- - ✅ OutputManager 正确创建目录
99
- - ✅ OutputManager 正确写入文件
100
- - ✅ resolveOutputPath 返回正确路径
101
- - ✅ 支持文本和二进制内容
102
-
103
- ### Quality Criteria (质量标准)
104
-
105
- - ✅ TypeScript 编译 0 错误
106
- - ✅ logger.ts ~50 行
107
- - ✅ output.ts ~60 行
108
- - ✅ 无 ESLint 错误
109
- - ✅ JSDoc 注释完整
110
-
111
- ### Documentation Criteria (文档标准)
112
-
113
- - ✅ Logger API 文档
114
- - ✅ OutputManager API 文档
115
- - ✅ 目录结构说明
116
- - ⏳ charter.B4.align.yaml (本文档)
117
- - ⏳ tasks.B4.atomize.md (任务卡)
118
-
119
- ## Definition of Done (完成标准)
120
-
121
- **代码**:
122
- - ✅ `src/core/logger.ts` 实现完成 (~50 lines)
123
- - ✅ `src/core/output.ts` 实现完成 (~60 lines)
124
- - ✅ TypeScript 编译通过
125
- - ✅ 所有方法实现
126
-
127
- **测试**:
128
- - ✅ 单元测试随工具测试验证
129
- - ✅ 手动测试日志输出
130
- - ✅ 集成测试文件写入
131
-
132
- **文档**:
133
- - ⏳ charter.B4.align.yaml (追溯)
134
- - ⏳ tasks.B4.atomize.md (追溯)
135
- - ⏳ session_log (追溯)
136
-
137
- **Git**:
138
- - ✅ 已提交(随 D2 Snapshot 工具提交)
139
-
140
- ## Dependencies (依赖)
141
-
142
- **前置任务**:
143
- - ✅ A3: 仓库结构初始化
144
- - ✅ Node.js fs/promises API 了解
145
-
146
- **后续任务**:
147
- - B4 → D2 (Snapshot 工具使用 OutputManager)
148
- - B4 → 所有需要输出文件的工具
149
-
150
- ## Risks (风险)
151
-
152
- ### Technical Risks (技术风险)
153
-
154
- 1. **stdio 干扰** - 🟢 已缓解
155
- - 影响:console.log 干扰 MCP 协议
156
- - 缓解:强制使用 console.error
157
-
158
- 2. **文件权限** - 🟡 中风险
159
- - 影响:无法创建目录/写入文件
160
- - 缓解:错误处理 + 清晰错误消息
161
-
162
- 3. **路径安全** - 🟡 中风险
163
- - 影响:路径遍历攻击
164
- - 缓解:路径验证和规范化
165
-
166
- ### Business Risks (业务风险)
167
-
168
- 1. **存储占用** - 🟢 低风险
169
- - 影响:产物文件占用磁盘空间
170
- - 缓解:会话清理机制 + 用户管理
171
-
172
- ## Open Questions (未决问题)
173
-
174
- - ✅ 日志是否需要持久化?(否,仅 console 输出)
175
- - ✅ 是否需要日志级别过滤?(否,后续扩展)
176
- - ❓ 是否需要产物文件清理策略?(当前手动清理)
177
-
178
- ## References (参考资料)
179
-
180
- - `docs/完整实现方案.md` - 日志和产物管理设计
181
- - Node.js fs/promises API 文档
182
- - Node.js path API 文档
183
-
184
- ---
185
-
186
- **Approval**: ✅ RETROSPECTIVE APPROVED
187
- **Implementation**: ✅ COMPLETED
188
- **Documentation**: ⏳ IN PROGRESS
@@ -1,190 +0,0 @@
1
- # Charter: [C1] Automator 工具
2
-
3
- task_id: C1
4
- task_name: Automator 工具实现
5
- stage: C
6
- phase: Align (Retrospective)
7
- created_at: "2025-10-02"
8
- status: COMPLETED
9
- estimated_hours: 2-3
10
- actual_hours: 3
11
-
12
- ## Goal (目标)
13
-
14
- 实现 Automator 级别的 4 个 MCP 工具,封装微信开发者工具的启动、连接、断开和关闭功能。
15
-
16
- **核心交付物**:
17
- - `src/tools/automator.ts` - 4 个工具实现 (252 lines)
18
- - `tests/unit/automator.test.ts` - 单元测试 (364 lines, 20 tests)
19
- - 工具: launch, connect, disconnect, close
20
-
21
- ## Non-Goals (非目标)
22
-
23
- - ❌ 不实现 MiniProgram 级别工具(留给 C2)
24
- - ❌ 不实现配置文件管理(使用默认配置)
25
- - ❌ 不实现自动重连机制(简单失败返回)
26
- - ❌ 不实现端口冲突检测(用户自行处理)
27
-
28
- ## Scope (范围)
29
-
30
- ### In Scope (包含)
31
-
32
- 1. **launch 工具**
33
- - ✅ 启动微信开发者工具
34
- - ✅ 支持自定义项目路径
35
- - ✅ 支持自定义端口(默认 9420)
36
- - ✅ 支持自定义 CLI 路径(默认 macOS 路径)
37
- - ✅ 返回会话 ID 和启动状态
38
-
39
- 2. **connect 工具**
40
- - ✅ 连接到已启动的开发者工具
41
- - ✅ 支持自定义端口
42
- - ✅ 获取 MiniProgram 实例
43
- - ✅ 返回连接成功状态
44
-
45
- 3. **disconnect 工具**
46
- - ✅ 断开当前连接
47
- - ✅ 清理 MiniProgram 实例
48
- - ✅ 保留 IDE 进程(不关闭)
49
-
50
- 4. **close 工具**
51
- - ✅ 关闭微信开发者工具
52
- - ✅ 终止 IDE 进程
53
- - ✅ 清理会话资源
54
-
55
- ### Out of Scope (不包含)
56
-
57
- - ❌ 多实例管理(一次仅支持一个会话)
58
- - ❌ 自动重连机制
59
- - ❌ 端口冲突解决
60
- - ❌ Windows/Linux CLI 路径支持
61
-
62
- ## Constraints (约束)
63
-
64
- ### Technical Constraints (技术约束)
65
-
66
- 1. **miniprogram-automator 依赖**
67
- - 必须使用官方 `miniprogram-automator` SDK
68
- - 遵循其 launch/connect API 规范
69
- - 正确处理异步操作和错误
70
-
71
- 2. **Session 隔离**
72
- - 每个会话独立的 automator 实例
73
- - 会话 ID 自动生成(UUID)
74
- - 通过 SessionStore 管理生命周期
75
-
76
- 3. **默认配置**
77
- - CLI 路径: `/Applications/wechatwebdevtools.app/Contents/MacOS/cli`
78
- - 端口: 9420
79
- - 超时: 30 秒
80
-
81
- 4. **错误处理**
82
- - 明确区分启动失败 vs 连接失败
83
- - 返回清晰的错误消息
84
- - 记录详细错误日志
85
-
86
- ### Business Constraints (业务约束)
87
-
88
- 1. **启动时间**: <10 秒
89
- 2. **连接时间**: <3 秒
90
- 3. **关闭时间**: <2 秒
91
- 4. **兼容性**: macOS 优先,微信开发者工具 1.06+
92
-
93
- ## Success Criteria (成功标准)
94
-
95
- ### Functional Criteria (功能标准)
96
-
97
- - ✅ launch 成功启动开发者工具
98
- - ✅ connect 成功连接并获取 MiniProgram 实例
99
- - ✅ disconnect 断开连接但保留 IDE
100
- - ✅ close 完全关闭 IDE 和会话
101
- - ✅ 错误场景正确处理(端口占用、CLI 不存在等)
102
-
103
- ### Quality Criteria (质量标准)
104
-
105
- - ✅ TypeScript 编译 0 错误
106
- - ✅ 单元测试覆盖率 >80%
107
- - ✅ 20 个测试用例全部通过
108
- - ✅ 无 ESLint 错误
109
- - ✅ JSDoc 注释完整
110
-
111
- ### Documentation Criteria (文档标准)
112
-
113
- - ✅ 每个工具有 zod schema 定义
114
- - ✅ 工具描述清晰(inputSchema.description)
115
- - ✅ 函数签名有 JSDoc
116
- - ⏳ charter.C1.align.yaml (本文档)
117
- - ⏳ tasks.C1.atomize.md (任务卡)
118
-
119
- ## Definition of Done (完成标准)
120
-
121
- **代码**:
122
- - ✅ `src/tools/automator.ts` 实现完成 (252 lines)
123
- - ✅ TypeScript 编译通过
124
- - ✅ 4 个工具正确注册
125
-
126
- **测试**:
127
- - ✅ `tests/unit/automator.test.ts` (364 lines)
128
- - ✅ 20 个测试用例全部通过
129
- - ✅ 覆盖成功/失败场景
130
- - ✅ Mock miniprogram-automator 依赖
131
-
132
- **文档**:
133
- - ⏳ charter.C1.align.yaml (追溯)
134
- - ⏳ tasks.C1.atomize.md (追溯)
135
- - ✅ README 工具列表更新
136
-
137
- **Git**:
138
- - ✅ 已提交(Stage C 提交)
139
-
140
- ## Dependencies (依赖)
141
-
142
- **前置任务**:
143
- - ✅ B1: MCP Server 骨架
144
- - ✅ B2: SessionStore 实现
145
- - ✅ `miniprogram-automator` 已安装
146
-
147
- **后续任务**:
148
- - C1 → C2 (需要 MiniProgram 实例)
149
- - C1 → C5 (工具注册器集成)
150
-
151
- ## Risks (风险)
152
-
153
- ### Technical Risks (技术风险)
154
-
155
- 1. **CLI 路径变化** - 🟡 中风险
156
- - 影响:微信开发者工具更新可能改变 CLI 路径
157
- - 缓解:允许用户自定义 CLI 路径
158
-
159
- 2. **端口冲突** - 🟡 中风险
160
- - 影响:端口被占用导致启动失败
161
- - 缓解:明确错误提示,建议更换端口
162
-
163
- 3. **进程泄漏** - 🟢 已缓解
164
- - 风险:异常退出导致 IDE 进程残留
165
- - 缓解:优雅关闭机制,SessionStore.dispose() 清理
166
-
167
- ### Business Risks (业务风险)
168
-
169
- 1. **跨平台兼容** - 🟡 中风险
170
- - 影响:当前仅支持 macOS
171
- - 缓解:文档明确说明,未来扩展 Windows/Linux
172
-
173
- ## Open Questions (未决问题)
174
-
175
- - ❓ 是否需要支持多个小程序同时运行?(当前单实例)
176
- - ❓ 是否需要自动重连机制?(当前无)
177
- - ❓ 是否需要端口自动探测?(当前手动指定)
178
-
179
- ## References (参考资料)
180
-
181
- - `docs/微信小程序自动化完整操作手册.md` - Automator API 文档
182
- - `docs/完整实现方案.md` - 工具分层设计
183
- - `miniprogram-automator` 官方文档
184
- - `src/core/session.ts` - Session 管理
185
-
186
- ---
187
-
188
- **Approval**: ✅ RETROSPECTIVE APPROVED
189
- **Implementation**: ✅ COMPLETED
190
- **Documentation**: ⏳ IN PROGRESS