@browserflow-ai/exploration 0.0.6

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 (58) hide show
  1. package/dist/adapters/claude-cli.d.ts +57 -0
  2. package/dist/adapters/claude-cli.d.ts.map +1 -0
  3. package/dist/adapters/claude-cli.js +195 -0
  4. package/dist/adapters/claude-cli.js.map +1 -0
  5. package/dist/adapters/claude.d.ts +54 -0
  6. package/dist/adapters/claude.d.ts.map +1 -0
  7. package/dist/adapters/claude.js +160 -0
  8. package/dist/adapters/claude.js.map +1 -0
  9. package/dist/adapters/index.d.ts +6 -0
  10. package/dist/adapters/index.d.ts.map +1 -0
  11. package/dist/adapters/index.js +4 -0
  12. package/dist/adapters/index.js.map +1 -0
  13. package/dist/adapters/types.d.ts +196 -0
  14. package/dist/adapters/types.d.ts.map +1 -0
  15. package/dist/adapters/types.js +3 -0
  16. package/dist/adapters/types.js.map +1 -0
  17. package/dist/agent-browser-session.d.ts +62 -0
  18. package/dist/agent-browser-session.d.ts.map +1 -0
  19. package/dist/agent-browser-session.js +272 -0
  20. package/dist/agent-browser-session.js.map +1 -0
  21. package/dist/evidence.d.ts +111 -0
  22. package/dist/evidence.d.ts.map +1 -0
  23. package/dist/evidence.js +144 -0
  24. package/dist/evidence.js.map +1 -0
  25. package/dist/explorer.d.ts +180 -0
  26. package/dist/explorer.d.ts.map +1 -0
  27. package/dist/explorer.js +393 -0
  28. package/dist/explorer.js.map +1 -0
  29. package/dist/index.d.ts +15 -0
  30. package/dist/index.d.ts.map +1 -0
  31. package/dist/index.js +15 -0
  32. package/dist/index.js.map +1 -0
  33. package/dist/locator-candidates.d.ts +127 -0
  34. package/dist/locator-candidates.d.ts.map +1 -0
  35. package/dist/locator-candidates.js +358 -0
  36. package/dist/locator-candidates.js.map +1 -0
  37. package/dist/step-executor.d.ts +99 -0
  38. package/dist/step-executor.d.ts.map +1 -0
  39. package/dist/step-executor.js +646 -0
  40. package/dist/step-executor.js.map +1 -0
  41. package/package.json +34 -0
  42. package/src/adapters/claude-cli.test.ts +134 -0
  43. package/src/adapters/claude-cli.ts +240 -0
  44. package/src/adapters/claude.test.ts +195 -0
  45. package/src/adapters/claude.ts +190 -0
  46. package/src/adapters/index.ts +21 -0
  47. package/src/adapters/types.ts +207 -0
  48. package/src/agent-browser-session.test.ts +369 -0
  49. package/src/agent-browser-session.ts +349 -0
  50. package/src/evidence.test.ts +239 -0
  51. package/src/evidence.ts +203 -0
  52. package/src/explorer.test.ts +321 -0
  53. package/src/explorer.ts +565 -0
  54. package/src/index.ts +51 -0
  55. package/src/locator-candidates.test.ts +602 -0
  56. package/src/locator-candidates.ts +441 -0
  57. package/src/step-executor.test.ts +696 -0
  58. package/src/step-executor.ts +783 -0
