cli-jaw 2.17.41 → 2.17.42

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 (167) hide show
  1. package/README.md +3 -3
  2. package/dist/bin/commands/browser.js +52 -5
  3. package/dist/bin/commands/browser.js.map +1 -1
  4. package/dist/src/agent/args.js +69 -19
  5. package/dist/src/agent/args.js.map +1 -1
  6. package/dist/src/agent/codex-app-events.js +31 -1
  7. package/dist/src/agent/codex-app-events.js.map +1 -1
  8. package/dist/src/agent/cursor-model-inventory.js +140 -0
  9. package/dist/src/agent/cursor-model-inventory.js.map +1 -0
  10. package/dist/src/agent/grok-models.js +80 -0
  11. package/dist/src/agent/grok-models.js.map +1 -0
  12. package/dist/src/browser/actions.js +383 -20
  13. package/dist/src/browser/actions.js.map +1 -1
  14. package/dist/src/browser/grounding-candidate.js +272 -0
  15. package/dist/src/browser/grounding-candidate.js.map +1 -0
  16. package/dist/src/browser/grounding-eval.js +247 -0
  17. package/dist/src/browser/grounding-eval.js.map +1 -0
  18. package/dist/src/browser/image-size.js +63 -0
  19. package/dist/src/browser/image-size.js.map +1 -0
  20. package/dist/src/browser/index.js +1 -0
  21. package/dist/src/browser/index.js.map +1 -1
  22. package/dist/src/browser/occlusion.js +148 -0
  23. package/dist/src/browser/occlusion.js.map +1 -0
  24. package/dist/src/browser/verify-candidate.js +162 -0
  25. package/dist/src/browser/verify-candidate.js.map +1 -0
  26. package/dist/src/browser/vision-input.js +74 -0
  27. package/dist/src/browser/vision-input.js.map +1 -0
  28. package/dist/src/browser/vision-provider.js +75 -0
  29. package/dist/src/browser/vision-provider.js.map +1 -0
  30. package/dist/src/browser/vision.js +360 -47
  31. package/dist/src/browser/vision.js.map +1 -1
  32. package/dist/src/browser/web-ai/candidate-reconcile.js +14 -5
  33. package/dist/src/browser/web-ai/candidate-reconcile.js.map +1 -1
  34. package/dist/src/cli/claude-model-discovery.js +175 -0
  35. package/dist/src/cli/claude-model-discovery.js.map +1 -0
  36. package/dist/src/cli/claude-models.js +46 -0
  37. package/dist/src/cli/claude-models.js.map +1 -1
  38. package/dist/src/cli/registry-live.js +104 -1
  39. package/dist/src/cli/registry-live.js.map +1 -1
  40. package/dist/src/cli/registry.js +28 -5
  41. package/dist/src/cli/registry.js.map +1 -1
  42. package/dist/src/code-mode/host.js +6 -0
  43. package/dist/src/code-mode/host.js.map +1 -1
  44. package/dist/src/code-mode/manager.js +37 -8
  45. package/dist/src/code-mode/manager.js.map +1 -1
  46. package/dist/src/code-mode/providers/catalog.js +53 -1
  47. package/dist/src/code-mode/providers/catalog.js.map +1 -1
  48. package/dist/src/code-mode/providers/codex-app.js +6 -0
  49. package/dist/src/code-mode/providers/codex-app.js.map +1 -1
  50. package/dist/src/code-mode/providers/live-models.js +85 -0
  51. package/dist/src/code-mode/providers/live-models.js.map +1 -0
  52. package/dist/src/code-mode/providers/provider-live-models.js +120 -0
  53. package/dist/src/code-mode/providers/provider-live-models.js.map +1 -0
  54. package/dist/src/code-mode/session.js +37 -0
  55. package/dist/src/code-mode/session.js.map +1 -1
  56. package/dist/src/prompt/templates/a1-system.md +24 -14
  57. package/dist/src/prompt/templates/control-system.md +6 -11
  58. package/dist/src/prompt/templates/employee.md +5 -5
  59. package/dist/src/routes/browser.js +17 -5
  60. package/dist/src/routes/browser.js.map +1 -1
  61. package/package.json +1 -1
  62. package/public/css/activity.css +20 -1
  63. package/public/css/layout.css +7 -3
  64. package/public/dist/.vite/manifest.json +104 -105
  65. package/public/dist/assets/Agent-CQ4EBgY8.js +1 -0
  66. package/public/dist/assets/CodeCanvas-DWsx6sv5.js +2 -0
  67. package/public/dist/assets/DashboardMeta-Dh-tasbY.js +1 -0
  68. package/public/dist/assets/Display-NrqY_IaN.js +1 -0
  69. package/public/dist/assets/{Permissions-BzbnqenZ.js → Permissions-Bh947tUG.js} +1 -1
  70. package/public/dist/assets/Permissions-DzNJCt8K.js +1 -0
  71. package/public/dist/assets/app-BCBnxiGr.css +1 -0
  72. package/public/dist/assets/{app-x5Kray4W.js → app-Q0prKOFx.js} +4 -4
  73. package/public/dist/assets/{bgtask-badge-W9djRQVu.js → bgtask-badge-DAcWaUfS.js} +1 -1
  74. package/public/dist/assets/bgtask-badge-DHA2OQm8.js +1 -0
  75. package/public/dist/assets/{employees--_dmDw_a.js → employees-CWS3Juca.js} +1 -1
  76. package/public/dist/assets/{iframe-renderer-D4BmLtAq.js → iframe-renderer-DCDKBMb7.js} +2 -2
  77. package/public/dist/assets/iframe-renderer-RpvBly2x.js +1 -0
  78. package/public/dist/assets/manager-Nk7-RYPs.css +1 -0
  79. package/public/dist/assets/manager-XkR-DRaQ.js +5 -0
  80. package/public/dist/assets/manager-shortcuts-jsiX-zV6.js +1 -0
  81. package/public/dist/assets/memory-4YH8sz0L.js +1 -0
  82. package/public/dist/assets/{memory-DENQWzM8.js → memory-DhNdKZLO.js} +1 -1
  83. package/public/dist/assets/{message-history-BsrLcGJj.js → message-history-DbRTl1P0.js} +1 -1
  84. package/public/dist/assets/message-history-lVcLpAw8.js +1 -0
  85. package/public/dist/assets/{render-CF6Q1oIh.js → render-DP8SJtdZ.js} +1 -1
  86. package/public/dist/assets/settings--EGy3_B9.js +1 -0
  87. package/public/dist/assets/settings-85n9NjvX.js +1 -0
  88. package/public/dist/assets/{settings-B-C_jdZR.js → settings-C9_D-pn0.js} +32 -32
  89. package/public/dist/assets/settings-core-8wBl1mg-.js +1 -0
  90. package/public/dist/assets/{settings-core-BzAJLsKN.js → settings-core-BcVD2FgV.js} +1 -1
  91. package/public/dist/assets/{settings-embedding-dEMyByVi.js → settings-embedding-BSpq785l.js} +1 -1
  92. package/public/dist/assets/{settings-embedding-BSA42oKM.css → settings-embedding-LIMq5ebM.css} +1 -1
  93. package/public/dist/assets/{sidebar-fFEOpvJl.js → sidebar-BVhLb5Ft.js} +3 -3
  94. package/public/dist/assets/skills-6GFkHTlQ.js +1 -0
  95. package/public/dist/assets/{skills-Da_b06ci.js → skills-X7qxmHka.js} +1 -1
  96. package/public/dist/assets/{slash-commands-BbPUHHF4.js → slash-commands-BnDH4IU_.js} +1 -1
  97. package/public/dist/assets/slash-commands-qu8fPAZ3.js +1 -0
  98. package/public/dist/assets/{trace-drawer-B-QmzUfP.js → trace-drawer-DasaS1z4.js} +1 -1
  99. package/public/dist/assets/{ui-CkRUrIfp.js → ui-BtiBTXng.js} +1 -1
  100. package/public/dist/assets/ui-BucJ1zMA.js +1 -0
  101. package/public/dist/index.html +2 -2
  102. package/public/dist/manager/index.html +3 -3
  103. package/public/dist/settings/index.html +2 -2
  104. package/public/js/features/settings.ts +16 -0
  105. package/public/manager/src/App.tsx +10 -12
  106. package/public/manager/src/AppChrome.tsx +2 -3
  107. package/public/manager/src/InstancePreview.tsx +47 -0
  108. package/public/manager/src/SidebarRailRouter.tsx +34 -30
  109. package/public/manager/src/code/CodeComposer.tsx +31 -6
  110. package/public/manager/src/code/CodeSessionList.tsx +25 -7
  111. package/public/manager/src/code/CodeToastHost.tsx +49 -0
  112. package/public/manager/src/code/CodeTranscript.tsx +136 -26
  113. package/public/manager/src/code/CodeWorkbench.tsx +16 -2
  114. package/public/manager/src/code/ComposerFooter.tsx +130 -46
  115. package/public/manager/src/code/ContextUsageMeter.tsx +72 -0
  116. package/public/manager/src/code/ProviderGlyph.tsx +58 -0
  117. package/public/manager/src/code/code-composer.css +159 -175
  118. package/public/manager/src/code/code-controller-runtime.ts +3 -1
  119. package/public/manager/src/code/code-session-state.ts +7 -1
  120. package/public/manager/src/code/code-toasts.ts +73 -0
  121. package/public/manager/src/code/code-workbench.css +42 -1
  122. package/public/manager/src/code/code.css +130 -15
  123. package/public/manager/src/code/context-usage.ts +74 -0
  124. package/public/manager/src/code/pending-user-item.ts +46 -0
  125. package/public/manager/src/code/session-order.ts +70 -0
  126. package/public/manager/src/code/tool-summary.ts +101 -0
  127. package/public/manager/src/code/use-dictation.ts +130 -0
  128. package/public/manager/src/components/CommandCenter.tsx +4 -8
  129. package/public/manager/src/components/InstanceDetailPanel.tsx +0 -18
  130. package/public/manager/src/components/Workbench.tsx +6 -10
  131. package/public/manager/src/components/WorkbenchHeader.tsx +0 -11
  132. package/public/manager/src/dashboard-settings/dashboard-settings-ui.ts +3 -1
  133. package/public/manager/src/hooks/useDashboardView.ts +38 -38
  134. package/public/manager/src/manager-components.css +0 -8
  135. package/public/manager/src/manager-shortcut-runner.ts +0 -1
  136. package/public/manager/src/manager-shortcuts.ts +0 -2
  137. package/public/manager/src/settings/pages/Agent.tsx +5 -2
  138. package/public/manager/src/settings/pages/DashboardMeta.tsx +20 -1
  139. package/public/manager/src/settings/pages/Permissions.tsx +23 -4
  140. package/public/manager/src/settings/pages/components/agent/PermissionQuickSection.tsx +6 -2
  141. package/public/manager/src/settings/pages/components/agent/agent-save.ts +24 -1
  142. package/public/manager/src/settings/settings-icons.ts +3 -1
  143. package/public/manager/src/settings/settings-registry.ts +3 -3
  144. package/public/manager/src/settings-controls.css +0 -1
  145. package/public/manager/src/settings-standalone.tsx +8 -8
  146. package/public/manager/src/types.ts +0 -1
  147. package/scripts/check-private-boundary.mjs +101 -0
  148. package/scripts/grounding-eval.mjs +223 -0
  149. package/public/dist/assets/Agent-B8ZEWJ6B.js +0 -1
  150. package/public/dist/assets/CodeCanvas-Bj3lTSu6.js +0 -2
  151. package/public/dist/assets/DashboardMeta-CmZavI4H.js +0 -1
  152. package/public/dist/assets/Display-DFkjKcMk.js +0 -1
  153. package/public/dist/assets/Permissions-CJftCO6p.js +0 -1
  154. package/public/dist/assets/app-DVbrIl8f.css +0 -1
  155. package/public/dist/assets/bgtask-badge-CuAc8bAl.js +0 -1
  156. package/public/dist/assets/iframe-renderer-By2WO5bd.js +0 -1
  157. package/public/dist/assets/manager-CxLXWCGi.css +0 -1
  158. package/public/dist/assets/manager-DA3dF3eN.js +0 -5
  159. package/public/dist/assets/manager-shortcuts-CzGkE0ZG.js +0 -1
  160. package/public/dist/assets/memory-thjr2apY.js +0 -1
  161. package/public/dist/assets/message-history-CfU7_P5t.js +0 -1
  162. package/public/dist/assets/settings-DXA5L4DR.js +0 -1
  163. package/public/dist/assets/settings-Dy_IaNVH.js +0 -1
  164. package/public/dist/assets/settings-core-D7sAQqhC.js +0 -1
  165. package/public/dist/assets/skills-BcIievZp.js +0 -1
  166. package/public/dist/assets/slash-commands-B-5Shayl.js +0 -1
  167. package/public/dist/assets/ui-CJLdMfRx.js +0 -1
