@showrun/core 0.1.0 → 0.1.1

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 (42) hide show
  1. package/dist/__tests__/config.test.d.ts +2 -0
  2. package/dist/__tests__/config.test.d.ts.map +1 -0
  3. package/dist/__tests__/config.test.js +164 -0
  4. package/dist/__tests__/httpReplay.test.d.ts +2 -0
  5. package/dist/__tests__/httpReplay.test.d.ts.map +1 -0
  6. package/dist/__tests__/httpReplay.test.js +306 -0
  7. package/dist/__tests__/requestSnapshot.test.d.ts +2 -0
  8. package/dist/__tests__/requestSnapshot.test.d.ts.map +1 -0
  9. package/dist/__tests__/requestSnapshot.test.js +323 -0
  10. package/dist/browserLauncher.d.ts.map +1 -1
  11. package/dist/browserLauncher.js +7 -1
  12. package/dist/config.d.ts +82 -0
  13. package/dist/config.d.ts.map +1 -0
  14. package/dist/config.js +255 -0
  15. package/dist/dsl/interpreter.d.ts +9 -0
  16. package/dist/dsl/interpreter.d.ts.map +1 -1
  17. package/dist/dsl/interpreter.js +9 -3
  18. package/dist/dsl/stepHandlers.d.ts +7 -0
  19. package/dist/dsl/stepHandlers.d.ts.map +1 -1
  20. package/dist/dsl/stepHandlers.js +81 -0
  21. package/dist/dsl/types.d.ts +6 -0
  22. package/dist/dsl/types.d.ts.map +1 -1
  23. package/dist/dsl/validation.d.ts.map +1 -1
  24. package/dist/dsl/validation.js +7 -0
  25. package/dist/httpReplay.d.ts +43 -0
  26. package/dist/httpReplay.d.ts.map +1 -0
  27. package/dist/httpReplay.js +102 -0
  28. package/dist/index.d.ts +3 -0
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +3 -0
  31. package/dist/jsonPackValidator.d.ts.map +1 -1
  32. package/dist/jsonPackValidator.js +12 -3
  33. package/dist/loader.d.ts.map +1 -1
  34. package/dist/loader.js +4 -0
  35. package/dist/requestSnapshot.d.ts +91 -0
  36. package/dist/requestSnapshot.d.ts.map +1 -0
  37. package/dist/requestSnapshot.js +200 -0
  38. package/dist/runner.d.ts.map +1 -1
  39. package/dist/runner.js +189 -10
  40. package/dist/types.d.ts +5 -0
  41. package/dist/types.d.ts.map +1 -1
  42. package/package.json +2 -2
