@mercuryo-ai/agentbrowse 0.2.61 → 0.2.63

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 (82) hide show
  1. package/CHANGELOG.md +33 -1
  2. package/README.md +102 -9
  3. package/dist/browser-session-state.d.ts +2 -11
  4. package/dist/browser-session-state.d.ts.map +1 -1
  5. package/dist/browser-session-state.js +0 -4
  6. package/dist/commands/act.d.ts.map +1 -1
  7. package/dist/commands/act.js +14 -5
  8. package/dist/commands/attach.d.ts +1 -3
  9. package/dist/commands/attach.d.ts.map +1 -1
  10. package/dist/commands/attach.js +0 -2
  11. package/dist/commands/browser-status.d.ts +0 -2
  12. package/dist/commands/browser-status.d.ts.map +1 -1
  13. package/dist/commands/browser-status.js +1 -7
  14. package/dist/commands/interaction-kernel.d.ts +1 -1
  15. package/dist/commands/interaction-kernel.d.ts.map +1 -1
  16. package/dist/commands/interaction-kernel.js +1 -1
  17. package/dist/commands/launch.d.ts +0 -1
  18. package/dist/commands/launch.d.ts.map +1 -1
  19. package/dist/commands/launch.js +0 -4
  20. package/dist/commands/observe-accessibility.d.ts.map +1 -1
  21. package/dist/commands/observe-accessibility.js +36 -2
  22. package/dist/commands/observe-inventory.d.ts +49 -7
  23. package/dist/commands/observe-inventory.d.ts.map +1 -1
  24. package/dist/commands/observe-inventory.js +807 -96
  25. package/dist/commands/observe-persistence.d.ts.map +1 -1
  26. package/dist/commands/observe-persistence.js +49 -6
  27. package/dist/commands/observe-projection.d.ts +6 -2
  28. package/dist/commands/observe-projection.d.ts.map +1 -1
  29. package/dist/commands/observe-projection.js +251 -27
  30. package/dist/commands/observe-semantics.d.ts +1 -0
  31. package/dist/commands/observe-semantics.d.ts.map +1 -1
  32. package/dist/commands/observe-semantics.js +541 -135
  33. package/dist/commands/observe-signals.d.ts +4 -4
  34. package/dist/commands/observe-signals.d.ts.map +1 -1
  35. package/dist/commands/observe-signals.js +2 -2
  36. package/dist/commands/observe-surfaces.d.ts +2 -1
  37. package/dist/commands/observe-surfaces.d.ts.map +1 -1
  38. package/dist/commands/observe-surfaces.js +143 -45
  39. package/dist/commands/observe.d.ts +5 -1
  40. package/dist/commands/observe.d.ts.map +1 -1
  41. package/dist/commands/observe.js +15 -11
  42. package/dist/commands/semantic-observe.d.ts.map +1 -1
  43. package/dist/commands/semantic-observe.js +43 -0
  44. package/dist/library.d.ts +2 -1
  45. package/dist/library.d.ts.map +1 -1
  46. package/dist/library.js +2 -1
  47. package/dist/match-resolve-fill.d.ts +196 -0
  48. package/dist/match-resolve-fill.d.ts.map +1 -0
  49. package/dist/match-resolve-fill.js +700 -0
  50. package/dist/match-resolve-fill.test-support.d.ts +34 -0
  51. package/dist/match-resolve-fill.test-support.d.ts.map +1 -0
  52. package/dist/match-resolve-fill.test-support.js +81 -0
  53. package/dist/runtime-protected-state.d.ts.map +1 -1
  54. package/dist/runtime-protected-state.js +12 -0
  55. package/dist/runtime-state.d.ts +6 -0
  56. package/dist/runtime-state.d.ts.map +1 -1
  57. package/dist/runtime-state.js +6 -0
  58. package/dist/secrets/form-matcher.d.ts.map +1 -1
  59. package/dist/secrets/form-matcher.js +76 -27
  60. package/dist/secrets/protected-exact-value-redaction.d.ts.map +1 -1
  61. package/dist/secrets/protected-exact-value-redaction.js +6 -0
  62. package/dist/secrets/protected-fill.js +3 -3
  63. package/dist/session.d.ts +3 -3
  64. package/dist/session.d.ts.map +1 -1
  65. package/dist/session.js +2 -2
  66. package/dist/solver/browser-launcher.d.ts.map +1 -1
  67. package/dist/solver/browser-launcher.js +2 -1
  68. package/dist/testing.d.ts +1 -0
  69. package/dist/testing.d.ts.map +1 -1
  70. package/dist/testing.js +1 -0
  71. package/docs/README.md +28 -11
  72. package/docs/api-reference.md +311 -19
  73. package/docs/assistive-runtime.md +41 -16
  74. package/docs/getting-started.md +45 -1
  75. package/docs/integration-checklist.md +32 -3
  76. package/docs/match-resolve-fill.md +699 -0
  77. package/docs/protected-fill.md +373 -91
  78. package/docs/testing.md +147 -15
  79. package/docs/troubleshooting.md +5 -0
  80. package/examples/README.md +7 -0
  81. package/examples/match-resolve-fill.ts +107 -0
  82. package/package.json +4 -2