@@ -2,6 +2,10 @@ import { getActivePage, getCdpSession, getBrowserStateVersion, markBrowserStateC
2
2
  import { JAW_HOME } from '../core/config.js';
3
3
  import { join } from 'path';
4
4
  import fs from 'fs';
5
+ import { createHash } from 'crypto';
6
+ import { imageSize } from './image-size.js';
7
+ import { hitTestInPage } from './occlusion.js';
8
+ import { clampClipToViewport } from './verify-candidate.js';
5
9
  const SCREENSHOTS_DIR = join(JAW_HOME, 'screenshots');
6
10
  const DEFAULT_DOM_MAX_CHARS = 20000;
7
11
  const TOKEN_PATTERNS = [
@@ -137,6 +141,10 @@ export async function snapshot(port, opts = {}) {
137
141
  throw new Error(`Snapshot failed.\n ariaSnapshot: ${e1.message}\n CDP fallback: ${e2.message}`);
138
142
  }
139
143
  }
144
+ // The whole parse, held before any filtering. It is what the refs were
145
+ // numbered against and the only view of the page that does not depend on
146
+ // how this particular call was asked.
147
+ const unfiltered = nodes;
140
148
  if (opts["interactive"]) {
141
149
  nodes = nodes.filter(n => INTERACTIVE_ROLES.includes(n.role));
142
150
  }
@@ -151,9 +159,28 @@ export async function snapshot(port, opts = {}) {
151
159
  targetId: normalizeActiveTargetId(activeTab),
152
160
  url: page.url(),
153
161
  nodes,
162
+ // Digest the UNFILTERED parse, not the list being returned.
163
+ //
164
+ // `interactive` and `maxNodes` shape what a caller is shown; they say
165
+ // nothing about the page. Fingerprinting the shown list would make the
166
+ // digest depend on the request, so a later lookup that re-snapshots
167
+ // with different options would compare 40 interactive nodes against
168
+ // 400 unfiltered ones and conclude the page moved every single time —
169
+ // on a page that had not changed by one byte.
170
+ digest: snapshotDigest(unfiltered),
154
171
  };
155
- if (opts["json"])
156
- return { nodes, meta: { total, shown: nodes.length, snapshotId: latestSnapshot.snapshotId } };
172
+ // `digest` is DIAGNOSTIC. A caller can hold it to see whether the page
173
+ // changed between two snapshots it took itself, but it is not a token: ref
174
+ // lookups compare against the most recent internal parse, which rotates
175
+ // whenever anything re-snapshots, so a held digest does not mean "my refs
176
+ // were validated against what I saw". Binding the check to the caller's
177
+ // own observation needs the snapshotId round-trip, which is its own unit.
178
+ if (opts["json"]) {
179
+ return {
180
+ nodes,
181
+ meta: { total, shown: nodes.length, snapshotId: latestSnapshot.snapshotId, digest: latestSnapshot.digest, digestIsDiagnostic: true },
182
+ };
183
+ }
157
184
  return nodes;
158
185
  }
