@showrun/core 0.1.1 → 0.1.3

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/config.d.ts CHANGED
@@ -28,6 +28,20 @@ export interface ShowRunConfig {
28
28
  teachChatSystemPrompt?: string;
29
29
  explorationAgentPromptPath?: string;
30
30
  };
31
+ techniques?: {
32
+ vectorStore?: {
33
+ provider?: string;
34
+ url?: string;
35
+ apiKey?: string;
36
+ vectorizer?: string;
37
+ };
38
+ embedding?: {
39
+ apiKey?: string;
40
+ model?: string;
41
+ baseUrl?: string;
42
+ };
43
+ collectionName?: string;
44
+ };
31
45
  }
32
46
  export interface ResolvedConfigPaths {
33
47
  config: ShowRunConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAUH,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,EAAE;QACJ,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,iBAAiB,CAAC;QAC9B,MAAM,CAAC,EAAE,iBAAiB,CAAC;KAC5B,CAAC;IACF,KAAK,CAAC,EAAE;QACN,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,iBAAiB,CAAC,EAAE,OAAO,CAAC;KAC7B,CAAC;IACF,OAAO,CAAC,EAAE;QACR,qBAAqB,CAAC,EAAE,MAAM,CAAC;QAC/B,0BAA0B,CAAC,EAAE,MAAM,CAAC;KACrC,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,aAAa,CAAC;IACtB,sEAAsE;IACtE,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,yCAAyC;IACzC,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAID;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CA0BpD;AA0BD;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CA4B7C;AAMD;;;GAGG;AACH,wBAAgB,UAAU,IAAI,mBAAmB,CAmBhD;AA6BD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAQ5D;AAID;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAsB/D;AAID;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAS3C;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAmB1F;AAID;;;GAGG;AACH,wBAAgB,UAAU,IAAI,mBAAmB,CAShD;AAID,eAAO,MAAM,uBAAuB,EAAE,aAerC,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAUH,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,EAAE;QACJ,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,iBAAiB,CAAC;QAC9B,MAAM,CAAC,EAAE,iBAAiB,CAAC;KAC5B,CAAC;IACF,KAAK,CAAC,EAAE;QACN,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,iBAAiB,CAAC,EAAE,OAAO,CAAC;KAC7B,CAAC;IACF,OAAO,CAAC,EAAE;QACR,qBAAqB,CAAC,EAAE,MAAM,CAAC;QAC/B,0BAA0B,CAAC,EAAE,MAAM,CAAC;KACrC,CAAC;IACF,UAAU,CAAC,EAAE;QACX,WAAW,CAAC,EAAE;YACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,GAAG,CAAC,EAAE,MAAM,CAAC;YACb,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,UAAU,CAAC,EAAE,MAAM,CAAC;SACrB,CAAC;QACF,SAAS,CAAC,EAAE;YACV,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,OAAO,CAAC,EAAE,MAAM,CAAC;SAClB,CAAC;QACF,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,aAAa,CAAC;IACtB,sEAAsE;IACtE,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,yCAAyC;IACzC,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAID;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CA0BpD;AA0BD;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CA4B7C;AAMD;;;GAGG;AACH,wBAAgB,UAAU,IAAI,mBAAmB,CAmBhD;AAqCD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAQ5D;AAID;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAsB/D;AAID;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAS3C;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAmB1F;AAID;;;GAGG;AACH,wBAAgB,UAAU,IAAI,mBAAmB,CAShD;AAID,eAAO,MAAM,uBAAuB,EAAE,aAoBrC,CAAC"}
package/dist/config.js CHANGED
@@ -133,6 +133,14 @@ const CONFIG_TO_ENV = [
133
133
  { path: ['agent', 'transcriptLogging'], envVar: 'SHOWRUN_TRANSCRIPT_LOGGING' },
134
134
  { path: ['prompts', 'teachChatSystemPrompt'], envVar: 'TEACH_CHAT_SYSTEM_PROMPT' },
135
135
  { path: ['prompts', 'explorationAgentPromptPath'], envVar: 'EXPLORATION_AGENT_PROMPT_PATH' },
136
+ { path: ['techniques', 'vectorStore', 'provider'], envVar: 'VECTORSTORE_PROVIDER' },
137
+ { path: ['techniques', 'vectorStore', 'url'], envVar: 'WEAVIATE_URL' },
138
+ { path: ['techniques', 'vectorStore', 'apiKey'], envVar: 'WEAVIATE_API_KEY' },
139
+ { path: ['techniques', 'vectorStore', 'vectorizer'], envVar: 'WEAVIATE_VECTORIZER' },
140
+ { path: ['techniques', 'embedding', 'apiKey'], envVar: 'EMBEDDING_API_KEY' },
141
+ { path: ['techniques', 'embedding', 'model'], envVar: 'EMBEDDING_MODEL' },
142
+ { path: ['techniques', 'embedding', 'baseUrl'], envVar: 'EMBEDDING_BASE_URL' },
143
+ { path: ['techniques', 'collectionName'], envVar: 'TECHNIQUES_COLLECTION' },
136
144
  ];
137
145
  function getNestedValue(obj, path) {
138
146
  let current = obj;
@@ -252,4 +260,9 @@ export const DEFAULT_CONFIG_TEMPLATE = {
252
260
  teachChatSystemPrompt: '',
253
261
  explorationAgentPromptPath: '',
254
262
  },
263
+ techniques: {
264
+ vectorStore: { provider: 'weaviate', url: '', apiKey: '', vectorizer: '' },
265
+ embedding: { apiKey: '', model: '', baseUrl: '' },
266
+ collectionName: '',
267
+ },
255
268
  };
@@ -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;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"}
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,CAycxB"}
@@ -179,8 +179,13 @@ export async function runFlow(ctx, steps, options) {
179
179
  }
180
180
  }
