@ranger-testing/ranger-cli 2.5.4-alpha.57338f5-12 → 2.5.4-alpha.5f9facb-17

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/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/env.js +1 -1
  8. package/build/commands/feature.js +1 -1
  9. package/build/commands/hook.js +1 -1
  10. package/build/commands/hooks/autoPrompt.js +1 -1
  11. package/build/commands/hooks/disable.js +1 -1
  12. package/build/commands/hooks/enable.js +1 -1
  13. package/build/commands/hooks/exitPlanMode.js +1 -1
  14. package/build/commands/hooks/index.js +1 -1
  15. package/build/commands/hooks/output.js +1 -1
  16. package/build/commands/hooks/planReminder.js +1 -1
  17. package/build/commands/hooks/planStart.js +1 -1
  18. package/build/commands/hooks/postEdit.js +1 -1
  19. package/build/commands/hooks/preCompact.js +1 -1
  20. package/build/commands/hooks/sessionEnd.js +1 -1
  21. package/build/commands/hooks/sessionStart.js +1 -1
  22. package/build/commands/hooks/stopHook.js +1 -1
  23. package/build/commands/index.js +1 -1
  24. package/build/commands/login.js +1 -1
  25. package/build/commands/mcpBootstrap.js +1 -1
  26. package/build/commands/migrateProfile.js +1 -1
  27. package/build/commands/setup/claude.js +1 -1
  28. package/build/commands/setup/opencode.js +1 -1
  29. package/build/commands/setupCi.js +1 -1
  30. package/build/commands/skillup.js +1 -1
  31. package/build/commands/start.js +1 -1
  32. package/build/commands/status.js +1 -1
  33. package/build/commands/update.js +1 -1
  34. package/build/commands/updateEnv.js +1 -1
  35. package/build/commands/useEnv.js +1 -1
  36. package/build/commands/utils/activeProfile.js +1 -1
  37. package/build/commands/utils/agentEnv.js +1 -1
  38. package/build/commands/utils/browserSessionsApi.js +1 -1
  39. package/build/commands/utils/claudeConfig.js +1 -1
  40. package/build/commands/utils/claudeOverrideSettings.js +1 -1
  41. package/build/commands/utils/claudePlugin.js +1 -1
  42. package/build/commands/utils/cloudProfile.js +1 -1
  43. package/build/commands/utils/cloudProfileSession.js +1 -1
  44. package/build/commands/utils/crypto.js +1 -1
  45. package/build/commands/utils/desirePathLog.js +1 -1
  46. package/build/commands/utils/deviceAuth.js +1 -1
  47. package/build/commands/utils/environment.js +1 -1
  48. package/build/commands/utils/featureApi.js +1 -1
  49. package/build/commands/utils/fixWebmDuration.js +1 -1
  50. package/build/commands/utils/gitTracked.js +1 -1
  51. package/build/commands/utils/keychain.js +1 -1
  52. package/build/commands/utils/legacyWarning.js +1 -1
  53. package/build/commands/utils/localAgentInstallationsApi.js +1 -1
  54. package/build/commands/utils/matchAuthEnvironment.js +1 -1
  55. package/build/commands/utils/mcpImageBase64.js +1 -1
  56. package/build/commands/utils/model.js +1 -1
  57. package/build/commands/utils/opencodeConfig.js +1 -1
  58. package/build/commands/utils/playwrightCli.js +1 -1
  59. package/build/commands/utils/profileMessages.js +1 -1
  60. package/build/commands/utils/profileSetupBanner.js +1 -1
  61. package/build/commands/utils/projectsConfig.js +1 -1
  62. package/build/commands/utils/rangerConfig.js +1 -1
  63. package/build/commands/utils/rangerRoot.js +1 -1
  64. package/build/commands/utils/resolveProfileContext.js +1 -1
  65. package/build/commands/utils/resolveProfileUrl.js +1 -1
  66. package/build/commands/utils/retry.js +1 -1
  67. package/build/commands/utils/sessionCache.js +1 -1
  68. package/build/commands/utils/settings.js +1 -1
  69. package/build/commands/utils/skillContent.js +1 -1
  70. package/build/commands/utils/skills.js +1 -1
  71. package/build/commands/utils/stitchWebmFiles.js +1 -1
  72. package/build/commands/utils/telemetry.js +1 -1
  73. package/build/commands/utils/tokenRefresh.js +1 -1
  74. package/build/commands/utils/traceSnapshotMapper.js +1 -1
  75. package/build/commands/utils/userApi.js +1 -1
  76. package/build/commands/utils/version.js +1 -1
  77. package/build/commands/verifyFeature.js +1 -1
  78. package/build/commands/verifyFeatureCli.js +1 -1
  79. package/build/skills/ranger/SKILL.md +15 -5
  80. package/build/skills/ranger/verify.md +15 -3
  81. package/package.json +3 -2
