@ranger-testing/ranger-cli 2.5.4-alpha.27e3ee8-11 → 2.5.4-alpha.57338f5-12

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 (81) hide show
  1. package/build/cli.js +1 -1
  2. package/build/commands/addEnv.js +1 -1
  3. package/build/commands/authEncrypt.js +1 -1
  4. package/build/commands/clean.js +1 -1
  5. package/build/commands/config.js +1 -1
  6. package/build/commands/env.js +1 -1
  7. package/build/commands/feature.js +1 -1
  8. package/build/commands/hook.js +1 -1
  9. package/build/commands/hooks/autoPrompt.js +1 -1
  10. package/build/commands/hooks/disable.js +1 -1
  11. package/build/commands/hooks/enable.js +1 -1
  12. package/build/commands/hooks/exitPlanMode.js +1 -1
  13. package/build/commands/hooks/index.js +1 -1
  14. package/build/commands/hooks/output.js +1 -1
  15. package/build/commands/hooks/planReminder.js +1 -1
  16. package/build/commands/hooks/planStart.js +1 -1
  17. package/build/commands/hooks/postEdit.js +1 -1
  18. package/build/commands/hooks/preCompact.js +1 -1
  19. package/build/commands/hooks/sessionEnd.js +1 -1
  20. package/build/commands/hooks/sessionStart.js +1 -1
  21. package/build/commands/hooks/stopHook.js +1 -1
  22. package/build/commands/index.js +1 -1
  23. package/build/commands/login.js +1 -1
  24. package/build/commands/mcpBootstrap.js +1 -1
  25. package/build/commands/migrateProfile.js +1 -1
  26. package/build/commands/setup/claude.js +1 -1
  27. package/build/commands/setup/opencode.js +1 -1
  28. package/build/commands/setupCi.js +1 -1
  29. package/build/commands/skillup.js +1 -1
  30. package/build/commands/start.js +1 -1
  31. package/build/commands/status.js +1 -1
  32. package/build/commands/update.js +1 -1
  33. package/build/commands/updateEnv.js +1 -1
  34. package/build/commands/useEnv.js +1 -1
  35. package/build/commands/utils/activeProfile.js +1 -1
  36. package/build/commands/utils/agentEnv.js +1 -1
  37. package/build/commands/utils/browserSessionsApi.js +1 -1
  38. package/build/commands/utils/claudeConfig.js +1 -1
  39. package/build/commands/utils/claudeOverrideSettings.js +1 -1
  40. package/build/commands/utils/claudePlugin.js +1 -1
  41. package/build/commands/utils/cloudProfile.js +1 -1
  42. package/build/commands/utils/cloudProfileSession.js +1 -1
  43. package/build/commands/utils/crypto.js +1 -1
  44. package/build/commands/utils/desirePathLog.js +1 -1
  45. package/build/commands/utils/deviceAuth.js +1 -1
  46. package/build/commands/utils/environment.js +1 -1
  47. package/build/commands/utils/featureApi.js +1 -1
  48. package/build/commands/utils/fixWebmDuration.js +1 -1
  49. package/build/commands/utils/gitTracked.js +1 -1
  50. package/build/commands/utils/keychain.js +1 -1
  51. package/build/commands/utils/legacyWarning.js +1 -0
  52. package/build/commands/utils/localAgentInstallationsApi.js +1 -1
  53. package/build/commands/utils/matchAuthEnvironment.js +1 -1
  54. package/build/commands/utils/mcpImageBase64.js +1 -1
  55. package/build/commands/utils/model.js +1 -1
  56. package/build/commands/utils/opencodeConfig.js +1 -1
  57. package/build/commands/utils/playwrightCli.js +1 -1
  58. package/build/commands/utils/profileMessages.js +1 -1
  59. package/build/commands/utils/profileSetupBanner.js +1 -1
  60. package/build/commands/utils/projectsConfig.js +1 -1
  61. package/build/commands/utils/rangerConfig.js +1 -1
  62. package/build/commands/utils/rangerRoot.js +1 -1
  63. package/build/commands/utils/resolveProfileContext.js +1 -1
  64. package/build/commands/utils/resolveProfileUrl.js +1 -1
  65. package/build/commands/utils/retry.js +1 -1
  66. package/build/commands/utils/sessionCache.js +1 -1
  67. package/build/commands/utils/settings.js +1 -1
  68. package/build/commands/utils/skillContent.js +1 -1
  69. package/build/commands/utils/skills.js +1 -1
  70. package/build/commands/utils/stitchWebmFiles.js +1 -1
  71. package/build/commands/utils/telemetry.js +1 -1
  72. package/build/commands/utils/tokenRefresh.js +1 -1
  73. package/build/commands/utils/traceSnapshotMapper.js +1 -1
  74. package/build/commands/utils/userApi.js +1 -1
  75. package/build/commands/utils/version.js +1 -1
  76. package/build/commands/verifyFeature.js +1 -1
  77. package/build/commands/verifyFeatureCli.js +1 -1
  78. package/build/skills/ranger/SKILL.md +13 -7
  79. package/build/skills/ranger/create.md +16 -3
  80. package/build/skills/ranger/verify.md +23 -10
  81. package/package.json +1 -1
