@nuanu-ai/agentbrowse 0.2.46 → 0.2.48
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 +69 -10
- package/dist/agentpay-gateway.d.ts +9 -0
- package/dist/agentpay-gateway.d.ts.map +1 -1
- package/dist/agentpay-gateway.js +30 -0
- package/dist/agentpay-stagehand-llm.d.ts.map +1 -1
- package/dist/agentpay-stagehand-llm.js +9 -1
- package/dist/command-api-tracing.d.ts +19 -0
- package/dist/command-api-tracing.d.ts.map +1 -0
- package/dist/command-api-tracing.js +137 -0
- package/dist/commands/act.d.ts.map +1 -1
- package/dist/commands/act.js +822 -670
- package/dist/commands/act.test-harness.d.ts +6 -0
- package/dist/commands/act.test-harness.d.ts.map +1 -1
- package/dist/commands/act.test-harness.js +44 -1
- package/dist/commands/action-acceptance.d.ts.map +1 -1
- package/dist/commands/action-acceptance.js +115 -0
- package/dist/commands/captcha-solve.d.ts.map +1 -1
- package/dist/commands/captcha-solve.js +83 -16
- package/dist/commands/click-action-executor.d.ts +0 -1
- package/dist/commands/click-action-executor.d.ts.map +1 -1
- package/dist/commands/click-action-executor.js +31 -77
- package/dist/commands/close.d.ts +3 -3
- package/dist/commands/close.d.ts.map +1 -1
- package/dist/commands/close.js +178 -0
- package/dist/commands/descriptor-validation.d.ts.map +1 -1
- package/dist/commands/descriptor-validation.js +75 -57
- package/dist/commands/end-session.d.ts +25 -0
- package/dist/commands/end-session.d.ts.map +1 -0
- package/dist/commands/end-session.js +161 -0
- package/dist/commands/extract-stagehand-executor.js +1 -1
- package/dist/commands/extract.d.ts.map +1 -1
- package/dist/commands/extract.js +339 -202
- package/dist/commands/fill-secret.d.ts +3 -3
- package/dist/commands/fill-secret.d.ts.map +1 -1
- package/dist/commands/fill-secret.js +419 -234
- package/dist/commands/get-secrets-catalog.d.ts.map +1 -1
- package/dist/commands/get-secrets-catalog.js +66 -5
- package/dist/commands/interaction-kernel.d.ts +46 -0
- package/dist/commands/interaction-kernel.d.ts.map +1 -0
- package/dist/commands/interaction-kernel.js +215 -0
- package/dist/commands/launch.d.ts +0 -2
- package/dist/commands/launch.d.ts.map +1 -1
- package/dist/commands/launch.js +109 -17
- package/dist/commands/navigate.d.ts.map +1 -1
- package/dist/commands/navigate.js +188 -45
- package/dist/commands/observe-accessibility.d.ts.map +1 -1
- package/dist/commands/observe-accessibility.js +50 -39
- package/dist/commands/observe-dom-label-contract.d.ts.map +1 -1
- package/dist/commands/observe-dom-label-contract.js +5 -0
- package/dist/commands/observe-inventory.d.ts +13 -0
- package/dist/commands/observe-inventory.d.ts.map +1 -1
- package/dist/commands/observe-inventory.js +320 -65
- package/dist/commands/observe-persistence.d.ts.map +1 -1
- package/dist/commands/observe-persistence.js +3 -0
- package/dist/commands/observe-projection.d.ts +1 -0
- package/dist/commands/observe-projection.d.ts.map +1 -1
- package/dist/commands/observe-projection.js +7 -2
- package/dist/commands/observe-protected.d.ts +1 -0
- package/dist/commands/observe-protected.d.ts.map +1 -1
- package/dist/commands/observe-protected.js +9 -4
- package/dist/commands/observe-semantics.d.ts.map +1 -1
- package/dist/commands/observe-semantics.js +5 -2
- package/dist/commands/observe-stagehand.d.ts +1 -0
- package/dist/commands/observe-stagehand.d.ts.map +1 -1
- package/dist/commands/observe-stagehand.js +2 -0
- package/dist/commands/observe.d.ts +2 -0
- package/dist/commands/observe.d.ts.map +1 -1
- package/dist/commands/observe.js +387 -203
- package/dist/commands/observe.test-harness.d.ts +8 -0
- package/dist/commands/observe.test-harness.d.ts.map +1 -1
- package/dist/commands/observe.test-harness.js +48 -1
- package/dist/commands/poll-secret.d.ts +6 -0
- package/dist/commands/poll-secret.d.ts.map +1 -0
- package/dist/commands/poll-secret.js +159 -0
- package/dist/commands/request-secret.d.ts +6 -0
- package/dist/commands/request-secret.d.ts.map +1 -0
- package/dist/commands/request-secret.js +284 -0
- package/dist/commands/screenshot.d.ts.map +1 -1
- package/dist/commands/screenshot.js +172 -7
- package/dist/commands/select-action-executor.d.ts.map +1 -1
- package/dist/commands/semantic-observe.d.ts +4 -0
- package/dist/commands/semantic-observe.d.ts.map +1 -1
- package/dist/commands/semantic-observe.js +388 -17
- package/dist/commands/start-session.d.ts +31 -0
- package/dist/commands/start-session.d.ts.map +1 -0
- package/dist/commands/start-session.js +347 -0
- package/dist/commands/status.d.ts +2 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +166 -144
- package/dist/control-semantics.d.ts +1 -0
- package/dist/control-semantics.d.ts.map +1 -1
- package/dist/control-semantics.js +51 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +144 -45
- package/dist/otel-exporter.d.ts +58 -0
- package/dist/otel-exporter.d.ts.map +1 -0
- package/dist/otel-exporter.js +263 -0
- package/dist/otel-projector.d.ts +75 -0
- package/dist/otel-projector.d.ts.map +1 -0
- package/dist/otel-projector.js +409 -0
- package/dist/owned-browser.d.ts +1 -1
- package/dist/owned-browser.d.ts.map +1 -1
- package/dist/owned-browser.js +13 -1
- package/dist/owned-process.d.ts +2 -0
- package/dist/owned-process.d.ts.map +1 -1
- package/dist/owned-process.js +7 -3
- package/dist/playwright-runtime.d.ts +1 -1
- package/dist/playwright-runtime.d.ts.map +1 -1
- package/dist/playwright-runtime.js +8 -8
- package/dist/run-observability.d.ts +25 -0
- package/dist/run-observability.d.ts.map +1 -0
- package/dist/run-observability.js +115 -0
- package/dist/run-store.d.ts +274 -0
- package/dist/run-store.d.ts.map +1 -0
- package/dist/run-store.js +631 -0
- package/dist/runtime-metrics.d.ts +27 -0
- package/dist/runtime-metrics.d.ts.map +1 -0
- package/dist/runtime-metrics.js +66 -0
- package/dist/runtime-page-state.d.ts +11 -0
- package/dist/runtime-page-state.d.ts.map +1 -0
- package/dist/runtime-page-state.js +62 -0
- package/dist/runtime-protected-state.d.ts +16 -0
- package/dist/runtime-protected-state.d.ts.map +1 -0
- package/dist/runtime-protected-state.js +157 -0
- package/dist/runtime-state.d.ts +10 -44
- package/dist/runtime-state.d.ts.map +1 -1
- package/dist/runtime-state.js +57 -222
- package/dist/secrets/backend.d.ts +65 -16
- package/dist/secrets/backend.d.ts.map +1 -1
- package/dist/secrets/backend.js +135 -95
- package/dist/secrets/catalog-sync.d.ts.map +1 -1
- package/dist/secrets/catalog-sync.js +4 -1
- package/dist/secrets/form-matcher.d.ts +5 -5
- package/dist/secrets/form-matcher.d.ts.map +1 -1
- package/dist/secrets/form-matcher.js +292 -164
- package/dist/secrets/intent-output.d.ts +6 -10
- package/dist/secrets/intent-output.d.ts.map +1 -1
- package/dist/secrets/intent-output.js +4 -58
- package/dist/secrets/mock-agentpay-cabinet.d.ts +38 -27
- package/dist/secrets/mock-agentpay-cabinet.d.ts.map +1 -1
- package/dist/secrets/mock-agentpay-cabinet.js +177 -111
- package/dist/secrets/protected-artifact-guard.d.ts +2 -2
- package/dist/secrets/protected-artifact-guard.d.ts.map +1 -1
- package/dist/secrets/protected-artifact-guard.js +2 -2
- package/dist/secrets/protected-bindings.d.ts +1 -1
- package/dist/secrets/protected-bindings.d.ts.map +1 -1
- package/dist/secrets/protected-bindings.js +6 -0
- package/dist/secrets/protected-field-semantics.d.ts +9 -0
- package/dist/secrets/protected-field-semantics.d.ts.map +1 -0
- package/dist/secrets/protected-field-semantics.js +154 -0
- package/dist/secrets/protected-field-values.d.ts.map +1 -1
- package/dist/secrets/protected-field-values.js +3 -3
- package/dist/secrets/protected-fill.d.ts +1 -1
- package/dist/secrets/protected-fill.d.ts.map +1 -1
- package/dist/secrets/protected-fill.js +45 -149
- package/dist/secrets/protected-value-adapters.d.ts +2 -1
- package/dist/secrets/protected-value-adapters.d.ts.map +1 -1
- package/dist/secrets/protected-value-adapters.js +80 -1
- package/dist/secrets/request-output.d.ts +11 -0
- package/dist/secrets/request-output.d.ts.map +1 -0
- package/dist/secrets/request-output.js +75 -0
- package/dist/secrets/types.d.ts +15 -9
- package/dist/secrets/types.d.ts.map +1 -1
- package/dist/secrets/types.js +3 -0
- package/dist/session-event-exporter.d.ts +36 -0
- package/dist/session-event-exporter.d.ts.map +1 -0
- package/dist/session-event-exporter.js +428 -0
- package/dist/session.d.ts +16 -7
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +150 -23
- package/dist/sessions-backend.d.ts +354 -0
- package/dist/sessions-backend.d.ts.map +1 -0
- package/dist/sessions-backend.js +126 -0
- package/dist/solver/browser-launcher.d.ts +1 -1
- package/dist/solver/browser-launcher.d.ts.map +1 -1
- package/dist/solver/browser-launcher.js +39 -13
- package/dist/solver/captcha-solver.d.ts.map +1 -1
- package/dist/solver/captcha-solver.js +8 -1
- package/dist/solver/types.d.ts +1 -0
- package/dist/solver/types.d.ts.map +1 -1
- package/dist/workflow-session-completion.d.ts +33 -0
- package/dist/workflow-session-completion.d.ts.map +1 -0
- package/dist/workflow-session-completion.js +156 -0
- package/package.json +9 -1
- package/dist/commands/create-intent.d.ts +0 -6
- package/dist/commands/create-intent.d.ts.map +0 -1
- package/dist/commands/create-intent.js +0 -75
- package/dist/commands/poll-intent.d.ts +0 -6
- package/dist/commands/poll-intent.d.ts.map +0 -1
- package/dist/commands/poll-intent.js +0 -57
|
@@ -1,63 +1,206 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* browse navigate <url> — Navigate the current tab to a URL.
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
4
|
+
import { bumpPageScopeEpoch, setCurrentPage } from '../runtime-page-state.js';
|
|
5
|
+
import { clearProtectedExposure } from '../runtime-protected-state.js';
|
|
5
6
|
import { saveSession } from '../session.js';
|
|
6
7
|
import { outputContractFailure, outputJSON, info } from '../output.js';
|
|
7
8
|
import { summarizeSecretCatalog, syncSecretCatalogForUrl, tryResolveCatalogHost, } from '../secrets/catalog-sync.js';
|
|
8
9
|
import { connectPlaywright, disconnectPlaywright, resolveCurrentPageContext, syncSessionPage, } from '../playwright-runtime.js';
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
10
|
+
import { withApiTraceContext } from '../command-api-tracing.js';
|
|
11
|
+
import { finishRunStep, startRunStep } from '../run-store.js';
|
|
12
|
+
import { appendCommandLifecycleEventBestEffort, captureStepSnapshotBestEffort, } from '../run-observability.js';
|
|
13
|
+
import { exportRunStepToOtlpHttpJsonBestEffort } from '../otel-exporter.js';
|
|
14
|
+
function finalizeNavigateStepBestEffort(runId, stepId, options) {
|
|
15
|
+
if (!runId || !stepId) {
|
|
16
|
+
return;
|
|
15
17
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
reason: err instanceof Error ? err.message : String(err),
|
|
18
|
+
try {
|
|
19
|
+
finishRunStep({
|
|
20
|
+
runId,
|
|
21
|
+
stepId,
|
|
22
|
+
...options,
|
|
22
23
|
});
|
|
23
24
|
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
25
|
+
catch {
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
async function emitNavigateSuccess(params) {
|
|
29
|
+
finalizeNavigateStepBestEffort(params.runId, params.stepId, {
|
|
30
|
+
success: true,
|
|
31
|
+
outcomeType: 'navigation_completed',
|
|
32
|
+
message: 'Navigation completed.',
|
|
33
|
+
});
|
|
34
|
+
await exportRunStepToOtlpHttpJsonBestEffort(params.runId, params.stepId);
|
|
35
|
+
return outputJSON({
|
|
36
|
+
success: true,
|
|
37
|
+
pageRef: params.pageRef,
|
|
38
|
+
url: params.url,
|
|
39
|
+
title: params.title,
|
|
40
|
+
secretCatalog: params.secretCatalog,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
async function emitNavigateContractFailure(params) {
|
|
44
|
+
finalizeNavigateStepBestEffort(params.runId, params.stepId, {
|
|
45
|
+
success: false,
|
|
46
|
+
outcomeType: params.outcomeType,
|
|
47
|
+
message: params.message,
|
|
48
|
+
reason: params.reason,
|
|
49
|
+
});
|
|
50
|
+
await exportRunStepToOtlpHttpJsonBestEffort(params.runId, params.stepId);
|
|
51
|
+
const { runId: _runId, stepId: _stepId, ...result } = params;
|
|
52
|
+
return outputContractFailure(result);
|
|
53
|
+
}
|
|
54
|
+
export async function navigate(session, targetUrl) {
|
|
55
|
+
const initialPageRef = session.runtime?.currentPageRef ?? 'p0';
|
|
56
|
+
const navigateStep = session.activeRunId
|
|
57
|
+
? startRunStep({
|
|
58
|
+
runId: session.activeRunId,
|
|
59
|
+
command: 'navigate',
|
|
60
|
+
input: {
|
|
61
|
+
targetUrl,
|
|
62
|
+
},
|
|
63
|
+
refs: {
|
|
64
|
+
pageRef: initialPageRef,
|
|
65
|
+
},
|
|
66
|
+
})
|
|
67
|
+
: null;
|
|
68
|
+
captureStepSnapshotBestEffort({
|
|
69
|
+
session,
|
|
70
|
+
step: navigateStep,
|
|
71
|
+
phase: 'before',
|
|
72
|
+
pageRef: initialPageRef,
|
|
73
|
+
});
|
|
74
|
+
appendCommandLifecycleEventBestEffort({
|
|
75
|
+
step: navigateStep,
|
|
76
|
+
phase: 'started',
|
|
77
|
+
attributes: {
|
|
78
|
+
targetUrl,
|
|
79
|
+
pageRef: initialPageRef,
|
|
80
|
+
},
|
|
81
|
+
});
|
|
82
|
+
return withApiTraceContext({
|
|
83
|
+
runId: session.activeRunId,
|
|
84
|
+
stepId: navigateStep?.stepId,
|
|
85
|
+
command: 'navigate',
|
|
86
|
+
}, async () => {
|
|
87
|
+
let browser = null;
|
|
88
|
+
let failureMessage = null;
|
|
89
|
+
let secretCatalogSummary;
|
|
90
|
+
try {
|
|
91
|
+
browser = await connectPlaywright(session.cdpUrl);
|
|
33
92
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
93
|
+
catch (err) {
|
|
94
|
+
captureStepSnapshotBestEffort({
|
|
95
|
+
session,
|
|
96
|
+
step: navigateStep,
|
|
97
|
+
phase: 'point-in-time',
|
|
98
|
+
pageRef: initialPageRef,
|
|
99
|
+
});
|
|
100
|
+
appendCommandLifecycleEventBestEffort({
|
|
101
|
+
step: navigateStep,
|
|
102
|
+
phase: 'failed',
|
|
103
|
+
attributes: {
|
|
104
|
+
outcomeType: 'blocked',
|
|
105
|
+
reason: err instanceof Error ? err.message : String(err),
|
|
106
|
+
},
|
|
107
|
+
});
|
|
108
|
+
return emitNavigateContractFailure({
|
|
109
|
+
error: 'browser_connection_failed',
|
|
110
|
+
outcomeType: 'blocked',
|
|
111
|
+
message: 'Navigation could not start because AgentBrowse failed to connect to the browser.',
|
|
112
|
+
reason: err instanceof Error ? err.message : String(err),
|
|
113
|
+
runId: session.activeRunId,
|
|
114
|
+
stepId: navigateStep?.stepId,
|
|
115
|
+
});
|
|
42
116
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
117
|
+
try {
|
|
118
|
+
let pageRef = session.runtime?.currentPageRef ?? 'p0';
|
|
119
|
+
const resolvedPage = await resolveCurrentPageContext(browser, session);
|
|
120
|
+
pageRef = resolvedPage.pageRef;
|
|
121
|
+
const page = resolvedPage.page;
|
|
122
|
+
const previousUrl = session.runtime?.pages?.[pageRef]?.url;
|
|
123
|
+
const previousHost = tryResolveCatalogHost(previousUrl);
|
|
124
|
+
if (!page) {
|
|
125
|
+
throw new Error('no_open_pages');
|
|
126
|
+
}
|
|
127
|
+
await page.goto(targetUrl, { waitUntil: 'domcontentloaded' });
|
|
128
|
+
const { url, title } = await syncSessionPage(session, pageRef, page);
|
|
129
|
+
bumpPageScopeEpoch(session, pageRef);
|
|
130
|
+
setCurrentPage(session, pageRef);
|
|
131
|
+
clearProtectedExposure(session, pageRef);
|
|
132
|
+
const nextHost = tryResolveCatalogHost(url);
|
|
133
|
+
if (nextHost && nextHost !== previousHost) {
|
|
134
|
+
const snapshot = await syncSecretCatalogForUrl(session, url);
|
|
135
|
+
secretCatalogSummary = summarizeSecretCatalog(snapshot);
|
|
136
|
+
}
|
|
137
|
+
saveSession(session);
|
|
138
|
+
info(`Navigated to: ${targetUrl}`);
|
|
139
|
+
captureStepSnapshotBestEffort({
|
|
140
|
+
session,
|
|
141
|
+
step: navigateStep,
|
|
142
|
+
phase: 'after',
|
|
143
|
+
pageRef,
|
|
144
|
+
url,
|
|
145
|
+
title,
|
|
146
|
+
});
|
|
147
|
+
appendCommandLifecycleEventBestEffort({
|
|
148
|
+
step: navigateStep,
|
|
149
|
+
phase: 'completed',
|
|
150
|
+
attributes: {
|
|
151
|
+
outcomeType: 'navigation_completed',
|
|
152
|
+
pageRef,
|
|
153
|
+
url,
|
|
154
|
+
},
|
|
155
|
+
});
|
|
156
|
+
return emitNavigateSuccess({
|
|
157
|
+
runId: session.activeRunId,
|
|
158
|
+
stepId: navigateStep?.stepId,
|
|
159
|
+
pageRef,
|
|
160
|
+
url,
|
|
161
|
+
title,
|
|
162
|
+
secretCatalog: secretCatalogSummary,
|
|
163
|
+
});
|
|
53
164
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
165
|
+
catch (err) {
|
|
166
|
+
failureMessage = `Navigation failed: ${err instanceof Error ? err.message : String(err)}`;
|
|
167
|
+
}
|
|
168
|
+
finally {
|
|
169
|
+
if (browser) {
|
|
170
|
+
await disconnectPlaywright(browser);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
if (failureMessage) {
|
|
174
|
+
captureStepSnapshotBestEffort({
|
|
175
|
+
session,
|
|
176
|
+
step: navigateStep,
|
|
177
|
+
phase: 'point-in-time',
|
|
178
|
+
pageRef: session.runtime?.currentPageRef ?? initialPageRef,
|
|
179
|
+
});
|
|
180
|
+
appendCommandLifecycleEventBestEffort({
|
|
181
|
+
step: navigateStep,
|
|
182
|
+
phase: 'failed',
|
|
183
|
+
attributes: {
|
|
184
|
+
outcomeType: 'blocked',
|
|
185
|
+
reason: failureMessage.replace(/^Navigation failed:\s*/, ''),
|
|
186
|
+
},
|
|
187
|
+
});
|
|
188
|
+
return emitNavigateContractFailure({
|
|
189
|
+
error: 'navigation_failed',
|
|
190
|
+
outcomeType: 'blocked',
|
|
191
|
+
message: 'Navigation failed.',
|
|
192
|
+
reason: failureMessage.replace(/^Navigation failed:\s*/, ''),
|
|
193
|
+
runId: session.activeRunId,
|
|
194
|
+
stepId: navigateStep?.stepId,
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
return emitNavigateContractFailure({
|
|
57
198
|
error: 'navigation_failed',
|
|
58
199
|
outcomeType: 'blocked',
|
|
59
200
|
message: 'Navigation failed.',
|
|
60
|
-
reason:
|
|
201
|
+
reason: 'Navigation failed for an unknown reason.',
|
|
202
|
+
runId: session.activeRunId,
|
|
203
|
+
stepId: navigateStep?.stepId,
|
|
61
204
|
});
|
|
62
|
-
}
|
|
205
|
+
});
|
|
63
206
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observe-accessibility.d.ts","sourceRoot":"","sources":["../../src/commands/observe-accessibility.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAa5C,OAAO,KAAK,EAEV,iBAAiB,EAElB,MAAM,wBAAwB,CAAC;AAEhC,KAAK,6BAA6B,GAAG;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC,CAAC;CACpD,CAAC;AAOF,MAAM,MAAM,yBAAyB,GAAG;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,KAAK,2BAA2B,GAAG;IACjC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,yBAAyB,KAAK,IAAI,CAAC;CACtD,CAAC;
|
|
1
|
+
{"version":3,"file":"observe-accessibility.d.ts","sourceRoot":"","sources":["../../src/commands/observe-accessibility.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAa5C,OAAO,KAAK,EAEV,iBAAiB,EAElB,MAAM,wBAAwB,CAAC;AAEhC,KAAK,6BAA6B,GAAG;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC,CAAC;CACpD,CAAC;AAOF,MAAM,MAAM,yBAAyB,GAAG;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,KAAK,2BAA2B,GAAG;IACjC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,yBAAyB,KAAK,IAAI,CAAC;CACtD,CAAC;AAkHF,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAClC,6BAA6B,GAAG,IAAI,CAoDtC;AAwoBD,wBAAsB,iCAAiC,CACrD,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,aAAa,CAAC,iBAAiB,CAAC,EACzC,OAAO,CAAC,EAAE,2BAA2B,GACpC,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAY9B;AAED,eAAO,MAAM,0BAA0B;;CAEtC,CAAC"}
|
|
@@ -44,6 +44,51 @@ const NON_CONTAINER_AX_ROLES = new Set([
|
|
|
44
44
|
'tab',
|
|
45
45
|
'textbox',
|
|
46
46
|
]);
|
|
47
|
+
const DOM_FALLBACK_SEMANTICS_SCRIPT = String.raw `
|
|
48
|
+
if (!(element instanceof HTMLElement)) {
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
const normalizeText = (value) => {
|
|
53
|
+
const normalized = (value ?? '').replace(/\s+/g, ' ').trim();
|
|
54
|
+
return normalized || undefined;
|
|
55
|
+
};
|
|
56
|
+
const relationTextOf = (attribute) => {
|
|
57
|
+
const relation = element.getAttribute(attribute)?.trim();
|
|
58
|
+
if (!relation) {
|
|
59
|
+
return undefined;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
const text = relation
|
|
63
|
+
.split(/\s+/)
|
|
64
|
+
.map((id) => {
|
|
65
|
+
const related = element.ownerDocument.getElementById(id);
|
|
66
|
+
return related instanceof HTMLElement ? related.innerText || related.textContent || '' : '';
|
|
67
|
+
})
|
|
68
|
+
.join(' ');
|
|
69
|
+
return normalizeText(text);
|
|
70
|
+
};
|
|
71
|
+
const heading = element.querySelector('h1, h2, h3, h4, h5, h6, [role="heading"]');
|
|
72
|
+
const headingText =
|
|
73
|
+
heading instanceof HTMLElement && heading !== element && !heading.contains(element)
|
|
74
|
+
? normalizeText(
|
|
75
|
+
heading.getAttribute('aria-label') ||
|
|
76
|
+
heading.getAttribute('title') ||
|
|
77
|
+
heading.innerText ||
|
|
78
|
+
heading.textContent
|
|
79
|
+
)
|
|
80
|
+
: undefined;
|
|
81
|
+
|
|
82
|
+
return {
|
|
83
|
+
label: normalizeText(
|
|
84
|
+
element.getAttribute('aria-label') ||
|
|
85
|
+
relationTextOf('aria-labelledby') ||
|
|
86
|
+
element.getAttribute('title') ||
|
|
87
|
+
headingText
|
|
88
|
+
),
|
|
89
|
+
hintText: relationTextOf('aria-describedby'),
|
|
90
|
+
};
|
|
91
|
+
`;
|
|
47
92
|
function emptyStats() {
|
|
48
93
|
return {
|
|
49
94
|
axAttempts: 0,
|
|
@@ -116,6 +161,7 @@ function shouldPreferAccessibilityName(target, accessibilityName) {
|
|
|
116
161
|
const currentLabel = normalizeText(target.label);
|
|
117
162
|
const currentKey = normalizeLabelKey(currentLabel);
|
|
118
163
|
const nextLabel = normalizeText(accessibilityName);
|
|
164
|
+
const nextKey = normalizeLabelKey(nextLabel);
|
|
119
165
|
const visibleText = normalizeText(target.text);
|
|
120
166
|
const kind = normalizeText(target.kind)?.toLowerCase();
|
|
121
167
|
const role = normalizeText(target.role)?.toLowerCase();
|
|
@@ -147,6 +193,9 @@ function shouldPreferAccessibilityName(target, accessibilityName) {
|
|
|
147
193
|
if (!isMeaningfulName(currentLabel)) {
|
|
148
194
|
return true;
|
|
149
195
|
}
|
|
196
|
+
if (GENERIC_FALLBACK_LABELS.has(nextKey) && !GENERIC_FALLBACK_LABELS.has(currentKey)) {
|
|
197
|
+
return false;
|
|
198
|
+
}
|
|
150
199
|
if (primaryAxControl && currentLabel !== nextLabel) {
|
|
151
200
|
return true;
|
|
152
201
|
}
|
|
@@ -257,45 +306,7 @@ async function readDomFallbackSemantics(page, target, rootCache, fallbackCache)
|
|
|
257
306
|
return resolvedRoot;
|
|
258
307
|
})();
|
|
259
308
|
const locator = root.locator(selector).first();
|
|
260
|
-
return await locator.evaluate((element) =>
|
|
261
|
-
if (!(element instanceof HTMLElement)) {
|
|
262
|
-
return null;
|
|
263
|
-
}
|
|
264
|
-
const normalizeText = (value) => {
|
|
265
|
-
const normalized = (value ?? '').replace(/\s+/g, ' ').trim();
|
|
266
|
-
return normalized || undefined;
|
|
267
|
-
};
|
|
268
|
-
const relationTextOf = (attribute) => {
|
|
269
|
-
const relation = element.getAttribute(attribute)?.trim();
|
|
270
|
-
if (!relation) {
|
|
271
|
-
return undefined;
|
|
272
|
-
}
|
|
273
|
-
const text = relation
|
|
274
|
-
.split(/\s+/)
|
|
275
|
-
.map((id) => {
|
|
276
|
-
const related = element.ownerDocument.getElementById(id);
|
|
277
|
-
return related instanceof HTMLElement
|
|
278
|
-
? related.innerText || related.textContent || ''
|
|
279
|
-
: '';
|
|
280
|
-
})
|
|
281
|
-
.join(' ');
|
|
282
|
-
return normalizeText(text);
|
|
283
|
-
};
|
|
284
|
-
const heading = element.querySelector('h1, h2, h3, h4, h5, h6, [role="heading"]');
|
|
285
|
-
const headingText = heading instanceof HTMLElement && heading !== element && !heading.contains(element)
|
|
286
|
-
? normalizeText(heading.getAttribute('aria-label') ||
|
|
287
|
-
heading.getAttribute('title') ||
|
|
288
|
-
heading.innerText ||
|
|
289
|
-
heading.textContent)
|
|
290
|
-
: undefined;
|
|
291
|
-
return {
|
|
292
|
-
label: normalizeText(element.getAttribute('aria-label') ||
|
|
293
|
-
relationTextOf('aria-labelledby') ||
|
|
294
|
-
element.getAttribute('title') ||
|
|
295
|
-
headingText),
|
|
296
|
-
hintText: relationTextOf('aria-describedby'),
|
|
297
|
-
};
|
|
298
|
-
});
|
|
309
|
+
return await locator.evaluate((element, source) => Function('element', source)(element), DOM_FALLBACK_SEMANTICS_SCRIPT);
|
|
299
310
|
}
|
|
300
311
|
catch {
|
|
301
312
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observe-dom-label-contract.d.ts","sourceRoot":"","sources":["../../src/commands/observe-dom-label-contract.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,wCAAwC,
|
|
1
|
+
{"version":3,"file":"observe-dom-label-contract.d.ts","sourceRoot":"","sources":["../../src/commands/observe-dom-label-contract.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,wCAAwC,QAugBpD,CAAC"}
|
|
@@ -465,6 +465,8 @@ export const OBSERVE_DOM_LABEL_CONTRACT_HELPER_SCRIPT = String.raw `
|
|
|
465
465
|
if (tag === 'input') {
|
|
466
466
|
const inputType = observedInputTypeOf(element);
|
|
467
467
|
if (observedIsButtonLikeInput(element)) return 'Button';
|
|
468
|
+
if (inputType === 'checkbox') return 'Checkbox';
|
|
469
|
+
if (inputType === 'radio') return 'Radio';
|
|
468
470
|
if (inputType === 'tel') return 'Phone input';
|
|
469
471
|
if (inputType === 'email') return 'Email input';
|
|
470
472
|
if (inputType === 'password') return 'Password input';
|
|
@@ -489,6 +491,9 @@ export const OBSERVE_DOM_LABEL_CONTRACT_HELPER_SCRIPT = String.raw `
|
|
|
489
491
|
if (tag === 'textarea') return 'textbox';
|
|
490
492
|
if (tag === 'input') {
|
|
491
493
|
if (observedIsButtonLikeInput(element)) return 'button';
|
|
494
|
+
const inputType = observedInputTypeOf(element);
|
|
495
|
+
if (inputType === 'checkbox') return 'checkbox';
|
|
496
|
+
if (inputType === 'radio') return 'radio';
|
|
492
497
|
return 'textbox';
|
|
493
498
|
}
|
|
494
499
|
return '';
|
|
@@ -24,6 +24,7 @@ export type DomObservedTarget = {
|
|
|
24
24
|
inputName?: string;
|
|
25
25
|
inputType?: string;
|
|
26
26
|
autocomplete?: string;
|
|
27
|
+
ariaAutocomplete?: string;
|
|
27
28
|
validation?: TargetValidationEvidence;
|
|
28
29
|
title?: string;
|
|
29
30
|
testId?: string;
|
|
@@ -63,6 +64,7 @@ type StagehandDomFacts = {
|
|
|
63
64
|
inputName?: string;
|
|
64
65
|
inputType?: string;
|
|
65
66
|
autocomplete?: string;
|
|
67
|
+
ariaAutocomplete?: string;
|
|
66
68
|
value?: string;
|
|
67
69
|
text?: string;
|
|
68
70
|
currentValue?: string;
|
|
@@ -101,8 +103,19 @@ export type DirectionalControlFallbackEvidence = {
|
|
|
101
103
|
anchorText?: string;
|
|
102
104
|
position?: DirectionalControlFallbackPosition;
|
|
103
105
|
};
|
|
106
|
+
export type DisabledStateSemanticEvidence = {
|
|
107
|
+
tagName?: string;
|
|
108
|
+
role?: string;
|
|
109
|
+
inputType?: string;
|
|
110
|
+
className?: string;
|
|
111
|
+
datasetText?: string;
|
|
112
|
+
dataState?: string;
|
|
113
|
+
dataStatus?: string;
|
|
114
|
+
ariaLabel?: string;
|
|
115
|
+
};
|
|
104
116
|
export declare function inferStructuredCellVariantFromEvidence(evidence: StructuredCellVariantEvidence): 'date-cell' | 'seat-cell' | 'grid-cell' | undefined;
|
|
105
117
|
export declare function inferDirectionalControlFallbackFromEvidence(evidence: DirectionalControlFallbackEvidence): string | undefined;
|
|
118
|
+
export declare function inferDisabledStateFromSemanticEvidence(evidence: DisabledStateSemanticEvidence): boolean;
|
|
106
119
|
export declare function readStagehandLocatorSnapshot(locator: Locator): Promise<StagehandLocatorSnapshot>;
|
|
107
120
|
declare function readStagehandDomFactsInBrowser(element: Element): StagehandDomFacts | null;
|
|
108
121
|
declare function readStagehandDomFacts(locator: Locator): Promise<StagehandDomFacts | null>;
|
|
@@ -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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"}
|