package/dist/config.js ADDED
@@ -0,0 +1,255 @@
1
+ /**
2
+ * System-wide configuration for ShowRun.
3
+ *
4
+ * Layered config discovery:
5
+ * Built-in defaults < global config.json < project config.json < .env < real env vars
6
+ *
7
+ * Config directory search order (lowest → highest priority):
8
+ * Linux/macOS: $XDG_CONFIG_HOME/showrun/ → ~/.showrun/ → ancestor .showrun/ → cwd/.showrun/
9
+ * Windows: %APPDATA%\showrun\ → ancestor .showrun\ → cwd\.showrun\
10
+ */
11
+ import { existsSync, copyFileSync } from 'fs';
12
+ import { resolve, join, parse as parsePath } from 'path';
13
+ import { platform, homedir } from 'os';
14
+ import { cwd } from 'process';
15
+ import { ensureDir, readJsonFile } from './packUtils.js';
16
+ // ── Deep merge helper ──────────────────────────────────────────────────────
17
+ /**
18
+ * Recursively merge `override` into `base`, returning a new object.
19
+ * - Primitives and arrays in override replace base values.
20
+ * - Null/undefined values in override are skipped.
21
+ * - Nested plain objects are merged recursively.
22
+ */
23
+ export function deepMerge(base, override) {
24
+ if (typeof base !== 'object' || base === null ||
25
+ typeof override !== 'object' || override === null ||
26
+ Array.isArray(base) || Array.isArray(override)) {
27
+ return override;
28
+ }
29
+ const result = { ...base };
30
+ const src = override;
31
+ for (const key of Object.keys(src)) {
32
+ const overrideVal = src[key];
33
+ if (overrideVal === null || overrideVal === undefined)
34
+ continue;
35
+ const baseVal = result[key];
36
+ if (typeof baseVal === 'object' && baseVal !== null && !Array.isArray(baseVal) &&
37
+ typeof overrideVal === 'object' && overrideVal !== null && !Array.isArray(overrideVal)) {
38
+ result[key] = deepMerge(baseVal, overrideVal);
39
+ }
40
+ else {
41
+ result[key] = overrideVal;
42
+ }
43
+ }
44
+ return result;
45
+ }
46
+ // ── Directory discovery ────────────────────────────────────────────────────
47
+ /**
48
+ * Walk from `startDir` up toward the filesystem root, collecting every
49
+ * `.showrun/` directory encountered. Returns in bottom-up order (closest
50
+ * ancestor first) which is the *highest* priority order.
51
+ */
52
+ function walkUpForShowrunDirs(startDir) {
53
+ const dirs = [];
54
+ let dir = resolve(startDir);
55
+ const root = parsePath(dir).root;
56
+ // Skip cwd itself — handled separately
57
+ dir = resolve(dir, '..');
58
+ while (dir !== root && dir.length > root.length) {
59
+ const candidate = join(dir, '.showrun');
60
+ if (existsSync(candidate)) {
61
+ dirs.push(candidate);
62
+ }
63
+ dir = resolve(dir, '..');
64
+ }
65
+ // Reverse so that farthest ancestor is first (lowest priority)
66
+ return dirs.reverse();
67
+ }
68
+ /**
69
+ * Returns an ordered list of config directories to search, lowest priority first.
70
+ */
71
+ export function discoverConfigDirs() {
72
+ const dirs = [];
73
+ const os = platform();
74
+ const home = homedir();
75
+ const currentDir = cwd();
76
+ if (os === 'win32') {
77
+ // Windows: %APPDATA%\showrun
78
+ const appData = process.env.APPDATA;
79
+ if (appData) {
80
+ dirs.push(join(appData, 'showrun'));
81
+ }
82
+ }
83
+ else {
84
+ // Linux/macOS: XDG_CONFIG_HOME/showrun (default ~/.config/showrun)
85
+ const xdgConfig = process.env.XDG_CONFIG_HOME || join(home, '.config');
86
+ dirs.push(join(xdgConfig, 'showrun'));
87
+ // ~/.showrun
88
+ dirs.push(join(home, '.showrun'));
89
+ }
90
+ // Ancestor .showrun/ directories (farthest ancestor first = lowest priority)
91
+ dirs.push(...walkUpForShowrunDirs(currentDir));
92
+ // cwd/.showrun (highest priority)
93
+ dirs.push(join(currentDir, '.showrun'));
94
+ return dirs;
95
+ }
96
+ // ── Config loading ─────────────────────────────────────────────────────────
97
+ const DEFAULT_CONFIG = {};
98
+ /**
99
+ * Load all `config.json` files from discovered directories, merge them, and
100
+ * return the result along with metadata about which files were loaded.
101
+ */
102
+ export function loadConfig() {
103
+ const searchedDirs = discoverConfigDirs();
104
+ let merged = { ...DEFAULT_CONFIG };
105
+ const loadedFiles = [];
106
+ for (const dir of searchedDirs) {
107
+ const configPath = join(dir, 'config.json');
108
+ if (existsSync(configPath)) {
109
+ try {
110
+ const fileConfig = readJsonFile(configPath);
111
+ merged = deepMerge(merged, fileConfig);
112
+ loadedFiles.push(configPath);
113
+ }
114
+ catch (err) {
115
+ console.warn(`[Config] Failed to load ${configPath}: ${err instanceof Error ? err.message : String(err)}`);
116
+ }
117
+ }
118
+ }
119
+ return { config: merged, loadedFiles, searchedDirs };
120
+ }
121
+ // ── Env var mapping ────────────────────────────────────────────────────────
122
+ /** Map of config path → env var name */
123
+ const CONFIG_TO_ENV = [
124
+ { path: ['llm', 'provider'], envVar: 'LLM_PROVIDER' },
125
+ { path: ['llm', 'anthropic', 'apiKey'], envVar: 'ANTHROPIC_API_KEY' },
126
+ { path: ['llm', 'anthropic', 'model'], envVar: 'ANTHROPIC_MODEL' },
127
+ { path: ['llm', 'anthropic', 'baseUrl'], envVar: 'ANTHROPIC_BASE_URL' },
128
+ { path: ['llm', 'openai', 'apiKey'], envVar: 'OPENAI_API_KEY' },
129
+ { path: ['llm', 'openai', 'model'], envVar: 'OPENAI_MODEL' },
130
+ { path: ['llm', 'openai', 'baseUrl'], envVar: 'OPENAI_BASE_URL' },
131
+ { path: ['agent', 'maxBrowserRounds'], envVar: 'MAX_BROWSER_ROUNDS' },
132
+ { path: ['agent', 'debug'], envVar: 'SHOWRUN_DEBUG' },
133
+ { path: ['agent', 'transcriptLogging'], envVar: 'SHOWRUN_TRANSCRIPT_LOGGING' },
134
+ { path: ['prompts', 'teachChatSystemPrompt'], envVar: 'TEACH_CHAT_SYSTEM_PROMPT' },
135
+ { path: ['prompts', 'explorationAgentPromptPath'], envVar: 'EXPLORATION_AGENT_PROMPT_PATH' },
136
+ ];
137
+ function getNestedValue(obj, path) {
138
+ let current = obj;
139
+ for (const key of path) {
140
+ if (current === null || current === undefined || typeof current !== 'object')
141
+ return undefined;
142
+ current = current[key];
143
+ }
144
+ return current;
145
+ }
146
+ /**
147
+ * Apply config values to `process.env`, only setting vars that are not already present.
148
+ */
149
+ export function applyConfigToEnv(config) {
150
+ for (const { path, envVar } of CONFIG_TO_ENV) {
151
+ if (process.env[envVar])
152
+ continue; // real env / dotenv takes precedence
153
+ const value = getNestedValue(config, path);
154
+ if (value !== undefined && value !== null) {
155
+ process.env[envVar] = String(value);
156
+ }
157
+ }
158
+ }
159
+ // ── File resolution ────────────────────────────────────────────────────────
160
+ /**
161
+ * Resolve a filename by searching local paths first (cwd, then ancestors),
162
+ * then config directories (highest priority first).
163
+ * Local files always win over config dir copies.
164
+ * Returns the first existing path, or null.
165
+ */
166
+ export function resolveFilePath(filename) {
167
+ // 1. Search cwd first — local files take priority
168
+ const cwdPath = resolve(cwd(), filename);
169
+ if (existsSync(cwdPath))
170
+ return cwdPath;
171
+ // 2. Walk up from cwd looking for the file directly (not inside .showrun)
172
+ let dir = resolve(cwd(), '..');
173
+ const root = parsePath(dir).root;
174
+ while (dir !== root && dir.length > root.length) {
175
+ const candidate = resolve(dir, filename);
176
+ if (existsSync(candidate))
177
+ return candidate;
178
+ dir = resolve(dir, '..');
179
+ }
180
+ // 3. Fall back to config dirs from highest priority (last) to lowest (first)
181
+ const configDirs = discoverConfigDirs();
182
+ for (let i = configDirs.length - 1; i >= 0; i--) {
183
+ const candidate = join(configDirs[i], filename);
184
+ if (existsSync(candidate))
185
+ return candidate;
186
+ }
187
+ return null;
188
+ }
189
+ // ── System prompt helper ───────────────────────────────────────────────────
190
+ /**
191
+ * Get the global config directory path for the current platform.
192
+ */
193
+ export function getGlobalConfigDir() {
194
+ const os = platform();
195
+ if (os === 'win32') {
196
+ const appData = process.env.APPDATA;
197
+ if (appData)
198
+ return join(appData, 'showrun');
199
+ return join(homedir(), 'AppData', 'Roaming', 'showrun');
200
+ }
201
+ const xdgConfig = process.env.XDG_CONFIG_HOME || join(homedir(), '.config');
202
+ return join(xdgConfig, 'showrun');
203
+ }
204
+ /**
205
+ * Ensure a system prompt file exists in a config directory.
206
+ * If the prompt was found outside config dirs (e.g. repo root), copy it
207
+ * into the global config dir so it's available when running from any directory.
208
+ */
209
+ export function ensureSystemPromptInConfigDir(filename, sourcePath) {
210
+ const configDirs = discoverConfigDirs();
211
+ // Check if the file already exists in any config dir
212
+ for (const dir of configDirs) {
213
+ const candidate = join(dir, filename);
214
+ if (existsSync(candidate))
215
+ return candidate;
216
+ }
217
+ // Not in any config dir — copy it to the global config dir
218
+ const globalDir = getGlobalConfigDir();
219
+ const destPath = join(globalDir, filename);
220
+ ensureDir(globalDir);
221
+ copyFileSync(sourcePath, destPath);
222
+ console.log(`[Config] Created config directory at ${globalDir}`);
223
+ console.log(`[Config] Copied ${filename} to ${destPath}`);
224
+ return destPath;
225
+ }
226
+ // ── Main entry point ───────────────────────────────────────────────────────
227
+ /**
228
+ * Load config, merge, and apply to process.env.
229
+ * This is the single call sites should use (e.g. CLI bootstrap).
230
+ */
231
+ export function initConfig() {
232
+ const result = loadConfig();
233
+ applyConfigToEnv(result.config);
234
+ if (result.loadedFiles.length > 0) {
235
+ console.log(`[Config] Loaded: ${result.loadedFiles.join(', ')}`);
236
+ }
237
+ return result;
238
+ }
239
+ // ── Default config template ────────────────────────────────────────────────
240
+ export const DEFAULT_CONFIG_TEMPLATE = {
241
+ llm: {
242
+ provider: 'anthropic',
243
+ anthropic: { apiKey: '', model: '', baseUrl: '' },
244
+ openai: { apiKey: '', model: '', baseUrl: '' },
245
+ },
246
+ agent: {
247
+ maxBrowserRounds: 0,
248
+ debug: false,
249
+ transcriptLogging: false,
250
+ },
251
+ prompts: {
252
+ teachChatSystemPrompt: '',
253
+ explorationAgentPromptPath: '',
254
+ },
255
+ };
@@ -1,5 +1,6 @@
1
1
  import type { RunContext, AuthConfig } from '../types.js';