181
181
  catch (conditionError) {
182
- // Log condition evaluation error but continue with step execution
183
- console.warn(`[interpreter] Error evaluating skip_if for step ${step.id}:`, conditionError);
182
+ const msg = `skip_if evaluation error for step "${step.id}": ${conditionError instanceof Error ? conditionError.message : String(conditionError)}`;
183
+ console.warn(`[interpreter] ${msg}`);
184
+ ctx.logger.log({ type: 'error', data: { error: msg, stepId: step.id, type: step.type } });
185
+ // Push to hints so the agent can see the error
186
+ if (!vars['__jmespath_hints'])
187
+ vars['__jmespath_hints'] = [];
188
+ vars['__jmespath_hints'].push(msg);
184
189
  }
185
190
  }
186
191
  // Resolve templates in step params before execution
@@ -401,6 +406,14 @@ export async function runFlow(ctx, steps, options) {
401
406
  console.error('Failed to save artifacts:', artifactError);
402
407
  }
403
408
  }
409
+ // Attach partial results to the error for upstream consumers
410
+ if (error instanceof Error) {
411
+ error.partialResult = {
412
+ collectibles: { ...collectibles },
413
+ stepsExecuted,
414
+ failedStepId: step.id,
415
+ };
416
+ }
404
417
  // Stop on error (default behavior)
405
418
  throw error;
406
419
  }
@@ -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;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
+ {"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,EAAmB,MAAM,uBAAuB,CAAC;AAI3E;;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;AAmiCD;;GAEG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,IAAI,CAAC,CA4Ef"}
@@ -286,18 +286,24 @@ function getByPath(obj, path) {
286
286
  }
