harnery 0.37.0 → 0.38.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 (184) hide show
  1. package/dist/commander.d.ts +9 -0
  2. package/dist/commander.d.ts.map +1 -1
  3. package/dist/commander.js +7 -2
  4. package/dist/commands/admission.d.ts +21 -0
  5. package/dist/commands/admission.d.ts.map +1 -0
  6. package/dist/commands/admission.js +565 -0
  7. package/dist/commands/agents.d.ts +7 -0
  8. package/dist/commands/agents.d.ts.map +1 -1
  9. package/dist/commands/agents.js +61 -1
  10. package/dist/commands/artifacts.d.ts.map +1 -1
  11. package/dist/commands/artifacts.js +48 -2
  12. package/dist/commands/browse-ai.d.ts +2 -2
  13. package/dist/commands/browse-ai.d.ts.map +1 -1
  14. package/dist/commands/browse-ai.js +6 -4
  15. package/dist/commands/browse.d.ts.map +1 -1
  16. package/dist/commands/browse.js +349 -21
  17. package/dist/commands/fetch.js +1 -0
  18. package/dist/commands/qa-record.d.ts +144 -0
  19. package/dist/commands/qa-record.d.ts.map +1 -0
  20. package/dist/commands/qa-record.js +0 -0
  21. package/dist/commands/qa-run.d.ts +7 -3
  22. package/dist/commands/qa-run.d.ts.map +1 -1
  23. package/dist/commands/qa-run.js +268 -13
  24. package/dist/commands/qa-status.d.ts +71 -0
  25. package/dist/commands/qa-status.d.ts.map +1 -0
  26. package/dist/commands/qa-status.js +490 -0
  27. package/dist/commands/qa-verify.d.ts +40 -0
  28. package/dist/commands/qa-verify.d.ts.map +1 -0
  29. package/dist/commands/qa-verify.js +180 -0
  30. package/dist/commands/review-pack.d.ts +4 -0
  31. package/dist/commands/review-pack.d.ts.map +1 -0
  32. package/dist/commands/review-pack.js +1001 -0
  33. package/dist/core/agents/qa-signal.d.ts +111 -0
  34. package/dist/core/agents/qa-signal.d.ts.map +1 -0
  35. package/dist/core/agents/qa-signal.js +231 -0
  36. package/dist/core/agents/session-name-display.d.ts +20 -5
  37. package/dist/core/agents/session-name-display.d.ts.map +1 -1
  38. package/dist/core/agents/session-name-display.js +67 -7
  39. package/dist/core/agents/state/heartbeat-reader.d.ts +7 -0
  40. package/dist/core/agents/state/heartbeat-reader.d.ts.map +1 -1
  41. package/dist/core/agents/state/heartbeat-writer.d.ts +11 -0
  42. package/dist/core/agents/state/heartbeat-writer.d.ts.map +1 -1
  43. package/dist/core/agents/state/heartbeat-writer.js +17 -0
  44. package/dist/core/agents/state/live-coordination-view.d.ts.map +1 -1
  45. package/dist/core/agents/state/live-coordination-view.js +1 -0
  46. package/dist/core/agents/state/live-coordination-writer.js +5 -0
  47. package/dist/core/artifacts/constants.d.ts +1 -1
  48. package/dist/core/artifacts/constants.js +1 -1
  49. package/dist/core/artifacts/index.d.ts +57 -6
  50. package/dist/core/artifacts/index.d.ts.map +1 -1
  51. package/dist/core/artifacts/index.js +265 -10
  52. package/dist/core/config.d.ts +8 -0
  53. package/dist/core/config.d.ts.map +1 -1
  54. package/dist/core/config.js +16 -0
  55. package/dist/core/diagnostics/bundle.d.ts +16 -0
  56. package/dist/core/diagnostics/bundle.d.ts.map +1 -1
  57. package/dist/core/diagnostics/bundle.js +101 -7
  58. package/dist/core/events/v3/bootstrap.d.ts.map +1 -1
  59. package/dist/core/events/v3/bootstrap.js +10 -0
  60. package/dist/core/events/v3/coordination-view.d.ts +3 -0
  61. package/dist/core/events/v3/coordination-view.d.ts.map +1 -1
  62. package/dist/core/events/v3/coordination-view.js +69 -8
  63. package/dist/core/events/v3/producers/intake.d.ts.map +1 -1
  64. package/dist/core/events/v3/producers/intake.js +9 -2
  65. package/dist/core/events/v3/producers/recorder.d.ts +23 -0
  66. package/dist/core/events/v3/producers/recorder.d.ts.map +1 -1
  67. package/dist/core/events/v3/producers/recorder.js +264 -18
  68. package/dist/core/hooks/cli.js +120 -27
  69. package/dist/core/hooks/resolve/transcript.d.ts.map +1 -1
  70. package/dist/core/hooks/resolve/transcript.js +10 -3
  71. package/dist/core/hooks/session-name-presence.d.ts.map +1 -1
  72. package/dist/core/hooks/session-name-presence.js +4 -1
  73. package/dist/core/qa-artifacts.d.ts +20 -0
  74. package/dist/core/qa-artifacts.d.ts.map +1 -0
  75. package/dist/core/qa-artifacts.js +110 -0
  76. package/dist/core/resources/contract.d.ts +6 -0
  77. package/dist/core/resources/contract.d.ts.map +1 -1
  78. package/dist/core/resources/sampler.d.ts +7 -0
  79. package/dist/core/resources/sampler.d.ts.map +1 -1
  80. package/dist/core/resources/sampler.js +106 -5
  81. package/dist/lib/admission.d.ts +71 -0
  82. package/dist/lib/admission.d.ts.map +1 -0
  83. package/dist/lib/admission.js +264 -0
  84. package/dist/lib/agent-browser/client.d.ts +1 -1
  85. package/dist/lib/agent-browser/client.d.ts.map +1 -1
  86. package/dist/lib/agent-browser/client.js +1 -5
  87. package/dist/lib/browser/capture-fidelity.d.ts +39 -0
  88. package/dist/lib/browser/capture-fidelity.d.ts.map +1 -0
  89. package/dist/lib/browser/capture-fidelity.js +84 -0
  90. package/dist/lib/browser/client.d.ts +41 -1
  91. package/dist/lib/browser/client.d.ts.map +1 -1
  92. package/dist/lib/browser/client.js +167 -9
  93. package/dist/lib/browser/critique.d.ts +38 -1
  94. package/dist/lib/browser/critique.d.ts.map +1 -1
  95. package/dist/lib/browser/critique.js +34 -6
  96. package/dist/lib/browser/index.d.ts +4 -2
  97. package/dist/lib/browser/index.d.ts.map +1 -1
  98. package/dist/lib/browser/index.js +2 -0
  99. package/dist/lib/browser/page-review-judge.d.ts +64 -0
  100. package/dist/lib/browser/page-review-judge.d.ts.map +1 -0
  101. package/dist/lib/browser/page-review-judge.js +270 -0
  102. package/dist/lib/browser/page-review-pack.d.ts +613 -0
  103. package/dist/lib/browser/page-review-pack.d.ts.map +1 -0
  104. package/dist/lib/browser/page-review-pack.js +1751 -0
  105. package/dist/lib/browser/qa-run-contracts.d.ts +214 -10
  106. package/dist/lib/browser/qa-run-contracts.d.ts.map +1 -1
  107. package/dist/lib/browser/qa-run-contracts.js +136 -1
  108. package/dist/lib/browser/qa-run.d.ts +100 -10
  109. package/dist/lib/browser/qa-run.d.ts.map +1 -1
  110. package/dist/lib/browser/qa-run.js +768 -169
  111. package/dist/lib/browser/request-diagnostics.d.ts +13 -0
  112. package/dist/lib/browser/request-diagnostics.d.ts.map +1 -0
  113. package/dist/lib/browser/request-diagnostics.js +18 -0
  114. package/dist/lib/browser/tiling.d.ts +19 -0
  115. package/dist/lib/browser/tiling.d.ts.map +1 -1
  116. package/dist/lib/browser/tiling.js +28 -0
  117. package/dist/lib/cookies/client.d.ts +9 -0
  118. package/dist/lib/cookies/client.d.ts.map +1 -1
  119. package/dist/lib/cookies/client.js +197 -44
  120. package/dist/lib/cookies/extra.d.ts +18 -0
  121. package/dist/lib/cookies/extra.d.ts.map +1 -0
  122. package/dist/lib/cookies/extra.js +14 -0
  123. package/dist/lib/cookies/index.d.ts +2 -1
  124. package/dist/lib/cookies/index.d.ts.map +1 -1
  125. package/dist/lib/cookies/index.js +2 -1
  126. package/dist/lib/durable-job.d.ts +124 -0
  127. package/dist/lib/durable-job.d.ts.map +1 -0
  128. package/dist/lib/durable-job.js +296 -0
  129. package/dist/lib/http/client.d.ts +7 -1
  130. package/dist/lib/http/client.d.ts.map +1 -1
  131. package/dist/lib/http/client.js +2 -0
  132. package/dist/lib/instructions/templates.d.ts.map +1 -1
  133. package/dist/lib/instructions/templates.js +5 -2
  134. package/package.json +8 -2
  135. package/src/commander.ts +50 -2
  136. package/src/commands/admission.ts +699 -0
  137. package/src/commands/agents.ts +87 -1
  138. package/src/commands/artifacts.ts +97 -21
  139. package/src/commands/browse-ai.ts +10 -5
  140. package/src/commands/browse.ts +481 -20
  141. package/src/commands/fetch.ts +1 -0
  142. package/src/commands/qa-record.ts +682 -0
  143. package/src/commands/qa-run.ts +335 -16
  144. package/src/commands/qa-status.ts +608 -0
  145. package/src/commands/qa-verify.ts +238 -0
  146. package/src/commands/review-pack.ts +1281 -0
  147. package/src/core/agents/qa-signal.ts +261 -0
  148. package/src/core/agents/session-name-display.ts +78 -7
  149. package/src/core/agents/state/heartbeat-reader.ts +7 -0
  150. package/src/core/agents/state/heartbeat-writer.ts +23 -0
  151. package/src/core/agents/state/live-coordination-view.ts +1 -0
  152. package/src/core/agents/state/live-coordination-writer.ts +5 -0
  153. package/src/core/artifacts/constants.ts +1 -1
  154. package/src/core/artifacts/index.ts +370 -21
  155. package/src/core/config.ts +23 -0
  156. package/src/core/diagnostics/bundle.ts +119 -11
  157. package/src/core/events/v3/bootstrap.ts +10 -0
  158. package/src/core/events/v3/coordination-view.ts +100 -11
  159. package/src/core/events/v3/producers/intake.ts +9 -2
  160. package/src/core/events/v3/producers/recorder.ts +312 -18
  161. package/src/core/hooks/cli.ts +140 -32
  162. package/src/core/hooks/resolve/transcript.ts +10 -3
  163. package/src/core/hooks/session-name-presence.ts +6 -1
  164. package/src/core/qa-artifacts.ts +126 -0
  165. package/src/core/resources/contract.ts +7 -0
  166. package/src/core/resources/sampler.ts +138 -6
  167. package/src/lib/admission.ts +347 -0
  168. package/src/lib/agent-browser/client.ts +2 -10
  169. package/src/lib/browser/capture-fidelity.ts +98 -0
  170. package/src/lib/browser/client.ts +206 -10
  171. package/src/lib/browser/critique.ts +62 -7
  172. package/src/lib/browser/index.ts +36 -0
  173. package/src/lib/browser/page-review-judge.ts +360 -0
  174. package/src/lib/browser/page-review-pack.ts +2384 -0
  175. package/src/lib/browser/qa-run-contracts.ts +366 -3
  176. package/src/lib/browser/qa-run.ts +868 -190
  177. package/src/lib/browser/request-diagnostics.ts +27 -0
  178. package/src/lib/browser/tiling.ts +32 -0
  179. package/src/lib/cookies/client.ts +228 -42
  180. package/src/lib/cookies/extra.ts +28 -0
  181. package/src/lib/cookies/index.ts +2 -0
  182. package/src/lib/durable-job.ts +407 -0
  183. package/src/lib/http/client.ts +13 -1
  184. package/src/lib/instructions/templates.ts +5 -2
