@tangle-network/browser-agent-driver 0.31.0 → 0.33.0
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/artifacts/filesystem-sink.d.ts +1 -1
- package/dist/artifacts/filesystem-sink.js +1 -1
- package/dist/brain/index.d.ts +16 -9
- package/dist/brain/index.d.ts.map +1 -1
- package/dist/brain/index.js +75 -72
- package/dist/brain/index.js.map +1 -1
- package/dist/browser-launch.js +1 -3
- package/dist/browser-launch.js.map +1 -1
- package/dist/captcha.d.ts.map +1 -1
- package/dist/captcha.js +1 -3
- package/dist/captcha.js.map +1 -1
- package/dist/cli-attach.d.ts +2 -2
- package/dist/cli-attach.js +2 -2
- package/dist/cli-design-audit.d.ts.map +1 -1
- package/dist/cli-design-audit.js +14 -24
- package/dist/cli-design-audit.js.map +1 -1
- package/dist/cli-jobs.js +4 -13
- package/dist/cli-jobs.js.map +1 -1
- package/dist/cli-patterns.d.ts +1 -1
- package/dist/cli-patterns.d.ts.map +1 -1
- package/dist/cli.js +26 -28
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +5 -3
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -0
- package/dist/config.js.map +1 -1
- package/dist/design/audit/attribution/types.d.ts +3 -3
- package/dist/design/audit/attribution/types.d.ts.map +1 -1
- package/dist/design/audit/attribution/types.js +2 -2
- package/dist/design/audit/build-result.d.ts +71 -0
- package/dist/design/audit/build-result.d.ts.map +1 -0
- package/dist/design/audit/build-result.js +251 -0
- package/dist/design/audit/build-result.js.map +1 -0
- package/dist/design/audit/classify-ensemble.d.ts +1 -1
- package/dist/design/audit/classify-ensemble.d.ts.map +1 -1
- package/dist/design/audit/ethics/check.d.ts +2 -2
- package/dist/design/audit/ethics/check.d.ts.map +1 -1
- package/dist/design/audit/ethics/check.js +1 -1
- package/dist/design/audit/ethics/loader.d.ts +1 -1
- package/dist/design/audit/ethics/loader.d.ts.map +1 -1
- package/dist/design/audit/evaluate.d.ts +5 -2
- package/dist/design/audit/evaluate.d.ts.map +1 -1
- package/dist/design/audit/evaluate.js +10 -4
- package/dist/design/audit/evaluate.js.map +1 -1
- package/dist/design/audit/first-principles-mode.d.ts +1 -1
- package/dist/design/audit/first-principles-mode.d.ts.map +1 -1
- package/dist/design/audit/modality/android.d.ts +1 -1
- package/dist/design/audit/modality/android.d.ts.map +1 -1
- package/dist/design/audit/modality/html.d.ts +1 -1
- package/dist/design/audit/modality/html.d.ts.map +1 -1
- package/dist/design/audit/modality/ios.d.ts +1 -1
- package/dist/design/audit/modality/ios.d.ts.map +1 -1
- package/dist/design/audit/modality/types.d.ts +2 -2
- package/dist/design/audit/modality/types.d.ts.map +1 -1
- package/dist/design/audit/modality/types.js +1 -1
- package/dist/design/audit/patches/generate.d.ts +57 -0
- package/dist/design/audit/patches/generate.d.ts.map +1 -0
- package/dist/design/audit/patches/generate.js +168 -0
- package/dist/design/audit/patches/generate.js.map +1 -0
- package/dist/design/audit/patches/parse.d.ts +1 -1
- package/dist/design/audit/patches/parse.d.ts.map +1 -1
- package/dist/design/audit/patches/render.d.ts +1 -1
- package/dist/design/audit/patches/render.d.ts.map +1 -1
- package/dist/design/audit/patches/severity-enforcement.d.ts +1 -1
- package/dist/design/audit/patches/severity-enforcement.d.ts.map +1 -1
- package/dist/design/audit/patches/validate.d.ts +7 -1
- package/dist/design/audit/patches/validate.d.ts.map +1 -1
- package/dist/design/audit/patches/validate.js +8 -1
- package/dist/design/audit/patches/validate.js.map +1 -1
- package/dist/design/audit/patterns/match.d.ts +1 -1
- package/dist/design/audit/patterns/match.d.ts.map +1 -1
- package/dist/design/audit/patterns/types.d.ts +2 -2
- package/dist/design/audit/patterns/types.d.ts.map +1 -1
- package/dist/design/audit/pipeline.d.ts +4 -4
- package/dist/design/audit/pipeline.d.ts.map +1 -1
- package/dist/design/audit/pipeline.js +45 -30
- package/dist/design/audit/pipeline.js.map +1 -1
- package/dist/design/audit/rubric/loader.d.ts +1 -1
- package/dist/design/audit/rubric/loader.d.ts.map +1 -1
- package/dist/design/audit/rubric/rollup-weights.d.ts +1 -1
- package/dist/design/audit/rubric/rollup-weights.d.ts.map +1 -1
- package/dist/design/audit/{v2/types.d.ts → score-types.d.ts} +10 -10
- package/dist/design/audit/score-types.d.ts.map +1 -0
- package/dist/design/audit/{v2/types.js → score-types.js} +2 -2
- package/dist/design/audit/score-types.js.map +1 -0
- package/dist/design/audit/{v2/score.d.ts → score.d.ts} +9 -9
- package/dist/design/audit/score.d.ts.map +1 -0
- package/dist/design/audit/{v2/score.js → score.js} +17 -17
- package/dist/design/audit/score.js.map +1 -0
- package/dist/design/audit/types.d.ts +7 -7
- package/dist/design/audit/types.d.ts.map +1 -1
- package/dist/drivers/cursor-overlay.d.ts +1 -1
- package/dist/drivers/cursor-overlay.d.ts.map +1 -1
- package/dist/drivers/cursor-overlay.js +2 -2
- package/dist/drivers/extract-with-index.d.ts +4 -7
- package/dist/drivers/extract-with-index.d.ts.map +1 -1
- package/dist/drivers/extract-with-index.js +4 -7
- package/dist/drivers/extract-with-index.js.map +1 -1
- package/dist/drivers/overlay-label.d.ts +3 -4
- package/dist/drivers/overlay-label.d.ts.map +1 -1
- package/dist/drivers/overlay-label.js.map +1 -1
- package/dist/drivers/playwright.d.ts +2 -2
- package/dist/drivers/playwright.d.ts.map +1 -1
- package/dist/drivers/playwright.js +10 -24
- package/dist/drivers/playwright.js.map +1 -1
- package/dist/drivers/som-overlay.d.ts +2 -3
- package/dist/drivers/som-overlay.d.ts.map +1 -1
- package/dist/drivers/som-overlay.js +2 -3
- package/dist/drivers/som-overlay.js.map +1 -1
- package/dist/drivers/types.d.ts +3 -9
- package/dist/drivers/types.d.ts.map +1 -1
- package/dist/jobs/anti-bot.js +1 -1
- package/dist/jobs/anti-bot.js.map +1 -1
- package/dist/jobs/types.d.ts +1 -1
- package/dist/jobs/types.d.ts.map +1 -1
- package/dist/multi-actor.d.ts.map +1 -1
- package/dist/multi-actor.js +2 -3
- package/dist/multi-actor.js.map +1 -1
- package/dist/reports/aggregate.js +6 -6
- package/dist/reports/aggregate.js.map +1 -1
- package/dist/reports/tokens.d.ts +0 -8
- package/dist/reports/tokens.d.ts.map +1 -1
- package/dist/reports/tokens.js +1 -15
- package/dist/reports/tokens.js.map +1 -1
- package/dist/reports/types.d.ts +2 -2
- package/dist/reports/types.d.ts.map +1 -1
- package/dist/run-state.d.ts +21 -15
- package/dist/run-state.d.ts.map +1 -1
- package/dist/run-state.js +23 -22
- package/dist/run-state.js.map +1 -1
- package/dist/runner/completion-language.d.ts +2 -0
- package/dist/runner/completion-language.d.ts.map +1 -0
- package/dist/runner/completion-language.js +5 -0
- package/dist/runner/completion-language.js.map +1 -0
- package/dist/runner/direct-start.d.ts +19 -0
- package/dist/runner/direct-start.d.ts.map +1 -0
- package/dist/runner/direct-start.js +295 -0
- package/dist/runner/direct-start.js.map +1 -0
- package/dist/runner/events.d.ts +3 -6
- package/dist/runner/events.d.ts.map +1 -1
- package/dist/runner/events.js.map +1 -1
- package/dist/runner/fan-out.d.ts +6 -9
- package/dist/runner/fan-out.d.ts.map +1 -1
- package/dist/runner/fan-out.js +7 -15
- package/dist/runner/fan-out.js.map +1 -1
- package/dist/runner/goal-decomposer.d.ts +0 -1
- package/dist/runner/goal-decomposer.d.ts.map +1 -1
- package/dist/runner/goal-decomposer.js +0 -1
- package/dist/runner/goal-decomposer.js.map +1 -1
- package/dist/runner/google-flights-preflight.d.ts +35 -0
- package/dist/runner/google-flights-preflight.d.ts.map +1 -0
- package/dist/runner/google-flights-preflight.js +411 -0
- package/dist/runner/google-flights-preflight.js.map +1 -0
- package/dist/runner/interrupt-controller.d.ts +1 -1
- package/dist/runner/interrupt-controller.js +1 -1
- package/dist/runner/overlay-narration.d.ts +1 -1
- package/dist/runner/overlay-narration.js +1 -1
- package/dist/runner/parallel-runner.d.ts +3 -6
- package/dist/runner/parallel-runner.d.ts.map +1 -1
- package/dist/runner/parallel-runner.js +2 -3
- package/dist/runner/parallel-runner.js.map +1 -1
- package/dist/runner/pattern-extractor.d.ts +2 -2
- package/dist/runner/pattern-extractor.js +2 -2
- package/dist/runner/runner.d.ts +15 -39
- package/dist/runner/runner.d.ts.map +1 -1
- package/dist/runner/runner.js +254 -231
- package/dist/runner/runner.js.map +1 -1
- package/dist/runner/stream-webhook.d.ts +1 -1
- package/dist/runner/stream-webhook.js +1 -1
- package/dist/skills/domain-loader.d.ts +1 -2
- package/dist/skills/domain-loader.d.ts.map +1 -1
- package/dist/skills/domain-loader.js +1 -2
- package/dist/skills/domain-loader.js.map +1 -1
- package/dist/telemetry/schema.d.ts +2 -2
- package/dist/telemetry/schema.js +2 -2
- package/dist/test-runner.d.ts +4 -5
- package/dist/test-runner.d.ts.map +1 -1
- package/dist/test-runner.js +2 -3
- package/dist/test-runner.js.map +1 -1
- package/dist/types.d.ts +28 -21
- package/dist/types.d.ts.map +1 -1
- package/package.json +8 -2
- package/dist/design/audit/v2/build-result.d.ts +0 -47
- package/dist/design/audit/v2/build-result.d.ts.map +0 -1
- package/dist/design/audit/v2/build-result.js +0 -163
- package/dist/design/audit/v2/build-result.js.map +0 -1
- package/dist/design/audit/v2/score.d.ts.map +0 -1
- package/dist/design/audit/v2/score.js.map +0 -1
- package/dist/design/audit/v2/types.d.ts.map +0 -1
- package/dist/design/audit/v2/types.js.map +0 -1
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* classification. This module decides when to trigger first-principles mode
|
|
6
6
|
* and queues NovelPatternObservations for fleet mining.
|
|
7
7
|
*/
|
|
8
|
-
import type { EnsembleClassification, NovelPatternObservation } from './
|
|
8
|
+
import type { EnsembleClassification, NovelPatternObservation } from './score-types.js';
|
|
9
9
|
export interface FirstPrinciplesOptions {
|
|
10
10
|
/** Override the minimum ensemble confidence threshold (default 0.6). */
|
|
11
11
|
confidenceThreshold?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"first-principles-mode.d.ts","sourceRoot":"","sources":["../../../src/design/audit/first-principles-mode.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,KAAK,EAAE,sBAAsB,EAAE,uBAAuB,EAAY,MAAM,
|
|
1
|
+
{"version":3,"file":"first-principles-mode.d.ts","sourceRoot":"","sources":["../../../src/design/audit/first-principles-mode.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,KAAK,EAAE,sBAAsB,EAAE,uBAAuB,EAAY,MAAM,kBAAkB,CAAA;AAEjG,MAAM,WAAW,sBAAsB;IACrC,wEAAwE;IACxE,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CAC1C,cAAc,EAAE,sBAAsB,EACtC,IAAI,CAAC,EAAE,sBAAsB,GAC5B,OAAO,CAOT;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE;IACjD,cAAc,EAAE,sBAAsB,CAAA;IACtC,OAAO,EAAE,MAAM,CAAA;IACf,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,GAAG,uBAAuB,CAiB1B;AAED;;;GAGG;AACH,wBAAsB,6BAA6B,CACjD,WAAW,EAAE,uBAAuB,EACpC,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAOf;AAED;;GAEG;AACH,wBAAgB,iCAAiC,CAC/C,WAAW,EAAE,uBAAuB,EACpC,GAAG,CAAC,EAAE,MAAM,GACX,IAAI,CAMN"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* TODO Layer 8: UI Automator bridge, emulator management, ax-tree capture.
|
|
7
7
|
*/
|
|
8
|
-
import type { ModalityAdapter, ModalityInput, Evidence } from '../
|
|
8
|
+
import type { ModalityAdapter, ModalityInput, Evidence } from '../score-types.js';
|
|
9
9
|
export declare class AndroidModalityAdapter implements ModalityAdapter {
|
|
10
10
|
readonly modality: "android";
|
|
11
11
|
capture(_input: ModalityInput): Promise<Evidence>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"android.d.ts","sourceRoot":"","sources":["../../../../src/design/audit/modality/android.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"android.d.ts","sourceRoot":"","sources":["../../../../src/design/audit/modality/android.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEjF,qBAAa,sBAAuB,YAAW,eAAe;IAC5D,QAAQ,CAAC,QAAQ,EAAG,SAAS,CAAS;IAEhC,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC;CAQxD;AAED,eAAO,MAAM,cAAc,wBAA+B,CAAA"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* interface so it can participate in the unified scoring framework. The underlying
|
|
6
6
|
* pipeline is unchanged; this module provides the typed adapter boundary.
|
|
7
7
|
*/
|
|
8
|
-
import type { ModalityAdapter, ModalityInput, Evidence } from '../
|
|
8
|
+
import type { ModalityAdapter, ModalityInput, Evidence } from '../score-types.js';
|
|
9
9
|
export declare class HtmlModalityAdapter implements ModalityAdapter {
|
|
10
10
|
readonly modality: "html";
|
|
11
11
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../../../src/design/audit/modality/html.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,QAAQ,EAAqB,MAAM,
|
|
1
|
+
{"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../../../src/design/audit/modality/html.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,QAAQ,EAAqB,MAAM,mBAAmB,CAAA;AAEpG,qBAAa,mBAAoB,YAAW,eAAe;IACzD,QAAQ,CAAC,QAAQ,EAAG,MAAM,CAAS;IAEnC;;;;;;;OAOG;IACG,OAAO,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC;CAevD;AAmBD,eAAO,MAAM,WAAW,qBAA4B,CAAA"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*
|
|
8
8
|
* TODO Layer 8: XCUITest bridge, simulator management, ax-tree capture.
|
|
9
9
|
*/
|
|
10
|
-
import type { ModalityAdapter, ModalityInput, Evidence } from '../
|
|
10
|
+
import type { ModalityAdapter, ModalityInput, Evidence } from '../score-types.js';
|
|
11
11
|
export declare class IosModalityAdapter implements ModalityAdapter {
|
|
12
12
|
readonly modality: "ios";
|
|
13
13
|
capture(_input: ModalityInput): Promise<Evidence>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ios.d.ts","sourceRoot":"","sources":["../../../../src/design/audit/modality/ios.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"ios.d.ts","sourceRoot":"","sources":["../../../../src/design/audit/modality/ios.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEjF,qBAAa,kBAAmB,YAAW,eAAe;IACxD,QAAQ,CAAC,QAAQ,EAAG,KAAK,CAAS;IAE5B,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC;CAOxD;AAED,eAAO,MAAM,UAAU,oBAA2B,CAAA"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Layer 8 — Modality adapter type contract.
|
|
3
3
|
*
|
|
4
|
-
* Re-exports the stable shapes from
|
|
4
|
+
* Re-exports the stable shapes from score-types.ts. Each adapter (HTML, iOS,
|
|
5
5
|
* Android) implements the ModalityAdapter interface and produces an Evidence
|
|
6
6
|
* record that flows into the shared Layers 1–7 scoring pipeline unchanged.
|
|
7
7
|
*/
|
|
8
|
-
export type { Modality, ModalityAdapter, ModalityInput, Evidence, SurfaceRecord, SurfaceMeasurements, } from '../
|
|
8
|
+
export type { Modality, ModalityAdapter, ModalityInput, Evidence, SurfaceRecord, SurfaceMeasurements, } from '../score-types.js';
|
|
9
9
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/design/audit/modality/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,YAAY,EACV,QAAQ,EACR,eAAe,EACf,aAAa,EACb,QAAQ,EACR,aAAa,EACb,mBAAmB,GACpB,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/design/audit/modality/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,YAAY,EACV,QAAQ,EACR,eAAe,EACf,aAAa,EACb,QAAQ,EACR,aAAa,EACb,mBAAmB,GACpB,MAAM,mBAAmB,CAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Layer 8 — Modality adapter type contract.
|
|
3
3
|
*
|
|
4
|
-
* Re-exports the stable shapes from
|
|
4
|
+
* Re-exports the stable shapes from score-types.ts. Each adapter (HTML, iOS,
|
|
5
5
|
* Android) implements the ModalityAdapter interface and produces an Evidence
|
|
6
6
|
* record that flows into the shared Layers 1–7 scoring pipeline unchanged.
|
|
7
7
|
*/
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Patch generator — Layer 2's second LLM call.
|
|
3
|
+
*
|
|
4
|
+
* The findings prompt (evaluate.ts) stays slim and focused on scoring +
|
|
5
|
+
* findings. After findings exist, this module makes a SECOND LLM call given
|
|
6
|
+
* those major/critical findings and asks for one Patch per finding. The
|
|
7
|
+
* second-call shape is intentionally narrow: only the patch contract +
|
|
8
|
+
* ground-truth snapshot, nothing else. That keeps each call's cognitive load
|
|
9
|
+
* low and lets us measure them independently.
|
|
10
|
+
*
|
|
11
|
+
* Flow:
|
|
12
|
+
* 1. Filter findings to severity ∈ {major, critical}.
|
|
13
|
+
* 2. Build a focused prompt (snapshot + JSON of those findings).
|
|
14
|
+
* 3. Call the LLM, parse + validate the response, attach valid patches
|
|
15
|
+
* back to their findings by id.
|
|
16
|
+
*
|
|
17
|
+
* On any failure: return findings unchanged. Layer 2 enforcement (downgrade
|
|
18
|
+
* major/critical without a valid patch) runs after this in build-result.ts,
|
|
19
|
+
* so a failed generator → graceful degradation, not a broken pipeline.
|
|
20
|
+
*/
|
|
21
|
+
import type { Brain } from '../../../brain/index.js';
|
|
22
|
+
import type { DesignFinding } from '../score-types.js';
|
|
23
|
+
export declare const DEFAULT_PATCH_SYNTHESIS_SYSTEM = "You are a code-mod author. For each finding below, emit ONE Patch the agent can apply literally. Patches that target HTML or page structure must reference verbatim text in the snapshot. Patches that target source files (CSS/TSX/Tailwind) reference selectors only \u2014 the agent verifies them at apply-time against the source.";
|
|
24
|
+
export interface PatchSynthesisConfig {
|
|
25
|
+
/** Stable system instruction for the patch-generation call. */
|
|
26
|
+
system: string;
|
|
27
|
+
/** Snapshot-grounding and omit rules appended after the schema. */
|
|
28
|
+
groundingRules: string[];
|
|
29
|
+
/** Few-shot or extra examples appended before the final JSON-only instruction. */
|
|
30
|
+
examples?: string[];
|
|
31
|
+
}
|
|
32
|
+
export declare const DEFAULT_PATCH_SYNTHESIS_CONFIG: PatchSynthesisConfig;
|
|
33
|
+
export interface GeneratePatchesOptions {
|
|
34
|
+
brain: Brain;
|
|
35
|
+
/** Page snapshot (accessibility tree). */
|
|
36
|
+
snapshot: string;
|
|
37
|
+
/** Findings from the first LLM call. Only major/critical get patches. */
|
|
38
|
+
findings: DesignFinding[];
|
|
39
|
+
/** Hard cap on the number of findings to send to the LLM. Default 8 — top
|
|
40
|
+
* major/critical by ROI; cheaper to skip stragglers than blow the prompt. */
|
|
41
|
+
maxFindings?: number;
|
|
42
|
+
/** Evolve/GEPA override for the patch synthesis signature. */
|
|
43
|
+
config?: PatchSynthesisConfig;
|
|
44
|
+
}
|
|
45
|
+
export interface GeneratePatchesResult {
|
|
46
|
+
/** Findings with `rawPatches` populated for those that got a patch back. */
|
|
47
|
+
findings: DesignFinding[];
|
|
48
|
+
/** LLM tokens consumed by the patch call. */
|
|
49
|
+
tokensUsed: number;
|
|
50
|
+
/** Per-finding diagnostics for telemetry / debugging. */
|
|
51
|
+
notes: Array<{
|
|
52
|
+
findingId: string;
|
|
53
|
+
reason: string;
|
|
54
|
+
}>;
|
|
55
|
+
}
|
|
56
|
+
export declare function generatePatches(opts: GeneratePatchesOptions): Promise<GeneratePatchesResult>;
|
|
57
|
+
//# sourceMappingURL=generate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../../src/design/audit/patches/generate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAGtD,eAAO,MAAM,8BAA8B,4UAC2R,CAAA;AAEtU,MAAM,WAAW,oBAAoB;IACnC,+DAA+D;IAC/D,MAAM,EAAE,MAAM,CAAA;IACd,mEAAmE;IACnE,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,kFAAkF;IAClF,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;CACpB;AAED,eAAO,MAAM,8BAA8B,EAAE,oBAQ5C,CAAA;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,KAAK,CAAA;IACZ,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAA;IAChB,yEAAyE;IACzE,QAAQ,EAAE,aAAa,EAAE,CAAA;IACzB;kFAC8E;IAC9E,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,8DAA8D;IAC9D,MAAM,CAAC,EAAE,oBAAoB,CAAA;CAC9B;AAED,MAAM,WAAW,qBAAqB;IACpC,4EAA4E;IAC5E,QAAQ,EAAE,aAAa,EAAE,CAAA;IACzB,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAA;IAClB,yDAAyD;IACzD,KAAK,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CACpD;AAID,wBAAsB,eAAe,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAoDlG"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Patch generator — Layer 2's second LLM call.
|
|
3
|
+
*
|
|
4
|
+
* The findings prompt (evaluate.ts) stays slim and focused on scoring +
|
|
5
|
+
* findings. After findings exist, this module makes a SECOND LLM call given
|
|
6
|
+
* those major/critical findings and asks for one Patch per finding. The
|
|
7
|
+
* second-call shape is intentionally narrow: only the patch contract +
|
|
8
|
+
* ground-truth snapshot, nothing else. That keeps each call's cognitive load
|
|
9
|
+
* low and lets us measure them independently.
|
|
10
|
+
*
|
|
11
|
+
* Flow:
|
|
12
|
+
* 1. Filter findings to severity ∈ {major, critical}.
|
|
13
|
+
* 2. Build a focused prompt (snapshot + JSON of those findings).
|
|
14
|
+
* 3. Call the LLM, parse + validate the response, attach valid patches
|
|
15
|
+
* back to their findings by id.
|
|
16
|
+
*
|
|
17
|
+
* On any failure: return findings unchanged. Layer 2 enforcement (downgrade
|
|
18
|
+
* major/critical without a valid patch) runs after this in build-result.ts,
|
|
19
|
+
* so a failed generator → graceful degradation, not a broken pipeline.
|
|
20
|
+
*/
|
|
21
|
+
import { parsePatches } from './parse.js';
|
|
22
|
+
export const DEFAULT_PATCH_SYNTHESIS_SYSTEM = 'You are a code-mod author. For each finding below, emit ONE Patch the agent can apply literally. Patches that target HTML or page structure must reference verbatim text in the snapshot. Patches that target source files (CSS/TSX/Tailwind) reference selectors only — the agent verifies them at apply-time against the source.';
|
|
23
|
+
export const DEFAULT_PATCH_SYNTHESIS_CONFIG = {
|
|
24
|
+
system: DEFAULT_PATCH_SYNTHESIS_SYSTEM,
|
|
25
|
+
groundingRules: [
|
|
26
|
+
'target.scope MUST be "css" by default. Use "html" or "structural" ONLY when you are paste-copying a literal substring from the SNAPSHOT BLOCK above (not from your imagination, not from typical-site assumptions).',
|
|
27
|
+
'Before setting target.scope to "html", verify diff.before is a verbatim substring of the snapshot block above. If it is not, change target.scope to "css".',
|
|
28
|
+
'For css / tsx / jsx / tailwind / module-css / styled-component scopes, diff.before is a source-file fragment the agent resolves at apply-time; the audit does not validate it. This is the safe default.',
|
|
29
|
+
'If a finding does not admit a clean patch, OMIT it (do not invent diffs).',
|
|
30
|
+
],
|
|
31
|
+
};
|
|
32
|
+
const DEFAULT_MAX = 8;
|
|
33
|
+
export async function generatePatches(opts) {
|
|
34
|
+
const max = opts.maxFindings ?? DEFAULT_MAX;
|
|
35
|
+
const eligible = opts.findings
|
|
36
|
+
.filter(f => f.severity === 'major' || f.severity === 'critical')
|
|
37
|
+
.slice(0, max);
|
|
38
|
+
if (eligible.length === 0) {
|
|
39
|
+
return { findings: opts.findings, tokensUsed: 0, notes: [] };
|
|
40
|
+
}
|
|
41
|
+
const config = opts.config ?? DEFAULT_PATCH_SYNTHESIS_CONFIG;
|
|
42
|
+
const prompt = buildPrompt(opts.snapshot, eligible, config);
|
|
43
|
+
let raw = '';
|
|
44
|
+
let tokensUsed = 0;
|
|
45
|
+
try {
|
|
46
|
+
const llm = await opts.brain.complete(config.system, prompt, { maxOutputTokens: 2000 });
|
|
47
|
+
raw = llm.text ?? '';
|
|
48
|
+
tokensUsed = llm.tokensUsed ?? 0;
|
|
49
|
+
}
|
|
50
|
+
catch (err) {
|
|
51
|
+
return {
|
|
52
|
+
findings: opts.findings,
|
|
53
|
+
tokensUsed: 0,
|
|
54
|
+
notes: [{ findingId: '*', reason: `LLM call failed: ${err.message}` }],
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
const parsed = parseGeneratorResponse(raw);
|
|
58
|
+
const byFinding = new Map();
|
|
59
|
+
for (const item of parsed.items) {
|
|
60
|
+
if (item.findingId)
|
|
61
|
+
byFinding.set(item.findingId, item.patch);
|
|
62
|
+
}
|
|
63
|
+
const notes = [];
|
|
64
|
+
const updated = opts.findings.map(f => {
|
|
65
|
+
const patchRaw = byFinding.get(f.id);
|
|
66
|
+
if (!patchRaw) {
|
|
67
|
+
if (f.severity === 'major' || f.severity === 'critical') {
|
|
68
|
+
notes.push({ findingId: f.id, reason: 'no patch in generator response' });
|
|
69
|
+
}
|
|
70
|
+
return f;
|
|
71
|
+
}
|
|
72
|
+
// Stamp the canonical findingId onto the patch (LLM may have used a placeholder).
|
|
73
|
+
const stamped = withFindingId(patchRaw, f.id);
|
|
74
|
+
// Quick parse check so the build-result stage sees a sane shape.
|
|
75
|
+
const parsedOne = parsePatches([stamped]);
|
|
76
|
+
if (parsedOne.patches.length === 0) {
|
|
77
|
+
notes.push({ findingId: f.id, reason: `parse failed: ${parsedOne.errors[0]?.reason ?? 'unknown'}` });
|
|
78
|
+
return f;
|
|
79
|
+
}
|
|
80
|
+
return { ...f, rawPatches: [stamped] };
|
|
81
|
+
});
|
|
82
|
+
return { findings: updated, tokensUsed, notes };
|
|
83
|
+
}
|
|
84
|
+
function buildPrompt(snapshot, findings, config) {
|
|
85
|
+
// Trim the snapshot to keep the prompt cheap. The findings reference visible
|
|
86
|
+
// elements; trimming should not cost meaningful context.
|
|
87
|
+
const trimmedSnapshot = snapshot.length > 8000 ? snapshot.slice(0, 8000) + '\n…[truncated]' : snapshot;
|
|
88
|
+
const findingsBlock = findings.map(f => ({
|
|
89
|
+
id: f.id,
|
|
90
|
+
severity: f.severity,
|
|
91
|
+
description: f.description,
|
|
92
|
+
location: f.location,
|
|
93
|
+
cssSelector: f.cssSelector,
|
|
94
|
+
suggestion: f.suggestion,
|
|
95
|
+
}));
|
|
96
|
+
return `PAGE SNAPSHOT (accessibility-tree text):
|
|
97
|
+
${trimmedSnapshot}
|
|
98
|
+
|
|
99
|
+
FINDINGS THAT NEED A PATCH (one per id):
|
|
100
|
+
${JSON.stringify(findingsBlock, null, 2)}
|
|
101
|
+
|
|
102
|
+
For each finding above, emit ONE Patch object. Required shape:
|
|
103
|
+
{
|
|
104
|
+
"patchId": "p-<short-stable-id>",
|
|
105
|
+
"findingId": "<copy verbatim from the finding>",
|
|
106
|
+
"scope": "page" | "section" | "component" | "system",
|
|
107
|
+
"target": {
|
|
108
|
+
"scope": "css" | "tsx" | "jsx" | "tailwind" | "module-css" | "styled-component" | "html" | "structural",
|
|
109
|
+
"cssSelector": "...", // OR
|
|
110
|
+
"filePath": "...", // OR
|
|
111
|
+
"componentName": "..." // at least ONE must be set
|
|
112
|
+
},
|
|
113
|
+
"diff": {
|
|
114
|
+
"before": "<verbatim text the agent will search-replace>",
|
|
115
|
+
"after": "<replacement text>"
|
|
116
|
+
},
|
|
117
|
+
"testThatProves": { "kind": "rerun-audit" | "visual-snapshot" | "a11y-rule" | "storybook" | "unit" | "manual", "description": "..." },
|
|
118
|
+
"rollback": { "kind": "css-disable" | "git-revert" | "manual" },
|
|
119
|
+
"estimatedDelta": { "dim": "product_intent" | "visual_craft" | "trust_clarity" | "workflow" | "content_ia", "delta": -3..3 },
|
|
120
|
+
"estimatedDeltaConfidence": "high" | "medium" | "low" | "untested"
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
Snapshot-anchoring rule (READ CAREFULLY — most patch failures fail this):
|
|
124
|
+
${config.groundingRules.map((rule) => `- ${rule}`).join('\n')}
|
|
125
|
+
${config.examples?.length ? `\nEXAMPLES:\n${config.examples.join('\n\n')}\n` : ''}
|
|
126
|
+
|
|
127
|
+
RESPOND WITH ONLY a JSON object:
|
|
128
|
+
{
|
|
129
|
+
"patches": [
|
|
130
|
+
{ "findingId": "<id>", "patch": <the Patch object above> }
|
|
131
|
+
]
|
|
132
|
+
}`;
|
|
133
|
+
}
|
|
134
|
+
function parseGeneratorResponse(raw) {
|
|
135
|
+
let text = raw.trim();
|
|
136
|
+
if (text.startsWith('```')) {
|
|
137
|
+
text = text.replace(/^```(?:json)?\n?/, '').replace(/\n?```$/, '');
|
|
138
|
+
}
|
|
139
|
+
const start = text.indexOf('{');
|
|
140
|
+
const end = text.lastIndexOf('}');
|
|
141
|
+
if (start < 0 || end <= start)
|
|
142
|
+
return { items: [] };
|
|
143
|
+
try {
|
|
144
|
+
const obj = JSON.parse(text.slice(start, end + 1));
|
|
145
|
+
if (!Array.isArray(obj.patches))
|
|
146
|
+
return { items: [] };
|
|
147
|
+
const items = [];
|
|
148
|
+
for (const p of obj.patches) {
|
|
149
|
+
if (!p || typeof p !== 'object')
|
|
150
|
+
continue;
|
|
151
|
+
const rec = p;
|
|
152
|
+
if (typeof rec.findingId !== 'string')
|
|
153
|
+
continue;
|
|
154
|
+
items.push({ findingId: rec.findingId, patch: rec.patch ?? p });
|
|
155
|
+
}
|
|
156
|
+
return { items };
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
return { items: [] };
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
function withFindingId(raw, findingId) {
|
|
163
|
+
if (raw && typeof raw === 'object') {
|
|
164
|
+
return { ...raw, findingId };
|
|
165
|
+
}
|
|
166
|
+
return raw;
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=generate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../../src/design/audit/patches/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* rather than throwing — the calling pipeline batches many candidate patches
|
|
6
6
|
* per audit and a single malformed entry must not abort the whole run.
|
|
7
7
|
*/
|
|
8
|
-
import type { Patch } from '../
|
|
8
|
+
import type { Patch } from '../score-types.js';
|
|
9
9
|
export interface ParseResult {
|
|
10
10
|
patch: Patch | null;
|
|
11
11
|
reason?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../../src/design/audit/patches/parse.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,KAAK,EAQN,MAAM,
|
|
1
|
+
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../../src/design/audit/patches/parse.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,KAAK,EAQN,MAAM,mBAAmB,CAAA;AAgB1B,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAwDD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW,CA+CpD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG;IAC1C,OAAO,EAAE,KAAK,EAAE,CAAA;IAChB,MAAM,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CACjD,CAYA"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* When filePath is unknown, returns null — the agent must use before/after for
|
|
6
6
|
* search-replace instead.
|
|
7
7
|
*/
|
|
8
|
-
import type { Patch } from '../
|
|
8
|
+
import type { Patch } from '../score-types.js';
|
|
9
9
|
/**
|
|
10
10
|
* Render a minimal unified diff (1-hunk, 3 lines context) from a patch.
|
|
11
11
|
* Returns null when:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../../../src/design/audit/patches/render.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../../../src/design/audit/patches/render.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAE9C;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,IAAI,CAuB7D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAYvD"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Findings without patches are downgraded to `minor` with an explanatory note.
|
|
5
5
|
* This runs as a post-processing step after patch validation.
|
|
6
6
|
*/
|
|
7
|
-
import type { DesignFinding } from '../
|
|
7
|
+
import type { DesignFinding } from '../score-types.js';
|
|
8
8
|
export interface EnforcementRecord {
|
|
9
9
|
findingId: string;
|
|
10
10
|
fromSeverity: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"severity-enforcement.d.ts","sourceRoot":"","sources":["../../../../src/design/audit/patches/severity-enforcement.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAS,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"severity-enforcement.d.ts","sourceRoot":"","sources":["../../../../src/design/audit/patches/severity-enforcement.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAS,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAE7D,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,OAAO,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,aAAa,EAAE,CAAA;IACzB,UAAU,EAAE,iBAAiB,EAAE,CAAA;CAChC;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,aAAa,EAAE,EACzB,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,GACzB,iBAAiB,CAkCnB"}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* - `estimatedDelta.delta` must be in [-3, 3]. Larger claims are almost
|
|
11
11
|
* always over-confident on a 1–10 scale.
|
|
12
12
|
*/
|
|
13
|
-
import type { Patch } from '../
|
|
13
|
+
import type { Patch } from '../score-types.js';
|
|
14
14
|
export type ValidationReason = 'before-not-in-snapshot' | 'target-missing-locator' | 'estimated-delta-out-of-range' | 'before-empty';
|
|
15
15
|
export interface ValidationResult {
|
|
16
16
|
valid: boolean;
|
|
@@ -19,6 +19,12 @@ export interface ValidationResult {
|
|
|
19
19
|
/**
|
|
20
20
|
* Validate a single patch against a page snapshot. Reports all issues in one
|
|
21
21
|
* pass so callers can surface every problem to the agent at once.
|
|
22
|
+
*
|
|
23
|
+
* Snapshot-anchoring rule: `diff.before` must appear verbatim in the page
|
|
24
|
+
* snapshot ONLY when the patch targets the snapshot itself — i.e. `target.scope`
|
|
25
|
+
* is `html` or `structural`. CSS / TSX / Tailwind patches modify source files
|
|
26
|
+
* the audit can't see, so the snapshot check would always fail for them. The
|
|
27
|
+
* agent verifies those patches at apply-time against the actual source file.
|
|
22
28
|
*/
|
|
23
29
|
export declare function validatePatch(patch: Patch, snapshot: string): ValidationResult;
|
|
24
30
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../../src/design/audit/patches/validate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../../src/design/audit/patches/validate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAE9C,MAAM,MAAM,gBAAgB,GACxB,wBAAwB,GACxB,wBAAwB,GACxB,8BAA8B,GAC9B,cAAc,CAAA;AAElB,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAA;IACd,OAAO,EAAE,gBAAgB,EAAE,CAAA;CAC5B;AAKD;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAyB9E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,KAAK,EAAE,EAChB,QAAQ,EAAE,MAAM,GACf;IAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAAC,OAAO,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,OAAO,EAAE,gBAAgB,EAAE,CAAA;KAAE,CAAC,CAAA;CAAE,CASnF"}
|
|
@@ -15,6 +15,12 @@ const DELTA_MAX = 3;
|
|
|
15
15
|
/**
|
|
16
16
|
* Validate a single patch against a page snapshot. Reports all issues in one
|
|
17
17
|
* pass so callers can surface every problem to the agent at once.
|
|
18
|
+
*
|
|
19
|
+
* Snapshot-anchoring rule: `diff.before` must appear verbatim in the page
|
|
20
|
+
* snapshot ONLY when the patch targets the snapshot itself — i.e. `target.scope`
|
|
21
|
+
* is `html` or `structural`. CSS / TSX / Tailwind patches modify source files
|
|
22
|
+
* the audit can't see, so the snapshot check would always fail for them. The
|
|
23
|
+
* agent verifies those patches at apply-time against the actual source file.
|
|
18
24
|
*/
|
|
19
25
|
export function validatePatch(patch, snapshot) {
|
|
20
26
|
const reasons = [];
|
|
@@ -22,10 +28,11 @@ export function validatePatch(patch, snapshot) {
|
|
|
22
28
|
if (!target.cssSelector && !target.filePath && !target.componentName) {
|
|
23
29
|
reasons.push('target-missing-locator');
|
|
24
30
|
}
|
|
31
|
+
const requiresSnapshotMatch = target.scope === 'html' || target.scope === 'structural';
|
|
25
32
|
if (diff.before.length === 0) {
|
|
26
33
|
reasons.push('before-empty');
|
|
27
34
|
}
|
|
28
|
-
else if (!snapshot.includes(diff.before)) {
|
|
35
|
+
else if (requiresSnapshotMatch && !snapshot.includes(diff.before)) {
|
|
29
36
|
reasons.push('before-not-in-snapshot');
|
|
30
37
|
}
|
|
31
38
|
if (estimatedDelta.delta < DELTA_MIN ||
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../../src/design/audit/patches/validate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAeH,MAAM,SAAS,GAAG,CAAC,CAAC,CAAA;AACpB,MAAM,SAAS,GAAG,CAAC,CAAA;AAEnB
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../../src/design/audit/patches/validate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAeH,MAAM,SAAS,GAAG,CAAC,CAAC,CAAA;AACpB,MAAM,SAAS,GAAG,CAAC,CAAA;AAEnB;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa,CAAC,KAAY,EAAE,QAAgB;IAC1D,MAAM,OAAO,GAAuB,EAAE,CAAA;IACtC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,KAAK,CAAA;IAE9C,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;QACrE,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;IACxC,CAAC;IAED,MAAM,qBAAqB,GAAG,MAAM,CAAC,KAAK,KAAK,MAAM,IAAI,MAAM,CAAC,KAAK,KAAK,YAAY,CAAA;IAEtF,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;IAC9B,CAAC;SAAM,IAAI,qBAAqB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACpE,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;IACxC,CAAC;IAED,IACE,cAAc,CAAC,KAAK,GAAG,SAAS;QAChC,cAAc,CAAC,KAAK,GAAG,SAAS;QAChC,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,EACtC,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAA;IAC9C,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE,CAAA;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,OAAgB,EAChB,QAAgB;IAEhB,MAAM,KAAK,GAAY,EAAE,CAAA;IACzB,MAAM,OAAO,GAAyD,EAAE,CAAA;IACxE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;QAC7C,IAAI,MAAM,CAAC,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;;YAC9B,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAA;IACvD,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;AAC3B,CAAC"}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* Currently returns [] (cold-start). The interface is stable.
|
|
9
9
|
*/
|
|
10
10
|
import type { PatternMatch } from './types.js';
|
|
11
|
-
import type { PageType, Dimension } from '../
|
|
11
|
+
import type { PageType, Dimension } from '../score-types.js';
|
|
12
12
|
export interface MatchContext {
|
|
13
13
|
pageType: PageType;
|
|
14
14
|
weakDimensions: Dimension[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"match.d.ts","sourceRoot":"","sources":["../../../../src/design/audit/patterns/match.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAW,YAAY,EAAgB,MAAM,YAAY,CAAA;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"match.d.ts","sourceRoot":"","sources":["../../../../src/design/audit/patterns/match.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAW,YAAY,EAAgB,MAAM,YAAY,CAAA;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAG5D,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,QAAQ,CAAA;IAClB,cAAc,EAAE,SAAS,EAAE,CAAA;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,YAAY,EACjB,IAAI,GAAE,MAAU,GACf,OAAO,CAAC,YAAY,EAAE,CAAC,CA+BzB"}
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
* The mining and matching implementations are scaffolded; real clustering runs
|
|
10
10
|
* as a Cloudflare Worker cron once the attribution data accumulates.
|
|
11
11
|
*/
|
|
12
|
-
export type { PageType, Dimension } from '../
|
|
13
|
-
import type { PageType, Dimension } from '../
|
|
12
|
+
export type { PageType, Dimension } from '../score-types.js';
|
|
13
|
+
import type { PageType, Dimension } from '../score-types.js';
|
|
14
14
|
export interface PatternScaffold {
|
|
15
15
|
description: string;
|
|
16
16
|
referenceTsx?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/design/audit/patterns/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/design/audit/patterns/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAE5D,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,EAAE,CAAA;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;IACzC,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,OAAO;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,EAAE;QAAE,IAAI,EAAE,QAAQ,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,CAAA;IAClD,QAAQ,EAAE,eAAe,CAAA;IACzB,MAAM,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;KAAE,CAAA;IACnD,aAAa,EAAE,oBAAoB,CAAA;IACnC,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,aAAa,CAAC,EAAE,SAAS,CAAA;IACzB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAA;IAChB,eAAe,EAAE,MAAM,CAAA;IACvB,aAAa,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;IACxC,mBAAmB,EAAE,MAAM,CAAA;CAC5B"}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Audit pipeline — orchestrates the full
|
|
2
|
+
* Audit pipeline — orchestrates the full design audit for one page.
|
|
3
3
|
*
|
|
4
4
|
* load page → classify → compose rubric → measure → evaluate → result
|
|
5
5
|
*
|
|
6
6
|
* The pipeline is the only place that knows about all stages. Each stage is
|
|
7
|
-
* a pure function elsewhere in this module
|
|
7
|
+
* a pure function elsewhere in this module.
|
|
8
8
|
*/
|
|
9
9
|
import type { Page } from 'playwright';
|
|
10
10
|
import type { Brain } from '../../brain/index.js';
|
|
11
11
|
import { PlaywrightDriver } from '../../drivers/playwright.js';
|
|
12
12
|
import { type AuditPassId, type AuditOverrides } from './evaluate.js';
|
|
13
13
|
import type { PageAuditResult } from './types.js';
|
|
14
|
-
import type { AudienceTag, ModalityTag, RegulatoryContextTag, AudienceVulnerabilityTag } from './
|
|
14
|
+
import type { AudienceTag, ModalityTag, RegulatoryContextTag, AudienceVulnerabilityTag } from './score-types.js';
|
|
15
15
|
export interface AuditOnePageOptions {
|
|
16
16
|
brain: Brain;
|
|
17
17
|
driver: PlaywrightDriver;
|
|
@@ -49,7 +49,7 @@ export interface AuditOnePageOptions {
|
|
|
49
49
|
audienceVulnerability?: AudienceVulnerabilityTag[];
|
|
50
50
|
}
|
|
51
51
|
/**
|
|
52
|
-
* Audit one page through the full
|
|
52
|
+
* Audit one page through the full design-audit pipeline.
|
|
53
53
|
*/
|
|
54
54
|
export declare function auditOnePage(opts: AuditOnePageOptions): Promise<PageAuditResult>;
|
|
55
55
|
//# sourceMappingURL=pipeline.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../src/design/audit/pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAI9D,OAAO,EAAgB,KAAK,WAAW,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAA;AACnF,OAAO,KAAK,EAAE,eAAe,EAAsB,MAAM,YAAY,CAAA;AAOrE,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,oBAAoB,EACpB,wBAAwB,EAGzB,MAAM,
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../src/design/audit/pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAI9D,OAAO,EAAgB,KAAK,WAAW,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAA;AACnF,OAAO,KAAK,EAAE,eAAe,EAAsB,MAAM,YAAY,CAAA;AAOrE,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,oBAAoB,EACpB,wBAAwB,EAGzB,MAAM,kBAAkB,CAAA;AAEzB,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,KAAK,CAAA;IACZ,MAAM,EAAE,gBAAgB,CAAA;IACxB,IAAI,EAAE,IAAI,CAAA;IACV,GAAG,EAAE,MAAM,CAAA;IACX,2EAA2E;IAC3E,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,gEAAgE;IAChE,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,+CAA+C;IAC/C,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,0EAA0E;IAC1E,WAAW,CAAC,EAAE,WAAW,EAAE,CAAA;IAC3B,2EAA2E;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;OAGG;IACH,SAAS,CAAC,EAAE,cAAc,CAAA;IAC1B;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,gEAAgE;IAChE,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAA;IACxB,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAA;IACxB,iBAAiB,CAAC,EAAE,oBAAoB,EAAE,CAAA;IAC1C,qBAAqB,CAAC,EAAE,wBAAwB,EAAE,CAAA;CACnD;AAqBD;;GAEG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,eAAe,CAAC,CA0OtF"}
|