@ejazullah/browser-mcp 0.0.57 → 0.0.58

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 (61) hide show
  1. package/README.md +2 -0
  2. package/lib/auth.js +82 -1
  3. package/lib/browserContextFactory.js +205 -1
  4. package/lib/browserServerBackend.js +125 -1
  5. package/lib/config.js +266 -1
  6. package/lib/context.js +232 -1
  7. package/lib/databaseLogger.js +264 -1
  8. package/lib/extension/cdpRelay.js +346 -1
  9. package/lib/extension/extensionContextFactory.js +56 -1
  10. package/lib/extension/main.js +26 -1
  11. package/lib/fileUtils.js +32 -1
  12. package/lib/httpServer.js +39 -1
  13. package/lib/index.js +39 -1
  14. package/lib/javascript.js +49 -1
  15. package/lib/log.js +21 -1
  16. package/lib/loop/loop.js +69 -1
  17. package/lib/loop/loopClaude.js +152 -1
  18. package/lib/loop/loopOpenAI.js +143 -1
  19. package/lib/loop/main.js +60 -1
  20. package/lib/loopTools/context.js +66 -1
  21. package/lib/loopTools/main.js +49 -1
  22. package/lib/loopTools/perform.js +32 -1
  23. package/lib/loopTools/snapshot.js +29 -1
  24. package/lib/loopTools/tool.js +18 -1
  25. package/lib/manualPromise.js +111 -1
  26. package/lib/mcp/inProcessTransport.js +72 -1
  27. package/lib/mcp/server.js +93 -1
  28. package/lib/mcp/transport.js +223 -1
  29. package/lib/mongoDBLogger.js +252 -1
  30. package/lib/package.js +20 -1
  31. package/lib/program.js +113 -1
  32. package/lib/response.js +172 -1
  33. package/lib/sessionLog.js +156 -1
  34. package/lib/tab.js +266 -1
  35. package/lib/tools/cdp.js +169 -1
  36. package/lib/tools/common.js +55 -1
  37. package/lib/tools/console.js +33 -1
  38. package/lib/tools/dialogs.js +47 -1
  39. package/lib/tools/evaluate.js +53 -1
  40. package/lib/tools/extraction.js +217 -1
  41. package/lib/tools/files.js +44 -1
  42. package/lib/tools/forms.js +180 -1
  43. package/lib/tools/getext.js +99 -1
  44. package/lib/tools/install.js +53 -1
  45. package/lib/tools/interactions.js +191 -1
  46. package/lib/tools/keyboard.js +86 -1
  47. package/lib/tools/mouse.js +99 -1
  48. package/lib/tools/navigate.js +70 -1
  49. package/lib/tools/network.js +41 -1
  50. package/lib/tools/pdf.js +40 -1
  51. package/lib/tools/screenshot.js +75 -1
  52. package/lib/tools/selectors.js +233 -1
  53. package/lib/tools/snapshot.js +169 -1
  54. package/lib/tools/states.js +147 -1
  55. package/lib/tools/tabs.js +87 -1
  56. package/lib/tools/tool.js +33 -1
  57. package/lib/tools/utils.js +74 -1
  58. package/lib/tools/wait.js +56 -1
  59. package/lib/tools.js +64 -1
  60. package/lib/utils.js +26 -1
  61. package/package.json +2 -2
