weixin-devtools-mcp 0.0.1 → 0.1.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 (139) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +101 -114
  3. package/build/MiniProgramContext.d.ts +307 -0
  4. package/build/MiniProgramContext.d.ts.map +1 -0
  5. package/build/MiniProgramContext.js +650 -0
  6. package/build/MiniProgramContext.js.map +1 -0
  7. package/build/collectors/Collector.d.ts +127 -0
  8. package/build/collectors/Collector.d.ts.map +1 -0
  9. package/build/collectors/Collector.js +252 -0
  10. package/build/collectors/Collector.js.map +1 -0
  11. package/build/collectors/ConsoleCollector.d.ts +104 -0
  12. package/build/collectors/ConsoleCollector.d.ts.map +1 -0
  13. package/build/collectors/ConsoleCollector.js +157 -0
  14. package/build/collectors/ConsoleCollector.js.map +1 -0
  15. package/build/collectors/NetworkCollector.d.ts +167 -0
  16. package/build/collectors/NetworkCollector.d.ts.map +1 -0
  17. package/build/collectors/NetworkCollector.js +265 -0
  18. package/build/collectors/NetworkCollector.js.map +1 -0
  19. package/build/collectors/index.d.ts +13 -0
  20. package/build/collectors/index.d.ts.map +1 -0
  21. package/build/collectors/index.js +17 -0
  22. package/build/collectors/index.js.map +1 -0
  23. package/build/config/tool-profile.d.ts +30 -0
  24. package/build/config/tool-profile.d.ts.map +1 -0
  25. package/build/config/tool-profile.js +138 -0
  26. package/build/config/tool-profile.js.map +1 -0
  27. package/build/connection/adapters.d.ts +3 -0
  28. package/build/connection/adapters.d.ts.map +1 -0
  29. package/build/connection/adapters.js +134 -0
  30. package/build/connection/adapters.js.map +1 -0
  31. package/build/connection/errors.d.ts +34 -0
  32. package/build/connection/errors.d.ts.map +1 -0
  33. package/build/connection/errors.js +101 -0
  34. package/build/connection/errors.js.map +1 -0
  35. package/build/connection/health-probe.d.ts +4 -0
  36. package/build/connection/health-probe.d.ts.map +1 -0
  37. package/build/connection/health-probe.js +60 -0
  38. package/build/connection/health-probe.js.map +1 -0
  39. package/build/connection/index.d.ts +6 -0
  40. package/build/connection/index.d.ts.map +1 -0
  41. package/build/connection/index.js +6 -0
  42. package/build/connection/index.js.map +1 -0
  43. package/build/connection/manager.d.ts +19 -0
  44. package/build/connection/manager.d.ts.map +1 -0
  45. package/build/connection/manager.js +198 -0
  46. package/build/connection/manager.js.map +1 -0
  47. package/build/connection/resolver.d.ts +3 -0
  48. package/build/connection/resolver.d.ts.map +1 -0
  49. package/build/connection/resolver.js +96 -0
  50. package/build/connection/resolver.js.map +1 -0
  51. package/build/connection/types.d.ts +95 -0
  52. package/build/connection/types.d.ts.map +1 -0
  53. package/build/connection/types.js +16 -0
  54. package/build/connection/types.js.map +1 -0
  55. package/build/formatters/consoleFormatter.d.ts +50 -0
  56. package/build/formatters/consoleFormatter.d.ts.map +1 -0
  57. package/build/formatters/consoleFormatter.js +116 -0
  58. package/build/formatters/consoleFormatter.js.map +1 -0
  59. package/build/formatters/snapshotFormatter.d.ts +41 -0
  60. package/build/formatters/snapshotFormatter.d.ts.map +1 -0
  61. package/build/formatters/snapshotFormatter.js +156 -0
  62. package/build/formatters/snapshotFormatter.js.map +1 -0
  63. package/build/index.d.ts +11 -0
  64. package/build/index.d.ts.map +1 -0
  65. package/build/index.js +45 -9
  66. package/build/index.js.map +1 -0
  67. package/build/server.d.ts +7 -0
  68. package/build/server.d.ts.map +1 -0
  69. package/build/server.js +70 -30
  70. package/build/server.js.map +1 -0
  71. package/build/tools/ToolDefinition.d.ts +215 -0
  72. package/build/tools/ToolDefinition.d.ts.map +1 -0
  73. package/build/tools/ToolDefinition.js +9 -7
  74. package/build/tools/ToolDefinition.js.map +1 -0
  75. package/build/tools/assert.d.ts +17 -0
  76. package/build/tools/assert.d.ts.map +1 -0
  77. package/build/tools/assert.js +8 -88
  78. package/build/tools/assert.js.map +1 -0
  79. package/build/tools/connection.d.ts +13 -0
  80. package/build/tools/connection.d.ts.map +1 -0
  81. package/build/tools/connection.js +332 -615
  82. package/build/tools/connection.js.map +1 -0
  83. package/build/tools/console.d.ts +20 -0
  84. package/build/tools/console.d.ts.map +1 -0
  85. package/build/tools/console.js +162 -152
  86. package/build/tools/console.js.map +1 -0
  87. package/build/tools/diagnose.d.ts +22 -0
  88. package/build/tools/diagnose.d.ts.map +1 -0
  89. package/build/tools/diagnose.js +400 -13
  90. package/build/tools/diagnose.js.map +1 -0
  91. package/build/tools/index.d.ts +6 -0
  92. package/build/tools/index.d.ts.map +1 -0
  93. package/build/tools/index.js +3 -77
  94. package/build/tools/index.js.map +1 -0
  95. package/build/tools/input.d.ts +21 -0
  96. package/build/tools/input.d.ts.map +1 -0
  97. package/build/tools/input.js +73 -139
  98. package/build/tools/input.js.map +1 -0
  99. package/build/tools/navigate.d.ts +21 -0
  100. package/build/tools/navigate.d.ts.map +1 -0
  101. package/build/tools/navigate.js +63 -126
  102. package/build/tools/navigate.js.map +1 -0
  103. package/build/tools/network.d.ts +17 -0
  104. package/build/tools/network.d.ts.map +1 -0
  105. package/build/tools/network.js +75 -887
  106. package/build/tools/network.js.map +1 -0
  107. package/build/tools/page.d.ts +13 -0
  108. package/build/tools/page.d.ts.map +1 -0
  109. package/build/tools/page.js +4 -1
  110. package/build/tools/page.js.map +1 -0
  111. package/build/tools/screenshot.d.ts +9 -0
  112. package/build/tools/screenshot.d.ts.map +1 -0
  113. package/build/tools/screenshot.js +3 -1
  114. package/build/tools/screenshot.js.map +1 -0
  115. package/build/tools/script.d.ts +6 -0
  116. package/build/tools/script.d.ts.map +1 -0
  117. package/build/tools/script.js +92 -0
  118. package/build/tools/script.js.map +1 -0
  119. package/build/tools/snapshot.d.ts +9 -0
  120. package/build/tools/snapshot.d.ts.map +1 -0
  121. package/build/tools/snapshot.js +78 -12
  122. package/build/tools/snapshot.js.map +1 -0
  123. package/build/tools/tools.d.ts +15 -0
  124. package/build/tools/tools.d.ts.map +1 -0
  125. package/build/tools/tools.js +62 -0
  126. package/build/tools/tools.js.map +1 -0
  127. package/build/tools.d.ts +431 -0
  128. package/build/tools.d.ts.map +1 -0
  129. package/build/tools.js +235 -117
  130. package/build/tools.js.map +1 -0
  131. package/build/types/errors.d.ts +189 -0
  132. package/build/types/errors.d.ts.map +1 -0
  133. package/build/types/errors.js +257 -0
  134. package/build/types/errors.js.map +1 -0
  135. package/build/utils/idGenerator.d.ts +21 -0
  136. package/build/utils/idGenerator.d.ts.map +1 -0
  137. package/build/utils/idGenerator.js +23 -0
  138. package/build/utils/idGenerator.js.map +1 -0
  139. package/package.json +34 -10
