@framers/agentos-ext-browser-automation 0.1.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 (67) hide show
  1. package/LICENSE +98 -0
  2. package/dist/BrowserService.d.ts +125 -0
  3. package/dist/BrowserService.d.ts.map +1 -0
  4. package/dist/BrowserService.js +332 -0
  5. package/dist/BrowserService.js.map +1 -0
  6. package/dist/captcha/CaptchaSolver.d.ts +20 -0
  7. package/dist/captcha/CaptchaSolver.d.ts.map +1 -0
  8. package/dist/captcha/CaptchaSolver.js +91 -0
  9. package/dist/captcha/CaptchaSolver.js.map +1 -0
  10. package/dist/captcha/ICaptchaProvider.d.ts +17 -0
  11. package/dist/captcha/ICaptchaProvider.d.ts.map +1 -0
  12. package/dist/captcha/ICaptchaProvider.js +7 -0
  13. package/dist/captcha/ICaptchaProvider.js.map +1 -0
  14. package/dist/index.d.ts +64 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +148 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/proxy/IProxyProvider.d.ts +20 -0
  19. package/dist/proxy/IProxyProvider.d.ts.map +1 -0
  20. package/dist/proxy/IProxyProvider.js +7 -0
  21. package/dist/proxy/IProxyProvider.js.map +1 -0
  22. package/dist/proxy/ProxyManager.d.ts +21 -0
  23. package/dist/proxy/ProxyManager.d.ts.map +1 -0
  24. package/dist/proxy/ProxyManager.js +67 -0
  25. package/dist/proxy/ProxyManager.js.map +1 -0
  26. package/dist/tools/ClickTool.d.ts +38 -0
  27. package/dist/tools/ClickTool.d.ts.map +1 -0
  28. package/dist/tools/ClickTool.js +34 -0
  29. package/dist/tools/ClickTool.js.map +1 -0
  30. package/dist/tools/EvaluateTool.d.ts +30 -0
  31. package/dist/tools/EvaluateTool.d.ts.map +1 -0
  32. package/dist/tools/EvaluateTool.js +33 -0
  33. package/dist/tools/EvaluateTool.js.map +1 -0
  34. package/dist/tools/ExtractTool.d.ts +42 -0
  35. package/dist/tools/ExtractTool.d.ts.map +1 -0
  36. package/dist/tools/ExtractTool.js +40 -0
  37. package/dist/tools/ExtractTool.js.map +1 -0
  38. package/dist/tools/FillTool.d.ts +34 -0
  39. package/dist/tools/FillTool.d.ts.map +1 -0
  40. package/dist/tools/FillTool.js +34 -0
  41. package/dist/tools/FillTool.js.map +1 -0
  42. package/dist/tools/NavigateTool.d.ts +53 -0
  43. package/dist/tools/NavigateTool.d.ts.map +1 -0
  44. package/dist/tools/NavigateTool.js +48 -0
  45. package/dist/tools/NavigateTool.js.map +1 -0
  46. package/dist/tools/PageSnapshotTool.d.ts +22 -0
  47. package/dist/tools/PageSnapshotTool.d.ts.map +1 -0
  48. package/dist/tools/PageSnapshotTool.js +30 -0
  49. package/dist/tools/PageSnapshotTool.js.map +1 -0
  50. package/dist/tools/ScreenshotTool.d.ts +38 -0
  51. package/dist/tools/ScreenshotTool.d.ts.map +1 -0
  52. package/dist/tools/ScreenshotTool.js +36 -0
  53. package/dist/tools/ScreenshotTool.js.map +1 -0
  54. package/dist/tools/ScrollTool.d.ts +41 -0
  55. package/dist/tools/ScrollTool.d.ts.map +1 -0
  56. package/dist/tools/ScrollTool.js +34 -0
  57. package/dist/tools/ScrollTool.js.map +1 -0
  58. package/dist/tools/SessionTool.d.ts +36 -0
  59. package/dist/tools/SessionTool.d.ts.map +1 -0
  60. package/dist/tools/SessionTool.js +50 -0
  61. package/dist/tools/SessionTool.js.map +1 -0
  62. package/dist/tools/WaitTool.d.ts +41 -0
  63. package/dist/tools/WaitTool.d.ts.map +1 -0
  64. package/dist/tools/WaitTool.js +39 -0
  65. package/dist/tools/WaitTool.js.map +1 -0
  66. package/manifest.json +55 -0
  67. package/package.json +38 -0
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EvaluateTool = void 0;
4
+ class EvaluateTool {
5
+ constructor(browser) {
6
+ this.browser = browser;
7
+ this.id = 'browserEvaluate';
8
+ this.name = 'browserEvaluate';
9
+ this.displayName = 'Evaluate JavaScript';
10
+ this.description = 'Execute arbitrary JavaScript code in the browser page context and return the result.';
11
+ this.category = 'browser';
12
+ this.version = '0.1.0';
13
+ this.hasSideEffects = true;
14
+ this.inputSchema = {
15
+ type: 'object',
16
+ properties: {
17
+ script: { type: 'string', description: 'JavaScript code to evaluate in the page context' },
18
+ },
19
+ required: ['script'],
20
+ };
21
+ }
22
+ async execute(args) {
23
+ try {
24
+ const result = await this.browser.evaluate(args.script);
25
+ return { success: true, data: result };
26
+ }
27
+ catch (err) {
28
+ return { success: false, error: err.message };
29
+ }
30
+ }
31
+ }
32
+ exports.EvaluateTool = EvaluateTool;
33
+ //# sourceMappingURL=EvaluateTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EvaluateTool.js","sourceRoot":"","sources":["../../src/tools/EvaluateTool.ts"],"names":[],"mappings":";;;AAGA,MAAa,YAAY;IAiBvB,YAAoB,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;QAhBlC,OAAE,GAAG,iBAAiB,CAAC;QACvB,SAAI,GAAG,iBAAiB,CAAC;QACzB,gBAAW,GAAG,qBAAqB,CAAC;QACpC,gBAAW,GAAG,sFAAsF,CAAC;QACrG,aAAQ,GAAG,SAAS,CAAC;QACrB,YAAO,GAAG,OAAO,CAAC;QAClB,mBAAc,GAAG,IAAI,CAAC;QAEtB,gBAAW,GAAG;YACrB,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iDAAiD,EAAE;aAC3F;YACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;SACrB,CAAC;IAE4C,CAAC;IAE/C,KAAK,CAAC,OAAO,CAAC,IAAwB;QACpC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACxD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACzC,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;QAChD,CAAC;IACH,CAAC;CACF;AA3BD,oCA2BC"}
@@ -0,0 +1,42 @@
1
+ import type { BrowserService } from '../BrowserService.js';
2
+ export declare class ExtractTool {
3
+ private browser;
4
+ readonly id = "browserExtract";
5
+ readonly name = "browserExtract";
6
+ readonly displayName = "Extract Content";
7
+ readonly description = "Extract text, HTML, or an attribute value from a DOM element matching the given selector.";
8
+ readonly category = "browser";
9
+ readonly version = "0.1.0";
10
+ readonly hasSideEffects = false;
11
+ readonly inputSchema: {
12
+ type: "object";
13
+ properties: {
14
+ selector: {
15
+ type: string;
16
+ description: string;
17
+ };
18
+ mode: {
19
+ type: string;
20
+ enum: string[];
21
+ description: string;
22
+ default: string;
23
+ };
24
+ attribute: {
25
+ type: string;
26
+ description: string;
27
+ };
28
+ };
29
+ required: string[];
30
+ };
31
+ constructor(browser: BrowserService);
32
+ execute(args: {
33
+ selector: string;
34
+ mode?: 'text' | 'html' | 'attribute';
35
+ attribute?: string;
36
+ }): Promise<{
37
+ success: boolean;
38
+ data?: string;
39
+ error?: string;
40
+ }>;
41
+ }
42
+ //# sourceMappingURL=ExtractTool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExtractTool.d.ts","sourceRoot":"","sources":["../../src/tools/ExtractTool.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,qBAAa,WAAW;IAwBV,OAAO,CAAC,OAAO;IAvB3B,QAAQ,CAAC,EAAE,oBAAoB;IAC/B,QAAQ,CAAC,IAAI,oBAAoB;IACjC,QAAQ,CAAC,WAAW,qBAAqB;IACzC,QAAQ,CAAC,WAAW,+FAA+F;IACnH,QAAQ,CAAC,QAAQ,aAAa;IAC9B,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,cAAc,SAAS;IAEhC,QAAQ,CAAC,WAAW;;;;;;;;;;;;;;;;;;;MAalB;gBAEkB,OAAO,EAAE,cAAc;IAErC,OAAO,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAQlK"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ExtractTool = void 0;
4
+ class ExtractTool {
5
+ constructor(browser) {
6
+ this.browser = browser;
7
+ this.id = 'browserExtract';
8
+ this.name = 'browserExtract';
9
+ this.displayName = 'Extract Content';
10
+ this.description = 'Extract text, HTML, or an attribute value from a DOM element matching the given selector.';
11
+ this.category = 'browser';
12
+ this.version = '0.1.0';
13
+ this.hasSideEffects = false;
14
+ this.inputSchema = {
15
+ type: 'object',
16
+ properties: {
17
+ selector: { type: 'string', description: 'CSS selector of the element to extract from' },
18
+ mode: {
19
+ type: 'string',
20
+ enum: ['text', 'html', 'attribute'],
21
+ description: 'Extraction mode: "text" for visible text, "html" for innerHTML, "attribute" for a specific attribute',
22
+ default: 'text',
23
+ },
24
+ attribute: { type: 'string', description: 'Attribute name to extract (only used when mode is "attribute")' },
25
+ },
26
+ required: ['selector'],
27
+ };
28
+ }
29
+ async execute(args) {
30
+ try {
31
+ const content = await this.browser.extract(args.selector, args.mode ?? 'text', args.attribute);
32
+ return { success: true, data: content };
33
+ }
34
+ catch (err) {
35
+ return { success: false, error: err.message };
36
+ }
37
+ }
38
+ }
39
+ exports.ExtractTool = ExtractTool;
40
+ //# sourceMappingURL=ExtractTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExtractTool.js","sourceRoot":"","sources":["../../src/tools/ExtractTool.ts"],"names":[],"mappings":";;;AAGA,MAAa,WAAW;IAwBtB,YAAoB,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;QAvBlC,OAAE,GAAG,gBAAgB,CAAC;QACtB,SAAI,GAAG,gBAAgB,CAAC;QACxB,gBAAW,GAAG,iBAAiB,CAAC;QAChC,gBAAW,GAAG,2FAA2F,CAAC;QAC1G,aAAQ,GAAG,SAAS,CAAC;QACrB,YAAO,GAAG,OAAO,CAAC;QAClB,mBAAc,GAAG,KAAK,CAAC;QAEvB,gBAAW,GAAG;YACrB,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6CAA6C,EAAE;gBACxF,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC;oBACnC,WAAW,EAAE,sGAAsG;oBACnH,OAAO,EAAE,MAAM;iBAChB;gBACD,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gEAAgE,EAAE;aAC7G;YACD,QAAQ,EAAE,CAAC,UAAU,CAAC;SACvB,CAAC;IAE4C,CAAC;IAE/C,KAAK,CAAC,OAAO,CAAC,IAAoF;QAChG,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,IAAI,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAC/F,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAC1C,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;QAChD,CAAC;IACH,CAAC;CACF;AAlCD,kCAkCC"}
@@ -0,0 +1,34 @@
1
+ import type { BrowserService } from '../BrowserService.js';
2
+ export declare class FillTool {
3
+ private browser;
4
+ readonly id = "browserFill";
5
+ readonly name = "browserFill";
6
+ readonly displayName = "Fill Input";
7
+ readonly description = "Fill a form input field with the specified value. Clears existing content first.";
8
+ readonly category = "browser";
9
+ readonly version = "0.1.0";
10
+ readonly hasSideEffects = true;
11
+ readonly inputSchema: {
12
+ type: "object";
13
+ properties: {
14
+ selector: {
15
+ type: string;
16
+ description: string;
17
+ };
18
+ value: {
19
+ type: string;
20
+ description: string;
21
+ };
22
+ };
23
+ required: string[];
24
+ };
25
+ constructor(browser: BrowserService);
26
+ execute(args: {
27
+ selector: string;
28
+ value: string;
29
+ }): Promise<{
30
+ success: boolean;
31
+ error?: string;
32
+ }>;
33
+ }
34
+ //# sourceMappingURL=FillTool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FillTool.d.ts","sourceRoot":"","sources":["../../src/tools/FillTool.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,qBAAa,QAAQ;IAkBP,OAAO,CAAC,OAAO;IAjB3B,QAAQ,CAAC,EAAE,iBAAiB;IAC5B,QAAQ,CAAC,IAAI,iBAAiB;IAC9B,QAAQ,CAAC,WAAW,gBAAgB;IACpC,QAAQ,CAAC,WAAW,sFAAsF;IAC1G,QAAQ,CAAC,QAAQ,aAAa;IAC9B,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,cAAc,QAAQ;IAE/B,QAAQ,CAAC,WAAW;;;;;;;;;;;;;MAOlB;gBAEkB,OAAO,EAAE,cAAc;IAErC,OAAO,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAQxG"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FillTool = void 0;
4
+ class FillTool {
5
+ constructor(browser) {
6
+ this.browser = browser;
7
+ this.id = 'browserFill';
8
+ this.name = 'browserFill';
9
+ this.displayName = 'Fill Input';
10
+ this.description = 'Fill a form input field with the specified value. Clears existing content first.';
11
+ this.category = 'browser';
12
+ this.version = '0.1.0';
13
+ this.hasSideEffects = true;
14
+ this.inputSchema = {
15
+ type: 'object',
16
+ properties: {
17
+ selector: { type: 'string', description: 'CSS selector of the input element' },
18
+ value: { type: 'string', description: 'Value to fill into the input' },
19
+ },
20
+ required: ['selector', 'value'],
21
+ };
22
+ }
23
+ async execute(args) {
24
+ try {
25
+ await this.browser.fill(args.selector, args.value);
26
+ return { success: true };
27
+ }
28
+ catch (err) {
29
+ return { success: false, error: err.message };
30
+ }
31
+ }
32
+ }
33
+ exports.FillTool = FillTool;
34
+ //# sourceMappingURL=FillTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FillTool.js","sourceRoot":"","sources":["../../src/tools/FillTool.ts"],"names":[],"mappings":";;;AAGA,MAAa,QAAQ;IAkBnB,YAAoB,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;QAjBlC,OAAE,GAAG,aAAa,CAAC;QACnB,SAAI,GAAG,aAAa,CAAC;QACrB,gBAAW,GAAG,YAAY,CAAC;QAC3B,gBAAW,GAAG,kFAAkF,CAAC;QACjG,aAAQ,GAAG,SAAS,CAAC;QACrB,YAAO,GAAG,OAAO,CAAC;QAClB,mBAAc,GAAG,IAAI,CAAC;QAEtB,gBAAW,GAAG;YACrB,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mCAAmC,EAAE;gBAC9E,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8BAA8B,EAAE;aACvE;YACD,QAAQ,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC;SAChC,CAAC;IAE4C,CAAC;IAE/C,KAAK,CAAC,OAAO,CAAC,IAAyC;QACrD,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC3B,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;QAChD,CAAC;IACH,CAAC;CACF;AA5BD,4BA4BC"}
@@ -0,0 +1,53 @@
1
+ import type { BrowserService } from '../BrowserService.js';
2
+ export declare class NavigateTool {
3
+ private browser;
4
+ readonly id = "browserNavigate";
5
+ readonly name = "browserNavigate";
6
+ readonly displayName = "Navigate to URL";
7
+ readonly description = "Navigate the browser to a URL and return the page title, status code, and load time.";
8
+ readonly category = "browser";
9
+ readonly version = "0.1.0";
10
+ readonly hasSideEffects = true;
11
+ readonly inputSchema: {
12
+ type: "object";
13
+ properties: {
14
+ url: {
15
+ type: string;
16
+ description: string;
17
+ };
18
+ waitUntil: {
19
+ type: string;
20
+ enum: string[];
21
+ description: string;
22
+ default: string;
23
+ };
24
+ };
25
+ required: string[];
26
+ };
27
+ readonly outputSchema: {
28
+ type: "object";
29
+ properties: {
30
+ url: {
31
+ type: string;
32
+ };
33
+ title: {
34
+ type: string;
35
+ };
36
+ status: {
37
+ type: string;
38
+ };
39
+ loadTimeMs: {
40
+ type: string;
41
+ };
42
+ };
43
+ };
44
+ constructor(browser: BrowserService);
45
+ execute(args: {
46
+ url: string;
47
+ }): Promise<{
48
+ success: boolean;
49
+ data?: any;
50
+ error?: string;
51
+ }>;
52
+ }
53
+ //# sourceMappingURL=NavigateTool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NavigateTool.d.ts","sourceRoot":"","sources":["../../src/tools/NavigateTool.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,qBAAa,YAAY;IAiCX,OAAO,CAAC,OAAO;IAhC3B,QAAQ,CAAC,EAAE,qBAAqB;IAChC,QAAQ,CAAC,IAAI,qBAAqB;IAClC,QAAQ,CAAC,WAAW,qBAAqB;IACzC,QAAQ,CAAC,WAAW,0FAA0F;IAC9G,QAAQ,CAAC,QAAQ,aAAa;IAC9B,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,cAAc,QAAQ;IAE/B,QAAQ,CAAC,WAAW;;;;;;;;;;;;;;;MAYlB;IAEF,QAAQ,CAAC,YAAY;;;;;;;;;;;;;;;;MAQnB;gBAEkB,OAAO,EAAE,cAAc;IAErC,OAAO,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAQhG"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NavigateTool = void 0;
4
+ class NavigateTool {
5
+ constructor(browser) {
6
+ this.browser = browser;
7
+ this.id = 'browserNavigate';
8
+ this.name = 'browserNavigate';
9
+ this.displayName = 'Navigate to URL';
10
+ this.description = 'Navigate the browser to a URL and return the page title, status code, and load time.';
11
+ this.category = 'browser';
12
+ this.version = '0.1.0';
13
+ this.hasSideEffects = true;
14
+ this.inputSchema = {
15
+ type: 'object',
16
+ properties: {
17
+ url: { type: 'string', description: 'The URL to navigate to' },
18
+ waitUntil: {
19
+ type: 'string',
20
+ enum: ['domcontentloaded', 'load', 'networkidle'],
21
+ description: 'When to consider navigation complete',
22
+ default: 'domcontentloaded',
23
+ },
24
+ },
25
+ required: ['url'],
26
+ };
27
+ this.outputSchema = {
28
+ type: 'object',
29
+ properties: {
30
+ url: { type: 'string' },
31
+ title: { type: 'string' },
32
+ status: { type: 'number' },
33
+ loadTimeMs: { type: 'number' },
34
+ },
35
+ };
36
+ }
37
+ async execute(args) {
38
+ try {
39
+ const result = await this.browser.navigate(args.url);
40
+ return { success: true, data: result };
41
+ }
42
+ catch (err) {
43
+ return { success: false, error: err.message };
44
+ }
45
+ }
46
+ }
47
+ exports.NavigateTool = NavigateTool;
48
+ //# sourceMappingURL=NavigateTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NavigateTool.js","sourceRoot":"","sources":["../../src/tools/NavigateTool.ts"],"names":[],"mappings":";;;AAGA,MAAa,YAAY;IAiCvB,YAAoB,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;QAhClC,OAAE,GAAG,iBAAiB,CAAC;QACvB,SAAI,GAAG,iBAAiB,CAAC;QACzB,gBAAW,GAAG,iBAAiB,CAAC;QAChC,gBAAW,GAAG,sFAAsF,CAAC;QACrG,aAAQ,GAAG,SAAS,CAAC;QACrB,YAAO,GAAG,OAAO,CAAC;QAClB,mBAAc,GAAG,IAAI,CAAC;QAEtB,gBAAW,GAAG;YACrB,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wBAAwB,EAAE;gBAC9D,SAAS,EAAE;oBACT,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,kBAAkB,EAAE,MAAM,EAAE,aAAa,CAAC;oBACjD,WAAW,EAAE,sCAAsC;oBACnD,OAAO,EAAE,kBAAkB;iBAC5B;aACF;YACD,QAAQ,EAAE,CAAC,KAAK,CAAC;SAClB,CAAC;QAEO,iBAAY,GAAG;YACtB,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACvB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACzB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC1B,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;aAC/B;SACF,CAAC;IAE4C,CAAC;IAE/C,KAAK,CAAC,OAAO,CAAC,IAAqB;QACjC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACrD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACzC,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;QAChD,CAAC;IACH,CAAC;CACF;AA3CD,oCA2CC"}
@@ -0,0 +1,22 @@
1
+ import type { BrowserService } from '../BrowserService.js';
2
+ export declare class PageSnapshotTool {
3
+ private browser;
4
+ readonly id = "browserSnapshot";
5
+ readonly name = "browserSnapshot";
6
+ readonly displayName = "Page Snapshot";
7
+ readonly description = "Get a structured inventory of the current page \u2014 all interactive elements, forms, links, and metadata. Essential for agent-driven navigation.";
8
+ readonly category = "browser";
9
+ readonly version = "0.1.0";
10
+ readonly hasSideEffects = false;
11
+ readonly inputSchema: {
12
+ type: "object";
13
+ properties: {};
14
+ };
15
+ constructor(browser: BrowserService);
16
+ execute(): Promise<{
17
+ success: boolean;
18
+ data?: any;
19
+ error?: string;
20
+ }>;
21
+ }
22
+ //# sourceMappingURL=PageSnapshotTool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PageSnapshotTool.d.ts","sourceRoot":"","sources":["../../src/tools/PageSnapshotTool.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,qBAAa,gBAAgB;IAcf,OAAO,CAAC,OAAO;IAb3B,QAAQ,CAAC,EAAE,qBAAqB;IAChC,QAAQ,CAAC,IAAI,qBAAqB;IAClC,QAAQ,CAAC,WAAW,mBAAmB;IACvC,QAAQ,CAAC,WAAW,wJAAmJ;IACvK,QAAQ,CAAC,QAAQ,aAAa;IAC9B,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,cAAc,SAAS;IAEhC,QAAQ,CAAC,WAAW;;;MAGlB;gBAEkB,OAAO,EAAE,cAAc;IAErC,OAAO,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAQ3E"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PageSnapshotTool = void 0;
4
+ class PageSnapshotTool {
5
+ constructor(browser) {
6
+ this.browser = browser;
7
+ this.id = 'browserSnapshot';
8
+ this.name = 'browserSnapshot';
9
+ this.displayName = 'Page Snapshot';
10
+ this.description = 'Get a structured inventory of the current page — all interactive elements, forms, links, and metadata. Essential for agent-driven navigation.';
11
+ this.category = 'browser';
12
+ this.version = '0.1.0';
13
+ this.hasSideEffects = false;
14
+ this.inputSchema = {
15
+ type: 'object',
16
+ properties: {},
17
+ };
18
+ }
19
+ async execute() {
20
+ try {
21
+ const snapshot = await this.browser.snapshot();
22
+ return { success: true, data: snapshot };
23
+ }
24
+ catch (err) {
25
+ return { success: false, error: err.message };
26
+ }
27
+ }
28
+ }
29
+ exports.PageSnapshotTool = PageSnapshotTool;
30
+ //# sourceMappingURL=PageSnapshotTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PageSnapshotTool.js","sourceRoot":"","sources":["../../src/tools/PageSnapshotTool.ts"],"names":[],"mappings":";;;AAGA,MAAa,gBAAgB;IAc3B,YAAoB,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;QAblC,OAAE,GAAG,iBAAiB,CAAC;QACvB,SAAI,GAAG,iBAAiB,CAAC;QACzB,gBAAW,GAAG,eAAe,CAAC;QAC9B,gBAAW,GAAG,+IAA+I,CAAC;QAC9J,aAAQ,GAAG,SAAS,CAAC;QACrB,YAAO,GAAG,OAAO,CAAC;QAClB,mBAAc,GAAG,KAAK,CAAC;QAEvB,gBAAW,GAAG;YACrB,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE,EAAE;SACf,CAAC;IAE4C,CAAC;IAE/C,KAAK,CAAC,OAAO;QACX,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC/C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC3C,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;QAChD,CAAC;IACH,CAAC;CACF;AAxBD,4CAwBC"}
@@ -0,0 +1,38 @@
1
+ import type { BrowserService } from '../BrowserService.js';
2
+ export declare class ScreenshotTool {
3
+ private browser;
4
+ readonly id = "browserScreenshot";
5
+ readonly name = "browserScreenshot";
6
+ readonly displayName = "Take Screenshot";
7
+ readonly description = "Capture a screenshot of the current page or a specific element. Returns base64-encoded PNG.";
8
+ readonly category = "browser";
9
+ readonly version = "0.1.0";
10
+ readonly hasSideEffects = false;
11
+ readonly inputSchema: {
12
+ type: "object";
13
+ properties: {
14
+ selector: {
15
+ type: string;
16
+ description: string;
17
+ };
18
+ fullPage: {
19
+ type: string;
20
+ description: string;
21
+ default: boolean;
22
+ };
23
+ };
24
+ };
25
+ constructor(browser: BrowserService);
26
+ execute(args: {
27
+ selector?: string;
28
+ fullPage?: boolean;
29
+ }): Promise<{
30
+ success: boolean;
31
+ data?: {
32
+ base64: string;
33
+ mimeType: string;
34
+ };
35
+ error?: string;
36
+ }>;
37
+ }
38
+ //# sourceMappingURL=ScreenshotTool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScreenshotTool.d.ts","sourceRoot":"","sources":["../../src/tools/ScreenshotTool.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,qBAAa,cAAc;IAiBb,OAAO,CAAC,OAAO;IAhB3B,QAAQ,CAAC,EAAE,uBAAuB;IAClC,QAAQ,CAAC,IAAI,uBAAuB;IACpC,QAAQ,CAAC,WAAW,qBAAqB;IACzC,QAAQ,CAAC,WAAW,iGAAiG;IACrH,QAAQ,CAAC,QAAQ,aAAa;IAC9B,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,cAAc,SAAS;IAEhC,QAAQ,CAAC,WAAW;;;;;;;;;;;;;MAMlB;gBAEkB,OAAO,EAAE,cAAc;IAErC,OAAO,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAW3J"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ScreenshotTool = void 0;
4
+ class ScreenshotTool {
5
+ constructor(browser) {
6
+ this.browser = browser;
7
+ this.id = 'browserScreenshot';
8
+ this.name = 'browserScreenshot';
9
+ this.displayName = 'Take Screenshot';
10
+ this.description = 'Capture a screenshot of the current page or a specific element. Returns base64-encoded PNG.';
11
+ this.category = 'browser';
12
+ this.version = '0.1.0';
13
+ this.hasSideEffects = false;
14
+ this.inputSchema = {
15
+ type: 'object',
16
+ properties: {
17
+ selector: { type: 'string', description: 'CSS selector to screenshot a specific element (omit for full page)' },
18
+ fullPage: { type: 'boolean', description: 'Capture the full scrollable page', default: false },
19
+ },
20
+ };
21
+ }
22
+ async execute(args) {
23
+ try {
24
+ const buffer = await this.browser.screenshot(args);
25
+ return {
26
+ success: true,
27
+ data: { base64: buffer.toString('base64'), mimeType: 'image/png' },
28
+ };
29
+ }
30
+ catch (err) {
31
+ return { success: false, error: err.message };
32
+ }
33
+ }
34
+ }
35
+ exports.ScreenshotTool = ScreenshotTool;
36
+ //# sourceMappingURL=ScreenshotTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScreenshotTool.js","sourceRoot":"","sources":["../../src/tools/ScreenshotTool.ts"],"names":[],"mappings":";;;AAGA,MAAa,cAAc;IAiBzB,YAAoB,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;QAhBlC,OAAE,GAAG,mBAAmB,CAAC;QACzB,SAAI,GAAG,mBAAmB,CAAC;QAC3B,gBAAW,GAAG,iBAAiB,CAAC;QAChC,gBAAW,GAAG,6FAA6F,CAAC;QAC5G,aAAQ,GAAG,SAAS,CAAC;QACrB,YAAO,GAAG,OAAO,CAAC;QAClB,mBAAc,GAAG,KAAK,CAAC;QAEvB,gBAAW,GAAG;YACrB,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oEAAoE,EAAE;gBAC/G,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,kCAAkC,EAAE,OAAO,EAAE,KAAK,EAAE;aAC/F;SACF,CAAC;IAE4C,CAAC;IAE/C,KAAK,CAAC,OAAO,CAAC,IAA+C;QAC3D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACnD,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE;aACnE,CAAC;QACJ,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;QAChD,CAAC;IACH,CAAC;CACF;AA9BD,wCA8BC"}
@@ -0,0 +1,41 @@
1
+ import type { BrowserService } from '../BrowserService.js';
2
+ export declare class ScrollTool {
3
+ private browser;
4
+ readonly id = "browserScroll";
5
+ readonly name = "browserScroll";
6
+ readonly displayName = "Scroll Page";
7
+ readonly description = "Scroll the page up/down by a pixel amount, or scroll a specific element into view.";
8
+ readonly category = "browser";
9
+ readonly version = "0.1.0";
10
+ readonly hasSideEffects = true;
11
+ readonly inputSchema: {
12
+ type: "object";
13
+ properties: {
14
+ direction: {
15
+ type: string;
16
+ enum: string[];
17
+ description: string;
18
+ default: string;
19
+ };
20
+ selector: {
21
+ type: string;
22
+ description: string;
23
+ };
24
+ pixels: {
25
+ type: string;
26
+ description: string;
27
+ default: number;
28
+ };
29
+ };
30
+ };
31
+ constructor(browser: BrowserService);
32
+ execute(args: {
33
+ direction?: 'up' | 'down';
34
+ selector?: string;
35
+ pixels?: number;
36
+ }): Promise<{
37
+ success: boolean;
38
+ error?: string;
39
+ }>;
40
+ }
41
+ //# sourceMappingURL=ScrollTool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScrollTool.d.ts","sourceRoot":"","sources":["../../src/tools/ScrollTool.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,qBAAa,UAAU;IAkBT,OAAO,CAAC,OAAO;IAjB3B,QAAQ,CAAC,EAAE,mBAAmB;IAC9B,QAAQ,CAAC,IAAI,mBAAmB;IAChC,QAAQ,CAAC,WAAW,iBAAiB;IACrC,QAAQ,CAAC,WAAW,wFAAwF;IAC5G,QAAQ,CAAC,QAAQ,aAAa;IAC9B,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,cAAc,QAAQ;IAE/B,QAAQ,CAAC,WAAW;;;;;;;;;;;;;;;;;;;MAOlB;gBAEkB,OAAO,EAAE,cAAc;IAErC,OAAO,CAAC,IAAI,EAAE;QAAE,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAQtI"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ScrollTool = void 0;
4
+ class ScrollTool {
5
+ constructor(browser) {
6
+ this.browser = browser;
7
+ this.id = 'browserScroll';
8
+ this.name = 'browserScroll';
9
+ this.displayName = 'Scroll Page';
10
+ this.description = 'Scroll the page up/down by a pixel amount, or scroll a specific element into view.';
11
+ this.category = 'browser';
12
+ this.version = '0.1.0';
13
+ this.hasSideEffects = true;
14
+ this.inputSchema = {
15
+ type: 'object',
16
+ properties: {
17
+ direction: { type: 'string', enum: ['up', 'down'], description: 'Scroll direction', default: 'down' },
18
+ selector: { type: 'string', description: 'CSS selector of element to scroll into view (overrides direction/pixels)' },
19
+ pixels: { type: 'number', description: 'Number of pixels to scroll', default: 500 },
20
+ },
21
+ };
22
+ }
23
+ async execute(args) {
24
+ try {
25
+ await this.browser.scroll(args);
26
+ return { success: true };
27
+ }
28
+ catch (err) {
29
+ return { success: false, error: err.message };
30
+ }
31
+ }
32
+ }
33
+ exports.ScrollTool = ScrollTool;
34
+ //# sourceMappingURL=ScrollTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScrollTool.js","sourceRoot":"","sources":["../../src/tools/ScrollTool.ts"],"names":[],"mappings":";;;AAGA,MAAa,UAAU;IAkBrB,YAAoB,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;QAjBlC,OAAE,GAAG,eAAe,CAAC;QACrB,SAAI,GAAG,eAAe,CAAC;QACvB,gBAAW,GAAG,aAAa,CAAC;QAC5B,gBAAW,GAAG,oFAAoF,CAAC;QACnG,aAAQ,GAAG,SAAS,CAAC;QACrB,YAAO,GAAG,OAAO,CAAC;QAClB,mBAAc,GAAG,IAAI,CAAC;QAEtB,gBAAW,GAAG;YACrB,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,EAAE;gBACrG,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0EAA0E,EAAE;gBACrH,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4BAA4B,EAAE,OAAO,EAAE,GAAG,EAAE;aACpF;SACF,CAAC;IAE4C,CAAC;IAE/C,KAAK,CAAC,OAAO,CAAC,IAAuE;QACnF,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAChC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC3B,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;QAChD,CAAC;IACH,CAAC;CACF;AA5BD,gCA4BC"}
@@ -0,0 +1,36 @@
1
+ import type { BrowserService } from '../BrowserService.js';
2
+ export declare class SessionTool {
3
+ private browser;
4
+ readonly id = "browserSession";
5
+ readonly name = "browserSession";
6
+ readonly displayName = "Manage Session";
7
+ readonly description = "Save or restore browser login sessions (cookies + localStorage). Use \"save\" to persist the current session, \"restore\" to load a previously saved session.";
8
+ readonly category = "browser";
9
+ readonly version = "0.1.0";
10
+ readonly hasSideEffects = true;
11
+ readonly inputSchema: {
12
+ type: "object";
13
+ properties: {
14
+ action: {
15
+ type: string;
16
+ enum: string[];
17
+ description: string;
18
+ };
19
+ sessionData: {
20
+ type: string;
21
+ description: string;
22
+ };
23
+ };
24
+ required: string[];
25
+ };
26
+ constructor(browser: BrowserService);
27
+ execute(args: {
28
+ action: 'save' | 'restore';
29
+ sessionData?: any;
30
+ }): Promise<{
31
+ success: boolean;
32
+ data?: any;
33
+ error?: string;
34
+ }>;
35
+ }
36
+ //# sourceMappingURL=SessionTool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionTool.d.ts","sourceRoot":"","sources":["../../src/tools/SessionTool.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,qBAAa,WAAW;IAyBV,OAAO,CAAC,OAAO;IAxB3B,QAAQ,CAAC,EAAE,oBAAoB;IAC/B,QAAQ,CAAC,IAAI,oBAAoB;IACjC,QAAQ,CAAC,WAAW,oBAAoB;IACxC,QAAQ,CAAC,WAAW,mKAA+J;IACnL,QAAQ,CAAC,QAAQ,aAAa;IAC9B,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,cAAc,QAAQ;IAE/B,QAAQ,CAAC,WAAW;;;;;;;;;;;;;;MAclB;gBAEkB,OAAO,EAAE,cAAc;IAErC,OAAO,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,WAAW,CAAC,EAAE,GAAG,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAgBlI"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SessionTool = void 0;
4
+ class SessionTool {
5
+ constructor(browser) {
6
+ this.browser = browser;
7
+ this.id = 'browserSession';
8
+ this.name = 'browserSession';
9
+ this.displayName = 'Manage Session';
10
+ this.description = 'Save or restore browser login sessions (cookies + localStorage). Use "save" to persist the current session, "restore" to load a previously saved session.';
11
+ this.category = 'browser';
12
+ this.version = '0.1.0';
13
+ this.hasSideEffects = true;
14
+ this.inputSchema = {
15
+ type: 'object',
16
+ properties: {
17
+ action: {
18
+ type: 'string',
19
+ enum: ['save', 'restore'],
20
+ description: 'Whether to save the current session or restore a previous one',
21
+ },
22
+ sessionData: {
23
+ type: 'object',
24
+ description: 'Session state to restore (required for "restore" action)',
25
+ },
26
+ },
27
+ required: ['action'],
28
+ };
29
+ }
30
+ async execute(args) {
31
+ try {
32
+ if (args.action === 'save') {
33
+ const state = await this.browser.saveSession();
34
+ return { success: true, data: state };
35
+ }
36
+ else {
37
+ if (!args.sessionData) {
38
+ return { success: false, error: 'sessionData is required for restore action' };
39
+ }
40
+ await this.browser.restoreSession(args.sessionData);
41
+ return { success: true };
42
+ }
43
+ }
44
+ catch (err) {
45
+ return { success: false, error: err.message };
46
+ }
47
+ }
48
+ }
49
+ exports.SessionTool = SessionTool;
50
+ //# sourceMappingURL=SessionTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionTool.js","sourceRoot":"","sources":["../../src/tools/SessionTool.ts"],"names":[],"mappings":";;;AAGA,MAAa,WAAW;IAyBtB,YAAoB,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;QAxBlC,OAAE,GAAG,gBAAgB,CAAC;QACtB,SAAI,GAAG,gBAAgB,CAAC;QACxB,gBAAW,GAAG,gBAAgB,CAAC;QAC/B,gBAAW,GAAG,2JAA2J,CAAC;QAC1K,aAAQ,GAAG,SAAS,CAAC;QACrB,YAAO,GAAG,OAAO,CAAC;QAClB,mBAAc,GAAG,IAAI,CAAC;QAEtB,gBAAW,GAAG;YACrB,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;oBACzB,WAAW,EAAE,+DAA+D;iBAC7E;gBACD,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,0DAA0D;iBACxE;aACF;YACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;SACrB,CAAC;IAE4C,CAAC;IAE/C,KAAK,CAAC,OAAO,CAAC,IAAuD;QACnE,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC3B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;gBAC/C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;YACxC,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;oBACtB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,4CAA4C,EAAE,CAAC;gBACjF,CAAC;gBACD,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACpD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC3B,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;QAChD,CAAC;IACH,CAAC;CACF;AA3CD,kCA2CC"}