2
2
  import type { DslStep, RunFlowOptions, RunFlowResult } from './types.js';
3
+ import type { SnapshotFile } from '../requestSnapshot.js';
3
4
  /**
4
5
  * Extended options for running a flow with auth resilience
5
6
  */
@@ -16,6 +17,14 @@ export interface RunFlowOptionsWithAuth extends RunFlowOptions {
16
17
  * Secrets for template resolution ({{secret.NAME}})
17
18
  */
18
19
  secrets?: Record<string, string>;
20
+ /**
21
+ * If true, run in HTTP-only mode (skip browser steps, replay from snapshots)
22
+ */
23
+ httpMode?: boolean;
24
+ /**
25
+ * Request snapshots for HTTP-first execution
26
+ */
27
+ snapshots?: SnapshotFile;
19
28
  }
20
29
  /**
21
30
  * Runs a flow of DSL steps sequentially with auth resilience support
@@ -1 +1 @@
1
- {"version":3,"file":"interpreter.d.ts","sourceRoot":"","sources":["../../src/dsl/interpreter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAa,UAAU,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AA8DzE;;GAEG;AACH,MAAM,WAAW,sBAAuB,SAAQ,cAAc;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAyBD;;GAEG;AACH,wBAAsB,OAAO,CAC3B,GAAG,EAAE,UAAU,EACf,KAAK,EAAE,OAAO,EAAE,EAChB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,aAAa,CAAC,CAybxB"}
1
+ {"version":3,"file":"interpreter.d.ts","sourceRoot":"","sources":["../../src/dsl/interpreter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAa,UAAU,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAgBzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AA+C1D;;GAEG;AACH,MAAM,WAAW,sBAAuB,SAAQ,cAAc;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,SAAS,CAAC,EAAE,YAAY,CAAC;CAC1B;AAyBD;;GAEG;AACH,wBAAsB,OAAO,CAC3B,GAAG,EAAE,UAAU,EACf,KAAK,EAAE,OAAO,EAAE,EAChB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,aAAa,CAAC,CA+bxB"}
@@ -72,6 +72,8 @@ export async function runFlow(ctx, steps, options) {
72
72
  const profileId = options?.profileId;
73
73
  const cacheDir = options?.cacheDir;
74
74
  const secrets = options?.secrets ?? {};
75
+ const httpMode = options?.httpMode ?? false;
76
+ const snapshots = options?.snapshots;
75
77
  // Get secret values for redaction (only values >= 3 chars)
76
78
  const secretValues = Object.values(secrets).filter((v) => v && v.length >= 3);
77
79
  // Validate flow before execution
@@ -98,6 +100,9 @@ export async function runFlow(ctx, steps, options) {
98
100
  inputs,
99
101
  networkCapture: ctx.networkCapture,
100
102
  authMonitor: authMonitor ?? undefined,
103
+ httpMode,
104
+ snapshots: snapshots ?? undefined,
105
+ secrets,
101
106
  };
102
107
  if (authConfig?.authPolicy) {
103
108
  authMonitor = new AuthFailureMonitor(authConfig.authPolicy);
@@ -384,8 +389,8 @@ export async function runFlow(ctx, steps, options) {
384
389
  stepsExecuted++;
385
390
  continue;
386
391
  }
387
- // Capture artifacts on error if available
388
- if (ctx.artifacts) {
392
+ // Capture artifacts on error if available (skip in HTTP mode — no browser)
393
+ if (ctx.artifacts && !httpMode) {
389
394
  try {
390
395
  await ctx.artifacts.saveScreenshot(`error-${step.id}`);
391
396
  const html = await ctx.page.content();
@@ -401,7 +406,7 @@ export async function runFlow(ctx, steps, options) {
401
406
  }
402
407
  }
403
408
  const durationMs = Date.now() - startTime;
404
- const finalUrl = ctx.page.url();
409
+ const finalUrl = httpMode ? undefined : ctx.page.url();
405
410
  // Collect JMESPath hints from vars (stored by step handlers)
406
411
  const jmespathHints = vars['__jmespath_hints'] || [];
407
412
  const singleHint = vars['__jmespath_hint'];
@@ -418,6 +423,7 @@ export async function runFlow(ctx, steps, options) {
418
423
  stepsExecuted,
419
424
  stepsTotal: steps.length,
420
425
  },
426
+ _vars: { ...vars },
421
427
  };
422
428
  // Only include _hints if there are any
423
429
  if (uniqueHints.length > 0) {
@@ -2,6 +2,7 @@ import type { Page, BrowserContext, Frame } from 'playwright';
2
2
  import type { DslStep } from './types.js';
3
3
  import type { NetworkCaptureApi } from '../networkCapture.js';
4
4
  import type { AuthFailureMonitor } from '../authResilience.js';
5
+ import type { SnapshotFile } from '../requestSnapshot.js';
5
6
  /**
6
7
  * Step execution context
7
8
  */