159
186
  function annotateOccurrences(nodes) {
@@ -165,28 +192,323 @@ function annotateOccurrences(nodes) {
165
192
  return { ...node, occurrence };
166
193
  });
167
194
  }
195
+ /**
196
+ * A fingerprint of the parse a set of refs came from.
197
+ *
198
+ * Includes `depth` because a node moving between parents changes what a ref
199
+ * means without changing its role or name, and the node count because an
200
+ * insertion and a deletion elsewhere can otherwise cancel out.
201
+ *
202
+ * This is deliberately coarse. It answers "is this the same list of nodes in
203
+ * the same order", which is the only question positional refs can be honest
204
+ * about — not "is this the same page", which is a claim the accessibility
205
+ * tree cannot make.
206
+ */
207
+ export function snapshotDigest(nodes) {
208
+ const h = createHash('sha1');
209
+ h.update(String(nodes.length));
210
+ for (const n of nodes) {
211
+ h.update('\u0000');
212
+ h.update(n.role);
213
+ h.update('\u0000');
214
+ h.update(n.name);
215
+ h.update('\u0000');
216
+ h.update(String(n.depth));
217
+ }
218
+ return h.digest('hex').slice(0, 16);
219
+ }
220
+ /**
221
+ * The locator for a snapshot node — one form, used everywhere.
222
+ *
223
+ * Two call sites used to build this independently and they diverged by exactly
224
+ * one option. Measuring used `exact: true`; clicking did not, and Playwright
225
+ * turns a missing `exact` into substring AND case-insensitive matching
226
+ * (`nameOp` becomes `*=`, `caseSensitive` becomes false). Meanwhile
227
+ * `annotateOccurrences` counts `occurrence` over the EXACT `role\0name` key,
228
+ * so `.nth(occurrence)` is only meaningful against the exact match set. On the
229
+ * substring path it indexed into a different, larger one.
230
+ *
231
+ * What that produced: a page with "Save all" before "Save" gives both nodes
232
+ * occurrence 0 under different keys. The box recorded for the Save ref is
233
+ * Save's. The click for the same ref resolves the substring set
234
+ * ["Save all", "Save"] and `.nth(0)` is SAVE ALL. Reconciliation confirmed the
235
+ * point was inside Save, the occlusion check cleared Save's box, and the click
236
+ * landed on Save all — reported as `via: 'ref'`, which reads as more
237
+ * trustworthy than a coordinate.
238
+ *
239
+ * An empty name is NOT the same as no name. Dropping the option matches every
240
+ * element of the role while `occurrence` was counted only among the unnamed
241
+ * ones — the same misalignment, one key over. `{ name: '', exact: true }`
242
+ * matches exactly the elements whose normalized accessible name is empty.
243
+ *
244
+ * That is not quite the set the counting used, and the difference is worth
245
+ * naming: `parseAriaYaml` assigns `name = m[2] || ''`, so a name its regex
246
+ * failed to capture is folded into the same empty bucket as a genuinely
247
+ * unnamed node. The DOM set can therefore be strictly smaller than the counted
248
+ * one. This is still the right locator — it is the closest honest expression
249
+ * of "the node had no name" — but the residual risk lives in the parser, not
250
+ * here.
251
+ *
252
+ * A name the parser truncated (its regex loses everything after an embedded
253
+ * quote) matches nothing under either form — the mangled string is not a
254
+ * substring of the real accessible name either — so exact matching costs no
255
+ * reach here. What it costs is time: a locator matching nothing waits out its
256
+ * timeout, which is why the measurement loop below asks `count()` first.
257
+ */
258
+ export function locatorForNode(page, node) {
259
+ return page
260
+ // `name` is a non-optional string and both parsers emit '' for an
261
+ // absent one, so the empty string is the normal input here, not a
262
+ // defensive fallback.
263
+ .getByRole(node.role, { name: node.name, exact: true })
264
+ .nth(node.occurrence || 0);
265
+ }
168
266
  // ─── ref → locator ─────────────────────────────