287
287
  try {
288
288
  const result = jmesSearch(obj, trimmed);
289
- // Check for null/undefined results and provide diagnostic hint
289
+ // Check for null/undefined results and provide diagnostic hint with data structure
290
290
  if (result === null || result === undefined) {
291
+ const topKeys = typeof obj === 'object' && obj !== null
292
+ ? Object.keys(obj).slice(0, 10).join(', ')
293
+ : typeof obj;
291
294
  return {
292
295
  value: result,
293
- hint: `JMESPath '${trimmed}' matched nothing (returned ${result}). Verify the path exists. Try a simpler path like 'data' or 'keys(@)' to inspect the structure.`,
296
+ hint: `JMESPath '${trimmed}' matched nothing (returned ${result}). Actual top-level keys: [${topKeys}]. Try a simpler path like 'data' or 'keys(@)' to inspect the structure.`,
294
297
  };
295
298
  }
296
299
  // Check for empty array results
297
300
  if (Array.isArray(result) && result.length === 0) {
301
+ const topKeys = typeof obj === 'object' && obj !== null
302
+ ? Object.keys(obj).slice(0, 10).join(', ')
303
+ : typeof obj;
298
304
  return {
299
305
  value: result,
300
- hint: `JMESPath '${trimmed}' returned an empty array. The path may be correct but no items matched.`,
306
+ hint: `JMESPath '${trimmed}' returned an empty array. Actual top-level keys: [${topKeys}]. The path may be correct but no items matched.`,
301
307
  };
302
308
  }
303
309
  return { value: result };
@@ -401,8 +407,13 @@ async function executeNetworkReplay(ctx, step) {
401
407
  setQuery: step.params.overrides.setQuery,
402
408
  setHeaders: step.params.overrides.setHeaders,
403
409
  body: step.params.overrides.body,
404
- urlReplace: step.params.overrides.urlReplace,
405
- bodyReplace: step.params.overrides.bodyReplace,
410
+ // Normalize urlReplace/bodyReplace to array (DSL type accepts single or array)
411
+ urlReplace: step.params.overrides.urlReplace
412
+ ? (Array.isArray(step.params.overrides.urlReplace) ? step.params.overrides.urlReplace : [step.params.overrides.urlReplace])
413
+ : undefined,
414
+ bodyReplace: step.params.overrides.bodyReplace
415
+ ? (Array.isArray(step.params.overrides.bodyReplace) ? step.params.overrides.bodyReplace : [step.params.overrides.bodyReplace])
416
+ : undefined,
406
417
  }
407
418
  : undefined;
408
419
  let result;
@@ -725,6 +736,47 @@ const HTTP_MODE_SKIP_STEPS = new Set([
725
736
  'upload_file', 'wait_for', 'assert', 'frame', 'new_tab',
726
737
  'switch_tab', 'network_find',
727
738
  ]);
739
+ /**
740
+ * Merge flow-level step overrides with snapshot-level overrides.
741
+ * Step overrides take precedence for scalar fields (url, body).
742
+ * Array fields (bodyReplace, urlReplace) are concatenated: snapshot first, then step.
743
+ * Object fields (setQuery, setHeaders) are merged: step values override snapshot values.
744
+ */
745
+ function mergeStepOverridesIntoSnapshot(snapshot, stepOverrides) {
746
+ if (!stepOverrides)
747
+ return snapshot;
748
+ // Normalize step overrides arrays
749
+ const stepBodyReplace = stepOverrides.bodyReplace
750
+ ? (Array.isArray(stepOverrides.bodyReplace) ? stepOverrides.bodyReplace : [stepOverrides.bodyReplace])
751
+ : [];
752
+ const stepUrlReplace = stepOverrides.urlReplace
753
+ ? (Array.isArray(stepOverrides.urlReplace) ? stepOverrides.urlReplace : [stepOverrides.urlReplace])
754
+ : [];
755
+ const snapshotOv = snapshot.overrides;
756
+ const bodyReplaceArr = [...(snapshotOv?.bodyReplace ?? []), ...stepBodyReplace];
757
+ const urlReplaceArr = [...(snapshotOv?.urlReplace ?? []), ...stepUrlReplace];
758
+ // Coerce step setQuery values to strings (step type allows string | number, snapshot expects string)
759
+ const stepSetQuery = stepOverrides.setQuery
760
+ ? Object.fromEntries(Object.entries(stepOverrides.setQuery).map(([k, v]) => [k, String(v)]))
761
+ : undefined;
762
+ const setQueryMerged = (snapshotOv?.setQuery || stepSetQuery)
763
+ ? { ...snapshotOv?.setQuery, ...stepSetQuery }
764
+ : undefined;
765
+ const setHeadersMerged = (snapshotOv?.setHeaders || stepOverrides.setHeaders)
766
+ ? { ...snapshotOv?.setHeaders, ...stepOverrides.setHeaders }
767
+ : undefined;
768
+ const merged = {
769
+ // Scalar overrides: step takes precedence
770
+ url: stepOverrides.url ?? snapshotOv?.url,
771
+ body: stepOverrides.body ?? snapshotOv?.body,
772
+ setQuery: setQueryMerged && Object.keys(setQueryMerged).length > 0 ? setQueryMerged : undefined,
773
+ setHeaders: setHeadersMerged && Object.keys(setHeadersMerged).length > 0 ? setHeadersMerged : undefined,
774
+ bodyReplace: bodyReplaceArr.length > 0 ? bodyReplaceArr : undefined,
775
+ urlReplace: urlReplaceArr.length > 0 ? urlReplaceArr : undefined,
776
+ };
777
+ const hasOverrides = merged.url || merged.body || merged.setQuery || merged.setHeaders || merged.bodyReplace || merged.urlReplace;
778
+ return { ...snapshot, overrides: hasOverrides ? merged : undefined };
779
+ }
728
780
  /**
729
781
  * Execute a network_replay step in HTTP-only mode using snapshot data.
730
782
  */
@@ -736,7 +788,10 @@ async function executeNetworkReplayHttp(ctx, step) {
736
788
  if (!snapshot) {
737
789
  throw new Error(`No snapshot found for step "${step.id}"`);
738
790
  }
739
- const result = await replayFromSnapshot(snapshot, ctx.inputs, ctx.vars, {
791
+ // Merge flow-level overrides (from step.params) with snapshot-level overrides.
792
+ // This ensures bodyReplace/urlReplace from the flow are applied in HTTP-only mode.
793
+ const mergedSnapshot = mergeStepOverridesIntoSnapshot(snapshot, step.params.overrides);
794
+ const result = await replayFromSnapshot(mergedSnapshot, ctx.inputs, ctx.vars, {
740
795
  secrets: ctx.secrets,
741
796
  });
742
797
  // Validate the response — throw to trigger browser fallback if stale
@@ -1 +1 @@
1
- {"version":3,"file":"templating.d.ts","sourceRoot":"","sources":["../../src/dsl/templating.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AA0BlD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,MAAM,CAWlF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,eAAe,GAAG,CAAC,CAkBvE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEhD"}
1
+ {"version":3,"file":"templating.d.ts","sourceRoot":"","sources":["../../src/dsl/templating.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAuClD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,MAAM,CAWlF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,eAAe,GAAG,CAAC,CAkBvE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEhD"}
@@ -10,6 +10,17 @@ const env = new nunjucks.Environment(null, {
10
10
  autoescape: false,
11
11
  throwOnUndefined: false, // Allow undefined values to render as empty string
12
12
  });
13
+ /**
14
+ * pctEncode filter: like urlencode but also encodes characters that
15
+ * encodeURIComponent leaves unescaped (parentheses, !, ', *, ~).
16
+ * Useful in URLs where those chars have structural meaning (e.g. LinkedIn Sales Navigator query syntax).
17
+ * Usage: {{inputs.company_name | pctEncode}}
18
+ */
19
+ env.addFilter('pctEncode', (val) => {
20
+ if (val == null)
21
+ return '';
22
+ return encodeURIComponent(String(val)).replace(/[!'()*~]/g, (c) => '%' + c.charCodeAt(0).toString(16).toUpperCase());
23
+ });
13
24
  /**
14
25
  * TOTP filter: generates a 6-digit TOTP code from a base32 secret.
15
26
  * Usage: {{secret.TOTP_KEY | totp}}
@@ -433,16 +433,22 @@ export interface NetworkReplayStep extends BaseDslStep {
433
433
  setQuery?: Record<string, string | number>;
434
434
  setHeaders?: Record<string, string>;
435
435
  body?: string;
436
- /** Regex find/replace on captured URL; replace can use $1, $2. Supports {{vars.xxx}}/{{inputs.xxx}} (resolved before replace). */
436
+ /** Regex find/replace on captured URL; replace can use $1, $2. Supports {{vars.xxx}}/{{inputs.xxx}} (resolved before replace). Accepts single object or array. */
437
437
  urlReplace?: {
438
438
  find: string;
439
439
  replace: string;
440
- };
441
- /** Regex find/replace on captured body; replace can use $1, $2. Supports {{vars.xxx}}/{{inputs.xxx}} (resolved before replace). */
440
+ } | Array<{
441
+ find: string;
442
+ replace: string;
443
+ }>;
444
+ /** Regex find/replace on captured body; replace can use $1, $2. Supports {{vars.xxx}}/{{inputs.xxx}} (resolved before replace). Accepts single object or array. */
442
445
  bodyReplace?: {
443
446
  find: string;
444
447
  replace: string;
445
- };
448
+ } | Array<{
449
+ find: string;
450
+ replace: string;
451
+ }>;
446
452
  };
447
453
  auth: 'browser_context';
448
454
  out: string;
@@ -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;IAClB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC"}
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;AAs8BD;;;;;;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;AAg9BD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAkC/E"}
@@ -681,17 +681,21 @@ function validateStep(step, stepIndex, errors) {
681
681
  }
682
682
  }
683
683
  if (overrides.urlReplace !== undefined) {
684
- if (typeof overrides.urlReplace !== 'object' || overrides.urlReplace === null) {
685
- errors.push(`${prefix}: NetworkReplay step "overrides.urlReplace" must be { find: string, replace: string }`);
686
- }
687
- else {
688
- const ur = overrides.urlReplace;
689
- if (typeof ur.find !== 'string' || typeof ur.replace !== 'string') {
684
+ const urlItems = Array.isArray(overrides.urlReplace)
685
+ ? overrides.urlReplace
686
+ : [overrides.urlReplace];
687
+ for (const ur of urlItems) {
688
+ if (!ur || typeof ur !== 'object' || Array.isArray(ur)) {
689
+ errors.push(`${prefix}: NetworkReplay step "overrides.urlReplace" items must be { find: string, replace: string }`);
690
+ continue;
691
+ }
692
+ const item = ur;
693
+ if (typeof item.find !== 'string' || typeof item.replace !== 'string') {
690
694
  errors.push(`${prefix}: NetworkReplay step "overrides.urlReplace" must have string "find" and "replace"`);
691
695
  }
692
696
  else {
693
697
  try {
694
- new RegExp(ur.find);
698
+ new RegExp(item.find);
695
699
  }
696
700
  catch {
697
701
  errors.push(`${prefix}: NetworkReplay step "overrides.urlReplace.find" is not a valid regex`);
@@ -700,17 +704,21 @@ function validateStep(step, stepIndex, errors) {
700
704
  }
701
705
  }
702
706
  if (overrides.bodyReplace !== undefined) {
703
- if (typeof overrides.bodyReplace !== 'object' || overrides.bodyReplace === null) {
704
- errors.push(`${prefix}: NetworkReplay step "overrides.bodyReplace" must be { find: string, replace: string }`);
705
- }
706
- else {
707
- const br = overrides.bodyReplace;
708
- if (typeof br.find !== 'string' || typeof br.replace !== 'string') {
707
+ const bodyItems = Array.isArray(overrides.bodyReplace)
708
+ ? overrides.bodyReplace
709
+ : [overrides.bodyReplace];
710
+ for (const br of bodyItems) {
711
+ if (!br || typeof br !== 'object' || Array.isArray(br)) {
712
+ errors.push(`${prefix}: NetworkReplay step "overrides.bodyReplace" items must be { find: string, replace: string }`);
713
+ continue;
714
+ }
715
+ const item = br;
716
+ if (typeof item.find !== 'string' || typeof item.replace !== 'string') {
709
717
  errors.push(`${prefix}: NetworkReplay step "overrides.bodyReplace" must have string "find" and "replace"`);
710
718
  }
711
719
  else {
712
720
  try {
713
- new RegExp(br.find);
721
+ new RegExp(item.find);
714
722
  }
715
723
  catch {
716
724
  errors.push(`${prefix}: NetworkReplay step "overrides.bodyReplace.find" is not a valid regex`);
package/dist/index.d.ts CHANGED
@@ -13,6 +13,7 @@ export * from './packVersioning.js';
13
13
  export * from './config.js';
14
14
  export * from './requestSnapshot.js';
15
15
  export * from './httpReplay.js';
16
+ export * from './storage/index.js';
16
17
  export * from './dsl/types.js';
17
18
  export * from './dsl/builders.js';
18
19
  export * from './dsl/interpreter.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAGhC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAGhC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC"}
package/dist/index.js CHANGED
@@ -13,6 +13,8 @@ export * from './packVersioning.js';
13
13
  export * from './config.js';
14
14
  export * from './requestSnapshot.js';
15
15
  export * from './httpReplay.js';
16
+ // Storage exports
17
+ export * from './storage/index.js';
16
18
  // DSL exports
17
19
  export * from './dsl/types.js';
18
20
  export * from './dsl/builders.js';
@@ -52,16 +52,22 @@ export interface NetworkReplayOverrides {
52
52
  setQuery?: Record<string, string | number>;
53
53
  setHeaders?: Record<string, string>;
54
54
  body?: string;
55
- /** Regex find/replace on the captured request URL (applied before overrides.url). Replace string can use $1, $2 for capture groups. */
55
+ /** Regex find/replace on the captured request URL (applied before overrides.url). Replace string can use $1, $2 for capture groups. Accepts single object or array. */
56
56
  urlReplace?: {
57
57
  find: string;
58
58
  replace: string;
59
- };
60
- /** Regex find/replace on the captured request body (applied before overrides.body). Replace string can use $1, $2 for capture groups. */
59
+ } | Array<{
60
+ find: string;
61
+ replace: string;
62
+ }>;
63
+ /** Regex find/replace on the captured request body (applied before overrides.body). Replace string can use $1, $2 for capture groups. Accepts single object or array. */
61
64
  bodyReplace?: {
62
65
  find: string;
63
66
  replace: string;
64
- };
67
+ } | Array<{
68
+ find: string;
69
+ replace: string;
70
+ }>;
65
71
  }
66
72
  /**
67
73
  * Serializable network entry for caching (without Playwright-specific internals)
@@ -1 +1 @@
1
- {"version":3,"file":"networkCapture.d.ts","sourceRoot":"","sources":["../src/networkCapture.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"networkCapture.d.ts","sourceRoot":"","sources":["../src/networkCapture.ts"],"names":[],"mappings":"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"}
@@ -271,24 +271,32 @@ export function attachNetworkCapture(page) {
271
271
  }
272
272
  let url = entry.url;
273
273
  if (overrides?.urlReplace) {
274
- try {
275
- const re = new RegExp(overrides.urlReplace.find, 'g');
276
- url = url.replace(re, overrides.urlReplace.replace);
277
- }
278
- catch (e) {
279
- throw new Error(`overrides.urlReplace.find is not a valid regex: ${e instanceof Error ? e.message : String(e)}`);
274
+ // Normalize to array (accepts single object or array)
275
+ const urlReplaces = Array.isArray(overrides.urlReplace) ? overrides.urlReplace : [overrides.urlReplace];
276
+ for (const ur of urlReplaces) {
277
+ try {
278
+ const re = new RegExp(ur.find, 'g');
279
+ url = url.replace(re, ur.replace);
280
+ }
281
+ catch (e) {
282
+ throw new Error(`overrides.urlReplace.find is not a valid regex: ${e instanceof Error ? e.message : String(e)}`);
283
+ }
280
284
  }
281
285
  }
282
286
  if (overrides?.url != null)
283
287
  url = overrides.url;
284
288
  let body = entry.postData ?? undefined;
285
289
  if (body != null && overrides?.bodyReplace) {
286
- try {
287
- const re = new RegExp(overrides.bodyReplace.find, 'g');
288
- body = body.replace(re, overrides.bodyReplace.replace);
289
- }
290
- catch (e) {
291
- throw new Error(`overrides.bodyReplace.find is not a valid regex: ${e instanceof Error ? e.message : String(e)}`);
290
+ // Normalize to array (accepts single object or array)
291
+ const bodyReplaces = Array.isArray(overrides.bodyReplace) ? overrides.bodyReplace : [overrides.bodyReplace];
292
+ for (const br of bodyReplaces) {
293
+ try {
294
+ const re = new RegExp(br.find, 'g');
295
+ body = body.replace(re, br.replace);
296
+ }
297
+ catch (e) {
298
+ throw new Error(`overrides.bodyReplace.find is not a valid regex: ${e instanceof Error ? e.message : String(e)}`);
299
+ }
292
300
  }
293
301
  }
294
302
  if (overrides?.body != null)
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAc,MAAM,YAAY,CAAC;AAElE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAWzC;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,SAAS;IAClD;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,iBAAiB,CAAC,CA0O5B"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAc,MAAM,YAAY,CAAC;AAElE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAWzC;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,SAAS;IAClD;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,iBAAiB,CAAC,CAmQ5B"}
package/dist/runner.js CHANGED
@@ -178,6 +178,18 @@ export async function runTaskPack(taskPack, inputs, options) {
178
178
  console.error('Failed to save artifacts:', artifactError);
179
179
  }
180
180
  }
181
+ // Extract partial results from enriched error (set by interpreter)
182
+ const partialResult = error?.partialResult;
183
+ // Filter partial collectibles to only include declared ones
184
+ let partialCollectibles = {};
185
+ if (partialResult?.collectibles) {
186
+ const definedCollectibleNames = new Set((taskPack.collectibles || []).map(c => c.name));
187
+ for (const [key, value] of Object.entries(partialResult.collectibles)) {
188
+ if (definedCollectibleNames.has(key)) {
189
+ partialCollectibles[key] = value;
190
+ }
191
+ }
192
+ }
181
193
  // Log run finish with failure
182
194
  logger.log({
183
195
  type: 'run_finished',
@@ -187,16 +199,21 @@ export async function runTaskPack(taskPack, inputs, options) {
187
199
  },
188
200
  });
189
201
  // Return partial result with paths even on error
190
- return {
191
- collectibles: {},
202
+ const failResult = {
203
+ collectibles: partialCollectibles,
192
204
  meta: {
193
205
  durationMs,
194
- notes: `Error: ${errorMessage}`,
206
+ notes: `Error at step "${partialResult?.failedStepId ?? 'unknown'}": ${errorMessage}`,
195
207
  },
196
208
  runDir,
197
209
  eventsPath,
198
210
  artifactsDir,
199
211
  };
212
+ // Include failedStepId for AI agents
213
+ if (partialResult?.failedStepId) {
214
+ failResult.failedStepId = partialResult.failedStepId;
215
+ }
216
+ return failResult;
200
217
  }
201
218
  finally {
202
219
  // Cleanup using unified browser session close
@@ -320,10 +337,10 @@ function captureSnapshots(taskPack, flowResult, networkCapture, packPath) {
320
337
  : undefined,
321
338
  setHeaders: step.params.overrides.setHeaders,
322
339
  urlReplace: step.params.overrides.urlReplace
323
- ? [step.params.overrides.urlReplace]
340
+ ? (Array.isArray(step.params.overrides.urlReplace) ? step.params.overrides.urlReplace : [step.params.overrides.urlReplace])
324
341
  : undefined,
325
342
  bodyReplace: step.params.overrides.bodyReplace
326
- ? [step.params.overrides.bodyReplace]
343
+ ? (Array.isArray(step.params.overrides.bodyReplace) ? step.params.overrides.bodyReplace : [step.params.overrides.bodyReplace])
327
344
  : undefined,
328
345
  }
329
346
  : undefined,
@@ -0,0 +1,3 @@
1
+ export * from './types.js';
2
+ export * from './keys.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './types.js';
2
+ export * from './keys.js';
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Produce a canonical, stable JSON representation of inputs.
3
+ * - Sorts object keys recursively
4
+ * - Strips `undefined` values
5
+ */
6
+ export declare function canonicalizeInputs(inputs: Record<string, unknown>): string;
7
+ /**
8
+ * Generate a deterministic result key from pack ID and inputs.
9
+ * Same packId + same inputs ⇒ same key (latest-wins cache).
10
+ */
11
+ export declare function generateResultKey(packId: string, inputs: Record<string, unknown>): string;
12
+ //# sourceMappingURL=keys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/storage/keys.ts"],"names":[],"mappings":"AAOA;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAE1E;AAkBD;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,MAAM,CAGR"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Deterministic key generation for stored results.
3
+ *
4
+ * key = sha256(packId + ":" + canonicalized_inputs)[0..16] (16-char hex)
5
+ */
6
+ import { createHash } from 'crypto';
7
+ /**
8
+ * Produce a canonical, stable JSON representation of inputs.
9
+ * - Sorts object keys recursively
10
+ * - Strips `undefined` values
11
+ */
12
+ export function canonicalizeInputs(inputs) {
13
+ return JSON.stringify(sortKeys(inputs));
14
+ }
15
+ function sortKeys(obj) {
16
+ if (obj === null || obj === undefined)
17
+ return obj;
18
+ if (Array.isArray(obj))
19
+ return obj.map(sortKeys);
20
+ if (typeof obj === 'object') {
21
+ const sorted = {};
22
+ for (const key of Object.keys(obj).sort()) {
23
+ const val = obj[key];
24
+ if (val !== undefined) {
25
+ sorted[key] = sortKeys(val);
26
+ }
27
+ }
28
+ return sorted;
29
+ }
30
+ return obj;
31
+ }
32
+ /**
33
+ * Generate a deterministic result key from pack ID and inputs.
34
+ * Same packId + same inputs ⇒ same key (latest-wins cache).
35
+ */
36
+ export function generateResultKey(packId, inputs) {
37
+ const payload = packId + ':' + canonicalizeInputs(inputs);
38
+ return createHash('sha256').update(payload).digest('hex').slice(0, 16);
39
+ }
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Pluggable Result Store — Pure interfaces (no external deps)
3
+ *
4
+ * Providers declare their capabilities so consumers (MCP tools)
5
+ * know which operations are available.
6
+ */
7
+ export type StorageCapability = 'get' | 'store' | 'list' | 'delete' | 'filter' | 'search' | 'aggregate';
8
+ /**
9
+ * Schema field describing a collectible column (for AI-friendly descriptions).
10
+ */
11
+ export interface CollectibleSchemaField {
12
+ name: string;
13
+ type: 'string' | 'number' | 'boolean';
14
+ description?: string;
15
+ }
16
+ /**
17
+ * A single stored run result.
18
+ */
19
+ export interface StoredResult {
20
+ /** Deterministic hash of packId + inputs */
21
+ key: string;
22
+ packId: string;
23
+ toolName: string;
24
+ inputs: Record<string, unknown>;
25
+ collectibles: Record<string, unknown>;
26
+ meta: {
27
+ url?: string;
28
+ durationMs: number;
29
+ notes?: string;
30
+ };
31
+ collectibleSchema: CollectibleSchemaField[];
32
+ /** ISO 8601 — when the result was (last) stored */
33
+ storedAt: string;
34
+ /** ISO 8601 — when the run actually executed */
35
+ ranAt: string;
36
+ /** Incremented on overwrite (same key) */
37
+ version: number;
38
+ }
39
+ /**
40
+ * Options for listing stored results.
41
+ */
42
+ export interface ListOptions {
43
+ limit?: number;
44
+ offset?: number;
45
+ sortBy?: 'storedAt' | 'ranAt';
46
+ sortDir?: 'asc' | 'desc';
47
+ }
48
+ /**
49
+ * Lightweight summary returned by list().
50
+ */
51
+ export interface ResultSummary {
52
+ key: string;
53
+ packId: string;
54
+ toolName: string;
55
+ storedAt: string;
56
+ version: number;
57
+ fieldCount: number;
58
+ }
59
+ /**
60
+ * Filter/paginate within a single stored result's collectibles.
61
+ */
62
+ export interface FilterOptions {
63
+ /** Which stored result to filter within */
64
+ key: string;
65
+ /** JMESPath expression for extraction/transform */
66
+ jmesPath?: string;
67
+ /** Limit items (for array results) */
68
+ limit?: number;
69
+ /** Pagination offset */
70
+ offset?: number;
71
+ /** Field to sort by within collectibles */
72
+ sortBy?: string;
73
+ sortDir?: 'asc' | 'desc';
74
+ }
75
+ /**
76
+ * Full-text search options (for future vector/FTS providers).
77
+ */
78
+ export interface SearchOptions {
79
+ query: string;
80
+ limit?: number;
81
+ }
82
+ export interface SearchHit {
83
+ key: string;
84
+ packId: string;
85
+ toolName: string;
86
+ score: number;
87
+ snippet?: string;
88
+ }
89
+ /**
90
+ * The pluggable store interface.
91
+ * Only `capabilities()`, `store()`, and `get()` are required.
92
+ * Optional methods should only be called if the corresponding capability is declared.
93
+ */
94
+ export interface ResultStoreProvider {
95
+ capabilities(): StorageCapability[];
96
+ store(result: StoredResult): Promise<void>;
97
+ get(key: string): Promise<StoredResult | null>;
98
+ list?(options?: ListOptions): Promise<{
99
+ results: ResultSummary[];
100
+ total: number;
101
+ }>;
102
+ delete?(key: string): Promise<boolean>;
103
+ filter?(options: FilterOptions): Promise<{
104
+ data: unknown;
105
+ total?: number;
106
+ }>;
107
+ search?(options: SearchOptions): Promise<{
108
+ results: SearchHit[];
109
+ }>;
110
+ close?(): Promise<void>;
111
+ }
112
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/storage/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,iBAAiB,GACzB,KAAK,GACL,OAAO,GACP,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,WAAW,CAAC;AAEhB;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,4CAA4C;IAC5C,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,IAAI,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3D,iBAAiB,EAAE,sBAAsB,EAAE,CAAC;IAC5C,mDAAmD;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC;IAC9B,OAAO,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,2CAA2C;IAC3C,GAAG,EAAE,MAAM,CAAC;IACZ,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wBAAwB;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,YAAY,IAAI,iBAAiB,EAAE,CAAC;IACpC,KAAK,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAC/C,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,aAAa,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnF,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,CAAC,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5E,MAAM,CAAC,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,SAAS,EAAE,CAAA;KAAE,CAAC,CAAC;IACnE,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Pluggable Result Store — Pure interfaces (no external deps)
3
+ *
4
+ * Providers declare their capabilities so consumers (MCP tools)
5
+ * know which operations are available.
6
+ */
7
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@showrun/core",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "Core types and utilities for Task Pack framework",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",