@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.
- package/CHANGELOG.md +33 -1
- package/README.md +102 -9
- package/dist/browser-session-state.d.ts +2 -11
- package/dist/browser-session-state.d.ts.map +1 -1
- package/dist/browser-session-state.js +0 -4
- package/dist/commands/act.d.ts.map +1 -1
- package/dist/commands/act.js +14 -5
- package/dist/commands/attach.d.ts +1 -3
- package/dist/commands/attach.d.ts.map +1 -1
- package/dist/commands/attach.js +0 -2
- package/dist/commands/browser-status.d.ts +0 -2
- package/dist/commands/browser-status.d.ts.map +1 -1
- package/dist/commands/browser-status.js +1 -7
- package/dist/commands/interaction-kernel.d.ts +1 -1
- package/dist/commands/interaction-kernel.d.ts.map +1 -1
- package/dist/commands/interaction-kernel.js +1 -1
- package/dist/commands/launch.d.ts +0 -1
- package/dist/commands/launch.d.ts.map +1 -1
- package/dist/commands/launch.js +0 -4
- package/dist/commands/observe-accessibility.d.ts.map +1 -1
- package/dist/commands/observe-accessibility.js +36 -2
- package/dist/commands/observe-inventory.d.ts +49 -7
- package/dist/commands/observe-inventory.d.ts.map +1 -1
- package/dist/commands/observe-inventory.js +807 -96
- package/dist/commands/observe-persistence.d.ts.map +1 -1
- package/dist/commands/observe-persistence.js +49 -6
- package/dist/commands/observe-projection.d.ts +6 -2
- package/dist/commands/observe-projection.d.ts.map +1 -1
- package/dist/commands/observe-projection.js +251 -27
- package/dist/commands/observe-semantics.d.ts +1 -0
- package/dist/commands/observe-semantics.d.ts.map +1 -1
- package/dist/commands/observe-semantics.js +541 -135
- package/dist/commands/observe-signals.d.ts +4 -4
- package/dist/commands/observe-signals.d.ts.map +1 -1
- package/dist/commands/observe-signals.js +2 -2
- package/dist/commands/observe-surfaces.d.ts +2 -1
- package/dist/commands/observe-surfaces.d.ts.map +1 -1
- package/dist/commands/observe-surfaces.js +143 -45
- package/dist/commands/observe.d.ts +5 -1
- package/dist/commands/observe.d.ts.map +1 -1
- package/dist/commands/observe.js +15 -11
- package/dist/commands/semantic-observe.d.ts.map +1 -1
- package/dist/commands/semantic-observe.js +43 -0
- package/dist/library.d.ts +2 -1
- package/dist/library.d.ts.map +1 -1
- package/dist/library.js +2 -1
- package/dist/match-resolve-fill.d.ts +196 -0
- package/dist/match-resolve-fill.d.ts.map +1 -0
- package/dist/match-resolve-fill.js +700 -0
- package/dist/match-resolve-fill.test-support.d.ts +34 -0
- package/dist/match-resolve-fill.test-support.d.ts.map +1 -0
- package/dist/match-resolve-fill.test-support.js +81 -0
- package/dist/runtime-protected-state.d.ts.map +1 -1
- package/dist/runtime-protected-state.js +12 -0
- package/dist/runtime-state.d.ts +6 -0
- package/dist/runtime-state.d.ts.map +1 -1
- package/dist/runtime-state.js +6 -0
- package/dist/secrets/form-matcher.d.ts.map +1 -1
- package/dist/secrets/form-matcher.js +76 -27
- package/dist/secrets/protected-exact-value-redaction.d.ts.map +1 -1
- package/dist/secrets/protected-exact-value-redaction.js +6 -0
- package/dist/secrets/protected-fill.js +3 -3
- package/dist/session.d.ts +3 -3
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +2 -2
- package/dist/solver/browser-launcher.d.ts.map +1 -1
- package/dist/solver/browser-launcher.js +2 -1
- package/dist/testing.d.ts +1 -0
- package/dist/testing.d.ts.map +1 -1
- package/dist/testing.js +1 -0
- package/docs/README.md +28 -11
- package/docs/api-reference.md +311 -19
- package/docs/assistive-runtime.md +41 -16
- package/docs/getting-started.md +45 -1
- package/docs/integration-checklist.md +32 -3
- package/docs/match-resolve-fill.md +699 -0
- package/docs/protected-fill.md +373 -91
- package/docs/testing.md +147 -15
- package/docs/troubleshooting.md +5 -0
- package/examples/README.md +7 -0
- package/examples/match-resolve-fill.ts +107 -0
- package/package.json +4 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
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
|
|
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
|
|
38
|
-
mainFrame?: () =>
|
|
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":"
|
|
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;
|
|
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 =
|
|
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 =
|
|
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
|
-
|
|
98
|
-
if (!
|
|
110
|
+
function buildStableSurfaceId(input) {
|
|
111
|
+
if (!input.surfaceKind && !input.surfaceSelector && !input.surfaceLabel) {
|
|
99
112
|
return undefined;
|
|
100
113
|
}
|
|
101
|
-
const frameKey =
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
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 = [
|
|
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(
|
|
272
|
+
const surfaceRole = surfaceRoleFromKind(input.surfaceKind);
|
|
222
273
|
if (surfaceRole) {
|
|
223
|
-
pushUniqueLocatorCandidate(candidates,
|
|
224
|
-
? { strategy: 'role', value: surfaceRole, name:
|
|
274
|
+
pushUniqueLocatorCandidate(candidates, input.surfaceLabel
|
|
275
|
+
? { strategy: 'role', value: surfaceRole, name: input.surfaceLabel }
|
|
225
276
|
: undefined);
|
|
226
|
-
pushUniqueLocatorCandidate(candidates, {
|
|
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
|
-
|
|
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:
|
|
246
|
-
frameUrl:
|
|
247
|
-
kind:
|
|
248
|
-
label:
|
|
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:
|
|
255
|
-
pageSignature:
|
|
256
|
-
extractScopeLifetime:
|
|
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
|
|
372
|
+
upsertSurfaceDescriptor(descriptors, surfaceId, {
|
|
275
373
|
surfaceId,
|
|
276
374
|
pageRef,
|
|
277
|
-
framePath:
|
|
278
|
-
frameUrl:
|
|
375
|
+
framePath: target.framePath,
|
|
376
|
+
frameUrl: target.frameUrl,
|
|
279
377
|
kind: 'form',
|
|
280
|
-
label:
|
|
378
|
+
label: semanticFormContextLabel(target) ?? 'Form',
|
|
281
379
|
lifecycle: 'live',
|
|
282
380
|
availability: { state: 'available' },
|
|
283
381
|
locatorCandidates,
|
|
284
|
-
createdAt:
|
|
285
|
-
pageSignature:
|
|
286
|
-
extractScopeLifetime:
|
|
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
|
|
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":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAgBzE,OAAO,EAIL,KAAK,YAAY,EAClB,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"observe.d.ts","sourceRoot":"","sources":["../../src/commands/observe.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/observe.js
CHANGED
|
@@ -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 {
|
|
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 =
|
|
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 =
|
|
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
|
|
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,
|
|
397
|
-
targets:
|
|
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({
|
|
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;
|
|
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 {
|
|
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';
|
package/dist/library.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"library.d.ts","sourceRoot":"","sources":["../src/library.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EACzB,oBAAoB,EACpB,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,uBAAuB,EACvB,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,
|
|
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 {
|
|
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';
|