@ranger-testing/ranger-cli 2.5.4-alpha.36a12ca-10 → 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(_0x332bdd,_0x28c3d9){const _0x1e212c=_0x579f,_0x19f181=_0x332bdd();while(!![]){try{const _0xe28e3a=-parseInt(_0x1e212c(0x15a))/0x1+parseInt(_0x1e212c(0x192))/0x2*(parseInt(_0x1e212c(0x194))/0x3)+-parseInt(_0x1e212c(0x14b))/0x4*(-parseInt(_0x1e212c(0x139))/0x5)+-parseInt(_0x1e212c(0x1b3))/0x6*(parseInt(_0x1e212c(0x1c2))/0x7)+-parseInt(_0x1e212c(0x137))/0x8+parseInt(_0x1e212c(0x19d))/0x9+parseInt(_0x1e212c(0x18f))/0xa*(parseInt(_0x1e212c(0x174))/0xb);if(_0xe28e3a===_0x28c3d9)break;else _0x19f181['push'](_0x19f181['shift']());}catch(_0x29cb1a){_0x19f181['push'](_0x19f181['shift']());}}}(_0x3cab,0x77b99));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(_0x5e3133,_0x140eee=PLAYWRIGHT_CLI_PREVIEW_LIMIT){const _0x340c52=_0x579f,_0x23b6d8={'PepjR':function(_0x5d6252,_0x473748){return _0x5d6252+_0x473748;},'USCVK':_0x340c52(0x147)};return _0x5e3133[_0x340c52(0x16a)]>_0x140eee?_0x23b6d8[_0x340c52(0x143)](_0x5e3133['slice'](0x0,_0x140eee),_0x23b6d8['USCVK']):_0x5e3133;}function buildCliArtifactPath(_0x23a768,_0x2335dd){return join(_0x23a768,_0x2335dd);}function toStepDisplayName(_0xa463fa){const _0x433236=_0x579f,_0x5a73ed={'wTGJb':function(_0x26a7b5,_0x3d602b){return _0x26a7b5(_0x3d602b);}},_0x2f9036=basename(_0xa463fa)[_0x433236(0x167)](/\.(?:png|ya?ml)$/i,'')[_0x433236(0x167)](/^key_/i,'')['replace'](/^\d+_/,'')[_0x433236(0x167)](/-/g,'\x20');return{'name':_0x2f9036,'isKeyStep':/^key_/i[_0x433236(0x150)](_0x5a73ed['wTGJb'](basename,_0xa463fa))};}function extractShellValue(_0x2bbbaa){if(!_0x2bbbaa)return null;return _0x2bbbaa[0x1]??_0x2bbbaa[0x2]??_0x2bbbaa[0x3]??null;}function extractFilenameOption(_0x18e571){const _0x5f11c0={'RmtSR':function(_0x237261,_0x42c9b2){return _0x237261(_0x42c9b2);}};return _0x5f11c0['RmtSR'](extractShellValue,_0x18e571['match'](/--filename(?:=|\s+)(?:"([^"]+)"|'([^']+)'|(\S+))/));}function _0x579f(_0x5bb7ba,_0x3ef4c8){_0x5bb7ba=_0x5bb7ba-0x137;const _0x3cab79=_0x3cab();let _0x579fb8=_0x3cab79[_0x5bb7ba];return _0x579fb8;}function extractFirstCommandArgument(_0x3f9800,_0x1738c0){const _0x4953f2=_0x579f,_0x2e1344={'yUqna':function(_0x5c8255,_0x20ee86){return _0x5c8255(_0x20ee86);}},_0xb514be=_0x1738c0['replace'](/[.*+?^${}()|[\]\\]/g,_0x4953f2(0x173));return _0x2e1344['yUqna'](extractShellValue,_0x3f9800['match'](new RegExp(_0x4953f2(0x17d)+_0xb514be+'(?:\x5cs+(?:\x22([^\x22]+)\x22|\x27([^\x27]+)\x27|(\x5cS+)))')));}function formatCommandTarget(_0x17574e){if(!_0x17574e)return'target';if(/^e\d+$/i['test'](_0x17574e))return'ref\x20'+_0x17574e;return JSON['stringify'](truncatePreview(_0x17574e,0x78));}function _0x3cab(){const _0x3f1256=['\x20open\x20https://www.mozilla.org`\x0a2.\x20Run\x20`','domRef','xeMQV','authorName','open\x20','[ranger-verification-agent]\x20','`\x0a10.\x20Return\x20immediately\x20with\x20the\x20structured\x20output\x0a\x0aReturn\x20your\x20findings\x20in\x20the\x20structured\x20output\x20format.','trace.zip','nWShZ','saEgq','tool_failure','playwright-cli','sort','stop\x20tracing','OdJMp','ucBZy','1513750UoPvXC','uhCCo','`\x20using\x20absolute\x20paths\x20only.\x20Do\x20not\x20use\x20relative\x20filenames.\x0a4.\x20Take\x20a\x20snapshot\x20with\x20`','436906pbyzHZ','trackPhaseStart','12fzwCBp','open','start\x20video\x20recording','press\x20','key_03_success-state.png','get','oiHoY','tool_name','`\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`','2406555MhrZpY','video-stop','hVBWI','--filename=','push','aKlsn','##\x20Instructions\x0a1.\x20Use\x20Bash\x20plus\x20Playwright\x20CLI\x20only.\x20Do\x20NOT\x20call\x20MCP\x20browser\x20tools.\x0a2.\x20Start\x20by\x20running\x20`','keys','PzKsV','gEODJ','Bash','):\x20\x22','\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','01_initial.yml','\x20(on\x20element:\x20<','hook_event_name','\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','jFJEd','**\x20(','\x0a\x0a##\x20Expected\x20Flow\x20(from\x20previous\x20verification)\x0a','>\x20\x22','toLocaleDateString','4030494tTvCas','fill\x20','set','dmWNK','subcommand','stop\x20video\x20recording','isFile','`\x20style\x20absolute\x20paths\x20at\x20key\x20moments.\x0a6.\x20If\x20you\x20need\x20waits\x20or\x20custom\x20assertions,\x20use\x20`','`,\x20then\x20`','select\x20tab','02_state.yml','cNHPf','trackPhaseError','`\x0a\x0a-\x20Write\x20all\x20artifacts\x20under\x20`','HTRMc','7Geuplk','6572344jSiZnk','PaOXh','5yQwdWz','\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','rpvOG','cwd','khzau','rzHmF','short','capture\x20key\x20step\x20`','playwright_cli_tracing_stop','\x20snapshot\x20--filename\x20','PepjR','xWWit','IAkiU','\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.','...','start\x20tracing','BBlci','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','353824wPoDfv','lvrHF','01_mozilla-homepage.png','\x20screenshot\x20--filename\x20','tracing-stop','test','\x22,\x20\x22','key_04_success-state.png','QenKC','mtimeMs','DARXT','click\x20','log','unaddressedComments','opbdG','305603YhLeEd','tool_input','name','capture\x20step\x20`','click','tab-select','open\x20new\x20tab','notes','\x20tracing-start`,\x20then\x20`','\x0a\x0a##\x20Additional\x20Notes\x0a','string','description','xRjdc','replace','PostToolUseFailure','map','length','agtin','\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','VUJyZ','03_result-visible.png','NgWFl','GQvPl','YZVEE','capture\x20screenshot','\x5c$&','77xFMzOo','ITrhh','You\x20are\x20testing\x20browser\x20automation.\x20Your\x20task\x20is\x20simple:\x0a\x0aUse\x20Bash\x20and\x20Playwright\x20CLI\x20only.\x20The\x20browser\x20command\x20prefix\x20is:\x0a','PcpfE','UmBtE','fill','.\x0aThis\x20is\x20NOT\x20a\x20web\x20app\x20—\x20there\x20is\x20no\x20URL\x20to\x20navigate\x20to.\x20The\x20app\x20is\x20already\x20running\x20and\x20connected.','video-start','DEBUG','(?:^|\x5cs)','\x20video-start`.\x0a3.\x20Save\x20every\x20snapshot\x20and\x20screenshot\x20under\x20`'];_0x3cab=function(){return _0x3f1256;};return _0x3cab();}function formatPlaywrightCliLog(_0x1b5e90,_0x4fb81f){const _0x49d484=_0x579f,_0x364fcb={'bmdDC':_0x49d484(0x195),'oiHoY':'open\x20browser','nWShZ':'tracing-start','opbdG':_0x49d484(0x148),'xkgvw':_0x49d484(0x14f),'cNHPf':_0x49d484(0x17b),'hVBWI':_0x49d484(0x196),'rzHmF':_0x49d484(0x19e),'pDBtY':_0x49d484(0x1b8),'LLGKG':'snapshot','rpvOG':function(_0x521354,_0x3400e7){return _0x521354(_0x3400e7);},'QenKC':'capture\x20snapshot','uhCCo':function(_0x3b8d39,_0x4dd0ab){return _0x3b8d39(_0x4dd0ab);},'lvrHF':'screenshot','aKlsn':_0x49d484(0x172),'PzKsV':function(_0x2f4f14,_0x276f30){return _0x2f4f14(_0x276f30);},'PaOXh':function(_0xb7e4ae,_0x2624fd,_0xa4a91e){return _0xb7e4ae(_0x2624fd,_0xa4a91e);},'ITrhh':'run-code','BBlci':'tab-new','jFJEd':_0x49d484(0x1bc)};switch(_0x4fb81f){case _0x364fcb['bmdDC']:{const _0x170c6d=extractFirstCommandArgument(_0x1b5e90,_0x4fb81f);return _0x170c6d?_0x49d484(0x183)+_0x170c6d:_0x364fcb[_0x49d484(0x19a)];}case _0x364fcb[_0x49d484(0x187)]:return _0x364fcb[_0x49d484(0x159)];case _0x364fcb['xkgvw']:return _0x49d484(0x18c);case _0x364fcb[_0x49d484(0x1be)]:return _0x364fcb[_0x49d484(0x19f)];case _0x364fcb[_0x49d484(0x13e)]:return _0x364fcb['pDBtY'];case _0x364fcb['LLGKG']:{const _0x216959=_0x364fcb[_0x49d484(0x13b)](extractFilenameOption,_0x1b5e90);if(!_0x216959)return _0x364fcb[_0x49d484(0x153)];const {name:_0x42aa0a}=_0x364fcb['uhCCo'](toStepDisplayName,_0x216959);return'capture\x20snapshot\x20`'+_0x42aa0a+'`';}case _0x364fcb[_0x49d484(0x14c)]:{const _0x1c8ea9=_0x364fcb['rpvOG'](extractFilenameOption,_0x1b5e90);if(!_0x1c8ea9)return _0x364fcb[_0x49d484(0x1a2)];const {name:_0x51a607,isKeyStep:_0x59fae6}=toStepDisplayName(_0x1c8ea9);return _0x59fae6?_0x49d484(0x140)+_0x51a607+'`':_0x49d484(0x15d)+_0x51a607+'`';}case _0x49d484(0x15e):return _0x49d484(0x156)+_0x364fcb[_0x49d484(0x1a5)](formatCommandTarget,_0x364fcb['PaOXh'](extractFirstCommandArgument,_0x1b5e90,_0x4fb81f));case'check':return'check\x20'+formatCommandTarget(extractFirstCommandArgument(_0x1b5e90,_0x4fb81f));case _0x49d484(0x179):return _0x49d484(0x1b4)+formatCommandTarget(_0x364fcb['PaOXh'](extractFirstCommandArgument,_0x1b5e90,_0x4fb81f));case'press':return _0x49d484(0x197)+_0x364fcb[_0x49d484(0x190)](formatCommandTarget,_0x364fcb[_0x49d484(0x138)](extractFirstCommandArgument,_0x1b5e90,_0x4fb81f));case _0x364fcb[_0x49d484(0x175)]:return'run\x20custom\x20Playwright\x20code';case _0x364fcb[_0x49d484(0x149)]:{const _0x27496c=extractFirstCommandArgument(_0x1b5e90,_0x4fb81f);return _0x27496c?'open\x20new\x20tab\x20'+_0x27496c:_0x49d484(0x160);}case _0x49d484(0x15f):{const _0x4d16ee=_0x364fcb[_0x49d484(0x138)](extractFirstCommandArgument,_0x1b5e90,_0x4fb81f);return _0x4d16ee?'select\x20tab\x20'+_0x4d16ee:_0x364fcb[_0x49d484(0x1ae)];}default:return _0x4fb81f;}}function extractPlaywrightCliToolDescription(_0x365b58){const _0x1f98ca=_0x579f,_0x377311={'DARXT':function(_0x228378,_0x4547e3){return _0x228378!==_0x4547e3;}},_0x877323=_0x365b58['description'];if(_0x377311[_0x1f98ca(0x155)](typeof _0x877323,_0x1f98ca(0x164)))return null;const _0x2a4d4e=_0x877323['trim']()['replace'](/\s+/g,'\x20');return _0x2a4d4e['length']>0x0?_0x2a4d4e:null;}export function formatPlaywrightCliConsoleLogMessage(_0x2de0f3,_0x15bd21,_0x8fde14){const _0x52ab03=_0x579f,_0x149489={'PZsmK':function(_0x427b63,_0x3f22d6,_0x50f95f){return _0x427b63(_0x3f22d6,_0x50f95f);},'zTKAj':function(_0x4a1605,_0xac16ed){return _0x4a1605(_0xac16ed);}},_0x2ddf74=_0x149489['PZsmK'](formatPlaywrightCliLog,_0x15bd21,_0x8fde14),_0x597a35=_0x149489['zTKAj'](extractPlaywrightCliToolDescription,_0x2de0f3);if(!_0x597a35)return'[playwright-cli]\x20'+_0x2ddf74;if(process['env'][_0x52ab03(0x17c)])return'[ranger-verification-agent]\x20'+_0x597a35+'\x20('+_0x2ddf74+')';return _0x52ab03(0x184)+_0x597a35;}export function buildVerifyFeatureCliDebugPrompt(_0x5ee63a,_0x14bbc8){const _0x253242=_0x579f,_0x35167b={'tllLQ':function(_0x26b0d0,_0x33ea97,_0x582b2f){return _0x26b0d0(_0x33ea97,_0x582b2f);},'xRjdc':'02_learn-more.yml','TPHBz':'03_learn-more.png','NgWFl':function(_0xed4e12,_0x479ba3){return _0xed4e12(_0x479ba3);}},_0x138e84=buildCliArtifactPath(_0x14bbc8,'00_mozilla-homepage.yml'),_0x61b43b=_0x35167b['tllLQ'](buildCliArtifactPath,_0x14bbc8,_0x253242(0x14d)),_0x3f11d8=buildCliArtifactPath(_0x14bbc8,_0x35167b[_0x253242(0x166)]),_0x38135c=_0x35167b['tllLQ'](buildCliArtifactPath,_0x14bbc8,_0x35167b['TPHBz']),_0x13b660=quoteShellArg(_0x138e84),_0x1d6b49=_0x35167b[_0x253242(0x16f)](quoteShellArg,_0x61b43b),_0x176a6b=quoteShellArg(_0x3f11d8),_0x36bba3=_0x35167b['NgWFl'](quoteShellArg,_0x38135c);return _0x253242(0x176)+_0x5ee63a+'\x0a\x0a1.\x20Run\x20`'+_0x5ee63a+_0x253242(0x17f)+_0x5ee63a+'\x20tracing-start`\x0a3.\x20Run\x20`'+_0x5ee63a+'\x20video-start`\x0a4.\x20Save\x20every\x20snapshot\x20and\x20screenshot\x20under\x20`'+_0x14bbc8+'`\x20using\x20absolute\x20paths\x20only.\x20Do\x20not\x20use\x20relative\x20filenames.\x0a5.\x20Run\x20`'+_0x5ee63a+_0x253242(0x142)+_0x13b660+'`\x0a5.\x20Read\x20the\x20snapshot\x20file\x20to\x20find\x20the\x20\x22Learn\x20More\x22\x20link\x20reference\x0a6.\x20Run\x20`'+_0x5ee63a+'\x20screenshot\x20--filename\x20'+_0x1d6b49+'`\x0a7.\x20Click\x20the\x20\x22Learn\x20More\x22\x20link\x20with\x20Playwright\x20CLI\x0a8.\x20Run\x20`'+_0x5ee63a+_0x253242(0x142)+_0x176a6b+'`\x0a9.\x20Run\x20`'+_0x5ee63a+_0x253242(0x14e)+_0x36bba3+_0x253242(0x185);}export function buildVerifyFeatureCliPrompt(_0x547c51){const _0x48c4b5=_0x579f,_0x32e98e={'ucBZy':'en-US','Daykv':_0x48c4b5(0x13f),'koiif':'Reviewer','khzau':function(_0x26110d,_0xf4fa46,_0x374f2){return _0x26110d(_0xf4fa46,_0x374f2);},'zaofY':_0x48c4b5(0x1aa),'xeMQV':function(_0x155efb,_0x19292f){return _0x155efb(_0x19292f);},'dmWNK':function(_0x20a27e,_0x221285){return _0x20a27e>_0x221285;},'HwnGP':function(_0x1d5278,_0x599d59,_0x2dc21a){return _0x1d5278(_0x599d59,_0x2dc21a);},'ypVOX':_0x48c4b5(0x16e)},{checklistItem:_0x348a8a,itemFeedback:_0x59ee26,taskDescription:_0x308155,cliCommandPrefix:_0x449502,cliArtifactDir:_0x154267,isCdpMode:_0xadb6f9,url:_0x370015,cdpEndpoint:_0x5180c3,loginInstructions:_0x3e6564}=_0x547c51,_0x50ab21=_0x32e98e[_0x48c4b5(0x13d)](buildCliArtifactPath,_0x154267,_0x32e98e['zaofY']),_0x12b999=buildCliArtifactPath(_0x154267,_0x48c4b5(0x1bd)),_0x40af24=buildCliArtifactPath(_0x154267,_0x48c4b5(0x198)),_0x24934c=_0x32e98e['khzau'](buildCliArtifactPath,_0x154267,'01_initial-state.png'),_0xafae38=quoteShellArg(_0x50ab21),_0x2756f7=quoteShellArg(_0x12b999),_0x485b15=_0x32e98e['xeMQV'](quoteShellArg,_0x40af24),_0xc7b746=quoteShellArg(_0x24934c),_0x74525a=_0x348a8a['notes']?_0x48c4b5(0x163)+_0x348a8a[_0x48c4b5(0x161)]:'';let _0x49609c='';if(_0x59ee26&&_0x32e98e[_0x48c4b5(0x1b6)](_0x59ee26[_0x48c4b5(0x158)]['length'],0x0)){const _0x2a978a=_0x59ee26[_0x48c4b5(0x158)][_0x48c4b5(0x169)](_0x35d5e7=>{const _0x14865c=_0x48c4b5,_0x541db1=new Date(_0x35d5e7['createdAt'])[_0x14865c(0x1b2)](_0x32e98e[_0x14865c(0x18e)],{'month':_0x32e98e['Daykv'],'day':'numeric'}),_0x3f90d1=_0x35d5e7[_0x14865c(0x182)]||_0x35d5e7['authorEmail']||_0x32e98e['koiif'],_0x2819bf=_0x35d5e7[_0x14865c(0x180)]?_0x14865c(0x1ab)+(_0x35d5e7['domRef']['selector']['split']('\x20>\x20')['pop']()?.['split'](':')[0x0]||'element')+_0x14865c(0x1b1)+(_0x35d5e7['domRef']['textContent']||'')['slice'](0x0,0x32)+'\x22)':'';return'-\x20['+_0x35d5e7['id']+']\x20**'+_0x3f90d1+_0x14865c(0x1af)+_0x541db1+_0x14865c(0x1a8)+_0x35d5e7['content']+'\x22'+_0x2819bf;})['join']('\x0a');_0x49609c=_0x48c4b5(0x1a9)+_0x2a978a;}const _0x5639da=_0x59ee26?.['canonicalFlow']?_0x48c4b5(0x1b0)+_0x59ee26['canonicalFlow']:'',_0x263691=_0xadb6f9?'##\x20App\x20Context\x0aYou\x20are\x20connected\x20to\x20a\x20desktop\x20application\x20via\x20CDP\x20(Chrome\x20DevTools\x20Protocol)\x20at\x20'+_0x5180c3+_0x48c4b5(0x17a):'CRITICAL\x20URL\x20REQUIREMENT:\x0aYour\x20base\x20URL\x20is:\x20'+_0x370015+_0x48c4b5(0x1ad),_0x4cf5b3=_0x370015?_0x32e98e[_0x48c4b5(0x181)](quoteShellArg,_0x370015):'',_0x1dd35d=_0xadb6f9?_0x48c4b5(0x1a3)+_0x449502+'\x20open`,\x20then\x20`'+_0x449502+_0x48c4b5(0x162)+_0x449502+_0x48c4b5(0x17e)+_0x154267+'`\x20using\x20absolute\x20paths\x20only.\x20Do\x20not\x20use\x20relative\x20filenames.\x0a4.\x20Take\x20a\x20snapshot\x20with\x20`'+_0x449502+'\x20snapshot\x20--filename\x20'+_0xafae38+_0x48c4b5(0x19c)+_0x449502+'\x20screenshot\x20--filename\x20'+_0xc7b746+_0x48c4b5(0x1ba)+_0x449502+'\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':_0x48c4b5(0x1a3)+_0x449502+'\x20open\x20'+_0x4cf5b3+_0x48c4b5(0x1bb)+_0x449502+'\x20tracing-start`,\x20then\x20`'+_0x449502+'\x20video-start`.\x0a3.\x20Save\x20every\x20snapshot\x20and\x20screenshot\x20under\x20`'+_0x154267+_0x48c4b5(0x191)+_0x449502+'\x20snapshot\x20--filename\x20'+_0xafae38+'`\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`'+_0x449502+_0x48c4b5(0x14e)+_0xc7b746+'`\x20style\x20absolute\x20paths\x20at\x20key\x20moments.\x0a8.\x20If\x20you\x20need\x20waits\x20or\x20custom\x20assertions,\x20use\x20`'+_0x449502+_0x48c4b5(0x13a),_0x138204=_0xadb6f9?'\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.':_0x48c4b5(0x146),_0x56afdf=_0x3e6564?'\x0a\x0a##\x20Authentication\x0aBEFORE\x20starting\x20the\x20verification\x20task,\x20you\x20MUST\x20authenticate\x20using\x20these\x20steps:\x0a'+_0x3e6564+'\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 _0x48c4b5(0x14a)+_0x348a8a[_0x48c4b5(0x165)]+_0x74525a+_0x49609c+_0x5639da+'\x0a\x0a##\x20Task\x20to\x20Execute\x0a'+_0x308155+'\x0a\x0a'+_0x263691+_0x56afdf+'\x0a\x0a'+_0x1dd35d+'\x0a\x0a##\x20Browser\x20Command\x20Reference\x0aUse\x20Bash\x20to\x20run\x20Playwright\x20CLI\x20commands\x20with\x20this\x20exact\x20prefix:\x0a`'+_0x449502+_0x48c4b5(0x1c0)+_0x154267+'`\x0a-\x20`snapshot\x20--filename\x20'+_0x2756f7+'`\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'+_0x485b15+'`\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`'+_0x154267+'`:\x20\x22'+_0x24934c+_0x48c4b5(0x151)+buildCliArtifactPath(_0x154267,'02_button-clicked.png')+'\x22,\x20\x22'+_0x32e98e['HwnGP'](buildCliArtifactPath,_0x154267,_0x32e98e['ypVOX'])+_0x48c4b5(0x16c)+buildCliArtifactPath(_0x154267,_0x48c4b5(0x152))+'\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'+_0x138204+'\x0a##\x20Evaluation\x20Criteria\x0a-\x20VERIFIED:\x20The\x20task\x20completed\x20successfully\x20and\x20the\x20scenario\x20requirements\x20are\x20fully\x20met\x0a-\x20PARTIAL:\x20The\x20task\x20partially\x20completed\x20but\x20some\x20aspects\x20of\x20the\x20scenario\x20are\x20not\x20verified\x0a-\x20BLOCKED:\x20A\x20blocking\x20issue\x20(bug,\x20error,\x20missing\x20feature)\x20prevents\x20completion\x0a-\x20FAILED:\x20The\x20task\x20could\x20not\x20be\x20completed\x20due\x20to\x20errors\x0a\x0aReturn\x20your\x20findings\x20in\x20the\x20structured\x20output\x20format\x20with\x20your\x20evaluation.';}export function summarizeVerifyFeatureCliCommandAvailability(_0x560167){const _0x35ed85=_0x579f,_0x18ef15=[..._0x560167[_0x35ed85(0x1a4)]()][_0x35ed85(0x18b)]();let _0x329bac=0x0;for(const _0x1bd0cf of _0x560167['values']()){_0x329bac+=_0x1bd0cf;}return{'cliCommandCount':_0x329bac,'cliCommandsSeen':_0x18ef15,'noCliCommandsCalled':_0x329bac===0x0};}export function createVerifyFeatureCliHooks(_0x2487cb){const _0x11be17=_0x579f,_0x207a8a={'PqzNh':'PostToolUse','vIGlQ':function(_0x107aae,_0x1fa48a){return _0x107aae(_0x1fa48a);},'eNJsU':function(_0x5493ca,_0x2b3274){return _0x5493ca+_0x2b3274;},'HTRMc':'tool_call','PcpfE':function(_0x24ba70,_0x598285){return _0x24ba70(_0x598285);},'pdeee':'snapshot','iezRO':function(_0x426650,_0x29c5da,_0x3f456f,_0x2aa8c2){return _0x426650(_0x29c5da,_0x3f456f,_0x2aa8c2);},'YZVEE':_0x11be17(0x168),'xWWit':function(_0xf40c7f,_0x2e1986){return _0xf40c7f!==_0x2e1986;},'GQvPl':_0x11be17(0x189),'OdJMp':_0x11be17(0x18a)},_0x14ced5=new Map(),_0x2ec0a2=async _0x18785f=>{const _0x130057=_0x11be17;if(_0x18785f[_0x130057(0x1ac)]!==_0x207a8a['PqzNh'])return{};const _0xbf415c=_0x18785f;if(_0xbf415c[_0x130057(0x19b)]!==_0x130057(0x1a7))return{};const _0xb2f3c3=_0xbf415c[_0x130057(0x15b)],_0x37bf10=extractBashCommand(_0xb2f3c3);if(!_0x37bf10)return{};const _0x504107=_0x207a8a['vIGlQ'](parsePlaywrightCliCommand,_0x37bf10);if(!_0x504107)return{};return _0x14ced5[_0x130057(0x1b5)](_0x504107,_0x207a8a['eNJsU'](_0x14ced5[_0x130057(0x199)](_0x504107)||0x0,0x1)),_0x2487cb[_0x130057(0x193)](_0x207a8a[_0x130057(0x1c1)],{'transport':'playwright-cli','toolName':_0x504107}),_0x2487cb['trackPhaseEnd'](_0x207a8a['HTRMc'],{'transport':'playwright-cli','toolName':_0x504107,'bashCommandPreview':_0x207a8a[_0x130057(0x177)](truncatePreview,_0x37bf10)}),_0x504107!==_0x207a8a['pdeee']&&console[_0x130057(0x157)](_0x207a8a['iezRO'](formatPlaywrightCliConsoleLogMessage,_0xb2f3c3,_0x37bf10,_0x504107)),{};},_0x4c1773=async _0x5e33b6=>{const _0x551805=_0x11be17;if(_0x5e33b6[_0x551805(0x1ac)]!==_0x207a8a[_0x551805(0x171)])return{};const _0xbede37=_0x5e33b6;if(_0x207a8a[_0x551805(0x144)](_0xbede37['tool_name'],'Bash'))return{};return await _0x2487cb['trackPhaseError'](_0x207a8a[_0x551805(0x170)],_0xbede37['error'],{'transport':_0x207a8a[_0x551805(0x18d)],'toolName':'Bash'}),{};};return{'postToolUseHook':_0x2ec0a2,'postToolUseFailureHook':_0x4c1773,'commandCounts':_0x14ced5};}async function runPlaywrightCliLifecycleCommand(_0x4b44e2){const _0x5237fc=_0x579f,_0x389cee={'JKWkm':function(_0x33ab15,_0x3b830d,_0x2a6bf2){return _0x33ab15(_0x3b830d,_0x2a6bf2);},'saEgq':function(_0x3e4c71,_0x31c589,_0x393dda){return _0x3e4c71(_0x31c589,_0x393dda);}},{sessionId:_0xf2711a,configPath:_0x44a9a5,commandArgs:_0x31d2c7,env:_0x2fa292,telemetry:_0x289a64,phase:_0x9ae311,metadata:_0x2f6df3,timeoutMs:_0x4df255}=_0x4b44e2;_0x289a64[_0x5237fc(0x193)](_0x9ae311,_0x2f6df3);try{const _0x170d8d=await runPlaywrightCliCommand({'sessionId':_0xf2711a,'configPath':_0x44a9a5,'commandArgs':_0x31d2c7,'cwd':process[_0x5237fc(0x13c)](),'env':_0x2fa292,'timeoutMs':_0x4df255??PLAYWRIGHT_CLI_COMMAND_TIMEOUT_MS});_0x289a64['trackPhaseEnd'](_0x9ae311,{..._0x2f6df3,'subcommand':_0x170d8d['invocation'][_0x5237fc(0x1b7)],'stdoutPreview':_0x389cee['JKWkm'](truncatePreview,_0x170d8d['stdout'],0x7d0),'stderrPreview':_0x389cee[_0x5237fc(0x188)](truncatePreview,_0x170d8d['stderr'],0x7d0)});}catch(_0x3be32b){await _0x289a64[_0x5237fc(0x1bf)](_0x9ae311,_0x3be32b,_0x2f6df3);throw _0x3be32b;}}export async function finalizeVerifyFeatureCliSession(_0xcd533b){const _0x28c3b1=_0x579f,_0xc868ed={'agtin':_0x28c3b1(0x141),'XmVCM':'session-recording.webm','LVpuw':'playwright_cli_close','EwYXb':function(_0x1e1029,_0x1a4f56){return _0x1e1029(_0x1a4f56);}},{telemetry:_0x27080b,sessionId:_0x3d9968,configPath:_0x5775d1,cliArtifactDir:_0x318fe5,env:_0x2603f1,transportMetadata:_0x41c1c1}=_0xcd533b,_0x44af75=[{'phase':_0xc868ed[_0x28c3b1(0x16b)],'commandArgs':[_0x28c3b1(0x14f)]},{'phase':'playwright_cli_video_stop','commandArgs':[_0x28c3b1(0x19e),_0x28c3b1(0x1a0)+buildCliArtifactPath(_0x318fe5,_0xc868ed['XmVCM'])]},{'phase':_0xc868ed['LVpuw'],'commandArgs':['close']}];for(const _0x54e7eb of _0x44af75){try{await _0xc868ed['EwYXb'](runPlaywrightCliLifecycleCommand,{'sessionId':_0x3d9968,'configPath':_0x5775d1,'commandArgs':[..._0x54e7eb['commandArgs']],'env':_0x2603f1,'telemetry':_0x27080b,'phase':_0x54e7eb['phase'],'metadata':_0x41c1c1});}catch{}}}export async function loadVerifyFeatureCliTraceUploadArtifact(_0x58cdfb){const _0x22adf9=_0x579f,_0x43fd9c={'rgjgF':'trace.trace.zip','IAkiU':function(_0x2ccb0e,_0x105295,_0x18cc3f){return _0x2ccb0e(_0x105295,_0x18cc3f);}},_0x37cf6f=[_0x22adf9(0x186),_0x43fd9c['rgjgF']];for(const _0x4ea16b of _0x37cf6f){const _0x213ced=_0x43fd9c[_0x22adf9(0x145)](join,_0x58cdfb,_0x4ea16b);try{return{'buffer':await readFile(_0x213ced),'source':_0x213ced};}catch{}}return null;}export async function rehomeVerifyFeatureCliArtifacts(_0x2f12ac){const _0x3d0106=_0x579f,_0x51b86b={'UmBtE':function(_0x5630f6,_0x2b86d0,_0x11b237){return _0x5630f6(_0x2b86d0,_0x11b237);},'gEODJ':function(_0x432748,_0x18d9c0){return _0x432748<_0x18d9c0;},'DMwRJ':function(_0xb6c80f,_0x4eaf8a){return _0xb6c80f+_0x4eaf8a;},'VUJyZ':function(_0x2dd009,_0x6cf8dd,_0x138b0f){return _0x2dd009(_0x6cf8dd,_0x138b0f);}},{cwd:_0x5370d6,cliArtifactDir:_0x2efe0c,startTime:_0x312376}=_0x2f12ac,_0x1e237=[];await _0x51b86b['UmBtE'](mkdir,_0x2efe0c,{'recursive':!![]});const _0x3bad19=await readdir(_0x5370d6,{'withFileTypes':!![]});for(const _0x232845 of _0x3bad19){if(!_0x232845[_0x3d0106(0x1b9)]()||!VERIFY_FEATURE_CLI_ARTIFACT_FILE_PATTERN['test'](_0x232845[_0x3d0106(0x15c)]))continue;const _0x48cf37=join(_0x5370d6,_0x232845[_0x3d0106(0x15c)]),_0x3bea30=await stat(_0x48cf37);if(_0x51b86b[_0x3d0106(0x1a6)](_0x51b86b['DMwRJ'](_0x3bea30[_0x3d0106(0x154)],0x7d0),_0x312376))continue;const _0x99e40c=_0x51b86b[_0x3d0106(0x178)](buildCliArtifactPath,_0x2efe0c,_0x232845[_0x3d0106(0x15c)]);if(_0x48cf37===_0x99e40c)continue;await _0x51b86b[_0x3d0106(0x16d)](rename,_0x48cf37,_0x99e40c),_0x1e237[_0x3d0106(0x1a1)](_0x232845['name']);}return _0x1e237['sort']();}
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.36a12ca-10",
3
+ "version": "2.5.4-alpha.57338f5-12",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "ranger": "./build/cli.js",