@@ -0,0 +1,646 @@
1
+ // @browserflow-ai/exploration - Step executor
2
+ import { parseDuration } from '@browserflow-ai/core';
3
+ /**
4
+ * Parse a timeout/duration value that can be string or number
5
+ * Supports duration strings like "500ms", "5s", "1m" as well as plain numbers
6
+ */
7
+ function parseTimeout(value, defaultValue) {
8
+ if (value === undefined)
9
+ return defaultValue;
10
+ try {
11
+ return parseDuration(value);
12
+ }
13
+ catch {
14
+ return defaultValue;
15
+ }
16
+ }
17
+ /**
18
+ * StepExecutor - Executes individual spec steps against a browser session
19
+ *
20
+ * Handles:
21
+ * - Navigation: navigate, back, forward, refresh
22
+ * - Interaction: click, fill, type, select, check, press
23
+ * - Waiting: wait for element, text, url, time
24
+ * - Assertions: verify_state with various checks
25
+ * - Capture: screenshot, scroll
26
+ */
27
+ export class StepExecutor {
28
+ browser;
29
+ adapter;
30
+ baseUrl;
31
+ defaultTimeout;
32
+ screenshotDir;
33
+ captureBeforeScreenshots;
34
+ captureAfterScreenshots;
35
+ customActionHandlers;
36
+ constructor(config = {}) {
37
+ this.browser = config.browser;
38
+ this.adapter = config.adapter;
39
+ this.baseUrl = config.baseUrl ?? '';
40
+ this.defaultTimeout = config.defaultTimeout ?? 30000;
41
+ this.screenshotDir = config.screenshotDir ?? './screenshots';
42
+ this.captureBeforeScreenshots = config.captureBeforeScreenshots ?? false;
43
+ this.captureAfterScreenshots = config.captureAfterScreenshots ?? true;
44
+ this.customActionHandlers = config.customActionHandlers ?? {};
45
+ }
46
+ /**
47
+ * Configure the executor with browser and adapter (for lazy initialization)
48
+ */
49
+ configure(config) {
50
+ if (config.browser)
51
+ this.browser = config.browser;
52
+ if (config.adapter)
53
+ this.adapter = config.adapter;
54
+ if (config.baseUrl)
55
+ this.baseUrl = config.baseUrl;
56
+ }
57
+ /**
58
+ * Check if executor is properly configured
59
+ */
60
+ isConfigured() {
61
+ return !!this.browser && !!this.adapter;
62
+ }
63
+ /**
64
+ * Execute a single step
65
+ *
66
+ * @param step - The step definition from the spec
67
+ * @param stepIndex - Index of this step in the spec
68
+ * @returns Promise resolving to step result
69
+ */
70
+ async execute(step, stepIndex = 0) {
71
+ const startTime = Date.now();
72
+ const screenshotPrefix = `step-${String(stepIndex).padStart(2, '0')}`;
73
+ let beforeScreenshot;
74
+ let afterScreenshot;
75
+ // Check if executor is configured
76
+ if (!this.browser || !this.adapter) {
77
+ return {
78
+ stepIndex,
79
+ specAction: step,
80
+ execution: {
81
+ status: 'failed',
82
+ method: step.action,
83
+ durationMs: Date.now() - startTime,
84
+ error: 'StepExecutor not configured - browser and adapter required',
85
+ },
86
+ screenshots: {
87
+ before: `${this.screenshotDir}/${screenshotPrefix}-before.png`,
88
+ after: `${this.screenshotDir}/${screenshotPrefix}-after.png`,
89
+ },
90
+ };
91
+ }
92
+ try {
93
+ // Capture before screenshot if configured
94
+ if (this.captureBeforeScreenshots) {
95
+ beforeScreenshot = await this.captureScreenshot(`${screenshotPrefix}-before`);
96
+ }
97
+ // Execute the action
98
+ const execution = await this.executeAction(step);
99
+ // Capture after screenshot (always for screenshot action, or if configured)
100
+ if (step.action === 'screenshot') {
101
+ const name = step.name || screenshotPrefix;
102
+ afterScreenshot = await this.captureScreenshot(name);
103
+ }
104
+ else if (this.captureAfterScreenshots) {
105
+ afterScreenshot = await this.captureScreenshot(`${screenshotPrefix}-after`);
106
+ }
107
+ return {
108
+ stepIndex,
109
+ specAction: step,
110
+ execution: {
111
+ ...execution,
112
+ durationMs: Date.now() - startTime,
113
+ },
114
+ screenshots: {
115
+ before: beforeScreenshot ?? `${this.screenshotDir}/${screenshotPrefix}-before.png`,
116
+ after: afterScreenshot ?? `${this.screenshotDir}/${screenshotPrefix}-after.png`,
117
+ },
118
+ };
119
+ }
120
+ catch (error) {
121
+ const errorMessage = error instanceof Error ? error.message : String(error);
122
+ return {
123
+ stepIndex,
124
+ specAction: step,
125
+ execution: {
126
+ status: 'failed',
127
+ method: step.action,
128
+ durationMs: Date.now() - startTime,
129
+ error: errorMessage,
130
+ },
131
+ screenshots: {
132
+ before: beforeScreenshot ?? `${this.screenshotDir}/${screenshotPrefix}-before.png`,
133
+ after: `${this.screenshotDir}/${screenshotPrefix}-after.png`,
134
+ },
135
+ };
136
+ }
137
+ }
138
+ /**
139
+ * Execute a single action based on step type
140
+ */
141
+ async executeAction(step) {
142
+ switch (step.action) {
143
+ // Navigation actions
144
+ case 'navigate':
145
+ return this.executeNavigate(step);
146
+ case 'back':
147
+ return this.executeBack();
148
+ case 'forward':
149
+ return this.executeForward();
150
+ case 'reload': // Alias for refresh
151
+ case 'refresh':
152
+ return this.executeRefresh();
153
+ // Interaction actions
154
+ case 'click':
155
+ return this.executeClick(step);
156
+ case 'fill':
157
+ return this.executeFill(step);
158
+ case 'type':
159
+ return this.executeType(step);
160
+ case 'select':
161
+ return this.executeSelect(step);
162
+ case 'check':
163
+ return this.executeCheck(step);
164
+ case 'press':
165
+ return this.executePress(step);
166
+ // Wait actions
167
+ case 'wait':
168
+ return this.executeWait(step);
169
+ // Verification actions
170
+ case 'verify_state':
171
+ return this.executeVerifyState(step);
172
+ // Capture actions
173
+ case 'screenshot':
174
+ return this.executeScreenshot(step);
175
+ case 'scroll':
176
+ return this.executeScroll(step);
177
+ case 'scroll_into_view':
178
+ return this.executeScrollIntoView(step);
179
+ // AI-powered actions
180
+ case 'identify_element':
181
+ return this.executeIdentifyElement(step);
182
+ case 'ai_verify':
183
+ return this.executeAIVerify(step);
184
+ // Custom actions
185
+ case 'custom':
186
+ return this.executeCustom(step);
187
+ default:
188
+ return {
189
+ status: 'failed',
190
+ method: step.action,
191
+ durationMs: 0,
192
+ error: `Unknown action type: ${step.action}`,
193
+ };
194
+ }
195
+ }
196
+ // ============ Navigation Actions ============
197
+ async executeNavigate(step) {
198
+ // Support both url (canonical) and to (legacy)
199
+ const targetUrl = step.url ?? step.to;
200
+ if (!targetUrl) {
201
+ return {
202
+ status: 'failed',
203
+ method: 'navigate',
204
+ durationMs: 0,
205
+ error: 'Navigate action requires "url" field',
206
+ };
207
+ }
208
+ const url = targetUrl.startsWith('http') ? targetUrl : `${this.baseUrl}${targetUrl}`;
209
+ await this.browser.navigate(url);
210
+ return {
211
+ status: 'completed',
212
+ method: 'navigate',
213
+ durationMs: 0,
214
+ };
215
+ }
216
+ async executeBack() {
217
+ if (this.browser.back) {
218
+ await this.browser.back();
219
+ }
220
+ return {
221
+ status: 'completed',
222
+ method: 'back',
223
+ durationMs: 0,
224
+ };
225
+ }
226
+ async executeForward() {
227
+ if (this.browser.forward) {
228
+ await this.browser.forward();
229
+ }
230
+ return {
231
+ status: 'completed',
232
+ method: 'forward',
233
+ durationMs: 0,
234
+ };
235
+ }
236
+ async executeRefresh() {
237
+ if (this.browser.refresh) {
238
+ await this.browser.refresh();
239
+ }
240
+ return {
241
+ status: 'completed',
242
+ method: 'refresh',
243
+ durationMs: 0,
244
+ };
245
+ }
246
+ // ============ Interaction Actions ============
247
+ async executeClick(step) {
248
+ const target = await this.resolveTarget(step);
249
+ if (!target) {
250
+ return {
251
+ status: 'failed',
252
+ method: 'click',
253
+ durationMs: 0,
254
+ error: 'Click action requires ref, selector, or query',
255
+ };
256
+ }
257
+ if (this.browser.click) {
258
+ await this.browser.click(target.ref);
259
+ }
260
+ return {
261
+ status: 'completed',
262
+ method: 'click',
263
+ elementRef: target.ref,
264
+ selectorUsed: target.selector,
265
+ durationMs: 0,
266
+ };
267
+ }
268
+ async executeFill(step) {
269
+ const target = await this.resolveTarget(step);
270
+ if (!target) {
271
+ return {
272
+ status: 'failed',
273
+ method: 'fill',
274
+ durationMs: 0,
275
+ error: 'Fill action requires ref, selector, or query',
276
+ };
277
+ }
278
+ const value = step.value ?? '';
279
+ if (this.browser.fill) {
280
+ await this.browser.fill(target.ref, value);
281
+ }
282
+ return {
283
+ status: 'completed',
284
+ method: 'fill',
285
+ elementRef: target.ref,
286
+ selectorUsed: target.selector,
287
+ durationMs: 0,
288
+ };
289
+ }
290
+ async executeType(step) {
291
+ const target = await this.resolveTarget(step);
292
+ if (!target) {
293
+ return {
294
+ status: 'failed',
295
+ method: 'type',
296
+ durationMs: 0,
297
+ error: 'Type action requires ref, selector, or query',
298
+ };
299
+ }
300
+ const text = step.value ?? '';
301
+ if (this.browser.type) {
302
+ await this.browser.type(target.ref, text);
303
+ }
304
+ return {
305
+ status: 'completed',
306
+ method: 'type',
307
+ elementRef: target.ref,
308
+ selectorUsed: target.selector,
309
+ durationMs: 0,
310
+ };
311
+ }
312
+ async executeSelect(step) {
313
+ const target = await this.resolveTarget(step);
314
+ if (!target) {
315
+ return {
316
+ status: 'failed',
317
+ method: 'select',
318
+ durationMs: 0,
319
+ error: 'Select action requires ref, selector, or query',
320
+ };
321
+ }
322
+ const option = step.option ?? '';
323
+ if (this.browser.select) {
324
+ await this.browser.select(target.ref, option);
325
+ }
326
+ return {
327
+ status: 'completed',
328
+ method: 'select',
329
+ elementRef: target.ref,
330
+ selectorUsed: target.selector,
331
+ durationMs: 0,
332
+ };
333
+ }
334
+ async executeCheck(step) {
335
+ const target = await this.resolveTarget(step);
336
+ if (!target) {
337
+ return {
338
+ status: 'failed',
339
+ method: 'check',
340
+ durationMs: 0,
341
+ error: 'Check action requires ref, selector, or query',
342
+ };
343
+ }
344
+ const checked = step.checked !== false; // Default to true
345
+ if (this.browser.check) {
346
+ await this.browser.check(target.ref, checked);
347
+ }
348
+ return {
349
+ status: 'completed',
350
+ method: 'check',
351
+ elementRef: target.ref,
352
+ selectorUsed: target.selector,
353
+ durationMs: 0,
354
+ };
355
+ }
356
+ async executePress(step) {
357
+ const key = step.value ?? '';
358
+ if (!key) {
359
+ return {
360
+ status: 'failed',
361
+ method: 'press',
362
+ durationMs: 0,
363
+ error: 'Press action requires "value" field with key name',
364
+ };
365
+ }
366
+ if (this.browser.press) {
367
+ await this.browser.press(key);
368
+ }
369
+ return {
370
+ status: 'completed',
371
+ method: 'press',
372
+ durationMs: 0,
373
+ };
374
+ }
375
+ // ============ Wait Actions ============
376
+ async executeWait(step) {
377
+ const waitFor = step.for;
378
+ const timeout = parseTimeout(step.timeout, this.defaultTimeout);
379
+ switch (waitFor) {
380
+ case 'element':
381
+ if (step.selector && this.browser.waitForSelector) {
382
+ await this.browser.waitForSelector(step.selector, timeout);
383
+ }
384
+ break;
385
+ case 'url':
386
+ if (step.contains && this.browser.waitForURL) {
387
+ await this.browser.waitForURL(step.contains, timeout);
388
+ }
389
+ break;
390
+ case 'text':
391
+ if (step.text && this.browser.waitForText) {
392
+ await this.browser.waitForText(step.text, timeout);
393
+ }
394
+ break;
395
+ case 'time':
396
+ if (step.duration && this.browser.waitForTimeout) {
397
+ await this.browser.waitForTimeout(parseTimeout(step.duration, 1000));
398
+ }
399
+ break;
400
+ case 'load_state':
401
+ if (this.browser.waitForLoadState) {
402
+ await this.browser.waitForLoadState('load');
403
+ }
404
+ break;
405
+ default:
406
+ // No specific wait type - just mark as completed
407
+ break;
408
+ }
409
+ return {
410
+ status: 'completed',
411
+ method: 'wait',
412
+ durationMs: 0,
413
+ };
414
+ }
415
+ // ============ Verification Actions ============
416
+ async executeVerifyState(step) {
417
+ const checks = (step.checks || []);
418
+ const snapshot = await this.browser.getSnapshot({ interactive: true });
419
+ const currentURL = this.browser.getCurrentURL?.() ?? '';
420
+ for (const check of checks) {
421
+ // Check element_visible
422
+ if (check.element_visible) {
423
+ const found = this.findElementInSnapshot(check.element_visible, snapshot);
424
+ if (!found) {
425
+ return {
426
+ status: 'failed',
427
+ method: 'verify_state',
428
+ durationMs: 0,
429
+ error: `Element not visible: ${check.element_visible}`,
430
+ };
431
+ }
432
+ }
433
+ // Check element_not_visible
434
+ if (check.element_not_visible) {
435
+ const found = this.findElementInSnapshot(check.element_not_visible, snapshot);
436
+ if (found) {
437
+ return {
438
+ status: 'failed',
439
+ method: 'verify_state',
440
+ durationMs: 0,
441
+ error: `Element should not be visible: ${check.element_not_visible}`,
442
+ };
443
+ }
444
+ }
445
+ // Check url_contains
446
+ if (check.url_contains) {
447
+ if (!currentURL.includes(check.url_contains)) {
448
+ return {
449
+ status: 'failed',
450
+ method: 'verify_state',
451
+ durationMs: 0,
452
+ error: `URL does not contain: ${check.url_contains}`,
453
+ };
454
+ }
455
+ }
456
+ // Check text_contains
457
+ if (check.text_contains) {
458
+ if (!snapshot.tree.includes(check.text_contains)) {
459
+ return {
460
+ status: 'failed',
461
+ method: 'verify_state',
462
+ durationMs: 0,
463
+ error: `Text not found: ${check.text_contains}`,
464
+ };
465
+ }
466
+ }
467
+ // Check text_not_contains
468
+ if (check.text_not_contains) {
469
+ if (snapshot.tree.includes(check.text_not_contains)) {
470
+ return {
471
+ status: 'failed',
472
+ method: 'verify_state',
473
+ durationMs: 0,
474
+ error: `Text should not be present: ${check.text_not_contains}`,
475
+ };
476
+ }
477
+ }
478
+ }
479
+ return {
480
+ status: 'completed',
481
+ method: 'verify_state',
482
+ durationMs: 0,
483
+ };
484
+ }
485
+ // ============ Capture Actions ============
486
+ async executeScreenshot(step) {
487
+ // Screenshot is captured in the main execute method
488
+ return {
489
+ status: 'completed',
490
+ method: 'screenshot',
491
+ durationMs: 0,
492
+ };
493
+ }
494
+ async executeScroll(step) {
495
+ const x = step.scrollX ?? 0;
496
+ const y = step.scrollY ?? 0;
497
+ if (this.browser.scroll) {
498
+ await this.browser.scroll(x, y);
499
+ }
500
+ return {
501
+ status: 'completed',
502
+ method: 'scroll',
503
+ durationMs: 0,
504
+ };
505
+ }
506
+ async executeScrollIntoView(step) {
507
+ const target = await this.resolveTarget(step);
508
+ if (!target) {
509
+ return {
510
+ status: 'failed',
511
+ method: 'scroll_into_view',
512
+ durationMs: 0,
513
+ error: 'scroll_into_view action requires ref, selector, or query',
514
+ };
515
+ }
516
+ if (this.browser.scrollIntoView) {
517
+ await this.browser.scrollIntoView(target.ref);
518
+ }
519
+ return {
520
+ status: 'completed',
521
+ method: 'scroll_into_view',
522
+ elementRef: target.ref,
523
+ durationMs: 0,
524
+ };
525
+ }
526
+ // ============ AI-Powered Actions ============
527
+ async executeIdentifyElement(step) {
528
+ if (!step.query) {
529
+ return {
530
+ status: 'failed',
531
+ method: 'identify_element',
532
+ durationMs: 0,
533
+ error: 'identify_element action requires "query" field',
534
+ };
535
+ }
536
+ const snapshot = await this.browser.getSnapshot({ interactive: true });
537
+ const result = await this.adapter.findElement(step.query, snapshot);
538
+ if (result.ref === 'NOT_FOUND') {
539
+ return {
540
+ status: 'failed',
541
+ method: 'identify_element',
542
+ durationMs: 0,
543
+ error: `Element not found for query: ${step.query}`,
544
+ };
545
+ }
546
+ return {
547
+ status: 'completed',
548
+ method: 'identify_element',
549
+ elementRef: result.ref,
550
+ durationMs: 0,
551
+ };
552
+ }
553
+ async executeAIVerify(step) {
554
+ // AI verification is more complex - for now just mark as completed
555
+ // Full implementation would use adapter to verify visual/semantic state
556
+ return {
557
+ status: 'completed',
558
+ method: 'ai_verify',
559
+ durationMs: 0,
560
+ };
561
+ }
562
+ // ============ Custom Actions ============
563
+ async executeCustom(step) {
564
+ const handlerName = step.name;
565
+ if (!handlerName || !this.customActionHandlers[handlerName]) {
566
+ return {
567
+ status: 'failed',
568
+ method: 'custom',
569
+ durationMs: 0,
570
+ error: `Custom action handler not found: ${handlerName}`,
571
+ };
572
+ }
573
+ return this.customActionHandlers[handlerName](step, this.browser);
574
+ }
575
+ // ============ Helper Methods ============
576
+ /**
577
+ * Resolve target to element ref
578
+ */
579
+ async resolveTarget(step) {
580
+ // If step has a direct ref, use it
581
+ if (step.ref) {
582
+ return { ref: step.ref };
583
+ }
584
+ // If step has a selector, use it as ref
585
+ if (step.selector) {
586
+ return { ref: step.selector, selector: step.selector };
587
+ }
588
+ // Use AI adapter to find element from query
589
+ if (step.query) {
590
+ const snapshot = await this.browser.getSnapshot({ interactive: true });
591
+ const result = await this.adapter.findElement(step.query, snapshot);
592
+ if (result.ref === 'NOT_FOUND') {
593
+ throw new Error(`Element not found for query: ${step.query}`);
594
+ }
595
+ return { ref: result.ref };
596
+ }
597
+ return null;
598
+ }
599
+ /**
600
+ * Find element in snapshot by selector/query
601
+ */
602
+ findElementInSnapshot(selector, snapshot) {
603
+ // Check if element exists in tree or refs
604
+ if (snapshot.tree.includes(selector)) {
605
+ return true;
606
+ }
607
+ // Check refs for matching tag or attribute
608
+ for (const ref of Object.values(snapshot.refs)) {
609
+ const element = ref;
610
+ if (element.tag === selector ||
611
+ element.text?.toString().includes(selector) ||
612
+ element.className?.toString().includes(selector) ||
613
+ element.id === selector) {
614
+ return true;
615
+ }
616
+ }
617
+ return false;
618
+ }
619
+ /**
620
+ * Capture a screenshot
621
+ */
622
+ async captureScreenshot(name) {
623
+ const { promises: fs } = await import('fs');
624
+ const path = await import('path');
625
+ const filepath = path.join(this.screenshotDir, `${name}.png`);
626
+ // Ensure directory exists
627
+ await fs.mkdir(path.dirname(filepath), { recursive: true });
628
+ // Capture and write screenshot
629
+ const buffer = await this.browser.screenshot();
630
+ await fs.writeFile(filepath, buffer);
631
+ return filepath;
632
+ }
633
+ /**
634
+ * Get the default timeout value
635
+ */
636
+ getDefaultTimeout() {
637
+ return this.defaultTimeout;
638
+ }
639
+ /**
640
+ * Get the screenshot directory
641
+ */
642
+ getScreenshotDir() {
643
+ return this.screenshotDir;
644
+ }
645
+ }
646
+ //# sourceMappingURL=step-executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step-executor.js","sourceRoot":"","sources":["../src/step-executor.ts"],"names":[],"mappings":"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"}