@miller-tech/uap 1.170.1 → 1.172.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.
Files changed (71) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/bin/cli.js +26 -0
  3. package/dist/bin/cli.js.map +1 -1
  4. package/dist/browser/web-browser.d.ts +17 -0
  5. package/dist/browser/web-browser.d.ts.map +1 -1
  6. package/dist/browser/web-browser.js +36 -0
  7. package/dist/browser/web-browser.js.map +1 -1
  8. package/dist/cli/interaction.d.ts +29 -0
  9. package/dist/cli/interaction.d.ts.map +1 -0
  10. package/dist/cli/interaction.js +217 -0
  11. package/dist/cli/interaction.js.map +1 -0
  12. package/dist/cli/verify.d.ts +6 -0
  13. package/dist/cli/verify.d.ts.map +1 -1
  14. package/dist/cli/verify.js +112 -7
  15. package/dist/cli/verify.js.map +1 -1
  16. package/dist/delivery/fidelity.d.ts +16 -0
  17. package/dist/delivery/fidelity.d.ts.map +1 -1
  18. package/dist/delivery/fidelity.js +7 -0
  19. package/dist/delivery/fidelity.js.map +1 -1
  20. package/dist/delivery/interaction/driver.d.ts +60 -0
  21. package/dist/delivery/interaction/driver.d.ts.map +1 -0
  22. package/dist/delivery/interaction/driver.js +18 -0
  23. package/dist/delivery/interaction/driver.js.map +1 -0
  24. package/dist/delivery/interaction/manifest.d.ts +84 -0
  25. package/dist/delivery/interaction/manifest.d.ts.map +1 -0
  26. package/dist/delivery/interaction/manifest.js +241 -0
  27. package/dist/delivery/interaction/manifest.js.map +1 -0
  28. package/dist/delivery/interaction/mine.d.ts +54 -0
  29. package/dist/delivery/interaction/mine.d.ts.map +1 -0
  30. package/dist/delivery/interaction/mine.js +218 -0
  31. package/dist/delivery/interaction/mine.js.map +1 -0
  32. package/dist/delivery/interaction/runner.d.ts +51 -0
  33. package/dist/delivery/interaction/runner.d.ts.map +1 -0
  34. package/dist/delivery/interaction/runner.js +277 -0
  35. package/dist/delivery/interaction/runner.js.map +1 -0
  36. package/dist/delivery/interaction/types.d.ts +223 -0
  37. package/dist/delivery/interaction/types.d.ts.map +1 -0
  38. package/dist/delivery/interaction/types.js +19 -0
  39. package/dist/delivery/interaction/types.js.map +1 -0
  40. package/dist/delivery/interaction/verdict.d.ts +26 -0
  41. package/dist/delivery/interaction/verdict.d.ts.map +1 -0
  42. package/dist/delivery/interaction/verdict.js +139 -0
  43. package/dist/delivery/interaction/verdict.js.map +1 -0
  44. package/dist/delivery/interaction/watchdog.d.ts +82 -0
  45. package/dist/delivery/interaction/watchdog.d.ts.map +1 -0
  46. package/dist/delivery/interaction/watchdog.js +210 -0
  47. package/dist/delivery/interaction/watchdog.js.map +1 -0
  48. package/dist/delivery/interaction/web-driver.d.ts +102 -0
  49. package/dist/delivery/interaction/web-driver.d.ts.map +1 -0
  50. package/dist/delivery/interaction/web-driver.js +306 -0
  51. package/dist/delivery/interaction/web-driver.js.map +1 -0
  52. package/dist/delivery/interaction-gate.d.ts +45 -0
  53. package/dist/delivery/interaction-gate.d.ts.map +1 -0
  54. package/dist/delivery/interaction-gate.js +248 -0
  55. package/dist/delivery/interaction-gate.js.map +1 -0
  56. package/dist/delivery/mission-acceptance.d.ts +2 -0
  57. package/dist/delivery/mission-acceptance.d.ts.map +1 -1
  58. package/dist/delivery/mission-acceptance.js +23 -0
  59. package/dist/delivery/mission-acceptance.js.map +1 -1
  60. package/dist/delivery/vision-judge.d.ts +21 -0
  61. package/dist/delivery/vision-judge.d.ts.map +1 -1
  62. package/dist/delivery/vision-judge.js +96 -0
  63. package/dist/delivery/vision-judge.js.map +1 -1
  64. package/dist/types/config.d.ts +20 -0
  65. package/dist/types/config.d.ts.map +1 -1
  66. package/dist/types/config.js +7 -0
  67. package/dist/types/config.js.map +1 -1
  68. package/package.json +1 -1
  69. package/src/policies/enforcers/__pycache__/_common.cpython-312.pyc +0 -0
  70. package/templates/hooks/__pycache__/deliver_autoroute.cpython-312.pyc +0 -0
  71. package/tools/agents/scripts/__pycache__/toolcall_path_normalizer.cpython-312.pyc +0 -0
