@miller-tech/uap 1.138.0 → 1.139.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/.tsbuildinfo +1 -1
- package/dist/bin/cli.js +12 -0
- package/dist/bin/cli.js.map +1 -1
- package/dist/cli/fidelity.d.ts +5 -0
- package/dist/cli/fidelity.d.ts.map +1 -0
- package/dist/cli/fidelity.js +54 -0
- package/dist/cli/fidelity.js.map +1 -0
- package/dist/cli/verify.d.ts +5 -0
- package/dist/cli/verify.d.ts.map +1 -1
- package/dist/cli/verify.js +77 -12
- package/dist/cli/verify.js.map +1 -1
- package/dist/cli/wizard-config.d.ts +9 -0
- package/dist/cli/wizard-config.d.ts.map +1 -1
- package/dist/cli/wizard-config.js +21 -0
- package/dist/cli/wizard-config.js.map +1 -1
- package/dist/config/settings-registry.d.ts.map +1 -1
- package/dist/config/settings-registry.js +32 -0
- package/dist/config/settings-registry.js.map +1 -1
- package/dist/delivery/fidelity.d.ts +24 -0
- package/dist/delivery/fidelity.d.ts.map +1 -0
- package/dist/delivery/fidelity.js +58 -0
- package/dist/delivery/fidelity.js.map +1 -0
- package/dist/delivery/visual-baseline.d.ts +32 -0
- package/dist/delivery/visual-baseline.d.ts.map +1 -0
- package/dist/delivery/visual-baseline.js +219 -0
- package/dist/delivery/visual-baseline.js.map +1 -0
- package/dist/delivery/visual-gate.d.ts +7 -1
- package/dist/delivery/visual-gate.d.ts.map +1 -1
- package/dist/delivery/visual-gate.js +25 -5
- package/dist/delivery/visual-gate.js.map +1 -1
- package/dist/memory/bridge.d.ts +10 -1
- package/dist/memory/bridge.d.ts.map +1 -1
- package/dist/memory/bridge.js +33 -4
- package/dist/memory/bridge.js.map +1 -1
- package/dist/types/config.d.ts +60 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js +19 -0
- package/dist/types/config.js.map +1 -1
- package/package.json +1 -1
- package/src/policies/enforcers/__pycache__/_common.cpython-312.pyc +0 -0
- package/src/policies/enforcers/visual_verification.py +127 -0
- package/src/policies/schemas/policies/visual-verification.md +18 -0
- package/tools/agents/scripts/__pycache__/toolcall_path_normalizer.cpython-312.pyc +0 -0
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Visual regression baselines — pin an accepted UI's rendered appearance and
|
|
3
|
+
* fail later runs that drift from it.
|
|
4
|
+
*
|
|
5
|
+
* The visual gate saves per-page screenshots under `.uap/visual/`. Approving a
|
|
6
|
+
* baseline copies each page's latest screenshot to `.uap/visual/baseline/`.
|
|
7
|
+
* Subsequent runs decode both PNGs into a coarse average-colour grid
|
|
8
|
+
* (dependency-free — Node `zlib` only) and report the fraction of grid cells
|
|
9
|
+
* whose colour moved beyond a per-cell tolerance. Under max fidelity with
|
|
10
|
+
* baselines enabled, drift past the threshold blocks like a broken gate.
|
|
11
|
+
*
|
|
12
|
+
* The decoder supports the format Playwright/Chromium emits: 8-bit,
|
|
13
|
+
* non-interlaced, colour-type 2 (RGB) or 6 (RGBA). Anything else fingerprints
|
|
14
|
+
* to null and is treated as "no comparable baseline" (fail-soft, never throws).
|
|
15
|
+
*/
|
|
16
|
+
import { existsSync, mkdirSync, readdirSync, readFileSync, copyFileSync } from 'fs';
|
|
17
|
+
import { basename, join } from 'path';
|
|
18
|
+
import { inflateSync } from 'zlib';
|
|
19
|
+
/** Coarse grid resolution for the fingerprint (N×N average-colour cells). */
|
|
20
|
+
const GRID = 32;
|
|
21
|
+
/** Per-cell colour distance (0–255 per channel, summed) above which a cell "changed". */
|
|
22
|
+
const CELL_TOLERANCE = 60;
|
|
23
|
+
/** Fraction of changed cells above which a page has drifted. */
|
|
24
|
+
export const DEFAULT_DRIFT_THRESHOLD = 0.12;
|
|
25
|
+
function baselineDir(projectRoot) {
|
|
26
|
+
return join(projectRoot, '.uap', 'visual', 'baseline');
|
|
27
|
+
}
|
|
28
|
+
function visualDir(projectRoot) {
|
|
29
|
+
return join(projectRoot, '.uap', 'visual');
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Decode a PNG into an N×N grid of average [r,g,b]. Returns null for any format
|
|
33
|
+
* we do not handle (never throws). Pure Node (`zlib.inflateSync`).
|
|
34
|
+
*/
|
|
35
|
+
export function pngToGrid(path, n = GRID) {
|
|
36
|
+
try {
|
|
37
|
+
const buf = readFileSync(path);
|
|
38
|
+
if (buf.length < 8 || buf.readUInt32BE(0) !== 0x89504e47)
|
|
39
|
+
return null; // PNG magic
|
|
40
|
+
let off = 8;
|
|
41
|
+
let width = 0;
|
|
42
|
+
let height = 0;
|
|
43
|
+
let bitDepth = 0;
|
|
44
|
+
let colorType = 0;
|
|
45
|
+
let interlace = 0;
|
|
46
|
+
const idat = [];
|
|
47
|
+
while (off + 8 <= buf.length) {
|
|
48
|
+
const len = buf.readUInt32BE(off);
|
|
49
|
+
const type = buf.toString('ascii', off + 4, off + 8);
|
|
50
|
+
const dataStart = off + 8;
|
|
51
|
+
if (type === 'IHDR') {
|
|
52
|
+
width = buf.readUInt32BE(dataStart);
|
|
53
|
+
height = buf.readUInt32BE(dataStart + 4);
|
|
54
|
+
bitDepth = buf[dataStart + 8];
|
|
55
|
+
colorType = buf[dataStart + 9];
|
|
56
|
+
interlace = buf[dataStart + 12];
|
|
57
|
+
}
|
|
58
|
+
else if (type === 'IDAT') {
|
|
59
|
+
idat.push(buf.subarray(dataStart, dataStart + len));
|
|
60
|
+
}
|
|
61
|
+
else if (type === 'IEND') {
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
64
|
+
off = dataStart + len + 4; // skip data + CRC
|
|
65
|
+
}
|
|
66
|
+
if (!width || !height || bitDepth !== 8 || interlace !== 0)
|
|
67
|
+
return null;
|
|
68
|
+
const channels = colorType === 2 ? 3 : colorType === 6 ? 4 : 0;
|
|
69
|
+
if (!channels)
|
|
70
|
+
return null;
|
|
71
|
+
const raw = inflateSync(Buffer.concat(idat));
|
|
72
|
+
const stride = width * channels;
|
|
73
|
+
if (raw.length < (stride + 1) * height)
|
|
74
|
+
return null;
|
|
75
|
+
// Un-filter scanlines in place into an RGB(A) buffer.
|
|
76
|
+
const px = Buffer.alloc(stride * height);
|
|
77
|
+
let rp = 0;
|
|
78
|
+
for (let y = 0; y < height; y++) {
|
|
79
|
+
const filter = raw[rp++];
|
|
80
|
+
const rowStart = y * stride;
|
|
81
|
+
for (let x = 0; x < stride; x++) {
|
|
82
|
+
const rawByte = raw[rp++];
|
|
83
|
+
const a = x >= channels ? px[rowStart + x - channels] : 0; // left
|
|
84
|
+
const b = y > 0 ? px[rowStart - stride + x] : 0; // up
|
|
85
|
+
const c = x >= channels && y > 0 ? px[rowStart - stride + x - channels] : 0; // up-left
|
|
86
|
+
let val = rawByte;
|
|
87
|
+
if (filter === 1)
|
|
88
|
+
val = rawByte + a;
|
|
89
|
+
else if (filter === 2)
|
|
90
|
+
val = rawByte + b;
|
|
91
|
+
else if (filter === 3)
|
|
92
|
+
val = rawByte + ((a + b) >> 1);
|
|
93
|
+
else if (filter === 4) {
|
|
94
|
+
const p = a + b - c;
|
|
95
|
+
const pa = Math.abs(p - a);
|
|
96
|
+
const pb = Math.abs(p - b);
|
|
97
|
+
const pc = Math.abs(p - c);
|
|
98
|
+
val = rawByte + (pa <= pb && pa <= pc ? a : pb <= pc ? b : c);
|
|
99
|
+
}
|
|
100
|
+
px[rowStart + x] = val & 0xff;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// Downsample to an N×N average-colour grid.
|
|
104
|
+
const grid = [];
|
|
105
|
+
for (let gy = 0; gy < n; gy++) {
|
|
106
|
+
for (let gx = 0; gx < n; gx++) {
|
|
107
|
+
const x0 = Math.floor((gx * width) / n);
|
|
108
|
+
const x1 = Math.max(x0 + 1, Math.floor(((gx + 1) * width) / n));
|
|
109
|
+
const y0 = Math.floor((gy * height) / n);
|
|
110
|
+
const y1 = Math.max(y0 + 1, Math.floor(((gy + 1) * height) / n));
|
|
111
|
+
let r = 0;
|
|
112
|
+
let g = 0;
|
|
113
|
+
let bl = 0;
|
|
114
|
+
let count = 0;
|
|
115
|
+
for (let y = y0; y < y1; y++) {
|
|
116
|
+
for (let x = x0; x < x1; x++) {
|
|
117
|
+
const i = y * stride + x * channels;
|
|
118
|
+
r += px[i];
|
|
119
|
+
g += px[i + 1];
|
|
120
|
+
bl += px[i + 2];
|
|
121
|
+
count++;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
count = count || 1;
|
|
125
|
+
grid.push([Math.round(r / count), Math.round(g / count), Math.round(bl / count)]);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return grid;
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
return null;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
/** Fraction of grid cells whose colour distance exceeds the tolerance (0–1). */
|
|
135
|
+
export function gridDrift(a, b) {
|
|
136
|
+
const n = Math.min(a.length, b.length);
|
|
137
|
+
if (n === 0)
|
|
138
|
+
return 0;
|
|
139
|
+
let changed = 0;
|
|
140
|
+
for (let i = 0; i < n; i++) {
|
|
141
|
+
const d = Math.abs(a[i][0] - b[i][0]) + Math.abs(a[i][1] - b[i][1]) + Math.abs(a[i][2] - b[i][2]);
|
|
142
|
+
if (d > CELL_TOLERANCE)
|
|
143
|
+
changed++;
|
|
144
|
+
}
|
|
145
|
+
return changed / n;
|
|
146
|
+
}
|
|
147
|
+
/** The latest screenshot per page (max one per `<page>` prefix) in `.uap/visual/`. */
|
|
148
|
+
export function latestScreenshots(projectRoot) {
|
|
149
|
+
const dir = visualDir(projectRoot);
|
|
150
|
+
if (!existsSync(dir))
|
|
151
|
+
return [];
|
|
152
|
+
const shots = readdirSync(dir).filter((f) => f.toLowerCase().endsWith('.png'));
|
|
153
|
+
// Names look like `<page>-t<i>.png`; keep the highest t per page.
|
|
154
|
+
const byPage = new Map();
|
|
155
|
+
for (const f of shots.sort()) {
|
|
156
|
+
const page = f.replace(/-t\d+\.png$/i, '');
|
|
157
|
+
byPage.set(page, f); // later (higher t) wins due to sort
|
|
158
|
+
}
|
|
159
|
+
return [...byPage.values()].map((f) => join(dir, f));
|
|
160
|
+
}
|
|
161
|
+
/** Copy each page's latest screenshot into the baseline dir (accept the look). */
|
|
162
|
+
export function approveVisualBaseline(projectRoot) {
|
|
163
|
+
const dir = baselineDir(projectRoot);
|
|
164
|
+
mkdirSync(dir, { recursive: true });
|
|
165
|
+
const approved = [];
|
|
166
|
+
for (const shot of latestScreenshots(projectRoot)) {
|
|
167
|
+
// Normalise `<page>-t<i>.png` → `<page>.png` so the baseline is stable across runs.
|
|
168
|
+
const name = basename(shot).replace(/-t\d+\.png$/i, '.png');
|
|
169
|
+
const dest = join(dir, name);
|
|
170
|
+
try {
|
|
171
|
+
copyFileSync(shot, dest);
|
|
172
|
+
approved.push(dest);
|
|
173
|
+
}
|
|
174
|
+
catch {
|
|
175
|
+
// best-effort per file
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
return approved;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Compare the current run's latest screenshots against approved baselines.
|
|
182
|
+
* Returns one entry per current page. Fail-soft: undecodable pairs report
|
|
183
|
+
* hasBaseline=false so they never spuriously block.
|
|
184
|
+
*/
|
|
185
|
+
export function compareVisualBaseline(projectRoot, threshold = DEFAULT_DRIFT_THRESHOLD) {
|
|
186
|
+
const bDir = baselineDir(projectRoot);
|
|
187
|
+
const out = [];
|
|
188
|
+
for (const shot of latestScreenshots(projectRoot)) {
|
|
189
|
+
const name = basename(shot).replace(/-t\d+\.png$/i, '.png');
|
|
190
|
+
const basePath = join(bDir, name);
|
|
191
|
+
if (!existsSync(basePath)) {
|
|
192
|
+
out.push({ name, hasBaseline: false, drift: 0, drifted: false });
|
|
193
|
+
continue;
|
|
194
|
+
}
|
|
195
|
+
const cur = pngToGrid(shot);
|
|
196
|
+
const base = pngToGrid(basePath);
|
|
197
|
+
if (!cur || !base) {
|
|
198
|
+
out.push({ name, hasBaseline: false, drift: 0, drifted: false });
|
|
199
|
+
continue;
|
|
200
|
+
}
|
|
201
|
+
const drift = gridDrift(cur, base);
|
|
202
|
+
out.push({ name, hasBaseline: true, drift, drifted: drift > threshold });
|
|
203
|
+
}
|
|
204
|
+
return out;
|
|
205
|
+
}
|
|
206
|
+
/** Human-readable one-liner for a set of drifts (empty string when nothing to say). */
|
|
207
|
+
export function driftSummary(drifts) {
|
|
208
|
+
const compared = drifts.filter((d) => d.hasBaseline);
|
|
209
|
+
if (compared.length === 0)
|
|
210
|
+
return '';
|
|
211
|
+
const drifted = compared.filter((d) => d.drifted);
|
|
212
|
+
if (drifted.length === 0) {
|
|
213
|
+
return `visual baseline: ${compared.length} page(s) within tolerance`;
|
|
214
|
+
}
|
|
215
|
+
return (`VISUAL REGRESSION — ${drifted.length}/${compared.length} page(s) drifted from baseline:\n` +
|
|
216
|
+
drifted.map((d) => ` - ${d.name}: ${(d.drift * 100).toFixed(1)}% of cells changed`).join('\n') +
|
|
217
|
+
'\n (approve the new look with `uap verify --approve-visual` if intended)');
|
|
218
|
+
}
|
|
219
|
+
//# sourceMappingURL=visual-baseline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visual-baseline.js","sourceRoot":"","sources":["../../src/delivery/visual-baseline.ts"],"names":[],"mappings":"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"}
|
|
@@ -91,7 +91,13 @@ export interface VisualTargets {
|
|
|
91
91
|
}>;
|
|
92
92
|
}
|
|
93
93
|
export declare function readVisualTargets(projectRoot: string): VisualTargets;
|
|
94
|
-
/**
|
|
94
|
+
/**
|
|
95
|
+
* Entry pages to render. Root-level `.html` first (index first); if the project
|
|
96
|
+
* has none — the shape of a React/Vue/Svelte app that only produces HTML after a
|
|
97
|
+
* build — fall back to the built `index.html` under dist/build/out so framework
|
|
98
|
+
* UIs are covered, not silently skipped. The static server serves projectRoot,
|
|
99
|
+
* so a nested entry like `dist/index.html` navigates fine.
|
|
100
|
+
*/
|
|
95
101
|
export declare function discoverEntryPages(projectRoot: string): string[];
|
|
96
102
|
/** Fraction of grid cells that differ between two samples. */
|
|
97
103
|
export declare function motionBetween(a: string[] | undefined, b: string[] | undefined): number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"visual-gate.d.ts","sourceRoot":"","sources":["../../src/delivery/visual-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAMH,4EAA4E;AAC5E,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACzD,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACnC,gBAAgB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,kBAAkB,GAAG,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrF,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACxC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,SAAS,IAAI,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,iGAAiG;IACjG,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,0CAA0C;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,cAAc,CAAC,EAAE,MAAM,mBAAmB,CAAC;CAC5C;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,uCAAuC;IACvC,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,WAAW,EAAE,MAAM,CAAC;IACpB,yEAAyE;IACzE,gBAAgB,EAAE,OAAO,CAAC;IAC1B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,uDAAuD;IACvD,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,oEAAoE;IACpE,MAAM,EAAE,OAAO,CAAC;IAChB,qEAAqE;IACrE,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC5G;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,CASpE;
|
|
1
|
+
{"version":3,"file":"visual-gate.d.ts","sourceRoot":"","sources":["../../src/delivery/visual-gate.ts"],"names":[],"mappings":"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"}
|
|
@@ -83,12 +83,29 @@ const PIXEL_PROBE = `(function () {
|
|
|
83
83
|
function delay(ms) {
|
|
84
84
|
return new Promise((r) => setTimeout(r, ms));
|
|
85
85
|
}
|
|
86
|
-
/**
|
|
86
|
+
/** Common build-output dirs a framework project renders into (served from root). */
|
|
87
|
+
const BUILD_OUTPUT_DIRS = ['dist', 'build', 'out'];
|
|
88
|
+
/**
|
|
89
|
+
* Entry pages to render. Root-level `.html` first (index first); if the project
|
|
90
|
+
* has none — the shape of a React/Vue/Svelte app that only produces HTML after a
|
|
91
|
+
* build — fall back to the built `index.html` under dist/build/out so framework
|
|
92
|
+
* UIs are covered, not silently skipped. The static server serves projectRoot,
|
|
93
|
+
* so a nested entry like `dist/index.html` navigates fine.
|
|
94
|
+
*/
|
|
87
95
|
export function discoverEntryPages(projectRoot) {
|
|
88
96
|
try {
|
|
89
|
-
const
|
|
90
|
-
|
|
91
|
-
|
|
97
|
+
const root = readdirSync(projectRoot).filter((f) => f.toLowerCase().endsWith('.html'));
|
|
98
|
+
if (root.length > 0) {
|
|
99
|
+
root.sort((a, b) => (a === 'index.html' ? -1 : b === 'index.html' ? 1 : a.localeCompare(b)));
|
|
100
|
+
return root.slice(0, MAX_PAGES);
|
|
101
|
+
}
|
|
102
|
+
// Framework fallback: a freshly built entry under a common output dir.
|
|
103
|
+
for (const d of BUILD_OUTPUT_DIRS) {
|
|
104
|
+
const entry = join(d, 'index.html');
|
|
105
|
+
if (existsSync(join(projectRoot, entry)))
|
|
106
|
+
return [entry];
|
|
107
|
+
}
|
|
108
|
+
return [];
|
|
92
109
|
}
|
|
93
110
|
catch {
|
|
94
111
|
return [];
|
|
@@ -207,7 +224,10 @@ export async function runVisualGate(projectRoot, options = {}) {
|
|
|
207
224
|
catch {
|
|
208
225
|
probes.push({ canvas: false });
|
|
209
226
|
}
|
|
210
|
-
|
|
227
|
+
// Flatten nested entry paths (dist/index.html) into a single
|
|
228
|
+
// screenshot-safe basename so no missing subdir defeats the write.
|
|
229
|
+
const shotBase = file.replace(/\.html$/i, '').replace(/[/\\]+/g, '_');
|
|
230
|
+
const shot = join(screenshotDir, `${shotBase}-t${i}.png`);
|
|
211
231
|
try {
|
|
212
232
|
await browser.screenshot(shot);
|
|
213
233
|
shots.push(shot);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"visual-gate.js","sourceRoot":"","sources":["../../src/delivery/visual-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC;AACtE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAoExD,MAAM,UAAU,iBAAiB,CAAC,WAAmB;IACnD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,qBAAqB,CAAC,CAAC;QAC9D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAkB,CAAC;QACxE,OAAO,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,IAAI,GAAG,EAAE,CAAC;AAChB,MAAM,eAAe,GAAG,CAAC,CAAC;AAC1B,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAChC,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAClC,MAAM,SAAS,GAAG,CAAC,CAAC;AACpB,iFAAiF;AACjF,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAC9B,0EAA0E;AAC1E,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAChC,+EAA+E;AAC/E,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAE9B;;+EAE+E;AAC/E,MAAM,WAAW,GAAG;;;;;;;;;;YAUR,IAAI;;;;;;;;;;;;;;;;;;GAkBb,CAAC;AAUJ,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"visual-gate.js","sourceRoot":"","sources":["../../src/delivery/visual-gate.ts"],"names":[],"mappings":"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"}
|
package/dist/memory/bridge.d.ts
CHANGED
|
@@ -24,7 +24,16 @@ export interface BridgeResult {
|
|
|
24
24
|
export declare function claudeMemoryIndexPath(cwd: string): string;
|
|
25
25
|
/** The native memory/instruction files, with per-agent detection. */
|
|
26
26
|
export declare function nativeMemoryTargets(cwd: string): NativeMemoryTarget[];
|
|
27
|
-
/**
|
|
27
|
+
/**
|
|
28
|
+
* Most-important recent memories, mirrored into the bridge block. Fail-soft.
|
|
29
|
+
*
|
|
30
|
+
* The short-term store is dominated by low-signal `action` lifecycle logs
|
|
31
|
+
* (`[session-end]`, `[pre-compact]`, `[session-start]`), all at importance 5, so a
|
|
32
|
+
* plain `ORDER BY importance` mirror is mostly noise. We instead prefer insight
|
|
33
|
+
* types (lesson/decision/goal/thought/observation) and drop the lifecycle logs —
|
|
34
|
+
* falling back to the raw ordering only if that leaves nothing to show, so the
|
|
35
|
+
* mirror is never emptier than the naive version.
|
|
36
|
+
*/
|
|
28
37
|
export declare function recentMemoryLines(cwd: string, limit?: number): string[];
|
|
29
38
|
/** Compose the marked bridge block (idempotent content for a given project). */
|
|
30
39
|
export declare function buildBridgeBlock(cwd: string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/memory/bridge.ts"],"names":[],"mappings":"AAuBA,eAAO,MAAM,YAAY,sEAAsE,CAAC;AAChG,eAAO,MAAM,UAAU,mCAAmC,CAAC;AAE3D,MAAM,WAAW,kBAAkB;IACjC,yCAAyC;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,CAAC;CACtD;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAGzD;AAED,qEAAqE;AACrE,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,EAAE,CA+BrE;AAED
|
|
1
|
+
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/memory/bridge.ts"],"names":[],"mappings":"AAuBA,eAAO,MAAM,YAAY,sEAAsE,CAAC;AAChG,eAAO,MAAM,UAAU,mCAAmC,CAAC;AAE3D,MAAM,WAAW,kBAAkB;IACjC,yCAAyC;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,CAAC;CACtD;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAGzD;AAED,qEAAqE;AACrE,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,EAAE,CA+BrE;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,MAAM,EAAE,CAoClE;AAED,gFAAgF;AAChF,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAsBpD;AAMD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,CAS9E;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,GAAG,GAAE,MAAsB,EAAE,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,YAAY,EAAE,CAiBtG"}
|
package/dist/memory/bridge.js
CHANGED
|
@@ -64,15 +64,44 @@ export function nativeMemoryTargets(cwd) {
|
|
|
64
64
|
},
|
|
65
65
|
];
|
|
66
66
|
}
|
|
67
|
-
/**
|
|
67
|
+
/**
|
|
68
|
+
* Most-important recent memories, mirrored into the bridge block. Fail-soft.
|
|
69
|
+
*
|
|
70
|
+
* The short-term store is dominated by low-signal `action` lifecycle logs
|
|
71
|
+
* (`[session-end]`, `[pre-compact]`, `[session-start]`), all at importance 5, so a
|
|
72
|
+
* plain `ORDER BY importance` mirror is mostly noise. We instead prefer insight
|
|
73
|
+
* types (lesson/decision/goal/thought/observation) and drop the lifecycle logs —
|
|
74
|
+
* falling back to the raw ordering only if that leaves nothing to show, so the
|
|
75
|
+
* mirror is never emptier than the naive version.
|
|
76
|
+
*/
|
|
68
77
|
export function recentMemoryLines(cwd, limit = 8) {
|
|
78
|
+
const fmt = (r) => ` - (${r.type}, i${r.importance}) ${String(r.content).replace(/\s+/g, ' ').slice(0, 140)}`;
|
|
69
79
|
try {
|
|
70
80
|
const db = new Database(join(cwd, 'agents', 'data', 'memory', 'short_term.db'), { readonly: true });
|
|
71
|
-
|
|
72
|
-
|
|
81
|
+
// Insight types first, lifecycle-log `action` rows excluded; importance/recency within.
|
|
82
|
+
const curated = db
|
|
83
|
+
.prepare(`SELECT content, type, importance FROM memories
|
|
84
|
+
WHERE type != 'action'
|
|
85
|
+
OR (content NOT LIKE '[session-%' AND content NOT LIKE '[pre-compact]%')
|
|
86
|
+
ORDER BY
|
|
87
|
+
CASE type
|
|
88
|
+
WHEN 'lesson' THEN 0
|
|
89
|
+
WHEN 'decision' THEN 1
|
|
90
|
+
WHEN 'goal' THEN 2
|
|
91
|
+
WHEN 'thought' THEN 3
|
|
92
|
+
WHEN 'observation' THEN 4
|
|
93
|
+
ELSE 9
|
|
94
|
+
END,
|
|
95
|
+
importance DESC, id DESC
|
|
96
|
+
LIMIT ?`)
|
|
73
97
|
.all(limit);
|
|
98
|
+
const rows = curated.length > 0
|
|
99
|
+
? curated
|
|
100
|
+
: db
|
|
101
|
+
.prepare('SELECT content, type, importance FROM memories ORDER BY importance DESC, id DESC LIMIT ?')
|
|
102
|
+
.all(limit);
|
|
74
103
|
db.close();
|
|
75
|
-
return rows.map(
|
|
104
|
+
return rows.map(fmt);
|
|
76
105
|
}
|
|
77
106
|
catch {
|
|
78
107
|
return [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../src/memory/bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAEtC,MAAM,CAAC,MAAM,YAAY,GAAG,mEAAmE,CAAC;AAChG,MAAM,CAAC,MAAM,UAAU,GAAG,gCAAgC,CAAC;AAoB3D;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAW;IAC/C,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IACxC,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AAC7E,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,mBAAmB,CAAC,GAAW;IAC7C,MAAM,GAAG,GAAG,CAAC,CAAS,EAAW,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7D,MAAM,SAAS,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAC7C,OAAO;QACL;YACE,QAAQ,EAAE,aAAa;YACvB,KAAK,EAAE,sCAAsC;YAC7C,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC;SAC/E;QACD,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,EAAE;QAC3H;YACE,QAAQ,EAAE,wBAAwB;YAClC,KAAK,EAAE,WAAW;YAClB,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC;YAC5B,QAAQ,EAAE,GAAG,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC;SACnF;QACD,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,EAAE;QACtH;YACE,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,4CAA4C;YACnD,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,gBAAgB,CAAC;YACrD,QAAQ,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,cAAc,CAAC;SAChD;QACD;YACE,QAAQ,EAAE,SAAS;YACnB,KAAK,EAAE,sBAAsB;YAC7B,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,yBAAyB,CAAC;YACrD,QAAQ,EAAE,GAAG,CAAC,iCAAiC,CAAC;SACjD;KACF,CAAC;AACJ,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../src/memory/bridge.ts"],"names":[],"mappings":"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"}
|
package/dist/types/config.d.ts
CHANGED
|
@@ -1758,6 +1758,29 @@ export declare const ReactorSchema: z.ZodObject<{
|
|
|
1758
1758
|
}, {
|
|
1759
1759
|
enabled?: boolean | undefined;
|
|
1760
1760
|
}>;
|
|
1761
|
+
export declare const FidelitySchema: z.ZodObject<{
|
|
1762
|
+
mode: z.ZodDefault<z.ZodEnum<["standard", "max"]>>;
|
|
1763
|
+
/** Vision model id for aesthetic screenshot review (OpenAI-compat, image_url). */
|
|
1764
|
+
visionModel: z.ZodOptional<z.ZodString>;
|
|
1765
|
+
/** Vision endpoint base URL (e.g. http://127.0.0.1:8080/v1). */
|
|
1766
|
+
visionEndpoint: z.ZodOptional<z.ZodString>;
|
|
1767
|
+
/** Minimum aesthetic score (0–10) a UI must reach under `max` before it blocks. */
|
|
1768
|
+
visionMinScore: z.ZodDefault<z.ZodNumber>;
|
|
1769
|
+
/** Keep approved screenshots as regression baselines and block on visual drift. */
|
|
1770
|
+
visualBaselines: z.ZodDefault<z.ZodBoolean>;
|
|
1771
|
+
}, "strip", z.ZodTypeAny, {
|
|
1772
|
+
mode: "standard" | "max";
|
|
1773
|
+
visionMinScore: number;
|
|
1774
|
+
visualBaselines: boolean;
|
|
1775
|
+
visionModel?: string | undefined;
|
|
1776
|
+
visionEndpoint?: string | undefined;
|
|
1777
|
+
}, {
|
|
1778
|
+
mode?: "standard" | "max" | undefined;
|
|
1779
|
+
visionModel?: string | undefined;
|
|
1780
|
+
visionEndpoint?: string | undefined;
|
|
1781
|
+
visionMinScore?: number | undefined;
|
|
1782
|
+
visualBaselines?: boolean | undefined;
|
|
1783
|
+
}>;
|
|
1761
1784
|
export declare const AgentContextConfigSchema: z.ZodObject<{
|
|
1762
1785
|
$schema: z.ZodOptional<z.ZodString>;
|
|
1763
1786
|
version: z.ZodDefault<z.ZodString>;
|
|
@@ -3082,6 +3105,29 @@ export declare const AgentContextConfigSchema: z.ZodObject<{
|
|
|
3082
3105
|
}, {
|
|
3083
3106
|
enabled?: boolean | undefined;
|
|
3084
3107
|
}>>;
|
|
3108
|
+
fidelity: z.ZodOptional<z.ZodObject<{
|
|
3109
|
+
mode: z.ZodDefault<z.ZodEnum<["standard", "max"]>>;
|
|
3110
|
+
/** Vision model id for aesthetic screenshot review (OpenAI-compat, image_url). */
|
|
3111
|
+
visionModel: z.ZodOptional<z.ZodString>;
|
|
3112
|
+
/** Vision endpoint base URL (e.g. http://127.0.0.1:8080/v1). */
|
|
3113
|
+
visionEndpoint: z.ZodOptional<z.ZodString>;
|
|
3114
|
+
/** Minimum aesthetic score (0–10) a UI must reach under `max` before it blocks. */
|
|
3115
|
+
visionMinScore: z.ZodDefault<z.ZodNumber>;
|
|
3116
|
+
/** Keep approved screenshots as regression baselines and block on visual drift. */
|
|
3117
|
+
visualBaselines: z.ZodDefault<z.ZodBoolean>;
|
|
3118
|
+
}, "strip", z.ZodTypeAny, {
|
|
3119
|
+
mode: "standard" | "max";
|
|
3120
|
+
visionMinScore: number;
|
|
3121
|
+
visualBaselines: boolean;
|
|
3122
|
+
visionModel?: string | undefined;
|
|
3123
|
+
visionEndpoint?: string | undefined;
|
|
3124
|
+
}, {
|
|
3125
|
+
mode?: "standard" | "max" | undefined;
|
|
3126
|
+
visionModel?: string | undefined;
|
|
3127
|
+
visionEndpoint?: string | undefined;
|
|
3128
|
+
visionMinScore?: number | undefined;
|
|
3129
|
+
visualBaselines?: boolean | undefined;
|
|
3130
|
+
}>>;
|
|
3085
3131
|
realtimeAdapt: z.ZodOptional<z.ZodObject<{
|
|
3086
3132
|
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
3087
3133
|
}, "strip", z.ZodTypeAny, {
|
|
@@ -3389,6 +3435,13 @@ export declare const AgentContextConfigSchema: z.ZodObject<{
|
|
|
3389
3435
|
reactor?: {
|
|
3390
3436
|
enabled: boolean;
|
|
3391
3437
|
} | undefined;
|
|
3438
|
+
fidelity?: {
|
|
3439
|
+
mode: "standard" | "max";
|
|
3440
|
+
visionMinScore: number;
|
|
3441
|
+
visualBaselines: boolean;
|
|
3442
|
+
visionModel?: string | undefined;
|
|
3443
|
+
visionEndpoint?: string | undefined;
|
|
3444
|
+
} | undefined;
|
|
3392
3445
|
realtimeAdapt?: {
|
|
3393
3446
|
enabled?: boolean | undefined;
|
|
3394
3447
|
} | undefined;
|
|
@@ -3686,6 +3739,13 @@ export declare const AgentContextConfigSchema: z.ZodObject<{
|
|
|
3686
3739
|
reactor?: {
|
|
3687
3740
|
enabled?: boolean | undefined;
|
|
3688
3741
|
} | undefined;
|
|
3742
|
+
fidelity?: {
|
|
3743
|
+
mode?: "standard" | "max" | undefined;
|
|
3744
|
+
visionModel?: string | undefined;
|
|
3745
|
+
visionEndpoint?: string | undefined;
|
|
3746
|
+
visionMinScore?: number | undefined;
|
|
3747
|
+
visualBaselines?: boolean | undefined;
|
|
3748
|
+
} | undefined;
|
|
3689
3749
|
realtimeAdapt?: {
|
|
3690
3750
|
enabled?: boolean | undefined;
|
|
3691
3751
|
} | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;EAOzB,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;EAShC,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;EAMpC,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;EAKnC,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuCjC,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAc/B,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkB3B,CAAC;AAEH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAIvB,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;EAKzB,CAAC;AAEH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;EAMtB,CAAC;AAEH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;EAKxB,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;EASjC,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGzB,CAAC;AAEH,eAAO,MAAM,aAAa;;;;;;;;;;;;EAIxB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BjC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BjC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAW5B,CAAC;AAQH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;EAAqB,CAAC;AACpD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAA0B,CAAC;AAExD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,oBAAoB;IAG/B;gDAC4C;;IAG5C;+DAC2D;;IAG3D;oDACgD;;IAGhD;qDACiD;;IAGjD,wDAAwD;;IAGxD;oDACgD;;IAGhD;+EAC2E;;IAG3E,wEAAwE;;IAKxE;;;8EAG0E;;IAG1E,2CAA2C;;IAG3C;;2EAEuE;;IAGvE;6EACyE;;IAMzE;6EACyE;;IAGzE,uDAAuD;;IAGvD;gEAC4D;;IAG5D;sEACkE;;IAGlE;2EACuE;;IAKvE,mEAAmE;;IAGnE,+DAA+D;;IAG/D,0DAA0D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAE1D,CAAC;AAOH,eAAO,MAAM,mBAAmB;;;;;;EAE9B,CAAC;AAIH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;EAKjC,CAAC;AAMH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAcxB,CAAC;AAMH,eAAO,MAAM,cAAc;;;;;;;;;;;;EAIzB,CAAC;AAGH,eAAO,MAAM,YAAY;;;;;;;;;EAGvB,CAAC;AAIH,eAAO,MAAM,aAAa;;;;;;EAExB,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"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"}
|
package/dist/types/config.js
CHANGED
|
@@ -382,6 +382,23 @@ export const DesignSchema = z.object({
|
|
|
382
382
|
export const ReactorSchema = z.object({
|
|
383
383
|
enabled: z.boolean().default(true),
|
|
384
384
|
});
|
|
385
|
+
// Maximum-fidelity mode. `max` flips every verification default to its
|
|
386
|
+
// strongest setting (raised verifier floor, acceptance judge required,
|
|
387
|
+
// blocking vision review, fail-CLOSED visual gate) so a delivery is accepted
|
|
388
|
+
// only when it is built, runs, LOOKS right, and matches the spec. The
|
|
389
|
+
// UAP_FIDELITY env var overrides this at runtime. vision* configure the
|
|
390
|
+
// vision-capable endpoint used for aesthetic review (default: the local model).
|
|
391
|
+
export const FidelitySchema = z.object({
|
|
392
|
+
mode: z.enum(['standard', 'max']).default('standard'),
|
|
393
|
+
/** Vision model id for aesthetic screenshot review (OpenAI-compat, image_url). */
|
|
394
|
+
visionModel: z.string().optional(),
|
|
395
|
+
/** Vision endpoint base URL (e.g. http://127.0.0.1:8080/v1). */
|
|
396
|
+
visionEndpoint: z.string().optional(),
|
|
397
|
+
/** Minimum aesthetic score (0–10) a UI must reach under `max` before it blocks. */
|
|
398
|
+
visionMinScore: z.number().min(0).max(10).default(6),
|
|
399
|
+
/** Keep approved screenshots as regression baselines and block on visual drift. */
|
|
400
|
+
visualBaselines: z.boolean().default(true),
|
|
401
|
+
});
|
|
385
402
|
export const AgentContextConfigSchema = z.object({
|
|
386
403
|
$schema: z.string().optional(),
|
|
387
404
|
version: z.string().default('1.0.0'),
|
|
@@ -419,6 +436,8 @@ export const AgentContextConfigSchema = z.object({
|
|
|
419
436
|
design: DesignSchema.optional(),
|
|
420
437
|
// Reactor per-prompt injection (on by default)
|
|
421
438
|
reactor: ReactorSchema.optional(),
|
|
439
|
+
// Maximum-fidelity mode (raised gates + always-on visual/vision verification)
|
|
440
|
+
fidelity: FidelitySchema.optional(),
|
|
422
441
|
// Real-time flag adaptation (LLM Self-Tuning P4) — auto-on; set enabled:false
|
|
423
442
|
// to opt out. No zod default so an absent key isn't fabricated as `true`.
|
|
424
443
|
realtimeAdapt: z.object({ enabled: z.boolean() }).partial().optional(),
|