@@ -1,4 +1,4 @@
1
- import type { Frame } from 'playwright-core';
1
+ import type { ObservedFrameLike } from './observe-inventory.js';
2
2
  export type ObservedPageSignal = {
3
3
  kind: 'status' | 'alert' | 'dialog' | 'notice' | 'outcome';
4
4
  text: string;
@@ -7,7 +7,7 @@ export type ObservedPageSignal = {
7
7
  source: 'dom';
8
8
  };
9
9
  type SignalCollectionContext = {
10
- evaluate<T>(pageFunction: string): Promise<T>;
10
+ evaluate(pageFunction: string): Promise<unknown>;
11
11
  };
12
12
  export declare function inferObservedSignalKindFromFacts(facts: {
13
13
  role?: string;
@@ -34,8 +34,8 @@ declare function collectPageSignalsFromDocument(context: SignalCollectionContext
34
34
  frameUrl?: string;
35
35
  }): Promise<ObservedPageSignal[]>;
36
36
  export declare function collectPageSignals(page: {
37
- evaluate<T>(pageFunction: string): Promise<T>;
38
- mainFrame?: () => Frame;
37
+ evaluate(pageFunction: string): Promise<unknown>;
38
+ mainFrame?: () => ObservedFrameLike;
39
39
  }): Promise<ObservedPageSignal[]>;
40
40
  export declare const __testObserveSignals: {
41
41
  collectPageSignalsFromDocument: typeof collectPageSignalsFromDocument;
@@ -1 +1 @@
1
- {"version":3,"file":"observe-signals.d.ts","sourceRoot":"","sources":["../../src/commands/observe-signals.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAG7C,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,KAAK,CAAC;CACf,CAAC;AAEF,KAAK,uBAAuB,GAAG;IAC7B,QAAQ,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAC/C,CAAC;AAQF,wBAAgB,gCAAgC,CAAC,KAAK,EAAE;IACtD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAuB7B;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAQ7E;AAED,wBAAgB,uCAAuC,CAAC,KAAK,EAAE;IAC7D,+BAA+B,CAAC,EAAE,OAAO,CAAC;IAC1C,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC,GAAG,OAAO,CAQV;AAED,wBAAgB,mCAAmC,CAAC,KAAK,EAAE;IACzD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,+BAA+B,CAAC,EAAE,OAAO,CAAC;IAC1C,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAoBV;AAqCD,iBAAe,8BAA8B,CAC3C,OAAO,EAAE,uBAAuB,EAChC,OAAO,CAAC,EAAE;IACR,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GACA,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAwU/B;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE;IAC7C,QAAQ,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9C,SAAS,CAAC,EAAE,MAAM,KAAK,CAAC;CACzB,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CA0DhC;AAED,eAAO,MAAM,oBAAoB;;;;;;CAMhC,CAAC"}
1
+ {"version":3,"file":"observe-signals.d.ts","sourceRoot":"","sources":["../../src/commands/observe-signals.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,KAAK,CAAC;CACf,CAAC;AAEF,KAAK,uBAAuB,GAAG;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAClD,CAAC;AAQF,wBAAgB,gCAAgC,CAAC,KAAK,EAAE;IACtD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAuB7B;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAQ7E;AAED,wBAAgB,uCAAuC,CAAC,KAAK,EAAE;IAC7D,+BAA+B,CAAC,EAAE,OAAO,CAAC;IAC1C,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC,GAAG,OAAO,CAQV;AAED,wBAAgB,mCAAmC,CAAC,KAAK,EAAE;IACzD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,+BAA+B,CAAC,EAAE,OAAO,CAAC;IAC1C,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAoBV;AAqCD,iBAAe,8BAA8B,CAC3C,OAAO,EAAE,uBAAuB,EAChC,OAAO,CAAC,EAAE;IACR,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GACA,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAwU/B;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE;IAC7C,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACjD,SAAS,CAAC,EAAE,MAAM,iBAAiB,CAAC;CACrC,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CA0DhC;AAED,eAAO,MAAM,oBAAoB;;;;;;CAMhC,CAAC"}
@@ -84,7 +84,7 @@ function applyInheritedSignalMetadata(signal, options) {
84
84
  async function collectPageSignalsFromDocument(context, options) {
85
85
  const inheritedFramePath = JSON.stringify(options?.framePath ?? []);
86
86
  const inheritedFrameUrl = JSON.stringify(options?.frameUrl ?? '');
87
- const observedSignals = await context.evaluate(String.raw `(() => {
87
+ const observedSignals = (await context.evaluate(String.raw `(() => {
88
88
  const inheritedFramePath = ${inheritedFramePath};
89
89
  const inheritedFrameUrl = ${inheritedFrameUrl};
90
90
  const limit = ${DOM_SIGNAL_COLLECTION_LIMIT};
@@ -387,7 +387,7 @@ async function collectPageSignalsFromDocument(context, options) {
387
387
  }
388
388
 
389
389
  return signals;
390
- })()`);
390
+ })()`));
391
391
  if (!Array.isArray(observedSignals)) {
392
392
  return [];
393
393
  }
@@ -3,8 +3,9 @@ import type { DomObservedTarget } from './observe-inventory.js';
3
3
  export declare const OUTPUT_LEADING_TARGET_LIMIT = 20;
4
4
  export declare function selectScopesForOutput(scopes: ReadonlyArray<SurfaceDescriptor>, targets: ReadonlyArray<Pick<TargetDescriptor, 'surfaceRef' | 'allowedActions' | 'acceptancePolicy'>>, preferredScopeRefs?: ReadonlySet<string>): SurfaceDescriptor[];
5
5
  export declare function buildSurfaceRef(target: DomObservedTarget): string | undefined;
6
+ export declare function buildExplicitSurfaceRef(target: DomObservedTarget): string | undefined;
6
7
  export declare function buildSyntheticFormSurfaceId(target: Pick<DomObservedTarget, 'pageSignature' | 'framePath' | 'frameUrl' | 'formSelector' | 'context'>): string | undefined;
7
- export declare function surfaceReplacementKey(surface: Pick<SurfaceDescriptor, 'pageRef' | 'pageSignature' | 'framePath' | 'kind' | 'label'>): string;
8
+ export declare function surfaceReplacementKey(surface: Pick<SurfaceDescriptor, 'surfaceId' | 'pageRef' | 'pageSignature' | 'framePath' | 'kind' | 'label'>): string;
8
9
  export declare function summarizeContext(context: TargetContext | undefined): string | undefined;
9
10
  export declare function pushUniqueLocatorCandidate(acc: LocatorCandidate[], candidate: LocatorCandidate | undefined): void;
10
11
  export declare function collectSurfaceDescriptors(pageRef: string, targets: ReadonlyArray<DomObservedTarget>): Omit<SurfaceDescriptor, "ref">[];
@@ -1 +1 @@
1
- {"version":3,"file":"observe-surfaces.d.ts","sourceRoot":"","sources":["../../src/commands/observe-surfaces.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EACjB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AA6BhE,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAkB9C,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,aAAa,CAAC,iBAAiB,CAAC,EACxC,OAAO,EAAE,aAAa,CACpB,IAAI,CAAC,gBAAgB,EAAE,YAAY,GAAG,gBAAgB,GAAG,kBAAkB,CAAC,CAC7E,EACD,kBAAkB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GACvC,iBAAiB,EAAE,CAsErB;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,GAAG,SAAS,CAa7E;AAyBD,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,IAAI,CACV,iBAAiB,EACjB,eAAe,GAAG,WAAW,GAAG,UAAU,GAAG,cAAc,GAAG,SAAS,CACxE,GACA,MAAM,GAAG,SAAS,CAkBpB;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,SAAS,GAAG,eAAe,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,CAAC,GAC7F,MAAM,CAMR;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CA8BvF;AAED,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,gBAAgB,EAAE,EACvB,SAAS,EAAE,gBAAgB,GAAG,SAAS,GACtC,IAAI,CAON;AAwDD,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa,CAAC,iBAAiB,CAAC,oCAyE1C"}
1
+ {"version":3,"file":"observe-surfaces.d.ts","sourceRoot":"","sources":["../../src/commands/observe-surfaces.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EACjB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AA6BhE,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAoC9C,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,aAAa,CAAC,iBAAiB,CAAC,EACxC,OAAO,EAAE,aAAa,CACpB,IAAI,CAAC,gBAAgB,EAAE,YAAY,GAAG,gBAAgB,GAAG,kBAAkB,CAAC,CAC7E,EACD,kBAAkB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GACvC,iBAAiB,EAAE,CAsErB;AAgCD,wBAAgB,eAAe,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,GAAG,SAAS,CAS7E;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,GAAG,SAAS,CASrF;AAyBD,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,IAAI,CACV,iBAAiB,EACjB,eAAe,GAAG,WAAW,GAAG,UAAU,GAAG,cAAc,GAAG,SAAS,CACxE,GACA,MAAM,GAAG,SAAS,CAkBpB;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,IAAI,CACX,iBAAiB,EACjB,WAAW,GAAG,SAAS,GAAG,eAAe,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,CAC3E,GACA,MAAM,CAYR;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CA8BvF;AAED,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,gBAAgB,EAAE,EACvB,SAAS,EAAE,gBAAgB,GAAG,SAAS,GACtC,IAAI,CAON;AAqGD,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa,CAAC,iBAAiB,CAAC,oCA4F1C"}
@@ -25,6 +25,17 @@ const SNAPSHOT_SCOPE_KINDS = new Set([
25
25
  'sticky-panel',
26
26
  ]);
27
27
  export const OUTPUT_LEADING_TARGET_LIMIT = 20;
28
+ const EXPLICIT_PARENT_SCOPE_KINDS = new Set(HIGH_SIGNAL_SCOPE_KINDS);
29
+ function collectLinkedScopeRefsForOutput(targets) {
30
+ const linkedScopeRefs = new Set();
31
+ for (const target of targets) {
32
+ const surfaceRef = target.surfaceRef;
33
+ if (typeof surfaceRef === 'string' && surfaceRef.length > 0) {
34
+ linkedScopeRefs.add(surfaceRef);
35
+ }
36
+ }
37
+ return linkedScopeRefs;
38
+ }
28
39
  function inferExtractScopeLifetime(kind, locatorCandidates) {
29
40
  const normalizedKind = (kind ?? '').trim().toLowerCase();
30
41
  if (SNAPSHOT_SCOPE_KINDS.has(normalizedKind)) {
@@ -39,10 +50,7 @@ export function selectScopesForOutput(scopes, targets, preferredScopeRefs) {
39
50
  if (scopes.length === 0) {
40
51
  return [];
41
52
  }
42
- const linkedScopeRefs = new Set(targets
43
- .slice(0, OUTPUT_LEADING_TARGET_LIMIT)
44
- .map((target) => target.surfaceRef)
45
- .filter((value) => typeof value === 'string' && value.length > 0));
53
+ const linkedScopeRefs = collectLinkedScopeRefsForOutput(targets);
46
54
  const explicitlyPreferredScopeRefs = new Set([...(preferredScopeRefs ?? [])].filter((value) => typeof value === 'string' && value.length > 0));
47
55
  const scopeByRef = new Map(scopes.map((scope) => [scope.ref, scope]));
48
56
  const includedScopeRefs = new Set([...linkedScopeRefs, ...explicitlyPreferredScopeRefs]);
@@ -52,8 +60,13 @@ export function selectScopesForOutput(scopes, targets, preferredScopeRefs) {
52
60
  if (includedScopeRefs.has(parentSurfaceRef)) {
53
61
  break;
54
62
  }
63
+ const parentScope = scopeByRef.get(parentSurfaceRef);
64
+ const parentKind = (parentScope?.kind ?? '').toLowerCase();
65
+ if (!EXPLICIT_PARENT_SCOPE_KINDS.has(parentKind)) {
66
+ break;
67
+ }
55
68
  includedScopeRefs.add(parentSurfaceRef);
56
- parentSurfaceRef = scopeByRef.get(parentSurfaceRef)?.parentSurfaceRef;
69
+ parentSurfaceRef = parentScope?.parentSurfaceRef;
57
70
  }
58
71
  }
59
72
  const scored = scopes
@@ -94,18 +107,42 @@ export function selectScopesForOutput(scopes, targets, preferredScopeRefs) {
94
107
  }
95
108
  return [];
96
109
  }
97
- export function buildSurfaceRef(target) {
98
- if (!target.surfaceKind && !target.surfaceSelector && !target.surfaceLabel) {
110
+ function buildStableSurfaceId(input) {
111
+ if (!input.surfaceKind && !input.surfaceSelector && !input.surfaceLabel) {
99
112
  return undefined;
100
113
  }
101
- const frameKey = target.framePath?.join('>') ?? 'top';
102
- return [
103
- target.pageSignature ?? 'unknown-page',
104
- frameKey,
105
- target.surfaceKind ?? 'surface',
106
- target.surfaceSelector ?? '',
107
- target.surfaceLabel ?? '',
108
- ].join('|');
114
+ const frameKey = input.framePath?.join('>') ??
115
+ (normalizeSurfaceText(input.frameUrl) ? `url:${normalizeSurfaceText(input.frameUrl)}` : 'top');
116
+ const pageKey = normalizeSurfaceText(input.pageSignature) ?? 'unknown-page';
117
+ const selectorKey = normalizeSurfaceText(input.surfaceSelector);
118
+ if (selectorKey) {
119
+ return `${pageKey}|${frameKey}|surface|${selectorKey}`;
120
+ }
121
+ const kindKey = normalizeSurfaceText(input.surfaceKind)?.toLowerCase() ?? 'surface';
122
+ const labelKey = normalizeSurfaceText(input.surfaceLabel)?.toLowerCase();
123
+ return labelKey
124
+ ? `${pageKey}|${frameKey}|${kindKey}|${labelKey}`
125
+ : `${pageKey}|${frameKey}|${kindKey}`;
126
+ }
127
+ export function buildSurfaceRef(target) {
128
+ return buildStableSurfaceId({
129
+ pageSignature: target.pageSignature,
130
+ framePath: target.framePath,
131
+ frameUrl: target.frameUrl,
132
+ surfaceKind: target.surfaceKind,
133
+ surfaceSelector: target.surfaceSelector,
134
+ surfaceLabel: target.surfaceLabel,
135
+ });
136
+ }
137
+ export function buildExplicitSurfaceRef(target) {
138
+ return buildStableSurfaceId({
139
+ pageSignature: target.pageSignature,
140
+ framePath: target.framePath,
141
+ frameUrl: target.frameUrl,
142
+ surfaceKind: target.explicitSurfaceKind,
143
+ surfaceSelector: target.explicitSurfaceSelector,
144
+ surfaceLabel: target.explicitSurfaceLabel,
145
+ });
109
146
  }
110
147
  function normalizeSurfaceText(value) {
111
148
  const normalized = value?.replace(/\s+/g, ' ').trim();
@@ -146,6 +183,12 @@ export function surfaceReplacementKey(surface) {
146
183
  const frameKey = surface.framePath?.join('>') ?? 'top';
147
184
  const kindKey = (surface.kind ?? 'surface').toLowerCase();
148
185
  const labelKey = (surface.label ?? '').trim().toLowerCase();
186
+ if (HIGH_SIGNAL_SCOPE_KINDS.has(kindKey) && labelKey) {
187
+ return `${pageKey}|${frameKey}|${kindKey}|${labelKey}`;
188
+ }
189
+ if (surface.surfaceId?.trim()) {
190
+ return surface.surfaceId.trim();
191
+ }
149
192
  return `${pageKey}|${frameKey}|${kindKey}|${labelKey}`;
150
193
  }
151
194
  export function summarizeContext(context) {
@@ -209,8 +252,16 @@ function surfaceRoleFromKind(kind) {
209
252
  }
210
253
  }
211
254
  function collectSurfaceLocatorCandidates(target) {
255
+ return collectSurfaceLocatorCandidatesFromInputs({
256
+ surfaceKind: target.surfaceKind,
257
+ surfaceLabel: target.surfaceLabel,
258
+ surfaceSelector: target.surfaceSelector,
259
+ surfaceSelectors: target.surfaceSelectors,
260
+ });
261
+ }
262
+ function collectSurfaceLocatorCandidatesFromInputs(input) {
212
263
  const candidates = [];
213
- const selectors = [target.surfaceSelector, ...(target.surfaceSelectors ?? [])].filter((value) => typeof value === 'string' && value.length > 0);
264
+ const selectors = [input.surfaceSelector, ...(input.surfaceSelectors ?? [])].filter((value) => typeof value === 'string' && value.length > 0);
214
265
  for (const selector of selectors) {
215
266
  pushUniqueLocatorCandidate(candidates, {
216
267
  strategy: selector.startsWith('xpath=') ? 'xpath' : 'css',
@@ -218,15 +269,39 @@ function collectSurfaceLocatorCandidates(target) {
218
269
  scope: 'root',
219
270
  });
220
271
  }
221
- const surfaceRole = surfaceRoleFromKind(target.surfaceKind);
272
+ const surfaceRole = surfaceRoleFromKind(input.surfaceKind);
222
273
  if (surfaceRole) {
223
- pushUniqueLocatorCandidate(candidates, target.surfaceLabel
224
- ? { strategy: 'role', value: surfaceRole, name: target.surfaceLabel }
274
+ pushUniqueLocatorCandidate(candidates, input.surfaceLabel
275
+ ? { strategy: 'role', value: surfaceRole, name: input.surfaceLabel }
225
276
  : undefined);
226
- pushUniqueLocatorCandidate(candidates, { strategy: 'role', value: surfaceRole });
277
+ pushUniqueLocatorCandidate(candidates, {
278
+ strategy: 'role',
279
+ value: surfaceRole,
280
+ });
227
281
  }
228
282
  return candidates;
229
283
  }
284
+ function upsertSurfaceDescriptor(descriptors, surfaceId, descriptor) {
285
+ const existing = descriptors.get(surfaceId);
286
+ const locatorCandidates = existing ? [...existing.locatorCandidates] : [];
287
+ for (const candidate of descriptor.locatorCandidates) {
288
+ pushUniqueLocatorCandidate(locatorCandidates, candidate);
289
+ }
290
+ const kind = existing?.kind ?? descriptor.kind ?? 'surface';
291
+ descriptors.set(surfaceId, {
292
+ ...descriptor,
293
+ locatorCandidates,
294
+ kind,
295
+ label: existing?.label && existing.label !== 'Active surface'
296
+ ? existing.label
297
+ : (descriptor.label ?? existing?.label ?? 'Active surface'),
298
+ createdAt: existing?.createdAt ?? descriptor.createdAt,
299
+ pageSignature: existing?.pageSignature ?? descriptor.pageSignature,
300
+ framePath: existing?.framePath ?? descriptor.framePath,
301
+ frameUrl: existing?.frameUrl ?? descriptor.frameUrl,
302
+ extractScopeLifetime: inferExtractScopeLifetime(kind, locatorCandidates),
303
+ });
304
+ }
230
305
  export function collectSurfaceDescriptors(pageRef, targets) {
231
306
  const descriptors = new Map();
232
307
  for (const target of targets) {
@@ -234,36 +309,59 @@ export function collectSurfaceDescriptors(pageRef, targets) {
234
309
  if (!surfaceId) {
235
310
  continue;
236
311
  }
237
- const existing = descriptors.get(surfaceId);
238
- const locatorCandidates = existing ? [...existing.locatorCandidates] : [];
239
- for (const candidate of collectSurfaceLocatorCandidates(target)) {
240
- pushUniqueLocatorCandidate(locatorCandidates, candidate);
241
- }
242
- descriptors.set(surfaceId, {
312
+ upsertSurfaceDescriptor(descriptors, surfaceId, {
243
313
  surfaceId,
244
314
  pageRef,
245
- framePath: existing?.framePath ?? target.framePath,
246
- frameUrl: existing?.frameUrl ?? target.frameUrl,
247
- kind: existing?.kind ?? target.surfaceKind ?? 'surface',
248
- label: existing?.label && existing.label !== 'Active surface'
249
- ? existing.label
250
- : (target.surfaceLabel ?? target.surfaceKind ?? existing?.label ?? 'Active surface'),
315
+ framePath: target.framePath,
316
+ frameUrl: target.frameUrl,
317
+ kind: target.surfaceKind ?? 'surface',
318
+ label: target.surfaceLabel ?? target.surfaceKind ?? 'Active surface',
251
319
  lifecycle: 'live',
252
320
  availability: { state: 'available' },
253
- locatorCandidates,
254
- createdAt: existing?.createdAt ?? Date.now(),
255
- pageSignature: existing?.pageSignature ?? target.pageSignature,
256
- extractScopeLifetime: inferExtractScopeLifetime(existing?.kind ?? target.surfaceKind ?? 'surface', locatorCandidates),
321
+ locatorCandidates: collectSurfaceLocatorCandidates(target),
322
+ createdAt: Date.now(),
323
+ pageSignature: target.pageSignature,
324
+ extractScopeLifetime: undefined,
257
325
  });
258
326
  }
259
327
  for (const target of targets) {
328
+ const explicitSurfaceId = buildExplicitSurfaceRef(target);
329
+ if (!explicitSurfaceId || explicitSurfaceId === target.surfaceRef) {
330
+ continue;
331
+ }
332
+ upsertSurfaceDescriptor(descriptors, explicitSurfaceId, {
333
+ surfaceId: explicitSurfaceId,
334
+ pageRef,
335
+ framePath: target.framePath,
336
+ frameUrl: target.frameUrl,
337
+ kind: target.explicitSurfaceKind ?? 'surface',
338
+ label: target.explicitSurfaceLabel ??
339
+ target.explicitFallbackSurfaceLabel ??
340
+ target.explicitSurfaceKind ??
341
+ 'Active surface',
342
+ lifecycle: 'live',
343
+ availability: { state: 'available' },
344
+ locatorCandidates: collectSurfaceLocatorCandidatesFromInputs({
345
+ surfaceKind: target.explicitSurfaceKind,
346
+ surfaceLabel: target.explicitSurfaceLabel ?? target.explicitFallbackSurfaceLabel,
347
+ surfaceSelector: target.explicitSurfaceSelector,
348
+ surfaceSelectors: target.explicitSurfaceSelectors,
349
+ }),
350
+ createdAt: Date.now(),
351
+ pageSignature: target.pageSignature,
352
+ extractScopeLifetime: undefined,
353
+ });
354
+ }
355
+ for (const target of targets) {
356
+ if ((target.explicitSurfaceKind ?? '').trim().toLowerCase() === 'form') {
357
+ continue;
358
+ }
260
359
  const surfaceId = buildSyntheticFormSurfaceId(target);
261
360
  if (!surfaceId) {
262
361
  continue;
263
362
  }
264
- const existing = descriptors.get(surfaceId);
265
- const locatorCandidates = existing ? [...existing.locatorCandidates] : [];
266
363
  const formSelector = target.formSelector?.trim();
364
+ const locatorCandidates = [];
267
365
  if (formSelector) {
268
366
  pushUniqueLocatorCandidate(locatorCandidates, {
269
367
  strategy: formSelector.startsWith('xpath=') ? 'xpath' : 'css',
@@ -271,19 +369,19 @@ export function collectSurfaceDescriptors(pageRef, targets) {
271
369
  scope: 'root',
272
370
  });
273
371
  }
274
- descriptors.set(surfaceId, {
372
+ upsertSurfaceDescriptor(descriptors, surfaceId, {
275
373
  surfaceId,
276
374
  pageRef,
277
- framePath: existing?.framePath ?? target.framePath,
278
- frameUrl: existing?.frameUrl ?? target.frameUrl,
375
+ framePath: target.framePath,
376
+ frameUrl: target.frameUrl,
279
377
  kind: 'form',
280
- label: existing?.label ?? semanticFormContextLabel(target) ?? 'Form',
378
+ label: semanticFormContextLabel(target) ?? 'Form',
281
379
  lifecycle: 'live',
282
380
  availability: { state: 'available' },
283
381
  locatorCandidates,
284
- createdAt: existing?.createdAt ?? Date.now(),
285
- pageSignature: existing?.pageSignature ?? target.pageSignature,
286
- extractScopeLifetime: inferExtractScopeLifetime('form', locatorCandidates),
382
+ createdAt: Date.now(),
383
+ pageSignature: target.pageSignature,
384
+ extractScopeLifetime: undefined,
287
385
  });
288
386
  }
289
387
  return [...descriptors.values()];
@@ -60,12 +60,16 @@ export type ObserveFailureResult = {
60
60
  export type ObserveResult = ObserveSuccessResult | ObserveFailureResult;
61
61
  export declare const __testDomTargetCollection: {
62
62
  collectDomTargetsFromDocument: (context: {
63
- evaluate<T>(pageFunction: string): Promise<T>;
63
+ evaluate(pageFunction: string): Promise<unknown>;
64
64
  }, options?: import("./observe-inventory.js").DomTargetCollectionOptions & {
65
65
  framePath?: string[];
66
66
  frameUrl?: string;
67
67
  pageFormSelector?: string;
68
+ debugStructuralProfileStats?: boolean;
68
69
  }) => Promise<import("./observe-inventory.js").DomObservedTarget[]>;
70
+ collectDomTargetsDebugFromDocument: (context: {
71
+ evaluate(pageFunction: string): Promise<unknown>;
72
+ }, options?: import("./observe-inventory.js").DomTargetCollectionOptions) => Promise<import("./observe-inventory.js").DomTargetCollectionDebugResult>;
69
73
  inferStructuredCellVariantFromEvidence: typeof import("./observe-inventory.js").inferStructuredCellVariantFromEvidence;
70
74
  inferDirectionalControlFallbackFromEvidence: typeof import("./observe-inventory.js").inferDirectionalControlFallbackFromEvidence;
71
75
  locatorDomSignatureScript: string;
@@ -1 +1 @@
1
- {"version":3,"file":"observe.d.ts","sourceRoot":"","sources":["../../src/commands/observe.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"observe.d.ts","sourceRoot":"","sources":["../../src/commands/observe.ts"],"names":[],"mappings":"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"}
@@ -24,8 +24,8 @@ import { clearProtectedFillableFormsForPage, markProtectedFillableFormsUnknownFo
24
24
  import { withStickyOwnerBrowser } from '../sticky-owner.js';
25
25
  import { describeBrowserConnectionFailure } from './browser-connection-failure.js';
26
26
  import { classifyObservePageState, shouldSuppressFillableFormsForObserve, } from './observe-page-state.js';
27
- import { annotateDomTargets, compressSemanticallyDuplicateTargets, orderBySurfaceCompetition, prioritizeGoalActionTargets, } from './observe-semantics.js';
28
- import { buildGroupedObserveScopes, buildGoalProjectionScopeRefs, buildGoalObserveInventoryCandidates, compactFillableForms, compactSignals, expandWorkflowGraphTargets, projectPersistedTargetsForGoal, selectTargetsForGoalMatches, } from './observe-projection.js';
27
+ import { normalizePostEnrichmentDomTargets, prioritizeGoalActionTargets, } from './observe-semantics.js';
28
+ import { buildGroupedObserveScopes, buildGoalProjectionScopeRefs, buildGoalObserveInventoryCandidates, compactFillableForms, compactSignals, expandWorkflowGraphTargets, materializeObserveOutputTargets, projectPersistedTargetsForGoal, selectTargetsForGoalMatches, } from './observe-projection.js';
29
29
  import { collectSurfaceDescriptors, selectScopesForOutput } from './observe-surfaces.js';
30
30
  import { toStagehandDescriptor } from './observe-stagehand.js';
31
31
  import { rerankDomTargetsForGoal } from './semantic-observe.js';
@@ -234,11 +234,11 @@ export async function observeBrowser(session, instruction) {
234
234
  setCurrentPage(session, pageRef);
235
235
  const collectedTargets = await collectDomTargets(page);
236
236
  let observeAccessibilityStats;
237
- const domTargets = compressSemanticallyDuplicateTargets(orderBySurfaceCompetition(annotateDomTargets(await enrichDomTargetsWithAccessibility(page, collectedTargets, {
237
+ const domTargets = normalizePostEnrichmentDomTargets(await enrichDomTargetsWithAccessibility(page, collectedTargets, {
238
238
  onStats: (stats) => {
239
239
  observeAccessibilityStats = stats;
240
240
  },
241
- }))));
241
+ }));
242
242
  if (observeAccessibilityStats) {
243
243
  incrementMetric(session, 'observeAxAttempts', observeAccessibilityStats.axAttempts);
244
244
  incrementMetric(session, 'observeAxHits', observeAccessibilityStats.axHits);
@@ -257,6 +257,7 @@ export async function observeBrowser(session, instruction) {
257
257
  const fillableForms = shouldSuppressFillableFormsForObserve(pageState)
258
258
  ? clearProtectedFillableFormsForPage(session, pageRef)
259
259
  : await persistProtectedFillableFormsForPage(session, pageRef, url, targets, new Date().toISOString(), { previousPageUrl });
260
+ const outputTargets = materializeObserveOutputTargets(domTargets, targets);
260
261
  return buildObserveSuccessResult(session, observeStep, {
261
262
  success: true,
262
263
  observationMode: 'deterministic_dom',
@@ -267,7 +268,7 @@ export async function observeBrowser(session, instruction) {
267
268
  pageRef,
268
269
  title,
269
270
  scopes: selectScopesForOutput(observedScopes, targets),
270
- targets,
271
+ targets: outputTargets,
271
272
  }),
272
273
  signals: compactSignals(pageSignals),
273
274
  fillableForms: compactFillableForms(fillableForms),
@@ -341,11 +342,11 @@ export async function observeBrowser(session, instruction) {
341
342
  includeActivationAffordances: true,
342
343
  });
343
344
  let observeAccessibilityStats;
344
- const domTargets = compressSemanticallyDuplicateTargets(orderBySurfaceCompetition(annotateDomTargets(await enrichDomTargetsWithAccessibility(page, collectedTargets, {
345
+ const domTargets = normalizePostEnrichmentDomTargets(await enrichDomTargetsWithAccessibility(page, collectedTargets, {
345
346
  onStats: (stats) => {
346
347
  observeAccessibilityStats = stats;
347
348
  },
348
- }))));
349
+ }));
349
350
  if (observeAccessibilityStats) {
350
351
  incrementMetric(session, 'observeAxAttempts', observeAccessibilityStats.axAttempts);
351
352
  incrementMetric(session, 'observeAxHits', observeAccessibilityStats.axHits);
@@ -381,7 +382,8 @@ export async function observeBrowser(session, instruction) {
381
382
  : await persistProtectedFillableFormsForPage(session, pageRef, url, targets, new Date().toISOString(), { previousPageUrl });
382
383
  if (selectedTargets.length > 0 || selectedSurfaceIds.size > 0) {
383
384
  const projectedTargets = projectPersistedTargetsForGoal(domTargets, targets, selectedTargets);
384
- const explicitScopeRefs = buildGoalProjectionScopeRefs(projectedTargets, selectedSurfaceIds, surfaceRefMap);
385
+ const outputProjectedTargets = materializeObserveOutputTargets(domTargets, targets, projectedTargets);
386
+ const explicitScopeRefs = buildGoalProjectionScopeRefs(outputProjectedTargets, selectedSurfaceIds, surfaceRefMap);
385
387
  return buildObserveSuccessResult(session, observeStep, {
386
388
  success: true,
387
389
  observationMode: canUseAssistiveLlm
@@ -393,8 +395,8 @@ export async function observeBrowser(session, instruction) {
393
395
  scopes: buildGroupedObserveScopes({
394
396
  pageRef,
395
397
  title,
396
- scopes: selectScopesForOutput(observedScopes, projectedTargets, explicitScopeRefs),
397
- targets: projectedTargets,
398
+ scopes: selectScopesForOutput(observedScopes, outputProjectedTargets, explicitScopeRefs),
399
+ targets: outputProjectedTargets,
398
400
  }),
399
401
  signals: compactSignals(pageSignals),
400
402
  fillableForms: compactFillableForms(fillableForms),
@@ -453,7 +455,9 @@ export async function observeBrowser(session, instruction) {
453
455
  ? (await stagehand.observe(instruction, {
454
456
  page,
455
457
  }))
456
- : (await stagehand.observe({ page }));
458
+ : (await stagehand.observe({
459
+ page,
460
+ }));
457
461
  });
458
462
  const targets = replaceTargetsForPage(session, pageRef, await Promise.all(actions.map((action) => toStagehandDescriptor(pageRef, action, page, normalizePageSignature(url)))));
459
463
  const fillableForms = markProtectedFillableFormsUnknownForPage(session, pageRef);
@@ -1 +1 @@
1
- {"version":3,"file":"semantic-observe.d.ts","sourceRoot":"","sources":["../../src/commands/semantic-observe.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAEvE,OAAO,KAAK,EACV,sBAAsB,EACtB,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACnB,eAAe,EAChB,MAAM,qBAAqB,CAAC;AAY7B,KAAK,sBAAsB,GAAG;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC,CAAC;IACnD,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,cAAc,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACvC,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;IAC1C,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IACvC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC,CAAC;AA4oDF,wBAAsB,uBAAuB,CAAC,CAAC,SAAS,sBAAsB,EAC5E,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,EACzB,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,mBAAmB,CAAA;CAAO,GAC9C,OAAO,CAAC,CAAC,EAAE,CAAC,CAkHd"}
1
+ {"version":3,"file":"semantic-observe.d.ts","sourceRoot":"","sources":["../../src/commands/semantic-observe.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAEvE,OAAO,KAAK,EACV,sBAAsB,EACtB,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACnB,eAAe,EAChB,MAAM,qBAAqB,CAAC;AAY7B,KAAK,sBAAsB,GAAG;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC,CAAC;IACnD,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,cAAc,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACvC,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;IAC1C,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IACvC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC,CAAC;AA2sDF,wBAAsB,uBAAuB,CAAC,CAAC,SAAS,sBAAsB,EAC5E,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,EACzB,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,mBAAmB,CAAA;CAAO,GAC9C,OAAO,CAAC,CAAC,EAAE,CAAC,CAkHd"}
@@ -239,6 +239,10 @@ function cachedStructureValue(structure) {
239
239
  return {
240
240
  ...(structure.family ? { family: structure.family } : {}),
241
241
  ...(structure.variant ? { variant: structure.variant } : {}),
242
+ ...(structure.dateIso ? { dateIso: structure.dateIso } : {}),
243
+ ...(typeof structure.dateYear === 'number' ? { dateYear: structure.dateYear } : {}),
244
+ ...(typeof structure.dateMonth === 'number' ? { dateMonth: structure.dateMonth } : {}),
245
+ ...(typeof structure.dateDay === 'number' ? { dateDay: structure.dateDay } : {}),
242
246
  ...(structure.row ? { row: structure.row } : {}),
243
247
  ...(structure.column ? { column: structure.column } : {}),
244
248
  ...(structure.zone ? { zone: structure.zone } : {}),
@@ -263,6 +267,34 @@ function appendGoalIdentityAlias(values, value) {
263
267
  }
264
268
  values.push(normalized);
265
269
  }
270
+ function structuredDateIdentityOf(structure) {
271
+ if (!structure || structure.family !== 'structured-grid' || structure.variant !== 'date-cell') {
272
+ return undefined;
273
+ }
274
+ const iso = normalizeGoalIdentityValue(structure.dateIso, 32);
275
+ const year = typeof structure.dateYear === 'number' ? structure.dateYear : undefined;
276
+ const month = typeof structure.dateMonth === 'number' ? structure.dateMonth : undefined;
277
+ const day = typeof structure.dateDay === 'number' ? structure.dateDay : undefined;
278
+ if (!iso && year === undefined && month === undefined && day === undefined) {
279
+ return undefined;
280
+ }
281
+ return { iso, year, month, day };
282
+ }
283
+ function structuredDateGoalIdentityValues(target) {
284
+ const identity = structuredDateIdentityOf(target.structure);
285
+ if (!identity) {
286
+ return [];
287
+ }
288
+ const values = [];
289
+ appendGoalIdentityAlias(values, identity.iso);
290
+ if (typeof identity.year === 'number' &&
291
+ typeof identity.month === 'number' &&
292
+ typeof identity.day === 'number') {
293
+ appendGoalIdentityAlias(values, `${identity.year} ${identity.month} ${identity.day}`);
294
+ appendGoalIdentityAlias(values, `${identity.day} ${identity.month} ${identity.year}`);
295
+ }
296
+ return values;
297
+ }
266
298
  function goalIdentityValuesOf(target) {
267
299
  const values = [];
268
300
  appendGoalIdentityAlias(values, target.goalLabel);
@@ -272,6 +304,9 @@ function goalIdentityValuesOf(target) {
272
304
  if (values.length > 0) {
273
305
  return values;
274
306
  }
307
+ for (const value of structuredDateGoalIdentityValues(target)) {
308
+ appendGoalIdentityAlias(values, value);
309
+ }
275
310
  if (isFieldLikeTarget(target)) {
276
311
  appendGoalIdentityAlias(values, target.label);
277
312
  appendGoalIdentityAlias(values, target.displayLabel);
@@ -646,6 +681,10 @@ function structureLexicalValue(structure) {
646
681
  return [
647
682
  structure.family,
648
683
  structure.variant,
684
+ structure.dateIso,
685
+ typeof structure.dateYear === 'number' ? String(structure.dateYear) : undefined,
686
+ typeof structure.dateMonth === 'number' ? String(structure.dateMonth) : undefined,
687
+ typeof structure.dateDay === 'number' ? String(structure.dateDay) : undefined,
649
688
  structure.row,
650
689
  structure.column,
651
690
  structure.zone,
@@ -1205,6 +1244,7 @@ function buildCompactCandidateSummary(target, index, surfaceSummaryIdBySurfaceKe
1205
1244
  const surfaceSummaryId = surfaceIdentityOf(target)
1206
1245
  ? surfaceSummaryIdBySurfaceKey?.get(surfaceIdentityOf(target))
1207
1246
  : undefined;
1247
+ const structuredDateIdentity = structuredDateIdentityOf(target.structure);
1208
1248
  if (target.kind)
1209
1249
  parts.push(`kind=${JSON.stringify(target.kind)}`);
1210
1250
  if (target.role)
@@ -1231,6 +1271,9 @@ function buildCompactCandidateSummary(target, index, surfaceSummaryIdBySurfaceKe
1231
1271
  if (surfaceSummaryId) {
1232
1272
  parts.push(`surface=${surfaceSummaryId}`);
1233
1273
  }
1274
+ if (structuredDateIdentity) {
1275
+ parts.push(`date=${JSON.stringify(structuredDateIdentity)}`);
1276
+ }
1234
1277
  if (target.structure)
1235
1278
  parts.push(`structure=${JSON.stringify(target.structure)}`);
1236
1279
  if (target.placeholder)
package/dist/library.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- export { createBrowserSessionStore, deleteBrowserSession, getSessionPort, isAttachedSession, isOwnedSession, isSessionAlive, loadBrowserSession, resolveBrowserSessionId, saveBrowserSession, serializeBrowserSession, supportsCaptchaSolve, buildAttachedSession, buildOwnedSession, buildStickyOwnerMetadata, canPersistStickyOwnerMetadata, type BrowserSessionCapabilities, type BrowserSessionStore, type BrowserSessionState, type BrowseSessionIdentity, type BrowseSessionTransport, type StickyOwnerInProcessTransport, type StickyOwnerMetadata, type StickyOwnerPlaywrightBindTransport, type StickyOwnerState, type StickyOwnerTransport, STICKY_OWNER_SCHEMA_VERSION, } from './browser-session-state.js';
1
+ export { fill, match, resolve, type AgentbrowseFillFailureResult, type AgentbrowseFillOptions, type AgentbrowseFillResult, type AgentbrowseGroupFillHandler, type AgentbrowseMatchApplicability, type AgentbrowseMatchCandidate, type AgentbrowseGroupMatchCandidate, type AgentbrowseMatchOptions, type AgentbrowseMatchResolver, type AgentbrowseMatchResult, type AgentbrowseMatchSource, type AgentbrowseGroupMatchStore, type AgentbrowseMatchStore, type AgentbrowseMatchValue, type AgentbrowseResolvableMatchResult, type AgentbrowseResolvedArtifactResource, type AgentbrowseResolvedResource, type AgentbrowseResolvedValueResource, type AgentbrowseAmbiguousGroupMatchResult, type AgentbrowseAmbiguousMatchResult, type AgentbrowseGroupResolutionPlan, type AgentbrowseNeedsResolutionGroupMatchResult, type AgentbrowseNeedsResolutionMatchResult, type AgentbrowseNoGroupMatchResult, type AgentbrowseNoMatchResult, type AgentbrowseReadyGroupMatchResult, type AgentbrowseReadyGroupFillInput, type AgentbrowseReadyMatchResult, type AgentbrowseResolutionPlan, type AgentbrowseResolveOptions, } from './match-resolve-fill.js';
2
+ export { createBrowserSessionStore, deleteBrowserSession, getSessionPort, isAttachedSession, isOwnedSession, isSessionAlive, loadBrowserSession, resolveBrowserSessionId, saveBrowserSession, serializeBrowserSession, buildAttachedSession, buildOwnedSession, buildStickyOwnerMetadata, canPersistStickyOwnerMetadata, type BrowserSessionStore, type BrowserSessionState, type BrowseSessionIdentity, type BrowseSessionTransport, type StickyOwnerInProcessTransport, type StickyOwnerMetadata, type StickyOwnerPlaywrightBindTransport, type StickyOwnerState, type StickyOwnerTransport, STICKY_OWNER_SCHEMA_VERSION, } from './browser-session-state.js';
2
3
  export { attach, ATTACH_ERROR_CODES, ATTACH_OUTCOME_TYPES, type AttachErrorCode, type AttachFailureResult, type AttachOutcomeType, type AttachOptions, type AttachResult, type AttachSuccessResult, } from './commands/attach.js';
3
4
  export { AgentbrowseAssistiveRuntimeMissingError, AssistiveStructuredOutputTruncatedError, configureAgentbrowseAssistiveRuntime, resetAgentbrowseAssistiveRuntime, type AgentbrowseAssistiveChatCompletionOptions, type AgentbrowseAssistiveChatCompletionRequest, type AgentbrowseAssistiveChatCompletionResult, type AgentbrowseAssistiveChatMessage, type AgentbrowseAssistiveImageInput, type AgentbrowseAssistiveLlmClient, type AgentbrowseAssistiveLlmUsage, type AgentbrowseAssistiveMessageContentPart, type AgentbrowseAssistiveResponseModel, type AgentbrowseAssistiveRuntime, } from './assistive-runtime.js';
4
5
  export { createAgentbrowseClient, type AgentbrowseClient, type AgentbrowseClientOptions, } from './client.js';
@@ -1 +1 @@
1
- {"version":3,"file":"library.d.ts","sourceRoot":"","sources":["../src/library.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"library.d.ts","sourceRoot":"","sources":["../src/library.ts"],"names":[],"mappings":"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"}
package/dist/library.js CHANGED
@@ -1,4 +1,5 @@
1
- export { createBrowserSessionStore, deleteBrowserSession, getSessionPort, isAttachedSession, isOwnedSession, isSessionAlive, loadBrowserSession, resolveBrowserSessionId, saveBrowserSession, serializeBrowserSession, supportsCaptchaSolve, buildAttachedSession, buildOwnedSession, buildStickyOwnerMetadata, canPersistStickyOwnerMetadata, STICKY_OWNER_SCHEMA_VERSION, } from './browser-session-state.js';
1
+ export { fill, match, resolve, } from './match-resolve-fill.js';
2
+ export { createBrowserSessionStore, deleteBrowserSession, getSessionPort, isAttachedSession, isOwnedSession, isSessionAlive, loadBrowserSession, resolveBrowserSessionId, saveBrowserSession, serializeBrowserSession, buildAttachedSession, buildOwnedSession, buildStickyOwnerMetadata, canPersistStickyOwnerMetadata, STICKY_OWNER_SCHEMA_VERSION, } from './browser-session-state.js';
2
3
  export { attach, ATTACH_ERROR_CODES, ATTACH_OUTCOME_TYPES, } from './commands/attach.js';
3
4
  export { AgentbrowseAssistiveRuntimeMissingError, AssistiveStructuredOutputTruncatedError, configureAgentbrowseAssistiveRuntime, resetAgentbrowseAssistiveRuntime, } from './assistive-runtime.js';
4
5
  export { createAgentbrowseClient, } from './client.js';