devharness 0.9.5 → 0.9.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/build/command-recorder.d.ts +22 -0
  2. package/build/command-recorder.d.ts.map +1 -1
  3. package/build/command-recorder.js +51 -8
  4. package/build/command-recorder.js.map +1 -1
  5. package/build/github/issue-actions.js +5 -5
  6. package/build/github/issue-actions.js.map +1 -1
  7. package/build/index.js +3 -0
  8. package/build/index.js.map +1 -1
  9. package/build/tool-response.d.ts +8 -0
  10. package/build/tool-response.d.ts.map +1 -1
  11. package/build/tool-response.js.map +1 -1
  12. package/build/tools/assert-tools.d.ts +6 -6
  13. package/build/tools/breakpoint-tools.d.ts +3 -3
  14. package/build/tools/click-validation-console-noise.test.d.ts +2 -0
  15. package/build/tools/click-validation-console-noise.test.d.ts.map +1 -0
  16. package/build/tools/click-validation-console-noise.test.js +103 -0
  17. package/build/tools/click-validation-console-noise.test.js.map +1 -0
  18. package/build/tools/console-tools.d.ts +6 -6
  19. package/build/tools/console-tools.d.ts.map +1 -1
  20. package/build/tools/console-tools.js +1 -0
  21. package/build/tools/console-tools.js.map +1 -1
  22. package/build/tools/execution-tools.d.ts +3 -3
  23. package/build/tools/input-tools.d.ts +3 -3
  24. package/build/tools/inspection-tools.d.ts +15 -15
  25. package/build/tools/interpolation-reverse.d.ts +26 -0
  26. package/build/tools/interpolation-reverse.d.ts.map +1 -0
  27. package/build/tools/interpolation-reverse.js +130 -0
  28. package/build/tools/interpolation-reverse.js.map +1 -0
  29. package/build/tools/interpolation-reverse.test.d.ts +2 -0
  30. package/build/tools/interpolation-reverse.test.d.ts.map +1 -0
  31. package/build/tools/interpolation-reverse.test.js +76 -0
  32. package/build/tools/interpolation-reverse.test.js.map +1 -0
  33. package/build/tools/network-tools.d.ts +9 -9
  34. package/build/tools/replay-create-templatize.test.d.ts +2 -0
  35. package/build/tools/replay-create-templatize.test.d.ts.map +1 -0
  36. package/build/tools/replay-create-templatize.test.js +103 -0
  37. package/build/tools/replay-create-templatize.test.js.map +1 -0
  38. package/build/tools/replay-executor.d.ts +4 -0
  39. package/build/tools/replay-executor.d.ts.map +1 -1
  40. package/build/tools/replay-executor.js +39 -10
  41. package/build/tools/replay-executor.js.map +1 -1
  42. package/build/tools/replay-tools.d.ts +18 -18
  43. package/build/tools/replay-tools.d.ts.map +1 -1
  44. package/build/tools/replay-tools.js +6 -5
  45. package/build/tools/replay-tools.js.map +1 -1
  46. package/build/tools/request-tools.d.ts +1 -1
  47. package/build/tools/storage-tools.d.ts +6 -6
  48. package/docs/messages.md +188 -1
  49. package/package.json +1 -1
  50. package/plugin/skills/devharness/SKILL.md +1 -1
  51. package/plugin/skills/devharness/references/sequences.md +6 -1
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Click validation used to compare raw console error COUNTS before/after a
3
+ * click, so an unrelated error landing in the post-click window (e.g. a
4
+ * favicon 404) was indistinguishable from one the click actually caused.
5
+ * capturePreClickState/validateClickAction now diff actual entry ids and
6
+ * exclude known browser noise (favicon.ico) from what counts as "new".
7
+ */
8
+ import { describe, it, expect } from 'vitest';
9
+ import { capturePreClickState, validateClickAction } from './replay-executor.js';
10
+ import { productionShaped } from '../test-support/fake-execute-tool-call.js';
11
+ const BASE_CONFIG = {
12
+ enabled: true,
13
+ validateNavigation: false,
14
+ requireDomChanges: false,
15
+ domChangesFailMode: 'warn',
16
+ failOnConsoleErrors: true,
17
+ consoleErrorsFailMode: 'error',
18
+ validateNetworkPayload: false,
19
+ networkFailMode: 'warn',
20
+ postClickDelayMs: 0,
21
+ };
22
+ function consoleResponse(entries) {
23
+ return {
24
+ content: [{ type: 'text', text: '' }],
25
+ _meta: {
26
+ console: {
27
+ totalCount: entries.length,
28
+ errorCount: entries.length,
29
+ warnCount: 0,
30
+ entries: entries.map(e => ({ id: e.id, type: 'error', ...(e.url && { url: e.url }) })),
31
+ },
32
+ },
33
+ };
34
+ }
35
+ /** Fake ctx whose console responses switch from `before` to `after` the first
36
+ * time `console` is called a second time - mirrors pre-click vs post-click. */
37
+ function makeCtx(before, after) {
38
+ let callCount = 0;
39
+ const executeToolCall = productionShaped(async (tool, _params) => {
40
+ if (tool === 'console') {
41
+ callCount++;
42
+ return consoleResponse(callCount === 1 ? before : after);
43
+ }
44
+ return { content: [{ type: 'text', text: '' }] };
45
+ });
46
+ return { executeToolCall, commandRecorder: {}, connectionReason: 'test', logPrefix: 'test' };
47
+ }
48
+ describe('click validation - console error noise filtering', () => {
49
+ it('suppresses a new error that is purely a favicon 404', async () => {
50
+ const ctx = makeCtx([{ id: 'c-1' }], [{ id: 'c-1' }, { id: 'c-2', url: 'http://localhost:3000/favicon.ico' }]);
51
+ const pre = await capturePreClickState(ctx);
52
+ const result = await validateClickAction(ctx, pre, {}, BASE_CONFIG);
53
+ expect(result.valid).toBe(true);
54
+ expect(result.errors).toEqual([]);
55
+ expect(result.info.some(i => i.includes('unrelated browser noise'))).toBe(true);
56
+ });
57
+ it('still fails on a new error unrelated to any known noise pattern', async () => {
58
+ const ctx = makeCtx([{ id: 'c-1' }], [{ id: 'c-1' }, { id: 'c-2', url: 'http://localhost:3000/api/broken' }]);
59
+ const pre = await capturePreClickState(ctx);
60
+ const result = await validateClickAction(ctx, pre, {}, BASE_CONFIG);
61
+ expect(result.valid).toBe(false);
62
+ expect(result.errors[0]).toContain('1 new console error');
63
+ });
64
+ it('still fails when a genuine error accompanies a noise one (mixed)', async () => {
65
+ const ctx = makeCtx([{ id: 'c-1' }], [
66
+ { id: 'c-1' },
67
+ { id: 'c-2', url: 'http://localhost:3000/favicon.ico' },
68
+ { id: 'c-3', url: 'http://localhost:3000/api/broken' },
69
+ ]);
70
+ const pre = await capturePreClickState(ctx);
71
+ const result = await validateClickAction(ctx, pre, {}, BASE_CONFIG);
72
+ expect(result.valid).toBe(false);
73
+ expect(result.errors[0]).toContain('2 new console error');
74
+ });
75
+ it('respects consoleErrorsFailMode: warn for a genuine new error', async () => {
76
+ const ctx = makeCtx([{ id: 'c-1' }], [{ id: 'c-1' }, { id: 'c-2', url: 'http://localhost:3000/api/broken' }]);
77
+ const pre = await capturePreClickState(ctx);
78
+ const result = await validateClickAction(ctx, pre, {}, { ...BASE_CONFIG, consoleErrorsFailMode: 'warn' });
79
+ expect(result.valid).toBe(true);
80
+ expect(result.warnings[0]).toContain('1 new console error');
81
+ });
82
+ it('does not report anything when no new errors appear', async () => {
83
+ const ctx = makeCtx([{ id: 'c-1' }], [{ id: 'c-1' }]);
84
+ const pre = await capturePreClickState(ctx);
85
+ const result = await validateClickAction(ctx, pre, {}, BASE_CONFIG);
86
+ expect(result.valid).toBe(true);
87
+ expect(result.errors).toEqual([]);
88
+ expect(result.info).toEqual([]);
89
+ });
90
+ it('a query string on the favicon URL is still recognized as noise', async () => {
91
+ const ctx = makeCtx([{ id: 'c-1' }], [{ id: 'c-1' }, { id: 'c-2', url: 'http://localhost:3000/favicon.ico?v=2' }]);
92
+ const pre = await capturePreClickState(ctx);
93
+ const result = await validateClickAction(ctx, pre, {}, BASE_CONFIG);
94
+ expect(result.valid).toBe(true);
95
+ });
96
+ it('a similarly-named but different resource is NOT treated as noise', async () => {
97
+ const ctx = makeCtx([{ id: 'c-1' }], [{ id: 'c-1' }, { id: 'c-2', url: 'http://localhost:3000/api/favicon.ico/details' }]);
98
+ const pre = await capturePreClickState(ctx);
99
+ const result = await validateClickAction(ctx, pre, {}, BASE_CONFIG);
100
+ expect(result.valid).toBe(false);
101
+ });
102
+ });
103
+ //# sourceMappingURL=click-validation-console-noise.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"click-validation-console-noise.test.js","sourceRoot":"","sources":["../../src/tools/click-validation-console-noise.test.ts"],"names":[],"mappings":"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"}
@@ -24,15 +24,15 @@ export declare function createConsoleTools(puppeteerManager: PuppeteerManager, c
24
24
  reason: z.ZodOptional<z.ZodString>;
25
25
  depth: z.ZodOptional<z.ZodNumber>;
26
26
  }, "strict", z.ZodTypeAny, {
27
- action: "search" | "clear" | "list" | "get" | "recent" | "setObjectDepth";
27
+ action: "search" | "clear" | "list" | "recent" | "get" | "setObjectDepth";
28
28
  connectionReason: string;
29
29
  type?: string | undefined;
30
30
  id?: string | undefined;
31
31
  reason?: string | undefined;
32
32
  count?: number | undefined;
33
33
  full?: boolean | undefined;
34
- pattern?: string | undefined;
35
34
  limit?: number | undefined;
35
+ pattern?: string | undefined;
36
36
  offset?: number | undefined;
37
37
  textOffset?: number | undefined;
38
38
  textLimit?: number | undefined;
@@ -40,15 +40,15 @@ export declare function createConsoleTools(puppeteerManager: PuppeteerManager, c
40
40
  flags?: string | undefined;
41
41
  depth?: number | undefined;
42
42
  }, {
43
- action: "search" | "clear" | "list" | "get" | "recent" | "setObjectDepth";
43
+ action: "search" | "clear" | "list" | "recent" | "get" | "setObjectDepth";
44
44
  connectionReason: string;
45
45
  type?: string | undefined;
46
46
  id?: string | undefined;
47
47
  reason?: string | undefined;
48
48
  count?: number | undefined;
49
49
  full?: boolean | undefined;
50
- pattern?: string | undefined;
51
50
  limit?: number | undefined;
51
+ pattern?: string | undefined;
52
52
  offset?: number | undefined;
53
53
  textOffset?: number | undefined;
54
54
  textLimit?: number | undefined;
@@ -63,15 +63,15 @@ export declare function createConsoleTools(puppeteerManager: PuppeteerManager, c
63
63
  } | undefined;
64
64
  };
65
65
  handler: (args: {
66
- action: "search" | "clear" | "list" | "get" | "recent" | "setObjectDepth";
66
+ action: "search" | "clear" | "list" | "recent" | "get" | "setObjectDepth";
67
67
  connectionReason: string;
68
68
  type?: string | undefined;
69
69
  id?: string | undefined;
70
70
  reason?: string | undefined;
71
71
  count?: number | undefined;
72
72
  full?: boolean | undefined;
73
- pattern?: string | undefined;
74
73
  limit?: number | undefined;
74
+ pattern?: string | undefined;
75
75
  offset?: number | undefined;
76
76
  textOffset?: number | undefined;
77
77
  textLimit?: number | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"console-tools.d.ts","sourceRoot":"","sources":["../../src/tools/console-tools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAwB,MAAM,uBAAuB,CAAC;AA8Q7E,wBAAgB,kBAAkB,CAChC,gBAAgB,EAAE,gBAAgB,EAClC,cAAc,EAAE,cAAc,EAC9B,2BAA2B,EAAE,CAAC,gBAAgB,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmCxE"}
1
+ {"version":3,"file":"console-tools.d.ts","sourceRoot":"","sources":["../../src/tools/console-tools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAwB,MAAM,uBAAuB,CAAC;AA+Q7E,wBAAgB,kBAAkB,CAChC,gBAAgB,EAAE,gBAAgB,EAClC,cAAc,EAAE,cAAc,EAC9B,2BAA2B,EAAE,CAAC,gBAAgB,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmCxE"}
@@ -91,6 +91,7 @@ function buildListResponse(messages, headerText, action, monitor) {
91
91
  warnCount: monitor.getCount('warn'),
92
92
  truncatedCount,
93
93
  totalTokens,
94
+ entries: messages.map(m => ({ id: m.id, type: m.type, ...(m.location?.url && { url: m.location.url }) })),
94
95
  },
95
96
  },
96
97
  };
@@ -1 +1 @@
1
- {"version":3,"file":"console-tools.js","sourceRoot":"","sources":["../../src/tools/console-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"console-tools.js","sourceRoot":"","sources":["../../src/tools/console-tools.ts"],"names":[],"mappings":"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"}
@@ -19,10 +19,10 @@ retryPendingRestart?: (port: number) => void): {
19
19
  action: z.ZodEnum<["pause", "resume", "stepOver", "stepInto", "stepOut", "acknowledge"]>;
20
20
  connectionReason: z.ZodOptional<z.ZodString>;
21
21
  }, "strict", z.ZodTypeAny, {
22
- action: "acknowledge" | "pause" | "resume" | "stepOver" | "stepInto" | "stepOut";
22
+ action: "acknowledge" | "resume" | "pause" | "stepOver" | "stepInto" | "stepOut";
23
23
  connectionReason?: string | undefined;
24
24
  }, {
25
- action: "acknowledge" | "pause" | "resume" | "stepOver" | "stepInto" | "stepOut";
25
+ action: "acknowledge" | "resume" | "pause" | "stepOver" | "stepInto" | "stepOut";
26
26
  connectionReason?: string | undefined;
27
27
  }>;
28
28
  inputSchema: import("zod-to-json-schema").JsonSchema7Type & {
@@ -32,7 +32,7 @@ retryPendingRestart?: (port: number) => void): {
32
32
  } | undefined;
33
33
  };
34
34
  handler: (args: {
35
- action: "acknowledge" | "pause" | "resume" | "stepOver" | "stepInto" | "stepOut";
35
+ action: "acknowledge" | "resume" | "pause" | "stepOver" | "stepInto" | "stepOut";
36
36
  connectionReason?: string | undefined;
37
37
  }, abortSignal?: AbortSignal) => Promise<any>;
38
38
  };
@@ -74,13 +74,13 @@ export declare function createInputTools(puppeteerManager: PuppeteerManager, cdp
74
74
  y: number;
75
75
  } | undefined;
76
76
  x?: number | undefined;
77
- delay?: number | undefined;
78
77
  y?: number | undefined;
79
78
  durationMs?: number | undefined;
80
79
  from?: {
81
80
  x: number;
82
81
  y: number;
83
82
  } | undefined;
83
+ delay?: number | undefined;
84
84
  append?: boolean | undefined;
85
85
  handleModals?: boolean | undefined;
86
86
  dismissStrategy?: "close" | "remove" | "auto" | "accept" | "reject" | undefined;
@@ -105,13 +105,13 @@ export declare function createInputTools(puppeteerManager: PuppeteerManager, cdp
105
105
  y: number;
106
106
  } | undefined;
107
107
  x?: number | undefined;
108
- delay?: number | undefined;
109
108
  y?: number | undefined;
110
109
  durationMs?: number | undefined;
111
110
  from?: {
112
111
  x: number;
113
112
  y: number;
114
113
  } | undefined;
114
+ delay?: number | undefined;
115
115
  append?: boolean | undefined;
116
116
  handleModals?: boolean | undefined;
117
117
  dismissStrategy?: "close" | "remove" | "auto" | "accept" | "reject" | undefined;
@@ -143,13 +143,13 @@ export declare function createInputTools(puppeteerManager: PuppeteerManager, cdp
143
143
  y: number;
144
144
  } | undefined;
145
145
  x?: number | undefined;
146
- delay?: number | undefined;
147
146
  y?: number | undefined;
148
147
  durationMs?: number | undefined;
149
148
  from?: {
150
149
  x: number;
151
150
  y: number;
152
151
  } | undefined;
152
+ delay?: number | undefined;
153
153
  append?: boolean | undefined;
154
154
  handleModals?: boolean | undefined;
155
155
  dismissStrategy?: "close" | "remove" | "auto" | "accept" | "reject" | undefined;
@@ -46,41 +46,41 @@ export declare function createInspectionTools(cdpManager: CDPManager, sourceMapH
46
46
  limit: z.ZodOptional<z.ZodNumber>;
47
47
  functionName: z.ZodOptional<z.ZodString>;
48
48
  }, "strict", z.ZodTypeAny, {
49
- action: "getCallStack" | "getVariables" | "evaluateExpression" | "searchCode" | "searchFunctions";
49
+ action: "evaluateExpression" | "getCallStack" | "getVariables" | "searchCode" | "searchFunctions";
50
50
  filter?: string | undefined;
51
51
  awaitPromise?: boolean | undefined;
52
52
  expression?: string | undefined;
53
- functionName?: string | undefined;
54
53
  connectionReason?: string | undefined;
55
54
  callFrameId?: string | undefined;
55
+ functionName?: string | undefined;
56
+ limit?: number | undefined;
57
+ saveAs?: string | undefined;
58
+ pattern?: string | undefined;
56
59
  includeGlobal?: boolean | undefined;
57
60
  expandObjects?: boolean | undefined;
58
61
  maxDepth?: number | undefined;
59
62
  maxTokens?: number | undefined;
60
- saveAs?: string | undefined;
61
- pattern?: string | undefined;
62
63
  caseSensitive?: boolean | undefined;
63
64
  isRegex?: boolean | undefined;
64
65
  urlFilter?: string | undefined;
65
- limit?: number | undefined;
66
66
  }, {
67
- action: "getCallStack" | "getVariables" | "evaluateExpression" | "searchCode" | "searchFunctions";
67
+ action: "evaluateExpression" | "getCallStack" | "getVariables" | "searchCode" | "searchFunctions";
68
68
  filter?: string | undefined;
69
69
  awaitPromise?: boolean | undefined;
70
70
  expression?: string | undefined;
71
- functionName?: string | undefined;
72
71
  connectionReason?: string | undefined;
73
72
  callFrameId?: string | undefined;
73
+ functionName?: string | undefined;
74
+ limit?: number | undefined;
75
+ saveAs?: string | undefined;
76
+ pattern?: string | undefined;
74
77
  includeGlobal?: boolean | undefined;
75
78
  expandObjects?: boolean | undefined;
76
79
  maxDepth?: number | undefined;
77
80
  maxTokens?: number | undefined;
78
- saveAs?: string | undefined;
79
- pattern?: string | undefined;
80
81
  caseSensitive?: boolean | undefined;
81
82
  isRegex?: boolean | undefined;
82
83
  urlFilter?: string | undefined;
83
- limit?: number | undefined;
84
84
  }>;
85
85
  inputSchema: import("zod-to-json-schema").JsonSchema7Type & {
86
86
  $schema?: string | undefined;
@@ -89,23 +89,23 @@ export declare function createInspectionTools(cdpManager: CDPManager, sourceMapH
89
89
  } | undefined;
90
90
  };
91
91
  handler: (args: {
92
- action: "getCallStack" | "getVariables" | "evaluateExpression" | "searchCode" | "searchFunctions";
92
+ action: "evaluateExpression" | "getCallStack" | "getVariables" | "searchCode" | "searchFunctions";
93
93
  filter?: string | undefined;
94
94
  awaitPromise?: boolean | undefined;
95
95
  expression?: string | undefined;
96
- functionName?: string | undefined;
97
96
  connectionReason?: string | undefined;
98
97
  callFrameId?: string | undefined;
98
+ functionName?: string | undefined;
99
+ limit?: number | undefined;
100
+ saveAs?: string | undefined;
101
+ pattern?: string | undefined;
99
102
  includeGlobal?: boolean | undefined;
100
103
  expandObjects?: boolean | undefined;
101
104
  maxDepth?: number | undefined;
102
105
  maxTokens?: number | undefined;
103
- saveAs?: string | undefined;
104
- pattern?: string | undefined;
105
106
  caseSensitive?: boolean | undefined;
106
107
  isRegex?: boolean | undefined;
107
108
  urlFilter?: string | undefined;
108
- limit?: number | undefined;
109
109
  }, abortSignal?: AbortSignal) => Promise<any>;
110
110
  };
