@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
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Recording and replay tool implementations
3
+ * Handles action sequence recording, saving, and replay
4
+ */
5
+ import type { SessionState, ActionSequence } from '../types.js';
6
+ /**
7
+ * Start recording actions
8
+ */
9
+ export declare function startRecording(session: SessionState, args?: {
10
+ name?: string;
11
+ description?: string;
12
+ }): Promise<{
13
+ success: boolean;
14
+ message: string;
15
+ sequenceId?: string;
16
+ }>;
17
+ /**
18
+ * Stop recording and save sequence
19
+ */
20
+ export declare function stopRecording(session: SessionState, args?: {
21
+ save?: boolean;
22
+ }): Promise<{
23
+ success: boolean;
24
+ message: string;
25
+ sequenceId?: string;
26
+ actionCount?: number;
27
+ filePath?: string;
28
+ }>;
29
+ /**
30
+ * Record an action (internal helper, called by tool wrapper)
31
+ *
32
+ * Thread-safe: Captures recording state atomically to prevent race conditions
33
+ */
34
+ export declare function recordAction(session: SessionState, toolName: string, args: Record<string, any>, success: boolean, duration?: number, error?: string): void;
35
+ /**
36
+ * List all saved sequences
37
+ */
38
+ export declare function listSequences(session: SessionState): Promise<{
39
+ success: boolean;
40
+ message: string;
41
+ sequences: Array<{
42
+ id: string;
43
+ name: string;
44
+ description?: string;
45
+ createdAt: string;
46
+ actionCount: number;
47
+ }>;
48
+ }>;
49
+ /**
50
+ * Get a specific sequence
51
+ */
52
+ export declare function getSequence(session: SessionState, args: {
53
+ sequenceId: string;
54
+ }): Promise<{
55
+ success: boolean;
56
+ message: string;
57
+ sequence: ActionSequence;
58
+ }>;
59
+ /**
60
+ * Delete a sequence
61
+ */
62
+ export declare function deleteSequence(session: SessionState, args: {
63
+ sequenceId: string;
64
+ }): Promise<{
65
+ success: boolean;
66
+ message: string;
67
+ }>;
68
+ /**
69
+ * Replay a recorded sequence
70
+ */
71
+ export declare function replaySequence(session: SessionState, args: {
72
+ sequenceId: string;
73
+ continueOnError?: boolean;
74
+ }): Promise<{
75
+ success: boolean;
76
+ message: string;
77
+ totalActions: number;
78
+ successCount: number;
79
+ failureCount: number;
80
+ results: Array<{
81
+ toolName: string;
82
+ success: boolean;
83
+ error?: string;
84
+ }>;
85
+ }>;
86
+ //# sourceMappingURL=record.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../../src/tools/record.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAkB,MAAM,aAAa,CAAA;AAwB/E;;GAEG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,YAAY,EACrB,IAAI,GAAE;IACJ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;CAChB,GACL,OAAO,CAAC;IACT,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAC,CAsCD;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,YAAY,EACrB,IAAI,GAAE;IACJ,IAAI,CAAC,EAAE,OAAO,CAAA;CACV,GACL,OAAO,CAAC;IACT,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAC,CAkDD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,OAAO,EAAE,OAAO,EAChB,QAAQ,CAAC,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,MAAM,GACb,IAAI,CAgCN;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC;IAClE,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,KAAK,CAAC;QACf,EAAE,EAAE,MAAM,CAAA;QACV,IAAI,EAAE,MAAM,CAAA;QACZ,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,SAAS,EAAE,MAAM,CAAA;QACjB,WAAW,EAAE,MAAM,CAAA;KACpB,CAAC,CAAA;CACH,CAAC,CAuCD;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE;IACJ,UAAU,EAAE,MAAM,CAAA;CACnB,GACA,OAAO,CAAC;IACT,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,cAAc,CAAA;CACzB,CAAC,CA4BD;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE;IACJ,UAAU,EAAE,MAAM,CAAA;CACnB,GACA,OAAO,CAAC;IACT,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;CAChB,CAAC,CAwBD;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE;IACJ,UAAU,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B,GACA,OAAO,CAAC;IACT,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,KAAK,CAAC;QACb,QAAQ,EAAE,MAAM,CAAA;QAChB,OAAO,EAAE,OAAO,CAAA;QAChB,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,CAAC,CAAA;CACH,CAAC,CAwFD"}
@@ -0,0 +1,316 @@
1
+ /**
2
+ * Recording and replay tool implementations
3
+ * Handles action sequence recording, saving, and replay
4
+ */
5
+ import { promises as fs } from 'fs';
6
+ import path from 'path';
7
+ /**
8
+ * Generate a unique sequence ID
9
+ */
10
+ function generateSequenceId() {
11
+ return `seq_${Date.now()}_${Math.random().toString(36).substring(2, 9)}`;
12
+ }
13
+ /**
14
+ * Get sequences directory path
15
+ */
16
+ function getSequencesDir(session) {
17
+ return path.join(session.outputDir, 'sequences');
18
+ }
19
+ /**
20
+ * Ensure sequences directory exists
21
+ */
22
+ async function ensureSequencesDir(session) {
23
+ const dir = getSequencesDir(session);
24
+ await fs.mkdir(dir, { recursive: true });
25
+ }
26
+ /**
27
+ * Start recording actions
28
+ */
29
+ export async function startRecording(session, args = {}) {
30
+ const { name = `Recording ${new Date().toISOString()}`, description } = args;
31
+ const logger = session.logger;
32
+ try {
33
+ logger?.info('Starting recording', { name });
34
+ // Check if already recording
35
+ if (session.recording?.isRecording) {
36
+ throw new Error('Already recording. Stop current recording first.');
37
+ }
38
+ // Initialize recording state
39
+ const sequenceId = generateSequenceId();
40
+ session.recording = {
41
+ isRecording: true,
42
+ startedAt: new Date(),
43
+ currentSequence: {
44
+ id: sequenceId,
45
+ name,
46
+ description,
47
+ createdAt: new Date(),
48
+ actions: [],
49
+ },
50
+ };
51
+ logger?.info('Recording started', { sequenceId, name });
52
+ return {
53
+ success: true,
54
+ message: `Recording started: ${name}`,
55
+ sequenceId,
56
+ };
57
+ }
58
+ catch (error) {
59
+ const errorMessage = error instanceof Error ? error.message : String(error);
60
+ logger?.error('Failed to start recording', { error: errorMessage });
61
+ throw new Error(`Failed to start recording: ${errorMessage}`);
62
+ }
63
+ }
64
+ /**
65
+ * Stop recording and save sequence
66
+ */
67
+ export async function stopRecording(session, args = {}) {
68
+ const { save = true } = args;
69
+ const logger = session.logger;
70
+ try {
71
+ logger?.info('Stopping recording');
72
+ // Check if recording
73
+ if (!session.recording?.isRecording || !session.recording.currentSequence) {
74
+ throw new Error('Not currently recording');
75
+ }
76
+ const sequence = session.recording.currentSequence;
77
+ const actionCount = sequence.actions.length;
78
+ // Stop recording
79
+ session.recording.isRecording = false;
80
+ let filePath;
81
+ // Save sequence if requested
82
+ if (save) {
83
+ await ensureSequencesDir(session);
84
+ const filename = `${sequence.id}.json`;
85
+ filePath = path.join(getSequencesDir(session), filename);
86
+ await fs.writeFile(filePath, JSON.stringify(sequence, null, 2), 'utf-8');
87
+ logger?.info('Sequence saved', {
88
+ sequenceId: sequence.id,
89
+ filePath,
90
+ actionCount,
91
+ });
92
+ }
93
+ // Clear recording state
94
+ session.recording = undefined;
95
+ return {
96
+ success: true,
97
+ message: `Recording stopped: ${sequence.name} (${actionCount} actions)`,
98
+ sequenceId: sequence.id,
99
+ actionCount,
100
+ filePath,
101
+ };
102
+ }
103
+ catch (error) {
104
+ const errorMessage = error instanceof Error ? error.message : String(error);
105
+ logger?.error('Failed to stop recording', { error: errorMessage });
106
+ throw new Error(`Failed to stop recording: ${errorMessage}`);
107
+ }
108
+ }
109
+ /**
110
+ * Record an action (internal helper, called by tool wrapper)
111
+ *
112
+ * Thread-safe: Captures recording state atomically to prevent race conditions
113
+ */
114
+ export function recordAction(session, toolName, args, success, duration, error) {
115
+ // Atomically capture recording state
116
+ const recording = session.recording;
117
+ if (!recording || !recording.isRecording) {
118
+ return;
119
+ }
120
+ const currentSequence = recording.currentSequence;
121
+ if (!currentSequence) {
122
+ return;
123
+ }
124
+ try {
125
+ const action = {
126
+ timestamp: new Date(),
127
+ toolName,
128
+ args,
129
+ duration,
130
+ success,
131
+ error,
132
+ };
133
+ // Atomically push action
134
+ // If recording was stopped between the checks above and here,
135
+ // the action will still be recorded (which is acceptable - better than losing it)
136
+ currentSequence.actions.push(action);
137
+ }
138
+ catch (error) {
139
+ // Handle potential race condition where currentSequence becomes invalid
140
+ const errorMessage = error instanceof Error ? error.message : String(error);
141
+ console.error(`Failed to record action for ${toolName}:`, errorMessage);
142
+ // Silently fail - don't break the actual tool execution
143
+ }
144
+ }
145
+ /**
146
+ * List all saved sequences
147
+ */
148
+ export async function listSequences(session) {
149
+ const logger = session.logger;
150
+ try {
151
+ logger?.info('Listing sequences');
152
+ await ensureSequencesDir(session);
153
+ const dir = getSequencesDir(session);
154
+ const files = await fs.readdir(dir);
155
+ const sequences = [];
156
+ for (const file of files) {
157
+ if (!file.endsWith('.json'))
158
+ continue;
159
+ const filePath = path.join(dir, file);
160
+ const content = await fs.readFile(filePath, 'utf-8');
161
+ const sequence = JSON.parse(content);
162
+ sequences.push({
163
+ id: sequence.id,
164
+ name: sequence.name,
165
+ description: sequence.description,
166
+ createdAt: sequence.createdAt.toString(),
167
+ actionCount: sequence.actions.length,
168
+ });
169
+ }
170
+ logger?.info('Sequences listed', { count: sequences.length });
171
+ return {
172
+ success: true,
173
+ message: `Found ${sequences.length} sequences`,
174
+ sequences,
175
+ };
176
+ }
177
+ catch (error) {
178
+ const errorMessage = error instanceof Error ? error.message : String(error);
179
+ logger?.error('Failed to list sequences', { error: errorMessage });
180
+ throw new Error(`Failed to list sequences: ${errorMessage}`);
181
+ }
182
+ }
183
+ /**
184
+ * Get a specific sequence
185
+ */
186
+ export async function getSequence(session, args) {
187
+ const { sequenceId } = args;
188
+ const logger = session.logger;
189
+ try {
190
+ logger?.info('Getting sequence', { sequenceId });
191
+ await ensureSequencesDir(session);
192
+ const filePath = path.join(getSequencesDir(session), `${sequenceId}.json`);
193
+ const content = await fs.readFile(filePath, 'utf-8');
194
+ const sequence = JSON.parse(content);
195
+ logger?.info('Sequence retrieved', {
196
+ sequenceId,
197
+ actionCount: sequence.actions.length,
198
+ });
199
+ return {
200
+ success: true,
201
+ message: `Sequence retrieved: ${sequence.name}`,
202
+ sequence,
203
+ };
204
+ }
205
+ catch (error) {
206
+ const errorMessage = error instanceof Error ? error.message : String(error);
207
+ logger?.error('Failed to get sequence', { error: errorMessage, sequenceId });
208
+ throw new Error(`Failed to get sequence: ${errorMessage}`);
209
+ }
210
+ }
211
+ /**
212
+ * Delete a sequence
213
+ */
214
+ export async function deleteSequence(session, args) {
215
+ const { sequenceId } = args;
216
+ const logger = session.logger;
217
+ try {
218
+ logger?.info('Deleting sequence', { sequenceId });
219
+ const filePath = path.join(getSequencesDir(session), `${sequenceId}.json`);
220
+ await fs.unlink(filePath);
221
+ logger?.info('Sequence deleted', { sequenceId });
222
+ return {
223
+ success: true,
224
+ message: `Sequence deleted: ${sequenceId}`,
225
+ };
226
+ }
227
+ catch (error) {
228
+ const errorMessage = error instanceof Error ? error.message : String(error);
229
+ logger?.error('Failed to delete sequence', {
230
+ error: errorMessage,
231
+ sequenceId,
232
+ });
233
+ throw new Error(`Failed to delete sequence: ${errorMessage}`);
234
+ }
235
+ }
236
+ /**
237
+ * Replay a recorded sequence
238
+ */
239
+ export async function replaySequence(session, args) {
240
+ const { sequenceId, continueOnError = false } = args;
241
+ const logger = session.logger;
242
+ try {
243
+ logger?.info('Replaying sequence', { sequenceId, continueOnError });
244
+ // Get sequence
245
+ const { sequence } = await getSequence(session, { sequenceId });
246
+ // Import tools dynamically
247
+ const tools = await import('./index.js');
248
+ const results = [];
249
+ let successCount = 0;
250
+ let failureCount = 0;
251
+ // Replay each action
252
+ for (const action of sequence.actions) {
253
+ const startTime = Date.now();
254
+ try {
255
+ // Get tool function
256
+ const toolFn = tools[action.toolName];
257
+ if (!toolFn || typeof toolFn !== 'function') {
258
+ throw new Error(`Tool not found: ${action.toolName}`);
259
+ }
260
+ // Execute tool
261
+ await toolFn(session, action.args);
262
+ const duration = Date.now() - startTime;
263
+ logger?.info('Action replayed successfully', {
264
+ toolName: action.toolName,
265
+ duration,
266
+ });
267
+ results.push({
268
+ toolName: action.toolName,
269
+ success: true,
270
+ });
271
+ successCount++;
272
+ }
273
+ catch (error) {
274
+ const errorMessage = error instanceof Error ? error.message : String(error);
275
+ const duration = Date.now() - startTime;
276
+ logger?.error('Action replay failed', {
277
+ toolName: action.toolName,
278
+ error: errorMessage,
279
+ duration,
280
+ });
281
+ results.push({
282
+ toolName: action.toolName,
283
+ success: false,
284
+ error: errorMessage,
285
+ });
286
+ failureCount++;
287
+ if (!continueOnError) {
288
+ throw new Error(`Replay stopped at action ${action.toolName}: ${errorMessage}`);
289
+ }
290
+ }
291
+ }
292
+ logger?.info('Sequence replay completed', {
293
+ sequenceId,
294
+ totalActions: sequence.actions.length,
295
+ successCount,
296
+ failureCount,
297
+ });
298
+ return {
299
+ success: failureCount === 0,
300
+ message: `Replay completed: ${successCount} success, ${failureCount} failures`,
301
+ totalActions: sequence.actions.length,
302
+ successCount,
303
+ failureCount,
304
+ results,
305
+ };
306
+ }
307
+ catch (error) {
308
+ const errorMessage = error instanceof Error ? error.message : String(error);
309
+ logger?.error('Failed to replay sequence', {
310
+ error: errorMessage,
311
+ sequenceId,
312
+ });
313
+ throw new Error(`Failed to replay sequence: ${errorMessage}`);
314
+ }
315
+ }
316
+ //# sourceMappingURL=record.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record.js","sourceRoot":"","sources":["../../src/tools/record.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Snapshot tools for MCP server
3
+ * Provides utilities for capturing page and application state snapshots
4
+ */
5
+ import type { SessionState } from '../types.js';
6
+ /**
7
+ * Capture a complete page snapshot (data + screenshot)
8
+ * Includes page data, page info, and screenshot
9
+ */
10
+ export declare function snapshotPage(session: SessionState, args: {
11
+ pagePath?: string;
12
+ filename?: string;
13
+ includeScreenshot?: boolean;
14
+ fullPage?: boolean;
15
+ }): Promise<{
16
+ success: boolean;
17
+ message: string;
18
+ snapshotPath: string;
19
+ screenshotPath?: string;
20
+ data: {
21
+ timestamp: string;
22
+ pagePath: string;
23
+ pageData: any;
24
+ pageQuery: Record<string, any>;
25
+ };
26
+ }>;
27
+ /**
28
+ * Capture a complete application snapshot
29
+ * Includes system info, page stack, current page data, and screenshot
30
+ */
31
+ export declare function snapshotFull(session: SessionState, args: {
32
+ filename?: string;
33
+ includeScreenshot?: boolean;
34
+ fullPage?: boolean;
35
+ }): Promise<{
36
+ success: boolean;
37
+ message: string;
38
+ snapshotPath: string;
39
+ screenshotPath?: string;
40
+ data: {
41
+ timestamp: string;
42
+ systemInfo: any;
43
+ pageStack: Array<{
44
+ path: string;
45
+ query: Record<string, any>;
46
+ }>;
47
+ currentPage: {
48
+ path: string;
49
+ query: Record<string, any>;
50
+ data: any;
51
+ };
52
+ };
53
+ }>;
54
+ /**
55
+ * Capture an element snapshot (properties + screenshot)
56
+ * Includes element attributes, properties, size, and optional screenshot
57
+ */
58
+ export declare function snapshotElement(session: SessionState, args: {
59
+ refId: string;
60
+ filename?: string;
61
+ includeScreenshot?: boolean;
62
+ }): Promise<{
63
+ success: boolean;
64
+ message: string;
65
+ snapshotPath: string;
66
+ screenshotPath?: string;
67
+ data: {
68
+ timestamp: string;
69
+ refId: string;
70
+ text?: string;
71
+ attributes: Record<string, any>;
72
+ size: {
73
+ width: number;
74
+ height: number;
75
+ } | null;
76
+ offset: {
77
+ left: number;
78
+ top: number;
79
+ } | null;
80
+ };
81
+ }>;
82
+ //# sourceMappingURL=snapshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../src/tools/snapshot.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAI/C;;;GAGG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE;IACJ,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,GACA,OAAO,CAAC;IACT,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,IAAI,EAAE;QACJ,SAAS,EAAE,MAAM,CAAA;QACjB,QAAQ,EAAE,MAAM,CAAA;QAChB,QAAQ,EAAE,GAAG,CAAA;QACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAC/B,CAAA;CACF,CAAC,CA2FD;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE;IACJ,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,GACA,OAAO,CAAC;IACT,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,IAAI,EAAE;QACJ,SAAS,EAAE,MAAM,CAAA;QACjB,UAAU,EAAE,GAAG,CAAA;QACf,SAAS,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;SAAE,CAAC,CAAA;QAC9D,WAAW,EAAE;YACX,IAAI,EAAE,MAAM,CAAA;YACZ,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;YAC1B,IAAI,EAAE,GAAG,CAAA;SACV,CAAA;KACF,CAAA;CACF,CAAC,CAoGD;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE;IACJ,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAC5B,GACA,OAAO,CAAC;IACT,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,IAAI,EAAE;QACJ,SAAS,EAAE,MAAM,CAAA;QACjB,KAAK,EAAE,MAAM,CAAA;QACb,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;QAC/B,IAAI,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,GAAG,IAAI,CAAA;QAC9C,MAAM,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,GAAG,IAAI,CAAA;KAC7C,CAAA;CACF,CAAC,CAuGD"}