@agent-relay/browser-primitive 4.0.9 → 4.0.40
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/dist/actions/extraction.d.ts +6 -0
- package/dist/actions/extraction.d.ts.map +1 -0
- package/dist/actions/extraction.js +91 -0
- package/dist/actions/extraction.js.map +1 -0
- package/dist/actions/interaction.d.ts +17 -0
- package/dist/actions/interaction.d.ts.map +1 -0
- package/dist/actions/interaction.js +159 -0
- package/dist/actions/interaction.js.map +1 -0
- package/dist/actions/navigation.d.ts +6 -0
- package/dist/actions/navigation.d.ts.map +1 -0
- package/dist/actions/navigation.js +37 -0
- package/dist/actions/navigation.js.map +1 -0
- package/dist/actions/script.d.ts +3 -0
- package/dist/actions/script.d.ts.map +1 -0
- package/dist/actions/script.js +35 -0
- package/dist/actions/script.js.map +1 -0
- package/dist/actions/waits.d.ts +5 -0
- package/dist/actions/waits.d.ts.map +1 -0
- package/dist/actions/waits.js +52 -0
- package/dist/actions/waits.js.map +1 -0
- package/dist/browser-client.d.ts +41 -0
- package/dist/browser-client.d.ts.map +1 -0
- package/dist/browser-client.js +435 -0
- package/dist/browser-client.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp-server.d.ts +95 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +434 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/types.d.ts +364 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/workflow-step.d.ts +99 -0
- package/dist/workflow-step.d.ts.map +1 -0
- package/dist/workflow-step.js +419 -0
- package/dist/workflow-step.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,419 @@
|
|
|
1
|
+
import { BrowserClient } from './browser-client.js';
|
|
2
|
+
const BROWSER_INTEGRATION = 'browser';
|
|
3
|
+
const BROWSER_RUN_ACTION = 'run';
|
|
4
|
+
const EXTRACTION_ACTIONS = new Set([
|
|
5
|
+
'text',
|
|
6
|
+
'getText',
|
|
7
|
+
'html',
|
|
8
|
+
'getHTML',
|
|
9
|
+
'attribute',
|
|
10
|
+
'getAttribute',
|
|
11
|
+
'screenshot',
|
|
12
|
+
'elementScreenshot',
|
|
13
|
+
'evaluate',
|
|
14
|
+
]);
|
|
15
|
+
/**
|
|
16
|
+
* Create a Relay integration step that can be used in relay.yaml or passed to
|
|
17
|
+
* WorkflowRunner directly. Complex action/config objects are serialized into
|
|
18
|
+
* params so the existing workflow template resolver can interpolate them.
|
|
19
|
+
*/
|
|
20
|
+
export function createBrowserStep(config) {
|
|
21
|
+
validateBrowserStepConfig(config);
|
|
22
|
+
const params = {
|
|
23
|
+
actions: JSON.stringify(config.actions),
|
|
24
|
+
};
|
|
25
|
+
if (config.config !== undefined) {
|
|
26
|
+
params.config = JSON.stringify(config.config);
|
|
27
|
+
}
|
|
28
|
+
if (config.output !== undefined) {
|
|
29
|
+
params.output = JSON.stringify(config.output);
|
|
30
|
+
}
|
|
31
|
+
if (config.sessionId !== undefined) {
|
|
32
|
+
params.sessionId = config.sessionId;
|
|
33
|
+
}
|
|
34
|
+
if (config.closeSession !== undefined) {
|
|
35
|
+
params.closeSession = String(config.closeSession);
|
|
36
|
+
}
|
|
37
|
+
const step = {
|
|
38
|
+
name: config.name,
|
|
39
|
+
type: 'integration',
|
|
40
|
+
integration: BROWSER_INTEGRATION,
|
|
41
|
+
action: BROWSER_RUN_ACTION,
|
|
42
|
+
params,
|
|
43
|
+
};
|
|
44
|
+
if (config.dependsOn !== undefined)
|
|
45
|
+
step.dependsOn = config.dependsOn;
|
|
46
|
+
if (config.timeoutMs !== undefined)
|
|
47
|
+
step.timeoutMs = config.timeoutMs;
|
|
48
|
+
if (config.retries !== undefined)
|
|
49
|
+
step.retries = config.retries;
|
|
50
|
+
return step;
|
|
51
|
+
}
|
|
52
|
+
export class BrowserStepExecutor {
|
|
53
|
+
options;
|
|
54
|
+
sessions = new Map();
|
|
55
|
+
constructor(options = {}) {
|
|
56
|
+
this.options = options;
|
|
57
|
+
}
|
|
58
|
+
async executeAgentStep() {
|
|
59
|
+
throw new Error('BrowserStepExecutor only executes browser integration steps.');
|
|
60
|
+
}
|
|
61
|
+
async execute(config, context = {}) {
|
|
62
|
+
validateBrowserStepConfig(config);
|
|
63
|
+
const client = context.client ?? this.getOrCreateClient(config, context);
|
|
64
|
+
const records = [];
|
|
65
|
+
let hardFailure;
|
|
66
|
+
for (let index = 0; index < config.actions.length; index += 1) {
|
|
67
|
+
const action = config.actions[index];
|
|
68
|
+
const started = Date.now();
|
|
69
|
+
const result = await client.executeWorkflowAction(action);
|
|
70
|
+
const record = {
|
|
71
|
+
index,
|
|
72
|
+
id: action.id,
|
|
73
|
+
action: action.action,
|
|
74
|
+
success: result.success,
|
|
75
|
+
output: result.output,
|
|
76
|
+
error: result.error,
|
|
77
|
+
metadata: result.metadata,
|
|
78
|
+
};
|
|
79
|
+
records.push(record);
|
|
80
|
+
if (!result.success && !action.continueOnError) {
|
|
81
|
+
hardFailure = record;
|
|
82
|
+
break;
|
|
83
|
+
}
|
|
84
|
+
if (!record.metadata) {
|
|
85
|
+
record.metadata = {
|
|
86
|
+
action: action.action,
|
|
87
|
+
sessionId: client.getSession().id,
|
|
88
|
+
currentUrl: client.getCurrentUrl(),
|
|
89
|
+
executionTime: Date.now() - started,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
const session = client.getSession();
|
|
94
|
+
const output = formatStepOutput(config, records, session);
|
|
95
|
+
const success = hardFailure === undefined;
|
|
96
|
+
if (config.closeSession || config.config?.persistSession === false) {
|
|
97
|
+
if (context.client) {
|
|
98
|
+
await context.client.close();
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
await this.closeSession(this.resolveSessionKey(config, context));
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return {
|
|
105
|
+
success,
|
|
106
|
+
output,
|
|
107
|
+
results: records,
|
|
108
|
+
session,
|
|
109
|
+
error: hardFailure?.error,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
async executeIntegrationStep(step, resolvedParams, context = {}) {
|
|
113
|
+
if (step.integration !== BROWSER_INTEGRATION) {
|
|
114
|
+
return {
|
|
115
|
+
success: false,
|
|
116
|
+
output: `BrowserStepExecutor only handles "${BROWSER_INTEGRATION}" integration steps`,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
try {
|
|
120
|
+
const config = browserStepConfigFromWorkflowStep(step, resolvedParams);
|
|
121
|
+
const result = await this.execute(config, context);
|
|
122
|
+
return {
|
|
123
|
+
success: result.success,
|
|
124
|
+
output: result.success ? result.output : result.output || result.error || 'Browser step failed',
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
catch (error) {
|
|
128
|
+
return {
|
|
129
|
+
success: false,
|
|
130
|
+
output: error instanceof Error ? error.message : String(error),
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
async closeSession(sessionId) {
|
|
135
|
+
const client = this.sessions.get(sessionId);
|
|
136
|
+
if (!client) {
|
|
137
|
+
return false;
|
|
138
|
+
}
|
|
139
|
+
await client.close();
|
|
140
|
+
this.sessions.delete(sessionId);
|
|
141
|
+
return true;
|
|
142
|
+
}
|
|
143
|
+
async closeAll() {
|
|
144
|
+
await Promise.all([...this.sessions.values()].map((client) => client.close()));
|
|
145
|
+
this.sessions.clear();
|
|
146
|
+
}
|
|
147
|
+
listSessions() {
|
|
148
|
+
return [...this.sessions.values()].map((client) => client.getSession());
|
|
149
|
+
}
|
|
150
|
+
getOrCreateClient(config, context) {
|
|
151
|
+
const key = this.resolveSessionKey(config, context);
|
|
152
|
+
const existing = this.sessions.get(key);
|
|
153
|
+
if (existing) {
|
|
154
|
+
return existing;
|
|
155
|
+
}
|
|
156
|
+
const client = new BrowserClient({
|
|
157
|
+
...this.options,
|
|
158
|
+
config: {
|
|
159
|
+
...this.options.config,
|
|
160
|
+
...config.config,
|
|
161
|
+
},
|
|
162
|
+
});
|
|
163
|
+
this.sessions.set(key, client);
|
|
164
|
+
return client;
|
|
165
|
+
}
|
|
166
|
+
resolveSessionKey(config, context) {
|
|
167
|
+
if (context.sessionId)
|
|
168
|
+
return context.sessionId;
|
|
169
|
+
if (config.sessionId)
|
|
170
|
+
return config.sessionId;
|
|
171
|
+
const workspace = context.workspaceId ?? 'default';
|
|
172
|
+
return `${workspace}:${stableStringify(config.config ?? {})}`;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
export function browserStepConfigFromWorkflowStep(step, resolvedParams) {
|
|
176
|
+
const params = normalizeResolvedParams(resolvedParams);
|
|
177
|
+
const config = readJsonParam(params.config ?? params.browserConfig, 'config') ?? undefined;
|
|
178
|
+
const output = readJsonParam(params.output, 'output') ?? undefined;
|
|
179
|
+
const closeSession = params.closeSession === undefined ? undefined : Boolean(coerceScalar(params.closeSession));
|
|
180
|
+
const sessionId = params.sessionId === undefined ? undefined : String(params.sessionId);
|
|
181
|
+
const actions = readActions(step, params);
|
|
182
|
+
return {
|
|
183
|
+
name: step.name,
|
|
184
|
+
dependsOn: step.dependsOn,
|
|
185
|
+
config,
|
|
186
|
+
actions,
|
|
187
|
+
output,
|
|
188
|
+
sessionId,
|
|
189
|
+
closeSession,
|
|
190
|
+
timeoutMs: step.timeoutMs,
|
|
191
|
+
retries: step.retries,
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
function validateBrowserStepConfig(config) {
|
|
195
|
+
if (!config.name) {
|
|
196
|
+
throw new Error('Browser step requires a non-empty name');
|
|
197
|
+
}
|
|
198
|
+
if (!Array.isArray(config.actions) || config.actions.length === 0) {
|
|
199
|
+
throw new Error(`Browser step "${config.name}" requires at least one action`);
|
|
200
|
+
}
|
|
201
|
+
for (const [index, action] of config.actions.entries()) {
|
|
202
|
+
if (!action || typeof action !== 'object') {
|
|
203
|
+
throw new Error(`Browser step "${config.name}" action ${index} must be an object`);
|
|
204
|
+
}
|
|
205
|
+
if (!action.action || typeof action.action !== 'string') {
|
|
206
|
+
throw new Error(`Browser step "${config.name}" action ${index} requires an action name`);
|
|
207
|
+
}
|
|
208
|
+
if (action.params === undefined || typeof action.params !== 'object' || action.params === null) {
|
|
209
|
+
throw new Error(`Browser step "${config.name}" action ${index} requires params`);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
function readActions(step, params) {
|
|
214
|
+
const serializedActions = params.actions;
|
|
215
|
+
if (serializedActions !== undefined) {
|
|
216
|
+
const parsed = readJsonParam(serializedActions, 'actions');
|
|
217
|
+
if (!Array.isArray(parsed)) {
|
|
218
|
+
throw new Error('Browser step params.actions must be a JSON array');
|
|
219
|
+
}
|
|
220
|
+
return parsed;
|
|
221
|
+
}
|
|
222
|
+
if (!step.action || step.action === BROWSER_RUN_ACTION) {
|
|
223
|
+
throw new Error(`Browser step "${step.name}" requires params.actions or a browser action`);
|
|
224
|
+
}
|
|
225
|
+
const actionParams = {};
|
|
226
|
+
for (const [key, value] of Object.entries(params)) {
|
|
227
|
+
if (key === 'config' ||
|
|
228
|
+
key === 'browserConfig' ||
|
|
229
|
+
key === 'output' ||
|
|
230
|
+
key === 'sessionId' ||
|
|
231
|
+
key === 'closeSession') {
|
|
232
|
+
continue;
|
|
233
|
+
}
|
|
234
|
+
actionParams[key] = value;
|
|
235
|
+
}
|
|
236
|
+
return [
|
|
237
|
+
{
|
|
238
|
+
action: step.action,
|
|
239
|
+
params: actionParams,
|
|
240
|
+
},
|
|
241
|
+
];
|
|
242
|
+
}
|
|
243
|
+
function formatStepOutput(config, records, session) {
|
|
244
|
+
const outputConfig = config.output ?? {};
|
|
245
|
+
const mode = outputConfig.mode ?? 'last';
|
|
246
|
+
const format = outputConfig.format ?? 'json';
|
|
247
|
+
if (mode === 'none') {
|
|
248
|
+
return '';
|
|
249
|
+
}
|
|
250
|
+
const projection = buildOutputProjection(mode, config.actions, records, session, outputConfig);
|
|
251
|
+
if (format === 'text') {
|
|
252
|
+
return projectionToText(projection);
|
|
253
|
+
}
|
|
254
|
+
return JSON.stringify(projection, undefined, outputConfig.pretty ? 2 : undefined);
|
|
255
|
+
}
|
|
256
|
+
function buildOutputProjection(mode, actions, records, session, outputConfig) {
|
|
257
|
+
if (mode === 'summary') {
|
|
258
|
+
const failed = records.find((record) => !record.success);
|
|
259
|
+
return withOptionalSession({
|
|
260
|
+
success: failed === undefined,
|
|
261
|
+
actionCount: records.length,
|
|
262
|
+
currentUrl: session.currentUrl,
|
|
263
|
+
failedAction: failed
|
|
264
|
+
? {
|
|
265
|
+
index: failed.index,
|
|
266
|
+
id: failed.id,
|
|
267
|
+
action: failed.action,
|
|
268
|
+
error: failed.error,
|
|
269
|
+
}
|
|
270
|
+
: undefined,
|
|
271
|
+
}, session, outputConfig);
|
|
272
|
+
}
|
|
273
|
+
if (mode === 'all') {
|
|
274
|
+
return withOptionalSession({
|
|
275
|
+
results: records.map((record) => projectRecord(record, outputConfig.includeMetadata ?? false)),
|
|
276
|
+
}, session, outputConfig);
|
|
277
|
+
}
|
|
278
|
+
if (mode === 'captures') {
|
|
279
|
+
const captures = {};
|
|
280
|
+
for (const record of records) {
|
|
281
|
+
const action = record.action;
|
|
282
|
+
const actionConfig = actions[record.index];
|
|
283
|
+
const capture = actionConfig?.capture ?? (EXTRACTION_ACTIONS.has(action) && record.success);
|
|
284
|
+
if (!capture)
|
|
285
|
+
continue;
|
|
286
|
+
const key = actionConfig?.outputKey ?? actionConfig?.id ?? record.id ?? `action_${record.index}`;
|
|
287
|
+
captures[key] = projectRecord(record, outputConfig.includeMetadata ?? false);
|
|
288
|
+
}
|
|
289
|
+
return withOptionalSession({ captures }, session, outputConfig);
|
|
290
|
+
}
|
|
291
|
+
const last = records.at(-1);
|
|
292
|
+
return withOptionalSession(last ? projectRecord(last, outputConfig.includeMetadata ?? false) : null, session, outputConfig);
|
|
293
|
+
}
|
|
294
|
+
function projectRecord(record, includeMetadata) {
|
|
295
|
+
const projected = {
|
|
296
|
+
index: record.index,
|
|
297
|
+
action: record.action,
|
|
298
|
+
success: record.success,
|
|
299
|
+
};
|
|
300
|
+
if (record.id !== undefined)
|
|
301
|
+
projected.id = record.id;
|
|
302
|
+
if (record.output !== undefined)
|
|
303
|
+
projected.output = record.output;
|
|
304
|
+
if (record.error !== undefined)
|
|
305
|
+
projected.error = record.error;
|
|
306
|
+
if (includeMetadata && record.metadata !== undefined)
|
|
307
|
+
projected.metadata = record.metadata;
|
|
308
|
+
return projected;
|
|
309
|
+
}
|
|
310
|
+
function withOptionalSession(value, session, outputConfig) {
|
|
311
|
+
if (!outputConfig.includeSession) {
|
|
312
|
+
return value;
|
|
313
|
+
}
|
|
314
|
+
return {
|
|
315
|
+
value,
|
|
316
|
+
session: {
|
|
317
|
+
id: session.id,
|
|
318
|
+
active: session.active,
|
|
319
|
+
currentUrl: session.currentUrl,
|
|
320
|
+
startTime: session.startTime,
|
|
321
|
+
config: session.config,
|
|
322
|
+
},
|
|
323
|
+
};
|
|
324
|
+
}
|
|
325
|
+
function projectionToText(value) {
|
|
326
|
+
if (typeof value === 'string')
|
|
327
|
+
return value;
|
|
328
|
+
if (value === null || value === undefined)
|
|
329
|
+
return '';
|
|
330
|
+
if (isRecord(value)) {
|
|
331
|
+
if ('output' in value) {
|
|
332
|
+
return projectionToText(value.output);
|
|
333
|
+
}
|
|
334
|
+
if ('value' in value) {
|
|
335
|
+
return projectionToText(value.value);
|
|
336
|
+
}
|
|
337
|
+
if ('text' in value) {
|
|
338
|
+
return projectionToText(value.text);
|
|
339
|
+
}
|
|
340
|
+
if ('html' in value) {
|
|
341
|
+
return projectionToText(value.html);
|
|
342
|
+
}
|
|
343
|
+
if ('captures' in value) {
|
|
344
|
+
return JSON.stringify(value.captures);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
if (Array.isArray(value)) {
|
|
348
|
+
return value.map((entry) => projectionToText(entry)).join('\n');
|
|
349
|
+
}
|
|
350
|
+
return JSON.stringify(value);
|
|
351
|
+
}
|
|
352
|
+
function normalizeResolvedParams(params) {
|
|
353
|
+
const normalized = {};
|
|
354
|
+
for (const [key, value] of Object.entries(params)) {
|
|
355
|
+
normalized[key] = coerceScalar(value);
|
|
356
|
+
}
|
|
357
|
+
return normalized;
|
|
358
|
+
}
|
|
359
|
+
function coerceScalar(value) {
|
|
360
|
+
if (typeof value !== 'string') {
|
|
361
|
+
return value;
|
|
362
|
+
}
|
|
363
|
+
const trimmed = value.trim();
|
|
364
|
+
if (trimmed === 'true')
|
|
365
|
+
return true;
|
|
366
|
+
if (trimmed === 'false')
|
|
367
|
+
return false;
|
|
368
|
+
if (trimmed === 'null')
|
|
369
|
+
return null;
|
|
370
|
+
if (/^-?(?:0|[1-9]\d*)(?:\.\d+)?$/.test(trimmed))
|
|
371
|
+
return Number(trimmed);
|
|
372
|
+
if ((trimmed.startsWith('{') && trimmed.endsWith('}')) ||
|
|
373
|
+
(trimmed.startsWith('[') && trimmed.endsWith(']')) ||
|
|
374
|
+
(trimmed.startsWith('"') && trimmed.endsWith('"'))) {
|
|
375
|
+
try {
|
|
376
|
+
return JSON.parse(trimmed);
|
|
377
|
+
}
|
|
378
|
+
catch {
|
|
379
|
+
return value;
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
return value;
|
|
383
|
+
}
|
|
384
|
+
function readJsonParam(value, name) {
|
|
385
|
+
if (value === undefined)
|
|
386
|
+
return undefined;
|
|
387
|
+
if (typeof value !== 'string')
|
|
388
|
+
return value;
|
|
389
|
+
try {
|
|
390
|
+
return JSON.parse(value);
|
|
391
|
+
}
|
|
392
|
+
catch (error) {
|
|
393
|
+
throw new Error(`Browser step params.${name} must be valid JSON: ${error instanceof Error ? error.message : String(error)}`);
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
function stableStringify(value) {
|
|
397
|
+
if (!isRecord(value) && !Array.isArray(value)) {
|
|
398
|
+
return JSON.stringify(value);
|
|
399
|
+
}
|
|
400
|
+
return JSON.stringify(sortJson(value));
|
|
401
|
+
}
|
|
402
|
+
function sortJson(value) {
|
|
403
|
+
if (Array.isArray(value)) {
|
|
404
|
+
return value.map(sortJson);
|
|
405
|
+
}
|
|
406
|
+
if (!isRecord(value)) {
|
|
407
|
+
return value;
|
|
408
|
+
}
|
|
409
|
+
return Object.keys(value)
|
|
410
|
+
.sort()
|
|
411
|
+
.reduce((acc, key) => {
|
|
412
|
+
acc[key] = sortJson(value[key]);
|
|
413
|
+
return acc;
|
|
414
|
+
}, {});
|
|
415
|
+
}
|
|
416
|
+
function isRecord(value) {
|
|
417
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
418
|
+
}
|
|
419
|
+
//# sourceMappingURL=workflow-step.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-step.js","sourceRoot":"","sources":["../src/workflow-step.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-relay/browser-primitive",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.40",
|
|
4
4
|
"description": "Browser automation workflow primitive for Agent Relay",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"test:watch": "vitest"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@agent-relay/sdk": "4.0.
|
|
41
|
+
"@agent-relay/sdk": "4.0.40",
|
|
42
42
|
"playwright": "^1.51.1"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|