@@ -0,0 +1,127 @@
1
+ /**
2
+ * Collector 基类 - 通用数据收集器
3
+ * 参考 chrome-devtools-mcp 的 PageCollector 设计模式
4
+ *
5
+ * 特点:
6
+ * - 按导航会话分组存储
7
+ * - Stable ID 标识
8
+ * - 支持分页和过滤
9
+ */
10
+ import { type WithStableId } from '../utils/idGenerator.js';
11
+ /**
12
+ * 导航会话数据结构
13
+ */
14
+ export interface NavigationSession<T> {
15
+ /** 会话中的数据项 */
16
+ items: Array<WithStableId<T>>;
17
+ /** 会话开始时间 */
18
+ timestamp: string;
19
+ }
20
+ /**
21
+ * Collector 配置选项
22
+ */
23
+ export interface CollectorOptions {
24
+ /** 最大保留的导航会话数 */
25
+ maxNavigations?: number;
26
+ /** 单个会话最大条目数(环形缓冲区),默认 1000 */
27
+ maxItemsPerSession?: number;
28
+ /** 是否启用详细日志 */
29
+ verbose?: boolean;
30
+ }
31
+ /**
32
+ * 分页和过滤选项
33
+ */
34
+ export interface QueryOptions<T> {
35
+ /** 是否包含历史导航会话的数据 */
36
+ includePreserved?: boolean;
37
+ /** 过滤函数 */
38
+ filter?: (item: T) => boolean;
39
+ /** 每页数量 */
40
+ pageSize?: number;
41
+ /** 页码(从 0 开始) */
42
+ pageIdx?: number;
43
+ }
44
+ /**
45
+ * 通用数据收集器基类
46
+ *
47
+ * @template T 收集的数据类型
48
+ */
49
+ export declare class Collector<T> {
50
+ #private;
51
+ constructor(options?: CollectorOptions);
52
+ /**
53
+ * 开始监听
54
+ */
55
+ startMonitoring(): void;
56
+ /**
57
+ * 停止监听
58
+ */
59
+ stopMonitoring(): void;
60
+ /**
61
+ * 检查是否正在监听
62
+ */
63
+ isMonitoring(): boolean;
64
+ /**
65
+ * 获取监听开始时间
66
+ */
67
+ getStartTime(): string | null;
68
+ /**
69
+ * 添加数据项(自动分配 Stable ID)
70
+ * 使用环形缓冲区,超出 maxItemsPerSession 时移除最旧的条目
71
+ * @returns 分配的 ID
72
+ */
73
+ collect(item: T): number;
74
+ /**
75
+ * 在导航后分割存储(保留历史)
76
+ */
77
+ splitAfterNavigation(): void;
78
+ /**
79
+ * 获取数据项的 Stable ID
80
+ */
81
+ getIdForItem(item: WithStableId<T>): number;
82
+ /**
83
+ * 通过 ID 获取数据项
84
+ */
85
+ getById(id: number): T | undefined;
86
+ /**
87
+ * 获取数据(支持分页和过滤)
88
+ */
89
+ getData(options?: QueryOptions<T>): T[];
90
+ /**
91
+ * 查找符合条件的数据项
92
+ */
93
+ find(predicate: (item: T) => boolean): T | undefined;
94
+ /**
95
+ * 查找所有符合条件的数据项
96
+ */
97
+ findAll(predicate: (item: T) => boolean): T[];
98
+ /**
99
+ * 获取当前会话的数据数量
100
+ */
101
+ getCurrentCount(): number;
102
+ /**
103
+ * 获取所有会话的数据总数
104
+ */
105
+ getTotalCount(): number;
106
+ /**
107
+ * 获取导航会话数量
108
+ */
109
+ getNavigationCount(): number;
110
+ /**
111
+ * 清空所有数据
112
+ */
113
+ clear(): void;
114
+ /**
115
+ * 清空当前会话的数据
116
+ */
117
+ clearCurrentSession(): void;
118
+ /**
119
+ * 获取原始导航数据(用于兼容旧接口)
120
+ */
121
+ getNavigations(): Array<NavigationSession<T>>;
122
+ /**
123
+ * 获取 ID 映射表(用于兼容旧接口)
124
+ */
125
+ getIdMap(): Map<number, WithStableId<T>>;
126
+ }
127
+ //# sourceMappingURL=Collector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Collector.d.ts","sourceRoot":"","sources":["../../src/collectors/Collector.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAqC,KAAK,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE/F;;GAEG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,cAAc;IACd,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9B,aAAa;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,iBAAiB;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,+BAA+B;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,oBAAoB;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,WAAW;IACX,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC;IAC9B,WAAW;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAWD;;;;GAIG;AACH,qBAAa,SAAS,CAAC,CAAC;;gBAmBV,OAAO,GAAE,gBAAqB;IAa1C;;OAEG;IACH,eAAe,IAAI,IAAI;IAKvB;;OAEG;IACH,cAAc,IAAI,IAAI;IAItB;;OAEG;IACH,YAAY,IAAI,OAAO;IAIvB;;OAEG;IACH,YAAY,IAAI,MAAM,GAAG,IAAI;IAM7B;;;;OAIG;IACH,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,MAAM;IAkCxB;;OAEG;IACH,oBAAoB,IAAI,IAAI;IA4B5B;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM;IAI3C;;OAEG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAIlC;;OAEG;IACH,OAAO,CAAC,OAAO,GAAE,YAAY,CAAC,CAAC,CAAM,GAAG,CAAC,EAAE;IA8B3C;;OAEG;IACH,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,GAAG,CAAC,GAAG,SAAS;IAUpD;;OAEG;IACH,OAAO,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,GAAG,CAAC,EAAE;IAU7C;;OAEG;IACH,eAAe,IAAI,MAAM;IAIzB;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACH,kBAAkB,IAAI,MAAM;IAM5B;;OAEG;IACH,KAAK,IAAI,IAAI;IASb;;OAEG;IACH,mBAAmB,IAAI,IAAI;IAa3B;;OAEG;IACH,cAAc,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAI7C;;OAEG;IACH,QAAQ,IAAI,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;CAGzC"}
@@ -0,0 +1,252 @@
1
+ /**
2
+ * Collector 基类 - 通用数据收集器
3
+ * 参考 chrome-devtools-mcp 的 PageCollector 设计模式
4
+ *
5
+ * 特点:
6
+ * - 按导航会话分组存储
7
+ * - Stable ID 标识
8
+ * - 支持分页和过滤
9
+ */
10
+ import { createIdGenerator, stableIdSymbol } from '../utils/idGenerator.js';
11
+ /**
12
+ * 默认配置
13
+ */
14
+ const DEFAULT_OPTIONS = {
15
+ maxNavigations: 3,
16
+ maxItemsPerSession: 1000,
17
+ verbose: false,
18
+ };
19
+ /**
20
+ * 通用数据收集器基类
21
+ *
22
+ * @template T 收集的数据类型
23
+ */
24
+ export class Collector {
25
+ /** 按导航分组的存储 */
26
+ #navigations = [];
27
+ /** ID 到数据项的映射(用于快速查找) */
28
+ #idMap = new Map();
29
+ /** ID 生成器 */
30
+ #idGenerator;
31
+ /** 配置选项 */
32
+ #options;
33
+ /** 是否正在监听 */
34
+ #isMonitoring = false;
35
+ /** 监听开始时间 */
36
+ #startTime = null;
37
+ constructor(options = {}) {
38
+ this.#options = { ...DEFAULT_OPTIONS, ...options };
39
+ this.#idGenerator = createIdGenerator();
40
+ // 初始化第一个导航会话
41
+ this.#navigations.push({
42
+ items: [],
43
+ timestamp: new Date().toISOString(),
44
+ });
45
+ }
46
+ // ============ 监听状态管理 ============
47
+ /**
48
+ * 开始监听
49
+ */
50
+ startMonitoring() {
51
+ this.#isMonitoring = true;
52
+ this.#startTime = new Date().toISOString();
53
+ }
54
+ /**
55
+ * 停止监听
56
+ */
57
+ stopMonitoring() {
58
+ this.#isMonitoring = false;
59
+ }
60
+ /**
61
+ * 检查是否正在监听
62
+ */
63
+ isMonitoring() {
64
+ return this.#isMonitoring;
65
+ }
66
+ /**
67
+ * 获取监听开始时间
68
+ */
69
+ getStartTime() {
70
+ return this.#startTime;
71
+ }
72
+ // ============ 数据收集 ============
73
+ /**
74
+ * 添加数据项(自动分配 Stable ID)
75
+ * 使用环形缓冲区,超出 maxItemsPerSession 时移除最旧的条目
76
+ * @returns 分配的 ID
77
+ */
78
+ collect(item) {
79
+ const id = this.#idGenerator();
80
+ const withId = item;
81
+ withId[stableIdSymbol] = id;
82
+ // 添加到当前导航会话
83
+ const currentSession = this.#navigations[0];
84
+ // 环形缓冲区:超出限制时移除最旧的条目
85
+ if (currentSession.items.length >= this.#options.maxItemsPerSession) {
86
+ const removed = currentSession.items.shift();
87
+ if (removed) {
88
+ const removedId = this.getIdForItem(removed);
89
+ if (removedId !== -1) {
90
+ this.#idMap.delete(removedId);
91
+ }
92
+ }
93
+ if (this.#options.verbose) {
94
+ console.error(`[Collector] 环形缓冲区已满,移除最旧条目`);
95
+ }
96
+ }
97
+ currentSession.items.push(withId);
98
+ // 添加到 ID 映射
99
+ this.#idMap.set(id, withId);
100
+ if (this.#options.verbose) {
101
+ console.error(`[Collector] 收集数据项,ID: ${id},当前会话条目数: ${currentSession.items.length}`);
102
+ }
103
+ return id;
104
+ }
105
+ /**
106
+ * 在导航后分割存储(保留历史)
107
+ */
108
+ splitAfterNavigation() {
109
+ // 添加新的导航会话到开头
110
+ this.#navigations.unshift({
111
+ items: [],
112
+ timestamp: new Date().toISOString(),
113
+ });
114
+ // 限制保留的导航数量
115
+ if (this.#navigations.length > this.#options.maxNavigations) {
116
+ const removed = this.#navigations.splice(this.#options.maxNavigations);
117
+ // 清理被移除会话中的 ID 映射
118
+ for (const session of removed) {
119
+ for (const item of session.items) {
120
+ const id = this.getIdForItem(item);
121
+ if (id !== -1) {
122
+ this.#idMap.delete(id);
123
+ }
124
+ }
125
+ }
126
+ }
127
+ if (this.#options.verbose) {
128
+ console.error(`[Collector] 导航分割,当前会话数: ${this.#navigations.length}`);
129
+ }
130
+ }
131
+ // ============ 数据查询 ============
132
+ /**
133
+ * 获取数据项的 Stable ID
134
+ */
135
+ getIdForItem(item) {
136
+ return item[stableIdSymbol] ?? -1;
137
+ }
138
+ /**
139
+ * 通过 ID 获取数据项
140
+ */
141
+ getById(id) {
142
+ return this.#idMap.get(id);
143
+ }
144
+ /**
145
+ * 获取数据(支持分页和过滤)
146
+ */
147
+ getData(options = {}) {
148
+ const { includePreserved = false, filter, pageSize, pageIdx = 0 } = options;
149
+ // 收集数据
150
+ let result = [];
151
+ if (includePreserved) {
152
+ // 从旧到新收集所有会话的数据
153
+ for (let i = this.#navigations.length - 1; i >= 0; i--) {
154
+ result.push(...this.#navigations[i].items);
155
+ }
156
+ }
157
+ else {
158
+ // 只收集当前会话的数据
159
+ result = [...this.#navigations[0].items];
160
+ }
161
+ // 应用过滤
162
+ if (filter) {
163
+ result = result.filter(filter);
164
+ }
165
+ // 应用分页
166
+ if (pageSize !== undefined && pageSize > 0) {
167
+ const start = pageIdx * pageSize;
168
+ result = result.slice(start, start + pageSize);
169
+ }
170
+ return result;
171
+ }
172
+ /**
173
+ * 查找符合条件的数据项
174
+ */
175
+ find(predicate) {
176
+ for (const session of this.#navigations) {
177
+ const found = session.items.find(predicate);
178
+ if (found) {
179
+ return found;
180
+ }
181
+ }
182
+ return undefined;
183
+ }
184
+ /**
185
+ * 查找所有符合条件的数据项
186
+ */
187
+ findAll(predicate) {
188
+ const result = [];
189
+ for (const session of this.#navigations) {
190
+ result.push(...session.items.filter(predicate));
191
+ }
192
+ return result;
193
+ }
194
+ // ============ 统计信息 ============
195
+ /**
196
+ * 获取当前会话的数据数量
197
+ */
198
+ getCurrentCount() {
199
+ return this.#navigations[0]?.items.length ?? 0;
200
+ }
201
+ /**
202
+ * 获取所有会话的数据总数
203
+ */
204
+ getTotalCount() {
205
+ return this.#idMap.size;
206
+ }
207
+ /**
208
+ * 获取导航会话数量
209
+ */
210
+ getNavigationCount() {
211
+ return this.#navigations.length;
212
+ }
213
+ // ============ 清理操作 ============
214
+ /**
215
+ * 清空所有数据
216
+ */
217
+ clear() {
218
+ this.#navigations = [{
219
+ items: [],
220
+ timestamp: new Date().toISOString(),
221
+ }];
222
+ this.#idMap.clear();
223
+ this.#idGenerator = createIdGenerator();
224
+ }
225
+ /**
226
+ * 清空当前会话的数据
227
+ */
228
+ clearCurrentSession() {
229
+ const currentSession = this.#navigations[0];
230
+ for (const item of currentSession.items) {
231
+ const id = this.getIdForItem(item);
232
+ if (id !== -1) {
233
+ this.#idMap.delete(id);
234
+ }
235
+ }
236
+ currentSession.items = [];
237
+ }
238
+ // ============ 导出/兼容接口 ============
239
+ /**
240
+ * 获取原始导航数据(用于兼容旧接口)
241
+ */
242
+ getNavigations() {
243
+ return this.#navigations;
244
+ }
245
+ /**
246
+ * 获取 ID 映射表(用于兼容旧接口)
247
+ */
248
+ getIdMap() {
249
+ return this.#idMap;
250
+ }
251
+ }
252
+ //# sourceMappingURL=Collector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Collector.js","sourceRoot":"","sources":["../../src/collectors/Collector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * ConsoleCollector - Console 消息收集器
3
+ *
4
+ * 专门用于收集和管理 Console 消息和异常
5
+ * 继承自通用 Collector 基类
6
+ */
7
+ import type { ConsoleMessageType } from '../tools/ToolDefinition.js';
8
+ import { Collector, type CollectorOptions, type QueryOptions } from './Collector.js';
9
+ /**
10
+ * Console 消息接口
11
+ */
12
+ export interface ConsoleMessage {
13
+ /** Stable ID(由 Collector 自动分配) */
14
+ msgid?: number;
15
+ /** 消息类型 */
16
+ type: ConsoleMessageType;
17
+ /** 格式化的消息文本 */
18
+ message?: string;
19
+ /** console 方法的原始参数 */
20
+ args: unknown[];
21
+ /** 时间戳 */
22
+ timestamp: string;
23
+ /** 来源 */
24
+ source?: string;
25
+ }
26
+ /**
27
+ * Exception 异常信息接口
28
+ */
29
+ export interface ExceptionMessage {
30
+ /** Stable ID(由 Collector 自动分配) */
31
+ msgid?: number;
32
+ /** 异常消息 */
33
+ message: string;
34
+ /** 堆栈信息 */
35
+ stack?: string;
36
+ /** 时间戳 */
37
+ timestamp: string;
38
+ /** 来源 */
39
+ source?: string;
40
+ }
41
+ /**
42
+ * Console 消息类型(包含 Console 消息和异常)
43
+ */
44
+ export type ConsoleEntry = ConsoleMessage | ExceptionMessage;
45
+ /**
46
+ * Console 查询选项
47
+ */
48
+ export interface ConsoleQueryOptions extends QueryOptions<ConsoleEntry> {
49
+ /** 过滤消息类型 */
50
+ types?: ConsoleMessageType[];
51
+ }
52
+ /**
53
+ * 检查是否为 ConsoleMessage
54
+ */
55
+ export declare function isConsoleMessage(entry: ConsoleEntry): entry is ConsoleMessage;
56
+ /**
57
+ * 检查是否为 ExceptionMessage
58
+ */
59
+ export declare function isExceptionMessage(entry: ConsoleEntry): entry is ExceptionMessage;
60
+ /**
61
+ * Console 消息收集器
62
+ */
63
+ export declare class ConsoleCollector extends Collector<ConsoleEntry> {
64
+ constructor(options?: CollectorOptions);
65
+ /**
66
+ * 添加 Console 消息
67
+ * @returns 分配的 msgid
68
+ */
69
+ addMessage(message: Omit<ConsoleMessage, 'msgid'>): number;
70
+ /**
71
+ * 添加异常信息
72
+ * @returns 分配的 msgid
73
+ */
74
+ addException(exception: Omit<ExceptionMessage, 'msgid'>): number;
75
+ /**
76
+ * 通过 msgid 获取消息
77
+ */
78
+ getMessageById(msgid: number): ConsoleEntry | undefined;
79
+ /**
80
+ * 获取 Console 消息(支持类型过滤)
81
+ */
82
+ getMessages(options?: ConsoleQueryOptions): ConsoleEntry[];
83
+ /**
84
+ * 只获取 Console 消息(不包括异常)
85
+ */
86
+ getConsoleMessagesOnly(options?: ConsoleQueryOptions): ConsoleMessage[];
87
+ /**
88
+ * 只获取异常信息
89
+ */
90
+ getExceptionsOnly(options?: Omit<ConsoleQueryOptions, 'types'>): ExceptionMessage[];
91
+ /**
92
+ * 获取错误数量(包括 error 类型消息和异常)
93
+ */
94
+ getErrorCount(): number;
95
+ /**
96
+ * 获取警告数量
97
+ */
98
+ getWarningCount(): number;
99
+ /**
100
+ * 格式化消息预览(用于列表显示)
101
+ */
102
+ formatPreview(entry: ConsoleEntry, maxLength?: number): string;
103
+ }
104
+ //# sourceMappingURL=ConsoleCollector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConsoleCollector.d.ts","sourceRoot":"","sources":["../../src/collectors/ConsoleCollector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAErE,OAAO,EAAE,SAAS,EAAE,KAAK,gBAAgB,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAErF;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW;IACX,IAAI,EAAE,kBAAkB,CAAC;IACzB,eAAe;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sBAAsB;IACtB,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,UAAU;IACV,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS;IACT,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU;IACV,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS;IACT,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,cAAc,GAAG,gBAAgB,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,YAAY,CAAC,YAAY,CAAC;IACrE,aAAa;IACb,KAAK,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAC9B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,KAAK,IAAI,cAAc,CAE7E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,GAAG,KAAK,IAAI,gBAAgB,CAEjF;AAED;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,SAAS,CAAC,YAAY,CAAC;gBAC/C,OAAO,CAAC,EAAE,gBAAgB;IAItC;;;OAGG;IACH,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,GAAG,MAAM;IAU1D;;;OAGG;IACH,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,GAAG,MAAM;IAUhE;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAIvD;;OAEG;IACH,WAAW,CAAC,OAAO,GAAE,mBAAwB,GAAG,YAAY,EAAE;IAyB9D;;OAEG;IACH,sBAAsB,CAAC,OAAO,GAAE,mBAAwB,GAAG,cAAc,EAAE;IAK3E;;OAEG;IACH,iBAAiB,CAAC,OAAO,GAAE,IAAI,CAAC,mBAAmB,EAAE,OAAO,CAAM,GAAG,gBAAgB,EAAE;IAKvF;;OAEG;IACH,aAAa,IAAI,MAAM;IAWvB;;OAEG;IACH,eAAe,IAAI,MAAM;IAWzB;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,YAAY,EAAE,SAAS,SAAM,GAAG,MAAM;CA2B5D"}
@@ -0,0 +1,157 @@
1
+ /**
2
+ * ConsoleCollector - Console 消息收集器
3
+ *
4
+ * 专门用于收集和管理 Console 消息和异常
5
+ * 继承自通用 Collector 基类
6
+ */
7
+ import { Collector } from './Collector.js';
8
+ /**
9
+ * 检查是否为 ConsoleMessage
10
+ */
11
+ export function isConsoleMessage(entry) {
12
+ return 'type' in entry;
13
+ }
14
+ /**
15
+ * 检查是否为 ExceptionMessage
16
+ */
17
+ export function isExceptionMessage(entry) {
18
+ return !('type' in entry) && 'message' in entry;
19
+ }
20
+ /**
21
+ * Console 消息收集器
22
+ */
23
+ export class ConsoleCollector extends Collector {
24
+ constructor(options) {
25
+ super(options);
26
+ }
27
+ /**
28
+ * 添加 Console 消息
29
+ * @returns 分配的 msgid
30
+ */
31
+ addMessage(message) {
32
+ const id = this.collect(message);
33
+ // 同步 msgid 到消息对象
34
+ const storedMessage = this.getById(id);
35
+ if (storedMessage) {
36
+ storedMessage.msgid = id;
37
+ }
38
+ return id;
39
+ }
40
+ /**
41
+ * 添加异常信息
42
+ * @returns 分配的 msgid
43
+ */
44
+ addException(exception) {
45
+ const id = this.collect(exception);
46
+ // 同步 msgid 到异常对象
47
+ const storedException = this.getById(id);
48
+ if (storedException) {
49
+ storedException.msgid = id;
50
+ }
51
+ return id;
52
+ }
53
+ /**
54
+ * 通过 msgid 获取消息
55
+ */
56
+ getMessageById(msgid) {
57
+ return this.getById(msgid);
58
+ }
59
+ /**
60
+ * 获取 Console 消息(支持类型过滤)
61
+ */
62
+ getMessages(options = {}) {
63
+ const { types, ...baseOptions } = options;
64
+ // 构建过滤函数
65
+ let filter = baseOptions.filter;
66
+ if (types && types.length > 0) {
67
+ const typeSet = new Set(types);
68
+ const originalFilter = filter;
69
+ filter = (entry) => {
70
+ // 类型过滤
71
+ const typeMatch = isConsoleMessage(entry)
72
+ ? typeSet.has(entry.type)
73
+ : typeSet.has('error'); // ExceptionMessage 视为 error 类型
74
+ // 如果有原始过滤器,还需要满足原始过滤条件
75
+ if (originalFilter) {
76
+ return typeMatch && originalFilter(entry);
77
+ }
78
+ return typeMatch;
79
+ };
80
+ }
81
+ return this.getData({ ...baseOptions, filter });
82
+ }
83
+ /**
84
+ * 只获取 Console 消息(不包括异常)
85
+ */
86
+ getConsoleMessagesOnly(options = {}) {
87
+ const entries = this.getMessages(options);
88
+ return entries.filter(isConsoleMessage);
89
+ }
90
+ /**
91
+ * 只获取异常信息
92
+ */
93
+ getExceptionsOnly(options = {}) {
94
+ const entries = this.getData(options);
95
+ return entries.filter(isExceptionMessage);
96
+ }
97
+ /**
98
+ * 获取错误数量(包括 error 类型消息和异常)
99
+ */
100
+ getErrorCount() {
101
+ let count = 0;
102
+ const entries = this.getData({ includePreserved: false });
103
+ for (const entry of entries) {
104
+ if (isExceptionMessage(entry) || (isConsoleMessage(entry) && entry.type === 'error')) {
105
+ count++;
106
+ }
107
+ }
108
+ return count;
109
+ }
110
+ /**
111
+ * 获取警告数量
112
+ */
113
+ getWarningCount() {
114
+ let count = 0;
115
+ const entries = this.getData({ includePreserved: false });
116
+ for (const entry of entries) {
117
+ if (isConsoleMessage(entry) && entry.type === 'warn') {
118
+ count++;
119
+ }
120
+ }
121
+ return count;
122
+ }
123
+ /**
124
+ * 格式化消息预览(用于列表显示)
125
+ */
126
+ formatPreview(entry, maxLength = 100) {
127
+ let text;
128
+ if (isConsoleMessage(entry)) {
129
+ if (entry.message) {
130
+ text = entry.message;
131
+ }
132
+ else if (entry.args.length > 0) {
133
+ text = entry.args
134
+ .map(arg => {
135
+ if (typeof arg === 'string')
136
+ return arg;
137
+ if (typeof arg === 'object')
138
+ return JSON.stringify(arg);
139
+ return String(arg);
140
+ })
141
+ .join(' ');
142
+ }
143
+ else {
144
+ text = '';
145
+ }
146
+ }
147
+ else {
148
+ text = entry.message;
149
+ }
150
+ // 截断长文本
151
+ if (text.length > maxLength) {
152
+ return text.slice(0, maxLength) + '...';
153
+ }
154
+ return text;
155
+ }
156
+ }
157
+ //# sourceMappingURL=ConsoleCollector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConsoleCollector.js","sourceRoot":"","sources":["../../src/collectors/ConsoleCollector.ts"],"names":[],"mappings":"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"}