@agent-relay/browser-primitive 4.0.9 → 5.0.0

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.
Files changed (41) hide show
  1. package/dist/actions/extraction.d.ts +6 -0
  2. package/dist/actions/extraction.d.ts.map +1 -0
  3. package/dist/actions/extraction.js +91 -0
  4. package/dist/actions/extraction.js.map +1 -0
  5. package/dist/actions/interaction.d.ts +17 -0
  6. package/dist/actions/interaction.d.ts.map +1 -0
  7. package/dist/actions/interaction.js +159 -0
  8. package/dist/actions/interaction.js.map +1 -0
  9. package/dist/actions/navigation.d.ts +6 -0
  10. package/dist/actions/navigation.d.ts.map +1 -0
  11. package/dist/actions/navigation.js +37 -0
  12. package/dist/actions/navigation.js.map +1 -0
  13. package/dist/actions/script.d.ts +3 -0
  14. package/dist/actions/script.d.ts.map +1 -0
  15. package/dist/actions/script.js +35 -0
  16. package/dist/actions/script.js.map +1 -0
  17. package/dist/actions/waits.d.ts +5 -0
  18. package/dist/actions/waits.d.ts.map +1 -0
  19. package/dist/actions/waits.js +52 -0
  20. package/dist/actions/waits.js.map +1 -0
  21. package/dist/browser-client.d.ts +41 -0
  22. package/dist/browser-client.d.ts.map +1 -0
  23. package/dist/browser-client.js +435 -0
  24. package/dist/browser-client.js.map +1 -0
  25. package/dist/index.d.ts +10 -0
  26. package/dist/index.d.ts.map +1 -0
  27. package/dist/index.js +10 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/mcp-server.d.ts +95 -0
  30. package/dist/mcp-server.d.ts.map +1 -0
  31. package/dist/mcp-server.js +434 -0
  32. package/dist/mcp-server.js.map +1 -0
  33. package/dist/types.d.ts +364 -0
  34. package/dist/types.d.ts.map +1 -0
  35. package/dist/types.js +2 -0
  36. package/dist/types.js.map +1 -0
  37. package/dist/workflow-step.d.ts +99 -0
  38. package/dist/workflow-step.d.ts.map +1 -0
  39. package/dist/workflow-step.js +419 -0
  40. package/dist/workflow-step.js.map +1 -0
  41. package/package.json +2 -2
