@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.
- package/dist/__tests__/config.test.d.ts +2 -0
- package/dist/__tests__/config.test.d.ts.map +1 -0
- package/dist/__tests__/config.test.js +164 -0
- package/dist/__tests__/httpReplay.test.d.ts +2 -0
- package/dist/__tests__/httpReplay.test.d.ts.map +1 -0
- package/dist/__tests__/httpReplay.test.js +306 -0
- package/dist/__tests__/requestSnapshot.test.d.ts +2 -0
- package/dist/__tests__/requestSnapshot.test.d.ts.map +1 -0
- package/dist/__tests__/requestSnapshot.test.js +323 -0
- package/dist/browserLauncher.d.ts.map +1 -1
- package/dist/browserLauncher.js +7 -1
- package/dist/config.d.ts +82 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +255 -0
- package/dist/dsl/interpreter.d.ts +9 -0
- package/dist/dsl/interpreter.d.ts.map +1 -1
- package/dist/dsl/interpreter.js +9 -3
- package/dist/dsl/stepHandlers.d.ts +7 -0
- package/dist/dsl/stepHandlers.d.ts.map +1 -1
- package/dist/dsl/stepHandlers.js +81 -0
- package/dist/dsl/types.d.ts +6 -0
- package/dist/dsl/types.d.ts.map +1 -1
- package/dist/dsl/validation.d.ts.map +1 -1
- package/dist/dsl/validation.js +7 -0
- package/dist/httpReplay.d.ts +43 -0
- package/dist/httpReplay.d.ts.map +1 -0
- package/dist/httpReplay.js +102 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/jsonPackValidator.d.ts.map +1 -1
- package/dist/jsonPackValidator.js +12 -3
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +4 -0
- package/dist/requestSnapshot.d.ts +91 -0
- package/dist/requestSnapshot.d.ts.map +1 -0
- package/dist/requestSnapshot.js +200 -0
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +189 -10
- package/dist/types.d.ts +5 -0
- package/dist/types.d.ts.map +1 -1
- 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;
|
|
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"}
|
package/dist/dsl/interpreter.js
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/dsl/stepHandlers.js
CHANGED
|
@@ -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);
|
package/dist/dsl/types.d.ts
CHANGED
|
@@ -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
|
package/dist/dsl/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/dsl/types.ts"],"names":[],"mappings":"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"}
|
|
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;
|
|
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"}
|
package/dist/dsl/validation.js
CHANGED
|
@@ -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"}
|