@ranger-testing/ranger-cli 2.5.4 → 3.0.1-alpha.55b593b-29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/README.md +36 -14
  2. package/build/cli.js +1 -1
  3. package/build/commands/addEnv.js +1 -1
  4. package/build/commands/authEncrypt.js +1 -1
  5. package/build/commands/clean.js +1 -1
  6. package/build/commands/config.js +1 -1
  7. package/build/commands/deleteProfile.js +1 -0
  8. package/build/commands/env.js +1 -1
  9. package/build/commands/feature.js +1 -1
  10. package/build/commands/hook.js +1 -1
  11. package/build/commands/hooks/autoPrompt.js +1 -1
  12. package/build/commands/hooks/disable.js +1 -1
  13. package/build/commands/hooks/enable.js +1 -1
  14. package/build/commands/hooks/exitPlanMode.js +1 -1
  15. package/build/commands/hooks/index.js +1 -1
  16. package/build/commands/hooks/output.js +1 -1
  17. package/build/commands/hooks/planReminder.js +1 -1
  18. package/build/commands/hooks/planStart.js +1 -1
  19. package/build/commands/hooks/postEdit.js +1 -1
  20. package/build/commands/hooks/preCompact.js +1 -1
  21. package/build/commands/hooks/sessionEnd.js +1 -1
  22. package/build/commands/hooks/sessionStart.js +1 -1
  23. package/build/commands/hooks/stopHook.js +1 -1
  24. package/build/commands/index.js +1 -1
  25. package/build/commands/login.js +1 -1
  26. package/build/commands/mcpBootstrap.js +1 -1
  27. package/build/commands/migrateProfile.js +1 -0
  28. package/build/commands/setup/claude.js +1 -1
  29. package/build/commands/setup/opencode.js +1 -1
  30. package/build/commands/setupCi.js +1 -1
  31. package/build/commands/skillup.js +1 -1
  32. package/build/commands/start.js +1 -1
  33. package/build/commands/status.js +1 -1
  34. package/build/commands/update.js +1 -1
  35. package/build/commands/updateEnv.js +1 -1
  36. package/build/commands/useEnv.js +1 -1
  37. package/build/commands/utils/activeProfile.js +1 -1
  38. package/build/commands/utils/agentEnv.js +1 -1
  39. package/build/commands/utils/browserSessionsApi.js +1 -1
  40. package/build/commands/utils/claudeConfig.js +1 -1
  41. package/build/commands/utils/claudeOverrideSettings.js +1 -1
  42. package/build/commands/utils/claudePlugin.js +1 -1
  43. package/build/commands/utils/cloudProfile.js +1 -0
  44. package/build/commands/utils/cloudProfileSession.js +1 -0
  45. package/build/commands/utils/crypto.js +1 -1
  46. package/build/commands/utils/desirePathLog.js +1 -1
  47. package/build/commands/utils/deviceAuth.js +1 -1
  48. package/build/commands/utils/environment.js +1 -1
  49. package/build/commands/utils/featureApi.js +1 -1
  50. package/build/commands/utils/fixWebmDuration.js +1 -1
  51. package/build/commands/utils/gitTracked.js +1 -0
  52. package/build/commands/utils/keychain.js +1 -1
  53. package/build/commands/utils/legacyWarning.js +1 -0
  54. package/build/commands/utils/localAgentInstallationsApi.js +1 -1
  55. package/build/commands/utils/matchAuthEnvironment.js +1 -0
  56. package/build/commands/utils/mcpImageBase64.js +1 -1
  57. package/build/commands/utils/model.js +1 -1
  58. package/build/commands/utils/novaActCli.js +1 -0
  59. package/build/commands/utils/opencodeConfig.js +1 -1
  60. package/build/commands/utils/playwrightCli.js +1 -1
  61. package/build/commands/utils/profileMessages.js +1 -1
  62. package/build/commands/utils/profileSetupBanner.js +1 -1
  63. package/build/commands/utils/projectsConfig.js +1 -0
  64. package/build/commands/utils/rangerConfig.js +1 -1
  65. package/build/commands/utils/rangerRoot.js +1 -1
  66. package/build/commands/utils/resolveProfileContext.js +1 -0
  67. package/build/commands/utils/resolveProfileUrl.js +1 -0
  68. package/build/commands/utils/retry.js +1 -1
  69. package/build/commands/utils/sessionCache.js +1 -1
  70. package/build/commands/utils/settings.js +1 -1
  71. package/build/commands/utils/skillContent.js +1 -1
  72. package/build/commands/utils/skills.js +1 -1
  73. package/build/commands/utils/stitchWebmFiles.js +1 -1
  74. package/build/commands/utils/telemetry.js +1 -1
  75. package/build/commands/utils/tokenRefresh.js +1 -1
  76. package/build/commands/utils/traceSnapshotMapper.js +1 -1
  77. package/build/commands/utils/userApi.js +1 -1
  78. package/build/commands/utils/version.js +1 -1
  79. package/build/commands/verifyFeature.js +1 -1
  80. package/build/commands/verifyFeatureCli.js +1 -1
  81. package/build/commands/verifyFeatureNovaCli.js +1 -0
  82. package/build/skills/ranger/SKILL.md +36 -6
  83. package/build/skills/ranger/create.md +19 -0
  84. package/build/skills/ranger/verify.md +46 -7
  85. package/package.json +8 -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(_0x50323a,_0x25e9bb){const _0x522fff=_0xe1cd,_0x16526a=_0x50323a();while(!![]){try{const _0x42489a=parseInt(_0x522fff(0x110))/0x1*(parseInt(_0x522fff(0xb7))/0x2)+-parseInt(_0x522fff(0xee))/0x3*(-parseInt(_0x522fff(0xd3))/0x4)+-parseInt(_0x522fff(0x121))/0x5+parseInt(_0x522fff(0x104))/0x6+-parseInt(_0x522fff(0xd1))/0x7+-parseInt(_0x522fff(0xf9))/0x8*(parseInt(_0x522fff(0xc6))/0x9)+-parseInt(_0x522fff(0xb0))/0xa;if(_0x42489a===_0x25e9bb)break;else _0x16526a['push'](_0x16526a['shift']());}catch(_0x5d9184){_0x16526a['push'](_0x16526a['shift']());}}}(_0x2dd2,0x198d6));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(_0x2f3225,_0x2eceec=PLAYWRIGHT_CLI_PREVIEW_LIMIT){const _0x1d3536=_0xe1cd,_0x461209={'BxdmP':'...'};return _0x2f3225[_0x1d3536(0xe9)]>_0x2eceec?_0x2f3225[_0x1d3536(0xb8)](0x0,_0x2eceec)+_0x461209[_0x1d3536(0x106)]:_0x2f3225;}function buildCliArtifactPath(_0x2e4935,_0x59ec74){const _0x49ad27=_0xe1cd,_0x491220={'enEhr':function(_0x1f2849,_0xd5866c,_0x2ba30a){return _0x1f2849(_0xd5866c,_0x2ba30a);}};return _0x491220[_0x49ad27(0xb6)](join,_0x2e4935,_0x59ec74);}function toStepDisplayName(_0x32de65){const _0x26e251=_0xe1cd,_0x3777fd={'WSWbt':function(_0x4f5fcf,_0x5c0ac9){return _0x4f5fcf(_0x5c0ac9);}},_0x4e81e4=_0x3777fd['WSWbt'](basename,_0x32de65)['replace'](/\.(?:png|ya?ml)$/i,'')[_0x26e251(0xbb)](/^key_/i,'')[_0x26e251(0xbb)](/^\d+_/,'')['replace'](/-/g,'\x20');return{'name':_0x4e81e4,'isKeyStep':/^key_/i['test'](_0x3777fd[_0x26e251(0xdd)](basename,_0x32de65))};}function _0x2dd2(){const _0x5e3786=['commandArgs','enEhr','8012HXhrKQ','slice','element','kKwuF','replace','stringify','video-stop','xKkgf','string','trackPhaseError','playwright_cli_close','name','textContent','\x20open\x20','VJrfz','34416PflATv','`\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`','`\x0a7.\x20Click\x20the\x20\x22Learn\x20More\x22\x20link\x20with\x20Playwright\x20CLI\x0a8.\x20Run\x20`','open\x20','BZMLq','LRAsR','unaddressedComments','stdout','en-US','`:\x20\x22','tool_call','223573pXfxEi','sort','69544ETuFDA','hNHvq','KiwKA','`,\x20then\x20`','press','cOEez','PostToolUse','JxSSd','kwqYR','\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','WSWbt','prWma','values','subcommand','trackPhaseStart','canonicalFlow','capture\x20snapshot\x20`','.\x0aThis\x20is\x20NOT\x20a\x20web\x20app\x20—\x20there\x20is\x20no\x20URL\x20to\x20navigate\x20to.\x20The\x20app\x20is\x20already\x20running\x20and\x20connected.','mMGbt','kOrde','CRITICAL\x20URL\x20REQUIREMENT:\x0aYour\x20base\x20URL\x20is:\x20','key_03_success-state.png','length','tool_name','Solev','run-code','notes','30YyNDlW','hFaeU','jBSla','selector','\x22,\x20\x22','You\x20are\x20testing\x20browser\x20automation.\x20Your\x20task\x20is\x20simple:\x0a\x0aUse\x20Bash\x20and\x20Playwright\x20CLI\x20only.\x20The\x20browser\x20command\x20prefix\x20is:\x0a','capture\x20screenshot','domRef','createdAt','Bash','set','80qwtKoA','tracing-stop','NXuac','\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.','`\x20style\x20absolute\x20paths\x20at\x20key\x20moments.\x0a8.\x20If\x20you\x20need\x20waits\x20or\x20custom\x20assertions,\x20use\x20`','split','>\x20\x22','`\x20using\x20absolute\x20paths\x20only.\x20Do\x20not\x20use\x20relative\x20filenames.\x0a4.\x20Take\x20a\x20snapshot\x20with\x20`','bBhfe','wQKDF','select\x20tab\x20','792558BPEjVX','[ranger-verification-agent]\x20','BxdmP','toLocaleDateString','hOako','[playwright-cli]\x20','video-start','snapshot','HVQAK','hook_event_name','pop','glCNv','45bjcKUP','capture\x20key\x20step\x20`','\x20tracing-start`,\x20then\x20`','`\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`','TQhCl','tracing-start','JXjak','ATyED','00_mozilla-homepage.yml','\x0a\x0a##\x20Expected\x20Flow\x20(from\x20previous\x20verification)\x0a','`\x0a10.\x20Return\x20immediately\x20with\x20the\x20structured\x20output\x0a\x0aReturn\x20your\x20findings\x20in\x20the\x20structured\x20output\x20format.','trim','01_initial-state.png','\x20screenshot\x20--filename\x20','\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','short','trace.zip','262910fcPwVk','open\x20browser','cEluF','stderr','match','##\x20Instructions\x0a1.\x20Use\x20Bash\x20plus\x20Playwright\x20CLI\x20only.\x20Do\x20NOT\x20call\x20MCP\x20browser\x20tools.\x0a2.\x20Start\x20by\x20running\x20`','xxgtw','check','`\x0a\x0a-\x20Write\x20all\x20artifacts\x20under\x20`','mlFWH','playwright-cli','\x20snapshot\x20--filename\x20','playwright_cli_tracing_stop','click\x20','TJAYA','HJWLy','ZTlQD','`\x20style\x20absolute\x20paths\x20at\x20key\x20moments.\x0a6.\x20If\x20you\x20need\x20waits\x20or\x20custom\x20assertions,\x20use\x20`','stop\x20tracing','(?:^|\x5cs)','-\x20[','`\x0a-\x20`snapshot\x20--filename\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','DEBUG','open\x20new\x20tab\x20','invocation','FwspX','2588000jdgcUu','\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.','ref\x20','get','tab-new'];_0x2dd2=function(){return _0x5e3786;};return _0x2dd2();}function extractShellValue(_0x3b73c7){if(!_0x3b73c7)return null;return _0x3b73c7[0x1]??_0x3b73c7[0x2]??_0x3b73c7[0x3]??null;}function extractFilenameOption(_0x529663){const _0x4b47a1={'WNAuV':function(_0x440cda,_0x1eba2b){return _0x440cda(_0x1eba2b);}};return _0x4b47a1['WNAuV'](extractShellValue,_0x529663['match'](/--filename(?:=|\s+)(?:"([^"]+)"|'([^']+)'|(\S+))/));}function extractFirstCommandArgument(_0x5efa51,_0x52fdc5){const _0x3d5dc1=_0xe1cd,_0x5ac929={'KiwKA':'\x5c$&'},_0x455037=_0x52fdc5['replace'](/[.*+?^${}()|[\]\\]/g,_0x5ac929[_0x3d5dc1(0xd5)]);return extractShellValue(_0x5efa51[_0x3d5dc1(0x125)](new RegExp(_0x3d5dc1(0x134)+_0x455037+'(?:\x5cs+(?:\x22([^\x22]+)\x22|\x27([^\x27]+)\x27|(\x5cS+)))')));}function formatCommandTarget(_0x537338){const _0x386667=_0xe1cd,_0x53d154={'NXuac':function(_0x11de0d,_0x2d9b1b,_0x3badf6){return _0x11de0d(_0x2d9b1b,_0x3badf6);}};if(!_0x537338)return'target';if(/^e\d+$/i['test'](_0x537338))return _0x386667(0xb2)+_0x537338;return JSON[_0x386667(0xbc)](_0x53d154[_0x386667(0xfb)](truncatePreview,_0x537338,0x78));}function formatPlaywrightCliLog(_0x343b82,_0xdc053c){const _0x131266=_0xe1cd,_0x170c44={'kKwuF':function(_0x516ca8,_0x4acb8a,_0xe36392){return _0x516ca8(_0x4acb8a,_0xe36392);},'bBhfe':_0x131266(0x122),'HJWLy':'start\x20tracing','JwSxs':function(_0x27501d,_0x115a19){return _0x27501d(_0x115a19);},'BoaeR':'capture\x20snapshot','mMGbt':function(_0x55699f,_0x406fd0){return _0x55699f(_0x406fd0);},'LNexk':'screenshot','HVQAK':_0x131266(0xf4),'cOEez':function(_0x1e5fa7,_0x4e0199){return _0x1e5fa7(_0x4e0199);},'GrbvW':'click','kMHsG':function(_0x56744c,_0x1dce34){return _0x56744c(_0x1dce34);},'EKLqW':'fill','jBSla':function(_0x10fabf,_0x107f27,_0x392b24){return _0x10fabf(_0x107f27,_0x392b24);},'xuAfc':'run\x20custom\x20Playwright\x20code','BZMLq':function(_0x43f067,_0x5a70b0,_0x38e7c8){return _0x43f067(_0x5a70b0,_0x38e7c8);},'nVvUe':'open\x20new\x20tab','cEluF':'tab-select','JxSSd':function(_0x5477f1,_0x2d9bd3,_0x558cb0){return _0x5477f1(_0x2d9bd3,_0x558cb0);}};switch(_0xdc053c){case'open':{const _0x41e4ca=_0x170c44[_0x131266(0xba)](extractFirstCommandArgument,_0x343b82,_0xdc053c);return _0x41e4ca?_0x131266(0xc9)+_0x41e4ca:_0x170c44[_0x131266(0x101)];}case _0x131266(0x115):return _0x170c44[_0x131266(0x130)];case _0x131266(0xfa):return _0x131266(0x133);case _0x131266(0x10a):return'start\x20video\x20recording';case'video-stop':return'stop\x20video\x20recording';case _0x131266(0x10b):{const _0x579f4d=_0x170c44['JwSxs'](extractFilenameOption,_0x343b82);if(!_0x579f4d)return _0x170c44['BoaeR'];const {name:_0x1eac36}=_0x170c44['mMGbt'](toStepDisplayName,_0x579f4d);return _0x131266(0xe3)+_0x1eac36+'`';}case _0x170c44['LNexk']:{const _0x42b994=_0x170c44[_0x131266(0xe5)](extractFilenameOption,_0x343b82);if(!_0x42b994)return _0x170c44[_0x131266(0x10c)];const {name:_0x5e49a1,isKeyStep:_0x11e8a9}=_0x170c44[_0x131266(0xd8)](toStepDisplayName,_0x42b994);return _0x11e8a9?_0x131266(0x111)+_0x5e49a1+'`':'capture\x20step\x20`'+_0x5e49a1+'`';}case _0x170c44['GrbvW']:return _0x131266(0x12e)+formatCommandTarget(_0x170c44['kKwuF'](extractFirstCommandArgument,_0x343b82,_0xdc053c));case _0x131266(0x128):return'check\x20'+_0x170c44['kMHsG'](formatCommandTarget,extractFirstCommandArgument(_0x343b82,_0xdc053c));case _0x170c44['EKLqW']:return'fill\x20'+formatCommandTarget(_0x170c44[_0x131266(0xba)](extractFirstCommandArgument,_0x343b82,_0xdc053c));case _0x131266(0xd7):return'press\x20'+formatCommandTarget(_0x170c44[_0x131266(0xf0)](extractFirstCommandArgument,_0x343b82,_0xdc053c));case _0x131266(0xec):return _0x170c44['xuAfc'];case _0x131266(0xb4):{const _0x50a18a=_0x170c44[_0x131266(0xca)](extractFirstCommandArgument,_0x343b82,_0xdc053c);return _0x50a18a?_0x131266(0xad)+_0x50a18a:_0x170c44['nVvUe'];}case _0x170c44[_0x131266(0x123)]:{const _0x435f98=_0x170c44[_0x131266(0xda)](extractFirstCommandArgument,_0x343b82,_0xdc053c);return _0x435f98?_0x131266(0x103)+_0x435f98:'select\x20tab';}default:return _0xdc053c;}}function extractPlaywrightCliToolDescription(_0x31d6e5){const _0x1768cc=_0xe1cd,_0x4c4525={'kOrde':function(_0x23ed65,_0x11a767){return _0x23ed65!==_0x11a767;}},_0x2358a7=_0x31d6e5['description'];if(_0x4c4525[_0x1768cc(0xe6)](typeof _0x2358a7,_0x1768cc(0xbf)))return null;const _0x51f758=_0x2358a7[_0x1768cc(0x11b)]()['replace'](/\s+/g,'\x20');return _0x51f758['length']>0x0?_0x51f758:null;}export function formatPlaywrightCliConsoleLogMessage(_0x36ae49,_0xe3b3b,_0x299017){const _0x1bd1aa=_0xe1cd,_0x332cb2=formatPlaywrightCliLog(_0xe3b3b,_0x299017),_0x47bac7=extractPlaywrightCliToolDescription(_0x36ae49);if(!_0x47bac7)return _0x1bd1aa(0x109)+_0x332cb2;if(process['env'][_0x1bd1aa(0xac)])return _0x1bd1aa(0x105)+_0x47bac7+'\x20('+_0x332cb2+')';return'[ranger-verification-agent]\x20'+_0x47bac7;}export function buildVerifyFeatureCliDebugPrompt(_0x441ac6,_0x52eaaa){const _0x4569be=_0xe1cd,_0x375705={'oHves':'01_mozilla-homepage.png','kZoaK':function(_0x47799e,_0x556ccd,_0x453b52){return _0x47799e(_0x556ccd,_0x453b52);},'SzEpe':'02_learn-more.yml','LRAsR':function(_0x331c06,_0xef9def,_0xda9af4){return _0x331c06(_0xef9def,_0xda9af4);},'hOako':function(_0x444ae6,_0x534ed1){return _0x444ae6(_0x534ed1);},'hFaeU':function(_0x2c9df4,_0x496347){return _0x2c9df4(_0x496347);}},_0x3d7c94=buildCliArtifactPath(_0x52eaaa,_0x4569be(0x118)),_0x26bac5=buildCliArtifactPath(_0x52eaaa,_0x375705['oHves']),_0x178f0c=_0x375705['kZoaK'](buildCliArtifactPath,_0x52eaaa,_0x375705['SzEpe']),_0x352c17=_0x375705[_0x4569be(0xcb)](buildCliArtifactPath,_0x52eaaa,'03_learn-more.png'),_0x2ac87a=_0x375705['hOako'](quoteShellArg,_0x3d7c94),_0x59db6c=_0x375705[_0x4569be(0x108)](quoteShellArg,_0x26bac5),_0x221ec0=quoteShellArg(_0x178f0c),_0x1348a9=_0x375705[_0x4569be(0xef)](quoteShellArg,_0x352c17);return _0x4569be(0xf3)+_0x441ac6+'\x0a\x0a1.\x20Run\x20`'+_0x441ac6+'\x20open\x20https://www.mozilla.org`\x0a2.\x20Run\x20`'+_0x441ac6+'\x20tracing-start`\x0a3.\x20Run\x20`'+_0x441ac6+'\x20video-start`\x0a4.\x20Save\x20every\x20snapshot\x20and\x20screenshot\x20under\x20`'+_0x52eaaa+'`\x20using\x20absolute\x20paths\x20only.\x20Do\x20not\x20use\x20relative\x20filenames.\x0a5.\x20Run\x20`'+_0x441ac6+_0x4569be(0x12c)+_0x2ac87a+'`\x0a5.\x20Read\x20the\x20snapshot\x20file\x20to\x20find\x20the\x20\x22Learn\x20More\x22\x20link\x20reference\x0a6.\x20Run\x20`'+_0x441ac6+_0x4569be(0x11d)+_0x59db6c+_0x4569be(0xc8)+_0x441ac6+'\x20snapshot\x20--filename\x20'+_0x221ec0+'`\x0a9.\x20Run\x20`'+_0x441ac6+_0x4569be(0x11d)+_0x1348a9+_0x4569be(0x11a);}export function buildVerifyFeatureCliPrompt(_0x250d31){const _0x6dfbab=_0xe1cd,_0x23ce60={'ustQy':_0x6dfbab(0x11f),'hNHvq':function(_0x1d8949,_0x13f712,_0xe3cc6c){return _0x1d8949(_0x13f712,_0xe3cc6c);},'thlYy':'01_initial.yml','ZTlQD':function(_0x4a717e,_0x1f308a,_0x47fdba){return _0x4a717e(_0x1f308a,_0x47fdba);},'xxgtw':function(_0x38ebc5,_0x228953){return _0x38ebc5(_0x228953);},'AEhyQ':function(_0x5b776e,_0x103d2e){return _0x5b776e(_0x103d2e);},'Solev':'02_button-clicked.png','QaABY':function(_0x3ee032,_0x423140,_0x53ee2c){return _0x3ee032(_0x423140,_0x53ee2c);},'IVGfM':'key_04_success-state.png'},{checklistItem:_0x574a87,itemFeedback:_0xd50aa3,taskDescription:_0x45f3be,cliCommandPrefix:_0x4b3e4e,cliArtifactDir:_0x299be6,isCdpMode:_0x29a073,url:_0x4de762,cdpEndpoint:_0xadc792,loginInstructions:_0x19612a}=_0x250d31,_0x2d09f2=_0x23ce60[_0x6dfbab(0xd4)](buildCliArtifactPath,_0x299be6,_0x23ce60['thlYy']),_0x58e650=_0x23ce60[_0x6dfbab(0xd4)](buildCliArtifactPath,_0x299be6,'02_state.yml'),_0x456f7c=_0x23ce60[_0x6dfbab(0x131)](buildCliArtifactPath,_0x299be6,_0x6dfbab(0xe8)),_0x1febc7=_0x23ce60[_0x6dfbab(0x131)](buildCliArtifactPath,_0x299be6,_0x6dfbab(0x11c)),_0x1198a9=_0x23ce60[_0x6dfbab(0x127)](quoteShellArg,_0x2d09f2),_0x4cc5b4=quoteShellArg(_0x58e650),_0x36f4da=quoteShellArg(_0x456f7c),_0x28a150=_0x23ce60['AEhyQ'](quoteShellArg,_0x1febc7),_0x117d6c=_0x574a87[_0x6dfbab(0xed)]?'\x0a\x0a##\x20Additional\x20Notes\x0a'+_0x574a87[_0x6dfbab(0xed)]:'';let _0x22eab4='';if(_0xd50aa3&&_0xd50aa3[_0x6dfbab(0xcc)]['length']>0x0){const _0x2d21b6=_0xd50aa3['unaddressedComments']['map'](_0x2ae605=>{const _0x5213a7=_0x6dfbab,_0x32afca=new Date(_0x2ae605[_0x5213a7(0xf6)])[_0x5213a7(0x107)](_0x5213a7(0xce),{'month':_0x23ce60['ustQy'],'day':'numeric'}),_0x4a47aa=_0x2ae605['authorName']||_0x2ae605['authorEmail']||'Reviewer',_0x4e4494=_0x2ae605['domRef']?'\x20(on\x20element:\x20<'+(_0x2ae605[_0x5213a7(0xf5)][_0x5213a7(0xf1)][_0x5213a7(0xfe)]('\x20>\x20')[_0x5213a7(0x10e)]()?.[_0x5213a7(0xfe)](':')[0x0]||_0x5213a7(0xb9))+_0x5213a7(0xff)+(_0x2ae605['domRef'][_0x5213a7(0xc3)]||'')['slice'](0x0,0x32)+'\x22)':'';return _0x5213a7(0x135)+_0x2ae605['id']+']\x20**'+_0x4a47aa+'**\x20('+_0x32afca+'):\x20\x22'+_0x2ae605['content']+'\x22'+_0x4e4494;})['join']('\x0a');_0x22eab4='\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'+_0x2d21b6;}const _0x5c8d6c=_0xd50aa3?.[_0x6dfbab(0xe2)]?_0x6dfbab(0x119)+_0xd50aa3[_0x6dfbab(0xe2)]:'',_0x5577e7=_0x29a073?'##\x20App\x20Context\x0aYou\x20are\x20connected\x20to\x20a\x20desktop\x20application\x20via\x20CDP\x20(Chrome\x20DevTools\x20Protocol)\x20at\x20'+_0xadc792+_0x6dfbab(0xe4):_0x6dfbab(0xe7)+_0x4de762+'\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',_0x31bc2f=_0x4de762?quoteShellArg(_0x4de762):'',_0x1ba839=_0x29a073?'##\x20Instructions\x0a1.\x20Use\x20Bash\x20plus\x20Playwright\x20CLI\x20only.\x20Do\x20NOT\x20call\x20MCP\x20browser\x20tools.\x0a2.\x20Start\x20by\x20running\x20`'+_0x4b3e4e+'\x20open`,\x20then\x20`'+_0x4b3e4e+_0x6dfbab(0x112)+_0x4b3e4e+'\x20video-start`.\x0a3.\x20Save\x20every\x20snapshot\x20and\x20screenshot\x20under\x20`'+_0x299be6+'`\x20using\x20absolute\x20paths\x20only.\x20Do\x20not\x20use\x20relative\x20filenames.\x0a4.\x20Take\x20a\x20snapshot\x20with\x20`'+_0x4b3e4e+'\x20snapshot\x20--filename\x20'+_0x1198a9+'`\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`'+_0x4b3e4e+_0x6dfbab(0x11d)+_0x28a150+_0x6dfbab(0x132)+_0x4b3e4e+_0x6dfbab(0x11e):_0x6dfbab(0x126)+_0x4b3e4e+_0x6dfbab(0xc4)+_0x31bc2f+_0x6dfbab(0xd6)+_0x4b3e4e+'\x20tracing-start`,\x20then\x20`'+_0x4b3e4e+'\x20video-start`.\x0a3.\x20Save\x20every\x20snapshot\x20and\x20screenshot\x20under\x20`'+_0x299be6+_0x6dfbab(0x100)+_0x4b3e4e+'\x20snapshot\x20--filename\x20'+_0x1198a9+_0x6dfbab(0x113)+_0x4b3e4e+_0x6dfbab(0x11d)+_0x28a150+_0x6dfbab(0xfd)+_0x4b3e4e+'\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',_0x5b5fce=_0x29a073?_0x6dfbab(0xb1):_0x6dfbab(0xfc),_0x418afc=_0x19612a?'\x0a\x0a##\x20Authentication\x0aBEFORE\x20starting\x20the\x20verification\x20task,\x20you\x20MUST\x20authenticate\x20using\x20these\x20steps:\x0a'+_0x19612a+'\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'+_0x574a87['description']+_0x117d6c+_0x22eab4+_0x5c8d6c+'\x0a\x0a##\x20Task\x20to\x20Execute\x0a'+_0x45f3be+'\x0a\x0a'+_0x5577e7+_0x418afc+'\x0a\x0a'+_0x1ba839+'\x0a\x0a##\x20Browser\x20Command\x20Reference\x0aUse\x20Bash\x20to\x20run\x20Playwright\x20CLI\x20commands\x20with\x20this\x20exact\x20prefix:\x0a`'+_0x4b3e4e+_0x6dfbab(0x129)+_0x299be6+_0x6dfbab(0xaa)+_0x4cc5b4+'`\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'+_0x36f4da+_0x6dfbab(0xc7)+_0x299be6+_0x6dfbab(0xcf)+_0x1febc7+_0x6dfbab(0xf2)+buildCliArtifactPath(_0x299be6,_0x23ce60[_0x6dfbab(0xeb)])+'\x22,\x20\x22'+buildCliArtifactPath(_0x299be6,'03_result-visible.png')+_0x6dfbab(0xdc)+_0x23ce60['QaABY'](buildCliArtifactPath,_0x299be6,_0x23ce60['IVGfM'])+_0x6dfbab(0xab)+_0x5b5fce+'\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(_0x4c7a13){const _0x3a344c=_0xe1cd,_0x5764df=[..._0x4c7a13['keys']()][_0x3a344c(0xd2)]();let _0x1b9460=0x0;for(const _0x30259d of _0x4c7a13[_0x3a344c(0xdf)]()){_0x1b9460+=_0x30259d;}return{'cliCommandCount':_0x1b9460,'cliCommandsSeen':_0x5764df,'noCliCommandsCalled':_0x1b9460===0x0};}function _0xe1cd(_0xe811dd,_0x17c080){_0xe811dd=_0xe811dd-0xaa;const _0x2dd20d=_0x2dd2();let _0xe1cd78=_0x2dd20d[_0xe811dd];return _0xe1cd78;}export function createVerifyFeatureCliHooks(_0x3ef008){const _0x5ac035=_0xe1cd,_0x1577e0={'mlFWH':_0x5ac035(0xf7),'glCNv':function(_0xa2c248,_0x88c945){return _0xa2c248(_0x88c945);},'FwspX':_0x5ac035(0xd0),'FhLcG':'snapshot','UhZyu':function(_0x4a3b5f,_0x71c8fd,_0x3f2308,_0x4a2094){return _0x4a3b5f(_0x71c8fd,_0x3f2308,_0x4a2094);},'wmysc':'playwright-cli'},_0x200f13=new Map(),_0x4a5707=async _0x3ed8d7=>{const _0x33f6e3=_0x5ac035;if(_0x3ed8d7[_0x33f6e3(0x10d)]!==_0x33f6e3(0xd9))return{};const _0x41794a=_0x3ed8d7;if(_0x41794a[_0x33f6e3(0xea)]!==_0x1577e0['mlFWH'])return{};const _0x36b2c4=_0x41794a['tool_input'],_0x4d174a=extractBashCommand(_0x36b2c4);if(!_0x4d174a)return{};const _0x1d98d8=_0x1577e0[_0x33f6e3(0x10f)](parsePlaywrightCliCommand,_0x4d174a);if(!_0x1d98d8)return{};return _0x200f13[_0x33f6e3(0xf8)](_0x1d98d8,(_0x200f13[_0x33f6e3(0xb3)](_0x1d98d8)||0x0)+0x1),_0x3ef008[_0x33f6e3(0xe1)](_0x1577e0[_0x33f6e3(0xaf)],{'transport':_0x33f6e3(0x12b),'toolName':_0x1d98d8}),_0x3ef008['trackPhaseEnd'](_0x1577e0['FwspX'],{'transport':'playwright-cli','toolName':_0x1d98d8,'bashCommandPreview':_0x1577e0[_0x33f6e3(0x10f)](truncatePreview,_0x4d174a)}),_0x1d98d8!==_0x1577e0['FhLcG']&&console['log'](_0x1577e0['UhZyu'](formatPlaywrightCliConsoleLogMessage,_0x36b2c4,_0x4d174a,_0x1d98d8)),{};},_0x44d62b=async _0x5e88e8=>{const _0x230cb1=_0x5ac035;if(_0x5e88e8[_0x230cb1(0x10d)]!=='PostToolUseFailure')return{};const _0x9968f0=_0x5e88e8;if(_0x9968f0[_0x230cb1(0xea)]!==_0x1577e0[_0x230cb1(0x12a)])return{};return await _0x3ef008['trackPhaseError']('tool_failure',_0x9968f0['error'],{'transport':_0x1577e0['wmysc'],'toolName':_0x230cb1(0xf7)}),{};};return{'postToolUseHook':_0x4a5707,'postToolUseFailureHook':_0x44d62b,'commandCounts':_0x200f13};}async function runPlaywrightCliLifecycleCommand(_0x1c25a6){const _0x45f446=_0xe1cd,_0xb50a5e={'VJrfz':function(_0x1f170d,_0x560b89,_0x546bf4){return _0x1f170d(_0x560b89,_0x546bf4);}},{sessionId:_0x319d50,configPath:_0x26a23b,commandArgs:_0x410e1e,env:_0x311274,telemetry:_0x336efb,phase:_0x19aaf6,metadata:_0x4f0b84,timeoutMs:_0x1b160a}=_0x1c25a6;_0x336efb[_0x45f446(0xe1)](_0x19aaf6,_0x4f0b84);try{const _0x2fc09e=await runPlaywrightCliCommand({'sessionId':_0x319d50,'configPath':_0x26a23b,'commandArgs':_0x410e1e,'cwd':process['cwd'](),'env':_0x311274,'timeoutMs':_0x1b160a??PLAYWRIGHT_CLI_COMMAND_TIMEOUT_MS});_0x336efb['trackPhaseEnd'](_0x19aaf6,{..._0x4f0b84,'subcommand':_0x2fc09e[_0x45f446(0xae)][_0x45f446(0xe0)],'stdoutPreview':truncatePreview(_0x2fc09e[_0x45f446(0xcd)],0x7d0),'stderrPreview':_0xb50a5e[_0x45f446(0xc5)](truncatePreview,_0x2fc09e[_0x45f446(0x124)],0x7d0)});}catch(_0x3688d6){await _0x336efb[_0x45f446(0xc0)](_0x19aaf6,_0x3688d6,_0x4f0b84);throw _0x3688d6;}}export async function finalizeVerifyFeatureCliSession(_0x5790bf){const _0x29c5d4=_0xe1cd,_0x425011={'JXjak':_0x29c5d4(0x12d),'UIkqe':_0x29c5d4(0xfa),'TJAYA':'playwright_cli_video_stop','ATyED':_0x29c5d4(0xc1),'kwqYR':'close','xuoVM':function(_0x3cea67,_0x5337ce){return _0x3cea67(_0x5337ce);}},{telemetry:_0x1b4584,sessionId:_0x43084e,configPath:_0x19a261,cliArtifactDir:_0xf20f72,env:_0x2f422c,transportMetadata:_0x33ddf4}=_0x5790bf,_0xa03853=[{'phase':_0x425011[_0x29c5d4(0x116)],'commandArgs':[_0x425011['UIkqe']]},{'phase':_0x425011[_0x29c5d4(0x12f)],'commandArgs':[_0x29c5d4(0xbd),'--filename='+buildCliArtifactPath(_0xf20f72,'session-recording.webm')]},{'phase':_0x425011[_0x29c5d4(0x117)],'commandArgs':[_0x425011[_0x29c5d4(0xdb)]]}];for(const _0x2b09ff of _0xa03853){try{await _0x425011['xuoVM'](runPlaywrightCliLifecycleCommand,{'sessionId':_0x43084e,'configPath':_0x19a261,'commandArgs':[..._0x2b09ff[_0x29c5d4(0xb5)]],'env':_0x2f422c,'telemetry':_0x1b4584,'phase':_0x2b09ff['phase'],'metadata':_0x33ddf4});}catch{}}}export async function loadVerifyFeatureCliTraceUploadArtifact(_0x479d72){const _0x660979=_0xe1cd,_0x3a1bb3={'wQKDF':function(_0x5792ee,_0x44befc){return _0x5792ee(_0x44befc);}},_0x262c2a=[_0x660979(0x120),'trace.trace.zip'];for(const _0x4c48c2 of _0x262c2a){const _0x2e9ca1=join(_0x479d72,_0x4c48c2);try{return{'buffer':await _0x3a1bb3[_0x660979(0x102)](readFile,_0x2e9ca1),'source':_0x2e9ca1};}catch{}}return null;}export async function rehomeVerifyFeatureCliArtifacts(_0x3d94d1){const _0x3f300b=_0xe1cd,_0x312604={'THPNw':function(_0x18bbf0,_0x17213b,_0x199c3c){return _0x18bbf0(_0x17213b,_0x199c3c);},'VwYav':function(_0x1afaa0,_0x202187){return _0x1afaa0(_0x202187);},'prWma':function(_0x23d690,_0x49b18a){return _0x23d690<_0x49b18a;},'TQhCl':function(_0xb14564,_0x108266){return _0xb14564===_0x108266;},'xKkgf':function(_0x173878,_0x5ed58e,_0x3ebbae){return _0x173878(_0x5ed58e,_0x3ebbae);}},{cwd:_0x452c4e,cliArtifactDir:_0x10956e,startTime:_0x1cb084}=_0x3d94d1,_0x569ebe=[];await _0x312604['THPNw'](mkdir,_0x10956e,{'recursive':!![]});const _0x1cd02a=await readdir(_0x452c4e,{'withFileTypes':!![]});for(const _0x451529 of _0x1cd02a){if(!_0x451529['isFile']()||!VERIFY_FEATURE_CLI_ARTIFACT_FILE_PATTERN['test'](_0x451529[_0x3f300b(0xc2)]))continue;const _0x4da1d3=join(_0x452c4e,_0x451529['name']),_0x79d7e8=await _0x312604['VwYav'](stat,_0x4da1d3);if(_0x312604[_0x3f300b(0xde)](_0x79d7e8['mtimeMs']+0x7d0,_0x1cb084))continue;const _0x2b10f5=buildCliArtifactPath(_0x10956e,_0x451529[_0x3f300b(0xc2)]);if(_0x312604[_0x3f300b(0x114)](_0x4da1d3,_0x2b10f5))continue;await _0x312604[_0x3f300b(0xbe)](rename,_0x4da1d3,_0x2b10f5),_0x569ebe['push'](_0x451529[_0x3f300b(0xc2)]);}return _0x569ebe[_0x3f300b(0xd2)]();}
@@ -0,0 +1 @@
1
+ const _0x1ccdce=_0x2035;(function(_0x441e96,_0x1f7123){const _0x38af39=_0x2035,_0x5bf3f5=_0x441e96();while(!![]){try{const _0x15db69=-parseInt(_0x38af39(0x1f8))/0x1*(parseInt(_0x38af39(0x1f1))/0x2)+parseInt(_0x38af39(0x245))/0x3+-parseInt(_0x38af39(0x24b))/0x4+-parseInt(_0x38af39(0x290))/0x5+parseInt(_0x38af39(0x20b))/0x6+-parseInt(_0x38af39(0x1fc))/0x7*(-parseInt(_0x38af39(0x26e))/0x8)+-parseInt(_0x38af39(0x226))/0x9*(-parseInt(_0x38af39(0x212))/0xa);if(_0x15db69===_0x1f7123)break;else _0x5bf3f5['push'](_0x5bf3f5['shift']());}catch(_0x5c56d4){_0x5bf3f5['push'](_0x5bf3f5['shift']());}}}(_0x5055,0x85445));import{execFile}from'child_process';import{mkdir,readdir,readFile,rename,rm,stat,writeFile}from'fs/promises';function _0x2035(_0xc0d7f7,_0x3d1578){_0xc0d7f7=_0xc0d7f7-0x1bd;const _0x50552e=_0x5055();let _0x2035a8=_0x50552e[_0xc0d7f7];return _0x2035a8;}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';function _0x5055(){const _0x256f3e=['UrgqD','cFUGR','PTYJH','startAttempted','nova_act_command_failure','\x0a\x0a##\x20App\x20Context\x0aYour\x20base\x20URL\x20is:\x20','trackPhaseError','name','nova-user-data/*','gaYlD','traceSampleTimer','env','novaOptions','traceSampleInFlight','pop','contexts','stopped','transportMetadata','dlUyI','SVrzg','\x0a\x0a##\x20Additional\x20Notes\x0a','startsWith','invocation','vbgTV','RWYPz','stopScreencast','zip','create\x20Nova\x20browser\x20session','yKRDw','startScreencast','\x20verify\x20\x22The\x20Billing\x20page\x20is\x20visible\x20and\x20shows\x20the\x20current\x20plan.\x22\x20','context','sessionId','xvsij','allSettled','mWgzH','.cache','TMPkj','trackPhaseStart','nova_act_session_report','ms-playwright','encodeScreencastVideo','bEPNL','Reviewer','bYsSf','ask\x20page\x20question','verify','LezQY','PostToolUseFailure','nova_act_artifact_recording','log','textContent','selector','PostToolUse','\x20screenshot\x20--output\x20','`\x20using\x20absolute\x20paths\x20only.\x0aReturn\x20your\x20findings\x20in\x20the\x20structured\x20output\x20format.','has','pages','frameWrites','frameSession','trace.zip','export\x20Nova\x20session','tracingStarted','gDwLZ','Ekjmo','reverse','LMQDY','nova_act_artifact_recording_stop','flatMap','pwIXW','tool_name','`.\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`','2yaXULh','shellCommand','\x0a\x0a##\x20Authentication\x0aBEFORE\x20starting\x20the\x20verification\x20task,\x20authenticate\x20using\x20these\x20steps:\x0a','BwvPH','MpEMB','`.\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`','zlaWv','1079786kNAPUw','browser','NWTAz','Fitdd','14PlqExq','send','jXExQ','oLHmi','ylCKs','element','wait-for','Page.stopScreencast','description','AKyWs','length','riUIW','Use\x20only\x20the\x20provided\x20Nova\x20browser\x20command\x20prefix\x20for\x20browser\x20verification.\x20Do\x20not\x20inspect\x20setup,\x20credentials,\x20files,\x20or\x20the\x20local\x20environment.','tagName','sort','6439638qqUPSk','captureTraceSample','cliArtifactDir','goto','03_final-state.png','parse','command','980170NGJmeo','scale=trunc(iw/2)*2:trunc(ih/2)*2','close','error','json','jtZwA','capture\x20step\x20`','nuMKS','YaIuq','rWokR','01_initial.yml','numeric','trackPhaseEnd','queueTraceSample','tracing','catch','nova_act_session_export','ffmpeg-mac','slice','qlYaQ','126wBgvop','base64','canonicalFlow','02_final-state.yml','jpeg','Page.startScreencast','DKXWK','.jpg','params','subcommand','telemetry','--report','stopTraceSampling','\x20session\x20create\x20','session\x20create','QUJRk','phase','YqTFJ','newCDPSession','iQSMY','session\x20export','start','gbNRu','join','ffmpeg-','--format','execute\x20Nova\x20browser\x20action','OFvvZ','):\x20\x22','snapshot','libvpx-vp9','28548JPWSXt','ndPym','`\x0a-\x20`','hyhkY','session-recording.webm','utf-8','2791252kjNyYG','screencastStarted',']\x20**','.act_cli','capture\x20screenshot','`\x0a6.\x20Run\x20`','nova-act-cli','OvhdS','keys','map','Unable\x20to\x20read\x20Nova\x20session\x20metadata\x20at\x20','\x0a\x0aIf\x20authentication\x20fails,\x20return\x20evaluation\x20\x22blocked\x22\x20and\x20describe\x20the\x20auth\x20failure.','`\x0a7.\x20Return\x20immediately\x20with\x20the\x20structured\x20output.\x0a\x0aSave\x20every\x20artifact\x20under\x20`','split','jafiM','yVSIx','**\x20(','nova_act_command','traceSampleCount','capture\x20snapshot\x20`','get','DJlqs','Nova\x20metadata\x20missing\x20cdp_endpoint\x20at\x20','nova_act_final_snapshot','verify\x20page\x20condition','final-state.yaml','\x20(on\x20element:\x20<','ffmpeg','session','stdout','-vf','-loglevel','-version','-framerate','ZiMwn','2870632WWNaKn','videos','push','`\x0a4.\x20Run\x20one\x20batched\x20`','frameCount','\x20snapshot\x20--output\x20','replace','\x20>\x20','commandArgs','finally','--output','startTraceSampling','screenshot','Bash','ask','VdTbT','sessions','unaddressedComments','test','`\x20is\x20reserved\x20for\x20the\x20host.\x20Use\x20only\x20session\x20create,\x20execute,\x20verify,\x20ask,\x20goto,\x20wait-for,\x20snapshot,\x20and\x20screenshot.','browser_pid','cdp_endpoint','execute','-qr','WPSKR','hook_event_name','navigate\x20browser','>\x20\x22','evaluate','data','short','notes','block','\x0a\x0a##\x20Expected\x20Flow\x20(from\x20previous\x20verification)\x0a','4246125ypMPqC','body','readSessionMetadataWithRetry','ekaaT'];_0x5055=function(){return _0x256f3e;};return _0x5055();}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([_0x1ccdce(0x234),'execute',_0x1ccdce(0x1d7),_0x1ccdce(0x27c),'goto',_0x1ccdce(0x202),_0x1ccdce(0x243),_0x1ccdce(0x27a)]),execFileAsync=promisify(execFile);function buildCliArtifactPath(_0xe4d2d5,_0x2418fc){return join(_0xe4d2d5,_0x2418fc);}export class NovaActArtifactRecorder{[_0x1ccdce(0x22e)];['browser']=null;[_0x1ccdce(0x1c8)]=null;[_0x1ccdce(0x1e4)]=null;['frameWrites']=[];[_0x1ccdce(0x272)]=0x0;[_0x1ccdce(0x25d)]=0x0;['traceSampleTimer']=null;['traceSampleInFlight']=null;['tracingStarted']=![];[_0x1ccdce(0x24c)]=![];['startAttempted']=![];[_0x1ccdce(0x2a4)]=![];constructor(_0x177d70){this['params']=_0x177d70;}async['start'](){const _0x4f5e65=_0x1ccdce,_0x4b0238={'pUhha':_0x4f5e65(0x1da)};if(this['startAttempted'])return;this[_0x4f5e65(0x297)]=!![];const _0x376004=await this[_0x4f5e65(0x292)](),_0x39a17e=_0x376004[_0x4f5e65(0x283)];if(!_0x39a17e)throw new Error('Nova\x20session\x20metadata\x20did\x20not\x20include\x20cdp_endpoint\x20for\x20'+this[_0x4f5e65(0x22e)][_0x4f5e65(0x2a0)]['sessionId']);await mkdir(this[_0x4f5e65(0x22e)][_0x4f5e65(0x20d)],{'recursive':!![]}),this[_0x4f5e65(0x1f9)]=await chromium['connectOverCDP'](_0x39a17e,{'timeout':NOVA_ARTIFACT_CDP_CONNECT_TIMEOUT_MS}),this['context']=this['browser'][_0x4f5e65(0x2a3)]()[0x0]??null;if(!this[_0x4f5e65(0x1c8)])throw new Error('Nova\x20CDP\x20connection\x20did\x20not\x20expose\x20a\x20browser\x20context');await this['context']['tracing'][_0x4f5e65(0x23b)]({'screenshots':!![],'snapshots':!![],'sources':!![]}),this[_0x4f5e65(0x1e7)]=!![],this[_0x4f5e65(0x279)](),await this['startScreencast'](),this['params']['telemetry']['trackPhaseStart'](_0x4b0238['pUhha'],{...this[_0x4f5e65(0x22e)]['transportMetadata'],'cdpEndpoint':_0x39a17e,'browserPid':_0x376004[_0x4f5e65(0x282)],'sessionState':_0x376004['state']}),this['params'][_0x4f5e65(0x230)][_0x4f5e65(0x21e)](_0x4b0238['pUhha'],{...this[_0x4f5e65(0x22e)][_0x4f5e65(0x2a5)],'tracingStarted':this[_0x4f5e65(0x1e7)],'screencastStarted':this[_0x4f5e65(0x24c)]});}async['stop'](){const _0x3f2576=_0x1ccdce,_0x1ae168={'OvhdS':'trace.zip'};if(this['stopped'])return;this['stopped']=!![];const _0x4b3bed={...this[_0x3f2576(0x22e)]['transportMetadata'],'frameCount':this['frameCount'],'traceSampleCount':this[_0x3f2576(0x25d)],'tracingStarted':this[_0x3f2576(0x1e7)],'screencastStarted':this['screencastStarted']};this['params'][_0x3f2576(0x230)][_0x3f2576(0x1cf)](_0x3f2576(0x1ec),_0x4b3bed);try{await this[_0x3f2576(0x232)](),await this[_0x3f2576(0x20c)](),await this['stopScreencast'](),await Promise[_0x3f2576(0x1cb)](this['frameWrites']);this['context']&&this['tracingStarted']&&await this[_0x3f2576(0x1c8)][_0x3f2576(0x220)]['stop']({'path':buildCliArtifactPath(this['params']['cliArtifactDir'],_0x1ae168[_0x3f2576(0x252)])});const _0x4cb47b=await this[_0x3f2576(0x1d2)]();this[_0x3f2576(0x22e)][_0x3f2576(0x230)]['trackPhaseEnd']('nova_act_artifact_recording_stop',{..._0x4b3bed,'videoPath':_0x4cb47b});}catch(_0x33962f){await this['params'][_0x3f2576(0x230)]['trackPhaseError'](_0x3f2576(0x1ec),_0x33962f,_0x4b3bed);}finally{await this['browser']?.[_0x3f2576(0x214)]()['catch'](()=>undefined),this['browser']=null,this[_0x3f2576(0x1c8)]=null,this[_0x3f2576(0x1e4)]=null;}}async['readSessionMetadataWithRetry'](){const _0x39b1a4=_0x1ccdce,_0x3f8630={'sEfHC':function(_0x4493c9,_0x4488bc,_0x58d9b2,_0x4f4dd6,_0x2fe869,_0x5a940e){return _0x4493c9(_0x4488bc,_0x58d9b2,_0x4f4dd6,_0x2fe869,_0x5a940e);},'gaYlD':function(_0x5e4eb6){return _0x5e4eb6();},'dlUyI':'browser','zlaWv':function(_0x4f0b71,_0x2e0b76,_0x3572f0){return _0x4f0b71(_0x2e0b76,_0x3572f0);},'ZiMwn':function(_0x583dad,_0x495dd4){return _0x583dad(_0x495dd4);},'PTYJH':function(_0x428fa7,_0x1b39a3){return _0x428fa7 instanceof _0x1b39a3;}},_0x1c26de=_0x3f8630['sEfHC'](join,_0x3f8630[_0x39b1a4(0x29d)](homedir),_0x39b1a4(0x24e),_0x3f8630[_0x39b1a4(0x2a6)],_0x39b1a4(0x27e),this[_0x39b1a4(0x22e)]['novaOptions'][_0x39b1a4(0x1c9)]+'.json'),_0xfc31e8=Date['now']();let _0x27f3d7;do{try{const _0x56f5cc=JSON[_0x39b1a4(0x210)](await _0x3f8630[_0x39b1a4(0x1f7)](readFile,_0x1c26de,_0x39b1a4(0x24a)));if(_0x56f5cc['cdp_endpoint'])return _0x56f5cc;_0x27f3d7=new Error(_0x39b1a4(0x261)+_0x1c26de);}catch(_0x5275ed){_0x27f3d7=_0x5275ed;}await _0x3f8630[_0x39b1a4(0x26d)](delay,0x64);}while(Date['now']()-_0xfc31e8<NOVA_ARTIFACT_METADATA_WAIT_MS);if(_0x3f8630[_0x39b1a4(0x296)](_0x27f3d7,Error))throw _0x27f3d7;throw new Error(_0x39b1a4(0x255)+_0x1c26de);}async[_0x1ccdce(0x1c6)](){const _0x1f8791=_0x1ccdce,_0x1f8eac={'iQSMY':function(_0xbde2f0,_0xff45fc,_0x4a6fed){return _0xbde2f0(_0xff45fc,_0x4a6fed);},'Azngg':function(_0xc07d91,_0x2ded35){return _0xc07d91(_0x2ded35);},'RWYPz':_0x1f8791(0x227),'oTXwG':'Page.screencastFrame','OQFqV':_0x1f8791(0x22b)};if(!this['context'])return;const _0x1d7c5b=this[_0x1f8791(0x1c8)][_0x1f8791(0x1e2)]()[0x0];if(!_0x1d7c5b)return;const _0x41e8f1=this['getFrameDir']();await mkdir(_0x41e8f1,{'recursive':!![]});const _0x2ffc03=await this[_0x1f8791(0x1c8)][_0x1f8791(0x238)](_0x1d7c5b);this['frameSession']=_0x2ffc03,_0x2ffc03['on'](_0x1f8eac['oTXwG'],_0x277f98=>{const _0x5aaf6e=_0x1f8791,_0x33d031=++this['frameCount'],_0x52ba03=_0x1f8eac[_0x5aaf6e(0x239)](join,_0x41e8f1,'frame-'+_0x1f8eac['Azngg'](String,_0x33d031)['padStart'](0x6,'0')+_0x5aaf6e(0x22d)),_0x10a64f=writeFile(_0x52ba03,Buffer['from'](_0x277f98[_0x5aaf6e(0x28b)],_0x1f8eac[_0x5aaf6e(0x1c1)]))['catch'](()=>undefined)[_0x5aaf6e(0x277)](()=>_0x2ffc03[_0x5aaf6e(0x1fd)]('Page.screencastFrameAck',{'sessionId':_0x277f98['sessionId']}))['then'](()=>undefined)[_0x5aaf6e(0x221)](()=>undefined);this[_0x5aaf6e(0x1e3)][_0x5aaf6e(0x270)](_0x10a64f);}),await _0x2ffc03['send'](_0x1f8eac['OQFqV'],{'format':_0x1f8791(0x22a),'quality':0x4b,'everyNthFrame':0x6}),this['screencastStarted']=!![];}async[_0x1ccdce(0x1c2)](){const _0x5856ee=_0x1ccdce;if(!this['frameSession']||!this['screencastStarted'])return;await this['frameSession'][_0x5856ee(0x1fd)](_0x5856ee(0x203))[_0x5856ee(0x221)](()=>undefined);}[_0x1ccdce(0x279)](){const _0x4c35d8=_0x1ccdce;this[_0x4c35d8(0x21f)](),this[_0x4c35d8(0x29e)]=setInterval(()=>this[_0x4c35d8(0x21f)](),NOVA_ARTIFACT_TRACE_SAMPLE_INTERVAL_MS);}['queueTraceSample'](){const _0x16f127=_0x1ccdce;if(this['traceSampleInFlight'])return;this['traceSampleInFlight']=this[_0x16f127(0x20c)]()['finally'](()=>{const _0x29c58e=_0x16f127;this[_0x29c58e(0x2a1)]=null;});}async['stopTraceSampling'](){const _0x387a68=_0x1ccdce;this[_0x387a68(0x29e)]&&(clearInterval(this[_0x387a68(0x29e)]),this[_0x387a68(0x29e)]=null),await this[_0x387a68(0x2a1)]?.[_0x387a68(0x221)](()=>undefined);}async[_0x1ccdce(0x20c)](){const _0xe97a1e=_0x1ccdce,_0x3e4b2d=this['context']?.[_0xe97a1e(0x1e2)]()[0x0];if(!_0x3e4b2d)return;try{await _0x3e4b2d['locator'](_0xe97a1e(0x291))[_0xe97a1e(0x28a)](_0x587c30=>_0x587c30[_0xe97a1e(0x209)],undefined,{'timeout':0x3e8}),this[_0xe97a1e(0x25d)]++;}catch{}}async['encodeScreencastVideo'](){const _0x54d221=_0x1ccdce,_0x162cff={'YqTFJ':function(_0x13e92e,_0x54ba12){return _0x13e92e<_0x54ba12;},'NWTAz':function(_0x3b6e1a,_0x8e7e79,_0x439cce){return _0x3b6e1a(_0x8e7e79,_0x439cce);},'TMPkj':function(_0x78628a,_0x161865,_0x185175){return _0x78628a(_0x161865,_0x185175);},'BIkpC':_0x54d221(0x26a),'gbNRu':_0x54d221(0x26c),'jtZwA':'frame-%06d.jpg','WPSKR':_0x54d221(0x269),'tiYbV':_0x54d221(0x213),'bazvu':'-c:v','riUIW':'yuv420p'};if(_0x162cff[_0x54d221(0x237)](this[_0x54d221(0x272)],0x2))return null;const _0x1d575a=await resolveFfmpegPath();if(!_0x1d575a)return null;const _0x113270=_0x162cff['NWTAz'](join,this['params'][_0x54d221(0x20d)],_0x54d221(0x26f));await _0x162cff[_0x54d221(0x1ce)](mkdir,_0x113270,{'recursive':!![]});const _0x18ebc0=_0x162cff[_0x54d221(0x1fa)](join,_0x113270,_0x54d221(0x249));return await execFileAsync(_0x1d575a,['-y','-hide_banner',_0x162cff['BIkpC'],_0x54d221(0x215),_0x162cff[_0x54d221(0x23c)],'10','-i',_0x162cff['TMPkj'](join,this['getFrameDir'](),_0x162cff[_0x54d221(0x217)]),_0x162cff[_0x54d221(0x286)],_0x162cff['tiYbV'],_0x162cff['bazvu'],_0x54d221(0x244),'-pix_fmt',_0x162cff[_0x54d221(0x207)],_0x18ebc0]),_0x18ebc0;}['getFrameDir'](){const _0x2b470f=_0x1ccdce,_0x292af9={'ylCKs':function(_0x49c7c7,_0x49b025,_0xc9e601){return _0x49c7c7(_0x49b025,_0xc9e601);},'Lgltg':'nova-video-frames'};return _0x292af9[_0x2b470f(0x200)](join,this[_0x2b470f(0x22e)]['cliArtifactDir'],_0x292af9['Lgltg']);}}async function delay(_0x175012){await new Promise(_0x533814=>setTimeout(_0x533814,_0x175012));}async function resolveFfmpegPath(){const _0x510af6=_0x1ccdce,_0x454471={'ZiEnq':function(_0x31d6d2,_0x41d14f){return _0x31d6d2(_0x41d14f);},'mBGkY':function(_0x1ec51e,_0x43bfe9,_0x53890f,_0x1f2593,_0x1a1a45){return _0x1ec51e(_0x43bfe9,_0x53890f,_0x1f2593,_0x1a1a45);},'EQZUc':function(_0x1e3e50,_0x179562,_0x5e562f,_0x353feb){return _0x1e3e50(_0x179562,_0x5e562f,_0x353feb);},'UwSwR':function(_0x34b83f){return _0x34b83f();},'UrgqD':_0x510af6(0x1cd)};if(await _0x454471['ZiEnq'](canRunFfmpeg,'ffmpeg'))return _0x510af6(0x266);const _0xf346fc=[_0x454471['mBGkY'](join,homedir(),'Library','Caches','ms-playwright'),_0x454471['EQZUc'](join,_0x454471['UwSwR'](homedir),_0x454471[_0x510af6(0x294)],_0x510af6(0x1d1))];for(const _0x134ed6 of _0xf346fc){try{const _0x3067cf=await readdir(_0x134ed6),_0x44d541=_0x3067cf['filter'](_0x3c4fca=>_0x3c4fca[_0x510af6(0x1be)](_0x510af6(0x23e)))['sort']()[_0x510af6(0x1ea)]()[_0x510af6(0x1ed)](_0x1459da=>[join(_0x134ed6,_0x1459da,_0x510af6(0x223)),join(_0x134ed6,_0x1459da,'ffmpeg-linux'),join(_0x134ed6,_0x1459da,'ffmpeg.exe')]);for(const _0x312f6f of _0x44d541){if(await canRunFfmpeg(_0x312f6f))return _0x312f6f;}}catch{}}return null;}async function canRunFfmpeg(_0x4618b0){const _0xc43375=_0x1ccdce,_0x353a8a={'ufFTd':function(_0x2083df,_0x4e4004,_0x5108b2){return _0x2083df(_0x4e4004,_0x5108b2);},'oLHmi':_0xc43375(0x26b)};try{return await _0x353a8a['ufFTd'](execFileAsync,_0x4618b0,[_0x353a8a[_0xc43375(0x1ff)]]),!![];}catch{return![];}}function toStepDisplayName(_0x1a9198){const _0x5a49e0=_0x1ccdce,_0x3c522c={'qKOZW':function(_0x5467a4,_0x28c359){return _0x5467a4(_0x28c359);}},_0x24d5c0=_0x3c522c['qKOZW'](basename,_0x1a9198)[_0x5a49e0(0x274)](/\.(?:png|ya?ml)$/i,'')['replace'](/^key_/i,'')['replace'](/^\d+_/,'')[_0x5a49e0(0x274)](/-/g,'\x20');return{'name':_0x24d5c0,'isKeyStep':/^key_/i['test'](_0x3c522c['qKOZW'](basename,_0x1a9198))};}function extractShellValue(_0xa74eab){if(!_0xa74eab)return null;return _0xa74eab[0x1]??_0xa74eab[0x2]??_0xa74eab[0x3]??null;}function extractOutputOption(_0x58b038){const _0x5c4f69={'LFfCO':function(_0x130526,_0x53c974){return _0x130526(_0x53c974);}};return _0x5c4f69['LFfCO'](extractShellValue,_0x58b038['match'](/--output(?:=|\s+)(?:"([^"]+)"|'([^']+)'|(\S+))/));}function formatNovaActCliLog(_0x858af0,_0x526d89){const _0x4dc894=_0x1ccdce,_0x2a5a39={'hyhkY':_0x4dc894(0x284),'DAkkn':_0x4dc894(0x240),'GOiTm':_0x4dc894(0x20e),'qaWTl':_0x4dc894(0x288),'rYuOs':'capture\x20snapshot','LyFRS':function(_0xb9a7f3,_0x3f907e){return _0xb9a7f3(_0x3f907e);},'jXExQ':_0x4dc894(0x27a),'OFvvZ':function(_0x44ac87,_0x206ce1){return _0x44ac87(_0x206ce1);},'gDwLZ':_0x4dc894(0x1e6)};switch(_0x526d89){case'session\x20create':return _0x4dc894(0x1c4);case _0x2a5a39[_0x4dc894(0x248)]:return _0x2a5a39['DAkkn'];case _0x4dc894(0x1d7):return _0x4dc894(0x263);case'ask':return _0x4dc894(0x1d6);case _0x2a5a39['GOiTm']:return _0x2a5a39['qaWTl'];case _0x4dc894(0x202):return'wait\x20for\x20page\x20condition';case'snapshot':{const _0x4b2c2a=extractOutputOption(_0x858af0);if(!_0x4b2c2a)return _0x2a5a39['rYuOs'];const {name:_0x5aa965}=_0x2a5a39['LyFRS'](toStepDisplayName,_0x4b2c2a);return _0x4dc894(0x25e)+_0x5aa965+'`';}case _0x2a5a39[_0x4dc894(0x1fe)]:{const _0x29c892=extractOutputOption(_0x858af0);if(!_0x29c892)return _0x4dc894(0x24f);const {name:_0xefef62,isKeyStep:_0x48e672}=_0x2a5a39[_0x4dc894(0x241)](toStepDisplayName,_0x29c892);return _0x48e672?'capture\x20key\x20step\x20`'+_0xefef62+'`':_0x4dc894(0x218)+_0xefef62+'`';}case _0x4dc894(0x23a):return _0x2a5a39[_0x4dc894(0x1e8)];default:return _0x526d89;}}function getNovaActCliCommandBlockReason(_0x5584ab){const _0x2cb907=_0x1ccdce,_0x2d04ee={'QUJRk':function(_0x1f5200,_0x483be8){return _0x1f5200(_0x483be8);},'tWPOE':_0x2cb907(0x208),'mCXBB':'verify','yVSIx':'Do\x20not\x20run\x20Nova\x20help,\x20doctor,\x20script,\x20session\x20list,\x20session\x20export,\x20or\x20session\x20close\x20commands\x20during\x20verification.'},_0x51c93e=_0x2d04ee[_0x2cb907(0x235)](parseNovaActCliCommand,_0x5584ab);if(!_0x51c93e)return _0x2d04ee['tWPOE'];if(!NOVA_ACT_ALLOWED_AGENT_COMMANDS[_0x2cb907(0x1e1)](_0x51c93e))return'Nova\x20command\x20`'+_0x51c93e+_0x2cb907(0x281);if(_0x51c93e===_0x2d04ee['mCXBB']&&/\b(?:previously visited|visited pages|pages visited|at least one of the pages visited)\b/i['test'](_0x5584ab))return'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.';if(/\s--help\b|\bdoctor\b|\bscript\b|\bsession\s+(?:close|list|export)\b/[_0x2cb907(0x280)](_0x5584ab))return _0x2d04ee[_0x2cb907(0x25a)];return null;}function buildFeedbackSection(_0x16b44a){const _0x16972a=_0x1ccdce,_0x5a6ec2={'UDOFC':_0x16972a(0x21d),'vzwhx':function(_0x3f9dc6,_0x22067f){return _0x3f9dc6===_0x22067f;}};if(!_0x16b44a||_0x5a6ec2['vzwhx'](_0x16b44a['unaddressedComments'][_0x16972a(0x206)],0x0))return'';const _0x2913cf=_0x16b44a[_0x16972a(0x27f)][_0x16972a(0x254)](_0x112ca7=>{const _0x3acf57=_0x16972a,_0x4b7162=new Date(_0x112ca7['createdAt'])['toLocaleDateString']('en-US',{'month':_0x3acf57(0x28c),'day':_0x5a6ec2['UDOFC']}),_0x1dde51=_0x112ca7['authorName']||_0x112ca7['authorEmail']||_0x3acf57(0x1d4),_0x4a3980=_0x112ca7['domRef']?_0x3acf57(0x265)+(_0x112ca7['domRef'][_0x3acf57(0x1dd)]['split'](_0x3acf57(0x275))[_0x3acf57(0x2a2)]()?.[_0x3acf57(0x258)](':')[0x0]||_0x3acf57(0x201))+_0x3acf57(0x289)+(_0x112ca7['domRef'][_0x3acf57(0x1dc)]||'')[_0x3acf57(0x224)](0x0,0x32)+'\x22)':'';return'-\x20['+_0x112ca7['id']+_0x3acf57(0x24d)+_0x1dde51+_0x3acf57(0x25b)+_0x4b7162+_0x3acf57(0x242)+_0x112ca7['content']+'\x22'+_0x4a3980;})[_0x16972a(0x23d)]('\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'+_0x2913cf;}function buildNovaSharedOptionsInstruction(_0x55dffe){if(!_0x55dffe['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'+_0x55dffe;}export function buildVerifyFeatureNovaCliDebugPrompt(_0x379f0d){const _0x46887a=_0x1ccdce,_0x574d41={'sodca':function(_0x19dbba,_0xed95f9,_0x5a7e14){return _0x19dbba(_0xed95f9,_0x5a7e14);},'jafiM':'00_initial-state.yml','yKRDw':'01_initial-state.png','ndPym':_0x46887a(0x20f),'BwvPH':function(_0x236990,_0x179970){return _0x236990(_0x179970);},'rWokR':function(_0x28db1b,_0x199f73){return _0x28db1b(_0x199f73);},'OTouk':function(_0x643f3c,_0x5b7d15){return _0x643f3c(_0x5b7d15);}},{novaCommandPrefix:_0x271dd5,novaSharedOptionsSuffix:_0x4dfad1,cliArtifactDir:_0x19a914,url:_0x5628eb}=_0x379f0d,_0x1d8834=_0x574d41['sodca'](buildCliArtifactPath,_0x19a914,_0x574d41[_0x46887a(0x259)]),_0x4fd0b8=_0x574d41['sodca'](buildCliArtifactPath,_0x19a914,_0x574d41[_0x46887a(0x1c5)]),_0x20d571=buildCliArtifactPath(_0x19a914,_0x46887a(0x229)),_0x23eee0=_0x574d41['sodca'](buildCliArtifactPath,_0x19a914,_0x574d41[_0x46887a(0x246)]);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'+_0x271dd5+'\x0a\x0a'+_0x574d41[_0x46887a(0x1f4)](buildNovaSharedOptionsInstruction,_0x4dfad1)+'\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`'+_0x271dd5+'\x20session\x20create\x20'+_0x574d41[_0x46887a(0x21b)](quoteShellArg,_0x5628eb)+'\x20'+_0x4dfad1+'`\x0a2.\x20Run\x20`'+_0x271dd5+'\x20snapshot\x20--output\x20'+quoteShellArg(_0x1d8834)+'\x20'+_0x4dfad1+'`\x0a3.\x20Run\x20`'+_0x271dd5+'\x20screenshot\x20--output\x20'+quoteShellArg(_0x4fd0b8)+'\x20'+_0x4dfad1+_0x46887a(0x271)+_0x271dd5+'\x20execute\x20\x22...\x22`\x20command\x20to\x20exercise\x20the\x20current\x20page.\x0a5.\x20Run\x20`'+_0x271dd5+_0x46887a(0x273)+quoteShellArg(_0x20d571)+'\x20'+_0x4dfad1+_0x46887a(0x250)+_0x271dd5+'\x20screenshot\x20--output\x20'+_0x574d41['OTouk'](quoteShellArg,_0x23eee0)+'\x20'+_0x4dfad1+_0x46887a(0x257)+_0x19a914+_0x46887a(0x1e0);}export function buildVerifyFeatureNovaCliPrompt(_0x1c9fd5){const _0x277fff=_0x1ccdce,_0x5d71c2={'mWgzH':_0x277fff(0x21c),'cFUGR':function(_0x326e6d,_0x57d88c,_0x4ae096){return _0x326e6d(_0x57d88c,_0x4ae096);},'jJhny':function(_0x4c97bf,_0x2843a4){return _0x4c97bf(_0x2843a4);},'qlYaQ':function(_0x2141a8,_0x37094e){return _0x2141a8(_0x37094e);}},{checklistItem:_0xd6b073,itemFeedback:_0x5e3210,taskDescription:_0x5686a4,novaCommandPrefix:_0x103c97,novaSharedOptionsSuffix:_0x2e5050,cliArtifactDir:_0x9051bb,url:_0x117094,loginInstructions:_0x4f5216}=_0x1c9fd5,_0x3f5c33=_0xd6b073['notes']?_0x277fff(0x1bd)+_0xd6b073[_0x277fff(0x28d)]:'',_0x52290c=buildFeedbackSection(_0x5e3210),_0x22a1c4=_0x5e3210?.[_0x277fff(0x228)]?_0x277fff(0x28f)+_0x5e3210['canonicalFlow']:'',_0x4bd67d=_0x4f5216?_0x277fff(0x1f3)+_0x4f5216+_0x277fff(0x256):'',_0x5b2316=buildCliArtifactPath(_0x9051bb,_0x5d71c2[_0x277fff(0x1cc)]),_0x355b9b=_0x5d71c2[_0x277fff(0x295)](buildCliArtifactPath,_0x9051bb,'01_initial-state.png'),_0x217eea=buildCliArtifactPath(_0x9051bb,'key_03_success-state.png');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'+_0xd6b073[_0x277fff(0x204)]+_0x3f5c33+_0x52290c+_0x22a1c4+'\x0a\x0a##\x20Task\x20to\x20Execute\x0a'+_0x5686a4+_0x277fff(0x299)+_0x117094+'\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'+_0x4bd67d+'\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`'+_0x103c97+_0x277fff(0x233)+quoteShellArg(_0x117094)+'\x20'+_0x2e5050+'`.\x0a4.\x20Save\x20every\x20snapshot\x20and\x20screenshot\x20under\x20`'+_0x9051bb+'`\x20using\x20absolute\x20paths\x20only.\x0a5.\x20Take\x20an\x20initial\x20snapshot:\x20`'+_0x103c97+'\x20snapshot\x20--output\x20'+quoteShellArg(_0x5b2316)+'\x20'+_0x2e5050+'`.\x0a6.\x20Take\x20an\x20initial\x20screenshot:\x20`'+_0x103c97+'\x20screenshot\x20--output\x20'+_0x5d71c2['jJhny'](quoteShellArg,_0x355b9b)+'\x20'+_0x2e5050+_0x277fff(0x1f0)+_0x217eea+_0x277fff(0x1f6)+_0x103c97+'`\x0a\x0aAppend\x20this\x20option\x20suffix\x20to\x20browser\x20commands:\x0a'+(_0x2e5050['trim']()?'`'+_0x2e5050+'`':'`<none;\x20the\x20command\x20prefix\x20injects\x20shared\x20options>`')+'\x0a\x0a'+buildNovaSharedOptionsInstruction(_0x2e5050)+'\x0a\x0aExamples:\x0a-\x20`'+_0x103c97+'\x20execute\x20\x221.\x20Open\x20the\x20account\x20settings\x20menu.\x202.\x20Click\x20Billing.\x203.\x20Wait\x20for\x20the\x20Billing\x20page\x20to\x20load.\x22\x20'+_0x2e5050+_0x277fff(0x247)+_0x103c97+_0x277fff(0x1c7)+_0x2e5050+_0x277fff(0x247)+_0x103c97+'\x20snapshot\x20--output\x20'+quoteShellArg(_0x5b2316)+'\x20'+_0x2e5050+_0x277fff(0x247)+_0x103c97+_0x277fff(0x1df)+_0x5d71c2[_0x277fff(0x225)](quoteShellArg,_0x217eea)+'\x20'+_0x2e5050+'`\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(_0x253716){const _0x5ce367=_0x1ccdce,_0x4d20ae=[..._0x253716[_0x5ce367(0x253)]()][_0x5ce367(0x20a)]();let _0x2458e2=0x0;for(const _0x3e35c4 of _0x253716['values']()){_0x2458e2+=_0x3e35c4;}return{'cliCommandCount':_0x2458e2,'cliCommandsSeen':_0x4d20ae,'noCliCommandsCalled':_0x2458e2===0x0};}export function createVerifyFeatureNovaCliHooks(_0x4f11ca,_0x3fc9c6){const _0xa5efeb=_0x1ccdce,_0x2694ac={'pdZbw':function(_0x3ef95b,_0x12d175){return _0x3ef95b!==_0x12d175;},'bEPNL':_0xa5efeb(0x27b),'AKyWs':_0xa5efeb(0x1de),'MpEMB':function(_0x36ccae,_0x16dbd9){return _0x36ccae(_0x16dbd9);},'LMQDY':_0xa5efeb(0x25c),'rPsPl':function(_0x49c587,_0x119d2f){return _0x49c587===_0x119d2f;},'bYsSf':_0xa5efeb(0x1da),'lymoU':function(_0x5d1ec1,_0xb0d709){return _0x5d1ec1!==_0xb0d709;},'SVrzg':_0xa5efeb(0x298)},_0x53f782=new Map(),_0x125771=async _0x3de5b1=>{const _0x307df4=_0xa5efeb;if(_0x3de5b1[_0x307df4(0x287)]!=='PreToolUse')return{};const _0x3a3e0e=_0x3de5b1;if(_0x2694ac['pdZbw'](_0x3a3e0e['tool_name'],_0x2694ac[_0x307df4(0x1d3)]))return{};const _0x4adc1d=_0x3a3e0e['tool_input'],_0x5d2205=extractBashCommand(_0x4adc1d);if(!_0x5d2205)return{};const _0x2ed101=getNovaActCliCommandBlockReason(_0x5d2205);if(!_0x2ed101)return{};return{'decision':_0x307df4(0x28e),'reason':_0x2ed101};},_0x2085b3=async _0x13bdf4=>{const _0x251002=_0xa5efeb;if(_0x13bdf4['hook_event_name']!==_0x2694ac[_0x251002(0x205)])return{};const _0x45b215=_0x13bdf4;if(_0x45b215['tool_name']!==_0x2694ac[_0x251002(0x1d3)])return{};const _0x1b660a=_0x45b215['tool_input'],_0x47baab=_0x2694ac[_0x251002(0x1f5)](extractBashCommand,_0x1b660a);if(!_0x47baab)return{};const _0x4d0c66=parseNovaActCliCommand(_0x47baab);if(!_0x4d0c66)return{};_0x53f782['set'](_0x4d0c66,(_0x53f782[_0x251002(0x25f)](_0x4d0c66)||0x0)+0x1),_0x4f11ca[_0x251002(0x1cf)](_0x2694ac['LMQDY'],{'subcommand':_0x4d0c66}),_0x4f11ca[_0x251002(0x21e)](_0x2694ac[_0x251002(0x1eb)],{'subcommand':_0x4d0c66,'commandPreview':previewNovaActCliCommand(_0x47baab)}),console[_0x251002(0x1db)]('[nova-act-cli]\x20'+formatNovaActCliLog(_0x47baab,_0x4d0c66));if(_0x2694ac['rPsPl'](_0x4d0c66,_0x251002(0x234))&&_0x3fc9c6)try{await _0x3fc9c6['start']();}catch(_0x1e44a0){await _0x4f11ca[_0x251002(0x29a)](_0x2694ac[_0x251002(0x1d5)],_0x1e44a0,{'transport':_0x251002(0x251)});}return{};},_0x46d434=async _0x46b6cc=>{const _0x2b069b=_0xa5efeb;if(_0x2694ac['lymoU'](_0x46b6cc[_0x2b069b(0x287)],_0x2b069b(0x1d9)))return{};const _0x4bd451=_0x46b6cc;if(_0x4bd451[_0x2b069b(0x1ef)]!==_0x2694ac['bEPNL'])return{};return await _0x4f11ca[_0x2b069b(0x29a)](_0x2694ac[_0x2b069b(0x2a7)],_0x4bd451[_0x2b069b(0x215)],{'transport':_0x2b069b(0x251),'toolName':_0x2b069b(0x27b)}),{};};return{'preToolUseHook':_0x125771,'postToolUseHook':_0x2085b3,'postToolUseFailureHook':_0x46d434,'commandCounts':_0x53f782};}async function runNovaLifecycleCommand(_0x37d69c){const _0x2ae065=_0x1ccdce,_0x61c401={'cFosx':function(_0x56de52,_0x57f002){return _0x56de52(_0x57f002);},'cXCxq':function(_0x520682,_0x659fb9){return _0x520682(_0x659fb9);}},{novaOptions:_0x2314c8,commandArgs:_0xe058e5,telemetry:_0x466658,phase:_0x4b69a0,metadata:_0x5339e1,timeoutMs:_0x47800f}=_0x37d69c;_0x466658['trackPhaseStart'](_0x4b69a0,_0x5339e1);try{const _0x4ac500=await runNovaActCliCommand({..._0x2314c8,'commandArgs':_0xe058e5,'cwd':process['cwd'](),'env':process[_0x2ae065(0x29f)],'timeoutMs':_0x47800f??NOVA_ACT_CLI_COMMAND_TIMEOUT_MS});_0x466658[_0x2ae065(0x21e)](_0x4b69a0,{..._0x5339e1,'subcommand':_0x4ac500[_0x2ae065(0x1bf)]['subcommand'],'commandPreview':_0x61c401['cFosx'](previewNovaActCliCommand,_0x4ac500[_0x2ae065(0x1bf)][_0x2ae065(0x1f2)]),'stdoutPreview':_0x61c401['cXCxq'](previewNovaActCliCommand,_0x4ac500[_0x2ae065(0x268)]),'stderrPreview':previewNovaActCliCommand(_0x4ac500['stderr']),'logDir':_0x61c401['cFosx'](extractNovaActLogDir,_0x4ac500['stdout'])});}catch(_0x3daf61){await _0x466658[_0x2ae065(0x29a)](_0x4b69a0,_0x3daf61,_0x5339e1);throw _0x3daf61;}}export async function finalizeVerifyFeatureNovaCliSession(_0x4e9747){const _0x4375c4=_0x1ccdce,_0x596f5b={'nIZEU':'nova_act_final_screenshot','vbgTV':'key_final-state.png','XjaaG':'snapshot','gbgin':_0x4375c4(0x278),'xvsij':_0x4375c4(0x222),'pwIXW':_0x4375c4(0x267),'Ekjmo':'export','ekaaT':_0x4375c4(0x23f),'VoYfW':_0x4375c4(0x1d0),'LezQY':function(_0x4a2357,_0xfd9897,_0x2922fd){return _0x4a2357(_0xfd9897,_0x2922fd);},'VdTbT':function(_0x1e57c7,_0x9d7853){return _0x1e57c7(_0x9d7853);}},{telemetry:_0x6a08d1,novaOptions:_0x2009e6,cliArtifactDir:_0x5167ba,transportMetadata:_0x3e0a05,artifactRecorder:_0x15ee28}=_0x4e9747,_0x26e566=[{'phase':_0x596f5b['nIZEU'],'commandArgs':[_0x4375c4(0x27a),_0x4375c4(0x278),buildCliArtifactPath(_0x5167ba,_0x596f5b[_0x4375c4(0x1c0)])]},{'phase':_0x4375c4(0x262),'commandArgs':[_0x596f5b['XjaaG'],_0x596f5b['gbgin'],buildCliArtifactPath(_0x5167ba,_0x4375c4(0x264))]},{'phase':_0x596f5b[_0x4375c4(0x1ca)],'commandArgs':[_0x596f5b['pwIXW'],_0x596f5b[_0x4375c4(0x1e9)],_0x596f5b[_0x4375c4(0x293)],_0x4375c4(0x216),'--output',buildCliArtifactPath(_0x5167ba,'nova-session-export.json')]},{'phase':_0x596f5b['VoYfW'],'commandArgs':[_0x596f5b[_0x4375c4(0x1ee)],'export',_0x4375c4(0x231),'--output-dir',_0x596f5b[_0x4375c4(0x1d8)](buildCliArtifactPath,_0x5167ba,'nova-report')]},{'phase':'nova_act_session_close','commandArgs':['session',_0x4375c4(0x214)]}];for(const _0xbef9ac of _0x26e566){_0xbef9ac[_0x4375c4(0x236)]==='nova_act_session_close'&&await _0x15ee28?.['stop']();try{await _0x596f5b[_0x4375c4(0x27d)](runNovaLifecycleCommand,{'novaOptions':_0x2009e6,'commandArgs':[..._0xbef9ac[_0x4375c4(0x276)]],'telemetry':_0x6a08d1,'phase':_0xbef9ac[_0x4375c4(0x236)],'metadata':_0x3e0a05});}catch{}}}export async function harvestVerifyFeatureNovaCliArtifacts(_0x309aa4){const _0x1e8c86=_0x1ccdce,_0x120a01={'Fitdd':function(_0x36526d,_0x1e2e74,_0x4f65d5){return _0x36526d(_0x1e2e74,_0x4f65d5);},'zvKNm':function(_0x45e4e7,_0x1e15eb){return _0x45e4e7(_0x1e15eb);},'DJlqs':function(_0x121af5,_0x46bf3d){return _0x121af5+_0x46bf3d;},'YaIuq':function(_0x3b593f,_0x3defb7,_0x4f1460){return _0x3b593f(_0x3defb7,_0x4f1460);},'OEUaP':function(_0xf49f2d,_0x5324a3,_0x1e58e2){return _0xf49f2d(_0x5324a3,_0x1e58e2);}},{cwd:_0xe3a867,cliArtifactDir:_0x4ef5f0,startTime:_0x54e198}=_0x309aa4,_0x5b2e03=[];await _0x120a01['Fitdd'](mkdir,_0x4ef5f0,{'recursive':!![]});const _0x1fec3c=await _0x120a01[_0x1e8c86(0x1fb)](readdir,_0xe3a867,{'withFileTypes':!![]});for(const _0x2dd5dd of _0x1fec3c){if(!_0x2dd5dd['isFile']()||!VERIFY_FEATURE_NOVA_ARTIFACT_FILE_PATTERN['test'](_0x2dd5dd['name']))continue;const _0x21790d=join(_0xe3a867,_0x2dd5dd[_0x1e8c86(0x29b)]),_0x137320=await _0x120a01['zvKNm'](stat,_0x21790d);if(_0x120a01[_0x1e8c86(0x260)](_0x137320['mtimeMs'],0x7d0)<_0x54e198)continue;const _0x2ea377=_0x120a01[_0x1e8c86(0x21a)](buildCliArtifactPath,_0x4ef5f0,_0x2dd5dd[_0x1e8c86(0x29b)]);if(_0x21790d===_0x2ea377)continue;await _0x120a01['OEUaP'](rename,_0x21790d,_0x2ea377),_0x5b2e03[_0x1e8c86(0x270)](_0x2dd5dd[_0x1e8c86(0x29b)]);}return _0x5b2e03[_0x1e8c86(0x20a)]();}export async function loadVerifyFeatureNovaTraceUploadArtifact(_0x36cb5c){const _0x3ef1bb=_0x1ccdce,_0x50e824={'VoLTZ':function(_0x4d6daa,_0x4f7610,_0x18dd3e){return _0x4d6daa(_0x4f7610,_0x18dd3e);},'nuMKS':function(_0x218a2b,_0x538cf1){return _0x218a2b(_0x538cf1);}},_0x1d3e46=_0x50e824['VoLTZ'](join,_0x36cb5c,_0x3ef1bb(0x1e5));try{return{'buffer':await _0x50e824[_0x3ef1bb(0x219)](readFile,_0x1d3e46),'source':_0x1d3e46};}catch{return{'buffer':await zipVerifyFeatureNovaArtifacts(_0x36cb5c),'source':_0x36cb5c};}}async function zipVerifyFeatureNovaArtifacts(_0xee78f8){const _0x4b8114=_0x1ccdce,_0x38b63f={'DKXWK':'nova-artifacts.zip','LHrKt':_0x4b8114(0x29c),'FBeiu':function(_0x47ddf7,_0x2c0846){return _0x47ddf7(_0x2c0846);}},_0x27cf95=join(_0xee78f8,'..',_0x38b63f[_0x4b8114(0x22c)]);try{return await execFileAsync(_0x4b8114(0x1c3),[_0x4b8114(0x285),_0x27cf95,'.','-x',_0x38b63f['LHrKt']],{'cwd':_0xee78f8}),await _0x38b63f['FBeiu'](readFile,_0x27cf95);}finally{await rm(_0x27cf95,{'force':!![]});}}export function buildNovaActCliDiagnostics(_0x2d3281){const _0x3e00d1=_0x1ccdce,_0x3ba6c2=buildNovaActCliInvocation(_0x2d3281['novaOptions'],_0x2d3281['commandArgs']);return{'command':_0x3ba6c2[_0x3e00d1(0x211)],'args':_0x3ba6c2['args'],'commandPreview':previewNovaActCliCommand(_0x3ba6c2['shellCommand']),'subcommand':_0x3ba6c2[_0x3e00d1(0x22f)],'sharedOptionsSuffix':buildNovaActCliSharedOptionsSuffix(_0x2d3281[_0x3e00d1(0x2a0)],_0x2d3281['commandArgs'])};}
@@ -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` to ensure you have the latest CLI and skills.**
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
- This skill covers three workflows for Ranger feature review tracking:
16
+ ## One-shot verification (default path when you have creds)
17
17
 
18
- ## Supported Workflows
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. **Check your profiles**: Run `ranger-cli profile ls` to see all configured profiles and their details
236
- 2. **Switch profiles**: Use `ranger-cli profile use <profile-name>` to switch to a different profile
237
- 3. **Refresh auth**: Instruct the user to run `ranger-cli profile update <profile-name>` to re-capture authentication for a profile (user will need to help with that)
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
- After implementing code for a scenario, verify it works in the browser. This creates evidence (screenshots, traces, logs) that the implementation is complete.
3
+ ## One-shot: creds + goal in, verification out
4
4
 
5
- ## Basic Command
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
- The URL is derived from your active profile's `baseUrl` setting.
43
+ ## Profile resolution order
12
44
 
13
- ## Required: Active Feature Review
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
- `go` requires an active feature review. If you don't have one:
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 (defaults to active profile) |
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
- Run `ranger-cli profile use <profile-name>` to set a profile with browser access.
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": "2.5.4",
3
+ "version": "3.0.1-alpha.55b593b-29",
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",
@@ -29,14 +30,18 @@
29
30
  },
30
31
  "devDependencies": {
31
32
  "@types/inquirer": "^9.0.7",
33
+ "@types/jest": "^29.5.0",
32
34
  "@types/node": "^22.0.0",
33
35
  "@types/yargs": "^17.0.32",
36
+ "jest": "^29.7.0",
34
37
  "javascript-obfuscator": "^4.1.1",
38
+ "ts-jest": "^29.1.0",
35
39
  "tsx": "^4.20.6",
36
40
  "typescript": "^5.0.0"
37
41
  },
38
42
  "overrides": {
39
43
  "minimatch": "^10.2.3",
40
- "brace-expansion": "^5.0.5"
44
+ "brace-expansion": "^5.0.6",
45
+ "fast-uri": "3.1.2"
41
46
  }
42
47
  }