@@ -24,6 +25,12 @@ export interface StepContext {
24
25
  previousTabIndex?: number;
25
26
  /** Task pack directory path (for resolving relative file paths) */
26
27
  packDir?: string;
28
+ /** If true, running in HTTP-only mode (no browser) */
29
+ httpMode?: boolean;
30
+ /** Request snapshots for HTTP-first execution */
31
+ snapshots?: SnapshotFile;
32
+ /** Secrets for template resolution in HTTP mode */
33
+ secrets?: Record<string, string>;
27
34
  }
28
35
  /**
29
36
  * Executes a single DSL step
@@ -1 +1 @@
1
- {"version":3,"file":"stepHandlers.d.ts","sourceRoot":"","sources":["../../src/dsl/stepHandlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,KAAK,EACV,OAAO,EAqBR,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,iBAAiB,EAA4C,MAAM,sBAAsB,CAAC;AAGxG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG/D;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,IAAI,CAAC;IACX,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,mDAAmD;IACnD,cAAc,CAAC,EAAE,iBAAiB,CAAC;IACnC,kFAAkF;IAClF,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,gDAAgD;IAChD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,oDAAoD;IACpD,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,0DAA0D;IAC1D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAw5BD;;GAEG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,IAAI,CAAC,CAgEf"}
1
+ {"version":3,"file":"stepHandlers.d.ts","sourceRoot":"","sources":["../../src/dsl/stepHandlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,KAAK,EACV,OAAO,EAqBR,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,iBAAiB,EAA4C,MAAM,sBAAsB,CAAC;AAGxG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAI1D;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,IAAI,CAAC;IACX,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,mDAAmD;IACnD,cAAc,CAAC,EAAE,iBAAiB,CAAC;IACnC,kFAAkF;IAClF,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,gDAAgD;IAChD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,oDAAoD;IACpD,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,0DAA0D;IAC1D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iDAAiD;IACjD,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAm+BD;;GAEG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,IAAI,CAAC,CA4Ef"}
@@ -1,6 +1,8 @@
1
1
  import { resolveTemplate } from './templating.js';
2
2
  import { resolveTargetWithFallback, selectorToTarget } from './target.js';
3
3
  import { search as jmesSearch } from '@jmespath-community/jmespath';
4
+ import { replayFromSnapshot } from '../httpReplay.js';
5
+ import { validateResponse } from '../requestSnapshot.js';
4
6
  /**
5
7
  * Executes a navigate step
6
8
  */
