@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/runner.js
CHANGED
|
@@ -2,6 +2,8 @@ import { mkdirSync, writeFileSync } from 'fs';
|
|
|
2
2
|
import { join } from 'path';
|
|
3
3
|
import { InputValidator, RunContextFactory, runFlow, attachNetworkCapture, TaskPackLoader } from './index.js';
|
|
4
4
|
import { launchBrowser } from './browserLauncher.js';
|
|
5
|
+
import { isFlowHttpCompatible } from './httpReplay.js';
|
|
6
|
+
import { writeSnapshots, extractTopLevelKeys, detectSensitiveHeaders, } from './requestSnapshot.js';
|
|
5
7
|
/**
|
|
6
8
|
* Runs a task pack with Playwright
|
|
7
9
|
* This is a reusable function that can be used by both CLI and MCP server
|
|
@@ -10,8 +12,6 @@ export async function runTaskPack(taskPack, inputs, options) {
|
|
|
10
12
|
const { runDir, logger, headless: requestedHeadless = true, packPath, secrets: providedSecrets } = options;
|
|
11
13
|
const artifactsDir = join(runDir, 'artifacts');
|
|
12
14
|
const eventsPath = join(runDir, 'events.jsonl');
|
|
13
|
-
// Load secrets from pack directory if not provided and packPath is given
|
|
14
|
-
const secrets = providedSecrets ?? (packPath ? TaskPackLoader.loadSecrets(packPath) : {});
|
|
15
15
|
// Ensure directories exist
|
|
16
16
|
mkdirSync(runDir, { recursive: true });
|
|
17
17
|
mkdirSync(artifactsDir, { recursive: true });
|
|
@@ -24,14 +24,14 @@ export async function runTaskPack(taskPack, inputs, options) {
|
|
|
24
24
|
'Falling back to headless mode. Set DISPLAY or use xvfb-run to enable headful mode.');
|
|
25
25
|
}
|
|
26
26
|
const startTime = Date.now();
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
27
|
+
// Apply defaults and validate inputs early (needed for both HTTP and browser modes)
|
|
28
|
+
const inputsWithDefaults = InputValidator.applyDefaults(inputs, taskPack.inputs);
|
|
29
|
+
InputValidator.validate(inputsWithDefaults, taskPack.inputs);
|
|
30
|
+
// Load secrets early (needed for both modes)
|
|
31
|
+
const secrets = providedSecrets ?? (packPath ? TaskPackLoader.loadSecrets(packPath) : {});
|
|
32
|
+
// ─── HTTP-first execution ───────────────────────────────────────────
|
|
33
|
+
const snapshots = taskPack.snapshots ?? null;
|
|
34
|
+
if (isFlowHttpCompatible(taskPack.flow, snapshots)) {
|
|
35
35
|
logger.log({
|
|
36
36
|
type: 'run_started',
|
|
37
37
|
data: {
|
|
@@ -40,6 +40,34 @@ export async function runTaskPack(taskPack, inputs, options) {
|
|
|
40
40
|
inputs: inputsWithDefaults,
|
|
41
41
|
},
|
|
42
42
|
});
|
|
43
|
+
try {
|
|
44
|
+
const httpResult = await runHttpOnly(taskPack, inputsWithDefaults, snapshots, secrets, logger, options);
|
|
45
|
+
const durationMs = Date.now() - startTime;
|
|
46
|
+
logger.log({ type: 'run_finished', data: { success: true, durationMs } });
|
|
47
|
+
return { ...httpResult, runDir, eventsPath, artifactsDir };
|
|
48
|
+
}
|
|
49
|
+
catch (httpError) {
|
|
50
|
+
// HTTP-only execution failed — fall through to browser mode
|
|
51
|
+
const reason = httpError instanceof Error ? httpError.message : String(httpError);
|
|
52
|
+
console.log(`[runner] HTTP-only mode failed (${reason}), falling back to browser mode`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
// ─── Browser execution (fallback or primary) ───────────────────────
|
|
56
|
+
let browserSession = null;
|
|
57
|
+
let page = null;
|
|
58
|
+
let runContext = null;
|
|
59
|
+
try {
|
|
60
|
+
// Log run start (only if not already logged above)
|
|
61
|
+
if (!isFlowHttpCompatible(taskPack.flow, snapshots)) {
|
|
62
|
+
logger.log({
|
|
63
|
+
type: 'run_started',
|
|
64
|
+
data: {
|
|
65
|
+
packId: taskPack.metadata.id,
|
|
66
|
+
packVersion: taskPack.metadata.version,
|
|
67
|
+
inputs: inputsWithDefaults,
|
|
68
|
+
},
|
|
69
|
+
});
|
|
70
|
+
}
|
|
43
71
|
// Launch browser with unified launcher
|
|
44
72
|
browserSession = await launchBrowser({
|
|
45
73
|
browserSettings: taskPack.browser,
|
|
@@ -93,6 +121,15 @@ export async function runTaskPack(taskPack, inputs, options) {
|
|
|
93
121
|
if (flowResult._hints && flowResult._hints.length > 0) {
|
|
94
122
|
result._hints = flowResult._hints;
|
|
95
123
|
}
|
|
124
|
+
// Capture snapshots for network_replay steps after successful browser run
|
|
125
|
+
if (packPath && networkCapture) {
|
|
126
|
+
try {
|
|
127
|
+
captureSnapshots(taskPack, flowResult, networkCapture, packPath);
|
|
128
|
+
}
|
|
129
|
+
catch (snapErr) {
|
|
130
|
+
console.warn(`[runner] Failed to capture snapshots: ${snapErr instanceof Error ? snapErr.message : String(snapErr)}`);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
96
133
|
const durationMs = Date.now() - startTime;
|
|
97
134
|
// Log run finish
|
|
98
135
|
logger.log({
|
|
@@ -168,3 +205,145 @@ export async function runTaskPack(taskPack, inputs, options) {
|
|
|
168
205
|
}
|
|
169
206
|
}
|
|
170
207
|
}
|
|
208
|
+
// ---------------------------------------------------------------------------
|
|
209
|
+
// HTTP-only execution helper
|
|
210
|
+
// ---------------------------------------------------------------------------
|
|
211
|
+
/**
|
|
212
|
+
* Run a flow in HTTP-only mode using request snapshots.
|
|
213
|
+
* No browser is launched; network_replay steps use Node fetch().
|
|
214
|
+
* Throws if any snapshot response fails validation (caller should fall back to browser mode).
|
|
215
|
+
*/
|
|
216
|
+
async function runHttpOnly(taskPack, inputs, snapshots, secrets, logger, options) {
|
|
217
|
+
console.log(`[runner] Running in HTTP-only mode (${Object.keys(snapshots.snapshots).length} snapshots)`);
|
|
218
|
+
// Build a minimal RunContext that doesn't require a browser.
|
|
219
|
+
// In HTTP mode the interpreter skips all DOM steps, so page/browser are never accessed.
|
|
220
|
+
const noopPage = null;
|
|
221
|
+
const noopBrowser = null;
|
|
222
|
+
const noopArtifacts = {
|
|
223
|
+
saveScreenshot: async () => '',
|
|
224
|
+
saveHTML: async () => '',
|
|
225
|
+
};
|
|
226
|
+
const runContext = {
|
|
227
|
+
page: noopPage,
|
|
228
|
+
browser: noopBrowser,
|
|
229
|
+
logger,
|
|
230
|
+
artifacts: noopArtifacts,
|
|
231
|
+
};
|
|
232
|
+
const flowResult = await runFlow(runContext, taskPack.flow, {
|
|
233
|
+
inputs,
|
|
234
|
+
auth: taskPack.auth,
|
|
235
|
+
sessionId: options.sessionId,
|
|
236
|
+
profileId: options.profileId,
|
|
237
|
+
cacheDir: options.cacheDir,
|
|
238
|
+
secrets,
|
|
239
|
+
httpMode: true,
|
|
240
|
+
snapshots,
|
|
241
|
+
});
|
|
242
|
+
// Validate responses: re-check each network_replay step's snapshot validation.
|
|
243
|
+
// The actual validation happens inside the step handler via replayFromSnapshot +
|
|
244
|
+
// validateResponse. If validation fails, the step throws and runFlow propagates
|
|
245
|
+
// the error, which the caller catches and falls back to browser mode.
|
|
246
|
+
// Filter collectibles to only include those defined in the pack
|
|
247
|
+
const definedCollectibleNames = new Set((taskPack.collectibles || []).map((c) => c.name));
|
|
248
|
+
const filteredCollectibles = {};
|
|
249
|
+
for (const [key, value] of Object.entries(flowResult.collectibles)) {
|
|
250
|
+
if (definedCollectibleNames.has(key)) {
|
|
251
|
+
filteredCollectibles[key] = value;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
const result = {
|
|
255
|
+
collectibles: filteredCollectibles,
|
|
256
|
+
meta: {
|
|
257
|
+
durationMs: flowResult.meta.durationMs,
|
|
258
|
+
notes: `HTTP-only: ${flowResult.meta.stepsExecuted}/${flowResult.meta.stepsTotal} steps`,
|
|
259
|
+
},
|
|
260
|
+
};
|
|
261
|
+
if (flowResult._hints && flowResult._hints.length > 0) {
|
|
262
|
+
result._hints = flowResult._hints;
|
|
263
|
+
}
|
|
264
|
+
return result;
|
|
265
|
+
}
|
|
266
|
+
// ---------------------------------------------------------------------------
|
|
267
|
+
// Snapshot capture helper
|
|
268
|
+
// ---------------------------------------------------------------------------
|
|
269
|
+
/**
|
|
270
|
+
* After a successful browser run, capture snapshots for all network_replay steps.
|
|
271
|
+
* Uses the resolved vars from the flow result to look up request IDs,
|
|
272
|
+
* then exports full entry data from the network capture buffer.
|
|
273
|
+
* Writes snapshots.json to the pack directory.
|
|
274
|
+
*/
|
|
275
|
+
function captureSnapshots(taskPack, flowResult, networkCapture, packPath) {
|
|
276
|
+
const replaySteps = taskPack.flow.filter((s) => s.type === 'network_replay');
|
|
277
|
+
if (replaySteps.length === 0)
|
|
278
|
+
return;
|
|
279
|
+
const vars = flowResult._vars ?? {};
|
|
280
|
+
const newSnapshots = {};
|
|
281
|
+
for (const step of replaySteps) {
|
|
282
|
+
if (step.type !== 'network_replay')
|
|
283
|
+
continue;
|
|
284
|
+
// Resolve the requestId template (e.g. "{{vars.reqId}}" → actual ID)
|
|
285
|
+
const rawRequestId = step.params.requestId;
|
|
286
|
+
let requestId;
|
|
287
|
+
// Check if it's a template reference
|
|
288
|
+
const varMatch = rawRequestId.match(/\{\{vars\.([^}]+)\}\}/);
|
|
289
|
+
if (varMatch) {
|
|
290
|
+
const varName = varMatch[1];
|
|
291
|
+
requestId = typeof vars[varName] === 'string' ? vars[varName] : undefined;
|
|
292
|
+
}
|
|
293
|
+
else {
|
|
294
|
+
// Literal request ID
|
|
295
|
+
requestId = rawRequestId;
|
|
296
|
+
}
|
|
297
|
+
if (!requestId)
|
|
298
|
+
continue;
|
|
299
|
+
// Export the full entry from the network capture buffer
|
|
300
|
+
const fullEntry = networkCapture.exportEntry(requestId);
|
|
301
|
+
if (!fullEntry || fullEntry.status === undefined)
|
|
302
|
+
continue;
|
|
303
|
+
// Build the snapshot
|
|
304
|
+
const snapshot = {
|
|
305
|
+
stepId: step.id,
|
|
306
|
+
capturedAt: Date.now(),
|
|
307
|
+
ttl: null, // indefinite by default
|
|
308
|
+
request: {
|
|
309
|
+
method: fullEntry.method,
|
|
310
|
+
url: fullEntry.url,
|
|
311
|
+
headers: fullEntry.requestHeadersFull,
|
|
312
|
+
body: fullEntry.postData ?? null,
|
|
313
|
+
},
|
|
314
|
+
overrides: step.params.overrides
|
|
315
|
+
? {
|
|
316
|
+
url: step.params.overrides.url,
|
|
317
|
+
body: step.params.overrides.body,
|
|
318
|
+
setQuery: step.params.overrides.setQuery
|
|
319
|
+
? Object.fromEntries(Object.entries(step.params.overrides.setQuery).map(([k, v]) => [k, String(v)]))
|
|
320
|
+
: undefined,
|
|
321
|
+
setHeaders: step.params.overrides.setHeaders,
|
|
322
|
+
urlReplace: step.params.overrides.urlReplace
|
|
323
|
+
? [step.params.overrides.urlReplace]
|
|
324
|
+
: undefined,
|
|
325
|
+
bodyReplace: step.params.overrides.bodyReplace
|
|
326
|
+
? [step.params.overrides.bodyReplace]
|
|
327
|
+
: undefined,
|
|
328
|
+
}
|
|
329
|
+
: undefined,
|
|
330
|
+
responseValidation: {
|
|
331
|
+
expectedStatus: fullEntry.status ?? 200,
|
|
332
|
+
expectedContentType: fullEntry.contentType ?? 'application/json',
|
|
333
|
+
expectedKeys: extractTopLevelKeys(fullEntry.responseBodyText),
|
|
334
|
+
},
|
|
335
|
+
sensitiveHeaders: detectSensitiveHeaders(fullEntry.requestHeadersFull),
|
|
336
|
+
};
|
|
337
|
+
newSnapshots[step.id] = snapshot;
|
|
338
|
+
}
|
|
339
|
+
if (Object.keys(newSnapshots).length > 0) {
|
|
340
|
+
// Merge with existing snapshots (update existing, add new)
|
|
341
|
+
const existing = taskPack.snapshots ?? { version: 1, snapshots: {} };
|
|
342
|
+
const merged = {
|
|
343
|
+
version: 1,
|
|
344
|
+
snapshots: { ...existing.snapshots, ...newSnapshots },
|
|
345
|
+
};
|
|
346
|
+
writeSnapshots(packPath, merged);
|
|
347
|
+
console.log(`[runner] Captured ${Object.keys(newSnapshots).length} snapshot(s) → snapshots.json`);
|
|
348
|
+
}
|
|
349
|
+
}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Browser, Page } from 'playwright';
|
|
2
2
|
import type { DslStep } from './dsl/types.js';
|
|
3
3
|
import type { NetworkCaptureApi } from './networkCapture.js';
|
|
4
|
+
import type { SnapshotFile } from './requestSnapshot.js';
|
|
4
5
|
/**
|
|
5
6
|
* Primitive types supported in input/collectible schemas
|
|
6
7
|
*/
|
|
@@ -312,6 +313,10 @@ export interface TaskPack {
|
|
|
312
313
|
* Browser configuration
|
|
313
314
|
*/
|
|
314
315
|
browser?: BrowserSettings;
|
|
316
|
+
/**
|
|
317
|
+
* Request snapshots for HTTP-first execution (loaded from snapshots.json)
|
|
318
|
+
*/
|
|
319
|
+
snapshots?: SnapshotFile;
|
|
315
320
|
}
|
|
316
321
|
/**
|
|
317
322
|
* A saved version snapshot of a flow
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@showrun/core",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "Core types and utilities for Task Pack framework",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"vitest": "^3.0.0"
|
|
29
29
|
},
|
|
30
30
|
"license": "MIT",
|
|
31
|
-
"author": "ShowRun",
|
|
31
|
+
"author": "ShowRun <developers@showrun.co>",
|
|
32
32
|
"repository": {
|
|
33
33
|
"type": "git",
|
|
34
34
|
"url": "git+https://github.com/useshowrun/showrun.git",
|