@@ -1 +1,47 @@
1
- function _0x36dd(_0x5a4c67,_0x118c33){_0x5a4c67=_0x5a4c67-0x191;const _0xa5db4d=_0x40d6();let _0x45027f=_0xa5db4d[_0x5a4c67];if(_0x36dd['YHcXXU']===undefined){var _0x7667d5=function(_0x3925b0){const _0x25eab3='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x20df8c='',_0x3664d5='',_0x1e235d=_0x20df8c+_0x7667d5;for(let _0x24ee92=0x0,_0x356bee,_0x2e0724,_0x27b08e=0x0;_0x2e0724=_0x3925b0['charAt'](_0x27b08e++);~_0x2e0724&&(_0x356bee=_0x24ee92%0x4?_0x356bee*0x40+_0x2e0724:_0x2e0724,_0x24ee92++%0x4)?_0x20df8c+=_0x1e235d['charCodeAt'](_0x27b08e+0xa)-0xa!==0x0?String['fromCharCode'](0xff&_0x356bee>>(-0x2*_0x24ee92&0x6)):_0x24ee92:0x0){_0x2e0724=_0x25eab3['indexOf'](_0x2e0724);}for(let _0x5b4418=0x0,_0x3d9f6f=_0x20df8c['length'];_0x5b4418<_0x3d9f6f;_0x5b4418++){_0x3664d5+='%'+('00'+_0x20df8c['charCodeAt'](_0x5b4418)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x3664d5);};_0x36dd['hDKgLY']=_0x7667d5,_0x36dd['zKkxZn']={},_0x36dd['YHcXXU']=!![];}const _0x40d6fb=_0xa5db4d[0x0],_0x36dd8a=_0x5a4c67+_0x40d6fb,_0x280d98=_0x36dd['zKkxZn'][_0x36dd8a];if(!_0x280d98){const _0x435329=function(_0x2152f2){this['uEMHCC']=_0x2152f2,this['jCXaFd']=[0x1,0x0,0x0],this['JTZNpl']=function(){return'newState';},this['SIogiB']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['HGrRhw']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x435329['prototype']['VuZMnu']=function(){const _0x3a06bc=new RegExp(this['SIogiB']+this['HGrRhw']),_0xec434d=_0x3a06bc['test'](this['JTZNpl']['toString']())?--this['jCXaFd'][0x1]:--this['jCXaFd'][0x0];return this['Kkydvf'](_0xec434d);},_0x435329['prototype']['Kkydvf']=function(_0x4c99a2){if(!Boolean(~_0x4c99a2))return _0x4c99a2;return this['VUACNs'](this['uEMHCC']);},_0x435329['prototype']['VUACNs']=function(_0x23f123){for(let _0x403bcc=0x0,_0x2682e5=this['jCXaFd']['length'];_0x403bcc<_0x2682e5;_0x403bcc++){this['jCXaFd']['push'](Math['round'](Math['random']())),_0x2682e5=this['jCXaFd']['length'];}return _0x23f123(this['jCXaFd'][0x0]);},new _0x435329(_0x36dd)['VuZMnu'](),_0x45027f=_0x36dd['hDKgLY'](_0x45027f),_0x36dd['zKkxZn'][_0x36dd8a]=_0x45027f;}else _0x45027f=_0x280d98;return _0x45027f;}const _0x3cbc46=_0x36dd;(function(_0x5676f1,_0x5ef5f4){const _0xd6cc22=_0x36dd,_0x843371=_0x5676f1();while(!![]){try{const _0x1ab812=parseInt(_0xd6cc22(0x1b3))/0x1*(parseInt(_0xd6cc22(0x1a0))/0x2)+parseInt(_0xd6cc22(0x19d))/0x3*(parseInt(_0xd6cc22(0x19b))/0x4)+-parseInt(_0xd6cc22(0x1ac))/0x5*(-parseInt(_0xd6cc22(0x1b5))/0x6)+-parseInt(_0xd6cc22(0x193))/0x7+parseInt(_0xd6cc22(0x1a9))/0x8*(-parseInt(_0xd6cc22(0x1ab))/0x9)+parseInt(_0xd6cc22(0x1b4))/0xa+-parseInt(_0xd6cc22(0x1af))/0xb*(-parseInt(_0xd6cc22(0x191))/0xc);if(_0x1ab812===_0x5ef5f4)break;else _0x843371['push'](_0x843371['shift']());}catch(_0xed016b){_0x843371['push'](_0x843371['shift']());}}}(_0x40d6,0x9a72e));function _0x40d6(){const _0x4fbeae=['mJDhANffCgC','ndaXnZa1BfHlu1DT','y2XLyxjnB2rHBfn0yxrL','DhLWzq','mtf6zKzovvq','yxbWBhK','DNr5Bhm','yM9VBgvHBG','m3z3DxHszq','nta2mtiYmg5Jq2zoqG','mZbywNzsvu0','ChjVBxb0vgv4Da','mJe2ntK2ngjcz2jNzq','ywnJzxb0','ntiWmZe5mwPhs2PpBG','C2v0sw5JBhvKzvnUyxbZAg90','D2fPDezVCKnVBxbSzxrPB24','zgLZBwLZCW','zgLHBg9N','yNjVD3nLCL9Oyw5KBgvFzgLHBg9N','tM8GzgLHBg9NihzPC2LIBgu','C3rYAw5N','mJG1mtzSCfPMEhu','Bw9KywXtDgf0zxm','mty1v3zvuhjw','Dg9tDhjPBMC','vgHLihrLEhqGB2yGDgHLihbYB21WDcbPBIbJyxnLig9MigeGChjVBxb0igrPywXVzY4','ndCWntG2DfDevxH0','wgjMAM4','kcGOlISPkYKRksSK','C2vHCMnO','zgvZDhj1y3rPDMu','v2HLDgHLCIb0BYbHy2nLChqGDgHLigrPywXVzY4','sgfUzgXLigeGzgLHBg9N','y29Yzq','B3b0Aw9UywW','mJe2mdK2oenuBM9wqW','B2jQzwn0'];_0x40d6=function(){return _0x4fbeae;};return _0x40d6();}const _0x7667d5=(function(){let _0x1e3ed2=!![];return function(_0x3dfbe9,_0x5cef78){const _0x483b5a=_0x1e3ed2?function(){const _0x52f419=_0x36dd;if(_0x5cef78){const _0x4ea27f=_0x5cef78[_0x52f419(0x1b0)](_0x3dfbe9,arguments);return _0x5cef78=null,_0x4ea27f;}}:function(){};return _0x1e3ed2=![],_0x483b5a;};}()),_0x45027f=_0x7667d5(this,function(){const _0x122719=_0x36dd,_0x44edb6={};_0x44edb6[_0x122719(0x1b1)]=_0x122719(0x1a2);const _0xf972c4=_0x44edb6;return _0x45027f[_0x122719(0x19e)]()[_0x122719(0x1a3)](_0xf972c4[_0x122719(0x1b1)])['toString']()['constructor'](_0x45027f)[_0x122719(0x1a3)](_0x122719(0x1a2));});_0x45027f();import{z}from'zod';import{defineTabTool}from'./tool.js';const handleDialog=defineTabTool({'capability':_0x3cbc46(0x1a7),'schema':{'name':_0x3cbc46(0x198),'title':_0x3cbc46(0x1a6),'description':_0x3cbc46(0x1a6),'inputSchema':z[_0x3cbc46(0x1aa)]({'accept':z[_0x3cbc46(0x1b2)]()['describe'](_0x3cbc46(0x1a5)),'promptText':z[_0x3cbc46(0x19a)]()[_0x3cbc46(0x1a8)]()['describe'](_0x3cbc46(0x19f))}),'type':_0x3cbc46(0x1a4)},'handle':async(_0x556418,_0x416a25,_0x8dda4)=>{const _0x42aa4a=_0x3cbc46,_0x3cd3fc={};_0x3cd3fc['Xbfjn']=_0x42aa4a(0x199);const _0x47a6b3=_0x3cd3fc;_0x8dda4[_0x42aa4a(0x194)]();const _0x553f2f=_0x556418[_0x42aa4a(0x19c)]()['find'](_0x1f1193=>_0x1f1193[_0x42aa4a(0x1ae)]===_0x42aa4a(0x197));if(!_0x553f2f)throw new Error(_0x47a6b3[_0x42aa4a(0x1a1)]);_0x556418[_0x42aa4a(0x1ad)](_0x553f2f),await _0x556418[_0x42aa4a(0x195)](async()=>{const _0x6245e2=_0x42aa4a;if(_0x416a25[_0x6245e2(0x192)])await _0x553f2f[_0x6245e2(0x197)][_0x6245e2(0x192)](_0x416a25[_0x6245e2(0x1b6)]);else await _0x553f2f[_0x6245e2(0x197)][_0x6245e2(0x196)]();});},'clearsModalState':_0x3cbc46(0x197)});export default[handleDialog];
1
+ /**
2
+ * Copyright (c) Microsoft Corporation.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { z } from 'zod';
17
+ import { defineTabTool } from './tool.js';
18
+ const handleDialog = defineTabTool({
19
+ capability: 'core',
20
+ schema: {
21
+ name: 'browser_handle_dialog',
22
+ title: 'Handle a dialog',
23
+ description: 'Handle a dialog',
24
+ inputSchema: z.object({
25
+ accept: z.boolean().describe('Whether to accept the dialog.'),
26
+ promptText: z.string().optional().describe('The text of the prompt in case of a prompt dialog.'),
27
+ }),
28
+ type: 'destructive',
29
+ },
30
+ handle: async (tab, params, response) => {
31
+ response.setIncludeSnapshot();
32
+ const dialogState = tab.modalStates().find(state => state.type === 'dialog');
33
+ if (!dialogState)
34
+ throw new Error('No dialog visible');
35
+ tab.clearModalState(dialogState);
36
+ await tab.waitForCompletion(async () => {
37
+ if (params.accept)
38
+ await dialogState.dialog.accept(params.promptText);
39
+ else
40
+ await dialogState.dialog.dismiss();
41
+ });
42
+ },
43
+ clearsModalState: 'dialog',
44
+ });
45
+ export default [
46
+ handleDialog,
47
+ ];
@@ -1 +1,53 @@
1
- const _0x2ab360=_0x5149;(function(_0xaca36,_0x1d77bb){const _0x4db441=_0x5149,_0x363808=_0xaca36();while(!![]){try{const _0x5194c5=-parseInt(_0x4db441(0x18d))/0x1+parseInt(_0x4db441(0x19b))/0x2+-parseInt(_0x4db441(0x185))/0x3+parseInt(_0x4db441(0x17c))/0x4+-parseInt(_0x4db441(0x184))/0x5+-parseInt(_0x4db441(0x17b))/0x6+parseInt(_0x4db441(0x193))/0x7;if(_0x5194c5===_0x1d77bb)break;else _0x363808['push'](_0x363808['shift']());}catch(_0x555acb){_0x363808['push'](_0x363808['shift']());}}}(_0x439e,0x8f676));const _0x14c940=(function(){let _0x33821b=!![];return function(_0x3a00e7,_0xbfdce1){const _0xc22101=_0x33821b?function(){const _0x1daeca=_0x5149;if(_0xbfdce1){const _0x5e2195=_0xbfdce1[_0x1daeca(0x19c)](_0x3a00e7,arguments);return _0xbfdce1=null,_0x5e2195;}}:function(){};return _0x33821b=![],_0xc22101;};}()),_0x1cd1f0=_0x14c940(this,function(){const _0x2bc017=_0x5149,_0x472413={};_0x472413[_0x2bc017(0x18a)]=_0x2bc017(0x1a6);const _0x4db973=_0x472413;return _0x1cd1f0[_0x2bc017(0x18f)]()[_0x2bc017(0x188)](_0x4db973[_0x2bc017(0x18a)])[_0x2bc017(0x18f)]()[_0x2bc017(0x1a2)](_0x1cd1f0)[_0x2bc017(0x188)](_0x4db973[_0x2bc017(0x18a)]);});_0x1cd1f0();function _0x5149(_0x46c4eb,_0x5d2778){_0x46c4eb=_0x46c4eb-0x179;const _0x3c3d27=_0x439e();let _0x1cd1f0=_0x3c3d27[_0x46c4eb];if(_0x5149['NSloMx']===undefined){var _0x14c940=function(_0x4303c3){const _0x34a6f9='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x19007f='',_0x320781='',_0x5d59cf=_0x19007f+_0x14c940;for(let _0x51b026=0x0,_0x24cf65,_0x4d64c6,_0x213bdb=0x0;_0x4d64c6=_0x4303c3['charAt'](_0x213bdb++);~_0x4d64c6&&(_0x24cf65=_0x51b026%0x4?_0x24cf65*0x40+_0x4d64c6:_0x4d64c6,_0x51b026++%0x4)?_0x19007f+=_0x5d59cf['charCodeAt'](_0x213bdb+0xa)-0xa!==0x0?String['fromCharCode'](0xff&_0x24cf65>>(-0x2*_0x51b026&0x6)):_0x51b026:0x0){_0x4d64c6=_0x34a6f9['indexOf'](_0x4d64c6);}for(let _0x2a40be=0x0,_0x2558b5=_0x19007f['length'];_0x2a40be<_0x2558b5;_0x2a40be++){_0x320781+='%'+('00'+_0x19007f['charCodeAt'](_0x2a40be)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x320781);};_0x5149['poxNIt']=_0x14c940,_0x5149['EGYkUP']={},_0x5149['NSloMx']=!![];}const _0x439e6e=_0x3c3d27[0x0],_0x5149af=_0x46c4eb+_0x439e6e,_0x166b1c=_0x5149['EGYkUP'][_0x5149af];if(!_0x166b1c){const _0x7ad430=function(_0xd0dd20){this['BPLzIZ']=_0xd0dd20,this['qItBNx']=[0x1,0x0,0x0],this['nTxoCt']=function(){return'newState';},this['fqKkkf']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['vQJmNc']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x7ad430['prototype']['Hyymat']=function(){const _0x1192f7=new RegExp(this['fqKkkf']+this['vQJmNc']),_0x41fddf=_0x1192f7['test'](this['nTxoCt']['toString']())?--this['qItBNx'][0x1]:--this['qItBNx'][0x0];return this['AsvjNo'](_0x41fddf);},_0x7ad430['prototype']['AsvjNo']=function(_0x1e442f){if(!Boolean(~_0x1e442f))return _0x1e442f;return this['srchaG'](this['BPLzIZ']);},_0x7ad430['prototype']['srchaG']=function(_0x3e4257){for(let _0x3b96bc=0x0,_0x2896e2=this['qItBNx']['length'];_0x3b96bc<_0x2896e2;_0x3b96bc++){this['qItBNx']['push'](Math['round'](Math['random']())),_0x2896e2=this['qItBNx']['length'];}return _0x3e4257(this['qItBNx'][0x0]);},new _0x7ad430(_0x5149)['Hyymat'](),_0x1cd1f0=_0x5149['poxNIt'](_0x1cd1f0),_0x5149['EGYkUP'][_0x5149af]=_0x1cd1f0;}else _0x1cd1f0=_0x166b1c;return _0x1cd1f0;}import{z}from'zod';function _0x439e(){const _0x8a731f=['rxzHBhvHDguGsMf2yvnJCMLWDcbLEhbYzxnZAw9Uig9UihbHz2uGB3iGzwXLBwvUDa','lMv2ywX1yxrLka','DhLWzq','mZa3nda5nuffEKLsCG','mJqYodaZoez1v2zqyq','CMvMtg9JyxrVCG','Aw5WDxrty2HLBwe','C2vHCMnO','x2v2ywX1yxrLrNvUy3rPB24','vhrerwO','rxzHBhvHDguGsMf2yvnJCMLWDa','yxDHAxqGCgfNzs5LDMfSDwf0zsG','mte1otaXmKr3yMPTqW','rgDkDNe','Dg9tDhjPBMC','yNjVD3nLCL9LDMfSDwf0zq','zgvZy3jPyMu','CxvVDgu','mtq1ntiYnZL4BefpBe8','zgvZDhj1y3rPDMu','Dw5KzwzPBMvK','ywrKq29Kzq','B2jQzwn0','B3b0Aw9UywW','zNvUy3rPB24','CgfNzq','mJeZnZqWogfAq3HqtW','yxbWBhK','C3rYAw5NAwz5','CMvM','ywrKuMvZDwX0','y29Yzq','BwzhAei','y29UC3rYDwn0B3i','C3rYAw5N','zgvZy3jPChrPB24','D2fPDezVCKnVBxbSzxrPB24','kcGOlISPkYKRksSK','C2v0sw5JBhvKzvnUyxbZAg90','DgL0Bgu','ndC3mJu4mhn3s2v3AG','mZi3mZu1mK9Kve9vqG','zwXLBwvUDa','rxHHy3qGDgfYz2v0igvSzw1LBNqGCMvMzxjLBMnLigzYB20GDgHLihbHz2uGC25HChnOB3q','BMfTzq','shvTyw4TCMvHzgfIBguGzwXLBwvUDcbKzxnJCMLWDgLVBIb1C2vKihrVig9IDgfPBIbWzxjTAxnZAw9UihrVigLUDgvYywn0ihDPDgGGDgHLigvSzw1LBNq'];_0x439e=function(){return _0x8a731f;};return _0x439e();}import{defineTabTool}from'./tool.js';import*as _0x520e23 from'../javascript.js';import{generateLocator}from'./utils.js';const evaluateSchema=z[_0x2ab360(0x197)]({'function':z['string']()[_0x2ab360(0x191)]('()\x20=>\x20{\x20/*\x20code\x20*/\x20}\x20or\x20(element)\x20=>\x20{\x20/*\x20code\x20*/\x20}\x20when\x20element\x20is\x20provided'),'element':z[_0x2ab360(0x1a3)]()[_0x2ab360(0x198)]()[_0x2ab360(0x191)](_0x2ab360(0x180)),'ref':z[_0x2ab360(0x1a3)]()['optional']()[_0x2ab360(0x191)](_0x2ab360(0x17e))}),_0x2da998={};_0x2da998[_0x2ab360(0x17f)]=_0x2ab360(0x190),_0x2da998[_0x2ab360(0x17a)]=_0x2ab360(0x18b),_0x2da998[_0x2ab360(0x1a4)]=_0x2ab360(0x181),_0x2da998[_0x2ab360(0x187)]=evaluateSchema,_0x2da998[_0x2ab360(0x183)]=_0x2ab360(0x194);const evaluate=defineTabTool({'capability':_0x2ab360(0x1a0),'schema':_0x2da998,'handle':async(_0x44415f,_0x3ae59c,_0x3c99eb)=>{const _0x5a4aac=_0x2ab360,_0xb7d86e={'DgJvq':_0x5a4aac(0x195),'mfGhB':function(_0x5012c4,_0x5bd0ea){return _0x5012c4(_0x5bd0ea);}};_0x3c99eb[_0x5a4aac(0x179)]();let _0x5bbe0e;if(_0x3ae59c[_0x5a4aac(0x19e)]&&_0x3ae59c[_0x5a4aac(0x17d)]){const _0x14acc1={};_0x14acc1[_0x5a4aac(0x19e)]=_0x3ae59c[_0x5a4aac(0x19e)],_0x14acc1[_0x5a4aac(0x17d)]=_0x3ae59c[_0x5a4aac(0x17d)],_0x5bbe0e=await _0x44415f[_0x5a4aac(0x186)](_0x14acc1),_0x3c99eb[_0x5a4aac(0x196)]('await\x20page.'+await _0xb7d86e[_0x5a4aac(0x1a1)](generateLocator,_0x5bbe0e)+_0x5a4aac(0x182)+_0x520e23[_0x5a4aac(0x192)](_0x3ae59c[_0x5a4aac(0x199)])+');');}else _0x3c99eb[_0x5a4aac(0x196)](_0x5a4aac(0x18c)+_0x520e23[_0x5a4aac(0x192)](_0x3ae59c[_0x5a4aac(0x199)])+');');await _0x44415f[_0x5a4aac(0x1a5)](async()=>{const _0x533578=_0x5a4aac,_0x4c7140=_0x5bbe0e??_0x44415f[_0x533578(0x19a)],_0x2717eb=await _0x4c7140[_0x533578(0x189)](_0x3ae59c[_0x533578(0x199)]);_0x3c99eb[_0x533578(0x19f)](JSON[_0x533578(0x19d)](_0x2717eb,null,0x2)||_0xb7d86e[_0x533578(0x18e)]);});}});export default[evaluate];
1
+ /**
2
+ * Copyright (c) Microsoft Corporation.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { z } from 'zod';
17
+ import { defineTabTool } from './tool.js';
18
+ import * as javascript from '../javascript.js';
19
+ import { generateLocator } from './utils.js';
20
+ const evaluateSchema = z.object({
21
+ function: z.string().describe('() => { /* code */ } or (element) => { /* code */ } when element is provided'),
22
+ element: z.string().optional().describe('Human-readable element description used to obtain permission to interact with the element'),
23
+ ref: z.string().optional().describe('Exact target element reference from the page snapshot'),
24
+ });
25
+ const evaluate = defineTabTool({
26
+ capability: 'core',
27
+ schema: {
28
+ name: 'browser_evaluate',
29
+ title: 'Evaluate JavaScript',
30
+ description: 'Evaluate JavaScript expression on page or element',
31
+ inputSchema: evaluateSchema,
32
+ type: 'destructive',
33
+ },
34
+ handle: async (tab, params, response) => {
35
+ response.setIncludeSnapshot();
36
+ let locator;
37
+ if (params.ref && params.element) {
38
+ locator = await tab.refLocator({ ref: params.ref, element: params.element });
39
+ response.addCode(`await page.${await generateLocator(locator)}.evaluate(${javascript.quote(params.function)});`);
40
+ }
41
+ else {
42
+ response.addCode(`await page.evaluate(${javascript.quote(params.function)});`);
43
+ }
44
+ await tab.waitForCompletion(async () => {
45
+ const receiver = locator ?? tab.page;
46
+ const result = await receiver._evaluateFunction(params.function);
47
+ response.addResult(JSON.stringify(result, null, 2) || 'undefined');
48
+ });
49
+ },
50
+ });
51
+ export default [
52
+ evaluate,
53
+ ];
@@ -1 +1,217 @@
1
- const _0x2b904c=_0x5fa0;(function(_0x1ac0f0,_0xa25c49){const _0x252f36=_0x5fa0,_0x527c57=_0x1ac0f0();while(!![]){try{const _0x14103e=parseInt(_0x252f36(0x16e))/0x1+parseInt(_0x252f36(0x169))/0x2+parseInt(_0x252f36(0x157))/0x3*(-parseInt(_0x252f36(0x10d))/0x4)+-parseInt(_0x252f36(0x133))/0x5*(parseInt(_0x252f36(0x105))/0x6)+parseInt(_0x252f36(0x100))/0x7+parseInt(_0x252f36(0x109))/0x8+-parseInt(_0x252f36(0x116))/0x9;if(_0x14103e===_0xa25c49)break;else _0x527c57['push'](_0x527c57['shift']());}catch(_0x462d4c){_0x527c57['push'](_0x527c57['shift']());}}}(_0x3afc,0x48d6b));const _0x45bdf1=(function(){let _0x116f1c=!![];return function(_0x5cef70,_0x53a1d1){const _0x2895f7=_0x116f1c?function(){const _0x3b8d7c=_0x5fa0;if(_0x53a1d1){const _0x43ea04=_0x53a1d1[_0x3b8d7c(0x168)](_0x5cef70,arguments);return _0x53a1d1=null,_0x43ea04;}}:function(){};return _0x116f1c=![],_0x2895f7;};}()),_0x19812b=_0x45bdf1(this,function(){const _0x137563=_0x5fa0,_0x22eaa5={};_0x22eaa5[_0x137563(0x178)]=_0x137563(0x114);const _0x56477c=_0x22eaa5;return _0x19812b['toString']()[_0x137563(0x171)](_0x56477c[_0x137563(0x178)])[_0x137563(0x130)]()[_0x137563(0x102)](_0x19812b)[_0x137563(0x171)](_0x56477c[_0x137563(0x178)]);});_0x19812b();function _0x5fa0(_0x5cc534,_0x4b53e0){_0x5cc534=_0x5cc534-0xec;const _0x43a978=_0x3afc();let _0x19812b=_0x43a978[_0x5cc534];if(_0x5fa0['xiNNFr']===undefined){var _0x45bdf1=function(_0x2d1243){const _0x98f31='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x5a18de='',_0x47939b='',_0x4b62b3=_0x5a18de+_0x45bdf1;for(let _0x1d3b8e=0x0,_0x3755e8,_0x2f9579,_0x33c722=0x0;_0x2f9579=_0x2d1243['charAt'](_0x33c722++);~_0x2f9579&&(_0x3755e8=_0x1d3b8e%0x4?_0x3755e8*0x40+_0x2f9579:_0x2f9579,_0x1d3b8e++%0x4)?_0x5a18de+=_0x4b62b3['charCodeAt'](_0x33c722+0xa)-0xa!==0x0?String['fromCharCode'](0xff&_0x3755e8>>(-0x2*_0x1d3b8e&0x6)):_0x1d3b8e:0x0){_0x2f9579=_0x98f31['indexOf'](_0x2f9579);}for(let _0x220842=0x0,_0x148370=_0x5a18de['length'];_0x220842<_0x148370;_0x220842++){_0x47939b+='%'+('00'+_0x5a18de['charCodeAt'](_0x220842)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x47939b);};_0x5fa0['uIoyEi']=_0x45bdf1,_0x5fa0['ahTQLx']={},_0x5fa0['xiNNFr']=!![];}const _0x3afc78=_0x43a978[0x0],_0x5fa022=_0x5cc534+_0x3afc78,_0x2ce96a=_0x5fa0['ahTQLx'][_0x5fa022];if(!_0x2ce96a){const _0x44e19e=function(_0xc44779){this['eWHePj']=_0xc44779,this['RBfXfH']=[0x1,0x0,0x0],this['ONJouG']=function(){return'newState';},this['bSNlQh']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['qOQzwS']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x44e19e['prototype']['VpiXDZ']=function(){const _0x463398=new RegExp(this['bSNlQh']+this['qOQzwS']),_0x2815df=_0x463398['test'](this['ONJouG']['toString']())?--this['RBfXfH'][0x1]:--this['RBfXfH'][0x0];return this['TqzsMd'](_0x2815df);},_0x44e19e['prototype']['TqzsMd']=function(_0x56f223){if(!Boolean(~_0x56f223))return _0x56f223;return this['EYKBDd'](this['eWHePj']);},_0x44e19e['prototype']['EYKBDd']=function(_0x293c1c){for(let _0x1b29c3=0x0,_0x3897a1=this['RBfXfH']['length'];_0x1b29c3<_0x3897a1;_0x1b29c3++){this['RBfXfH']['push'](Math['round'](Math['random']())),_0x3897a1=this['RBfXfH']['length'];}return _0x293c1c(this['RBfXfH'][0x0]);},new _0x44e19e(_0x5fa0)['VpiXDZ'](),_0x19812b=_0x5fa0['uIoyEi'](_0x19812b),_0x5fa0['ahTQLx'][_0x5fa022]=_0x19812b;}else _0x19812b=_0x2ce96a;return _0x19812b;}import{z}from'zod';import{defineTabTool}from'./tool.js';function _0x3afc(){const _0x4f237e=['twf4Aw11BsbUDw1IzxiGB2yGBgLUA3mGDg8GCMv0DxjU','q1ntihnLBgvJDg9YigzVCIb0AguGDgfIBgu','yxbWBhK','odCZmteYBgPAAMPp','thLvtwy','sw5JBhvKzsb0ywjSzsbOzwfKzxjZ','s3HJs0S','Aw5JBhvKzufSDa','otmXntbXrwHYv2W','y29UC3qGDgfIBgveyxrHid0GyxDHAxqGCgfNzs5LDMfSDwf0zsGOksa9pIbbCNjHEs5MCM9TkgrVy3vTzw50lNf1zxj5u2vSzwn0B3iOjW','yNjVD3nLCL9NzxrFzwXLBwvUDf9ZDhLSzq','C2vHCMnO','Dgv4DenVBNrLBNq','yNjVD3nLCL9NzxrFDgfIBgvFzgf0yq','sevbrevs','BMf0DxjHBeHLAwDODa','y29Yzq','zNjVBq','zMzMrfy','B2jQzwn0','u3bLy2LMAwmGq1ntihbYB3bLCNrPzxmGDg8Gz2v0icHPzIbUB3qGChjVDMLKzwqSigDLDhmGy29TBw9Uig9UzxmP','AhjLzG','BgvUz3rO','yM9YzgvY','z2v0uhjVCgvYDhLwywX1zq','DgfIBgu','sw5JBhvKzsbHBhqGDgv4Da','CxvLCNLtzwXLy3rVCKfSBa','rMfPBgvKihrVigv4DhjHy3qGDgfIBguGzgf0ytOG','zgvZy3jPyMu','zxzHBhvHDgu','B3bHy2L0Eq','C3jJ','BgLTAxq','BwfW','C29Tzq','y29UC3qGC3r5BgvZid0GyxDHAxqGCgfNzs5LDMfSDwf0zsGOksa9pIb7ignVBNn0igvSid0Gzg9JDw1LBNqUCxvLCNLtzwXLy3rVCIGN','AM9PBG','sw5JBhvKzsbSAw5RihrLEhq','tg1fB0C','mZK2ndu2mKXQzhbYta','BMf0DxjHBfDPzhrO','y29UC3rYDwn0B3i','yNjVD3nLCL9NzxrFywXSx2XPBMTZ','Aw5KzxG','mtH2AhHXAfy','Dgv4Da','jYKUCxvLCNLtzwXLy3rVCKfSBcGNDhiNksKUBwfWkhjVDYa9pIbbCNjHEs5MCM9TkhjVDY5JzwXSCYKUBwfWkgnLBgWGpt4Gy2vSBc50zxH0q29UDgvUDcKPktS','CgfNzq','mtaZoti3mMnqCMPlCW','CxvLCNLtzwXLy3rVCG','rwXLBwvUDcbZDhLSzxm6cG','ihWG','nZi0mtaWruXzqLrz','ywX0','ywrKq29Kzq','BgvMDa','DhjPBq','Aw5JBhvKzuHYzwy','y29SB3i','kcGOlISPkYKRksSK','z0T5B1m','mZiZmde5ovnyExz4BW','rMfPBgvKihrVigDLDcbSAw5RCZOG','ywrKuMvZDwX0','CMvHze9UBhK','DMLZseO','rMfPBgvKihrVigDLDcbLBgvTzw50ihn0EwXLCZOG','twf4Aw11BsbUDw1IzxiGB2yGCM93CYb0BYbLEhrYywn0','igLTywDLCYaOC2HVD2LUzYbMAxjZDca','z2v0qxr0CMLIDxrL','DNzIswS','rxH0CMfJDcbKyxrHigzYB20Gsfrntcb0ywjSzxm','r2v0igfSBcbSAw5RCW','igXPBMTZicHZAg93Aw5NigzPCNn0ia','AgvPz2H0','BM9Uzq','y29UC3qGBgLUA3mGpsbHD2fPDcbWywDLlMv2ywX1yxrLkcGPid0+iefYCMf5lMzYB20Ozg9JDw1LBNqUCxvLCNLtzwXLy3rVCKfSBcGNyvTOCMvMxsCPks5TyxaOBgLUAYa9pIaOEYb0zxH0oIbSAw5RlNrLEhrdB250zw50lcbOCMvMoIbSAw5RlMHYzwyGFsKPktS','zvnHBfC','twf4Aw11BsbUDw1IzxiGB2yGAw1Hz2vZihrVihjLDhvYBG','C2vSzwn0B3i','y29UC3qGAw1Hz2vZid0GyxDHAxqGCgfNzs5LDMfSDwf0zsGOksa9pIbbCNjHEs5MCM9TkgrVy3vTzw50lNf1zxj5u2vSzwn0B3jbBgWOj2LTzYCPks5TyxaOAw1Nid0+icH7ihnYyZOGAw1NlNnYyYWGywX0oIbPBwCUywX0ih0PksK7','zgvMyxvSDa','yM9VBgvHBG','jYK7ihjLDhvYBIb3Aw5KB3CUz2v0q29TChv0zwrtDhLSzsHLBcK7ih0PoW','r2v0ignVBxb1DgvKientuYbZDhLSzxmGzM9YigfUigvSzw1LBNq','rxH0CMfJDcbHBgWGAw1Hz2vZigfUzcb0AgvPCIbZB3vYy2vZigzYB20GDgHLign1CNjLBNqGCgfNzq','rxH0CMfJDcb0ywjSzsbKyxrH','Dg9tDhjPBMC','yxzvv1e','z2v0q29TChv0zwrtDhLSzq','mZq0ndu1q09pqvPI','vgfIBguGzgf0ysaO','q1ntihnLBgvJDg9YigzVCIb0AguGzwXLBwvUDa','DKv1wxC','EKfxB0S','ihjVD3mPoGO','Be5IC2y','yxv0BW','BNvTyMvY','yxjYyxK','B3b0Aw9UywW','C2z4vfC','Dg9W','uK9xia','DgL0Bgu','yNjVD3nLCL9NzxrFywXSx2LTywDLCW','qLLpv1O','r2v0igvSzw1LBNqGC3r5BgvZ','CgfKzgLUzW','Bwf4uM93CW','D2LKDgG','DgjRtfO','ywrKrxjYB3i','Cg9ZAxrPB24','zw50CMLLCW','AeryveC','rMfPBgvKihrVigDLDcbPBwfNzxm6ia','rM91BMqG','zM9YrwfJAa','ChvZAa','zM9UDc1ZAxPL','rxH0CMfJDcbHBgWGBgLUA3mGzNjVBsb0AguGy3vYCMvUDcbWywDL','r2v0igfSBcbPBwfNzxm','sw5JBhvKzsbOCMvMigf0DhjPyNv0zq','Aw5JBhvKzuHLywrLCNm','yvTOCMvMxq','nLzHrKPvqq','C3rYAw5N','BwfYz2LU','quL5tfe','zgLZCgXHEq','yMfJA2DYB3vUzc1JB2XVCG','DgqSihrO','zM9UDc1Myw1PBhK','C2XPy2u','ChjVCgvYDgLLCW','tM8GzwXLBwvUDcbMB3vUzcb3AxrOihnLBgvJDg9Yici','BxftyKO','Aw5JBhvKzvnYyW','DMLZAwjPBgL0Eq','tM8GDgfIBguGzM91BMqGD2L0AcbZzwXLy3rVCIaI'];_0x3afc=function(){return _0x4f237e;};return _0x3afc();}const getAllLinks=defineTabTool({'capability':'core','schema':{'name':_0x2b904c(0x103),'title':_0x2b904c(0x121),'description':_0x2b904c(0x152),'inputSchema':z[_0x2b904c(0x179)]({'includeText':z[_0x2b904c(0x12b)]()[_0x2b904c(0x13d)]()['default'](!![])[_0x2b904c(0xf5)](_0x2b904c(0xfe)),'includeHref':z[_0x2b904c(0x12b)]()['optional']()[_0x2b904c(0x12a)](!![])[_0x2b904c(0xf5)](_0x2b904c(0x154)),'limit':z[_0x2b904c(0x13b)]()[_0x2b904c(0x13d)]()[_0x2b904c(0x12a)](0x14)[_0x2b904c(0xf5)](_0x2b904c(0x166))}),'type':_0x2b904c(0x119)},'handle':async(_0x9d81e6,_0x3ff2f5,_0xf5c3f3)=>{const _0x3cac29=_0x2b904c,_0x352f4a={};_0x352f4a[_0x3cac29(0x139)]=_0x3cac29(0x156);const _0x28e3fe=_0x352f4a;try{const _0x1a9d32=await _0x9d81e6[_0x3cac29(0x108)][_0x3cac29(0xf6)](()=>{const _0x26ca31=_0x3cac29,_0x470023=Array[_0x26ca31(0x177)](document['querySelectorAll'](_0x28e3fe[_0x26ca31(0x139)]));return _0x470023[_0x26ca31(0xfa)]((_0x4a8e4c,_0x3c1d01)=>({'index':_0x3c1d01,'text':_0x4a8e4c['textContent']?.[_0x26ca31(0x111)]()||'','href':_0x4a8e4c[_0x26ca31(0x11e)](_0x26ca31(0xed))||'','title':_0x4a8e4c[_0x26ca31(0x11e)](_0x26ca31(0x141))||''}));}),_0x13bf72=_0x1a9d32[_0x3cac29(0x15f)](0x0,_0x3ff2f5[_0x3cac29(0xf9)]),_0x33f365=[];_0x13bf72[_0x3cac29(0x14f)](_0x593e68=>{const _0x3decde=_0x3cac29,_0x256267=['['+_0x593e68['index']+']'];_0x3ff2f5['includeText']&&_0x593e68['text']&&_0x256267[_0x3decde(0x150)]('\x22'+_0x593e68[_0x3decde(0x106)]+'\x22'),_0x3ff2f5[_0x3decde(0x112)]&&_0x256267[_0x3decde(0x150)]('→\x20'+_0x593e68[_0x3decde(0xed)]),_0x593e68[_0x3decde(0x141)]&&_0x256267[_0x3decde(0x150)]('('+_0x593e68[_0x3decde(0x141)]+')'),_0x33f365[_0x3decde(0x150)](_0x256267[_0x3decde(0xfd)]('\x20'));}),_0xf5c3f3[_0x3cac29(0x10f)](_0x3cac29(0x125)),_0xf5c3f3[_0x3cac29(0x118)](_0x3cac29(0x14e)+_0x1a9d32[_0x3cac29(0xee)]+_0x3cac29(0x122)+_0x13bf72[_0x3cac29(0xee)]+'):\x0a'+_0x33f365[_0x3cac29(0xfd)]('\x0a'));}catch(_0x44ccb1){_0xf5c3f3[_0x3cac29(0x149)](_0x3cac29(0x117)+_0x44ccb1);}}}),getAllImages=defineTabTool({'capability':_0x2b904c(0x176),'schema':{'name':_0x2b904c(0x142),'title':_0x2b904c(0x153),'description':_0x2b904c(0x12e),'inputSchema':z[_0x2b904c(0x179)]({'includeAlt':z[_0x2b904c(0x12b)]()[_0x2b904c(0x13d)]()['default'](!![])[_0x2b904c(0xf5)](_0x2b904c(0xf2)),'includeSrc':z[_0x2b904c(0x12b)]()['optional']()[_0x2b904c(0x12a)](!![])[_0x2b904c(0xf5)]('Include\x20src\x20attribute'),'limit':z[_0x2b904c(0x13b)]()[_0x2b904c(0x13d)]()[_0x2b904c(0x12a)](0x14)['describe'](_0x2b904c(0x127))}),'type':_0x2b904c(0x119)},'handle':async(_0x56a2b6,_0x1d6af6,_0x180289)=>{const _0x38476a=_0x2b904c,_0x223075={};_0x223075[_0x38476a(0x16a)]='img';const _0xebcd02=_0x223075;try{const _0x132b01=await _0x56a2b6[_0x38476a(0x108)][_0x38476a(0xf6)](()=>{const _0x54a302=_0x38476a,_0x29a2d9=Array[_0x54a302(0x177)](document[_0x54a302(0xf3)](_0xebcd02[_0x54a302(0x16a)]));return _0x29a2d9[_0x54a302(0xfa)]((_0x4e12df,_0x46cbcf)=>({'index':_0x46cbcf,'src':_0x4e12df[_0x54a302(0xf8)]||'','alt':_0x4e12df[_0x54a302(0x10e)]||'','title':_0x4e12df[_0x54a302(0x141)]||'','width':_0x4e12df[_0x54a302(0x101)]||_0x4e12df[_0x54a302(0x147)],'height':_0x4e12df[_0x54a302(0x175)]||_0x4e12df[_0x54a302(0x123)]}));}),_0x3f1c56=_0x132b01[_0x38476a(0x15f)](0x0,_0x1d6af6[_0x38476a(0xf9)]),_0x251e33=[];_0x3f1c56['forEach'](_0x4b40f8=>{const _0x51ec74=_0x38476a,_0x389ba3=['['+_0x4b40f8[_0x51ec74(0x104)]+']'];_0x1d6af6[_0x51ec74(0x16d)]&&_0x4b40f8[_0x51ec74(0x10e)]&&_0x389ba3[_0x51ec74(0x150)]('\x22'+_0x4b40f8[_0x51ec74(0x10e)]+'\x22'),_0x1d6af6[_0x51ec74(0x163)]&&_0x389ba3[_0x51ec74(0x150)]('→\x20'+_0x4b40f8['src']),_0x4b40f8[_0x51ec74(0x147)]&&_0x4b40f8[_0x51ec74(0x123)]&&_0x389ba3[_0x51ec74(0x150)]('('+_0x4b40f8[_0x51ec74(0x147)]+'x'+_0x4b40f8[_0x51ec74(0x123)]+')'),_0x251e33['push'](_0x389ba3[_0x51ec74(0xfd)]('\x20'));}),_0x180289[_0x38476a(0x10f)](_0x38476a(0x129)),_0x180289[_0x38476a(0x118)](_0x38476a(0x14e)+_0x132b01[_0x38476a(0xee)]+_0x38476a(0x11d)+_0x3f1c56[_0x38476a(0xee)]+'):\x0a'+_0x251e33[_0x38476a(0xfd)]('\x0a'));}catch(_0x2b6851){_0x180289[_0x38476a(0x149)](_0x38476a(0x14d)+_0x2b6851);}}}),getTableData=defineTabTool({'capability':_0x2b904c(0x176),'schema':{'name':_0x2b904c(0x173),'title':_0x2b904c(0x12f),'description':_0x2b904c(0x120),'inputSchema':z[_0x2b904c(0x179)]({'selector':z[_0x2b904c(0x158)]()[_0x2b904c(0x13d)]()[_0x2b904c(0x12a)](_0x2b904c(0xf1))[_0x2b904c(0xf5)](_0x2b904c(0x167)),'includeHeaders':z[_0x2b904c(0x12b)]()[_0x2b904c(0x13d)]()['default'](!![])[_0x2b904c(0xf5)](_0x2b904c(0x16b)),'maxRows':z[_0x2b904c(0x13b)]()[_0x2b904c(0x13d)]()[_0x2b904c(0x12a)](0xa)['describe'](_0x2b904c(0x11c))}),'type':_0x2b904c(0x119)},'handle':async(_0x47ff29,_0x5cf26b,_0x5e6454)=>{const _0x369918=_0x2b904c,_0xaec436={};_0xaec436[_0x369918(0x11a)]=_0x369918(0x15d),_0xaec436['AIyLQ']=function(_0x3671bc,_0x416c99){return _0x3671bc===_0x416c99;},_0xaec436[_0x369918(0x148)]=_0x369918(0x174),_0xaec436[_0x369918(0x126)]=_0x369918(0x10c);const _0x13dbd8=_0xaec436;try{const _0x5660c7={};_0x5660c7[_0x369918(0x128)]=_0x5cf26b['selector'],_0x5660c7[_0x369918(0x155)]=_0x5cf26b[_0x369918(0x155)],_0x5660c7['maxRows']=_0x5cf26b[_0x369918(0x146)];const _0x57593a=await _0x47ff29['page'][_0x369918(0xf6)](({selector:_0x555bb7,includeHeaders:_0x12c964,maxRows:_0x23d6f})=>{const _0x4598fc=_0x369918,_0x49a06e=document[_0x4598fc(0x10a)](_0x555bb7);if(!_0x49a06e)return null;const _0x43d6b4=Array['from'](_0x49a06e[_0x4598fc(0xf3)]('tr')),_0x3db25b=[];return _0x43d6b4[_0x4598fc(0x15f)](0x0,_0x23d6f)[_0x4598fc(0x14f)](_0x13c5af=>{const _0x1ff43c=_0x4598fc,_0x1130cc=Array[_0x1ff43c(0x177)](_0x13c5af[_0x1ff43c(0xf3)](_0x13dbd8[_0x1ff43c(0x11a)])),_0x3dfb16=_0x1130cc[_0x1ff43c(0xfa)](_0x58b1ba=>_0x58b1ba[_0x1ff43c(0x172)]?.[_0x1ff43c(0x111)]()||'');_0x3dfb16[_0x1ff43c(0xfb)](_0x2db2ce=>_0x2db2ce)&&_0x3db25b[_0x1ff43c(0x150)](_0x3dfb16);}),_0x3db25b;},_0x5660c7);if(!_0x57593a){_0x5e6454[_0x369918(0x149)](_0x369918(0x165)+_0x5cf26b[_0x369918(0x128)]+'\x22');return;}const _0x11fa60=[];_0x57593a[_0x369918(0x14f)]((_0x11b01b,_0x391635)=>{const _0x188c99=_0x369918,_0x43e162=_0x13dbd8[_0x188c99(0x15a)](_0x391635,0x0)&&_0x5cf26b[_0x188c99(0x155)],_0x3fa360=_0x43e162?_0x13dbd8[_0x188c99(0x148)]:_0x188c99(0x140)+_0x391635;_0x11fa60[_0x188c99(0x150)](_0x3fa360+':\x20'+_0x11b01b[_0x188c99(0xfd)](_0x13dbd8[_0x188c99(0x126)]));}),_0x5e6454[_0x369918(0x10f)](_0x369918(0x16f)+_0x5cf26b[_0x369918(0x128)]+_0x369918(0x107)),_0x5e6454['addResult'](_0x369918(0x134)+_0x57593a[_0x369918(0xee)]+_0x369918(0x138)+_0x11fa60['join']('\x0a'));}catch(_0x3d6a4a){_0x5e6454[_0x369918(0x149)](_0x369918(0xf4)+_0x3d6a4a);}}}),getElementStyle=defineTabTool({'capability':'core','schema':{'name':_0x2b904c(0x170),'title':_0x2b904c(0x144),'description':_0x2b904c(0x12d),'inputSchema':z[_0x2b904c(0x179)]({'selector':z[_0x2b904c(0x158)]()[_0x2b904c(0xf5)](_0x2b904c(0x135)),'properties':z[_0x2b904c(0x13c)](z['string']())[_0x2b904c(0x13d)]()[_0x2b904c(0xf5)](_0x2b904c(0xec))}),'type':_0x2b904c(0x119)},'handle':async(_0x5f2d1a,_0x5afaa9,_0xa05629)=>{const _0x1c6844=_0x2b904c,_0x336f62={};_0x336f62[_0x1c6844(0x162)]=_0x1c6844(0x15b),_0x336f62['KxcKK']=_0x1c6844(0x164),_0x336f62[_0x1c6844(0x136)]=_0x1c6844(0x14a),_0x336f62[_0x1c6844(0x115)]=_0x1c6844(0x13f),_0x336f62[_0x1c6844(0x11f)]=_0x1c6844(0x123),_0x336f62[_0x1c6844(0x137)]=_0x1c6844(0x159),_0x336f62[_0x1c6844(0x143)]=_0x1c6844(0x145),_0x336f62[_0x1c6844(0x131)]=_0x1c6844(0xef),_0x336f62[_0x1c6844(0x13e)]=_0x1c6844(0x15c),_0x336f62['LmEoG']=_0x1c6844(0x151),_0x336f62[_0x1c6844(0x14c)]=_0x1c6844(0x15e);const _0x74d895=_0x336f62;try{const _0x5d7550=[_0x74d895[_0x1c6844(0x162)],_0x74d895[_0x1c6844(0x16c)],_0x1c6844(0xf7),_0x74d895[_0x1c6844(0x136)],_0x74d895[_0x1c6844(0x115)],_0x1c6844(0x110),_0x1c6844(0x147),_0x74d895[_0x1c6844(0x11f)],_0x74d895[_0x1c6844(0x137)],_0x74d895[_0x1c6844(0x143)],_0x74d895[_0x1c6844(0x131)],_0x74d895[_0x1c6844(0x13e)],_0x1c6844(0x113),_0x74d895[_0x1c6844(0xff)],_0x74d895[_0x1c6844(0x14c)]],_0x20c60c=_0x5afaa9[_0x1c6844(0x160)]||_0x5d7550,_0x871976={};_0x871976[_0x1c6844(0x128)]=_0x5afaa9['selector'],_0x871976['properties']=_0x20c60c;const _0x51c022=await _0x5f2d1a[_0x1c6844(0x108)][_0x1c6844(0xf6)](({selector:_0x4730e2,properties:_0x44f33a})=>{const _0xee3a71=_0x1c6844,_0x4e4c34=document[_0xee3a71(0x10a)](_0x4730e2);if(!_0x4e4c34)return null;const _0x1be373=window[_0xee3a71(0x132)](_0x4e4c34),_0x1b0b2e={};return _0x44f33a[_0xee3a71(0x14f)](_0x342eaf=>{const _0x4eba00=_0xee3a71;_0x1b0b2e[_0x342eaf]=_0x1be373[_0x4eba00(0xf0)](_0x342eaf);}),_0x1b0b2e;},_0x871976);if(!_0x51c022){_0xa05629[_0x1c6844(0x149)](_0x1c6844(0x161)+_0x5afaa9[_0x1c6844(0x128)]+'\x22');return;}const _0x3b4ada=Object[_0x1c6844(0x14b)](_0x51c022)['filter'](([_0x2eaa9a,_0x41bb77])=>_0x41bb77&&_0x41bb77!==_0x1c6844(0x13a)&&_0x41bb77!==_0x1c6844(0x124))[_0x1c6844(0xfa)](([_0x3ba8a8,_0x457992])=>_0x3ba8a8+':\x20'+_0x457992)[_0x1c6844(0xfd)]('\x0a');_0xa05629[_0x1c6844(0x10f)](_0x1c6844(0xfc)+_0x5afaa9['selector']+_0x1c6844(0x12c)),_0xa05629[_0x1c6844(0x118)](_0x1c6844(0x10b)+_0x3b4ada);}catch(_0x3982ec){_0xa05629[_0x1c6844(0x149)](_0x1c6844(0x11b)+_0x3982ec);}}});export default[getAllLinks,getAllImages,getTableData,getElementStyle];
1
+ /**
2
+ * Copyright (c) Microsoft Corporation.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { z } from 'zod';
17
+ import { defineTabTool } from './tool.js';
18
+ // Get all links from page
19
+ const getAllLinks = defineTabTool({
20
+ capability: 'core',
21
+ schema: {
22
+ name: 'browser_get_all_links',
23
+ title: 'Get all links',
24
+ description: 'Extract all links from the current page',
25
+ inputSchema: z.object({
26
+ includeText: z.boolean().optional().default(true).describe('Include link text'),
27
+ includeHref: z.boolean().optional().default(true).describe('Include href attribute'),
28
+ limit: z.number().optional().default(20).describe('Maximum number of links to return'),
29
+ }),
30
+ type: 'readOnly',
31
+ },
32
+ handle: async (tab, params, response) => {
33
+ try {
34
+ const links = await tab.page.evaluate(() => {
35
+ const linkElements = Array.from(document.querySelectorAll('a[href]'));
36
+ return linkElements.map((link, index) => ({
37
+ index,
38
+ text: link.textContent?.trim() || '',
39
+ href: link.getAttribute('href') || '',
40
+ title: link.getAttribute('title') || '',
41
+ }));
42
+ });
43
+ const limitedLinks = links.slice(0, params.limit);
44
+ const results = [];
45
+ limitedLinks.forEach((link) => {
46
+ const parts = [`[${link.index}]`];
47
+ if (params.includeText && link.text) {
48
+ parts.push(`"${link.text}"`);
49
+ }
50
+ if (params.includeHref) {
51
+ parts.push(`→ ${link.href}`);
52
+ }
53
+ if (link.title) {
54
+ parts.push(`(${link.title})`);
55
+ }
56
+ results.push(parts.join(' '));
57
+ });
58
+ response.addCode(`const links = await page.evaluate(() => Array.from(document.querySelectorAll('a[href]')).map(link => ({ text: link.textContent, href: link.href })));`);
59
+ response.addResult(`Found ${links.length} links (showing first ${limitedLinks.length}):\n${results.join('\n')}`);
60
+ }
61
+ catch (error) {
62
+ response.addError(`Failed to get links: ${error}`);
63
+ }
64
+ },
65
+ });
66
+ // Get all images from page
67
+ const getAllImages = defineTabTool({
68
+ capability: 'core',
69
+ schema: {
70
+ name: 'browser_get_all_images',
71
+ title: 'Get all images',
72
+ description: 'Extract all images and their sources from the current page',
73
+ inputSchema: z.object({
74
+ includeAlt: z.boolean().optional().default(true).describe('Include alt text'),
75
+ includeSrc: z.boolean().optional().default(true).describe('Include src attribute'),
76
+ limit: z.number().optional().default(20).describe('Maximum number of images to return'),
77
+ }),
78
+ type: 'readOnly',
79
+ },
80
+ handle: async (tab, params, response) => {
81
+ try {
82
+ const images = await tab.page.evaluate(() => {
83
+ const imgElements = Array.from(document.querySelectorAll('img'));
84
+ return imgElements.map((img, index) => ({
85
+ index,
86
+ src: img.src || '',
87
+ alt: img.alt || '',
88
+ title: img.title || '',
89
+ width: img.naturalWidth || img.width,
90
+ height: img.naturalHeight || img.height,
91
+ }));
92
+ });
93
+ const limitedImages = images.slice(0, params.limit);
94
+ const results = [];
95
+ limitedImages.forEach((img) => {
96
+ const parts = [`[${img.index}]`];
97
+ if (params.includeAlt && img.alt) {
98
+ parts.push(`"${img.alt}"`);
99
+ }
100
+ if (params.includeSrc) {
101
+ parts.push(`→ ${img.src}`);
102
+ }
103
+ if (img.width && img.height) {
104
+ parts.push(`(${img.width}x${img.height})`);
105
+ }
106
+ results.push(parts.join(' '));
107
+ });
108
+ response.addCode(`const images = await page.evaluate(() => Array.from(document.querySelectorAll('img')).map(img => ({ src: img.src, alt: img.alt })));`);
109
+ response.addResult(`Found ${images.length} images (showing first ${limitedImages.length}):\n${results.join('\n')}`);
110
+ }
111
+ catch (error) {
112
+ response.addError(`Failed to get images: ${error}`);
113
+ }
114
+ },
115
+ });
116
+ // Get table data
117
+ const getTableData = defineTabTool({
118
+ capability: 'core',
119
+ schema: {
120
+ name: 'browser_get_table_data',
121
+ title: 'Extract table data',
122
+ description: 'Extract data from HTML tables',
123
+ inputSchema: z.object({
124
+ selector: z.string().optional().default('table').describe('CSS selector for the table'),
125
+ includeHeaders: z.boolean().optional().default(true).describe('Include table headers'),
126
+ maxRows: z.number().optional().default(10).describe('Maximum number of rows to extract'),
127
+ }),
128
+ type: 'readOnly',
129
+ },
130
+ handle: async (tab, params, response) => {
131
+ try {
132
+ const tableData = await tab.page.evaluate(({ selector, includeHeaders, maxRows }) => {
133
+ const table = document.querySelector(selector);
134
+ if (!table)
135
+ return null;
136
+ const rows = Array.from(table.querySelectorAll('tr'));
137
+ const data = [];
138
+ rows.slice(0, maxRows).forEach((row) => {
139
+ const cells = Array.from(row.querySelectorAll('td, th'));
140
+ const rowData = cells.map(cell => cell.textContent?.trim() || '');
141
+ if (rowData.some(cell => cell)) { // Only include non-empty rows
142
+ data.push(rowData);
143
+ }
144
+ });
145
+ return data;
146
+ }, { selector: params.selector, includeHeaders: params.includeHeaders, maxRows: params.maxRows });
147
+ if (!tableData) {
148
+ response.addError(`No table found with selector "${params.selector}"`);
149
+ return;
150
+ }
151
+ const results = [];
152
+ tableData.forEach((row, index) => {
153
+ const isHeader = index === 0 && params.includeHeaders;
154
+ const prefix = isHeader ? 'HEADER' : `ROW ${index}`;
155
+ results.push(`${prefix}: ${row.join(' | ')}`);
156
+ });
157
+ response.addCode(`const tableData = await page.evaluate(() => Array.from(document.querySelector('${params.selector}').querySelectorAll('tr')).map(row => Array.from(row.cells).map(cell => cell.textContent)));`);
158
+ response.addResult(`Table data (${tableData.length} rows):\n${results.join('\n')}`);
159
+ }
160
+ catch (error) {
161
+ response.addError(`Failed to extract table data: ${error}`);
162
+ }
163
+ },
164
+ });
165
+ // Get computed styles
166
+ const getElementStyle = defineTabTool({
167
+ capability: 'core',
168
+ schema: {
169
+ name: 'browser_get_element_style',
170
+ title: 'Get element styles',
171
+ description: 'Get computed CSS styles for an element',
172
+ inputSchema: z.object({
173
+ selector: z.string().describe('CSS selector for the element'),
174
+ properties: z.array(z.string()).optional().describe('Specific CSS properties to get (if not provided, gets common ones)'),
175
+ }),
176
+ type: 'readOnly',
177
+ },
178
+ handle: async (tab, params, response) => {
179
+ try {
180
+ const defaultProperties = [
181
+ 'display', 'visibility', 'opacity', 'position', 'top', 'left', 'width', 'height',
182
+ 'margin', 'padding', 'border', 'background-color', 'color', 'font-size', 'font-family'
183
+ ];
184
+ const propertiesToGet = params.properties || defaultProperties;
185
+ const styles = await tab.page.evaluate(({ selector, properties }) => {
186
+ const element = document.querySelector(selector);
187
+ if (!element)
188
+ return null;
189
+ const computedStyle = window.getComputedStyle(element);
190
+ const result = {};
191
+ properties.forEach((prop) => {
192
+ result[prop] = computedStyle.getPropertyValue(prop);
193
+ });
194
+ return result;
195
+ }, { selector: params.selector, properties: propertiesToGet });
196
+ if (!styles) {
197
+ response.addError(`No element found with selector "${params.selector}"`);
198
+ return;
199
+ }
200
+ const results = Object.entries(styles)
201
+ .filter(([_, value]) => value && value !== 'auto' && value !== 'none')
202
+ .map(([prop, value]) => `${prop}: ${value}`)
203
+ .join('\n');
204
+ response.addCode(`const styles = await page.evaluate(() => { const el = document.querySelector('${params.selector}'); return window.getComputedStyle(el); });`);
205
+ response.addResult(`Element styles:\n${results}`);
206
+ }
207
+ catch (error) {
208
+ response.addError(`Failed to get element styles: ${error}`);
209
+ }
210
+ },
211
+ });
212
+ export default [
213
+ getAllLinks,
214
+ getAllImages,
215
+ getTableData,
216
+ getElementStyle,
217
+ ];
@@ -1 +1,44 @@
1
- const _0x5d2497=_0x3f0b;(function(_0x2d38e8,_0x3272c){const _0x313346=_0x3f0b,_0xe6740=_0x2d38e8();while(!![]){try{const _0x246c15=parseInt(_0x313346(0x138))/0x1+parseInt(_0x313346(0x13a))/0x2*(-parseInt(_0x313346(0x13b))/0x3)+parseInt(_0x313346(0x143))/0x4+-parseInt(_0x313346(0x146))/0x5*(-parseInt(_0x313346(0x133))/0x6)+-parseInt(_0x313346(0x151))/0x7+parseInt(_0x313346(0x137))/0x8+-parseInt(_0x313346(0x139))/0x9*(-parseInt(_0x313346(0x130))/0xa);if(_0x246c15===_0x3272c)break;else _0xe6740['push'](_0xe6740['shift']());}catch(_0x451f0d){_0xe6740['push'](_0xe6740['shift']());}}}(_0x4aba,0xa1f4c));const _0x5aac99=(function(){let _0x5d4dce=!![];return function(_0x4c2030,_0x496b25){const _0x75c481=_0x5d4dce?function(){if(_0x496b25){const _0x2994ae=_0x496b25['apply'](_0x4c2030,arguments);return _0x496b25=null,_0x2994ae;}}:function(){};return _0x5d4dce=![],_0x75c481;};}()),_0x1c1225=_0x5aac99(this,function(){const _0x5614a9=_0x3f0b,_0x20cdba={};_0x20cdba['MwmWA']=_0x5614a9(0x141);const _0x3b34a4=_0x20cdba;return _0x1c1225[_0x5614a9(0x145)]()[_0x5614a9(0x14f)](_0x3b34a4[_0x5614a9(0x142)])[_0x5614a9(0x145)]()[_0x5614a9(0x147)](_0x1c1225)[_0x5614a9(0x14f)](_0x3b34a4[_0x5614a9(0x142)]);});function _0x4aba(){const _0xbdbe38=['C2v0sw5JBhvKzvnUyxbZAg90','C3rYAw5N','yxjYyxK','nJm4mtyYnhneD0fADW','otaZmJbuy0PzBNG','mZK0ndqZuMnIvMPc','mtqXmJG5mND0BK9NrG','m1v5ywHrtq','zMLUza','vxbSB2fKigzPBgvZ','vxbSB2fKig9UzsbVCIbTDwX0AxbSzsbMAwXLCW','ywrKq29Kzq','tM8GzMLSzsbJAg9VC2vYihzPC2LIBgu','kcGOlISPkYKRksSK','txDTv0e','mty0mZG2ngHtCgj1AG','zMLSzunOB29Zzxi','Dg9tDhjPBMC','mJqXntqWmhjevwzdDG','y29UC3rYDwn0B3i','vgHLigfIC29SDxrLihbHDgHZihrVihrOzsbMAwXLCYb0BYb1CgXVywqUienHBIbIzsbHihnPBMDSzsbMAwXLig9Yig11BhrPCgXLigzPBgvZlG','Cgf0Ahm','zgvZDhj1y3rPDMu','B2jQzwn0','yNjVD3nLCL9MAwXLx3vWBg9Hza','zgvZy3jPyMu','Bw9KywXtDgf0zxm','C2vHCMnO','C3rYAw5NAwz5','odCXndC0ofLLq2Txra','D2fPDezVCKnVBxbSzxrPB24','AeX3BeG','DhLWzq','y29Yzq','mtKWsfb1u0LX','C2v0rMLSzxm','y2XLyxjnB2rHBfn0yxrL','nKnfs1fJCG'];_0x4aba=function(){return _0xbdbe38;};return _0x4aba();}_0x1c1225();import{z}from'zod';import{defineTabTool}from'./tool.js';function _0x3f0b(_0x467b18,_0x32a97d){_0x467b18=_0x467b18-0x12c;const _0x2e8946=_0x4aba();let _0x1c1225=_0x2e8946[_0x467b18];if(_0x3f0b['admdaV']===undefined){var _0x5aac99=function(_0x47f830){const _0x175509='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x1bf024='',_0x3b3ce1='',_0x2cab94=_0x1bf024+_0x5aac99;for(let _0x4efe26=0x0,_0x557769,_0x5dedfa,_0x1432b7=0x0;_0x5dedfa=_0x47f830['charAt'](_0x1432b7++);~_0x5dedfa&&(_0x557769=_0x4efe26%0x4?_0x557769*0x40+_0x5dedfa:_0x5dedfa,_0x4efe26++%0x4)?_0x1bf024+=_0x2cab94['charCodeAt'](_0x1432b7+0xa)-0xa!==0x0?String['fromCharCode'](0xff&_0x557769>>(-0x2*_0x4efe26&0x6)):_0x4efe26:0x0){_0x5dedfa=_0x175509['indexOf'](_0x5dedfa);}for(let _0x3bfe77=0x0,_0x33400b=_0x1bf024['length'];_0x3bfe77<_0x33400b;_0x3bfe77++){_0x3b3ce1+='%'+('00'+_0x1bf024['charCodeAt'](_0x3bfe77)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x3b3ce1);};_0x3f0b['pFOacT']=_0x5aac99,_0x3f0b['PMUfMu']={},_0x3f0b['admdaV']=!![];}const _0x4aba02=_0x2e8946[0x0],_0x3f0b63=_0x467b18+_0x4aba02,_0x4d2189=_0x3f0b['PMUfMu'][_0x3f0b63];if(!_0x4d2189){const _0x1b88f9=function(_0xd6f791){this['EgnBaK']=_0xd6f791,this['lQjwTz']=[0x1,0x0,0x0],this['ZSrGEK']=function(){return'newState';},this['OkalDR']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['oCYVQK']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x1b88f9['prototype']['TvTuem']=function(){const _0x1d1a44=new RegExp(this['OkalDR']+this['oCYVQK']),_0x23efb3=_0x1d1a44['test'](this['ZSrGEK']['toString']())?--this['lQjwTz'][0x1]:--this['lQjwTz'][0x0];return this['tPYhyH'](_0x23efb3);},_0x1b88f9['prototype']['tPYhyH']=function(_0x55a9f3){if(!Boolean(~_0x55a9f3))return _0x55a9f3;return this['QmaiLR'](this['EgnBaK']);},_0x1b88f9['prototype']['QmaiLR']=function(_0x46509e){for(let _0x5cb9a2=0x0,_0x216507=this['lQjwTz']['length'];_0x5cb9a2<_0x216507;_0x5cb9a2++){this['lQjwTz']['push'](Math['round'](Math['random']())),_0x216507=this['lQjwTz']['length'];}return _0x46509e(this['lQjwTz'][0x0]);},new _0x1b88f9(_0x3f0b)['TvTuem'](),_0x1c1225=_0x3f0b['pFOacT'](_0x1c1225),_0x3f0b['PMUfMu'][_0x3f0b63]=_0x1c1225;}else _0x1c1225=_0x4d2189;return _0x1c1225;}const uploadFile=defineTabTool({'capability':_0x5d2497(0x12f),'schema':{'name':_0x5d2497(0x14c),'title':_0x5d2497(0x13d),'description':_0x5d2497(0x13e),'inputSchema':z[_0x5d2497(0x14b)]({'paths':z[_0x5d2497(0x136)](z[_0x5d2497(0x135)]())[_0x5d2497(0x14d)](_0x5d2497(0x148))}),'type':_0x5d2497(0x14a)},'handle':async(_0x262807,_0x12cc2c,_0x33a73f)=>{const _0x206a99=_0x5d2497,_0x514cdb={};_0x514cdb[_0x206a99(0x12d)]=_0x206a99(0x140);const _0x44bf07=_0x514cdb;_0x33a73f[_0x206a99(0x134)]();const _0x565fa8=_0x262807[_0x206a99(0x14e)]()[_0x206a99(0x13c)](_0x20d5ac=>_0x20d5ac[_0x206a99(0x12e)]===_0x206a99(0x144));if(!_0x565fa8)throw new Error(_0x44bf07[_0x206a99(0x12d)]);_0x33a73f[_0x206a99(0x13f)]('await\x20fileChooser.setFiles('+JSON[_0x206a99(0x150)](_0x12cc2c[_0x206a99(0x149)])+')'),_0x262807[_0x206a99(0x132)](_0x565fa8),await _0x262807[_0x206a99(0x12c)](async()=>{const _0x176027=_0x206a99;await _0x565fa8[_0x176027(0x144)][_0x176027(0x131)](_0x12cc2c['paths']);});},'clearsModalState':_0x5d2497(0x144)});export default[uploadFile];
1
+ /**
2
+ * Copyright (c) Microsoft Corporation.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { z } from 'zod';
17
+ import { defineTabTool } from './tool.js';
18
+ const uploadFile = defineTabTool({
19
+ capability: 'core',
20
+ schema: {
21
+ name: 'browser_file_upload',
22
+ title: 'Upload files',
23
+ description: 'Upload one or multiple files',
24
+ inputSchema: z.object({
25
+ paths: z.array(z.string()).describe('The absolute paths to the files to upload. Can be a single file or multiple files.'),
26
+ }),
27
+ type: 'destructive',
28
+ },
29
+ handle: async (tab, params, response) => {
30
+ response.setIncludeSnapshot();
31
+ const modalState = tab.modalStates().find(state => state.type === 'fileChooser');
32
+ if (!modalState)
33
+ throw new Error('No file chooser visible');
34
+ response.addCode(`await fileChooser.setFiles(${JSON.stringify(params.paths)})`);
35
+ tab.clearModalState(modalState);
36
+ await tab.waitForCompletion(async () => {
37
+ await modalState.fileChooser.setFiles(params.paths);
38
+ });
39
+ },
40
+ clearsModalState: 'fileChooser',
41
+ });
42
+ export default [
43
+ uploadFile,
44
+ ];