111
111
  };
@@ -0,0 +1,26 @@
1
+ /**
2
+ * The inverse of interpolation.ts: given values a `saveAs` step already
3
+ * captured earlier in the same history, find literal values in a later
4
+ * step's params that came from those captures and rewrite them back to
5
+ * `{{var:name.path}}` tokens - what a person hand-templatizing a recorded
6
+ * sequence does today (see references/sequences.md).
7
+ *
8
+ * Two match shapes, both driven by exact string/number equality (never
9
+ * fuzzy): a param leaf whose ENTIRE value equals a captured value anywhere
10
+ * in its tree, and a captured value appearing as a SUBSTRING inside a larger
11
+ * string leaf (e.g. an id embedded in a CSS selector). The substring case is
12
+ * pattern-matching inside arbitrary text, so it additionally guards against
13
+ * common short values (small numbers, HTTP-status-shaped numbers, booleans)
14
+ * that would otherwise false-positive against unrelated params.
15
+ */
16
+ export interface CaptureEntry {
17
+ name: string;
18
+ value: unknown;
19
+ }
20
+ /**
21
+ * Rewrite literal values in `params` that match an earlier `saveAs` capture
22
+ * back into `{{var:name.path}}` references. `captures` must only contain
23
+ * steps that precede this one in the sequence being built.
24
+ */
25
+ export declare function substituteCapturedValues(params: Record<string, any>, captures: CaptureEntry[]): Record<string, any>;
26
+ //# sourceMappingURL=interpolation-reverse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interpolation-reverse.d.ts","sourceRoot":"","sources":["../../src/tools/interpolation-reverse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;CAChB;AAwGD;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAGnH"}
@@ -0,0 +1,130 @@
1
+ /**
2
+ * The inverse of interpolation.ts: given values a `saveAs` step already
3
+ * captured earlier in the same history, find literal values in a later
4
+ * step's params that came from those captures and rewrite them back to
5
+ * `{{var:name.path}}` tokens - what a person hand-templatizing a recorded
6
+ * sequence does today (see references/sequences.md).
7
+ *
8
+ * Two match shapes, both driven by exact string/number equality (never
9
+ * fuzzy): a param leaf whose ENTIRE value equals a captured value anywhere
10
+ * in its tree, and a captured value appearing as a SUBSTRING inside a larger
11
+ * string leaf (e.g. an id embedded in a CSS selector). The substring case is
12
+ * pattern-matching inside arbitrary text, so it additionally guards against
13
+ * common short values (small numbers, HTTP-status-shaped numbers, booleans)
14
+ * that would otherwise false-positive against unrelated params.
15
+ */
16
+ const MAX_DEPTH = 6;
17
+ /** Whole-value match: any string/number, however short - it's an exact
18
+ * equality on the ENTIRE leaf, not a substring, so the false-positive risk
19
+ * a length floor exists to prevent doesn't apply here. */
20
+ const MIN_WHOLE_STRING_LEN = 1;
21
+ /** Substring match: a captured value gets pattern-matched against arbitrary
22
+ * text, so short/common values need a floor - "2" appearing inside a
23
+ * string is not evidence it came from a capture. */
24
+ const MIN_EMBED_LEN = 4;
25
+ /** Numbers common enough by coincidence (HTTP statuses, small counters,
26
+ * booleans-as-0/1) that matching them proves nothing about provenance. */
27
+ const COMMON_NUMBER_BLOCKLIST = new Set([
28
+ 0, 1, 2, 3, 4, 5, 10, 100,
29
+ 200, 201, 202, 204, 301, 302, 304, 400, 401, 403, 404, 405, 409, 422, 429, 500, 502, 503, 504,
30
+ ]);
31
+ function isSubstitutableNumber(n) {
32
+ return Number.isFinite(n) && !COMMON_NUMBER_BLOCKLIST.has(n);
33
+ }
34
+ /** DFS for a path to a leaf inside `tree` that strictly equals `target`. */
35
+ function findPath(tree, target, path = [], depth = 0) {
36
+ if (tree === target)
37
+ return path;
38
+ if (depth >= MAX_DEPTH || tree === null || typeof tree !== 'object')
39
+ return null;
40
+ for (const key of Object.keys(tree)) {
41
+ const found = findPath(tree[key], target, [...path, key], depth + 1);
42
+ if (found)
43
+ return found;
44
+ }
45
+ return null;
46
+ }
47
+ function pathToVarToken(name, path) {
48
+ let out = name;
49
+ for (const seg of path) {
50
+ out += /^[^.[\]]+$/.test(seg) ? `.${seg}` : `['${seg}']`;
51
+ }
52
+ return `{{var:${out}}}`;
53
+ }
54
+ /** Try a whole-leaf match (the entire param value equals a captured value). */
55
+ function matchWhole(value, captures) {
56
+ if (typeof value === 'string' && value.length < MIN_WHOLE_STRING_LEN)
57
+ return null;
58
+ if (typeof value === 'number' && !isSubstitutableNumber(value))
59
+ return null;
60
+ for (const capture of captures) {
61
+ const path = findPath(capture.value, value);
62
+ if (path)
63
+ return pathToVarToken(capture.name, path);
64
+ }
65
+ return null;
66
+ }
67
+ function collectLeaves(tree, path = [], depth = 0, out = []) {
68
+ if (depth >= MAX_DEPTH || tree === null || tree === undefined)
69
+ return out;
70
+ if (typeof tree === 'string') {
71
+ if (tree.length >= MIN_EMBED_LEN)
72
+ out.push({ path, str: tree });
73
+ }
74
+ else if (typeof tree === 'number') {
75
+ if (isSubstitutableNumber(tree) && String(tree).length >= MIN_EMBED_LEN)
76
+ out.push({ path, str: String(tree) });
77
+ }
78
+ else if (typeof tree === 'object') {
79
+ for (const key of Object.keys(tree)) {
80
+ collectLeaves(tree[key], [...path, key], depth + 1, out);
81
+ }
82
+ }
83
+ return out;
84
+ }
85
+ /** Replace every occurrence of a capture's leaf values inside `str`, longest
86
+ * match first so a longer id doesn't get partially clobbered by a shorter
87
+ * one nested inside it. */
88
+ function substituteEmbedded(str, capture) {
89
+ const leaves = collectLeaves(capture.value).sort((a, b) => b.str.length - a.str.length);
90
+ let result = str;
91
+ for (const leaf of leaves) {
92
+ if (result.includes(leaf.str)) {
93
+ result = result.split(leaf.str).join(pathToVarToken(capture.name, leaf.path));
94
+ }
95
+ }
96
+ return result;
97
+ }
98
+ function walk(value, captures) {
99
+ if (Array.isArray(value))
100
+ return value.map(item => walk(item, captures));
101
+ if (value !== null && typeof value === 'object') {
102
+ const out = {};
103
+ for (const key of Object.keys(value))
104
+ out[key] = walk(value[key], captures);
105
+ return out;
106
+ }
107
+ if (typeof value === 'string' || typeof value === 'number') {
108
+ const whole = matchWhole(value, captures);
109
+ if (whole)
110
+ return whole;
111
+ if (typeof value === 'string') {
112
+ let result = value;
113
+ for (const capture of captures)
114
+ result = substituteEmbedded(result, capture);
115
+ return result;
116
+ }
117
+ }
118
+ return value;
119
+ }
120
+ /**
121
+ * Rewrite literal values in `params` that match an earlier `saveAs` capture
122
+ * back into `{{var:name.path}}` references. `captures` must only contain
123
+ * steps that precede this one in the sequence being built.
124
+ */
125
+ export function substituteCapturedValues(params, captures) {
126
+ if (captures.length === 0)
127
+ return params;
128
+ return walk(params, captures);
129
+ }
130
+ //# sourceMappingURL=interpolation-reverse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interpolation-reverse.js","sourceRoot":"","sources":["../../src/tools/interpolation-reverse.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=interpolation-reverse.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interpolation-reverse.test.d.ts","sourceRoot":"","sources":["../../src/tools/interpolation-reverse.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,76 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { substituteCapturedValues } from './interpolation-reverse.js';
3
+ import { interpolateParams } from './interpolation.js';
4
+ describe('substituteCapturedValues', () => {
5
+ it('rewrites a whole-value literal that matches a captured value', () => {
6
+ const captures = [
7
+ { name: 'mint', value: { ok: true, status: 200, body: { url: 'https://app.test/mint/abc123def' } } },
8
+ ];
9
+ const params = { action: 'goto', url: 'https://app.test/mint/abc123def' };
10
+ expect(substituteCapturedValues(params, captures)).toEqual({
11
+ action: 'goto',
12
+ url: '{{var:mint.body.url}}',
13
+ });
14
+ });
15
+ it('rewrites a literal embedded inside a larger string (e.g. a CSS selector)', () => {
16
+ const captures = [{ name: 'personId', value: 48213 }];
17
+ const params = { selector: '[data-row-key="48213"]' };
18
+ expect(substituteCapturedValues(params, captures)).toEqual({
19
+ selector: '[data-row-key="{{var:personId}}"]',
20
+ });
21
+ });
22
+ it('emits a bare {{var:name}} token when the capture itself is the leaf (no nesting)', () => {
23
+ const captures = [{ name: 'personId', value: 48213 }];
24
+ const params = { id: 48213 };
25
+ expect(substituteCapturedValues(params, captures)).toEqual({ id: '{{var:personId}}' });
26
+ });
27
+ it('does not substitute a small/common number even if it exactly matches a capture', () => {
28
+ const captures = [{ name: 'mint', value: { status: 200 } }];
29
+ const params = { retryStatus: 200 };
30
+ expect(substituteCapturedValues(params, captures)).toEqual({ retryStatus: 200 });
31
+ });
32
+ it('does not substitute booleans', () => {
33
+ const captures = [{ name: 'mint', value: { ok: true } }];
34
+ const params = { enabled: true };
35
+ expect(substituteCapturedValues(params, captures)).toEqual({ enabled: true });
36
+ });
37
+ it('does not substitute a short embedded value below the length floor', () => {
38
+ const captures = [{ name: 'code', value: 'ab' }];
39
+ const params = { path: '/x/ab/y' };
40
+ expect(substituteCapturedValues(params, captures)).toEqual({ path: '/x/ab/y' });
41
+ });
42
+ it('leaves unrelated literals untouched', () => {
43
+ const captures = [{ name: 'mint', value: { body: { url: 'https://app.test/mint/abc123def' } } }];
44
+ const params = { action: 'goto', url: 'https://app.test/other-page' };
45
+ expect(substituteCapturedValues(params, captures)).toEqual(params);
46
+ });
47
+ it('walks arrays and nested objects', () => {
48
+ const captures = [{ name: 'personId', value: 48213 }];
49
+ const params = { rows: [{ id: 48213 }, { id: 999999 }] };
50
+ expect(substituteCapturedValues(params, captures)).toEqual({
51
+ rows: [{ id: '{{var:personId}}' }, { id: 999999 }],
52
+ });
53
+ });
54
+ it('prefers the earliest capture on a value collision', () => {
55
+ const captures = [
56
+ { name: 'first', value: 'shared-value-123' },
57
+ { name: 'second', value: 'shared-value-123' },
58
+ ];
59
+ const params = { x: 'shared-value-123' };
60
+ expect(substituteCapturedValues(params, captures)).toEqual({ x: '{{var:first}}' });
61
+ });
62
+ it('is a no-op with no captures', () => {
63
+ const params = { url: 'https://app.test/mint/abc123def' };
64
+ expect(substituteCapturedValues(params, [])).toBe(params);
65
+ });
66
+ it('produces tokens that interpolateParams resolves back to the original value', () => {
67
+ const captures = [
68
+ { name: 'mint', value: { ok: true, status: 200, body: { url: 'https://app.test/mint/abc123def' } } },
69
+ ];
70
+ const params = { url: 'https://app.test/mint/abc123def' };
71
+ const substituted = substituteCapturedValues(params, captures);
72
+ const store = { mint: captures[0].value };
73
+ expect(interpolateParams(substituted, store, 0).url).toBe('https://app.test/mint/abc123def');
74
+ });
75
+ });
76
+ //# sourceMappingURL=interpolation-reverse.test.js.map