@creatoria/miniapp-mcp 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 (160) hide show
  1. package/README.md +469 -0
  2. package/dist/cli.d.ts +6 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +144 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/config/defaults.d.ts +73 -0
  7. package/dist/config/defaults.d.ts.map +1 -0
  8. package/dist/config/defaults.js +118 -0
  9. package/dist/config/defaults.js.map +1 -0
  10. package/dist/config/loader.d.ts +50 -0
  11. package/dist/config/loader.d.ts.map +1 -0
  12. package/dist/config/loader.js +189 -0
  13. package/dist/config/loader.js.map +1 -0
  14. package/dist/core/element-ref.d.ts +44 -0
  15. package/dist/core/element-ref.d.ts.map +1 -0
  16. package/dist/core/element-ref.js +213 -0
  17. package/dist/core/element-ref.js.map +1 -0
  18. package/dist/core/logger.d.ts +55 -0
  19. package/dist/core/logger.d.ts.map +1 -0
  20. package/dist/core/logger.js +378 -0
  21. package/dist/core/logger.js.map +1 -0
  22. package/dist/core/output.d.ts +21 -0
  23. package/dist/core/output.d.ts.map +1 -0
  24. package/dist/core/output.js +56 -0
  25. package/dist/core/output.js.map +1 -0
  26. package/dist/core/report-generator.d.ts +24 -0
  27. package/dist/core/report-generator.d.ts.map +1 -0
  28. package/dist/core/report-generator.js +212 -0
  29. package/dist/core/report-generator.js.map +1 -0
  30. package/dist/core/session.d.ts +83 -0
  31. package/dist/core/session.d.ts.map +1 -0
  32. package/dist/core/session.js +306 -0
  33. package/dist/core/session.js.map +1 -0
  34. package/dist/core/timeout.d.ts +49 -0
  35. package/dist/core/timeout.d.ts.map +1 -0
  36. package/dist/core/timeout.js +67 -0
  37. package/dist/core/timeout.js.map +1 -0
  38. package/dist/core/tool-logger.d.ts +83 -0
  39. package/dist/core/tool-logger.d.ts.map +1 -0
  40. package/dist/core/tool-logger.js +453 -0
  41. package/dist/core/tool-logger.js.map +1 -0
  42. package/dist/core/validation.d.ts +39 -0
  43. package/dist/core/validation.d.ts.map +1 -0
  44. package/dist/core/validation.js +93 -0
  45. package/dist/core/validation.js.map +1 -0
  46. package/dist/index.d.ts +7 -0
  47. package/dist/index.d.ts.map +1 -0
  48. package/dist/index.js +6 -0
  49. package/dist/index.js.map +1 -0
  50. package/dist/server.d.ts +7 -0
  51. package/dist/server.d.ts.map +1 -0
  52. package/dist/server.js +85 -0
  53. package/dist/server.js.map +1 -0
  54. package/dist/tools/assert.d.ts +108 -0
  55. package/dist/tools/assert.d.ts.map +1 -0
  56. package/dist/tools/assert.js +291 -0
  57. package/dist/tools/assert.js.map +1 -0
  58. package/dist/tools/automator.d.ts +45 -0
  59. package/dist/tools/automator.d.ts.map +1 -0
  60. package/dist/tools/automator.js +186 -0
  61. package/dist/tools/automator.js.map +1 -0
  62. package/dist/tools/element.d.ts +253 -0
  63. package/dist/tools/element.d.ts.map +1 -0
  64. package/dist/tools/element.js +615 -0
  65. package/dist/tools/element.js.map +1 -0
  66. package/dist/tools/index.d.ts +97 -0
  67. package/dist/tools/index.d.ts.map +1 -0
  68. package/dist/tools/index.js +1565 -0
  69. package/dist/tools/index.js.map +1 -0
  70. package/dist/tools/miniprogram.d.ts +79 -0
  71. package/dist/tools/miniprogram.d.ts.map +1 -0
  72. package/dist/tools/miniprogram.js +245 -0
  73. package/dist/tools/miniprogram.js.map +1 -0
  74. package/dist/tools/network.d.ts +65 -0
  75. package/dist/tools/network.d.ts.map +1 -0
  76. package/dist/tools/network.js +205 -0
  77. package/dist/tools/network.js.map +1 -0
  78. package/dist/tools/page.d.ts +108 -0
  79. package/dist/tools/page.d.ts.map +1 -0
  80. package/dist/tools/page.js +307 -0
  81. package/dist/tools/page.js.map +1 -0
  82. package/dist/tools/record.d.ts +86 -0
  83. package/dist/tools/record.d.ts.map +1 -0
  84. package/dist/tools/record.js +316 -0
  85. package/dist/tools/record.js.map +1 -0
  86. package/dist/tools/snapshot.d.ts +82 -0
  87. package/dist/tools/snapshot.d.ts.map +1 -0
  88. package/dist/tools/snapshot.js +258 -0
  89. package/dist/tools/snapshot.js.map +1 -0
  90. package/dist/types.d.ts +240 -0
  91. package/dist/types.d.ts.map +1 -0
  92. package/dist/types.js +5 -0
  93. package/dist/types.js.map +1 -0
  94. package/docs/SIMPLE_USAGE.md +210 -0
  95. package/docs/api/README.md +244 -0
  96. package/docs/api/assert.md +1015 -0
  97. package/docs/api/automator.md +345 -0
  98. package/docs/api/element.md +1454 -0
  99. package/docs/api/miniprogram.md +558 -0
  100. package/docs/api/network.md +883 -0
  101. package/docs/api/page.md +909 -0
  102. package/docs/api/record.md +963 -0
  103. package/docs/api/snapshot.md +792 -0
  104. package/docs/architecture.E-Docs.md +1359 -0
  105. package/docs/architecture.F1.md +720 -0
  106. package/docs/architecture.F2.md +871 -0
  107. package/docs/architecture.F3.md +905 -0
  108. package/docs/architecture.md +90 -0
  109. package/docs/charter.A1.align.yaml +170 -0
  110. package/docs/charter.A2.align.yaml +199 -0
  111. package/docs/charter.A3.align.yaml +242 -0
  112. package/docs/charter.A4.align.yaml +227 -0
  113. package/docs/charter.B1.align.yaml +179 -0
  114. package/docs/charter.B2.align.yaml +200 -0
  115. package/docs/charter.B3.align.yaml +200 -0
  116. package/docs/charter.B4.align.yaml +188 -0
  117. package/docs/charter.C1.align.yaml +190 -0
  118. package/docs/charter.C2.align.yaml +202 -0
  119. package/docs/charter.C3.align.yaml +211 -0
  120. package/docs/charter.C4.align.yaml +263 -0
  121. package/docs/charter.C5.align.yaml +220 -0
  122. package/docs/charter.D1.align.yaml +190 -0
  123. package/docs/charter.D2.align.yaml +234 -0
  124. package/docs/charter.D3.align.yaml +206 -0
  125. package/docs/charter.E-Docs.align.yaml +294 -0
  126. package/docs/charter.F1.align.yaml +193 -0
  127. package/docs/charter.F2.align.yaml +248 -0
  128. package/docs/charter.F3.align.yaml +287 -0
  129. package/docs/charter.G.align.yaml +174 -0
  130. package/docs/charter.align.yaml +111 -0
  131. package/docs/examples/session-report-usage.md +449 -0
  132. package/docs/maintenance.md +682 -0
  133. package/docs/playwright-mcp/350/260/203/347/240/224.md +53 -0
  134. package/docs/setup-guide.md +775 -0
  135. package/docs/tasks.A1.atomize.md +296 -0
  136. package/docs/tasks.A2.atomize.md +408 -0
  137. package/docs/tasks.A3.atomize.md +564 -0
  138. package/docs/tasks.A4.atomize.md +496 -0
  139. package/docs/tasks.B1.atomize.md +352 -0
  140. package/docs/tasks.B2.atomize.md +561 -0
  141. package/docs/tasks.B3.atomize.md +508 -0
  142. package/docs/tasks.B4.atomize.md +504 -0
  143. package/docs/tasks.C1.atomize.md +540 -0
  144. package/docs/tasks.C2.atomize.md +665 -0
  145. package/docs/tasks.C3.atomize.md +745 -0
  146. package/docs/tasks.C4.atomize.md +908 -0
  147. package/docs/tasks.C5.atomize.md +755 -0
  148. package/docs/tasks.D1.atomize.md +547 -0
  149. package/docs/tasks.D2.atomize.md +619 -0
  150. package/docs/tasks.D3.atomize.md +790 -0
  151. package/docs/tasks.E-Docs.atomize.md +1204 -0
  152. package/docs/tasks.atomize.md +189 -0
  153. package/docs/troubleshooting.md +855 -0
  154. package/docs//345/256/214/346/225/264/345/256/236/347/216/260/346/226/271/346/241/210.md +155 -0
  155. package/docs//345/274/200/345/217/221/344/273/273/345/212/241/350/256/241/345/210/222.md +110 -0
  156. package/docs//345/276/256/344/277/241/345/260/217/347/250/213/345/272/217/350/207/252/345/212/250/345/214/226API/345/256/214/346/225/264/346/226/207/346/241/243.md +894 -0
  157. package/docs//345/276/256/344/277/241/345/260/217/347/250/213/345/272/217/350/207/252/345/212/250/345/214/226/345/256/214/346/225/264/346/223/215/344/275/234/346/211/213/345/206/214.md +1885 -0
  158. package/docs//346/216/245/345/217/243/346/226/271/346/241/210.md +565 -0
  159. package/docs//347/254/254/344/270/200/347/211/210/346/234/254/346/226/271/346/241/210.md +380 -0
  160. package/package.json +87 -0