@@ -0,0 +1,217 @@
1
+ /**
2
+ * `uap interaction` — mine probes from the requirements, then play the artifact
3
+ * through them.
4
+ *
5
+ * `mine` derive a manifest from the requirements + source and write it to
6
+ * .uap/interaction/manifest.json
7
+ * `run` execute the manifest against the built artifact and report
8
+ * `status` show what is covered and whether the manifest still matches the
9
+ * requirements it was mined from
10
+ */
11
+ import chalk from 'chalk';
12
+ import { existsSync, readFileSync, readdirSync, statSync } from 'node:fs';
13
+ import { extname, join, relative } from 'node:path';
14
+ import { detectArtifactType, findWebEntry } from '../delivery/execution-gate.js';
15
+ import { runInteractionGate, interactionSummary } from '../delivery/interaction-gate.js';
16
+ import { coverageOf, loadManifest, manifestIsStale, manifestPath, saveManifest, } from '../delivery/interaction/manifest.js';
17
+ import { mineManifest } from '../delivery/interaction/mine.js';
18
+ import { resolveAcceptanceSpecAuto } from './verify.js';
19
+ const SOURCE_EXTS = new Set(['.js', '.mjs', '.ts', '.jsx', '.tsx', '.html']);
20
+ const SKIP_DIRS = new Set(['node_modules', '.git', 'dist', 'build', '.uap', 'coverage']);
21
+ /**
22
+ * A digest of the artifact's source so the miner writes probes against REAL
23
+ * identifiers. Without it the model invents plausible-looking observables that
24
+ * do not exist, and every probe then fails as a phantom defect.
25
+ */
26
+ export function collectSourceDigest(root, budget = 24_000) {
27
+ const parts = [];
28
+ let used = 0;
29
+ const walk = (dir, depth) => {
30
+ if (depth > 4 || used >= budget)
31
+ return;
32
+ let entries;
33
+ try {
34
+ entries = readdirSync(dir);
35
+ }
36
+ catch {
37
+ return;
38
+ }
39
+ for (const name of entries) {
40
+ if (used >= budget)
41
+ return;
42
+ if (SKIP_DIRS.has(name) || name.startsWith('.'))
43
+ continue;
44
+ const full = join(dir, name);
45
+ let st;
46
+ try {
47
+ st = statSync(full);
48
+ }
49
+ catch {
50
+ continue;
51
+ }
52
+ if (st.isDirectory()) {
53
+ walk(full, depth + 1);
54
+ continue;
55
+ }
56
+ if (!SOURCE_EXTS.has(extname(name)))
57
+ continue;
58
+ try {
59
+ const text = readFileSync(full, 'utf-8');
60
+ const slice = text.slice(0, Math.max(0, Math.min(6_000, budget - used)));
61
+ parts.push(`\n--- ${relative(root, full)} ---\n${slice}`);
62
+ used += slice.length;
63
+ }
64
+ catch {
65
+ /* unreadable file → skipped */
66
+ }
67
+ }
68
+ };
69
+ walk(root, 0);
70
+ return parts.join('\n');
71
+ }
72
+ async function buildExecutor(modelPreset, endpoint) {
73
+ try {
74
+ const { OpenAICompatClient } = await import('../models/openai-compat-client.js');
75
+ const { ModelPresets } = await import('../models/types.js');
76
+ const presetId = modelPreset ?? process.env.UAP_DELIVER_MODEL ?? 'qwen35-a3b';
77
+ const model = ModelPresets[presetId];
78
+ if (!model)
79
+ return null;
80
+ const resolved = endpoint ? { ...model, endpoint } : model;
81
+ const client = new OpenAICompatClient();
82
+ return async (prompt) => (await client.complete(resolved, prompt, { temperature: 0.1 })).content;
83
+ }
84
+ catch {
85
+ // No model is not an error: mining falls back to the deterministic baseline.
86
+ return null;
87
+ }
88
+ }
89
+ function parseModes(raw) {
90
+ if (!raw)
91
+ return ['core'];
92
+ const valid = ['core', 'soak', 'accelerated'];
93
+ const picked = raw
94
+ .split(',')
95
+ .map((s) => s.trim())
96
+ .filter((s) => valid.includes(s));
97
+ return picked.length > 0 ? picked : ['core'];
98
+ }
99
+ export async function interactionCommand(action, options = {}) {
100
+ const dir = options.dir ?? process.cwd();
101
+ const verb = action ?? 'status';
102
+ if (verb === 'mine') {
103
+ const specText = options.spec
104
+ ? (() => {
105
+ try {
106
+ return readFileSync(options.spec, 'utf-8');
107
+ }
108
+ catch {
109
+ return '';
110
+ }
111
+ })()
112
+ : (resolveAcceptanceSpecAuto(dir) ?? '');
113
+ if (!specText.trim()) {
114
+ process.stderr.write('uap interaction mine: no requirements found. Pass --spec <file>, or add ' +
115
+ '.uap/acceptance.md / REQUIREMENTS.md so probes can be derived from something.\n');
116
+ process.exit(2);
117
+ return;
118
+ }
119
+ // `detectArtifactType` returns 'web' | 'node' | 'cli' | 'lib' — a straight
120
+ // cast to ArtifactKind would write `kind: 'lib'`, which never validates, so
121
+ // the manifest would fail to load forever and the gate would report "no
122
+ // manifest" (i.e. pass) on every run afterwards.
123
+ const detected = detectArtifactType(dir);
124
+ const web = findWebEntry(dir);
125
+ const kind = web ? 'web' : detected === 'cli' ? 'cli' : null;
126
+ if (!kind) {
127
+ process.stderr.write(`uap interaction mine: no interactive artifact found in ${dir} ` +
128
+ `(detected: ${detected ?? 'nothing'}). The interaction gate needs a web entry point.\n`);
129
+ process.exit(2);
130
+ return;
131
+ }
132
+ const executor = await buildExecutor(options.model, options.endpoint);
133
+ let manifest;
134
+ try {
135
+ manifest = await mineManifest({
136
+ projectRoot: dir,
137
+ kind,
138
+ // Never hardcode index.html: findWebEntry supports any .html, and
139
+ // keying off index.html alone makes the driver request a path the
140
+ // server 404s, which then reads as an artifact defect.
141
+ entry: web?.entry ?? 'index.html',
142
+ specText,
143
+ sourceDigest: collectSourceDigest(web?.dir ?? dir),
144
+ ...(executor ? { executor } : {}),
145
+ });
146
+ }
147
+ catch (e) {
148
+ process.stderr.write(`uap interaction mine: ${String(e)}\n`);
149
+ process.exit(1);
150
+ return;
151
+ }
152
+ const path = saveManifest(dir, manifest);
153
+ const ledger = coverageOf(manifest);
154
+ if (options.json) {
155
+ process.stdout.write(`${JSON.stringify({ path, manifest, coverage: ledger }, null, 2)}\n`);
156
+ return;
157
+ }
158
+ process.stdout.write(`${chalk.green('✓')} mined ${manifest.probes.length} probe(s) for ${manifest.requirements.length} requirement(s) → ${path}\n`);
159
+ if (!executor) {
160
+ process.stdout.write(chalk.yellow(' no model available — wrote the deterministic baseline only. ' +
161
+ 'Artifact-specific probes need a model preset (-m).\n'));
162
+ }
163
+ if (ledger.uncovered.length > 0) {
164
+ process.stdout.write(chalk.yellow(` ${ledger.uncovered.length} requirement(s) have no probe — they are unverified.\n`));
165
+ }
166
+ return;
167
+ }
168
+ if (verb === 'run') {
169
+ const verdict = await runInteractionGate(dir, {
170
+ modes: parseModes(options.modes),
171
+ ...(options.strictCoverage ? { strictCoverage: true } : {}),
172
+ });
173
+ if (options.json) {
174
+ process.stdout.write(`${JSON.stringify(verdict, null, 2)}\n`);
175
+ }
176
+ else {
177
+ process.stdout.write(`${verdict.feedback}\n`);
178
+ }
179
+ // Exit non-zero on a real behavioural failure so CI and hooks can gate on
180
+ // it; a skip (no manifest, no browser) stays 0 and says so.
181
+ process.exit(verdict.passed || verdict.skipped ? 0 : 1);
182
+ return;
183
+ }
184
+ // status
185
+ const manifest = loadManifest(dir);
186
+ if (!manifest) {
187
+ const path = manifestPath(dir);
188
+ const exists = existsSync(path);
189
+ process.stdout.write(exists
190
+ ? `${chalk.red('✗')} ${path} exists but is invalid — re-run \`uap interaction mine\`.\n`
191
+ : `${chalk.dim('·')} no interaction manifest. Run \`uap interaction mine\` to derive probes from the requirements.\n`);
192
+ process.exit(exists ? 1 : 0);
193
+ return;
194
+ }
195
+ const ledger = coverageOf(manifest);
196
+ const specText = resolveAcceptanceSpecAuto(dir);
197
+ const stale = specText ? manifestIsStale(manifest, specText) : false;
198
+ if (options.json) {
199
+ process.stdout.write(`${JSON.stringify({ manifest, coverage: ledger, stale }, null, 2)}\n`);
200
+ return;
201
+ }
202
+ process.stdout.write(`${chalk.bold('interaction manifest')} — ${manifest.probes.length} probe(s), ` +
203
+ `requirements covered ${ledger.covered}/${ledger.total}\n`);
204
+ for (const p of manifest.probes) {
205
+ process.stdout.write(` ${chalk.dim(p.mode.padEnd(11))} ${p.id} — ${p.description}\n`);
206
+ }
207
+ if (ledger.uncovered.length > 0) {
208
+ process.stdout.write(chalk.yellow(`\n unverified requirements:\n`));
209
+ for (const r of ledger.uncovered)
210
+ process.stdout.write(` ${r.id}: ${r.text}\n`);
211
+ }
212
+ if (stale) {
213
+ process.stdout.write(chalk.yellow('\n ⚠ the requirements changed since these probes were mined — re-run `uap interaction mine`.\n'));
214
+ }
215
+ }
216
+ export { interactionSummary };
217
+ //# sourceMappingURL=interaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interaction.js","sourceRoot":"","sources":["../../src/cli/interaction.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@
11
11
  import { type GateRung, type LadderResult } from '../delivery/verifier-ladder.js';
