@mercuryo-ai/agentbrowse 0.2.57 → 0.2.61
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/README.md +76 -57
- package/dist/browser-session-state.d.ts +39 -0
- package/dist/browser-session-state.d.ts.map +1 -1
- package/dist/browser-session-state.js +63 -1
- package/dist/command-name.js +1 -1
- package/dist/commands/act.d.ts.map +1 -1
- package/dist/commands/act.js +540 -528
- package/dist/commands/action-executor-helpers.d.ts.map +1 -1
- package/dist/commands/action-executor-helpers.js +10 -8
- package/dist/commands/attach.d.ts.map +1 -1
- package/dist/commands/attach.js +5 -10
- package/dist/commands/browser-connection-failure.d.ts +9 -0
- package/dist/commands/browser-connection-failure.d.ts.map +1 -0
- package/dist/commands/browser-connection-failure.js +15 -0
- package/dist/commands/browser-status.d.ts.map +1 -1
- package/dist/commands/browser-status.js +26 -30
- package/dist/commands/click-activation-policy.d.ts.map +1 -1
- package/dist/commands/click-activation-policy.js +6 -2
- package/dist/commands/close.d.ts.map +1 -1
- package/dist/commands/close.js +5 -0
- package/dist/commands/extract.d.ts.map +1 -1
- package/dist/commands/extract.js +147 -144
- package/dist/commands/launch.d.ts +0 -1
- package/dist/commands/launch.d.ts.map +1 -1
- package/dist/commands/launch.js +13 -16
- package/dist/commands/navigate.d.ts.map +1 -1
- package/dist/commands/navigate.js +79 -73
- package/dist/commands/observe-inventory.d.ts +6 -1
- package/dist/commands/observe-inventory.d.ts.map +1 -1
- package/dist/commands/observe-inventory.js +331 -8
- package/dist/commands/observe-persistence.d.ts.map +1 -1
- package/dist/commands/observe-persistence.js +2 -0
- package/dist/commands/observe-projection.d.ts +3 -2
- package/dist/commands/observe-projection.d.ts.map +1 -1
- package/dist/commands/observe-projection.js +1 -0
- package/dist/commands/observe-protected.d.ts +3 -1
- package/dist/commands/observe-protected.d.ts.map +1 -1
- package/dist/commands/observe-protected.js +23 -1
- package/dist/commands/observe-semantics.d.ts.map +1 -1
- package/dist/commands/observe-semantics.js +70 -0
- package/dist/commands/observe.d.ts +1 -0
- package/dist/commands/observe.d.ts.map +1 -1
- package/dist/commands/observe.js +260 -270
- package/dist/commands/screenshot.d.ts.map +1 -1
- package/dist/commands/screenshot.js +50 -64
- package/dist/control-semantics.d.ts.map +1 -1
- package/dist/control-semantics.js +5 -0
- package/dist/date-value-normalization.d.ts +16 -0
- package/dist/date-value-normalization.d.ts.map +1 -0
- package/dist/date-value-normalization.js +117 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -24
- package/dist/library.d.ts +5 -1
- package/dist/library.d.ts.map +1 -1
- package/dist/library.js +4 -1
- package/dist/protected-fill.d.ts +3 -2
- package/dist/protected-fill.d.ts.map +1 -1
- package/dist/protected-fill.js +46 -7
- package/dist/runtime-protected-state.d.ts.map +1 -1
- package/dist/runtime-protected-state.js +8 -1
- package/dist/runtime-state.d.ts +11 -0
- package/dist/runtime-state.d.ts.map +1 -1
- package/dist/secrets/form-matcher.d.ts +1 -2
- package/dist/secrets/form-matcher.d.ts.map +1 -1
- package/dist/secrets/form-matcher.js +125 -119
- package/dist/secrets/matching-helpers.d.ts +13 -0
- package/dist/secrets/matching-helpers.d.ts.map +1 -0
- package/dist/secrets/matching-helpers.js +147 -0
- package/dist/secrets/observed-field-resolution.d.ts +43 -0
- package/dist/secrets/observed-field-resolution.d.ts.map +1 -0
- package/dist/secrets/observed-field-resolution.js +223 -0
- package/dist/secrets/protected-field-semantics.d.ts.map +1 -1
- package/dist/secrets/protected-field-semantics.js +3 -2
- package/dist/secrets/protected-fill.d.ts +3 -1
- package/dist/secrets/protected-fill.d.ts.map +1 -1
- package/dist/secrets/protected-fill.js +31 -0
- package/dist/secrets/protected-value-adapters.d.ts.map +1 -1
- package/dist/secrets/protected-value-adapters.js +14 -22
- package/dist/secrets/types.d.ts +3 -0
- package/dist/secrets/types.d.ts.map +1 -1
- package/dist/sticky-owner-host-entry.d.ts +2 -0
- package/dist/sticky-owner-host-entry.d.ts.map +1 -0
- package/dist/sticky-owner-host-entry.js +97 -0
- package/dist/sticky-owner.d.ts +15 -0
- package/dist/sticky-owner.d.ts.map +1 -0
- package/dist/sticky-owner.js +431 -0
- package/docs/README.md +15 -2
- package/docs/api-reference.md +13 -3
- package/docs/assistive-runtime.md +63 -7
- package/docs/configuration.md +48 -8
- package/docs/getting-started.md +42 -9
- package/docs/integration-checklist.md +8 -7
- package/docs/protected-fill.md +40 -7
- package/docs/testing.md +4 -3
- package/docs/troubleshooting.md +126 -36
- package/examples/README.md +9 -2
- package/package.json +8 -3
- package/dist/protected-fill-browser.d.ts +0 -22
- package/dist/protected-fill-browser.d.ts.map +0 -1
- package/dist/protected-fill-browser.js +0 -52
|
@@ -10,7 +10,6 @@ export type LaunchErrorCode = (typeof LAUNCH_ERROR_CODES)[number];
|
|
|
10
10
|
export type LaunchOutcomeType = (typeof LAUNCH_OUTCOME_TYPES)[number];
|
|
11
11
|
/** Browser launch options for AgentBrowse-managed sessions. */
|
|
12
12
|
export type LaunchOptions = {
|
|
13
|
-
compact?: boolean;
|
|
14
13
|
profile?: string;
|
|
15
14
|
headless?: boolean;
|
|
16
15
|
useProxy?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launch.d.ts","sourceRoot":"","sources":["../../src/commands/launch.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"launch.d.ts","sourceRoot":"","sources":["../../src/commands/launch.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAqB,KAAK,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAW1F,8DAA8D;AAC9D,eAAO,MAAM,kBAAkB,oCAAqC,CAAC;AAErE,0DAA0D;AAC1D,eAAO,MAAM,oBAAoB,sBAAuB,CAAC;AAEzD,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAClE,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtE,+DAA+D;AAC/D,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,wCAAwC;AACxC,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,IAAI,CAAC;IACd,OAAO,EAAE,SAAS,CAAC;IACnB,mBAAmB,EAAE,IAAI,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,mBAAmB,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,6DAA6D;AAC7D,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,EAAE,eAAe,CAAC;IACvB,WAAW,EAAE,iBAAiB,CAAC;IAC/B,OAAO,EAAE,wBAAwB,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,mBAAmB,GAAG,mBAAmB,CAAC;AAErE,4EAA4E;AAC5E,wBAAsB,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAOtF"}
|
package/dist/commands/launch.js
CHANGED
|
@@ -5,25 +5,21 @@ import { buildOwnedSession } from '../browser-session-state.js';
|
|
|
5
5
|
import { getConfigPath, readConfig } from '../solver/config.js';
|
|
6
6
|
import { launchSolver } from '../solver/browser-launcher.js';
|
|
7
7
|
import { ensureProfile } from '../solver/profile-manager.js';
|
|
8
|
-
import {
|
|
8
|
+
import { syncLaunchPage } from '../playwright-runtime.js';
|
|
9
9
|
import { info } from '../output.js';
|
|
10
|
+
import { initializeBrowserSessionOwner, withStickyOwnerBrowser } from '../sticky-owner.js';
|
|
10
11
|
const DEFAULT_PROFILE = 'default';
|
|
11
|
-
const COMPACT_WINDOW = {
|
|
12
|
-
width: 1280,
|
|
13
|
-
height: 900,
|
|
14
|
-
};
|
|
15
12
|
/** Stable top-level error codes returned by `launch(...)`. */
|
|
16
13
|
export const LAUNCH_ERROR_CODES = ['browser_launch_failed'];
|
|
17
14
|
/** Stable outcome categories emitted by `launch(...)`. */
|
|
18
15
|
export const LAUNCH_OUTCOME_TYPES = ['blocked'];
|
|
19
16
|
/** Launches a managed browser session and optionally navigates to `url`. */
|
|
20
17
|
export async function launch(url, opts) {
|
|
21
|
-
const compact = opts?.compact ?? true;
|
|
22
18
|
const profileName = opts?.profile ?? DEFAULT_PROFILE;
|
|
23
19
|
const headless = opts?.headless;
|
|
24
20
|
const useProxy = opts?.useProxy ?? false;
|
|
25
21
|
const proxyOverride = opts?.proxy;
|
|
26
|
-
return launchManaged(url, profileName, headless,
|
|
22
|
+
return launchManaged(url, profileName, headless, useProxy, proxyOverride);
|
|
27
23
|
}
|
|
28
24
|
function buildLaunchFailure(err) {
|
|
29
25
|
return {
|
|
@@ -34,9 +30,8 @@ function buildLaunchFailure(err) {
|
|
|
34
30
|
reason: formatUnknownError(err),
|
|
35
31
|
};
|
|
36
32
|
}
|
|
37
|
-
async function launchManaged(url, profileName, headless,
|
|
33
|
+
async function launchManaged(url, profileName, headless, useProxy = false, proxyOverride) {
|
|
38
34
|
let session;
|
|
39
|
-
let browser = null;
|
|
40
35
|
let runtimeProxy;
|
|
41
36
|
try {
|
|
42
37
|
const baseProfile = ensureProfile(profileName);
|
|
@@ -55,7 +50,6 @@ async function launchManaged(url, profileName, headless, compact, useProxy = fal
|
|
|
55
50
|
headless: resolvedHeadless,
|
|
56
51
|
url,
|
|
57
52
|
cdpPort: undefined,
|
|
58
|
-
windowSize: compact ? COMPACT_WINDOW : undefined,
|
|
59
53
|
});
|
|
60
54
|
}
|
|
61
55
|
catch (err) {
|
|
@@ -78,15 +72,21 @@ async function launchManaged(url, profileName, headless, compact, useProxy = fal
|
|
|
78
72
|
captchaSolve: true,
|
|
79
73
|
},
|
|
80
74
|
});
|
|
75
|
+
try {
|
|
76
|
+
await initializeBrowserSessionOwner(persistedSession);
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
await session.disconnect().catch(() => undefined);
|
|
80
|
+
return buildLaunchFailure(error);
|
|
81
|
+
}
|
|
81
82
|
let currentUrl = session.page.url();
|
|
82
83
|
let title = await session.page.title().catch(() => '');
|
|
83
84
|
try {
|
|
84
|
-
|
|
85
|
-
const syncedPage = await syncLaunchPage(persistedSession, browser, {
|
|
85
|
+
const syncedPage = await withStickyOwnerBrowser(persistedSession, (browser) => syncLaunchPage(persistedSession, browser, {
|
|
86
86
|
requestedUrl: url,
|
|
87
87
|
fallbackUrl: currentUrl,
|
|
88
88
|
fallbackTitle: title,
|
|
89
|
-
});
|
|
89
|
+
}));
|
|
90
90
|
currentUrl = syncedPage.url;
|
|
91
91
|
title = syncedPage.title;
|
|
92
92
|
}
|
|
@@ -94,9 +94,6 @@ async function launchManaged(url, profileName, headless, compact, useProxy = fal
|
|
|
94
94
|
// Preserve the successful launch and fall back to the launcher snapshot.
|
|
95
95
|
}
|
|
96
96
|
finally {
|
|
97
|
-
if (browser) {
|
|
98
|
-
await disconnectPlaywright(browser);
|
|
99
|
-
}
|
|
100
97
|
await session.disconnect();
|
|
101
98
|
}
|
|
102
99
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigate.d.ts","sourceRoot":"","sources":["../../src/commands/navigate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"navigate.d.ts","sourceRoot":"","sources":["../../src/commands/navigate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAezE,gEAAgE;AAChE,eAAO,MAAM,oBAAoB,6DAA8D,CAAC;AAEhG,4DAA4D;AAC5D,eAAO,MAAM,sBAAsB,8CAA+C,CAAC;AAEnF,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AACtE,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1E,yDAAyD;AACzD,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,IAAI,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,mEAAmE;AACnE,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,EAAE,iBAAiB,CAAC;IACzB,WAAW,EAAE,OAAO,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,qBAAqB,GAAG,qBAAqB,CAAC;AAiD3E,0DAA0D;AAC1D,wBAAsB,eAAe,CACnC,OAAO,EAAE,qBAAqB,EAC9B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,cAAc,CAAC,CA+JzB;AAED,+FAA+F;AAC/F,wBAAsB,QAAQ,CAAC,OAAO,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAY/F"}
|
|
@@ -6,8 +6,10 @@ import { clearProtectedExposure } from '../runtime-protected-state.js';
|
|
|
6
6
|
import { saveSession } from '../session.js';
|
|
7
7
|
import { outputContractFailure, outputJSON, info } from '../output.js';
|
|
8
8
|
import { captureDiagnosticSnapshotBestEffort, finishDiagnosticStepBestEffort, recordCommandLifecycleEventBestEffort, startDiagnosticStep, } from '../diagnostics.js';
|
|
9
|
-
import {
|
|
9
|
+
import { resolveCurrentPageContext, syncSessionPage } from '../playwright-runtime.js';
|
|
10
10
|
import { withApiTraceContext } from '../command-api-tracing.js';
|
|
11
|
+
import { describeBrowserConnectionFailure } from './browser-connection-failure.js';
|
|
12
|
+
import { withStickyOwnerBrowser } from '../sticky-owner.js';
|
|
11
13
|
/** Stable top-level error codes returned by `navigate(...)`. */
|
|
12
14
|
export const NAVIGATE_ERROR_CODES = ['browser_connection_failed', 'navigation_failed'];
|
|
13
15
|
/** Stable outcome categories emitted by `navigate(...)`. */
|
|
@@ -74,81 +76,85 @@ export async function navigateBrowser(session, targetUrl) {
|
|
|
74
76
|
stepId: navigateStep?.stepId,
|
|
75
77
|
command: 'navigate',
|
|
76
78
|
}, async () => {
|
|
77
|
-
let browser = null;
|
|
78
79
|
let failureMessage = null;
|
|
79
80
|
try {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
phase: 'after',
|
|
124
|
-
pageRef,
|
|
125
|
-
url,
|
|
126
|
-
title,
|
|
127
|
-
});
|
|
128
|
-
recordCommandLifecycleEventBestEffort({
|
|
129
|
-
step: navigateStep,
|
|
130
|
-
phase: 'completed',
|
|
131
|
-
attributes: {
|
|
132
|
-
outcomeType: 'navigation_completed',
|
|
133
|
-
pageRef,
|
|
134
|
-
url,
|
|
135
|
-
},
|
|
136
|
-
});
|
|
137
|
-
return buildNavigateSuccessResult({
|
|
138
|
-
step: navigateStep,
|
|
139
|
-
runId: session.activeRunId,
|
|
140
|
-
stepId: navigateStep?.stepId,
|
|
141
|
-
pageRef,
|
|
142
|
-
url,
|
|
143
|
-
title,
|
|
81
|
+
return await withStickyOwnerBrowser(session, async (browser) => {
|
|
82
|
+
try {
|
|
83
|
+
let pageRef = session.runtime?.currentPageRef ?? 'p0';
|
|
84
|
+
const resolvedPage = await resolveCurrentPageContext(browser, session);
|
|
85
|
+
pageRef = resolvedPage.pageRef;
|
|
86
|
+
const page = resolvedPage.page;
|
|
87
|
+
if (!page) {
|
|
88
|
+
throw new Error('no_open_pages');
|
|
89
|
+
}
|
|
90
|
+
await page.goto(targetUrl, { waitUntil: 'domcontentloaded' });
|
|
91
|
+
const { url, title } = await syncSessionPage(session, pageRef, page);
|
|
92
|
+
bumpPageScopeEpoch(session, pageRef);
|
|
93
|
+
setCurrentPage(session, pageRef);
|
|
94
|
+
clearProtectedExposure(session, pageRef);
|
|
95
|
+
captureDiagnosticSnapshotBestEffort({
|
|
96
|
+
session,
|
|
97
|
+
step: navigateStep,
|
|
98
|
+
phase: 'after',
|
|
99
|
+
pageRef,
|
|
100
|
+
url,
|
|
101
|
+
title,
|
|
102
|
+
});
|
|
103
|
+
recordCommandLifecycleEventBestEffort({
|
|
104
|
+
step: navigateStep,
|
|
105
|
+
phase: 'completed',
|
|
106
|
+
attributes: {
|
|
107
|
+
outcomeType: 'navigation_completed',
|
|
108
|
+
pageRef,
|
|
109
|
+
url,
|
|
110
|
+
},
|
|
111
|
+
});
|
|
112
|
+
return buildNavigateSuccessResult({
|
|
113
|
+
step: navigateStep,
|
|
114
|
+
runId: session.activeRunId,
|
|
115
|
+
stepId: navigateStep?.stepId,
|
|
116
|
+
pageRef,
|
|
117
|
+
url,
|
|
118
|
+
title,
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
throw new Error(`navigation_failed:${error instanceof Error ? error.message : String(error)}`);
|
|
123
|
+
}
|
|
144
124
|
});
|
|
145
125
|
}
|
|
146
126
|
catch (err) {
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
127
|
+
if (err instanceof Error && err.message.startsWith('navigation_failed:')) {
|
|
128
|
+
failureMessage = err.message.replace(/^navigation_failed:/, '');
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
const browserConnectionFailure = describeBrowserConnectionFailure(err, {
|
|
132
|
+
defaultMessage: 'Navigation could not start because AgentBrowse failed to connect to the browser.',
|
|
133
|
+
unrecoverableSessionMessage: 'Navigation could not start because the previous browser session is no longer reachable.',
|
|
134
|
+
});
|
|
135
|
+
captureDiagnosticSnapshotBestEffort({
|
|
136
|
+
session,
|
|
137
|
+
step: navigateStep,
|
|
138
|
+
phase: 'point-in-time',
|
|
139
|
+
pageRef: initialPageRef,
|
|
140
|
+
});
|
|
141
|
+
recordCommandLifecycleEventBestEffort({
|
|
142
|
+
step: navigateStep,
|
|
143
|
+
phase: 'failed',
|
|
144
|
+
attributes: {
|
|
145
|
+
outcomeType: 'blocked',
|
|
146
|
+
reason: err instanceof Error ? err.message : String(err),
|
|
147
|
+
},
|
|
148
|
+
});
|
|
149
|
+
return buildNavigateFailureResult({
|
|
150
|
+
step: navigateStep,
|
|
151
|
+
error: 'browser_connection_failed',
|
|
152
|
+
outcomeType: 'blocked',
|
|
153
|
+
message: browserConnectionFailure.message,
|
|
154
|
+
reason: browserConnectionFailure.reason,
|
|
155
|
+
runId: session.activeRunId,
|
|
156
|
+
stepId: navigateStep?.stepId,
|
|
157
|
+
});
|
|
152
158
|
}
|
|
153
159
|
}
|
|
154
160
|
if (failureMessage) {
|
|
@@ -163,7 +169,7 @@ export async function navigateBrowser(session, targetUrl) {
|
|
|
163
169
|
phase: 'failed',
|
|
164
170
|
attributes: {
|
|
165
171
|
outcomeType: 'blocked',
|
|
166
|
-
reason: failureMessage
|
|
172
|
+
reason: failureMessage,
|
|
167
173
|
},
|
|
168
174
|
});
|
|
169
175
|
return buildNavigateFailureResult({
|
|
@@ -171,7 +177,7 @@ export async function navigateBrowser(session, targetUrl) {
|
|
|
171
177
|
error: 'navigation_failed',
|
|
172
178
|
outcomeType: 'blocked',
|
|
173
179
|
message: 'Navigation failed.',
|
|
174
|
-
reason: failureMessage
|
|
180
|
+
reason: failureMessage,
|
|
175
181
|
runId: session.activeRunId,
|
|
176
182
|
stepId: navigateStep?.stepId,
|
|
177
183
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Frame, Locator } from 'playwright-core';
|
|
2
|
-
import type { TargetAcceptancePolicy, TargetAllowedAction, TargetAvailabilityState, TargetCapability, TargetContext, TargetContextNode, TargetControlFamily, TargetStructure, TargetValidationEvidence } from '../runtime-state.js';
|
|
2
|
+
import type { TargetAcceptancePolicy, TargetAllowedAction, TargetAvailabilityState, TargetCapability, TargetContext, TargetContextNode, TargetControlFamily, TargetSelectionState, TargetStructure, TargetValidationEvidence } from '../runtime-state.js';
|
|
3
3
|
export type DomObservedContextNode = TargetContextNode & {
|
|
4
4
|
selector?: string;
|
|
5
5
|
fallbackLabel?: string;
|
|
@@ -26,6 +26,7 @@ export type DomObservedTarget = {
|
|
|
26
26
|
autocomplete?: string;
|
|
27
27
|
ariaAutocomplete?: string;
|
|
28
28
|
validation?: TargetValidationEvidence;
|
|
29
|
+
selection?: TargetSelectionState;
|
|
29
30
|
title?: string;
|
|
30
31
|
testId?: string;
|
|
31
32
|
testIdAttribute?: 'data-testid' | 'data-test-id';
|
|
@@ -54,6 +55,7 @@ export type DomObservedTarget = {
|
|
|
54
55
|
surfaceRef?: string;
|
|
55
56
|
controlsSurfaceSelector?: string;
|
|
56
57
|
formSelector?: string;
|
|
58
|
+
pageFormSelector?: string;
|
|
57
59
|
structure?: TargetStructure;
|
|
58
60
|
ownerIndex?: number;
|
|
59
61
|
};
|
|
@@ -84,6 +86,7 @@ type DomTargetCollectionContext = {
|
|
|
84
86
|
export type FrameHostDescriptor = {
|
|
85
87
|
selector: string;
|
|
86
88
|
userVisible: boolean;
|
|
89
|
+
pageFormSelector?: string;
|
|
87
90
|
};
|
|
88
91
|
type StructuredCellVariantEvidence = {
|
|
89
92
|
role?: string;
|
|
@@ -115,6 +118,7 @@ export type DisabledStateSemanticEvidence = {
|
|
|
115
118
|
};
|
|
116
119
|
export declare function inferStructuredCellVariantFromEvidence(evidence: StructuredCellVariantEvidence): 'date-cell' | 'seat-cell' | 'grid-cell' | undefined;
|
|
117
120
|
export declare function inferDirectionalControlFallbackFromEvidence(evidence: DirectionalControlFallbackEvidence): string | undefined;
|
|
121
|
+
export declare function sanitizeClassNameForStateInference(value?: string): string;
|
|
118
122
|
export declare function inferDisabledStateFromSemanticEvidence(evidence: DisabledStateSemanticEvidence): boolean;
|
|
119
123
|
export declare function readStagehandLocatorSnapshot(locator: Locator): Promise<StagehandLocatorSnapshot>;
|
|
120
124
|
declare function readStagehandDomFactsInBrowser(element: Element): StagehandDomFacts | null;
|
|
@@ -126,6 +130,7 @@ export declare function normalizeStagehandSelector(selector: string): {
|
|
|
126
130
|
declare function collectDomTargetsFromDocument(context: DomTargetCollectionContext, options?: DomTargetCollectionOptions & {
|
|
127
131
|
framePath?: string[];
|
|
128
132
|
frameUrl?: string;
|
|
133
|
+
pageFormSelector?: string;
|
|
129
134
|
}): Promise<DomObservedTarget[]>;
|
|
130
135
|
export declare function readFrameHostDescriptor(frame: Frame): Promise<FrameHostDescriptor | null>;
|
|
131
136
|
export declare function collectDomTargets(page: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observe-inventory.d.ts","sourceRoot":"","sources":["../../src/commands/observe-inventory.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"observe-inventory.d.ts","sourceRoot":"","sources":["../../src/commands/observe-inventory.ts"],"names":[],"mappings":"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"}
|