@@ -0,0 +1,6 @@
1
+ import type { AttributeOutput, AttributeParams, BrowserActionContext, HtmlOutput, HtmlParams, ScreenshotOutput, ScreenshotParams, TextOutput, TextParams } from '../types.js';
2
+ export declare function text(context: BrowserActionContext, params?: TextParams): Promise<TextOutput>;
3
+ export declare function html(context: BrowserActionContext, params?: HtmlParams): Promise<HtmlOutput>;
4
+ export declare function attribute(context: BrowserActionContext, params: AttributeParams): Promise<AttributeOutput>;
5
+ export declare function screenshot(context: BrowserActionContext, params?: ScreenshotParams): Promise<ScreenshotOutput>;
6
+ //# sourceMappingURL=extraction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extraction.d.ts","sourceRoot":"","sources":["../../src/actions/extraction.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,oBAAoB,EAEpB,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,UAAU,EACX,MAAM,aAAa,CAAC;AAMrB,wBAAsB,IAAI,CAAC,OAAO,EAAE,oBAAoB,EAAE,MAAM,GAAE,UAAe,GAAG,OAAO,CAAC,UAAU,CAAC,CA4BtG;AAED,wBAAsB,IAAI,CAAC,OAAO,EAAE,oBAAoB,EAAE,MAAM,GAAE,UAAe,GAAG,OAAO,CAAC,UAAU,CAAC,CAmBtG;AAED,wBAAsB,SAAS,CAC7B,OAAO,EAAE,oBAAoB,EAC7B,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,eAAe,CAAC,CAa1B;AAED,wBAAsB,UAAU,CAC9B,OAAO,EAAE,oBAAoB,EAC7B,MAAM,GAAE,gBAAqB,GAC5B,OAAO,CAAC,gBAAgB,CAAC,CAkC3B"}
@@ -0,0 +1,91 @@
1
+ import { Buffer } from 'node:buffer';
2
+ function selectorLabel(selector) {
3
+ return typeof selector === 'string' ? selector : selector.selector;
4
+ }
5
+ export async function text(context, params = {}) {
6
+ const selector = params.selector ?? 'body';
7
+ const locator = await context.waitForElement(selector, {
8
+ state: 'attached',
9
+ timeout: params.timeout,
10
+ });
11
+ if (params.all) {
12
+ const values = params.innerText ? await locator.allInnerTexts() : await locator.allTextContents();
13
+ return {
14
+ selector: params.selector ? selectorLabel(params.selector) : undefined,
15
+ text: values,
16
+ };
17
+ }
18
+ const value = params.innerText
19
+ ? await locator.innerText({
20
+ timeout: params.timeout ?? context.config.timeout,
21
+ })
22
+ : await locator.textContent({
23
+ timeout: params.timeout ?? context.config.timeout,
24
+ });
25
+ return {
26
+ selector: params.selector ? selectorLabel(params.selector) : undefined,
27
+ text: value,
28
+ };
29
+ }
30
+ export async function html(context, params = {}) {
31
+ if (!params.selector) {
32
+ return {
33
+ html: await context.page.content(),
34
+ };
35
+ }
36
+ const locator = await context.waitForElement(params.selector, {
37
+ state: 'attached',
38
+ timeout: params.timeout,
39
+ });
40
+ const value = await locator.evaluate((element, outerHTML) => {
41
+ return outerHTML ? element.outerHTML : element.innerHTML;
42
+ }, params.outerHTML ?? false);
43
+ return {
44
+ selector: selectorLabel(params.selector),
45
+ html: value,
46
+ };
47
+ }
48
+ export async function attribute(context, params) {
49
+ const locator = await context.waitForElement(params.selector, {
50
+ state: 'attached',
51
+ timeout: params.timeout,
52
+ });
53
+ return {
54
+ selector: selectorLabel(params.selector),
55
+ name: params.name,
56
+ value: await locator.getAttribute(params.name, {
57
+ timeout: params.timeout ?? context.config.timeout,
58
+ }),
59
+ };
60
+ }
61
+ export async function screenshot(context, params = {}) {
62
+ const type = params.type ?? 'png';
63
+ const common = {
64
+ path: params.path,
65
+ type,
66
+ quality: type === 'jpeg' ? params.quality : undefined,
67
+ timeout: params.timeout ?? context.config.timeout,
68
+ omitBackground: params.omitBackground,
69
+ animations: params.animations,
70
+ scale: params.scale,
71
+ };
72
+ const buffer = params.selector
73
+ ? await (await context.waitForElement(params.selector, {
74
+ state: 'visible',
75
+ timeout: params.timeout,
76
+ })).screenshot(common)
77
+ : await context.page.screenshot({
78
+ ...common,
79
+ fullPage: params.fullPage,
80
+ });
81
+ const bytes = Buffer.byteLength(buffer);
82
+ return {
83
+ path: params.path,
84
+ base64: params.path ? undefined : buffer.toString('base64'),
85
+ bytes,
86
+ type,
87
+ fullPage: params.fullPage,
88
+ selector: params.selector ? selectorLabel(params.selector) : undefined,
89
+ };
90
+ }
91
+ //# sourceMappingURL=extraction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extraction.js","sourceRoot":"","sources":["../../src/actions/extraction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { BrowserActionContext, CheckParams, ClickParams, FillParams, HoverParams, PressParams, SelectParams, SelectorActionOutput, SubmitParams, UploadParams } from '../types.js';
2
+ export declare function click(context: BrowserActionContext, params: ClickParams): Promise<SelectorActionOutput>;
3
+ export declare function fill(context: BrowserActionContext, params: FillParams): Promise<SelectorActionOutput>;
4
+ export declare function check(context: BrowserActionContext, params: CheckParams): Promise<SelectorActionOutput>;
5
+ export declare function uncheck(context: BrowserActionContext, params: Omit<CheckParams, 'checked'>): Promise<SelectorActionOutput>;
6
+ export declare function select(context: BrowserActionContext, params: SelectParams): Promise<SelectorActionOutput & {
7
+ values: string[];
8
+ }>;
9
+ export declare function hover(context: BrowserActionContext, params: HoverParams): Promise<SelectorActionOutput>;
10
+ export declare function press(context: BrowserActionContext, params: PressParams): Promise<SelectorActionOutput & {
11
+ key: string;
12
+ }>;
13
+ export declare function submit(context: BrowserActionContext, params?: SubmitParams): Promise<SelectorActionOutput>;
14
+ export declare function upload(context: BrowserActionContext, params: UploadParams): Promise<SelectorActionOutput & {
15
+ files: string[];
16
+ }>;
17
+ //# sourceMappingURL=interaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interaction.d.ts","sourceRoot":"","sources":["../../src/actions/interaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,WAAW,EACX,WAAW,EAEX,UAAU,EACV,WAAW,EACX,WAAW,EACX,YAAY,EACZ,oBAAoB,EACpB,YAAY,EACZ,YAAY,EAEb,MAAM,aAAa,CAAC;AAsCrB,wBAAsB,KAAK,CACzB,OAAO,EAAE,oBAAoB,EAC7B,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,oBAAoB,CAAC,CAwB/B;AAED,wBAAsB,IAAI,CAAC,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAwB3G;AAED,wBAAsB,KAAK,CACzB,OAAO,EAAE,oBAAoB,EAC7B,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,oBAAoB,CAAC,CAoB/B;AAED,wBAAsB,OAAO,CAC3B,OAAO,EAAE,oBAAoB,EAC7B,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,GACnC,OAAO,CAAC,oBAAoB,CAAC,CAK/B;AAED,wBAAsB,MAAM,CAC1B,OAAO,EAAE,oBAAoB,EAC7B,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,oBAAoB,GAAG;IAAE,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAmBtD;AAED,wBAAsB,KAAK,CACzB,OAAO,EAAE,oBAAoB,EAC7B,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,oBAAoB,CAAC,CAoB/B;AAED,wBAAsB,KAAK,CACzB,OAAO,EAAE,oBAAoB,EAC7B,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,oBAAoB,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAmBjD;AAED,wBAAsB,MAAM,CAC1B,OAAO,EAAE,oBAAoB,EAC7B,MAAM,GAAE,YAAiB,GACxB,OAAO,CAAC,oBAAoB,CAAC,CA+B/B;AAED,wBAAsB,MAAM,CAC1B,OAAO,EAAE,oBAAoB,EAC7B,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,oBAAoB,GAAG;IAAE,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAkBrD"}
@@ -0,0 +1,159 @@
1
+ function selectorLabel(selector) {
2
+ return typeof selector === 'string' ? selector : selector.selector;
3
+ }
4
+ function waitOptions(waitFor, timeout) {
5
+ if (waitFor === false) {
6
+ return undefined;
7
+ }
8
+ if (typeof waitFor === 'object') {
9
+ return {
10
+ timeout,
11
+ ...waitFor,
12
+ };
13
+ }
14
+ return { state: 'visible', timeout };
15
+ }
16
+ async function locatorForInteraction(context, selector, waitFor, timeout) {
17
+ const options = waitOptions(waitFor, timeout);
18
+ if (options) {
19
+ return context.waitForElement(selector, options);
20
+ }
21
+ return context.resolveLocator(selector);
22
+ }
23
+ export async function click(context, params) {
24
+ const locator = await locatorForInteraction(context, params.selector, params.waitFor ?? true, params.timeout);
25
+ await locator.click({
26
+ button: params.button,
27
+ clickCount: params.clickCount,
28
+ delay: params.delay,
29
+ timeout: params.timeout ?? context.config.timeout,
30
+ force: params.force,
31
+ noWaitAfter: params.noWaitAfter,
32
+ position: params.position,
33
+ modifiers: params.modifiers,
34
+ trial: params.trial,
35
+ });
36
+ return {
37
+ selector: selectorLabel(params.selector),
38
+ action: 'click',
39
+ };
40
+ }
41
+ export async function fill(context, params) {
42
+ const locator = await locatorForInteraction(context, params.selector, params.waitFor ?? true, params.timeout);
43
+ if (params.clear === false) {
44
+ await locator.pressSequentially(params.value, {
45
+ delay: 0,
46
+ timeout: params.timeout ?? context.config.timeout,
47
+ });
48
+ }
49
+ else {
50
+ await locator.fill(params.value, {
51
+ timeout: params.timeout ?? context.config.timeout,
52
+ force: params.force,
53
+ });
54
+ }
55
+ return {
56
+ selector: selectorLabel(params.selector),
57
+ action: 'fill',
58
+ };
59
+ }
60
+ export async function check(context, params) {
61
+ const locator = await locatorForInteraction(context, params.selector, params.waitFor ?? true, params.timeout);
62
+ const checked = params.checked ?? true;
63
+ await locator.setChecked(checked, {
64
+ timeout: params.timeout ?? context.config.timeout,
65
+ force: params.force,
66
+ noWaitAfter: params.noWaitAfter,
67
+ trial: params.trial,
68
+ });
69
+ return {
70
+ selector: selectorLabel(params.selector),
71
+ action: checked ? 'check' : 'uncheck',
72
+ };
73
+ }
74
+ export async function uncheck(context, params) {
75
+ return check(context, {
76
+ ...params,
77
+ checked: false,
78
+ });
79
+ }
80
+ export async function select(context, params) {
81
+ const locator = await locatorForInteraction(context, params.selector, params.waitFor ?? true, params.timeout);
82
+ const values = Array.isArray(params.values) ? params.values : [params.values];
83
+ await locator.selectOption(values, {
84
+ timeout: params.timeout ?? context.config.timeout,
85
+ force: params.force,
86
+ });
87
+ return {
88
+ selector: selectorLabel(params.selector),
89
+ action: 'select',
90
+ values,
91
+ };
92
+ }
93
+ export async function hover(context, params) {
94
+ const locator = await locatorForInteraction(context, params.selector, params.waitFor ?? true, params.timeout);
95
+ await locator.hover({
96
+ timeout: params.timeout ?? context.config.timeout,
97
+ force: params.force,
98
+ position: params.position,
99
+ modifiers: params.modifiers,
100
+ trial: params.trial,
101
+ });
102
+ return {
103
+ selector: selectorLabel(params.selector),
104
+ action: 'hover',
105
+ };
106
+ }
107
+ export async function press(context, params) {
108
+ const locator = await locatorForInteraction(context, params.selector, params.waitFor ?? true, params.timeout);
109
+ await locator.press(params.key, {
110
+ timeout: params.timeout ?? context.config.timeout,
111
+ delay: params.delay,
112
+ noWaitAfter: params.noWaitAfter,
113
+ });
114
+ return {
115
+ selector: selectorLabel(params.selector),
116
+ action: 'press',
117
+ key: params.key,
118
+ };
119
+ }
120
+ export async function submit(context, params = {}) {
121
+ const selector = params.selector ?? 'form';
122
+ const locator = await locatorForInteraction(context, selector, true, params.timeout);
123
+ const requestSubmit = () => locator.evaluate((element) => {
124
+ const form = element.tagName.toLowerCase() === 'form' ? element : element.closest('form');
125
+ if (!form) {
126
+ throw new Error('No form found for submit action');
127
+ }
128
+ form.requestSubmit();
129
+ });
130
+ if (params.waitForNavigation) {
131
+ await Promise.all([
132
+ context.page.waitForNavigation({
133
+ waitUntil: params.waitUntil ?? 'load',
134
+ timeout: params.timeout ?? context.config.timeout,
135
+ }),
136
+ requestSubmit(),
137
+ ]);
138
+ }
139
+ else {
140
+ await requestSubmit();
141
+ }
142
+ return {
143
+ selector: selectorLabel(selector),
144
+ action: 'submit',
145
+ };
146
+ }
147
+ export async function upload(context, params) {
148
+ const locator = await locatorForInteraction(context, params.selector, params.waitFor ?? true, params.timeout);
149
+ const files = Array.isArray(params.filePath) ? params.filePath : [params.filePath];
150
+ await locator.setInputFiles(files, {
151
+ timeout: params.timeout ?? context.config.timeout,
152
+ });
153
+ return {
154
+ selector: selectorLabel(params.selector),
155
+ action: 'upload',
156
+ files,
157
+ };
158
+ }
159
+ //# sourceMappingURL=interaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interaction.js","sourceRoot":"","sources":["../../src/actions/interaction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { BrowserActionContext, GotoParams, HistoryNavigationParams, NavigationOutput, ReloadParams } from '../types.js';
2
+ export declare function goto(context: BrowserActionContext, params: GotoParams): Promise<NavigationOutput>;
3
+ export declare function back(context: BrowserActionContext, params?: HistoryNavigationParams): Promise<NavigationOutput | null>;
4
+ export declare function forward(context: BrowserActionContext, params?: HistoryNavigationParams): Promise<NavigationOutput | null>;
5
+ export declare function reload(context: BrowserActionContext, params?: ReloadParams): Promise<NavigationOutput | null>;
6
+ //# sourceMappingURL=navigation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../src/actions/navigation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,UAAU,EACV,uBAAuB,EACvB,gBAAgB,EAChB,YAAY,EACb,MAAM,aAAa,CAAC;AAarB,wBAAsB,IAAI,CAAC,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAQvG;AAED,wBAAsB,IAAI,CACxB,OAAO,EAAE,oBAAoB,EAC7B,MAAM,GAAE,uBAA4B,GACnC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAOlC;AAED,wBAAsB,OAAO,CAC3B,OAAO,EAAE,oBAAoB,EAC7B,MAAM,GAAE,uBAA4B,GACnC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAOlC;AAED,wBAAsB,MAAM,CAC1B,OAAO,EAAE,oBAAoB,EAC7B,MAAM,GAAE,YAAiB,GACxB,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAOlC"}
@@ -0,0 +1,37 @@
1
+ function responseOutput(context, response) {
2
+ return {
3
+ url: context.page.url(),
4
+ status: response?.status() ?? null,
5
+ ok: response?.ok() ?? null,
6
+ };
7
+ }
8
+ export async function goto(context, params) {
9
+ const response = await context.page.goto(params.url, {
10
+ waitUntil: params.waitUntil ?? 'load',
11
+ timeout: params.timeout ?? context.config.timeout,
12
+ referer: params.referer,
13
+ });
14
+ return responseOutput(context, response);
15
+ }
16
+ export async function back(context, params = {}) {
17
+ const response = await context.page.goBack({
18
+ waitUntil: params.waitUntil ?? 'load',
19
+ timeout: params.timeout ?? context.config.timeout,
20
+ });
21
+ return response ? responseOutput(context, response) : null;
22
+ }
23
+ export async function forward(context, params = {}) {
24
+ const response = await context.page.goForward({
25
+ waitUntil: params.waitUntil ?? 'load',
26
+ timeout: params.timeout ?? context.config.timeout,
27
+ });
28
+ return response ? responseOutput(context, response) : null;
29
+ }
30
+ export async function reload(context, params = {}) {
31
+ const response = await context.page.reload({
32
+ waitUntil: params.waitUntil ?? 'load',
33
+ timeout: params.timeout ?? context.config.timeout,
34
+ });
35
+ return response ? responseOutput(context, response) : null;
36
+ }
37
+ //# sourceMappingURL=navigation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../src/actions/navigation.ts"],"names":[],"mappings":"AAQA,SAAS,cAAc,CACrB,OAA6B,EAC7B,QAAmE;IAEnE,OAAO;QACL,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE;QACvB,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,IAAI;QAClC,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,IAAI;KAC3B,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,OAA6B,EAAE,MAAkB;IAC1E,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;QACnD,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,MAAM;QACrC,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO;QACjD,OAAO,EAAE,MAAM,CAAC,OAAO;KACxB,CAAC,CAAC;IAEH,OAAO,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CACxB,OAA6B,EAC7B,SAAkC,EAAE;IAEpC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;QACzC,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,MAAM;QACrC,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO;KAClD,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,OAA6B,EAC7B,SAAkC,EAAE;IAEpC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;QAC5C,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,MAAM;QACrC,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO;KAClD,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,OAA6B,EAC7B,SAAuB,EAAE;IAEzB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;QACzC,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,MAAM;QACrC,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO;KAClD,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7D,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { BrowserActionContext, EvaluateParams } from '../types.js';
2
+ export declare function evaluate(context: BrowserActionContext, params: EvaluateParams): Promise<unknown>;
3
+ //# sourceMappingURL=script.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"script.d.ts","sourceRoot":"","sources":["../../src/actions/script.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAmB,cAAc,EAAE,MAAM,aAAa,CAAC;AAMzF,wBAAsB,QAAQ,CAAC,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CA2CtG"}
@@ -0,0 +1,35 @@
1
+ function selectorLabel(selector) {
2
+ return typeof selector === 'string' ? selector : selector.selector;
3
+ }
4
+ export async function evaluate(context, params) {
5
+ if (params.selector) {
6
+ const locator = await context.waitForElement(params.selector, {
7
+ state: 'attached',
8
+ timeout: params.timeout,
9
+ });
10
+ return locator.evaluate((element, payload) => {
11
+ const evaluated = eval(payload.script);
12
+ if (typeof evaluated === 'function') {
13
+ return evaluated(element, ...payload.args);
14
+ }
15
+ return evaluated;
16
+ }, {
17
+ script: params.script,
18
+ args: params.args ?? [],
19
+ selector: selectorLabel(params.selector),
20
+ }, {
21
+ timeout: params.timeout ?? context.config.timeout,
22
+ });
23
+ }
24
+ return context.page.evaluate((payload) => {
25
+ const evaluated = eval(payload.script);
26
+ if (typeof evaluated === 'function') {
27
+ return evaluated(...payload.args);
28
+ }
29
+ return evaluated;
30
+ }, {
31
+ script: params.script,
32
+ args: params.args ?? [],
33
+ });
34
+ }
35
+ //# sourceMappingURL=script.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"script.js","sourceRoot":"","sources":["../../src/actions/script.ts"],"names":[],"mappings":"AAEA,SAAS,aAAa,CAAC,QAAyB;IAC9C,OAAO,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACrE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAA6B,EAAE,MAAsB;IAClF,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,EAAE;YAC5D,KAAK,EAAE,UAAU;YACjB,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,QAAQ,CACrB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;YACnB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAY,CAAC;YAElD,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE,CAAC;gBACpC,OAAQ,SAA+C,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;YACpF,CAAC;YAED,OAAO,SAAS,CAAC;QACnB,CAAC,EACD;YACE,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE;YACvB,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC;SACzC,EACD;YACE,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO;SAClD,CACF,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,CAC1B,CAAC,OAAO,EAAE,EAAE;QACV,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAY,CAAC;QAElD,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE,CAAC;YACpC,OAAQ,SAA+C,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3E,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC,EACD;QACE,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE;KACxB,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { BrowserActionContext, WaitForFunctionParams, WaitForNavigationParams, WaitForSelectorParams, WaitOutput } from '../types.js';
2
+ export declare function waitForSelector(context: BrowserActionContext, params: WaitForSelectorParams): Promise<WaitOutput>;
3
+ export declare function waitForNavigation(context: BrowserActionContext, params?: WaitForNavigationParams): Promise<WaitOutput>;
4
+ export declare function waitForFunction(context: BrowserActionContext, params: WaitForFunctionParams): Promise<WaitOutput>;
5
+ //# sourceMappingURL=waits.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"waits.d.ts","sourceRoot":"","sources":["../../src/actions/waits.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,UAAU,EACX,MAAM,aAAa,CAAC;AAMrB,wBAAsB,eAAe,CACnC,OAAO,EAAE,oBAAoB,EAC7B,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,UAAU,CAAC,CAWrB;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,oBAAoB,EAC7B,MAAM,GAAE,uBAA4B,GACnC,OAAO,CAAC,UAAU,CAAC,CAkBrB;AAED,wBAAsB,eAAe,CACnC,OAAO,EAAE,oBAAoB,EAC7B,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,UAAU,CAAC,CAyBrB"}
@@ -0,0 +1,52 @@
1
+ function selectorLabel(selector) {
2
+ return typeof selector === 'string' ? selector : selector.selector;
3
+ }
4
+ export async function waitForSelector(context, params) {
5
+ await context.waitForElement(params.selector, {
6
+ state: params.state ?? 'visible',
7
+ timeout: params.timeout,
8
+ });
9
+ return {
10
+ url: context.page.url(),
11
+ selector: selectorLabel(params.selector),
12
+ state: params.state ?? 'visible',
13
+ };
14
+ }
15
+ export async function waitForNavigation(context, params = {}) {
16
+ const timeout = params.timeout ?? context.config.timeout;
17
+ const loadState = params.waitUntil === 'commit' ? 'load' : (params.waitUntil ?? 'load');
18
+ if (params.url) {
19
+ await context.page.waitForURL(params.url, {
20
+ waitUntil: params.waitUntil ?? 'load',
21
+ timeout,
22
+ });
23
+ }
24
+ else {
25
+ await context.page.waitForLoadState(loadState, {
26
+ timeout,
27
+ });
28
+ }
29
+ return {
30
+ url: context.page.url(),
31
+ };
32
+ }
33
+ export async function waitForFunction(context, params) {
34
+ const handle = await context.page.waitForFunction(({ args, script }) => {
35
+ const evaluated = eval(script);
36
+ if (typeof evaluated === 'function') {
37
+ return evaluated(...args);
38
+ }
39
+ return evaluated;
40
+ }, {
41
+ script: params.script,
42
+ args: params.args ?? [],
43
+ }, {
44
+ timeout: params.timeout ?? context.config.timeout,
45
+ polling: params.polling,
46
+ });
47
+ return {
48
+ url: context.page.url(),
49
+ value: await handle.jsonValue(),
50
+ };
51
+ }
52
+ //# sourceMappingURL=waits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"waits.js","sourceRoot":"","sources":["../../src/actions/waits.ts"],"names":[],"mappings":"AAQA,SAAS,aAAa,CAAC,QAA2C;IAChE,OAAO,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACrE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAA6B,EAC7B,MAA6B;IAE7B,MAAM,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,EAAE;QAC5C,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,SAAS;QAChC,OAAO,EAAE,MAAM,CAAC,OAAO;KACxB,CAAC,CAAC;IAEH,OAAO;QACL,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE;QACvB,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC;QACxC,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,SAAS;KACjC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAA6B,EAC7B,SAAkC,EAAE;IAEpC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;IACzD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,CAAC;IAExF,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;QACf,MAAM,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE;YACxC,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,MAAM;YACrC,OAAO;SACR,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,MAAM,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE;YAC7C,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE;KACxB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAA6B,EAC7B,MAA6B;IAE7B,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,eAAe,CAC/C,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE;QACnB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAY,CAAC;QAE1C,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE,CAAC;YACpC,OAAQ,SAA+C,CAAC,GAAG,IAAI,CAAC,CAAC;QACnE,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC,EACD;QACE,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE;KACxB,EACD;QACE,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO;QACjD,OAAO,EAAE,MAAM,CAAC,OAAO;KACxB,CACF,CAAC;IAEF,OAAO;QACL,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE;QACvB,KAAK,EAAE,MAAM,MAAM,CAAC,SAAS,EAAE;KAChC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,41 @@
1
+ import { type Page } from 'playwright';
2
+ import type { ActionResult, BrowserAction, BrowserActionName, BrowserActionOutputMap, BrowserActionParamsMap, BrowserActionRequest, BrowserConfig, BrowserSession } from './types.js';
3
+ export interface BrowserClientOptions {
4
+ config?: BrowserConfig;
5
+ }
6
+ export declare class BrowserClient {
7
+ private readonly config;
8
+ private readonly session;
9
+ private browser?;
10
+ private context?;
11
+ private page?;
12
+ private queueTail;
13
+ constructor(options?: BrowserClientOptions);
14
+ getSession(): BrowserSession;
15
+ getPage(): Page | undefined;
16
+ getCurrentUrl(): string | undefined;
17
+ launch(): Promise<BrowserSession>;
18
+ newPage(): Promise<Page>;
19
+ close(): Promise<void>;
20
+ reset(config?: BrowserConfig): Promise<BrowserSession>;
21
+ execute<Name extends BrowserActionName>(action: Name, params: BrowserActionParamsMap[Name]): Promise<ActionResult<BrowserActionOutputMap[Name]>>;
22
+ execute<Name extends BrowserActionName>(action: BrowserAction<Name>): Promise<ActionResult<BrowserActionOutputMap[Name]>>;
23
+ execute<Name extends BrowserActionName>(action: BrowserActionRequest<Name>): Promise<ActionResult<BrowserActionOutputMap[Name]>>;
24
+ enqueue<Name extends BrowserActionName>(action: Name, params: BrowserActionParamsMap[Name]): Promise<ActionResult<BrowserActionOutputMap[Name]>>;
25
+ executeMany(actions: BrowserActionRequest[]): Promise<ActionResult[]>;
26
+ executeWorkflowAction<Name extends BrowserActionName>(action: BrowserActionRequest<Name>): Promise<ActionResult<BrowserActionOutputMap[Name]>>;
27
+ private queueAction;
28
+ private normalizationError;
29
+ private executeNow;
30
+ private ensurePage;
31
+ private createPage;
32
+ private createActionContext;
33
+ private resolveLocator;
34
+ private refreshSessionState;
35
+ private createMetadata;
36
+ private captureErrorScreenshot;
37
+ private attachPageObservers;
38
+ private getBrowserType;
39
+ private normalizeAction;
40
+ }
41
+ //# sourceMappingURL=browser-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-client.d.ts","sourceRoot":"","sources":["../src/browser-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,IAAI,EAEV,MAAM,YAAY,CAAC;AAOpB,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EAEb,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,aAAa,EACb,cAAc,EAMf,MAAM,YAAY,CAAC;AAuDpB,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;IAC/C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IACzC,OAAO,CAAC,OAAO,CAAC,CAAoB;IACpC,OAAO,CAAC,OAAO,CAAC,CAAiB;IACjC,OAAO,CAAC,IAAI,CAAC,CAAO;IACpB,OAAO,CAAC,SAAS,CAAoC;gBAEzC,OAAO,GAAE,oBAAyB;IAa9C,UAAU,IAAI,cAAc;IAI5B,OAAO,IAAI,IAAI,GAAG,SAAS;IAI3B,aAAa,IAAI,MAAM,GAAG,SAAS;IAI7B,MAAM,IAAI,OAAO,CAAC,cAAc,CAAC;IA2BjC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAUxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBtB,KAAK,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IAiB5D,OAAO,CAAC,IAAI,SAAS,iBAAiB,EACpC,MAAM,EAAE,IAAI,EACZ,MAAM,EAAE,sBAAsB,CAAC,IAAI,CAAC,GACnC,OAAO,CAAC,YAAY,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;IACtD,OAAO,CAAC,IAAI,SAAS,iBAAiB,EACpC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,GAC1B,OAAO,CAAC,YAAY,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;IACtD,OAAO,CAAC,IAAI,SAAS,iBAAiB,EACpC,MAAM,EAAE,oBAAoB,CAAC,IAAI,CAAC,GACjC,OAAO,CAAC,YAAY,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;IAatD,OAAO,CAAC,IAAI,SAAS,iBAAiB,EACpC,MAAM,EAAE,IAAI,EACZ,MAAM,EAAE,sBAAsB,CAAC,IAAI,CAAC,GACnC,OAAO,CAAC,YAAY,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;IAIhD,WAAW,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAU3E,qBAAqB,CAAC,IAAI,SAAS,iBAAiB,EAClD,MAAM,EAAE,oBAAoB,CAAC,IAAI,CAAC,GACjC,OAAO,CAAC,YAAY,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;IAUtD,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,kBAAkB;YAeZ,UAAU;YA6DV,UAAU;YAYV,UAAU;IAaxB,OAAO,CAAC,mBAAmB;IAmB3B,OAAO,CAAC,cAAc;YAoBR,mBAAmB;IAUjC,OAAO,CAAC,cAAc;YAuBR,sBAAsB;IAkBpC,OAAO,CAAC,mBAAmB;IA+C3B,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,eAAe;CAuBxB"}