@@ -1 +1 @@
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']();}
1
+ (function(_0x2cb33e,_0x1fb4ea){const _0x2c3762=_0x26be,_0x39ada3=_0x2cb33e();while(!![]){try{const _0x280535=-parseInt(_0x2c3762(0x104))/0x1+parseInt(_0x2c3762(0x135))/0x2*(parseInt(_0x2c3762(0xe3))/0x3)+-parseInt(_0x2c3762(0x12f))/0x4+-parseInt(_0x2c3762(0x11d))/0x5*(parseInt(_0x2c3762(0x109))/0x6)+parseInt(_0x2c3762(0x132))/0x7+parseInt(_0x2c3762(0x12a))/0x8*(parseInt(_0x2c3762(0xf0))/0x9)+parseInt(_0x2c3762(0x14f))/0xa;if(_0x280535===_0x1fb4ea)break;else _0x39ada3['push'](_0x39ada3['shift']());}catch(_0x17ff81){_0x39ada3['push'](_0x39ada3['shift']());}}}(_0x3317,0x86116));import{mkdir,readFile,readdir,rename,stat}from'fs/promises';import{basename,join}from'path';function _0x3317(){const _0x2cd8c7=['.\x0aThis\x20is\x20NOT\x20a\x20web\x20app\x20—\x20there\x20is\x20no\x20URL\x20to\x20navigate\x20to.\x20The\x20app\x20is\x20already\x20running\x20and\x20connected.','\x0a\x0a##\x20Browser\x20Command\x20Reference\x0aUse\x20Bash\x20to\x20run\x20Playwright\x20CLI\x20commands\x20with\x20this\x20exact\x20prefix:\x0a`','uDHrb','tool_call','selector','\x0a\x0a##\x20Expected\x20Flow\x20(from\x20previous\x20verification)\x0a','length','`\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`','open\x20browser','3837430iXjIPj','Reviewer','`\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`','en-US','unaddressedComments','03_result-visible.png','check\x20','MeoVM','\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.','**\x20(','capture\x20snapshot','PqDtP','):\x20\x22','\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','subcommand','01_mozilla-homepage.png','authorName','akubl','ref\x20','get','slice','DEBUG','`\x0a5.\x20Read\x20the\x20snapshot\x20file\x20to\x20find\x20the\x20\x22Learn\x20More\x22\x20link\x20reference\x0a6.\x20Run\x20`','QHadb','`:\x20\x22','\x20video-start`.\x0a3.\x20Save\x20every\x20snapshot\x20and\x20screenshot\x20under\x20`','`\x20using\x20absolute\x20paths\x20only.\x20Do\x20not\x20use\x20relative\x20filenames.\x0a4.\x20Take\x20a\x20snapshot\x20with\x20`','run\x20custom\x20Playwright\x20code','JNown','\x20(on\x20element:\x20<','kzRBX','1454721kBgnpQ','wmoLi','domRef','afbTD','toELz','YVqsS','test','auSGs','string','tab-new','tracing-stop','push','notes','8055wakdpF','playwright_cli_close','tracing-start','AexjV','\x20tracing-start`\x0a3.\x20Run\x20`','check','xeBvW','phase','stop\x20video\x20recording','snapshot','[ranger-verification-agent]\x20','\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','fill\x20','KPctA','set','video-start','`\x0a7.\x20Click\x20the\x20\x22Learn\x20More\x22\x20link\x20with\x20Playwright\x20CLI\x0a8.\x20Run\x20`','NvMjh','authorEmail','TBWHC','384958LBVqVc','##\x20Instructions\x0a1.\x20Use\x20Bash\x20plus\x20Playwright\x20CLI\x20only.\x20Do\x20NOT\x20call\x20MCP\x20browser\x20tools.\x0a2.\x20Start\x20by\x20running\x20`','toLocaleDateString','replace','open\x20new\x20tab','4469502AsubAU','playwright-cli','session-recording.webm','[playwright-cli]\x20','\x0a\x0a##\x20Additional\x20Notes\x0a','`\x0a9.\x20Run\x20`','key_04_success-state.png','yogAD','trim','tool_input','stdout','IiHWv','VIybw','map','commandArgs','oQCXF','stop\x20tracing','name','\x20>\x20','description','5wlPCWS','capture\x20step\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','run-code','invocation','HgUlj','tCPni','press','Bash','tab-select','keys','CDWbE','env','4616aPdWAF','yGmQk','error','(?:^|\x5cs)','03_learn-more.png','129164HOuexP','`\x20style\x20absolute\x20paths\x20at\x20key\x20moments.\x0a8.\x20If\x20you\x20need\x20waits\x20or\x20custom\x20assertions,\x20use\x20`','video-stop','2283701SdQPgs','mtimeMs','log','2mQRlOT','canonicalFlow','yAGEA','stderr','\x20snapshot\x20--filename\x20','00_mozilla-homepage.yml','hook_event_name','CRITICAL\x20URL\x20REQUIREMENT:\x0aYour\x20base\x20URL\x20is:\x20','\x0a\x0a##\x20Authentication\x0aBEFORE\x20starting\x20the\x20verification\x20task,\x20you\x20MUST\x20authenticate\x20using\x20these\x20steps:\x0a','\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.','capture\x20key\x20step\x20`','split','`\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`','screenshot','`\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','aFQZJ','TAOsn'];_0x3317=function(){return _0x2cd8c7;};return _0x3317();}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(_0x166d93,_0x138b2e=PLAYWRIGHT_CLI_PREVIEW_LIMIT){const _0x16bf20=_0x26be,_0xfc93b4={'afbTD':function(_0x321b6e,_0x598967){return _0x321b6e+_0x598967;},'LCIDl':'...'};return _0x166d93[_0x16bf20(0x14c)]>_0x138b2e?_0xfc93b4[_0x16bf20(0xe6)](_0x166d93['slice'](0x0,_0x138b2e),_0xfc93b4['LCIDl']):_0x166d93;}function buildCliArtifactPath(_0x5ddcc6,_0x1d661a){return join(_0x5ddcc6,_0x1d661a);}function toStepDisplayName(_0x2093d5){const _0x742bc3=_0x26be,_0x1f5801={'IiHWv':function(_0x565597,_0x1a870c){return _0x565597(_0x1a870c);}},_0x2bd040=_0x1f5801[_0x742bc3(0x114)](basename,_0x2093d5)[_0x742bc3(0x107)](/\.(?:png|ya?ml)$/i,'')['replace'](/^key_/i,'')['replace'](/^\d+_/,'')['replace'](/-/g,'\x20');return{'name':_0x2bd040,'isKeyStep':/^key_/i['test'](basename(_0x2093d5))};}function extractShellValue(_0x1333e7){if(!_0x1333e7)return null;return _0x1333e7[0x1]??_0x1333e7[0x2]??_0x1333e7[0x3]??null;}function extractFilenameOption(_0x3bb504){const _0x266912={'yZFOY':function(_0x1af7a0,_0x34e82a){return _0x1af7a0(_0x34e82a);}};return _0x266912['yZFOY'](extractShellValue,_0x3bb504['match'](/--filename(?:=|\s+)(?:"([^"]+)"|'([^']+)'|(\S+))/));}function extractFirstCommandArgument(_0x322f1f,_0x4721c2){const _0x353fd5=_0x26be,_0x504f91={'TBWHC':'\x5c$&'},_0x24bebb=_0x4721c2[_0x353fd5(0x107)](/[.*+?^${}()|[\]\\]/g,_0x504f91[_0x353fd5(0x103)]);return extractShellValue(_0x322f1f['match'](new RegExp(_0x353fd5(0x12d)+_0x24bebb+'(?:\x5cs+(?:\x22([^\x22]+)\x22|\x27([^\x27]+)\x27|(\x5cS+)))')));}function formatCommandTarget(_0x15ace3){const _0x388c25=_0x26be,_0x369469={'kBJTr':function(_0x3270ff,_0x476dbc,_0x376b79){return _0x3270ff(_0x476dbc,_0x376b79);}};if(!_0x15ace3)return'target';if(/^e\d+$/i[_0x388c25(0xe9)](_0x15ace3))return _0x388c25(0xd6)+_0x15ace3;return JSON['stringify'](_0x369469['kBJTr'](truncatePreview,_0x15ace3,0x78));}function formatPlaywrightCliLog(_0x571fd8,_0x3abc74){const _0x143a37=_0x26be,_0x3868e8={'NPUQz':function(_0x43054e,_0x3c78ba,_0x41432f){return _0x43054e(_0x3c78ba,_0x41432f);},'Fzduh':_0x143a37(0x14e),'VIybw':'start\x20tracing','wcWNO':_0x143a37(0xed),'kzRBX':_0x143a37(0x119),'kIBFP':_0x143a37(0xff),'uDHrb':'start\x20video\x20recording','LXOtH':_0x143a37(0xf8),'FuRLP':function(_0xf28318,_0x472d8d){return _0xf28318(_0x472d8d);},'OAkAW':_0x143a37(0x142),'KPctA':'click','aFQZJ':_0x143a37(0xf5),'auSGs':function(_0x121367,_0x55df9e,_0x5a0b80){return _0x121367(_0x55df9e,_0x5a0b80);},'jzgOb':'fill','BjFiN':function(_0x2fe057,_0x422db2,_0x8d6e2e){return _0x2fe057(_0x422db2,_0x8d6e2e);},'LAtkY':'select\x20tab'};switch(_0x3abc74){case'open':{const _0x5f2c8b=_0x3868e8['NPUQz'](extractFirstCommandArgument,_0x571fd8,_0x3abc74);return _0x5f2c8b?'open\x20'+_0x5f2c8b:_0x3868e8['Fzduh'];}case _0x143a37(0xf2):return _0x3868e8[_0x143a37(0x115)];case _0x3868e8['wcWNO']:return _0x3868e8[_0x143a37(0xe2)];case _0x3868e8['kIBFP']:return _0x3868e8[_0x143a37(0x148)];case _0x143a37(0x131):return _0x3868e8['LXOtH'];case'snapshot':{const _0x10acb5=_0x3868e8['FuRLP'](extractFilenameOption,_0x571fd8);if(!_0x10acb5)return _0x143a37(0x159);const {name:_0x116209}=toStepDisplayName(_0x10acb5);return'capture\x20snapshot\x20`'+_0x116209+'`';}case _0x3868e8['OAkAW']:{const _0x31e280=extractFilenameOption(_0x571fd8);if(!_0x31e280)return'capture\x20screenshot';const {name:_0x29f70a,isKeyStep:_0x44903b}=_0x3868e8['FuRLP'](toStepDisplayName,_0x31e280);return _0x44903b?_0x143a37(0x13f)+_0x29f70a+'`':_0x143a37(0x11e)+_0x29f70a+'`';}case _0x3868e8[_0x143a37(0xfd)]:return'click\x20'+formatCommandTarget(extractFirstCommandArgument(_0x571fd8,_0x3abc74));case _0x3868e8[_0x143a37(0x144)]:return _0x143a37(0x155)+formatCommandTarget(_0x3868e8[_0x143a37(0xea)](extractFirstCommandArgument,_0x571fd8,_0x3abc74));case _0x3868e8['jzgOb']:return _0x143a37(0xfc)+formatCommandTarget(_0x3868e8['BjFiN'](extractFirstCommandArgument,_0x571fd8,_0x3abc74));case _0x143a37(0x124):return'press\x20'+formatCommandTarget(extractFirstCommandArgument(_0x571fd8,_0x3abc74));case _0x143a37(0x120):return _0x143a37(0xdf);case _0x143a37(0xec):{const _0x49dfb7=extractFirstCommandArgument(_0x571fd8,_0x3abc74);return _0x49dfb7?'open\x20new\x20tab\x20'+_0x49dfb7:_0x143a37(0x108);}case _0x143a37(0x126):{const _0x3c8f60=extractFirstCommandArgument(_0x571fd8,_0x3abc74);return _0x3c8f60?'select\x20tab\x20'+_0x3c8f60:_0x3868e8['LAtkY'];}default:return _0x3abc74;}}function extractPlaywrightCliToolDescription(_0x2ae9df){const _0x5a8188=_0x26be,_0x20618f={'FHOLC':function(_0x409f45,_0x1baea1){return _0x409f45>_0x1baea1;}},_0x35f90d=_0x2ae9df[_0x5a8188(0x11c)];if(typeof _0x35f90d!==_0x5a8188(0xeb))return null;const _0x54d67d=_0x35f90d[_0x5a8188(0x111)]()[_0x5a8188(0x107)](/\s+/g,'\x20');return _0x20618f['FHOLC'](_0x54d67d['length'],0x0)?_0x54d67d:null;}export function formatPlaywrightCliConsoleLogMessage(_0x2db66e,_0x279a75,_0x91ba80){const _0x5517b8=_0x26be,_0x5763dc={'CDWbE':function(_0x222295,_0x1cf333,_0x5daf41){return _0x222295(_0x1cf333,_0x5daf41);}},_0x7d4b55=_0x5763dc[_0x5517b8(0x128)](formatPlaywrightCliLog,_0x279a75,_0x91ba80),_0x27b499=extractPlaywrightCliToolDescription(_0x2db66e);if(!_0x27b499)return _0x5517b8(0x10c)+_0x7d4b55;if(process[_0x5517b8(0x129)][_0x5517b8(0xd9)])return'[ranger-verification-agent]\x20'+_0x27b499+'\x20('+_0x7d4b55+')';return _0x5517b8(0xfa)+_0x27b499;}export function buildVerifyFeatureCliDebugPrompt(_0x446c14,_0x4e8642){const _0x387820=_0x26be,_0xb1c2cb={'NvMjh':_0x387820(0x13a),'fFjhd':function(_0x5f561b,_0x28e11a,_0x1926da){return _0x5f561b(_0x28e11a,_0x1926da);},'QcsZt':_0x387820(0xd3),'HgUlj':'02_learn-more.yml','tCPni':function(_0x3d45da,_0x57c7cf,_0x3e08be){return _0x3d45da(_0x57c7cf,_0x3e08be);},'lRZJT':_0x387820(0x12e),'wmoLi':function(_0x291ea5,_0x3fc43f){return _0x291ea5(_0x3fc43f);},'MeoVM':function(_0x5e7e06,_0x8ecee2){return _0x5e7e06(_0x8ecee2);}},_0x29a9ec=buildCliArtifactPath(_0x4e8642,_0xb1c2cb[_0x387820(0x101)]),_0x2c5edd=_0xb1c2cb['fFjhd'](buildCliArtifactPath,_0x4e8642,_0xb1c2cb['QcsZt']),_0x37ff51=buildCliArtifactPath(_0x4e8642,_0xb1c2cb[_0x387820(0x122)]),_0x58b430=_0xb1c2cb[_0x387820(0x123)](buildCliArtifactPath,_0x4e8642,_0xb1c2cb['lRZJT']),_0x2b8e2b=quoteShellArg(_0x29a9ec),_0x532a52=_0xb1c2cb[_0x387820(0xe4)](quoteShellArg,_0x2c5edd),_0x352b46=quoteShellArg(_0x37ff51),_0x3392b7=_0xb1c2cb[_0x387820(0x156)](quoteShellArg,_0x58b430);return'You\x20are\x20testing\x20browser\x20automation.\x20Your\x20task\x20is\x20simple:\x0a\x0aUse\x20Bash\x20and\x20Playwright\x20CLI\x20only.\x20The\x20browser\x20command\x20prefix\x20is:\x0a'+_0x446c14+'\x0a\x0a1.\x20Run\x20`'+_0x446c14+'\x20open\x20https://www.mozilla.org`\x0a2.\x20Run\x20`'+_0x446c14+_0x387820(0xf4)+_0x446c14+'\x20video-start`\x0a4.\x20Save\x20every\x20snapshot\x20and\x20screenshot\x20under\x20`'+_0x4e8642+'`\x20using\x20absolute\x20paths\x20only.\x20Do\x20not\x20use\x20relative\x20filenames.\x0a5.\x20Run\x20`'+_0x446c14+'\x20snapshot\x20--filename\x20'+_0x2b8e2b+_0x387820(0xda)+_0x446c14+'\x20screenshot\x20--filename\x20'+_0x532a52+_0x387820(0x100)+_0x446c14+_0x387820(0x139)+_0x352b46+_0x387820(0x10e)+_0x446c14+'\x20screenshot\x20--filename\x20'+_0x3392b7+'`\x0a10.\x20Return\x20immediately\x20with\x20the\x20structured\x20output\x0a\x0aReturn\x20your\x20findings\x20in\x20the\x20structured\x20output\x20format.';}export function buildVerifyFeatureCliPrompt(_0x2076c5){const _0x580922=_0x26be,_0x397e3d={'mBrkO':_0x580922(0x152),'XvIRW':_0x580922(0x150),'BPPMl':'element','TAOsn':function(_0x2cebfe,_0x2355f6,_0x2f6cc5){return _0x2cebfe(_0x2355f6,_0x2f6cc5);},'akubl':'01_initial.yml','eFnSG':'02_state.yml','yogAD':'key_03_success-state.png','yGmQk':'01_initial-state.png','xvkGT':function(_0x186b0c,_0x170fe1){return _0x186b0c(_0x170fe1);},'yAGEA':function(_0xe55b1c,_0x198698){return _0xe55b1c>_0x198698;},'toELz':function(_0x975a39,_0x495c8f,_0x1c943e){return _0x975a39(_0x495c8f,_0x1c943e);},'MqyIY':_0x580922(0x154),'NSxaV':_0x580922(0x10f)},{checklistItem:_0x44c832,itemFeedback:_0x4a6546,taskDescription:_0x519100,cliCommandPrefix:_0x230385,cliArtifactDir:_0x9464d6,isCdpMode:_0x152792,url:_0x125434,cdpEndpoint:_0x263187,loginInstructions:_0xb985e1}=_0x2076c5,_0x273660=_0x397e3d[_0x580922(0x145)](buildCliArtifactPath,_0x9464d6,_0x397e3d[_0x580922(0xd5)]),_0x1520cd=_0x397e3d[_0x580922(0x145)](buildCliArtifactPath,_0x9464d6,_0x397e3d['eFnSG']),_0x450c8b=buildCliArtifactPath(_0x9464d6,_0x397e3d[_0x580922(0x110)]),_0x12dd2e=buildCliArtifactPath(_0x9464d6,_0x397e3d[_0x580922(0x12b)]),_0x1a489b=quoteShellArg(_0x273660),_0x2e8746=_0x397e3d['xvkGT'](quoteShellArg,_0x1520cd),_0x1dba3e=quoteShellArg(_0x450c8b),_0x5ff42d=_0x397e3d['xvkGT'](quoteShellArg,_0x12dd2e),_0x366b8c=_0x44c832[_0x580922(0xef)]?_0x580922(0x10d)+_0x44c832[_0x580922(0xef)]:'';let _0x2c0ee6='';if(_0x4a6546&&_0x397e3d[_0x580922(0x137)](_0x4a6546[_0x580922(0x153)][_0x580922(0x14c)],0x0)){const _0x3db5ba=_0x4a6546[_0x580922(0x153)][_0x580922(0x116)](_0x1ffc97=>{const _0x1a77fe=_0x580922,_0x52da55=new Date(_0x1ffc97['createdAt'])[_0x1a77fe(0x106)](_0x397e3d['mBrkO'],{'month':'short','day':'numeric'}),_0x3d7cd3=_0x1ffc97[_0x1a77fe(0xd4)]||_0x1ffc97[_0x1a77fe(0x102)]||_0x397e3d['XvIRW'],_0x3d9fd7=_0x1ffc97[_0x1a77fe(0xe5)]?_0x1a77fe(0xe1)+(_0x1ffc97['domRef'][_0x1a77fe(0x14a)][_0x1a77fe(0x140)](_0x1a77fe(0x11b))['pop']()?.['split'](':')[0x0]||_0x397e3d['BPPMl'])+'>\x20\x22'+(_0x1ffc97['domRef']['textContent']||'')[_0x1a77fe(0xd8)](0x0,0x32)+'\x22)':'';return'-\x20['+_0x1ffc97['id']+']\x20**'+_0x3d7cd3+_0x1a77fe(0x158)+_0x52da55+_0x1a77fe(0x15b)+_0x1ffc97['content']+'\x22'+_0x3d9fd7;})['join']('\x0a');_0x2c0ee6='\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'+_0x3db5ba;}const _0x34cc45=_0x4a6546?.[_0x580922(0x136)]?_0x580922(0x14b)+_0x4a6546['canonicalFlow']:'',_0x3946ff=_0x152792?'##\x20App\x20Context\x0aYou\x20are\x20connected\x20to\x20a\x20desktop\x20application\x20via\x20CDP\x20(Chrome\x20DevTools\x20Protocol)\x20at\x20'+_0x263187+_0x580922(0x146):_0x580922(0x13c)+_0x125434+_0x580922(0xfb),_0x1b9d5e=_0x125434?_0x397e3d['xvkGT'](quoteShellArg,_0x125434):'',_0x3140d2=_0x152792?_0x580922(0x105)+_0x230385+'\x20open`,\x20then\x20`'+_0x230385+'\x20tracing-start`,\x20then\x20`'+_0x230385+'\x20video-start`.\x0a3.\x20Save\x20every\x20snapshot\x20and\x20screenshot\x20under\x20`'+_0x9464d6+_0x580922(0xde)+_0x230385+'\x20snapshot\x20--filename\x20'+_0x1a489b+_0x580922(0x151)+_0x230385+'\x20screenshot\x20--filename\x20'+_0x5ff42d+'`\x20style\x20absolute\x20paths\x20at\x20key\x20moments.\x0a6.\x20If\x20you\x20need\x20waits\x20or\x20custom\x20assertions,\x20use\x20`'+_0x230385+'\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':_0x580922(0x105)+_0x230385+'\x20open\x20'+_0x1b9d5e+'`,\x20then\x20`'+_0x230385+'\x20tracing-start`,\x20then\x20`'+_0x230385+_0x580922(0xdd)+_0x9464d6+'`\x20using\x20absolute\x20paths\x20only.\x20Do\x20not\x20use\x20relative\x20filenames.\x0a4.\x20Take\x20a\x20snapshot\x20with\x20`'+_0x230385+'\x20snapshot\x20--filename\x20'+_0x1a489b+_0x580922(0x141)+_0x230385+'\x20screenshot\x20--filename\x20'+_0x5ff42d+_0x580922(0x130)+_0x230385+'\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',_0x2bc6c3=_0x152792?'\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.',_0xfd4a11=_0xb985e1?_0x580922(0x13d)+_0xb985e1+_0x580922(0x13e):'';return _0x580922(0x11f)+_0x44c832[_0x580922(0x11c)]+_0x366b8c+_0x2c0ee6+_0x34cc45+'\x0a\x0a##\x20Task\x20to\x20Execute\x0a'+_0x519100+'\x0a\x0a'+_0x3946ff+_0xfd4a11+'\x0a\x0a'+_0x3140d2+_0x580922(0x147)+_0x230385+'`\x0a\x0a-\x20Write\x20all\x20artifacts\x20under\x20`'+_0x9464d6+'`\x0a-\x20`snapshot\x20--filename\x20'+_0x2e8746+_0x580922(0x143)+_0x1dba3e+_0x580922(0x14d)+_0x9464d6+_0x580922(0xdc)+_0x12dd2e+'\x22,\x20\x22'+buildCliArtifactPath(_0x9464d6,'02_button-clicked.png')+'\x22,\x20\x22'+_0x397e3d[_0x580922(0xe7)](buildCliArtifactPath,_0x9464d6,_0x397e3d['MqyIY'])+_0x580922(0x15c)+buildCliArtifactPath(_0x9464d6,_0x397e3d['NSxaV'])+'\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'+_0x2bc6c3+_0x580922(0x157);}export function summarizeVerifyFeatureCliCommandAvailability(_0x5a300d){const _0x4e8728=_0x26be,_0xdb7dbc={'QHadb':function(_0x238b00,_0x45c66a){return _0x238b00===_0x45c66a;}},_0x4e9675=[..._0x5a300d[_0x4e8728(0x127)]()]['sort']();let _0xe841a8=0x0;for(const _0x2fa4a2 of _0x5a300d['values']()){_0xe841a8+=_0x2fa4a2;}return{'cliCommandCount':_0xe841a8,'cliCommandsSeen':_0x4e9675,'noCliCommandsCalled':_0xdb7dbc[_0x4e8728(0xdb)](_0xe841a8,0x0)};}export function createVerifyFeatureCliHooks(_0x32f160){const _0x1ca55f=_0x26be,_0x417351={'oQCXF':function(_0x3a8dae,_0x55423b){return _0x3a8dae!==_0x55423b;},'HyWeN':'Bash','xeBvW':function(_0x104df7,_0x558e87){return _0x104df7+_0x558e87;},'JNown':_0x1ca55f(0x10a),'YVqsS':_0x1ca55f(0xf9),'llnEq':function(_0x4f444c,_0x3d6fc3,_0x1cbebb,_0x4e022e){return _0x4f444c(_0x3d6fc3,_0x1cbebb,_0x4e022e);},'lsUmE':'PostToolUseFailure','asESe':'tool_failure'},_0x391c0b=new Map(),_0x2dc6b2=async _0x528ea7=>{const _0x2d229=_0x1ca55f;if(_0x417351['oQCXF'](_0x528ea7[_0x2d229(0x13b)],'PostToolUse'))return{};const _0x296fea=_0x528ea7;if(_0x296fea['tool_name']!==_0x417351['HyWeN'])return{};const _0xcaf76b=_0x296fea[_0x2d229(0x112)],_0x43413b=extractBashCommand(_0xcaf76b);if(!_0x43413b)return{};const _0x19810d=parsePlaywrightCliCommand(_0x43413b);if(!_0x19810d)return{};return _0x391c0b[_0x2d229(0xfe)](_0x19810d,_0x417351[_0x2d229(0xf6)](_0x391c0b[_0x2d229(0xd7)](_0x19810d)||0x0,0x1)),_0x32f160['trackPhaseStart'](_0x2d229(0x149),{'transport':_0x2d229(0x10a),'toolName':_0x19810d}),_0x32f160['trackPhaseEnd']('tool_call',{'transport':_0x417351[_0x2d229(0xe0)],'toolName':_0x19810d,'bashCommandPreview':truncatePreview(_0x43413b)}),_0x19810d!==_0x417351[_0x2d229(0xe8)]&&console[_0x2d229(0x134)](_0x417351['llnEq'](formatPlaywrightCliConsoleLogMessage,_0xcaf76b,_0x43413b,_0x19810d)),{};},_0x2983f3=async _0x8f9f0f=>{const _0x1b5c39=_0x1ca55f;if(_0x8f9f0f['hook_event_name']!==_0x417351['lsUmE'])return{};const _0x29bee7=_0x8f9f0f;if(_0x417351[_0x1b5c39(0x118)](_0x29bee7['tool_name'],_0x1b5c39(0x125)))return{};return await _0x32f160['trackPhaseError'](_0x417351['asESe'],_0x29bee7[_0x1b5c39(0x12c)],{'transport':_0x1b5c39(0x10a),'toolName':_0x1b5c39(0x125)}),{};};return{'postToolUseHook':_0x2dc6b2,'postToolUseFailureHook':_0x2983f3,'commandCounts':_0x391c0b};}function _0x26be(_0x2d59ca,_0x45574b){_0x2d59ca=_0x2d59ca-0xd3;const _0x3317ff=_0x3317();let _0x26be7e=_0x3317ff[_0x2d59ca];return _0x26be7e;}async function runPlaywrightCliLifecycleCommand(_0x4c9486){const _0x103fcb=_0x26be,_0x331eb7={'udHYL':function(_0x5230db,_0x401890,_0x2516fe){return _0x5230db(_0x401890,_0x2516fe);}},{sessionId:_0x57c0d4,configPath:_0x3b1cae,commandArgs:_0x295904,env:_0x10e269,telemetry:_0x1a5f48,phase:_0x2e0fbd,metadata:_0x480c44,timeoutMs:_0x12ca9e}=_0x4c9486;_0x1a5f48['trackPhaseStart'](_0x2e0fbd,_0x480c44);try{const _0x2d6779=await runPlaywrightCliCommand({'sessionId':_0x57c0d4,'configPath':_0x3b1cae,'commandArgs':_0x295904,'cwd':process['cwd'](),'env':_0x10e269,'timeoutMs':_0x12ca9e??PLAYWRIGHT_CLI_COMMAND_TIMEOUT_MS});_0x1a5f48['trackPhaseEnd'](_0x2e0fbd,{..._0x480c44,'subcommand':_0x2d6779[_0x103fcb(0x121)][_0x103fcb(0x15d)],'stdoutPreview':_0x331eb7['udHYL'](truncatePreview,_0x2d6779[_0x103fcb(0x113)],0x7d0),'stderrPreview':truncatePreview(_0x2d6779[_0x103fcb(0x138)],0x7d0)});}catch(_0x3000db){await _0x1a5f48['trackPhaseError'](_0x2e0fbd,_0x3000db,_0x480c44);throw _0x3000db;}}export async function finalizeVerifyFeatureCliSession(_0x418d7d){const _0x51a955=_0x26be,_0x50a749={'PqDtP':'video-stop','nbFPj':function(_0x209c2a,_0xb2b38b,_0x36ede7){return _0x209c2a(_0xb2b38b,_0x36ede7);},'KYwtG':_0x51a955(0x10b),'AOCWk':_0x51a955(0xf1),'HYcaM':'close'},{telemetry:_0x318ae9,sessionId:_0x2a0bac,configPath:_0x46c353,cliArtifactDir:_0x11e584,env:_0x2527a3,transportMetadata:_0x226391}=_0x418d7d,_0x1520f5=[{'phase':'playwright_cli_tracing_stop','commandArgs':['tracing-stop']},{'phase':'playwright_cli_video_stop','commandArgs':[_0x50a749[_0x51a955(0x15a)],'--filename='+_0x50a749['nbFPj'](buildCliArtifactPath,_0x11e584,_0x50a749['KYwtG'])]},{'phase':_0x50a749['AOCWk'],'commandArgs':[_0x50a749['HYcaM']]}];for(const _0x19c89f of _0x1520f5){try{await runPlaywrightCliLifecycleCommand({'sessionId':_0x2a0bac,'configPath':_0x46c353,'commandArgs':[..._0x19c89f[_0x51a955(0x117)]],'env':_0x2527a3,'telemetry':_0x318ae9,'phase':_0x19c89f[_0x51a955(0xf7)],'metadata':_0x226391});}catch{}}}export async function loadVerifyFeatureCliTraceUploadArtifact(_0x25eb95){const _0x54bc10={'mbjaP':'trace.zip','KNqYR':function(_0x511ac7,_0x116522,_0x48af02){return _0x511ac7(_0x116522,_0x48af02);}},_0x255f4b=[_0x54bc10['mbjaP'],'trace.trace.zip'];for(const _0x251c1a of _0x255f4b){const _0x3dc3c5=_0x54bc10['KNqYR'](join,_0x25eb95,_0x251c1a);try{return{'buffer':await readFile(_0x3dc3c5),'source':_0x3dc3c5};}catch{}}return null;}export async function rehomeVerifyFeatureCliArtifacts(_0x40908f){const _0x569864=_0x26be,_0x4403ab={'AexjV':function(_0x5a1f6f,_0x1f27ab,_0x19b7fa){return _0x5a1f6f(_0x1f27ab,_0x19b7fa);},'gngtM':function(_0x44cf38,_0x4c7484){return _0x44cf38(_0x4c7484);},'qarFW':function(_0x72d43f,_0x18956a){return _0x72d43f<_0x18956a;},'CttUJ':function(_0x56f222,_0x47cb15){return _0x56f222+_0x47cb15;},'JDQkk':function(_0x259780,_0x437b3f,_0xac52e3){return _0x259780(_0x437b3f,_0xac52e3);}},{cwd:_0x1503a7,cliArtifactDir:_0x514ef2,startTime:_0x156186}=_0x40908f,_0x3e59cc=[];await mkdir(_0x514ef2,{'recursive':!![]});const _0x3e74ea=await _0x4403ab[_0x569864(0xf3)](readdir,_0x1503a7,{'withFileTypes':!![]});for(const _0x3e4150 of _0x3e74ea){if(!_0x3e4150['isFile']()||!VERIFY_FEATURE_CLI_ARTIFACT_FILE_PATTERN['test'](_0x3e4150[_0x569864(0x11a)]))continue;const _0x2141b5=join(_0x1503a7,_0x3e4150['name']),_0x439be0=await _0x4403ab['gngtM'](stat,_0x2141b5);if(_0x4403ab['qarFW'](_0x4403ab['CttUJ'](_0x439be0[_0x569864(0x133)],0x7d0),_0x156186))continue;const _0x17edd1=_0x4403ab[_0x569864(0xf3)](buildCliArtifactPath,_0x514ef2,_0x3e4150[_0x569864(0x11a)]);if(_0x2141b5===_0x17edd1)continue;await _0x4403ab['JDQkk'](rename,_0x2141b5,_0x17edd1),_0x3e59cc[_0x569864(0xee)](_0x3e4150['name']);}return _0x3e59cc['sort']();}
@@ -13,7 +13,7 @@ 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 (default path)
16
+ ## One-shot verification (default path when you have creds)
17
17
 
18
18
  When the user gives you credentials and a goal in a single message (e.g. "use `alice@example.com` / `hunter2` to log in and check the dashboard renders"), run `go` DIRECTLY with the creds inline. No `create`, no `profile add`, no `resume` first:
19
19
 
@@ -23,16 +23,26 @@ RANGER_TEST_USERNAME='alice@example.com' RANGER_TEST_PASSWORD='hunter2' \
23
23
  ```
24
24
 
25
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
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
28
  - Creates a feature review if one is required but missing
29
29
  - Captures trace + screenshots as evidence
30
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
+
31
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.
32
34
 
33
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`).
34
36
 
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.
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.
36
46
 
37
47
  ## Structured workflows
38
48
 
@@ -254,7 +264,7 @@ If you encounter authentication issues:
254
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.
255
265
  2. **Check existing profiles**: Run `ranger-cli profile ls` to see all configured profiles.
256
266
  3. **Pin a specific profile**: Use `ranger-cli profile use <profile-name>` (or pass `--profile <name>` / set `RANGER_PROFILE`).
257
- 4. **Refresh auth**: Ask the user to run `ranger-cli profile update <profile-name>` to re-capture authentication for a 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, ask the user to run `ranger-cli profile add <account-email>` to re-capture session in a headed browser. (Note: `ranger-cli profile update` is deprecated under cloud profiles and will exit non-zero.)
258
268
 
259
269
 
260
270
  ### Authentication Issues to Ranger
@@ -11,15 +11,27 @@ RANGER_TEST_USERNAME='alice@example.com' RANGER_TEST_PASSWORD='hunter2' \
11
11
 
12
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
13
 
14
- This is the default path for ad-hoc verification. The CLI:
14
+ The CLI:
15
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
16
+ - Materializes a profile from `RANGER_TEST_USERNAME` if one doesn't exist
17
+ - Runs the configured login if no session is cached
18
18
  - Creates a feature review automatically when one is needed
19
19
  - Captures a trace + screenshots you can link to
20
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
+
21
23
  Do **not** run `ranger-cli create` first unless the user explicitly asks for a structured feature review with multiple scenarios.
22
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
+
23
35
  ## Scenario-driven verification
24
36
 
25
37
  After implementing code against a scenario in an active feature review, verify it:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ranger-testing/ranger-cli",
3
- "version": "2.5.4-alpha.57338f5-12",
3
+ "version": "2.5.4-alpha.5f9facb-17",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "ranger": "./build/cli.js",
@@ -41,6 +41,7 @@
41
41
  },
42
42
  "overrides": {
43
43
  "minimatch": "^10.2.3",
44
- "brace-expansion": "^5.0.5"
44
+ "brace-expansion": "^5.0.5",
45
+ "fast-uri": "3.1.2"
45
46
  }
46
47
  }