@@ -0,0 +1,264 @@
1
+ // Machine-wide admission control for heavy jobs (browser QA matrices,
2
+ // production builds): a crash-safe FIFO slot queue with no daemon and no
3
+ // distributed-lock pretensions. State is plain files on one machine.
4
+ //
5
+ // Layout, per resource under a caller-supplied base directory:
6
+ //
7
+ // <dir>/<resource>/tickets/<epoch_ms-13pad>-<pid>-<rand>.json waiters
8
+ // <dir>/<resource>/held/<same filename>.json holders
9
+ //
10
+ // Lexical filename order is enqueue order in BOTH directories. Admission is
11
+ // an atomic rename tickets/ → held/. A waiter may rename only when the live
12
+ // held count is under capacity AND its ticket is among the first
13
+ // (capacity − heldCount) live tickets. After renaming it re-lists held/: if
14
+ // live holders exceed capacity and its file is not among the capacity
15
+ // lexically-oldest, it renames itself back and rejoins the queue — the
16
+ // transient over-admission race self-corrects. Any participant prunes entries
17
+ // whose PID is dead or whose age exceeds the TTL. Release unlinks the held
18
+ // file; process death leaves a dead-PID file for the next participant to
19
+ // prune.
20
+ //
21
+ // Toolkit tier: this module must not import src/core (layering check).
22
+ import { randomUUID } from "node:crypto";
23
+ import { mkdirSync, readdirSync, readFileSync, renameSync, unlinkSync, writeFileSync, } from "node:fs";
24
+ import { tmpdir } from "node:os";
25
+ import { join } from "node:path";
26
+ import { coordEnv } from "./env.js";
27
+ export class AdmissionTimeoutError extends Error {
28
+ holders;
29
+ constructor(resource, timeoutMs, holders) {
30
+ const labels = holders.map((holder) => `${holder.label} (pid ${holder.pid})`).join(", ");
31
+ const seconds = timeoutMs < 10_000 ? (timeoutMs / 1000).toFixed(1) : String(Math.round(timeoutMs / 1000));
32
+ super(`no ${resource} slot became free within ${seconds}s; ` +
33
+ `current holder(s): ${labels || "none (queue contention)"}`);
34
+ this.name = "AdmissionTimeoutError";
35
+ this.holders = holders;
36
+ }
37
+ }
38
+ const DEFAULT_POLL_MS = 500;
39
+ const DEFAULT_TTL_MS = 6 * 60 * 60 * 1000;
40
+ const DEFAULT_TIMEOUT_MS = 20 * 60 * 1000;
41
+ /** An unparseable entry younger than this is left alone (it may be mid-write
42
+ * by a non-atomic writer); older, it is torn garbage and gets pruned. */
43
+ const UNPARSEABLE_GRACE_MS = 60 * 1000;
44
+ /** Is a PID alive on this machine? EPERM counts as alive; only ESRCH counts
45
+ * as dead (fail toward respecting holders rather than stealing slots). */
46
+ export function pidAlive(pid) {
47
+ try {
48
+ process.kill(pid, 0);
49
+ return true;
50
+ }
51
+ catch (err) {
52
+ // EPERM = exists but not ours = alive. ESRCH (and anything else) = treat
53
+ // as dead only on ESRCH; unknown errors count as alive (fail toward
54
+ // respecting holders rather than stealing their slot).
55
+ const code = err.code;
56
+ if (code === "ESRCH")
57
+ return false;
58
+ return true;
59
+ }
60
+ }
61
+ function ticketsDir(config) {
62
+ return join(config.dir, config.resource, "tickets");
63
+ }
64
+ function heldDir(config) {
65
+ return join(config.dir, config.resource, "held");
66
+ }
67
+ function ensureDirs(config) {
68
+ mkdirSync(ticketsDir(config), { recursive: true });
69
+ mkdirSync(heldDir(config), { recursive: true });
70
+ }
71
+ function writeEntry(dir, name, entry) {
72
+ const tmp = join(dir, `.${name}.${randomUUID().slice(0, 8)}.tmp`);
73
+ writeFileSync(tmp, `${JSON.stringify(entry, null, 2)}\n`);
74
+ renameSync(tmp, join(dir, name));
75
+ }
76
+ /** List live entries in lexical (= enqueue) order, pruning dead-PID, expired,
77
+ * and torn files as a side effect. Every participant prunes, so a crashed
78
+ * holder's slot frees as soon as anyone else looks. */
79
+ function listLive(dir, ttlMs) {
80
+ let names;
81
+ try {
82
+ names = readdirSync(dir)
83
+ .filter((name) => name.endsWith(".json"))
84
+ .sort();
85
+ }
86
+ catch {
87
+ return [];
88
+ }
89
+ const now = Date.now();
90
+ const live = [];
91
+ for (const name of names) {
92
+ const path = join(dir, name);
93
+ let entry;
94
+ try {
95
+ const parsed = JSON.parse(readFileSync(path, "utf8"));
96
+ if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
97
+ const record = parsed;
98
+ if (typeof record.pid === "number" && typeof record.created_at === "string") {
99
+ entry = {
100
+ pid: record.pid,
101
+ label: typeof record.label === "string" ? record.label : "",
102
+ created_at: record.created_at,
103
+ ...(typeof record.acquired_at === "string" ? { acquired_at: record.acquired_at } : {}),
104
+ };
105
+ }
106
+ }
107
+ }
108
+ catch {
109
+ // fall through: unparseable
110
+ }
111
+ if (!entry) {
112
+ // Torn or foreign file: prune once it is clearly not mid-write. The
113
+ // enqueue timestamp is the filename prefix, so age is known without
114
+ // content.
115
+ const stamp = Number.parseInt(name.slice(0, 13), 10);
116
+ if (!Number.isFinite(stamp) || now - stamp > UNPARSEABLE_GRACE_MS) {
117
+ try {
118
+ unlinkSync(path);
119
+ }
120
+ catch {
121
+ // a peer pruned it first
122
+ }
123
+ }
124
+ continue;
125
+ }
126
+ const age = now - Date.parse(entry.created_at);
127
+ if (!pidAlive(entry.pid) || Number.isNaN(age) || age > ttlMs) {
128
+ try {
129
+ unlinkSync(path);
130
+ }
131
+ catch {
132
+ // a peer pruned it first
133
+ }
134
+ continue;
135
+ }
136
+ live.push({ name, entry });
137
+ }
138
+ return live;
139
+ }
140
+ function sleep(ms) {
141
+ return new Promise((resolvePromise) => setTimeout(resolvePromise, ms));
142
+ }
143
+ /**
144
+ * Join the FIFO queue for one resource and resolve once a slot is held.
145
+ * Throws AdmissionTimeoutError (with the holders snapshot) when no slot
146
+ * frees within the timeout — the caller decides whether that is fatal.
147
+ */
148
+ export async function acquireAdmission(config, options) {
149
+ if (!Number.isInteger(config.capacity) || config.capacity < 1) {
150
+ throw new Error(`admission capacity must be a positive integer, got ${config.capacity}`);
151
+ }
152
+ ensureDirs(config);
153
+ const pollMs = config.pollMs ?? DEFAULT_POLL_MS;
154
+ const ttlMs = config.ttlMs ?? DEFAULT_TTL_MS;
155
+ const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
156
+ const tickets = ticketsDir(config);
157
+ const held = heldDir(config);
158
+ const myEntry = {
159
+ pid: process.pid,
160
+ label: options.label,
161
+ created_at: new Date().toISOString(),
162
+ };
163
+ const myName = `${String(Date.now()).padStart(13, "0")}-${process.pid}-${randomUUID().slice(0, 8)}.json`;
164
+ writeEntry(tickets, myName, myEntry);
165
+ const startedWaiting = Date.now();
166
+ const deadline = startedWaiting + timeoutMs;
167
+ try {
168
+ while (true) {
169
+ const liveHeld = listLive(held, ttlMs);
170
+ const liveTickets = listLive(tickets, ttlMs);
171
+ const myIndex = liveTickets.findIndex((ticket) => ticket.name === myName);
172
+ if (myIndex === -1) {
173
+ // Pruned by a peer (should not happen while we are alive) or lost to
174
+ // a race; re-enqueue at the back rather than failing the caller.
175
+ writeEntry(tickets, myName, myEntry);
176
+ await sleep(pollMs);
177
+ continue;
178
+ }
179
+ const free = config.capacity - liveHeld.length;
180
+ if (free > 0 && myIndex < free) {
181
+ renameSync(join(tickets, myName), join(held, myName));
182
+ // Verify: the rename can transiently over-admit when a slot freed
183
+ // between two waiters' listings. Lexical order (= enqueue order)
184
+ // decides who stays; the loser rejoins the queue with its original
185
+ // priority because the filename keeps its enqueue timestamp.
186
+ const heldNow = listLive(held, ttlMs);
187
+ if (heldNow.length > config.capacity) {
188
+ const keepers = new Set(heldNow.slice(0, config.capacity).map((holderEntry) => holderEntry.name));
189
+ if (!keepers.has(myName)) {
190
+ renameSync(join(held, myName), join(tickets, myName));
191
+ await sleep(pollMs);
192
+ continue;
193
+ }
194
+ }
195
+ writeEntry(held, myName, { ...myEntry, acquired_at: new Date().toISOString() });
196
+ let released = false;
197
+ return {
198
+ entry: myName,
199
+ waitedMs: Date.now() - startedWaiting,
200
+ release: () => {
201
+ if (released)
202
+ return;
203
+ released = true;
204
+ try {
205
+ unlinkSync(join(held, myName));
206
+ }
207
+ catch {
208
+ // already pruned
209
+ }
210
+ },
211
+ };
212
+ }
213
+ options.onWait?.({
214
+ position: myIndex + 1,
215
+ holders: liveHeld.map((holderEntry) => holderEntry.entry),
216
+ });
217
+ if (Date.now() >= deadline) {
218
+ throw new AdmissionTimeoutError(config.resource, timeoutMs, liveHeld.map((holderEntry) => holderEntry.entry));
219
+ }
220
+ await sleep(pollMs);
221
+ }
222
+ }
223
+ finally {
224
+ // On any non-admitted exit (timeout, caller abort via throw), leave no
225
+ // ticket behind. A successful acquire has already moved the file out.
226
+ try {
227
+ unlinkSync(join(tickets, myName));
228
+ }
229
+ catch {
230
+ // admitted (file moved) or already pruned
231
+ }
232
+ }
233
+ }
234
+ /** Snapshot the queue for one resource, pruning dead entries on the way. */
235
+ export function admissionStatus(config) {
236
+ const ttlMs = config.ttlMs ?? DEFAULT_TTL_MS;
237
+ const full = { ...config, capacity: 1 };
238
+ return {
239
+ resource: config.resource,
240
+ holders: listLive(heldDir(full), ttlMs).map((holderEntry) => holderEntry.entry),
241
+ waiters: listLive(ticketsDir(full), ttlMs).map((ticket) => ticket.entry),
242
+ };
243
+ }
244
+ /**
245
+ * Base directory for admission queue state. tmpdir clears on reboot, which
246
+ * is correct — stale queue state must not outlive the boot. Override with
247
+ * HARNERY_ADMISSION_DIR. Host CLIs and harn commands must share this helper
248
+ * so they join the same machine-wide queues.
249
+ */
250
+ export function admissionBaseDir() {
251
+ return coordEnv("ADMISSION_DIR") ?? join(tmpdir(), "harnery-admission");
252
+ }
253
+ /** Resources present under an admission base directory. */
254
+ export function listAdmissionResources(dir) {
255
+ try {
256
+ return readdirSync(dir, { withFileTypes: true })
257
+ .filter((entry) => entry.isDirectory())
258
+ .map((entry) => entry.name)
259
+ .sort();
260
+ }
261
+ catch {
262
+ return [];
263
+ }
264
+ }
@@ -1,4 +1,4 @@
1
- import { type CookieJar } from "../cookies/index.js";
1
+ import type { CookieJar } from "../cookies/index.js";
2
2
  /**
3
3
  * Thin wrapper over Vercel Labs' `agent-browser` Rust CLI.
4
4
  *
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/lib/agent-browser/client.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,SAAS,EAIf,MAAM,qBAAqB,CAAC;AAE7B;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,WAAW,mBAAmB;IAClC,2EAA2E;IAC3E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,GAAG,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IACvB,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,OAAO,CAAC;IACZ,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAID,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAsB;IAC3C,OAAO,CAAC,aAAa,CAAS;gBAElB,IAAI,GAAE,mBAAwB;IAI1C;;;;OAIG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,UAAU;IAyBpD;;;OAGG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,UAAU;IAc3D;;;;OAIG;IACH,WAAW,IAAI,IAAI;IAwBnB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,UAAU;IAKjD,QAAQ,CAAC,IAAI,GAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,MAAM;IAMtD,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,IAAI;IAQjF,KAAK,CAAC,aAAa,EAAE,MAAM,GAAG,UAAU;IAIxC,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU;IAItD,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU;IAI9B,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,UAAU;IAItC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAIhC;;;;OAIG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE;IAcpC,gDAAgD;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;IAIlC,2EAA2E;IAC3E,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;IAIjC;;;;OAIG;IACH,gBAAgB,IAAI;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE;IAkBrC;;;;OAIG;IACH,OAAO,CAAC,QAAQ;CAKjB"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/lib/agent-browser/client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAuB,MAAM,qBAAqB,CAAC;AAE1E;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,WAAW,mBAAmB;IAClC,2EAA2E;IAC3E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,GAAG,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IACvB,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,OAAO,CAAC;IACZ,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAID,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAsB;IAC3C,OAAO,CAAC,aAAa,CAAS;gBAElB,IAAI,GAAE,mBAAwB;IAI1C;;;;OAIG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,UAAU;IAyBpD;;;OAGG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,UAAU;IAc3D;;;;OAIG;IACH,WAAW,IAAI,IAAI;IAwBnB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,UAAU;IAKjD,QAAQ,CAAC,IAAI,GAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,MAAM;IAMtD,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,IAAI;IAQjF,KAAK,CAAC,aAAa,EAAE,MAAM,GAAG,UAAU;IAIxC,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU;IAItD,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU;IAI9B,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,UAAU;IAItC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAIhC;;;;OAIG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE;IAcpC,gDAAgD;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;IAIlC,2EAA2E;IAC3E,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;IAIjC;;;;OAIG;IACH,gBAAgB,IAAI;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE;IAerC;;;;OAIG;IACH,OAAO,CAAC,QAAQ;CAKjB"}
@@ -1,6 +1,5 @@
1
1
  import { spawnSync } from "node:child_process";
2
2
  import { writeFileSync } from "node:fs";
3
- import { mergeCookies, } from "../cookies/index.js";
4
3
  const DEFAULT_TIMEOUT_MS = 60_000;
5
4
  export class AgentBrowser {
6
5
  opts;
@@ -154,10 +153,7 @@ export class AgentBrowser {
154
153
  const cookies = parsed.data?.cookies ?? parsed.cookies ?? [];
155
154
  if (!Array.isArray(cookies) || cookies.length === 0)
156
155
  return { saved: 0 };
157
- const jar = this.opts.jar;
158
- const store = jar.load();
159
- const merged = mergeCookies(store, cookies);
160
- jar.save(merged);
156
+ this.opts.jar.merge(cookies);
161
157
  return { saved: cookies.length };
162
158
  }
163
159
  catch {
@@ -0,0 +1,39 @@
1
+ import { PNG } from "pngjs";
2
+ import type { PageReviewCaptureFidelity } from "./page-review-pack.js";
3
+ /** The band-diff reuse threshold doubles as the fidelity threshold: a probe
4
+ * that would count as "unchanged" for reuse counts as "agrees" here. */
5
+ export declare const CAPTURE_FIDELITY_MISMATCH_THRESHOLD = 0.001;
6
+ export type FidelityProbe = PageReviewCaptureFidelity["probed"][number];
7
+ /**
8
+ * Pixel-compare a band cropped from the full-page screenshot with the same
9
+ * band captured by scrolling. `mismatch_ratio` is measured over the area the
10
+ * two images share (pixelmatch, anti-aliasing tolerant, the same math as
11
+ * band-diff reuse). `size_mismatch` is set when the two differ by more than a
12
+ * rounding pixel in either dimension; the caller treats that probe as
13
+ * inconclusive rather than as proof the full page is wrong, because a page
14
+ * wider than the viewport cannot be rendered whole by scrolling.
15
+ */
16
+ export declare function compareBand(fullPageCrop: PNG, scrolledCapture: PNG, threshold?: number): {
17
+ mismatch_ratio: number;
18
+ exceeds: boolean;
19
+ size_mismatch: boolean;
20
+ };
21
+ /**
22
+ * Turn the probe results into the record the context carries. Any probe over
23
+ * the threshold means the full-page screenshot is not trustworthy for this
24
+ * context and the tiles must come from scrolled captures.
25
+ */
26
+ export declare function decideFidelity(probes: readonly FidelityProbe[], threshold?: number): PageReviewCaptureFidelity;
27
+ /**
28
+ * Join PNG pieces top to bottom into one image. The output takes the first
29
+ * piece's width; a narrower piece leaves transparent pixels on its right, a
30
+ * wider one is cropped. Used to assemble a band taller than the viewport from
31
+ * viewport-height captures (see `Browser.captureRegionByScroll`).
32
+ */
33
+ export declare function stitchPngRows(pieces: readonly Buffer[]): Buffer;
34
+ /** Width and height from a PNG header, without decoding the image. */
35
+ export declare function pngDimensions(buffer: Buffer): {
36
+ width: number;
37
+ height: number;
38
+ };
39
+ //# sourceMappingURL=capture-fidelity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture-fidelity.d.ts","sourceRoot":"","sources":["../../../src/lib/browser/capture-fidelity.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAGvE;wEACwE;AACxE,eAAO,MAAM,mCAAmC,QAA+B,CAAC;AAEhF,MAAM,MAAM,aAAa,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;AAExE;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CACzB,YAAY,EAAE,GAAG,EACjB,eAAe,EAAE,GAAG,EACpB,SAAS,GAAE,MAA4C,GACtD;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,aAAa,EAAE,OAAO,CAAA;CAAE,CAStE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,SAAS,aAAa,EAAE,EAChC,SAAS,GAAE,MAA4C,GACtD,yBAAyB,CAU3B;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAkB/D;AAED,sEAAsE;AACtE,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAE/E"}
@@ -0,0 +1,84 @@
1
+ // Capture-fidelity probe for page review packs (pure: no browser, no src/core).
2
+ //
3
+ // A full-page screenshot of a very tall page can carry raster artifacts (a
4
+ // blank block, a callout clipped mid-sentence) that a viewport render of the
5
+ // same region does not show. While the capture browser is still open, the
6
+ // capture branch re-shoots every band by scroll-and-clip and pixel compares
7
+ // each with the crop the tiler took from the full-page image. When any band
8
+ // disagrees, the tiles are re-cut from those scrolled captures and the
9
+ // context records `capture_fidelity.source = "scrolled-bands"`.
10
+ //
11
+ // This module owns the parts that need no browser: the comparison, the
12
+ // decision, and the row stitch that joins viewport-height pieces into one
13
+ // band capture. `client.ts` owns the scroll-and-clip itself.
14
+ import { PNG } from "pngjs";
15
+ import { DEFAULT_REUSE_MISMATCH_RATIO, rectMismatch } from "./qa-reuse.js";
16
+ /** The band-diff reuse threshold doubles as the fidelity threshold: a probe
17
+ * that would count as "unchanged" for reuse counts as "agrees" here. */
18
+ export const CAPTURE_FIDELITY_MISMATCH_THRESHOLD = DEFAULT_REUSE_MISMATCH_RATIO;
19
+ /**
20
+ * Pixel-compare a band cropped from the full-page screenshot with the same
21
+ * band captured by scrolling. `mismatch_ratio` is measured over the area the
22
+ * two images share (pixelmatch, anti-aliasing tolerant, the same math as
23
+ * band-diff reuse). `size_mismatch` is set when the two differ by more than a
24
+ * rounding pixel in either dimension; the caller treats that probe as
25
+ * inconclusive rather than as proof the full page is wrong, because a page
26
+ * wider than the viewport cannot be rendered whole by scrolling.
27
+ */
28
+ export function compareBand(fullPageCrop, scrolledCapture, threshold = CAPTURE_FIDELITY_MISMATCH_THRESHOLD) {
29
+ const width = Math.min(fullPageCrop.width, scrolledCapture.width);
30
+ const height = Math.min(fullPageCrop.height, scrolledCapture.height);
31
+ const size_mismatch = Math.abs(fullPageCrop.width - scrolledCapture.width) > 1 ||
32
+ Math.abs(fullPageCrop.height - scrolledCapture.height) > 1;
33
+ if (width <= 0 || height <= 0)
34
+ return { mismatch_ratio: 1, exceeds: true, size_mismatch: true };
35
+ const cmp = rectMismatch(fullPageCrop, scrolledCapture, { x: 0, y: 0, width, height });
36
+ return { mismatch_ratio: cmp.ratio, exceeds: cmp.ratio > threshold, size_mismatch };
37
+ }
38
+ /**
39
+ * Turn the probe results into the record the context carries. Any probe over
40
+ * the threshold means the full-page screenshot is not trustworthy for this
41
+ * context and the tiles must come from scrolled captures.
42
+ */
43
+ export function decideFidelity(probes, threshold = CAPTURE_FIDELITY_MISMATCH_THRESHOLD) {
44
+ const mismatched = probes
45
+ .filter((probe) => probe.mismatch_ratio > threshold)
46
+ .map((probe) => probe.tile_id);
47
+ return {
48
+ source: mismatched.length > 0 ? "scrolled-bands" : "full-page",
49
+ probed: probes.map((probe) => ({ ...probe })),
50
+ mismatched,
51
+ mismatch_threshold: threshold,
52
+ };
53
+ }
54
+ /**
55
+ * Join PNG pieces top to bottom into one image. The output takes the first
56
+ * piece's width; a narrower piece leaves transparent pixels on its right, a
57
+ * wider one is cropped. Used to assemble a band taller than the viewport from
58
+ * viewport-height captures (see `Browser.captureRegionByScroll`).
59
+ */
60
+ export function stitchPngRows(pieces) {
61
+ const first = pieces[0];
62
+ if (!first)
63
+ throw new Error("stitchPngRows: at least one piece is required");
64
+ if (pieces.length === 1)
65
+ return first;
66
+ const decoded = pieces.map((piece) => PNG.sync.read(piece));
67
+ const width = decoded[0].width;
68
+ const height = decoded.reduce((sum, piece) => sum + piece.height, 0);
69
+ const out = new PNG({ width, height });
70
+ let row = 0;
71
+ for (const piece of decoded) {
72
+ const copyWidth = Math.min(width, piece.width);
73
+ for (let y = 0; y < piece.height; y++) {
74
+ const srcStart = y * piece.width * 4;
75
+ piece.data.copy(out.data, (row + y) * width * 4, srcStart, srcStart + copyWidth * 4);
76
+ }
77
+ row += piece.height;
78
+ }
79
+ return PNG.sync.write(out);
80
+ }
81
+ /** Width and height from a PNG header, without decoding the image. */
82
+ export function pngDimensions(buffer) {
83
+ return { width: buffer.readUInt32BE(16), height: buffer.readUInt32BE(20) };
84
+ }
@@ -1,5 +1,5 @@
1
1
  import { type Page, type Cookie as PWCookie } from "playwright";