12
12
  import { type AcceptanceResult } from '../delivery/acceptance-judge.js';
13
13
  import { type VisualVerdict } from '../delivery/visual-gate.js';
14
+ import type { InteractionVerdict } from '../delivery/interaction/types.js';
14
15
  import { type ResolvedFidelity } from '../delivery/fidelity.js';
15
16
  import type { LoopExecutor } from '../delivery/convergence-loop.js';
16
17
  /**
@@ -54,6 +55,8 @@ export interface VerifyOptions {
54
55
  * and the last report is missing/stale/failed for the CURRENT tree. A
55
56
  * fresh-pass report (code unchanged since validation) skips the cost. */
56
57
  userPathsAuto?: boolean;
58
+ /** Run the interaction gate (default: on when a manifest exists). */
59
+ interaction?: boolean;
57
60
  }
58
61
  export interface VerifyResult {
59
62
  passed: boolean;
@@ -65,6 +68,9 @@ export interface VerifyResult {
65
68
  rungs: GateRung[];
66
69
  acceptance?: AcceptanceResult;
67
70
  visual?: VisualVerdict;
71
+ interaction?: InteractionVerdict;
72
+ /** Which gates blocked, for machine consumers of the JSON output. */
73
+ blockedBy?: string[];
68
74
  }
69
75
  /** Core verify logic — pure-ish (no process.exit), so it is unit-testable. */
70
76
  export declare function runVerify(opts?: VerifyOptions): Promise<VerifyResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/cli/verify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAwC,KAAK,QAAQ,EAAiB,KAAK,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACvI,OAAO,EAA6C,KAAK,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnH,OAAO,EAAqC,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAC;AACnG,OAAO,EAAmB,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AASjF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAIpE;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAmCtD;AAED,MAAM,WAAW,aAAa;IAC5B,kDAAkD;IAClD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,sEAAsE;IACtE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,uFAAuF;IACvF,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,sCAAsC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kFAAkF;IAClF,kBAAkB,CAAC,EAAE,YAAY,CAAC;IAClC;;6BAEyB;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,sFAAsF;IACtF,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,oFAAoF;IACpF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;mFAC+E;IAC/E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;6EAGyE;IACzE,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,mDAAmD;IACnD,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED,8EAA8E;AAC9E,wBAAsB,SAAS,CAAC,IAAI,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CA6P/E;AAmDD;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAkCpE;AAED,uEAAuE;AACvE,wBAAsB,aAAa,CACjC,OAAO,EAAE,aAAa,GAAG;IAAE,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAChH,OAAO,CAAC,IAAI,CAAC,CAmDf"}
1
+ {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/cli/verify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAwC,KAAK,QAAQ,EAAiB,KAAK,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACvI,OAAO,EAA6C,KAAK,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnH,OAAO,EAAqC,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAEnG,OAAO,KAAK,EAAE,kBAAkB,EAAa,MAAM,kCAAkC,CAAC;AACtF,OAAO,EAAmB,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AASjF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAIpE;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAmCtD;AAED,MAAM,WAAW,aAAa;IAC5B,kDAAkD;IAClD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,sEAAsE;IACtE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,uFAAuF;IACvF,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,sCAAsC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kFAAkF;IAClF,kBAAkB,CAAC,EAAE,YAAY,CAAC;IAClC;;6BAEyB;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,sFAAsF;IACtF,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,oFAAoF;IACpF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;mFAC+E;IAC/E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;6EAGyE;IACzE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qEAAqE;IACrE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,mDAAmD;IACnD,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,8EAA8E;AAC9E,wBAAsB,SAAS,CAAC,IAAI,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAyW/E;AAmDD;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAkCpE;AAED,uEAAuE;AACvE,wBAAsB,aAAa,CACjC,OAAO,EAAE,aAAa,GAAG;IAAE,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAChH,OAAO,CAAC,IAAI,CAAC,CAwDf"}
@@ -11,6 +11,7 @@
11
11
  import { detectRungs, runTieredLadder, tierOf } from '../delivery/verifier-ladder.js';
12
12
  import { runAcceptanceGate, formatAcceptanceReport } from '../delivery/acceptance-judge.js';
13
13
  import { runVisualGate, discoverEntryPages } from '../delivery/visual-gate.js';
14
+ import { runInteractionGate, interactionSummary } from '../delivery/interaction-gate.js';
14
15
  import { resolveFidelity } from '../delivery/fidelity.js';
15
16
  import { checkUserValidationFreshness, createUserValidationRunner, resolveUserValidationMode, synthesizeUserValidationRung, } from '../delivery/user-validation.js';
16
17
  import { loadUapConfigRaw } from '../utils/config-loader.js';
@@ -172,8 +173,52 @@ export async function runVerify(opts = {}) {
172
173
  // notes for a game that had NO render loop at all. It also wastes a headless
173
174
  // browser pass plus a vision-model call on every failing turn.
174
175
  const ladderGreen = ladder.passed;
175
- const visualSkippedForLadder = visualWanted && hasEntryPages && !ladderGreen;
176
- if (visualWanted && hasEntryPages && ladderGreen) {
176
+ // ── Interaction gate ──────────────────────────────────────────────────────
177
+ // Between "it runs" and "it looks right": does it DO what it promised, under
178
+ // real input? Runs only once the ladder is green (driving a build that does
179
+ // not compile proves nothing) and BEFORE the visual/vision pass, because a
180
+ // vision judge grades a frame and a frozen frame is indistinguishable from a
181
+ // working one — a broken build can collect a passing aesthetic score, and the
182
+ // fix loop then chases palette notes instead of the defect. Observed live
183
+ // (octopus_invaders_v3, 2026-07-25): visual gate `passed: true` on a build
184
+ // whose render loop died three seconds in.
185
+ let interaction;
186
+ // Excluded from --runtime-only for the same reason as the visual gate: that is
187
+ // the Stop hook's CHEAP path, run under a 120s kill, and driving a real
188
+ // browser through a probe suite is not cheap. Without this exclusion, merely
189
+ // having a manifest turns every session-end check into a browser run that the
190
+ // outer timeout kills mid-probe — skipping the teardown that reaps Chromium.
191
+ const interactionWanted = opts.interaction !== false && (!opts.runtimeOnly || fidelity.max);
192
+ if (ladderGreen && interactionWanted && hasEntryPages) {
193
+ // Max fidelity runs every mode — including the soak probes that prove the
194
+ // artifact survives sustained use, which is where "playable for many levels"
195
+ // is actually decided.
196
+ interaction = await runInteractionGate(dir, {
197
+ ...(fidelity.max
198
+ ? { modes: ['core', 'accelerated', 'soak'], strictCoverage: true }
199
+ : {}),
200
+ // Keep the whole gate inside the Stop hook's budget when max fidelity
201
+ // forces it onto the runtime-only path.
202
+ ...(opts.runtimeOnly ? { budgetMs: 60_000, probeTimeoutMs: 20_000 } : {}),
203
+ });
204
+ }
205
+ // Standard: a missing manifest / unavailable driver fails OPEN (advisory).
206
+ // Max: an artifact whose promised behaviour was never exercised is NOT
207
+ // verified, so the skip fails CLOSED.
208
+ //
209
+ // Tested on `skipped` DIRECTLY rather than on `!passed`: skipped verdicts
210
+ // carry passed:true, so the obvious `!passed && (max || !skipped)` spelling
211
+ // makes the max-fidelity clause unreachable and the gate silently fails open
212
+ // at exactly the fidelity where it is meant to be strictest.
213
+ const interactionBlocks = Boolean(interaction && (interaction.skipped ? fidelity.max : !interaction.passed));
214
+ const interactionReport = interaction
215
+ ? `\n${interaction.passed && !interaction.skipped ? interactionSummary(interaction) : interaction.feedback}`
216
+ : '';
217
+ // A build that does not behave gets no aesthetic review: grading the pixels of
218
+ // a game that cannot be played sends the next turn after the wrong defect.
219
+ const interactionGreen = !interaction || interaction.passed || interaction.skipped;
220
+ const visualSkippedForLadder = visualWanted && hasEntryPages && (!ladderGreen || !interactionGreen);
221
+ if (visualWanted && hasEntryPages && ladderGreen && interactionGreen) {
177
222
  visual = await runVisualGate(dir);
178
223
  }
179
224
  // Standard: a no-browser SKIP fails open. Max: fail CLOSED — a project with
@@ -183,8 +228,14 @@ export async function runVerify(opts = {}) {
183
228
  // Say plainly that rendering was NOT checked — silence here would read as
184
229
  // "the visuals are fine" on exactly the runs where nothing was observed.
185
230
  if (visualSkippedForLadder) {
186
- visualReport +=
187
- '\nvisual + aesthetic review SKIPPED the build/run gates must pass first. ' +
231
+ // Name the ACTUAL cause. Telling an agent "the build/run gates must pass
232
+ // first" when the build compiled and ran fine, and it was the BEHAVIOUR that
233
+ // failed, points it at the wrong gate — the misdirected-feedback failure
234
+ // this whole subsystem exists to prevent.
235
+ visualReport += ladderGreen
236
+ ? '\nvisual + aesthetic review SKIPPED — the artifact does not yet behave as promised. ' +
237
+ 'Fix the interaction failures above; how it looks is only judged once it works.'
238
+ : '\nvisual + aesthetic review SKIPPED — the build/run gates must pass first. ' +
188
239
  'Fix the failing gate above; rendering is only judged once the artifact compiles and runs.';
189
240
  }
190
241
  // Visual regression baselines. --approve-visual pins the current look; otherwise
@@ -228,10 +279,43 @@ export async function runVerify(opts = {}) {
228
279
  if (visionJudgeConfigured()) {
229
280
  const shots = visual.pages.flatMap((pg) => pg.screenshots.slice(-1));
230
281
  const verdict = await judgeScreenshots(shots, opts.acceptanceSpec ?? 'A polished, working application UI.', readDesignContext(dir));
282
+ // Corroborate before reporting: asked for a `findings` list the judge
283
+ // fills it whether or not defects exist, and a single still frame
284
+ // invites claims about animation and hit-feedback it cannot show. Each
285
+ // finding goes back with the image and is dropped unless the model can
286
+ // point to what shows it.
287
+ if (verdict && verdict.findings.length > 0) {
288
+ try {
289
+ const { corroborateFindings } = await import('../delivery/vision-judge.js');
290
+ const { kept, dropped } = await corroborateFindings(verdict.findings, shots);
291
+ verdict.findings = kept;
292
+ if (dropped.length > 0) {
293
+ visualReport += `\n(${dropped.length} vision finding(s) discarded — the model could not point to anything in the frame that shows them.)`;
294
+ }
295
+ }
296
+ catch {
297
+ /* corroboration is best-effort; fall back to the raw findings */
298
+ }
299
+ }
231
300
  const summary = visionSummary(verdict);
232
301
  if (summary)
233
302
  visualReport += `\n${summary}`;
234
- if (fidelity.max && verdict && verdict.score < fidelity.visionMinScore) {
303
+ // A low score that did NOT block must say so — silence here reads as
304
+ // "the look was approved" on exactly the runs where it was not.
305
+ if (fidelity.max &&
306
+ fidelity.visionBlocking !== 'block' &&
307
+ verdict &&
308
+ verdict.score < fidelity.visionMinScore) {
309
+ visualReport +=
310
+ `\n⚠ aesthetic score ${verdict.score}/10 is below the ${fidelity.visionMinScore} threshold, ` +
311
+ `reported but NOT blocking (fidelity.visionBlocking = advisory). This judge has been measured ` +
312
+ `producing confident findings that are false against the frame it graded, so it reviews rather ` +
313
+ `than gates. Set fidelity.visionBlocking = "block" to make it gate again.`;
314
+ }
315
+ if (fidelity.max &&
316
+ fidelity.visionBlocking === 'block' &&
317
+ verdict &&
318
+ verdict.score < fidelity.visionMinScore) {
235
319
  visionBlocks = true;
236
320
  visualReport += `\n✗ max fidelity: aesthetic score ${verdict.score}/10 is below the ${fidelity.visionMinScore} threshold.`;
237
321
  // Canvas apps score low most often because the render loop is gated on an
@@ -278,13 +362,18 @@ export async function runVerify(opts = {}) {
278
362
  // (a broken-but-loading UI). Printing "VERIFIED ✓" then problems + exit 1 is
279
363
  // exactly how an agent mis-reads a failure as success and claims done.
280
364
  const blockedBy = [
365
+ interactionBlocks && 'promised behaviour under real input',
281
366
  visualBlocks && 'visual/behavioral render',
282
367
  visionBlocks && 'aesthetic score',
283
368
  baselineBlocks && 'visual regression',
284
369
  acceptanceBlocks && 'acceptance criteria',
285
370
  ].filter(Boolean);
286
371
  const overallPassed = ladder.passed && blockedBy.length === 0;
287
- const report = formatReport(ladder, overallPassed, blockedBy) + untestedReport + visualReport + acceptanceReport;
372
+ const report = formatReport(ladder, overallPassed, blockedBy) +
373
+ untestedReport +
374
+ interactionReport +
375
+ visualReport +
376
+ acceptanceReport;
288
377
  // Exit-code contract for the Stop hook: 0 = verified, 1 = a REAL gate failure
289
378
  // (the code is broken), 3 = INFRA failure (gate timed out / could not spawn /
290
379
  // killed by signal). The hook hard-blocks only on 1; 3 fails OPEN so a flaky
@@ -302,8 +391,17 @@ export async function runVerify(opts = {}) {
302
391
  // regression drift) gate the same way.
303
392
  if ((visualBlocks || visionBlocks || baselineBlocks) && exitCode === 0)
304
393
  exitCode = 1;
394
+ // A behavioural failure is a REAL failure — the artifact ran and did not do
395
+ // what it promised — so it gates like broken code rather than failing open.
396
+ if (interactionBlocks && exitCode === 0)
397
+ exitCode = 1;
305
398
  return {
306
- passed: ladder.passed && !acceptanceBlocks && !visualBlocks && !visionBlocks && !baselineBlocks,
399
+ passed: ladder.passed &&
400
+ !acceptanceBlocks &&
401
+ !interactionBlocks &&
402
+ !visualBlocks &&
403
+ !visionBlocks &&
404
+ !baselineBlocks,
307
405
  exitCode,
308
406
  empty: false,
309
407
  report,
@@ -311,6 +409,8 @@ export async function runVerify(opts = {}) {
311
409
  rungs,
312
410
  acceptance,
313
411
  visual,
412
+ interaction,
413
+ blockedBy,
314
414
  };
315
415
  }
316
416
  function formatReport(ladder, overallPassed, blockedBy = []) {
@@ -449,6 +549,11 @@ export async function verifyCommand(options) {
449
549
  score: result.ladder?.score ?? null,
450
550
  results: result.ladder?.results ?? [],
451
551
  acceptance: result.acceptance ?? null,
552
+ // Without these a CI consumer sees `passed: false` and has nothing
553
+ // machine-readable saying which gate blocked or why.
554
+ interaction: result.interaction ?? null,
555
+ visual: result.visual ?? null,
556
+ blockedBy: result.blockedBy ?? [],
452
557
  }, null, 2) + '\n');
453
558
  }
454
559
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/cli/verify.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/cli/verify.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,22 @@ export interface ResolvedFidelity {
9
9
  visionModel?: string;
10
10
  /** Minimum aesthetic score (0–10) to pass under max. */
11
11
  visionMinScore: number;
12
+ /**
13
+ * Whether a low aesthetic score can BLOCK, or is reported for a human.
14
+ *
15
+ * Default 'advisory'. Measured on a working build (octopus_invaders_v3,
16
+ * 2026-07-26): the judge scored a correct render 4/10 and all three of its
17
+ * findings were false against the very frame it graded — a background "with
18
+ * no stars or nebulae" (both plainly visible), a health bar "overflowing its
19
+ * container" (it read 100/100, and the fill is barW * healthPct, which cannot
20
+ * exceed barW), and misaligned HUD text (both strings drawn at y=40 in one
21
+ * font). Asked CHECKABLE questions about the same frame the same model
22
+ * answered correctly, so perception is fine and the list-shaped judging task
23
+ * is what fabricates. Corroboration removes most of it but not all, which
24
+ * makes the judge a useful reviewer and an unsound gate: acting on it edits
25
+ * correct code. Set 'block' to opt back in.
26
+ */
27
+ visionBlocking: 'advisory' | 'block';
12
28
  /** Keep/enforce visual regression baselines. */
13
29
  visualBaselines: boolean;
14
30
  /** Where the mode came from (for transparent reporting). */
@@ -1 +1 @@
1
- {"version":3,"file":"fidelity.d.ts","sourceRoot":"","sources":["../../src/delivery/fidelity.ts"],"names":[],"mappings":"AAmBA,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,KAAK,CAAC;AAE9C,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,YAAY,CAAC;IACnB,gCAAgC;IAChC,GAAG,EAAE,OAAO,CAAC;IACb,sEAAsE;IACtE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wDAAwD;IACxD,cAAc,EAAE,MAAM,CAAC;IACvB,gDAAgD;IAChD,eAAe,EAAE,OAAO,CAAC;IACzB,4DAA4D;IAC5D,MAAM,EAAE,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;CACtC;AASD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,GAAE,MAAsB,GAAG,gBAAgB,CAwB7E;AAED,qEAAqE;AACrE,wBAAgB,aAAa,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAElE"}
1
+ {"version":3,"file":"fidelity.d.ts","sourceRoot":"","sources":["../../src/delivery/fidelity.ts"],"names":[],"mappings":"AAmBA,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,KAAK,CAAC;AAE9C,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,YAAY,CAAC;IACnB,gCAAgC;IAChC,GAAG,EAAE,OAAO,CAAC;IACb,sEAAsE;IACtE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wDAAwD;IACxD,cAAc,EAAE,MAAM,CAAC;IACvB;;;;;;;;;;;;;;OAcG;IACH,cAAc,EAAE,UAAU,GAAG,OAAO,CAAC;IACrC,gDAAgD;IAChD,eAAe,EAAE,OAAO,CAAC;IACzB,4DAA4D;IAC5D,MAAM,EAAE,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;CACtC;AASD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,GAAE,MAAsB,GAAG,gBAAgB,CAgC7E;AAED,qEAAqE;AACrE,wBAAgB,aAAa,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAElE"}
@@ -47,6 +47,13 @@ export function resolveFidelity(cwd = process.cwd()) {
47
47
  visionEndpoint,
48
48
  visionModel,
49
49
  visionMinScore: typeof cfg?.visionMinScore === 'number' ? cfg.visionMinScore : 6,
50
+ visionBlocking: process.env.UAP_VISION_BLOCKING === 'block'
51
+ ? 'block'
52
+ : process.env.UAP_VISION_BLOCKING === 'advisory'
53
+ ? 'advisory'
54
+ : cfg?.visionBlocking === 'block'
55
+ ? 'block'
56
+ : 'advisory',
50
57
  visualBaselines: cfg?.visualBaselines !== false,
51
58
  source,
52
59
  };
@@ -1 +1 @@
1
- {"version":3,"file":"fidelity.js","sourceRoot":"","sources":["../../src/delivery/fidelity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAoB1D,SAAS,aAAa,CAAC,CAAU;IAC/B,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC/C,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IACnF,IAAI,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,KAAK;QAAE,OAAO,UAAU,CAAC;IACxF,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IACzD,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC;IACzC,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACzC,MAAM,IAAI,GAAiB,OAAO,IAAI,OAAO,IAAI,UAAU,CAAC;IAC5D,MAAM,MAAM,GAA+B,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5F,4EAA4E;IAC5E,2EAA2E;IAC3E,0EAA0E;IAC1E,2EAA2E;IAC3E,8CAA8C;IAC9C,MAAM,cAAc,GAClB,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,GAAG,EAAE,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,SAAS,CAAC;IAC5G,MAAM,WAAW,GACf,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,GAAG,EAAE,WAAW,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC7F,OAAO;QACL,IAAI;QACJ,GAAG,EAAE,IAAI,KAAK,KAAK;QACnB,cAAc;QACd,WAAW;QACX,cAAc,EAAE,OAAO,GAAG,EAAE,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QAChF,eAAe,EAAE,GAAG,EAAE,eAAe,KAAK,KAAK;QAC/C,MAAM;KACP,CAAC;AACJ,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,aAAa,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IACvD,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"fidelity.js","sourceRoot":"","sources":["../../src/delivery/fidelity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAoC1D,SAAS,aAAa,CAAC,CAAU;IAC/B,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC/C,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IACnF,IAAI,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,KAAK;QAAE,OAAO,UAAU,CAAC;IACxF,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IACzD,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC;IACzC,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACzC,MAAM,IAAI,GAAiB,OAAO,IAAI,OAAO,IAAI,UAAU,CAAC;IAC5D,MAAM,MAAM,GAA+B,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5F,4EAA4E;IAC5E,2EAA2E;IAC3E,0EAA0E;IAC1E,2EAA2E;IAC3E,8CAA8C;IAC9C,MAAM,cAAc,GAClB,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,GAAG,EAAE,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,SAAS,CAAC;IAC5G,MAAM,WAAW,GACf,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,GAAG,EAAE,WAAW,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC7F,OAAO;QACL,IAAI;QACJ,GAAG,EAAE,IAAI,KAAK,KAAK;QACnB,cAAc;QACd,WAAW;QACX,cAAc,EAAE,OAAO,GAAG,EAAE,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QAChF,cAAc,EACZ,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,OAAO;YACzC,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,UAAU;gBAC9C,CAAC,CAAC,UAAU;gBACZ,CAAC,CAAE,GAA+C,EAAE,cAAc,KAAK,OAAO;oBAC5E,CAAC,CAAC,OAAO;oBACT,CAAC,CAAC,UAAU;QACpB,eAAe,EAAE,GAAG,EAAE,eAAe,KAAK,KAAK;QAC/C,MAAM;KACP,CAAC;AACJ,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,aAAa,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IACvD,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;AAClC,CAAC"}