@unotest/web 0.5.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.
@@ -0,0 +1,6 @@
1
+ interface InitResult {
2
+ exitCode: number;
3
+ }
4
+ declare function runInit(argv: string[]): Promise<InitResult>;
5
+
6
+ export { runInit };
@@ -0,0 +1 @@
1
+ const _0x52f70a=_0x4db0;(function(_0x524034,_0x3a2e07){const _0x5a0519={_0x46a535:0x1ca,_0x1205ee:0x223,_0x457be4:0x1c7,_0x427693:0x219,_0x2b3cec:0x1fb},_0x3332c2=_0x4db0,_0x5268ad=_0x524034();while(!![]){try{const _0x360aa7=-parseInt(_0x3332c2(_0x5a0519._0x46a535))/0x1+-parseInt(_0x3332c2(0x237))/0x2+parseInt(_0x3332c2(_0x5a0519._0x1205ee))/0x3+-parseInt(_0x3332c2(0x236))/0x4*(-parseInt(_0x3332c2(_0x5a0519._0x457be4))/0x5)+parseInt(_0x3332c2(0x216))/0x6*(-parseInt(_0x3332c2(0x17a))/0x7)+-parseInt(_0x3332c2(_0x5a0519._0x427693))/0x8*(parseInt(_0x3332c2(_0x5a0519._0x2b3cec))/0x9)+parseInt(_0x3332c2(0x1b8))/0xa;if(_0x360aa7===_0x3a2e07)break;else _0x5268ad['push'](_0x5268ad['shift']());}catch(_0x72ca10){_0x5268ad['push'](_0x5268ad['shift']());}}}(_0xd3e5,0x2901d));var __defProp=Object['defineProperty'],__name=(_0x5641e5,_0x69d128)=>__defProp(_0x5641e5,_0x52f70a(0x1a3),{'value':_0x69d128,'configurable':!![]});import{copyFileSync,existsSync as _0x53a40d,mkdirSync,readFileSync,writeFileSync}from'fs';import{dirname as _0x10f639,join,resolve as _0x2127ab}from'path';import{fileURLToPath as _0x1a4073}from'url';import{existsSync as _0x37e887}from'fs';import{execFileSync}from'child_process';import{existsSync}from'fs';function probeSystemBrowser(){const _0x42bbee={_0x38a917:0x17d},_0x45e886=_0x52f70a;for(const _0x33a400 of[probeChrome,probeEdge,probeChromeBeta]){const _0x156544=_0x33a400();if(_0x156544[_0x45e886(_0x42bbee._0x38a917)]!==null)return _0x156544;}return{'channel':null};}__name(probeSystemBrowser,_0x52f70a(0x187));function probeChrome(){const _0x147df2={_0x3e7c96:0x1da},_0x41b579=_0x52f70a,_0x1ba586=firstExistingPath(CHROME_PATHS)??whichOf(CHROME_BIN_NAMES);if(_0x1ba586)return{'channel':_0x41b579(_0x147df2._0x3e7c96),'path':_0x1ba586,'label':'Google\x20Chrome'};return{'channel':null};}__name(probeChrome,'probeChrome');function probeEdge(){const _0x4051ac={_0x53b10b:0x1cb},_0x1279f6=_0x52f70a,_0x445d98=firstExistingPath(EDGE_PATHS)??whichOf(EDGE_BIN_NAMES);if(_0x445d98)return{'channel':_0x1279f6(_0x4051ac._0x53b10b),'path':_0x445d98,'label':'Microsoft\x20Edge'};return{'channel':null};}__name(probeEdge,_0x52f70a(0x199));function probeChromeBeta(){const _0x4391af=_0x52f70a,_0x47e59b=firstExistingPath(CHROME_BETA_PATHS);if(_0x47e59b)return{'channel':'chrome-beta','path':_0x47e59b,'label':_0x4391af(0x1c5)};return{'channel':null};}__name(probeChromeBeta,_0x52f70a(0x20c));var CHROME_PATHS=((()=>{const _0x3d77b9={_0x552a40:0x177,_0x2a45fd:0x1b2,_0x2cd157:0x1f2,_0x377cf8:0x192,_0x5193c9:0x188},_0x431364=_0x52f70a;switch(process[_0x431364(_0x3d77b9._0x552a40)]){case _0x431364(0x1bb):return[_0x431364(_0x3d77b9._0x2a45fd)];case _0x431364(0x1d1):return[process[_0x431364(0x1f2)]['ProgramFiles']+'\x5cGoogle\x5cChrome\x5cApplication\x5cchrome.exe',process[_0x431364(_0x3d77b9._0x2cd157)][_0x431364(0x1cc)]+_0x431364(0x21a),process[_0x431364(0x1f2)]['LOCALAPPDATA']+_0x431364(0x21a)];default:return[_0x431364(_0x3d77b9._0x377cf8),_0x431364(_0x3d77b9._0x5193c9),_0x431364(0x1b3),'/usr/bin/chromium',_0x431364(0x1de)];}})()),CHROME_BIN_NAMES=[_0x52f70a(0x1f9),_0x52f70a(0x18b),_0x52f70a(0x1b6),'chromium-browser'],EDGE_PATHS=((()=>{const _0x6b92bb={_0x39b4ce:0x1bb,_0x30ce81:0x17e,_0x464ed5:0x24b,_0x241d56:0x195},_0xfe8d2e=_0x52f70a;switch(process[_0xfe8d2e(0x177)]){case _0xfe8d2e(_0x6b92bb._0x39b4ce):return['/Applications/Microsoft\x20Edge.app/Contents/MacOS/Microsoft\x20Edge'];case _0xfe8d2e(0x1d1):return[process[_0xfe8d2e(0x1f2)][_0xfe8d2e(0x17b)]+_0xfe8d2e(_0x6b92bb._0x30ce81),process['env'][_0xfe8d2e(0x1cc)]+_0xfe8d2e(_0x6b92bb._0x30ce81)];default:return[_0xfe8d2e(_0x6b92bb._0x464ed5),_0xfe8d2e(_0x6b92bb._0x241d56)];}})()),EDGE_BIN_NAMES=['microsoft-edge',_0x52f70a(0x210)],CHROME_BETA_PATHS=((()=>{const _0x4474bf={_0x111797:0x1e3,_0x263519:0x17b,_0x2c69b5:0x1f4,_0x535cf7:0x242},_0x40e282=_0x52f70a;switch(process[_0x40e282(0x177)]){case'darwin':return[_0x40e282(_0x4474bf._0x111797)];case _0x40e282(0x1d1):return[process[_0x40e282(0x1f2)][_0x40e282(_0x4474bf._0x263519)]+_0x40e282(_0x4474bf._0x2c69b5)];default:return[_0x40e282(_0x4474bf._0x535cf7)];}})());function firstExistingPath(_0x14ac9f){for(const _0x129d2a of _0x14ac9f){if(!_0x129d2a||_0x129d2a['startsWith']('undefined'))continue;if(existsSync(_0x129d2a))return _0x129d2a;}return null;}__name(firstExistingPath,'firstExistingPath');function whichOf(_0x159661){const _0x55437c={_0x5f4735:0x1d1,_0x1fbf91:0x17f,_0x334c69:0x1ac},_0x4a1952=_0x52f70a;if(process[_0x4a1952(0x177)]===_0x4a1952(_0x55437c._0x5f4735))return void 0x0;for(const _0x409876 of _0x159661){try{const _0x46eda3=execFileSync(_0x4a1952(_0x55437c._0x1fbf91),[_0x409876],{'encoding':_0x4a1952(0x193)})[_0x4a1952(0x1c9)]();if(_0x46eda3[_0x4a1952(_0x55437c._0x334c69)]>0x0&&existsSync(_0x46eda3))return _0x46eda3;}catch{}}return void 0x0;}__name(whichOf,_0x52f70a(0x24d));function runEnvironmentChecks(_0x2cea9e={}){const _0x3ea0f9={_0x318a7e:0x1d4},_0x4e4abb=_0x52f70a,_0x214c95=_0x2cea9e[_0x4e4abb(_0x3ea0f9._0x318a7e)]??process[_0x4e4abb(0x1d4)]();return[checkNodeVersion(),checkSystemBrowser(),checkWritableCwd(_0x214c95)];}__name(runEnvironmentChecks,'runEnvironmentChecks');function checkNodeVersion(){const _0x496dae={_0x1d114b:0x1f7,_0x531d4c:0x1e4},_0x4f1303=_0x52f70a,_0x5bd631=process['versions'][_0x4f1303(_0x496dae._0x1d114b)],_0x164745=Number(_0x5bd631[_0x4f1303(_0x496dae._0x531d4c)]('.')[0x0]);if(!Number[_0x4f1303(0x1ee)](_0x164745)||_0x164745<0x14)return{'name':_0x4f1303(0x247),'severity':'error','message':_0x4f1303(0x1be)+_0x5bd631+')','detail':_0x4f1303(0x250)};return{'name':_0x4f1303(0x247),'severity':'ok','message':_0x5bd631};}__name(checkNodeVersion,'checkNodeVersion');function checkSystemBrowser(){const _0x113d53={_0x5f3d16:0x1ba,_0x475154:0x1ec,_0xd2b0b4:0x203,_0x4fbed7:0x179},_0x552102=_0x52f70a,_0x2dcd17=probeSystemBrowser();if(_0x2dcd17['channel']!==null)return{'name':_0x552102(_0x113d53._0x5f3d16),'severity':'ok','message':_0x2dcd17[_0x552102(_0x113d53._0x475154)]+_0x552102(_0x113d53._0xd2b0b4),'detail':_0x2dcd17['path']};return{'name':_0x552102(0x1ba),'severity':_0x552102(_0x113d53._0x4fbed7),'message':'no\x20Chrome\x20/\x20Edge\x20/\x20Chromium\x20detected','detail':'init\x20will\x20offer\x20to\x20download\x20bundled\x20Chromium\x20(~150\x20MB).\x20Alternatively,\x20install\x20Chrome\x20from\x20https://www.google.com/chrome\x20and\x20re-run.'};}__name(checkSystemBrowser,'checkSystemBrowser');function checkWritableCwd(_0x18d22b){const _0x462934={_0x5e6085:0x1ce,_0x20ffa2:0x200},_0x38cceb=_0x52f70a;if(!_0x37e887(_0x18d22b))return{'name':_0x38cceb(0x23e),'severity':_0x38cceb(_0x462934._0x5e6085),'message':_0x38cceb(0x244)+_0x18d22b+_0x38cceb(0x1e5),'detail':_0x38cceb(_0x462934._0x20ffa2)};return{'name':'Target\x20directory','severity':'ok','message':_0x18d22b};}__name(checkWritableCwd,'checkWritableCwd');var templates={'smokeWelcome':_0x52f70a(0x190),'scenarioTemplate':_0x52f70a(0x1a1),'agentsMd':_0x52f70a(0x18e),'envExample':_0x52f70a(0x178)};function unotestConfigMjs(_0x44a270){const _0x229aa6={_0x3a182c:0x239,_0x5d8b2e:0x249},_0x523d72=_0x52f70a,_0xf809b8=_0x44a270===void 0x0?_0x523d72(0x18d):'\x20\x20channel:\x20'+JSON['stringify'](_0x44a270)+',';return _0x523d72(_0x229aa6._0x3a182c)+_0xf809b8+_0x523d72(_0x229aa6._0x5d8b2e);}__name(unotestConfigMjs,'unotestConfigMjs');function promptYesNo(_0x4cad8b,_0x4d93fb){const _0x3273d5={_0x427bba:0x21c},_0x4d0bfe={_0x5cd633:0x1ab,_0x3e4168:0x182,_0x5e3b0d:0x217,_0x42dc3e:0x1e1},_0x16aafd={_0x4a79cb:0x193,_0x39fceb:0x232,_0x564a0a:0x204,_0x4f6aa9:0x212},_0x427888=_0x52f70a,_0x4f2535=_0x4d93fb?_0x427888(0x19a):_0x427888(_0x3273d5._0x427bba);return new Promise(_0x24f20f=>{const _0x1a3939={_0x32190b:0x184,_0x1c631e:0x1f8},_0x3bca6e=_0x427888;let _0x41bb30=![];const _0x2ab6d6=__name(_0x445a22=>{const _0x1aafb6=_0x4db0;if(_0x41bb30)return;_0x41bb30=!![],process[_0x1aafb6(0x1e1)]['removeListener'](_0x1aafb6(0x1a2),_0x48ce70),process[_0x1aafb6(0x1e1)][_0x1aafb6(0x23a)](_0x1aafb6(_0x1a3939._0x32190b),_0x33e119),process[_0x1aafb6(0x1e1)]['pause'](),process['stdin'][_0x1aafb6(_0x1a3939._0x1c631e)](),_0x24f20f(_0x445a22);},_0x3bca6e(_0x4d0bfe._0x5cd633)),_0x48ce70=__name(_0x5c52a4=>{const _0x5d1b87=_0x3bca6e,_0x142a13=typeof _0x5c52a4===_0x5d1b87(0x1df)?_0x5c52a4:_0x5c52a4[_0x5d1b87(0x1d5)](_0x5d1b87(_0x16aafd._0x4a79cb)),_0xcb8c05=_0x142a13[_0x5d1b87(_0x16aafd._0x39fceb)]('\x0a');if(_0xcb8c05<0x0)return;const _0xe100bc=_0x142a13[_0x5d1b87(_0x16aafd._0x564a0a)](0x0,_0xcb8c05)[_0x5d1b87(0x1c9)]()['toLowerCase']();if(_0xe100bc==='')return _0x2ab6d6(_0x4d93fb);_0x2ab6d6(_0xe100bc==='y'||_0xe100bc===_0x5d1b87(_0x16aafd._0x4f6aa9));},_0x3bca6e(0x1e6)),_0x33e119=__name(()=>_0x2ab6d6(_0x4d93fb),_0x3bca6e(_0x4d0bfe._0x3e4168));process[_0x3bca6e(_0x4d0bfe._0x5e3b0d)][_0x3bca6e(0x1c2)](_0x4cad8b+_0x4f2535),process[_0x3bca6e(_0x4d0bfe._0x42dc3e)]['on'](_0x3bca6e(0x1a2),_0x48ce70),process[_0x3bca6e(0x1e1)]['on'](_0x3bca6e(0x184),_0x33e119),process[_0x3bca6e(0x1e1)]['resume']();});}__name(promptYesNo,_0x52f70a(0x1d6));import{spawn}from'child_process';import{createRequire}from'module';import{dirname,resolve}from'path';import{fileURLToPath}from'url';async function installChromium(_0x32ccea={}){const _0x2c16cf={_0x46dcaf:0x1df,_0x18e398:0x181},_0x362562={_0x12052e:0x198,_0x1bfbe7:0x1a6},_0x4a9099=_0x52f70a,_0x1c4aad=_0x32ccea['stdoutWrite']??(_0x4c8d3e=>process[_0x4a9099(0x217)]['write'](_0x4c8d3e)),_0x27e95d=createRequire(import.meta.url),_0x24e8a9=_0x27e95d[_0x4a9099(0x207)]('playwright/package.json'),_0x23c126=_0x27e95d(_0x24e8a9),_0x2ce126=typeof _0x23c126[_0x4a9099(0x230)]===_0x4a9099(_0x2c16cf._0x46dcaf)?_0x23c126[_0x4a9099(0x230)]:_0x23c126['bin']?.[_0x4a9099(_0x2c16cf._0x18e398)];if(!_0x2ce126)throw new Error('playwright/package.json\x20has\x20no\x20usable\x20\x22bin\x22\x20field');const _0x3ff03d=resolve(dirname(_0x24e8a9),_0x2ce126);return new Promise((_0x462771,_0x4a79b2)=>{const _0x3b739d=_0x4a9099,_0x195335=spawn(process[_0x3b739d(0x1fd)],[_0x3ff03d,'install',_0x3b739d(0x1b6)],{'stdio':[_0x3b739d(_0x362562._0x12052e),_0x3b739d(_0x362562._0x1bfbe7),'pipe']});_0x195335[_0x3b739d(0x217)]?.['on'](_0x3b739d(0x1a2),_0x5313d7=>_0x1c4aad(_0x5313d7[_0x3b739d(0x1d5)]())),_0x195335[_0x3b739d(0x1c8)]?.['on'](_0x3b739d(0x1a2),_0x2b4d1c=>_0x1c4aad(_0x2b4d1c[_0x3b739d(0x1d5)]())),_0x195335['on']('error',_0x4a79b2),_0x195335['on']('exit',_0x276ac9=>{const _0x3746d4=_0x3b739d;if(_0x276ac9===0x0)_0x462771();else _0x4a79b2(new Error(_0x3746d4(0x189)+_0x276ac9));});});}__name(installChromium,_0x52f70a(0x1d3));async function runInstallChromiumCli(){const _0x4e1a3d={_0x4176a2:0x1c8,_0x44c9a4:0x1aa},_0x56e35e=_0x52f70a;try{return await installChromium(),0x0;}catch(_0x4c2300){return process[_0x56e35e(_0x4e1a3d._0x4176a2)][_0x56e35e(0x1c2)](_0x56e35e(_0x4e1a3d._0x44c9a4)+(_0x4c2300 instanceof Error?_0x4c2300[_0x56e35e(0x1f6)]:String(_0x4c2300))+'\x0a'),0x1;}}__name(runInstallChromiumCli,_0x52f70a(0x1a0));var invokedDirectly=process[_0x52f70a(0x208)][0x1]&&fileURLToPath(import.meta.url)===process[_0x52f70a(0x208)][0x1];invokedDirectly&&runInstallChromiumCli()[_0x52f70a(0x1a7)](_0x13d6aa=>process[_0x52f70a(0x18f)](_0x13d6aa));async function chooseBrowser(_0x1dc0df){const _0x553ff3={_0x1858bd:0x20f,_0x2cca98:0x211,_0x1ba8dc:0x214,_0x19951a:0x1c3,_0x18a77a:0x228,_0x5a5135:0x1e7,_0x543033:0x1dd,_0x1f91ab:0x201,_0x2e1057:0x24f,_0x78d563:0x201,_0x1b5610:0x1a4,_0x386b16:0x246,_0x9edf91:0x1ec,_0x95f30f:0x1ad},_0x4b61a2=_0x52f70a,_0x41dfdc=_0x1dc0df[_0x4b61a2(0x24c)]??(_0x1631ca=>process['stdout'][_0x4b61a2(0x1c2)](_0x1631ca));if(_0x1dc0df['override']===_0x4b61a2(0x22c)){if(_0x1dc0df[_0x4b61a2(0x201)][_0x4b61a2(0x17d)])return _0x41dfdc(_0x4b61a2(0x19b)+_0x1dc0df[_0x4b61a2(0x201)][_0x4b61a2(0x1ec)]+'\x20('+_0x1dc0df[_0x4b61a2(0x201)][_0x4b61a2(0x24f)]+')\x0a'),{'channel':_0x1dc0df[_0x4b61a2(0x201)][_0x4b61a2(0x17d)],'installedBundled':![],'warnings':[]};return{'channel':void 0x0,'installedBundled':![],'warnings':['✗\x20--browser\x20system\x20but\x20no\x20Chrome\x20/\x20Edge\x20/\x20Chromium\x20found\x20on\x20this\x20machine.',_0x4b61a2(_0x553ff3._0x1858bd)]};}if(_0x1dc0df[_0x4b61a2(0x1c3)]===_0x4b61a2(_0x553ff3._0x2cca98))return _0x41dfdc(_0x4b61a2(_0x553ff3._0x1ba8dc)),await installChromium({'stdoutWrite':_0x41dfdc}),{'channel':null,'installedBundled':!![],'warnings':[]};if(_0x1dc0df[_0x4b61a2(_0x553ff3._0x19951a)]===_0x4b61a2(_0x553ff3._0x18a77a))return{'channel':void 0x0,'installedBundled':![],'warnings':[_0x4b61a2(0x1d0),'\x20\x20\x20\x20npx\x20@unotest/web\x20install-chromium\x20\x20\x20\x20\x20\x20(downloads\x20bundled\x20chromium)',_0x4b61a2(_0x553ff3._0x5a5135)]};if(!_0x1dc0df[_0x4b61a2(_0x553ff3._0x543033)]){if(_0x1dc0df[_0x4b61a2(_0x553ff3._0x1f91ab)][_0x4b61a2(0x17d)])return _0x41dfdc(_0x4b61a2(0x22d)+_0x1dc0df['probe'][_0x4b61a2(0x1ec)]+_0x4b61a2(0x196)+_0x1dc0df[_0x4b61a2(_0x553ff3._0x1f91ab)][_0x4b61a2(_0x553ff3._0x2e1057)]+_0x4b61a2(0x19e)+_0x1dc0df['probe']['channel']+'\x27\x0a'),{'channel':_0x1dc0df[_0x4b61a2(_0x553ff3._0x78d563)][_0x4b61a2(0x17d)],'installedBundled':![],'warnings':[]};return{'channel':void 0x0,'installedBundled':![],'warnings':[_0x4b61a2(0x1d9),_0x4b61a2(0x221),_0x4b61a2(0x229)]};}if(_0x1dc0df[_0x4b61a2(_0x553ff3._0x1f91ab)][_0x4b61a2(0x17d)]){_0x41dfdc(_0x4b61a2(_0x553ff3._0x1b5610)+_0x1dc0df[_0x4b61a2(_0x553ff3._0x78d563)][_0x4b61a2(0x1ec)]+_0x4b61a2(_0x553ff3._0x386b16)+_0x1dc0df['probe'][_0x4b61a2(_0x553ff3._0x2e1057)]+'\x0a');const _0x476864=await promptYesNo(_0x4b61a2(0x1b4)+_0x1dc0df['probe'][_0x4b61a2(_0x553ff3._0x9edf91)]+'?',!![]);if(_0x476864)return{'channel':_0x1dc0df[_0x4b61a2(0x201)][_0x4b61a2(0x17d)],'installedBundled':![],'warnings':[]};}else _0x41dfdc('\x0a\x20\x20No\x20system\x20Chrome\x20/\x20Edge\x20/\x20Chromium\x20detected.\x0a');const _0x5975fe=await promptYesNo('\x20\x20Download\x20bundled\x20Chromium\x20(~150\x20MB)?',!![]);if(_0x5975fe)return _0x41dfdc(_0x4b61a2(0x1dc)),await installChromium({'stdoutWrite':_0x41dfdc}),{'channel':null,'installedBundled':!![],'warnings':[]};return{'channel':void 0x0,'installedBundled':![],'warnings':['⚠\x20No\x20browser\x20configured.\x20Run\x20one\x20of\x20before\x20first\x20test:','\x20\x20\x20\x20npx\x20@unotest/web\x20install-chromium\x20\x20\x20\x20\x20\x20(downloads\x20bundled\x20chromium)',_0x4b61a2(_0x553ff3._0x95f30f)]};}__name(chooseBrowser,'chooseBrowser');var McpJsonParseError=class extends Error{static{__name(this,_0x52f70a(0x1a8));}constructor(_0x542d1f){const _0x318d93={_0x1bff3f:0x1a8},_0x2f9bd2=_0x52f70a;super(_0x542d1f),this[_0x2f9bd2(0x1a3)]=_0x2f9bd2(_0x318d93._0x1bff3f);}};function mergeMcpConfig(_0x422064,_0x5c3866,_0x103aa8,_0x173818={}){const _0xb4e7c={_0x37e932:0x1ef,_0x197076:0x240,_0x2539b6:0x23c,_0x326434:0x245},_0x166d0d=_0x52f70a;if(_0x422064===null){const _0x180773=JSON[_0x166d0d(0x21b)]({'mcpServers':{[_0x5c3866]:_0x103aa8}},null,0x2)+'\x0a';return{'action':_0x166d0d(_0xb4e7c._0x37e932),'newContent':_0x180773};}let _0x4f5903;try{_0x4f5903=JSON[_0x166d0d(_0xb4e7c._0x197076)](_0x422064);}catch(_0x4e1dcb){throw new McpJsonParseError('Failed\x20to\x20parse\x20.mcp.json\x20as\x20JSON:\x20'+_0x4e1dcb[_0x166d0d(0x1f6)]+_0x166d0d(0x1e2));}(!_0x4f5903[_0x166d0d(0x23c)]||typeof _0x4f5903[_0x166d0d(0x23c)]!==_0x166d0d(0x21f))&&(_0x4f5903['mcpServers']={});const _0x3b9f49=_0x5c3866 in _0x4f5903[_0x166d0d(_0xb4e7c._0x2539b6)];if(_0x3b9f49&&!_0x173818[_0x166d0d(0x186)])return{'action':'already-present','newContent':_0x422064};_0x4f5903[_0x166d0d(_0xb4e7c._0x2539b6)][_0x5c3866]=_0x103aa8;const _0x3c50cb=JSON[_0x166d0d(0x21b)](_0x4f5903,null,0x2)+'\x0a';return{'action':_0x3b9f49?'force-overwrote':_0x166d0d(_0xb4e7c._0x326434),'newContent':_0x3c50cb};}__name(mergeMcpConfig,_0x52f70a(0x205));var ClaudeSettingsParseError=class extends Error{static{__name(this,_0x52f70a(0x234));}constructor(_0x15be1a){super(_0x15be1a),this['name']='ClaudeSettingsParseError';}};function mergeClaudeAllowEntries(_0x3d3e9d,_0x2ab5a9){const _0xc52dfb={_0x36156d:0x1a9,_0x407438:0x1e2,_0xe8e452:0x1fe,_0x294ad2:0x1fe,_0x23226b:0x245},_0x128304=_0x52f70a;if(_0x3d3e9d===null){const _0x2d1024=JSON['stringify']({'permissions':{'allow':[..._0x2ab5a9]}},null,0x2)+'\x0a';return{'action':'created','newContent':_0x2d1024,'added':[..._0x2ab5a9]};}let _0x8b525c;try{_0x8b525c=JSON['parse'](_0x3d3e9d);}catch(_0x1658d4){throw new ClaudeSettingsParseError(_0x128304(_0xc52dfb._0x36156d)+_0x1658d4[_0x128304(0x1f6)]+_0x128304(_0xc52dfb._0x407438));}(!_0x8b525c[_0x128304(0x1fe)]||typeof _0x8b525c['permissions']!=='object')&&(_0x8b525c[_0x128304(_0xc52dfb._0xe8e452)]={});const _0xd7d3b8=Array[_0x128304(0x21e)](_0x8b525c['permissions'][_0x128304(0x22f)])?_0x8b525c[_0x128304(_0xc52dfb._0x294ad2)][_0x128304(0x22f)]:[],_0x36329c=[];for(const _0x34fbcf of _0x2ab5a9){!_0xd7d3b8['includes'](_0x34fbcf)&&(_0xd7d3b8[_0x128304(0x206)](_0x34fbcf),_0x36329c[_0x128304(0x206)](_0x34fbcf));}_0x8b525c[_0x128304(0x1fe)][_0x128304(0x22f)]=_0xd7d3b8;if(_0x36329c[_0x128304(0x1ac)]===0x0)return{'action':_0x128304(0x218),'newContent':_0x3d3e9d,'added':[]};const _0x2d4e14=JSON['stringify'](_0x8b525c,null,0x2)+'\x0a';return{'action':_0x128304(_0xc52dfb._0x23226b),'newContent':_0x2d4e14,'added':_0x36329c};}__name(mergeClaudeAllowEntries,_0x52f70a(0x222));function _0x4db0(_0x3c04c2,_0x1c6611){_0x3c04c2=_0x3c04c2-0x175;const _0xd3e563=_0xd3e5();let _0x4db03f=_0xd3e563[_0x3c04c2];if(_0x4db0['CkppzJ']===undefined){var _0x3d4001=function(_0x874091){const _0x3ae5e2='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x53a40d='',_0x10f639='';for(let _0x2127ab=0x0,_0x1a4073,_0x37e887,_0x5641e5=0x0;_0x37e887=_0x874091['charAt'](_0x5641e5++);~_0x37e887&&(_0x1a4073=_0x2127ab%0x4?_0x1a4073*0x40+_0x37e887:_0x37e887,_0x2127ab++%0x4)?_0x53a40d+=String['fromCharCode'](0xff&_0x1a4073>>(-0x2*_0x2127ab&0x6)):0x0){_0x37e887=_0x3ae5e2['indexOf'](_0x37e887);}for(let _0x69d128=0x0,_0x33a400=_0x53a40d['length'];_0x69d128<_0x33a400;_0x69d128++){_0x10f639+='%'+('00'+_0x53a40d['charCodeAt'](_0x69d128)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x10f639);};_0x4db0['pMmdsf']=_0x3d4001,_0x4db0['cXMIGr']={},_0x4db0['CkppzJ']=!![];}const _0x32befd=_0xd3e563[0x0],_0x23d6dd=_0x3c04c2+_0x32befd,_0x24e84d=_0x4db0['cXMIGr'][_0x23d6dd];return!_0x24e84d?(_0x4db03f=_0x4db0['pMmdsf'](_0x4db03f),_0x4db0['cXMIGr'][_0x23d6dd]=_0x4db03f):_0x4db03f=_0x24e84d,_0x4db03f;}function appendUniqueLines(_0x2054fe,_0x4a0be9){const _0xa5a222={_0x179df4:0x1b0,_0x594e18:0x1c9},_0x1f3c88=_0x52f70a,_0x1c867a=_0x2054fe??'',_0x523295=new Set(_0x1c867a[_0x1f3c88(0x1e4)]('\x0a')[_0x1f3c88(_0xa5a222._0x179df4)](_0x340cb3=>_0x340cb3['trim']())),_0x5d98e4=[],_0x1536a3=[];for(const _0x2a57d6 of _0x4a0be9){const _0x472169=_0x2a57d6[_0x1f3c88(_0xa5a222._0x594e18)]();if(_0x472169===''||_0x523295[_0x1f3c88(0x1d7)](_0x472169)){if(_0x472169!=='')_0x1536a3[_0x1f3c88(0x206)](_0x2a57d6);continue;}_0x5d98e4[_0x1f3c88(0x206)](_0x2a57d6),_0x523295[_0x1f3c88(0x1db)](_0x472169);}if(_0x5d98e4[_0x1f3c88(0x1ac)]===0x0)return{'added':_0x5d98e4,'alreadyPresent':_0x1536a3,'newContent':_0x1c867a};const _0x190082=_0x1c867a===''?'':_0x1c867a[_0x1f3c88(0x194)]('\x0a')?'':'\x0a',_0x52c959=_0x1c867a+_0x190082+_0x5d98e4['join']('\x0a')+'\x0a';return{'added':_0x5d98e4,'alreadyPresent':_0x1536a3,'newContent':_0x52c959};}__name(appendUniqueLines,_0x52f70a(0x1f3));function _0xd3e5(){const _0x48138e=['y2HYB21L','ywrK','cIaG4OAsigrVD25SB2fKAw5Nigj1BMrSzwqGq2HYB21PDw3IGkyk','Aw50zxjHy3rPDMu','l3vZCI9IAw4Vy2HYB21PDw0TyNjVD3nLCG','C3rYAw5N','ls1MB3jJzq','C3rKAw4','lIbgAxGGB3iGCMvTB3zLihrOzsbMAwXLigfUzcbYzs1YDw4GAw5PDc4','l0fWCgXPy2f0Aw9UCY9hB29NBguGq2HYB21LiejLDgeUyxbWl0nVBNrLBNrZl01Hy09tl0DVB2DSzsbdAhjVBwuGqMv0yq','C3bSAxq','igrVzxmGBM90igv4Axn0','B25eyxrH','icaGigLUC3rHBgWGq2HYB21LoIaGAhr0Chm6lY93D3CUz29Vz2XLlMnVBs9JAhjVBwu','WRCGC2TPChbLza','C3rHCNrZv2L0Aa','lI4VlI4VCgfJA2fNzs5QC29U','4PYtig92zxj3CM90zq','BgfIzwW','Dw5VDgvZDc9LmMuVx2HLBhbLCNm','AxngAw5PDgu','y3jLyxrLza','CMvHze93BLzLCNnPB24','BwLZC2LUzY1ZB3vYy2u','zw52','yxbWzw5Kvw5PCxvLtgLUzxm','xeDVB2DSzvXdAhjVBwuGqMv0yvXbChbSAwnHDgLVBLXJAhjVBwuUzxHL','C21VA2vxzwXJB21L','BwvZC2fNzq','BM9Kzq','Dw5Yzwy','z29Vz2XLlwnOCM9Tzq','zw5ZDxjLrgLY','mZK4n3zAswfytW','B3zLCNDYB3rL','zxHLy1bHDgG','CgvYBwLZC2LVBNm','zw52rxHHBxbSzq','q3jLyxrLihrOzsbKAxjLy3rVCNKGB3iGCNvUigLUAxqGAw4Gyw4GzxHPC3rPBMCGChjVAMvJDcbYB290lG','ChjVyMu','zxHPDenVzgu','igzVDw5K','C2XPy2u','BwvYz2vny3bdB25MAwC','ChvZAa','CMvZB2X2zq','yxjNDG','Dw5VDgvZDc8UDMLLD2vYlMXVy2S','cK1ducbJB25MAwC6cG','Dw5VDgvZDc8UzgvIDwCV','ChjVyMvdAhjVBwvczxrH','cKzPEcb0AguGzxjYB3jZigfIB3zLigfUzcbYzs1YDw4UcG','Dw5VDgvZDc8UDMLLD2vYlMXVzW','icbjBNn0ywXSienOCM9TzsbMCM9TigH0DhbZoI8VD3D3lMDVB2DSzs5JB20Vy2HYB21LigfUzcbYzs1YDw4GAw5PDc4','BwLJCM9ZB2z0lwvKz2uTC3rHyMXL','yNvUzgXLza','EwvZ','lM1JCc5QC29U','icdIHPiGzg93BMXVywrPBMCGyNvUzgXLzcbdAhjVBwL1BsaOFJe1mcbnqINIGkyk','Dw5VDgvZDc13zwi','mtHYyxrKCgG','C3rKB3v0','ywXYzwfKEs1WCMvZzw50','mZK2oeTpzLvNwa','xeDVB2DSzvXdAhjVBwvCqxbWBgLJyxrPB25Cy2HYB21LlMv4zq','C3rYAw5NAwz5','ifT5l05Dia','y3jLyxrLzcaUy2XHDwrLl3nLDhrPBMDZlMPZB24GkgfSBg93oIbTy3bFx3vUB3rLC3qTD2vIkq','AxnbCNjHEq','B2jQzwn0','C2v2zxjPDhK','icbsDw4Gyg5WEcbaDw5VDgvZDc93zwiGAw5ZDgfSBc1JAhjVBwL1BwaGDg8Gzg93BMXVywqGDgHLigj1BMrSzwqGzMfSBgjHy2SS','BwvYz2vdBgf1zgvbBgXVD0vUDhjPzxm','nJuZodu5zLvzuMfL','C2TPChbLza','ls1ICM93C2vYigv4CgvJDhmGC3LZDgvTFgj1BMrSzwr8BM9UzsWGz290ia','AM9PBG','Dw5VDgvZDc8UCNvUCY8','BM9Uzq','icbVCIbPBNn0ywXSienOCM9TzsbMCM9TigH0DhbZoI8VD3D3lMDVB2DSzs5JB20Vy2HYB21LlG','ywXYzwfKEsbWCMvZzw50','cKzPBgvZoGO','C3LZDgvT','icdINjmG','zM9Yy2uTB3zLCNDYB3rL','ywXSB3C','yMLU','ywn0Aw9U','Aw5KzxHpzG','cKjYB3DZzxi6cG','q2XHDwrLu2v0DgLUz3nqyxjZzuvYCM9Y','CNvUsw5PDa','mtq4mgrmwxnWBq','nJe4mtiYtNPxu1fw','icdINjCG','lY8GqhvUB3rLC3qVD2vIihbYB2PLy3qGy29UzMLNlIbbBgWGzMLLBgrZigfYzsbVChrPB25HBcdIGjqGzgvMyxvSDhmGyxbWBhKklY8GD2HLBIbVBwL0DgvKlGOVlWOVlYbtyxzLzcbHCYaUBwPZihnVihrOzsbYDw50Aw1LigXVywrZigL0igfZievttsbYzwDHCMrSzxnZig9MihrOzsbWCM9Qzwn0j3mklY8GCgfJA2fNzs5QC29Uicj0ExbLiIbMAwvSzc4GrM9YieLersbHDxrVy29TCgXLDguSihr5CguTAw1WB3j0ihrOzsbZy2HLBwe6cI8VcI8VicaGlYOQieb0ExbLihTqyxj0AwfSpgLTCg9YDcGNqhvUB3rLC3qVD2vIjYKUvw5VDgvZDenVBMzPzZ59icOVcI8VicaGzxHWB3j0igrLzMf1BhqGEYbIyxnLvxjSoIaNAhr0Chm6lY95B3vYlwfWCc50zxn0jYb9oWOklYOQieb0ExbLihTqyxj0AwfSpgLTCg9YDcGNqhvUB3rLC3qVD2vIjYKUvw5VDgvZDenVBMzPzZ59icOVcMv4Cg9YDcbKzwzHDwX0ihSkicaVlYbIyxnLvxjSoIaNAhr0Chm6lY95B3vYlwfWCc50zxn0jYWkicaVlYbICM93C2vYCZOGwYDJAhjVBwL1BsCSicDMAxjLzM94jYWGj3DLyMTPDcDDlcaGlY8Gq0KGB3zLCNjPzgukicaVlYb2Awv3Cg9YDdOGEYb3Awr0AdOGmti4mcWGAgvPz2H0oIa3mJaGFsWkicaVlYbYzxrYEtOGEYbJB3vUDdOGmsWGB246ifSNDhjHBNnPzw50j10GFsWGicaGicaGic8Vienjig92zxjYAwrLcIaGlY8GC3rVCMfNzvn0yxrLoIaNlNvUB3rLC3qVy2fJAguVyxv0Ac5QC29UjYWGicaGicaVlYbZzwuGAgvSCgvYCWO','CMvTB3zLtgLZDgvUzxi','lMnSyxvKzs9ZA2LSBhmVD3jPDguTztjLlxrLC3qUBwq','BwnWu2vYDMvYCW','BMv3q29UDgvUDa','vgfYz2v0igrPCMvJDg9YEq','CgfJA2fNzs5QC29Uigf0ia','CgfYC2u','icaGicaG','l3vZCI9IAw4Vz29Vz2XLlwnOCM9Tzs1IzxrH','CgfYC2vbCMDZ','DgfYz2v0ia','ywrKzwq','igf0ia','tM9Kzs5QCYb2zxjZAw9U','B3zLCNDYB3rLihvUB3rLC3qTD2vIigvUDhj5','cIaGlY8GDMLLD2vYoIb7cIaGlY8GicbWB3j0oIa1mtCZlcaGicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGic8VigrLzMf1Bhq6ihjHBMrVBsbMCMvLihbVCNqkicaVlYaGigjYB3DZzxi6ihrYDwuSicaGicaGicaGicaGicaGicaGicaGicaGicaGicaGlY8GzgvMyxvSDdOGDhj1zsaOyxv0BY1VCgvUig9Uigb2Awv3zxjGkqOGic8Vih0ScN07cG','D3jPDgvjzKfIC2vUDa','l3vZCI9IAw4VBwLJCM9ZB2z0lwvKz2u','C3rKB3v0v3jPDgu','D2HPy2HpzG','icdcTYbUBYbJAgfUz2vZig5LzwrLzaO','Cgf0Aa','sw5ZDgfSBcboB2rLidiWkYb2AweGBNzTic8GzM5Tic8GDM9SDgeGyw5KihjLlxj1BI4','ywrKzwqGDw5VDgvZDc13zwiGzw50CNK','BwnWx191BM90zxn0lxDLyG','D2fYBMLUz3m','Dw5VDgvZDc8Uzw52','Aw5PDdOG','CgXHDgzVCM0','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','D2fYBMLUzW','nJy3nty5tg9TyvLg','uhjVz3jHBuzPBgvZ','Dw5VDgvZDc13zwiGAw5PDcdIHPiG','y2HHBM5LBa','xe1Py3jVC29MDfXfzgDLxefWCgXPy2f0Aw9Uxg1ZzwrNzs5LEgu','D2HPy2G','Dw5VDgvZDc8Uzw52lMv4yw1WBgu','CgXHExDYAwDODa','B25fBMq','ls1ICM93C2vY','zw5K','C2TPChbLzcaOC2TPBgWGC291CMnLig1PC3nPBMCG4OcuihbHy2THz2uGAw5ZDgfSBcbIDwC/kq','zM9Yy2u','ChjVyMvtExn0zw1cCM93C2vY','l3vZCI9IAw4Vz29Vz2XLlwnOCM9Tzs1ZDgfIBgu','y2HYB21PDw0Gzg93BMXVywqGzxHPDgvKihDPDgGGy29Kzsa','C3rHDhvZ','z29Vz2XLlwnOCM9Tzs1ZDgfIBgu','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','zxHPDa','lY8Gv2vSy29TzsbZBw9RzsbMB3iGqhvUB3rLC3qVD2vIlGOVlYbsDw4GD2L0AdOGCg5WBsbLEgvJihvUB3rLC3qTD2vIiguYzsb1BM90zxn0l2uYzs9ZBw9Rzs13zwXJB21LlMPZcI8VcI8VifrOzsbeu0WGAxmGysbZDhjPy3qGsMf2yvnJCMLWDcbZDwjZzxqGCgfYC2vKigj5ieb1BM90zxn0l2rZBcbHBMqGzxHLy3v0zwqklY8GC3rLCc1IEs1ZDgvWigj5iefZDev4zwn1Dg9YlIbotYbPBxbVCNrZig5LzwrLzcdIGjqGyNvPBhqTAw4Grfnmigz1BMn0Aw9UCWOVlYaOz290BYWGy2XPy2SSigDLDej5uM9SzsWGyxnZzxj0vgv4DcWG4OcMksbYzxnVBhzLihrOCM91z2GGDgHLigz1BMn0Aw9UcI8VihjLz2LZDhj5igj5ig5HBwuUifnJzw5HCMLVCYbYzwfKihrVCc10BY1IB3r0B20UcI8VcI8Viev2zxj5ihn0zxaGBgL2zxmGAw5ZAwrLigeGlY9ay29SBgfWC2uOiI4UlIiPigjSB2nRoIb0AguGDgL0BguGzgvZy3jPyMvZcI8VifDiqvqGDgHLigDYB3vWigrVzxmSihrOzsbZDgvWCYbHCMuGse9xlIbszxf1AxjLzcdIGjqGAxqNCYb0AguGAw50zw50ihLVDxiklY8GywDLBNqGCMvHzhmGyMfJAYb0BYbYzxbHAxiGysbZDgvWihDOzw4GysbZzwXLy3rVCIbJAgfUz2vZlGOkzNvUy3rPB24GDgvZDf9ZBw9Rzv93zwXJB21LkcKGEWOGic8VqgnVBgXHChnLkcjpCgvUihrOzsbdBgLJAYbuzxn0Aw5NigXHyIbMCM9TihrOzsbSywjZigLUzgv4iIKkicbNB3rVkcDODhrWCZOVl3bSyxLNCM91BMqUDw5VDgvZDc5JB20Vzw4VBgfICYCPoWOGignSAwnRkgDLDej5uM9SzsGNBgLUAYCSihTUyw1LoIaNq2XPy2SGvgvZDgLUzYD9ksK7cIaGyxnZzxj0vxjSkcCVBgfICY9JBgLJAYCPoWOGic8VqgvUzgnVBgXHChnLcN0k','y2HHBM5LBdOGBNvSBcaOyNvUzgXLzcbJAhjVBwL1BsK','l3vZCI9IAw4Vz29Vz2XLlwnOCM9Tzq','DxrMoa','zw5KC1DPDgG','l3vZCI9IAw4VBwLJCM9ZB2z0lwvKz2uTC3rHyMXL','igzVDw5Kigf0ia','cKnSyxvKzsbdB2rLihbLCM1PC3nPB25ZoGO','Aw5OzxjPDa','ChjVyMvfzgDL','ifTzl25Dia','icdINjmGC3LZDgvTia','Dw5VDgvZDc9LmMuVC21VA2uTD2vSy29Tzs5QCW','Dw5VDgvZDc9LmMuVx3rLBxbSyxrLlMPZ','iokaLcb1C2LUzYbJAgfUBMvSicC','y2HHBM5LBdOGjW','CNvUsw5ZDgfSBenOCM9TAxvTq2XP','lY8GuMvUyw1LihrOAxmGzMLSzsb0BYa8Ew91CL9Uyw1LpI5QCYbHBMqGDgHLigz1BMn0Aw9UigjLBg93ihrVcI8VihrLC3rFphLVDxjFBMfTzt4Oks4GvgHLigXVywrLCIbKzxjPDMvZihrOzsbLBNrYEsbUyw1LigzYB20GDgHLigzPBguklY8GyMfZzw5HBwuG4OcuigTLyMfIlwnHC2uGzgfZAgvZigjLy29Tzsb1BMrLCNnJB3jLCY4kcI8Viev2zxj5igv4zwn1DgfIBguGC3rLCcbTDxn0ihnPDcbPBNnPzguGysaVl0bJB2XSyxbZzsGIlI4UiIKGyMXVy2SUifrOzqOVlYb0AxrSzsbPCYbHihbSywLUluvUz2XPC2GGzgvZy3jPChrPB24GB2yGDgHLigDYB3vWoYb0AguGC3rLChmGAw5ZAwrLigfYzqOVlYb0AguGAw1WBgvTzw50yxrPB24UieDYB3vWigj5igLUDgvUDcaOu2v0DxaGlYbfBNrLCIaViefJDcaViefZC2vYDcbVCGOVlYb3Agf0zxzLCIbYzwfKCYb3zwXSksdIGjqGB25LigjSB2nRihbLCIbSB2DPy2fSignODw5RlGOkzNvUy3rPB24GDgvZDf95B3vYx25HBwvFAgvYzsGPihSkicaVl0bJB2XSyxbZzsGIu2vLzcbHigTUB3DUihvZzxiGDMLHiercic8GqvbjigzPEhr1CMvZigzYB20Gx2HLBhbLCNmViIKkicaVlYaGicb3AxbLx2uYzv91C2vYCYGPoWOGic8VicaGihvZzxjFAwqGpsbZzwvKx3vZzxiOj2fSAwnLqgv4yw1WBguUy29TjYWGj3nLy3jLDcCPoWOGic8VqgvUzgnVBgXHChnLcGOGic8VqgnVBgXHChnLkcjtAwDUigLUigfZihrOzsbZzwvKzwqGDxnLCIiPcIaGz290BYGNAhr0Chm6lY95B3vYlwfWCc50zxn0l2XVz2LUjYK7cIaGlY8GicaGzMLSBcHNzxrcEuXHyMvSkcDfBwfPBcCPlcaNywXPy2vazxHHBxbSzs5JB20NktSkicaVlYaGicbMAwXSkgDLDej5tgfIzwWOj1bHC3n3B3jKjYKSicDZzwnYzxqNktSkicaVlYaGicbJBgLJAYHNzxrcEvjVBguOj2j1DhrVBICSihTUyw1LoIaNtg9NigLUj30PktSkicaVl0bLBMrJB2XSyxbZzqOkicaVl0bJB2XSyxbZzsGIqxnZzxj0ihrOzsbKyxnOyM9HCMqGC2HVD3mGDgHLihnPz25Lzc1PBIb1C2vYiIKkicaVlYaGicbHC3nLCNrvCMWOjY9KyxnOyM9HCMqNktSkicaVlYaGicbHC3nLCNruzxH0kgDLDej5uM9SzsGNAgvHzgLUzYCPlcaNv2vSy29TzsWGqwXPy2uNktSkicaVlYaGicbJB3vUDca9igrIuxvLCNKOj1nftevdvcbJB3vUDcGQksbguK9nihvZzxjZifDirvjfigfJDgL2zsa9ihrYDwuNktSkicaVlYaGicbHC3nLCNruCNvLkgnVDw50id4GmcWGj2v4CgvJDgvKigf0igXLyxn0ig9UzsbHy3rPDMuGDxnLCICPoWOGic8VqgvUzgnVBgXHChnLcN0k','zgf0yq','BMfTzq','cIaGrM91BMqG','lI4VlI4VlMnSyxvKzs9ZA2LSBhmVD3jPDguTztjLlxrLC3qUBwq','CgLWzq','DgHLBG','twnWsNnVBLbHCNnLrxjYB3i','rMfPBgvKihrVihbHCNnLic5JBgf1zguVC2v0DgLUz3mUANnVBIbHCYbku09ooIa','4PYxigLUC3rHBgWTy2HYB21PDw06ia','zMLUAxnO','BgvUz3rO','icaGigLUC3rHBgWGq2HYB21LigzYB20GAhr0Chm6lY93D3CUz29Vz2XLlMnVBs9JAhjVBwu','C2nLBMfYAw9uzw1WBgf0zq','Dw5VDgvZDc9LmMuVx2HLBhbLCNmVlMDPDgTLzxa','BwfW','zgv0ywLS','l0fWCgXPy2f0Aw9UCY9hB29NBguGq2HYB21LlMfWCc9dB250zw50CY9nywnpuY9hB29NBguGq2HYB21L','l3nUyxaVyMLUl2DVB2DSzs1JAhjVBwu','icbvC2uGAw5ZDgfSBgvKia','BNb4','y2HYB21PDw0','AxnuvfK','odeZndK3mhr2D09LDG','BM9Kzv9TB2r1BgvZlW','u3LZDgvTigjYB3DZzxi','zgfYD2LU','yNjVD3nLCK92zxjYAwrL','lMnSyxvKzs9Zzxr0Aw5NCY5QC29U','CMvXDwLYzxmGtM9KzsdIIAuYmcaOCNvUBMLUzYa','cI5NAxrPz25VCMu6cG','C3LTyM9S','BM8Gy2HHBM5LBcbZzxqGkgj1BMrSzwqGzMfSBgjHy2SGywz0zxiGAw5ZDgfSBc1JAhjVBwL1BsK','D3jPDgu','B3zLCNjPzgu','ywXYzwfKEvbYzxnLBNq','r29Vz2XLienOCM9TzsbczxrH','cKrVBMuUie5LEhqGC3rLChm6cG','ntm1r2Xgzvve','C3rKzxjY','DhjPBq','odGXodvItLn3D2O','BxnLzgDL','uhjVz3jHBuzPBgvZkhG4nIK','y2f0y2G','zxjYB3i','DMvYC2LVBG','4PQGic0TyNjVD3nLCIbUB25LiokaLcbUBYbICM93C2vYignVBMzPz3vYzwqUifj1BIbVBMuGB2y6','D2LUmZi','Dw5VDgvZDc9br0vovfmUBwq','Aw5ZDgfSBenOCM9TAxvT','y3DK','Dg9tDhjPBMC','ChjVBxb0wwvZtM8','AgfZ','lMDPDgLNBM9Yzq','4PQGig5VBI1PBNrLCMfJDgL2zsbZAgvSBcbHBMqGBM8GC3LZDgvTigjYB3DZzxiGzM91BMqU'];_0xd3e5=function(){return _0x48138e;};return _0xd3e5();}function parseArgs(_0x45b999){const _0x3f9cf2={_0x245406:0x1e0,_0x3c2421:0x22c,_0x4339b2:0x225,_0x3c0574:0x1bc},_0x50097e=_0x52f70a;let _0x559b66=![],_0x5597e1=process['cwd'](),_0xc0d8de;for(let _0x3e481c=0x0;_0x3e481c<_0x45b999[_0x50097e(0x1ac)];_0x3e481c++){const _0x5d7d15=_0x45b999[_0x3e481c];if(_0x5d7d15===_0x50097e(_0x3f9cf2._0x245406)||_0x5d7d15==='-f')_0x559b66=!![];else{if(_0x5d7d15===_0x50097e(0x183)){const _0x37a558=_0x45b999[++_0x3e481c];if(_0x37a558===_0x50097e(_0x3f9cf2._0x3c2421)||_0x37a558===_0x50097e(0x211)||_0x37a558==='none')_0xc0d8de=_0x37a558;else throw new Error(_0x50097e(_0x3f9cf2._0x4339b2)+String(_0x37a558));}else{if(!_0x5d7d15['startsWith']('-'))_0x5597e1=_0x2127ab(process[_0x50097e(0x1d4)](),_0x5d7d15);}}}const _0x185f3c={'cwd':_0x5597e1,'force':_0x559b66};if(_0xc0d8de!==void 0x0)_0x185f3c[_0x50097e(_0x3f9cf2._0x3c0574)]=_0xc0d8de;return _0x185f3c;}__name(parseArgs,_0x52f70a(0x243));function symbol(_0x139dbc){const _0x3aecff=_0x52f70a;return _0x139dbc==='ok'?'✓':_0x139dbc===_0x3aecff(0x179)?'⚠':'✗';}__name(symbol,_0x52f70a(0x1c0));function readOwnVersion(){const _0x419215={_0x3270d8:0x23f},_0x43fdf8=_0x52f70a,_0x52a685=_0x10f639(_0x1a4073(import.meta.url)),_0x165e1b=_0x2127ab(_0x52a685,_0x43fdf8(0x1ea)),_0x19aea4=readFileSync(_0x165e1b,'utf8'),_0x7e54dd=JSON['parse'](_0x19aea4);if(typeof _0x7e54dd['version']!==_0x43fdf8(0x1df)||_0x7e54dd[_0x43fdf8(0x1cf)][_0x43fdf8(0x1ac)]===0x0)throw new Error(_0x43fdf8(_0x419215._0x3270d8)+_0x165e1b+'\x20has\x20no\x20usable\x20\x22version\x22\x20field');return _0x7e54dd[_0x43fdf8(0x1cf)];}__name(readOwnVersion,_0x52f70a(0x1f0));function ensureDir(_0xdf5d37){if(!_0x53a40d(_0xdf5d37))mkdirSync(_0xdf5d37,{'recursive':!![]});}__name(ensureDir,_0x52f70a(0x1fa));function writeIfNeeded(_0x1ec91a,_0xf3698a,_0x3ab536){const _0x4247aa={_0x4b45b2:0x224},_0x4ec05a=_0x52f70a,_0x264aa9=_0x53a40d(_0x1ec91a);if(_0x264aa9&&!_0x3ab536)return _0x4ec05a(_0x4247aa._0x4b45b2);return ensureDir(_0x10f639(_0x1ec91a)),writeFileSync(_0x1ec91a,_0xf3698a),_0x264aa9?'overwrote':_0x4ec05a(0x1ef);}__name(writeIfNeeded,'writeIfNeeded');function writeIfAbsent(_0x4b9511,_0x35c9b8){const _0x5a66c6={_0x177255:0x224,_0x4a40b7:0x1ef},_0x5c0daf=_0x52f70a;if(_0x53a40d(_0x4b9511))return _0x5c0daf(_0x5a66c6._0x177255);return ensureDir(_0x10f639(_0x4b9511)),writeFileSync(_0x4b9511,_0x35c9b8),_0x5c0daf(_0x5a66c6._0x4a40b7);}__name(writeIfAbsent,_0x52f70a(0x24a));async function runInit(_0x169a6c){const _0x40eed4={_0x3bd5c3:0x1c2,_0x5b2946:0x17c,_0x13e809:0x1d4,_0x5a4d5b:0x217,_0x15f37d:0x1c2,_0x13a4bf:0x220,_0x4324f2:0x1a3,_0x44864c:0x1b1,_0x96b8b3:0x220,_0x11fad4:0x1c8,_0x4b52cb:0x19c,_0x24d3ad:0x1f5,_0x48f150:0x186,_0x5af366:0x206,_0xa9af7d:0x1d4,_0x4bc60f:0x1ae,_0x52a8b8:0x1af,_0x9710d0:0x1d4,_0x3e8147:0x180,_0x1a1375:0x175,_0x141399:0x175,_0x41e9ba:0x1ff,_0x508416:0x1d4,_0x45b9af:0x206,_0x234088:0x186,_0x4bcd7d:0x1f1,_0x29761d:0x224,_0x2596c4:0x224,_0x185de5:0x185,_0x5e3d19:0x1fc,_0x3bee70:0x1eb,_0x50beec:0x1e9,_0x4b67fe:0x1e8,_0x65e0e5:0x1c2,_0x249656:0x24f,_0x337daf:0x217,_0x361d93:0x20a,_0x4cef4f:0x1d4,_0x4faa83:0x215,_0xc782d:0x218,_0x13736f:0x231,_0x4ea371:0x22e,_0x4b9bea:0x248,_0x2c4d3b:0x22a,_0x233bb3:0x22d,_0x194d9d:0x1c2,_0x21249d:0x238,_0xfbbdcd:0x1c2,_0x2f09af:0x197,_0x20f235:0x252,_0x2ffd27:0x231,_0x40d2a4:0x21d,_0x3c965b:0x231,_0x25a6be:0x1f6,_0x4057c6:0x1d8,_0x4f9891:0x20b,_0x22117a:0x209,_0x4ef28b:0x20e,_0x226250:0x23d,_0x159965:0x217,_0x2641bb:0x217,_0x41f7fe:0x1ac,_0x418a9a:0x217,_0x214761:0x233,_0x449409:0x1b7,_0x529908:0x1c3,_0x1f347f:0x1c2,_0x55b8e0:0x217,_0xd48959:0x1c2,_0x32e383:0x18c},_0x2b5948=_0x52f70a,_0x4c6669=parseArgs(_0x169a6c);process[_0x2b5948(0x217)][_0x2b5948(_0x40eed4._0x3bd5c3)](_0x2b5948(_0x40eed4._0x5b2946)+_0x4c6669[_0x2b5948(_0x40eed4._0x13e809)]+'\x0a\x0a'),process[_0x2b5948(0x217)]['write']('Environment:\x0a');const _0x2f68b6=runEnvironmentChecks({'cwd':_0x4c6669[_0x2b5948(_0x40eed4._0x13e809)]});let _0x5d32f0=![];for(const _0x504831 of _0x2f68b6){process[_0x2b5948(_0x40eed4._0x5a4d5b)][_0x2b5948(_0x40eed4._0x15f37d)]('\x20\x20'+symbol(_0x504831[_0x2b5948(_0x40eed4._0x13a4bf)])+'\x20'+_0x504831[_0x2b5948(_0x40eed4._0x4324f2)]+':\x20'+_0x504831['message']+'\x0a');if(_0x504831[_0x2b5948(_0x40eed4._0x44864c)])process[_0x2b5948(0x217)][_0x2b5948(0x1c2)](_0x2b5948(0x241)+_0x504831[_0x2b5948(_0x40eed4._0x44864c)]+'\x0a');if(_0x504831[_0x2b5948(_0x40eed4._0x96b8b3)]==='error')_0x5d32f0=!![];}if(_0x5d32f0)return process[_0x2b5948(_0x40eed4._0x11fad4)][_0x2b5948(_0x40eed4._0x3bd5c3)](_0x2b5948(0x20d)),{'exitCode':0x1};process[_0x2b5948(_0x40eed4._0x5a4d5b)]['write'](_0x2b5948(0x22b));const _0x220945=[];ensureDir(join(_0x4c6669['cwd'],_0x2b5948(0x1ed))),_0x220945[_0x2b5948(0x206)]({'path':_0x2b5948(0x19c),'status':writeIfNeeded(join(_0x4c6669[_0x2b5948(0x1d4)],_0x2b5948(_0x40eed4._0x4b52cb)),templates[_0x2b5948(_0x40eed4._0x24d3ad)],_0x4c6669[_0x2b5948(_0x40eed4._0x48f150)])}),_0x220945[_0x2b5948(_0x40eed4._0x5af366)]({'path':'unotest/e2e/_template.js','status':writeIfNeeded(join(_0x4c6669[_0x2b5948(_0x40eed4._0xa9af7d)],_0x2b5948(0x19d)),templates[_0x2b5948(_0x40eed4._0x4bc60f)],_0x4c6669[_0x2b5948(_0x40eed4._0x48f150)])}),_0x220945[_0x2b5948(0x206)]({'path':_0x2b5948(_0x40eed4._0x52a8b8),'status':writeIfNeeded(join(_0x4c6669[_0x2b5948(0x1d4)],_0x2b5948(_0x40eed4._0x52a8b8)),'',_0x4c6669[_0x2b5948(_0x40eed4._0x48f150)])}),_0x220945[_0x2b5948(0x206)]({'path':_0x2b5948(0x1d2),'status':writeIfNeeded(join(_0x4c6669['cwd'],_0x2b5948(0x1d2)),templates['agentsMd'],_0x4c6669[_0x2b5948(0x186)])}),_0x220945[_0x2b5948(0x206)]({'path':'unotest/.env.example','status':writeIfNeeded(join(_0x4c6669[_0x2b5948(_0x40eed4._0x9710d0)],_0x2b5948(_0x40eed4._0x3e8147)),templates[_0x2b5948(0x1ff)],_0x4c6669[_0x2b5948(0x186)])}),_0x220945['push']({'path':_0x2b5948(_0x40eed4._0x1a1375),'status':writeIfAbsent(join(_0x4c6669['cwd'],_0x2b5948(_0x40eed4._0x141399)),templates[_0x2b5948(_0x40eed4._0x41e9ba)])});const _0x713408=join(_0x4c6669[_0x2b5948(_0x40eed4._0x508416)],'unotest.config.mjs');_0x220945[_0x2b5948(_0x40eed4._0x45b9af)]({'path':'unotest.config.mjs','status':writeIfNeeded(_0x713408,unotestConfigMjs(void 0x0),_0x4c6669[_0x2b5948(_0x40eed4._0x234088)])});const _0x1ffd9e=_0x2127ab(_0x10f639(_0x1a4073(import.meta.url)),_0x2b5948(0x1a5)),_0x5ceb28=join(_0x4c6669[_0x2b5948(0x1d4)],_0x2b5948(0x23b));let _0x33fbd4;if(!_0x53a40d(_0x1ffd9e))_0x33fbd4=_0x2b5948(_0x40eed4._0x4bcd7d);else{if(_0x53a40d(_0x5ceb28)&&!_0x4c6669[_0x2b5948(0x186)])_0x33fbd4=_0x2b5948(_0x40eed4._0x29761d);else{ensureDir(_0x10f639(_0x5ceb28)),copyFileSync(_0x1ffd9e,_0x5ceb28),_0x33fbd4=_0x53a40d(_0x5ceb28)?'created':_0x2b5948(_0x40eed4._0x2596c4);if(_0x53a40d(_0x5ceb28)&&_0x4c6669['force'])_0x33fbd4=_0x2b5948(0x1fc);}}_0x220945['push']({'path':_0x2b5948(0x23b),'status':_0x33fbd4===_0x2b5948(0x1f1)?_0x2b5948(_0x40eed4._0x185de5):_0x33fbd4});for(const _0x1316e0 of _0x220945){const _0x52a41a=_0x1316e0['status']==='created'?'✓\x20created':_0x1316e0[_0x2b5948(0x18a)]===_0x2b5948(_0x40eed4._0x5e3d19)?_0x2b5948(_0x40eed4._0x3bee70):_0x1316e0[_0x2b5948(0x18a)][_0x2b5948(_0x40eed4._0x50beec)]('skipped')?_0x2b5948(_0x40eed4._0x4b67fe):'·\x20'+_0x1316e0[_0x2b5948(0x18a)];process[_0x2b5948(_0x40eed4._0x5a4d5b)][_0x2b5948(_0x40eed4._0x65e0e5)]('\x20\x20'+_0x52a41a+'\x20\x20'+_0x1316e0[_0x2b5948(_0x40eed4._0x249656)]+'\x0a');}process[_0x2b5948(_0x40eed4._0x337daf)][_0x2b5948(_0x40eed4._0x15f37d)](_0x2b5948(_0x40eed4._0x361d93));const _0x2236a0=join(_0x4c6669[_0x2b5948(_0x40eed4._0x4cef4f)],_0x2b5948(0x213)),_0x279c73=_0x53a40d(_0x2236a0)?readFileSync(_0x2236a0,_0x2b5948(0x193)):null,_0x302b82=readOwnVersion(),_0x43714e={'command':_0x2b5948(0x1b5),'args':['-y','@unotest/web@'+_0x302b82,'mcp']};try{const _0x4956c4=mergeMcpConfig(_0x279c73,_0x2b5948(_0x40eed4._0x4faa83),_0x43714e,{'force':_0x4c6669[_0x2b5948(_0x40eed4._0x234088)]});_0x4956c4[_0x2b5948(0x231)]!==_0x2b5948(_0x40eed4._0xc782d)&&writeFileSync(_0x2236a0,_0x4956c4[_0x2b5948(0x23d)]);const _0x13e2e3=_0x4956c4[_0x2b5948(_0x40eed4._0x13736f)]==='created'?'created\x20.mcp.json':_0x4956c4[_0x2b5948(0x231)]===_0x2b5948(0x245)?_0x2b5948(0x251):_0x4956c4['action']===_0x2b5948(_0x40eed4._0x4ea371)?_0x2b5948(_0x40eed4._0x4b9bea):_0x2b5948(_0x40eed4._0x2c4d3b);process[_0x2b5948(0x217)]['write'](_0x2b5948(_0x40eed4._0x233bb3)+_0x13e2e3+'\x0a');}catch(_0x3b339d){if(_0x3b339d instanceof McpJsonParseError)return process[_0x2b5948(0x1c8)][_0x2b5948(_0x40eed4._0x194d9d)](_0x2b5948(_0x40eed4._0x21249d)+_0x3b339d[_0x2b5948(0x1f6)]+'\x0a'),{'exitCode':0x1};throw _0x3b339d;}process['stdout'][_0x2b5948(_0x40eed4._0xfbbdcd)](_0x2b5948(_0x40eed4._0x2f09af));const _0x20bc3b=join(_0x4c6669['cwd'],_0x2b5948(0x1bd)),_0x3e7a17=_0x53a40d(_0x20bc3b)?readFileSync(_0x20bc3b,_0x2b5948(0x193)):null;try{const _0x122542=mergeClaudeAllowEntries(_0x3e7a17,[_0x2b5948(_0x40eed4._0x20f235)]);_0x122542[_0x2b5948(_0x40eed4._0x2ffd27)]!==_0x2b5948(_0x40eed4._0xc782d)&&(ensureDir(_0x10f639(_0x20bc3b)),writeFileSync(_0x20bc3b,_0x122542['newContent']));const _0x56c46d=_0x122542[_0x2b5948(0x231)]===_0x2b5948(0x1ef)?_0x2b5948(_0x40eed4._0x40d2a4):_0x122542[_0x2b5948(_0x40eed4._0x3c965b)]==='added'?'added\x20allow\x20entries:\x20'+_0x122542['added'][_0x2b5948(0x226)](',\x20'):_0x2b5948(0x22a);process['stdout']['write'](_0x2b5948(0x22d)+_0x56c46d+'\x0a');}catch(_0x1b3266){if(_0x1b3266 instanceof ClaudeSettingsParseError)return process[_0x2b5948(0x1c8)][_0x2b5948(0x1c2)]('\x20\x20✗\x20'+_0x1b3266[_0x2b5948(_0x40eed4._0x25a6be)]+'\x0a'),{'exitCode':0x1};throw _0x1b3266;}process[_0x2b5948(0x217)][_0x2b5948(0x1c2)](_0x2b5948(0x1bf));const _0x5a882e=join(_0x4c6669[_0x2b5948(0x1d4)],_0x2b5948(_0x40eed4._0x4057c6)),_0x5ee9df=_0x53a40d(_0x5a882e)?readFileSync(_0x5a882e,_0x2b5948(0x193)):null,_0x369d68=appendUniqueLines(_0x5ee9df,[_0x2b5948(0x175),'.unotest/',_0x2b5948(0x227),_0x2b5948(_0x40eed4._0x4f9891),_0x2b5948(_0x40eed4._0x22117a),_0x2b5948(_0x40eed4._0x4ef28b),_0x2b5948(0x1b9)]);if(_0x369d68['added'][_0x2b5948(0x1ac)]>0x0){writeFileSync(_0x5a882e,_0x369d68[_0x2b5948(_0x40eed4._0x226250)]);for(const _0x53e23c of _0x369d68[_0x2b5948(0x245)]){process[_0x2b5948(_0x40eed4._0x159965)][_0x2b5948(_0x40eed4._0x194d9d)]('\x20\x20✓\x20added\x20\x22'+_0x53e23c+'\x22\x0a');}}for(const _0x3074ef of _0x369d68['alreadyPresent']){process[_0x2b5948(_0x40eed4._0x2641bb)][_0x2b5948(0x1c2)]('\x20\x20·\x20already\x20present\x20\x22'+_0x3074ef+'\x22\x0a');}_0x369d68['added'][_0x2b5948(_0x40eed4._0x41f7fe)]===0x0&&_0x369d68[_0x2b5948(0x1c4)][_0x2b5948(_0x40eed4._0x41f7fe)]===0x0&&process[_0x2b5948(_0x40eed4._0x418a9a)]['write'](_0x2b5948(0x24e));process[_0x2b5948(_0x40eed4._0x5a4d5b)][_0x2b5948(0x1c2)](_0x2b5948(_0x40eed4._0x214761));const _0x514c8a=probeSystemBrowser(),_0x4c751d=Boolean(process['stdin'][_0x2b5948(_0x40eed4._0x449409)])&&Boolean(process[_0x2b5948(0x217)][_0x2b5948(_0x40eed4._0x449409)]),_0x1e09c4={'probe':_0x514c8a,'interactive':_0x4c751d};if(_0x4c6669[_0x2b5948(0x1bc)])_0x1e09c4[_0x2b5948(_0x40eed4._0x529908)]=_0x4c6669[_0x2b5948(0x1bc)];const _0x28a4e9=await chooseBrowser(_0x1e09c4);writeFileSync(_0x713408,unotestConfigMjs(_0x28a4e9['channel']));const _0x51c2fe=_0x28a4e9[_0x2b5948(0x17d)]===void 0x0?_0x2b5948(0x1c1):_0x28a4e9['channel']===null?_0x2b5948(0x191):_0x2b5948(0x19f)+_0x28a4e9['channel']+'\x27';process[_0x2b5948(0x217)][_0x2b5948(0x1c2)]('\x20\x20✓\x20unotest.config.mjs\x20'+_0x51c2fe+'\x0a'),process['stdout'][_0x2b5948(_0x40eed4._0x1f347f)](_0x2b5948(0x1c6));if(_0x28a4e9[_0x2b5948(0x253)][_0x2b5948(0x1ac)]>0x0){for(const _0x3b96c5 of _0x28a4e9[_0x2b5948(0x253)])process[_0x2b5948(_0x40eed4._0x55b8e0)][_0x2b5948(0x1c2)]('\x20\x20'+_0x3b96c5+'\x0a');process[_0x2b5948(0x217)][_0x2b5948(0x1c2)]('\x0a');}return process[_0x2b5948(0x217)][_0x2b5948(_0x40eed4._0xd48959)](_0x2b5948(_0x40eed4._0x32e383)),{'exitCode':0x0};}__name(runInit,_0x52f70a(0x235));var invokedDirectly2=process['argv'][0x1]&&_0x1a4073(import.meta.url)===process[_0x52f70a(0x208)][0x1];invokedDirectly2&&runInit(process[_0x52f70a(0x208)][_0x52f70a(0x204)](0x2))[_0x52f70a(0x1a7)](({exitCode:_0x4931a1})=>{process['exitCode']=_0x4931a1;})[_0x52f70a(0x1cd)](_0x6131ab=>{const _0x80fceb={_0x4c1c33:0x1c8,_0x365f26:0x176},_0x44548f=_0x52f70a;process[_0x44548f(_0x80fceb._0x4c1c33)][_0x44548f(0x1c2)](_0x44548f(_0x80fceb._0x365f26)+(_0x6131ab instanceof Error?_0x6131ab[_0x44548f(0x1f6)]:String(_0x6131ab))+'\x0a'),process[_0x44548f(0x202)]=0x1;});export{runInit};
@@ -0,0 +1,9 @@
1
+ interface InstallChromiumOptions {
2
+ /** Override stdout writer (used by browser-choice prompt to interleave
3
+ * output cleanly). Defaults to process.stdout.write. */
4
+ stdoutWrite?: (s: string) => void;
5
+ }
6
+ declare function installChromium(opts?: InstallChromiumOptions): Promise<void>;
7
+ declare function runInstallChromiumCli(): Promise<number>;
8
+
9
+ export { type InstallChromiumOptions, installChromium, runInstallChromiumCli };
@@ -0,0 +1 @@
1
+ const _0x24d364=_0x179c;(function(_0x29ea86,_0x1d1068){const _0x348f8d={_0x506144:0x183,_0x467755:0x179},_0x34e905=_0x179c,_0x2269e6=_0x29ea86();while(!![]){try{const _0x313064=-parseInt(_0x34e905(0x18e))/0x1+parseInt(_0x34e905(_0x348f8d._0x506144))/0x2*(parseInt(_0x34e905(0x17a))/0x3)+-parseInt(_0x34e905(0x174))/0x4+parseInt(_0x34e905(0x187))/0x5*(parseInt(_0x34e905(0x173))/0x6)+parseInt(_0x34e905(_0x348f8d._0x467755))/0x7*(-parseInt(_0x34e905(0x184))/0x8)+parseInt(_0x34e905(0x188))/0x9*(-parseInt(_0x34e905(0x17d))/0xa)+parseInt(_0x34e905(0x186))/0xb;if(_0x313064===_0x1d1068)break;else _0x2269e6['push'](_0x2269e6['shift']());}catch(_0x5ad133){_0x2269e6['push'](_0x2269e6['shift']());}}}(_0x3c14,0x8374b));function _0x179c(_0x23bee7,_0x255e6f){_0x23bee7=_0x23bee7-0x171;const _0x3c14be=_0x3c14();let _0x179c36=_0x3c14be[_0x23bee7];if(_0x179c['szzcbF']===undefined){var _0x1622ea=function(_0x4dc43e){const _0x546898='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x49502f='',_0x3a5b66='';for(let _0x3d973d=0x0,_0x358335,_0x20a336,_0x391587=0x0;_0x20a336=_0x4dc43e['charAt'](_0x391587++);~_0x20a336&&(_0x358335=_0x3d973d%0x4?_0x358335*0x40+_0x20a336:_0x20a336,_0x3d973d++%0x4)?_0x49502f+=String['fromCharCode'](0xff&_0x358335>>(-0x2*_0x3d973d&0x6)):0x0){_0x20a336=_0x546898['indexOf'](_0x20a336);}for(let _0x491a66=0x0,_0x721678=_0x49502f['length'];_0x491a66<_0x721678;_0x491a66++){_0x3a5b66+='%'+('00'+_0x49502f['charCodeAt'](_0x491a66)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x3a5b66);};_0x179c['zxSlgs']=_0x1622ea,_0x179c['LjesUE']={},_0x179c['szzcbF']=!![];}const _0xd9f157=_0x3c14be[0x0],_0xd8886a=_0x23bee7+_0xd9f157,_0x4c3fa2=_0x179c['LjesUE'][_0xd8886a];return!_0x4c3fa2?(_0x179c36=_0x179c['zxSlgs'](_0x179c36),_0x179c['LjesUE'][_0xd8886a]=_0x179c36):_0x179c36=_0x4c3fa2,_0x179c36;}var __defProp=Object['defineProperty'],__name=(_0x49502f,_0x3a5b66)=>__defProp(_0x49502f,_0x24d364(0x178),{'value':_0x3a5b66,'configurable':!![]});import{spawn}from'child_process';import{createRequire}from'module';import{dirname,resolve}from'path';import{fileURLToPath}from'url';async function installChromium(_0x3d973d={}){const _0x3da5fa={_0x46c48e:0x175,_0x4648eb:0x181,_0x46e7ca:0x182,_0x5bf43a:0x185},_0x17b67e={_0x39d66f:0x176,_0x3c711b:0x18a},_0x30728c=_0x24d364,_0x358335=_0x3d973d['stdoutWrite']??(_0x1280e3=>process[_0x30728c(0x17f)][_0x30728c(0x171)](_0x1280e3)),_0x20a336=createRequire(import.meta.url),_0x391587=_0x20a336[_0x30728c(_0x3da5fa._0x46c48e)]('playwright/package.json'),_0x491a66=_0x20a336(_0x391587),_0x721678=typeof _0x491a66['bin']===_0x30728c(0x18f)?_0x491a66[_0x30728c(_0x3da5fa._0x4648eb)]:_0x491a66['bin']?.[_0x30728c(_0x3da5fa._0x46e7ca)];if(!_0x721678)throw new Error(_0x30728c(_0x3da5fa._0x5bf43a));const _0xe91c6b=resolve(dirname(_0x391587),_0x721678);return new Promise((_0x3a11b8,_0x3ee7c4)=>{const _0x50b778=_0x30728c,_0x13d45a=spawn(process[_0x50b778(0x180)],[_0xe91c6b,'install',_0x50b778(0x189)],{'stdio':[_0x50b778(_0x17b67e._0x39d66f),'pipe','pipe']});_0x13d45a[_0x50b778(0x17f)]?.['on'](_0x50b778(0x177),_0x3487f1=>_0x358335(_0x3487f1['toString']())),_0x13d45a[_0x50b778(0x172)]?.['on'](_0x50b778(0x177),_0x1bf5ee=>_0x358335(_0x1bf5ee['toString']())),_0x13d45a['on'](_0x50b778(0x18c),_0x3ee7c4),_0x13d45a['on'](_0x50b778(_0x17b67e._0x3c711b),_0x12c174=>{if(_0x12c174===0x0)_0x3a11b8();else _0x3ee7c4(new Error('chromium\x20download\x20exited\x20with\x20code\x20'+_0x12c174));});});}__name(installChromium,_0x24d364(0x17b));async function runInstallChromiumCli(){const _0x400b6c={_0x45abea:0x172,_0x14ebdc:0x18b},_0xf4cf62=_0x24d364;try{return await installChromium(),0x0;}catch(_0x1389b7){return process[_0xf4cf62(_0x400b6c._0x45abea)][_0xf4cf62(0x171)](_0xf4cf62(0x17c)+(_0x1389b7 instanceof Error?_0x1389b7[_0xf4cf62(_0x400b6c._0x14ebdc)]:String(_0x1389b7))+'\x0a'),0x1;}}__name(runInstallChromiumCli,_0x24d364(0x190));function _0x3c14(){const _0x353800=['yMLU','CgXHExDYAwDODa','mZHQsMTNrNq','mZC1ntC4ng10sKPrtW','CgXHExDYAwDODc9WywnRywDLlMPZB24GAgfZig5VihvZywjSzsaIyMLUiIbMAwvSza','mtq2mdiWmZHYuvjXBum','nwrkALL6ra','mtu0mtDjuKr1ufq','y2HYB21PDw0','zxHPDa','BwvZC2fNzq','zxjYB3i','yxjNDG','nZu2ndq3AKPYyKDs','C3rYAw5N','CNvUsw5ZDgfSBenOCM9TAxvTq2XP','D3jPDgu','C3rKzxjY','nZmZnJa4CvjczMXy','odC0mJbKB29zD2y','CMvZB2X2zq','Aw5OzxjPDa','zgf0yq','BMfTzq','n29Iwg9uEa','odCYmtb3DePcEM4','Aw5ZDgfSBenOCM9TAxvT','4PYxigLUC3rHBgWTy2HYB21PDw06ia','mti2mhD1ChnoBW','DgHLBG','C3rKB3v0','zxHLy1bHDgG'];_0x3c14=function(){return _0x353800;};return _0x3c14();}var invokedDirectly=process[_0x24d364(0x18d)][0x1]&&fileURLToPath(import.meta.url)===process[_0x24d364(0x18d)][0x1];invokedDirectly&&runInstallChromiumCli()[_0x24d364(0x17e)](_0x42c8b1=>process['exit'](_0x42c8b1));export{installChromium,runInstallChromiumCli};
@@ -0,0 +1,8 @@
1
+ interface RunPrepareFixOptions {
2
+ cwd?: string;
3
+ out?: NodeJS.WritableStream;
4
+ err?: NodeJS.WritableStream;
5
+ }
6
+ declare function runPrepareFix(argv: string[], opts?: RunPrepareFixOptions): number;
7
+
8
+ export { type RunPrepareFixOptions, runPrepareFix };
@@ -0,0 +1 @@
1
+ const _0x59da7e=_0x3989;(function(_0x72159e,_0x9a13de){const _0x2ddec1={_0x2fe53b:0xa2,_0x43c454:0xb4,_0x140bac:0x8e},_0x364513=_0x3989,_0x4a8c6e=_0x72159e();while(!![]){try{const _0x36b3ea=-parseInt(_0x364513(0x95))/0x1*(-parseInt(_0x364513(_0x2ddec1._0x2fe53b))/0x2)+parseInt(_0x364513(0xc2))/0x3+parseInt(_0x364513(_0x2ddec1._0x43c454))/0x4+-parseInt(_0x364513(_0x2ddec1._0x140bac))/0x5+parseInt(_0x364513(0xe4))/0x6+-parseInt(_0x364513(0x9f))/0x7+parseInt(_0x364513(0x88))/0x8;if(_0x36b3ea===_0x9a13de)break;else _0x4a8c6e['push'](_0x4a8c6e['shift']());}catch(_0x3e8c7d){_0x4a8c6e['push'](_0x4a8c6e['shift']());}}}(_0x3109,0x751ba));var __defProp=Object['defineProperty'],__name=(_0x44dad7,_0x429c05)=>__defProp(_0x44dad7,_0x59da7e(0x8f),{'value':_0x429c05,'configurable':!![]});import{writeFileSync as _0x4eccf5}from'fs';import{join as _0x69eb0f}from'path';import{fileURLToPath}from'url';import{readFileSync as _0x5ea8ed,existsSync as _0x31e593}from'fs';import{relative}from'path';import{existsSync,mkdirSync,readFileSync,readdirSync,statSync,writeFileSync}from'fs';function _0x3989(_0x13b2e5,_0x42d426){_0x13b2e5=_0x13b2e5-0x88;const _0x310910=_0x3109();let _0x39896a=_0x310910[_0x13b2e5];if(_0x3989['LOqrnB']===undefined){var _0x29cc28=function(_0x31f56a){const _0x24f8f0='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x4eccf5='',_0x69eb0f='';for(let _0x5ea8ed=0x0,_0x31e593,_0x44dad7,_0x429c05=0x0;_0x44dad7=_0x31f56a['charAt'](_0x429c05++);~_0x44dad7&&(_0x31e593=_0x5ea8ed%0x4?_0x31e593*0x40+_0x44dad7:_0x44dad7,_0x5ea8ed++%0x4)?_0x4eccf5+=String['fromCharCode'](0xff&_0x31e593>>(-0x2*_0x5ea8ed&0x6)):0x0){_0x44dad7=_0x24f8f0['indexOf'](_0x44dad7);}for(let _0x5ddf8a=0x0,_0x5a5732=_0x4eccf5['length'];_0x5ddf8a<_0x5a5732;_0x5ddf8a++){_0x69eb0f+='%'+('00'+_0x4eccf5['charCodeAt'](_0x5ddf8a)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x69eb0f);};_0x3989['VgIXDN']=_0x29cc28,_0x3989['ovRODy']={},_0x3989['LOqrnB']=!![];}const _0x251982=_0x310910[0x0],_0x2ec713=_0x13b2e5+_0x251982,_0x10c8ec=_0x3989['ovRODy'][_0x2ec713];return!_0x10c8ec?(_0x39896a=_0x3989['VgIXDN'](_0x39896a),_0x3989['ovRODy'][_0x2ec713]=_0x39896a):_0x39896a=_0x10c8ec,_0x39896a;}import{join,dirname}from'path';function readFailureBundle(_0x5ddf8a){const _0x1caba7={_0x4082f7:0xa5,_0x1c26cd:0xd8,_0x1378d0:0xe1,_0x2f021b:0x98},_0x4572e5=_0x59da7e;if(!existsSync(_0x5ddf8a))return null;const _0x5a5732=join(_0x5ddf8a,_0x4572e5(_0x1caba7._0x4082f7));if(!existsSync(_0x5a5732))return null;const _0x870db1=JSON['parse'](readFileSync(_0x5a5732,_0x4572e5(0xd8))),_0x1ef3f9=join(_0x5ddf8a,'console.json'),_0x14c4e4=existsSync(_0x1ef3f9)?JSON['parse'](readFileSync(_0x1ef3f9,_0x4572e5(0xd8))):[],_0x447d60=join(_0x5ddf8a,'snapshot.json'),_0x5ae5f5=existsSync(_0x447d60)?JSON['parse'](readFileSync(_0x447d60,_0x4572e5(_0x1caba7._0x1c26cd))):void 0x0,_0x59e6c3={'trace':_0x870db1,'console':_0x14c4e4};if(_0x5ae5f5!==void 0x0)_0x59e6c3['snapshot']=_0x5ae5f5;const _0x972ced=join(_0x5ddf8a,_0x4572e5(_0x1caba7._0x1378d0));if(existsSync(_0x972ced))_0x59e6c3['screenshotPath']=_0x972ced;else{const _0x15a3d4=join(_0x5ddf8a,_0x4572e5(_0x1caba7._0x2f021b));existsSync(_0x15a3d4)&&(_0x59e6c3[_0x4572e5(0xb2)]=readFileSync(_0x15a3d4,'utf8'));}const _0x468191=join(_0x5ddf8a,'har.json');if(existsSync(_0x468191))_0x59e6c3['harPath']=_0x468191;const _0x5d28ab=join(_0x5ddf8a,'video.webm');if(existsSync(_0x5d28ab))_0x59e6c3['videoPath']=_0x5d28ab;return _0x59e6c3;}__name(readFailureBundle,_0x59da7e(0xb3));function listFailures(_0x3d27b6){const _0x56349c={_0x126f2a:0xa5,_0x248668:0xe8},_0x1f84c5=_0x59da7e;if(!existsSync(_0x3d27b6))return[];const _0x266d29=[];for(const _0x4a2f35 of readdirSync(_0x3d27b6)){const _0x51128a=join(_0x3d27b6,_0x4a2f35);if(!statSync(_0x51128a)[_0x1f84c5(0xad)]())continue;for(const _0x50a98f of readdirSync(_0x51128a)){const _0x318867=join(_0x51128a,_0x50a98f);if(!statSync(_0x318867)['isDirectory']())continue;const _0x25b5aa=join(_0x318867,_0x1f84c5(_0x56349c._0x126f2a));if(!existsSync(_0x25b5aa))continue;try{const _0x1536c3=JSON['parse'](readFileSync(_0x25b5aa,'utf8'));_0x266d29['push']({'runId':_0x4a2f35,'testFn':_0x1536c3['testFn'],'scenarioPath':_0x1536c3[_0x1f84c5(0x8a)],'dir':_0x318867,'timestamp':_0x1536c3[_0x1f84c5(_0x56349c._0x248668)]});}catch{}}}return _0x266d29['sort']((_0x1c35cd,_0xb14b62)=>_0xb14b62['timestamp'][_0x1f84c5(0xaa)](_0x1c35cd[_0x1f84c5(0xe8)])),_0x266d29;}__name(listFailures,_0x59da7e(0xb6));function defaultFailuresRoot(_0x119303=process[_0x59da7e(0x93)]()){const _0x3a14a1={_0x45f915:0xa3,_0x15888b:0x89},_0x1f44d9=_0x59da7e;return join(_0x119303,_0x1f44d9(_0x3a14a1._0x45f915),_0x1f44d9(_0x3a14a1._0x15888b));}__name(defaultFailuresRoot,_0x59da7e(0xe9));function resolveBundleDir(_0x3958c3,_0x2758e9){const _0x7a6e1b={_0x44b8e6:0xad},_0x34315d=_0x59da7e;if(existsSync(_0x3958c3)&&statSync(_0x3958c3)[_0x34315d(_0x7a6e1b._0x44b8e6)]())return _0x3958c3;return join(_0x2758e9,_0x3958c3);}__name(resolveBundleDir,_0x59da7e(0xd6));function _0x3109(){const _0x41ea98=['C3rHCNrZv2L0Aa','kqOk','y29UC29Szq','icdINjCG','mti0nte4mhDlv2TdBW','Bg93','CMv3CML0zs1ZzwXLy3rVCG','lcbJB2WG','ihrLC3qOCYKGkeqTmJuPcGO','yaOTicOQu3rLCcbPBMrLEcOQoIa','DhjHy2u','C3rLCeLUzgv4','iYbuzxn0igzPEcbYzxf1zxn0cGOJiYbgywLSDxjLignVBNrLEhqkcI0GkIPuzxn0kIO6iga','BgvUz3rO','y29UC29SzuXPBwL0','iYmJifn0ywnRcMbGyaO','DxjS','BwvKAxvT','cI0GkIPmB2nHDgLVBIOQoIbSAw5Lia','phnJzw5HCMLVigzPBguGBM8GBg9Uz2vYig9UigrPC2S+','tg9JyxrVCKvYCM9Y','Dg9mB3DLCKnHC2u','zxjYB3i','AM9PBG','CMvZB2X2zuj1BMrSzurPCG','y2vPBa','DxrMoa','icbJB25MAwrLBMnLpq','D3jPDgu','ywrKlxDHAxrMB3i','DMfSDwvZ','rxjYB3i','icdINjmG','CNvUuhjLCgfYzuzPEa','ycdIGjqG','C2nYzwvUC2HVDc5WBMC','ChjLCgfYzs1MAxG6ig5VigzHAwX1CMuGyNvUzgXLCYbMB3vUzcb1BMrLCIaUDw5VDgvZDc9MywLSDxjLCY8Uifj1BIbHigzHAwXPBMCGDgvZDcbMAxjZDdSGDgHLigj1BMrSzsbPCYb3CML0DgvUigf1Dg9TyxrPy2fSBhKUcG','BgLUzq','mZq0nduXmfHfvMrRuq','yNvPBgrqCM9TChrnyxjRzg93BG','AgfZ','cGOJiYbxAgf0ihDLig5LzwqkcLbYB2r1y2uGysaQkNvUAwzPzwqGzgLMzIOQihrOyxqGzML4zxmGDgHLihrLC3qUienVBNn0CMfPBNrZoGOkms4Gs2vLCcb0AguGC2fTzsb0zxn0xYOOksbMDw5JDgLVBIbUyw1LigfUzcb0AguGC2fTzsbVDMvYywXSigzSB3CG4OcuignOyw5Nzsb0AgukicaGBwLUAw11BsbYzxf1AxjLzcb0BYbTywTLihrOzsbMywLSAw5Nihn0zxaGC3vJy2vLzc4kmI4GuhjLzMvYihrOzsbeltiYihnLBgvJDg9YigHPzxjHCMnOEtOGygDLDej5vgvZDeLKycdIHPiGygDLDej5uM9SzsH7BMfTzx0PyaOGicdIHPiGygDLDej5tgfIzwXGiokgKIbGz2v0qNLuzxH0ycdIHPiGygXVy2f0B3iOy3nZkwaGkgXHC3qGCMvZB3j0ks4kmY4GswyGywrKAw5NigeGD2fPDcWGChjLzMvYigb3ywL0rM9YkgXVyYLGic8GyhDHAxrgB3jvCMWOCgf0DgvYBILGig92zxiGyhbHDxnLkg1ZkwaUcJqUie5VigLTCg9YDhmG4OcuierttcbMDw5JDgLVBNmGCMvZB2X2zsb0AhjVDwDOihrOzsbYDw50Aw1LihjLz2LZDhj5igj5ig5HBwuUcJuUie5VigbHC3LUy2aVygf3ywL0ycdIGjqGDgHLigv4zwn1Dg9YigHHBMrSzxmGyxn5BMmGAw50zxjUywXSEs4knI4Gt3v0Chv0ie9otfKGDgHLihvUAwzPzwqGzgLMzIbIzxr3zwvUigzLBMnLCYbGygbKAwzMiokaPIbGygaUifrOzsb1C2vYcIaGihjLDMLLD3mGkYbHChbSAwvZigL0ig1HBNvHBgX5icHelti1iokaLcb3zsbUzxzLCIbHDxrVlwfWCgX5ks4k','DgLTzxn0yw1W','zgvMyxvSDezHAwX1CMvZuM9VDa','vgLTzw91DevYCM9Y','AgLNAa','xYHUBYbZzw1HBNrPyY1KB20GC25HChnOB3qGy2fWDhvYzwqGzM9YihrOAxmGzMfPBhvYzsLF','mtm5mdqZmKjYAMvmAq','zMfPBhvYzxm','C2nLBMfYAw9qyxrO','cI0GkIPfCNjVCIOQoIbG','ChjLCgfYzs1MAxG6ignVBxbVC2LUzYbMAxGGChjVBxb0CYbMB3iG','DgvZDezU','ndiYmJeXnwjvEeDNDG','BMfTzq','yxjNDG','Dgv4Da','ChjLCgfYzs1MAxG6ig5VihrLC3rjzcbWCM92AwrLzcbHBMqGBM8GzMfPBgLUzYb0zxn0CYbMB3vUzc4k','y3DK','xYHUBYbJB25ZB2XLigvUDhjPzxmGy2fWDhvYzwqPxW','nZu4mvzjBvbwBG','C3rKB3v0','BwfW','C2nYzwvUC2HVDc1LCNjVCI50Ehq','qxnZzxj0Aw9UrxjYB3i','vvjmoIa','Dg9vChbLCKnHC2u','cLjLz2LVBNm6ihnLzsbZBMfWC2HVDc5QC29UigLUihrOzsbIDw5KBguGzgLYicHYzwfKihzPysbGz2v0x2zHAwX1CMvFyteXEwaPlG','C25HChnOB3q','zxHPDa','mZu5odm1n3zoDxn6zG','C3rHy2S','BwvZC2fNzq','mJjZChntywS','lNvUB3rLC3q','B3v0','zMfPBhvYzs5QC29U','C291CMnLCW','CNvUswq','cMbGyaO','zML4lxbYB21WDc5Tza','Bg9JywXLq29TCgfYzq','cMbGyaOkiYmGtgfZDcbJB25ZB2XLigvUDhjPzxmkcMbGyaO','y2HHBMDLlwfZC2vYDgLVBG','AxneAxjLy3rVCNK','DgvZDa','cGOJiYbty2vUyxjPBYbZB3vYy2uGkgXPBMuTBNvTyMvYzwqPcGPGygbQCWO','C2XPy2u','icaGicaGC3vNz2vZDgvKqwn0Aw9Upq','C2nYzwvUC2HVDevYCM9Y','CMvHzezHAwX1CMvcDw5KBgu','mJm2nZiZmLvQExrZua','ycaOy29UzMLKzw5JztOG','BgLZDezHAwX1CMvZ','yNvUzgXLrgLY','zMfPBhvYzsbIDw5KBguGBM90igzVDw5KigzVCIb0zxn0swq9iG','cMbGyaOkiYmGu2vTyw50AwmTre9nihnUyxbZAg90cGO','y2XHC3nPzNK','y29TCg9ZzuzPEfbYB21WDa','ls1MywLSAw5N','C2v0'];_0x3109=function(){return _0x41ea98;};return _0x3109();}function composeFixPrompt(_0x38f037,_0x5666d2={}){const _0x4e55f7={_0x335460:0x93,_0x55373a:0xc8,_0x19da9e:0xd8,_0x38d9da:0xc0,_0x3f4ce1:0xb0,_0x162d92:0x8a,_0x25a1f2:0xd7,_0x13b8f5:0xcb,_0x41445d:0x8a,_0x3f19a8:0x9d},_0x51183d=_0x59da7e,_0x3af389=_0x5666d2['failuresRoot']??defaultFailuresRoot(),_0x26ddff=resolveBundleDir(_0x38f037,_0x3af389),_0x39fcd2=readFailureBundle(_0x26ddff);if(!_0x39fcd2)throw new Error(_0x51183d(0xb8)+_0x38f037+'\x22\x20(looked\x20in\x20'+_0x26ddff+')');const _0x590d92=_0x5666d2[_0x51183d(_0x4e55f7._0x335460)]??process['cwd'](),_0x55478b=_0x31e593(_0x39fcd2[_0x51183d(_0x4e55f7._0x55373a)]['scenarioPath'])?_0x5ea8ed(_0x39fcd2['trace'][_0x51183d(0x8a)],_0x51183d(_0x4e55f7._0x19da9e)):_0x51183d(0xd1),_0x47d180=_0x5666d2[_0x51183d(0xcc)]??0x19,_0x5f3edb=_0x39fcd2[_0x51183d(_0x4e55f7._0x38d9da)][_0x51183d(_0x4e55f7._0x3f4ce1)](-_0x47d180),{suggestedAction:_0x4fcefa,confidence:_0x29cf62}=classify(_0x39fcd2),_0x174c14=buildPromptMarkdown({'bundle':_0x39fcd2,'scenarioSource':_0x55478b,'scenarioRelative':relative(_0x590d92,_0x39fcd2['trace'][_0x51183d(_0x4e55f7._0x162d92)]),'consoleTail':_0x5f3edb,'suggestedAction':_0x4fcefa,'confidence':_0x29cf62}),_0x6c8515=Math[_0x51183d(_0x4e55f7._0x25a1f2)](_0x174c14[_0x51183d(_0x4e55f7._0x13b8f5)]/0x4);return{'promptMarkdown':_0x174c14,'suggestedAction':_0x4fcefa,'confidence':_0x29cf62,'sources':{'bundleDir':_0x26ddff,'scenarioPath':_0x39fcd2['trace'][_0x51183d(_0x4e55f7._0x41445d)],'consoleEntries':_0x39fcd2[_0x51183d(0xc0)][_0x51183d(0xcb)],'hasSnapshot':!!_0x39fcd2[_0x51183d(_0x4e55f7._0x3f19a8)]},'approxTokens':_0x6c8515};}__name(composeFixPrompt,_0x59da7e(0xbb));function classify(_0x429ae1){const _0x71d9e={_0x33600f:0xc8,_0x33098f:0xd4,_0x26c69a:0x8f,_0x42cf37:0xc3,_0xbef345:0xd2,_0x42a78d:0xc4,_0x2c7aad:0xea,_0x1691af:0xae,_0x15eadd:0xeb,_0x37a4b6:0xcf,_0x2b16bb:0x99},_0x345b62=_0x59da7e,_0x3e3036=_0x429ae1[_0x345b62(_0x71d9e._0x33600f)][_0x345b62(_0x71d9e._0x33098f)][_0x345b62(0xa1)][_0x345b62(0xd3)](),_0x429403=_0x429ae1[_0x345b62(_0x71d9e._0x33600f)]['error'][_0x345b62(_0x71d9e._0x26c69a)]??'';let _0x40a5aa='unknown',_0x3fcfe3=_0x345b62(_0x71d9e._0x42cf37);if(_0x429403===_0x345b62(_0x71d9e._0xbef345)||/not found|no element|strict mode|resolved to \d+ elements|nothing matched/i[_0x345b62(0xae)](_0x3e3036))_0x40a5aa=_0x345b62(_0x71d9e._0x42a78d),_0x3fcfe3=_0x429403===_0x345b62(_0x71d9e._0xbef345)?_0x345b62(0xeb):_0x345b62(0xcf);else{if(_0x429403===_0x345b62(_0x71d9e._0x2c7aad)||/timeout|waiting for/i[_0x345b62(_0x71d9e._0x1691af)](_0x3e3036))_0x40a5aa=_0x345b62(0xdb),_0x3fcfe3=_0x429403===_0x345b62(0xea)?_0x345b62(_0x71d9e._0x15eadd):_0x345b62(_0x71d9e._0x37a4b6);else(_0x429403===_0x345b62(0x99)||/asserttext|assertvisible|expected.*got/i[_0x345b62(0xae)](_0x3e3036))&&(_0x40a5aa=_0x345b62(0xac),_0x3fcfe3=_0x429403===_0x345b62(_0x71d9e._0x2b16bb)?_0x345b62(0xeb):'medium');}return{'suggestedAction':_0x40a5aa,'confidence':_0x3fcfe3};}__name(classify,_0x59da7e(0xba));function buildPromptMarkdown(_0xb77cb4){const _0x229e7c={_0x45ad36:0xcb,_0xba7d30:0x94,_0x31b0a9:0x97,_0x1c4bb0:0xd5,_0x49b11d:0x9d,_0x3f677c:0x9a,_0x2a5efc:0x9c,_0x489089:0xca,_0x8e64:0xc7,_0x936590:0xc8,_0x23200e:0xc8,_0x449e4f:0xe3,_0x1eefc0:0xc5,_0x1ee3a7:0xa1,_0x9fa4f9:0xa0,_0x3351e2:0xcd,_0x2f118d:0xc8,_0x37392a:0xa8,_0x260621:0xaf,_0x619786:0xab,_0x522f37:0xe7},_0x45d32c=_0x59da7e,{bundle:_0x2ba9c9,scenarioSource:_0x246692,scenarioRelative:_0x2d4b87,consoleTail:_0x29adc7,suggestedAction:_0x2c0832,confidence:_0x567411}=_0xb77cb4,_0x2949b4=_0x246692['split']('\x0a')[_0x45d32c(0x97)]((_0x418676,_0x4da27d)=>String(_0x4da27d+0x1)['padStart'](0x3,'\x20')+'\x20\x20'+_0x418676)[_0x45d32c(0xd5)]('\x0a'),_0x2e168e=_0x29adc7[_0x45d32c(_0x229e7c._0x45ad36)]===0x0?_0x45d32c(_0x229e7c._0xba7d30):_0x29adc7[_0x45d32c(_0x229e7c._0x31b0a9)](_0x50befd=>'['+_0x50befd[_0x45d32c(0xe8)]+']\x20'+_0x50befd['level'][_0x45d32c(0x9b)]()+':\x20'+_0x50befd[_0x45d32c(0x91)])[_0x45d32c(_0x229e7c._0x1c4bb0)]('\x0a'),_0xfcd955=_0x2ba9c9[_0x45d32c(_0x229e7c._0x49b11d)]?_0x45d32c(_0x229e7c._0x3f677c)+_0x2ba9c9['snapshot'][_0x45d32c(0xce)]+'\x0aCaptured:\x20'+_0x2ba9c9['snapshot']['capturedAt']+_0x45d32c(_0x229e7c._0x2a5efc):_0x45d32c(0xec);return _0x45d32c(_0x229e7c._0x489089)+_0x2ba9c9['trace'][_0x45d32c(0x8d)]+'`\x20in\x20`'+_0x2d4b87+_0x45d32c(_0x229e7c._0x8e64)+(_0x2ba9c9[_0x45d32c(_0x229e7c._0x936590)][_0x45d32c(0xc9)]??'?')+_0x45d32c(0xd0)+_0x2ba9c9[_0x45d32c(_0x229e7c._0x23200e)][_0x45d32c(_0x229e7c._0x449e4f)]+_0x45d32c(_0x229e7c._0x1eefc0)+_0x2ba9c9[_0x45d32c(_0x229e7c._0x23200e)]['col']+_0x45d32c(0x8b)+(_0x2ba9c9[_0x45d32c(0xc8)][_0x45d32c(0xd4)][_0x45d32c(0x8f)]??_0x45d32c(0xdd))+_0x45d32c(0xe0)+_0x2ba9c9['trace'][_0x45d32c(0xd4)][_0x45d32c(_0x229e7c._0x1ee3a7)]+'\x0a-\x20**Suggested\x20action**:\x20`'+_0x2c0832+_0x45d32c(0xb5)+_0x567411+_0x45d32c(0xbf)+(_0x2ba9c9['trace'][_0x45d32c(0xd4)][_0x45d32c(_0x229e7c._0x9fa4f9)]?_0x45d32c(_0x229e7c._0x3351e2)+_0x2ba9c9[_0x45d32c(_0x229e7c._0x2f118d)]['error'][_0x45d32c(0xa0)]+_0x45d32c(_0x229e7c._0x37392a):'')+_0x45d32c(_0x229e7c._0x260621)+_0x2949b4+_0x45d32c(_0x229e7c._0x619786)+_0x2e168e+_0x45d32c(0xb9)+_0xfcd955+_0x45d32c(_0x229e7c._0x522f37);}__name(buildPromptMarkdown,_0x59da7e(0xe5));function runPrepareFix(_0x981c01,_0x1c0dd3={}){const _0x5ba3e6={_0x31c436:0x96,_0x44de80:0x93,_0x5169b7:0xda,_0x2f8fcd:0xcb,_0x44d822:0xe6,_0x38e624:0x92,_0x3dbe87:0xc6,_0x12be59:0xa6,_0x2a3a2b:0xb7,_0xeacf0c:0xa9,_0x2664f3:0xc1},_0x2309f0=_0x59da7e,_0x4c99ce=_0x1c0dd3[_0x2309f0(0xa4)]??process[_0x2309f0(_0x5ba3e6._0x31c436)],_0x30aa42=_0x1c0dd3['err']??process['stderr'],_0x1b4581=_0x1c0dd3[_0x2309f0(_0x5ba3e6._0x44de80)]??process[_0x2309f0(_0x5ba3e6._0x44de80)](),_0x48ebac=_0x981c01['includes'](_0x2309f0(0xbc));let _0xd6e2cc=_0x981c01['filter'](_0x314abc=>!_0x314abc[_0x2309f0(0xbe)]('-'));if(_0x48ebac||_0xd6e2cc[_0x2309f0(0xcb)]===0x0){const _0x7b8163=listFailures(defaultFailuresRoot(_0x1b4581));if(_0x7b8163['length']===0x0)return _0x30aa42[_0x2309f0(_0x5ba3e6._0x5169b7)](_0x2309f0(0xe2)),0x1;if(_0xd6e2cc[_0x2309f0(_0x5ba3e6._0x2f8fcd)]===0x0){const _0x50f57c=new Map();for(const _0x46e58f of _0x7b8163){if(!_0x50f57c[_0x2309f0(_0x5ba3e6._0x44d822)](_0x46e58f[_0x2309f0(0x8d)]))_0x50f57c[_0x2309f0(0xbd)](_0x46e58f[_0x2309f0(0x8d)],_0x46e58f);}_0xd6e2cc=[..._0x50f57c[_0x2309f0(0xdc)]()][_0x2309f0(0x97)](_0x41d5db=>_0x41d5db[_0x2309f0(0xa7)]+'/'+_0x41d5db[_0x2309f0(0x8d)]);}}if(_0xd6e2cc[_0x2309f0(_0x5ba3e6._0x2f8fcd)]===0x0)return _0x30aa42['write'](_0x2309f0(_0x5ba3e6._0x38e624)),0x1;_0x4c99ce['write'](_0x2309f0(0x8c)+_0xd6e2cc['length']+_0x2309f0(_0x5ba3e6._0x3dbe87));const _0x2016ba=defaultFailuresRoot(_0x1b4581);for(const _0x5aeb59 of _0xd6e2cc){try{const _0xaec617=composeFixPrompt(_0x5aeb59,{'cwd':_0x1b4581,'failuresRoot':_0x2016ba}),_0x15a64a=_0x69eb0f(_0xaec617[_0x2309f0(_0x5ba3e6._0x12be59)][_0x2309f0(_0x5ba3e6._0x2a3a2b)],_0x2309f0(_0x5ba3e6._0xeacf0c));_0x4eccf5(_0x15a64a,_0xaec617['promptMarkdown']),_0x4c99ce[_0x2309f0(0xda)](_0x2309f0(0xde)+_0x5aeb59+'\x0a'),_0x4c99ce[_0x2309f0(0xda)]('\x20\x20\x20\x20\x20\x20'+_0x15a64a+'\x0a'),_0x4c99ce[_0x2309f0(0xda)](_0x2309f0(0xb1)+_0xaec617['suggestedAction']+_0x2309f0(0xd9)+_0xaec617['confidence']+'\x20\x20~'+_0xaec617['approxTokens']+'t\x0a');}catch(_0x4fba98){_0x30aa42[_0x2309f0(_0x5ba3e6._0x5169b7)](_0x2309f0(_0x5ba3e6._0x2664f3)+_0x5aeb59+':\x20'+(_0x4fba98 instanceof Error?_0x4fba98[_0x2309f0(0xa1)]:String(_0x4fba98))+'\x0a');}}return _0x4c99ce['write']('\x0aNext:\x20paste\x20each\x20fix-prompt.md\x20into\x20your\x20LLM\x20client\x20(Claude\x20Code\x20/\x0aCursor\x20/\x20etc.).\x20The\x20LLM\x20returns\x20a\x20unified\x20diff;\x20review\x20it\x20and\x20apply\x0amanually.\x20We\x20never\x20auto-apply\x20(D-25).\x0a'),0x0;}__name(runPrepareFix,_0x59da7e(0xdf));var invokedDirectly=process[_0x59da7e(0x90)][0x1]&&fileURLToPath(import.meta.url)===process[_0x59da7e(0x90)][0x1];if(invokedDirectly){const code=runPrepareFix(process[_0x59da7e(0x90)][_0x59da7e(0xb0)](0x2));process[_0x59da7e(0x9e)](code);}export{runPrepareFix};
@@ -0,0 +1,2 @@
1
+
2
+ export { }
@@ -0,0 +1 @@
1
+ var _0x589553=_0x1160;(function(_0x84b6ae,_0x2689b2){var _0xed1b1e={_0x44b82a:0x19a,_0x2e012b:0x1a9,_0x55dfcc:0x1a5,_0x626a32:0x1a8,_0x55fc7f:0x1a4,_0x354589:0x1ad},_0x4633bf=_0x1160,_0x1f7aae=_0x84b6ae();while(!![]){try{var _0x1731d0=parseInt(_0x4633bf(_0xed1b1e._0x44b82a))/0x1+-parseInt(_0x4633bf(0x1a3))/0x2+-parseInt(_0x4633bf(_0xed1b1e._0x2e012b))/0x3*(parseInt(_0x4633bf(_0xed1b1e._0x55dfcc))/0x4)+parseInt(_0x4633bf(_0xed1b1e._0x626a32))/0x5+parseInt(_0x4633bf(_0xed1b1e._0x55fc7f))/0x6*(parseInt(_0x4633bf(0x1a1))/0x7)+-parseInt(_0x4633bf(0x1ab))/0x8+parseInt(_0x4633bf(_0xed1b1e._0x354589))/0x9*(parseInt(_0x4633bf(0x19f))/0xa);if(_0x1731d0===_0x2689b2)break;else _0x1f7aae['push'](_0x1f7aae['shift']());}catch(_0x45c410){_0x1f7aae['push'](_0x1f7aae['shift']());}}}(_0x36a9,0xac0b8));import{fileURLToPath}from'url';function _0x1160(_0x519fdc,_0x37db24){_0x519fdc=_0x519fdc-0x197;var _0x36a9a7=_0x36a9();var _0x1160d5=_0x36a9a7[_0x519fdc];if(_0x1160['JwZJHh']===undefined){var _0x2f0a23=function(_0x235707){var _0xa62f9c='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x2ab9d4='',_0x59f06e='';for(var _0x13589c=0x0,_0x401437,_0x4fe8d4,_0x6e708f=0x0;_0x4fe8d4=_0x235707['charAt'](_0x6e708f++);~_0x4fe8d4&&(_0x401437=_0x13589c%0x4?_0x401437*0x40+_0x4fe8d4:_0x4fe8d4,_0x13589c++%0x4)?_0x2ab9d4+=String['fromCharCode'](0xff&_0x401437>>(-0x2*_0x13589c&0x6)):0x0){_0x4fe8d4=_0xa62f9c['indexOf'](_0x4fe8d4);}for(var _0x1c79da=0x0,_0x43546e=_0x2ab9d4['length'];_0x1c79da<_0x43546e;_0x1c79da++){_0x59f06e+='%'+('00'+_0x2ab9d4['charCodeAt'](_0x1c79da)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x59f06e);};_0x1160['RbzZiG']=_0x2f0a23,_0x1160['HYUskJ']={},_0x1160['JwZJHh']=!![];}var _0x27bfa1=_0x36a9a7[0x0],_0x455d29=_0x519fdc+_0x27bfa1,_0x30310f=_0x1160['HYUskJ'][_0x455d29];return!_0x30310f?(_0x1160d5=_0x1160['RbzZiG'](_0x1160d5),_0x1160['HYUskJ'][_0x455d29]=_0x1160d5):_0x1160d5=_0x30310f,_0x1160d5;}import{dirname,resolve}from'path';import{spawn}from'child_process';import{existsSync}from'fs';var here=dirname(fileURLToPath(import.meta.url)),candidates=[resolve(here,_0x589553(0x19c)),resolve(here,_0x589553(0x199))],serverEntry=candidates[_0x589553(0x197)](_0x2ab9d4=>existsSync(_0x2ab9d4));function _0x36a9(){var _0x59514a=['lI4VlI4VzxHHBxbSzxmVzML4DhvYzxmVyNjLywSTzML4lwfWCc9Zzxj2zs5TANm','C2vYDMuTzML4DhvYztOGy2fUBM90igXVy2f0zsbMAxH0DxjLihnLCNzLCIbLBNrYEs4GvhjPzwq6cG','Aw5OzxjPDa','mZbwAKvMs0S','rgLKihLVDsbWDwjSAxnOihDPDgHVDxqGzxHHBxbSzxmVzML4DhvYzxmVpWO','n05bywjItW','AM9PBG','mJqXmti3nfPeDezVCG','mJaYnduWmNHXBeHLCG','mJi3mty4ofvQwvvICG','zxHPDa','zxHLy1bHDgG','mJKWmJK5nunsBhLcsq','m3vjtfDNza','C3rKzxjY','mZK0ndmZnLL6wujsBa','D3jPDgu','mZmWmJq3ogLWvxrAqW','zMLUza','yxjNDG','lI4VlI4VlI4VzxHHBxbSzxmVzML4DhvYzxmVyNjLywSTzML4lwfWCc9Zzxj2zs5TANm','otuYndu1qNn3zgDh','C2XPy2u'];_0x36a9=function(){return _0x59514a;};return _0x36a9();}!serverEntry&&(process[_0x589553(0x1aa)][_0x589553(0x1ac)](_0x589553(0x19d)+candidates['map'](_0x59f06e=>'\x20\x20'+_0x59f06e+'\x0a')[_0x589553(0x1a2)]('')+_0x589553(0x1a0)),process[_0x589553(0x1a6)](0x1));var child=spawn(process[_0x589553(0x1a7)],[serverEntry,...process[_0x589553(0x198)][_0x589553(0x19b)](0x2)],{'stdio':_0x589553(0x19e)});child['on'](_0x589553(0x1a6),_0x13589c=>process[_0x589553(0x1a6)](_0x13589c??0x1));
@@ -0,0 +1,8 @@
1
+ import { IRunnerAdapter } from '@unotest/protocol';
2
+
3
+ /** Singleton — the adapter is purely a function bag, no per-instance
4
+ * state worth segregating. Consumer (viewer) imports this and hands it
5
+ * to `startViewerServer` at boot. */
6
+ declare const webRunnerAdapter: IRunnerAdapter;
7
+
8
+ export { webRunnerAdapter };
@@ -0,0 +1 @@
1
+ const _0x4c7abd=_0xb29f;(function(_0x3aceaf,_0x20d64c){const _0x221238={_0x53df26:0x1a4,_0x4f6794:0x1ab,_0xfbacc1:0x1a3},_0x2397fa=_0xb29f,_0x42b5a6=_0x3aceaf();while(!![]){try{const _0x6f254=-parseInt(_0x2397fa(0x1bc))/0x1+-parseInt(_0x2397fa(_0x221238._0x53df26))/0x2*(parseInt(_0x2397fa(0x1a2))/0x3)+-parseInt(_0x2397fa(_0x221238._0x4f6794))/0x4+parseInt(_0x2397fa(0x1a7))/0x5*(-parseInt(_0x2397fa(_0x221238._0xfbacc1))/0x6)+parseInt(_0x2397fa(0x19e))/0x7+-parseInt(_0x2397fa(0x1b3))/0x8+parseInt(_0x2397fa(0x1b8))/0x9;if(_0x6f254===_0x20d64c)break;else _0x42b5a6['push'](_0x42b5a6['shift']());}catch(_0xdcae47){_0x42b5a6['push'](_0x42b5a6['shift']());}}}(_0x3993,0x256d4));var __defProp=Object[_0x4c7abd(0x1c0)],__name=(_0x2a97d5,_0x3fe3db)=>__defProp(_0x2a97d5,_0x4c7abd(0x1bd),{'value':_0x3fe3db,'configurable':!![]});import{UnsupportedRunKindError}from'@unotest/protocol';import{readFileSync}from'fs';import{createRequire}from'module';function _0x3993(){const _0x59092d=['ztjL','yNvPBgrbCMDZ','zgvIDwC','odeYmtL1zLP2Bee','BMfTzq','qhvUB3rLC3qVD2vI','AM9PBG','zgvMAw5LuhjVCgvYDhK','ChvZAa','DMfSDwvZ','CgfYC2u','C3rYAw5N','mtqXmdm4mwzMyvH3va','AgvHzgvK','yMLU','CMvZB2X2zq','mtaWnda3zu1izKr0','nJeXngrUwKTjDq','nNbNANftCq','A2LUza','C2nLBMfYAw8','mtm5mhDiq25UAa','Dw5VDgvZDc13zwi','yMfPBa','ls1IywLS','mtm0nti0EwHswMvI','y29SBgvJDgLVBG','ls13B3jRzxjZpq','DxrMoa','yNvPBgrfBNy','vu5pvevtvf9iruferuq','B2jQzwn0','l3bHy2THz2uUANnVBG','oty1ndqWEePwuvny','CgLJA0jPBG','ls1ICMvHAW','yNjLywTWB2LUDhm','D29YA2vYCW','nteZotmYnhrzq2juqW'];_0x3993=function(){return _0x59092d;};return _0x3993();}function _0xb29f(_0x3765d9,_0x1ddec9){_0x3765d9=_0x3765d9-0x19e;const _0x3993e9=_0x3993();let _0xb29fb1=_0x3993e9[_0x3765d9];if(_0xb29f['NWVZtq']===undefined){var _0x2dc899=function(_0x559328){const _0x4e184b='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2a97d5='',_0x3fe3db='';for(let _0x1fe572=0x0,_0x3f1303,_0x3b41c5,_0x184c42=0x0;_0x3b41c5=_0x559328['charAt'](_0x184c42++);~_0x3b41c5&&(_0x3f1303=_0x1fe572%0x4?_0x3f1303*0x40+_0x3b41c5:_0x3b41c5,_0x1fe572++%0x4)?_0x2a97d5+=String['fromCharCode'](0xff&_0x3f1303>>(-0x2*_0x1fe572&0x6)):0x0){_0x3b41c5=_0x4e184b['indexOf'](_0x3b41c5);}for(let _0x248717=0x0,_0x4235ac=_0x2a97d5['length'];_0x248717<_0x4235ac;_0x248717++){_0x3fe3db+='%'+('00'+_0x2a97d5['charCodeAt'](_0x248717)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x3fe3db);};_0xb29f['GClOGu']=_0x2dc899,_0xb29f['MaJOdw']={},_0xb29f['NWVZtq']=!![];}const _0x564a1e=_0x3993e9[0x0],_0xf508bd=_0x3765d9+_0x564a1e,_0x26d5d5=_0xb29f['MaJOdw'][_0xf508bd];return!_0x26d5d5?(_0xb29fb1=_0xb29f['GClOGu'](_0xb29fb1),_0xb29f['MaJOdw'][_0xf508bd]=_0xb29fb1):_0xb29fb1=_0x26d5d5,_0xb29fb1;}import{dirname,join}from'path';var PACKAGE_NAME=_0x4c7abd(0x1be),WebRunnerAdapter=class{static{__name(this,'WebRunnerAdapter');}['name']=PACKAGE_NAME;['supportedKinds']=['scenario',_0x4c7abd(0x1ac)];['resolveBin'](){const _0x2da449=_0x4c7abd,_0x1fe572=createRequire(import.meta.url),_0x3f1303=_0x1fe572[_0x2da449(0x1a1)](PACKAGE_NAME+_0x2da449(0x1b2)),_0x3b41c5=JSON[_0x2da449(0x1c3)](readFileSync(_0x3f1303,_0x2da449(0x1ae))),_0x184c42=pickBin(_0x3b41c5);if(!_0x184c42)throw new Error(PACKAGE_NAME+'\x20package.json\x20declares\x20no\x20\x27bin\x27\x20field\x20—\x20broken\x20install?');return join(dirname(_0x3f1303),_0x184c42);}[_0x4c7abd(0x1ba)](_0x248717){const _0x2943ca={_0x5b8e89:0x1a5,_0x16c81c:0x1a6,_0x278167:0x1a6,_0x856d9b:0x1c1,_0x23b198:0x1bf,_0x4a5997:0x1ac,_0x346c13:0x1ad,_0x806a15:0x1a9,_0x6ad46b:0x1aa},_0x2881f1=_0x4c7abd;if(_0x248717[_0x2881f1(_0x2943ca._0x5b8e89)]===_0x2881f1(_0x2943ca._0x16c81c)){const _0x518787=[_0x2881f1(0x1b9),_0x248717[_0x2881f1(_0x2943ca._0x278167)]];if(_0x248717[_0x2881f1(0x1bb)])_0x518787[_0x2881f1(_0x2943ca._0x856d9b)]('--debug');return _0x248717[_0x2881f1(0x1b6)]&&_0x248717['breakpoints']['length']>0x0&&_0x518787[_0x2881f1(0x1c1)](_0x2881f1(0x1b5),_0x248717[_0x2881f1(0x1b6)][_0x2881f1(_0x2943ca._0x23b198)](',')),_0x518787;}if(_0x248717[_0x2881f1(0x1a5)]===_0x2881f1(_0x2943ca._0x4a5997)){const _0x15d885=[_0x2881f1(0x1ac),_0x248717['collection']];_0x248717[_0x2881f1(0x1b7)]!==void 0x0&&_0x248717[_0x2881f1(0x1b7)]>0x1&&_0x15d885[_0x2881f1(0x1c1)](_0x2881f1(_0x2943ca._0x346c13)+_0x248717[_0x2881f1(0x1b7)]);if(_0x248717[_0x2881f1(_0x2943ca._0x806a15)])_0x15d885['push'](_0x2881f1(_0x2943ca._0x6ad46b));return _0x15d885;}const _0x4235ac=_0x248717;throw new UnsupportedRunKindError(_0x4235ac['kind'],this[_0x2881f1(0x1bd)]);}[_0x4c7abd(0x1af)](_0x217105){const _0xb0148b={_0x413e3e:0x1b0},_0x3b4e5b=_0x4c7abd,_0x4ea708={};if(_0x217105[_0x3b4e5b(0x19f)])_0x4ea708[_0x3b4e5b(_0xb0148b._0x413e3e)]='1';return _0x4ea708;}},webRunnerAdapter=new WebRunnerAdapter();function pickBin(_0x197493){const _0x6726e8={_0x52fc34:0x1b1,_0x37ac75:0x1c2},_0x4a29a1=_0x4c7abd;if(typeof _0x197493[_0x4a29a1(0x1a0)]===_0x4a29a1(0x1c4))return _0x197493[_0x4a29a1(0x1a0)];if(_0x197493[_0x4a29a1(0x1a0)]&&typeof _0x197493[_0x4a29a1(0x1a0)]===_0x4a29a1(_0x6726e8._0x52fc34))return _0x197493['bin'][_0x4a29a1(0x1a8)]??Object[_0x4a29a1(_0x6726e8._0x37ac75)](_0x197493[_0x4a29a1(0x1a0)])[0x0]??null;return null;}__name(pickBin,_0x4c7abd(0x1b4));export{webRunnerAdapter};
@@ -0,0 +1,45 @@
1
+ # break-fix fixture
2
+
3
+ Tiny static app for **controlled DOM breakage** in unotest-web tests.
4
+
5
+ The same canonical scenario should:
6
+ 1. Pass against `?variant=baseline`
7
+ 2. **Fail** against any other variant
8
+ 3. Be **fixable** by an external LLM client (via D-19 / D-25 agent-fix flow)
9
+ using the structured context bundle we generate
10
+
11
+ Used in:
12
+ - Phase 1 integration tests (no dependency on live sites)
13
+ - Phase 2 agent-fix acceptance (M2-B in `docs/plans/init/phase-2-differentiator.md`)
14
+ - Phase 3 examples / smoke
15
+
16
+ ## Run
17
+
18
+ ```sh
19
+ pnpm serve-fixture
20
+ # or directly:
21
+ node examples/fixtures/break-fix-app/serve.mjs
22
+
23
+ # → http://127.0.0.1:5174/?variant=baseline
24
+ ```
25
+
26
+ ## Variants
27
+
28
+ | Variant | What it changes |
29
+ |---|---|
30
+ | `baseline` | Canonical DOM, all selectors stable |
31
+ | `renamed-testid` | `data-testid="submit-btn"` → `data-testid="send-btn"` |
32
+ | `changed-text` | Button text `Submit` → `Send` |
33
+ | `removed-element` | Cancel button removed entirely |
34
+ | `moved-into-frame` | Primary content wrapped in an `<iframe>` |
35
+ | `nested-deeper` | Content wrapped in 5 extra `<div>`s |
36
+ | `changed-aria-role` | `role="button"` → `role="link"` |
37
+
38
+ Add a variant by editing `serve.mjs` `VARIANTS` map. Keep variants **deterministic**
39
+ (same query → same DOM) and **independent** (single mutation per variant).
40
+
41
+ ## Why not playground.unotest.com or itransport.top?
42
+
43
+ We can't mutate external sites on demand. agent-fix acceptance requires
44
+ **known breakage + known good** that we control end-to-end — that's this
45
+ fixture.
@@ -0,0 +1,101 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <title>unotest-web break/fix fixture</title>
6
+ <style>
7
+ body {
8
+ font-family: system-ui, -apple-system, sans-serif;
9
+ max-width: 720px;
10
+ margin: 2rem auto;
11
+ padding: 1rem;
12
+ line-height: 1.5;
13
+ }
14
+ main { border: 1px solid #ddd; padding: 1.5rem; border-radius: 8px; }
15
+ h1 { margin-top: 0; }
16
+ button {
17
+ padding: 0.6rem 1.2rem;
18
+ font-size: 1rem;
19
+ cursor: pointer;
20
+ margin-right: 0.5rem;
21
+ }
22
+ label { display: block; margin: 0.75rem 0 0.25rem; }
23
+ input { padding: 0.4rem; width: 100%; box-sizing: border-box; }
24
+ .status { margin-top: 1rem; color: #666; }
25
+ </style>
26
+ </head>
27
+ <body>
28
+ <header>
29
+ <h1>break-fix fixture</h1>
30
+ <p>
31
+ Controlled DOM mutation playground for unotest-web tests. The same scenario should be
32
+ writable against this page and remain robust across variants — see <code>serve.mjs</code>.
33
+ </p>
34
+ </header>
35
+
36
+ <main>
37
+ <!-- frame-target-start -->
38
+ <!-- nest-start -->
39
+ <form aria-label="Contact form">
40
+ <label for="email-input">Email</label>
41
+ <input
42
+ id="email-input"
43
+ type="email"
44
+ placeholder="you@example.com"
45
+ data-testid="email-input"
46
+ />
47
+
48
+ <label for="message-input">Message</label>
49
+ <input id="message-input" type="text" data-testid="message-input" />
50
+
51
+ <div style="margin-top: 1rem;">
52
+ <button type="button" role="button" data-testid="submit-btn">Submit</button>
53
+ <!-- secondary-start -->
54
+ <button type="button" role="button" data-testid="cancel-btn">Cancel</button>
55
+ <!-- secondary-end -->
56
+ </div>
57
+
58
+ <p class="status" data-testid="status">Ready.</p>
59
+ </form>
60
+ <!--
61
+ Script lives INSIDE frame-target markers so it travels with the form
62
+ into srcdoc when `moved-into-frame` variant wraps everything in an
63
+ iframe. If we left it in the parent document, click handlers would
64
+ bind to nothing (form is in a different document tree) — and the
65
+ agent-fix M2-B acceptance flow needs behavior to survive the variant
66
+ so that a corrected test can verify it.
67
+ -->
68
+ <script>
69
+ // Minimal interactivity so tests can observe state changes.
70
+ // Every string literal below uses backticks (no apostrophes) so this
71
+ // block survives the moved-into-frame variant where serve.mjs wraps
72
+ // content in a single-quoted srcdoc attribute. Any stray apostrophe
73
+ // here would terminate that attribute and break HTML parsing — the
74
+ // sibling test in serve.test.mjs enforces this invariant.
75
+ // The dual-selector for submit/send survives renamed-testid variant
76
+ // because serve.mjs uses replaceAll on the testid string — both
77
+ // occurrences here get rewritten consistently.
78
+ const submit = document.querySelector(`[data-testid="submit-btn"], [data-testid="send-btn"]`);
79
+ const cancel = document.querySelector(`[data-testid="cancel-btn"]`);
80
+ const status = document.querySelector(`[data-testid="status"]`);
81
+ const email = document.querySelector(`[data-testid="email-input"]`);
82
+ const message = document.querySelector(`[data-testid="message-input"]`);
83
+
84
+ submit?.addEventListener(`click`, () => {
85
+ if (!email?.value) {
86
+ status.textContent = `Error: email required.`;
87
+ return;
88
+ }
89
+ status.textContent = `Submitted: ${email.value}`;
90
+ });
91
+ cancel?.addEventListener(`click`, () => {
92
+ if (email) email.value = ``;
93
+ if (message) message.value = ``;
94
+ if (status) status.textContent = `Cancelled.`;
95
+ });
96
+ </script>
97
+ <!-- nest-end -->
98
+ <!-- frame-target-end -->
99
+ </main>
100
+ </body>
101
+ </html>
@@ -0,0 +1,95 @@
1
+ #!/usr/bin/env node
2
+ // Tiny static server for the break/fix fixture app (Phase 0 F-10).
3
+ //
4
+ // Serves index.html with ?variant=<name> query param applied via a server-
5
+ // side render: the variant rewrites known DOM markers so we can test the
6
+ // SAME scenario against KNOWN-BROKEN versions of the page.
7
+ //
8
+ // Variants:
9
+ // baseline — canonical DOM, all selectors stable
10
+ // renamed-testid — testid 'submit-btn' renamed to 'send-btn'
11
+ // changed-text — button text changed from 'Submit' to 'Send'
12
+ // removed-element — secondary button removed entirely
13
+ // moved-into-frame — primary content wrapped in an iframe
14
+ // nested-deeper — same content but wrapped in 5 extra divs
15
+ // changed-aria-role — role=button changed to role=link on the same element
16
+ //
17
+ // Used by:
18
+ // - Phase 1 integration tests (avoids dependency on live sites)
19
+ // - Phase 2 agent-fix acceptance (controlled breakage scenarios)
20
+ // - Phase 3 examples / smoke
21
+
22
+ import { createServer } from "node:http";
23
+ import { readFileSync } from "node:fs";
24
+ import { fileURLToPath } from "node:url";
25
+ import { dirname, resolve } from "node:path";
26
+
27
+ const HERE = dirname(fileURLToPath(import.meta.url));
28
+ const PORT = Number(process.env.PORT ?? 5174);
29
+
30
+ const BASE_HTML = readFileSync(resolve(HERE, "index.html"), "utf8");
31
+
32
+ const VARIANTS = {
33
+ baseline: (html) => html,
34
+ "renamed-testid": (html) => html.replaceAll('data-testid="submit-btn"', 'data-testid="send-btn"'),
35
+ "changed-text": (html) => html.replaceAll(">Submit<", ">Send<"),
36
+ "removed-element": (html) =>
37
+ html.replace(/<!-- secondary-start -->[\s\S]*?<!-- secondary-end -->/g, ""),
38
+ "moved-into-frame": (html) =>
39
+ html.replace(
40
+ /<!-- frame-target-start -->([\s\S]*?)<!-- frame-target-end -->/,
41
+ '<iframe id="content-frame" srcdoc=\'$1\' style="width:100%;height:400px;border:none;"></iframe>',
42
+ ),
43
+ "nested-deeper": (html) =>
44
+ html.replace(
45
+ /<!-- nest-start -->([\s\S]*?)<!-- nest-end -->/,
46
+ "<div><div><div><div><div>$1</div></div></div></div></div>",
47
+ ),
48
+ "changed-aria-role": (html) =>
49
+ html.replaceAll('role="button"', 'role="link"'),
50
+ };
51
+
52
+ export function createFixtureServer() {
53
+ return createServer((req, res) => {
54
+ const url = new URL(req.url ?? "/", `http://localhost:${PORT}`);
55
+ if (url.pathname !== "/" && url.pathname !== "/index.html") {
56
+ res.statusCode = 404;
57
+ res.end("not found");
58
+ return;
59
+ }
60
+ const variantName = url.searchParams.get("variant") ?? "baseline";
61
+ const transform = VARIANTS[variantName];
62
+ if (!transform) {
63
+ res.statusCode = 400;
64
+ res.end(
65
+ `unknown variant: ${variantName}\nKnown: ${Object.keys(VARIANTS).join(", ")}\n`,
66
+ );
67
+ return;
68
+ }
69
+ res.statusCode = 200;
70
+ res.setHeader("content-type", "text/html; charset=utf-8");
71
+ res.setHeader("cache-control", "no-store");
72
+ res.end(transform(BASE_HTML));
73
+ });
74
+ }
75
+
76
+ // Auto-start only when invoked as a script entry. Importing this module
77
+ // (e.g. from tests) MUST NOT bind a port — otherwise parallel test runs
78
+ // race on EADDRINUSE.
79
+ const invokedDirectly =
80
+ process.argv[1] && fileURLToPath(import.meta.url) === process.argv[1];
81
+ if (invokedDirectly) {
82
+ const server = createFixtureServer();
83
+ server.listen(PORT, "127.0.0.1", () => {
84
+ process.stdout.write(
85
+ `break-fix fixture serving on http://127.0.0.1:${PORT}\n` +
86
+ `Variants: ${Object.keys(VARIANTS).join(", ")}\n` +
87
+ `Example: http://127.0.0.1:${PORT}/?variant=renamed-testid\n`,
88
+ );
89
+ });
90
+ for (const sig of ["SIGINT", "SIGTERM"]) {
91
+ process.on(sig, () => server.close(() => process.exit(0)));
92
+ }
93
+ }
94
+
95
+ export { VARIANTS };
package/package.json ADDED
@@ -0,0 +1,115 @@
1
+ {
2
+ "name": "@unotest/web",
3
+ "version": "0.5.0",
4
+ "description": "AI-native E2E testing for web applications. MCP server (run_test / step / resume / inspect_runtime / agent_fix) + CLI runner + JavaScript DSL scenarios on a sandboxed AST engine + semantic DOM snapshots.",
5
+ "license": "MIT",
6
+ "publishConfig": {
7
+ "access": "public"
8
+ },
9
+ "author": "Ivan Volkov <ivan@volkov.io>",
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "git+https://github.com/unotest/web.git"
13
+ },
14
+ "homepage": "https://github.com/unotest/web#readme",
15
+ "bugs": {
16
+ "url": "https://github.com/unotest/web/issues"
17
+ },
18
+ "type": "module",
19
+ "packageManager": "pnpm@10.12.4",
20
+ "engines": {
21
+ "node": ">=20"
22
+ },
23
+ "bin": {
24
+ "unotest-web": "./bin/unotest-web.js"
25
+ },
26
+ "main": "./dist/dsl/index.js",
27
+ "types": "./dist/dsl/index.d.ts",
28
+ "exports": {
29
+ ".": {
30
+ "types": "./dist/dsl/index.d.ts",
31
+ "import": "./dist/dsl/index.js"
32
+ },
33
+ "./driver": {
34
+ "types": "./dist/driver/index.d.ts",
35
+ "import": "./dist/driver/index.js"
36
+ },
37
+ "./config": {
38
+ "types": "./dist/config/schema.d.ts",
39
+ "import": "./dist/config/schema.js"
40
+ },
41
+ "./adapter": {
42
+ "types": "./dist/runner/web-runner-adapter.d.ts",
43
+ "import": "./dist/runner/web-runner-adapter.js"
44
+ },
45
+ "./internal/page-inject": {
46
+ "types": "./dist/inspection/page-inject.d.ts",
47
+ "import": "./dist/inspection/page-inject.js"
48
+ },
49
+ "./package.json": "./package.json"
50
+ },
51
+ "files": [
52
+ "bin",
53
+ "dist",
54
+ "examples/fixtures",
55
+ "!examples/fixtures/**/*.test.*",
56
+ "src/mcp/prompts",
57
+ ".claude/skills",
58
+ "CHANGELOG.md",
59
+ "LICENSE",
60
+ "README.md"
61
+ ],
62
+ "scripts": {
63
+ "typecheck": "tsc --noEmit",
64
+ "design": "npx serve -l 3111 design",
65
+ "test": "node --import tsx --test --test-reporter=spec 'src/**/*.test.ts' 'scripts/**/*.test.mjs' 'evals/**/*.test.ts'",
66
+ "compile": "tsup",
67
+ "compile:all": "pnpm -C ../unotest-dsl compile && pnpm -C ../unotest-viewer compile && pnpm -C ../unotest-web compile",
68
+ "lint:scenarios": "tsx src/runner/cli.ts lint",
69
+ "smoke:bundle": "node scripts/smoke-bundle.mjs",
70
+ "check:docs-sync": "node scripts/check-docs-sync.mjs",
71
+ "check:no-internal-refs": "node scripts/check-no-internal-refs.mjs",
72
+ "check:no-cyrillic": "node scripts/check-no-cyrillic.mjs",
73
+ "check:surface": "pnpm check:no-internal-refs && pnpm check:no-cyrillic && pnpm check:skill-prompt-sync",
74
+ "check:skill-prompt-sync": "node scripts/check-skill-prompt-sync.mjs",
75
+ "check:tarball": "node scripts/check-tarball.mjs",
76
+ "check:sibling-versions": "node scripts/check-sibling-versions.mjs",
77
+ "prepublish:check": "node scripts/prepublish-check.mjs",
78
+ "evals:run": "tsx evals/run.ts",
79
+ "evals:prepare": "tsx evals/prepare.ts",
80
+ "evals:check": "tsx evals/check.ts",
81
+ "evals:bless": "tsx evals/bless.ts",
82
+ "evals:diff": "tsx evals/diff.ts",
83
+ "perf:baseline": "node scripts/perf-baseline.mjs",
84
+ "verify": "pnpm typecheck && pnpm lint:scenarios && pnpm check:surface && pnpm test",
85
+ "obfuscate": "node scripts/obfuscate.mjs",
86
+ "build": "pnpm verify && pnpm compile && pnpm obfuscate && pnpm smoke:bundle && pnpm check:tarball",
87
+ "e2e": "tsx src/runner/cli.ts e2e",
88
+ "m1:cross-browser": "node scripts/m1-cross-browser.mjs",
89
+ "mcp": "tsx src/mcp/server.ts",
90
+ "serve-fixture": "node examples/fixtures/break-fix-app/serve.mjs",
91
+ "prepublishOnly": "pnpm build"
92
+ },
93
+ "dependencies": {
94
+ "@modelcontextprotocol/sdk": "^1.0.4",
95
+ "@unotest/dsl": "^0.5.0",
96
+ "@unotest/protocol": "^0.5.0",
97
+ "@unotest/viewer": "^0.5.0",
98
+ "dotenv": "^16.4.5",
99
+ "playwright": "^1.49.0",
100
+ "tsx": "^4.19.2",
101
+ "yaml": "^2.6.0",
102
+ "zod": "^3.23.8"
103
+ },
104
+ "pnpm": {
105
+ "onlyBuiltDependencies": [
106
+ "esbuild"
107
+ ]
108
+ },
109
+ "devDependencies": {
110
+ "@types/node": "^22.10.0",
111
+ "javascript-obfuscator": "^4.1.1",
112
+ "tsup": "^8.5.1",
113
+ "typescript": "^5.7.2"
114
+ }
115
+ }