@ranger-testing/ranger-cli 2.5.4 → 3.0.1-alpha.46ed70b-30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +36 -14
- package/build/cli.js +1 -1
- package/build/commands/addEnv.js +1 -1
- package/build/commands/authEncrypt.js +1 -1
- package/build/commands/clean.js +1 -1
- package/build/commands/config.js +1 -1
- package/build/commands/deleteProfile.js +1 -0
- package/build/commands/env.js +1 -1
- package/build/commands/feature.js +1 -1
- package/build/commands/hook.js +1 -1
- package/build/commands/hooks/autoPrompt.js +1 -1
- package/build/commands/hooks/disable.js +1 -1
- package/build/commands/hooks/enable.js +1 -1
- package/build/commands/hooks/exitPlanMode.js +1 -1
- package/build/commands/hooks/index.js +1 -1
- package/build/commands/hooks/output.js +1 -1
- package/build/commands/hooks/planReminder.js +1 -1
- package/build/commands/hooks/planStart.js +1 -1
- package/build/commands/hooks/postEdit.js +1 -1
- package/build/commands/hooks/preCompact.js +1 -1
- package/build/commands/hooks/sessionEnd.js +1 -1
- package/build/commands/hooks/sessionStart.js +1 -1
- package/build/commands/hooks/stopHook.js +1 -1
- package/build/commands/index.js +1 -1
- package/build/commands/login.js +1 -1
- package/build/commands/mcpBootstrap.js +1 -1
- package/build/commands/migrateProfile.js +1 -0
- package/build/commands/setup/claude.js +1 -1
- package/build/commands/setup/opencode.js +1 -1
- package/build/commands/setupCi.js +1 -1
- package/build/commands/skillup.js +1 -1
- package/build/commands/start.js +1 -1
- package/build/commands/status.js +1 -1
- package/build/commands/update.js +1 -1
- package/build/commands/updateEnv.js +1 -1
- package/build/commands/useEnv.js +1 -1
- package/build/commands/utils/activeProfile.js +1 -1
- package/build/commands/utils/agentEnv.js +1 -1
- package/build/commands/utils/browserSessionsApi.js +1 -1
- package/build/commands/utils/claudeConfig.js +1 -1
- package/build/commands/utils/claudeOverrideSettings.js +1 -1
- package/build/commands/utils/claudePlugin.js +1 -1
- package/build/commands/utils/cloudProfile.js +1 -0
- package/build/commands/utils/cloudProfileSession.js +1 -0
- package/build/commands/utils/crypto.js +1 -1
- package/build/commands/utils/desirePathLog.js +1 -1
- package/build/commands/utils/deviceAuth.js +1 -1
- package/build/commands/utils/environment.js +1 -1
- package/build/commands/utils/featureApi.js +1 -1
- package/build/commands/utils/fixWebmDuration.js +1 -1
- package/build/commands/utils/gitTracked.js +1 -0
- package/build/commands/utils/keychain.js +1 -1
- package/build/commands/utils/legacyWarning.js +1 -0
- package/build/commands/utils/localAgentInstallationsApi.js +1 -1
- package/build/commands/utils/matchAuthEnvironment.js +1 -0
- package/build/commands/utils/mcpImageBase64.js +1 -1
- package/build/commands/utils/model.js +1 -1
- package/build/commands/utils/novaActCli.js +1 -0
- package/build/commands/utils/opencodeConfig.js +1 -1
- package/build/commands/utils/playwrightCli.js +1 -1
- package/build/commands/utils/profileMessages.js +1 -1
- package/build/commands/utils/profileSetupBanner.js +1 -1
- package/build/commands/utils/projectsConfig.js +1 -0
- package/build/commands/utils/rangerConfig.js +1 -1
- package/build/commands/utils/rangerRoot.js +1 -1
- package/build/commands/utils/rangerwrightCli.js +1 -0
- package/build/commands/utils/resolveProfileContext.js +1 -0
- package/build/commands/utils/resolveProfileUrl.js +1 -0
- package/build/commands/utils/retry.js +1 -1
- package/build/commands/utils/sessionCache.js +1 -1
- package/build/commands/utils/settings.js +1 -1
- package/build/commands/utils/skillContent.js +1 -1
- package/build/commands/utils/skills.js +1 -1
- package/build/commands/utils/stitchWebmFiles.js +1 -1
- package/build/commands/utils/telemetry.js +1 -1
- package/build/commands/utils/tokenRefresh.js +1 -1
- package/build/commands/utils/traceSnapshotMapper.js +1 -1
- package/build/commands/utils/userApi.js +1 -1
- package/build/commands/utils/version.js +1 -1
- package/build/commands/verifyFeature.js +1 -1
- package/build/commands/verifyFeatureCli.js +1 -1
- package/build/commands/verifyFeatureNovaCli.js +1 -0
- package/build/commands/verifyFeatureRangerwrightCli.js +1 -0
- package/build/skills/ranger/SKILL.md +36 -6
- package/build/skills/ranger/create.md +19 -0
- package/build/skills/ranger/verify.md +46 -7
- package/package.json +9 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(_0x27c880,_0x52a052){const _0x3ba24c=_0x82f9,_0x5ab4a6=_0x27c880();while(!![]){try{const _0x106a76=-parseInt(_0x3ba24c(0x15c))/0x1*(-parseInt(_0x3ba24c(0x16f))/0x2)+-parseInt(_0x3ba24c(0x1ac))/0x3*(-parseInt(_0x3ba24c(0x131))/0x4)+parseInt(_0x3ba24c(0x132))/0x5+parseInt(_0x3ba24c(0x19c))/0x6*(parseInt(_0x3ba24c(0x194))/0x7)+parseInt(_0x3ba24c(0x199))/0x8*(parseInt(_0x3ba24c(0x161))/0x9)+parseInt(_0x3ba24c(0x16a))/0xa*(-parseInt(_0x3ba24c(0x18c))/0xb)+-parseInt(_0x3ba24c(0x135))/0xc;if(_0x106a76===_0x52a052)break;else _0x5ab4a6['push'](_0x5ab4a6['shift']());}catch(_0x12eb80){_0x5ab4a6['push'](_0x5ab4a6['shift']());}}}(_0x3b9b,0xc1414));import{mkdir,readFile,readdir,rename,stat}from'fs/promises';import{basename,join}from'path';import{extractBashCommand,parsePlaywrightCliCommand,quoteShellArg,runPlaywrightCliCommand}from'./utils/playwrightCli.js';const PLAYWRIGHT_CLI_COMMAND_TIMEOUT_MS=0xea60,PLAYWRIGHT_CLI_PREVIEW_LIMIT=0xf0,VERIFY_FEATURE_CLI_ARTIFACT_FILE_PATTERN=/^(?:\d{2}_.+\.(?:png|ya?ml)|key_.+\.png|session-recording(?:-\d+)?\.webm|trace(?:\.trace)?(?:-\d+)?\.zip|current_snap\.ya?ml)$/i;function truncatePreview(_0x454ec6,_0x184e25=PLAYWRIGHT_CLI_PREVIEW_LIMIT){const _0x14e080=_0x82f9,_0x19a28f={'hPjsp':function(_0x576f59,_0x15d4a7){return _0x576f59>_0x15d4a7;},'EZoVl':function(_0x2d5507,_0x13f0fe){return _0x2d5507+_0x13f0fe;},'GPRad':'...'};return _0x19a28f[_0x14e080(0x17b)](_0x454ec6['length'],_0x184e25)?_0x19a28f[_0x14e080(0x15d)](_0x454ec6[_0x14e080(0x178)](0x0,_0x184e25),_0x19a28f['GPRad']):_0x454ec6;}function buildCliArtifactPath(_0x432895,_0x1ad7c1){const _0x36aacc={'NfQWR':function(_0x2c8675,_0x21b463,_0x3adeb0){return _0x2c8675(_0x21b463,_0x3adeb0);}};return _0x36aacc['NfQWR'](join,_0x432895,_0x1ad7c1);}function toStepDisplayName(_0x19957a){const _0x4132c6=_0x82f9,_0x1890a4=basename(_0x19957a)[_0x4132c6(0x14f)](/\.(?:png|ya?ml)$/i,'')['replace'](/^key_/i,'')['replace'](/^\d+_/,'')[_0x4132c6(0x14f)](/-/g,'\x20');return{'name':_0x1890a4,'isKeyStep':/^key_/i[_0x4132c6(0x173)](basename(_0x19957a))};}function extractShellValue(_0x3e6f77){if(!_0x3e6f77)return null;return _0x3e6f77[0x1]??_0x3e6f77[0x2]??_0x3e6f77[0x3]??null;}function extractFilenameOption(_0x1cd737){const _0x62af12=_0x82f9;return extractShellValue(_0x1cd737[_0x62af12(0x1af)](/--filename(?:=|\s+)(?:"([^"]+)"|'([^']+)'|(\S+))/));}function extractFirstCommandArgument(_0x44b022,_0x4736af){const _0x5e800e=_0x82f9,_0x1561de={'ApEMs':_0x5e800e(0x125)},_0x29908b=_0x4736af[_0x5e800e(0x14f)](/[.*+?^${}()|[\]\\]/g,_0x1561de[_0x5e800e(0x153)]);return extractShellValue(_0x44b022['match'](new RegExp('(?:^|\x5cs)'+_0x29908b+_0x5e800e(0x165))));}function formatCommandTarget(_0x1f31ff){const _0x4ae953=_0x82f9,_0x39ffa0={'cCkbt':function(_0x240e75,_0x21c5ae,_0x2e7a87){return _0x240e75(_0x21c5ae,_0x2e7a87);}};if(!_0x1f31ff)return'target';if(/^e\d+$/i['test'](_0x1f31ff))return'ref\x20'+_0x1f31ff;return JSON[_0x4ae953(0x192)](_0x39ffa0['cCkbt'](truncatePreview,_0x1f31ff,0x78));}function formatPlaywrightCliLog(_0x29a80a,_0x2d644d){const _0x421f65=_0x82f9,_0x5f291f={'HVTvM':'open','kHfUm':'tracing-stop','oziDX':_0x421f65(0x18d),'WWnFu':_0x421f65(0x13b),'RNTHW':'stop\x20video\x20recording','SlgTr':function(_0x50f5a7,_0x2b4e9e){return _0x50f5a7(_0x2b4e9e);},'FnEVX':'capture\x20snapshot','YZzSS':'capture\x20screenshot','TAbbH':function(_0x47e799,_0x391d48,_0x454a28){return _0x47e799(_0x391d48,_0x454a28);},'Lqhgh':_0x421f65(0x174),'PkAxE':function(_0x50c5e6,_0x431a){return _0x50c5e6(_0x431a);},'VXsfJ':function(_0x26806b,_0xaecf6d,_0x3d2f52){return _0x26806b(_0xaecf6d,_0x3d2f52);},'uUsrU':function(_0x1ea5f8,_0x17b7b2){return _0x1ea5f8(_0x17b7b2);},'brGcb':function(_0x7131f,_0x4df58f,_0x4c6328){return _0x7131f(_0x4df58f,_0x4c6328);},'lCXFf':_0x421f65(0x1b0),'yMYPW':'run-code','MmOdW':_0x421f65(0x143),'JsfQh':function(_0x3935f7,_0x2d5bf1,_0x2c9a5a){return _0x3935f7(_0x2d5bf1,_0x2c9a5a);},'zayGB':'open\x20new\x20tab','pLsoz':'tab-select'};switch(_0x2d644d){case _0x5f291f[_0x421f65(0x1a0)]:{const _0x3b9bf1=extractFirstCommandArgument(_0x29a80a,_0x2d644d);return _0x3b9bf1?'open\x20'+_0x3b9bf1:'open\x20browser';}case _0x421f65(0x16d):return _0x421f65(0x17a);case _0x5f291f['kHfUm']:return _0x5f291f[_0x421f65(0x15f)];case _0x421f65(0x1ae):return'start\x20video\x20recording';case _0x5f291f['WWnFu']:return _0x5f291f['RNTHW'];case'snapshot':{const _0xc694fc=_0x5f291f['SlgTr'](extractFilenameOption,_0x29a80a);if(!_0xc694fc)return _0x5f291f['FnEVX'];const {name:_0x4fb97e}=toStepDisplayName(_0xc694fc);return _0x421f65(0x146)+_0x4fb97e+'`';}case'screenshot':{const _0x448a6b=_0x5f291f['SlgTr'](extractFilenameOption,_0x29a80a);if(!_0x448a6b)return _0x5f291f['YZzSS'];const {name:_0x2e57d9,isKeyStep:_0x506a81}=toStepDisplayName(_0x448a6b);return _0x506a81?_0x421f65(0x1a8)+_0x2e57d9+'`':'capture\x20step\x20`'+_0x2e57d9+'`';}case'click':return _0x421f65(0x159)+formatCommandTarget(_0x5f291f['TAbbH'](extractFirstCommandArgument,_0x29a80a,_0x2d644d));case _0x5f291f[_0x421f65(0x1aa)]:return _0x421f65(0x12c)+_0x5f291f['PkAxE'](formatCommandTarget,_0x5f291f[_0x421f65(0x12f)](extractFirstCommandArgument,_0x29a80a,_0x2d644d));case _0x421f65(0x1a1):return'fill\x20'+_0x5f291f['uUsrU'](formatCommandTarget,_0x5f291f['brGcb'](extractFirstCommandArgument,_0x29a80a,_0x2d644d));case _0x5f291f[_0x421f65(0x19f)]:return'press\x20'+formatCommandTarget(extractFirstCommandArgument(_0x29a80a,_0x2d644d));case _0x5f291f[_0x421f65(0x124)]:return _0x5f291f[_0x421f65(0x158)];case _0x421f65(0x133):{const _0x467809=_0x5f291f[_0x421f65(0x144)](extractFirstCommandArgument,_0x29a80a,_0x2d644d);return _0x467809?'open\x20new\x20tab\x20'+_0x467809:_0x5f291f['zayGB'];}case _0x5f291f['pLsoz']:{const _0x194491=extractFirstCommandArgument(_0x29a80a,_0x2d644d);return _0x194491?'select\x20tab\x20'+_0x194491:'select\x20tab';}default:return _0x2d644d;}}function extractPlaywrightCliToolDescription(_0x2dbbf1){const _0x1525ac=_0x82f9,_0x382b74={'AHcIZ':function(_0x527bf1,_0x53c364){return _0x527bf1!==_0x53c364;},'IryHm':'string'},_0x1a1c15=_0x2dbbf1['description'];if(_0x382b74[_0x1525ac(0x179)](typeof _0x1a1c15,_0x382b74[_0x1525ac(0x187)]))return null;const _0xedb304=_0x1a1c15[_0x1525ac(0x1a6)]()[_0x1525ac(0x14f)](/\s+/g,'\x20');return _0xedb304[_0x1525ac(0x1a4)]>0x0?_0xedb304:null;}export function formatPlaywrightCliConsoleLogMessage(_0x4a9cea,_0x9c7f16,_0x276f74){const _0x4d7818=_0x82f9,_0x3f8fda={'PLMCS':function(_0x400712,_0x55840b,_0x33b275){return _0x400712(_0x55840b,_0x33b275);}},_0x59cc92=_0x3f8fda['PLMCS'](formatPlaywrightCliLog,_0x9c7f16,_0x276f74),_0xfb8fc3=extractPlaywrightCliToolDescription(_0x4a9cea);if(!_0xfb8fc3)return'[playwright-cli]\x20'+_0x59cc92;if(process['env'][_0x4d7818(0x13a)])return _0x4d7818(0x154)+_0xfb8fc3+'\x20('+_0x59cc92+')';return _0x4d7818(0x154)+_0xfb8fc3;}export function buildVerifyFeatureCliDebugPrompt(_0x3bcb50,_0x28926c){const _0x2c3c5e=_0x82f9,_0x2a91b1={'EuWrR':function(_0x2f11e5,_0x120e2f,_0xb5c75d){return _0x2f11e5(_0x120e2f,_0xb5c75d);},'ZcnmF':'00_mozilla-homepage.yml','pSgyi':function(_0xd35e69,_0x37c5e2,_0x1b20d1){return _0xd35e69(_0x37c5e2,_0x1b20d1);},'cycfy':function(_0x50cf11,_0x4ab3ab,_0x40b5a9){return _0x50cf11(_0x4ab3ab,_0x40b5a9);},'JRhKP':'02_learn-more.yml','RdDKV':_0x2c3c5e(0x145),'ApHxb':function(_0x374971,_0x18c61d){return _0x374971(_0x18c61d);},'Mpgcm':function(_0x2b4a74,_0x47bd0c){return _0x2b4a74(_0x47bd0c);}},_0x230967=_0x2a91b1[_0x2c3c5e(0x182)](buildCliArtifactPath,_0x28926c,_0x2a91b1['ZcnmF']),_0x104423=_0x2a91b1['pSgyi'](buildCliArtifactPath,_0x28926c,_0x2c3c5e(0x1a3)),_0x5c9a1c=_0x2a91b1[_0x2c3c5e(0x141)](buildCliArtifactPath,_0x28926c,_0x2a91b1['JRhKP']),_0x77e6c0=buildCliArtifactPath(_0x28926c,_0x2a91b1[_0x2c3c5e(0x19d)]),_0x529e4b=_0x2a91b1['ApHxb'](quoteShellArg,_0x230967),_0x51d449=_0x2a91b1[_0x2c3c5e(0x138)](quoteShellArg,_0x104423),_0x2b3f9a=quoteShellArg(_0x5c9a1c),_0x5b1367=_0x2a91b1['ApHxb'](quoteShellArg,_0x77e6c0);return'You\x20are\x20testing\x20browser\x20automation.\x20Your\x20task\x20is\x20simple:\x0a\x0aUse\x20Bash\x20and\x20Playwright\x20CLI\x20only.\x20The\x20browser\x20command\x20prefix\x20is:\x0a'+_0x3bcb50+'\x0a\x0a1.\x20Run\x20`'+_0x3bcb50+'\x20open\x20https://www.mozilla.org`\x0a2.\x20Run\x20`'+_0x3bcb50+_0x2c3c5e(0x190)+_0x3bcb50+'\x20video-start`\x0a4.\x20Save\x20every\x20snapshot\x20and\x20screenshot\x20under\x20`'+_0x28926c+_0x2c3c5e(0x14d)+_0x3bcb50+_0x2c3c5e(0x191)+_0x529e4b+_0x2c3c5e(0x19b)+_0x3bcb50+_0x2c3c5e(0x139)+_0x51d449+'`\x0a7.\x20Click\x20the\x20\x22Learn\x20More\x22\x20link\x20with\x20Playwright\x20CLI\x0a8.\x20Run\x20`'+_0x3bcb50+_0x2c3c5e(0x191)+_0x2b3f9a+_0x2c3c5e(0x17e)+_0x3bcb50+'\x20screenshot\x20--filename\x20'+_0x5b1367+'`\x0a10.\x20Return\x20immediately\x20with\x20the\x20structured\x20output\x0a\x0aReturn\x20your\x20findings\x20in\x20the\x20structured\x20output\x20format.';}export function buildVerifyFeatureCliPrompt(_0x1fb613){const _0x5c61dd=_0x82f9,_0x2fcb3b={'zRlxp':'en-US','DYmDh':_0x5c61dd(0x15a),'kzXUh':'\x20>\x20','bYbZO':'01_initial.yml','YIjED':'02_state.yml','FIsed':'key_03_success-state.png','NQRUH':'01_initial-state.png','JFjky':function(_0x36ee5e,_0x440507){return _0x36ee5e(_0x440507);},'SkobT':function(_0x6bd154,_0xb8b6de){return _0x6bd154(_0xb8b6de);},'BUqvB':function(_0x5f061a,_0x3c83c5,_0x36b018){return _0x5f061a(_0x3c83c5,_0x36b018);},'rcGYR':_0x5c61dd(0x193),'cdusl':function(_0x44c00f,_0x1b44c5,_0x2a7d49){return _0x44c00f(_0x1b44c5,_0x2a7d49);}},{checklistItem:_0xb345c8,itemFeedback:_0x47dc29,taskDescription:_0xf9354f,cliCommandPrefix:_0x2848c9,cliArtifactDir:_0x422ef4,isCdpMode:_0x3abcb5,url:_0x692ec8,cdpEndpoint:_0x53ab81,loginInstructions:_0x4de341}=_0x1fb613,_0x32b8c1=buildCliArtifactPath(_0x422ef4,_0x2fcb3b['bYbZO']),_0x2836b4=buildCliArtifactPath(_0x422ef4,_0x2fcb3b[_0x5c61dd(0x130)]),_0x4b0131=buildCliArtifactPath(_0x422ef4,_0x2fcb3b['FIsed']),_0x228864=buildCliArtifactPath(_0x422ef4,_0x2fcb3b[_0x5c61dd(0x186)]),_0x413ac8=quoteShellArg(_0x32b8c1),_0x5f0ed6=_0x2fcb3b[_0x5c61dd(0x185)](quoteShellArg,_0x2836b4),_0x367ed6=quoteShellArg(_0x4b0131),_0x120e6c=_0x2fcb3b[_0x5c61dd(0x17d)](quoteShellArg,_0x228864),_0x275fbf=_0xb345c8[_0x5c61dd(0x167)]?'\x0a\x0a##\x20Additional\x20Notes\x0a'+_0xb345c8['notes']:'';let _0x50fbdd='';if(_0x47dc29&&_0x47dc29[_0x5c61dd(0x157)][_0x5c61dd(0x1a4)]>0x0){const _0x4f5ed8=_0x47dc29['unaddressedComments']['map'](_0x37aeb0=>{const _0x5169dc=_0x5c61dd,_0x5bfbb4=new Date(_0x37aeb0['createdAt'])[_0x5169dc(0x168)](_0x2fcb3b['zRlxp'],{'month':_0x2fcb3b['DYmDh'],'day':'numeric'}),_0x2940e1=_0x37aeb0[_0x5169dc(0x156)]||_0x37aeb0[_0x5169dc(0x152)]||'Reviewer',_0x2ddea2=_0x37aeb0['domRef']?'\x20(on\x20element:\x20<'+(_0x37aeb0['domRef'][_0x5169dc(0x16b)]['split'](_0x2fcb3b['kzXUh'])['pop']()?.['split'](':')[0x0]||'element')+_0x5169dc(0x134)+(_0x37aeb0[_0x5169dc(0x1ad)][_0x5169dc(0x189)]||'')['slice'](0x0,0x32)+'\x22)':'';return _0x5169dc(0x136)+_0x37aeb0['id']+']\x20**'+_0x2940e1+_0x5169dc(0x126)+_0x5bfbb4+'):\x20\x22'+_0x37aeb0['content']+'\x22'+_0x2ddea2;})[_0x5c61dd(0x1ab)]('\x0a');_0x50fbdd='\x0a\x0a##\x20Reviewer\x20Feedback\x20to\x20Address\x0aThe\x20following\x20reviewer\x20comments\x20were\x20left\x20on\x20the\x20previous\x20version\x20of\x20this\x20item.\x0aVerify\x20that\x20each\x20concern\x20has\x20been\x20addressed\x20in\x20the\x20current\x20implementation.\x0aFor\x20each\x20comment\x20you\x20believe\x20has\x20been\x20addressed,\x20include\x20its\x20ID\x20(the\x20bracketed\x20value)\x20in\x20the\x20addressedCommentIds\x20array\x20in\x20your\x20output.\x0a\x0a'+_0x4f5ed8;}const _0x2bb9e6=_0x47dc29?.[_0x5c61dd(0x183)]?'\x0a\x0a##\x20Expected\x20Flow\x20(from\x20previous\x20verification)\x0a'+_0x47dc29['canonicalFlow']:'',_0x210df5=_0x3abcb5?_0x5c61dd(0x19e)+_0x53ab81+'.\x0aThis\x20is\x20NOT\x20a\x20web\x20app\x20—\x20there\x20is\x20no\x20URL\x20to\x20navigate\x20to.\x20The\x20app\x20is\x20already\x20running\x20and\x20connected.':_0x5c61dd(0x18f)+_0x692ec8+_0x5c61dd(0x176),_0x7dad61=_0x692ec8?quoteShellArg(_0x692ec8):'',_0xb63fc=_0x3abcb5?'##\x20Instructions\x0a1.\x20Use\x20Bash\x20plus\x20Playwright\x20CLI\x20only.\x20Do\x20NOT\x20call\x20MCP\x20browser\x20tools.\x0a2.\x20Start\x20by\x20running\x20`'+_0x2848c9+_0x5c61dd(0x169)+_0x2848c9+'\x20tracing-start`,\x20then\x20`'+_0x2848c9+_0x5c61dd(0x170)+_0x422ef4+_0x5c61dd(0x188)+_0x2848c9+'\x20snapshot\x20--filename\x20'+_0x413ac8+'`\x20to\x20inspect\x20the\x20current\x20app\x20state.\x0a5.\x20Read\x20snapshot\x20YAML\x20files\x20to\x20find\x20element\x20references\x20like\x20`e12`,\x20then\x20use\x20them\x20with\x20`click`,\x20`fill`,\x20`check`,\x20or\x20`select`.\x0a6.\x20Use\x20`'+_0x2848c9+'\x20screenshot\x20--filename\x20'+_0x120e6c+'`\x20style\x20absolute\x20paths\x20at\x20key\x20moments.\x0a6.\x20If\x20you\x20need\x20waits\x20or\x20custom\x20assertions,\x20use\x20`'+_0x2848c9+_0x5c61dd(0x175):_0x5c61dd(0x155)+_0x2848c9+_0x5c61dd(0x13e)+_0x7dad61+'`,\x20then\x20`'+_0x2848c9+'\x20tracing-start`,\x20then\x20`'+_0x2848c9+_0x5c61dd(0x170)+_0x422ef4+_0x5c61dd(0x188)+_0x2848c9+_0x5c61dd(0x191)+_0x413ac8+_0x5c61dd(0x128)+_0x2848c9+_0x5c61dd(0x139)+_0x120e6c+'`\x20style\x20absolute\x20paths\x20at\x20key\x20moments.\x0a8.\x20If\x20you\x20need\x20waits\x20or\x20custom\x20assertions,\x20use\x20`'+_0x2848c9+_0x5c61dd(0x162),_0x15b315=_0x3abcb5?_0x5c61dd(0x14a):_0x5c61dd(0x148),_0x1c73c8=_0x4de341?'\x0a\x0a##\x20Authentication\x0aBEFORE\x20starting\x20the\x20verification\x20task,\x20you\x20MUST\x20authenticate\x20using\x20these\x20steps:\x0a'+_0x4de341+'\x0a\x0aAfter\x20completing\x20authentication,\x20proceed\x20with\x20the\x20verification\x20task\x20below.\x0aIf\x20authentication\x20fails,\x20return\x20immediately\x20with\x20evaluation\x20\x22blocked\x22\x20and\x20describe\x20the\x20auth\x20failure.':'';return'You\x20are\x20a\x20Feature\x20Review\x20Verifier.\x20Your\x20job\x20is\x20to\x20verify\x20a\x20scenario\x20by\x20executing\x20a\x20UI\x20flow\x20and\x20evaluating\x20whether\x20it\x20adequately\x20completes\x20the\x20scenario.\x0a\x0a##\x20Scenario\x20to\x20Verify\x0a'+_0xb345c8['description']+_0x275fbf+_0x50fbdd+_0x2bb9e6+'\x0a\x0a##\x20Task\x20to\x20Execute\x0a'+_0xf9354f+'\x0a\x0a'+_0x210df5+_0x1c73c8+'\x0a\x0a'+_0xb63fc+_0x5c61dd(0x195)+_0x2848c9+'`\x0a\x0a-\x20Write\x20all\x20artifacts\x20under\x20`'+_0x422ef4+_0x5c61dd(0x13c)+_0x5f0ed6+_0x5c61dd(0x12a)+_0x367ed6+'`\x0a-\x20`run-code\x20\x22await\x20page.waitForTimeout(1000)\x22`\x20for\x20waits\x20or\x20small\x20custom\x20checks\x0a\x0a##\x20Screenshot\x20Guidelines\x20-\x20IMPORTANT\x0aTake\x20screenshots\x20throughout\x20the\x20verification\x20flow\x20so\x20a\x20human\x20can\x20review\x20it\x20for\x20completeness.\x20Screenshots\x20are\x20your\x20evidence\x20trail.\x0a\x0a**When\x20to\x20take\x20screenshots\x20(use\x20Playwright\x20CLI\x20screenshot):**\x0a-\x20After\x20the\x20initial\x20snapshot\x20(capture\x20starting\x20state)\x0a-\x20Before\x20and\x20after\x20clicking\x20buttons\x20or\x20submitting\x20forms\x0a-\x20When\x20important\x20UI\x20elements\x20appear\x20(modals,\x20notifications,\x20loading\x20states)\x0a-\x20After\x20navigating\x20to\x20different\x20views\x20or\x20pages\x0a-\x20When\x20verifying\x20specific\x20elements\x20exist\x0a-\x20At\x20the\x20final\x20state\x20showing\x20the\x20completed\x20action\x0a\x0a**Screenshot\x20naming:**\x0a-\x20Use\x20descriptive\x20filenames\x20under\x20`'+_0x422ef4+_0x5c61dd(0x1b3)+_0x228864+'\x22,\x20\x22'+_0x2fcb3b[_0x5c61dd(0x147)](buildCliArtifactPath,_0x422ef4,_0x2fcb3b['rcGYR'])+_0x5c61dd(0x129)+buildCliArtifactPath(_0x422ef4,_0x5c61dd(0x18b))+'\x22\x0a-\x20Number\x20prefixes\x20(01_,\x2002_,\x20etc.)\x20help\x20maintain\x20chronological\x20order\x0a-\x20For\x20KEY\x20MOMENTS\x20that\x20prove\x20the\x20scenario\x20is\x20complete,\x20prefix\x20with\x20\x22key_\x22:\x20\x22'+_0x2fcb3b[_0x5c61dd(0x13f)](buildCliArtifactPath,_0x422ef4,_0x5c61dd(0x181))+_0x5c61dd(0x166)+_0x15b315+_0x5c61dd(0x150);}export function summarizeVerifyFeatureCliCommandAvailability(_0x5ac351){const _0x34e93e=_0x82f9,_0x5df073={'znIYM':function(_0x3279cb,_0x49dc2e){return _0x3279cb===_0x49dc2e;}},_0x1b793b=[..._0x5ac351[_0x34e93e(0x15e)]()]['sort']();let _0x946760=0x0;for(const _0x2f02d0 of _0x5ac351['values']()){_0x946760+=_0x2f02d0;}return{'cliCommandCount':_0x946760,'cliCommandsSeen':_0x1b793b,'noCliCommandsCalled':_0x5df073[_0x34e93e(0x177)](_0x946760,0x0)};}export function createVerifyFeatureCliHooks(_0x17a12e){const _0x473233={'Lvuod':function(_0x473c9d,_0x2c2714){return _0x473c9d!==_0x2c2714;},'cPbNt':'Bash','dUehG':function(_0x1186e5,_0x39ffe6){return _0x1186e5(_0x39ffe6);},'HyfOW':function(_0x31db0e,_0x252d7e){return _0x31db0e(_0x252d7e);},'ESKEg':'playwright-cli','EvafZ':'tool_call','bpPrW':function(_0x9bd4be,_0x1eee4d){return _0x9bd4be!==_0x1eee4d;},'Ibpmw':'PostToolUseFailure'},_0x4bf251=new Map(),_0x50e98f=async _0x32a5ee=>{const _0x3f93ae=_0x82f9;if(_0x32a5ee[_0x3f93ae(0x180)]!==_0x3f93ae(0x12b))return{};const _0x98389e=_0x32a5ee;if(_0x473233['Lvuod'](_0x98389e[_0x3f93ae(0x163)],_0x473233[_0x3f93ae(0x16e)]))return{};const _0x57a1ae=_0x98389e['tool_input'],_0x13dd47=_0x473233[_0x3f93ae(0x13d)](extractBashCommand,_0x57a1ae);if(!_0x13dd47)return{};const _0x4c5a20=_0x473233[_0x3f93ae(0x16c)](parsePlaywrightCliCommand,_0x13dd47);if(!_0x4c5a20)return{};return _0x4bf251[_0x3f93ae(0x1a5)](_0x4c5a20,(_0x4bf251[_0x3f93ae(0x1a9)](_0x4c5a20)||0x0)+0x1),_0x17a12e[_0x3f93ae(0x12d)](_0x3f93ae(0x14c),{'transport':_0x473233[_0x3f93ae(0x1b1)],'toolName':_0x4c5a20}),_0x17a12e['trackPhaseEnd'](_0x473233['EvafZ'],{'transport':_0x473233['ESKEg'],'toolName':_0x4c5a20,'bashCommandPreview':truncatePreview(_0x13dd47)}),_0x4c5a20!==_0x3f93ae(0x17c)&&console['log'](formatPlaywrightCliConsoleLogMessage(_0x57a1ae,_0x13dd47,_0x4c5a20)),{};},_0x5b1cc1=async _0x8cc067=>{const _0x462de3=_0x82f9;if(_0x473233[_0x462de3(0x12e)](_0x8cc067[_0x462de3(0x180)],_0x473233['Ibpmw']))return{};const _0x402f99=_0x8cc067;if(_0x402f99[_0x462de3(0x163)]!==_0x462de3(0x1a2))return{};return await _0x17a12e['trackPhaseError']('tool_failure',_0x402f99['error'],{'transport':_0x473233[_0x462de3(0x1b1)],'toolName':'Bash'}),{};};return{'postToolUseHook':_0x50e98f,'postToolUseFailureHook':_0x5b1cc1,'commandCounts':_0x4bf251};}function _0x82f9(_0x794c0d,_0x3aae07){_0x794c0d=_0x794c0d-0x124;const _0x3b9be6=_0x3b9b();let _0x82f9e6=_0x3b9be6[_0x794c0d];return _0x82f9e6;}async function runPlaywrightCliLifecycleCommand(_0x1a1f2f){const _0x15efd3=_0x82f9,_0x3b291a={'dQvEF':function(_0x50da12,_0x17c13b){return _0x50da12(_0x17c13b);},'GHMHi':function(_0x176842,_0x5a531e,_0x4aadff){return _0x176842(_0x5a531e,_0x4aadff);}},{sessionId:_0x4e0ecd,configPath:_0x372481,commandArgs:_0x1939a6,env:_0x3c58a4,telemetry:_0x49ebf3,phase:_0x10cbfc,metadata:_0x47f792,timeoutMs:_0x1381d4}=_0x1a1f2f;_0x49ebf3[_0x15efd3(0x12d)](_0x10cbfc,_0x47f792);try{const _0x2f1d88=await _0x3b291a['dQvEF'](runPlaywrightCliCommand,{'sessionId':_0x4e0ecd,'configPath':_0x372481,'commandArgs':_0x1939a6,'cwd':process[_0x15efd3(0x197)](),'env':_0x3c58a4,'timeoutMs':_0x1381d4??PLAYWRIGHT_CLI_COMMAND_TIMEOUT_MS});_0x49ebf3[_0x15efd3(0x164)](_0x10cbfc,{..._0x47f792,'subcommand':_0x2f1d88['invocation']['subcommand'],'stdoutPreview':_0x3b291a[_0x15efd3(0x1b2)](truncatePreview,_0x2f1d88[_0x15efd3(0x196)],0x7d0),'stderrPreview':_0x3b291a[_0x15efd3(0x1b2)](truncatePreview,_0x2f1d88[_0x15efd3(0x149)],0x7d0)});}catch(_0x41270c){await _0x49ebf3[_0x15efd3(0x160)](_0x10cbfc,_0x41270c,_0x47f792);throw _0x41270c;}}function _0x3b9b(){const _0x39e926=['\x0a-\x20You\x20may\x20ONLY\x20navigate\x20to\x20paths\x20under\x20this\x20base\x20URL\x20(same\x20protocol,\x20host,\x20and\x20port)\x0a-\x20For\x20example,\x20if\x20the\x20base\x20URL\x20is\x20\x22http://localhost:3000\x22,\x20you\x20can\x20navigate\x20to\x20\x22http://localhost:3000/home\x22,\x20\x22http://localhost:3000/settings\x22,\x20etc.\x0a-\x20DO\x20NOT\x20navigate\x20to\x20any\x20different\x20domain,\x20host,\x20or\x20port\x20under\x20any\x20circumstances\x0a-\x20If\x20documentation\x20or\x20code\x20diffs\x20suggest\x20a\x20path\x20exists\x20(e.g.,\x20\x22/dashboard\x22),\x20you\x20may\x20navigate\x20to\x20that\x20path\x20ONLY\x20under\x20the\x20base\x20URL\x20above\x0a-\x20The\x20base\x20URL\x20above\x20is\x20the\x20ONLY\x20authorized\x20profile\x20for\x20this\x20verification','znIYM','slice','AHcIZ','start\x20tracing','hPjsp','snapshot','SkobT','`\x0a9.\x20Run\x20`','hTlYD','hook_event_name','key_04_success-state.png','EuWrR','canonicalFlow','playwright_cli_close','JFjky','NQRUH','IryHm','`\x20using\x20absolute\x20paths\x20only.\x20Do\x20not\x20use\x20relative\x20filenames.\x0a4.\x20Take\x20a\x20snapshot\x20with\x20`','textContent','eBpxl','03_result-visible.png','60379YKvqan','stop\x20tracing','mtimeMs','CRITICAL\x20URL\x20REQUIREMENT:\x0aYour\x20base\x20URL\x20is:\x20','\x20tracing-start`\x0a3.\x20Run\x20`','\x20snapshot\x20--filename\x20','stringify','02_button-clicked.png','7zBzVpk','\x0a\x0a##\x20Browser\x20Command\x20Reference\x0aUse\x20Bash\x20to\x20run\x20Playwright\x20CLI\x20commands\x20with\x20this\x20exact\x20prefix:\x0a`','stdout','cwd','ANBvx','1528624ATEoPo','--filename=','`\x0a5.\x20Read\x20the\x20snapshot\x20file\x20to\x20find\x20the\x20\x22Learn\x20More\x22\x20link\x20reference\x0a6.\x20Run\x20`','934152hEbIxA','RdDKV','##\x20App\x20Context\x0aYou\x20are\x20connected\x20to\x20a\x20desktop\x20application\x20via\x20CDP\x20(Chrome\x20DevTools\x20Protocol)\x20at\x20','lCXFf','HVTvM','fill','Bash','01_mozilla-homepage.png','length','set','trim','trace.zip','capture\x20key\x20step\x20`','get','Lqhgh','join','80991LyBjhx','domRef','video-start','match','press','ESKEg','GHMHi','`:\x20\x22','yMYPW','\x5c$&','**\x20(','gBwZI','`\x20and\x20read\x20the\x20snapshot\x20file\x20to\x20inspect\x20the\x20page.\x0a5.\x20**IMMEDIATELY\x20check\x20for\x20blocking\x20HTTP\x20errors\x20before\x20proceeding.**\x0a6.\x20Execute\x20the\x20task\x20step-by-step\x20with\x20Playwright\x20CLI\x20commands.\x0a7.\x20Use\x20`','\x22,\x20\x22','`\x20writes\x20a\x20YAML\x20snapshot\x20you\x20can\x20read\x20for\x20element\x20refs\x0a-\x20`click\x20<ref>`,\x20`fill\x20<ref>\x20\x22text\x22`,\x20`check\x20<ref>`,\x20`press\x20Enter`\x0a-\x20`tab-list`,\x20`tab-select\x20<index>`,\x20`tab-new\x20<url>`\x0a-\x20`screenshot\x20--filename\x20','PostToolUse','check\x20','trackPhaseStart','bpPrW','VXsfJ','YIjED','228fxnXoy','2155660tgXKRO','tab-new','>\x20\x22','18820524adbCqQ','-\x20[','wcqgB','Mpgcm','\x20screenshot\x20--filename\x20','DEBUG','video-stop','`\x0a-\x20`snapshot\x20--filename\x20','dUehG','\x20open\x20','cdusl','session-recording.webm','cycfy','PuemU','run\x20custom\x20Playwright\x20code','JsfQh','03_learn-more.png','capture\x20snapshot\x20`','BUqvB','\x0a\x0a##\x20Critical:\x20Early\x20Error\x20Detection\x0aAfter\x20step\x202\x20(taking\x20initial\x20snapshot),\x20IMMEDIATELY\x20check\x20for\x20blocking\x20HTTP\x20errors:\x0a\x0a**Blocking\x20errors\x20to\x20detect:**\x0a-\x20HTTP\x20404:\x20\x22404\x22,\x20\x22Not\x20Found\x22,\x20\x22Page\x20not\x20found\x22,\x20\x22does\x20not\x20exist\x22\x0a-\x20HTTP\x20500:\x20\x22500\x22,\x20\x22Internal\x20Server\x20Error\x22,\x20\x22Server\x20Error\x22,\x20\x22Something\x20went\x20wrong\x22\x0a-\x20HTTP\x20400:\x20\x22400\x22,\x20\x22Bad\x20Request\x22,\x20\x22Invalid\x20request\x22\x0a\x0a**Also\x20check\x20for:**\x0a-\x20Framework\x20error\x20pages\x20(Next.js\x20error\x20boundary,\x20React\x20error\x20page,\x20\x22Application\x20error\x22)\x0a-\x20Completely\x20blank/empty\x20pages\x20with\x20no\x20content\x0a-\x20\x22Cannot\x20GET\x20/path\x22\x20messages\x0a\x0a**If\x20ANY\x20blocking\x20error\x20is\x20detected:**\x0a1.\x20DO\x20NOT\x20continue\x20with\x20the\x20task\x0a2.\x20Return\x20IMMEDIATELY\x20with\x20evaluation:\x20\x22blocked\x22\x0a3.\x20Set\x20evaluationReason\x20to\x20describe\x20the\x20specific\x20error\x20(e.g.,\x20\x22HTTP\x20404\x20-\x20Page\x20not\x20found\x20at\x20/dashboard\x22)\x0a4.\x20Include\x20the\x20error\x20in\x20issues\x20array\x20with\x20severity:\x20\x22BLOCKER\x22\x20and\x20appropriate\x20type\x20(HTTP_404,\x20HTTP_500,\x20HTTP_400,\x20or\x20NAVIGATION_ERROR)\x0a\x0aThis\x20early\x20exit\x20prevents\x20wasting\x20time\x20on\x20tasks\x20that\x20cannot\x20succeed\x20due\x20to\x20fundamental\x20errors.','stderr','\x0a\x0a##\x20Critical:\x20Early\x20Error\x20Detection\x0aAfter\x20taking\x20the\x20initial\x20snapshot,\x20IMMEDIATELY\x20check\x20for\x20blocking\x20errors:\x0a\x0a**Blocking\x20errors\x20to\x20detect:**\x0a-\x20Crash\x20or\x20error\x20dialogs\x20(\x22An\x20error\x20occurred\x22,\x20\x22Something\x20went\x20wrong\x22,\x20unhandled\x20exception\x20messages)\x0a-\x20Blank\x20or\x20empty\x20window\x20with\x20no\x20rendered\x20content\x0a-\x20Framework\x20error\x20boundaries\x20(React\x20error\x20page,\x20Electron\x20crash\x20reporter)\x0a-\x20Unresponsive\x20or\x20frozen\x20UI\x20(no\x20interactive\x20elements\x20in\x20snapshot)\x0a\x0a**If\x20ANY\x20blocking\x20error\x20is\x20detected:**\x0a1.\x20DO\x20NOT\x20continue\x20with\x20the\x20task\x0a2.\x20Return\x20IMMEDIATELY\x20with\x20evaluation:\x20\x22blocked\x22\x0a3.\x20Set\x20evaluationReason\x20to\x20describe\x20the\x20specific\x20error\x20(e.g.,\x20\x22App\x20crashed\x20—\x20error\x20dialog\x20visible\x20on\x20launch\x22)\x0a4.\x20Include\x20the\x20error\x20in\x20issues\x20array\x20with\x20severity:\x20\x22BLOCKER\x22\x20and\x20type:\x20\x22APP_ERROR\x22\x0a\x0aThis\x20early\x20exit\x20prevents\x20wasting\x20time\x20on\x20tasks\x20that\x20cannot\x20succeed\x20due\x20to\x20fundamental\x20errors.','name','tool_call','`\x20using\x20absolute\x20paths\x20only.\x20Do\x20not\x20use\x20relative\x20filenames.\x0a5.\x20Run\x20`','playwright_cli_video_stop','replace','\x0a##\x20Evaluation\x20Criteria\x0a-\x20VERIFIED:\x20The\x20task\x20completed\x20successfully\x20and\x20the\x20scenario\x20requirements\x20are\x20fully\x20met\x0a-\x20PARTIAL:\x20The\x20task\x20partially\x20completed\x20but\x20some\x20aspects\x20of\x20the\x20scenario\x20are\x20not\x20verified\x0a-\x20BLOCKED:\x20A\x20blocking\x20issue\x20(bug,\x20error,\x20missing\x20feature)\x20prevents\x20completion\x0a-\x20FAILED:\x20The\x20task\x20could\x20not\x20be\x20completed\x20due\x20to\x20errors\x0a\x0aReturn\x20your\x20findings\x20in\x20the\x20structured\x20output\x20format\x20with\x20your\x20evaluation.','tracing-stop','authorEmail','ApEMs','[ranger-verification-agent]\x20','##\x20Instructions\x0a1.\x20Use\x20Bash\x20plus\x20Playwright\x20CLI\x20only.\x20Do\x20NOT\x20call\x20MCP\x20browser\x20tools.\x0a2.\x20Start\x20by\x20running\x20`','authorName','unaddressedComments','MmOdW','click\x20','short','close','81337wMEdqK','EZoVl','keys','oziDX','trackPhaseError','54QzWqkB','\x20run-code\x20\x22<playwright\x20code>\x22`.\x0a9.\x20Do\x20not\x20run\x20`close`,\x20`tracing-stop`,\x20or\x20`video-stop`;\x20the\x20host\x20finalizes\x20the\x20session\x20and\x20artifacts.\x0a10.\x20After\x20completing\x20the\x20verification,\x20evaluate\x20whether\x20the\x20result\x20adequately\x20verifies\x20the\x20scenario','tool_name','trackPhaseEnd','(?:\x5cs+(?:\x22([^\x22]+)\x22|\x27([^\x27]+)\x27|(\x5cS+)))','\x22\x0a-\x20The\x20\x22key_\x22\x20prefix\x20marks\x20screenshots\x20as\x20high-priority\x20evidence\x20for\x20human\x20reviewers\x0a\x0a**Aim\x20for\x203-6\x20screenshots\x20per\x20verification**\x20to\x20document\x20the\x20complete\x20flow.\x20Mark\x201-2\x20of\x20the\x20most\x20important\x20ones\x20with\x20the\x20\x22key_\x22\x20prefix.\x0a','notes','toLocaleDateString','\x20open`,\x20then\x20`','1810FIeJIT','selector','HyfOW','tracing-start','cPbNt','2pvdAwu','\x20video-start`.\x0a3.\x20Save\x20every\x20snapshot\x20and\x20screenshot\x20under\x20`','commandArgs','isFile','test','check','\x20run-code\x20\x22<playwright\x20code>\x22`.\x0a7.\x20Do\x20not\x20run\x20`close`,\x20`tracing-stop`,\x20or\x20`video-stop`;\x20the\x20host\x20finalizes\x20the\x20session\x20and\x20artifacts.\x0a8.\x20After\x20completing\x20the\x20verification,\x20evaluate\x20whether\x20the\x20result\x20adequately\x20verifies\x20the\x20scenario'];_0x3b9b=function(){return _0x39e926;};return _0x3b9b();}export async function finalizeVerifyFeatureCliSession(_0x307b6c){const _0x335cf9=_0x82f9,_0xc99df8={'wrGbX':_0x335cf9(0x151),'bXMQX':_0x335cf9(0x13b),'ANBvx':_0x335cf9(0x140),'BytYB':_0x335cf9(0x184)},{telemetry:_0x7813a4,sessionId:_0x2e4da5,configPath:_0x3a22e6,cliArtifactDir:_0x5616e2,env:_0x5cf3e2,transportMetadata:_0x5ad973}=_0x307b6c,_0x233110=[{'phase':'playwright_cli_tracing_stop','commandArgs':[_0xc99df8['wrGbX']]},{'phase':_0x335cf9(0x14e),'commandArgs':[_0xc99df8['bXMQX'],_0x335cf9(0x19a)+buildCliArtifactPath(_0x5616e2,_0xc99df8[_0x335cf9(0x198)])]},{'phase':_0xc99df8['BytYB'],'commandArgs':[_0x335cf9(0x15b)]}];for(const _0x344201 of _0x233110){try{await runPlaywrightCliLifecycleCommand({'sessionId':_0x2e4da5,'configPath':_0x3a22e6,'commandArgs':[..._0x344201[_0x335cf9(0x171)]],'env':_0x5cf3e2,'telemetry':_0x7813a4,'phase':_0x344201['phase'],'metadata':_0x5ad973});}catch{}}}export async function loadVerifyFeatureCliTraceUploadArtifact(_0x3a8938){const _0x1e75c5=_0x82f9,_0x43b66a={'UULdU':'trace.trace.zip'},_0x54e28e=[_0x1e75c5(0x1a7),_0x43b66a['UULdU']];for(const _0x35b4ea of _0x54e28e){const _0x4d12a5=join(_0x3a8938,_0x35b4ea);try{return{'buffer':await readFile(_0x4d12a5),'source':_0x4d12a5};}catch{}}return null;}export async function rehomeVerifyFeatureCliArtifacts(_0x14bc8d){const _0x3e216e=_0x82f9,_0x4ac936={'gBwZI':function(_0x51a419,_0x206a2e,_0x1e8471){return _0x51a419(_0x206a2e,_0x1e8471);},'eBpxl':function(_0x162c71,_0x43b18d){return _0x162c71(_0x43b18d);},'hTlYD':function(_0x573a4e,_0x583442){return _0x573a4e<_0x583442;},'wcqgB':function(_0x3f3dde,_0x52af4e){return _0x3f3dde+_0x52af4e;},'GHtlo':function(_0x5ba4e8,_0x2681a2,_0x5f03d9){return _0x5ba4e8(_0x2681a2,_0x5f03d9);},'PuemU':function(_0x2f79cc,_0x521eb1){return _0x2f79cc===_0x521eb1;}},{cwd:_0x164bb9,cliArtifactDir:_0x217de9,startTime:_0x6842b}=_0x14bc8d,_0x54fbf2=[];await _0x4ac936[_0x3e216e(0x127)](mkdir,_0x217de9,{'recursive':!![]});const _0x285cc7=await readdir(_0x164bb9,{'withFileTypes':!![]});for(const _0x3352d2 of _0x285cc7){if(!_0x3352d2[_0x3e216e(0x172)]()||!VERIFY_FEATURE_CLI_ARTIFACT_FILE_PATTERN[_0x3e216e(0x173)](_0x3352d2['name']))continue;const _0x956ac5=join(_0x164bb9,_0x3352d2['name']),_0x35f84e=await _0x4ac936[_0x3e216e(0x18a)](stat,_0x956ac5);if(_0x4ac936[_0x3e216e(0x17f)](_0x4ac936[_0x3e216e(0x137)](_0x35f84e[_0x3e216e(0x18e)],0x7d0),_0x6842b))continue;const _0x1cc8a8=_0x4ac936['GHtlo'](buildCliArtifactPath,_0x217de9,_0x3352d2[_0x3e216e(0x14b)]);if(_0x4ac936[_0x3e216e(0x142)](_0x956ac5,_0x1cc8a8))continue;await _0x4ac936[_0x3e216e(0x127)](rename,_0x956ac5,_0x1cc8a8),_0x54fbf2['push'](_0x3352d2[_0x3e216e(0x14b)]);}return _0x54fbf2['sort']();}
|
|
1
|
+
(function(_0x1b2a5a,_0x43324a){const _0x336e17=_0x4f73,_0x20d50=_0x1b2a5a();while(!![]){try{const _0x57f438=parseInt(_0x336e17(0x17f))/0x1+parseInt(_0x336e17(0x164))/0x2*(parseInt(_0x336e17(0x168))/0x3)+parseInt(_0x336e17(0x1a9))/0x4+parseInt(_0x336e17(0x14d))/0x5*(parseInt(_0x336e17(0x161))/0x6)+parseInt(_0x336e17(0x149))/0x7*(-parseInt(_0x336e17(0x117))/0x8)+parseInt(_0x336e17(0x16b))/0x9*(-parseInt(_0x336e17(0x159))/0xa)+-parseInt(_0x336e17(0x1a0))/0xb*(-parseInt(_0x336e17(0x18b))/0xc);if(_0x57f438===_0x43324a)break;else _0x20d50['push'](_0x20d50['shift']());}catch(_0x437546){_0x20d50['push'](_0x20d50['shift']());}}}(_0x1c6b,0x382cd));import{mkdir,readFile,readdir,rename,stat}from'fs/promises';import{basename,join}from'path';function _0x4f73(_0x5c8aaa,_0x2f2d24){_0x5c8aaa=_0x5c8aaa-0x111;const _0x1c6bf1=_0x1c6b();let _0x4f7349=_0x1c6bf1[_0x5c8aaa];return _0x4f7349;}function _0x1c6b(){const _0x528feb=['phase','`\x20and\x20read\x20the\x20snapshot\x20file\x20to\x20inspect\x20the\x20page.\x0a5.\x20**IMMEDIATELY\x20check\x20for\x20blocking\x20HTTP\x20errors\x20before\x20proceeding.**\x0a6.\x20Execute\x20the\x20task\x20step-by-step\x20with\x20Playwright\x20CLI\x20commands.\x0a7.\x20Use\x20`','igqHs','element','run-code','tool_call','domRef','CRITICAL\x20URL\x20REQUIREMENT:\x0aYour\x20base\x20URL\x20is:\x20','eVOXI','split','sort','wuOrt','75208oFpwcJ','PostToolUseFailure','hnhdb','\x5c$&','hQFlS','uGWXR','trackPhaseEnd','\x20(on\x20element:\x20<','`\x20style\x20absolute\x20paths\x20at\x20key\x20moments.\x0a6.\x20If\x20you\x20need\x20waits\x20or\x20custom\x20assertions,\x20use\x20`','You\x20are\x20testing\x20browser\x20automation.\x20Your\x20task\x20is\x20simple:\x0a\x0aUse\x20Bash\x20and\x20Playwright\x20CLI\x20only.\x20The\x20browser\x20command\x20prefix\x20is:\x0a','match','`\x0a-\x20`snapshot\x20--filename\x20','224484uIYfjk','\x20video-start`.\x0a3.\x20Save\x20every\x20snapshot\x20and\x20screenshot\x20under\x20`','set','00_mozilla-homepage.yml','PostToolUse','yGUKt','SMPDo','ATlSc','\x20run-code\x20\x22<playwright\x20code>\x22`.\x0a9.\x20Do\x20not\x20run\x20`close`,\x20`tracing-stop`,\x20or\x20`video-stop`;\x20the\x20host\x20finalizes\x20the\x20session\x20and\x20artifacts.\x0a10.\x20After\x20completing\x20the\x20verification,\x20evaluate\x20whether\x20the\x20result\x20adequately\x20verifies\x20the\x20scenario','OyWNV','trackPhaseStart','msQyi','playwright-cli','video-stop','\x0a\x0a##\x20Expected\x20Flow\x20(from\x20previous\x20verification)\x0a','`\x20using\x20absolute\x20paths\x20only.\x20Do\x20not\x20use\x20relative\x20filenames.\x0a4.\x20Take\x20a\x20snapshot\x20with\x20`','subcommand','unaddressedComments','qNPzj','createdAt','\x0a\x0a##\x20Additional\x20Notes\x0a','429mIuXUg','WYsPY','\x20>\x20','irOGF','trace.zip','commandArgs','SlGoY','\x20snapshot\x20--filename\x20','capture\x20key\x20step\x20`','266768QrxrWv','ref\x20','replace','playwright_cli_close','\x20open\x20https://www.mozilla.org`\x0a2.\x20Run\x20`','.\x0aThis\x20is\x20NOT\x20a\x20web\x20app\x20—\x20there\x20is\x20no\x20URL\x20to\x20navigate\x20to.\x20The\x20app\x20is\x20already\x20running\x20and\x20connected.','\x22\x0a-\x20Number\x20prefixes\x20(01_,\x2002_,\x20etc.)\x20help\x20maintain\x20chronological\x20order\x0a-\x20For\x20KEY\x20MOMENTS\x20that\x20prove\x20the\x20scenario\x20is\x20complete,\x20prefix\x20with\x20\x22key_\x22:\x20\x22','129720jEWMQI','snapshot','CMbXH','):\x20\x22','description','You\x20are\x20a\x20Feature\x20Review\x20Verifier.\x20Your\x20job\x20is\x20to\x20verify\x20a\x20scenario\x20by\x20executing\x20a\x20UI\x20flow\x20and\x20evaluating\x20whether\x20it\x20adequately\x20completes\x20the\x20scenario.\x0a\x0a##\x20Scenario\x20to\x20Verify\x0a','nyAxT','content','EnQpW','keys','GvPVR','Bash','DEBUG','length','trackPhaseError','notes','vaotG','trace.trace.zip','\x20screenshot\x20--filename\x20','capture\x20step\x20`','playwright_cli_video_stop','open','error','stop\x20tracing','press','##\x20Instructions\x0a1.\x20Use\x20Bash\x20plus\x20Playwright\x20CLI\x20only.\x20Do\x20NOT\x20call\x20MCP\x20browser\x20tools.\x0a2.\x20Start\x20by\x20running\x20`','playwright_cli_tracing_stop','authorEmail','JeOUP','`\x0a5.\x20Read\x20the\x20snapshot\x20file\x20to\x20find\x20the\x20\x22Learn\x20More\x22\x20link\x20reference\x0a6.\x20Run\x20`','OSsEN','test','map','invocation','>\x20\x22','sjBvt','fill','`\x0a\x0a-\x20Write\x20all\x20artifacts\x20under\x20`','\x22\x0a-\x20The\x20\x22key_\x22\x20prefix\x20marks\x20screenshots\x20as\x20high-priority\x20evidence\x20for\x20human\x20reviewers\x0a\x0a**Aim\x20for\x203-6\x20screenshots\x20per\x20verification**\x20to\x20document\x20the\x20complete\x20flow.\x20Mark\x201-2\x20of\x20the\x20most\x20important\x20ones\x20with\x20the\x20\x22key_\x22\x20prefix.\x0a','\x0a-\x20You\x20may\x20ONLY\x20navigate\x20to\x20paths\x20under\x20this\x20base\x20URL\x20(same\x20protocol,\x20host,\x20and\x20port)\x0a-\x20For\x20example,\x20if\x20the\x20base\x20URL\x20is\x20\x22http://localhost:3000\x22,\x20you\x20can\x20navigate\x20to\x20\x22http://localhost:3000/home\x22,\x20\x22http://localhost:3000/settings\x22,\x20etc.\x0a-\x20DO\x20NOT\x20navigate\x20to\x20any\x20different\x20domain,\x20host,\x20or\x20port\x20under\x20any\x20circumstances\x0a-\x20If\x20documentation\x20or\x20code\x20diffs\x20suggest\x20a\x20path\x20exists\x20(e.g.,\x20\x22/dashboard\x22),\x20you\x20may\x20navigate\x20to\x20that\x20path\x20ONLY\x20under\x20the\x20base\x20URL\x20above\x0a-\x20The\x20base\x20URL\x20above\x20is\x20the\x20ONLY\x20authorized\x20profile\x20for\x20this\x20verification','check','open\x20','start\x20video\x20recording','ZhXkt','03_learn-more.png','[ranger-verification-agent]\x20','capture\x20snapshot','tab-select','`:\x20\x22','screenshot','161tPGQsK','name','FUWyI','\x20tracing-start`,\x20then\x20`','345830byfLwl','...','slice','click\x20','hook_event_name','push','mECGo','cwd','open\x20browser','xuufn','canonicalFlow','02_button-clicked.png','20TMttNF','--filename=','`\x0a-\x20`run-code\x20\x22await\x20page.waitForTimeout(1000)\x22`\x20for\x20waits\x20or\x20small\x20custom\x20checks\x0a\x0a##\x20Screenshot\x20Guidelines\x20-\x20IMPORTANT\x0aTake\x20screenshots\x20throughout\x20the\x20verification\x20flow\x20so\x20a\x20human\x20can\x20review\x20it\x20for\x20completeness.\x20Screenshots\x20are\x20your\x20evidence\x20trail.\x0a\x0a**When\x20to\x20take\x20screenshots\x20(use\x20Playwright\x20CLI\x20screenshot):**\x0a-\x20After\x20the\x20initial\x20snapshot\x20(capture\x20starting\x20state)\x0a-\x20Before\x20and\x20after\x20clicking\x20buttons\x20or\x20submitting\x20forms\x0a-\x20When\x20important\x20UI\x20elements\x20appear\x20(modals,\x20notifications,\x20loading\x20states)\x0a-\x20After\x20navigating\x20to\x20different\x20views\x20or\x20pages\x0a-\x20When\x20verifying\x20specific\x20elements\x20exist\x0a-\x20At\x20the\x20final\x20state\x20showing\x20the\x20completed\x20action\x0a\x0a**Screenshot\x20naming:**\x0a-\x20Use\x20descriptive\x20filenames\x20under\x20`',']\x20**','pop','##\x20App\x20Context\x0aYou\x20are\x20connected\x20to\x20a\x20desktop\x20application\x20via\x20CDP\x20(Chrome\x20DevTools\x20Protocol)\x20at\x20','tab-new','NawSy','6qBIwyO','isFile','values','10qkePOR','CuGkG','\x0a\x0a##\x20Reviewer\x20Feedback\x20to\x20Address\x0aThe\x20following\x20reviewer\x20comments\x20were\x20left\x20on\x20the\x20previous\x20version\x20of\x20this\x20item.\x0aVerify\x20that\x20each\x20concern\x20has\x20been\x20addressed\x20in\x20the\x20current\x20implementation.\x0aFor\x20each\x20comment\x20you\x20believe\x20has\x20been\x20addressed,\x20include\x20its\x20ID\x20(the\x20bracketed\x20value)\x20in\x20the\x20addressedCommentIds\x20array\x20in\x20your\x20output.\x0a\x0a','bweiT','29259QrsEaE','mtimeMs','`\x20style\x20absolute\x20paths\x20at\x20key\x20moments.\x0a8.\x20If\x20you\x20need\x20waits\x20or\x20custom\x20assertions,\x20use\x20`','1738647AMCNrh','meEqP','tracing-stop','03_result-visible.png','(?:\x5cs+(?:\x22([^\x22]+)\x22|\x27([^\x27]+)\x27|(\x5cS+)))','open\x20new\x20tab','PVHuL','[playwright-cli]\x20'];_0x1c6b=function(){return _0x528feb;};return _0x1c6b();}import{extractBashCommand,parsePlaywrightCliCommand,quoteShellArg,runPlaywrightCliCommand}from'./utils/playwrightCli.js';const PLAYWRIGHT_CLI_COMMAND_TIMEOUT_MS=0xea60,PLAYWRIGHT_CLI_PREVIEW_LIMIT=0xf0,VERIFY_FEATURE_CLI_ARTIFACT_FILE_PATTERN=/^(?:\d{2}_.+\.(?:png|ya?ml)|key_.+\.png|session-recording(?:-\d+)?\.webm|trace(?:\.trace)?(?:-\d+)?\.zip|current_snap\.ya?ml)$/i;function truncatePreview(_0x1ad534,_0x51e66a=PLAYWRIGHT_CLI_PREVIEW_LIMIT){const _0x11f170=_0x4f73,_0x100ea5={'eVOXI':function(_0x2bcfeb,_0x1b8478){return _0x2bcfeb>_0x1b8478;},'meEqP':function(_0xe2cd78,_0x4c682b){return _0xe2cd78+_0x4c682b;}};return _0x100ea5[_0x11f170(0x17b)](_0x1ad534['length'],_0x51e66a)?_0x100ea5[_0x11f170(0x16c)](_0x1ad534['slice'](0x0,_0x51e66a),_0x11f170(0x14e)):_0x1ad534;}function buildCliArtifactPath(_0x3db2f5,_0x9ac174){return join(_0x3db2f5,_0x9ac174);}function toStepDisplayName(_0x3f95d6){const _0x2aaf54=_0x4f73,_0x5ac982={'HDKaA':function(_0x15b01d,_0x1de89b){return _0x15b01d(_0x1de89b);},'nudFC':function(_0x56abf1,_0xcc0e6c){return _0x56abf1(_0xcc0e6c);}},_0x50a9bd=_0x5ac982['HDKaA'](basename,_0x3f95d6)['replace'](/\.(?:png|ya?ml)$/i,'')[_0x2aaf54(0x112)](/^key_/i,'')[_0x2aaf54(0x112)](/^\d+_/,'')['replace'](/-/g,'\x20');return{'name':_0x50a9bd,'isKeyStep':/^key_/i['test'](_0x5ac982['nudFC'](basename,_0x3f95d6))};}function extractShellValue(_0x5c2491){if(!_0x5c2491)return null;return _0x5c2491[0x1]??_0x5c2491[0x2]??_0x5c2491[0x3]??null;}function extractFilenameOption(_0xa5babb){const _0x55d6d3=_0x4f73;return extractShellValue(_0xa5babb[_0x55d6d3(0x189)](/--filename(?:=|\s+)(?:"([^"]+)"|'([^']+)'|(\S+))/));}function extractFirstCommandArgument(_0xdd0d3e,_0x1cf673){const _0x1aae69=_0x4f73,_0x388564={'mECGo':function(_0x461af8,_0x255ef9){return _0x461af8(_0x255ef9);}},_0x52fd23=_0x1cf673['replace'](/[.*+?^${}()|[\]\\]/g,_0x1aae69(0x182));return _0x388564[_0x1aae69(0x153)](extractShellValue,_0xdd0d3e[_0x1aae69(0x189)](new RegExp('(?:^|\x5cs)'+_0x52fd23+_0x1aae69(0x16f))));}function formatCommandTarget(_0x304e38){const _0x153495=_0x4f73,_0x4cca54={'GKwdu':'target','rBTFG':function(_0x28e034,_0x210dd4,_0x4587e4){return _0x28e034(_0x210dd4,_0x4587e4);}};if(!_0x304e38)return _0x4cca54['GKwdu'];if(/^e\d+$/i[_0x153495(0x136)](_0x304e38))return _0x153495(0x111)+_0x304e38;return JSON['stringify'](_0x4cca54['rBTFG'](truncatePreview,_0x304e38,0x78));}function formatPlaywrightCliLog(_0x44c30a,_0x367c9e){const _0x3743c5=_0x4f73,_0x4eee96={'IKQef':'tracing-start','yGUKt':'start\x20tracing','PUWBw':_0x3743c5(0x12e),'sjBvt':'video-start','HatuU':_0x3743c5(0x141),'vaotG':_0x3743c5(0x145),'msQyi':_0x3743c5(0x148),'GBrbU':function(_0x1b3e9a,_0x21c858){return _0x1b3e9a(_0x21c858);},'igqHs':_0x3743c5(0x13b),'DMsCZ':function(_0x2256f9,_0x14805d){return _0x2256f9(_0x14805d);},'qGxzY':function(_0x188444,_0x3e4908,_0x10c117){return _0x188444(_0x3e4908,_0x10c117);},'PVHuL':_0x3743c5(0x12f),'RSSit':_0x3743c5(0x177),'uGWXR':_0x3743c5(0x15f),'CMbXH':_0x3743c5(0x146),'ZhXkt':'select\x20tab'};switch(_0x367c9e){case _0x3743c5(0x12c):{const _0x289e1a=extractFirstCommandArgument(_0x44c30a,_0x367c9e);return _0x289e1a?_0x3743c5(0x140)+_0x289e1a:_0x3743c5(0x155);}case _0x4eee96['IKQef']:return _0x4eee96[_0x3743c5(0x190)];case'tracing-stop':return _0x4eee96['PUWBw'];case _0x4eee96[_0x3743c5(0x13a)]:return _0x4eee96['HatuU'];case'video-stop':return'stop\x20video\x20recording';case'snapshot':{const _0x82e8c9=extractFilenameOption(_0x44c30a);if(!_0x82e8c9)return _0x4eee96[_0x3743c5(0x127)];const {name:_0x5a3aa5}=toStepDisplayName(_0x82e8c9);return'capture\x20snapshot\x20`'+_0x5a3aa5+'`';}case _0x4eee96[_0x3743c5(0x196)]:{const _0x2eccf7=extractFilenameOption(_0x44c30a);if(!_0x2eccf7)return'capture\x20screenshot';const {name:_0x41bf21,isKeyStep:_0x2a59a8}=_0x4eee96['GBrbU'](toStepDisplayName,_0x2eccf7);return _0x2a59a8?_0x3743c5(0x1a8)+_0x41bf21+'`':_0x3743c5(0x12a)+_0x41bf21+'`';}case'click':return _0x3743c5(0x150)+formatCommandTarget(extractFirstCommandArgument(_0x44c30a,_0x367c9e));case _0x3743c5(0x13f):return'check\x20'+formatCommandTarget(extractFirstCommandArgument(_0x44c30a,_0x367c9e));case _0x4eee96[_0x3743c5(0x175)]:return'fill\x20'+_0x4eee96['DMsCZ'](formatCommandTarget,_0x4eee96['qGxzY'](extractFirstCommandArgument,_0x44c30a,_0x367c9e));case _0x4eee96[_0x3743c5(0x171)]:return'press\x20'+formatCommandTarget(_0x4eee96['qGxzY'](extractFirstCommandArgument,_0x44c30a,_0x367c9e));case _0x4eee96['RSSit']:return'run\x20custom\x20Playwright\x20code';case _0x4eee96[_0x3743c5(0x184)]:{const _0x761e86=extractFirstCommandArgument(_0x44c30a,_0x367c9e);return _0x761e86?'open\x20new\x20tab\x20'+_0x761e86:_0x3743c5(0x170);}case _0x4eee96[_0x3743c5(0x119)]:{const _0x3c1c93=extractFirstCommandArgument(_0x44c30a,_0x367c9e);return _0x3c1c93?'select\x20tab\x20'+_0x3c1c93:_0x4eee96[_0x3743c5(0x142)];}default:return _0x367c9e;}}function extractPlaywrightCliToolDescription(_0x4f77d3){const _0x255582=_0x4f73,_0x1ff2ca={'JeOUP':function(_0x350569,_0x33b595){return _0x350569!==_0x33b595;},'wuOrt':'string','LhNlE':function(_0x1c9b1f,_0xc46393){return _0x1c9b1f>_0xc46393;}},_0xa6f40e=_0x4f77d3[_0x255582(0x11b)];if(_0x1ff2ca[_0x255582(0x133)](typeof _0xa6f40e,_0x1ff2ca[_0x255582(0x17e)]))return null;const _0x1ca4e1=_0xa6f40e['trim']()['replace'](/\s+/g,'\x20');return _0x1ff2ca['LhNlE'](_0x1ca4e1['length'],0x0)?_0x1ca4e1:null;}export function formatPlaywrightCliConsoleLogMessage(_0x541088,_0x36ade9,_0x49f973){const _0x34cf87=_0x4f73,_0x2209d4={'NawSy':function(_0x325769,_0x152c92,_0x1f8eaf){return _0x325769(_0x152c92,_0x1f8eaf);}},_0x15c3c3=_0x2209d4[_0x34cf87(0x160)](formatPlaywrightCliLog,_0x36ade9,_0x49f973),_0x31f5b8=extractPlaywrightCliToolDescription(_0x541088);if(!_0x31f5b8)return _0x34cf87(0x172)+_0x15c3c3;if(process['env'][_0x34cf87(0x123)])return _0x34cf87(0x144)+_0x31f5b8+'\x20('+_0x15c3c3+')';return'[ranger-verification-agent]\x20'+_0x31f5b8;}export function buildVerifyFeatureCliDebugPrompt(_0x463fdb,_0x369c80){const _0xb237ea=_0x4f73,_0xf93265={'EnQpW':_0xb237ea(0x18e),'whoXb':function(_0x1d5bcf,_0x473e81,_0x6067b7){return _0x1d5bcf(_0x473e81,_0x6067b7);},'hOnlF':_0xb237ea(0x143),'irOGF':function(_0x533949,_0x321525){return _0x533949(_0x321525);},'hnhdb':function(_0x56c533,_0x2d787a){return _0x56c533(_0x2d787a);}},_0x392b7e=buildCliArtifactPath(_0x369c80,_0xf93265[_0xb237ea(0x11f)]),_0x4fb9a6=_0xf93265['whoXb'](buildCliArtifactPath,_0x369c80,'01_mozilla-homepage.png'),_0x319723=buildCliArtifactPath(_0x369c80,'02_learn-more.yml'),_0x2ac0ba=buildCliArtifactPath(_0x369c80,_0xf93265['hOnlF']),_0x3bf1d6=_0xf93265[_0xb237ea(0x1a3)](quoteShellArg,_0x392b7e),_0x2b3ceb=_0xf93265['hnhdb'](quoteShellArg,_0x4fb9a6),_0x521425=_0xf93265[_0xb237ea(0x181)](quoteShellArg,_0x319723),_0x5f5b5a=_0xf93265[_0xb237ea(0x181)](quoteShellArg,_0x2ac0ba);return _0xb237ea(0x188)+_0x463fdb+'\x0a\x0a1.\x20Run\x20`'+_0x463fdb+_0xb237ea(0x114)+_0x463fdb+'\x20tracing-start`\x0a3.\x20Run\x20`'+_0x463fdb+'\x20video-start`\x0a4.\x20Save\x20every\x20snapshot\x20and\x20screenshot\x20under\x20`'+_0x369c80+'`\x20using\x20absolute\x20paths\x20only.\x20Do\x20not\x20use\x20relative\x20filenames.\x0a5.\x20Run\x20`'+_0x463fdb+_0xb237ea(0x1a7)+_0x3bf1d6+_0xb237ea(0x134)+_0x463fdb+'\x20screenshot\x20--filename\x20'+_0x2b3ceb+'`\x0a7.\x20Click\x20the\x20\x22Learn\x20More\x22\x20link\x20with\x20Playwright\x20CLI\x0a8.\x20Run\x20`'+_0x463fdb+_0xb237ea(0x1a7)+_0x521425+'`\x0a9.\x20Run\x20`'+_0x463fdb+_0xb237ea(0x129)+_0x5f5b5a+'`\x0a10.\x20Return\x20immediately\x20with\x20the\x20structured\x20output\x0a\x0aReturn\x20your\x20findings\x20in\x20the\x20structured\x20output\x20format.';}export function buildVerifyFeatureCliPrompt(_0x56e8b3){const _0x1d2705=_0x4f73,_0xe12318={'hQFlS':'short','tTyeU':'Reviewer','OyWNV':_0x1d2705(0x1a2),'bweiT':function(_0xab8723,_0x275b68,_0x346a69){return _0xab8723(_0x275b68,_0x346a69);},'hegxa':function(_0x406eb4,_0x32c14a,_0x4caca2){return _0x406eb4(_0x32c14a,_0x4caca2);},'XqBax':function(_0x1aa2f1,_0x4d2ac5,_0x3882f4){return _0x1aa2f1(_0x4d2ac5,_0x3882f4);},'OOvMK':'key_03_success-state.png','tjBCn':function(_0x1ee062,_0x12d3b6,_0x5f58ea){return _0x1ee062(_0x12d3b6,_0x5f58ea);},'SlGoY':function(_0x1fc9a0,_0x50feb2){return _0x1fc9a0(_0x50feb2);},'SMPDo':_0x1d2705(0x158),'ltJly':_0x1d2705(0x16e),'rbRHC':function(_0x268ad6,_0x5d051c,_0x265b78){return _0x268ad6(_0x5d051c,_0x265b78);}},{checklistItem:_0x4f8afe,itemFeedback:_0x367e7f,taskDescription:_0x4c0ed6,cliCommandPrefix:_0x36b93b,cliArtifactDir:_0x34753c,isCdpMode:_0x2cf6c0,url:_0x647634,cdpEndpoint:_0x5d398a,loginInstructions:_0x5ac4ab}=_0x56e8b3,_0x2838e8=_0xe12318[_0x1d2705(0x167)](buildCliArtifactPath,_0x34753c,'01_initial.yml'),_0x5d057a=_0xe12318['hegxa'](buildCliArtifactPath,_0x34753c,'02_state.yml'),_0x1d863f=_0xe12318['XqBax'](buildCliArtifactPath,_0x34753c,_0xe12318['OOvMK']),_0x28d5f9=_0xe12318['tjBCn'](buildCliArtifactPath,_0x34753c,'01_initial-state.png'),_0x1e5e88=quoteShellArg(_0x2838e8),_0x4932d1=quoteShellArg(_0x5d057a),_0x606ebf=quoteShellArg(_0x1d863f),_0x42c508=_0xe12318[_0x1d2705(0x1a6)](quoteShellArg,_0x28d5f9),_0x5625d7=_0x4f8afe['notes']?_0x1d2705(0x19f)+_0x4f8afe[_0x1d2705(0x126)]:'';let _0x333e1f='';if(_0x367e7f&&_0x367e7f[_0x1d2705(0x19c)][_0x1d2705(0x124)]>0x0){const _0x2d7371=_0x367e7f[_0x1d2705(0x19c)][_0x1d2705(0x137)](_0x21cdad=>{const _0x271a25=_0x1d2705,_0x36e3e6=new Date(_0x21cdad[_0x271a25(0x19e)])['toLocaleDateString']('en-US',{'month':_0xe12318[_0x271a25(0x183)],'day':'numeric'}),_0x3c015a=_0x21cdad['authorName']||_0x21cdad[_0x271a25(0x132)]||_0xe12318['tTyeU'],_0x3c49fd=_0x21cdad[_0x271a25(0x179)]?_0x271a25(0x186)+(_0x21cdad[_0x271a25(0x179)]['selector'][_0x271a25(0x17c)](_0xe12318[_0x271a25(0x194)])[_0x271a25(0x15d)]()?.['split'](':')[0x0]||_0x271a25(0x176))+_0x271a25(0x139)+(_0x21cdad[_0x271a25(0x179)]['textContent']||'')[_0x271a25(0x14f)](0x0,0x32)+'\x22)':'';return'-\x20['+_0x21cdad['id']+_0x271a25(0x15c)+_0x3c015a+'**\x20('+_0x36e3e6+_0x271a25(0x11a)+_0x21cdad[_0x271a25(0x11e)]+'\x22'+_0x3c49fd;})['join']('\x0a');_0x333e1f=_0x1d2705(0x166)+_0x2d7371;}const _0x5c05e2=_0x367e7f?.['canonicalFlow']?_0x1d2705(0x199)+_0x367e7f[_0x1d2705(0x157)]:'',_0x492db1=_0x2cf6c0?_0x1d2705(0x15e)+_0x5d398a+_0x1d2705(0x115):_0x1d2705(0x17a)+_0x647634+_0x1d2705(0x13e),_0x7cd7f=_0x647634?_0xe12318[_0x1d2705(0x1a6)](quoteShellArg,_0x647634):'',_0x3d8c04=_0x2cf6c0?_0x1d2705(0x130)+_0x36b93b+'\x20open`,\x20then\x20`'+_0x36b93b+_0x1d2705(0x14c)+_0x36b93b+'\x20video-start`.\x0a3.\x20Save\x20every\x20snapshot\x20and\x20screenshot\x20under\x20`'+_0x34753c+'`\x20using\x20absolute\x20paths\x20only.\x20Do\x20not\x20use\x20relative\x20filenames.\x0a4.\x20Take\x20a\x20snapshot\x20with\x20`'+_0x36b93b+'\x20snapshot\x20--filename\x20'+_0x1e5e88+'`\x20to\x20inspect\x20the\x20current\x20app\x20state.\x0a5.\x20Read\x20snapshot\x20YAML\x20files\x20to\x20find\x20element\x20references\x20like\x20`e12`,\x20then\x20use\x20them\x20with\x20`click`,\x20`fill`,\x20`check`,\x20or\x20`select`.\x0a6.\x20Use\x20`'+_0x36b93b+_0x1d2705(0x129)+_0x42c508+_0x1d2705(0x187)+_0x36b93b+'\x20run-code\x20\x22<playwright\x20code>\x22`.\x0a7.\x20Do\x20not\x20run\x20`close`,\x20`tracing-stop`,\x20or\x20`video-stop`;\x20the\x20host\x20finalizes\x20the\x20session\x20and\x20artifacts.\x0a8.\x20After\x20completing\x20the\x20verification,\x20evaluate\x20whether\x20the\x20result\x20adequately\x20verifies\x20the\x20scenario':_0x1d2705(0x130)+_0x36b93b+'\x20open\x20'+_0x7cd7f+'`,\x20then\x20`'+_0x36b93b+_0x1d2705(0x14c)+_0x36b93b+_0x1d2705(0x18c)+_0x34753c+_0x1d2705(0x19a)+_0x36b93b+'\x20snapshot\x20--filename\x20'+_0x1e5e88+_0x1d2705(0x174)+_0x36b93b+_0x1d2705(0x129)+_0x42c508+_0x1d2705(0x16a)+_0x36b93b+_0x1d2705(0x193),_0x5b0789=_0x2cf6c0?'\x0a\x0a##\x20Critical:\x20Early\x20Error\x20Detection\x0aAfter\x20taking\x20the\x20initial\x20snapshot,\x20IMMEDIATELY\x20check\x20for\x20blocking\x20errors:\x0a\x0a**Blocking\x20errors\x20to\x20detect:**\x0a-\x20Crash\x20or\x20error\x20dialogs\x20(\x22An\x20error\x20occurred\x22,\x20\x22Something\x20went\x20wrong\x22,\x20unhandled\x20exception\x20messages)\x0a-\x20Blank\x20or\x20empty\x20window\x20with\x20no\x20rendered\x20content\x0a-\x20Framework\x20error\x20boundaries\x20(React\x20error\x20page,\x20Electron\x20crash\x20reporter)\x0a-\x20Unresponsive\x20or\x20frozen\x20UI\x20(no\x20interactive\x20elements\x20in\x20snapshot)\x0a\x0a**If\x20ANY\x20blocking\x20error\x20is\x20detected:**\x0a1.\x20DO\x20NOT\x20continue\x20with\x20the\x20task\x0a2.\x20Return\x20IMMEDIATELY\x20with\x20evaluation:\x20\x22blocked\x22\x0a3.\x20Set\x20evaluationReason\x20to\x20describe\x20the\x20specific\x20error\x20(e.g.,\x20\x22App\x20crashed\x20—\x20error\x20dialog\x20visible\x20on\x20launch\x22)\x0a4.\x20Include\x20the\x20error\x20in\x20issues\x20array\x20with\x20severity:\x20\x22BLOCKER\x22\x20and\x20type:\x20\x22APP_ERROR\x22\x0a\x0aThis\x20early\x20exit\x20prevents\x20wasting\x20time\x20on\x20tasks\x20that\x20cannot\x20succeed\x20due\x20to\x20fundamental\x20errors.':'\x0a\x0a##\x20Critical:\x20Early\x20Error\x20Detection\x0aAfter\x20step\x202\x20(taking\x20initial\x20snapshot),\x20IMMEDIATELY\x20check\x20for\x20blocking\x20HTTP\x20errors:\x0a\x0a**Blocking\x20errors\x20to\x20detect:**\x0a-\x20HTTP\x20404:\x20\x22404\x22,\x20\x22Not\x20Found\x22,\x20\x22Page\x20not\x20found\x22,\x20\x22does\x20not\x20exist\x22\x0a-\x20HTTP\x20500:\x20\x22500\x22,\x20\x22Internal\x20Server\x20Error\x22,\x20\x22Server\x20Error\x22,\x20\x22Something\x20went\x20wrong\x22\x0a-\x20HTTP\x20400:\x20\x22400\x22,\x20\x22Bad\x20Request\x22,\x20\x22Invalid\x20request\x22\x0a\x0a**Also\x20check\x20for:**\x0a-\x20Framework\x20error\x20pages\x20(Next.js\x20error\x20boundary,\x20React\x20error\x20page,\x20\x22Application\x20error\x22)\x0a-\x20Completely\x20blank/empty\x20pages\x20with\x20no\x20content\x0a-\x20\x22Cannot\x20GET\x20/path\x22\x20messages\x0a\x0a**If\x20ANY\x20blocking\x20error\x20is\x20detected:**\x0a1.\x20DO\x20NOT\x20continue\x20with\x20the\x20task\x0a2.\x20Return\x20IMMEDIATELY\x20with\x20evaluation:\x20\x22blocked\x22\x0a3.\x20Set\x20evaluationReason\x20to\x20describe\x20the\x20specific\x20error\x20(e.g.,\x20\x22HTTP\x20404\x20-\x20Page\x20not\x20found\x20at\x20/dashboard\x22)\x0a4.\x20Include\x20the\x20error\x20in\x20issues\x20array\x20with\x20severity:\x20\x22BLOCKER\x22\x20and\x20appropriate\x20type\x20(HTTP_404,\x20HTTP_500,\x20HTTP_400,\x20or\x20NAVIGATION_ERROR)\x0a\x0aThis\x20early\x20exit\x20prevents\x20wasting\x20time\x20on\x20tasks\x20that\x20cannot\x20succeed\x20due\x20to\x20fundamental\x20errors.',_0x5bf723=_0x5ac4ab?'\x0a\x0a##\x20Authentication\x0aBEFORE\x20starting\x20the\x20verification\x20task,\x20you\x20MUST\x20authenticate\x20using\x20these\x20steps:\x0a'+_0x5ac4ab+'\x0a\x0aAfter\x20completing\x20authentication,\x20proceed\x20with\x20the\x20verification\x20task\x20below.\x0aIf\x20authentication\x20fails,\x20return\x20immediately\x20with\x20evaluation\x20\x22blocked\x22\x20and\x20describe\x20the\x20auth\x20failure.':'';return _0x1d2705(0x11c)+_0x4f8afe[_0x1d2705(0x11b)]+_0x5625d7+_0x333e1f+_0x5c05e2+'\x0a\x0a##\x20Task\x20to\x20Execute\x0a'+_0x4c0ed6+'\x0a\x0a'+_0x492db1+_0x5bf723+'\x0a\x0a'+_0x3d8c04+'\x0a\x0a##\x20Browser\x20Command\x20Reference\x0aUse\x20Bash\x20to\x20run\x20Playwright\x20CLI\x20commands\x20with\x20this\x20exact\x20prefix:\x0a`'+_0x36b93b+_0x1d2705(0x13c)+_0x34753c+_0x1d2705(0x18a)+_0x4932d1+'`\x20writes\x20a\x20YAML\x20snapshot\x20you\x20can\x20read\x20for\x20element\x20refs\x0a-\x20`click\x20<ref>`,\x20`fill\x20<ref>\x20\x22text\x22`,\x20`check\x20<ref>`,\x20`press\x20Enter`\x0a-\x20`tab-list`,\x20`tab-select\x20<index>`,\x20`tab-new\x20<url>`\x0a-\x20`screenshot\x20--filename\x20'+_0x606ebf+_0x1d2705(0x15b)+_0x34753c+_0x1d2705(0x147)+_0x28d5f9+'\x22,\x20\x22'+_0xe12318['XqBax'](buildCliArtifactPath,_0x34753c,_0xe12318[_0x1d2705(0x191)])+'\x22,\x20\x22'+buildCliArtifactPath(_0x34753c,_0xe12318['ltJly'])+_0x1d2705(0x116)+_0xe12318['rbRHC'](buildCliArtifactPath,_0x34753c,'key_04_success-state.png')+_0x1d2705(0x13d)+_0x5b0789+'\x0a##\x20Evaluation\x20Criteria\x0a-\x20VERIFIED:\x20The\x20task\x20completed\x20successfully\x20and\x20the\x20scenario\x20requirements\x20are\x20fully\x20met\x0a-\x20PARTIAL:\x20The\x20task\x20partially\x20completed\x20but\x20some\x20aspects\x20of\x20the\x20scenario\x20are\x20not\x20verified\x0a-\x20BLOCKED:\x20A\x20blocking\x20issue\x20(bug,\x20error,\x20missing\x20feature)\x20prevents\x20completion\x0a-\x20FAILED:\x20The\x20task\x20could\x20not\x20be\x20completed\x20due\x20to\x20errors\x0a\x0aReturn\x20your\x20findings\x20in\x20the\x20structured\x20output\x20format\x20with\x20your\x20evaluation.';}export function summarizeVerifyFeatureCliCommandAvailability(_0x102216){const _0x49b860=_0x4f73,_0x3a4756=[..._0x102216[_0x49b860(0x120)]()][_0x49b860(0x17d)]();let _0x3453da=0x0;for(const _0x4762a8 of _0x102216[_0x49b860(0x163)]()){_0x3453da+=_0x4762a8;}return{'cliCommandCount':_0x3453da,'cliCommandsSeen':_0x3a4756,'noCliCommandsCalled':_0x3453da===0x0};}export function createVerifyFeatureCliHooks(_0x7cbac2){const _0x35f64a=_0x4f73,_0xc8911={'Ehnsy':function(_0x3741de,_0x14e617){return _0x3741de!==_0x14e617;},'AIivy':_0x35f64a(0x18f),'oiZlO':function(_0x3d4f2b,_0x483726){return _0x3d4f2b(_0x483726);},'GvPVR':_0x35f64a(0x118),'CuGkG':function(_0x436e20,_0x205ae4){return _0x436e20!==_0x205ae4;},'RGrwQ':_0x35f64a(0x122)},_0x5d414c=new Map(),_0x2fdce8=async _0x743356=>{const _0x3516d3=_0x35f64a;if(_0xc8911['Ehnsy'](_0x743356[_0x3516d3(0x151)],_0xc8911['AIivy']))return{};const _0x2289b2=_0x743356;if(_0x2289b2['tool_name']!=='Bash')return{};const _0x1c7e8f=_0x2289b2['tool_input'],_0x54ab42=extractBashCommand(_0x1c7e8f);if(!_0x54ab42)return{};const _0x1ba632=parsePlaywrightCliCommand(_0x54ab42);if(!_0x1ba632)return{};return _0x5d414c[_0x3516d3(0x18d)](_0x1ba632,(_0x5d414c['get'](_0x1ba632)||0x0)+0x1),_0x7cbac2[_0x3516d3(0x195)]('tool_call',{'transport':_0x3516d3(0x197),'toolName':_0x1ba632}),_0x7cbac2[_0x3516d3(0x185)](_0x3516d3(0x178),{'transport':'playwright-cli','toolName':_0x1ba632,'bashCommandPreview':_0xc8911['oiZlO'](truncatePreview,_0x54ab42)}),_0x1ba632!==_0xc8911[_0x3516d3(0x121)]&&console['log'](formatPlaywrightCliConsoleLogMessage(_0x1c7e8f,_0x54ab42,_0x1ba632)),{};},_0x5e04d6=async _0xbc17f3=>{const _0x4a47c8=_0x35f64a;if(_0xbc17f3[_0x4a47c8(0x151)]!==_0x4a47c8(0x180))return{};const _0x52ea89=_0xbc17f3;if(_0xc8911[_0x4a47c8(0x165)](_0x52ea89['tool_name'],_0xc8911['RGrwQ']))return{};return await _0x7cbac2['trackPhaseError']('tool_failure',_0x52ea89[_0x4a47c8(0x12d)],{'transport':_0x4a47c8(0x197),'toolName':'Bash'}),{};};return{'postToolUseHook':_0x2fdce8,'postToolUseFailureHook':_0x5e04d6,'commandCounts':_0x5d414c};}async function runPlaywrightCliLifecycleCommand(_0x5c82b1){const _0x29a9df=_0x4f73,_0x28b012={'qNPzj':function(_0x172ef4,_0x51c816){return _0x172ef4(_0x51c816);},'BGRfG':function(_0x34bee7,_0x47439b){return _0x34bee7??_0x47439b;},'DoeuC':function(_0x3d4544,_0x2a23bc,_0x99578c){return _0x3d4544(_0x2a23bc,_0x99578c);}},{sessionId:_0x592307,configPath:_0x285699,commandArgs:_0x3f20f4,env:_0x2c3ebf,telemetry:_0x493491,phase:_0x5e8a2d,metadata:_0x6ef5af,timeoutMs:_0xcb9271}=_0x5c82b1;_0x493491['trackPhaseStart'](_0x5e8a2d,_0x6ef5af);try{const _0x44e4e3=await _0x28b012[_0x29a9df(0x19d)](runPlaywrightCliCommand,{'sessionId':_0x592307,'configPath':_0x285699,'commandArgs':_0x3f20f4,'cwd':process[_0x29a9df(0x154)](),'env':_0x2c3ebf,'timeoutMs':_0x28b012['BGRfG'](_0xcb9271,PLAYWRIGHT_CLI_COMMAND_TIMEOUT_MS)});_0x493491['trackPhaseEnd'](_0x5e8a2d,{..._0x6ef5af,'subcommand':_0x44e4e3[_0x29a9df(0x138)][_0x29a9df(0x19b)],'stdoutPreview':_0x28b012['DoeuC'](truncatePreview,_0x44e4e3['stdout'],0x7d0),'stderrPreview':truncatePreview(_0x44e4e3['stderr'],0x7d0)});}catch(_0xaf5e0f){await _0x493491[_0x29a9df(0x125)](_0x5e8a2d,_0xaf5e0f,_0x6ef5af);throw _0xaf5e0f;}}export async function finalizeVerifyFeatureCliSession(_0x2469b5){const _0x5e958b=_0x4f73,_0x1ae695={'nyAxT':_0x5e958b(0x131),'FUWyI':_0x5e958b(0x198),'xuufn':function(_0x1b9877,_0x7da359,_0x302b84){return _0x1b9877(_0x7da359,_0x302b84);},'pPTym':'close','ATlSc':function(_0x13d061,_0x9f5531){return _0x13d061(_0x9f5531);}},{telemetry:_0x10bcc6,sessionId:_0x1187af,configPath:_0x2e6d0f,cliArtifactDir:_0x2dfa05,env:_0x50fd78,transportMetadata:_0x501c71}=_0x2469b5,_0x3dedc8=[{'phase':_0x1ae695[_0x5e958b(0x11d)],'commandArgs':[_0x5e958b(0x16d)]},{'phase':_0x5e958b(0x12b),'commandArgs':[_0x1ae695[_0x5e958b(0x14b)],_0x5e958b(0x15a)+_0x1ae695[_0x5e958b(0x156)](buildCliArtifactPath,_0x2dfa05,'session-recording.webm')]},{'phase':_0x5e958b(0x113),'commandArgs':[_0x1ae695['pPTym']]}];for(const _0x4ecf49 of _0x3dedc8){try{await _0x1ae695[_0x5e958b(0x192)](runPlaywrightCliLifecycleCommand,{'sessionId':_0x1187af,'configPath':_0x2e6d0f,'commandArgs':[..._0x4ecf49[_0x5e958b(0x1a5)]],'env':_0x50fd78,'telemetry':_0x10bcc6,'phase':_0x4ecf49[_0x5e958b(0x173)],'metadata':_0x501c71});}catch{}}}export async function loadVerifyFeatureCliTraceUploadArtifact(_0x76336e){const _0x5c752f=_0x4f73,_0x289cd2={'GHZqC':function(_0x403a0,_0x2c0307,_0x4510b3){return _0x403a0(_0x2c0307,_0x4510b3);}},_0x58c0fb=[_0x5c752f(0x1a4),_0x5c752f(0x128)];for(const _0x39eaea of _0x58c0fb){const _0x496e54=_0x289cd2['GHZqC'](join,_0x76336e,_0x39eaea);try{return{'buffer':await readFile(_0x496e54),'source':_0x496e54};}catch{}}return null;}export async function rehomeVerifyFeatureCliArtifacts(_0x7d08bb){const _0x4b30db=_0x4f73,_0x18220c={'OSsEN':function(_0x505dfa,_0x1d13c2,_0x282358){return _0x505dfa(_0x1d13c2,_0x282358);},'XCiNS':function(_0x280391,_0xeadc6a){return _0x280391+_0xeadc6a;},'WYsPY':function(_0x3da236,_0x3478ff,_0x2232e8){return _0x3da236(_0x3478ff,_0x2232e8);}},{cwd:_0x35e190,cliArtifactDir:_0x3663e7,startTime:_0x5c32c8}=_0x7d08bb,_0x43e382=[];await _0x18220c[_0x4b30db(0x135)](mkdir,_0x3663e7,{'recursive':!![]});const _0xb1bda3=await readdir(_0x35e190,{'withFileTypes':!![]});for(const _0x343242 of _0xb1bda3){if(!_0x343242[_0x4b30db(0x162)]()||!VERIFY_FEATURE_CLI_ARTIFACT_FILE_PATTERN['test'](_0x343242[_0x4b30db(0x14a)]))continue;const _0x185523=join(_0x35e190,_0x343242[_0x4b30db(0x14a)]),_0x270c96=await stat(_0x185523);if(_0x18220c['XCiNS'](_0x270c96[_0x4b30db(0x169)],0x7d0)<_0x5c32c8)continue;const _0x1803ee=_0x18220c[_0x4b30db(0x1a1)](buildCliArtifactPath,_0x3663e7,_0x343242['name']);if(_0x185523===_0x1803ee)continue;await rename(_0x185523,_0x1803ee),_0x43e382[_0x4b30db(0x152)](_0x343242['name']);}return _0x43e382['sort']();}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function _0x4275(){const _0x109053=['sort','NPzhV','zvIqP','`.\x0a7.\x20Optimize\x20for\x20few\x20browser\x20round\x20trips.\x20Each\x20Nova\x20CLI\x20call\x20has\x20high\x20latency.\x0a8.\x20Use\x203-5\x20high-level\x20`execute`\x20commands\x20total.\x20Each\x20`execute`\x20should\x20contain\x202-5\x20concrete\x20browser\x20steps\x20and\x20should\x20drive\x20to\x20the\x20next\x20milestone\x20page.\x0a9.\x20Do\x20not\x20split\x20a\x20simple\x20navigation\x20into\x20separate\x20commands\x20like\x20\x22open\x20menu\x22,\x20then\x20\x22click\x20link\x22,\x20then\x20\x22screenshot\x22.\x20Batch\x20those\x20into\x20one\x20`execute`\x20when\x20the\x20target\x20is\x20clear.\x0a10.\x20Do\x20not\x20use\x20`ask`\x20unless\x20you\x20are\x20genuinely\x20stuck\x20or\x20need\x20to\x20disambiguate\x20visible\x20page\x20content.\x20Prefer\x20reading\x20the\x20output\x20from\x20`execute`,\x20`snapshot`,\x20and\x20`verify`.\x0a11.\x20Use\x20`verify`\x20only\x20at\x20milestone\x20pages\x20that\x20map\x20directly\x20to\x20scenario\x20requirements.\x20Do\x20not\x20verify\x20after\x20every\x20click.\x0a12.\x20Take\x20screenshots\x20for\x20each\x20scenario\x20milestone\x20so\x20every\x20verified\x20step\x20has\x20reviewable\x20image\x20evidence,\x20including\x20the\x20final\x20state.\x20Avoid\x20duplicate\x20screenshots\x20of\x20the\x20same\x20unchanged\x20page.\x0a13.\x20After\x20the\x20required\x20initial\x20snapshot,\x20do\x20not\x20take\x20separate\x20milestone\x20snapshots\x20unless\x20you\x20cannot\x20understand\x20the\x20page\x20from\x20the\x20`execute`,\x20`verify`,\x20and\x20screenshot\x20outputs.\x0a14.\x20Mark\x20the\x20most\x20important\x20proof\x20screenshot\x20with\x20`key_`,\x20for\x20example\x20`','base64','params','02_final-state.yml','get','hook_event_name','Page.screencastFrame','tracingStarted','stdout','traceSampleInFlight','frameSession','oMFAN','Do\x20not\x20run\x20Nova\x20help,\x20doctor,\x20script,\x20session\x20list,\x20session\x20export,\x20or\x20session\x20close\x20commands\x20during\x20verification.','00_initial-state.yml','fiunH','split','body','replace','PreToolUse','Unable\x20to\x20read\x20Nova\x20session\x20metadata\x20at\x20','Nova\x20command\x20`','map','Page.stopScreencast','queueTraceSample','1081071ZMWMme','parse','tool_input','`\x0a-\x20`','5753usrHpx','session','jhnvm','\x0a\x0a##\x20Additional\x20Notes\x0a','5511250PCfaxC','.cache','captureTraceSample','create\x20Nova\x20browser\x20session','01_initial-state.png','telemetry','frameCount','close','56SZrYDk','hVSBr','41316mAlPCM','frameWrites','data','BmTqZ','ffmpeg-','ccDQr','keys','content','stopScreencast','stopped','has','allSettled','log','screenshot','export','2148tHFiIF','mtimeMs','\x0a\x0a##\x20Task\x20to\x20Execute\x0a','\x20snapshot\x20--output\x20','--output','6256MGZaFR','commandArgs','`.\x0a6.\x20Take\x20an\x20initial\x20screenshot:\x20`','hUIQG','block','set','364238saDudA','ffmpeg-mac','nova_act_session_close','--output-dir','start','MTCgE','stop','getFrameDir','cwd','utf-8','tracing','fEiHW','--format','reverse','DNmyM','send','goto','NwHfx','libvpx-vp9','gvXHi','miInA','-pix_fmt','`\x20is\x20reserved\x20for\x20the\x20host.\x20Use\x20only\x20session\x20create,\x20execute,\x20verify,\x20ask,\x20goto,\x20wait-for,\x20snapshot,\x20and\x20screenshot.','BFBUv','export\x20Nova\x20session','`\x0a3.\x20Run\x20`','Evaluate\x20visited-page\x20aggregate\x20requirements\x20from\x20the\x20collected\x20URLs,\x20titles,\x20headings,\x20verify\x20results,\x20and\x20screenshots.\x20Do\x20not\x20run\x20another\x20browser\x20command\x20to\x20re-check\x20pages\x20already\x20visited.','nova_act_session_export','name','wteVV','`\x0a6.\x20Run\x20`','notes','nova_act_artifact_recording_stop','context','traceSampleCount','.jpg','mGaAl','PostToolUseFailure','xpIdg','from','CpnkA','`\x0a4.\x20Run\x20one\x20batched\x20`','wJjHZ','slSnZ','Ehdyc','nova_act_command_failure','`\x20using\x20absolute\x20paths\x20only.\x0a5.\x20Take\x20an\x20initial\x20snapshot:\x20`','wait-for','evaluate','SDyXc','.act_cli','now','trace.zip','`.\x0a4.\x20Save\x20every\x20snapshot\x20and\x20screenshot\x20under\x20`','snapshot','ffmpeg-linux','trackPhaseError','sessionId','gsuFk','NkDOn','zKhiz','traceSampleTimer','canonicalFlow','session\x20create','scale=trunc(iw/2)*2:trunc(ih/2)*2','`.\x0a15.\x20As\x20soon\x20as\x20all\x20scenario\x20requirements\x20are\x20satisfied,\x20return\x20structured\x20output\x20immediately.\x20Do\x20not\x20keep\x20exploring,\x20asking,\x20or\x20taking\x20extra\x20screenshots.\x0a16.\x20Treat\x20a\x20Nova\x20`verify`\x20result\x20with\x20`ASSERTION_FAILED`\x20as\x20useful\x20evidence,\x20not\x20as\x20a\x20tool\x20crash.\x20Do\x20not\x20retry\x20the\x20same\x20assertion\x20or\x20search\x20for\x20alternatives\x20unless\x20the\x20scenario\x20explicitly\x20asks\x20you\x20to\x20find\x20any\x20matching\x20page.\x0a17.\x20Stay\x20within\x20the\x20pages\x20and\x20flow\x20named\x20by\x20the\x20scenario.\x20If\x20a\x20required\x20condition\x20is\x20absent\x20after\x20checking\x20the\x20relevant\x20named\x20page\x20once,\x20stop\x20and\x20return\x20\x22partial\x22\x20or\x20\x22failed\x22\x20with\x20the\x20missing\x20requirement.\x20Do\x20not\x20expand\x20into\x20unrelated\x20pages\x20or\x20broad\x20site\x20searches.\x0a18.\x20After\x20you\x20reach\x20and\x20screenshot\x20the\x20final\x20named\x20scenario\x20page,\x20do\x20not\x20execute\x20more\x20browser\x20commands.\x20Evaluate\x20any\x20\x22at\x20least\x20one\x20visited\x20page\x22\x20requirement\x20from\x20the\x20pages\x20already\x20visited\x20and\x20the\x20evidence\x20already\x20collected.\x0a19.\x20Do\x20not\x20run\x20`session\x20close`,\x20`session\x20list`,\x20`session\x20export`,\x20`script`,\x20`doctor`,\x20`--help`,\x20`aws`,\x20`find`,\x20`grep`,\x20`env`,\x20`printenv`,\x20package\x20managers,\x20or\x20setup\x20commands.\x20The\x20host\x20owns\x20setup,\x20auth,\x20session\x20cleanup,\x20and\x20artifact\x20export.\x0a20.\x20The\x20host\x20also\x20captures\x20final\x20screenshots,\x20snapshots,\x20and\x20exports\x20after\x20you\x20finish,\x20but\x20every\x20scenario\x20milestone\x20still\x20needs\x20an\x20accessible\x20screenshot.\x20If\x20the\x20last\x20milestone\x20is\x20the\x20final\x20browser\x20state\x20and\x20you\x20have\x20already\x20captured\x20it,\x20you\x20do\x20not\x20need\x20a\x20duplicate\x20final\x20screenshot.\x0a21.\x20Do\x20not\x20close\x20the\x20Nova\x20session.\x20The\x20host\x20exports\x20artifacts\x20after\x20you\x20finish.\x0a22.\x20The\x20structured\x20output\x20is\x20your\x20final\x20response.\x20After\x20returning\x20it,\x20do\x20not\x20write\x20a\x20separate\x20markdown\x20summary\x20or\x20repeat\x20the\x20findings.\x0a\x0a##\x20Browser\x20Command\x20Reference\x0aUse\x20Bash\x20to\x20run\x20Nova\x20Act\x20CLI\x20commands\x20with\x20this\x20prefix:\x0a`','startAttempted','ask','kGhcX','-loglevel','yBvCl','ask\x20page\x20question','nova_act_command','nova_act_artifact_recording','browser','isFile','catch','JdkWr','\x20(on\x20element:\x20<','QNKhS','\x20execute\x20\x221.\x20Open\x20the\x20account\x20settings\x20menu.\x202.\x20Click\x20Billing.\x203.\x20Wait\x20for\x20the\x20Billing\x20page\x20to\x20load.\x22\x20','uFStc','readSessionMetadataWithRetry','ms-playwright','\x20screenshot\x20--output\x20','):\x20\x22','createdAt','key_final-state.png','screencastStarted','JxSKH','5ygIQbk','SoNzB','6726jhkani','browser_pid','ejOjP','qhqaT','tool_name','ffmpeg','zip','startTraceSampling','2513nWosfV','trackPhaseEnd','domRef','execute\x20Nova\x20browser\x20action','frame-%06d.jpg','WCbXf','Bash','state','2251905NYQtCV','flatMap','SUYgc','DxNvJ','trackPhaseStart','tagName','HPfCR','cliArtifactDir','novaOptions','nova-act-cli','UTVpb','\x0a\x0aThe\x20act\x20CLI\x20is\x20already\x20installed\x20and\x20available\x20on\x20PATH.\x20Do\x20not\x20search\x20the\x20filesystem\x20for\x20Nova,\x20install\x20packages,\x20inspect\x20docs,\x20or\x20run\x20setup.\x20Your\x20first\x20Bash\x20command\x20must\x20be\x20the\x20session\x20create\x20command\x20below.\x0a\x0a1.\x20Run\x20`','wbQQv','SzBET','03_final-state.png','\x0a\x0aIf\x20authentication\x20fails,\x20return\x20evaluation\x20\x22blocked\x22\x20and\x20describe\x20the\x20auth\x20failure.','test','subcommand','pages','numeric','authorEmail','jsvSF','startScreencast','contexts','HQZZN'];_0x4275=function(){return _0x109053;};return _0x4275();}const _0x1c39b1=_0x1ce6;(function(_0x5f0753,_0x187e4d){const _0x3b58f5=_0x1ce6,_0x49265a=_0x5f0753();while(!![]){try{const _0xf14ee4=-parseInt(_0x3b58f5(0x172))/0x1*(parseInt(_0x3b58f5(0x1e4))/0x2)+parseInt(_0x3b58f5(0x1d9))/0x3*(parseInt(_0x3b58f5(0x1de))/0x4)+-parseInt(_0x3b58f5(0x184))/0x5+parseInt(_0x3b58f5(0x174))/0x6*(parseInt(_0x3b58f5(0x17c))/0x7)+-parseInt(_0x3b58f5(0x1c8))/0x8*(parseInt(_0x3b58f5(0x1b8))/0x9)+-parseInt(_0x3b58f5(0x1c0))/0xa+-parseInt(_0x3b58f5(0x1bc))/0xb*(-parseInt(_0x3b58f5(0x1ca))/0xc);if(_0xf14ee4===_0x187e4d)break;else _0x49265a['push'](_0x49265a['shift']());}catch(_0x7435ec){_0x49265a['push'](_0x49265a['shift']());}}}(_0x4275,0x8b2a2));import{execFile}from'child_process';import{mkdir,readdir,readFile,rename,rm,stat,writeFile}from'fs/promises';import{homedir}from'os';import{basename,join}from'path';import{promisify}from'util';import{chromium}from'playwright';import{buildNovaActCliInvocation,buildNovaActCliSharedOptionsSuffix,extractNovaActLogDir,parseNovaActCliCommand,previewNovaActCliCommand,runNovaActCliCommand}from'./utils/novaActCli.js';import{extractBashCommand,quoteShellArg}from'./utils/playwrightCli.js';const NOVA_ACT_CLI_COMMAND_TIMEOUT_MS=0x1d4c0,NOVA_ARTIFACT_CDP_CONNECT_TIMEOUT_MS=0x3a98,NOVA_ARTIFACT_METADATA_WAIT_MS=0x1388,NOVA_ARTIFACT_TRACE_SAMPLE_INTERVAL_MS=0x1388,VERIFY_FEATURE_NOVA_ARTIFACT_FILE_PATTERN=/^(?:\d{2}_.+\.(?:png|ya?ml)|key_.+\.png|final-state\.ya?ml|nova-session-export\.json)$/i,NOVA_ACT_ALLOWED_AGENT_COMMANDS=new Set([_0x1c39b1(0x157),'execute','verify',_0x1c39b1(0x15b),_0x1c39b1(0x1f4),_0x1c39b1(0x213),'snapshot',_0x1c39b1(0x1d7)]),execFileAsync=promisify(execFile);function buildCliArtifactPath(_0x376afb,_0x42eb8e){const _0x21b03e={'fPXEW':function(_0x55a218,_0x82b345,_0x33969e){return _0x55a218(_0x82b345,_0x33969e);}};return _0x21b03e['fPXEW'](join,_0x376afb,_0x42eb8e);}export class NovaActArtifactRecorder{['params'];['browser']=null;[_0x1c39b1(0x205)]=null;['frameSession']=null;['frameWrites']=[];[_0x1c39b1(0x1c6)]=0x0;['traceSampleCount']=0x0;[_0x1c39b1(0x155)]=null;['traceSampleInFlight']=null;[_0x1c39b1(0x1a7)]=![];[_0x1c39b1(0x170)]=![];[_0x1c39b1(0x15a)]=![];[_0x1c39b1(0x1d3)]=![];constructor(_0x54987b){this['params']=_0x54987b;}async['start'](){const _0x4d56e0=_0x1c39b1,_0x37a8a9={'BmTqZ':'Nova\x20CDP\x20connection\x20did\x20not\x20expose\x20a\x20browser\x20context','Qiqjp':_0x4d56e0(0x161)};if(this[_0x4d56e0(0x15a)])return;this['startAttempted']=!![];const _0x74b940=await this['readSessionMetadataWithRetry'](),_0x4a4694=_0x74b940['cdp_endpoint'];if(!_0x4a4694)throw new Error('Nova\x20session\x20metadata\x20did\x20not\x20include\x20cdp_endpoint\x20for\x20'+this[_0x4d56e0(0x1a2)][_0x4d56e0(0x18c)]['sessionId']);await mkdir(this[_0x4d56e0(0x1a2)]['cliArtifactDir'],{'recursive':!![]}),this['browser']=await chromium['connectOverCDP'](_0x4a4694,{'timeout':NOVA_ARTIFACT_CDP_CONNECT_TIMEOUT_MS}),this['context']=this['browser'][_0x4d56e0(0x19b)]()[0x0]??null;if(!this[_0x4d56e0(0x205)])throw new Error(_0x37a8a9[_0x4d56e0(0x1cd)]);await this['context'][_0x4d56e0(0x1ee)][_0x4d56e0(0x1e8)]({'screenshots':!![],'snapshots':!![],'sources':!![]}),this[_0x4d56e0(0x1a7)]=!![],this[_0x4d56e0(0x17b)](),await this[_0x4d56e0(0x19a)](),this['params']['telemetry'][_0x4d56e0(0x188)](_0x37a8a9['Qiqjp'],{...this[_0x4d56e0(0x1a2)]['transportMetadata'],'cdpEndpoint':_0x4a4694,'browserPid':_0x74b940[_0x4d56e0(0x175)],'sessionState':_0x74b940[_0x4d56e0(0x183)]}),this[_0x4d56e0(0x1a2)]['telemetry'][_0x4d56e0(0x17d)](_0x37a8a9['Qiqjp'],{...this['params']['transportMetadata'],'tracingStarted':this['tracingStarted'],'screencastStarted':this['screencastStarted']});}async['stop'](){const _0x557de4=_0x1c39b1,_0x3c032b={'zKhiz':function(_0x4af2f2,_0x1a1571,_0x5923f7){return _0x4af2f2(_0x1a1571,_0x5923f7);},'SzBET':_0x557de4(0x204)};if(this[_0x557de4(0x1d3)])return;this['stopped']=!![];const _0x4cc638={...this['params']['transportMetadata'],'frameCount':this[_0x557de4(0x1c6)],'traceSampleCount':this[_0x557de4(0x206)],'tracingStarted':this['tracingStarted'],'screencastStarted':this[_0x557de4(0x170)]};this[_0x557de4(0x1a2)][_0x557de4(0x1c5)][_0x557de4(0x188)](_0x557de4(0x204),_0x4cc638);try{await this['stopTraceSampling'](),await this[_0x557de4(0x1c2)](),await this['stopScreencast'](),await Promise[_0x557de4(0x1d5)](this[_0x557de4(0x1cb)]);this[_0x557de4(0x205)]&&this['tracingStarted']&&await this['context']['tracing']['stop']({'path':_0x3c032b[_0x557de4(0x154)](buildCliArtifactPath,this[_0x557de4(0x1a2)]['cliArtifactDir'],_0x557de4(0x14c))});const _0x56d3c1=await this['encodeScreencastVideo']();this[_0x557de4(0x1a2)][_0x557de4(0x1c5)][_0x557de4(0x17d)](_0x3c032b[_0x557de4(0x191)],{..._0x4cc638,'videoPath':_0x56d3c1});}catch(_0x3ff2f5){await this['params'][_0x557de4(0x1c5)][_0x557de4(0x150)](_0x557de4(0x204),_0x3ff2f5,_0x4cc638);}finally{await this['browser']?.[_0x557de4(0x1c7)]()['catch'](()=>undefined),this[_0x557de4(0x162)]=null,this[_0x557de4(0x205)]=null,this['frameSession']=null;}}async[_0x1c39b1(0x16a)](){const _0x4b976d=_0x1c39b1,_0x1851a0={'QcvfX':_0x4b976d(0x216),'kGhcX':_0x4b976d(0x162),'UTVpb':function(_0x5c87ca,_0x102c96){return _0x5c87ca(_0x102c96);},'pdNGe':function(_0x580c98,_0x371eac){return _0x580c98<_0x371eac;}},_0x46a8f4=join(homedir(),_0x1851a0['QcvfX'],_0x1851a0[_0x4b976d(0x15c)],'sessions',this[_0x4b976d(0x1a2)][_0x4b976d(0x18c)]['sessionId']+'.json'),_0x453ae3=Date[_0x4b976d(0x14b)]();let _0x35396d;do{try{const _0x40a8a1=JSON[_0x4b976d(0x1b9)](await readFile(_0x46a8f4,_0x4b976d(0x1ed)));if(_0x40a8a1['cdp_endpoint'])return _0x40a8a1;_0x35396d=new Error('Nova\x20metadata\x20missing\x20cdp_endpoint\x20at\x20'+_0x46a8f4);}catch(_0x4006c1){_0x35396d=_0x4006c1;}await _0x1851a0[_0x4b976d(0x18e)](delay,0x64);}while(_0x1851a0['pdNGe'](Date[_0x4b976d(0x14b)]()-_0x453ae3,NOVA_ARTIFACT_METADATA_WAIT_MS));if(_0x35396d instanceof Error)throw _0x35396d;throw new Error(_0x4b976d(0x1b3)+_0x46a8f4);}async['startScreencast'](){const _0x23c382=_0x1c39b1,_0x20065a={'yBvCl':function(_0xa830d4,_0x1a0cbb,_0x1dc92e){return _0xa830d4(_0x1a0cbb,_0x1dc92e);},'jqaCL':_0x23c382(0x1a1),'hWexa':'jpeg'};if(!this['context'])return;const _0xf9ba18=this[_0x23c382(0x205)][_0x23c382(0x196)]()[0x0];if(!_0xf9ba18)return;const _0x49f875=this[_0x23c382(0x1eb)]();await _0x20065a['yBvCl'](mkdir,_0x49f875,{'recursive':!![]});const _0x21ed71=await this[_0x23c382(0x205)]['newCDPSession'](_0xf9ba18);this['frameSession']=_0x21ed71,_0x21ed71['on'](_0x23c382(0x1a6),_0x2da903=>{const _0x391c3d=_0x23c382,_0xbcc217=++this[_0x391c3d(0x1c6)],_0x3c8a4c=join(_0x49f875,'frame-'+String(_0xbcc217)['padStart'](0x6,'0')+_0x391c3d(0x207)),_0x1ee2ec=_0x20065a[_0x391c3d(0x15e)](writeFile,_0x3c8a4c,Buffer[_0x391c3d(0x20b)](_0x2da903[_0x391c3d(0x1cc)],_0x20065a['jqaCL']))[_0x391c3d(0x164)](()=>undefined)['finally'](()=>_0x21ed71[_0x391c3d(0x1f3)]('Page.screencastFrameAck',{'sessionId':_0x2da903[_0x391c3d(0x151)]}))['then'](()=>undefined)['catch'](()=>undefined);this[_0x391c3d(0x1cb)]['push'](_0x1ee2ec);}),await _0x21ed71[_0x23c382(0x1f3)]('Page.startScreencast',{'format':_0x20065a['hWexa'],'quality':0x4b,'everyNthFrame':0x6}),this['screencastStarted']=!![];}async[_0x1c39b1(0x1d2)](){const _0x5b248c=_0x1c39b1,_0x59f471={'OWyAJ':_0x5b248c(0x1b6)};if(!this[_0x5b248c(0x1aa)]||!this['screencastStarted'])return;await this[_0x5b248c(0x1aa)][_0x5b248c(0x1f3)](_0x59f471['OWyAJ'])['catch'](()=>undefined);}[_0x1c39b1(0x17b)](){const _0x5c7e51=_0x1c39b1;this['queueTraceSample'](),this[_0x5c7e51(0x155)]=setInterval(()=>this[_0x5c7e51(0x1b7)](),NOVA_ARTIFACT_TRACE_SAMPLE_INTERVAL_MS);}['queueTraceSample'](){if(this['traceSampleInFlight'])return;this['traceSampleInFlight']=this['captureTraceSample']()['finally'](()=>{this['traceSampleInFlight']=null;});}async['stopTraceSampling'](){const _0xee5d6=_0x1c39b1;this[_0xee5d6(0x155)]&&(clearInterval(this['traceSampleTimer']),this['traceSampleTimer']=null),await this[_0xee5d6(0x1a9)]?.[_0xee5d6(0x164)](()=>undefined);}async[_0x1c39b1(0x1c2)](){const _0x4d08eb=_0x1c39b1,_0x1e932d=this[_0x4d08eb(0x205)]?.[_0x4d08eb(0x196)]()[0x0];if(!_0x1e932d)return;try{await _0x1e932d['locator'](_0x4d08eb(0x1b0))[_0x4d08eb(0x214)](_0x236635=>_0x236635[_0x4d08eb(0x189)],undefined,{'timeout':0x3e8}),this[_0x4d08eb(0x206)]++;}catch{}}async['encodeScreencastVideo'](){const _0x3fdd45=_0x1c39b1,_0x52cf8f={'ejOjP':function(_0x587bda,_0x565c35){return _0x587bda<_0x565c35;},'HPfCR':function(_0x1de21c){return _0x1de21c();},'UzRzd':function(_0x44be03,_0x4ed2db,_0xa8e043){return _0x44be03(_0x4ed2db,_0xa8e043);},'WCbXf':'session-recording.webm','NPzhV':'-framerate','JHbKV':function(_0x52b239,_0x3bc173,_0x1dd68c){return _0x52b239(_0x3bc173,_0x1dd68c);},'wJjHZ':_0x3fdd45(0x180),'NjUKH':'-vf','JpnLY':_0x3fdd45(0x158),'uFStc':'-c:v','HxoBm':_0x3fdd45(0x1f6),'RAvUH':'yuv420p'};if(_0x52cf8f[_0x3fdd45(0x176)](this[_0x3fdd45(0x1c6)],0x2))return null;const _0x58a508=await _0x52cf8f[_0x3fdd45(0x18a)](resolveFfmpegPath);if(!_0x58a508)return null;const _0x3f40c8=_0x52cf8f['UzRzd'](join,this['params']['cliArtifactDir'],'videos');await mkdir(_0x3f40c8,{'recursive':!![]});const _0x14be80=join(_0x3f40c8,_0x52cf8f[_0x3fdd45(0x181)]);return await execFileAsync(_0x58a508,['-y','-hide_banner',_0x3fdd45(0x15d),'error',_0x52cf8f[_0x3fdd45(0x19e)],'10','-i',_0x52cf8f['JHbKV'](join,this[_0x3fdd45(0x1eb)](),_0x52cf8f[_0x3fdd45(0x20e)]),_0x52cf8f['NjUKH'],_0x52cf8f['JpnLY'],_0x52cf8f[_0x3fdd45(0x169)],_0x52cf8f['HxoBm'],_0x3fdd45(0x1f9),_0x52cf8f['RAvUH'],_0x14be80]),_0x14be80;}[_0x1c39b1(0x1eb)](){const _0x5a355d=_0x1c39b1,_0x407c3e={'JBUGu':function(_0x26e634,_0x18df43,_0x118bb8){return _0x26e634(_0x18df43,_0x118bb8);}};return _0x407c3e['JBUGu'](join,this[_0x5a355d(0x1a2)][_0x5a355d(0x18b)],'nova-video-frames');}}async function delay(_0x478491){await new Promise(_0x499c5e=>setTimeout(_0x499c5e,_0x478491));}async function resolveFfmpegPath(){const _0x3253a9=_0x1c39b1,_0x17dc20={'IVBXA':_0x3253a9(0x179),'oMFAN':'Library','CcDcR':_0x3253a9(0x16b),'crkrZ':_0x3253a9(0x1c1),'IsKjv':function(_0x408a7b,_0x1b4b9a){return _0x408a7b(_0x1b4b9a);}};if(await canRunFfmpeg('ffmpeg'))return _0x17dc20['IVBXA'];const _0x282811=[join(homedir(),_0x17dc20[_0x3253a9(0x1ab)],'Caches',_0x17dc20['CcDcR']),join(homedir(),_0x17dc20['crkrZ'],'ms-playwright')];for(const _0x5d34ed of _0x282811){try{const _0x2727d1=await readdir(_0x5d34ed),_0x29c2cf=_0x2727d1['filter'](_0x30ed1b=>_0x30ed1b['startsWith'](_0x3253a9(0x1ce)))[_0x3253a9(0x19d)]()[_0x3253a9(0x1f1)]()[_0x3253a9(0x185)](_0x959a83=>[join(_0x5d34ed,_0x959a83,_0x3253a9(0x1e5)),join(_0x5d34ed,_0x959a83,_0x3253a9(0x14f)),join(_0x5d34ed,_0x959a83,'ffmpeg.exe')]);for(const _0x42166f of _0x29c2cf){if(await _0x17dc20['IsKjv'](canRunFfmpeg,_0x42166f))return _0x42166f;}}catch{}}return null;}async function canRunFfmpeg(_0x3a1333){const _0x27ddef=_0x1c39b1,_0x35880f={'xZwMk':function(_0x21e67f,_0x22c013,_0xd65953){return _0x21e67f(_0x22c013,_0xd65953);},'NkDOn':'-version'};try{return await _0x35880f['xZwMk'](execFileAsync,_0x3a1333,[_0x35880f[_0x27ddef(0x153)]]),!![];}catch{return![];}}function toStepDisplayName(_0x1d6d38){const _0x478fb1=_0x1c39b1,_0x43faf5=basename(_0x1d6d38)['replace'](/\.(?:png|ya?ml)$/i,'')[_0x478fb1(0x1b1)](/^key_/i,'')['replace'](/^\d+_/,'')[_0x478fb1(0x1b1)](/-/g,'\x20');return{'name':_0x43faf5,'isKeyStep':/^key_/i['test'](basename(_0x1d6d38))};}function extractShellValue(_0x49e309){if(!_0x49e309)return null;return _0x49e309[0x1]??_0x49e309[0x2]??_0x49e309[0x3]??null;}function extractOutputOption(_0x3314db){return extractShellValue(_0x3314db['match'](/--output(?:=|\s+)(?:"([^"]+)"|'([^']+)'|(\S+))/));}function formatNovaActCliLog(_0x59845c,_0x1b2050){const _0x4456fa=_0x1c39b1,_0x381156={'fiunH':_0x4456fa(0x157),'tuTnf':_0x4456fa(0x1c3),'ccDQr':'ask','QMHnh':_0x4456fa(0x15f),'GazfY':'goto','hUIQG':_0x4456fa(0x213),'OGGvT':function(_0x380f91,_0x1bf3a3){return _0x380f91(_0x1bf3a3);},'jzLJG':function(_0x5a266b,_0x21367d){return _0x5a266b(_0x21367d);},'Wllxg':_0x4456fa(0x1d7),'vvMtZ':'capture\x20screenshot','fEiHW':_0x4456fa(0x1fc)};switch(_0x1b2050){case _0x381156[_0x4456fa(0x1ae)]:return _0x381156['tuTnf'];case'execute':return _0x4456fa(0x17f);case'verify':return'verify\x20page\x20condition';case _0x381156[_0x4456fa(0x1cf)]:return _0x381156['QMHnh'];case _0x381156['GazfY']:return'navigate\x20browser';case _0x381156[_0x4456fa(0x1e1)]:return'wait\x20for\x20page\x20condition';case _0x4456fa(0x14e):{const _0xde6c6b=_0x381156['OGGvT'](extractOutputOption,_0x59845c);if(!_0xde6c6b)return'capture\x20snapshot';const {name:_0x23322a}=_0x381156['jzLJG'](toStepDisplayName,_0xde6c6b);return'capture\x20snapshot\x20`'+_0x23322a+'`';}case _0x381156['Wllxg']:{const _0x18cbe9=extractOutputOption(_0x59845c);if(!_0x18cbe9)return _0x381156['vvMtZ'];const {name:_0x78452b,isKeyStep:_0x3aabfe}=toStepDisplayName(_0x18cbe9);return _0x3aabfe?'capture\x20key\x20step\x20`'+_0x78452b+'`':'capture\x20step\x20`'+_0x78452b+'`';}case'session\x20export':return _0x381156[_0x4456fa(0x1ef)];default:return _0x1b2050;}}function _0x1ce6(_0x5c05ec,_0x57cf82){_0x5c05ec=_0x5c05ec-0x14b;const _0x4275d2=_0x4275();let _0x1ce664=_0x4275d2[_0x5c05ec];return _0x1ce664;}function getNovaActCliCommandBlockReason(_0xe67be4){const _0x16b223=_0x1c39b1,_0x3e291d={'ULMEx':'Use\x20only\x20the\x20provided\x20Nova\x20browser\x20command\x20prefix\x20for\x20browser\x20verification.\x20Do\x20not\x20inspect\x20setup,\x20credentials,\x20files,\x20or\x20the\x20local\x20environment.','tnSRg':function(_0x436dbf,_0x4c8e8f){return _0x436dbf===_0x4c8e8f;}},_0x3a48cf=parseNovaActCliCommand(_0xe67be4);if(!_0x3a48cf)return _0x3e291d['ULMEx'];if(!NOVA_ACT_ALLOWED_AGENT_COMMANDS[_0x16b223(0x1d4)](_0x3a48cf))return _0x16b223(0x1b4)+_0x3a48cf+_0x16b223(0x1fa);if(_0x3e291d['tnSRg'](_0x3a48cf,'verify')&&/\b(?:previously visited|visited pages|pages visited|at least one of the pages visited)\b/i['test'](_0xe67be4))return _0x16b223(0x1fe);if(/\s--help\b|\bdoctor\b|\bscript\b|\bsession\s+(?:close|list|export)\b/[_0x16b223(0x194)](_0xe67be4))return _0x16b223(0x1ac);return null;}function buildFeedbackSection(_0xd06b57){const _0x5b30e4=_0x1c39b1,_0x1e4b08={'WrZot':'element'};if(!_0xd06b57||_0xd06b57['unaddressedComments']['length']===0x0)return'';const _0x4926cc=_0xd06b57['unaddressedComments'][_0x5b30e4(0x1b5)](_0x142f5e=>{const _0x1d333f=_0x5b30e4,_0x41f305=new Date(_0x142f5e[_0x1d333f(0x16e)])['toLocaleDateString']('en-US',{'month':'short','day':_0x1d333f(0x197)}),_0x2f0600=_0x142f5e['authorName']||_0x142f5e[_0x1d333f(0x198)]||'Reviewer',_0x10c486=_0x142f5e[_0x1d333f(0x17e)]?_0x1d333f(0x166)+(_0x142f5e[_0x1d333f(0x17e)]['selector']['split']('\x20>\x20')['pop']()?.[_0x1d333f(0x1af)](':')[0x0]||_0x1e4b08['WrZot'])+'>\x20\x22'+(_0x142f5e[_0x1d333f(0x17e)]['textContent']||'')['slice'](0x0,0x32)+'\x22)':'';return'-\x20['+_0x142f5e['id']+']\x20**'+_0x2f0600+'**\x20('+_0x41f305+_0x1d333f(0x16d)+_0x142f5e[_0x1d333f(0x1d1)]+'\x22'+_0x10c486;})['join']('\x0a');return'\x0a\x0a##\x20Reviewer\x20Feedback\x20to\x20Address\x0aThe\x20following\x20reviewer\x20comments\x20were\x20left\x20on\x20the\x20previous\x20version\x20of\x20this\x20item.\x0aVerify\x20that\x20each\x20concern\x20has\x20been\x20addressed\x20in\x20the\x20current\x20implementation.\x0aFor\x20each\x20comment\x20you\x20believe\x20has\x20been\x20addressed,\x20include\x20its\x20ID\x20in\x20addressedCommentIds.\x0a\x0a'+_0x4926cc;}function buildNovaSharedOptionsInstruction(_0x3d6835){if(!_0x3d6835['trim']())return'The\x20command\x20prefix\x20already\x20injects\x20session,\x20auth,\x20region,\x20workflow,\x20user-data,\x20headless,\x20and\x20JSON\x20options.\x0aDo\x20not\x20run\x20raw\x20`act\x20browser`.\x20Do\x20not\x20add\x20`--auth-mode`,\x20`--aws-profile`,\x20`--region`,\x20`--workflow-name`,\x20`--session-id`,\x20`--user-data-dir`,\x20`--headless`,\x20or\x20`--headed`\x20yourself.';return'Append\x20this\x20option\x20suffix\x20to\x20every\x20browser\x20command\x20unless\x20the\x20host\x20gives\x20a\x20more\x20specific\x20example:\x0a'+_0x3d6835;}export function buildVerifyFeatureNovaCliDebugPrompt(_0x1e838f){const _0x562af9=_0x1c39b1,_0x41912c={'hVSBr':function(_0x260e1e,_0x1131f0,_0x5ee1f7){return _0x260e1e(_0x1131f0,_0x5ee1f7);},'YuiMV':_0x562af9(0x1ad),'niLFp':_0x562af9(0x1c4),'zvIqP':_0x562af9(0x1a3),'DxNvJ':function(_0x536bca,_0x360844){return _0x536bca(_0x360844);},'jsvSF':function(_0x323515,_0x8d7baf){return _0x323515(_0x8d7baf);},'NwHfx':function(_0x2ec92b,_0x134f37){return _0x2ec92b(_0x134f37);},'iCPoI':function(_0x587770,_0x190982){return _0x587770(_0x190982);}},{novaCommandPrefix:_0x16075b,novaSharedOptionsSuffix:_0x257834,cliArtifactDir:_0x38b8c4,url:_0x24597b}=_0x1e838f,_0x5c55f0=_0x41912c[_0x562af9(0x1c9)](buildCliArtifactPath,_0x38b8c4,_0x41912c['YuiMV']),_0x4d9c8b=buildCliArtifactPath(_0x38b8c4,_0x41912c['niLFp']),_0xb116b6=buildCliArtifactPath(_0x38b8c4,_0x41912c[_0x562af9(0x19f)]),_0x2d41a3=buildCliArtifactPath(_0x38b8c4,_0x562af9(0x192));return'You\x20are\x20testing\x20Nova\x20Act\x20browser\x20automation.\x20Your\x20task\x20is\x20simple.\x0a\x0aUse\x20Bash\x20and\x20Nova\x20Act\x20CLI\x20only.\x20The\x20browser\x20command\x20prefix\x20is:\x0a'+_0x16075b+'\x0a\x0a'+_0x41912c['DxNvJ'](buildNovaSharedOptionsInstruction,_0x257834)+_0x562af9(0x18f)+_0x16075b+'\x20session\x20create\x20'+_0x41912c[_0x562af9(0x199)](quoteShellArg,_0x24597b)+'\x20'+_0x257834+'`\x0a2.\x20Run\x20`'+_0x16075b+_0x562af9(0x1dc)+_0x41912c[_0x562af9(0x1f5)](quoteShellArg,_0x5c55f0)+'\x20'+_0x257834+_0x562af9(0x1fd)+_0x16075b+_0x562af9(0x16c)+quoteShellArg(_0x4d9c8b)+'\x20'+_0x257834+_0x562af9(0x20d)+_0x16075b+'\x20execute\x20\x22...\x22`\x20command\x20to\x20exercise\x20the\x20current\x20page.\x0a5.\x20Run\x20`'+_0x16075b+'\x20snapshot\x20--output\x20'+_0x41912c['iCPoI'](quoteShellArg,_0xb116b6)+'\x20'+_0x257834+_0x562af9(0x202)+_0x16075b+'\x20screenshot\x20--output\x20'+_0x41912c[_0x562af9(0x187)](quoteShellArg,_0x2d41a3)+'\x20'+_0x257834+'`\x0a7.\x20Return\x20immediately\x20with\x20the\x20structured\x20output.\x0a\x0aSave\x20every\x20artifact\x20under\x20`'+_0x38b8c4+'`\x20using\x20absolute\x20paths\x20only.\x0aReturn\x20your\x20findings\x20in\x20the\x20structured\x20output\x20format.';}export function buildVerifyFeatureNovaCliPrompt(_0x33bcb3){const _0x360ab5=_0x1c39b1,_0x5a24f1={'HQZZN':function(_0x45c402,_0xf55201){return _0x45c402(_0xf55201);},'gsuFk':function(_0x3804d7,_0x511f5a,_0x328080){return _0x3804d7(_0x511f5a,_0x328080);},'IaNOC':'01_initial.yml','mUUTx':function(_0x5db2f1,_0x5f41b8,_0x59f406){return _0x5db2f1(_0x5f41b8,_0x59f406);},'JdkWr':_0x360ab5(0x1c4),'MTCgE':'key_03_success-state.png','CDKql':function(_0x164c0c,_0x4dbc89){return _0x164c0c(_0x4dbc89);}},{checklistItem:_0x25453c,itemFeedback:_0x1844c3,taskDescription:_0x7d5df6,novaCommandPrefix:_0x3c133c,novaSharedOptionsSuffix:_0x30ddfa,cliArtifactDir:_0x29a407,url:_0x5ede61,loginInstructions:_0x5ca635}=_0x33bcb3,_0x404bb0=_0x25453c['notes']?_0x360ab5(0x1bf)+_0x25453c[_0x360ab5(0x203)]:'',_0x484596=_0x5a24f1[_0x360ab5(0x19c)](buildFeedbackSection,_0x1844c3),_0x33d872=_0x1844c3?.[_0x360ab5(0x156)]?'\x0a\x0a##\x20Expected\x20Flow\x20(from\x20previous\x20verification)\x0a'+_0x1844c3[_0x360ab5(0x156)]:'',_0xbfcaba=_0x5ca635?'\x0a\x0a##\x20Authentication\x0aBEFORE\x20starting\x20the\x20verification\x20task,\x20authenticate\x20using\x20these\x20steps:\x0a'+_0x5ca635+_0x360ab5(0x193):'',_0x1d6d10=_0x5a24f1[_0x360ab5(0x152)](buildCliArtifactPath,_0x29a407,_0x5a24f1['IaNOC']),_0x10354e=_0x5a24f1['mUUTx'](buildCliArtifactPath,_0x29a407,_0x5a24f1[_0x360ab5(0x165)]),_0x31fb12=_0x5a24f1['mUUTx'](buildCliArtifactPath,_0x29a407,_0x5a24f1[_0x360ab5(0x1e9)]);return'You\x20are\x20a\x20Feature\x20Review\x20Verifier.\x20Your\x20job\x20is\x20to\x20verify\x20a\x20scenario\x20by\x20executing\x20a\x20UI\x20flow\x20and\x20evaluating\x20whether\x20it\x20adequately\x20completes\x20the\x20scenario.\x0a\x0a##\x20Scenario\x20to\x20Verify\x0a'+_0x25453c['description']+_0x404bb0+_0x484596+_0x33d872+_0x360ab5(0x1db)+_0x7d5df6+'\x0a\x0a##\x20App\x20Context\x0aYour\x20base\x20URL\x20is:\x20'+_0x5ede61+'\x0a-\x20You\x20may\x20ONLY\x20navigate\x20to\x20paths\x20under\x20this\x20base\x20URL\x27s\x20origin.\x0a-\x20Do\x20not\x20navigate\x20to\x20any\x20different\x20protocol,\x20host,\x20or\x20port.\x0a-\x20If\x20the\x20browser\x20leaves\x20this\x20origin,\x20navigate\x20back\x20once.\x20If\x20you\x20cannot\x20recover,\x20return\x20evaluation\x20\x22blocked\x22.\x0a'+_0xbfcaba+'\x0a\x0a##\x20Instructions\x0a1.\x20Use\x20Bash\x20plus\x20Nova\x20Act\x20CLI\x20only.\x20Do\x20not\x20call\x20MCP\x20browser\x20tools.\x0a2.\x20The\x20act\x20CLI\x20is\x20already\x20installed\x20and\x20available\x20through\x20the\x20browser\x20command\x20prefix\x20below.\x20Do\x20not\x20search\x20the\x20filesystem\x20for\x20Nova,\x20install\x20packages,\x20inspect\x20docs,\x20check\x20AWS/auth\x20status,\x20read\x20env\x20files,\x20run\x20setup,\x20or\x20call\x20raw\x20`act\x20browser`.\x0a3.\x20Your\x20first\x20Bash\x20command\x20must\x20be\x20`'+_0x3c133c+'\x20session\x20create\x20'+_0x5a24f1['CDKql'](quoteShellArg,_0x5ede61)+'\x20'+_0x30ddfa+_0x360ab5(0x14d)+_0x29a407+_0x360ab5(0x212)+_0x3c133c+'\x20snapshot\x20--output\x20'+quoteShellArg(_0x1d6d10)+'\x20'+_0x30ddfa+_0x360ab5(0x1e0)+_0x3c133c+'\x20screenshot\x20--output\x20'+_0x5a24f1['CDKql'](quoteShellArg,_0x10354e)+'\x20'+_0x30ddfa+_0x360ab5(0x1a0)+_0x31fb12+_0x360ab5(0x159)+_0x3c133c+'`\x0a\x0aAppend\x20this\x20option\x20suffix\x20to\x20browser\x20commands:\x0a'+(_0x30ddfa['trim']()?'`'+_0x30ddfa+'`':'`<none;\x20the\x20command\x20prefix\x20injects\x20shared\x20options>`')+'\x0a\x0a'+buildNovaSharedOptionsInstruction(_0x30ddfa)+'\x0a\x0aExamples:\x0a-\x20`'+_0x3c133c+_0x360ab5(0x168)+_0x30ddfa+_0x360ab5(0x1bb)+_0x3c133c+'\x20verify\x20\x22The\x20Billing\x20page\x20is\x20visible\x20and\x20shows\x20the\x20current\x20plan.\x22\x20'+_0x30ddfa+'`\x0a-\x20`'+_0x3c133c+_0x360ab5(0x1dc)+quoteShellArg(_0x1d6d10)+'\x20'+_0x30ddfa+_0x360ab5(0x1bb)+_0x3c133c+'\x20screenshot\x20--output\x20'+quoteShellArg(_0x31fb12)+'\x20'+_0x30ddfa+'`\x0a\x0a##\x20Screenshot\x20Guidelines\x0aTake\x20screenshots\x20at\x20scenario\x20milestones\x20so\x20a\x20human\x20can\x20review\x20each\x20completed\x20step\x20and\x20the\x20final\x20state.\x20Use\x20numbered\x20filenames\x20and\x20prefix\x201-2\x20key\x20proof\x20screenshots\x20with\x20`key_`.\x20Avoid\x20duplicate\x20screenshots\x20of\x20the\x20same\x20unchanged\x20page\x20when\x20an\x20existing\x20verifier\x20screenshot\x20or\x20host\x20final\x20screenshot\x20is\x20accessible.\x0a\x0a##\x20Snapshot\x20Guidelines\x0aYou\x20must\x20take\x20the\x20initial\x20snapshot\x20listed\x20above.\x20After\x20that,\x20prefer\x20screenshots\x20plus\x20the\x20page\x20summaries\x20returned\x20by\x20`execute`\x20and\x20`verify`.\x20Only\x20call\x20`snapshot`\x20again\x20if\x20you\x20cannot\x20determine\x20the\x20next\x20action\x20or\x20evaluation\x20from\x20those\x20outputs.\x0a\x0a##\x20Early\x20Error\x20Detection\x0aAfter\x20the\x20initial\x20snapshot\x20and\x20screenshot,\x20check\x20for\x20blocking\x20HTTP\x20errors,\x20framework\x20error\x20pages,\x20blank\x20pages,\x20and\x20authentication\x20failures.\x20If\x20any\x20blocking\x20issue\x20is\x20present,\x20stop\x20and\x20return\x20evaluation\x20\x22blocked\x22\x20with\x20a\x20specific\x20reason.\x0a\x0a##\x20Failed\x20Assertions\x0aIf\x20`verify`\x20returns\x20`ASSERTION_FAILED`,\x20use\x20its\x20`actual`\x20and\x20`evidence`\x20fields\x20as\x20proof\x20for\x20the\x20final\x20evaluation.\x20Continue\x20only\x20to\x20finish\x20other\x20already-named\x20scenario\x20milestones.\x20Do\x20not\x20retry,\x20ask\x20about,\x20or\x20search\x20around\x20the\x20failed\x20condition.\x0a\x0a##\x20Final\x20Page\x20Stop\x0aWhen\x20the\x20scenario\x20names\x20a\x20final\x20page\x20or\x20final\x20navigation\x20target,\x20that\x20page\x20is\x20the\x20last\x20browser\x20milestone.\x20Once\x20it\x20is\x20loaded\x20and\x20screenshotted,\x20make\x20the\x20final\x20evaluation\x20from\x20the\x20collected\x20evidence.\x20Do\x20not\x20navigate,\x20search,\x20ask,\x20or\x20verify\x20beyond\x20that\x20final\x20page\x20unless\x20the\x20scenario\x20explicitly\x20names\x20another\x20page.\x0a\x0a##\x20Evaluation\x20Criteria\x0a-\x20VERIFIED:\x20The\x20task\x20completed\x20successfully\x20and\x20the\x20scenario\x20requirements\x20are\x20fully\x20met\x0a-\x20PARTIAL:\x20The\x20task\x20partially\x20completed\x20but\x20some\x20aspects\x20of\x20the\x20scenario\x20are\x20not\x20verified\x0a-\x20BLOCKED:\x20A\x20blocking\x20issue\x20prevents\x20completion\x0a-\x20FAILED:\x20The\x20task\x20could\x20not\x20be\x20completed\x20due\x20to\x20errors\x0a\x0aReturn\x20your\x20findings\x20in\x20the\x20structured\x20output\x20format\x20with\x20your\x20evaluation.';}export function summarizeVerifyFeatureNovaCliCommandAvailability(_0x3796ee){const _0x8144d=_0x1c39b1,_0x54fa6b={'Ehdyc':function(_0x1b45c0,_0x1cd216){return _0x1b45c0===_0x1cd216;}},_0x2f0d96=[..._0x3796ee[_0x8144d(0x1d0)]()]['sort']();let _0x15a779=0x0;for(const _0x6d60d0 of _0x3796ee['values']()){_0x15a779+=_0x6d60d0;}return{'cliCommandCount':_0x15a779,'cliCommandsSeen':_0x2f0d96,'noCliCommandsCalled':_0x54fa6b[_0x8144d(0x210)](_0x15a779,0x0)};}export function createVerifyFeatureNovaCliHooks(_0x5f17a0,_0xaf48cd){const _0x554abe=_0x1c39b1,_0x175057={'uNdda':_0x554abe(0x1b2),'jgEAP':function(_0x53ba3f,_0xc00143){return _0x53ba3f!==_0xc00143;},'DNmyM':function(_0x5f2fe3,_0x3cb019){return _0x5f2fe3(_0x3cb019);},'SsrAp':_0x554abe(0x1e2),'VQUOm':'PostToolUse','pwmBG':function(_0x5b9a91,_0x1d4553){return _0x5b9a91!==_0x1d4553;},'mxADD':_0x554abe(0x182),'wbQQv':function(_0x507aad,_0x57f880){return _0x507aad+_0x57f880;},'miInA':'nova_act_command','gvXHi':function(_0x5bc214,_0x5cf916){return _0x5bc214===_0x5cf916;},'rHQJl':_0x554abe(0x157),'ARXxg':'nova_act_artifact_recording','xpIdg':_0x554abe(0x18d),'bXTfM':_0x554abe(0x211)},_0x2b95a4=new Map(),_0xcfe569=async _0x4ecf17=>{const _0x1af2b4=_0x554abe;if(_0x4ecf17[_0x1af2b4(0x1a5)]!==_0x175057['uNdda'])return{};const _0x3ad227=_0x4ecf17;if(_0x175057['jgEAP'](_0x3ad227[_0x1af2b4(0x178)],_0x1af2b4(0x182)))return{};const _0x56664=_0x3ad227[_0x1af2b4(0x1ba)],_0x117fa8=extractBashCommand(_0x56664);if(!_0x117fa8)return{};const _0x10dae6=_0x175057[_0x1af2b4(0x1f2)](getNovaActCliCommandBlockReason,_0x117fa8);if(!_0x10dae6)return{};return{'decision':_0x175057['SsrAp'],'reason':_0x10dae6};},_0x3815f4=async _0x430048=>{const _0xbd7162=_0x554abe;if(_0x430048['hook_event_name']!==_0x175057['VQUOm'])return{};const _0x3b8a81=_0x430048;if(_0x175057['pwmBG'](_0x3b8a81[_0xbd7162(0x178)],_0x175057['mxADD']))return{};const _0x2148a6=_0x3b8a81['tool_input'],_0x339647=extractBashCommand(_0x2148a6);if(!_0x339647)return{};const _0x5e758e=parseNovaActCliCommand(_0x339647);if(!_0x5e758e)return{};_0x2b95a4[_0xbd7162(0x1e3)](_0x5e758e,_0x175057[_0xbd7162(0x190)](_0x2b95a4[_0xbd7162(0x1a4)](_0x5e758e)||0x0,0x1)),_0x5f17a0['trackPhaseStart'](_0xbd7162(0x160),{'subcommand':_0x5e758e}),_0x5f17a0['trackPhaseEnd'](_0x175057[_0xbd7162(0x1f8)],{'subcommand':_0x5e758e,'commandPreview':previewNovaActCliCommand(_0x339647)}),console[_0xbd7162(0x1d6)]('[nova-act-cli]\x20'+formatNovaActCliLog(_0x339647,_0x5e758e));if(_0x175057[_0xbd7162(0x1f7)](_0x5e758e,_0x175057['rHQJl'])&&_0xaf48cd)try{await _0xaf48cd['start']();}catch(_0x2a96fc){await _0x5f17a0[_0xbd7162(0x150)](_0x175057['ARXxg'],_0x2a96fc,{'transport':_0x175057['xpIdg']});}return{};},_0x53c59c=async _0x5cb52f=>{const _0x6cc090=_0x554abe;if(_0x5cb52f[_0x6cc090(0x1a5)]!==_0x6cc090(0x209))return{};const _0x2f5df7=_0x5cb52f;if(_0x2f5df7[_0x6cc090(0x178)]!=='Bash')return{};return await _0x5f17a0[_0x6cc090(0x150)](_0x175057['bXTfM'],_0x2f5df7['error'],{'transport':_0x175057[_0x6cc090(0x20a)],'toolName':_0x175057['mxADD']}),{};};return{'preToolUseHook':_0xcfe569,'postToolUseHook':_0x3815f4,'postToolUseFailureHook':_0x53c59c,'commandCounts':_0x2b95a4};}async function runNovaLifecycleCommand(_0x2a1a08){const _0x2b381f=_0x1c39b1,_0x563ebc={'qhqaT':function(_0x164a54,_0x302ba8){return _0x164a54(_0x302ba8);},'sYwiS':function(_0x445012,_0x542fc4){return _0x445012(_0x542fc4);}},{novaOptions:_0x5a9fca,commandArgs:_0x1176ab,telemetry:_0xd834fb,phase:_0x4e11f1,metadata:_0x48d384,timeoutMs:_0x342a3d}=_0x2a1a08;_0xd834fb[_0x2b381f(0x188)](_0x4e11f1,_0x48d384);try{const _0x5cfdaf=await _0x563ebc['qhqaT'](runNovaActCliCommand,{..._0x5a9fca,'commandArgs':_0x1176ab,'cwd':process[_0x2b381f(0x1ec)](),'env':process['env'],'timeoutMs':_0x342a3d??NOVA_ACT_CLI_COMMAND_TIMEOUT_MS});_0xd834fb['trackPhaseEnd'](_0x4e11f1,{..._0x48d384,'subcommand':_0x5cfdaf['invocation'][_0x2b381f(0x195)],'commandPreview':previewNovaActCliCommand(_0x5cfdaf['invocation']['shellCommand']),'stdoutPreview':previewNovaActCliCommand(_0x5cfdaf[_0x2b381f(0x1a8)]),'stderrPreview':_0x563ebc[_0x2b381f(0x177)](previewNovaActCliCommand,_0x5cfdaf['stderr']),'logDir':_0x563ebc['sYwiS'](extractNovaActLogDir,_0x5cfdaf['stdout'])});}catch(_0x454d5b){await _0xd834fb[_0x2b381f(0x150)](_0x4e11f1,_0x454d5b,_0x48d384);throw _0x454d5b;}}export async function finalizeVerifyFeatureNovaCliSession(_0x218141){const _0x4a2567=_0x1c39b1,_0x3c2052={'slSnZ':_0x4a2567(0x16f),'BFBUv':_0x4a2567(0x1dd),'JxSKH':'final-state.yaml','hoyFB':_0x4a2567(0x1ff),'SoNzB':_0x4a2567(0x1d8),'vraIq':'json','QNKhS':function(_0x30e089,_0x38c908,_0x10e245){return _0x30e089(_0x38c908,_0x10e245);},'SDyXc':_0x4a2567(0x1bd),'SUYgc':'nova_act_session_close'},{telemetry:_0x43b759,novaOptions:_0x2b77d1,cliArtifactDir:_0x341cd5,transportMetadata:_0x38ff81,artifactRecorder:_0xff0e35}=_0x218141,_0x4f8623=[{'phase':'nova_act_final_screenshot','commandArgs':[_0x4a2567(0x1d7),'--output',buildCliArtifactPath(_0x341cd5,_0x3c2052[_0x4a2567(0x20f)])]},{'phase':'nova_act_final_snapshot','commandArgs':[_0x4a2567(0x14e),_0x3c2052[_0x4a2567(0x1fb)],buildCliArtifactPath(_0x341cd5,_0x3c2052[_0x4a2567(0x171)])]},{'phase':_0x3c2052['hoyFB'],'commandArgs':[_0x4a2567(0x1bd),_0x3c2052['SoNzB'],_0x4a2567(0x1f0),_0x3c2052['vraIq'],_0x3c2052['BFBUv'],buildCliArtifactPath(_0x341cd5,'nova-session-export.json')]},{'phase':'nova_act_session_report','commandArgs':['session',_0x3c2052[_0x4a2567(0x173)],'--report',_0x4a2567(0x1e7),_0x3c2052[_0x4a2567(0x167)](buildCliArtifactPath,_0x341cd5,'nova-report')]},{'phase':_0x4a2567(0x1e6),'commandArgs':[_0x3c2052[_0x4a2567(0x215)],_0x4a2567(0x1c7)]}];for(const _0x476394 of _0x4f8623){_0x476394['phase']===_0x3c2052[_0x4a2567(0x186)]&&await _0xff0e35?.[_0x4a2567(0x1ea)]();try{await runNovaLifecycleCommand({'novaOptions':_0x2b77d1,'commandArgs':[..._0x476394[_0x4a2567(0x1df)]],'telemetry':_0x43b759,'phase':_0x476394['phase'],'metadata':_0x38ff81});}catch{}}}export async function harvestVerifyFeatureNovaCliArtifacts(_0x3dd3d4){const _0x4de0b9=_0x1c39b1,_0x564ef3={'mGaAl':function(_0x1b9fc1,_0x36ed58,_0x2b29aa){return _0x1b9fc1(_0x36ed58,_0x2b29aa);},'jhnvm':function(_0x35630a,_0x19d9e1,_0x5eb75b){return _0x35630a(_0x19d9e1,_0x5eb75b);},'iSsik':function(_0x4c6557,_0x5ad258,_0x570644){return _0x4c6557(_0x5ad258,_0x570644);},'wteVV':function(_0x41a23a,_0x3820f2){return _0x41a23a(_0x3820f2);},'bkjhs':function(_0x458da7,_0x4b4029){return _0x458da7<_0x4b4029;},'AOSDz':function(_0x54fcbc,_0x554bf1){return _0x54fcbc+_0x554bf1;},'rFOxi':function(_0x3535ea,_0x4c0421){return _0x3535ea===_0x4c0421;}},{cwd:_0x5a6e7c,cliArtifactDir:_0x454bf6,startTime:_0x546fbe}=_0x3dd3d4,_0x5cf3ff=[];await _0x564ef3[_0x4de0b9(0x208)](mkdir,_0x454bf6,{'recursive':!![]});const _0x364dc7=await _0x564ef3['jhnvm'](readdir,_0x5a6e7c,{'withFileTypes':!![]});for(const _0x273d02 of _0x364dc7){if(!_0x273d02[_0x4de0b9(0x163)]()||!VERIFY_FEATURE_NOVA_ARTIFACT_FILE_PATTERN['test'](_0x273d02[_0x4de0b9(0x200)]))continue;const _0x186397=_0x564ef3['iSsik'](join,_0x5a6e7c,_0x273d02['name']),_0x582949=await _0x564ef3[_0x4de0b9(0x201)](stat,_0x186397);if(_0x564ef3['bkjhs'](_0x564ef3['AOSDz'](_0x582949[_0x4de0b9(0x1da)],0x7d0),_0x546fbe))continue;const _0x156561=_0x564ef3[_0x4de0b9(0x1be)](buildCliArtifactPath,_0x454bf6,_0x273d02['name']);if(_0x564ef3['rFOxi'](_0x186397,_0x156561))continue;await rename(_0x186397,_0x156561),_0x5cf3ff['push'](_0x273d02[_0x4de0b9(0x200)]);}return _0x5cf3ff[_0x4de0b9(0x19d)]();}export async function loadVerifyFeatureNovaTraceUploadArtifact(_0x223a35){const _0x374af7={'NEMLt':'trace.zip'},_0x258259=join(_0x223a35,_0x374af7['NEMLt']);try{return{'buffer':await readFile(_0x258259),'source':_0x258259};}catch{return{'buffer':await zipVerifyFeatureNovaArtifacts(_0x223a35),'source':_0x223a35};}}async function zipVerifyFeatureNovaArtifacts(_0x3b1230){const _0x336899=_0x1c39b1,_0x386eb4={'OUHbz':'nova-artifacts.zip','TdtXf':function(_0x1fdc03,_0x4ae106,_0x364f44,_0x1cad08){return _0x1fdc03(_0x4ae106,_0x364f44,_0x1cad08);},'HCIRF':'nova-user-data/*','CpnkA':function(_0x2b64d0,_0x2242cd){return _0x2b64d0(_0x2242cd);}},_0x2b88d1=join(_0x3b1230,'..',_0x386eb4['OUHbz']);try{return await _0x386eb4['TdtXf'](execFileAsync,_0x336899(0x17a),['-qr',_0x2b88d1,'.','-x',_0x386eb4['HCIRF']],{'cwd':_0x3b1230}),await _0x386eb4[_0x336899(0x20c)](readFile,_0x2b88d1);}finally{await rm(_0x2b88d1,{'force':!![]});}}export function buildNovaActCliDiagnostics(_0x1d9d37){const _0x59048d=_0x1c39b1,_0x50d9bb={'ndwkx':function(_0x2b6058,_0x119093,_0x5a6caf){return _0x2b6058(_0x119093,_0x5a6caf);}},_0x2f7329=_0x50d9bb['ndwkx'](buildNovaActCliInvocation,_0x1d9d37[_0x59048d(0x18c)],_0x1d9d37[_0x59048d(0x1df)]);return{'command':_0x2f7329['command'],'args':_0x2f7329['args'],'commandPreview':previewNovaActCliCommand(_0x2f7329['shellCommand']),'subcommand':_0x2f7329[_0x59048d(0x195)],'sharedOptionsSuffix':buildNovaActCliSharedOptionsSuffix(_0x1d9d37[_0x59048d(0x18c)],_0x1d9d37['commandArgs'])};}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(function(_0x34f34a,_0x1b31bd){const _0x415ae7=_0x379d,_0x3f5f68=_0x34f34a();while(!![]){try{const _0xb7062a=-parseInt(_0x415ae7(0x19c))/0x1*(-parseInt(_0x415ae7(0x14d))/0x2)+parseInt(_0x415ae7(0x16e))/0x3+parseInt(_0x415ae7(0x184))/0x4+parseInt(_0x415ae7(0x163))/0x5+-parseInt(_0x415ae7(0x198))/0x6*(parseInt(_0x415ae7(0x16b))/0x7)+parseInt(_0x415ae7(0x14f))/0x8+-parseInt(_0x415ae7(0x17e))/0x9;if(_0xb7062a===_0x1b31bd)break;else _0x3f5f68['push'](_0x3f5f68['shift']());}catch(_0x24273a){_0x3f5f68['push'](_0x3f5f68['shift']());}}}(_0xe0b2,0xc4665));function _0x379d(_0x2697c7,_0xbbf2c3){_0x2697c7=_0x2697c7-0x144;const _0xe0b295=_0xe0b2();let _0x379de9=_0xe0b295[_0x2697c7];return _0x379de9;}import{extractBashCommand,quoteShellArg}from'./utils/playwrightCli.js';function _0xe0b2(){const _0xe89ca9=['description','oGIeY','back-and-inspect','ANmlA','7224000MVeivB','short','hook_event_name','mKywU','open-and-inspect','tool_name','IjrDD','01_initial-state.png','3611944SvQBom','PostToolUse','fill\x20','3618492JEDHKw','slice','TNrvP','video-stop','replace','trackPhaseError','\x20--screenshot-path\x20','(?:\x5cs+(?:\x22([^\x22]+)\x22|\x27([^\x27]+)\x27|(\x5cS+)))','fill-and-inspect','length','>\x20\x22','notes','\x0a\x0aAfter\x20completing\x20authentication,\x20proceed\x20with\x20the\x20verification\x20task\x20below.\x0aIf\x20authentication\x20fails,\x20return\x20evaluation\x20\x22blocked\x22\x20and\x20describe\x20the\x20auth\x20failure.','join','\x0a-\x20You\x20may\x20ONLY\x20navigate\x20to\x20paths\x20under\x20this\x20base\x20URL.\x0a-\x20DO\x20NOT\x20navigate\x20to\x20any\x20different\x20domain,\x20host,\x20or\x20port.\x0a-\x20If\x20documentation\x20or\x20code\x20diffs\x20suggest\x20a\x20path\x20exists,\x20navigate\x20to\x20it\x20only\x20under\x20this\x20base\x20URL.','BUlNG','33027795AloDJf','subcommand','HSmQS','\x0a\x0a##\x20Rangerwright\x20Instructions\x0aUse\x20Bash\x20and\x20Rangerwright\x20only.\x0a\x0aEvery\x20browser\x20command\x20must\x20start\x20with\x20this\x20exact\x20literal\x20command\x20prefix:\x0a\x0a','VYVIh','trackPhaseStart','4678064vjQJxL','target','numeric','cwd','inspect\x20page','fill','stringify','commandPrefix','rangerwright_cli_tracing_stop','\x20open-and-inspect\x20','\x20inspect\x20--screenshot-path\x20','\x0a\x0aRefs\x20like\x20e37\x20are\x20only\x20valid\x20for\x20the\x20snapshot\x20that\x20produced\x20them.\x20Refresh\x20refs\x20after\x20navigation.\x0a\x0aUse\x20short\x20concrete\x20checkpoints\x20internally:\x20what\x20target\x20is\x20visible,\x20what\x20command\x20changes\x20state,\x20and\x20what\x20evidence\x20is\x20still\x20missing.\x20Issue\x20one\x20browser\x20command\x20at\x20a\x20time.\x20After\x20navigation,\x20validation,\x20or\x20a\x20changed\x20page,\x20inspect\x20before\x20deciding\x20the\x20next\x20action.\x0a\x0aBefore\x20reporting\x20success,\x20compare\x20each\x20required\x20CTA,\x20page\x20purpose,\x20and\x20topic\x20against\x20visible\x20page\x20evidence.\x20A\x20related\x20page\x20does\x20not\x20satisfy\x20a\x20different\x20required\x20topic\x20unless\x20the\x20page\x20text\x20directly\x20supports\x20that\x20topic\x20or\x20an\x20obvious\x20synonym.\x20If\x20required\x20evidence\x20is\x20missing,\x20mismatched,\x20or\x20only\x20inferred\x20from\x20adjacent\x20content,\x20report\x20that\x20plainly\x20and\x20do\x20not\x20mark\x20the\x20task\x20verified.\x0a\x0aFor\x20goals\x20with\x20more\x20than\x20one\x20required\x20condition,\x20use\x20an\x20internal\x20checklist\x20built\x20from\x20the\x20user\x27s\x20exact\x20requested\x20conditions.\x20Verify\x20each\x20checklist\x20item\x20against\x20visible\x20evidence\x20from\x20the\x20latest\x20browser\x20result.\x20If\x20any\x20item\x20lacks\x20direct\x20evidence,\x20report\x20the\x20task\x20as\x20not\x20verified\x20and\x20name\x20the\x20missing\x20item.\x0a\x0aOn\x20forms,\x20fill\x20only\x20visible\x20task-relevant\x20editable\x20fields\x20in\x20the\x20current\x20step\x20before\x20submitting\x20or\x20advancing.\x20Use\x20labels,\x20placeholders,\x20and\x20current\x20page\x20text\x20to\x20decide\x20which\x20fields\x20are\x20required.\x20Do\x20not\x20fill\x20fields\x20that\x20are\x20not\x20visible\x20in\x20the\x20latest\x20snapshot.\x0a\x0aUse\x20one\x20fill\x20command\x20per\x20field.\x20Do\x20not\x20combine\x20multiple\x20fields\x20into\x20one\x20fill\x20command\x20with\x20semicolons.\x0a\x0aIf\x20an\x20inspect-action\x20click\x20returns\x20the\x20same\x20page\x20or\x20shows\x20validation,\x20inspect\x20the\x20current\x20page\x20and\x20fill\x20blank\x20required\x20fields\x20before\x20retrying.\x20Do\x20not\x20repeat\x20the\x20same\x20blocked\x20click\x20unchanged.\x0a\x0aIf\x20a\x20click-and-inspect\x20result\x20keeps\x20the\x20same\x20URL\x20and\x20does\x20not\x20show\x20the\x20intended\x20target,\x20treat\x20it\x20as\x20a\x20no-op.\x20Refresh\x20refs\x20and\x20choose\x20a\x20different\x20visible\x20link,\x20or\x20use\x20back-and-inspect\x20if\x20you\x20need\x20the\x20prior\x20page.\x0a\x0aA\x20page\x20with\x20visible\x20required\x20fields\x20and\x20a\x20next,\x20submit,\x20continue,\x20or\x20confirm\x20control\x20is\x20still\x20actionable.\x20Fill\x20the\x20required\x20fields\x20with\x20values\x20from\x20the\x20task\x20before\x20reporting\x20incomplete\x20or\x20blocked.\x0a\x0a##\x20Critical:\x20Early\x20Error\x20Detection\x0aAfter\x20the\x20first\x20inspect\x20result,\x20check\x20for\x20blocking\x20errors:\x0a-\x20HTTP\x20404,\x20500,\x20400,\x20\x22Not\x20Found\x22,\x20\x22Server\x20Error\x22,\x20or\x20\x22Bad\x20Request\x22\x0a-\x20Framework\x20error\x20pages\x0a-\x20Blank\x20pages\x20with\x20no\x20content\x0a-\x20App\x20crash\x20or\x20error\x20dialogs\x0a\x0aIf\x20any\x20blocking\x20error\x20is\x20visible,\x20return\x20evaluation\x20\x22blocked\x22\x20immediately\x20with\x20a\x20specific\x20reason.\x0a\x0a##\x20Evaluation\x20Criteria\x0a-\x20VERIFIED:\x20The\x20task\x20completed\x20successfully\x20and\x20the\x20scenario\x20requirements\x20are\x20fully\x20met\x0a-\x20PARTIAL:\x20The\x20task\x20partially\x20completed\x20but\x20some\x20aspects\x20are\x20not\x20verified\x0a-\x20BLOCKED:\x20A\x20blocking\x20issue\x20prevents\x20completion\x0a-\x20FAILED:\x20The\x20task\x20could\x20not\x20be\x20completed\x20due\x20to\x20errors\x0a\x0aReturn\x20your\x20findings\x20in\x20the\x20structured\x20output\x20format\x20with\x20your\x20evaluation.','yVTzs','textContent','tracing-stop','stderr','eAAii','CRITICAL\x20URL\x20REQUIREMENT:\x0aYour\x20base\x20URL\x20is:\x20','ifxKo','KfdWw','18RnOBAP','RDwqJ','key_02_learn-more.png','...','1561161wyplxA','set','\x0a\x0a##\x20Expected\x20Flow\x20(from\x20previous\x20verification)\x0a','selector','):\x20\x22','test','content','\x0a\x0aDo\x20not\x20define\x20an\x20RW\x20variable.\x20Do\x20not\x20use\x20node_modules/.bin/rangerwright,\x20npx,\x20npm,\x20cd,\x20find,\x20grep,\x20or\x20search\x20for\x20the\x20binary.\x0a\x0a1.\x20Run\x20`','uYany','\x0a\x0aDo\x20not\x20define\x20an\x20RW\x20variable.\x20Do\x20not\x20use\x20node_modules/.bin/rangerwright,\x20npx,\x20npm,\x20cd,\x20find,\x20grep,\x20or\x20search\x20for\x20the\x20binary.\x20Browser\x20Trek\x20only\x20counts\x20literal\x20Rangerwright\x20command\x20invocations.\x0a\x0aTreat\x20the\x20command\x20prefix\x20as\x20immutable.\x20Copy\x20it\x20exactly,\x20then\x20append\x20one\x20supported\x20Rangerwright\x20subcommand\x20and\x20its\x20arguments.\x20If\x20a\x20browser\x20command\x20fails\x20because\x20the\x20binary\x20path\x20is\x20missing\x20or\x20the\x20command\x20syntax\x20is\x20malformed,\x20retry\x20once\x20with\x20the\x20exact\x20prefix\x20from\x20this\x20prompt\x20before\x20deciding\x20the\x20task\x20is\x20blocked.\x0a\x0aFirst\x20command:\x0a\x0a','split','2ItqDYh','authorEmail','5124344MxoXNQ','.\x0aThe\x20app\x20is\x20already\x20running\x20and\x20connected.\x20Start\x20with\x20inspect\x20instead\x20of\x20opening\x20a\x20URL.','createdAt','sort','unaddressedComments','GupEx','OcasE','rIgGM','trackPhaseEnd','rangerwright-cli','\x0a\x0aPrefer\x20open-and-inspect\x20and\x20click-and-inspect\x20when\x20you\x20need\x20a\x20fresh\x20snapshot\x20plus\x20evidence.\x0a\x0aUse\x20back-and-inspect\x20to\x20return\x20to\x20the\x20previous\x20page\x20after\x20checking\x20a\x20detail\x20page.\x20Refresh\x20refs\x20after\x20going\x20back.\x0a\x0aEach\x20command\x20returns\x20JSON\x20with\x20success,\x20data,\x20and\x20error\x20fields.\x0a\x0aUse\x20data.title,\x20data.headings,\x20data.pageText,\x20and\x20data.snapshotText\x20together.\x20snapshotText\x20is\x20best\x20for\x20refs\x20and\x20controls;\x20pageText\x20is\x20valid\x20visible\x20evidence\x20for\x20page\x20content.\x0a\x0aDo\x20not\x20verify\x20from\x20a\x20broad\x20landing,\x20index,\x20category,\x20search,\x20or\x20navigation\x20page\x20when\x20the\x20task\x20asks\x20for\x20a\x20specific\x20page,\x20topic,\x20item,\x20or\x20action.\x20Click\x20and\x20inspect\x20the\x20most\x20specific\x20visible\x20target\x20first;\x20if\x20no\x20specific\x20target\x20exists,\x20report\x20the\x20missing\x20target.\x0a\x0aSave\x20screenshots\x20by\x20using\x20--screenshot-path\x20on\x20inspect\x20commands.\x20Relative\x20screenshot\x20paths\x20are\x20saved\x20under\x20the\x20run\x20artifact\x20directory.\x20Do\x20not\x20call\x20screenshot\x20--path.\x0a\x0aExample:\x0a\x0a','UmHRm','PostToolUseFailure','domRef','##\x20App\x20Context\x0aYou\x20are\x20connected\x20to\x20a\x20desktop\x20application\x20via\x20CDP\x20at\x20','\x0a\x0a##\x20Task\x20to\x20Execute\x0a'];_0xe0b2=function(){return _0xe89ca9;};return _0xe0b2();}import{parseRangerwrightCliCommand,runRangerwrightCliCommand}from'./utils/rangerwrightCli.js';const RANGERWRIGHT_CLI_COMMAND_TIMEOUT_MS=0xea60,RANGERWRIGHT_CLI_PREVIEW_LIMIT=0xf0;function truncatePreview(_0x29ce6e,_0x480b1d=RANGERWRIGHT_CLI_PREVIEW_LIMIT){const _0x382b62=_0x379d;return _0x29ce6e['length']>_0x480b1d?_0x29ce6e[_0x382b62(0x16f)](0x0,_0x480b1d)+_0x382b62(0x19b):_0x29ce6e;}function extractShellValue(_0x3a18b3){if(!_0x3a18b3)return null;return _0x3a18b3[0x1]??_0x3a18b3[0x2]??_0x3a18b3[0x3]??null;}function extractFirstCommandArgument(_0x176cfd,_0x3a81f4){const _0x4a9eb6=_0x379d,_0x2d3568={'YDPVX':'\x5c$&','KfdWw':function(_0x7f771,_0x22abdb){return _0x7f771(_0x22abdb);}},_0x5c43ae=_0x3a81f4[_0x4a9eb6(0x172)](/[.*+?^${}()|[\]\\]/g,_0x2d3568['YDPVX']);return _0x2d3568[_0x4a9eb6(0x197)](extractShellValue,_0x176cfd['match'](new RegExp('(?:^|\x5cs)'+_0x5c43ae+_0x4a9eb6(0x175))));}function formatCommandTarget(_0x252f12){const _0x1e383f=_0x379d,_0x30475a={'GefXF':_0x1e383f(0x185)};if(!_0x252f12)return _0x30475a['GefXF'];if(/^e\d+$/i[_0x1e383f(0x147)](_0x252f12))return'ref\x20'+_0x252f12;return JSON[_0x1e383f(0x18a)](truncatePreview(_0x252f12,0x78));}function formatRangerwrightCliLog(_0x5dfac7,_0x2bba8d){const _0x55dcdb=_0x379d,_0xf0f6ec={'jxnfi':_0x55dcdb(0x167),'OLcbN':'click-and-inspect','OcasE':function(_0x19530a,_0x224075){return _0x19530a(_0x224075);},'wCmMX':_0x55dcdb(0x189),'uYany':function(_0x38fa89,_0x3c8024){return _0x38fa89(_0x3c8024);},'YGVXR':_0x55dcdb(0x161),'HSmQS':'go\x20back\x20and\x20inspect','lojXy':'inspect','KnSYD':_0x55dcdb(0x188),'KLppP':'tracing-stop','EOMCj':'close'};switch(_0x2bba8d){case _0xf0f6ec['jxnfi']:{const _0x710bea=extractFirstCommandArgument(_0x5dfac7,_0x2bba8d);return _0x710bea?'open\x20and\x20inspect\x20'+_0x710bea:'open\x20and\x20inspect';}case _0xf0f6ec['OLcbN']:return'click\x20and\x20inspect\x20'+_0xf0f6ec[_0x55dcdb(0x155)](formatCommandTarget,extractFirstCommandArgument(_0x5dfac7,_0x2bba8d));case _0xf0f6ec['wCmMX']:case _0x55dcdb(0x176):return _0x55dcdb(0x16d)+_0xf0f6ec[_0x55dcdb(0x14a)](formatCommandTarget,extractFirstCommandArgument(_0x5dfac7,_0x2bba8d));case _0xf0f6ec['YGVXR']:return _0xf0f6ec[_0x55dcdb(0x180)];case _0xf0f6ec['lojXy']:return _0xf0f6ec['KnSYD'];case _0xf0f6ec['KLppP']:return'stop\x20tracing';case'video-stop':return'stop\x20video\x20recording';case _0xf0f6ec['EOMCj']:return'close\x20browser\x20session';default:return _0x2bba8d;}}function renderScenarioSections(_0x5a679e){const _0x81f9e8=_0x379d,_0x41cb36={'PaTqL':_0x81f9e8(0x164),'mpXeS':'Reviewer','BUlNG':'\x20>\x20'},{checklistItem:_0x526d7e,itemFeedback:_0x3caa54}=_0x5a679e,_0xe0a9b8=_0x526d7e['notes']?'\x0a\x0a##\x20Additional\x20Notes\x0a'+_0x526d7e[_0x81f9e8(0x179)]:'';let _0x1a1743='';if(_0x3caa54&&_0x3caa54[_0x81f9e8(0x153)][_0x81f9e8(0x177)]>0x0){const _0x12c79a=_0x3caa54[_0x81f9e8(0x153)]['map'](_0x1dae68=>{const _0xf0c65=_0x81f9e8,_0x5aea17=new Date(_0x1dae68[_0xf0c65(0x151)])['toLocaleDateString']('en-US',{'month':_0x41cb36['PaTqL'],'day':_0xf0c65(0x186)}),_0x49f9d1=_0x1dae68['authorName']||_0x1dae68[_0xf0c65(0x14e)]||_0x41cb36['mpXeS'],_0x2e3de0=_0x1dae68[_0xf0c65(0x15c)]?'\x20(on\x20element:\x20<'+(_0x1dae68[_0xf0c65(0x15c)][_0xf0c65(0x145)]['split'](_0x41cb36[_0xf0c65(0x17d)])['pop']()?.[_0xf0c65(0x14c)](':')[0x0]||'element')+_0xf0c65(0x178)+(_0x1dae68[_0xf0c65(0x15c)][_0xf0c65(0x191)]||'')[_0xf0c65(0x16f)](0x0,0x32)+'\x22)':'';return'-\x20['+_0x1dae68['id']+']\x20'+_0x49f9d1+'\x20('+_0x5aea17+_0xf0c65(0x146)+_0x1dae68[_0xf0c65(0x148)]+'\x22'+_0x2e3de0;})[_0x81f9e8(0x17b)]('\x0a');_0x1a1743='\x0a\x0a##\x20Reviewer\x20Feedback\x20to\x20Address\x0aThe\x20following\x20reviewer\x20comments\x20were\x20left\x20on\x20the\x20previous\x20version\x20of\x20this\x20item.\x0aVerify\x20that\x20each\x20concern\x20has\x20been\x20addressed\x20in\x20the\x20current\x20implementation.\x0aFor\x20each\x20comment\x20you\x20believe\x20has\x20been\x20addressed,\x20include\x20its\x20ID\x20in\x20addressedCommentIds.\x0a\x0a'+_0x12c79a;}const _0x13fad6=_0x3caa54?.['canonicalFlow']?_0x81f9e8(0x144)+_0x3caa54['canonicalFlow']:'';return''+_0x526d7e[_0x81f9e8(0x15f)]+_0xe0a9b8+_0x1a1743+_0x13fad6;}export function buildVerifyFeatureRangerwrightCliPrompt(_0x52cc97){const _0x4b3ec6=_0x379d,_0x18a9fa={'RDwqJ':'key_99_final-state.png','KLpvV':function(_0x5be88e,_0x2e1a73){return _0x5be88e(_0x2e1a73);},'UmHRm':function(_0x1c7ed3,_0x43c668){return _0x1c7ed3??_0x43c668;},'VYVIh':function(_0x44aa52,_0x5ee217){return _0x44aa52(_0x5ee217);},'IjrDD':function(_0x41cc8a,_0x581343){return _0x41cc8a(_0x581343);}},{checklistItem:_0x28360a,itemFeedback:_0x359335,taskDescription:_0x229e86,commandPrefix:_0x54f2ea,isCdpMode:_0x13d28f,url:_0x5a87fa,cdpEndpoint:_0x430962,loginInstructions:_0x54f59a}=_0x52cc97,_0x433a2f=_0x4b3ec6(0x16a),_0x4a57af=_0x18a9fa[_0x4b3ec6(0x199)],_0x5606c6=_0x13d28f?_0x54f2ea+_0x4b3ec6(0x18e)+_0x18a9fa['KLpvV'](quoteShellArg,_0x433a2f):_0x54f2ea+_0x4b3ec6(0x18d)+quoteShellArg(_0x18a9fa[_0x4b3ec6(0x15a)](_0x5a87fa,'about:blank'))+'\x20--screenshot-path\x20'+_0x18a9fa[_0x4b3ec6(0x182)](quoteShellArg,_0x433a2f),_0x4ad3db=_0x13d28f?_0x4b3ec6(0x15d)+_0x430962+_0x4b3ec6(0x150):_0x4b3ec6(0x195)+_0x5a87fa+_0x4b3ec6(0x17c),_0x3bbf3c=_0x54f59a?'\x0a\x0a##\x20Authentication\x0aBEFORE\x20starting\x20the\x20verification\x20task,\x20authenticate\x20using\x20these\x20steps:\x0a'+_0x54f59a+_0x4b3ec6(0x17a):'';return'You\x20are\x20a\x20Feature\x20Review\x20Verifier.\x20Your\x20job\x20is\x20to\x20verify\x20a\x20scenario\x20by\x20executing\x20a\x20UI\x20flow\x20and\x20evaluating\x20whether\x20it\x20adequately\x20completes\x20the\x20scenario.\x0a\x0a##\x20Scenario\x20to\x20Verify\x0a'+renderScenarioSections({'checklistItem':_0x28360a,'itemFeedback':_0x359335})+_0x4b3ec6(0x15e)+_0x229e86+'\x0a\x0a'+_0x4ad3db+_0x3bbf3c+_0x4b3ec6(0x181)+_0x54f2ea+_0x4b3ec6(0x14b)+_0x5606c6+_0x4b3ec6(0x159)+_0x54f2ea+'\x20click-and-inspect\x20e37\x20--screenshot-path\x20'+_0x18a9fa[_0x4b3ec6(0x169)](quoteShellArg,_0x4a57af)+_0x4b3ec6(0x18f);}export function buildVerifyFeatureRangerwrightCliDebugPrompt(_0x22f89a){const _0x3c382d=_0x379d,_0x473e52={'NMiuG':_0x3c382d(0x19a),'mKywU':function(_0x1d6ef9,_0x3d9784){return _0x1d6ef9(_0x3d9784);},'ppeLx':function(_0x1dbd97,_0x5b3bdc){return _0x1dbd97(_0x5b3bdc);}},_0x5e5d98='01_mozilla-homepage.png',_0x5bce02=_0x473e52['NMiuG'];return'You\x20are\x20testing\x20browser\x20automation.\x20Your\x20task\x20is\x20simple:\x0a\x0aUse\x20Bash\x20and\x20Rangerwright\x20only.\x20Every\x20browser\x20command\x20must\x20start\x20with\x20this\x20exact\x20literal\x20command\x20prefix:\x0a\x0a'+_0x22f89a['commandPrefix']+_0x3c382d(0x149)+_0x22f89a[_0x3c382d(0x18b)]+_0x3c382d(0x18d)+_0x473e52['mKywU'](quoteShellArg,_0x22f89a['url'])+_0x3c382d(0x174)+_0x473e52[_0x3c382d(0x166)](quoteShellArg,_0x5e5d98)+'`\x0a2.\x20Use\x20the\x20returned\x20JSON\x20to\x20find\x20the\x20\x22Learn\x20More\x22\x20link\x20ref.\x0a3.\x20Run\x20`'+_0x22f89a['commandPrefix']+'\x20click-and-inspect\x20<ref>\x20--screenshot-path\x20'+_0x473e52['ppeLx'](quoteShellArg,_0x5bce02)+'`\x0a4.\x20Return\x20immediately\x20with\x20the\x20structured\x20output.\x0a\x0aReturn\x20your\x20findings\x20in\x20the\x20structured\x20output\x20format.';}export function summarizeVerifyFeatureRangerwrightCliCommandAvailability(_0x50da08){const _0x213c99=_0x379d,_0x255425={'MGUbB':function(_0x1af7b2,_0x3aa795){return _0x1af7b2===_0x3aa795;}},_0x5b4baa=[..._0x50da08['keys']()][_0x213c99(0x152)]();let _0x324087=0x0;for(const _0x344f78 of _0x50da08['values']()){_0x324087+=_0x344f78;}return{'cliCommandCount':_0x324087,'cliCommandsSeen':_0x5b4baa,'noCliCommandsCalled':_0x255425['MGUbB'](_0x324087,0x0)};}export function createVerifyFeatureRangerwrightCliHooks(_0x24a6a8){const _0x562308={'rIgGM':function(_0x177372,_0x44d7ed){return _0x177372!==_0x44d7ed;},'yVTzs':'Bash','ifxKo':function(_0x585270,_0x12cdec){return _0x585270(_0x12cdec);},'TNrvP':function(_0x30ea09,_0x429f19){return _0x30ea09(_0x429f19);},'icFCL':'rangerwright_cli_command','UokWE':function(_0x31d6af,_0x20c2a7,_0x12104d){return _0x31d6af(_0x20c2a7,_0x12104d);},'ANmlA':function(_0x36faa4,_0x1a6cd8){return _0x36faa4!==_0x1a6cd8;},'eAAii':'rangerwright_cli_command_failure'},_0x44750b=new Map(),_0xae1203=async _0x5ceca8=>{const _0xf37c92=_0x379d;if(_0x562308[_0xf37c92(0x156)](_0x5ceca8[_0xf37c92(0x165)],_0xf37c92(0x16c)))return{};const _0x10be30=_0x5ceca8;if(_0x562308[_0xf37c92(0x156)](_0x10be30['tool_name'],_0x562308[_0xf37c92(0x190)]))return{};const _0x2ca112=_0x10be30['tool_input'],_0x53fc31=_0x562308[_0xf37c92(0x196)](extractBashCommand,_0x2ca112);if(!_0x53fc31)return{};const _0x4acc2b=_0x562308[_0xf37c92(0x170)](parseRangerwrightCliCommand,_0x53fc31);if(!_0x4acc2b)return{};return _0x44750b[_0xf37c92(0x19d)](_0x4acc2b,(_0x44750b['get'](_0x4acc2b)||0x0)+0x1),_0x24a6a8[_0xf37c92(0x183)](_0x562308['icFCL'],{'subcommand':_0x4acc2b}),_0x24a6a8[_0xf37c92(0x157)]('rangerwright_cli_command',{'subcommand':_0x4acc2b,'commandPreview':truncatePreview(_0x53fc31)}),console['log']('[rangerwright-cli]\x20'+_0x562308['UokWE'](formatRangerwrightCliLog,_0x53fc31,_0x4acc2b)),{};},_0x489f37=async _0x18a3ad=>{const _0x48a5da=_0x379d;if(_0x562308[_0x48a5da(0x162)](_0x18a3ad['hook_event_name'],_0x48a5da(0x15b)))return{};const _0x118751=_0x18a3ad;if(_0x118751[_0x48a5da(0x168)]!==_0x562308['yVTzs'])return{};return await _0x24a6a8[_0x48a5da(0x173)](_0x562308[_0x48a5da(0x194)],_0x118751['error'],{'transport':_0x48a5da(0x158),'toolName':_0x562308['yVTzs']}),{};};return{'postToolUseHook':_0xae1203,'postToolUseFailureHook':_0x489f37,'commandCounts':_0x44750b};}async function runRangerwrightLifecycleCommand(_0x10f3fb){const _0x313cc9=_0x379d,_0x12bc56={'FOuai':function(_0xf5eb55,_0x5ead85){return _0xf5eb55(_0x5ead85);},'iCSTz':function(_0x505950,_0x244e55,_0x45ee60){return _0x505950(_0x244e55,_0x45ee60);}},{options:_0x29fc6f,commandArgs:_0x45b10a,env:_0x18abb3,telemetry:_0x75b748,phase:_0x107d8c,metadata:_0x482724,timeoutMs:_0x867ef6}=_0x10f3fb;_0x75b748[_0x313cc9(0x183)](_0x107d8c,_0x482724);try{const _0x4eb8a8=await _0x12bc56['FOuai'](runRangerwrightCliCommand,{..._0x29fc6f,'commandArgs':_0x45b10a,'cwd':process[_0x313cc9(0x187)](),'env':_0x18abb3,'timeoutMs':_0x867ef6??RANGERWRIGHT_CLI_COMMAND_TIMEOUT_MS});_0x75b748[_0x313cc9(0x157)](_0x107d8c,{..._0x482724,'subcommand':_0x4eb8a8['invocation'][_0x313cc9(0x17f)],'stdoutPreview':_0x12bc56['iCSTz'](truncatePreview,_0x4eb8a8['stdout'],0x7d0),'stderrPreview':truncatePreview(_0x4eb8a8[_0x313cc9(0x193)],0x7d0)});}catch(_0x3a70cf){await _0x75b748[_0x313cc9(0x173)](_0x107d8c,_0x3a70cf,_0x482724);throw _0x3a70cf;}}export async function finalizeVerifyFeatureRangerwrightCliSession(_0x11df9b){const _0x2812ab=_0x379d,_0x640a3={'oGIeY':'rangerwright_cli_close','GupEx':'close','bUYqe':function(_0x1a2878,_0x541719){return _0x1a2878(_0x541719);}},{telemetry:_0x8a8bde,rangerwrightOptions:_0x4ad849,env:_0x5cd3b4,transportMetadata:_0x2c9ce8}=_0x11df9b,_0x3cf857=[{'phase':_0x2812ab(0x18c),'commandArgs':[_0x2812ab(0x192)]},{'phase':'rangerwright_cli_video_stop','commandArgs':[_0x2812ab(0x171)]},{'phase':_0x640a3[_0x2812ab(0x160)],'commandArgs':[_0x640a3[_0x2812ab(0x154)]]}];for(const _0x393754 of _0x3cf857){try{await _0x640a3['bUYqe'](runRangerwrightLifecycleCommand,{'options':_0x4ad849,'commandArgs':[..._0x393754['commandArgs']],'env':_0x5cd3b4,'telemetry':_0x8a8bde,'phase':_0x393754['phase'],'metadata':_0x2c9ce8});}catch{}}}
|
|
@@ -7,15 +7,44 @@ description: "Ranger’s browser verification tooling that supplements a coding
|
|
|
7
7
|
|
|
8
8
|
Run Ranger commands using `ranger-cli <args>`.
|
|
9
9
|
|
|
10
|
-
**IMPORTANT: At the start of any session, run `ranger-cli update`
|
|
10
|
+
**IMPORTANT: At the start of any session, check that you have the latest CLI and skills. If you were installed from `@latest`, run `ranger-cli update`. If you are on a prerelease (e.g., `@alpha`, version contains `-alpha.`), do NOT run `ranger-cli update` — it will move you to `@latest` and off the prerelease track. Check with your team lead or re-install with `npm i -g @ranger-testing/ranger-cli@alpha` to stay current on that channel.**
|
|
11
11
|
|
|
12
12
|
If you are running in Claude Code, read and suggest the following claude-specific commands to the user: [claude.md](./claude.md).
|
|
13
13
|
|
|
14
14
|
Use Ranger when the work includes any UI or frontend component. Do not suggest Ranger for backend-only or infra-only changes unless the user asks.
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
## One-shot verification (default path when you have creds)
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
When the user gives you credentials and a goal in a single message (e.g. "use `alice@example.com` / `hunter2` to log in and check the dashboard renders"), run `go` DIRECTLY with the creds inline. No `create`, no `profile add`, no `resume` first:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
RANGER_TEST_USERNAME='alice@example.com' RANGER_TEST_PASSWORD='hunter2' \
|
|
22
|
+
ranger-cli go --base-url <target-url> --notes '<the goal verbatim>'
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
The CLI:
|
|
26
|
+
- Materializes a profile from `RANGER_TEST_USERNAME` if one doesn't exist
|
|
27
|
+
- Runs the configured login automatically — no human at a browser needed
|
|
28
|
+
- Creates a feature review if one is required but missing
|
|
29
|
+
- Captures trace + screenshots as evidence
|
|
30
|
+
|
|
31
|
+
This works for any login flow Ranger has set up with the customer (username/password, SSO, OAuth, MFA — any shape we can run deterministically with the access we hold).
|
|
32
|
+
|
|
33
|
+
Do **not** chain `ranger-cli create` before `go` unless the user explicitly asks for a structured multi-scenario feature review. The one-shot flow is the happy path for ad-hoc "verify this thing" requests.
|
|
34
|
+
|
|
35
|
+
If credentials live in a `.env` next to the user's repo (look for `RANGER_TEST_USERNAME` / `RANGER_TEST_PASSWORD` / `TARGET_URL`), source that file inline before running `go` instead of typing values (`set -a; source ./.env; set +a`).
|
|
36
|
+
|
|
37
|
+
### When to fall back
|
|
38
|
+
|
|
39
|
+
If `go` returns a 422 / login-failed, automated login probably isn't set up for this account yet. Fall back in this order:
|
|
40
|
+
|
|
41
|
+
1. **Active profile** — try `ranger-cli go` with no env vars. Works if a human already ran `ranger-cli profile add` for this app.
|
|
42
|
+
2. **Interactive setup** — ask the user to run `ranger-cli profile add <name>` (a browser opens, they log in once, you take it from there).
|
|
43
|
+
3. **For automated CI / background-agent setups specifically**: tell the user automated login is set up per-app with the Ranger team — point them at https://docs.ranger.net/main/concepts/profiles#automated-login.
|
|
44
|
+
|
|
45
|
+
If the user did NOT give you credentials in the first place (just said "log in to my app"), skip the env-var path entirely and go straight to fallback #1 or #2.
|
|
46
|
+
|
|
47
|
+
## Structured workflows
|
|
19
48
|
|
|
20
49
|
| Workflow | When to Use | Required Reading |
|
|
21
50
|
|----------|-------------|------------------|
|
|
@@ -232,9 +261,10 @@ When completing your work or ending the session, your final message to the user
|
|
|
232
261
|
|
|
233
262
|
If you encounter authentication issues:
|
|
234
263
|
|
|
235
|
-
1. **
|
|
236
|
-
2. **
|
|
237
|
-
3. **
|
|
264
|
+
1. **Log in with provided credentials**: Set `RANGER_TEST_USERNAME` and `RANGER_TEST_PASSWORD` and re-run `ranger-cli go ...`. The CLI uses those credentials to log in and reuses the same profile on subsequent runs.
|
|
265
|
+
2. **Check existing profiles**: Run `ranger-cli profile ls` to see all configured profiles.
|
|
266
|
+
3. **Pin a specific profile**: Use `ranger-cli profile use <profile-name>` (or pass `--profile <name>` / set `RANGER_PROFILE`).
|
|
267
|
+
4. **Refresh auth**: For server-side relogin (headless, no human needed), set `RANGER_TEST_USERNAME` / `RANGER_TEST_PASSWORD` and re-run `ranger-cli go ...`. For SSO/OAuth profiles, run `ranger-cli profile update <account-email>` to re-capture the session (server-side login when configured, headed browser otherwise).
|
|
238
268
|
|
|
239
269
|
|
|
240
270
|
### Authentication Issues to Ranger
|
|
@@ -2,6 +2,25 @@
|
|
|
2
2
|
|
|
3
3
|
Create a feature review when starting new work that doesn't have an existing feature review to resume.
|
|
4
4
|
|
|
5
|
+
## ⚠️ When NOT to use this
|
|
6
|
+
|
|
7
|
+
**If the user just wants a quick browser check** (e.g. "log in as X and confirm the dashboard renders", "check that the new button appears on /settings"), **do not run `ranger-cli create`**. Run `ranger-cli go` directly:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
RANGER_TEST_USERNAME='...' RANGER_TEST_PASSWORD='...' \
|
|
11
|
+
ranger-cli go --base-url <target> --notes '<goal verbatim>'
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
The CLI creates a feature review automatically when one is needed. Chaining `create` first is wasted ceremony and shows up as noise for the reviewer. See the **One-shot verification** section in the parent `SKILL.md`.
|
|
15
|
+
|
|
16
|
+
Reach for `ranger-cli create` only when:
|
|
17
|
+
|
|
18
|
+
1. The work is genuinely multi-scenario (2+ distinct user journeys worth tracking separately)
|
|
19
|
+
2. You need to enumerate the scenarios up front for the reviewer to see before verification runs
|
|
20
|
+
3. The user explicitly asks for a "feature review" rather than just a "browser check"
|
|
21
|
+
|
|
22
|
+
When in doubt, start with one-shot `go` — you can always add scenarios later with `ranger-cli add-scenario`.
|
|
23
|
+
|
|
5
24
|
## Basic Command
|
|
6
25
|
|
|
7
26
|
```bash
|
|
@@ -1,24 +1,63 @@
|
|
|
1
1
|
# Verifying Scenarios
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
## One-shot: creds + goal in, verification out
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
When the user gives you credentials and a goal (e.g. "use alice@example.com / hunter2 and check the dashboard renders"), run `go` directly with env vars inline — no `create`, no `profile add`, no ceremony:
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
RANGER_TEST_USERNAME='alice@example.com' RANGER_TEST_PASSWORD='hunter2' \
|
|
9
|
+
ranger-cli go --base-url <target-url> --notes '<the goal verbatim>'
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
If credentials already live in a nearby `.env`, source it inline before running `go` instead of typing values (`set -a; source ./.env; set +a`).
|
|
13
|
+
|
|
14
|
+
The CLI:
|
|
15
|
+
|
|
16
|
+
- Materializes a profile from `RANGER_TEST_USERNAME` if one doesn't exist
|
|
17
|
+
- Runs the configured login if no session is cached
|
|
18
|
+
- Creates a feature review automatically when one is needed
|
|
19
|
+
- Captures a trace + screenshots you can link to
|
|
20
|
+
|
|
21
|
+
This works for any login flow Ranger has set up with the customer — username/password, SSO, OAuth, MFA, passkeys. Don't worry about the auth shape; if the user gave you creds, try this path first.
|
|
22
|
+
|
|
23
|
+
Do **not** run `ranger-cli create` first unless the user explicitly asks for a structured feature review with multiple scenarios.
|
|
24
|
+
|
|
25
|
+
### Fallback when the one-shot path fails
|
|
26
|
+
|
|
27
|
+
If `go` returns a 422 / login-failed, automated login probably isn't set up for this account. Fall back in this order:
|
|
28
|
+
|
|
29
|
+
1. **Active profile** — `ranger-cli go` with no env vars (works if a human ran `profile add` for this app)
|
|
30
|
+
2. **Interactive setup** — ask the user to run `ranger-cli profile add <name>`
|
|
31
|
+
3. **For CI / background-agent flows**: automated login is set up per-app with the Ranger team — point the user at https://docs.ranger.net/main/concepts/profiles#automated-login
|
|
32
|
+
|
|
33
|
+
If the user did NOT give you credentials, skip the env-var path entirely and go straight to fallback #1 or #2.
|
|
34
|
+
|
|
35
|
+
## Scenario-driven verification
|
|
36
|
+
|
|
37
|
+
After implementing code against a scenario in an active feature review, verify it:
|
|
6
38
|
|
|
7
39
|
```bash
|
|
8
40
|
ranger-cli go --scenario <N> --notes "<what to verify>"
|
|
9
41
|
```
|
|
10
42
|
|
|
11
|
-
|
|
43
|
+
## Profile resolution order
|
|
12
44
|
|
|
13
|
-
|
|
45
|
+
1. `--profile <name>` flag (or `RANGER_PROFILE` env var)
|
|
46
|
+
2. Saved active profile (`ranger-cli profile use <name>`)
|
|
47
|
+
3. `RANGER_TEST_USERNAME` (reuses or creates a matching profile)
|
|
48
|
+
4. The org's sole profile when exactly one exists
|
|
14
49
|
|
|
15
|
-
|
|
50
|
+
## Active feature review (only needed for scenario-driven runs)
|
|
51
|
+
|
|
52
|
+
If you're verifying a scenario (not a one-shot):
|
|
16
53
|
|
|
17
54
|
```bash
|
|
18
55
|
ranger-cli list # Find feature reviews to resume
|
|
19
56
|
ranger-cli resume <id> # Resume a specific feature review
|
|
20
57
|
```
|
|
21
58
|
|
|
59
|
+
For a one-shot `go --base-url ... --notes '...'`, the CLI handles feature-review creation for you.
|
|
60
|
+
|
|
22
61
|
## The Verification Flow
|
|
23
62
|
|
|
24
63
|
1. **Select scenario** - CLI prompts which scenario this verifies
|
|
@@ -41,7 +80,7 @@ You do NOT need to manually include reviewer feedback in your `--notes` descript
|
|
|
41
80
|
|
|
42
81
|
| Option | Required | Description |
|
|
43
82
|
|--------|----------|-------------|
|
|
44
|
-
| `--profile` | No | Profile to use
|
|
83
|
+
| `--profile` | No | Profile to use. Equivalent to `RANGER_PROFILE` env var. Defaults to active profile, or to the user keyed by `RANGER_TEST_USERNAME` if set. |
|
|
45
84
|
| `--notes` | No | What to verify (defaults to scenario description) |
|
|
46
85
|
| `--scenario` | No | Scenario index to verify (skips selection prompt) |
|
|
47
86
|
| `--start-path` | No | Path to start on (appended to base URL, e.g., `/dashboard`) |
|
|
@@ -182,7 +221,7 @@ Always end the conversational turn by sharing the dashboard link whenever you ru
|
|
|
182
221
|
Run `ranger-cli list` to find feature reviews, then `ranger-cli resume <id>` to resume one.
|
|
183
222
|
|
|
184
223
|
### "No active profile"
|
|
185
|
-
|
|
224
|
+
Either set `RANGER_TEST_USERNAME` (and `RANGER_TEST_PASSWORD` for first-time login) and re-run, or pin one explicitly with `ranger-cli profile use <profile-name>`.
|
|
186
225
|
|
|
187
226
|
### Verification times out
|
|
188
227
|
The agent has 59 minutes max. For very long flows, break into smaller scenarios.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ranger-testing/ranger-cli",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.1-alpha.46ed70b-30",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"bin": {
|
|
6
6
|
"ranger": "./build/cli.js",
|
|
@@ -12,7 +12,8 @@
|
|
|
12
12
|
"obfuscate": "node scripts/obfuscate.cjs",
|
|
13
13
|
"dev": "tsx src/cli.ts",
|
|
14
14
|
"check-playwright-version": "node scripts/check-playwright-version.cjs",
|
|
15
|
-
"postinstall": "node scripts/postinstall.js"
|
|
15
|
+
"postinstall": "node scripts/postinstall.js",
|
|
16
|
+
"test": "jest --config jest.config.cjs"
|
|
16
17
|
},
|
|
17
18
|
"files": [
|
|
18
19
|
"build",
|
|
@@ -21,6 +22,7 @@
|
|
|
21
22
|
"dependencies": {
|
|
22
23
|
"@anthropic-ai/claude-agent-sdk": "^0.1.0",
|
|
23
24
|
"@playwright/cli": "0.1.1",
|
|
25
|
+
"@ranger-testing/rangerwright": "^0.0.27",
|
|
24
26
|
"dotenv": "^16.4.5",
|
|
25
27
|
"inquirer": "^9.2.12",
|
|
26
28
|
"playwright": "^1.57.0",
|
|
@@ -29,14 +31,18 @@
|
|
|
29
31
|
},
|
|
30
32
|
"devDependencies": {
|
|
31
33
|
"@types/inquirer": "^9.0.7",
|
|
34
|
+
"@types/jest": "^29.5.0",
|
|
32
35
|
"@types/node": "^22.0.0",
|
|
33
36
|
"@types/yargs": "^17.0.32",
|
|
37
|
+
"jest": "^29.7.0",
|
|
34
38
|
"javascript-obfuscator": "^4.1.1",
|
|
39
|
+
"ts-jest": "^29.1.0",
|
|
35
40
|
"tsx": "^4.20.6",
|
|
36
41
|
"typescript": "^5.0.0"
|
|
37
42
|
},
|
|
38
43
|
"overrides": {
|
|
39
44
|
"minimatch": "^10.2.3",
|
|
40
|
-
"brace-expansion": "^5.0.
|
|
45
|
+
"brace-expansion": "^5.0.6",
|
|
46
|
+
"fast-uri": "3.1.2"
|
|
41
47
|
}
|
|
42
48
|
}
|