@@ -717,10 +719,89 @@ async function executeSwitchTab(ctx, step) {
717
719
  ctx.vars['__newPage'] = targetPage;
718
720
  await targetPage.bringToFront();
719
721
  }
722
+ /** Step types that are skipped silently in HTTP mode (setup/trigger steps). */
723
+ const HTTP_MODE_SKIP_STEPS = new Set([
724
+ 'navigate', 'click', 'fill', 'select_option', 'press_key',
725
+ 'upload_file', 'wait_for', 'assert', 'frame', 'new_tab',
726
+ 'switch_tab', 'network_find',
727
+ ]);
728
+ /**
729
+ * Execute a network_replay step in HTTP-only mode using snapshot data.
730
+ */
731
+ async function executeNetworkReplayHttp(ctx, step) {
732
+ if (!ctx.snapshots) {
733
+ throw new Error('network_replay in HTTP mode requires snapshots');
734
+ }
735
+ const snapshot = ctx.snapshots.snapshots[step.id];
736
+ if (!snapshot) {
737
+ throw new Error(`No snapshot found for step "${step.id}"`);
738
+ }
739
+ const result = await replayFromSnapshot(snapshot, ctx.inputs, ctx.vars, {
740
+ secrets: ctx.secrets,
741
+ });
742
+ // Validate the response — throw to trigger browser fallback if stale
743
+ const validation = validateResponse(snapshot, result);
744
+ if (!validation.valid) {
745
+ throw new Error(`Snapshot stale for step "${step.id}": ${validation.reason}`);
746
+ }
747
+ if (step.params.saveAs) {
748
+ ctx.vars[step.params.saveAs] = {
749
+ status: result.status,
750
+ contentType: result.contentType,
751
+ body: result.body,
752
+ bodySize: result.bodySize,
753
+ };
754
+ }
755
+ // Use 'path' with fallback to deprecated 'jsonPath'
756
+ const pathExpr = step.params.response.path || step.params.response.jsonPath;
757
+ let outValue;
758
+ if (step.params.response.as === 'json') {
759
+ try {
760
+ outValue = JSON.parse(result.body);
761
+ }
762
+ catch {
763
+ throw new Error(`network_replay (HTTP mode): response body is not valid JSON (status ${result.status})`);
764
+ }
765
+ if (pathExpr) {
766
+ const pathResult = getByPath(outValue, pathExpr);
767
+ outValue = pathResult.value;
768
+ if (pathResult.hint) {
769
+ ctx.vars['__jmespath_hint'] = pathResult.hint;
770
+ }
771
+ }
772
+ }
773
+ else {
774
+ if (pathExpr) {
775
+ const pathResult = getByPath(JSON.parse(result.body), pathExpr);
776
+ outValue = pathResult.value;
777
+ if (pathResult.hint) {
778
+ ctx.vars['__jmespath_hint'] = pathResult.hint;
779
+ }
780
+ }
781
+ else {
782
+ outValue = result.body;
783
+ }
784
+ if (typeof outValue === 'object' && outValue !== null) {
785
+ outValue = JSON.stringify(outValue);
786
+ }
787
+ }
788
+ ctx.collectibles[step.params.out] = outValue;
789
+ }
720
790
  /**
721
791
  * Executes a single DSL step
722
792
  */