package/dist/server.js ADDED
@@ -0,0 +1,85 @@
1
+ /**
2
+ * MCP Server implementation for WeChat Mini Program automation
3
+ */
4
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
5
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
6
+ import { ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
7
+ import { SessionStore } from './core/session.js';
8
+ import { registerTools } from './tools/index.js';
9
+ import { mergeServerConfig } from './config/defaults.js';
10
+ export async function startServer(config = {}) {
11
+ // Merge config with defaults to ensure all fields are present
12
+ const fullConfig = mergeServerConfig(config);
13
+ const { capabilities, outputDir, sessionTimeout, logLevel, enableFileLog, logBufferSize, logFlushInterval, enableSessionReport, } = fullConfig;
14
+ // Generate unique session ID for this server instance
15
+ // Each stdio transport connection gets a unique session
16
+ const sessionId = `session-${process.pid}-${Date.now()}`;
17
+ // Create session store with configuration
18
+ const sessionStore = new SessionStore({
19
+ outputDir,
20
+ sessionTimeout,
21
+ enableSessionReport,
22
+ loggerConfig: {
23
+ level: logLevel,
24
+ enableFileLog,
25
+ outputDir,
26
+ bufferSize: logBufferSize,
27
+ flushInterval: logFlushInterval,
28
+ },
29
+ });
30
+ const server = new Server({
31
+ name: 'creatoria-miniapp-mcp',
32
+ version: '0.1.0',
33
+ }, {
34
+ capabilities: {
35
+ tools: {},
36
+ },
37
+ });
38
+ // Register tools based on capabilities
39
+ // registerTools now actually registers the CallToolRequestSchema handler
40
+ const tools = registerTools(server, {
41
+ capabilities,
42
+ sessionId, // Pass the unique session ID
43
+ getSession: (sid) => {
44
+ const session = sessionStore.getOrCreate(sid);
45
+ sessionStore.updateActivity(sid);
46
+ return session;
47
+ },
48
+ deleteSession: (sid) => sessionStore.delete(sid),
49
+ });
50
+ // List available tools
51
+ server.setRequestHandler(ListToolsRequestSchema, async () => {
52
+ return { tools };
53
+ });
54
+ // Cleanup on shutdown
55
+ process.on('SIGINT', async () => {
56
+ console.error('\nShutting down MCP server...');
57
+ try {
58
+ await sessionStore.dispose();
59
+ console.error('Cleanup completed');
60
+ }
61
+ catch (error) {
62
+ console.error('Error during cleanup:', error);
63
+ }
64
+ process.exit(0);
65
+ });
66
+ process.on('SIGTERM', async () => {
67
+ console.error('\nShutting down MCP server...');
68
+ try {
69
+ await sessionStore.dispose();
70
+ console.error('Cleanup completed');
71
+ }
72
+ catch (error) {
73
+ console.error('Error during cleanup:', error);
74
+ }
75
+ process.exit(0);
76
+ });
77
+ // Start server with stdio transport
78
+ const transport = new StdioServerTransport();
79
+ await server.connect(transport);
80
+ console.error('WeChat Mini Program MCP Server running on stdio');
81
+ console.error(`Capabilities: ${capabilities.join(', ')}`);
82
+ console.error(`Tools registered: ${tools.length}`);
83
+ return server;
84
+ }
85
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Assert tools for MCP server
3
+ * Provides assertion utilities for testing mini program functionality
4
+ */
5
+ import type { SessionState } from '../types.js';
6
+ /**
7
+ * Assert that an element exists on the page
8
+ */
9
+ export declare function assertExists(session: SessionState, args: {
10
+ selector: string;
11
+ pagePath?: string;
12
+ }): Promise<{
13
+ success: boolean;
14
+ message: string;
15
+ }>;
16
+ /**
17
+ * Assert that an element does not exist on the page
18
+ */
19
+ export declare function assertNotExists(session: SessionState, args: {
20
+ selector: string;
21
+ pagePath?: string;
22
+ }): Promise<{
23
+ success: boolean;
24
+ message: string;
25
+ }>;
26
+ /**
27
+ * Assert element text equals expected value
28
+ */
29
+ export declare function assertText(session: SessionState, args: {
30
+ refId: string;
31
+ expected: string;
32
+ }): Promise<{
33
+ success: boolean;
34
+ message: string;
35
+ actual: string;
36
+ }>;
37
+ /**
38
+ * Assert element text contains expected substring
39
+ */
40
+ export declare function assertTextContains(session: SessionState, args: {
41
+ refId: string;
42
+ expected: string;
43
+ }): Promise<{
44
+ success: boolean;
45
+ message: string;
46
+ actual: string;
47
+ }>;
48
+ /**
49
+ * Assert element value equals expected value
50
+ */
51
+ export declare function assertValue(session: SessionState, args: {
52
+ refId: string;
53
+ expected: string;
54
+ }): Promise<{
55
+ success: boolean;
56
+ message: string;
57
+ actual: string;
58
+ }>;
59
+ /**
60
+ * Assert element attribute equals expected value
61
+ */
62
+ export declare function assertAttribute(session: SessionState, args: {
63
+ refId: string;
64
+ name: string;
65
+ expected: string;
66
+ }): Promise<{
67
+ success: boolean;
68
+ message: string;
69
+ actual: string;
70
+ }>;
71
+ /**
72
+ * Assert element property equals expected value
73
+ */
74
+ export declare function assertProperty(session: SessionState, args: {
75
+ refId: string;
76
+ name: string;
77
+ expected: any;
78
+ }): Promise<{
79
+ success: boolean;
80
+ message: string;
81
+ actual: any;
82
+ }>;
83
+ /**
84
+ * Assert page data equals expected value
85
+ */
86
+ export declare function assertData(session: SessionState, args: {
87
+ path?: string;
88
+ expected: any;
89
+ pagePath?: string;
90
+ }): Promise<{
91
+ success: boolean;
92
+ message: string;
93
+ actual: any;
94
+ }>;
95
+ /**
96
+ * Assert element is visible (has non-zero size)
97
+ */
98
+ export declare function assertVisible(session: SessionState, args: {
99
+ refId: string;
100
+ }): Promise<{
101
+ success: boolean;
102
+ message: string;
103
+ size: {
104
+ width: number;
105
+ height: number;
106
+ };
107
+ }>;
108
+ //# sourceMappingURL=assert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assert.d.ts","sourceRoot":"","sources":["../../src/tools/assert.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,291 @@
1
+ /**
2
+ * Assert tools for MCP server
3
+ * Provides assertion utilities for testing mini program functionality
4
+ */
5
+ import * as pageTools from './page.js';
6
+ import * as elementTools from './element.js';
7
+ /**
8
+ * Assert that an element exists on the page
9
+ */
10
+ export async function assertExists(session, args) {
11
+ const { selector, pagePath } = args;
12
+ const logger = session.logger;
13
+ try {
14
+ logger?.info('Asserting element exists', { selector, pagePath });
15
+ // Try to query the element
16
+ const result = await pageTools.query(session, {
17
+ selector,
18
+ pagePath,
19
+ save: false,
20
+ });
21
+ if (!result.exists) {
22
+ throw new Error(`Assertion failed: Element not found with selector: ${selector}`);
23
+ }
24
+ logger?.info('Element exists assertion passed', { selector });
25
+ return {
26
+ success: true,
27
+ message: `Element exists: ${selector}`,
28
+ };
29
+ }
30
+ catch (error) {
31
+ const errorMessage = error instanceof Error ? error.message : String(error);
32
+ logger?.error('Element exists assertion failed', {
33
+ error: errorMessage,
34
+ selector,
35
+ });
36
+ throw new Error(`Assertion failed: ${errorMessage}`);
37
+ }
38
+ }
39
+ /**
40
+ * Assert that an element does not exist on the page
41
+ */
42
+ export async function assertNotExists(session, args) {
43
+ const { selector, pagePath } = args;
44
+ const logger = session.logger;
45
+ try {
46
+ logger?.info('Asserting element does not exist', { selector, pagePath });
47
+ // Try to query the element
48
+ const result = await pageTools.query(session, {
49
+ selector,
50
+ pagePath,
51
+ save: false,
52
+ });
53
+ if (result.exists) {
54
+ throw new Error(`Assertion failed: Element should not exist but found with selector: ${selector}`);
55
+ }
56
+ logger?.info('Element not exists assertion passed', { selector });
57
+ return {
58
+ success: true,
59
+ message: `Element does not exist: ${selector}`,
60
+ };
61
+ }
62
+ catch (error) {
63
+ const errorMessage = error instanceof Error ? error.message : String(error);
64
+ // If error is "Element not found", the assertion passes
65
+ if (errorMessage.includes('Element not found')) {
66
+ logger?.info('Element not exists assertion passed', { selector });
67
+ return {
68
+ success: true,
69
+ message: `Element does not exist: ${selector}`,
70
+ };
71
+ }
72
+ logger?.error('Element not exists assertion failed', {
73
+ error: errorMessage,
74
+ selector,
75
+ });
76
+ throw new Error(`Assertion failed: ${errorMessage}`);
77
+ }
78
+ }
79
+ /**
80
+ * Assert element text equals expected value
81
+ */
82
+ export async function assertText(session, args) {
83
+ const { refId, expected } = args;
84
+ const logger = session.logger;
85
+ try {
86
+ logger?.info('Asserting element text', { refId, expected });
87
+ const result = await elementTools.getText(session, { refId });
88
+ const actual = result.text;
89
+ if (actual !== expected) {
90
+ throw new Error(`Assertion failed: Text mismatch. Expected: "${expected}", Actual: "${actual}"`);
91
+ }
92
+ logger?.info('Text assertion passed', { refId, expected, actual });
93
+ return {
94
+ success: true,
95
+ message: `Text matches: "${expected}"`,
96
+ actual,
97
+ };
98
+ }
99
+ catch (error) {
100
+ const errorMessage = error instanceof Error ? error.message : String(error);
101
+ logger?.error('Text assertion failed', {
102
+ error: errorMessage,
103
+ refId,
104
+ expected,
105
+ });
106
+ throw new Error(`Assertion failed: ${errorMessage}`);
107
+ }
108
+ }
109
+ /**
110
+ * Assert element text contains expected substring
111
+ */
112
+ export async function assertTextContains(session, args) {
113
+ const { refId, expected } = args;
114
+ const logger = session.logger;
115
+ try {
116
+ logger?.info('Asserting element text contains', { refId, expected });
117
+ const result = await elementTools.getText(session, { refId });
118
+ const actual = result.text;
119
+ if (!actual.includes(expected)) {
120
+ throw new Error(`Assertion failed: Text does not contain expected substring. Expected to contain: "${expected}", Actual: "${actual}"`);
121
+ }
122
+ logger?.info('Text contains assertion passed', { refId, expected, actual });
123
+ return {
124
+ success: true,
125
+ message: `Text contains: "${expected}"`,
126
+ actual,
127
+ };
128
+ }
129
+ catch (error) {
130
+ const errorMessage = error instanceof Error ? error.message : String(error);
131
+ logger?.error('Text contains assertion failed', {
132
+ error: errorMessage,
133
+ refId,
134
+ expected,
135
+ });
136
+ throw new Error(`Assertion failed: ${errorMessage}`);
137
+ }
138
+ }
139
+ /**
140
+ * Assert element value equals expected value
141
+ */
142
+ export async function assertValue(session, args) {
143
+ const { refId, expected } = args;
144
+ const logger = session.logger;
145
+ try {
146
+ logger?.info('Asserting element value', { refId, expected });
147
+ const result = await elementTools.getValue(session, { refId });
148
+ const actual = result.value;
149
+ if (actual !== expected) {
150
+ throw new Error(`Assertion failed: Value mismatch. Expected: "${expected}", Actual: "${actual}"`);
151
+ }
152
+ logger?.info('Value assertion passed', { refId, expected, actual });
153
+ return {
154
+ success: true,
155
+ message: `Value matches: "${expected}"`,
156
+ actual,
157
+ };
158
+ }
159
+ catch (error) {
160
+ const errorMessage = error instanceof Error ? error.message : String(error);
161
+ logger?.error('Value assertion failed', {
162
+ error: errorMessage,
163
+ refId,
164
+ expected,
165
+ });
166
+ throw new Error(`Assertion failed: ${errorMessage}`);
167
+ }
168
+ }
169
+ /**
170
+ * Assert element attribute equals expected value
171
+ */
172
+ export async function assertAttribute(session, args) {
173
+ const { refId, name, expected } = args;
174
+ const logger = session.logger;
175
+ try {
176
+ logger?.info('Asserting element attribute', { refId, name, expected });
177
+ const result = await elementTools.getAttribute(session, { refId, name });
178
+ const actual = result.value;
179
+ if (actual !== expected) {
180
+ throw new Error(`Assertion failed: Attribute "${name}" mismatch. Expected: "${expected}", Actual: "${actual}"`);
181
+ }
182
+ logger?.info('Attribute assertion passed', { refId, name, expected, actual });
183
+ return {
184
+ success: true,
185
+ message: `Attribute "${name}" matches: "${expected}"`,
186
+ actual,
187
+ };
188
+ }
189
+ catch (error) {
190
+ const errorMessage = error instanceof Error ? error.message : String(error);
191
+ logger?.error('Attribute assertion failed', {
192
+ error: errorMessage,
193
+ refId,
194
+ name,
195
+ expected,
196
+ });
197
+ throw new Error(`Assertion failed: ${errorMessage}`);
198
+ }
199
+ }
200
+ /**
201
+ * Assert element property equals expected value
202
+ */
203
+ export async function assertProperty(session, args) {
204
+ const { refId, name, expected } = args;
205
+ const logger = session.logger;
206
+ try {
207
+ logger?.info('Asserting element property', { refId, name, expected });
208
+ const result = await elementTools.getProperty(session, { refId, name });
209
+ const actual = result.value;
210
+ if (JSON.stringify(actual) !== JSON.stringify(expected)) {
211
+ throw new Error(`Assertion failed: Property "${name}" mismatch. Expected: ${JSON.stringify(expected)}, Actual: ${JSON.stringify(actual)}`);
212
+ }
213
+ logger?.info('Property assertion passed', { refId, name, expected, actual });
214
+ return {
215
+ success: true,
216
+ message: `Property "${name}" matches`,
217
+ actual,
218
+ };
219
+ }
220
+ catch (error) {
221
+ const errorMessage = error instanceof Error ? error.message : String(error);
222
+ logger?.error('Property assertion failed', {
223
+ error: errorMessage,
224
+ refId,
225
+ name,
226
+ expected,
227
+ });
228
+ throw new Error(`Assertion failed: ${errorMessage}`);
229
+ }
230
+ }
231
+ /**
232
+ * Assert page data equals expected value
233
+ */
234
+ export async function assertData(session, args) {
235
+ const { path, expected, pagePath } = args;
236
+ const logger = session.logger;
237
+ try {
238
+ logger?.info('Asserting page data', { path, expected, pagePath });
239
+ const result = await pageTools.getData(session, { path, pagePath });
240
+ const actual = result.data;
241
+ if (JSON.stringify(actual) !== JSON.stringify(expected)) {
242
+ throw new Error(`Assertion failed: Page data${path ? ` at path "${path}"` : ''} mismatch. Expected: ${JSON.stringify(expected)}, Actual: ${JSON.stringify(actual)}`);
243
+ }
244
+ logger?.info('Data assertion passed', { path, expected, actual, pagePath });
245
+ return {
246
+ success: true,
247
+ message: `Page data${path ? ` at "${path}"` : ''} matches`,
248
+ actual,
249
+ };
250
+ }
251
+ catch (error) {
252
+ const errorMessage = error instanceof Error ? error.message : String(error);
253
+ logger?.error('Data assertion failed', {
254
+ error: errorMessage,
255
+ path,
256
+ expected,
257
+ pagePath,
258
+ });
259
+ throw new Error(`Assertion failed: ${errorMessage}`);
260
+ }
261
+ }
262
+ /**
263
+ * Assert element is visible (has non-zero size)
264
+ */
265
+ export async function assertVisible(session, args) {
266
+ const { refId } = args;
267
+ const logger = session.logger;
268
+ try {
269
+ logger?.info('Asserting element is visible', { refId });
270
+ const result = await elementTools.getSize(session, { refId });
271
+ const size = result.size;
272
+ if (!size || size.width === 0 || size.height === 0) {
273
+ throw new Error(`Assertion failed: Element is not visible. Size: ${JSON.stringify(size)}`);
274
+ }
275
+ logger?.info('Visible assertion passed', { refId, size });
276
+ return {
277
+ success: true,
278
+ message: `Element is visible`,
279
+ size,
280
+ };
281
+ }
282
+ catch (error) {
283
+ const errorMessage = error instanceof Error ? error.message : String(error);
284
+ logger?.error('Visible assertion failed', {
285
+ error: errorMessage,
286
+ refId,
287
+ });
288
+ throw new Error(`Assertion failed: ${errorMessage}`);
289
+ }
290
+ }
291
+ //# sourceMappingURL=assert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assert.js","sourceRoot":"","sources":["../../src/tools/assert.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Automator tool implementations
3
+ * Handles launch, connect, disconnect, and close operations
4
+ */
5
+ import type { SessionState } from '../types.js';
6
+ /**
7
+ * Launch WeChat DevTools and connect to miniprogram
8
+ */
9
+ export declare function launch(session: SessionState, args: {
10
+ projectPath: string;
11
+ cliPath?: string;
12
+ port?: number;
13
+ }): Promise<{
14
+ success: boolean;
15
+ message: string;
16
+ port?: number;
17
+ }>;
18
+ /**
19
+ * Connect to an already running WeChat DevTools instance
20
+ * Note: The port must be configured in WeChat DevTools settings before connecting
21
+ */
22
+ export declare function connect(session: SessionState, args?: {
23
+ port?: number;
24
+ }): Promise<{
25
+ success: boolean;
26
+ message: string;
27
+ port?: number;
28
+ }>;
29
+ /**
30
+ * Disconnect from miniprogram but keep IDE process running
31
+ */
32
+ export declare function disconnect(session: SessionState): Promise<{
33
+ success: boolean;
34
+ message: string;
35
+ }>;
36
+ /**
37
+ * Close miniprogram session completely
38
+ * This will disconnect and cleanup all resources
39
+ * The session itself will be deleted by the caller
40
+ */
41
+ export declare function close(session: SessionState): Promise<{
42
+ success: boolean;
43
+ message: string;
44
+ }>;
45
+ //# sourceMappingURL=automator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"automator.d.ts","sourceRoot":"","sources":["../../src/tools/automator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAY/C;;GAEG;AACH,wBAAsB,MAAM,CAC1B,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE;IACJ,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,GACA,OAAO,CAAC;IACT,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAC,CAkDD;AAED;;;GAGG;AACH,wBAAsB,OAAO,CAC3B,OAAO,EAAE,YAAY,EACrB,IAAI,GAAE;IACJ,IAAI,CAAC,EAAE,MAAM,CAAA;CACT,GACL,OAAO,CAAC;IACT,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAC,CA8CD;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC;IAC/D,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;CAChB,CAAC,CA6CD;AAED;;;;GAIG;AACH,wBAAsB,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC;IAC1D,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;CAChB,CAAC,CAwCD"}