267
+ /**
268
+ * Re-find a node the caller saw, after the list it came from moved.
269
+ *
270
+ * A shifted list makes the REF meaningless without making the INTENT
271
+ * meaningless: if what the caller pointed at is still there and still
272
+ * unambiguous, that is the element they meant.
273
+ *
274
+ * Uniqueness in the fresh list is not enough to say so, which is the trap this
275
+ * function exists inside. Two rows each carrying `button "Delete"`, the caller
276
+ * points at the first, the page removes that row — now exactly one Delete
277
+ * remains, and resolving to it deletes the OTHER row. Removal is what
278
+ * manufactured the uniqueness, so the rule is at its weakest precisely when
279
+ * the caller's element is the thing that went away. That is the original
280
+ * defect reproduced inside its own fix, on an operation nobody can undo.
281
+ *
282
+ * So uniqueness must hold on BOTH sides. A name that was unique before and is
283
+ * unique now is the same element by any reading available here. A set that
284
+ * shrank to one is ambiguous, not recovered.
285
+ *
286
+ * `depth` participates because the digest uses it: the key that decides which
287
+ * element to click should not be weaker than the key that decides whether to
288
+ * be suspicious. An empty name is not identifying at all — `parseAriaYaml`
289
+ * folds a name its regex failed to capture into the same bucket as a genuinely
290
+ * unnamed node, so recovering `button ""` to some other `button ""` would be a
291
+ * wrong click justified by a parser artifact.
292
+ */
293
+ export function recoverNode(previous, previousAll, fresh) {
294
+ if (!previous.name)
295
+ return 'ambiguous';
296
+ const same = (n) => n.role === previous.role && n.name === previous.name && n.depth === previous.depth;
297
+ if (previousAll.filter(same).length !== 1)
298
+ return 'ambiguous';
299
+ const matches = fresh.filter(same);
300
+ if (matches.length === 1)
301
+ return matches[0];
302
+ if (matches.length > 1)
303
+ return 'ambiguous';
304
+ // Nothing at that role, name AND depth. The element may still be on the
305
+ // page one level in or out — a modal wrapped it, a section above it
306
+ // expanded — so "absent" would be a claim this cannot support. Only when
307
+ // the role and name are gone entirely is it really gone.
308
+ return fresh.some(n => n.role === previous.role && n.name === previous.name)
309
+ ? 'moved'
310
+ : 'absent';
311
+ }
169
312
  async function refToLocator(page, port, ref) {
170
- let nodes;
171
- const activeTab = await getActiveTab(port).catch(() => ({ ok: false }));
172
- const activeTargetId = normalizeActiveTargetId(activeTab);
173
- if (latestSnapshot
174
- && latestSnapshot.targetId
175
- && activeTargetId === latestSnapshot.targetId
176
- && latestSnapshot.stateVersion === getBrowserStateVersion()
177
- && latestSnapshot.url === page.url()) {
178
- nodes = latestSnapshot.nodes;
313
+ // Capture the basis BEFORE anything can replace it. `snapshot()` assigns
314
+ // `latestSnapshot` before it returns, so reading the module state after
315
+ // the call would compare the fresh parse against itself — a check that
316
+ // passes unconditionally and looks like it is working.
317
+ const previousState = latestSnapshot;
318
+ // There is no cache branch any more, and its absence is the point.
319
+ //
320
+ // It used to resolve a ref straight out of the stored parse when the tab,
321
+ // URL and state version all matched. None of those can see a DOM
322
+ // mutation — `click` and `type` do not bump the state version — and
323
+ // `occurrence` is not a handle: it becomes `.nth(occurrence)` against the
324
+ // LIVE DOM at click time, so a feed prepending one same-named element
325
+ // silently shifted every index. That was the one remaining route to a
326
+ // locator with no freshness check at all.
327
+ //
328
+ // It also almost never ran. `resolveActiveTargetId` returns null unless
329
+ // `verifiedActiveTargetId` was set, which only `switchTab` and one branch
330
+ // of `createTab` do, so `previousState.targetId` was falsy and the guard
331
+ // failed on every ordinary navigate-snapshot-click flow. Keeping it would
332
+ // have preserved an unguarded path for the benefit of two callers, and a
333
+ // cache that cannot be validated without re-snapshotting is not a cache.
334
+ const fresh = await snapshot(port);
335
+ const node = fresh.find(n => n.ref === ref);
336
+ // No previous parse at all: there is no claim to contradict, so the lookup
337
+ // proceeds. That is the fail-open posture `assertFreshObservationBundle`
338
+ // takes for a MISSING value.
339
+ if (!previousState) {
340
+ if (!node)
341
+ throw new Error(`ref ${ref} not found — re-run snapshot`);
342
+ return locatorForNode(page, node);
179
343
  }
180
- else {
181
- const fresh = await snapshot(port);
182
- nodes = fresh;
344
+ // A basis taken of a DIFFERENT page is the opposite case, and folding the
345
+ // two together was a mistake: an absent basis says nothing, while a basis
346
+ // from another URL is affirmative evidence that every positional ref is
347
+ // meaningless. The precedent says so too —
348
+ // `assertFreshObservationBundle` throws on a known URL mismatch and fails
349
+ // open only when a side is absent.
350
+ if (previousState.url !== page.url()) {
351
+ throw new Error(`ref ${ref} was taken on ${previousState.url} and the page is now ${page.url()} — re-run snapshot`);
352
+ }
353
+ const moved = previousState.digest !== snapshotDigest(fresh);
354
+ if (!moved) {
355
+ if (!node)
356
+ throw new Error(`ref ${ref} not found — re-run snapshot`);
357
+ return locatorForNode(page, node);
183
358
  }
184
- const node = nodes.find(n => n.ref === ref);
185
- if (!node)
359
+ // The list moved, so this ref is a position that no longer means what it
360
+ // meant. Recover by intent rather than by index.
361
+ const was = previousState.nodes.find(n => n.ref === ref);
362
+ if (!was)
186
363
  throw new Error(`ref ${ref} not found — re-run snapshot`);
187
- return page.getByRole(node.role, { name: node.name }).nth(node.occurrence || 0);
364
+ const recovered = recoverNode(was, previousState.nodes, fresh);
365
+ if (recovered === 'absent') {
366
+ throw new Error(`ref ${ref} named ${was.role} "${was.name}", which is no longer on the page — re-run snapshot`);
367
+ }
368
+ if (recovered === 'moved') {
369
+ throw new Error(`ref ${ref} named ${was.role} "${was.name}", which is still on the page but somewhere else in the tree — re-run snapshot`);
370
+ }
371
+ if (recovered === 'ambiguous') {
372
+ throw new Error(`the page changed and ref ${ref} (${was.role} "${was.name}") is now one of several — re-run snapshot`);
373
+ }
374
+ return locatorForNode(page, recovered);
375
+ }
376
+ /**
377
+ * What would receive a click at a viewport point.
378
+ *
379
+ * Returns null when the check cannot run, which callers must treat as
380
+ * "unknown" rather than "clear".
381
+ */
382
+ export async function hitTestPoint(port, point, targetPoint) {
383
+ try {
384
+ const page = await requireActivePage(port);
385
+ // A function, not a source string: Playwright only invokes the former.
386
+ const result = await page.evaluate(hitTestInPage, { ...point, ...(targetPoint ? { targetPoint } : {}) });
387
+ return (result ?? null);
388
+ }
389
+ catch {
390
+ return null;
391
+ }
188
392
  }
189
393
  // ─── screenshot ────────────────────────────────
394
+ /**
395
+ * Element rectangles for the current snapshot's refs, in CSS pixels.
396
+ *
397
+ * This is the missing half of reconciliation: `candidate-reconcile.ts` has
398
+ * been in the tree with no caller because nothing supplied boxes. Asking the
399
+ * browser where an element is beats asking a model to estimate it, so the
400
+ * structural answer comes first and vision fills the gaps.
401
+ *
402
+ * Boxes are resolved one ref at a time through the existing locator path, so
403
+ * they inherit whatever staleness discipline `refToLocator` has. Refs whose
404
+ * element is detached, hidden, or zero-area are omitted rather than reported
405
+ * with a meaningless rectangle — an absent box is a truthful answer.
406
+ */
407
+ /**
408
+ * Which page is in front, and nothing else.
409
+ *
410
+ * Freshness is a safety question and it must not be answered as a side effect
411
+ * of an expensive, failure-prone, opt-out-able geometry capture. `elementBoxes`
412
+ * happens to return the same identity, but measuring two hundred elements to
413
+ * learn a URL means a caller who declines reconciliation also declines the
414
+ * navigation guard. This costs one CDP round-trip and cannot be turned off.
415
+ *
416
+ * Returns null when identity cannot be read. That is "unknown", not "changed":
417
+ * a failed probe says nothing about the page, and refusing every click because
418
+ * a diagnostic call failed would be a denial of service of our own making.
419
+ */
420
+ export async function observePageIdentity(port) {
421
+ try {
422
+ const page = await requireActivePage(port);
423
+ const activeTab = await getActiveTab(port).catch(() => ({ ok: false }));
424
+ return { url: page.url(), targetId: normalizeActiveTargetId(activeTab) };
425
+ }
426
+ catch {
427
+ return null;
428
+ }
429
+ }
430
+ export async function elementBoxes(port, opts = {}) {
431
+ const page = await requireActivePage(port);
432
+ // Read the current snapshot WITHOUT replacing the module cache. Overwriting
433
+ // it with an interactive-only subset would make a later click on a
434
+ // non-interactive ref fail with "ref not found" even though nothing on the
435
+ // page had changed — this function must not degrade the discipline that
436
+ // other callers depend on.
437
+ const preserved = latestSnapshot;
438
+ let nodes;
439
+ try {
440
+ nodes = await snapshot(port, { interactive: opts.interactive !== false });
441
+ }
442
+ finally {
443
+ latestSnapshot = preserved;
444
+ }
445
+ // The cap is not what keeps this fast — the deadline is. A cap of 200 made
446
+ // `truncated` true on most real pages (Hacker News has ~227 interactive
447
+ // nodes, a Wikipedia article ~497), which turns a rare signal into a
448
+ // constant one and would make any refusal keyed on it fire everywhere.
449
+ const limit = Math.max(1, Math.min(opts.limit ?? 500, 1000));
450
+ // A serial loop of per-element measurements can otherwise run for minutes
451
+ // on a heavy page. Reconciliation is worth a moment, not a minute.
452
+ //
453
+ // Sized against the cap rather than guessed. Real elements have real
454
+ // layout: measured p50 is ~11ms on a Wikipedia article, not the ~2ms a
455
+ // page of trivial buttons suggests, so a full 500-node capture costs a
456
+ // little over five seconds. A 5s budget left the cap it was paired with
457
+ // unreachable — the capture would truncate by deadline on exactly the
458
+ // pages the larger cap was meant to cover, which is the same signal
459
+ // constantly true, arriving one step later.
460
+ const budgetMs = Math.max(500, Math.min(opts.budgetMs ?? 8000, 30000));
461
+ const deadline = Date.now() + budgetMs;
462
+ const refs = [];
463
+ // The node cap drops elements just as silently as the deadline does. Only
464
+ // the deadline used to set this, so a page with 500 interactive nodes
465
+ // reported `truncated: false` while 300 were never looked at — and the
466
+ // cap drops LATE nodes, which is where modals and cookie banners live.
467
+ let truncated = nodes.length > limit;
468
+ for (const node of nodes.slice(0, limit)) {
469
+ if (Date.now() >= deadline) {
470
+ truncated = true;
471
+ break;
472
+ }
473
+ try {
474
+ // Same construction as the click path, because a box that
475
+ // describes a different element than the one that will be clicked
476
+ // is worse than no box at all.
477
+ const locator = locatorForNode(page, node);
478
+ // Ask whether the element is there before spending a wait on it.
479
+ //
480
+ // A locator that matches nothing burns its entire timeout, and
481
+ // exact matching makes that more likely than substring did — a
482
+ // name the parser mangled now matches nothing rather than matching
483
+ // something wrong. Measured, a miss costs 8ms here against the
484
+ // 250ms it used to, and an occurrence index past the end of the
485
+ // match set is caught just as cheaply.
486
+ //
487
+ // This is a speed guarantee, not a correctness one. `count()`
488
+ // answers about the DOM as it is right now, so an element that the
489
+ // snapshot saw but that is absent at measurement time — lazy
490
+ // hydration mid-capture, a React remount — is skipped here where
491
+ // `boundingBox` alone would have auto-waited and found it. That
492
+ // trade is deliberate: the snapshot is the observation, and a node
493
+ // that is not in the document when we look for it has no box to
494
+ // report. Shortening the timeout instead would have dropped the
495
+ // same elements AND the slow-but-present ones.
496
+ if (await locator.count() === 0)
497
+ continue;
498
+ const box = await locator.boundingBox({ timeout: 250 });
499
+ // A zero-area box cannot contain a point, so it would only add noise.
500
+ if (!box || box.width <= 0 || box.height <= 0)
501
+ continue;
502
+ refs.push({ ref: node.ref, role: node.role, name: node.name, box });
503
+ }
504
+ catch {
505
+ // Detached, hidden, ambiguous, or timed out: no box, and an absent
506
+ // box is a truthful answer.
507
+ }
508
+ }
509
+ const activeTab = await getActiveTab(port).catch(() => ({ ok: false }));
510
+ return { url: page.url(), targetId: normalizeActiveTargetId(activeTab), refs, truncated };
511
+ }
190
512
  export async function screenshot(port, opts = {}) {
191
513
  const page = await requireActivePage(port);
192
514
  fs.mkdirSync(SCREENSHOTS_DIR, { recursive: true });
@@ -196,16 +518,57 @@ export async function screenshot(port, opts = {}) {
196
518
  const clip = normalizeClip(opts["clip"]);
197
519
  if (opts["ref"] && clip)
198
520
  throw new Error('screenshot cannot combine ref and clip');
521
+ // The rectangle actually captured, which is what a caller must offset
522
+ // against. Returning the REQUESTED clip after Playwright trimmed it is how
523
+ // a coordinate ends up describing a region that was never in the image.
524
+ let clipUsed = clip;
199
525
  if (opts["ref"]) {
200
526
  const locator = await refToLocator(page, port, String(opts["ref"]));
201
527
  await locator.screenshot({ path: filepath, type });
202
528
  }
203
529
  else {
204
- await page.screenshot({ path: filepath, fullPage: optionBoolean(opts, 'fullPage'), type, ...(clip ? { clip } : {}) });
530
+ // A clip past the viewport edge is trimmed by Playwright before
531
+ // capture, and one entirely outside fails with an opaque assertion.
532
+ // Clamp here so the caller gets the rectangle that was actually used
533
+ // and a named error when there is no usable area at all.
534
+ const measured = clip
535
+ ? await page.evaluate('({ width: window.innerWidth, height: window.innerHeight })')
536
+ : null;
537
+ const fitted = clip && measured ? clampClipToViewport(clip, measured) : null;
538
+ if (fitted)
539
+ clipUsed = fitted.clip;
540
+ await page.screenshot({
541
+ path: filepath,
542
+ fullPage: optionBoolean(opts, 'fullPage'),
543
+ type,
544
+ ...(fitted ? { clip: fitted.clip } : {}),
545
+ });
205
546
  }
206
547
  const dpr = await page.evaluate('window.devicePixelRatio');
207
- const viewport = page.viewportSize();
208
- return { path: filepath, dpr, viewport, ...(clip ? { clip } : {}) };
548
+ // `viewportSize()` is null under connectOverCDP, which Playwright attaches
549
+ // with noDefaultViewport. Fall back to the page's own measurement so
550
+ // callers that need a frame get one.
551
+ const viewport = page.viewportSize()
552
+ ?? await page.evaluate('({ width: window.innerWidth, height: window.innerHeight })');
553
+ // The size of the file that was actually written, which is what a model
554
+ // sees. A clip is trimmed to the viewport before capture, so the requested
555
+ // rectangle is not a reliable stand-in.
556
+ const image = imageSize(filepath);
557
+ // url and targetId let a caller tell whether the page it is reasoning
558
+ // about is still the page in front of it. A vision round-trip takes
559
+ // seconds, and a point derived from this capture is meaningless if the
560
+ // tab navigated in the meantime.
561
+ const shotTab = await getActiveTab(port).catch(() => ({ ok: false }));
562
+ return {
563
+ path: filepath,
564
+ dpr,
565
+ viewport,
566
+ url: page.url(),
567
+ targetId: normalizeActiveTargetId(shotTab),
568
+ ...(image ? { image } : {}),
569
+ // The clip that was captured, not the one requested.
570
+ ...(clipUsed ? { clip: clipUsed } : {}),
571
+ };
209
572
  }
210
573
  function normalizeClip(value) {
211
574
  if (!value)
@@ -1 +1 @@
1
- {"version":3,"file":"actions.js","sourceRoot":"","sources":["../../../src/browser/actions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"actions.js","sourceRoot":"","sources":["../../../src/browser/actions.ts"],"names":[],"mappings":"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"}