723
793
  export async function executeStep(ctx, step) {
794
+ // In HTTP mode, skip DOM/setup steps and use snapshot replay for network_replay
795
+ if (ctx.httpMode) {
796
+ if (HTTP_MODE_SKIP_STEPS.has(step.type)) {
797
+ return; // silently skip
798
+ }
799
+ if (step.type === 'network_replay') {
800
+ await executeNetworkReplayHttp(ctx, step);
801
+ return;
802
+ }
803
+ // network_extract, set_var, sleep execute normally below
804
+ }
724
805
  switch (step.type) {
725
806
  case 'navigate':
726
807
  await executeNavigate(ctx, step);
@@ -691,5 +691,11 @@ export interface RunFlowResult {
691
691
  * These help AI agents understand why data extraction may have failed.
692
692
  */
693
693
  _hints?: string[];
694
+ /**
695
+ * Internal: resolved vars after flow execution. Used by snapshot capture
696
+ * to look up network entries by their runtime-resolved request IDs.
697
+ * Not part of the public API.
698
+ */
699
+ _vars?: Record<string, unknown>;
694
700
  }
695
701
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/dsl/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,UAAU,CAAC;AAEpD;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB,QAAQ,GACR,UAAU,GACV,UAAU,GACV,QAAQ,GACR,UAAU,GACV,MAAM,GACN,SAAS,GACT,UAAU,GACV,QAAQ,GACR,OAAO,GACP,WAAW,GACX,QAAQ,GACR,QAAQ,GACR,KAAK,GACL,UAAU,GACV,SAAS,GACT,UAAU,GACV,SAAS,GACT,QAAQ,GACR,eAAe,GACf,aAAa,GACb,MAAM,GACN,MAAM,GACN,YAAY,GACZ,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,KAAK,GACL,SAAS,GACT,QAAQ,GACR,OAAO,CAAC;AAEZ;;;GAGG;AACH,MAAM,MAAM,MAAM,GACd;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,cAAc,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GACtE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAClD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnC;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,MAAM,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IACrC;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CACxD;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAEzD;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,GACxB;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,GACvB;IAAE,eAAe,EAAE,aAAa,CAAA;CAAE,GAClC;IAAE,cAAc,EAAE,aAAa,CAAA;CAAE,GACjC;IAAE,UAAU,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAA;CAAE,GAChD;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,GACtB;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GACrB;IAAE,GAAG,EAAE,aAAa,EAAE,CAAA;CAAE,GACxB;IAAE,GAAG,EAAE,aAAa,EAAE,CAAA;CAAE,CAAC;AAE7B;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B;;;;OAIG;IACH,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC7B;;;;OAIG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,WAAW;IAC/C,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE;QACN,GAAG,EAAE,MAAM,CAAC;QACZ,SAAS,CAAC,EAAE,MAAM,GAAG,kBAAkB,GAAG,aAAa,GAAG,QAAQ,CAAC;KACpE,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACnD,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE;QACN,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,WAAW;IAClD,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE;QACN;;;WAGG;QACH,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB;;WAEG;QACH,MAAM,CAAC,EAAE,aAAa,CAAC;QACvB,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB;;WAEG;QACH,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC;KACxD,CAAC;CACH;AAED;;;GAGG;AACH,MAAM,WAAW,SAAU,SAAQ,WAAW;IAC5C,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE;QACN,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,WAAY,SAAQ,WAAW;IAC9C,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE;QACN;;;WAGG;QACH,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB;;WAEG;QACH,MAAM,CAAC,EAAE,aAAa,CAAC;QACvB;;WAEG;QACH,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB;;WAEG;QACH,GAAG,CAAC,EAAE,MAAM,GAAG;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC;QACpD;;WAEG;QACH,SAAS,CAAC,EAAE,MAAM,GAAG,kBAAkB,GAAG,aAAa,CAAC;QACxD;;WAEG;QACH,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB;;WAEG;QACH,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC;KACxD,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,SAAU,SAAQ,WAAW;IAC5C,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE;QACN;;;WAGG;QACH,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB;;WAEG;QACH,MAAM,CAAC,EAAE,aAAa,CAAC;QACvB;;WAEG;QACH,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB;;WAEG;QACH,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB;;WAEG;QACH,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC;KACxD,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,QAAS,SAAQ,WAAW;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE;QACN;;;WAGG;QACH,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB;;WAEG;QACH,MAAM,CAAC,EAAE,aAAa,CAAC;QACvB,KAAK,EAAE,MAAM,CAAC;QACd;;WAEG;QACH,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB;;WAEG;QACH,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB;;WAEG;QACH,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC;KACxD,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,WAAW;IACvD,IAAI,EAAE,mBAAmB,CAAC;IAC1B,MAAM,EAAE;QACN;;;WAGG;QACH,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB;;WAEG;QACH,MAAM,CAAC,EAAE,aAAa,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;QAClB,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB;;WAEG;QACH,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC;KACxD,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,UAAW,SAAQ,WAAW;IAC7C,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE;QACN;;;WAGG;QACH,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB;;WAEG;QACH,MAAM,CAAC,EAAE,aAAa,CAAC;QACvB;;WAEG;QACH,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB;;WAEG;QACH,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB;;WAEG;QACH,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB;;WAEG;QACH,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB;;WAEG;QACH,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC;KACxD,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,UAAW,SAAQ,WAAW;IAC7C,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;KAClC,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,WAAW;IAClD,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE;QACN,KAAK,EAAE;YACL,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;YACrD,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,mBAAmB,CAAC,EAAE,MAAM,CAAC;YAC7B,8GAA8G;YAC9G,gBAAgB,CAAC,EAAE,MAAM,CAAC;SAC3B,CAAC;QACF,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QACxB,MAAM,EAAE,MAAM,CAAC;QACf,uLAAuL;QACvL,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,8EAA8E;QAC9E,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACpD,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE;YACV,GAAG,CAAC,EAAE,MAAM,CAAC;YACb,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;YAC3C,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACpC,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,kIAAkI;YAClI,UAAU,CAAC,EAAE;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,OAAO,EAAE,MAAM,CAAA;aAAE,CAAC;YAC/C,mIAAmI;YACnI,WAAW,CAAC,EAAE;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,OAAO,EAAE,MAAM,CAAA;aAAE,CAAC;SACjD,CAAC;QACF,IAAI,EAAE,iBAAiB,CAAC;QACxB,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE;YACR,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;YACpB;;;;eAIG;YACH,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,uEAAuE;YACvE,QAAQ,CAAC,EAAE,MAAM,CAAC;SACnB,CAAC;KACH,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD,IAAI,EAAE,iBAAiB,CAAC;IACxB,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;QACpB;;;;WAIG;QACH,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,uEAAuE;QACvE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACnD,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE;QACN;;;WAGG;QACH,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB;;WAEG;QACH,MAAM,CAAC,EAAE,aAAa,CAAC;QACvB;;;;;;WAMG;QACH,KAAK,EAAE,MAAM,GAAG;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,GAAG;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,GAAG,KAAK,CAAC,MAAM,GAAG;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,GAAG;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC9G;;WAEG;QACH,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB;;WAEG;QACH,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC;KACxD,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,WAAW;IAC/C,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE;QACN;;;WAGG;QACH,GAAG,EAAE,MAAM,CAAC;QACZ;;;WAGG;QACH,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB;;WAEG;QACH,MAAM,CAAC,EAAE,aAAa,CAAC;QACvB;;WAEG;QACH,KAAK,CAAC,EAAE,MAAM,CAAC;QACf;;WAEG;QACH,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB;;WAEG;QACH,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC;KACxD,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,EAAE;QACN;;;WAGG;QACH,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB;;WAEG;QACH,MAAM,CAAC,EAAE,aAAa,CAAC;QACvB;;;WAGG;QACH,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QACzB;;WAEG;QACH,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB;;WAEG;QACH,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC;KACxD,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,SAAU,SAAQ,WAAW;IAC5C,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE;QACN;;WAEG;QACH,KAAK,EAAE,MAAM,GAAG;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,GAAG;YAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;SAAE,CAAC;QAC5D;;WAEG;QACH,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC;KAC1B,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,UAAW,SAAQ,WAAW;IAC7C,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE;QACN;;WAEG;QACH,GAAG,CAAC,EAAE,MAAM,CAAC;QACb;;WAEG;QACH,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,WAAW;IAChD,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,EAAE;QACN;;WAEG;QACH,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;QAClC;;WAEG;QACH,eAAe,CAAC,EAAE,OAAO,CAAC;KAC3B,CAAC;CACH;AAED;;GAEG;AACH,MAAM,MAAM,OAAO,GACf,YAAY,GACZ,gBAAgB,GAChB,eAAe,GACf,oBAAoB,GACpB,SAAS,GACT,WAAW,GACX,SAAS,GACT,QAAQ,GACR,UAAU,GACV,UAAU,GACV,eAAe,GACf,iBAAiB,GACjB,kBAAkB,GAClB,gBAAgB,GAChB,YAAY,GACZ,cAAc,GACd,SAAS,GACT,UAAU,GACV,aAAa,CAAC;AAElB;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,IAAI,EAAE;QACJ,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/dsl/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/dsl/validation.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAI5B;AA+7BD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAkC/E"}
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/dsl/validation.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAI5B;AAs8BD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAkC/E"}
@@ -596,6 +596,13 @@ function validateStep(step, stepIndex, errors) {
596
596
  }
597
597
  else {
598
598
  const where = params.where;
599
+ // Check for unknown where fields
600
+ const validWhereFields = new Set(['urlIncludes', 'urlRegex', 'method', 'status', 'contentTypeIncludes', 'responseContains']);
601
+ for (const key of Object.keys(where)) {
602
+ if (!validWhereFields.has(key)) {
603
+ errors.push(`${prefix}: NetworkFind step "where.${key}" is not a valid field (unknown fields are silently ignored). Valid fields: ${[...validWhereFields].join(', ')}`);
604
+ }
605
+ }
599
606
  if (where.urlIncludes !== undefined && typeof where.urlIncludes !== 'string') {
600
607
  errors.push(`${prefix}: NetworkFind step "where.urlIncludes" must be a string`);
601
608
  }
@@ -0,0 +1,43 @@
1
+ /**
2
+ * HTTP-only execution engine for request snapshots.
3
+ *
4
+ * When every `network_replay` step in a flow has a valid snapshot and no
5
+ * DOM extraction steps exist, the flow can be executed purely via HTTP
6
+ * requests — no browser needed.
7
+ */
8
+ import type { DslStep } from './dsl/types.js';
9
+ import { type RequestSnapshot, type SnapshotFile, type ValidationResult } from './requestSnapshot.js';
10
+ export interface HttpReplayResult {
11
+ status: number;
12
+ contentType?: string;
13
+ body: string;
14
+ bodySize: number;
15
+ }
16
+ /**
17
+ * Check whether a flow can run in HTTP-only mode.
18
+ *
19
+ * Requirements:
20
+ * 1. Every `network_replay` step has a corresponding, non-stale snapshot.
21
+ * 2. No DOM extraction steps exist in the flow.
22
+ */
23
+ export declare function isFlowHttpCompatible(steps: DslStep[], snapshots: SnapshotFile | null): boolean;
24
+ /**
25
+ * Make a direct HTTP request using snapshot data + applied overrides.
26
+ * Uses Node's native `fetch()` with an AbortController timeout.
27
+ */
28
+ export declare function replayFromSnapshot(snapshot: RequestSnapshot, inputs: Record<string, unknown>, vars: Record<string, unknown>, options?: {
29
+ secrets?: Record<string, string>;
30
+ timeoutMs?: number;
31
+ }): Promise<HttpReplayResult>;
32
+ /**
33
+ * Replay a snapshot and validate the response.
34
+ * Returns the result along with validation info.
35
+ */
36
+ export declare function replayAndValidate(snapshot: RequestSnapshot, inputs: Record<string, unknown>, vars: Record<string, unknown>, options?: {
37
+ secrets?: Record<string, string>;
38
+ timeoutMs?: number;
39
+ }): Promise<{
40
+ result: HttpReplayResult;
41
+ validation: ValidationResult;
42
+ }>;
43
+ //# sourceMappingURL=httpReplay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"httpReplay.d.ts","sourceRoot":"","sources":["../src/httpReplay.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,YAAY,EAIjB,KAAK,gBAAgB,EACtB,MAAM,sBAAsB,CAAC;AAa9B,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AASD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,OAAO,EAAE,EAChB,SAAS,EAAE,YAAY,GAAG,IAAI,GAC7B,OAAO,CAqBT;AAMD;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,eAAe,EACzB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GACjE,OAAO,CAAC,gBAAgB,CAAC,CA0C3B;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,eAAe,EACzB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GACjE,OAAO,CAAC;IAAE,MAAM,EAAE,gBAAgB,CAAC;IAAC,UAAU,EAAE,gBAAgB,CAAA;CAAE,CAAC,CAIrE"}