2
- import type { CookieJar } from "../cookies/index.js";
2
+ import { type CookieJar } from "../cookies/index.js";
3
3
  import { type AssertResult, type AssertSpec } from "./asserts.js";
4
4
  import { type ContentAnnotationBox, type ContentChecksRequest, type ContentChecksResult } from "./content-checks.js";
5
5
  import { type LayoutLintRequest, type LayoutLintResult } from "./geometry.js";
@@ -33,6 +33,12 @@ export interface BrowserOptions {
33
33
  width: number;
34
34
  height: number;
35
35
  };
36
+ /**
37
+ * Device scale factor (DPR) for the context. Unset keeps Playwright's
38
+ * default of 1, so screenshots are CSS-pixel sized. A higher value renders
39
+ * every screenshot at that multiple (2 doubles both dimensions).
40
+ */
41
+ deviceScaleFactor?: number;
36
42
  /**
37
43
  * Emulated `prefers-color-scheme` for the context. Unset keeps Playwright's
38
44
  * default (light), byte-identical to prior behavior.
@@ -267,6 +273,40 @@ export declare class Browser {
267
273
  width: number;
268
274
  height: number;
269
275
  }): Promise<string>;
276
+ /**
277
+ * PNG of a document-space rect captured the way a reader sees it: scroll so
278
+ * the rect's top sits at the top of the viewport, wait for the scroll to
279
+ * settle (instant scroll, then rAF frames until `scrollY` stops moving),
280
+ * and clip the viewport. Restores the scroll position afterwards.
281
+ *
282
+ * Bands are taller than the viewport. Rather than resizing the viewport to
283
+ * the band height (which reflows `vh`-sized layout, moves sticky and fixed
284
+ * elements, and so stops matching what the user sees), the rect is captured
285
+ * in viewport-height pieces at the real viewport and the pieces are
286
+ * stitched with pngjs. The final piece of a multi-piece rect is anchored to
287
+ * the viewport bottom so a fixed header, which sits at the viewport top, is
288
+ * not repeated in the middle of the band. No viewport change is made.
289
+ *
290
+ * Pixels come back at the page's device scale factor, so a rect at DPR 2
291
+ * yields an image twice the rect's CSS size, the same as a full-page
292
+ * screenshot cropped in pixel space would.
293
+ *
294
+ * Parity with the full-page screenshot: a full-page capture renders the
295
+ * whole document as one viewport, so a fixed header or a stuck sticky bar
296
+ * appears once, at its document position. Scrolled, the same element would
297
+ * ride along at the top of every piece and differ from the full-page crop
298
+ * on every band but the first. So while a piece is captured at a non-zero
299
+ * scroll, every `position: fixed`/`sticky` element that has left its
300
+ * scroll-0 document position is given `visibility: hidden` (layout kept,
301
+ * inline style restored afterwards). The result is the region as a
302
+ * full-page screenshot would show it, without the full-page raster.
303
+ */
304
+ captureRegionByScroll(rect: {
305
+ x: number;
306
+ y: number;
307
+ width: number;
308
+ height: number;
309
+ }): Promise<Buffer>;
270
310
  /** Document-space rects + labels for each element matching `selector` (semantic tiling). */
271
311
  elementTiles(selector: string): Promise<Array<{
272
312
  label: string;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/lib/browser/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/lib/browser/client.ts"],"names":[],"mappings":"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"}