@@ -1 +1 @@
1
- function _0x3113(_0x3e3c53,_0x53fa0b){_0x3e3c53=_0x3e3c53-0x10a;const _0x58185d=_0x5818();let _0x31133d=_0x58185d[_0x3e3c53];return _0x31133d;}(function(_0x2b303a,_0x1b08a4){const _0x4ea188=_0x3113,_0x1e70da=_0x2b303a();while(!![]){try{const _0x75fa45=-parseInt(_0x4ea188(0x135))/0x1+-parseInt(_0x4ea188(0x141))/0x2*(-parseInt(_0x4ea188(0x161))/0x3)+-parseInt(_0x4ea188(0x142))/0x4*(parseInt(_0x4ea188(0x140))/0x5)+parseInt(_0x4ea188(0x16c))/0x6*(-parseInt(_0x4ea188(0x181))/0x7)+parseInt(_0x4ea188(0x132))/0x8+-parseInt(_0x4ea188(0x194))/0x9+parseInt(_0x4ea188(0x189))/0xa*(parseInt(_0x4ea188(0x185))/0xb);if(_0x75fa45===_0x1b08a4)break;else _0x1e70da['push'](_0x1e70da['shift']());}catch(_0x4542d4){_0x1e70da['push'](_0x1e70da['shift']());}}}(_0x5818,0x9bdea));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(_0x57b73b,_0x451484=PLAYWRIGHT_CLI_PREVIEW_LIMIT){const _0xabe00a=_0x3113,_0x11532f={'frSjC':function(_0x1fa18e,_0x48ce3a){return _0x1fa18e>_0x48ce3a;},'yNqgy':function(_0x436078,_0x305680){return _0x436078+_0x305680;},'JpDrD':_0xabe00a(0x115)};return _0x11532f[_0xabe00a(0x13e)](_0x57b73b['length'],_0x451484)?_0x11532f[_0xabe00a(0x12e)](_0x57b73b['slice'](0x0,_0x451484),_0x11532f[_0xabe00a(0x160)]):_0x57b73b;}function buildCliArtifactPath(_0x41a81c,_0x38058d){const _0x2a30d9={'fAHHh':function(_0x29ac1a,_0x45e808,_0x4325bf){return _0x29ac1a(_0x45e808,_0x4325bf);}};return _0x2a30d9['fAHHh'](join,_0x41a81c,_0x38058d);}function toStepDisplayName(_0x43c644){const _0x15fcc0=_0x3113,_0x13e9f3=basename(_0x43c644)['replace'](/\.(?:png|ya?ml)$/i,'')['replace'](/^key_/i,'')['replace'](/^\d+_/,'')[_0x15fcc0(0x113)](/-/g,'\x20');return{'name':_0x13e9f3,'isKeyStep':/^key_/i[_0x15fcc0(0x184)](basename(_0x43c644))};}function extractShellValue(_0xf85638){if(!_0xf85638)return null;return _0xf85638[0x1]??_0xf85638[0x2]??_0xf85638[0x3]??null;}function extractFilenameOption(_0x1d5997){const _0x27f79b=_0x3113,_0x2a5a95={'BRRgi':function(_0xbd5f0a,_0x11f8d7){return _0xbd5f0a(_0x11f8d7);}};return _0x2a5a95['BRRgi'](extractShellValue,_0x1d5997[_0x27f79b(0x11c)](/--filename(?:=|\s+)(?:"([^"]+)"|'([^']+)'|(\S+))/));}function extractFirstCommandArgument(_0x3f5a48,_0x109cc6){const _0x29e90f=_0x3113,_0x5bb579={'ewnMl':'\x5c$&'},_0x2a591d=_0x109cc6[_0x29e90f(0x113)](/[.*+?^${}()|[\]\\]/g,_0x5bb579[_0x29e90f(0x120)]);return extractShellValue(_0x3f5a48[_0x29e90f(0x11c)](new RegExp('(?:^|\x5cs)'+_0x2a591d+'(?:\x5cs+(?:\x22([^\x22]+)\x22|\x27([^\x27]+)\x27|(\x5cS+)))')));}function formatCommandTarget(_0x33a450){const _0x4929d6=_0x3113,_0x3d911f={'WlUuJ':_0x4929d6(0x11d),'kyHkj':function(_0x2ddd37,_0x47b7f3,_0x49b86e){return _0x2ddd37(_0x47b7f3,_0x49b86e);}};if(!_0x33a450)return _0x3d911f[_0x4929d6(0x172)];if(/^e\d+$/i[_0x4929d6(0x184)](_0x33a450))return _0x4929d6(0x169)+_0x33a450;return JSON[_0x4929d6(0x179)](_0x3d911f[_0x4929d6(0x149)](truncatePreview,_0x33a450,0x78));}function formatPlaywrightCliLog(_0x3eac7b,_0x5385c2){const _0x9a6938=_0x3113,_0x26f5b2={'UxKkV':function(_0xabdb8b,_0xcce35c,_0x297915){return _0xabdb8b(_0xcce35c,_0x297915);},'cclGB':_0x9a6938(0x131),'Wxvuy':_0x9a6938(0x15d),'LURIn':'tracing-stop','mtgwW':'video-start','KrlMb':_0x9a6938(0x10a),'pqnSW':_0x9a6938(0x168),'yJQzj':function(_0x25c33e,_0x5a0fde){return _0x25c33e(_0x5a0fde);},'Amqfv':_0x9a6938(0x190),'klmmi':_0x9a6938(0x122),'uKydz':'fill','lzpkP':function(_0xde73b,_0x20150c){return _0xde73b(_0x20150c);},'tCKiq':_0x9a6938(0x18a),'cvRTU':'tab-new'};switch(_0x5385c2){case _0x9a6938(0x112):{const _0x2d7ce8=_0x26f5b2['UxKkV'](extractFirstCommandArgument,_0x3eac7b,_0x5385c2);return _0x2d7ce8?_0x9a6938(0x110)+_0x2d7ce8:_0x26f5b2['cclGB'];}case'tracing-start':return _0x26f5b2[_0x9a6938(0x193)];case _0x26f5b2['LURIn']:return'stop\x20tracing';case _0x26f5b2['mtgwW']:return _0x26f5b2[_0x9a6938(0x14f)];case _0x26f5b2['pqnSW']:return'stop\x20video\x20recording';case _0x9a6938(0x10b):{const _0x3d4c1c=_0x26f5b2[_0x9a6938(0x12f)](extractFilenameOption,_0x3eac7b);if(!_0x3d4c1c)return _0x9a6938(0x145);const {name:_0x4a0ca9}=_0x26f5b2['yJQzj'](toStepDisplayName,_0x3d4c1c);return'capture\x20snapshot\x20`'+_0x4a0ca9+'`';}case _0x26f5b2['Amqfv']:{const _0x398139=_0x26f5b2[_0x9a6938(0x12f)](extractFilenameOption,_0x3eac7b);if(!_0x398139)return _0x9a6938(0x18d);const {name:_0x1bfc9e,isKeyStep:_0x66c2de}=_0x26f5b2[_0x9a6938(0x12f)](toStepDisplayName,_0x398139);return _0x66c2de?'capture\x20key\x20step\x20`'+_0x1bfc9e+'`':_0x9a6938(0x19a)+_0x1bfc9e+'`';}case _0x26f5b2['klmmi']:return _0x9a6938(0x144)+formatCommandTarget(extractFirstCommandArgument(_0x3eac7b,_0x5385c2));case _0x9a6938(0x175):return'check\x20'+_0x26f5b2[_0x9a6938(0x12f)](formatCommandTarget,_0x26f5b2[_0x9a6938(0x15b)](extractFirstCommandArgument,_0x3eac7b,_0x5385c2));case _0x26f5b2[_0x9a6938(0x13f)]:return'fill\x20'+_0x26f5b2['lzpkP'](formatCommandTarget,_0x26f5b2[_0x9a6938(0x15b)](extractFirstCommandArgument,_0x3eac7b,_0x5385c2));case _0x26f5b2[_0x9a6938(0x118)]:return'press\x20'+formatCommandTarget(extractFirstCommandArgument(_0x3eac7b,_0x5385c2));case _0x9a6938(0x15c):return'run\x20custom\x20Playwright\x20code';case _0x26f5b2[_0x9a6938(0x15f)]:{const _0x4f28f6=extractFirstCommandArgument(_0x3eac7b,_0x5385c2);return _0x4f28f6?'open\x20new\x20tab\x20'+_0x4f28f6:_0x9a6938(0x174);}case'tab-select':{const _0x45350d=_0x26f5b2['UxKkV'](extractFirstCommandArgument,_0x3eac7b,_0x5385c2);return _0x45350d?_0x9a6938(0x126)+_0x45350d:'select\x20tab';}default:return _0x5385c2;}}function extractPlaywrightCliToolDescription(_0x1fb20a){const _0xc3a455=_0x3113,_0xf606e={'MPWHW':_0xc3a455(0x18e),'ujhAl':function(_0x29f925,_0xbd71d5){return _0x29f925>_0xbd71d5;}},_0x499159=_0x1fb20a['description'];if(typeof _0x499159!==_0xf606e['MPWHW'])return null;const _0x8fc188=_0x499159['trim']()[_0xc3a455(0x113)](/\s+/g,'\x20');return _0xf606e['ujhAl'](_0x8fc188['length'],0x0)?_0x8fc188:null;}export function formatPlaywrightCliConsoleLogMessage(_0x1edf08,_0x6aa19c,_0x4586b8){const _0x1a1c0e=_0x3113,_0x4aeb78={'BfTdW':function(_0x1ecda4,_0x47c4a1,_0x1588dc){return _0x1ecda4(_0x47c4a1,_0x1588dc);}},_0x331cc1=_0x4aeb78['BfTdW'](formatPlaywrightCliLog,_0x6aa19c,_0x4586b8),_0x9ea6ab=extractPlaywrightCliToolDescription(_0x1edf08);if(!_0x9ea6ab)return'[playwright-cli]\x20'+_0x331cc1;if(process[_0x1a1c0e(0x11e)][_0x1a1c0e(0x10c)])return _0x1a1c0e(0x195)+_0x9ea6ab+'\x20('+_0x331cc1+')';return'[ranger-verification-agent]\x20'+_0x9ea6ab;}export function buildVerifyFeatureCliDebugPrompt(_0xee13e1,_0x4bb5da){const _0x327ad3=_0x3113,_0x5f2112={'VrpzH':function(_0x1937a3,_0xc56c72,_0x4c3638){return _0x1937a3(_0xc56c72,_0x4c3638);},'WjPIu':'00_mozilla-homepage.yml','Mlceo':'03_learn-more.png','TAmuf':function(_0x59be03,_0x196c75){return _0x59be03(_0x196c75);}},_0x552e82=_0x5f2112['VrpzH'](buildCliArtifactPath,_0x4bb5da,_0x5f2112[_0x327ad3(0x177)]),_0x12b399=_0x5f2112[_0x327ad3(0x156)](buildCliArtifactPath,_0x4bb5da,'01_mozilla-homepage.png'),_0x3ab7dd=buildCliArtifactPath(_0x4bb5da,'02_learn-more.yml'),_0x21829a=buildCliArtifactPath(_0x4bb5da,_0x5f2112['Mlceo']),_0x1089ac=quoteShellArg(_0x552e82),_0x37b4dc=quoteShellArg(_0x12b399),_0x21dec8=quoteShellArg(_0x3ab7dd),_0x55e5d3=_0x5f2112[_0x327ad3(0x196)](quoteShellArg,_0x21829a);return'You\x20are\x20testing\x20browser\x20automation.\x20Your\x20task\x20is\x20simple:\x0a\x0aUse\x20Bash\x20and\x20Playwright\x20CLI\x20only.\x20The\x20browser\x20command\x20prefix\x20is:\x0a'+_0xee13e1+_0x327ad3(0x17a)+_0xee13e1+'\x20open\x20https://www.mozilla.org`\x0a2.\x20Run\x20`'+_0xee13e1+'\x20tracing-start`\x0a3.\x20Run\x20`'+_0xee13e1+_0x327ad3(0x19b)+_0x4bb5da+'`\x20using\x20absolute\x20paths\x20only.\x20Do\x20not\x20use\x20relative\x20filenames.\x0a5.\x20Run\x20`'+_0xee13e1+_0x327ad3(0x16e)+_0x1089ac+_0x327ad3(0x17b)+_0xee13e1+'\x20screenshot\x20--filename\x20'+_0x37b4dc+_0x327ad3(0x139)+_0xee13e1+'\x20snapshot\x20--filename\x20'+_0x21dec8+_0x327ad3(0x13b)+_0xee13e1+_0x327ad3(0x178)+_0x55e5d3+_0x327ad3(0x183);}export function buildVerifyFeatureCliPrompt(_0x439f47){const _0x405dff=_0x3113,_0x4fca67={'xjVVc':_0x405dff(0x134),'jtoos':_0x405dff(0x10f),'olqmJ':function(_0xc54d03,_0x4e929f,_0x59b0dd){return _0xc54d03(_0x4e929f,_0x59b0dd);},'hxnaq':'01_initial.yml','rwZVP':_0x405dff(0x10d),'VvmcE':'01_initial-state.png','cFtJA':function(_0x342076,_0x27a2de){return _0x342076(_0x27a2de);},'LcBIe':function(_0x1c3596,_0x4b32b2){return _0x1c3596>_0x4b32b2;},'wJVlr':function(_0x3c5bdf,_0x170fbf,_0x5ad2e4){return _0x3c5bdf(_0x170fbf,_0x5ad2e4);}},{checklistItem:_0x4ad9ae,itemFeedback:_0x4bdb60,taskDescription:_0x66a05e,cliCommandPrefix:_0x497b5b,cliArtifactDir:_0x4d53ef,isCdpMode:_0x3fd2cb,url:_0x3a9dda,cdpEndpoint:_0x29d420,loginInstructions:_0x3fba52}=_0x439f47,_0x32aba3=_0x4fca67[_0x405dff(0x16b)](buildCliArtifactPath,_0x4d53ef,_0x4fca67[_0x405dff(0x15a)]),_0x51dae1=_0x4fca67['olqmJ'](buildCliArtifactPath,_0x4d53ef,_0x405dff(0x173)),_0x1d2059=_0x4fca67['olqmJ'](buildCliArtifactPath,_0x4d53ef,_0x4fca67['rwZVP']),_0x5a842b=buildCliArtifactPath(_0x4d53ef,_0x4fca67[_0x405dff(0x111)]),_0x2ebed9=quoteShellArg(_0x32aba3),_0x37b4ac=_0x4fca67[_0x405dff(0x11a)](quoteShellArg,_0x51dae1),_0x2b3c5a=quoteShellArg(_0x1d2059),_0x2ad33e=quoteShellArg(_0x5a842b),_0x5773c6=_0x4ad9ae['notes']?_0x405dff(0x12b)+_0x4ad9ae['notes']:'';let _0x28a97c='';if(_0x4bdb60&&_0x4fca67['LcBIe'](_0x4bdb60['unaddressedComments'][_0x405dff(0x147)],0x0)){const _0x7d36d7=_0x4bdb60[_0x405dff(0x153)][_0x405dff(0x121)](_0x501b61=>{const _0x40cc89=_0x405dff,_0x26eacd=new Date(_0x501b61[_0x40cc89(0x186)])['toLocaleDateString'](_0x40cc89(0x11f),{'month':_0x4fca67['xjVVc'],'day':_0x4fca67[_0x40cc89(0x199)]}),_0x3ca3ed=_0x501b61[_0x40cc89(0x148)]||_0x501b61[_0x40cc89(0x125)]||_0x40cc89(0x159),_0x1cd644=_0x501b61[_0x40cc89(0x157)]?'\x20(on\x20element:\x20<'+(_0x501b61['domRef']['selector'][_0x40cc89(0x171)](_0x40cc89(0x18c))['pop']()?.['split'](':')[0x0]||_0x40cc89(0x152))+_0x40cc89(0x180)+(_0x501b61[_0x40cc89(0x157)]['textContent']||'')[_0x40cc89(0x17d)](0x0,0x32)+'\x22)':'';return'-\x20['+_0x501b61['id']+_0x40cc89(0x187)+_0x3ca3ed+'**\x20('+_0x26eacd+'):\x20\x22'+_0x501b61['content']+'\x22'+_0x1cd644;})[_0x405dff(0x17c)]('\x0a');_0x28a97c='\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'+_0x7d36d7;}const _0x35d157=_0x4bdb60?.[_0x405dff(0x166)]?_0x405dff(0x154)+_0x4bdb60['canonicalFlow']:'',_0x2d413f=_0x3fd2cb?_0x405dff(0x16f)+_0x29d420+_0x405dff(0x18b):'CRITICAL\x20URL\x20REQUIREMENT:\x0aYour\x20base\x20URL\x20is:\x20'+_0x3a9dda+_0x405dff(0x114),_0x5d7fd9=_0x3a9dda?_0x4fca67['cFtJA'](quoteShellArg,_0x3a9dda):'',_0x3838ff=_0x3fd2cb?_0x405dff(0x129)+_0x497b5b+_0x405dff(0x158)+_0x497b5b+'\x20tracing-start`,\x20then\x20`'+_0x497b5b+'\x20video-start`.\x0a3.\x20Save\x20every\x20snapshot\x20and\x20screenshot\x20under\x20`'+_0x4d53ef+'`\x20using\x20absolute\x20paths\x20only.\x20Do\x20not\x20use\x20relative\x20filenames.\x0a4.\x20Take\x20a\x20snapshot\x20with\x20`'+_0x497b5b+_0x405dff(0x16e)+_0x2ebed9+'`\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`'+_0x497b5b+_0x405dff(0x178)+_0x2ad33e+'`\x20style\x20absolute\x20paths\x20at\x20key\x20moments.\x0a6.\x20If\x20you\x20need\x20waits\x20or\x20custom\x20assertions,\x20use\x20`'+_0x497b5b+'\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':_0x405dff(0x129)+_0x497b5b+'\x20open\x20'+_0x5d7fd9+'`,\x20then\x20`'+_0x497b5b+_0x405dff(0x116)+_0x497b5b+'\x20video-start`.\x0a3.\x20Save\x20every\x20snapshot\x20and\x20screenshot\x20under\x20`'+_0x4d53ef+'`\x20using\x20absolute\x20paths\x20only.\x20Do\x20not\x20use\x20relative\x20filenames.\x0a4.\x20Take\x20a\x20snapshot\x20with\x20`'+_0x497b5b+_0x405dff(0x16e)+_0x2ebed9+'`\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`'+_0x497b5b+'\x20screenshot\x20--filename\x20'+_0x2ad33e+'`\x20style\x20absolute\x20paths\x20at\x20key\x20moments.\x0a8.\x20If\x20you\x20need\x20waits\x20or\x20custom\x20assertions,\x20use\x20`'+_0x497b5b+'\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',_0x38fbed=_0x3fd2cb?'\x0a\x0a##\x20Critical:\x20Early\x20Error\x20Detection\x0aAfter\x20taking\x20the\x20initial\x20snapshot,\x20IMMEDIATELY\x20check\x20for\x20blocking\x20errors:\x0a\x0a**Blocking\x20errors\x20to\x20detect:**\x0a-\x20Crash\x20or\x20error\x20dialogs\x20(\x22An\x20error\x20occurred\x22,\x20\x22Something\x20went\x20wrong\x22,\x20unhandled\x20exception\x20messages)\x0a-\x20Blank\x20or\x20empty\x20window\x20with\x20no\x20rendered\x20content\x0a-\x20Framework\x20error\x20boundaries\x20(React\x20error\x20page,\x20Electron\x20crash\x20reporter)\x0a-\x20Unresponsive\x20or\x20frozen\x20UI\x20(no\x20interactive\x20elements\x20in\x20snapshot)\x0a\x0a**If\x20ANY\x20blocking\x20error\x20is\x20detected:**\x0a1.\x20DO\x20NOT\x20continue\x20with\x20the\x20task\x0a2.\x20Return\x20IMMEDIATELY\x20with\x20evaluation:\x20\x22blocked\x22\x0a3.\x20Set\x20evaluationReason\x20to\x20describe\x20the\x20specific\x20error\x20(e.g.,\x20\x22App\x20crashed\x20—\x20error\x20dialog\x20visible\x20on\x20launch\x22)\x0a4.\x20Include\x20the\x20error\x20in\x20issues\x20array\x20with\x20severity:\x20\x22BLOCKER\x22\x20and\x20type:\x20\x22APP_ERROR\x22\x0a\x0aThis\x20early\x20exit\x20prevents\x20wasting\x20time\x20on\x20tasks\x20that\x20cannot\x20succeed\x20due\x20to\x20fundamental\x20errors.':'\x0a\x0a##\x20Critical:\x20Early\x20Error\x20Detection\x0aAfter\x20step\x202\x20(taking\x20initial\x20snapshot),\x20IMMEDIATELY\x20check\x20for\x20blocking\x20HTTP\x20errors:\x0a\x0a**Blocking\x20errors\x20to\x20detect:**\x0a-\x20HTTP\x20404:\x20\x22404\x22,\x20\x22Not\x20Found\x22,\x20\x22Page\x20not\x20found\x22,\x20\x22does\x20not\x20exist\x22\x0a-\x20HTTP\x20500:\x20\x22500\x22,\x20\x22Internal\x20Server\x20Error\x22,\x20\x22Server\x20Error\x22,\x20\x22Something\x20went\x20wrong\x22\x0a-\x20HTTP\x20400:\x20\x22400\x22,\x20\x22Bad\x20Request\x22,\x20\x22Invalid\x20request\x22\x0a\x0a**Also\x20check\x20for:**\x0a-\x20Framework\x20error\x20pages\x20(Next.js\x20error\x20boundary,\x20React\x20error\x20page,\x20\x22Application\x20error\x22)\x0a-\x20Completely\x20blank/empty\x20pages\x20with\x20no\x20content\x0a-\x20\x22Cannot\x20GET\x20/path\x22\x20messages\x0a\x0a**If\x20ANY\x20blocking\x20error\x20is\x20detected:**\x0a1.\x20DO\x20NOT\x20continue\x20with\x20the\x20task\x0a2.\x20Return\x20IMMEDIATELY\x20with\x20evaluation:\x20\x22blocked\x22\x0a3.\x20Set\x20evaluationReason\x20to\x20describe\x20the\x20specific\x20error\x20(e.g.,\x20\x22HTTP\x20404\x20-\x20Page\x20not\x20found\x20at\x20/dashboard\x22)\x0a4.\x20Include\x20the\x20error\x20in\x20issues\x20array\x20with\x20severity:\x20\x22BLOCKER\x22\x20and\x20appropriate\x20type\x20(HTTP_404,\x20HTTP_500,\x20HTTP_400,\x20or\x20NAVIGATION_ERROR)\x0a\x0aThis\x20early\x20exit\x20prevents\x20wasting\x20time\x20on\x20tasks\x20that\x20cannot\x20succeed\x20due\x20to\x20fundamental\x20errors.',_0x2710ed=_0x3fba52?'\x0a\x0a##\x20Authentication\x0aBEFORE\x20starting\x20the\x20verification\x20task,\x20you\x20MUST\x20authenticate\x20using\x20these\x20steps:\x0a'+_0x3fba52+'\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 _0x405dff(0x13a)+_0x4ad9ae[_0x405dff(0x128)]+_0x5773c6+_0x28a97c+_0x35d157+_0x405dff(0x163)+_0x66a05e+'\x0a\x0a'+_0x2d413f+_0x2710ed+'\x0a\x0a'+_0x3838ff+'\x0a\x0a##\x20Browser\x20Command\x20Reference\x0aUse\x20Bash\x20to\x20run\x20Playwright\x20CLI\x20commands\x20with\x20this\x20exact\x20prefix:\x0a`'+_0x497b5b+_0x405dff(0x146)+_0x4d53ef+_0x405dff(0x176)+_0x37b4ac+'`\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'+_0x2b3c5a+_0x405dff(0x16a)+_0x4d53ef+_0x405dff(0x11b)+_0x5a842b+'\x22,\x20\x22'+_0x4fca67['olqmJ'](buildCliArtifactPath,_0x4d53ef,'02_button-clicked.png')+_0x405dff(0x13c)+_0x4fca67['wJVlr'](buildCliArtifactPath,_0x4d53ef,_0x405dff(0x123))+_0x405dff(0x191)+_0x4fca67['olqmJ'](buildCliArtifactPath,_0x4d53ef,'key_04_success-state.png')+_0x405dff(0x167)+_0x38fbed+_0x405dff(0x198);}export function summarizeVerifyFeatureCliCommandAvailability(_0x5b702a){const _0x3ba2b9=_0x3113,_0x51409d=[..._0x5b702a[_0x3ba2b9(0x137)]()]['sort']();let _0x2f61f3=0x0;for(const _0x57f675 of _0x5b702a[_0x3ba2b9(0x18f)]()){_0x2f61f3+=_0x57f675;}return{'cliCommandCount':_0x2f61f3,'cliCommandsSeen':_0x51409d,'noCliCommandsCalled':_0x2f61f3===0x0};}export function createVerifyFeatureCliHooks(_0x4633d6){const _0x49ffc1=_0x3113,_0x3de183={'ESvUA':function(_0x5d8a3d,_0x37419a){return _0x5d8a3d!==_0x37419a;},'CReTV':function(_0x499ac3,_0x1ca776){return _0x499ac3!==_0x1ca776;},'mwhUt':function(_0x5552e5,_0x3e1c46){return _0x5552e5+_0x3e1c46;},'eWdqI':_0x49ffc1(0x138),'iHBTg':_0x49ffc1(0x17e),'EyJDD':function(_0x31922f,_0x503319){return _0x31922f!==_0x503319;},'VYJrw':function(_0x49b3d6,_0x23be01,_0x293446,_0x55530d){return _0x49b3d6(_0x23be01,_0x293446,_0x55530d);},'qDvRS':'Bash'},_0x2e40b4=new Map(),_0x5ad3bf=async _0x45b163=>{const _0x3f8303=_0x49ffc1;if(_0x3de183[_0x3f8303(0x130)](_0x45b163[_0x3f8303(0x197)],'PostToolUse'))return{};const _0x3e4039=_0x45b163;if(_0x3de183['CReTV'](_0x3e4039[_0x3f8303(0x10e)],_0x3f8303(0x14b)))return{};const _0x17b870=_0x3e4039['tool_input'],_0x424594=extractBashCommand(_0x17b870);if(!_0x424594)return{};const _0x5d1df1=parsePlaywrightCliCommand(_0x424594);if(!_0x5d1df1)return{};return _0x2e40b4[_0x3f8303(0x150)](_0x5d1df1,_0x3de183['mwhUt'](_0x2e40b4[_0x3f8303(0x117)](_0x5d1df1)||0x0,0x1)),_0x4633d6[_0x3f8303(0x15e)]('tool_call',{'transport':_0x3de183[_0x3f8303(0x14e)],'toolName':_0x5d1df1}),_0x4633d6[_0x3f8303(0x12d)](_0x3de183['iHBTg'],{'transport':_0x3de183[_0x3f8303(0x14e)],'toolName':_0x5d1df1,'bashCommandPreview':truncatePreview(_0x424594)}),_0x3de183['EyJDD'](_0x5d1df1,'snapshot')&&console['log'](_0x3de183['VYJrw'](formatPlaywrightCliConsoleLogMessage,_0x17b870,_0x424594,_0x5d1df1)),{};},_0x3c14e4=async _0x576ac8=>{const _0x463a93=_0x49ffc1;if(_0x576ac8[_0x463a93(0x197)]!==_0x463a93(0x14a))return{};const _0x14934e=_0x576ac8;if(_0x14934e[_0x463a93(0x10e)]!==_0x3de183[_0x463a93(0x17f)])return{};return await _0x4633d6[_0x463a93(0x164)](_0x463a93(0x182),_0x14934e['error'],{'transport':'playwright-cli','toolName':'Bash'}),{};};return{'postToolUseHook':_0x5ad3bf,'postToolUseFailureHook':_0x3c14e4,'commandCounts':_0x2e40b4};}async function runPlaywrightCliLifecycleCommand(_0x3e8140){const _0x15164c=_0x3113,_0x46087f={'EcwCe':function(_0x10f2f6,_0x29f4e5){return _0x10f2f6(_0x29f4e5);},'bBVNl':function(_0x249f85,_0x3df225,_0x602831){return _0x249f85(_0x3df225,_0x602831);}},{sessionId:_0x41b976,configPath:_0x2a2d2f,commandArgs:_0x152745,env:_0x1030cf,telemetry:_0x5190f1,phase:_0x2e0ed0,metadata:_0x2d7c65,timeoutMs:_0x3be022}=_0x3e8140;_0x5190f1[_0x15164c(0x15e)](_0x2e0ed0,_0x2d7c65);try{const _0xd34ae8=await _0x46087f[_0x15164c(0x165)](runPlaywrightCliCommand,{'sessionId':_0x41b976,'configPath':_0x2a2d2f,'commandArgs':_0x152745,'cwd':process[_0x15164c(0x119)](),'env':_0x1030cf,'timeoutMs':_0x3be022??PLAYWRIGHT_CLI_COMMAND_TIMEOUT_MS});_0x5190f1[_0x15164c(0x12d)](_0x2e0ed0,{..._0x2d7c65,'subcommand':_0xd34ae8['invocation'][_0x15164c(0x170)],'stdoutPreview':_0x46087f[_0x15164c(0x14d)](truncatePreview,_0xd34ae8['stdout'],0x7d0),'stderrPreview':truncatePreview(_0xd34ae8['stderr'],0x7d0)});}catch(_0x3a919c){await _0x5190f1['trackPhaseError'](_0x2e0ed0,_0x3a919c,_0x2d7c65);throw _0x3a919c;}}export async function finalizeVerifyFeatureCliSession(_0x3940b7){const _0x318bb5=_0x3113,_0x1f8215={'VyzHN':_0x318bb5(0x12a),'WkfAL':'playwright_cli_video_stop','HLlKf':_0x318bb5(0x168),'fUEgk':function(_0x4c0c58,_0x4ae0d5,_0x555f1a){return _0x4c0c58(_0x4ae0d5,_0x555f1a);},'UryhU':_0x318bb5(0x133)},{telemetry:_0x163fb9,sessionId:_0x51b9c1,configPath:_0x50602b,cliArtifactDir:_0x377266,env:_0x1e4540,transportMetadata:_0x8ff9ee}=_0x3940b7,_0x35e00b=[{'phase':_0x318bb5(0x151),'commandArgs':[_0x1f8215[_0x318bb5(0x16d)]]},{'phase':_0x1f8215[_0x318bb5(0x162)],'commandArgs':[_0x1f8215['HLlKf'],_0x318bb5(0x155)+_0x1f8215[_0x318bb5(0x14c)](buildCliArtifactPath,_0x377266,'session-recording.webm')]},{'phase':_0x1f8215['UryhU'],'commandArgs':['close']}];for(const _0x30b14d of _0x35e00b){try{await runPlaywrightCliLifecycleCommand({'sessionId':_0x51b9c1,'configPath':_0x50602b,'commandArgs':[..._0x30b14d[_0x318bb5(0x192)]],'env':_0x1e4540,'telemetry':_0x163fb9,'phase':_0x30b14d[_0x318bb5(0x127)],'metadata':_0x8ff9ee});}catch{}}}export async function loadVerifyFeatureCliTraceUploadArtifact(_0x335479){const _0x3f194d=_0x3113,_0x40386d={'pWSnm':_0x3f194d(0x136)},_0x2a8ab0=[_0x40386d['pWSnm'],'trace.trace.zip'];for(const _0x3f1db9 of _0x2a8ab0){const _0x2dfa84=join(_0x335479,_0x3f1db9);try{return{'buffer':await readFile(_0x2dfa84),'source':_0x2dfa84};}catch{}}return null;}export async function rehomeVerifyFeatureCliArtifacts(_0x530ff3){const _0x1cca01=_0x3113,_0x229de4={'UHpXx':function(_0x2f8e79,_0x28a31f,_0x55762e){return _0x2f8e79(_0x28a31f,_0x55762e);},'kEVtN':function(_0x1bfacc,_0x30b822){return _0x1bfacc+_0x30b822;},'CAcRz':function(_0xb2ee1c,_0x13fe23){return _0xb2ee1c===_0x13fe23;},'DDfRy':function(_0x39f5a3,_0x3215ca,_0x11a1b4){return _0x39f5a3(_0x3215ca,_0x11a1b4);}},{cwd:_0x3934aa,cliArtifactDir:_0x309c70,startTime:_0x126f6b}=_0x530ff3,_0x2dd5c6=[];await _0x229de4['UHpXx'](mkdir,_0x309c70,{'recursive':!![]});const _0x18ba03=await _0x229de4[_0x1cca01(0x188)](readdir,_0x3934aa,{'withFileTypes':!![]});for(const _0x3c88d4 of _0x18ba03){if(!_0x3c88d4['isFile']()||!VERIFY_FEATURE_CLI_ARTIFACT_FILE_PATTERN[_0x1cca01(0x184)](_0x3c88d4[_0x1cca01(0x124)]))continue;const _0x39149f=join(_0x3934aa,_0x3c88d4[_0x1cca01(0x124)]),_0x10a817=await stat(_0x39149f);if(_0x229de4[_0x1cca01(0x12c)](_0x10a817['mtimeMs'],0x7d0)<_0x126f6b)continue;const _0x28c984=buildCliArtifactPath(_0x309c70,_0x3c88d4[_0x1cca01(0x124)]);if(_0x229de4[_0x1cca01(0x13d)](_0x39149f,_0x28c984))continue;await _0x229de4['DDfRy'](rename,_0x39149f,_0x28c984),_0x2dd5c6['push'](_0x3c88d4['name']);}return _0x2dd5c6[_0x1cca01(0x143)]();}function _0x5818(){const _0x1ebe8f=['795162qLtfPr','VyzHN','\x20snapshot\x20--filename\x20','##\x20App\x20Context\x0aYou\x20are\x20connected\x20to\x20a\x20desktop\x20application\x20via\x20CDP\x20(Chrome\x20DevTools\x20Protocol)\x20at\x20','subcommand','split','WlUuJ','02_state.yml','open\x20new\x20tab','check','`\x0a-\x20`snapshot\x20--filename\x20','WjPIu','\x20screenshot\x20--filename\x20','stringify','\x0a\x0a1.\x20Run\x20`','`\x0a5.\x20Read\x20the\x20snapshot\x20file\x20to\x20find\x20the\x20\x22Learn\x20More\x22\x20link\x20reference\x0a6.\x20Run\x20`','join','slice','tool_call','qDvRS','>\x20\x22','28HSMmPo','tool_failure','`\x0a10.\x20Return\x20immediately\x20with\x20the\x20structured\x20output\x0a\x0aReturn\x20your\x20findings\x20in\x20the\x20structured\x20output\x20format.','test','22KIqqAu','createdAt',']\x20**','UHpXx','11737610AazoXO','press','.\x0aThis\x20is\x20NOT\x20a\x20web\x20app\x20—\x20there\x20is\x20no\x20URL\x20to\x20navigate\x20to.\x20The\x20app\x20is\x20already\x20running\x20and\x20connected.','\x20>\x20','capture\x20screenshot','string','values','screenshot','\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','commandArgs','Wxvuy','6831369zHxgwo','[ranger-verification-agent]\x20','TAmuf','hook_event_name','\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.','jtoos','capture\x20step\x20`','\x20video-start`\x0a4.\x20Save\x20every\x20snapshot\x20and\x20screenshot\x20under\x20`','start\x20video\x20recording','snapshot','DEBUG','key_03_success-state.png','tool_name','numeric','open\x20','VvmcE','open','replace','\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','...','\x20tracing-start`,\x20then\x20`','get','tCKiq','cwd','cFtJA','`:\x20\x22','match','target','env','en-US','ewnMl','map','click','03_result-visible.png','name','authorEmail','select\x20tab\x20','phase','description','##\x20Instructions\x0a1.\x20Use\x20Bash\x20plus\x20Playwright\x20CLI\x20only.\x20Do\x20NOT\x20call\x20MCP\x20browser\x20tools.\x0a2.\x20Start\x20by\x20running\x20`','tracing-stop','\x0a\x0a##\x20Additional\x20Notes\x0a','kEVtN','trackPhaseEnd','yNqgy','yJQzj','ESvUA','open\x20browser','4251088LEodJf','playwright_cli_close','short','163487zwfEjr','trace.zip','keys','playwright-cli','`\x0a7.\x20Click\x20the\x20\x22Learn\x20More\x22\x20link\x20with\x20Playwright\x20CLI\x0a8.\x20Run\x20`','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','`\x0a9.\x20Run\x20`','\x22,\x20\x22','CAcRz','frSjC','uKydz','42095kWgwmX','2jhMcLo','588jbUpFj','sort','click\x20','capture\x20snapshot','`\x0a\x0a-\x20Write\x20all\x20artifacts\x20under\x20`','length','authorName','kyHkj','PostToolUseFailure','Bash','fUEgk','bBVNl','eWdqI','KrlMb','set','playwright_cli_tracing_stop','element','unaddressedComments','\x0a\x0a##\x20Expected\x20Flow\x20(from\x20previous\x20verification)\x0a','--filename=','VrpzH','domRef','\x20open`,\x20then\x20`','Reviewer','hxnaq','UxKkV','run-code','start\x20tracing','trackPhaseStart','cvRTU','JpDrD','1349289alcyVV','WkfAL','\x0a\x0a##\x20Task\x20to\x20Execute\x0a','trackPhaseError','EcwCe','canonicalFlow','\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','video-stop','ref\x20','`\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`','olqmJ'];_0x5818=function(){return _0x1ebe8f;};return _0x5818();}
1
+ (function(_0x4cf435,_0x290471){const _0x50336f=_0x4f14,_0x31d53a=_0x4cf435();while(!![]){try{const _0x463fce=-parseInt(_0x50336f(0x225))/0x1*(parseInt(_0x50336f(0x1fc))/0x2)+parseInt(_0x50336f(0x1ff))/0x3*(parseInt(_0x50336f(0x20f))/0x4)+-parseInt(_0x50336f(0x22c))/0x5+-parseInt(_0x50336f(0x23a))/0x6*(parseInt(_0x50336f(0x1ec))/0x7)+parseInt(_0x50336f(0x1d9))/0x8+parseInt(_0x50336f(0x22f))/0x9+parseInt(_0x50336f(0x1dc))/0xa;if(_0x463fce===_0x290471)break;else _0x31d53a['push'](_0x31d53a['shift']());}catch(_0x2d4e9b){_0x31d53a['push'](_0x31d53a['shift']());}}}(_0x450d,0xd3d5f));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(_0x3e07df,_0x318a9c=PLAYWRIGHT_CLI_PREVIEW_LIMIT){const _0x5156d4=_0x4f14;return _0x3e07df[_0x5156d4(0x230)]>_0x318a9c?_0x3e07df[_0x5156d4(0x1b4)](0x0,_0x318a9c)+'...':_0x3e07df;}function buildCliArtifactPath(_0x325099,_0x3075d8){const _0x526870={'GRPhx':function(_0x2bf2c8,_0xca5175,_0x3e579d){return _0x2bf2c8(_0xca5175,_0x3e579d);}};return _0x526870['GRPhx'](join,_0x325099,_0x3075d8);}function toStepDisplayName(_0x5f5af6){const _0xb6e36e=_0x4f14,_0x834295={'EXowQ':function(_0x47cce3,_0x2de89e){return _0x47cce3(_0x2de89e);},'bNmTN':function(_0x1d2808,_0x382dcd){return _0x1d2808(_0x382dcd);}},_0x7df3fd=_0x834295[_0xb6e36e(0x1d6)](basename,_0x5f5af6)['replace'](/\.(?:png|ya?ml)$/i,'')[_0xb6e36e(0x1cf)](/^key_/i,'')[_0xb6e36e(0x1cf)](/^\d+_/,'')[_0xb6e36e(0x1cf)](/-/g,'\x20');return{'name':_0x7df3fd,'isKeyStep':/^key_/i[_0xb6e36e(0x1bb)](_0x834295[_0xb6e36e(0x1c4)](basename,_0x5f5af6))};}function extractShellValue(_0x2fd38c){if(!_0x2fd38c)return null;return _0x2fd38c[0x1]??_0x2fd38c[0x2]??_0x2fd38c[0x3]??null;}function _0x450d(){const _0x368e25=['CQXSm','7HBPvJs','\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','tool_input','playwright_cli_close','KOSXL','`\x0a5.\x20Read\x20the\x20snapshot\x20file\x20to\x20find\x20the\x20\x22Learn\x20More\x22\x20link\x20reference\x0a6.\x20Run\x20`','\x20video-start`\x0a4.\x20Save\x20every\x20snapshot\x20and\x20screenshot\x20under\x20`','yEcRU','EGjkP','selector','\x20open\x20','stringify','textContent','gkDDM','cDkZh','rzxoi','12WvakJa','DVxuA','nGdXp','15dCJlbm','match',']\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','get','`\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','obTEb','GbJeL','capture\x20step\x20`','values','playwright-cli','EJCPt','toLocaleDateString','Oazwm','\x0a\x0a##\x20Browser\x20Command\x20Reference\x0aUse\x20Bash\x20to\x20run\x20Playwright\x20CLI\x20commands\x20with\x20this\x20exact\x20prefix:\x0a`','qmxSi','1231868SJNjRD','KRHGJ','):\x20\x22','\x0a\x0a##\x20Expected\x20Flow\x20(from\x20previous\x20verification)\x0a','\x22,\x20\x22','fVJNe','You\x20are\x20testing\x20browser\x20automation.\x20Your\x20task\x20is\x20simple:\x0a\x0aUse\x20Bash\x20and\x20Playwright\x20CLI\x20only.\x20The\x20browser\x20command\x20prefix\x20is:\x0a','\x20tracing-start`,\x20then\x20`','wspMf','commandArgs','\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','BVzFP','imvWh','phase','invocation','`\x20using\x20absolute\x20paths\x20only.\x20Do\x20not\x20use\x20relative\x20filenames.\x0a5.\x20Run\x20`','video-stop','edUzl','PostToolUseFailure','trackPhaseEnd','\x0a\x0a##\x20Additional\x20Notes\x0a','Bash','115235FpSGOP','ujXVc','session-recording.webm','Gxfsd','nVLUg','DEBUG','oOeMZ','7885105vYiegR','name','trace.zip','2942658evzXhO','length','\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','run\x20custom\x20Playwright\x20code','trackPhaseError','press\x20','keys','nRaGy','env','XBIdO','omEcT','6178110tWrGOj','02_button-clicked.png','[playwright-cli]\x20','[ranger-verification-agent]\x20','notes','TwujH','02_learn-more.yml','03_result-visible.png','\x20screenshot\x20--filename\x20','push','slice','gENVi','target','run-code','\x20open`,\x20then\x20`','03_learn-more.png','NpmZm','test','`\x0a-\x20`snapshot\x20--filename\x20','\x20>\x20','canonicalFlow','`\x0a10.\x20Return\x20immediately\x20with\x20the\x20structured\x20output\x0a\x0aReturn\x20your\x20findings\x20in\x20the\x20structured\x20output\x20format.','set','open\x20','IyNfE','tool_name','bNmTN','vnhOl','\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','\x20(on\x20element:\x20<','mtimeMs','ednDO','tracing-start','string','02_state.yml','tab-new','sort','replace','join','\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','capture\x20key\x20step\x20`','UubEy','log','vjyYF','EXowQ','(?:\x5cs+(?:\x22([^\x22]+)\x22|\x27([^\x27]+)\x27|(\x5cS+)))','YtZCe','4101328uvNgmW','tool_call','`:\x20\x22','17863320PouyTf','cwd','trim','`\x20using\x20absolute\x20paths\x20only.\x20Do\x20not\x20use\x20relative\x20filenames.\x0a4.\x20Take\x20a\x20snapshot\x20with\x20`','##\x20Instructions\x0a1.\x20Use\x20Bash\x20plus\x20Playwright\x20CLI\x20only.\x20Do\x20NOT\x20call\x20MCP\x20browser\x20tools.\x0a2.\x20Start\x20by\x20running\x20`','fPiFB','\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.','GHmVg','\x20snapshot\x20--filename\x20','HChmb','description','tab-select','fill','capture\x20snapshot\x20`','\x5c$&'];_0x450d=function(){return _0x368e25;};return _0x450d();}function extractFilenameOption(_0x58ea81){const _0x59d636=_0x4f14,_0x14db7b={'TQgXB':function(_0x574e42,_0x498f59){return _0x574e42(_0x498f59);}};return _0x14db7b['TQgXB'](extractShellValue,_0x58ea81[_0x59d636(0x200)](/--filename(?:=|\s+)(?:"([^"]+)"|'([^']+)'|(\S+))/));}function _0x4f14(_0x1edb96,_0x162c28){_0x1edb96=_0x1edb96-0x1b1;const _0x450d35=_0x450d();let _0x4f14f2=_0x450d35[_0x1edb96];return _0x4f14f2;}function extractFirstCommandArgument(_0x3a253d,_0x59b399){const _0x1b8eda=_0x4f14,_0x65fea0={'rcKHi':function(_0x14bb0a,_0x32b258){return _0x14bb0a(_0x32b258);}},_0x58baaf=_0x59b399['replace'](/[.*+?^${}()|[\]\\]/g,_0x1b8eda(0x1ea));return _0x65fea0['rcKHi'](extractShellValue,_0x3a253d['match'](new RegExp('(?:^|\x5cs)'+_0x58baaf+_0x1b8eda(0x1d7))));}function formatCommandTarget(_0x853285){const _0x26c398=_0x4f14,_0x1fde16={'Oazwm':_0x26c398(0x1b6),'wspMf':function(_0x226d06,_0xfe3d25,_0x1f9eec){return _0x226d06(_0xfe3d25,_0x1f9eec);}};if(!_0x853285)return _0x1fde16[_0x26c398(0x20c)];if(/^e\d+$/i[_0x26c398(0x1bb)](_0x853285))return'ref\x20'+_0x853285;return JSON[_0x26c398(0x1f7)](_0x1fde16[_0x26c398(0x217)](truncatePreview,_0x853285,0x78));}function formatPlaywrightCliLog(_0x537a51,_0x4a3cfb){const _0x477531=_0x4f14,_0x7e1521={'YtZCe':'open','DVxuA':'open\x20browser','jtoTu':_0x477531(0x1ca),'Gxfsd':'start\x20tracing','geGIw':'stop\x20tracing','fOSMB':'start\x20video\x20recording','nGdXp':_0x477531(0x21f),'omEcT':'stop\x20video\x20recording','UnCgZ':'snapshot','hDlvf':function(_0x23913f,_0x2eaf51){return _0x23913f(_0x2eaf51);},'vjyYF':'capture\x20snapshot','cDkZh':function(_0xbf505,_0x3d02fa){return _0xbf505(_0x3d02fa);},'EJCPt':'click','BVzFP':function(_0x305181,_0x25889d,_0x508041){return _0x305181(_0x25889d,_0x508041);},'WuAsP':function(_0x362095,_0xe0773f){return _0x362095(_0xe0773f);},'fVJNe':function(_0x17b34d,_0x54903d,_0x407130){return _0x17b34d(_0x54903d,_0x407130);},'toLbT':function(_0x86e9fe,_0x458a0b,_0x2110ce){return _0x86e9fe(_0x458a0b,_0x2110ce);},'LVEZT':'press','DSIGe':_0x477531(0x1b7),'yEcRU':_0x477531(0x232),'vkXTC':_0x477531(0x1cd),'iuRkO':'open\x20new\x20tab','wjRhI':_0x477531(0x1e7)};switch(_0x4a3cfb){case _0x7e1521[_0x477531(0x1d8)]:{const _0x4dd693=extractFirstCommandArgument(_0x537a51,_0x4a3cfb);return _0x4dd693?_0x477531(0x1c1)+_0x4dd693:_0x7e1521[_0x477531(0x1fd)];}case _0x7e1521['jtoTu']:return _0x7e1521[_0x477531(0x228)];case'tracing-stop':return _0x7e1521['geGIw'];case'video-start':return _0x7e1521['fOSMB'];case _0x7e1521[_0x477531(0x1fe)]:return _0x7e1521[_0x477531(0x239)];case _0x7e1521['UnCgZ']:{const _0x18ced0=_0x7e1521['hDlvf'](extractFilenameOption,_0x537a51);if(!_0x18ced0)return _0x7e1521[_0x477531(0x1d5)];const {name:_0x3db777}=_0x7e1521[_0x477531(0x1fa)](toStepDisplayName,_0x18ced0);return _0x477531(0x1e9)+_0x3db777+'`';}case'screenshot':{const _0x84038f=_0x7e1521['cDkZh'](extractFilenameOption,_0x537a51);if(!_0x84038f)return'capture\x20screenshot';const {name:_0x230b9d,isKeyStep:_0x486247}=toStepDisplayName(_0x84038f);return _0x486247?_0x477531(0x1d2)+_0x230b9d+'`':_0x477531(0x207)+_0x230b9d+'`';}case _0x7e1521[_0x477531(0x20a)]:return'click\x20'+formatCommandTarget(_0x7e1521[_0x477531(0x21a)](extractFirstCommandArgument,_0x537a51,_0x4a3cfb));case'check':return'check\x20'+_0x7e1521['WuAsP'](formatCommandTarget,_0x7e1521[_0x477531(0x214)](extractFirstCommandArgument,_0x537a51,_0x4a3cfb));case _0x477531(0x1e8):return'fill\x20'+formatCommandTarget(_0x7e1521['toLbT'](extractFirstCommandArgument,_0x537a51,_0x4a3cfb));case _0x7e1521['LVEZT']:return _0x477531(0x234)+formatCommandTarget(_0x7e1521['BVzFP'](extractFirstCommandArgument,_0x537a51,_0x4a3cfb));case _0x7e1521['DSIGe']:return _0x7e1521[_0x477531(0x1f3)];case _0x7e1521['vkXTC']:{const _0x4bf961=_0x7e1521[_0x477531(0x214)](extractFirstCommandArgument,_0x537a51,_0x4a3cfb);return _0x4bf961?'open\x20new\x20tab\x20'+_0x4bf961:_0x7e1521['iuRkO'];}case _0x7e1521['wjRhI']:{const _0x567940=extractFirstCommandArgument(_0x537a51,_0x4a3cfb);return _0x567940?'select\x20tab\x20'+_0x567940:'select\x20tab';}default:return _0x4a3cfb;}}function extractPlaywrightCliToolDescription(_0x37e770){const _0x202a9f=_0x4f14,_0x5dc551={'XBIdO':function(_0x1c6e72,_0x215264){return _0x1c6e72>_0x215264;}},_0x22c925=_0x37e770[_0x202a9f(0x1e6)];if(typeof _0x22c925!==_0x202a9f(0x1cb))return null;const _0x1be12a=_0x22c925[_0x202a9f(0x1de)]()[_0x202a9f(0x1cf)](/\s+/g,'\x20');return _0x5dc551[_0x202a9f(0x238)](_0x1be12a[_0x202a9f(0x230)],0x0)?_0x1be12a:null;}export function formatPlaywrightCliConsoleLogMessage(_0x3eaef7,_0x5b752e,_0x29d099){const _0x3c63dd=_0x4f14,_0x36233d={'rzxoi':function(_0xe341cd,_0x390aa2){return _0xe341cd(_0x390aa2);}},_0x43125f=formatPlaywrightCliLog(_0x5b752e,_0x29d099),_0x1a0e3e=_0x36233d[_0x3c63dd(0x1fb)](extractPlaywrightCliToolDescription,_0x3eaef7);if(!_0x1a0e3e)return _0x3c63dd(0x23c)+_0x43125f;if(process[_0x3c63dd(0x237)][_0x3c63dd(0x22a)])return _0x3c63dd(0x23d)+_0x1a0e3e+'\x20('+_0x43125f+')';return _0x3c63dd(0x23d)+_0x1a0e3e;}export function buildVerifyFeatureCliDebugPrompt(_0xe59b8b,_0x375ee5){const _0x3bd856=_0x4f14,_0x544a4f={'GbJeL':'00_mozilla-homepage.yml','lSFZf':function(_0x59beab,_0x344b44,_0x52d1fe){return _0x59beab(_0x344b44,_0x52d1fe);},'PDVMe':function(_0xc2a81e,_0x2fc43d,_0x1be594){return _0xc2a81e(_0x2fc43d,_0x1be594);},'vnhOl':function(_0x72f1c3,_0x5a847f){return _0x72f1c3(_0x5a847f);}},_0x46b27a=buildCliArtifactPath(_0x375ee5,_0x544a4f[_0x3bd856(0x206)]),_0x11ca8d=_0x544a4f['lSFZf'](buildCliArtifactPath,_0x375ee5,'01_mozilla-homepage.png'),_0x582616=buildCliArtifactPath(_0x375ee5,_0x3bd856(0x240)),_0x29c5f9=_0x544a4f['PDVMe'](buildCliArtifactPath,_0x375ee5,_0x3bd856(0x1b9)),_0x3a5d2c=_0x544a4f['vnhOl'](quoteShellArg,_0x46b27a),_0x2eb9a9=quoteShellArg(_0x11ca8d),_0x293291=quoteShellArg(_0x582616),_0x43d90e=_0x544a4f[_0x3bd856(0x1c5)](quoteShellArg,_0x29c5f9);return _0x3bd856(0x215)+_0xe59b8b+'\x0a\x0a1.\x20Run\x20`'+_0xe59b8b+'\x20open\x20https://www.mozilla.org`\x0a2.\x20Run\x20`'+_0xe59b8b+'\x20tracing-start`\x0a3.\x20Run\x20`'+_0xe59b8b+_0x3bd856(0x1f2)+_0x375ee5+_0x3bd856(0x21e)+_0xe59b8b+_0x3bd856(0x1e4)+_0x3a5d2c+_0x3bd856(0x1f1)+_0xe59b8b+_0x3bd856(0x1b2)+_0x2eb9a9+'`\x0a7.\x20Click\x20the\x20\x22Learn\x20More\x22\x20link\x20with\x20Playwright\x20CLI\x0a8.\x20Run\x20`'+_0xe59b8b+_0x3bd856(0x1e4)+_0x293291+'`\x0a9.\x20Run\x20`'+_0xe59b8b+_0x3bd856(0x1b2)+_0x43d90e+_0x3bd856(0x1bf);}export function buildVerifyFeatureCliPrompt(_0x425d2a){const _0x3ddd04=_0x4f14,_0xa37e1a={'KRHGJ':'element','EGjkP':'01_initial.yml','IyNfE':_0x3ddd04(0x1cc),'nVLUg':function(_0x313060,_0x54eef1,_0x4adc11){return _0x313060(_0x54eef1,_0x4adc11);},'obTEb':'key_03_success-state.png','HChmb':function(_0x3059f8,_0x1aeb28){return _0x3059f8(_0x1aeb28);},'edUzl':function(_0x514e02,_0x3b5099){return _0x514e02(_0x3b5099);},'nRaGy':function(_0x5d2c7e,_0x28db62){return _0x5d2c7e(_0x28db62);},'NpmZm':_0x3ddd04(0x23b),'lbIgV':function(_0x3efc4,_0x519d6b,_0x3e45f3){return _0x3efc4(_0x519d6b,_0x3e45f3);},'aXRNn':function(_0x435103,_0x57d237,_0x2c0364){return _0x435103(_0x57d237,_0x2c0364);},'fPiFB':'key_04_success-state.png'},{checklistItem:_0x2f6ad3,itemFeedback:_0x34c20f,taskDescription:_0x229aa4,cliCommandPrefix:_0x25c605,cliArtifactDir:_0x401434,isCdpMode:_0xe650a2,url:_0x53c9ec,cdpEndpoint:_0xdae017,loginInstructions:_0x16eb66}=_0x425d2a,_0x57f05a=buildCliArtifactPath(_0x401434,_0xa37e1a[_0x3ddd04(0x1f4)]),_0x5ce5c1=buildCliArtifactPath(_0x401434,_0xa37e1a[_0x3ddd04(0x1c2)]),_0x41f7de=_0xa37e1a[_0x3ddd04(0x229)](buildCliArtifactPath,_0x401434,_0xa37e1a[_0x3ddd04(0x205)]),_0x3b8f9f=buildCliArtifactPath(_0x401434,'01_initial-state.png'),_0x4867cb=_0xa37e1a[_0x3ddd04(0x1e5)](quoteShellArg,_0x57f05a),_0x2a2a2b=_0xa37e1a['edUzl'](quoteShellArg,_0x5ce5c1),_0x4f713d=quoteShellArg(_0x41f7de),_0x6ba65d=_0xa37e1a[_0x3ddd04(0x220)](quoteShellArg,_0x3b8f9f),_0x48289f=_0x2f6ad3['notes']?_0x3ddd04(0x223)+_0x2f6ad3[_0x3ddd04(0x23e)]:'';let _0x321e96='';if(_0x34c20f&&_0x34c20f['unaddressedComments'][_0x3ddd04(0x230)]>0x0){const _0x460d3d=_0x34c20f['unaddressedComments']['map'](_0x11a1da=>{const _0x16337f=_0x3ddd04,_0x398d9c=new Date(_0x11a1da['createdAt'])[_0x16337f(0x20b)]('en-US',{'month':'short','day':'numeric'}),_0x56e2c8=_0x11a1da['authorName']||_0x11a1da['authorEmail']||'Reviewer',_0x5c5cb4=_0x11a1da['domRef']?_0x16337f(0x1c7)+(_0x11a1da['domRef'][_0x16337f(0x1f5)]['split'](_0x16337f(0x1bd))['pop']()?.['split'](':')[0x0]||_0xa37e1a[_0x16337f(0x210)])+'>\x20\x22'+(_0x11a1da['domRef'][_0x16337f(0x1f8)]||'')[_0x16337f(0x1b4)](0x0,0x32)+'\x22)':'';return'-\x20['+_0x11a1da['id']+_0x16337f(0x201)+_0x56e2c8+'**\x20('+_0x398d9c+_0x16337f(0x211)+_0x11a1da['content']+'\x22'+_0x5c5cb4;})[_0x3ddd04(0x1d0)]('\x0a');_0x321e96=_0x3ddd04(0x1ed)+_0x460d3d;}const _0x29699b=_0x34c20f?.[_0x3ddd04(0x1be)]?_0x3ddd04(0x212)+_0x34c20f[_0x3ddd04(0x1be)]:'',_0x24eb05=_0xe650a2?'##\x20App\x20Context\x0aYou\x20are\x20connected\x20to\x20a\x20desktop\x20application\x20via\x20CDP\x20(Chrome\x20DevTools\x20Protocol)\x20at\x20'+_0xdae017+'.\x0aThis\x20is\x20NOT\x20a\x20web\x20app\x20—\x20there\x20is\x20no\x20URL\x20to\x20navigate\x20to.\x20The\x20app\x20is\x20already\x20running\x20and\x20connected.':'CRITICAL\x20URL\x20REQUIREMENT:\x0aYour\x20base\x20URL\x20is:\x20'+_0x53c9ec+_0x3ddd04(0x219),_0x122521=_0x53c9ec?_0xa37e1a[_0x3ddd04(0x236)](quoteShellArg,_0x53c9ec):'',_0x48ff06=_0xe650a2?_0x3ddd04(0x1e0)+_0x25c605+_0x3ddd04(0x1b8)+_0x25c605+_0x3ddd04(0x216)+_0x25c605+'\x20video-start`.\x0a3.\x20Save\x20every\x20snapshot\x20and\x20screenshot\x20under\x20`'+_0x401434+'`\x20using\x20absolute\x20paths\x20only.\x20Do\x20not\x20use\x20relative\x20filenames.\x0a4.\x20Take\x20a\x20snapshot\x20with\x20`'+_0x25c605+'\x20snapshot\x20--filename\x20'+_0x4867cb+'`\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`'+_0x25c605+_0x3ddd04(0x1b2)+_0x6ba65d+'`\x20style\x20absolute\x20paths\x20at\x20key\x20moments.\x0a6.\x20If\x20you\x20need\x20waits\x20or\x20custom\x20assertions,\x20use\x20`'+_0x25c605+_0x3ddd04(0x1d1):_0x3ddd04(0x1e0)+_0x25c605+_0x3ddd04(0x1f6)+_0x122521+'`,\x20then\x20`'+_0x25c605+_0x3ddd04(0x216)+_0x25c605+'\x20video-start`.\x0a3.\x20Save\x20every\x20snapshot\x20and\x20screenshot\x20under\x20`'+_0x401434+_0x3ddd04(0x1df)+_0x25c605+_0x3ddd04(0x1e4)+_0x4867cb+'`\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`'+_0x25c605+_0x3ddd04(0x1b2)+_0x6ba65d+'`\x20style\x20absolute\x20paths\x20at\x20key\x20moments.\x0a8.\x20If\x20you\x20need\x20waits\x20or\x20custom\x20assertions,\x20use\x20`'+_0x25c605+_0x3ddd04(0x231),_0x40f7f4=_0xe650a2?'\x0a\x0a##\x20Critical:\x20Early\x20Error\x20Detection\x0aAfter\x20taking\x20the\x20initial\x20snapshot,\x20IMMEDIATELY\x20check\x20for\x20blocking\x20errors:\x0a\x0a**Blocking\x20errors\x20to\x20detect:**\x0a-\x20Crash\x20or\x20error\x20dialogs\x20(\x22An\x20error\x20occurred\x22,\x20\x22Something\x20went\x20wrong\x22,\x20unhandled\x20exception\x20messages)\x0a-\x20Blank\x20or\x20empty\x20window\x20with\x20no\x20rendered\x20content\x0a-\x20Framework\x20error\x20boundaries\x20(React\x20error\x20page,\x20Electron\x20crash\x20reporter)\x0a-\x20Unresponsive\x20or\x20frozen\x20UI\x20(no\x20interactive\x20elements\x20in\x20snapshot)\x0a\x0a**If\x20ANY\x20blocking\x20error\x20is\x20detected:**\x0a1.\x20DO\x20NOT\x20continue\x20with\x20the\x20task\x0a2.\x20Return\x20IMMEDIATELY\x20with\x20evaluation:\x20\x22blocked\x22\x0a3.\x20Set\x20evaluationReason\x20to\x20describe\x20the\x20specific\x20error\x20(e.g.,\x20\x22App\x20crashed\x20—\x20error\x20dialog\x20visible\x20on\x20launch\x22)\x0a4.\x20Include\x20the\x20error\x20in\x20issues\x20array\x20with\x20severity:\x20\x22BLOCKER\x22\x20and\x20type:\x20\x22APP_ERROR\x22\x0a\x0aThis\x20early\x20exit\x20prevents\x20wasting\x20time\x20on\x20tasks\x20that\x20cannot\x20succeed\x20due\x20to\x20fundamental\x20errors.':'\x0a\x0a##\x20Critical:\x20Early\x20Error\x20Detection\x0aAfter\x20step\x202\x20(taking\x20initial\x20snapshot),\x20IMMEDIATELY\x20check\x20for\x20blocking\x20HTTP\x20errors:\x0a\x0a**Blocking\x20errors\x20to\x20detect:**\x0a-\x20HTTP\x20404:\x20\x22404\x22,\x20\x22Not\x20Found\x22,\x20\x22Page\x20not\x20found\x22,\x20\x22does\x20not\x20exist\x22\x0a-\x20HTTP\x20500:\x20\x22500\x22,\x20\x22Internal\x20Server\x20Error\x22,\x20\x22Server\x20Error\x22,\x20\x22Something\x20went\x20wrong\x22\x0a-\x20HTTP\x20400:\x20\x22400\x22,\x20\x22Bad\x20Request\x22,\x20\x22Invalid\x20request\x22\x0a\x0a**Also\x20check\x20for:**\x0a-\x20Framework\x20error\x20pages\x20(Next.js\x20error\x20boundary,\x20React\x20error\x20page,\x20\x22Application\x20error\x22)\x0a-\x20Completely\x20blank/empty\x20pages\x20with\x20no\x20content\x0a-\x20\x22Cannot\x20GET\x20/path\x22\x20messages\x0a\x0a**If\x20ANY\x20blocking\x20error\x20is\x20detected:**\x0a1.\x20DO\x20NOT\x20continue\x20with\x20the\x20task\x0a2.\x20Return\x20IMMEDIATELY\x20with\x20evaluation:\x20\x22blocked\x22\x0a3.\x20Set\x20evaluationReason\x20to\x20describe\x20the\x20specific\x20error\x20(e.g.,\x20\x22HTTP\x20404\x20-\x20Page\x20not\x20found\x20at\x20/dashboard\x22)\x0a4.\x20Include\x20the\x20error\x20in\x20issues\x20array\x20with\x20severity:\x20\x22BLOCKER\x22\x20and\x20appropriate\x20type\x20(HTTP_404,\x20HTTP_500,\x20HTTP_400,\x20or\x20NAVIGATION_ERROR)\x0a\x0aThis\x20early\x20exit\x20prevents\x20wasting\x20time\x20on\x20tasks\x20that\x20cannot\x20succeed\x20due\x20to\x20fundamental\x20errors.',_0x3c5fa9=_0x16eb66?'\x0a\x0a##\x20Authentication\x0aBEFORE\x20starting\x20the\x20verification\x20task,\x20you\x20MUST\x20authenticate\x20using\x20these\x20steps:\x0a'+_0x16eb66+'\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'+_0x2f6ad3[_0x3ddd04(0x1e6)]+_0x48289f+_0x321e96+_0x29699b+'\x0a\x0a##\x20Task\x20to\x20Execute\x0a'+_0x229aa4+'\x0a\x0a'+_0x24eb05+_0x3c5fa9+'\x0a\x0a'+_0x48ff06+_0x3ddd04(0x20d)+_0x25c605+'`\x0a\x0a-\x20Write\x20all\x20artifacts\x20under\x20`'+_0x401434+_0x3ddd04(0x1bc)+_0x2a2a2b+_0x3ddd04(0x204)+_0x4f713d+'`\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`'+_0x401434+_0x3ddd04(0x1db)+_0x3b8f9f+'\x22,\x20\x22'+buildCliArtifactPath(_0x401434,_0xa37e1a[_0x3ddd04(0x1ba)])+_0x3ddd04(0x213)+_0xa37e1a['lbIgV'](buildCliArtifactPath,_0x401434,_0x3ddd04(0x1b1))+_0x3ddd04(0x1c6)+_0xa37e1a['aXRNn'](buildCliArtifactPath,_0x401434,_0xa37e1a[_0x3ddd04(0x1e1)])+_0x3ddd04(0x202)+_0x40f7f4+_0x3ddd04(0x1e2);}export function summarizeVerifyFeatureCliCommandAvailability(_0x2d747c){const _0x296b0e=_0x4f14,_0x3a4dbc=[..._0x2d747c[_0x296b0e(0x235)]()][_0x296b0e(0x1ce)]();let _0x36760e=0x0;for(const _0x40acb2 of _0x2d747c[_0x296b0e(0x208)]()){_0x36760e+=_0x40acb2;}return{'cliCommandCount':_0x36760e,'cliCommandsSeen':_0x3a4dbc,'noCliCommandsCalled':_0x36760e===0x0};}export function createVerifyFeatureCliHooks(_0x1156e6){const _0x25d391=_0x4f14,_0x34ef41={'UubEy':function(_0x4a4f3f,_0xd2a974){return _0x4a4f3f!==_0xd2a974;},'Mceto':'PostToolUse','qmxSi':function(_0x1418ab,_0x2ddcea){return _0x1418ab!==_0x2ddcea;},'gENVi':function(_0x550de1,_0x5845dd){return _0x550de1(_0x5845dd);},'rBKBh':function(_0x46fe1b,_0xe26ff0){return _0x46fe1b+_0xe26ff0;},'gkDDM':_0x25d391(0x209),'zciAZ':'snapshot','olVps':function(_0x21a0e6,_0x5400d4,_0x555624,_0x295951){return _0x21a0e6(_0x5400d4,_0x555624,_0x295951);},'ednDO':function(_0x1621c5,_0x125580){return _0x1621c5!==_0x125580;},'nRtOZ':'tool_failure','GHmVg':_0x25d391(0x224)},_0x200eda=new Map(),_0x1f191d=async _0x3a02e1=>{const _0x49ff62=_0x25d391;if(_0x34ef41['UubEy'](_0x3a02e1['hook_event_name'],_0x34ef41['Mceto']))return{};const _0x33a987=_0x3a02e1;if(_0x34ef41[_0x49ff62(0x20e)](_0x33a987[_0x49ff62(0x1c3)],_0x49ff62(0x224)))return{};const _0x3fa462=_0x33a987[_0x49ff62(0x1ee)],_0x3c4165=_0x34ef41[_0x49ff62(0x1b5)](extractBashCommand,_0x3fa462);if(!_0x3c4165)return{};const _0x4b62b8=parsePlaywrightCliCommand(_0x3c4165);if(!_0x4b62b8)return{};return _0x200eda[_0x49ff62(0x1c0)](_0x4b62b8,_0x34ef41['rBKBh'](_0x200eda[_0x49ff62(0x203)](_0x4b62b8)||0x0,0x1)),_0x1156e6['trackPhaseStart'](_0x49ff62(0x1da),{'transport':_0x34ef41[_0x49ff62(0x1f9)],'toolName':_0x4b62b8}),_0x1156e6[_0x49ff62(0x222)]('tool_call',{'transport':_0x34ef41['gkDDM'],'toolName':_0x4b62b8,'bashCommandPreview':truncatePreview(_0x3c4165)}),_0x34ef41[_0x49ff62(0x1d3)](_0x4b62b8,_0x34ef41['zciAZ'])&&console[_0x49ff62(0x1d4)](_0x34ef41['olVps'](formatPlaywrightCliConsoleLogMessage,_0x3fa462,_0x3c4165,_0x4b62b8)),{};},_0x3e1715=async _0x2a7839=>{const _0x24dffa=_0x25d391;if(_0x2a7839['hook_event_name']!==_0x24dffa(0x221))return{};const _0x27b196=_0x2a7839;if(_0x34ef41[_0x24dffa(0x1c9)](_0x27b196[_0x24dffa(0x1c3)],'Bash'))return{};return await _0x1156e6[_0x24dffa(0x233)](_0x34ef41['nRtOZ'],_0x27b196['error'],{'transport':_0x34ef41['gkDDM'],'toolName':_0x34ef41[_0x24dffa(0x1e3)]}),{};};return{'postToolUseHook':_0x1f191d,'postToolUseFailureHook':_0x3e1715,'commandCounts':_0x200eda};}async function runPlaywrightCliLifecycleCommand(_0x2684bd){const _0x3089bb=_0x4f14,_0x58cfd3={'CQXSm':function(_0x5836c1,_0x9346e5){return _0x5836c1(_0x9346e5);},'TVHYj':function(_0x46de64,_0x4d6996,_0x55684b){return _0x46de64(_0x4d6996,_0x55684b);}},{sessionId:_0x2dee5b,configPath:_0x32e15f,commandArgs:_0x1d5a0,env:_0x199980,telemetry:_0x5f0e0e,phase:_0x220a55,metadata:_0x143e0e,timeoutMs:_0x3acce7}=_0x2684bd;_0x5f0e0e['trackPhaseStart'](_0x220a55,_0x143e0e);try{const _0x5255cf=await _0x58cfd3[_0x3089bb(0x1eb)](runPlaywrightCliCommand,{'sessionId':_0x2dee5b,'configPath':_0x32e15f,'commandArgs':_0x1d5a0,'cwd':process[_0x3089bb(0x1dd)](),'env':_0x199980,'timeoutMs':_0x3acce7??PLAYWRIGHT_CLI_COMMAND_TIMEOUT_MS});_0x5f0e0e['trackPhaseEnd'](_0x220a55,{..._0x143e0e,'subcommand':_0x5255cf[_0x3089bb(0x21d)]['subcommand'],'stdoutPreview':truncatePreview(_0x5255cf['stdout'],0x7d0),'stderrPreview':_0x58cfd3['TVHYj'](truncatePreview,_0x5255cf['stderr'],0x7d0)});}catch(_0xed86c4){await _0x5f0e0e['trackPhaseError'](_0x220a55,_0xed86c4,_0x143e0e);throw _0xed86c4;}}export async function finalizeVerifyFeatureCliSession(_0x3555c9){const _0x51bed3=_0x4f14,_0x5e7c47={'dCFpk':'playwright_cli_tracing_stop','Eblbl':'tracing-stop','lApBO':function(_0xb80b57,_0x451eff,_0x4cf26f){return _0xb80b57(_0x451eff,_0x4cf26f);},'sORIj':_0x51bed3(0x1ef)},{telemetry:_0x45750a,sessionId:_0x13c8bd,configPath:_0x2c8546,cliArtifactDir:_0x9da67f,env:_0x4e3c9b,transportMetadata:_0x3f3447}=_0x3555c9,_0x20faa9=[{'phase':_0x5e7c47['dCFpk'],'commandArgs':[_0x5e7c47['Eblbl']]},{'phase':'playwright_cli_video_stop','commandArgs':[_0x51bed3(0x21f),'--filename='+_0x5e7c47['lApBO'](buildCliArtifactPath,_0x9da67f,_0x51bed3(0x227))]},{'phase':_0x5e7c47['sORIj'],'commandArgs':['close']}];for(const _0x471d06 of _0x20faa9){try{await runPlaywrightCliLifecycleCommand({'sessionId':_0x13c8bd,'configPath':_0x2c8546,'commandArgs':[..._0x471d06[_0x51bed3(0x218)]],'env':_0x4e3c9b,'telemetry':_0x45750a,'phase':_0x471d06[_0x51bed3(0x21c)],'metadata':_0x3f3447});}catch{}}}export async function loadVerifyFeatureCliTraceUploadArtifact(_0x342dbf){const _0x3f0bec=_0x4f14,_0x49a31f={'ujXVc':_0x3f0bec(0x22e),'oOeMZ':function(_0x167281,_0xf87da7,_0x56301d){return _0x167281(_0xf87da7,_0x56301d);}},_0x2c11df=[_0x49a31f[_0x3f0bec(0x226)],'trace.trace.zip'];for(const _0x116fbd of _0x2c11df){const _0x1d2ed6=_0x49a31f[_0x3f0bec(0x22b)](join,_0x342dbf,_0x116fbd);try{return{'buffer':await readFile(_0x1d2ed6),'source':_0x1d2ed6};}catch{}}return null;}export async function rehomeVerifyFeatureCliArtifacts(_0x2a0f59){const _0xc4ca28=_0x4f14,_0x3a6370={'TwujH':function(_0x394afb,_0x2c2146,_0x4ba1f4){return _0x394afb(_0x2c2146,_0x4ba1f4);},'imvWh':function(_0x46f106,_0x45c628){return _0x46f106<_0x45c628;},'KOSXL':function(_0xc98007,_0x9e8973,_0x2d62a6){return _0xc98007(_0x9e8973,_0x2d62a6);}},{cwd:_0x220bae,cliArtifactDir:_0x27e2b4,startTime:_0x166c96}=_0x2a0f59,_0x34169e=[];await _0x3a6370[_0xc4ca28(0x23f)](mkdir,_0x27e2b4,{'recursive':!![]});const _0x4764bd=await readdir(_0x220bae,{'withFileTypes':!![]});for(const _0x544dff of _0x4764bd){if(!_0x544dff['isFile']()||!VERIFY_FEATURE_CLI_ARTIFACT_FILE_PATTERN['test'](_0x544dff['name']))continue;const _0x1d4cd8=join(_0x220bae,_0x544dff[_0xc4ca28(0x22d)]),_0x4a70a8=await stat(_0x1d4cd8);if(_0x3a6370[_0xc4ca28(0x21b)](_0x4a70a8[_0xc4ca28(0x1c8)]+0x7d0,_0x166c96))continue;const _0x321aed=_0x3a6370[_0xc4ca28(0x1f0)](buildCliArtifactPath,_0x27e2b4,_0x544dff[_0xc4ca28(0x22d)]);if(_0x1d4cd8===_0x321aed)continue;await rename(_0x1d4cd8,_0x321aed),_0x34169e[_0xc4ca28(0x1b3)](_0x544dff[_0xc4ca28(0x22d)]);}return _0x34169e['sort']();}
@@ -13,22 +13,28 @@ If you are running in Claude Code, read and suggest the following claude-specifi
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
- ## One-shot verification from user creds
16
+ ## One-shot verification (default path)
17
17
 
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"), skip the create/setup ceremony and run verification directly:
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
19
 
20
20
  ```bash
21
21
  RANGER_TEST_USERNAME='alice@example.com' RANGER_TEST_PASSWORD='hunter2' \
22
- ranger-cli go --url <target-url> --notes '<the goal verbatim>'
22
+ ranger-cli go --base-url <target-url> --notes '<the goal verbatim>'
23
23
  ```
24
24
 
25
- If a feature review is required and none is active, the CLI will create one automatically. Do **not** run `ranger-cli create` first unless the user explicitly asks for a structured feature review with multiple scenarios.
25
+ The CLI:
26
+ - Materializes a cloud profile from `RANGER_TEST_USERNAME` if one doesn't exist
27
+ - Runs the org's server-side login automatically (if configured) — no human at a browser needed
28
+ - Creates a feature review if one is required but missing
29
+ - Captures trace + screenshots as evidence
26
30
 
27
- When credentials sit 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 the values.
31
+ 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.
28
32
 
29
- This skill covers three workflows for Ranger feature review tracking:
33
+ 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`).
30
34
 
31
- ## Supported Workflows
35
+ The rest of this skill covers structured workflows for multi-scenario feature reviews. Use those only when the one-shot flow doesn't fit.
36
+
37
+ ## Structured workflows
32
38
 
33
39
  | Workflow | When to Use | Required Reading |
34
40
  |----------|-------------|------------------|
@@ -2,11 +2,24 @@
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
5
+ ## ⚠️ When NOT to use this
6
6
 
7
- If the user just wants a quick browser check (e.g. "log in as X and confirm the dashboard renders"), skip this step. Run `ranger-cli go --url <target> --notes '<goal>'` directly a feature review will be created automatically when one is needed. See the **One-shot verification from user creds** section in the parent `SKILL.md`.
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
8
 
9
- Reach for `ranger-cli create` when the work is multi-scenario or you want to enumerate the user journeys up front for the reviewer.
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`.
10
23
 
11
24
  ## Basic Command
12
25
 
@@ -1,38 +1,51 @@
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
6
 
7
7
  ```bash
8
- ranger-cli go --scenario <N> --notes "<what to verify>"
8
+ RANGER_TEST_USERNAME='alice@example.com' RANGER_TEST_PASSWORD='hunter2' \
9
+ ranger-cli go --base-url <target-url> --notes '<the goal verbatim>'
9
10
  ```
10
11
 
11
- ## Profile resolution
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
+ This is the default path for ad-hoc verification. The CLI:
15
+
16
+ - Materializes a cloud profile from `RANGER_TEST_USERNAME` if one doesn't exist
17
+ - Runs the org's server-side 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
+ Do **not** run `ranger-cli create` first unless the user explicitly asks for a structured feature review with multiple scenarios.
12
22
 
13
- When the user gives you a username + password, set them inline and run `go` — no `profile add` step:
23
+ ## Scenario-driven verification
24
+
25
+ After implementing code against a scenario in an active feature review, verify it:
14
26
 
15
27
  ```bash
16
- RANGER_TEST_USERNAME='alice@example.com' RANGER_TEST_PASSWORD='hunter2' \
17
- ranger-cli go --url <target> --notes '<what to verify>'
28
+ ranger-cli go --scenario <N> --notes "<what to verify>"
18
29
  ```
19
30
 
20
- Resolution order:
31
+ ## Profile resolution order
21
32
 
22
33
  1. `--profile <name>` flag (or `RANGER_PROFILE` env var)
23
34
  2. Saved active profile (`ranger-cli profile use <name>`)
24
35
  3. `RANGER_TEST_USERNAME` (reuses or creates a matching profile)
25
36
  4. The org's sole profile when exactly one exists
26
37
 
27
- ## Required: Active Feature Review
38
+ ## Active feature review (only needed for scenario-driven runs)
28
39
 
29
- `go` requires an active feature review. If you don't have one:
40
+ If you're verifying a scenario (not a one-shot):
30
41
 
31
42
  ```bash
32
43
  ranger-cli list # Find feature reviews to resume
33
44
  ranger-cli resume <id> # Resume a specific feature review
34
45
  ```
35
46
 
47
+ For a one-shot `go --base-url ... --notes '...'`, the CLI handles feature-review creation for you.
48
+
36
49
  ## The Verification Flow
37
50
 
38
51
  1. **Select scenario** - CLI prompts which scenario this verifies
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ranger-testing/ranger-cli",
3
- "version": "2.5.4-alpha.27e3ee8-11",
3
+ "version": "2.5.4-alpha.57338f5-12",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "ranger": "./build/cli.js",