@nuanu-ai/agentbrowse 0.2.7 → 0.2.8
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 +36 -8
- package/dist/agentpay-stagehand-llm.d.ts.map +1 -1
- package/dist/agentpay-stagehand-llm.js +5 -1
- package/dist/commands/act.d.ts +6 -2
- package/dist/commands/act.d.ts.map +1 -1
- package/dist/commands/act.js +840 -55
- package/dist/commands/act.test-harness.d.ts +19 -0
- package/dist/commands/act.test-harness.d.ts.map +1 -0
- package/dist/commands/act.test-harness.js +245 -0
- package/dist/commands/action-acceptance.d.ts +90 -0
- package/dist/commands/action-acceptance.d.ts.map +1 -0
- package/dist/commands/action-acceptance.js +1411 -0
- package/dist/commands/action-artifacts.d.ts +33 -0
- package/dist/commands/action-artifacts.d.ts.map +1 -0
- package/dist/commands/action-artifacts.js +104 -0
- package/dist/commands/action-execution-guards.d.ts +5 -0
- package/dist/commands/action-execution-guards.d.ts.map +1 -0
- package/dist/commands/action-execution-guards.js +3 -0
- package/dist/commands/action-executor-helpers.d.ts +21 -0
- package/dist/commands/action-executor-helpers.d.ts.map +1 -0
- package/dist/commands/action-executor-helpers.js +242 -0
- package/dist/commands/action-executor.d.ts +12 -0
- package/dist/commands/action-executor.d.ts.map +1 -0
- package/dist/commands/action-executor.js +45 -0
- package/dist/commands/action-fallbacks.d.ts +6 -0
- package/dist/commands/action-fallbacks.d.ts.map +1 -0
- package/dist/commands/action-fallbacks.js +43 -0
- package/dist/commands/action-value-projection.d.ts +32 -0
- package/dist/commands/action-value-projection.d.ts.map +1 -0
- package/dist/commands/action-value-projection.js +151 -0
- package/dist/commands/browse-actions.d.ts +4 -0
- package/dist/commands/browse-actions.d.ts.map +1 -0
- package/dist/commands/browse-actions.js +4 -0
- package/dist/commands/captcha-solve.d.ts.map +1 -1
- package/dist/commands/captcha-solve.js +13 -3
- package/dist/commands/click-action-executor.d.ts +10 -0
- package/dist/commands/click-action-executor.d.ts.map +1 -0
- package/dist/commands/click-action-executor.js +68 -0
- package/dist/commands/create-intent.d.ts +6 -0
- package/dist/commands/create-intent.d.ts.map +1 -0
- package/dist/commands/create-intent.js +75 -0
- package/dist/commands/datepicker-action-executor.d.ts +12 -0
- package/dist/commands/datepicker-action-executor.d.ts.map +1 -0
- package/dist/commands/datepicker-action-executor.js +218 -0
- package/dist/commands/descriptor-validation.d.ts +27 -0
- package/dist/commands/descriptor-validation.d.ts.map +1 -0
- package/dist/commands/descriptor-validation.js +333 -0
- package/dist/commands/extract-scope-resolution.d.ts +20 -0
- package/dist/commands/extract-scope-resolution.d.ts.map +1 -0
- package/dist/commands/extract-scope-resolution.js +100 -0
- package/dist/commands/extract-stagehand-executor.d.ts +17 -0
- package/dist/commands/extract-stagehand-executor.d.ts.map +1 -0
- package/dist/commands/extract-stagehand-executor.js +18 -0
- package/dist/commands/extract.d.ts +3 -2
- package/dist/commands/extract.d.ts.map +1 -1
- package/dist/commands/extract.js +256 -39
- package/dist/commands/fill-secret.d.ts +7 -0
- package/dist/commands/fill-secret.d.ts.map +1 -0
- package/dist/commands/fill-secret.js +371 -0
- package/dist/commands/get-secrets-catalog.d.ts +6 -0
- package/dist/commands/get-secrets-catalog.d.ts.map +1 -0
- package/dist/commands/get-secrets-catalog.js +23 -0
- package/dist/commands/launch.d.ts.map +1 -1
- package/dist/commands/launch.js +41 -7
- package/dist/commands/navigate.d.ts +2 -1
- package/dist/commands/navigate.d.ts.map +1 -1
- package/dist/commands/navigate.js +49 -12
- package/dist/commands/observe-inventory.d.ts +109 -0
- package/dist/commands/observe-inventory.d.ts.map +1 -0
- package/dist/commands/observe-inventory.js +2837 -0
- package/dist/commands/observe-persistence.d.ts +14 -0
- package/dist/commands/observe-persistence.d.ts.map +1 -0
- package/dist/commands/observe-persistence.js +170 -0
- package/dist/commands/observe-projection.d.ts +84 -0
- package/dist/commands/observe-projection.d.ts.map +1 -0
- package/dist/commands/observe-projection.js +140 -0
- package/dist/commands/observe-protected.d.ts +5 -0
- package/dist/commands/observe-protected.d.ts.map +1 -0
- package/dist/commands/observe-protected.js +18 -0
- package/dist/commands/observe-semantics.d.ts +10 -0
- package/dist/commands/observe-semantics.d.ts.map +1 -0
- package/dist/commands/observe-semantics.js +338 -0
- package/dist/commands/observe-stagehand.d.ts +48 -0
- package/dist/commands/observe-stagehand.d.ts.map +1 -0
- package/dist/commands/observe-stagehand.js +105 -0
- package/dist/commands/observe-surfaces.d.ts +9 -0
- package/dist/commands/observe-surfaces.d.ts.map +1 -0
- package/dist/commands/observe-surfaces.js +195 -0
- package/dist/commands/observe.d.ts +47 -1
- package/dist/commands/observe.d.ts.map +1 -1
- package/dist/commands/observe.js +173 -20
- package/dist/commands/observe.test-harness.d.ts +67 -0
- package/dist/commands/observe.test-harness.d.ts.map +1 -0
- package/dist/commands/observe.test-harness.js +107 -0
- package/dist/commands/poll-intent.d.ts +6 -0
- package/dist/commands/poll-intent.d.ts.map +1 -0
- package/dist/commands/poll-intent.js +57 -0
- package/dist/commands/screenshot.d.ts +2 -1
- package/dist/commands/screenshot.d.ts.map +1 -1
- package/dist/commands/screenshot.js +44 -12
- package/dist/commands/select-action-executor.d.ts +10 -0
- package/dist/commands/select-action-executor.d.ts.map +1 -0
- package/dist/commands/select-action-executor.js +91 -0
- package/dist/commands/semantic-observe.d.ts +24 -0
- package/dist/commands/semantic-observe.d.ts.map +1 -0
- package/dist/commands/semantic-observe.js +344 -0
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +75 -2
- package/dist/commands/structured-grid-action-executor.d.ts +3 -0
- package/dist/commands/structured-grid-action-executor.d.ts.map +1 -0
- package/dist/commands/structured-grid-action-executor.js +4 -0
- package/dist/commands/target-resolution.d.ts +4 -0
- package/dist/commands/target-resolution.d.ts.map +1 -0
- package/dist/commands/target-resolution.js +33 -0
- package/dist/commands/text-input-action-executor.d.ts +5 -0
- package/dist/commands/text-input-action-executor.d.ts.map +1 -0
- package/dist/commands/text-input-action-executor.js +116 -0
- package/dist/commands/user-actionable.d.ts +4 -0
- package/dist/commands/user-actionable.d.ts.map +1 -0
- package/dist/commands/user-actionable.js +95 -0
- package/dist/control-semantics.d.ts +29 -0
- package/dist/control-semantics.d.ts.map +1 -0
- package/dist/control-semantics.js +299 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +95 -32
- package/dist/output.d.ts +14 -2
- package/dist/output.d.ts.map +1 -1
- package/dist/output.js +17 -29
- package/dist/playwright-runtime.d.ts +35 -0
- package/dist/playwright-runtime.d.ts.map +1 -0
- package/dist/playwright-runtime.js +224 -0
- package/dist/runtime-resolution.d.ts +9 -0
- package/dist/runtime-resolution.d.ts.map +1 -0
- package/dist/runtime-resolution.js +19 -0
- package/dist/runtime-state.d.ts +217 -0
- package/dist/runtime-state.d.ts.map +1 -0
- package/dist/runtime-state.js +629 -0
- package/dist/secrets/backend.d.ts +32 -0
- package/dist/secrets/backend.d.ts.map +1 -0
- package/dist/secrets/backend.js +169 -0
- package/dist/secrets/catalog-applicability.d.ts +5 -0
- package/dist/secrets/catalog-applicability.d.ts.map +1 -0
- package/dist/secrets/catalog-applicability.js +59 -0
- package/dist/secrets/catalog-sync.d.ts +14 -0
- package/dist/secrets/catalog-sync.d.ts.map +1 -0
- package/dist/secrets/catalog-sync.js +35 -0
- package/dist/secrets/field-policy.d.ts +3 -0
- package/dist/secrets/field-policy.d.ts.map +1 -0
- package/dist/secrets/field-policy.js +3 -0
- package/dist/secrets/fill-ordering.d.ts +11 -0
- package/dist/secrets/fill-ordering.d.ts.map +1 -0
- package/dist/secrets/fill-ordering.js +44 -0
- package/dist/secrets/form-matcher.d.ts +60 -0
- package/dist/secrets/form-matcher.d.ts.map +1 -0
- package/dist/secrets/form-matcher.js +596 -0
- package/dist/secrets/intent-output.d.ts +11 -0
- package/dist/secrets/intent-output.d.ts.map +1 -0
- package/dist/secrets/intent-output.js +64 -0
- package/dist/secrets/mock-agentpay-backend.d.ts +13 -0
- package/dist/secrets/mock-agentpay-backend.d.ts.map +1 -0
- package/dist/secrets/mock-agentpay-backend.js +87 -0
- package/dist/secrets/mock-agentpay-cabinet.d.ts +43 -0
- package/dist/secrets/mock-agentpay-cabinet.d.ts.map +1 -0
- package/dist/secrets/mock-agentpay-cabinet.js +195 -0
- package/dist/secrets/protected-artifact-guard.d.ts +25 -0
- package/dist/secrets/protected-artifact-guard.d.ts.map +1 -0
- package/dist/secrets/protected-artifact-guard.js +26 -0
- package/dist/secrets/protected-bindings.d.ts +10 -0
- package/dist/secrets/protected-bindings.d.ts.map +1 -0
- package/dist/secrets/protected-bindings.js +17 -0
- package/dist/secrets/protected-field-values.d.ts +13 -0
- package/dist/secrets/protected-field-values.d.ts.map +1 -0
- package/dist/secrets/protected-field-values.js +100 -0
- package/dist/secrets/protected-fill.d.ts +47 -0
- package/dist/secrets/protected-fill.d.ts.map +1 -0
- package/dist/secrets/protected-fill.js +512 -0
- package/dist/secrets/types.d.ts +84 -0
- package/dist/secrets/types.d.ts.map +1 -0
- package/dist/secrets/types.js +27 -0
- package/dist/session.d.ts +22 -0
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +74 -2
- package/dist/solver/browser-launcher.d.ts.map +1 -1
- package/dist/solver/browser-launcher.js +6 -3
- package/dist/stagehand-runtime.d.ts +4 -0
- package/dist/stagehand-runtime.d.ts.map +1 -0
- package/dist/stagehand-runtime.js +10 -0
- package/dist/stagehand.d.ts +0 -5
- package/dist/stagehand.d.ts.map +1 -1
- package/dist/stagehand.js +0 -6
- package/package.json +5 -2
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
import { chromium } from 'playwright-core';
|
|
2
|
+
import { ensureRuntimeState, registerPage, updatePage } from './runtime-state.js';
|
|
3
|
+
export async function connectPlaywright(cdpUrl) {
|
|
4
|
+
return chromium.connectOverCDP(cdpUrl);
|
|
5
|
+
}
|
|
6
|
+
export function disconnectPlaywright(browser) {
|
|
7
|
+
void browser;
|
|
8
|
+
// Playwright exposes no safe public disconnect for CDP browsers here.
|
|
9
|
+
// Private connection close paths can terminate the remote browser target,
|
|
10
|
+
// which breaks follow-up observe/act calls in the same process.
|
|
11
|
+
// The CLI process is short-lived, so we intentionally leave the CDP socket
|
|
12
|
+
// cleanup to process teardown instead of risking remote browser shutdown.
|
|
13
|
+
}
|
|
14
|
+
export function listPages(browser) {
|
|
15
|
+
return browser.contexts().flatMap((context) => context.pages());
|
|
16
|
+
}
|
|
17
|
+
function buildPageResolutionError(kind, pageRef) {
|
|
18
|
+
return new Error(`${kind === 'unknown' ? 'unknown_page_ref' : 'stale_page_ref'}:${pageRef}`);
|
|
19
|
+
}
|
|
20
|
+
function sleep(ms) {
|
|
21
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
22
|
+
}
|
|
23
|
+
function normalizeComparableUrl(value) {
|
|
24
|
+
const raw = value?.trim();
|
|
25
|
+
if (!raw) {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
try {
|
|
29
|
+
const url = new URL(raw);
|
|
30
|
+
url.hash = '';
|
|
31
|
+
url.search = '';
|
|
32
|
+
return `${url.origin}${url.pathname}`;
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return raw;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function isMeaningfulUrl(value) {
|
|
39
|
+
const raw = value?.trim();
|
|
40
|
+
return Boolean(raw && raw !== ':' && raw !== 'about:blank');
|
|
41
|
+
}
|
|
42
|
+
function isMeaningfulTitle(value) {
|
|
43
|
+
return Boolean(value?.trim());
|
|
44
|
+
}
|
|
45
|
+
function scoreLaunchPageMetadata(metadata, options) {
|
|
46
|
+
const normalizedUrl = normalizeComparableUrl(metadata.url);
|
|
47
|
+
const requestedUrl = normalizeComparableUrl(options.requestedUrl);
|
|
48
|
+
const fallbackUrl = normalizeComparableUrl(options.fallbackUrl);
|
|
49
|
+
let score = 0;
|
|
50
|
+
if (requestedUrl && normalizedUrl === requestedUrl) {
|
|
51
|
+
score += 200;
|
|
52
|
+
}
|
|
53
|
+
else if (fallbackUrl && normalizedUrl === fallbackUrl) {
|
|
54
|
+
score += 180;
|
|
55
|
+
}
|
|
56
|
+
else if (isMeaningfulUrl(metadata.url)) {
|
|
57
|
+
score += 100;
|
|
58
|
+
}
|
|
59
|
+
if (isMeaningfulTitle(metadata.title)) {
|
|
60
|
+
score += 20;
|
|
61
|
+
}
|
|
62
|
+
if (metadata.targetId) {
|
|
63
|
+
score += 5;
|
|
64
|
+
}
|
|
65
|
+
return score;
|
|
66
|
+
}
|
|
67
|
+
async function readPageTargetId(page) {
|
|
68
|
+
try {
|
|
69
|
+
const cdp = await page.context().newCDPSession(page);
|
|
70
|
+
try {
|
|
71
|
+
const result = (await cdp.send('Target.getTargetInfo'));
|
|
72
|
+
return result.targetInfo?.targetId;
|
|
73
|
+
}
|
|
74
|
+
finally {
|
|
75
|
+
await cdp.detach().catch(() => undefined);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
return undefined;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
async function readPageMetadata(page) {
|
|
83
|
+
const [url, title, targetId] = await Promise.all([
|
|
84
|
+
Promise.resolve(page.url()),
|
|
85
|
+
page.title().catch(() => ''),
|
|
86
|
+
readPageTargetId(page),
|
|
87
|
+
]);
|
|
88
|
+
return { page, url, title, targetId };
|
|
89
|
+
}
|
|
90
|
+
async function readSessionPageMetadata(session, pageRef, page) {
|
|
91
|
+
const existing = session.runtime?.pages[pageRef];
|
|
92
|
+
const [url, targetId, title] = await Promise.all([
|
|
93
|
+
Promise.resolve(page.url()),
|
|
94
|
+
readPageTargetId(page),
|
|
95
|
+
page.title().catch(() => existing?.title ?? ''),
|
|
96
|
+
]);
|
|
97
|
+
return {
|
|
98
|
+
url,
|
|
99
|
+
title,
|
|
100
|
+
targetId,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
export async function readLaunchPageMetadata(browser, options = {}) {
|
|
104
|
+
const deadline = Date.now() + (options.timeoutMs ?? 2_500);
|
|
105
|
+
let best = null;
|
|
106
|
+
while (Date.now() <= deadline) {
|
|
107
|
+
const pages = listPages(browser);
|
|
108
|
+
for (const page of pages) {
|
|
109
|
+
const metadata = await readPageMetadata(page);
|
|
110
|
+
const score = scoreLaunchPageMetadata(metadata, options);
|
|
111
|
+
if (!best ||
|
|
112
|
+
score > best.score ||
|
|
113
|
+
(score === best.score &&
|
|
114
|
+
metadata.title.trim().length > best.title.trim().length)) {
|
|
115
|
+
best = { ...metadata, score };
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
if (best &&
|
|
119
|
+
isMeaningfulUrl(best.url) &&
|
|
120
|
+
(isMeaningfulTitle(best.title) || Date.now() >= deadline)) {
|
|
121
|
+
break;
|
|
122
|
+
}
|
|
123
|
+
if (Date.now() >= deadline) {
|
|
124
|
+
break;
|
|
125
|
+
}
|
|
126
|
+
await sleep(100);
|
|
127
|
+
}
|
|
128
|
+
if (best) {
|
|
129
|
+
return {
|
|
130
|
+
page: best.page,
|
|
131
|
+
url: isMeaningfulUrl(best.url) ? best.url : options.fallbackUrl ?? best.url,
|
|
132
|
+
title: isMeaningfulTitle(best.title) ? best.title : options.fallbackTitle ?? best.title,
|
|
133
|
+
targetId: best.targetId,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
return {
|
|
137
|
+
page: null,
|
|
138
|
+
url: options.fallbackUrl ?? '',
|
|
139
|
+
title: options.fallbackTitle ?? '',
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
export async function syncLaunchPage(session, browser, options = {}) {
|
|
143
|
+
const metadata = await readLaunchPageMetadata(browser, options);
|
|
144
|
+
if (!metadata.page) {
|
|
145
|
+
return {
|
|
146
|
+
url: metadata.url,
|
|
147
|
+
title: metadata.title,
|
|
148
|
+
targetId: metadata.targetId,
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
ensureRuntimeState(session);
|
|
152
|
+
if (session.runtime?.pages.p0) {
|
|
153
|
+
updatePage(session, 'p0', {
|
|
154
|
+
url: metadata.url,
|
|
155
|
+
title: metadata.title,
|
|
156
|
+
targetId: metadata.targetId,
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
registerPage(session, {
|
|
161
|
+
pageRef: 'p0',
|
|
162
|
+
url: metadata.url,
|
|
163
|
+
title: metadata.title,
|
|
164
|
+
targetId: metadata.targetId,
|
|
165
|
+
makeCurrent: true,
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
return {
|
|
169
|
+
url: metadata.url,
|
|
170
|
+
title: metadata.title,
|
|
171
|
+
targetId: metadata.targetId,
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
export async function resolvePageByRef(browser, session, pageRef) {
|
|
175
|
+
const pages = listPages(browser);
|
|
176
|
+
if (pages.length === 0) {
|
|
177
|
+
throw new Error('no_open_pages');
|
|
178
|
+
}
|
|
179
|
+
const pageState = session.runtime?.pages[pageRef];
|
|
180
|
+
if (!pageState) {
|
|
181
|
+
throw buildPageResolutionError('unknown', pageRef);
|
|
182
|
+
}
|
|
183
|
+
if (!pageState.targetId && !pageState.url && !pageState.title) {
|
|
184
|
+
if (pages.length === 1) {
|
|
185
|
+
return pages[0];
|
|
186
|
+
}
|
|
187
|
+
throw buildPageResolutionError('stale', pageRef);
|
|
188
|
+
}
|
|
189
|
+
if (pageState.targetId) {
|
|
190
|
+
for (const page of pages) {
|
|
191
|
+
if ((await readPageTargetId(page)) === pageState.targetId) {
|
|
192
|
+
return page;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
if (pageState.url && pageState.title) {
|
|
197
|
+
for (const page of pages) {
|
|
198
|
+
const liveTitle = await page.title().catch(() => '');
|
|
199
|
+
if (page.url() === pageState.url && liveTitle === pageState.title) {
|
|
200
|
+
return page;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
if (!pageState.url) {
|
|
205
|
+
throw buildPageResolutionError('stale', pageRef);
|
|
206
|
+
}
|
|
207
|
+
for (const page of pages) {
|
|
208
|
+
if (page.url() === pageState.url) {
|
|
209
|
+
return page;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
throw buildPageResolutionError('stale', pageRef);
|
|
213
|
+
}
|
|
214
|
+
export async function syncSessionPage(session, pageRef, page) {
|
|
215
|
+
ensureRuntimeState(session);
|
|
216
|
+
const { url, title, targetId } = await readSessionPageMetadata(session, pageRef, page);
|
|
217
|
+
if (session.runtime?.pages[pageRef]) {
|
|
218
|
+
updatePage(session, pageRef, { url, title, targetId });
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
registerPage(session, { pageRef, url, title, targetId, makeCurrent: false });
|
|
222
|
+
}
|
|
223
|
+
return { url, title, targetId };
|
|
224
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type RuntimeSource = 'dom' | 'stagehand';
|
|
2
|
+
export type RuntimeResolution = {
|
|
3
|
+
source: RuntimeSource;
|
|
4
|
+
degraded: boolean;
|
|
5
|
+
degradationReason?: string;
|
|
6
|
+
};
|
|
7
|
+
export declare function domRuntimeResolution(): RuntimeResolution;
|
|
8
|
+
export declare function stagehandRuntimeResolution(degradationReason?: string): RuntimeResolution;
|
|
9
|
+
//# sourceMappingURL=runtime-resolution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-resolution.d.ts","sourceRoot":"","sources":["../src/runtime-resolution.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,WAAW,CAAC;AAEhD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,wBAAgB,oBAAoB,IAAI,iBAAiB,CAKxD;AAED,wBAAgB,0BAA0B,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAaxF"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export function domRuntimeResolution() {
|
|
2
|
+
return {
|
|
3
|
+
source: 'dom',
|
|
4
|
+
degraded: false,
|
|
5
|
+
};
|
|
6
|
+
}
|
|
7
|
+
export function stagehandRuntimeResolution(degradationReason) {
|
|
8
|
+
if (!degradationReason) {
|
|
9
|
+
return {
|
|
10
|
+
source: 'stagehand',
|
|
11
|
+
degraded: false,
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
return {
|
|
15
|
+
source: 'stagehand',
|
|
16
|
+
degraded: true,
|
|
17
|
+
degradationReason,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
import type { BrowseSession } from './session.js';
|
|
2
|
+
import type { PersistedFillableForm, SecretCatalogSnapshot, SecretIntentSnapshot } from './secrets/types.js';
|
|
3
|
+
export type LocatorStrategy = 'role' | 'label' | 'placeholder' | 'text' | 'title' | 'testId' | 'css' | 'xpath';
|
|
4
|
+
export interface LocatorCandidate {
|
|
5
|
+
strategy: LocatorStrategy;
|
|
6
|
+
value: string;
|
|
7
|
+
name?: string;
|
|
8
|
+
attribute?: 'data-testid' | 'data-test-id';
|
|
9
|
+
scope?: 'root' | 'surface';
|
|
10
|
+
}
|
|
11
|
+
export declare function locatorCandidateKey(candidate: Pick<LocatorCandidate, 'strategy' | 'value' | 'name' | 'attribute' | 'scope'>): string;
|
|
12
|
+
export interface TargetSemantics {
|
|
13
|
+
role?: string;
|
|
14
|
+
name?: string;
|
|
15
|
+
states?: Record<string, string | boolean | number>;
|
|
16
|
+
source?: 'dom' | 'stagehand' | 'aria-snapshot' | 'cdp-ax';
|
|
17
|
+
}
|
|
18
|
+
export type TargetCapability = 'actionable' | 'scope' | 'informational';
|
|
19
|
+
export type TargetLifecycle = 'live' | 'stale' | 'invalidated';
|
|
20
|
+
export type TargetAvailability = 'available' | 'gated' | 'surface-inactive' | 'hidden';
|
|
21
|
+
export type TargetAllowedAction = 'click' | 'fill' | 'type' | 'select' | 'press';
|
|
22
|
+
export type TargetControlFamily = 'text-input' | 'select' | 'datepicker' | 'structured-grid' | 'trigger';
|
|
23
|
+
export type TargetAcceptancePolicy = 'value-change' | 'selection' | 'toggle' | 'disclosure' | 'date-selection' | 'submit' | 'navigation' | 'generic-click';
|
|
24
|
+
export interface TargetAvailabilityState {
|
|
25
|
+
state: TargetAvailability;
|
|
26
|
+
reason?: string;
|
|
27
|
+
}
|
|
28
|
+
export interface TargetContextNode {
|
|
29
|
+
kind?: string;
|
|
30
|
+
label?: string;
|
|
31
|
+
text?: string;
|
|
32
|
+
}
|
|
33
|
+
export interface TargetVisualContext {
|
|
34
|
+
emphasis?: 'muted' | 'normal' | 'strong';
|
|
35
|
+
fill?: 'none' | 'light' | 'mid' | 'dark';
|
|
36
|
+
outlined?: boolean;
|
|
37
|
+
}
|
|
38
|
+
export interface TargetStructure {
|
|
39
|
+
family?: 'structured-grid';
|
|
40
|
+
variant?: 'date-cell' | 'seat-cell' | 'grid-cell';
|
|
41
|
+
row?: string;
|
|
42
|
+
column?: string;
|
|
43
|
+
zone?: string;
|
|
44
|
+
cellLabel?: string;
|
|
45
|
+
}
|
|
46
|
+
export interface TargetContext {
|
|
47
|
+
item?: TargetContextNode;
|
|
48
|
+
group?: TargetContextNode;
|
|
49
|
+
container?: TargetContextNode;
|
|
50
|
+
landmark?: TargetContextNode;
|
|
51
|
+
layout?: {
|
|
52
|
+
lane?: 'left' | 'center' | 'right';
|
|
53
|
+
band?: 'top' | 'middle' | 'bottom';
|
|
54
|
+
};
|
|
55
|
+
hintText?: string;
|
|
56
|
+
visual?: TargetVisualContext;
|
|
57
|
+
}
|
|
58
|
+
export interface TargetValidationEvidence {
|
|
59
|
+
invalid?: boolean;
|
|
60
|
+
required?: boolean;
|
|
61
|
+
message?: string;
|
|
62
|
+
errorStyling?: boolean;
|
|
63
|
+
}
|
|
64
|
+
export interface TargetDescriptor {
|
|
65
|
+
ref: string;
|
|
66
|
+
pageRef: string;
|
|
67
|
+
framePath?: string[];
|
|
68
|
+
frameUrl?: string;
|
|
69
|
+
kind?: string;
|
|
70
|
+
label?: string;
|
|
71
|
+
displayLabel?: string;
|
|
72
|
+
placeholder?: string;
|
|
73
|
+
inputName?: string;
|
|
74
|
+
inputType?: string;
|
|
75
|
+
autocomplete?: string;
|
|
76
|
+
validation?: TargetValidationEvidence;
|
|
77
|
+
capability: TargetCapability;
|
|
78
|
+
lifecycle: TargetLifecycle;
|
|
79
|
+
availability: TargetAvailabilityState;
|
|
80
|
+
allowedActions: TargetAllowedAction[];
|
|
81
|
+
controlFamily?: TargetControlFamily;
|
|
82
|
+
acceptancePolicy?: TargetAcceptancePolicy;
|
|
83
|
+
surfaceRef?: string;
|
|
84
|
+
ownerRef?: string;
|
|
85
|
+
locatorCandidates: LocatorCandidate[];
|
|
86
|
+
semantics?: TargetSemantics;
|
|
87
|
+
structure?: TargetStructure;
|
|
88
|
+
context?: TargetContext;
|
|
89
|
+
stagehandAction?: unknown;
|
|
90
|
+
createdAt: number;
|
|
91
|
+
pageSignature?: string;
|
|
92
|
+
domSignature?: string;
|
|
93
|
+
lifecycleReason?: string;
|
|
94
|
+
}
|
|
95
|
+
type TargetDescriptorInput = Omit<TargetDescriptor, 'ref' | 'capability' | 'lifecycle' | 'availability' | 'allowedActions'> & {
|
|
96
|
+
ref?: string;
|
|
97
|
+
capability?: TargetCapability;
|
|
98
|
+
lifecycle?: TargetLifecycle;
|
|
99
|
+
availability?: TargetAvailabilityState;
|
|
100
|
+
allowedActions?: TargetAllowedAction[];
|
|
101
|
+
};
|
|
102
|
+
export interface BrowsePageState {
|
|
103
|
+
pageRef: string;
|
|
104
|
+
createdAt: string;
|
|
105
|
+
updatedAt: string;
|
|
106
|
+
url?: string;
|
|
107
|
+
title?: string;
|
|
108
|
+
targetId?: string;
|
|
109
|
+
openerPageRef?: string;
|
|
110
|
+
}
|
|
111
|
+
export interface SurfaceDescriptor {
|
|
112
|
+
ref: string;
|
|
113
|
+
surfaceId: string;
|
|
114
|
+
pageRef: string;
|
|
115
|
+
framePath?: string[];
|
|
116
|
+
frameUrl?: string;
|
|
117
|
+
kind?: string;
|
|
118
|
+
label?: string;
|
|
119
|
+
lifecycle: TargetLifecycle;
|
|
120
|
+
availability: TargetAvailabilityState;
|
|
121
|
+
locatorCandidates: LocatorCandidate[];
|
|
122
|
+
createdAt: number;
|
|
123
|
+
pageSignature?: string;
|
|
124
|
+
lifecycleReason?: string;
|
|
125
|
+
}
|
|
126
|
+
type SurfaceDescriptorInput = Omit<SurfaceDescriptor, 'ref' | 'lifecycle' | 'availability'> & {
|
|
127
|
+
ref?: string;
|
|
128
|
+
lifecycle?: TargetLifecycle;
|
|
129
|
+
availability?: TargetAvailabilityState;
|
|
130
|
+
};
|
|
131
|
+
export interface BrowseRuntimeMetrics {
|
|
132
|
+
stagehandCalls: number;
|
|
133
|
+
deterministicActions: number;
|
|
134
|
+
fallbackActions: number;
|
|
135
|
+
successfulActions: number;
|
|
136
|
+
failedActions: number;
|
|
137
|
+
totalActionDurationMs: number;
|
|
138
|
+
successRate: number;
|
|
139
|
+
averageActionDurationMs: number;
|
|
140
|
+
}
|
|
141
|
+
export interface ProtectedExposureState {
|
|
142
|
+
pageRef: string;
|
|
143
|
+
scopeRef?: string;
|
|
144
|
+
fillRef: string;
|
|
145
|
+
intentId: string;
|
|
146
|
+
activatedAt: string;
|
|
147
|
+
reason: 'protected_fill_success' | 'protected_fill_binding_stale' | 'protected_fill_validation_failed' | 'protected_fill_unexpected_error';
|
|
148
|
+
}
|
|
149
|
+
export interface BrowseRuntimeState {
|
|
150
|
+
version: 1;
|
|
151
|
+
currentPageRef: string;
|
|
152
|
+
pages: Record<string, BrowsePageState>;
|
|
153
|
+
surfaces: Record<string, SurfaceDescriptor>;
|
|
154
|
+
targets: Record<string, TargetDescriptor>;
|
|
155
|
+
secretCatalogByHost: Record<string, SecretCatalogSnapshot>;
|
|
156
|
+
fillableForms: Record<string, PersistedFillableForm>;
|
|
157
|
+
secretIntentSnapshots: Record<string, SecretIntentSnapshot>;
|
|
158
|
+
protectedExposureByPage?: Record<string, ProtectedExposureState>;
|
|
159
|
+
counters: {
|
|
160
|
+
nextPage: number;
|
|
161
|
+
nextSurface: number;
|
|
162
|
+
nextTarget: number;
|
|
163
|
+
nextFill: number;
|
|
164
|
+
};
|
|
165
|
+
metrics: BrowseRuntimeMetrics;
|
|
166
|
+
}
|
|
167
|
+
export declare function createRuntimeState(initialPage?: Partial<Omit<BrowsePageState, 'pageRef' | 'createdAt' | 'updatedAt'>> & {
|
|
168
|
+
pageRef?: string;
|
|
169
|
+
}): BrowseRuntimeState;
|
|
170
|
+
export declare function ensureRuntimeState(session: BrowseSession): BrowseRuntimeState;
|
|
171
|
+
export declare function registerPage(session: BrowseSession, page?: Partial<Omit<BrowsePageState, 'pageRef' | 'createdAt' | 'updatedAt'>> & {
|
|
172
|
+
pageRef?: string;
|
|
173
|
+
makeCurrent?: boolean;
|
|
174
|
+
}): BrowsePageState;
|
|
175
|
+
export declare function updatePage(session: BrowseSession, pageRef: string, patch: Partial<Omit<BrowsePageState, 'pageRef' | 'createdAt' | 'updatedAt'>>): BrowsePageState;
|
|
176
|
+
export declare function setCurrentPage(session: BrowseSession, pageRef: string): void;
|
|
177
|
+
export declare function createTargetRef(session: BrowseSession): string;
|
|
178
|
+
export declare function createFillRef(session: BrowseSession): string;
|
|
179
|
+
export declare function createSurfaceRef(session: BrowseSession): string;
|
|
180
|
+
export declare function saveSurfaces(session: BrowseSession, descriptors: ReadonlyArray<SurfaceDescriptorInput>): SurfaceDescriptor[];
|
|
181
|
+
export declare function replaceSurfacesForPage(session: BrowseSession, pageRef: string, descriptors: ReadonlyArray<SurfaceDescriptorInput>, options?: {
|
|
182
|
+
preserveExistingOnEmpty?: boolean;
|
|
183
|
+
preserveExisting?: boolean;
|
|
184
|
+
}): SurfaceDescriptor[];
|
|
185
|
+
export declare function saveTargets(session: BrowseSession, descriptors: ReadonlyArray<TargetDescriptorInput>): TargetDescriptor[];
|
|
186
|
+
export declare function replaceTargetsForPage(session: BrowseSession, pageRef: string, descriptors: ReadonlyArray<TargetDescriptorInput>, options?: {
|
|
187
|
+
preserveExistingOnEmpty?: boolean;
|
|
188
|
+
preserveExisting?: boolean;
|
|
189
|
+
}): TargetDescriptor[];
|
|
190
|
+
export declare function getTarget(session: BrowseSession, targetRef: string): TargetDescriptor | null;
|
|
191
|
+
export declare function getSurface(session: BrowseSession, surfaceRef: string): SurfaceDescriptor | null;
|
|
192
|
+
export declare function saveSecretCatalog(session: BrowseSession, snapshot: SecretCatalogSnapshot): SecretCatalogSnapshot;
|
|
193
|
+
export declare function getSecretCatalog(session: BrowseSession, host: string): SecretCatalogSnapshot | null;
|
|
194
|
+
export declare function saveFillableForms(session: BrowseSession, forms: ReadonlyArray<PersistedFillableForm>): PersistedFillableForm[];
|
|
195
|
+
export declare function replaceFillableFormsForPage(session: BrowseSession, pageRef: string, forms: ReadonlyArray<Omit<PersistedFillableForm, 'fillRef'>>, options?: {
|
|
196
|
+
preserveExistingOnEmpty?: boolean;
|
|
197
|
+
}): PersistedFillableForm[];
|
|
198
|
+
export declare function getFillableForm(session: BrowseSession, fillRef: string): PersistedFillableForm | null;
|
|
199
|
+
export declare function saveSecretIntentSnapshot(session: BrowseSession, snapshot: SecretIntentSnapshot): SecretIntentSnapshot;
|
|
200
|
+
export declare function getSecretIntentSnapshot(session: BrowseSession, intentId: string): SecretIntentSnapshot | null;
|
|
201
|
+
export declare function saveProtectedExposure(session: BrowseSession, exposure: ProtectedExposureState): ProtectedExposureState;
|
|
202
|
+
export declare function getProtectedExposure(session: BrowseSession, pageRef: string): ProtectedExposureState | null;
|
|
203
|
+
export declare function clearProtectedExposure(session: BrowseSession, pageRef?: string): void;
|
|
204
|
+
export declare function updateSurface(session: BrowseSession, surfaceRef: string, patch: Partial<Omit<SurfaceDescriptor, 'ref' | 'createdAt'>>): SurfaceDescriptor | null;
|
|
205
|
+
export declare function markSurfaceLifecycle(session: BrowseSession, surfaceRef: string, lifecycle: TargetLifecycle, reason?: string): SurfaceDescriptor | null;
|
|
206
|
+
export declare function setSurfaceAvailability(session: BrowseSession, surfaceRef: string, state: TargetAvailability, reason?: string): SurfaceDescriptor | null;
|
|
207
|
+
export declare function deleteTarget(session: BrowseSession, targetRef: string): void;
|
|
208
|
+
export declare function updateTarget(session: BrowseSession, targetRef: string, patch: Partial<Omit<TargetDescriptor, 'ref' | 'createdAt'>>): TargetDescriptor | null;
|
|
209
|
+
export declare function markTargetLifecycle(session: BrowseSession, targetRef: string, lifecycle: TargetLifecycle, reason?: string): TargetDescriptor | null;
|
|
210
|
+
export declare function setTargetAvailability(session: BrowseSession, targetRef: string, state: TargetAvailability, reason?: string): TargetDescriptor | null;
|
|
211
|
+
export declare function listTargets(session: BrowseSession): TargetDescriptor[];
|
|
212
|
+
export declare function listSurfaces(session: BrowseSession): SurfaceDescriptor[];
|
|
213
|
+
export declare function clearTargets(session: BrowseSession, pageRef?: string): void;
|
|
214
|
+
export declare function incrementMetric(session: BrowseSession, metric: keyof BrowseRuntimeMetrics, by?: number): number;
|
|
215
|
+
export declare function recordActionResult(session: BrowseSession, success: boolean, durationMs: number): BrowseRuntimeMetrics;
|
|
216
|
+
export {};
|
|
217
|
+
//# sourceMappingURL=runtime-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-state.d.ts","sourceRoot":"","sources":["../src/runtime-state.ts"],"names":[],"mappings":"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"}
|