@cleartrip/frontguard 0.2.7 → 0.2.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +141 -41
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
- package/templates/bitbucket-pipelines.yml +4 -2
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../node_modules/consola/dist/chunks/prompt.mjs","../node_modules/picocolors/picocolors.js","../node_modules/consola/dist/core.mjs","../node_modules/consola/dist/shared/consola.DRwqZj3T.mjs","../node_modules/consola/dist/shared/consola.DXBYu-KD.mjs","../node_modules/consola/dist/index.mjs","../node_modules/citty/dist/index.mjs","../src/commands/init.ts","../src/lib/bitbucket-checks-image-md.ts","../src/ci/bitbucket-pr-snippet.ts","../src/ci/parse-ai-disclosure.ts","../src/ci/pr-context.ts","../node_modules/defu/dist/defu.mjs","../src/config/defaults.ts","../src/config/migrate.ts","../src/config/load.ts","../src/detect/stack.ts","../src/lib/pr-scope.ts","../src/lib/repo-paths.ts","../node_modules/tinyexec/dist/main.mjs","../src/runner/exec-tools.ts","../src/checks/eslint.ts","../src/checks/prettier.ts","../src/checks/typescript.ts","../src/checks/secrets.ts","../src/checks/pr-hygiene.ts","../src/checks/pr-size.ts","../src/runner/git.ts","../src/checks/ts-any-delta.ts","../src/checks/cycles.ts","../src/checks/dead-code.ts","../src/checks/bundle.ts","../src/checks/core-web-vitals.ts","../src/checks/custom-rules.ts","../src/lib/ai-discarded-expensive-call.ts","../src/lib/ai-decorators.ts","../src/checks/ai-assisted-strict.ts","../src/runner/ai-escalation.ts","../src/runner/checks-snapshot-png.ts","../src/report/builder.ts","../src/lib/html-escape.ts","../src/report/check-descriptions.ts","../src/report/html-report.ts","../src/lib/http-fetch.ts","../src/llm/ollama.ts","../src/llm/finding-fixes.ts","../src/llm/manual-appendix.ts","../src/llm/review.ts","../src/commands/run.ts","../src/cli.ts"],"names":["x","y","i","p","argv","env","isColorSupported","replaceClose","createColors","f","t","F","u","e","s","C","D","o","E","a","n","B","r","c","l","M","v","j","exports","I","T","g","R","A","_","O","L","S","N","G","P","ansiRegex","stripAnsi","g$1","m","getColor","createConsola","k","path","d","isPlainObject","_defu","createDefu","defu","fs","ts","h","b","w","z","V","W","stdout","truncate","gateSeverity","fg","sev","init","PATTERNS","formatDuration","q","parseLineHint","he","pc","prompt","apiKey","text","process"],"mappings":"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","file":"cli.js","sourcesContent":["import 'node:util';\nimport g, { stdin, stdout } from 'node:process';\nimport f from 'node:readline';\nimport { WriteStream } from 'node:tty';\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nvar src;\nvar hasRequiredSrc;\n\nfunction requireSrc () {\n\tif (hasRequiredSrc) return src;\n\thasRequiredSrc = 1;\n\n\tconst ESC = '\\x1B';\n\tconst CSI = `${ESC}[`;\n\tconst beep = '\\u0007';\n\n\tconst cursor = {\n\t to(x, y) {\n\t if (!y) return `${CSI}${x + 1}G`;\n\t return `${CSI}${y + 1};${x + 1}H`;\n\t },\n\t move(x, y) {\n\t let ret = '';\n\n\t if (x < 0) ret += `${CSI}${-x}D`;\n\t else if (x > 0) ret += `${CSI}${x}C`;\n\n\t if (y < 0) ret += `${CSI}${-y}A`;\n\t else if (y > 0) ret += `${CSI}${y}B`;\n\n\t return ret;\n\t },\n\t up: (count = 1) => `${CSI}${count}A`,\n\t down: (count = 1) => `${CSI}${count}B`,\n\t forward: (count = 1) => `${CSI}${count}C`,\n\t backward: (count = 1) => `${CSI}${count}D`,\n\t nextLine: (count = 1) => `${CSI}E`.repeat(count),\n\t prevLine: (count = 1) => `${CSI}F`.repeat(count),\n\t left: `${CSI}G`,\n\t hide: `${CSI}?25l`,\n\t show: `${CSI}?25h`,\n\t save: `${ESC}7`,\n\t restore: `${ESC}8`\n\t};\n\n\tconst scroll = {\n\t up: (count = 1) => `${CSI}S`.repeat(count),\n\t down: (count = 1) => `${CSI}T`.repeat(count)\n\t};\n\n\tconst erase = {\n\t screen: `${CSI}2J`,\n\t up: (count = 1) => `${CSI}1J`.repeat(count),\n\t down: (count = 1) => `${CSI}J`.repeat(count),\n\t line: `${CSI}2K`,\n\t lineEnd: `${CSI}K`,\n\t lineStart: `${CSI}1K`,\n\t lines(count) {\n\t let clear = '';\n\t for (let i = 0; i < count; i++)\n\t clear += this.line + (i < count - 1 ? cursor.up() : '');\n\t if (count)\n\t clear += cursor.left;\n\t return clear;\n\t }\n\t};\n\n\tsrc = { cursor, scroll, erase, beep };\n\treturn src;\n}\n\nvar srcExports = requireSrc();\n\nvar picocolors = {exports: {}};\n\nvar hasRequiredPicocolors;\n\nfunction requirePicocolors () {\n\tif (hasRequiredPicocolors) return picocolors.exports;\n\thasRequiredPicocolors = 1;\n\tlet p = process || {}, argv = p.argv || [], env = p.env || {};\n\tlet isColorSupported =\n\t\t!(!!env.NO_COLOR || argv.includes(\"--no-color\")) &&\n\t\t(!!env.FORCE_COLOR || argv.includes(\"--color\") || p.platform === \"win32\" || ((p.stdout || {}).isTTY && env.TERM !== \"dumb\") || !!env.CI);\n\n\tlet formatter = (open, close, replace = open) =>\n\t\tinput => {\n\t\t\tlet string = \"\" + input, index = string.indexOf(close, open.length);\n\t\t\treturn ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close\n\t\t};\n\n\tlet replaceClose = (string, close, replace, index) => {\n\t\tlet result = \"\", cursor = 0;\n\t\tdo {\n\t\t\tresult += string.substring(cursor, index) + replace;\n\t\t\tcursor = index + close.length;\n\t\t\tindex = string.indexOf(close, cursor);\n\t\t} while (~index)\n\t\treturn result + string.substring(cursor)\n\t};\n\n\tlet createColors = (enabled = isColorSupported) => {\n\t\tlet f = enabled ? formatter : () => String;\n\t\treturn {\n\t\t\tisColorSupported: enabled,\n\t\t\treset: f(\"\\x1b[0m\", \"\\x1b[0m\"),\n\t\t\tbold: f(\"\\x1b[1m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[1m\"),\n\t\t\tdim: f(\"\\x1b[2m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[2m\"),\n\t\t\titalic: f(\"\\x1b[3m\", \"\\x1b[23m\"),\n\t\t\tunderline: f(\"\\x1b[4m\", \"\\x1b[24m\"),\n\t\t\tinverse: f(\"\\x1b[7m\", \"\\x1b[27m\"),\n\t\t\thidden: f(\"\\x1b[8m\", \"\\x1b[28m\"),\n\t\t\tstrikethrough: f(\"\\x1b[9m\", \"\\x1b[29m\"),\n\n\t\t\tblack: f(\"\\x1b[30m\", \"\\x1b[39m\"),\n\t\t\tred: f(\"\\x1b[31m\", \"\\x1b[39m\"),\n\t\t\tgreen: f(\"\\x1b[32m\", \"\\x1b[39m\"),\n\t\t\tyellow: f(\"\\x1b[33m\", \"\\x1b[39m\"),\n\t\t\tblue: f(\"\\x1b[34m\", \"\\x1b[39m\"),\n\t\t\tmagenta: f(\"\\x1b[35m\", \"\\x1b[39m\"),\n\t\t\tcyan: f(\"\\x1b[36m\", \"\\x1b[39m\"),\n\t\t\twhite: f(\"\\x1b[37m\", \"\\x1b[39m\"),\n\t\t\tgray: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\n\t\t\tbgBlack: f(\"\\x1b[40m\", \"\\x1b[49m\"),\n\t\t\tbgRed: f(\"\\x1b[41m\", \"\\x1b[49m\"),\n\t\t\tbgGreen: f(\"\\x1b[42m\", \"\\x1b[49m\"),\n\t\t\tbgYellow: f(\"\\x1b[43m\", \"\\x1b[49m\"),\n\t\t\tbgBlue: f(\"\\x1b[44m\", \"\\x1b[49m\"),\n\t\t\tbgMagenta: f(\"\\x1b[45m\", \"\\x1b[49m\"),\n\t\t\tbgCyan: f(\"\\x1b[46m\", \"\\x1b[49m\"),\n\t\t\tbgWhite: f(\"\\x1b[47m\", \"\\x1b[49m\"),\n\n\t\t\tblackBright: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\t\t\tredBright: f(\"\\x1b[91m\", \"\\x1b[39m\"),\n\t\t\tgreenBright: f(\"\\x1b[92m\", \"\\x1b[39m\"),\n\t\t\tyellowBright: f(\"\\x1b[93m\", \"\\x1b[39m\"),\n\t\t\tblueBright: f(\"\\x1b[94m\", \"\\x1b[39m\"),\n\t\t\tmagentaBright: f(\"\\x1b[95m\", \"\\x1b[39m\"),\n\t\t\tcyanBright: f(\"\\x1b[96m\", \"\\x1b[39m\"),\n\t\t\twhiteBright: f(\"\\x1b[97m\", \"\\x1b[39m\"),\n\n\t\t\tbgBlackBright: f(\"\\x1b[100m\", \"\\x1b[49m\"),\n\t\t\tbgRedBright: f(\"\\x1b[101m\", \"\\x1b[49m\"),\n\t\t\tbgGreenBright: f(\"\\x1b[102m\", \"\\x1b[49m\"),\n\t\t\tbgYellowBright: f(\"\\x1b[103m\", \"\\x1b[49m\"),\n\t\t\tbgBlueBright: f(\"\\x1b[104m\", \"\\x1b[49m\"),\n\t\t\tbgMagentaBright: f(\"\\x1b[105m\", \"\\x1b[49m\"),\n\t\t\tbgCyanBright: f(\"\\x1b[106m\", \"\\x1b[49m\"),\n\t\t\tbgWhiteBright: f(\"\\x1b[107m\", \"\\x1b[49m\"),\n\t\t}\n\t};\n\n\tpicocolors.exports = createColors();\n\tpicocolors.exports.createColors = createColors;\n\treturn picocolors.exports;\n}\n\nvar picocolorsExports = /*@__PURE__*/ requirePicocolors();\nconst e = /*@__PURE__*/getDefaultExportFromCjs(picocolorsExports);\n\nfunction J({onlyFirst:t=false}={}){const F=[\"[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?(?:\\\\u0007|\\\\u001B\\\\u005C|\\\\u009C))\",\"(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]))\"].join(\"|\");return new RegExp(F,t?void 0:\"g\")}const Q=J();function T$1(t){if(typeof t!=\"string\")throw new TypeError(`Expected a \\`string\\`, got \\`${typeof t}\\``);return t.replace(Q,\"\")}function O(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,\"default\")?t.default:t}var P$1={exports:{}};(function(t){var u={};t.exports=u,u.eastAsianWidth=function(e){var s=e.charCodeAt(0),i=e.length==2?e.charCodeAt(1):0,D=s;return 55296<=s&&s<=56319&&56320<=i&&i<=57343&&(s&=1023,i&=1023,D=s<<10|i,D+=65536),D==12288||65281<=D&&D<=65376||65504<=D&&D<=65510?\"F\":D==8361||65377<=D&&D<=65470||65474<=D&&D<=65479||65482<=D&&D<=65487||65490<=D&&D<=65495||65498<=D&&D<=65500||65512<=D&&D<=65518?\"H\":4352<=D&&D<=4447||4515<=D&&D<=4519||4602<=D&&D<=4607||9001<=D&&D<=9002||11904<=D&&D<=11929||11931<=D&&D<=12019||12032<=D&&D<=12245||12272<=D&&D<=12283||12289<=D&&D<=12350||12353<=D&&D<=12438||12441<=D&&D<=12543||12549<=D&&D<=12589||12593<=D&&D<=12686||12688<=D&&D<=12730||12736<=D&&D<=12771||12784<=D&&D<=12830||12832<=D&&D<=12871||12880<=D&&D<=13054||13056<=D&&D<=19903||19968<=D&&D<=42124||42128<=D&&D<=42182||43360<=D&&D<=43388||44032<=D&&D<=55203||55216<=D&&D<=55238||55243<=D&&D<=55291||63744<=D&&D<=64255||65040<=D&&D<=65049||65072<=D&&D<=65106||65108<=D&&D<=65126||65128<=D&&D<=65131||110592<=D&&D<=110593||127488<=D&&D<=127490||127504<=D&&D<=127546||127552<=D&&D<=127560||127568<=D&&D<=127569||131072<=D&&D<=194367||177984<=D&&D<=196605||196608<=D&&D<=262141?\"W\":32<=D&&D<=126||162<=D&&D<=163||165<=D&&D<=166||D==172||D==175||10214<=D&&D<=10221||10629<=D&&D<=10630?\"Na\":D==161||D==164||167<=D&&D<=168||D==170||173<=D&&D<=174||176<=D&&D<=180||182<=D&&D<=186||188<=D&&D<=191||D==198||D==208||215<=D&&D<=216||222<=D&&D<=225||D==230||232<=D&&D<=234||236<=D&&D<=237||D==240||242<=D&&D<=243||247<=D&&D<=250||D==252||D==254||D==257||D==273||D==275||D==283||294<=D&&D<=295||D==299||305<=D&&D<=307||D==312||319<=D&&D<=322||D==324||328<=D&&D<=331||D==333||338<=D&&D<=339||358<=D&&D<=359||D==363||D==462||D==464||D==466||D==468||D==470||D==472||D==474||D==476||D==593||D==609||D==708||D==711||713<=D&&D<=715||D==717||D==720||728<=D&&D<=731||D==733||D==735||768<=D&&D<=879||913<=D&&D<=929||931<=D&&D<=937||945<=D&&D<=961||963<=D&&D<=969||D==1025||1040<=D&&D<=1103||D==1105||D==8208||8211<=D&&D<=8214||8216<=D&&D<=8217||8220<=D&&D<=8221||8224<=D&&D<=8226||8228<=D&&D<=8231||D==8240||8242<=D&&D<=8243||D==8245||D==8251||D==8254||D==8308||D==8319||8321<=D&&D<=8324||D==8364||D==8451||D==8453||D==8457||D==8467||D==8470||8481<=D&&D<=8482||D==8486||D==8491||8531<=D&&D<=8532||8539<=D&&D<=8542||8544<=D&&D<=8555||8560<=D&&D<=8569||D==8585||8592<=D&&D<=8601||8632<=D&&D<=8633||D==8658||D==8660||D==8679||D==8704||8706<=D&&D<=8707||8711<=D&&D<=8712||D==8715||D==8719||D==8721||D==8725||D==8730||8733<=D&&D<=8736||D==8739||D==8741||8743<=D&&D<=8748||D==8750||8756<=D&&D<=8759||8764<=D&&D<=8765||D==8776||D==8780||D==8786||8800<=D&&D<=8801||8804<=D&&D<=8807||8810<=D&&D<=8811||8814<=D&&D<=8815||8834<=D&&D<=8835||8838<=D&&D<=8839||D==8853||D==8857||D==8869||D==8895||D==8978||9312<=D&&D<=9449||9451<=D&&D<=9547||9552<=D&&D<=9587||9600<=D&&D<=9615||9618<=D&&D<=9621||9632<=D&&D<=9633||9635<=D&&D<=9641||9650<=D&&D<=9651||9654<=D&&D<=9655||9660<=D&&D<=9661||9664<=D&&D<=9665||9670<=D&&D<=9672||D==9675||9678<=D&&D<=9681||9698<=D&&D<=9701||D==9711||9733<=D&&D<=9734||D==9737||9742<=D&&D<=9743||9748<=D&&D<=9749||D==9756||D==9758||D==9792||D==9794||9824<=D&&D<=9825||9827<=D&&D<=9829||9831<=D&&D<=9834||9836<=D&&D<=9837||D==9839||9886<=D&&D<=9887||9918<=D&&D<=9919||9924<=D&&D<=9933||9935<=D&&D<=9953||D==9955||9960<=D&&D<=9983||D==10045||D==10071||10102<=D&&D<=10111||11093<=D&&D<=11097||12872<=D&&D<=12879||57344<=D&&D<=63743||65024<=D&&D<=65039||D==65533||127232<=D&&D<=127242||127248<=D&&D<=127277||127280<=D&&D<=127337||127344<=D&&D<=127386||917760<=D&&D<=917999||983040<=D&&D<=1048573||1048576<=D&&D<=1114109?\"A\":\"N\"},u.characterLength=function(e){var s=this.eastAsianWidth(e);return s==\"F\"||s==\"W\"||s==\"A\"?2:1};function F(e){return e.match(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[^\\uD800-\\uDFFF]/g)||[]}u.length=function(e){for(var s=F(e),i=0,D=0;D<s.length;D++)i=i+this.characterLength(s[D]);return i},u.slice=function(e,s,i){textLen=u.length(e),s=s||0,i=i||1,s<0&&(s=textLen+s),i<0&&(i=textLen+i);for(var D=\"\",C=0,o=F(e),E=0;E<o.length;E++){var a=o[E],n=u.length(a);if(C>=s-(n==2?1:0))if(C+n<=i)D+=a;else break;C+=n;}return D};})(P$1);var X=P$1.exports;const DD=O(X);var uD=function(){return /\\uD83C\\uDFF4\\uDB40\\uDC67\\uDB40\\uDC62(?:\\uDB40\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73|\\uDB40\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDB40\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67)\\uDB40\\uDC7F|(?:\\uD83E\\uDDD1\\uD83C\\uDFFF\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB-\\uDFFE])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFE\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFD\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFC\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFB\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFB\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFC-\\uDFFF])|\\uD83D\\uDC68(?:\\uD83C\\uDFFB(?:\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF]))|\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFC-\\uDFFF])|[\\u2695\\u2696\\u2708]\\uFE0F|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))?|(?:\\uD83C[\\uDFFC-\\uDFFF])\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF]))|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83D\\uDC68|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFE])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])\\uFE0F|\\u200D(?:(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83D[\\uDC66\\uDC67])|\\uD83C\\uDFFF|\\uD83C\\uDFFE|\\uD83C\\uDFFD|\\uD83C\\uDFFC)?|(?:\\uD83D\\uDC69(?:\\uD83C\\uDFFB\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69])|(?:\\uD83C[\\uDFFC-\\uDFFF])\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69]))|\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1)(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC69(?:\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83E\\uDDD1(?:\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D\\uDC41\\uFE0F\\u200D\\uD83D\\uDDE8|\\uD83E\\uDDD1(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|\\uD83D\\uDC69(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|\\uD83D\\uDE36\\u200D\\uD83C\\uDF2B|\\uD83C\\uDFF3\\uFE0F\\u200D\\u26A7|\\uD83D\\uDC3B\\u200D\\u2744|(?:(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF])\\u200D[\\u2640\\u2642]|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|\\uD83C\\uDFF4\\u200D\\u2620|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD])\\u200D[\\u2640\\u2642]|[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u2328\\u23CF\\u23ED-\\u23EF\\u23F1\\u23F2\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB\\u25FC\\u2600-\\u2604\\u260E\\u2611\\u2618\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u2692\\u2694-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A7\\u26B0\\u26B1\\u26C8\\u26CF\\u26D1\\u26D3\\u26E9\\u26F0\\u26F1\\u26F4\\u26F7\\u26F8\\u2702\\u2708\\u2709\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2733\\u2734\\u2744\\u2747\\u2763\\u27A1\\u2934\\u2935\\u2B05-\\u2B07\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDE02\\uDE37\\uDF21\\uDF24-\\uDF2C\\uDF36\\uDF7D\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E\\uDF9F\\uDFCD\\uDFCE\\uDFD4-\\uDFDF\\uDFF5\\uDFF7]|\\uD83D[\\uDC3F\\uDCFD\\uDD49\\uDD4A\\uDD6F\\uDD70\\uDD73\\uDD76-\\uDD79\\uDD87\\uDD8A-\\uDD8D\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA\\uDECB\\uDECD-\\uDECF\\uDEE0-\\uDEE5\\uDEE9\\uDEF0\\uDEF3])\\uFE0F|\\uD83C\\uDFF3\\uFE0F\\u200D\\uD83C\\uDF08|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66|\\uD83D\\uDE35\\u200D\\uD83D\\uDCAB|\\uD83D\\uDE2E\\u200D\\uD83D\\uDCA8|\\uD83D\\uDC15\\u200D\\uD83E\\uDDBA|\\uD83E\\uDDD1(?:\\uD83C\\uDFFF|\\uD83C\\uDFFE|\\uD83C\\uDFFD|\\uD83C\\uDFFC|\\uD83C\\uDFFB)?|\\uD83D\\uDC69(?:\\uD83C\\uDFFF|\\uD83C\\uDFFE|\\uD83C\\uDFFD|\\uD83C\\uDFFC|\\uD83C\\uDFFB)?|\\uD83C\\uDDFD\\uD83C\\uDDF0|\\uD83C\\uDDF6\\uD83C\\uDDE6|\\uD83C\\uDDF4\\uD83C\\uDDF2|\\uD83D\\uDC08\\u200D\\u2B1B|\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDD25|\\uD83E\\uDE79)|\\uD83D\\uDC41\\uFE0F|\\uD83C\\uDFF3\\uFE0F|\\uD83C\\uDDFF(?:\\uD83C[\\uDDE6\\uDDF2\\uDDFC])|\\uD83C\\uDDFE(?:\\uD83C[\\uDDEA\\uDDF9])|\\uD83C\\uDDFC(?:\\uD83C[\\uDDEB\\uDDF8])|\\uD83C\\uDDFB(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA])|\\uD83C\\uDDFA(?:\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF])|\\uD83C\\uDDF9(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF])|\\uD83C\\uDDF8(?:\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF])|\\uD83C\\uDDF7(?:\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC])|\\uD83C\\uDDF5(?:\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE])|\\uD83C\\uDDF3(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF])|\\uD83C\\uDDF2(?:\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF])|\\uD83C\\uDDF1(?:\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE])|\\uD83C\\uDDF0(?:\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDEF(?:\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5])|\\uD83C\\uDDEE(?:\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9])|\\uD83C\\uDDED(?:\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA])|\\uD83C\\uDDEC(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE])|\\uD83C\\uDDEB(?:\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7])|\\uD83C\\uDDEA(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA])|\\uD83C\\uDDE9(?:\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF])|\\uD83C\\uDDE8(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\uDDFF])|\\uD83C\\uDDE7(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDE6(?:\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF])|[#\\*0-9]\\uFE0F\\u20E3|\\u2764\\uFE0F|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDFF4|(?:[\\u270A\\u270B]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDC8F\\uDC91\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC]|\\uD83E[\\uDD0C\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u261D\\u270C\\u270D]|\\uD83D[\\uDD74\\uDD90])(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])|[\\u270A\\u270B]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\uDC08\\uDC15\\uDC3B\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDC8F\\uDC91\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE2E\\uDE35\\uDE36\\uDE4C\\uDE4F\\uDEC0\\uDECC]|\\uD83E[\\uDD0C\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5]|\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD]|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF]|[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF84\\uDF86-\\uDF93\\uDFA0-\\uDFC1\\uDFC5\\uDFC6\\uDFC8\\uDFC9\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC07\\uDC09-\\uDC14\\uDC16-\\uDC3A\\uDC3C-\\uDC3E\\uDC40\\uDC44\\uDC45\\uDC51-\\uDC65\\uDC6A\\uDC79-\\uDC7B\\uDC7D-\\uDC80\\uDC84\\uDC88-\\uDC8E\\uDC90\\uDC92-\\uDCA9\\uDCAB-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDDA4\\uDDFB-\\uDE2D\\uDE2F-\\uDE34\\uDE37-\\uDE44\\uDE48-\\uDE4A\\uDE80-\\uDEA2\\uDEA4-\\uDEB3\\uDEB7-\\uDEBF\\uDEC1-\\uDEC5\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D\\uDD0E\\uDD10-\\uDD17\\uDD1D\\uDD20-\\uDD25\\uDD27-\\uDD2F\\uDD3A\\uDD3F-\\uDD45\\uDD47-\\uDD76\\uDD78\\uDD7A-\\uDDB4\\uDDB7\\uDDBA\\uDDBC-\\uDDCB\\uDDD0\\uDDE0-\\uDDFF\\uDE70-\\uDE74\\uDE78-\\uDE7A\\uDE80-\\uDE86\\uDE90-\\uDEA8\\uDEB0-\\uDEB6\\uDEC0-\\uDEC2\\uDED0-\\uDED6]|(?:[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u270A\\u270B\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF93\\uDFA0-\\uDFCA\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF4\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC3E\\uDC40\\uDC42-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDD7A\\uDD95\\uDD96\\uDDA4\\uDDFB-\\uDE4F\\uDE80-\\uDEC5\\uDECC\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0C-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD78\\uDD7A-\\uDDCB\\uDDCD-\\uDDFF\\uDE70-\\uDE74\\uDE78-\\uDE7A\\uDE80-\\uDE86\\uDE90-\\uDEA8\\uDEB0-\\uDEB6\\uDEC0-\\uDEC2\\uDED0-\\uDED6])|(?:[#\\*0-9\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u261D\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A1\\u26A7\\u26AA\\u26AB\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C5\\u26C8\\u26CE\\u26CF\\u26D1\\u26D3\\u26D4\\u26E9\\u26EA\\u26F0-\\u26F5\\u26F7-\\u26FA\\u26FD\\u2702\\u2705\\u2708-\\u270D\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763\\u2764\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC04\\uDCCF\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE02\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF21\\uDF24-\\uDF93\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E-\\uDFF0\\uDFF3-\\uDFF5\\uDFF7-\\uDFFF]|\\uD83D[\\uDC00-\\uDCFD\\uDCFF-\\uDD3D\\uDD49-\\uDD4E\\uDD50-\\uDD67\\uDD6F\\uDD70\\uDD73-\\uDD7A\\uDD87\\uDD8A-\\uDD8D\\uDD90\\uDD95\\uDD96\\uDDA4\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA-\\uDE4F\\uDE80-\\uDEC5\\uDECB-\\uDED2\\uDED5-\\uDED7\\uDEE0-\\uDEE5\\uDEE9\\uDEEB\\uDEEC\\uDEF0\\uDEF3-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0C-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD78\\uDD7A-\\uDDCB\\uDDCD-\\uDDFF\\uDE70-\\uDE74\\uDE78-\\uDE7A\\uDE80-\\uDE86\\uDE90-\\uDEA8\\uDEB0-\\uDEB6\\uDEC0-\\uDEC2\\uDED0-\\uDED6])\\uFE0F|(?:[\\u261D\\u26F9\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2-\\uDFC4\\uDFC7\\uDFCA-\\uDFCC]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66-\\uDC78\\uDC7C\\uDC81-\\uDC83\\uDC85-\\uDC87\\uDC8F\\uDC91\\uDCAA\\uDD74\\uDD75\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE45-\\uDE47\\uDE4B-\\uDE4F\\uDEA3\\uDEB4-\\uDEB6\\uDEC0\\uDECC]|\\uD83E[\\uDD0C\\uDD0F\\uDD18-\\uDD1F\\uDD26\\uDD30-\\uDD39\\uDD3C-\\uDD3E\\uDD77\\uDDB5\\uDDB6\\uDDB8\\uDDB9\\uDDBB\\uDDCD-\\uDDCF\\uDDD1-\\uDDDD])/g};const FD=O(uD);function A$1(t,u={}){if(typeof t!=\"string\"||t.length===0||(u={ambiguousIsNarrow:true,...u},t=T$1(t),t.length===0))return 0;t=t.replace(FD(),\" \");const F=u.ambiguousIsNarrow?1:2;let e=0;for(const s of t){const i=s.codePointAt(0);if(i<=31||i>=127&&i<=159||i>=768&&i<=879)continue;switch(DD.eastAsianWidth(s)){case \"F\":case \"W\":e+=2;break;case \"A\":e+=F;break;default:e+=1;}}return e}const m=10,L$1=(t=0)=>u=>`\\x1B[${u+t}m`,N=(t=0)=>u=>`\\x1B[${38+t};5;${u}m`,I=(t=0)=>(u,F,e)=>`\\x1B[${38+t};2;${u};${F};${e}m`,r={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(r.modifier);const tD=Object.keys(r.color),eD=Object.keys(r.bgColor);[...tD,...eD];function sD(){const t=new Map;for(const[u,F]of Object.entries(r)){for(const[e,s]of Object.entries(F))r[e]={open:`\\x1B[${s[0]}m`,close:`\\x1B[${s[1]}m`},F[e]=r[e],t.set(s[0],s[1]);Object.defineProperty(r,u,{value:F,enumerable:false});}return Object.defineProperty(r,\"codes\",{value:t,enumerable:false}),r.color.close=\"\\x1B[39m\",r.bgColor.close=\"\\x1B[49m\",r.color.ansi=L$1(),r.color.ansi256=N(),r.color.ansi16m=I(),r.bgColor.ansi=L$1(m),r.bgColor.ansi256=N(m),r.bgColor.ansi16m=I(m),Object.defineProperties(r,{rgbToAnsi256:{value:(u,F,e)=>u===F&&F===e?u<8?16:u>248?231:Math.round((u-8)/247*24)+232:16+36*Math.round(u/255*5)+6*Math.round(F/255*5)+Math.round(e/255*5),enumerable:false},hexToRgb:{value:u=>{const F=/[a-f\\d]{6}|[a-f\\d]{3}/i.exec(u.toString(16));if(!F)return [0,0,0];let[e]=F;e.length===3&&(e=[...e].map(i=>i+i).join(\"\"));const s=Number.parseInt(e,16);return [s>>16&255,s>>8&255,s&255]},enumerable:false},hexToAnsi256:{value:u=>r.rgbToAnsi256(...r.hexToRgb(u)),enumerable:false},ansi256ToAnsi:{value:u=>{if(u<8)return 30+u;if(u<16)return 90+(u-8);let F,e,s;if(u>=232)F=((u-232)*10+8)/255,e=F,s=F;else {u-=16;const C=u%36;F=Math.floor(u/36)/5,e=Math.floor(C/6)/5,s=C%6/5;}const i=Math.max(F,e,s)*2;if(i===0)return 30;let D=30+(Math.round(s)<<2|Math.round(e)<<1|Math.round(F));return i===2&&(D+=60),D},enumerable:false},rgbToAnsi:{value:(u,F,e)=>r.ansi256ToAnsi(r.rgbToAnsi256(u,F,e)),enumerable:false},hexToAnsi:{value:u=>r.ansi256ToAnsi(r.hexToAnsi256(u)),enumerable:false}}),r}const iD=sD(),v=new Set([\"\\x1B\",\"\\x9B\"]),CD=39,w$1=\"\\x07\",W$1=\"[\",rD=\"]\",R=\"m\",y=`${rD}8;;`,V$1=t=>`${v.values().next().value}${W$1}${t}${R}`,z=t=>`${v.values().next().value}${y}${t}${w$1}`,ED=t=>t.split(\" \").map(u=>A$1(u)),_=(t,u,F)=>{const e=[...u];let s=false,i=false,D=A$1(T$1(t[t.length-1]));for(const[C,o]of e.entries()){const E=A$1(o);if(D+E<=F?t[t.length-1]+=o:(t.push(o),D=0),v.has(o)&&(s=true,i=e.slice(C+1).join(\"\").startsWith(y)),s){i?o===w$1&&(s=false,i=false):o===R&&(s=false);continue}D+=E,D===F&&C<e.length-1&&(t.push(\"\"),D=0);}!D&&t[t.length-1].length>0&&t.length>1&&(t[t.length-2]+=t.pop());},nD=t=>{const u=t.split(\" \");let F=u.length;for(;F>0&&!(A$1(u[F-1])>0);)F--;return F===u.length?t:u.slice(0,F).join(\" \")+u.slice(F).join(\"\")},oD=(t,u,F={})=>{if(F.trim!==false&&t.trim()===\"\")return \"\";let e=\"\",s,i;const D=ED(t);let C=[\"\"];for(const[E,a]of t.split(\" \").entries()){F.trim!==false&&(C[C.length-1]=C[C.length-1].trimStart());let n=A$1(C[C.length-1]);if(E!==0&&(n>=u&&(F.wordWrap===false||F.trim===false)&&(C.push(\"\"),n=0),(n>0||F.trim===false)&&(C[C.length-1]+=\" \",n++)),F.hard&&D[E]>u){const B=u-n,p=1+Math.floor((D[E]-B-1)/u);Math.floor((D[E]-1)/u)<p&&C.push(\"\"),_(C,a,u);continue}if(n+D[E]>u&&n>0&&D[E]>0){if(F.wordWrap===false&&n<u){_(C,a,u);continue}C.push(\"\");}if(n+D[E]>u&&F.wordWrap===false){_(C,a,u);continue}C[C.length-1]+=a;}F.trim!==false&&(C=C.map(E=>nD(E)));const o=[...C.join(`\n`)];for(const[E,a]of o.entries()){if(e+=a,v.has(a)){const{groups:B}=new RegExp(`(?:\\\\${W$1}(?<code>\\\\d+)m|\\\\${y}(?<uri>.*)${w$1})`).exec(o.slice(E).join(\"\"))||{groups:{}};if(B.code!==void 0){const p=Number.parseFloat(B.code);s=p===CD?void 0:p;}else B.uri!==void 0&&(i=B.uri.length===0?void 0:B.uri);}const n=iD.codes.get(Number(s));o[E+1]===`\n`?(i&&(e+=z(\"\")),s&&n&&(e+=V$1(n))):a===`\n`&&(s&&n&&(e+=V$1(s)),i&&(e+=z(i)));}return e};function G(t,u,F){return String(t).normalize().replace(/\\r\\n/g,`\n`).split(`\n`).map(e=>oD(e,u,F)).join(`\n`)}const aD=[\"up\",\"down\",\"left\",\"right\",\"space\",\"enter\",\"cancel\"],c={actions:new Set(aD),aliases:new Map([[\"k\",\"up\"],[\"j\",\"down\"],[\"h\",\"left\"],[\"l\",\"right\"],[\"\u0003\",\"cancel\"],[\"escape\",\"cancel\"]])};function k$1(t,u){if(typeof t==\"string\")return c.aliases.get(t)===u;for(const F of t)if(F!==void 0&&k$1(F,u))return true;return false}function lD(t,u){if(t===u)return;const F=t.split(`\n`),e=u.split(`\n`),s=[];for(let i=0;i<Math.max(F.length,e.length);i++)F[i]!==e[i]&&s.push(i);return s}globalThis.process.platform.startsWith(\"win\");const S=Symbol(\"clack:cancel\");function d$1(t,u){const F=t;F.isTTY&&F.setRawMode(u);}var AD=Object.defineProperty,pD=(t,u,F)=>u in t?AD(t,u,{enumerable:true,configurable:true,writable:true,value:F}):t[u]=F,h=(t,u,F)=>(pD(t,typeof u!=\"symbol\"?u+\"\":u,F),F);class x{constructor(u,F=true){h(this,\"input\"),h(this,\"output\"),h(this,\"_abortSignal\"),h(this,\"rl\"),h(this,\"opts\"),h(this,\"_render\"),h(this,\"_track\",false),h(this,\"_prevFrame\",\"\"),h(this,\"_subscribers\",new Map),h(this,\"_cursor\",0),h(this,\"state\",\"initial\"),h(this,\"error\",\"\"),h(this,\"value\");const{input:e=stdin,output:s=stdout,render:i,signal:D,...C}=u;this.opts=C,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=i.bind(this),this._track=F,this._abortSignal=D,this.input=e,this.output=s;}unsubscribe(){this._subscribers.clear();}setSubscriber(u,F){const e=this._subscribers.get(u)??[];e.push(F),this._subscribers.set(u,e);}on(u,F){this.setSubscriber(u,{cb:F});}once(u,F){this.setSubscriber(u,{cb:F,once:true});}emit(u,...F){const e=this._subscribers.get(u)??[],s=[];for(const i of e)i.cb(...F),i.once&&s.push(()=>e.splice(e.indexOf(i),1));for(const i of s)i();}prompt(){return new Promise((u,F)=>{if(this._abortSignal){if(this._abortSignal.aborted)return this.state=\"cancel\",this.close(),u(S);this._abortSignal.addEventListener(\"abort\",()=>{this.state=\"cancel\",this.close();},{once:true});}const e=new WriteStream(0);e._write=(s,i,D)=>{this._track&&(this.value=this.rl?.line.replace(/\\t/g,\"\"),this._cursor=this.rl?.cursor??0,this.emit(\"value\",this.value)),D();},this.input.pipe(e),this.rl=f.createInterface({input:this.input,output:e,tabSize:2,prompt:\"\",escapeCodeTimeout:50}),f.emitKeypressEvents(this.input,this.rl),this.rl.prompt(),this.opts.initialValue!==void 0&&this._track&&this.rl.write(this.opts.initialValue),this.input.on(\"keypress\",this.onKeypress),d$1(this.input,true),this.output.on(\"resize\",this.render),this.render(),this.once(\"submit\",()=>{this.output.write(srcExports.cursor.show),this.output.off(\"resize\",this.render),d$1(this.input,false),u(this.value);}),this.once(\"cancel\",()=>{this.output.write(srcExports.cursor.show),this.output.off(\"resize\",this.render),d$1(this.input,false),u(S);});})}onKeypress(u,F){if(this.state===\"error\"&&(this.state=\"active\"),F?.name&&(!this._track&&c.aliases.has(F.name)&&this.emit(\"cursor\",c.aliases.get(F.name)),c.actions.has(F.name)&&this.emit(\"cursor\",F.name)),u&&(u.toLowerCase()===\"y\"||u.toLowerCase()===\"n\")&&this.emit(\"confirm\",u.toLowerCase()===\"y\"),u===\"\t\"&&this.opts.placeholder&&(this.value||(this.rl?.write(this.opts.placeholder),this.emit(\"value\",this.opts.placeholder))),u&&this.emit(\"key\",u.toLowerCase()),F?.name===\"return\"){if(this.opts.validate){const e=this.opts.validate(this.value);e&&(this.error=e instanceof Error?e.message:e,this.state=\"error\",this.rl?.write(this.value));}this.state!==\"error\"&&(this.state=\"submit\");}k$1([u,F?.name,F?.sequence],\"cancel\")&&(this.state=\"cancel\"),(this.state===\"submit\"||this.state===\"cancel\")&&this.emit(\"finalize\"),this.render(),(this.state===\"submit\"||this.state===\"cancel\")&&this.close();}close(){this.input.unpipe(),this.input.removeListener(\"keypress\",this.onKeypress),this.output.write(`\n`),d$1(this.input,false),this.rl?.close(),this.rl=void 0,this.emit(`${this.state}`,this.value),this.unsubscribe();}restoreCursor(){const u=G(this._prevFrame,process.stdout.columns,{hard:true}).split(`\n`).length-1;this.output.write(srcExports.cursor.move(-999,u*-1));}render(){const u=G(this._render(this)??\"\",process.stdout.columns,{hard:true});if(u!==this._prevFrame){if(this.state===\"initial\")this.output.write(srcExports.cursor.hide);else {const F=lD(this._prevFrame,u);if(this.restoreCursor(),F&&F?.length===1){const e=F[0];this.output.write(srcExports.cursor.move(0,e)),this.output.write(srcExports.erase.lines(1));const s=u.split(`\n`);this.output.write(s[e]),this._prevFrame=u,this.output.write(srcExports.cursor.move(0,s.length-e-1));return}if(F&&F?.length>1){const e=F[0];this.output.write(srcExports.cursor.move(0,e)),this.output.write(srcExports.erase.down());const s=u.split(`\n`).slice(e);this.output.write(s.join(`\n`)),this._prevFrame=u;return}this.output.write(srcExports.erase.down());}this.output.write(u),this.state===\"initial\"&&(this.state=\"active\"),this._prevFrame=u;}}}class fD extends x{get cursor(){return this.value?0:1}get _value(){return this.cursor===0}constructor(u){super(u,false),this.value=!!u.initialValue,this.on(\"value\",()=>{this.value=this._value;}),this.on(\"confirm\",F=>{this.output.write(srcExports.cursor.move(0,-1)),this.value=F,this.state=\"submit\",this.close();}),this.on(\"cursor\",()=>{this.value=!this.value;});}}var bD=Object.defineProperty,mD=(t,u,F)=>u in t?bD(t,u,{enumerable:true,configurable:true,writable:true,value:F}):t[u]=F,Y=(t,u,F)=>(mD(t,typeof u!=\"symbol\"?u+\"\":u,F),F);let wD=class extends x{constructor(u){super(u,false),Y(this,\"options\"),Y(this,\"cursor\",0),this.options=u.options,this.value=[...u.initialValues??[]],this.cursor=Math.max(this.options.findIndex(({value:F})=>F===u.cursorAt),0),this.on(\"key\",F=>{F===\"a\"&&this.toggleAll();}),this.on(\"cursor\",F=>{switch(F){case \"left\":case \"up\":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case \"down\":case \"right\":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break;case \"space\":this.toggleValue();break}});}get _value(){return this.options[this.cursor].value}toggleAll(){const u=this.value.length===this.options.length;this.value=u?[]:this.options.map(F=>F.value);}toggleValue(){const u=this.value.includes(this._value);this.value=u?this.value.filter(F=>F!==this._value):[...this.value,this._value];}};var SD=Object.defineProperty,$D=(t,u,F)=>u in t?SD(t,u,{enumerable:true,configurable:true,writable:true,value:F}):t[u]=F,q=(t,u,F)=>($D(t,typeof u!=\"symbol\"?u+\"\":u,F),F);class jD extends x{constructor(u){super(u,false),q(this,\"options\"),q(this,\"cursor\",0),this.options=u.options,this.cursor=this.options.findIndex(({value:F})=>F===u.initialValue),this.cursor===-1&&(this.cursor=0),this.changeValue(),this.on(\"cursor\",F=>{switch(F){case \"left\":case \"up\":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case \"down\":case \"right\":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break}this.changeValue();});}get _value(){return this.options[this.cursor]}changeValue(){this.value=this._value.value;}}class PD extends x{get valueWithCursor(){if(this.state===\"submit\")return this.value;if(this.cursor>=this.value.length)return `${this.value}\\u2588`;const u=this.value.slice(0,this.cursor),[F,...e$1]=this.value.slice(this.cursor);return `${u}${e.inverse(F)}${e$1.join(\"\")}`}get cursor(){return this._cursor}constructor(u){super(u),this.on(\"finalize\",()=>{this.value||(this.value=u.defaultValue);});}}\n\nfunction ce(){return g.platform!==\"win32\"?g.env.TERM!==\"linux\":!!g.env.CI||!!g.env.WT_SESSION||!!g.env.TERMINUS_SUBLIME||g.env.ConEmuTask===\"{cmd::Cmder}\"||g.env.TERM_PROGRAM===\"Terminus-Sublime\"||g.env.TERM_PROGRAM===\"vscode\"||g.env.TERM===\"xterm-256color\"||g.env.TERM===\"alacritty\"||g.env.TERMINAL_EMULATOR===\"JetBrains-JediTerm\"}const V=ce(),u=(t,n)=>V?t:n,le=u(\"❯\", \">\"),L=u(\"■\", \"x\"),W=u(\"▲\", \"x\"),C=u(\"✔\", \"√\"),o=u(\"\"),d=u(\"\"),k=u(\"\\u25CF\",\">\"),P=u(\"\\u25CB\",\" \"),A=u(\"\\u25FB\",\"[\\u2022]\"),T=u(\"\\u25FC\",\"[+]\"),F=u(\"\\u25FB\",\"[ ]\"),w=t=>{switch(t){case \"initial\":case \"active\":return e.cyan(le);case \"cancel\":return e.red(L);case \"error\":return e.yellow(W);case \"submit\":return e.green(C)}},B=t=>{const{cursor:n,options:s,style:r}=t,i=t.maxItems??Number.POSITIVE_INFINITY,a=Math.max(process.stdout.rows-4,0),c=Math.min(a,Math.max(i,5));let l=0;n>=l+c-3?l=Math.max(Math.min(n-c+3,s.length-c),0):n<l+2&&(l=Math.max(n-2,0));const $=c<s.length&&l>0,p=c<s.length&&l+c<s.length;return s.slice(l,l+c).map((M,v,x)=>{const j=v===0&&$,E=v===x.length-1&&p;return j||E?e.dim(\"...\"):r(M,v+l===n)})},he=t=>new PD({validate:t.validate,placeholder:t.placeholder,defaultValue:t.defaultValue,initialValue:t.initialValue,render(){const n=`${e.gray(o)}\n${w(this.state)} ${t.message}\n`,s=t.placeholder?e.inverse(t.placeholder[0])+e.dim(t.placeholder.slice(1)):e.inverse(e.hidden(\"_\")),r=this.value?this.valueWithCursor:s;switch(this.state){case \"error\":return `${n.trim()}\n${e.yellow(o)} ${r}\n${e.yellow(d)} ${e.yellow(this.error)}\n`;case \"submit\":return `${n}${e.gray(o)} ${e.dim(this.value||t.placeholder)}`;case \"cancel\":return `${n}${e.gray(o)} ${e.strikethrough(e.dim(this.value??\"\"))}${this.value?.trim()?`\n${e.gray(o)}`:\"\"}`;default:return `${n}${e.cyan(o)} ${r}\n${e.cyan(d)}\n`}}}).prompt(),ye=t=>{const n=t.active??\"Yes\",s=t.inactive??\"No\";return new fD({active:n,inactive:s,initialValue:t.initialValue??true,render(){const r=`${e.gray(o)}\n${w(this.state)} ${t.message}\n`,i=this.value?n:s;switch(this.state){case \"submit\":return `${r}${e.gray(o)} ${e.dim(i)}`;case \"cancel\":return `${r}${e.gray(o)} ${e.strikethrough(e.dim(i))}\n${e.gray(o)}`;default:return `${r}${e.cyan(o)} ${this.value?`${e.green(k)} ${n}`:`${e.dim(P)} ${e.dim(n)}`} ${e.dim(\"/\")} ${this.value?`${e.dim(P)} ${e.dim(s)}`:`${e.green(k)} ${s}`}\n${e.cyan(d)}\n`}}}).prompt()},ve=t=>{const n=(s,r)=>{const i=s.label??String(s.value);switch(r){case \"selected\":return `${e.dim(i)}`;case \"active\":return `${e.green(k)} ${i} ${s.hint?e.dim(`(${s.hint})`):\"\"}`;case \"cancelled\":return `${e.strikethrough(e.dim(i))}`;default:return `${e.dim(P)} ${e.dim(i)}`}};return new jD({options:t.options,initialValue:t.initialValue,render(){const s=`${e.gray(o)}\n${w(this.state)} ${t.message}\n`;switch(this.state){case \"submit\":return `${s}${e.gray(o)} ${n(this.options[this.cursor],\"selected\")}`;case \"cancel\":return `${s}${e.gray(o)} ${n(this.options[this.cursor],\"cancelled\")}\n${e.gray(o)}`;default:return `${s}${e.cyan(o)} ${B({cursor:this.cursor,options:this.options,maxItems:t.maxItems,style:(r,i)=>n(r,i?\"active\":\"inactive\")}).join(`\n${e.cyan(o)} `)}\n${e.cyan(d)}\n`}}}).prompt()},fe=t=>{const n=(s,r)=>{const i=s.label??String(s.value);return r===\"active\"?`${e.cyan(A)} ${i} ${s.hint?e.dim(`(${s.hint})`):\"\"}`:r===\"selected\"?`${e.green(T)} ${e.dim(i)}`:r===\"cancelled\"?`${e.strikethrough(e.dim(i))}`:r===\"active-selected\"?`${e.green(T)} ${i} ${s.hint?e.dim(`(${s.hint})`):\"\"}`:r===\"submitted\"?`${e.dim(i)}`:`${e.dim(F)} ${e.dim(i)}`};return new wD({options:t.options,initialValues:t.initialValues,required:t.required??true,cursorAt:t.cursorAt,validate(s){if(this.required&&s.length===0)return `Please select at least one option.\n${e.reset(e.dim(`Press ${e.gray(e.bgWhite(e.inverse(\" space \")))} to select, ${e.gray(e.bgWhite(e.inverse(\" enter \")))} to submit`))}`},render(){const s=`${e.gray(o)}\n${w(this.state)} ${t.message}\n`,r=(i,a)=>{const c=this.value.includes(i.value);return a&&c?n(i,\"active-selected\"):c?n(i,\"selected\"):n(i,a?\"active\":\"inactive\")};switch(this.state){case \"submit\":return `${s}${e.gray(o)} ${this.options.filter(({value:i})=>this.value.includes(i)).map(i=>n(i,\"submitted\")).join(e.dim(\", \"))||e.dim(\"none\")}`;case \"cancel\":{const i=this.options.filter(({value:a})=>this.value.includes(a)).map(a=>n(a,\"cancelled\")).join(e.dim(\", \"));return `${s}${e.gray(o)} ${i.trim()?`${i}\n${e.gray(o)}`:\"\"}`}case \"error\":{const i=this.error.split(`\n`).map((a,c)=>c===0?`${e.yellow(d)} ${e.yellow(a)}`:` ${a}`).join(`\n`);return `${s+e.yellow(o)} ${B({options:this.options,cursor:this.cursor,maxItems:t.maxItems,style:r}).join(`\n${e.yellow(o)} `)}\n${i}\n`}default:return `${s}${e.cyan(o)} ${B({options:this.options,cursor:this.cursor,maxItems:t.maxItems,style:r}).join(`\n${e.cyan(o)} `)}\n${e.cyan(d)}\n`}}}).prompt()};`${e.gray(o)} `;\n\nconst kCancel = Symbol.for(\"cancel\");\nasync function prompt(message, opts = {}) {\n const handleCancel = (value) => {\n if (typeof value !== \"symbol\" || value.toString() !== \"Symbol(clack:cancel)\") {\n return value;\n }\n switch (opts.cancel) {\n case \"reject\": {\n const error = new Error(\"Prompt cancelled.\");\n error.name = \"ConsolaPromptCancelledError\";\n if (Error.captureStackTrace) {\n Error.captureStackTrace(error, prompt);\n }\n throw error;\n }\n case \"undefined\": {\n return void 0;\n }\n case \"null\": {\n return null;\n }\n case \"symbol\": {\n return kCancel;\n }\n default:\n case \"default\": {\n return opts.default ?? opts.initial;\n }\n }\n };\n if (!opts.type || opts.type === \"text\") {\n return await he({\n message,\n defaultValue: opts.default,\n placeholder: opts.placeholder,\n initialValue: opts.initial\n }).then(handleCancel);\n }\n if (opts.type === \"confirm\") {\n return await ye({\n message,\n initialValue: opts.initial\n }).then(handleCancel);\n }\n if (opts.type === \"select\") {\n return await ve({\n message,\n options: opts.options.map(\n (o) => typeof o === \"string\" ? { value: o, label: o } : o\n ),\n initialValue: opts.initial\n }).then(handleCancel);\n }\n if (opts.type === \"multiselect\") {\n return await fe({\n message,\n options: opts.options.map(\n (o) => typeof o === \"string\" ? { value: o, label: o } : o\n ),\n required: opts.required,\n initialValues: opts.initial\n }).then(handleCancel);\n }\n throw new Error(`Unknown prompt type: ${opts.type}`);\n}\n\nexport { kCancel, prompt };\n","let p = process || {}, argv = p.argv || [], env = p.env || {}\nlet isColorSupported =\n\t!(!!env.NO_COLOR || argv.includes(\"--no-color\")) &&\n\t(!!env.FORCE_COLOR || argv.includes(\"--color\") || p.platform === \"win32\" || ((p.stdout || {}).isTTY && env.TERM !== \"dumb\") || !!env.CI)\n\nlet formatter = (open, close, replace = open) =>\n\tinput => {\n\t\tlet string = \"\" + input, index = string.indexOf(close, open.length)\n\t\treturn ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close\n\t}\n\nlet replaceClose = (string, close, replace, index) => {\n\tlet result = \"\", cursor = 0\n\tdo {\n\t\tresult += string.substring(cursor, index) + replace\n\t\tcursor = index + close.length\n\t\tindex = string.indexOf(close, cursor)\n\t} while (~index)\n\treturn result + string.substring(cursor)\n}\n\nlet createColors = (enabled = isColorSupported) => {\n\tlet f = enabled ? formatter : () => String\n\treturn {\n\t\tisColorSupported: enabled,\n\t\treset: f(\"\\x1b[0m\", \"\\x1b[0m\"),\n\t\tbold: f(\"\\x1b[1m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[1m\"),\n\t\tdim: f(\"\\x1b[2m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[2m\"),\n\t\titalic: f(\"\\x1b[3m\", \"\\x1b[23m\"),\n\t\tunderline: f(\"\\x1b[4m\", \"\\x1b[24m\"),\n\t\tinverse: f(\"\\x1b[7m\", \"\\x1b[27m\"),\n\t\thidden: f(\"\\x1b[8m\", \"\\x1b[28m\"),\n\t\tstrikethrough: f(\"\\x1b[9m\", \"\\x1b[29m\"),\n\n\t\tblack: f(\"\\x1b[30m\", \"\\x1b[39m\"),\n\t\tred: f(\"\\x1b[31m\", \"\\x1b[39m\"),\n\t\tgreen: f(\"\\x1b[32m\", \"\\x1b[39m\"),\n\t\tyellow: f(\"\\x1b[33m\", \"\\x1b[39m\"),\n\t\tblue: f(\"\\x1b[34m\", \"\\x1b[39m\"),\n\t\tmagenta: f(\"\\x1b[35m\", \"\\x1b[39m\"),\n\t\tcyan: f(\"\\x1b[36m\", \"\\x1b[39m\"),\n\t\twhite: f(\"\\x1b[37m\", \"\\x1b[39m\"),\n\t\tgray: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\n\t\tbgBlack: f(\"\\x1b[40m\", \"\\x1b[49m\"),\n\t\tbgRed: f(\"\\x1b[41m\", \"\\x1b[49m\"),\n\t\tbgGreen: f(\"\\x1b[42m\", \"\\x1b[49m\"),\n\t\tbgYellow: f(\"\\x1b[43m\", \"\\x1b[49m\"),\n\t\tbgBlue: f(\"\\x1b[44m\", \"\\x1b[49m\"),\n\t\tbgMagenta: f(\"\\x1b[45m\", \"\\x1b[49m\"),\n\t\tbgCyan: f(\"\\x1b[46m\", \"\\x1b[49m\"),\n\t\tbgWhite: f(\"\\x1b[47m\", \"\\x1b[49m\"),\n\n\t\tblackBright: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\t\tredBright: f(\"\\x1b[91m\", \"\\x1b[39m\"),\n\t\tgreenBright: f(\"\\x1b[92m\", \"\\x1b[39m\"),\n\t\tyellowBright: f(\"\\x1b[93m\", \"\\x1b[39m\"),\n\t\tblueBright: f(\"\\x1b[94m\", \"\\x1b[39m\"),\n\t\tmagentaBright: f(\"\\x1b[95m\", \"\\x1b[39m\"),\n\t\tcyanBright: f(\"\\x1b[96m\", \"\\x1b[39m\"),\n\t\twhiteBright: f(\"\\x1b[97m\", \"\\x1b[39m\"),\n\n\t\tbgBlackBright: f(\"\\x1b[100m\", \"\\x1b[49m\"),\n\t\tbgRedBright: f(\"\\x1b[101m\", \"\\x1b[49m\"),\n\t\tbgGreenBright: f(\"\\x1b[102m\", \"\\x1b[49m\"),\n\t\tbgYellowBright: f(\"\\x1b[103m\", \"\\x1b[49m\"),\n\t\tbgBlueBright: f(\"\\x1b[104m\", \"\\x1b[49m\"),\n\t\tbgMagentaBright: f(\"\\x1b[105m\", \"\\x1b[49m\"),\n\t\tbgCyanBright: f(\"\\x1b[106m\", \"\\x1b[49m\"),\n\t\tbgWhiteBright: f(\"\\x1b[107m\", \"\\x1b[49m\"),\n\t}\n}\n\nmodule.exports = createColors()\nmodule.exports.createColors = createColors\n","const LogLevels = {\n silent: Number.NEGATIVE_INFINITY,\n fatal: 0,\n error: 0,\n warn: 1,\n log: 2,\n info: 3,\n success: 3,\n fail: 3,\n ready: 3,\n start: 3,\n box: 3,\n debug: 4,\n trace: 5,\n verbose: Number.POSITIVE_INFINITY\n};\nconst LogTypes = {\n // Silent\n silent: {\n level: -1\n },\n // Level 0\n fatal: {\n level: LogLevels.fatal\n },\n error: {\n level: LogLevels.error\n },\n // Level 1\n warn: {\n level: LogLevels.warn\n },\n // Level 2\n log: {\n level: LogLevels.log\n },\n // Level 3\n info: {\n level: LogLevels.info\n },\n success: {\n level: LogLevels.success\n },\n fail: {\n level: LogLevels.fail\n },\n ready: {\n level: LogLevels.info\n },\n start: {\n level: LogLevels.info\n },\n box: {\n level: LogLevels.info\n },\n // Level 4\n debug: {\n level: LogLevels.debug\n },\n // Level 5\n trace: {\n level: LogLevels.trace\n },\n // Verbose\n verbose: {\n level: LogLevels.verbose\n }\n};\n\nfunction isPlainObject$1(value) {\n if (value === null || typeof value !== \"object\") {\n return false;\n }\n const prototype = Object.getPrototypeOf(value);\n if (prototype !== null && prototype !== Object.prototype && Object.getPrototypeOf(prototype) !== null) {\n return false;\n }\n if (Symbol.iterator in value) {\n return false;\n }\n if (Symbol.toStringTag in value) {\n return Object.prototype.toString.call(value) === \"[object Module]\";\n }\n return true;\n}\n\nfunction _defu(baseObject, defaults, namespace = \".\", merger) {\n if (!isPlainObject$1(defaults)) {\n return _defu(baseObject, {}, namespace, merger);\n }\n const object = Object.assign({}, defaults);\n for (const key in baseObject) {\n if (key === \"__proto__\" || key === \"constructor\") {\n continue;\n }\n const value = baseObject[key];\n if (value === null || value === void 0) {\n continue;\n }\n if (merger && merger(object, key, value, namespace)) {\n continue;\n }\n if (Array.isArray(value) && Array.isArray(object[key])) {\n object[key] = [...value, ...object[key]];\n } else if (isPlainObject$1(value) && isPlainObject$1(object[key])) {\n object[key] = _defu(\n value,\n object[key],\n (namespace ? `${namespace}.` : \"\") + key.toString(),\n merger\n );\n } else {\n object[key] = value;\n }\n }\n return object;\n}\nfunction createDefu(merger) {\n return (...arguments_) => (\n // eslint-disable-next-line unicorn/no-array-reduce\n arguments_.reduce((p, c) => _defu(p, c, \"\", merger), {})\n );\n}\nconst defu = createDefu();\n\nfunction isPlainObject(obj) {\n return Object.prototype.toString.call(obj) === \"[object Object]\";\n}\nfunction isLogObj(arg) {\n if (!isPlainObject(arg)) {\n return false;\n }\n if (!arg.message && !arg.args) {\n return false;\n }\n if (arg.stack) {\n return false;\n }\n return true;\n}\n\nlet paused = false;\nconst queue = [];\nclass Consola {\n options;\n _lastLog;\n _mockFn;\n /**\n * Creates an instance of Consola with specified options or defaults.\n *\n * @param {Partial<ConsolaOptions>} [options={}] - Configuration options for the Consola instance.\n */\n constructor(options = {}) {\n const types = options.types || LogTypes;\n this.options = defu(\n {\n ...options,\n defaults: { ...options.defaults },\n level: _normalizeLogLevel(options.level, types),\n reporters: [...options.reporters || []]\n },\n {\n types: LogTypes,\n throttle: 1e3,\n throttleMin: 5,\n formatOptions: {\n date: true,\n colors: false,\n compact: true\n }\n }\n );\n for (const type in types) {\n const defaults = {\n type,\n ...this.options.defaults,\n ...types[type]\n };\n this[type] = this._wrapLogFn(defaults);\n this[type].raw = this._wrapLogFn(\n defaults,\n true\n );\n }\n if (this.options.mockFn) {\n this.mockTypes();\n }\n this._lastLog = {};\n }\n /**\n * Gets the current log level of the Consola instance.\n *\n * @returns {number} The current log level.\n */\n get level() {\n return this.options.level;\n }\n /**\n * Sets the minimum log level that will be output by the instance.\n *\n * @param {number} level - The new log level to set.\n */\n set level(level) {\n this.options.level = _normalizeLogLevel(\n level,\n this.options.types,\n this.options.level\n );\n }\n /**\n * Displays a prompt to the user and returns the response.\n * Throw an error if `prompt` is not supported by the current configuration.\n *\n * @template T\n * @param {string} message - The message to display in the prompt.\n * @param {T} [opts] - Optional options for the prompt. See {@link PromptOptions}.\n * @returns {promise<T>} A promise that infer with the prompt options. See {@link PromptOptions}.\n */\n prompt(message, opts) {\n if (!this.options.prompt) {\n throw new Error(\"prompt is not supported!\");\n }\n return this.options.prompt(message, opts);\n }\n /**\n * Creates a new instance of Consola, inheriting options from the current instance, with possible overrides.\n *\n * @param {Partial<ConsolaOptions>} options - Optional overrides for the new instance. See {@link ConsolaOptions}.\n * @returns {ConsolaInstance} A new Consola instance. See {@link ConsolaInstance}.\n */\n create(options) {\n const instance = new Consola({\n ...this.options,\n ...options\n });\n if (this._mockFn) {\n instance.mockTypes(this._mockFn);\n }\n return instance;\n }\n /**\n * Creates a new Consola instance with the specified default log object properties.\n *\n * @param {InputLogObject} defaults - Default properties to include in any log from the new instance. See {@link InputLogObject}.\n * @returns {ConsolaInstance} A new Consola instance. See {@link ConsolaInstance}.\n */\n withDefaults(defaults) {\n return this.create({\n ...this.options,\n defaults: {\n ...this.options.defaults,\n ...defaults\n }\n });\n }\n /**\n * Creates a new Consola instance with a specified tag, which will be included in every log.\n *\n * @param {string} tag - The tag to include in each log of the new instance.\n * @returns {ConsolaInstance} A new Consola instance. See {@link ConsolaInstance}.\n */\n withTag(tag) {\n return this.withDefaults({\n tag: this.options.defaults.tag ? this.options.defaults.tag + \":\" + tag : tag\n });\n }\n /**\n * Adds a custom reporter to the Consola instance.\n * Reporters will be called for each log message, depending on their implementation and log level.\n *\n * @param {ConsolaReporter} reporter - The reporter to add. See {@link ConsolaReporter}.\n * @returns {Consola} The current Consola instance.\n */\n addReporter(reporter) {\n this.options.reporters.push(reporter);\n return this;\n }\n /**\n * Removes a custom reporter from the Consola instance.\n * If no reporter is specified, all reporters will be removed.\n *\n * @param {ConsolaReporter} reporter - The reporter to remove. See {@link ConsolaReporter}.\n * @returns {Consola} The current Consola instance.\n */\n removeReporter(reporter) {\n if (reporter) {\n const i = this.options.reporters.indexOf(reporter);\n if (i !== -1) {\n return this.options.reporters.splice(i, 1);\n }\n } else {\n this.options.reporters.splice(0);\n }\n return this;\n }\n /**\n * Replaces all reporters of the Consola instance with the specified array of reporters.\n *\n * @param {ConsolaReporter[]} reporters - The new reporters to set. See {@link ConsolaReporter}.\n * @returns {Consola} The current Consola instance.\n */\n setReporters(reporters) {\n this.options.reporters = Array.isArray(reporters) ? reporters : [reporters];\n return this;\n }\n wrapAll() {\n this.wrapConsole();\n this.wrapStd();\n }\n restoreAll() {\n this.restoreConsole();\n this.restoreStd();\n }\n /**\n * Overrides console methods with Consola logging methods for consistent logging.\n */\n wrapConsole() {\n for (const type in this.options.types) {\n if (!console[\"__\" + type]) {\n console[\"__\" + type] = console[type];\n }\n console[type] = this[type].raw;\n }\n }\n /**\n * Restores the original console methods, removing Consola overrides.\n */\n restoreConsole() {\n for (const type in this.options.types) {\n if (console[\"__\" + type]) {\n console[type] = console[\"__\" + type];\n delete console[\"__\" + type];\n }\n }\n }\n /**\n * Overrides standard output and error streams to redirect them through Consola.\n */\n wrapStd() {\n this._wrapStream(this.options.stdout, \"log\");\n this._wrapStream(this.options.stderr, \"log\");\n }\n _wrapStream(stream, type) {\n if (!stream) {\n return;\n }\n if (!stream.__write) {\n stream.__write = stream.write;\n }\n stream.write = (data) => {\n this[type].raw(String(data).trim());\n };\n }\n /**\n * Restores the original standard output and error streams, removing the Consola redirection.\n */\n restoreStd() {\n this._restoreStream(this.options.stdout);\n this._restoreStream(this.options.stderr);\n }\n _restoreStream(stream) {\n if (!stream) {\n return;\n }\n if (stream.__write) {\n stream.write = stream.__write;\n delete stream.__write;\n }\n }\n /**\n * Pauses logging, queues incoming logs until resumed.\n */\n pauseLogs() {\n paused = true;\n }\n /**\n * Resumes logging, processing any queued logs.\n */\n resumeLogs() {\n paused = false;\n const _queue = queue.splice(0);\n for (const item of _queue) {\n item[0]._logFn(item[1], item[2]);\n }\n }\n /**\n * Replaces logging methods with mocks if a mock function is provided.\n *\n * @param {ConsolaOptions[\"mockFn\"]} mockFn - The function to use for mocking logging methods. See {@link ConsolaOptions[\"mockFn\"]}.\n */\n mockTypes(mockFn) {\n const _mockFn = mockFn || this.options.mockFn;\n this._mockFn = _mockFn;\n if (typeof _mockFn !== \"function\") {\n return;\n }\n for (const type in this.options.types) {\n this[type] = _mockFn(type, this.options.types[type]) || this[type];\n this[type].raw = this[type];\n }\n }\n _wrapLogFn(defaults, isRaw) {\n return (...args) => {\n if (paused) {\n queue.push([this, defaults, args, isRaw]);\n return;\n }\n return this._logFn(defaults, args, isRaw);\n };\n }\n _logFn(defaults, args, isRaw) {\n if ((defaults.level || 0) > this.level) {\n return false;\n }\n const logObj = {\n date: /* @__PURE__ */ new Date(),\n args: [],\n ...defaults,\n level: _normalizeLogLevel(defaults.level, this.options.types)\n };\n if (!isRaw && args.length === 1 && isLogObj(args[0])) {\n Object.assign(logObj, args[0]);\n } else {\n logObj.args = [...args];\n }\n if (logObj.message) {\n logObj.args.unshift(logObj.message);\n delete logObj.message;\n }\n if (logObj.additional) {\n if (!Array.isArray(logObj.additional)) {\n logObj.additional = logObj.additional.split(\"\\n\");\n }\n logObj.args.push(\"\\n\" + logObj.additional.join(\"\\n\"));\n delete logObj.additional;\n }\n logObj.type = typeof logObj.type === \"string\" ? logObj.type.toLowerCase() : \"log\";\n logObj.tag = typeof logObj.tag === \"string\" ? logObj.tag : \"\";\n const resolveLog = (newLog = false) => {\n const repeated = (this._lastLog.count || 0) - this.options.throttleMin;\n if (this._lastLog.object && repeated > 0) {\n const args2 = [...this._lastLog.object.args];\n if (repeated > 1) {\n args2.push(`(repeated ${repeated} times)`);\n }\n this._log({ ...this._lastLog.object, args: args2 });\n this._lastLog.count = 1;\n }\n if (newLog) {\n this._lastLog.object = logObj;\n this._log(logObj);\n }\n };\n clearTimeout(this._lastLog.timeout);\n const diffTime = this._lastLog.time && logObj.date ? logObj.date.getTime() - this._lastLog.time.getTime() : 0;\n this._lastLog.time = logObj.date;\n if (diffTime < this.options.throttle) {\n try {\n const serializedLog = JSON.stringify([\n logObj.type,\n logObj.tag,\n logObj.args\n ]);\n const isSameLog = this._lastLog.serialized === serializedLog;\n this._lastLog.serialized = serializedLog;\n if (isSameLog) {\n this._lastLog.count = (this._lastLog.count || 0) + 1;\n if (this._lastLog.count > this.options.throttleMin) {\n this._lastLog.timeout = setTimeout(\n resolveLog,\n this.options.throttle\n );\n return;\n }\n }\n } catch {\n }\n }\n resolveLog(true);\n }\n _log(logObj) {\n for (const reporter of this.options.reporters) {\n reporter.log(logObj, {\n options: this.options\n });\n }\n }\n}\nfunction _normalizeLogLevel(input, types = {}, defaultLevel = 3) {\n if (input === void 0) {\n return defaultLevel;\n }\n if (typeof input === \"number\") {\n return input;\n }\n if (types[input] && types[input].level !== void 0) {\n return types[input].level;\n }\n return defaultLevel;\n}\nConsola.prototype.add = Consola.prototype.addReporter;\nConsola.prototype.remove = Consola.prototype.removeReporter;\nConsola.prototype.clear = Consola.prototype.removeReporter;\nConsola.prototype.withScope = Consola.prototype.withTag;\nConsola.prototype.mock = Consola.prototype.mockTypes;\nConsola.prototype.pause = Consola.prototype.pauseLogs;\nConsola.prototype.resume = Consola.prototype.resumeLogs;\nfunction createConsola(options = {}) {\n return new Consola(options);\n}\n\nexport { Consola, LogLevels, LogTypes, createConsola };\n","import { formatWithOptions } from 'node:util';\nimport { sep } from 'node:path';\n\nfunction parseStack(stack, message) {\n const cwd = process.cwd() + sep;\n const lines = stack.split(\"\\n\").splice(message.split(\"\\n\").length).map((l) => l.trim().replace(\"file://\", \"\").replace(cwd, \"\"));\n return lines;\n}\n\nfunction writeStream(data, stream) {\n const write = stream.__write || stream.write;\n return write.call(stream, data);\n}\n\nconst bracket = (x) => x ? `[${x}]` : \"\";\nclass BasicReporter {\n formatStack(stack, message, opts) {\n const indent = \" \".repeat((opts?.errorLevel || 0) + 1);\n return indent + parseStack(stack, message).join(`\n${indent}`);\n }\n formatError(err, opts) {\n const message = err.message ?? formatWithOptions(opts, err);\n const stack = err.stack ? this.formatStack(err.stack, message, opts) : \"\";\n const level = opts?.errorLevel || 0;\n const causedPrefix = level > 0 ? `${\" \".repeat(level)}[cause]: ` : \"\";\n const causedError = err.cause ? \"\\n\\n\" + this.formatError(err.cause, { ...opts, errorLevel: level + 1 }) : \"\";\n return causedPrefix + message + \"\\n\" + stack + causedError;\n }\n formatArgs(args, opts) {\n const _args = args.map((arg) => {\n if (arg && typeof arg.stack === \"string\") {\n return this.formatError(arg, opts);\n }\n return arg;\n });\n return formatWithOptions(opts, ..._args);\n }\n formatDate(date, opts) {\n return opts.date ? date.toLocaleTimeString() : \"\";\n }\n filterAndJoin(arr) {\n return arr.filter(Boolean).join(\" \");\n }\n formatLogObj(logObj, opts) {\n const message = this.formatArgs(logObj.args, opts);\n if (logObj.type === \"box\") {\n return \"\\n\" + [\n bracket(logObj.tag),\n logObj.title && logObj.title,\n ...message.split(\"\\n\")\n ].filter(Boolean).map((l) => \" > \" + l).join(\"\\n\") + \"\\n\";\n }\n return this.filterAndJoin([\n bracket(logObj.type),\n bracket(logObj.tag),\n message\n ]);\n }\n log(logObj, ctx) {\n const line = this.formatLogObj(logObj, {\n columns: ctx.options.stdout.columns || 0,\n ...ctx.options.formatOptions\n });\n return writeStream(\n line + \"\\n\",\n logObj.level < 2 ? ctx.options.stderr || process.stderr : ctx.options.stdout || process.stdout\n );\n }\n}\n\nexport { BasicReporter as B, parseStack as p };\n","import * as tty from 'node:tty';\n\nconst {\n env = {},\n argv = [],\n platform = \"\"\n} = typeof process === \"undefined\" ? {} : process;\nconst isDisabled = \"NO_COLOR\" in env || argv.includes(\"--no-color\");\nconst isForced = \"FORCE_COLOR\" in env || argv.includes(\"--color\");\nconst isWindows = platform === \"win32\";\nconst isDumbTerminal = env.TERM === \"dumb\";\nconst isCompatibleTerminal = tty && tty.isatty && tty.isatty(1) && env.TERM && !isDumbTerminal;\nconst isCI = \"CI\" in env && (\"GITHUB_ACTIONS\" in env || \"GITLAB_CI\" in env || \"CIRCLECI\" in env);\nconst isColorSupported = !isDisabled && (isForced || isWindows && !isDumbTerminal || isCompatibleTerminal || isCI);\nfunction replaceClose(index, string, close, replace, head = string.slice(0, Math.max(0, index)) + replace, tail = string.slice(Math.max(0, index + close.length)), next = tail.indexOf(close)) {\n return head + (next < 0 ? tail : replaceClose(next, tail, close, replace));\n}\nfunction clearBleed(index, string, open, close, replace) {\n return index < 0 ? open + string + close : open + replaceClose(index, string, close, replace) + close;\n}\nfunction filterEmpty(open, close, replace = open, at = open.length + 1) {\n return (string) => string || !(string === \"\" || string === void 0) ? clearBleed(\n (\"\" + string).indexOf(close, at),\n string,\n open,\n close,\n replace\n ) : \"\";\n}\nfunction init(open, close, replace) {\n return filterEmpty(`\\x1B[${open}m`, `\\x1B[${close}m`, replace);\n}\nconst colorDefs = {\n reset: init(0, 0),\n bold: init(1, 22, \"\\x1B[22m\\x1B[1m\"),\n dim: init(2, 22, \"\\x1B[22m\\x1B[2m\"),\n italic: init(3, 23),\n underline: init(4, 24),\n inverse: init(7, 27),\n hidden: init(8, 28),\n strikethrough: init(9, 29),\n black: init(30, 39),\n red: init(31, 39),\n green: init(32, 39),\n yellow: init(33, 39),\n blue: init(34, 39),\n magenta: init(35, 39),\n cyan: init(36, 39),\n white: init(37, 39),\n gray: init(90, 39),\n bgBlack: init(40, 49),\n bgRed: init(41, 49),\n bgGreen: init(42, 49),\n bgYellow: init(43, 49),\n bgBlue: init(44, 49),\n bgMagenta: init(45, 49),\n bgCyan: init(46, 49),\n bgWhite: init(47, 49),\n blackBright: init(90, 39),\n redBright: init(91, 39),\n greenBright: init(92, 39),\n yellowBright: init(93, 39),\n blueBright: init(94, 39),\n magentaBright: init(95, 39),\n cyanBright: init(96, 39),\n whiteBright: init(97, 39),\n bgBlackBright: init(100, 49),\n bgRedBright: init(101, 49),\n bgGreenBright: init(102, 49),\n bgYellowBright: init(103, 49),\n bgBlueBright: init(104, 49),\n bgMagentaBright: init(105, 49),\n bgCyanBright: init(106, 49),\n bgWhiteBright: init(107, 49)\n};\nfunction createColors(useColor = isColorSupported) {\n return useColor ? colorDefs : Object.fromEntries(Object.keys(colorDefs).map((key) => [key, String]));\n}\nconst colors = createColors();\nfunction getColor(color, fallback = \"reset\") {\n return colors[color] || colors[fallback];\n}\nfunction colorize(color, text) {\n return getColor(color)(text);\n}\n\nconst ansiRegex = [\n String.raw`[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)`,\n String.raw`(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))`\n].join(\"|\");\nfunction stripAnsi(text) {\n return text.replace(new RegExp(ansiRegex, \"g\"), \"\");\n}\nfunction centerAlign(str, len, space = \" \") {\n const free = len - str.length;\n if (free <= 0) {\n return str;\n }\n const freeLeft = Math.floor(free / 2);\n let _str = \"\";\n for (let i = 0; i < len; i++) {\n _str += i < freeLeft || i >= freeLeft + str.length ? space : str[i - freeLeft];\n }\n return _str;\n}\nfunction rightAlign(str, len, space = \" \") {\n const free = len - str.length;\n if (free <= 0) {\n return str;\n }\n let _str = \"\";\n for (let i = 0; i < len; i++) {\n _str += i < free ? space : str[i - free];\n }\n return _str;\n}\nfunction leftAlign(str, len, space = \" \") {\n let _str = \"\";\n for (let i = 0; i < len; i++) {\n _str += i < str.length ? str[i] : space;\n }\n return _str;\n}\nfunction align(alignment, str, len, space = \" \") {\n switch (alignment) {\n case \"left\": {\n return leftAlign(str, len, space);\n }\n case \"right\": {\n return rightAlign(str, len, space);\n }\n case \"center\": {\n return centerAlign(str, len, space);\n }\n default: {\n return str;\n }\n }\n}\n\nconst boxStylePresets = {\n solid: {\n tl: \"\\u250C\",\n tr: \"\\u2510\",\n bl: \"\\u2514\",\n br: \"\\u2518\",\n h: \"\\u2500\",\n v: \"\\u2502\"\n },\n double: {\n tl: \"\\u2554\",\n tr: \"\\u2557\",\n bl: \"\\u255A\",\n br: \"\\u255D\",\n h: \"\\u2550\",\n v: \"\\u2551\"\n },\n doubleSingle: {\n tl: \"\\u2553\",\n tr: \"\\u2556\",\n bl: \"\\u2559\",\n br: \"\\u255C\",\n h: \"\\u2500\",\n v: \"\\u2551\"\n },\n doubleSingleRounded: {\n tl: \"\\u256D\",\n tr: \"\\u256E\",\n bl: \"\\u2570\",\n br: \"\\u256F\",\n h: \"\\u2500\",\n v: \"\\u2551\"\n },\n singleThick: {\n tl: \"\\u250F\",\n tr: \"\\u2513\",\n bl: \"\\u2517\",\n br: \"\\u251B\",\n h: \"\\u2501\",\n v: \"\\u2503\"\n },\n singleDouble: {\n tl: \"\\u2552\",\n tr: \"\\u2555\",\n bl: \"\\u2558\",\n br: \"\\u255B\",\n h: \"\\u2550\",\n v: \"\\u2502\"\n },\n singleDoubleRounded: {\n tl: \"\\u256D\",\n tr: \"\\u256E\",\n bl: \"\\u2570\",\n br: \"\\u256F\",\n h: \"\\u2550\",\n v: \"\\u2502\"\n },\n rounded: {\n tl: \"\\u256D\",\n tr: \"\\u256E\",\n bl: \"\\u2570\",\n br: \"\\u256F\",\n h: \"\\u2500\",\n v: \"\\u2502\"\n }\n};\nconst defaultStyle = {\n borderColor: \"white\",\n borderStyle: \"rounded\",\n valign: \"center\",\n padding: 2,\n marginLeft: 1,\n marginTop: 1,\n marginBottom: 1\n};\nfunction box(text, _opts = {}) {\n const opts = {\n ..._opts,\n style: {\n ...defaultStyle,\n ..._opts.style\n }\n };\n const textLines = text.split(\"\\n\");\n const boxLines = [];\n const _color = getColor(opts.style.borderColor);\n const borderStyle = {\n ...typeof opts.style.borderStyle === \"string\" ? boxStylePresets[opts.style.borderStyle] || boxStylePresets.solid : opts.style.borderStyle\n };\n if (_color) {\n for (const key in borderStyle) {\n borderStyle[key] = _color(\n borderStyle[key]\n );\n }\n }\n const paddingOffset = opts.style.padding % 2 === 0 ? opts.style.padding : opts.style.padding + 1;\n const height = textLines.length + paddingOffset;\n const width = Math.max(\n ...textLines.map((line) => stripAnsi(line).length),\n opts.title ? stripAnsi(opts.title).length : 0\n ) + paddingOffset;\n const widthOffset = width + paddingOffset;\n const leftSpace = opts.style.marginLeft > 0 ? \" \".repeat(opts.style.marginLeft) : \"\";\n if (opts.style.marginTop > 0) {\n boxLines.push(\"\".repeat(opts.style.marginTop));\n }\n if (opts.title) {\n const title = _color ? _color(opts.title) : opts.title;\n const left = borderStyle.h.repeat(\n Math.floor((width - stripAnsi(opts.title).length) / 2)\n );\n const right = borderStyle.h.repeat(\n width - stripAnsi(opts.title).length - stripAnsi(left).length + paddingOffset\n );\n boxLines.push(\n `${leftSpace}${borderStyle.tl}${left}${title}${right}${borderStyle.tr}`\n );\n } else {\n boxLines.push(\n `${leftSpace}${borderStyle.tl}${borderStyle.h.repeat(widthOffset)}${borderStyle.tr}`\n );\n }\n const valignOffset = opts.style.valign === \"center\" ? Math.floor((height - textLines.length) / 2) : opts.style.valign === \"top\" ? height - textLines.length - paddingOffset : height - textLines.length;\n for (let i = 0; i < height; i++) {\n if (i < valignOffset || i >= valignOffset + textLines.length) {\n boxLines.push(\n `${leftSpace}${borderStyle.v}${\" \".repeat(widthOffset)}${borderStyle.v}`\n );\n } else {\n const line = textLines[i - valignOffset];\n const left = \" \".repeat(paddingOffset);\n const right = \" \".repeat(width - stripAnsi(line).length);\n boxLines.push(\n `${leftSpace}${borderStyle.v}${left}${line}${right}${borderStyle.v}`\n );\n }\n }\n boxLines.push(\n `${leftSpace}${borderStyle.bl}${borderStyle.h.repeat(widthOffset)}${borderStyle.br}`\n );\n if (opts.style.marginBottom > 0) {\n boxLines.push(\"\".repeat(opts.style.marginBottom));\n }\n return boxLines.join(\"\\n\");\n}\n\nexport { centerAlign as a, align as b, colorize as c, box as d, colors as e, getColor as g, leftAlign as l, rightAlign as r, stripAnsi as s };\n","import { createConsola as createConsola$1, LogLevels } from './core.mjs';\nexport { Consola, LogTypes } from './core.mjs';\nimport { B as BasicReporter, p as parseStack } from './shared/consola.DRwqZj3T.mjs';\nimport g$1 from 'node:process';\nimport { e as colors, d as box, s as stripAnsi$1 } from './shared/consola.DXBYu-KD.mjs';\nimport 'node:util';\nimport 'node:path';\nimport 'node:tty';\n\nconst r=Object.create(null),i=e=>globalThis.process?.env||import.meta.env||globalThis.Deno?.env.toObject()||globalThis.__env__||(e?r:globalThis),o=new Proxy(r,{get(e,s){return i()[s]??r[s]},has(e,s){const E=i();return s in E||s in r},set(e,s,E){const B=i(true);return B[s]=E,true},deleteProperty(e,s){if(!s)return false;const E=i(true);return delete E[s],true},ownKeys(){const e=i(true);return Object.keys(e)}}),t=typeof process<\"u\"&&process.env&&process.env.NODE_ENV||\"\",f=[[\"APPVEYOR\"],[\"AWS_AMPLIFY\",\"AWS_APP_ID\",{ci:true}],[\"AZURE_PIPELINES\",\"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI\"],[\"AZURE_STATIC\",\"INPUT_AZURE_STATIC_WEB_APPS_API_TOKEN\"],[\"APPCIRCLE\",\"AC_APPCIRCLE\"],[\"BAMBOO\",\"bamboo_planKey\"],[\"BITBUCKET\",\"BITBUCKET_COMMIT\"],[\"BITRISE\",\"BITRISE_IO\"],[\"BUDDY\",\"BUDDY_WORKSPACE_ID\"],[\"BUILDKITE\"],[\"CIRCLE\",\"CIRCLECI\"],[\"CIRRUS\",\"CIRRUS_CI\"],[\"CLOUDFLARE_PAGES\",\"CF_PAGES\",{ci:true}],[\"CODEBUILD\",\"CODEBUILD_BUILD_ARN\"],[\"CODEFRESH\",\"CF_BUILD_ID\"],[\"DRONE\"],[\"DRONE\",\"DRONE_BUILD_EVENT\"],[\"DSARI\"],[\"GITHUB_ACTIONS\"],[\"GITLAB\",\"GITLAB_CI\"],[\"GITLAB\",\"CI_MERGE_REQUEST_ID\"],[\"GOCD\",\"GO_PIPELINE_LABEL\"],[\"LAYERCI\"],[\"HUDSON\",\"HUDSON_URL\"],[\"JENKINS\",\"JENKINS_URL\"],[\"MAGNUM\"],[\"NETLIFY\"],[\"NETLIFY\",\"NETLIFY_LOCAL\",{ci:false}],[\"NEVERCODE\"],[\"RENDER\"],[\"SAIL\",\"SAILCI\"],[\"SEMAPHORE\"],[\"SCREWDRIVER\"],[\"SHIPPABLE\"],[\"SOLANO\",\"TDDIUM\"],[\"STRIDER\"],[\"TEAMCITY\",\"TEAMCITY_VERSION\"],[\"TRAVIS\"],[\"VERCEL\",\"NOW_BUILDER\"],[\"VERCEL\",\"VERCEL\",{ci:false}],[\"VERCEL\",\"VERCEL_ENV\",{ci:false}],[\"APPCENTER\",\"APPCENTER_BUILD_ID\"],[\"CODESANDBOX\",\"CODESANDBOX_SSE\",{ci:false}],[\"CODESANDBOX\",\"CODESANDBOX_HOST\",{ci:false}],[\"STACKBLITZ\"],[\"STORMKIT\"],[\"CLEAVR\"],[\"ZEABUR\"],[\"CODESPHERE\",\"CODESPHERE_APP_ID\",{ci:true}],[\"RAILWAY\",\"RAILWAY_PROJECT_ID\"],[\"RAILWAY\",\"RAILWAY_SERVICE_ID\"],[\"DENO-DEPLOY\",\"DENO_DEPLOYMENT_ID\"],[\"FIREBASE_APP_HOSTING\",\"FIREBASE_APP_HOSTING\",{ci:true}]];function b(){if(globalThis.process?.env)for(const e of f){const s=e[1]||e[0];if(globalThis.process?.env[s])return {name:e[0].toLowerCase(),...e[2]}}return globalThis.process?.env?.SHELL===\"/bin/jsh\"&&globalThis.process?.versions?.webcontainer?{name:\"stackblitz\",ci:false}:{name:\"\",ci:false}}const l=b();l.name;function n(e){return e?e!==\"false\":false}const I=globalThis.process?.platform||\"\",T=n(o.CI)||l.ci!==false,a=n(globalThis.process?.stdout&&globalThis.process?.stdout.isTTY),g=n(o.DEBUG),R=t===\"test\"||n(o.TEST);n(o.MINIMAL)||T||R||!a;const A=/^win/i.test(I);!n(o.NO_COLOR)&&(n(o.FORCE_COLOR)||(a||A)&&o.TERM!==\"dumb\"||T);const C=(globalThis.process?.versions?.node||\"\").replace(/^v/,\"\")||null;Number(C?.split(\".\")[0])||null;const y=globalThis.process||Object.create(null),_={versions:{}};new Proxy(y,{get(e,s){if(s===\"env\")return o;if(s in e)return e[s];if(s in _)return _[s]}});const c=globalThis.process?.release?.name===\"node\",O=!!globalThis.Bun||!!globalThis.process?.versions?.bun,D=!!globalThis.Deno,L=!!globalThis.fastly,S=!!globalThis.Netlify,u=!!globalThis.EdgeRuntime,N=globalThis.navigator?.userAgent===\"Cloudflare-Workers\",F=[[S,\"netlify\"],[u,\"edge-light\"],[N,\"workerd\"],[L,\"fastly\"],[D,\"deno\"],[O,\"bun\"],[c,\"node\"]];function G(){const e=F.find(s=>s[0]);if(e)return {name:e[1]}}const P=G();P?.name||\"\";\n\nfunction ansiRegex({onlyFirst = false} = {}) {\n\t// Valid string terminator sequences are BEL, ESC\\, and 0x9c\n\tconst ST = '(?:\\\\u0007|\\\\u001B\\\\u005C|\\\\u009C)';\n\tconst pattern = [\n\t\t`[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?${ST})`,\n\t\t'(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]))',\n\t].join('|');\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n}\n\nconst regex = ansiRegex();\n\nfunction stripAnsi(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n\t}\n\n\t// Even though the regex is global, we don't need to reset the `.lastIndex`\n\t// because unlike `.exec()` and `.test()`, `.replace()` does it automatically\n\t// and doing it manually has a performance penalty.\n\treturn string.replace(regex, '');\n}\n\n// Generated code.\n\nfunction isAmbiguous(x) {\n\treturn x === 0xA1\n\t\t|| x === 0xA4\n\t\t|| x === 0xA7\n\t\t|| x === 0xA8\n\t\t|| x === 0xAA\n\t\t|| x === 0xAD\n\t\t|| x === 0xAE\n\t\t|| x >= 0xB0 && x <= 0xB4\n\t\t|| x >= 0xB6 && x <= 0xBA\n\t\t|| x >= 0xBC && x <= 0xBF\n\t\t|| x === 0xC6\n\t\t|| x === 0xD0\n\t\t|| x === 0xD7\n\t\t|| x === 0xD8\n\t\t|| x >= 0xDE && x <= 0xE1\n\t\t|| x === 0xE6\n\t\t|| x >= 0xE8 && x <= 0xEA\n\t\t|| x === 0xEC\n\t\t|| x === 0xED\n\t\t|| x === 0xF0\n\t\t|| x === 0xF2\n\t\t|| x === 0xF3\n\t\t|| x >= 0xF7 && x <= 0xFA\n\t\t|| x === 0xFC\n\t\t|| x === 0xFE\n\t\t|| x === 0x101\n\t\t|| x === 0x111\n\t\t|| x === 0x113\n\t\t|| x === 0x11B\n\t\t|| x === 0x126\n\t\t|| x === 0x127\n\t\t|| x === 0x12B\n\t\t|| x >= 0x131 && x <= 0x133\n\t\t|| x === 0x138\n\t\t|| x >= 0x13F && x <= 0x142\n\t\t|| x === 0x144\n\t\t|| x >= 0x148 && x <= 0x14B\n\t\t|| x === 0x14D\n\t\t|| x === 0x152\n\t\t|| x === 0x153\n\t\t|| x === 0x166\n\t\t|| x === 0x167\n\t\t|| x === 0x16B\n\t\t|| x === 0x1CE\n\t\t|| x === 0x1D0\n\t\t|| x === 0x1D2\n\t\t|| x === 0x1D4\n\t\t|| x === 0x1D6\n\t\t|| x === 0x1D8\n\t\t|| x === 0x1DA\n\t\t|| x === 0x1DC\n\t\t|| x === 0x251\n\t\t|| x === 0x261\n\t\t|| x === 0x2C4\n\t\t|| x === 0x2C7\n\t\t|| x >= 0x2C9 && x <= 0x2CB\n\t\t|| x === 0x2CD\n\t\t|| x === 0x2D0\n\t\t|| x >= 0x2D8 && x <= 0x2DB\n\t\t|| x === 0x2DD\n\t\t|| x === 0x2DF\n\t\t|| x >= 0x300 && x <= 0x36F\n\t\t|| x >= 0x391 && x <= 0x3A1\n\t\t|| x >= 0x3A3 && x <= 0x3A9\n\t\t|| x >= 0x3B1 && x <= 0x3C1\n\t\t|| x >= 0x3C3 && x <= 0x3C9\n\t\t|| x === 0x401\n\t\t|| x >= 0x410 && x <= 0x44F\n\t\t|| x === 0x451\n\t\t|| x === 0x2010\n\t\t|| x >= 0x2013 && x <= 0x2016\n\t\t|| x === 0x2018\n\t\t|| x === 0x2019\n\t\t|| x === 0x201C\n\t\t|| x === 0x201D\n\t\t|| x >= 0x2020 && x <= 0x2022\n\t\t|| x >= 0x2024 && x <= 0x2027\n\t\t|| x === 0x2030\n\t\t|| x === 0x2032\n\t\t|| x === 0x2033\n\t\t|| x === 0x2035\n\t\t|| x === 0x203B\n\t\t|| x === 0x203E\n\t\t|| x === 0x2074\n\t\t|| x === 0x207F\n\t\t|| x >= 0x2081 && x <= 0x2084\n\t\t|| x === 0x20AC\n\t\t|| x === 0x2103\n\t\t|| x === 0x2105\n\t\t|| x === 0x2109\n\t\t|| x === 0x2113\n\t\t|| x === 0x2116\n\t\t|| x === 0x2121\n\t\t|| x === 0x2122\n\t\t|| x === 0x2126\n\t\t|| x === 0x212B\n\t\t|| x === 0x2153\n\t\t|| x === 0x2154\n\t\t|| x >= 0x215B && x <= 0x215E\n\t\t|| x >= 0x2160 && x <= 0x216B\n\t\t|| x >= 0x2170 && x <= 0x2179\n\t\t|| x === 0x2189\n\t\t|| x >= 0x2190 && x <= 0x2199\n\t\t|| x === 0x21B8\n\t\t|| x === 0x21B9\n\t\t|| x === 0x21D2\n\t\t|| x === 0x21D4\n\t\t|| x === 0x21E7\n\t\t|| x === 0x2200\n\t\t|| x === 0x2202\n\t\t|| x === 0x2203\n\t\t|| x === 0x2207\n\t\t|| x === 0x2208\n\t\t|| x === 0x220B\n\t\t|| x === 0x220F\n\t\t|| x === 0x2211\n\t\t|| x === 0x2215\n\t\t|| x === 0x221A\n\t\t|| x >= 0x221D && x <= 0x2220\n\t\t|| x === 0x2223\n\t\t|| x === 0x2225\n\t\t|| x >= 0x2227 && x <= 0x222C\n\t\t|| x === 0x222E\n\t\t|| x >= 0x2234 && x <= 0x2237\n\t\t|| x === 0x223C\n\t\t|| x === 0x223D\n\t\t|| x === 0x2248\n\t\t|| x === 0x224C\n\t\t|| x === 0x2252\n\t\t|| x === 0x2260\n\t\t|| x === 0x2261\n\t\t|| x >= 0x2264 && x <= 0x2267\n\t\t|| x === 0x226A\n\t\t|| x === 0x226B\n\t\t|| x === 0x226E\n\t\t|| x === 0x226F\n\t\t|| x === 0x2282\n\t\t|| x === 0x2283\n\t\t|| x === 0x2286\n\t\t|| x === 0x2287\n\t\t|| x === 0x2295\n\t\t|| x === 0x2299\n\t\t|| x === 0x22A5\n\t\t|| x === 0x22BF\n\t\t|| x === 0x2312\n\t\t|| x >= 0x2460 && x <= 0x24E9\n\t\t|| x >= 0x24EB && x <= 0x254B\n\t\t|| x >= 0x2550 && x <= 0x2573\n\t\t|| x >= 0x2580 && x <= 0x258F\n\t\t|| x >= 0x2592 && x <= 0x2595\n\t\t|| x === 0x25A0\n\t\t|| x === 0x25A1\n\t\t|| x >= 0x25A3 && x <= 0x25A9\n\t\t|| x === 0x25B2\n\t\t|| x === 0x25B3\n\t\t|| x === 0x25B6\n\t\t|| x === 0x25B7\n\t\t|| x === 0x25BC\n\t\t|| x === 0x25BD\n\t\t|| x === 0x25C0\n\t\t|| x === 0x25C1\n\t\t|| x >= 0x25C6 && x <= 0x25C8\n\t\t|| x === 0x25CB\n\t\t|| x >= 0x25CE && x <= 0x25D1\n\t\t|| x >= 0x25E2 && x <= 0x25E5\n\t\t|| x === 0x25EF\n\t\t|| x === 0x2605\n\t\t|| x === 0x2606\n\t\t|| x === 0x2609\n\t\t|| x === 0x260E\n\t\t|| x === 0x260F\n\t\t|| x === 0x261C\n\t\t|| x === 0x261E\n\t\t|| x === 0x2640\n\t\t|| x === 0x2642\n\t\t|| x === 0x2660\n\t\t|| x === 0x2661\n\t\t|| x >= 0x2663 && x <= 0x2665\n\t\t|| x >= 0x2667 && x <= 0x266A\n\t\t|| x === 0x266C\n\t\t|| x === 0x266D\n\t\t|| x === 0x266F\n\t\t|| x === 0x269E\n\t\t|| x === 0x269F\n\t\t|| x === 0x26BF\n\t\t|| x >= 0x26C6 && x <= 0x26CD\n\t\t|| x >= 0x26CF && x <= 0x26D3\n\t\t|| x >= 0x26D5 && x <= 0x26E1\n\t\t|| x === 0x26E3\n\t\t|| x === 0x26E8\n\t\t|| x === 0x26E9\n\t\t|| x >= 0x26EB && x <= 0x26F1\n\t\t|| x === 0x26F4\n\t\t|| x >= 0x26F6 && x <= 0x26F9\n\t\t|| x === 0x26FB\n\t\t|| x === 0x26FC\n\t\t|| x === 0x26FE\n\t\t|| x === 0x26FF\n\t\t|| x === 0x273D\n\t\t|| x >= 0x2776 && x <= 0x277F\n\t\t|| x >= 0x2B56 && x <= 0x2B59\n\t\t|| x >= 0x3248 && x <= 0x324F\n\t\t|| x >= 0xE000 && x <= 0xF8FF\n\t\t|| x >= 0xFE00 && x <= 0xFE0F\n\t\t|| x === 0xFFFD\n\t\t|| x >= 0x1F100 && x <= 0x1F10A\n\t\t|| x >= 0x1F110 && x <= 0x1F12D\n\t\t|| x >= 0x1F130 && x <= 0x1F169\n\t\t|| x >= 0x1F170 && x <= 0x1F18D\n\t\t|| x === 0x1F18F\n\t\t|| x === 0x1F190\n\t\t|| x >= 0x1F19B && x <= 0x1F1AC\n\t\t|| x >= 0xE0100 && x <= 0xE01EF\n\t\t|| x >= 0xF0000 && x <= 0xFFFFD\n\t\t|| x >= 0x100000 && x <= 0x10FFFD;\n}\n\nfunction isFullWidth(x) {\n\treturn x === 0x3000\n\t\t|| x >= 0xFF01 && x <= 0xFF60\n\t\t|| x >= 0xFFE0 && x <= 0xFFE6;\n}\n\nfunction isWide(x) {\n\treturn x >= 0x1100 && x <= 0x115F\n\t\t|| x === 0x231A\n\t\t|| x === 0x231B\n\t\t|| x === 0x2329\n\t\t|| x === 0x232A\n\t\t|| x >= 0x23E9 && x <= 0x23EC\n\t\t|| x === 0x23F0\n\t\t|| x === 0x23F3\n\t\t|| x === 0x25FD\n\t\t|| x === 0x25FE\n\t\t|| x === 0x2614\n\t\t|| x === 0x2615\n\t\t|| x >= 0x2630 && x <= 0x2637\n\t\t|| x >= 0x2648 && x <= 0x2653\n\t\t|| x === 0x267F\n\t\t|| x >= 0x268A && x <= 0x268F\n\t\t|| x === 0x2693\n\t\t|| x === 0x26A1\n\t\t|| x === 0x26AA\n\t\t|| x === 0x26AB\n\t\t|| x === 0x26BD\n\t\t|| x === 0x26BE\n\t\t|| x === 0x26C4\n\t\t|| x === 0x26C5\n\t\t|| x === 0x26CE\n\t\t|| x === 0x26D4\n\t\t|| x === 0x26EA\n\t\t|| x === 0x26F2\n\t\t|| x === 0x26F3\n\t\t|| x === 0x26F5\n\t\t|| x === 0x26FA\n\t\t|| x === 0x26FD\n\t\t|| x === 0x2705\n\t\t|| x === 0x270A\n\t\t|| x === 0x270B\n\t\t|| x === 0x2728\n\t\t|| x === 0x274C\n\t\t|| x === 0x274E\n\t\t|| x >= 0x2753 && x <= 0x2755\n\t\t|| x === 0x2757\n\t\t|| x >= 0x2795 && x <= 0x2797\n\t\t|| x === 0x27B0\n\t\t|| x === 0x27BF\n\t\t|| x === 0x2B1B\n\t\t|| x === 0x2B1C\n\t\t|| x === 0x2B50\n\t\t|| x === 0x2B55\n\t\t|| x >= 0x2E80 && x <= 0x2E99\n\t\t|| x >= 0x2E9B && x <= 0x2EF3\n\t\t|| x >= 0x2F00 && x <= 0x2FD5\n\t\t|| x >= 0x2FF0 && x <= 0x2FFF\n\t\t|| x >= 0x3001 && x <= 0x303E\n\t\t|| x >= 0x3041 && x <= 0x3096\n\t\t|| x >= 0x3099 && x <= 0x30FF\n\t\t|| x >= 0x3105 && x <= 0x312F\n\t\t|| x >= 0x3131 && x <= 0x318E\n\t\t|| x >= 0x3190 && x <= 0x31E5\n\t\t|| x >= 0x31EF && x <= 0x321E\n\t\t|| x >= 0x3220 && x <= 0x3247\n\t\t|| x >= 0x3250 && x <= 0xA48C\n\t\t|| x >= 0xA490 && x <= 0xA4C6\n\t\t|| x >= 0xA960 && x <= 0xA97C\n\t\t|| x >= 0xAC00 && x <= 0xD7A3\n\t\t|| x >= 0xF900 && x <= 0xFAFF\n\t\t|| x >= 0xFE10 && x <= 0xFE19\n\t\t|| x >= 0xFE30 && x <= 0xFE52\n\t\t|| x >= 0xFE54 && x <= 0xFE66\n\t\t|| x >= 0xFE68 && x <= 0xFE6B\n\t\t|| x >= 0x16FE0 && x <= 0x16FE4\n\t\t|| x === 0x16FF0\n\t\t|| x === 0x16FF1\n\t\t|| x >= 0x17000 && x <= 0x187F7\n\t\t|| x >= 0x18800 && x <= 0x18CD5\n\t\t|| x >= 0x18CFF && x <= 0x18D08\n\t\t|| x >= 0x1AFF0 && x <= 0x1AFF3\n\t\t|| x >= 0x1AFF5 && x <= 0x1AFFB\n\t\t|| x === 0x1AFFD\n\t\t|| x === 0x1AFFE\n\t\t|| x >= 0x1B000 && x <= 0x1B122\n\t\t|| x === 0x1B132\n\t\t|| x >= 0x1B150 && x <= 0x1B152\n\t\t|| x === 0x1B155\n\t\t|| x >= 0x1B164 && x <= 0x1B167\n\t\t|| x >= 0x1B170 && x <= 0x1B2FB\n\t\t|| x >= 0x1D300 && x <= 0x1D356\n\t\t|| x >= 0x1D360 && x <= 0x1D376\n\t\t|| x === 0x1F004\n\t\t|| x === 0x1F0CF\n\t\t|| x === 0x1F18E\n\t\t|| x >= 0x1F191 && x <= 0x1F19A\n\t\t|| x >= 0x1F200 && x <= 0x1F202\n\t\t|| x >= 0x1F210 && x <= 0x1F23B\n\t\t|| x >= 0x1F240 && x <= 0x1F248\n\t\t|| x === 0x1F250\n\t\t|| x === 0x1F251\n\t\t|| x >= 0x1F260 && x <= 0x1F265\n\t\t|| x >= 0x1F300 && x <= 0x1F320\n\t\t|| x >= 0x1F32D && x <= 0x1F335\n\t\t|| x >= 0x1F337 && x <= 0x1F37C\n\t\t|| x >= 0x1F37E && x <= 0x1F393\n\t\t|| x >= 0x1F3A0 && x <= 0x1F3CA\n\t\t|| x >= 0x1F3CF && x <= 0x1F3D3\n\t\t|| x >= 0x1F3E0 && x <= 0x1F3F0\n\t\t|| x === 0x1F3F4\n\t\t|| x >= 0x1F3F8 && x <= 0x1F43E\n\t\t|| x === 0x1F440\n\t\t|| x >= 0x1F442 && x <= 0x1F4FC\n\t\t|| x >= 0x1F4FF && x <= 0x1F53D\n\t\t|| x >= 0x1F54B && x <= 0x1F54E\n\t\t|| x >= 0x1F550 && x <= 0x1F567\n\t\t|| x === 0x1F57A\n\t\t|| x === 0x1F595\n\t\t|| x === 0x1F596\n\t\t|| x === 0x1F5A4\n\t\t|| x >= 0x1F5FB && x <= 0x1F64F\n\t\t|| x >= 0x1F680 && x <= 0x1F6C5\n\t\t|| x === 0x1F6CC\n\t\t|| x >= 0x1F6D0 && x <= 0x1F6D2\n\t\t|| x >= 0x1F6D5 && x <= 0x1F6D7\n\t\t|| x >= 0x1F6DC && x <= 0x1F6DF\n\t\t|| x === 0x1F6EB\n\t\t|| x === 0x1F6EC\n\t\t|| x >= 0x1F6F4 && x <= 0x1F6FC\n\t\t|| x >= 0x1F7E0 && x <= 0x1F7EB\n\t\t|| x === 0x1F7F0\n\t\t|| x >= 0x1F90C && x <= 0x1F93A\n\t\t|| x >= 0x1F93C && x <= 0x1F945\n\t\t|| x >= 0x1F947 && x <= 0x1F9FF\n\t\t|| x >= 0x1FA70 && x <= 0x1FA7C\n\t\t|| x >= 0x1FA80 && x <= 0x1FA89\n\t\t|| x >= 0x1FA8F && x <= 0x1FAC6\n\t\t|| x >= 0x1FACE && x <= 0x1FADC\n\t\t|| x >= 0x1FADF && x <= 0x1FAE9\n\t\t|| x >= 0x1FAF0 && x <= 0x1FAF8\n\t\t|| x >= 0x20000 && x <= 0x2FFFD\n\t\t|| x >= 0x30000 && x <= 0x3FFFD;\n}\n\nfunction validate(codePoint) {\n\tif (!Number.isSafeInteger(codePoint)) {\n\t\tthrow new TypeError(`Expected a code point, got \\`${typeof codePoint}\\`.`);\n\t}\n}\n\nfunction eastAsianWidth(codePoint, {ambiguousAsWide = false} = {}) {\n\tvalidate(codePoint);\n\n\tif (\n\t\tisFullWidth(codePoint)\n\t\t|| isWide(codePoint)\n\t\t|| (ambiguousAsWide && isAmbiguous(codePoint))\n\t) {\n\t\treturn 2;\n\t}\n\n\treturn 1;\n}\n\nconst emojiRegex = () => {\n\t// https://mths.be/emoji\n\treturn /[#*0-9]\\uFE0F?\\u20E3|[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23ED-\\u23EF\\u23F1\\u23F2\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB\\u25FC\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692\\u2694-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A7\\u26AA\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C8\\u26CF\\u26D1\\u26E9\\u26F0-\\u26F5\\u26F7\\u26F8\\u26FA\\u2702\\u2708\\u2709\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2733\\u2734\\u2744\\u2747\\u2757\\u2763\\u27A1\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B55\\u3030\\u303D\\u3297\\u3299]\\uFE0F?|[\\u261D\\u270C\\u270D](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?|[\\u270A\\u270B](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u2693\\u26A1\\u26AB\\u26C5\\u26CE\\u26D4\\u26EA\\u26FD\\u2705\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2795-\\u2797\\u27B0\\u27BF\\u2B50]|\\u26D3\\uFE0F?(?:\\u200D\\uD83D\\uDCA5)?|\\u26F9(?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\u2764\\uFE0F?(?:\\u200D(?:\\uD83D\\uDD25|\\uD83E\\uDE79))?|\\uD83C(?:[\\uDC04\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDE02\\uDE37\\uDF21\\uDF24-\\uDF2C\\uDF36\\uDF7D\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E\\uDF9F\\uDFCD\\uDFCE\\uDFD4-\\uDFDF\\uDFF5\\uDFF7]\\uFE0F?|[\\uDF85\\uDFC2\\uDFC7](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDFC4\\uDFCA](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDFCB\\uDFCC](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF43\\uDF45-\\uDF4A\\uDF4C-\\uDF7C\\uDF7E-\\uDF84\\uDF86-\\uDF93\\uDFA0-\\uDFC1\\uDFC5\\uDFC6\\uDFC8\\uDFC9\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF8-\\uDFFF]|\\uDDE6\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF]|\\uDDE7\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF]|\\uDDE8\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF7\\uDDFA-\\uDDFF]|\\uDDE9\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF]|\\uDDEA\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA]|\\uDDEB\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7]|\\uDDEC\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE]|\\uDDED\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA]|\\uDDEE\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9]|\\uDDEF\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5]|\\uDDF0\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF]|\\uDDF1\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE]|\\uDDF2\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF]|\\uDDF3\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF]|\\uDDF4\\uD83C\\uDDF2|\\uDDF5\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE]|\\uDDF6\\uD83C\\uDDE6|\\uDDF7\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC]|\\uDDF8\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF]|\\uDDF9\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF]|\\uDDFA\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF]|\\uDDFB\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA]|\\uDDFC\\uD83C[\\uDDEB\\uDDF8]|\\uDDFD\\uD83C\\uDDF0|\\uDDFE\\uD83C[\\uDDEA\\uDDF9]|\\uDDFF\\uD83C[\\uDDE6\\uDDF2\\uDDFC]|\\uDF44(?:\\u200D\\uD83D\\uDFEB)?|\\uDF4B(?:\\u200D\\uD83D\\uDFE9)?|\\uDFC3(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?|\\uDFF3\\uFE0F?(?:\\u200D(?:\\u26A7\\uFE0F?|\\uD83C\\uDF08))?|\\uDFF4(?:\\u200D\\u2620\\uFE0F?|\\uDB40\\uDC67\\uDB40\\uDC62\\uDB40(?:\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F)?)|\\uD83D(?:[\\uDC3F\\uDCFD\\uDD49\\uDD4A\\uDD6F\\uDD70\\uDD73\\uDD76-\\uDD79\\uDD87\\uDD8A-\\uDD8D\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA\\uDECB\\uDECD-\\uDECF\\uDEE0-\\uDEE5\\uDEE9\\uDEF0\\uDEF3]\\uFE0F?|[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDC8F\\uDC91\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4\\uDEB5](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD74\\uDD90](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?|[\\uDC00-\\uDC07\\uDC09-\\uDC14\\uDC16-\\uDC25\\uDC27-\\uDC3A\\uDC3C-\\uDC3E\\uDC40\\uDC44\\uDC45\\uDC51-\\uDC65\\uDC6A\\uDC79-\\uDC7B\\uDC7D-\\uDC80\\uDC84\\uDC88-\\uDC8E\\uDC90\\uDC92-\\uDCA9\\uDCAB-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDDA4\\uDDFB-\\uDE2D\\uDE2F-\\uDE34\\uDE37-\\uDE41\\uDE43\\uDE44\\uDE48-\\uDE4A\\uDE80-\\uDEA2\\uDEA4-\\uDEB3\\uDEB7-\\uDEBF\\uDEC1-\\uDEC5\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEDC-\\uDEDF\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB\\uDFF0]|\\uDC08(?:\\u200D\\u2B1B)?|\\uDC15(?:\\u200D\\uD83E\\uDDBA)?|\\uDC26(?:\\u200D(?:\\u2B1B|\\uD83D\\uDD25))?|\\uDC3B(?:\\u200D\\u2744\\uFE0F?)?|\\uDC41\\uFE0F?(?:\\u200D\\uD83D\\uDDE8\\uFE0F?)?|\\uDC68(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDC68\\uDC69]\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDC69(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?[\\uDC68\\uDC69]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?|\\uDC69\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?))|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDC6F(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\uDD75(?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\uDE2E(?:\\u200D\\uD83D\\uDCA8)?|\\uDE35(?:\\u200D\\uD83D\\uDCAB)?|\\uDE36(?:\\u200D\\uD83C\\uDF2B\\uFE0F?)?|\\uDE42(?:\\u200D[\\u2194\\u2195]\\uFE0F?)?|\\uDEB6(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?)|\\uD83E(?:[\\uDD0C\\uDD0F\\uDD18-\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5\\uDEC3-\\uDEC5\\uDEF0\\uDEF2-\\uDEF8](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD\\uDDCF\\uDDD4\\uDDD6-\\uDDDD](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDDDE\\uDDDF](?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD0D\\uDD0E\\uDD10-\\uDD17\\uDD20-\\uDD25\\uDD27-\\uDD2F\\uDD3A\\uDD3F-\\uDD45\\uDD47-\\uDD76\\uDD78-\\uDDB4\\uDDB7\\uDDBA\\uDDBC-\\uDDCC\\uDDD0\\uDDE0-\\uDDFF\\uDE70-\\uDE7C\\uDE80-\\uDE89\\uDE8F-\\uDEC2\\uDEC6\\uDECE-\\uDEDC\\uDEDF-\\uDEE9]|\\uDD3C(?:\\u200D[\\u2640\\u2642]\\uFE0F?|\\uD83C[\\uDFFB-\\uDFFF])?|\\uDDCE(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?|\\uDDD1(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1|\\uDDD1\\u200D\\uD83E\\uDDD2(?:\\u200D\\uD83E\\uDDD2)?|\\uDDD2(?:\\u200D\\uD83E\\uDDD2)?))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?))?|\\uDEF1(?:\\uD83C(?:\\uDFFB(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFC-\\uDFFF])?|\\uDFFC(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])?|\\uDFFD(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])?|\\uDFFE(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])?|\\uDFFF(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFE])?))?)/g;\n};\n\nconst segmenter = globalThis.Intl?.Segmenter ? new Intl.Segmenter() : { segment: (str) => str.split('') };\n\nconst defaultIgnorableCodePointRegex = /^\\p{Default_Ignorable_Code_Point}$/u;\n\nfunction stringWidth$1(string, options = {}) {\n\tif (typeof string !== 'string' || string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tconst {\n\t\tambiguousIsNarrow = true,\n\t\tcountAnsiEscapeCodes = false,\n\t} = options;\n\n\tif (!countAnsiEscapeCodes) {\n\t\tstring = stripAnsi(string);\n\t}\n\n\tif (string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tlet width = 0;\n\tconst eastAsianWidthOptions = {ambiguousAsWide: !ambiguousIsNarrow};\n\n\tfor (const {segment: character} of segmenter.segment(string)) {\n\t\tconst codePoint = character.codePointAt(0);\n\n\t\t// Ignore control characters\n\t\tif (codePoint <= 0x1F || (codePoint >= 0x7F && codePoint <= 0x9F)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore zero-width characters\n\t\tif (\n\t\t\t(codePoint >= 0x20_0B && codePoint <= 0x20_0F) // Zero-width space, non-joiner, joiner, left-to-right mark, right-to-left mark\n\t\t\t|| codePoint === 0xFE_FF // Zero-width no-break space\n\t\t) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore combining characters\n\t\tif (\n\t\t\t(codePoint >= 0x3_00 && codePoint <= 0x3_6F) // Combining diacritical marks\n\t\t\t|| (codePoint >= 0x1A_B0 && codePoint <= 0x1A_FF) // Combining diacritical marks extended\n\t\t\t|| (codePoint >= 0x1D_C0 && codePoint <= 0x1D_FF) // Combining diacritical marks supplement\n\t\t\t|| (codePoint >= 0x20_D0 && codePoint <= 0x20_FF) // Combining diacritical marks for symbols\n\t\t\t|| (codePoint >= 0xFE_20 && codePoint <= 0xFE_2F) // Combining half marks\n\t\t) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore surrogate pairs\n\t\tif (codePoint >= 0xD8_00 && codePoint <= 0xDF_FF) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore variation selectors\n\t\tif (codePoint >= 0xFE_00 && codePoint <= 0xFE_0F) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// This covers some of the above cases, but we still keep them for performance reasons.\n\t\tif (defaultIgnorableCodePointRegex.test(character)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// TODO: Use `/\\p{RGI_Emoji}/v` when targeting Node.js 20.\n\t\tif (emojiRegex().test(character)) {\n\t\t\twidth += 2;\n\t\t\tcontinue;\n\t\t}\n\n\t\twidth += eastAsianWidth(codePoint, eastAsianWidthOptions);\n\t}\n\n\treturn width;\n}\n\nfunction isUnicodeSupported() {\n\tconst {env} = g$1;\n\tconst {TERM, TERM_PROGRAM} = env;\n\n\tif (g$1.platform !== 'win32') {\n\t\treturn TERM !== 'linux'; // Linux console (kernel)\n\t}\n\n\treturn Boolean(env.WT_SESSION) // Windows Terminal\n\t\t|| Boolean(env.TERMINUS_SUBLIME) // Terminus (<0.2.27)\n\t\t|| env.ConEmuTask === '{cmd::Cmder}' // ConEmu and cmder\n\t\t|| TERM_PROGRAM === 'Terminus-Sublime'\n\t\t|| TERM_PROGRAM === 'vscode'\n\t\t|| TERM === 'xterm-256color'\n\t\t|| TERM === 'alacritty'\n\t\t|| TERM === 'rxvt-unicode'\n\t\t|| TERM === 'rxvt-unicode-256color'\n\t\t|| env.TERMINAL_EMULATOR === 'JetBrains-JediTerm';\n}\n\nconst TYPE_COLOR_MAP = {\n info: \"cyan\",\n fail: \"red\",\n success: \"green\",\n ready: \"green\",\n start: \"magenta\"\n};\nconst LEVEL_COLOR_MAP = {\n 0: \"red\",\n 1: \"yellow\"\n};\nconst unicode = isUnicodeSupported();\nconst s = (c, fallback) => unicode ? c : fallback;\nconst TYPE_ICONS = {\n error: s(\"\\u2716\", \"\\xD7\"),\n fatal: s(\"\\u2716\", \"\\xD7\"),\n ready: s(\"\\u2714\", \"\\u221A\"),\n warn: s(\"\\u26A0\", \"\\u203C\"),\n info: s(\"\\u2139\", \"i\"),\n success: s(\"\\u2714\", \"\\u221A\"),\n debug: s(\"\\u2699\", \"D\"),\n trace: s(\"\\u2192\", \"\\u2192\"),\n fail: s(\"\\u2716\", \"\\xD7\"),\n start: s(\"\\u25D0\", \"o\"),\n log: \"\"\n};\nfunction stringWidth(str) {\n const hasICU = typeof Intl === \"object\";\n if (!hasICU || !Intl.Segmenter) {\n return stripAnsi$1(str).length;\n }\n return stringWidth$1(str);\n}\nclass FancyReporter extends BasicReporter {\n formatStack(stack, message, opts) {\n const indent = \" \".repeat((opts?.errorLevel || 0) + 1);\n return `\n${indent}` + parseStack(stack, message).map(\n (line) => \" \" + line.replace(/^at +/, (m) => colors.gray(m)).replace(/\\((.+)\\)/, (_, m) => `(${colors.cyan(m)})`)\n ).join(`\n${indent}`);\n }\n formatType(logObj, isBadge, opts) {\n const typeColor = TYPE_COLOR_MAP[logObj.type] || LEVEL_COLOR_MAP[logObj.level] || \"gray\";\n if (isBadge) {\n return getBgColor(typeColor)(\n colors.black(` ${logObj.type.toUpperCase()} `)\n );\n }\n const _type = typeof TYPE_ICONS[logObj.type] === \"string\" ? TYPE_ICONS[logObj.type] : logObj.icon || logObj.type;\n return _type ? getColor(typeColor)(_type) : \"\";\n }\n formatLogObj(logObj, opts) {\n const [message, ...additional] = this.formatArgs(logObj.args, opts).split(\n \"\\n\"\n );\n if (logObj.type === \"box\") {\n return box(\n characterFormat(\n message + (additional.length > 0 ? \"\\n\" + additional.join(\"\\n\") : \"\")\n ),\n {\n title: logObj.title ? characterFormat(logObj.title) : void 0,\n style: logObj.style\n }\n );\n }\n const date = this.formatDate(logObj.date, opts);\n const coloredDate = date && colors.gray(date);\n const isBadge = logObj.badge ?? logObj.level < 2;\n const type = this.formatType(logObj, isBadge, opts);\n const tag = logObj.tag ? colors.gray(logObj.tag) : \"\";\n let line;\n const left = this.filterAndJoin([type, characterFormat(message)]);\n const right = this.filterAndJoin(opts.columns ? [tag, coloredDate] : [tag]);\n const space = (opts.columns || 0) - stringWidth(left) - stringWidth(right) - 2;\n line = space > 0 && (opts.columns || 0) >= 80 ? left + \" \".repeat(space) + right : (right ? `${colors.gray(`[${right}]`)} ` : \"\") + left;\n line += characterFormat(\n additional.length > 0 ? \"\\n\" + additional.join(\"\\n\") : \"\"\n );\n if (logObj.type === \"trace\") {\n const _err = new Error(\"Trace: \" + logObj.message);\n line += this.formatStack(_err.stack || \"\", _err.message);\n }\n return isBadge ? \"\\n\" + line + \"\\n\" : line;\n }\n}\nfunction characterFormat(str) {\n return str.replace(/`([^`]+)`/gm, (_, m) => colors.cyan(m)).replace(/\\s+_([^_]+)_\\s+/gm, (_, m) => ` ${colors.underline(m)} `);\n}\nfunction getColor(color = \"white\") {\n return colors[color] || colors.white;\n}\nfunction getBgColor(color = \"bgWhite\") {\n return colors[`bg${color[0].toUpperCase()}${color.slice(1)}`] || colors.bgWhite;\n}\n\nfunction createConsola(options = {}) {\n let level = _getDefaultLogLevel();\n if (process.env.CONSOLA_LEVEL) {\n level = Number.parseInt(process.env.CONSOLA_LEVEL) ?? level;\n }\n const consola2 = createConsola$1({\n level,\n defaults: { level },\n stdout: process.stdout,\n stderr: process.stderr,\n prompt: (...args) => import('./chunks/prompt.mjs').then((m) => m.prompt(...args)),\n reporters: options.reporters || [\n options.fancy ?? !(T || R) ? new FancyReporter() : new BasicReporter()\n ],\n ...options\n });\n return consola2;\n}\nfunction _getDefaultLogLevel() {\n if (g) {\n return LogLevels.debug;\n }\n if (R) {\n return LogLevels.warn;\n }\n return LogLevels.info;\n}\nconst consola = createConsola();\n\nexport { LogLevels, consola, createConsola, consola as default };\n","import consola from 'consola';\nimport { colors } from 'consola/utils';\n\nfunction toArray(val) {\n if (Array.isArray(val)) {\n return val;\n }\n return val === void 0 ? [] : [val];\n}\nfunction formatLineColumns(lines, linePrefix = \"\") {\n const maxLengh = [];\n for (const line of lines) {\n for (const [i, element] of line.entries()) {\n maxLengh[i] = Math.max(maxLengh[i] || 0, element.length);\n }\n }\n return lines.map(\n (l) => l.map(\n (c, i) => linePrefix + c[i === 0 ? \"padStart\" : \"padEnd\"](maxLengh[i])\n ).join(\" \")\n ).join(\"\\n\");\n}\nfunction resolveValue(input) {\n return typeof input === \"function\" ? input() : input;\n}\nclass CLIError extends Error {\n constructor(message, code) {\n super(message);\n this.code = code;\n this.name = \"CLIError\";\n }\n}\n\nconst NUMBER_CHAR_RE = /\\d/;\nconst STR_SPLITTERS = [\"-\", \"_\", \"/\", \".\"];\nfunction isUppercase(char = \"\") {\n if (NUMBER_CHAR_RE.test(char)) {\n return void 0;\n }\n return char !== char.toLowerCase();\n}\nfunction splitByCase(str, separators) {\n const splitters = separators ?? STR_SPLITTERS;\n const parts = [];\n if (!str || typeof str !== \"string\") {\n return parts;\n }\n let buff = \"\";\n let previousUpper;\n let previousSplitter;\n for (const char of str) {\n const isSplitter = splitters.includes(char);\n if (isSplitter === true) {\n parts.push(buff);\n buff = \"\";\n previousUpper = void 0;\n continue;\n }\n const isUpper = isUppercase(char);\n if (previousSplitter === false) {\n if (previousUpper === false && isUpper === true) {\n parts.push(buff);\n buff = char;\n previousUpper = isUpper;\n continue;\n }\n if (previousUpper === true && isUpper === false && buff.length > 1) {\n const lastChar = buff.at(-1);\n parts.push(buff.slice(0, Math.max(0, buff.length - 1)));\n buff = lastChar + char;\n previousUpper = isUpper;\n continue;\n }\n }\n buff += char;\n previousUpper = isUpper;\n previousSplitter = isSplitter;\n }\n parts.push(buff);\n return parts;\n}\nfunction upperFirst(str) {\n return str ? str[0].toUpperCase() + str.slice(1) : \"\";\n}\nfunction lowerFirst(str) {\n return str ? str[0].toLowerCase() + str.slice(1) : \"\";\n}\nfunction pascalCase(str, opts) {\n return str ? (Array.isArray(str) ? str : splitByCase(str)).map((p) => upperFirst(opts?.normalize ? p.toLowerCase() : p)).join(\"\") : \"\";\n}\nfunction camelCase(str, opts) {\n return lowerFirst(pascalCase(str || \"\", opts));\n}\nfunction kebabCase(str, joiner) {\n return str ? (Array.isArray(str) ? str : splitByCase(str)).map((p) => p.toLowerCase()).join(joiner ?? \"-\") : \"\";\n}\n\nfunction toArr(any) {\n return any == void 0 ? [] : Array.isArray(any) ? any : [any];\n}\nfunction toVal(out, key, val, opts) {\n let x;\n const old = out[key];\n const nxt = ~opts.string.indexOf(key) ? val == void 0 || val === true ? \"\" : String(val) : typeof val === \"boolean\" ? val : ~opts.boolean.indexOf(key) ? val === \"false\" ? false : val === \"true\" || (out._.push((x = +val, x * 0 === 0) ? x : val), !!val) : (x = +val, x * 0 === 0) ? x : val;\n out[key] = old == void 0 ? nxt : Array.isArray(old) ? old.concat(nxt) : [old, nxt];\n}\nfunction parseRawArgs(args = [], opts = {}) {\n let k;\n let arr;\n let arg;\n let name;\n let val;\n const out = { _: [] };\n let i = 0;\n let j = 0;\n let idx = 0;\n const len = args.length;\n const alibi = opts.alias !== void 0;\n const strict = opts.unknown !== void 0;\n const defaults = opts.default !== void 0;\n opts.alias = opts.alias || {};\n opts.string = toArr(opts.string);\n opts.boolean = toArr(opts.boolean);\n if (alibi) {\n for (k in opts.alias) {\n arr = opts.alias[k] = toArr(opts.alias[k]);\n for (i = 0; i < arr.length; i++) {\n (opts.alias[arr[i]] = arr.concat(k)).splice(i, 1);\n }\n }\n }\n for (i = opts.boolean.length; i-- > 0; ) {\n arr = opts.alias[opts.boolean[i]] || [];\n for (j = arr.length; j-- > 0; ) {\n opts.boolean.push(arr[j]);\n }\n }\n for (i = opts.string.length; i-- > 0; ) {\n arr = opts.alias[opts.string[i]] || [];\n for (j = arr.length; j-- > 0; ) {\n opts.string.push(arr[j]);\n }\n }\n if (defaults) {\n for (k in opts.default) {\n name = typeof opts.default[k];\n arr = opts.alias[k] = opts.alias[k] || [];\n if (opts[name] !== void 0) {\n opts[name].push(k);\n for (i = 0; i < arr.length; i++) {\n opts[name].push(arr[i]);\n }\n }\n }\n }\n const keys = strict ? Object.keys(opts.alias) : [];\n for (i = 0; i < len; i++) {\n arg = args[i];\n if (arg === \"--\") {\n out._ = out._.concat(args.slice(++i));\n break;\n }\n for (j = 0; j < arg.length; j++) {\n if (arg.charCodeAt(j) !== 45) {\n break;\n }\n }\n if (j === 0) {\n out._.push(arg);\n } else if (arg.substring(j, j + 3) === \"no-\") {\n name = arg.slice(Math.max(0, j + 3));\n if (strict && !~keys.indexOf(name)) {\n return opts.unknown(arg);\n }\n out[name] = false;\n } else {\n for (idx = j + 1; idx < arg.length; idx++) {\n if (arg.charCodeAt(idx) === 61) {\n break;\n }\n }\n name = arg.substring(j, idx);\n val = arg.slice(Math.max(0, ++idx)) || i + 1 === len || (\"\" + args[i + 1]).charCodeAt(0) === 45 || args[++i];\n arr = j === 2 ? [name] : name;\n for (idx = 0; idx < arr.length; idx++) {\n name = arr[idx];\n if (strict && !~keys.indexOf(name)) {\n return opts.unknown(\"-\".repeat(j) + name);\n }\n toVal(out, name, idx + 1 < arr.length || val, opts);\n }\n }\n }\n if (defaults) {\n for (k in opts.default) {\n if (out[k] === void 0) {\n out[k] = opts.default[k];\n }\n }\n }\n if (alibi) {\n for (k in out) {\n arr = opts.alias[k] || [];\n while (arr.length > 0) {\n out[arr.shift()] = out[k];\n }\n }\n }\n return out;\n}\n\nfunction parseArgs(rawArgs, argsDef) {\n const parseOptions = {\n boolean: [],\n string: [],\n mixed: [],\n alias: {},\n default: {}\n };\n const args = resolveArgs(argsDef);\n for (const arg of args) {\n if (arg.type === \"positional\") {\n continue;\n }\n if (arg.type === \"string\") {\n parseOptions.string.push(arg.name);\n } else if (arg.type === \"boolean\") {\n parseOptions.boolean.push(arg.name);\n }\n if (arg.default !== void 0) {\n parseOptions.default[arg.name] = arg.default;\n }\n if (arg.alias) {\n parseOptions.alias[arg.name] = arg.alias;\n }\n }\n const parsed = parseRawArgs(rawArgs, parseOptions);\n const [...positionalArguments] = parsed._;\n const parsedArgsProxy = new Proxy(parsed, {\n get(target, prop) {\n return target[prop] ?? target[camelCase(prop)] ?? target[kebabCase(prop)];\n }\n });\n for (const [, arg] of args.entries()) {\n if (arg.type === \"positional\") {\n const nextPositionalArgument = positionalArguments.shift();\n if (nextPositionalArgument !== void 0) {\n parsedArgsProxy[arg.name] = nextPositionalArgument;\n } else if (arg.default === void 0 && arg.required !== false) {\n throw new CLIError(\n `Missing required positional argument: ${arg.name.toUpperCase()}`,\n \"EARG\"\n );\n } else {\n parsedArgsProxy[arg.name] = arg.default;\n }\n } else if (arg.required && parsedArgsProxy[arg.name] === void 0) {\n throw new CLIError(`Missing required argument: --${arg.name}`, \"EARG\");\n }\n }\n return parsedArgsProxy;\n}\nfunction resolveArgs(argsDef) {\n const args = [];\n for (const [name, argDef] of Object.entries(argsDef || {})) {\n args.push({\n ...argDef,\n name,\n alias: toArray(argDef.alias)\n });\n }\n return args;\n}\n\nfunction defineCommand(def) {\n return def;\n}\nasync function runCommand(cmd, opts) {\n const cmdArgs = await resolveValue(cmd.args || {});\n const parsedArgs = parseArgs(opts.rawArgs, cmdArgs);\n const context = {\n rawArgs: opts.rawArgs,\n args: parsedArgs,\n data: opts.data,\n cmd\n };\n if (typeof cmd.setup === \"function\") {\n await cmd.setup(context);\n }\n let result;\n try {\n const subCommands = await resolveValue(cmd.subCommands);\n if (subCommands && Object.keys(subCommands).length > 0) {\n const subCommandArgIndex = opts.rawArgs.findIndex(\n (arg) => !arg.startsWith(\"-\")\n );\n const subCommandName = opts.rawArgs[subCommandArgIndex];\n if (subCommandName) {\n if (!subCommands[subCommandName]) {\n throw new CLIError(\n `Unknown command \\`${subCommandName}\\``,\n \"E_UNKNOWN_COMMAND\"\n );\n }\n const subCommand = await resolveValue(subCommands[subCommandName]);\n if (subCommand) {\n await runCommand(subCommand, {\n rawArgs: opts.rawArgs.slice(subCommandArgIndex + 1)\n });\n }\n } else if (!cmd.run) {\n throw new CLIError(`No command specified.`, \"E_NO_COMMAND\");\n }\n }\n if (typeof cmd.run === \"function\") {\n result = await cmd.run(context);\n }\n } finally {\n if (typeof cmd.cleanup === \"function\") {\n await cmd.cleanup(context);\n }\n }\n return { result };\n}\nasync function resolveSubCommand(cmd, rawArgs, parent) {\n const subCommands = await resolveValue(cmd.subCommands);\n if (subCommands && Object.keys(subCommands).length > 0) {\n const subCommandArgIndex = rawArgs.findIndex((arg) => !arg.startsWith(\"-\"));\n const subCommandName = rawArgs[subCommandArgIndex];\n const subCommand = await resolveValue(subCommands[subCommandName]);\n if (subCommand) {\n return resolveSubCommand(\n subCommand,\n rawArgs.slice(subCommandArgIndex + 1),\n cmd\n );\n }\n }\n return [cmd, parent];\n}\n\nasync function showUsage(cmd, parent) {\n try {\n consola.log(await renderUsage(cmd, parent) + \"\\n\");\n } catch (error) {\n consola.error(error);\n }\n}\nasync function renderUsage(cmd, parent) {\n const cmdMeta = await resolveValue(cmd.meta || {});\n const cmdArgs = resolveArgs(await resolveValue(cmd.args || {}));\n const parentMeta = await resolveValue(parent?.meta || {});\n const commandName = `${parentMeta.name ? `${parentMeta.name} ` : \"\"}` + (cmdMeta.name || process.argv[1]);\n const argLines = [];\n const posLines = [];\n const commandsLines = [];\n const usageLine = [];\n for (const arg of cmdArgs) {\n if (arg.type === \"positional\") {\n const name = arg.name.toUpperCase();\n const isRequired = arg.required !== false && arg.default === void 0;\n const defaultHint = arg.default ? `=\"${arg.default}\"` : \"\";\n posLines.push([\n \"`\" + name + defaultHint + \"`\",\n arg.description || \"\",\n arg.valueHint ? `<${arg.valueHint}>` : \"\"\n ]);\n usageLine.push(isRequired ? `<${name}>` : `[${name}]`);\n } else {\n const isRequired = arg.required === true && arg.default === void 0;\n const argStr = (arg.type === \"boolean\" && arg.default === true ? [\n ...(arg.alias || []).map((a) => `--no-${a}`),\n `--no-${arg.name}`\n ].join(\", \") : [...(arg.alias || []).map((a) => `-${a}`), `--${arg.name}`].join(\n \", \"\n )) + (arg.type === \"string\" && (arg.valueHint || arg.default) ? `=${arg.valueHint ? `<${arg.valueHint}>` : `\"${arg.default || \"\"}\"`}` : \"\");\n argLines.push([\n \"`\" + argStr + (isRequired ? \" (required)\" : \"\") + \"`\",\n arg.description || \"\"\n ]);\n if (isRequired) {\n usageLine.push(argStr);\n }\n }\n }\n if (cmd.subCommands) {\n const commandNames = [];\n const subCommands = await resolveValue(cmd.subCommands);\n for (const [name, sub] of Object.entries(subCommands)) {\n const subCmd = await resolveValue(sub);\n const meta = await resolveValue(subCmd?.meta);\n commandsLines.push([`\\`${name}\\``, meta?.description || \"\"]);\n commandNames.push(name);\n }\n usageLine.push(commandNames.join(\"|\"));\n }\n const usageLines = [];\n const version = cmdMeta.version || parentMeta.version;\n usageLines.push(\n colors.gray(\n `${cmdMeta.description} (${commandName + (version ? ` v${version}` : \"\")})`\n ),\n \"\"\n );\n const hasOptions = argLines.length > 0 || posLines.length > 0;\n usageLines.push(\n `${colors.underline(colors.bold(\"USAGE\"))} \\`${commandName}${hasOptions ? \" [OPTIONS]\" : \"\"} ${usageLine.join(\" \")}\\``,\n \"\"\n );\n if (posLines.length > 0) {\n usageLines.push(colors.underline(colors.bold(\"ARGUMENTS\")), \"\");\n usageLines.push(formatLineColumns(posLines, \" \"));\n usageLines.push(\"\");\n }\n if (argLines.length > 0) {\n usageLines.push(colors.underline(colors.bold(\"OPTIONS\")), \"\");\n usageLines.push(formatLineColumns(argLines, \" \"));\n usageLines.push(\"\");\n }\n if (commandsLines.length > 0) {\n usageLines.push(colors.underline(colors.bold(\"COMMANDS\")), \"\");\n usageLines.push(formatLineColumns(commandsLines, \" \"));\n usageLines.push(\n \"\",\n `Use \\`${commandName} <command> --help\\` for more information about a command.`\n );\n }\n return usageLines.filter((l) => typeof l === \"string\").join(\"\\n\");\n}\n\nasync function runMain(cmd, opts = {}) {\n const rawArgs = opts.rawArgs || process.argv.slice(2);\n const showUsage$1 = opts.showUsage || showUsage;\n try {\n if (rawArgs.includes(\"--help\") || rawArgs.includes(\"-h\")) {\n await showUsage$1(...await resolveSubCommand(cmd, rawArgs));\n process.exit(0);\n } else if (rawArgs.length === 1 && rawArgs[0] === \"--version\") {\n const meta = typeof cmd.meta === \"function\" ? await cmd.meta() : await cmd.meta;\n if (!meta?.version) {\n throw new CLIError(\"No version specified\", \"E_NO_VERSION\");\n }\n consola.log(meta.version);\n } else {\n await runCommand(cmd, { rawArgs });\n }\n } catch (error) {\n const isCLIError = error instanceof CLIError;\n if (!isCLIError) {\n consola.error(error, \"\\n\");\n }\n if (isCLIError) {\n await showUsage$1(...await resolveSubCommand(cmd, rawArgs));\n }\n consola.error(error.message);\n process.exit(1);\n }\n}\nfunction createMain(cmd) {\n return (opts = {}) => runMain(cmd, opts);\n}\n\nexport { createMain, defineCommand, parseArgs, renderUsage, runCommand, runMain, showUsage };\n","import fs from 'node:fs/promises'\nimport path from 'node:path'\nimport { fileURLToPath } from 'node:url'\n\nfunction packageRoot(): string {\n return path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..')\n}\n\nconst CONFIG = `import { defineConfig } from '@cleartrip/frontguard'\n\nexport default defineConfig({\n mode: 'warn', // or FrontGuard run with \\`--enforce\\`\n // extends: '@your-org/frontguard-config/base',\n\n // Example custom rules (return true when violated):\n // rules: {\n // 'no-inline-style': {\n // severity: 'warn',\n // message: 'Avoid inline style objects',\n // check: (file) => file.content.includes('style={{'),\n // },\n // },\n\n // checks: {\n // bundle: { baselineRef: 'main', maxDeltaBytes: 50_000 },\n // coreWebVitals: { scanGlobs: ['src/**/*.{tsx,jsx}'] },\n // prSize: {\n // tiers: [\n // { minLines: 1000, severity: 'warn', message: 'Very large PR (\\${lines} lines; ≥ \\${min})' },\n // { minLines: 500, severity: 'info', message: 'Consider splitting (\\${lines} lines)' },\n // ],\n // },\n // // AI strict: only // @frontguard-ai:start … :end (or // written by AI: start … :end) in PR files\n // // aiAssistedReview: { strictScanMode: 'decorator' },\n // cycles: { enabled: true },\n // deadCode: { enabled: true, gate: 'info' },\n // // LLM: cloud keys in CI, or local Ollama (no API key) on dev/self-hosted runners:\n // // ollama serve && ollama pull llama3.2\n // // Paste workflow (no key): frontguard run --append ./.frontguard/review-notes.md\n // llm: {\n // enabled: true,\n // provider: 'ollama',\n // model: 'llama3.2',\n // ollamaUrl: 'http://127.0.0.1:11434',\n // perFindingFixes: true,\n // maxFixSuggestions: 8,\n // },\n // // llm: { enabled: true, provider: 'openai', apiKeyEnv: 'OPENAI_API_KEY' },\n // },\n})\n`\n\nconst PR_TEMPLATE = `## Summary\n\n## Why\n\n## How to test\n\n## AI disclosure\n<!-- FrontGuard reads this section. Mark exactly one of Yes / No. -->\n\n- [ ] **Yes** — AI tools (Cursor, Copilot, ChatGPT, Claude, etc.) helped write or materially refactor code in this PR\n- [ ] **No** — I did not use AI-generated code for the changes in this PR\n\nIf **Yes**, list tools and what they touched (helps reviewers run a stricter first pass):\n\n- Tools: \n- Areas/files or prompts (short): \n\n## AI assistance (optional detail)\n- [ ] I have reviewed every AI-suggested line for security, auth, and product correctness\n`\n\nexport async function initFrontGuard(cwd: string): Promise<void> {\n const root = packageRoot()\n const tplPath = path.join(root, 'templates', 'bitbucket-pipelines.yml')\n const outPipeline = path.join(cwd, 'bitbucket-pipelines.frontguard.example.yml')\n try {\n await fs.access(outPipeline)\n } catch {\n try {\n const yml = await fs.readFile(tplPath, 'utf8')\n await fs.writeFile(outPipeline, yml, 'utf8')\n } catch {\n await fs.writeFile(\n outPipeline,\n '# Copy bitbucket-pipelines.yml from @cleartrip/frontguard/templates in node_modules\\n',\n 'utf8',\n )\n }\n }\n\n const cfgPath = path.join(cwd, 'frontguard.config.js')\n try {\n await fs.access(cfgPath)\n } catch {\n await fs.writeFile(cfgPath, CONFIG, 'utf8')\n }\n\n const tplPr = path.join(cwd, 'pull_request_template.md')\n try {\n await fs.access(tplPr)\n } catch {\n await fs.writeFile(tplPr, PR_TEMPLATE, 'utf8')\n }\n}\n","import { existsSync, readFileSync, statSync } from 'node:fs'\n\n/**\n * Bitbucket Cloud PR comments accept Markdown with embedded PNG via `data:image/png;base64,...`.\n * Keep alt text ASCII-only and use standard Base64 (RFC 4648) to match Python `base64.standard_b64encode`.\n *\n * @see https://support.atlassian.com/bitbucket-cloud/docs/markdown-syntax-guide/\n */\n\n/** Alt text for the checks summary image (ASCII for broad compatibility in JSON + Markdown). */\nexport const BITBUCKET_CHECKS_IMAGE_MARKDOWN_ALT = 'FrontGuard checks summary'\n\n/**\n * Max length of the single markdown line ``.\n * Bitbucket API payloads can fail or truncate if the PR comment body is too large.\n */\nexport const MAX_BITBUCKET_INLINE_IMAGE_MARKDOWN_LINE_LENGTH = 300_000\n\n/**\n * Conservative cap on PNG bytes so Base64 expansion + prefix stays under\n * {@link MAX_BITBUCKET_INLINE_IMAGE_MARKDOWN_LINE_LENGTH}.\n * (Roughly: line = prefix + ceil(4n/3) base64 chars + closing paren.)\n */\nexport const MAX_PNG_BYTES_BITBUCKET_INLINE = 210_000\n\nconst MARKDOWN_LINE_PREFIX =\n `: boolean {\n return (\n buf.length >= 8 &&\n buf[0] === 0x89 &&\n buf[1] === 0x50 &&\n buf[2] === 0x4e &&\n buf[3] === 0x47 &&\n buf[4] === 0x0d &&\n buf[5] === 0x0a &&\n buf[6] === 0x1a &&\n buf[7] === 0x0a\n )\n}\n\n/** Length of the full markdown image line for a PNG of `pngByteLength` bytes (before reading the file). */\nexport function bitbucketImageMarkdownLineLength(pngByteLength: number): number {\n const b64Len = 4 * Math.ceil(pngByteLength / 3)\n return MARKDOWN_LINE_PREFIX.length + b64Len + 1\n}\n\n/**\n * Builds one Bitbucket-compatible markdown line for an inline PNG.\n * @throws if buffer is not a PNG, is too large, or the markdown line would exceed API limits\n */\nexport function pngBufferToBitbucketImageMarkdownLine(png: Buffer): string {\n if (!isPngBuffer(png)) {\n throw new TypeError('Buffer is not a PNG (missing IHDR signature)')\n }\n if (png.length > MAX_PNG_BYTES_BITBUCKET_INLINE) {\n throw new RangeError(\n `PNG too large for Bitbucket inline markdown (${png.length} bytes; max ${MAX_PNG_BYTES_BITBUCKET_INLINE}). Host the image and use an HTTPS URL instead.`,\n )\n }\n const b64 = png.toString('base64')\n const line = `${MARKDOWN_LINE_PREFIX}${b64})`\n if (line.length > MAX_BITBUCKET_INLINE_IMAGE_MARKDOWN_LINE_LENGTH) {\n throw new RangeError(\n `Inline markdown line too long (${line.length} chars; max ${MAX_BITBUCKET_INLINE_IMAGE_MARKDOWN_LINE_LENGTH})`,\n )\n }\n return line\n}\n\n/** Same as {@link pngBufferToBitbucketImageMarkdownLine} but returns null on any failure (CI / env paths). */\nexport function tryPngFileToBitbucketImageMarkdownLine(filePath: string): string | null {\n try {\n if (!existsSync(filePath)) return null\n const st = statSync(filePath)\n if (!st.isFile() || st.size > MAX_PNG_BYTES_BITBUCKET_INLINE) return null\n const buf = readFileSync(filePath)\n return pngBufferToBitbucketImageMarkdownLine(buf)\n } catch {\n return null\n }\n}\n","import type { FullReport } from '../report/builder.js'\nimport {\n BITBUCKET_CHECKS_IMAGE_MARKDOWN_ALT,\n tryPngFileToBitbucketImageMarkdownLine,\n} from '../lib/bitbucket-checks-image-md.js'\n\n/**\n * Prefer a local PNG as base64 (set by `frontguard run --checksPngOut` + `--prCommentOut`), else HTTPS URL.\n */\nfunction checksImageMarkdown(): string | null {\n const embedPath = process.env.FRONTGUARD_EMBED_CHECKS_PNG_PATH?.trim()\n if (embedPath) {\n return tryPngFileToBitbucketImageMarkdownLine(embedPath)\n }\n const u = process.env.FRONTGUARD_CHECKS_IMAGE_URL?.trim()\n if (!u) return null\n return ``\n}\n\nfunction bitbucketPipelineResultsUrl(): string | null {\n const full = process.env.BITBUCKET_REPO_FULL_NAME?.trim()\n const bn = process.env.BITBUCKET_BUILD_NUMBER?.trim()\n if (full && bn) {\n return `https://bitbucket.org/${full}/pipelines/results/${bn}`\n }\n const ws = process.env.BITBUCKET_WORKSPACE?.trim()\n const slug = process.env.BITBUCKET_REPO_SLUG?.trim()\n if (ws && slug && bn) {\n return `https://bitbucket.org/${ws}/${slug}/pipelines/results/${bn}`\n }\n return null\n}\n\nfunction bitbucketDownloadsPageUrl(): string | null {\n const full = process.env.BITBUCKET_REPO_FULL_NAME?.trim()\n if (full) return `https://bitbucket.org/${full}/downloads/`\n const ws = process.env.BITBUCKET_WORKSPACE?.trim()\n const slug = process.env.BITBUCKET_REPO_SLUG?.trim()\n if (ws && slug) return `https://bitbucket.org/${ws}/${slug}/downloads/`\n return null\n}\n\n/**\n * Short body for a Bitbucket PR comment: plain lines + bare URLs.\n *\n * Avoids markdown tables and ## headings so the text stays readable even if markup is not\n * rendered. Put HTTPS URLs on their own line (Bitbucket usually turns them into links).\n *\n * For a hosted one-click HTML URL, set FRONTGUARD_PUBLIC_REPORT_URL before `frontguard run`.\n *\n * Set FRONTGUARD_BITBUCKET_COMMENT_LINK_ONLY=1 with FRONTGUARD_PUBLIC_REPORT_URL to output only\n * that URL (e.g. after FreeKit or another deploy step), matching optional Bitbucket flows.\n *\n * Optional image (first match wins):\n * - FRONTGUARD_EMBED_CHECKS_PNG_PATH — local PNG path; FrontGuard sets this when using\n * `--checksPngOut` with `--prCommentOut` (PNG must pass Bitbucket inline limits; see bitbucket-checks-image-md).\n * - FRONTGUARD_CHECKS_IMAGE_URL — HTTPS URL to the PNG if you host it yourself.\n */\nconst DETAILED_REPORT_LINE =\n 'For detailed check analysis, please open the full interactive report:'\n\nexport function formatBitbucketPrSnippet(report: FullReport): string {\n const publicReport = process.env.FRONTGUARD_PUBLIC_REPORT_URL?.trim()\n const linkOnly = process.env.FRONTGUARD_BITBUCKET_COMMENT_LINK_ONLY === '1'\n const imgMd = checksImageMarkdown()\n\n if (linkOnly && publicReport) {\n const parts: string[] = []\n if (imgMd) {\n parts.push(imgMd, '')\n parts.push(DETAILED_REPORT_LINE)\n }\n parts.push(publicReport.endsWith('\\n') ? publicReport.slice(0, -1) : publicReport)\n return `${parts.join('\\n')}\\n`\n }\n\n const downloadsName = process.env.FRONTGUARD_REPORT_DOWNLOAD_NAME?.trim()\n const downloadsPage = bitbucketDownloadsPageUrl()\n const pipeline = bitbucketPipelineResultsUrl()\n\n const { riskScore, results } = report\n const blocks = results.reduce(\n (n, r) => n + r.findings.filter((f) => f.severity === 'block').length,\n 0,\n )\n const warns = results.reduce(\n (n, r) => n + r.findings.filter((f) => f.severity === 'warn').length,\n 0,\n )\n\n const out: string[] = []\n if (imgMd) {\n out.push(imgMd)\n out.push('')\n }\n out.push(\n 'FrontGuard report (short summary)',\n '',\n `Risk: ${riskScore} | Blocking: ${blocks} | Warnings: ${warns}`,\n '',\n )\n\n if (publicReport) {\n if (imgMd) {\n out.push(DETAILED_REPORT_LINE)\n } else {\n out.push('Full interactive report (open in browser):')\n }\n out.push(publicReport)\n out.push('')\n } else if (downloadsName && downloadsPage) {\n out.push('HTML report is in Repository → Downloads. Open this page while logged in:')\n out.push(downloadsPage)\n out.push(`File name: ${downloadsName}`)\n out.push('Download the file, then open it in a browser.')\n out.push('')\n } else if (pipeline) {\n out.push(\n 'There is no direct “HTML URL” for pipeline artifacts in Bitbucket. Use this pipeline run (log in), then Artifacts → frontguard-report.html:',\n )\n out.push(pipeline)\n out.push('')\n out.push(\n 'Steps: open the link → scroll to Artifacts → download frontguard-report.html → open the file on your machine.',\n )\n out.push('')\n } else {\n out.push(\n 'Add a link: run FrontGuard inside Bitbucket Pipelines, or set FRONTGUARD_PUBLIC_REPORT_URL after uploading the HTML somewhere HTTPS.',\n )\n out.push('')\n }\n\n out.push('Checks:')\n for (const r of results) {\n const status = r.skipped\n ? `skipped (${r.skipped.slice(0, 100)}${r.skipped.length > 100 ? '…' : ''})`\n : r.findings.length === 0\n ? 'clean'\n : `${r.findings.length} finding(s)`\n out.push(`- ${r.checkId}: ${status}`)\n }\n\n out.push('')\n out.push(\n 'Do not paste the long frontguard-report.md into PR comments. Full text output is in that file / pipeline artifacts only.',\n )\n return out.join('\\n')\n}\n","/**\n * Parse PR markdown for explicit AI disclosure (no network / no IDE keys).\n *\n * Supports:\n * - `## … AI …` section with `- [x] **Yes**` / `- [x] **No**`\n * - Legacy: \"AI tools were used\" + checked box somewhere in body\n */\n\nexport interface AiDisclosureResult {\n assisted: boolean\n explicitNo: boolean\n /** Checked box in AI section but unclear yes vs no */\n ambiguous: boolean\n}\n\nfunction extractAiSection(body: string): string | null {\n const lines = body.split(/\\r?\\n/)\n const idx = lines.findIndex((l) => /^#{1,6}\\s+.*\\bAI\\b/i.test(l.trim()))\n if (idx < 0) return null\n\n const out: string[] = []\n for (let j = idx + 1; j < lines.length; j++) {\n const line = lines[j] ?? ''\n if (/^##\\s+/.test(line)) break\n out.push(line)\n }\n const text = out.join('\\n').trim()\n return text.length ? text : null\n}\n\nfunction isCheckedItem(line: string): boolean {\n return /^\\s*-\\s*\\[[xX]\\]/.test(line)\n}\n\nexport function parseAiDisclosure(body: string): AiDisclosureResult {\n let assisted = false\n let explicitNo = false\n let ambiguous = false\n\n const section = extractAiSection(body)\n\n if (section) {\n let anyChecked = false\n for (const raw of section.split(/\\r?\\n/)) {\n const line = raw.trimEnd()\n if (!isCheckedItem(line)) continue\n anyChecked = true\n const lower = line.toLowerCase()\n\n const saysNo =\n /\\*\\*no\\*\\*/i.test(line) ||\n /\\bwithout ai\\b/i.test(lower) ||\n /\\bdid not use ai\\b/i.test(lower) ||\n /\\bno\\s+ai\\b/i.test(lower)\n\n const saysYes =\n /\\*\\*yes\\*\\*/i.test(line) ||\n /\\byes\\s*[—–-]\\s*ai\\b/i.test(lower) ||\n /\\bwere used\\b/i.test(lower) ||\n /ai tools.*used/i.test(lower) ||\n /\\b(copilot|cursor|chatgpt|claude)\\b/i.test(lower)\n\n if (saysNo && !saysYes) explicitNo = true\n else if (saysYes) assisted = true\n else if (/\\bai\\b/i.test(line) && !saysNo) assisted = true\n }\n\n if (anyChecked && !assisted && !explicitNo) ambiguous = true\n }\n\n if (!section && /ai tools were used/i.test(body)) {\n const checked = /\\[[xX]\\]\\s*AI tools were used/i.test(body)\n if (checked) assisted = true\n }\n\n if (explicitNo && assisted) {\n ambiguous = true\n assisted = false\n explicitNo = false\n }\n\n return { assisted, explicitNo, ambiguous }\n}\n","import { execFileSync } from 'node:child_process'\nimport type { PrContext } from '../types.js'\nimport { parseAiDisclosure } from './parse-ai-disclosure.js'\nfunction gitTrimmed(cwd: string, args: string[]): string {\n return execFileSync('git', ['-C', cwd, ...args], {\n encoding: 'utf8',\n maxBuffer: 20 * 1024 * 1024,\n }).trimEnd()\n}\n\nfunction resolveCompareRef(cwd: string, destBranch: string): string | null {\n const safe = destBranch.trim()\n if (!safe || safe.startsWith('-') || safe.includes('..')) return null\n const candidates = [safe, `origin/${safe}`]\n for (const c of candidates) {\n try {\n gitTrimmed(cwd, ['rev-parse', '--verify', `${c}^{commit}`])\n return c\n } catch {\n /* try next */\n }\n }\n return null\n}\n\nfunction parseNumstat(output: string): {\n additions: number\n deletions: number\n files: string[]\n} {\n let additions = 0\n let deletions = 0\n const files: string[] = []\n for (const line of output.split('\\n')) {\n const t = line.trim()\n if (!t) continue\n const tab = t.indexOf('\\t')\n if (tab < 0) continue\n const tab2 = t.indexOf('\\t', tab + 1)\n if (tab2 < 0) continue\n const aStr = t.slice(0, tab)\n const dStr = t.slice(tab + 1, tab2)\n const path = t.slice(tab2 + 1)\n const a = aStr === '-' ? 0 : Number(aStr)\n const d = dStr === '-' ? 0 : Number(dStr)\n if (!Number.isFinite(a) || !Number.isFinite(d)) continue\n additions += a\n deletions += d\n if (path) files.push(path)\n }\n return { additions, deletions, files }\n}\n\n/**\n * Bitbucket Cloud pull-request pipelines set BITBUCKET_PR_ID and branch refs.\n * PR body is not in standard env vars — use FRONTGUARD_PR_BODY if you want pr-hygiene on the description.\n * Diff stats use `git diff <destination>...HEAD --numstat`.\n */\nexport function buildBitbucketPrContext(cwd: string): PrContext | null {\n const prId = process.env.BITBUCKET_PR_ID?.trim()\n if (!prId) return null\n\n const dest = process.env.BITBUCKET_PR_DESTINATION_BRANCH?.trim() || 'main'\n const body = process.env.FRONTGUARD_PR_BODY?.trim() ?? ''\n const headRef = process.env.BITBUCKET_PR_SOURCE_BRANCH?.trim() ?? ''\n const title = process.env.BITBUCKET_PR_TITLE?.trim() ?? ''\n\n let additions = 0\n let deletions = 0\n let files: string[] = []\n\n const destRef = resolveCompareRef(cwd, dest)\n if (destRef) {\n try {\n const raw = gitTrimmed(cwd, ['diff', `${destRef}...HEAD`, '--numstat'])\n const stat = parseNumstat(raw)\n additions = stat.additions\n deletions = stat.deletions\n files = stat.files\n } catch {\n /* shallow clone or ambiguous ref — still return context for hygiene */\n }\n }\n\n const ai = parseAiDisclosure(body)\n\n return {\n number: Number.parseInt(prId, 10) || 0,\n title,\n body,\n baseRef: dest,\n headRef,\n additions,\n deletions,\n changedFiles: files.length,\n files,\n ...ai,\n }\n}\n\n/** PR metadata for Bitbucket Cloud PR pipelines (`BITBUCKET_PR_*`). */\nexport function readPrContext(cwd: string): PrContext | null {\n return buildBitbucketPrContext(cwd)\n}\n","function isPlainObject(value) {\n if (value === null || typeof value !== \"object\") {\n return false;\n }\n const prototype = Object.getPrototypeOf(value);\n if (prototype !== null && prototype !== Object.prototype && Object.getPrototypeOf(prototype) !== null) {\n return false;\n }\n if (Symbol.iterator in value) {\n return false;\n }\n if (Symbol.toStringTag in value) {\n return Object.prototype.toString.call(value) === \"[object Module]\";\n }\n return true;\n}\n\nfunction _defu(baseObject, defaults, namespace = \".\", merger) {\n if (!isPlainObject(defaults)) {\n return _defu(baseObject, {}, namespace, merger);\n }\n const object = { ...defaults };\n for (const key of Object.keys(baseObject)) {\n if (key === \"__proto__\" || key === \"constructor\") {\n continue;\n }\n const value = baseObject[key];\n if (value === null || value === void 0) {\n continue;\n }\n if (merger && merger(object, key, value, namespace)) {\n continue;\n }\n if (Array.isArray(value) && Array.isArray(object[key])) {\n object[key] = [...value, ...object[key]];\n } else if (isPlainObject(value) && isPlainObject(object[key])) {\n object[key] = _defu(\n value,\n object[key],\n (namespace ? `${namespace}.` : \"\") + key.toString(),\n merger\n );\n } else {\n object[key] = value;\n }\n }\n return object;\n}\nfunction createDefu(merger) {\n return (...arguments_) => (\n // eslint-disable-next-line unicorn/no-array-reduce\n arguments_.reduce((p, c) => _defu(p, c, \"\", merger), {})\n );\n}\nconst defu = createDefu();\nconst defuFn = createDefu((object, key, currentValue) => {\n if (object[key] !== void 0 && typeof currentValue === \"function\") {\n object[key] = currentValue(object[key]);\n return true;\n }\n});\nconst defuArrayFn = createDefu((object, key, currentValue) => {\n if (Array.isArray(object[key]) && typeof currentValue === \"function\") {\n object[key] = currentValue(object[key]);\n return true;\n }\n});\n\nexport { createDefu, defu as default, defu, defuArrayFn, defuFn };\n","import type { FrontGuardConfig } from './schema.js'\n\nexport const defaultConfig: FrontGuardConfig = {\n mode: 'warn',\n rules: {},\n checks: {\n eslint: { enabled: true, glob: '**/*.{js,cjs,mjs,jsx,ts,tsx}' },\n prettier: {\n enabled: true,\n glob: '**/*.{js,cjs,mjs,jsx,ts,tsx,json,md,css,scss,yml,yaml}',\n },\n typescript: { enabled: true },\n secrets: { enabled: true },\n prHygiene: {\n enabled: true,\n minBodyLength: 80,\n requireSections: false,\n sectionHints: ['what', 'why', 'test', 'how to test', 'screenshot'],\n requireAiDisclosureSection: true,\n gateWhenAiDisclosureAmbiguous: 'warn',\n },\n aiAssistedReview: {\n enabled: true,\n gate: 'warn',\n strictScanMode: 'both',\n escalate: {\n secretFindingsToBlock: true,\n tsAnyDeltaToBlock: true,\n },\n },\n prSize: { enabled: true, warnLines: 400, softBlockLines: 800 },\n\n tsAnyDelta: {\n enabled: true,\n gate: 'warn',\n baseRef: 'main',\n maxAdded: 0,\n },\n cycles: {\n enabled: true,\n gate: 'warn',\n entries: ['src'],\n extraArgs: [],\n },\n deadCode: {\n enabled: true,\n gate: 'info',\n extraArgs: [],\n maxReportLines: 80,\n },\n bundle: {\n enabled: true,\n gate: 'warn',\n runBuild: true,\n buildCommand: 'npm run build',\n measureGlobs: ['dist/**/*', 'build/static/**/*', '.next/static/**/*'],\n baselinePath: '.frontguard/bundle-baseline.json',\n baselineRef: 'main',\n maxDeltaBytes: null,\n maxTotalBytes: null,\n },\n coreWebVitals: {\n enabled: true,\n gate: 'warn',\n scanGlobs: ['app/**/*.{tsx,jsx}', 'pages/**/*.{tsx,jsx}', 'src/**/*.{tsx,jsx}'],\n maxFileBytes: 400_000,\n },\n llm: {\n enabled: false,\n provider: 'openai',\n model: 'gpt-4o-mini',\n apiKeyEnv: 'OPENAI_API_KEY',\n maxDiffChars: 48_000,\n timeoutMs: 60_000,\n ollamaUrl: 'http://127.0.0.1:11434',\n perFindingFixes: false,\n maxFixSuggestions: 12,\n maxFileContextChars: 24_000,\n },\n },\n}\n","import type { FrontGuardConfig } from './schema.js'\n\n/** Normalize legacy config keys before merging with defaults. */\nexport function migrateLegacyConfigKeys(config: Partial<FrontGuardConfig>): void {\n const ch = config.checks as Record<string, unknown> | undefined\n if (!ch) return\n if ('cwv' in ch && !('coreWebVitals' in ch)) {\n ch.coreWebVitals = ch.cwv\n delete ch.cwv\n }\n}\n","import { createRequire } from 'node:module'\nimport fs from 'node:fs'\nimport path from 'node:path'\nimport { pathToFileURL } from 'node:url'\nimport defu from 'defu'\nimport type { FrontGuardConfig } from './schema.js'\nimport { defaultConfig } from './defaults.js'\nimport { migrateLegacyConfigKeys } from './migrate.js'\n\nconst CONFIG_NAMES = [\n 'frontguard.config.js',\n 'frontguard.config.mjs',\n 'frontguard.config.cjs',\n] as const\n\nasync function importConfig(\n absolutePath: string,\n): Promise<{ default?: FrontGuardConfig } | FrontGuardConfig> {\n const url = pathToFileURL(absolutePath).href\n return import(url) as Promise<{ default?: FrontGuardConfig } | FrontGuardConfig>\n}\n\nfunction normalizeExport(\n mod: { default?: FrontGuardConfig } | FrontGuardConfig,\n): FrontGuardConfig {\n if (mod && typeof mod === 'object' && 'default' in mod && mod.default) {\n return mod.default as FrontGuardConfig\n }\n return mod as FrontGuardConfig\n}\n\nfunction stripExtends<T extends { extends?: unknown }>(c: T): Omit<T, 'extends'> {\n const { extends: _e, ...rest } = c\n return rest\n}\n\nasync function loadExtendsLayer(\n cwd: string,\n spec: string | string[] | undefined,\n): Promise<Partial<FrontGuardConfig>> {\n if (!spec) return {}\n const req = createRequire(path.join(cwd, 'package.json'))\n const specs = Array.isArray(spec) ? spec : [spec]\n let merged: Partial<FrontGuardConfig> = {}\n\n for (const s of specs) {\n try {\n const resolved = req.resolve(s)\n const mod = await import(pathToFileURL(resolved).href)\n const layer = normalizeExport(\n mod as { default?: FrontGuardConfig } | FrontGuardConfig,\n )\n merged = defu(stripExtends(layer), merged) as Partial<FrontGuardConfig>\n } catch {\n // org package not installed\n }\n }\n\n return merged\n}\n\nexport async function loadConfig(cwd: string): Promise<FrontGuardConfig> {\n let userFile: FrontGuardConfig | null = null\n\n for (const name of CONFIG_NAMES) {\n const full = path.join(cwd, name)\n if (!fs.existsSync(full)) continue\n try {\n const mod = await importConfig(full)\n userFile = normalizeExport(mod)\n break\n } catch {\n continue\n }\n }\n\n const extendsSpec = userFile?.extends\n const orgLayer = await loadExtendsLayer(cwd, extendsSpec)\n migrateLegacyConfigKeys(orgLayer as Partial<FrontGuardConfig>)\n\n if (userFile) migrateLegacyConfigKeys(userFile)\n const user = userFile ? stripExtends(userFile) : {}\n const base = structuredClone(defaultConfig)\n const withOrg = defu(orgLayer, base) as FrontGuardConfig\n return defu(user, withOrg) as FrontGuardConfig\n}\n","import fs from 'node:fs/promises'\nimport path from 'node:path'\nimport type { StackInfo } from '../types.js'\n\ninterface Pkg {\n dependencies?: Record<string, string>\n devDependencies?: Record<string, string>\n peerDependencies?: Record<string, string>\n workspaces?: unknown\n}\n\nfunction allDeps(pkg: Pkg): Record<string, string> {\n return {\n ...pkg.peerDependencies,\n ...pkg.devDependencies,\n ...pkg.dependencies,\n }\n}\n\nfunction hasDep(deps: Record<string, string>, name: string): boolean {\n return Object.prototype.hasOwnProperty.call(deps, name)\n}\n\nexport async function detectStack(cwd: string): Promise<StackInfo> {\n let pkg: Pkg = {}\n try {\n const raw = await fs.readFile(path.join(cwd, 'package.json'), 'utf8')\n pkg = JSON.parse(raw) as Pkg\n } catch {\n return {\n isMonorepo: false,\n hasTypeScript: false,\n hasReact: false,\n hasNext: false,\n hasReactNative: false,\n hasJest: false,\n hasVitest: false,\n hasPlaywright: false,\n packageManager: 'unknown',\n tsStrict: null,\n }\n }\n\n const deps = allDeps(pkg)\n const isMonorepo = Boolean(pkg.workspaces)\n\n let tsStrict: boolean | null = null\n try {\n const tsconfigPath = path.join(cwd, 'tsconfig.json')\n const tsRaw = await fs.readFile(tsconfigPath, 'utf8')\n const ts = JSON.parse(tsRaw) as { compilerOptions?: { strict?: boolean } }\n if (typeof ts.compilerOptions?.strict === 'boolean') {\n tsStrict = ts.compilerOptions.strict\n }\n } catch {\n // no tsconfig\n }\n\n let pm: StackInfo['packageManager'] = 'unknown'\n try {\n await fs.access(path.join(cwd, 'pnpm-lock.yaml'))\n pm = 'pnpm'\n } catch {\n try {\n await fs.access(path.join(cwd, 'yarn.lock'))\n pm = 'yarn'\n } catch {\n try {\n await fs.access(path.join(cwd, 'package-lock.json'))\n pm = 'npm'\n } catch {\n pm = 'npm'\n }\n }\n }\n\n return {\n isMonorepo,\n hasTypeScript: hasDep(deps, 'typescript') || Boolean(tsStrict !== null),\n hasReact: hasDep(deps, 'react'),\n hasNext: hasDep(deps, 'next'),\n hasReactNative: hasDep(deps, 'react-native'),\n hasJest: hasDep(deps, 'jest'),\n hasVitest: hasDep(deps, 'vitest'),\n hasPlaywright: hasDep(deps, '@playwright/test'),\n packageManager: pm,\n tsStrict,\n }\n}\n\n/** Compact stack label for reports and LLM context (React / Next / RN / TS / package manager). */\nexport function formatStackOneLiner(s: StackInfo): string {\n const bits: string[] = []\n if (s.hasNext) bits.push('Next.js')\n if (s.hasReactNative) bits.push('React Native')\n else if (s.hasReact) bits.push('React')\n if (s.hasTypeScript) bits.push('TypeScript')\n if (s.tsStrict === true) bits.push('strict TS')\n bits.push(`pkg: ${s.packageManager}`)\n return bits.join(' · ') || 'unknown'\n}\n","import path from 'node:path'\nimport fs from 'node:fs/promises'\nimport type { PrContext } from '../types.js'\n\n/** Normalize repo-relative paths from git / Bitbucket. */\nexport function normalizePrPath(p: string): string {\n return p.replace(/\\\\/g, '/').replace(/^\\.\\//, '')\n}\n\n/** True when we should limit checks to `pr.files` (Bitbucket / PR pipeline). */\nexport function hasPrFileList(pr: PrContext | null): boolean {\n return Boolean(pr?.files?.length)\n}\n\nexport function prPathSet(pr: PrContext | null): Set<string> | null {\n if (!hasPrFileList(pr)) return null\n return new Set(pr!.files!.map(normalizePrPath))\n}\n\n/** Whether a diagnostic path belongs to the PR file set (exact match after normalize). */\nexport function isPathInPrScope(relOrAbs: string, cwd: string, prSet: Set<string>): boolean {\n const raw = relOrAbs.replace(/^file:\\/\\//, '')\n let rel = normalizePrPath(raw)\n if (path.isAbsolute(raw)) {\n rel = normalizePrPath(path.relative(cwd, raw))\n }\n if (prSet.has(rel)) return true\n const trimmed = rel.replace(/^\\.\\//, '')\n if (prSet.has(trimmed)) return true\n return false\n}\n\nconst ESLINT_EXT = /\\.(js|cjs|mjs|jsx|ts|tsx)$/i\nconst PRETTIER_EXT = /\\.(js|cjs|mjs|jsx|ts|tsx|json|md|css|scss|sass|less|yml|yaml|vue|svelte)$/i\nconst CYCLES_EXT = /\\.(tsx?|jsx?|mjs|cjs|js)$/i\n\nexport function filterPrFilesForEslint(pr: PrContext | null): string[] | null {\n if (!hasPrFileList(pr)) return null\n return pr!.files!.map(normalizePrPath).filter((f) => ESLINT_EXT.test(f))\n}\n\nexport function filterPrFilesForPrettier(pr: PrContext | null): string[] | null {\n if (!hasPrFileList(pr)) return null\n return pr!.files!.map(normalizePrPath).filter((f) => PRETTIER_EXT.test(f))\n}\n\nexport function filterPrFilesForMadge(pr: PrContext | null): string[] | null {\n if (!hasPrFileList(pr)) return null\n return pr!.files!.map(normalizePrPath).filter((f) => CYCLES_EXT.test(f))\n}\n\n/** Keep only paths that still exist (skip deleted-only paths in PR). */\nexport async function existingRepoPaths(cwd: string, rels: string[]): Promise<string[]> {\n const out: string[] = []\n for (const rel of rels) {\n try {\n await fs.access(path.join(cwd, rel))\n out.push(rel)\n } catch {\n /* deleted or missing */\n }\n }\n return out\n}\n\n/**\n * Keep tsc stderr/stdout lines that reference a file in the PR scope.\n * Matches `path( line, col):` / `path(line,col):` style diagnostics.\n */\nexport function filterTscOutputToPrFiles(output: string, cwd: string, prSet: Set<string>): string {\n const lines = output.split('\\n')\n const kept: string[] = []\n for (const line of lines) {\n const m = /^(.+?)\\(\\d+,\\d+\\):\\s/.exec(line)\n if (m?.[1]) {\n if (isPathInPrScope(m[1], cwd, prSet)) kept.push(line)\n continue\n }\n // Some messages are file-less; drop in PR-scoped mode to avoid noise\n }\n return kept.join('\\n').trim()\n}\n","import path from 'node:path'\n\nfunction stripFileUrl(p: string): string {\n let s = p.trim()\n if (!/^file:/i.test(s)) return s\n s = s.replace(/^file:\\/\\//i, '')\n if (process.platform === 'win32' && s.startsWith('/')) {\n const m = s.match(/^\\/([A-Za-z]:\\/.*)$/)\n if (m) return m[1]!\n }\n return s\n}\n\n/** True if `child` is under `parent` (resolved). */\nfunction isUnderDir(parent: string, child: string): boolean {\n const rel = path.relative(parent, child)\n return rel === '' || (!rel.startsWith('..') && !path.isAbsolute(rel))\n}\n\n/**\n * Path shown in reports: relative to repo root, POSIX-style. Handles absolute\n * ESLint/file URLs and already-relative paths from other checks.\n */\nexport function toRepoRelativePath(\n cwd: string,\n filePath: string | undefined,\n): string | undefined {\n if (!filePath?.trim()) return undefined\n const raw = stripFileUrl(filePath)\n const resolvedCwd = path.resolve(cwd)\n const absFile = path.isAbsolute(raw)\n ? path.resolve(raw)\n : path.resolve(resolvedCwd, raw)\n\n if (!isUnderDir(resolvedCwd, absFile)) {\n return raw.split(/[/\\\\]/g).join('/')\n }\n\n let rel = path.relative(resolvedCwd, absFile)\n if (!rel || rel === '.') {\n return path.basename(absFile)\n }\n return rel.split(path.sep).join('/')\n}\n\n/** Strip CI/workspace absolute prefix from messages and log blobs (ESLint, Prettier, tsc). */\nexport function stripRepoAbsolutePaths(cwd: string, text: string): string {\n if (!text || !cwd.trim()) return text\n const resolvedCwd = path.resolve(cwd)\n const asPosix = (s: string) => s.replace(/\\\\/g, '/')\n const cwdPosix = asPosix(resolvedCwd)\n let out = asPosix(text)\n const prefixes = [...new Set([cwdPosix + '/', resolvedCwd + path.sep])].filter(\n (p) => p.length > 1,\n )\n for (const prefix of prefixes) {\n const norm = prefix.replace(/\\\\/g, '/')\n if (out.includes(norm)) {\n out = out.split(norm).join('')\n }\n }\n return out\n}\n","import { createRequire as e } from \"node:module\";\nimport { spawn as t, spawnSync as n } from \"node:child_process\";\nimport { delimiter as r, dirname as i, normalize as a, resolve as o } from \"node:path\";\nimport { cwd as s } from \"node:process\";\nimport { pipeline as c } from \"node:stream/promises\";\nimport { PassThrough as l } from \"node:stream\";\nimport u from \"node:readline\";\n//#region \\0rolldown/runtime.js\nvar d = (e, t) => () => (t || e((t = { exports: {} }).exports, t), t.exports);\nvar f = /* @__PURE__ */ e(import.meta.url);\n//#endregion\n//#region src/env.ts\nconst p = /^path$/i;\nconst m = {\n\tkey: \"PATH\",\n\tvalue: \"\"\n};\nfunction h(e) {\n\tfor (const t in e) {\n\t\tif (!Object.prototype.hasOwnProperty.call(e, t) || !p.test(t)) continue;\n\t\tconst n = e[t];\n\t\tif (!n) return m;\n\t\treturn {\n\t\t\tkey: t,\n\t\t\tvalue: n\n\t\t};\n\t}\n\treturn m;\n}\nfunction g(e, t) {\n\tconst n = t.value.split(r);\n\tconst a = [];\n\tlet s = e;\n\tlet c;\n\tdo {\n\t\ta.push(o(s, \"node_modules\", \".bin\"));\n\t\tc = s;\n\t\ts = i(s);\n\t} while (s !== c);\n\ta.push(i(process.execPath));\n\tconst l = a.concat(n).join(r);\n\treturn {\n\t\tkey: t.key,\n\t\tvalue: l\n\t};\n}\nfunction _(e, t) {\n\tconst n = {\n\t\t...process.env,\n\t\t...t\n\t};\n\tconst r = g(e, h(n));\n\tn[r.key] = r.value;\n\treturn n;\n}\n//#endregion\n//#region src/stream.ts\nconst v = (e) => {\n\tlet t = e.length;\n\tconst n = new l();\n\tconst r = () => {\n\t\tif (--t === 0) n.end();\n\t};\n\tfor (const t of e) c(t, n, { end: false }).then(r).catch(r);\n\treturn n;\n};\n//#endregion\n//#region node_modules/isexe/windows.js\nvar y = /* @__PURE__ */ d(((e, t) => {\n\tt.exports = a;\n\ta.sync = o;\n\tvar n = f(\"fs\");\n\tfunction r(e, t) {\n\t\tvar n = t.pathExt !== void 0 ? t.pathExt : process.env.PATHEXT;\n\t\tif (!n) return true;\n\t\tn = n.split(\";\");\n\t\tif (n.indexOf(\"\") !== -1) return true;\n\t\tfor (var r = 0; r < n.length; r++) {\n\t\t\tvar i = n[r].toLowerCase();\n\t\t\tif (i && e.substr(-i.length).toLowerCase() === i) return true;\n\t\t}\n\t\treturn false;\n\t}\n\tfunction i(e, t, n) {\n\t\tif (!e.isSymbolicLink() && !e.isFile()) return false;\n\t\treturn r(t, n);\n\t}\n\tfunction a(e, t, r) {\n\t\tn.stat(e, function(n, a) {\n\t\t\tr(n, n ? false : i(a, e, t));\n\t\t});\n\t}\n\tfunction o(e, t) {\n\t\treturn i(n.statSync(e), e, t);\n\t}\n}));\n//#endregion\n//#region node_modules/isexe/mode.js\nvar b = /* @__PURE__ */ d(((e, t) => {\n\tt.exports = r;\n\tr.sync = i;\n\tvar n = f(\"fs\");\n\tfunction r(e, t, r) {\n\t\tn.stat(e, function(e, n) {\n\t\t\tr(e, e ? false : a(n, t));\n\t\t});\n\t}\n\tfunction i(e, t) {\n\t\treturn a(n.statSync(e), t);\n\t}\n\tfunction a(e, t) {\n\t\treturn e.isFile() && o(e, t);\n\t}\n\tfunction o(e, t) {\n\t\tvar n = e.mode;\n\t\tvar r = e.uid;\n\t\tvar i = e.gid;\n\t\tvar a = t.uid !== void 0 ? t.uid : process.getuid && process.getuid();\n\t\tvar o = t.gid !== void 0 ? t.gid : process.getgid && process.getgid();\n\t\tvar s = parseInt(\"100\", 8);\n\t\tvar c = parseInt(\"010\", 8);\n\t\tvar l = parseInt(\"001\", 8);\n\t\tvar u = s | c;\n\t\treturn n & l || n & c && i === o || n & s && r === a || n & u && a === 0;\n\t}\n}));\n//#endregion\n//#region node_modules/isexe/index.js\nvar x = /* @__PURE__ */ d(((e, t) => {\n\tf(\"fs\");\n\tvar n;\n\tif (process.platform === \"win32\" || global.TESTING_WINDOWS) n = y();\n\telse n = b();\n\tt.exports = r;\n\tr.sync = i;\n\tfunction r(e, t, i) {\n\t\tif (typeof t === \"function\") {\n\t\t\ti = t;\n\t\t\tt = {};\n\t\t}\n\t\tif (!i) {\n\t\t\tif (typeof Promise !== \"function\") throw new TypeError(\"callback not provided\");\n\t\t\treturn new Promise(function(n, i) {\n\t\t\t\tr(e, t || {}, function(e, t) {\n\t\t\t\t\tif (e) i(e);\n\t\t\t\t\telse n(t);\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t\tn(e, t || {}, function(e, n) {\n\t\t\tif (e) {\n\t\t\t\tif (e.code === \"EACCES\" || t && t.ignoreErrors) {\n\t\t\t\t\te = null;\n\t\t\t\t\tn = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\ti(e, n);\n\t\t});\n\t}\n\tfunction i(e, t) {\n\t\ttry {\n\t\t\treturn n.sync(e, t || {});\n\t\t} catch (e) {\n\t\t\tif (t && t.ignoreErrors || e.code === \"EACCES\") return false;\n\t\t\telse throw e;\n\t\t}\n\t}\n}));\n//#endregion\n//#region node_modules/which/which.js\nvar S = /* @__PURE__ */ d(((e, t) => {\n\tconst n = process.platform === \"win32\" || process.env.OSTYPE === \"cygwin\" || process.env.OSTYPE === \"msys\";\n\tconst r = f(\"path\");\n\tconst i = n ? \";\" : \":\";\n\tconst a = x();\n\tconst o = (e) => Object.assign(/* @__PURE__ */ new Error(`not found: ${e}`), { code: \"ENOENT\" });\n\tconst s = (e, t) => {\n\t\tconst r = t.colon || i;\n\t\tconst a = e.match(/\\//) || n && e.match(/\\\\/) ? [\"\"] : [...n ? [process.cwd()] : [], ...(t.path || process.env.PATH || \"\").split(r)];\n\t\tconst o = n ? t.pathExt || process.env.PATHEXT || \".EXE;.CMD;.BAT;.COM\" : \"\";\n\t\tconst s = n ? o.split(r) : [\"\"];\n\t\tif (n) {\n\t\t\tif (e.indexOf(\".\") !== -1 && s[0] !== \"\") s.unshift(\"\");\n\t\t}\n\t\treturn {\n\t\t\tpathEnv: a,\n\t\t\tpathExt: s,\n\t\t\tpathExtExe: o\n\t\t};\n\t};\n\tconst c = (e, t, n) => {\n\t\tif (typeof t === \"function\") {\n\t\t\tn = t;\n\t\t\tt = {};\n\t\t}\n\t\tif (!t) t = {};\n\t\tconst { pathEnv: i, pathExt: c, pathExtExe: l } = s(e, t);\n\t\tconst u = [];\n\t\tconst d = (n) => new Promise((a, s) => {\n\t\t\tif (n === i.length) return t.all && u.length ? a(u) : s(o(e));\n\t\t\tconst c = i[n];\n\t\t\tconst l = /^\".*\"$/.test(c) ? c.slice(1, -1) : c;\n\t\t\tconst d = r.join(l, e);\n\t\t\ta(f(!l && /^\\.[\\\\\\/]/.test(e) ? e.slice(0, 2) + d : d, n, 0));\n\t\t});\n\t\tconst f = (e, n, r) => new Promise((i, o) => {\n\t\t\tif (r === c.length) return i(d(n + 1));\n\t\t\tconst s = c[r];\n\t\t\ta(e + s, { pathExt: l }, (a, o) => {\n\t\t\t\tif (!a && o) if (t.all) u.push(e + s);\n\t\t\t\telse return i(e + s);\n\t\t\t\treturn i(f(e, n, r + 1));\n\t\t\t});\n\t\t});\n\t\treturn n ? d(0).then((e) => n(null, e), n) : d(0);\n\t};\n\tconst l = (e, t) => {\n\t\tt = t || {};\n\t\tconst { pathEnv: n, pathExt: i, pathExtExe: c } = s(e, t);\n\t\tconst l = [];\n\t\tfor (let o = 0; o < n.length; o++) {\n\t\t\tconst s = n[o];\n\t\t\tconst u = /^\".*\"$/.test(s) ? s.slice(1, -1) : s;\n\t\t\tconst d = r.join(u, e);\n\t\t\tconst f = !u && /^\\.[\\\\\\/]/.test(e) ? e.slice(0, 2) + d : d;\n\t\t\tfor (let e = 0; e < i.length; e++) {\n\t\t\t\tconst n = f + i[e];\n\t\t\t\ttry {\n\t\t\t\t\tif (a.sync(n, { pathExt: c })) if (t.all) l.push(n);\n\t\t\t\t\telse return n;\n\t\t\t\t} catch (e) {}\n\t\t\t}\n\t\t}\n\t\tif (t.all && l.length) return l;\n\t\tif (t.nothrow) return null;\n\t\tthrow o(e);\n\t};\n\tt.exports = c;\n\tc.sync = l;\n}));\n//#endregion\n//#region node_modules/path-key/index.js\nvar C = /* @__PURE__ */ d(((e, t) => {\n\tconst n = (e = {}) => {\n\t\tconst t = e.env || process.env;\n\t\tif ((e.platform || process.platform) !== \"win32\") return \"PATH\";\n\t\treturn Object.keys(t).reverse().find((e) => e.toUpperCase() === \"PATH\") || \"Path\";\n\t};\n\tt.exports = n;\n\tt.exports.default = n;\n}));\n//#endregion\n//#region node_modules/cross-spawn/lib/util/resolveCommand.js\nvar w = /* @__PURE__ */ d(((e, t) => {\n\tconst n = f(\"path\");\n\tconst r = S();\n\tconst i = C();\n\tfunction a(e, t) {\n\t\tconst a = e.options.env || process.env;\n\t\tconst o = process.cwd();\n\t\tconst s = e.options.cwd != null;\n\t\tconst c = s && process.chdir !== void 0 && !process.chdir.disabled;\n\t\tif (c) try {\n\t\t\tprocess.chdir(e.options.cwd);\n\t\t} catch (e) {}\n\t\tlet l;\n\t\ttry {\n\t\t\tl = r.sync(e.command, {\n\t\t\t\tpath: a[i({ env: a })],\n\t\t\t\tpathExt: t ? n.delimiter : void 0\n\t\t\t});\n\t\t} catch (e) {} finally {\n\t\t\tif (c) process.chdir(o);\n\t\t}\n\t\tif (l) l = n.resolve(s ? e.options.cwd : \"\", l);\n\t\treturn l;\n\t}\n\tfunction o(e) {\n\t\treturn a(e) || a(e, true);\n\t}\n\tt.exports = o;\n}));\n//#endregion\n//#region node_modules/cross-spawn/lib/util/escape.js\nvar T = /* @__PURE__ */ d(((e, t) => {\n\tconst n = /([()\\][%!^\"`<>&|;, *?])/g;\n\tfunction r(e) {\n\t\te = e.replace(n, \"^$1\");\n\t\treturn e;\n\t}\n\tfunction i(e, t) {\n\t\te = `${e}`;\n\t\te = e.replace(/(?=(\\\\+?)?)\\1\"/g, \"$1$1\\\\\\\"\");\n\t\te = e.replace(/(?=(\\\\+?)?)\\1$/, \"$1$1\");\n\t\te = `\"${e}\"`;\n\t\te = e.replace(n, \"^$1\");\n\t\tif (t) e = e.replace(n, \"^$1\");\n\t\treturn e;\n\t}\n\tt.exports.command = r;\n\tt.exports.argument = i;\n}));\n//#endregion\n//#region node_modules/shebang-regex/index.js\nvar E = /* @__PURE__ */ d(((e, t) => {\n\tt.exports = /^#!(.*)/;\n}));\n//#endregion\n//#region node_modules/shebang-command/index.js\nvar D = /* @__PURE__ */ d(((e, t) => {\n\tconst n = E();\n\tt.exports = (e = \"\") => {\n\t\tconst t = e.match(n);\n\t\tif (!t) return null;\n\t\tconst [r, i] = t[0].replace(/#! ?/, \"\").split(\" \");\n\t\tconst a = r.split(\"/\").pop();\n\t\tif (a === \"env\") return i;\n\t\treturn i ? `${a} ${i}` : a;\n\t};\n}));\n//#endregion\n//#region node_modules/cross-spawn/lib/util/readShebang.js\nvar O = /* @__PURE__ */ d(((e, t) => {\n\tconst n = f(\"fs\");\n\tconst r = D();\n\tfunction i(e) {\n\t\tconst t = 150;\n\t\tconst i = Buffer.alloc(t);\n\t\tlet a;\n\t\ttry {\n\t\t\ta = n.openSync(e, \"r\");\n\t\t\tn.readSync(a, i, 0, t, 0);\n\t\t\tn.closeSync(a);\n\t\t} catch (e) {}\n\t\treturn r(i.toString());\n\t}\n\tt.exports = i;\n}));\n//#endregion\n//#region node_modules/cross-spawn/lib/parse.js\nvar k = /* @__PURE__ */ d(((e, t) => {\n\tconst n = f(\"path\");\n\tconst r = w();\n\tconst i = T();\n\tconst a = O();\n\tconst o = process.platform === \"win32\";\n\tconst s = /\\.(?:com|exe)$/i;\n\tconst c = /node_modules[\\\\/].bin[\\\\/][^\\\\/]+\\.cmd$/i;\n\tfunction l(e) {\n\t\te.file = r(e);\n\t\tconst t = e.file && a(e.file);\n\t\tif (t) {\n\t\t\te.args.unshift(e.file);\n\t\t\te.command = t;\n\t\t\treturn r(e);\n\t\t}\n\t\treturn e.file;\n\t}\n\tfunction u(e) {\n\t\tif (!o) return e;\n\t\tconst t = l(e);\n\t\tconst r = !s.test(t);\n\t\tif (e.options.forceShell || r) {\n\t\t\tconst r = c.test(t);\n\t\t\te.command = n.normalize(e.command);\n\t\t\te.command = i.command(e.command);\n\t\t\te.args = e.args.map((e) => i.argument(e, r));\n\t\t\te.args = [\n\t\t\t\t\"/d\",\n\t\t\t\t\"/s\",\n\t\t\t\t\"/c\",\n\t\t\t\t`\"${[e.command].concat(e.args).join(\" \")}\"`\n\t\t\t];\n\t\t\te.command = process.env.comspec || \"cmd.exe\";\n\t\t\te.options.windowsVerbatimArguments = true;\n\t\t}\n\t\treturn e;\n\t}\n\tfunction d(e, t, n) {\n\t\tif (t && !Array.isArray(t)) {\n\t\t\tn = t;\n\t\t\tt = null;\n\t\t}\n\t\tt = t ? t.slice(0) : [];\n\t\tn = Object.assign({}, n);\n\t\tconst r = {\n\t\t\tcommand: e,\n\t\t\targs: t,\n\t\t\toptions: n,\n\t\t\tfile: void 0,\n\t\t\toriginal: {\n\t\t\t\tcommand: e,\n\t\t\t\targs: t\n\t\t\t}\n\t\t};\n\t\treturn n.shell ? r : u(r);\n\t}\n\tt.exports = d;\n}));\n//#endregion\n//#region node_modules/cross-spawn/lib/enoent.js\nvar A = /* @__PURE__ */ d(((e, t) => {\n\tconst n = process.platform === \"win32\";\n\tfunction r(e, t) {\n\t\treturn Object.assign(/* @__PURE__ */ new Error(`${t} ${e.command} ENOENT`), {\n\t\t\tcode: \"ENOENT\",\n\t\t\terrno: \"ENOENT\",\n\t\t\tsyscall: `${t} ${e.command}`,\n\t\t\tpath: e.command,\n\t\t\tspawnargs: e.args\n\t\t});\n\t}\n\tfunction i(e, t) {\n\t\tif (!n) return;\n\t\tconst r = e.emit;\n\t\te.emit = function(n, i) {\n\t\t\tif (n === \"exit\") {\n\t\t\t\tconst n = a(i, t);\n\t\t\t\tif (n) return r.call(e, \"error\", n);\n\t\t\t}\n\t\t\treturn r.apply(e, arguments);\n\t\t};\n\t}\n\tfunction a(e, t) {\n\t\tif (n && e === 1 && !t.file) return r(t.original, \"spawn\");\n\t\treturn null;\n\t}\n\tfunction o(e, t) {\n\t\tif (n && e === 1 && !t.file) return r(t.original, \"spawnSync\");\n\t\treturn null;\n\t}\n\tt.exports = {\n\t\thookChildProcess: i,\n\t\tverifyENOENT: a,\n\t\tverifyENOENTSync: o,\n\t\tnotFoundError: r\n\t};\n}));\n//#endregion\n//#region node_modules/cross-spawn/index.js\nvar j = /* @__PURE__ */ d(((e, t) => {\n\tconst n = f(\"child_process\");\n\tconst r = k();\n\tconst i = A();\n\tfunction a(e, t, a) {\n\t\tconst o = r(e, t, a);\n\t\tconst s = n.spawn(o.command, o.args, o.options);\n\t\ti.hookChildProcess(s, o);\n\t\treturn s;\n\t}\n\tfunction o(e, t, a) {\n\t\tconst o = r(e, t, a);\n\t\tconst s = n.spawnSync(o.command, o.args, o.options);\n\t\ts.error = s.error || i.verifyENOENTSync(s.status, o);\n\t\treturn s;\n\t}\n\tt.exports = a;\n\tt.exports.spawn = a;\n\tt.exports.sync = o;\n\tt.exports._parse = r;\n\tt.exports._enoent = i;\n}));\n//#endregion\n//#region src/non-zero-exit-error.ts\nvar M = j();\nvar N = class extends Error {\n\tget exitCode() {\n\t\tif (this.result.exitCode !== null) return this.result.exitCode;\n\t}\n\tconstructor(e, t) {\n\t\tsuper(`Process exited with non-zero status (${e.exitCode})`);\n\t\tthis.result = e;\n\t\tthis.output = t;\n\t}\n};\n//#endregion\n//#region src/main.ts\nconst P = /\\r?\\n/;\nconst F = {\n\ttimeout: void 0,\n\tpersist: false\n};\nconst I = { timeout: void 0 };\nconst L = { windowsHide: true };\nfunction R(e, t) {\n\treturn {\n\t\tcommand: a(e),\n\t\targs: t ?? []\n\t};\n}\nfunction z(e) {\n\tconst t = new AbortController();\n\tfor (const n of e) {\n\t\tif (n.aborted) {\n\t\t\tt.abort();\n\t\t\treturn n;\n\t\t}\n\t\tconst e = () => {\n\t\t\tt.abort(n.reason);\n\t\t};\n\t\tn.addEventListener(\"abort\", e, { signal: t.signal });\n\t}\n\treturn t.signal;\n}\nasync function B(e) {\n\tlet t = \"\";\n\ttry {\n\t\tfor await (const n of e) t += n.toString();\n\t} catch {}\n\treturn t;\n}\nvar V = class {\n\t_process;\n\t_aborted = false;\n\t_options;\n\t_command;\n\t_args;\n\t_resolveClose;\n\t_processClosed;\n\t_thrownError;\n\tget process() {\n\t\treturn this._process;\n\t}\n\tget pid() {\n\t\treturn this._process?.pid;\n\t}\n\tget exitCode() {\n\t\tif (this._process && this._process.exitCode !== null) return this._process.exitCode;\n\t}\n\tconstructor(e, t, n) {\n\t\tthis._options = {\n\t\t\t...F,\n\t\t\t...n\n\t\t};\n\t\tthis._command = e;\n\t\tthis._args = t ?? [];\n\t\tthis._processClosed = new Promise((e) => {\n\t\t\tthis._resolveClose = e;\n\t\t});\n\t}\n\tkill(e) {\n\t\treturn this._process?.kill(e) === true;\n\t}\n\tget aborted() {\n\t\treturn this._aborted;\n\t}\n\tget killed() {\n\t\treturn this._process?.killed === true;\n\t}\n\tpipe(e, t, n) {\n\t\treturn W(e, t, {\n\t\t\t...n,\n\t\t\tstdin: this\n\t\t});\n\t}\n\tasync *[Symbol.asyncIterator]() {\n\t\tconst e = this._process;\n\t\tif (!e) return;\n\t\tconst t = [];\n\t\tif (this._streamErr) t.push(this._streamErr);\n\t\tif (this._streamOut) t.push(this._streamOut);\n\t\tconst n = v(t);\n\t\tconst r = u.createInterface({ input: n });\n\t\tfor await (const e of r) yield e.toString();\n\t\tawait this._processClosed;\n\t\te.removeAllListeners();\n\t\tif (this._thrownError) throw this._thrownError;\n\t\tif (this._options?.throwOnError && this.exitCode !== 0 && this.exitCode !== void 0) throw new N(this);\n\t}\n\tasync _waitForOutput() {\n\t\tconst e = this._process;\n\t\tif (!e) throw new Error(\"No process was started\");\n\t\tconst [t, n] = await Promise.all([this._streamOut ? B(this._streamOut) : \"\", this._streamErr ? B(this._streamErr) : \"\"]);\n\t\tawait this._processClosed;\n\t\tconst { stdin: r } = this._options;\n\t\tif (r && typeof r !== \"string\") await r;\n\t\te.removeAllListeners();\n\t\tif (this._thrownError) throw this._thrownError;\n\t\tconst i = {\n\t\t\tstderr: n,\n\t\t\tstdout: t,\n\t\t\texitCode: this.exitCode\n\t\t};\n\t\tif (this._options.throwOnError && this.exitCode !== 0 && this.exitCode !== void 0) throw new N(this, i);\n\t\treturn i;\n\t}\n\tthen(e, t) {\n\t\treturn this._waitForOutput().then(e, t);\n\t}\n\t_streamOut;\n\t_streamErr;\n\tspawn() {\n\t\tconst e = s();\n\t\tconst n = this._options;\n\t\tconst r = {\n\t\t\t...L,\n\t\t\t...n.nodeOptions\n\t\t};\n\t\tconst i = [];\n\t\tthis._resetState();\n\t\tif (n.timeout !== void 0) i.push(AbortSignal.timeout(n.timeout));\n\t\tif (n.signal !== void 0) i.push(n.signal);\n\t\tif (n.persist === true) r.detached = true;\n\t\tif (i.length > 0) r.signal = z(i);\n\t\tr.env = _(e, r.env);\n\t\tconst { command: a, args: o } = R(this._command, this._args);\n\t\tconst c = (0, M._parse)(a, o, r);\n\t\tconst l = t(c.command, c.args, c.options);\n\t\tif (l.stderr) this._streamErr = l.stderr;\n\t\tif (l.stdout) this._streamOut = l.stdout;\n\t\tthis._process = l;\n\t\tl.once(\"error\", this._onError);\n\t\tl.once(\"close\", this._onClose);\n\t\tif (l.stdin) {\n\t\t\tconst { stdin: e } = n;\n\t\t\tif (typeof e === \"string\") l.stdin.end(e);\n\t\t\telse e?.process?.stdout?.pipe(l.stdin);\n\t\t}\n\t}\n\t_resetState() {\n\t\tthis._aborted = false;\n\t\tthis._processClosed = new Promise((e) => {\n\t\t\tthis._resolveClose = e;\n\t\t});\n\t\tthis._thrownError = void 0;\n\t}\n\t_onError = (e) => {\n\t\tif (e.name === \"AbortError\" && (!(e.cause instanceof Error) || e.cause.name !== \"TimeoutError\")) {\n\t\t\tthis._aborted = true;\n\t\t\treturn;\n\t\t}\n\t\tthis._thrownError = e;\n\t};\n\t_onClose = () => {\n\t\tif (this._resolveClose) this._resolveClose();\n\t};\n};\nfunction H(e, t, r) {\n\tconst i = {\n\t\t...I,\n\t\t...r\n\t};\n\tconst a = s();\n\tconst o = {\n\t\twindowsHide: true,\n\t\t...i.nodeOptions\n\t};\n\tif (i.timeout !== void 0) o.timeout = i.timeout;\n\to.env = _(a, o.env);\n\tconst { command: c, args: l } = R(e, t);\n\tconst u = (0, M._parse)(c, l, o);\n\tconst d = n(u.command, u.args, u.options);\n\tif (d.error) throw d.error;\n\tconst f = d.stdout?.toString() ?? \"\";\n\tconst p = d.stderr?.toString() ?? \"\";\n\tconst m = d.status ?? void 0;\n\tconst h = d.signal != null;\n\tconst g = {\n\t\tstdout: f,\n\t\tstderr: p,\n\t\tget exitCode() {\n\t\t\treturn m;\n\t\t},\n\t\tget pid() {\n\t\t\treturn d.pid;\n\t\t},\n\t\tget killed() {\n\t\t\treturn h;\n\t\t},\n\t\t*[Symbol.iterator]() {\n\t\t\tfor (const e of [f, p]) {\n\t\t\t\tif (!e) continue;\n\t\t\t\tconst t = e.split(P);\n\t\t\t\tif (t[t.length - 1] === \"\") t.pop();\n\t\t\t\tyield* t;\n\t\t\t}\n\t\t}\n\t};\n\tif (i.throwOnError && m !== 0 && m !== void 0) throw new N(g, g);\n\treturn g;\n}\nconst U = (e, t, n) => {\n\tconst r = new V(e, t, n);\n\tr.spawn();\n\treturn r;\n};\nconst W = U;\nconst G = H;\n//#endregion\nexport { V as ExecProcess, N as NonZeroExitError, W as exec, G as execSync, U as x, H as xSync };\n","import path from 'node:path'\nimport fs from 'node:fs/promises'\nimport { exec } from 'tinyexec'\n\nexport interface RunOptions {\n cwd: string\n}\n\nexport async function pathExists(file: string): Promise<boolean> {\n try {\n await fs.access(file)\n return true\n } catch {\n return false\n }\n}\n\nexport async function resolveBin(cwd: string, name: string): Promise<string | null> {\n const local = path.join(cwd, 'node_modules', '.bin', name)\n if (await pathExists(local)) return local\n\n const win = local + '.cmd'\n if (await pathExists(win)) return win\n\n return null\n}\n\n/** Run with local binary if present, else `npx --no-install` first then `npx`. */\nexport async function runNpmBinary(\n cwd: string,\n name: string,\n args: string[],\n): Promise<{ exitCode: number; stdout: string; stderr: string }> {\n try {\n const bin = await resolveBin(cwd, name)\n if (bin) {\n const r = await exec(bin, args, { nodeOptions: { cwd } })\n return {\n exitCode: r.exitCode ?? 0,\n stdout: r.stdout ?? '',\n stderr: r.stderr ?? '',\n }\n }\n\n let r = await exec('npx', ['--no-install', name, ...args], { nodeOptions: { cwd } })\n if ((r.exitCode ?? 0) !== 0) {\n r = await exec('npx', [name, ...args], { nodeOptions: { cwd } })\n }\n return {\n exitCode: r.exitCode ?? 0,\n stdout: r.stdout ?? '',\n stderr: r.stderr ?? '',\n }\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e)\n return {\n exitCode: 127,\n stdout: '',\n stderr: msg,\n }\n }\n}\n\n/** Invoke `npx` with explicit args (e.g. `npx -y madge ...`). */\nexport async function runNpx(\n cwd: string,\n args: string[],\n): Promise<{ exitCode: number; stdout: string; stderr: string }> {\n try {\n const r = await exec('npx', args, { nodeOptions: { cwd } })\n return {\n exitCode: r.exitCode ?? 0,\n stdout: r.stdout ?? '',\n stderr: r.stderr ?? '',\n }\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e)\n return {\n exitCode: 127,\n stdout: '',\n stderr: msg,\n }\n }\n}\n","import fs from 'node:fs/promises'\nimport path from 'node:path'\nimport type { CheckResult, Finding, PrContext, StackInfo } from '../types.js'\nimport type { FrontGuardConfig } from '../config/schema.js'\nimport {\n existingRepoPaths,\n filterPrFilesForEslint,\n hasPrFileList,\n} from '../lib/pr-scope.js'\nimport { toRepoRelativePath } from '../lib/repo-paths.js'\nimport { pathExists, runNpmBinary } from '../runner/exec-tools.js'\n\nasync function hasEslintDependency(cwd: string): Promise<boolean> {\n try {\n const raw = await fs.readFile(path.join(cwd, 'package.json'), 'utf8')\n const p = JSON.parse(raw) as {\n dependencies?: Record<string, string>\n devDependencies?: Record<string, string>\n }\n return Boolean(p.devDependencies?.eslint || p.dependencies?.eslint)\n } catch {\n return false\n }\n}\n\nasync function hasEslintConfig(cwd: string): Promise<boolean> {\n const candidates = [\n 'eslint.config.js',\n 'eslint.config.mjs',\n 'eslint.config.cjs',\n 'eslint.config.json',\n '.eslintrc',\n '.eslintrc.json',\n '.eslintrc.cjs',\n '.eslintrc.yaml',\n '.eslintrc.yml',\n ]\n for (const c of candidates) {\n if (await pathExists(path.join(cwd, c))) return true\n }\n return false\n}\n\nfunction meaningfulStderr(stderr: string): string {\n return stderr\n .split('\\n')\n .filter((l) => l.trim() && !/^npm warn\\b/i.test(l))\n .join('\\n')\n .trim()\n}\n\nconst ESLINT_BATCH = 80\n\nasync function runEslintOnPaths(\n cwd: string,\n relPaths: string[],\n): Promise<{ exitCode: number; stdout: string; stderr: string }> {\n let worstExit = 0\n const merged: Array<{\n filePath: string\n messages: Array<{ ruleId: string | null; message: string; line?: number }>\n }> = []\n let stderrAcc = ''\n\n for (let i = 0; i < relPaths.length; i += ESLINT_BATCH) {\n const batch = relPaths.slice(i, i + ESLINT_BATCH)\n const args = [\n ...batch,\n '--max-warnings',\n '0',\n '--no-error-on-unmatched-pattern',\n '-f',\n 'json',\n ]\n const { exitCode, stdout, stderr } = await runNpmBinary(cwd, 'eslint', args)\n worstExit = Math.max(worstExit, exitCode ?? 0)\n stderrAcc += stderr\n const t = stdout.trim()\n if (t) {\n try {\n const rows = JSON.parse(t) as typeof merged\n if (Array.isArray(rows)) merged.push(...rows)\n } catch {\n /* batch may be non-json on crash */\n }\n }\n }\n\n return {\n exitCode: worstExit,\n stdout: JSON.stringify(merged),\n stderr: stderrAcc,\n }\n}\n\nexport async function runEslint(\n cwd: string,\n config: FrontGuardConfig,\n _stack: StackInfo,\n pr: PrContext | null,\n): Promise<CheckResult> {\n const t0 = performance.now()\n if (!config.checks.eslint.enabled) {\n return {\n checkId: 'eslint',\n findings: [],\n durationMs: 0,\n skipped: 'disabled in config',\n }\n }\n\n const configured = await hasEslintConfig(cwd)\n const dep = await hasEslintDependency(cwd)\n if (!configured && !dep) {\n return {\n checkId: 'eslint',\n findings: [],\n durationMs: Math.round(performance.now() - t0),\n skipped: 'ESLint not installed or configured',\n }\n }\n\n const glob = config.checks.eslint.glob ?? '**/*.{js,cjs,mjs,jsx,ts,tsx}'\n const prPaths = filterPrFilesForEslint(pr)\n let exitCode: number\n let stdout: string\n let stderr: string\n\n if (prPaths !== null) {\n if (prPaths.length === 0) {\n return {\n checkId: 'eslint',\n findings: [],\n durationMs: Math.round(performance.now() - t0),\n skipped: 'no lintable files in PR diff',\n }\n }\n const existing = await existingRepoPaths(cwd, prPaths)\n if (existing.length === 0) {\n return {\n checkId: 'eslint',\n findings: [],\n durationMs: Math.round(performance.now() - t0),\n skipped: hasPrFileList(pr)\n ? 'no lintable files in PR diff (added/modified only)'\n : 'no files',\n }\n }\n ;({ exitCode, stdout, stderr } = await runEslintOnPaths(cwd, existing))\n } else {\n ;({ exitCode, stdout, stderr } = await runNpmBinary(cwd, 'eslint', [\n glob,\n '--max-warnings',\n '0',\n '--no-error-on-unmatched-pattern',\n '-f',\n 'json',\n ]))\n }\n\n const errText = meaningfulStderr(stderr)\n const findings: Finding[] = []\n\n if (exitCode === 0) {\n if (errText) {\n findings.push({\n id: 'eslint-stderr',\n severity: 'warn',\n message: 'ESLint wrote to stderr',\n detail: truncate(errText, 4000),\n })\n }\n return {\n checkId: 'eslint',\n findings,\n durationMs: Math.round(performance.now() - t0),\n }\n }\n\n try {\n const rows = JSON.parse(stdout) as Array<{\n filePath: string\n messages: Array<{ ruleId: string | null; message: string; line?: number }>\n }>\n for (const row of rows) {\n const relFile = toRepoRelativePath(cwd, row.filePath)\n for (const m of row.messages) {\n findings.push({\n id: `eslint-${m.ruleId ?? 'unknown'}`,\n severity: 'warn',\n message: m.message,\n file: relFile,\n detail: m.line ? `line ${m.line}` : undefined,\n })\n }\n }\n if (findings.length === 0) {\n findings.push({\n id: 'eslint-failed',\n severity: 'warn',\n message: 'ESLint exited with a non-zero status',\n detail: truncate(\n [stdout, errText].filter(Boolean).join('\\n') || `exit ${exitCode}`,\n 4000,\n ),\n })\n }\n } catch {\n findings.push({\n id: 'eslint-failed',\n severity: 'warn',\n message: 'ESLint exited with errors',\n detail: truncate(\n [stdout, errText].filter(Boolean).join('\\n') || `exit ${exitCode}`,\n 4000,\n ),\n })\n }\n\n return {\n checkId: 'eslint',\n findings,\n durationMs: Math.round(performance.now() - t0),\n }\n}\n\nfunction truncate(s: string, max: number): string {\n if (s.length <= max) return s\n return s.slice(0, max) + '…'\n}\n","import type { CheckResult, Finding, PrContext } from '../types.js'\nimport type { FrontGuardConfig } from '../config/schema.js'\nimport {\n existingRepoPaths,\n filterPrFilesForPrettier,\n hasPrFileList,\n} from '../lib/pr-scope.js'\nimport { runNpmBinary } from '../runner/exec-tools.js'\n\nconst PRETTIER_BATCH = 100\n\nasync function runPrettierOnPaths(\n cwd: string,\n relPaths: string[],\n): Promise<{ exitCode: number; stdout: string; stderr: string }> {\n let worstExit = 0\n let stdoutAcc = ''\n let stderrAcc = ''\n for (let i = 0; i < relPaths.length; i += PRETTIER_BATCH) {\n const batch = relPaths.slice(i, i + PRETTIER_BATCH)\n const r = await runNpmBinary(cwd, 'prettier', [\n '--check',\n '--ignore-unknown',\n ...batch,\n ])\n worstExit = Math.max(worstExit, r.exitCode ?? 0)\n stdoutAcc += r.stdout\n stderrAcc += r.stderr\n }\n return { exitCode: worstExit, stdout: stdoutAcc, stderr: stderrAcc }\n}\n\nexport async function runPrettier(\n cwd: string,\n config: FrontGuardConfig,\n pr: PrContext | null,\n): Promise<CheckResult> {\n const t0 = performance.now()\n if (!config.checks.prettier.enabled) {\n return {\n checkId: 'prettier',\n findings: [],\n durationMs: 0,\n skipped: 'disabled in config',\n }\n }\n\n const glob =\n config.checks.prettier.glob ??\n '**/*.{js,cjs,mjs,jsx,ts,tsx,json,md,css,scss,yml,yaml}'\n\n let exitCode: number\n let stdout: string\n let stderr: string\n\n const prPaths = filterPrFilesForPrettier(pr)\n if (prPaths !== null) {\n if (prPaths.length === 0) {\n return {\n checkId: 'prettier',\n findings: [],\n durationMs: Math.round(performance.now() - t0),\n skipped: 'no formattable files in PR diff',\n }\n }\n const existing = await existingRepoPaths(cwd, prPaths)\n if (existing.length === 0) {\n return {\n checkId: 'prettier',\n findings: [],\n durationMs: Math.round(performance.now() - t0),\n skipped: hasPrFileList(pr)\n ? 'no formattable files in PR diff'\n : 'no files',\n }\n }\n ;({ exitCode, stdout, stderr } = await runPrettierOnPaths(cwd, existing))\n } else {\n ;({ exitCode, stdout, stderr } = await runNpmBinary(cwd, 'prettier', [\n '--check',\n glob,\n '--ignore-unknown',\n ]))\n }\n\n const findings: Finding[] = []\n\n if (exitCode === 127 || /command not found|not recognized|ENOENT/i.test(stderr)) {\n return {\n checkId: 'prettier',\n findings: [],\n durationMs: Math.round(performance.now() - t0),\n skipped: 'prettier binary not found (install prettier or use npx)',\n }\n }\n\n if (exitCode !== 0) {\n const blob = [stdout, stderr].filter(Boolean).join('\\n').trim()\n findings.push({\n id: 'prettier-check',\n severity: 'warn',\n message: 'Prettier reported formatting differences',\n detail: blob ? truncate(blob, 6000) : `exit ${exitCode}`,\n })\n }\n\n return {\n checkId: 'prettier',\n findings,\n durationMs: Math.round(performance.now() - t0),\n }\n}\n\nfunction truncate(s: string, max: number): string {\n if (s.length <= max) return s\n return s.slice(0, max) + '…'\n}\n","import path from 'node:path'\nimport type { CheckResult, Finding, PrContext, StackInfo } from '../types.js'\nimport type { FrontGuardConfig } from '../config/schema.js'\nimport { filterTscOutputToPrFiles, prPathSet } from '../lib/pr-scope.js'\nimport { pathExists, runNpmBinary } from '../runner/exec-tools.js'\n\nexport async function runTypeScript(\n cwd: string,\n config: FrontGuardConfig,\n stack: StackInfo,\n pr: PrContext | null,\n): Promise<CheckResult> {\n const t0 = performance.now()\n if (!config.checks.typescript.enabled) {\n return {\n checkId: 'typescript',\n findings: [],\n durationMs: 0,\n skipped: 'disabled in config',\n }\n }\n\n const hasTs = stack.hasTypeScript || (await pathExists(path.join(cwd, 'tsconfig.json')))\n if (!hasTs) {\n return {\n checkId: 'typescript',\n findings: [],\n durationMs: Math.round(performance.now() - t0),\n skipped: 'no TypeScript project detected',\n }\n }\n\n const extra = config.checks.typescript.tscArgs ?? []\n const hasProject = extra.some((a) => a === '-p' || a === '--project')\n const tsconfigPath = path.join(cwd, 'tsconfig.json')\n const args = [\n '--noEmit',\n ...(hasProject || !(await pathExists(tsconfigPath)) ? [] : ['-p', 'tsconfig.json']),\n ...extra,\n ]\n const { exitCode, stdout, stderr } = await runNpmBinary(cwd, 'tsc', args)\n\n const findings: Finding[] = []\n if (exitCode === 127 || /command not found|not recognized|ENOENT/i.test(stderr)) {\n return {\n checkId: 'typescript',\n findings: [],\n durationMs: Math.round(performance.now() - t0),\n skipped: 'typescript compiler not found',\n }\n }\n\n if (exitCode !== 0) {\n const out = [stdout, stderr].filter(Boolean).join('\\n').trim()\n const prS = prPathSet(pr)\n const scoped = prS && out ? filterTscOutputToPrFiles(out, cwd, prS) : out\n if (scoped) {\n findings.push({\n id: 'tsc',\n severity: 'warn',\n message: prS\n ? 'TypeScript: issues in PR-changed files (full project was typechecked)'\n : 'TypeScript compiler reported diagnostics',\n detail: scoped ? truncate(scoped, 8000) : `exit ${exitCode}`,\n })\n }\n }\n\n return {\n checkId: 'typescript',\n findings,\n durationMs: Math.round(performance.now() - t0),\n }\n}\n\nfunction truncate(s: string, max: number): string {\n if (s.length <= max) return s\n return s.slice(0, max) + '…'\n}\n","import fs from 'node:fs/promises'\nimport path from 'node:path'\nimport fg from 'fast-glob'\nimport type { CheckResult, Finding, PrContext } from '../types.js'\nimport type { FrontGuardConfig } from '../config/schema.js'\n\n/** Lightweight pattern scan — warn-only in Phase 1. Kept conservative to limit noise. */\nconst PATTERNS: Array<{ id: string; re: RegExp; message: string }> = [\n {\n id: 'aws-access-key',\n re: /AKIA[0-9A-Z]{16}/,\n message: 'Possible AWS access key id',\n },\n {\n id: 'github-pat',\n re: /\\bghp_[a-zA-Z0-9]{20,}\\b/,\n message: 'Possible GitHub personal access token',\n },\n {\n id: 'openai-sk',\n re: /\\bsk-[a-zA-Z0-9]{20,}\\b/,\n message: 'Possible OpenAI-style API secret',\n },\n {\n id: 'private-key-block',\n re: /-----BEGIN (?:RSA |EC |OPENSSH )?PRIVATE KEY-----/,\n message: 'Private key material in source',\n },\n]\n\nconst TEXT_EXT = new Set([\n '.ts',\n '.tsx',\n '.js',\n '.jsx',\n '.mjs',\n '.cjs',\n '.json',\n '.md',\n '.yml',\n '.yaml',\n '.env',\n '.txt',\n])\n\nexport async function runSecrets(\n cwd: string,\n config: FrontGuardConfig,\n pr: PrContext | null,\n): Promise<CheckResult> {\n const t0 = performance.now()\n if (!config.checks.secrets.enabled) {\n return {\n checkId: 'secrets',\n findings: [],\n durationMs: 0,\n skipped: 'disabled in config',\n }\n }\n\n const findings: Finding[] = []\n\n let globs: string[]\n if (pr?.files.length) {\n globs = pr.files.filter((f) => isProbablyTextFile(f))\n } else {\n globs = await fg(\n [\n '**/*.{ts,tsx,js,jsx,mjs,cjs,json,md,yml,yaml,env}',\n '!**/node_modules/**',\n '!**/dist/**',\n '!**/.next/**',\n '!**/build/**',\n '!**/coverage/**',\n ],\n { cwd, onlyFiles: true, dot: false },\n )\n }\n\n const maxFiles = 200\n let scanned = 0\n\n for (const rel of globs) {\n if (scanned++ > maxFiles) {\n findings.push({\n id: 'secrets-cap',\n severity: 'info',\n message: `Secret scan capped after ${maxFiles} files (run on PR for narrower scope)`,\n })\n break\n }\n\n const full = path.join(cwd, rel)\n let content: string\n try {\n content = await fs.readFile(full, 'utf8')\n } catch {\n continue\n }\n if (content.length > 500_000) continue\n\n for (const { id, re, message } of PATTERNS) {\n if (re.test(content)) {\n findings.push({\n id,\n severity: 'warn',\n message,\n file: rel,\n })\n }\n }\n }\n\n return {\n checkId: 'secrets',\n findings,\n durationMs: Math.round(performance.now() - t0),\n }\n}\n\nfunction isProbablyTextFile(rel: string): boolean {\n const ext = path.extname(rel).toLowerCase()\n return TEXT_EXT.has(ext)\n}\n","import type { CheckResult, Finding, PrContext } from '../types.js'\nimport type { FrontGuardConfig } from '../config/schema.js'\n\nexport function runPrHygiene(\n config: FrontGuardConfig,\n pr: PrContext | null,\n): CheckResult {\n const t0 = performance.now()\n if (!config.checks.prHygiene.enabled) {\n return {\n checkId: 'pr-hygiene',\n findings: [],\n durationMs: 0,\n skipped: 'disabled in config',\n }\n }\n\n if (!pr) {\n return {\n checkId: 'pr-hygiene',\n findings: [],\n durationMs: Math.round(performance.now() - t0),\n skipped:\n 'no PR context (run in a Bitbucket PR pipeline with BITBUCKET_PR_ID, or set FRONTGUARD_PR_BODY for description checks)',\n }\n }\n\n const findings: Finding[] = []\n const body = (pr.body ?? '').trim()\n const min = config.checks.prHygiene.minBodyLength\n\n if (body.length < min) {\n findings.push({\n id: 'pr-body-short',\n severity: 'warn',\n message: `PR description is shorter than ${min} characters`,\n detail: `Current length: ${body.length}`,\n })\n }\n\n const lower = body.toLowerCase()\n const hints = config.checks.prHygiene.sectionHints\n const missing = hints.filter((h) => !sectionMentioned(lower, h))\n\n if (missing.length > 0) {\n findings.push({\n id: 'pr-sections',\n severity: config.checks.prHygiene.requireSections ? 'warn' : 'info',\n message: `PR description may be missing suggested sections: ${missing.join(', ')}`,\n })\n }\n\n if (config.checks.prHygiene.requireAiDisclosureSection) {\n const hasAiHeader = /^#{1,6}\\s+.*\\bAI\\b/im.test(body)\n if (!hasAiHeader) {\n findings.push({\n id: 'pr-ai-section-missing',\n severity: 'warn',\n message:\n 'PR is missing an **AI disclosure** section (e.g. `## AI disclosure`). Mark whether this PR used AI tools.',\n })\n }\n }\n\n if (pr.aiDisclosureAmbiguous) {\n findings.push({\n id: 'pr-ai-disclosure-ambiguous',\n severity: config.checks.prHygiene.gateWhenAiDisclosureAmbiguous,\n message:\n 'AI disclosure checkboxes look ambiguous — please mark **Yes** or **No** clearly in the AI section.',\n })\n }\n\n if (pr.aiAssisted) {\n findings.push({\n id: 'pr-ai-flag',\n severity: 'warn',\n message:\n '**AI-assisted PR:** FrontGuard is applying stricter static checks and may escalate secrets / `any` deltas. Verify business logic, auth, and data handling manually.',\n })\n }\n\n if (pr.aiExplicitNo) {\n findings.push({\n id: 'pr-ai-explicit-no',\n severity: 'info',\n message:\n 'Author indicated **no AI** for code generation — standard review profile.',\n })\n }\n\n return {\n checkId: 'pr-hygiene',\n findings,\n durationMs: Math.round(performance.now() - t0),\n }\n}\n\nfunction sectionMentioned(body: string, hint: string): boolean {\n const h = hint.toLowerCase()\n if (h === 'what') {\n return /\\bwhat\\b/.test(body) || /##\\s*summary/.test(body) || /##\\s*context/.test(body)\n }\n if (h === 'why') {\n return /\\bwhy\\b/.test(body) || /motivation/.test(body) || /##\\s*rationale/.test(body)\n }\n if (h === 'test' || h === 'how to test') {\n return (\n /how to test/.test(body) ||\n /\\btesting\\b/.test(body) ||\n /##\\s*test/.test(body) ||\n /qa\\s*steps/.test(body)\n )\n }\n if (h === 'screenshot') {\n return /screenshot|screen recording|loom|recording/i.test(body)\n }\n return body.includes(h)\n}\n","import type { CheckResult, Finding, PrContext } from '../types.js'\nimport type { FrontGuardConfig, PrSizeTier } from '../config/schema.js'\n\nfunction expandMessage(template: string, lines: number, min: number): string {\n return template.replaceAll('${lines}', String(lines)).replaceAll('${min}', String(min))\n}\n\nfunction defaultTiers(cfg: FrontGuardConfig['checks']['prSize']): PrSizeTier[] {\n return [\n {\n minLines: cfg.softBlockLines,\n severity: 'warn',\n id: 'pr-size-large',\n message:\n 'PR is very large (${lines} lines changed; threshold ${min}). Consider splitting for review.',\n },\n {\n minLines: cfg.warnLines,\n severity: 'info',\n id: 'pr-size-medium',\n message: 'PR size is elevated (${lines} lines changed; threshold ${min}).',\n },\n ]\n}\n\nexport function runPrSize(config: FrontGuardConfig, pr: PrContext | null): CheckResult {\n const t0 = performance.now()\n if (!config.checks.prSize.enabled) {\n return {\n checkId: 'pr-size',\n findings: [],\n durationMs: 0,\n skipped: 'disabled in config',\n }\n }\n\n if (!pr) {\n return {\n checkId: 'pr-size',\n findings: [],\n durationMs: Math.round(performance.now() - t0),\n skipped:\n 'no PR context (run in a Bitbucket pull-request pipeline so BITBUCKET_PR_* and git diff are available)',\n }\n }\n\n const lines = pr.additions + pr.deletions\n const cfg = config.checks.prSize\n const rawTiers = cfg.tiers?.length ? cfg.tiers : defaultTiers(cfg)\n const sorted = [...rawTiers].sort((a, b) => b.minLines - a.minLines)\n\n const findings: Finding[] = []\n let i = 0\n for (const tier of sorted) {\n if (lines < tier.minLines) continue\n const id = tier.id ?? `pr-size-tier-${i}`\n i += 1\n const message = tier.message\n ? expandMessage(tier.message, lines, tier.minLines)\n : expandMessage(\n 'PR has ${lines} lines changed (≥ ${min}).',\n lines,\n tier.minLines,\n )\n findings.push({\n id,\n severity: tier.severity,\n message,\n detail: 'Total = additions + deletions from the PR diff.',\n })\n }\n\n return {\n checkId: 'pr-size',\n findings,\n durationMs: Math.round(performance.now() - t0),\n }\n}\n","import { exec } from 'tinyexec'\n\nexport async function gitOk(cwd: string): Promise<boolean> {\n try {\n const r = await exec('git', ['rev-parse', '--is-inside-work-tree'], {\n nodeOptions: { cwd },\n })\n return (r.stdout ?? '').trim() === 'true'\n } catch {\n return false\n }\n}\n\nexport async function gitMergeBase(cwd: string, baseRef: string): Promise<string | null> {\n try {\n const r = await exec('git', ['merge-base', 'HEAD', baseRef], {\n nodeOptions: { cwd },\n })\n const s = (r.stdout ?? '').trim()\n return s || null\n } catch {\n return null\n }\n}\n\n/** Unified diff patch (text) between base and HEAD for pathspecs. */\nexport async function gitDiffPatch(\n cwd: string,\n baseRef: string,\n pathspecs: string[],\n): Promise<string | null> {\n if (pathspecs.length === 0) return null\n try {\n const r = await exec(\n 'git',\n ['diff', `${baseRef}...HEAD`, '--unified=1', '--no-color', '--', ...pathspecs],\n { nodeOptions: { cwd } },\n )\n return r.stdout ?? ''\n } catch {\n return null\n }\n}\n\nexport async function gitShowFile(\n cwd: string,\n gitRef: string,\n filePath: string,\n): Promise<string | null> {\n try {\n const r = await exec('git', ['show', `${gitRef}:${filePath}`], {\n nodeOptions: { cwd },\n })\n return r.stdout ?? ''\n } catch {\n return null\n }\n}\n\n/** Unified diff for review / LLM context. */\nexport async function gitDiffForReview(\n cwd: string,\n baseRef: string,\n maxChars: number,\n): Promise<string> {\n try {\n const r = await exec(\n 'git',\n ['diff', `${baseRef}...HEAD`, '--unified=2', '--no-color'],\n {\n nodeOptions: { cwd },\n },\n )\n let s = r.stdout ?? ''\n if (s.length > maxChars) {\n s = s.slice(0, maxChars) + '\\n…(truncated)\\n'\n }\n return s\n } catch {\n return ''\n }\n}\n\nexport async function resolveDiffBaseRef(cwd: string, fallback: string): Promise<string> {\n const bb = process.env.BITBUCKET_PR_DESTINATION_BRANCH?.trim()\n if (bb) {\n const origin = `origin/${bb}`\n try {\n await exec('git', ['rev-parse', '--verify', origin], { nodeOptions: { cwd } })\n return origin\n } catch {\n try {\n await exec('git', ['rev-parse', '--verify', bb], { nodeOptions: { cwd } })\n return bb\n } catch {\n /* fall through to fallback */\n }\n }\n }\n try {\n const cand = fallback.includes('/') ? fallback : `origin/${fallback}`\n await exec('git', ['rev-parse', '--verify', cand], { nodeOptions: { cwd } })\n return cand\n } catch {\n try {\n await exec('git', ['rev-parse', '--verify', fallback], { nodeOptions: { cwd } })\n return fallback\n } catch {\n return fallback\n }\n }\n}\n","import type { CheckResult, Finding, StackInfo } from '../types.js'\nimport type { CheckGate, FrontGuardConfig } from '../config/schema.js'\nimport { gitDiffPatch, gitOk, resolveDiffBaseRef } from '../runner/git.js'\n\nfunction gateSeverity(g: CheckGate): Finding['severity'] {\n return g === 'block' ? 'block' : g === 'info' ? 'info' : 'warn'\n}\n\n/** Approximate count of *new* `any` introduced on `+` diff lines. */\nexport function countAddedAnyInPatch(patch: string): number {\n let n = 0\n for (const raw of patch.split('\\n')) {\n if (!raw.startsWith('+') || raw.startsWith('+++')) continue\n const line = raw.slice(1)\n if (/^\\s*\\/(\\/|\\*)/.test(line)) continue\n const patterns = [\n /:\\s*any\\b/g,\n /\\bas\\s+any\\b/g,\n /<\\s*any\\s*>/g,\n /\\bReadonlyArray\\s*<\\s*any\\s*>/g,\n /\\bArray\\s*<\\s*any\\s*>/g,\n /\\bRecord\\s*<\\s*[^,]+,\\s*any\\s*>/g,\n ]\n for (const p of patterns) {\n const m = line.match(p)\n if (m) n += m.length\n }\n }\n return n\n}\n\nexport async function runTsAnyDelta(\n cwd: string,\n config: FrontGuardConfig,\n stack: StackInfo,\n): Promise<CheckResult> {\n const t0 = performance.now()\n const cfg = config.checks.tsAnyDelta\n if (!cfg.enabled || !stack.hasTypeScript) {\n return {\n checkId: 'ts-any-delta',\n findings: [],\n durationMs: 0,\n skipped: !cfg.enabled ? 'disabled in config' : 'no TypeScript',\n }\n }\n\n if (!(await gitOk(cwd))) {\n return {\n checkId: 'ts-any-delta',\n findings: [],\n durationMs: Math.round(performance.now() - t0),\n skipped: 'not a git repository',\n }\n }\n\n const base = await resolveDiffBaseRef(cwd, cfg.baseRef)\n const patch = (await gitDiffPatch(cwd, base, ['*.ts', '*.tsx', '*.mts', '*.cts'])) ?? ''\n\n if (!patch.trim()) {\n return {\n checkId: 'ts-any-delta',\n findings: [],\n durationMs: Math.round(performance.now() - t0),\n skipped: 'no diff vs base (fetch depth or base ref?)',\n }\n }\n\n const added = countAddedAnyInPatch(patch)\n const findings: Finding[] = []\n\n if (added === 0) {\n return {\n checkId: 'ts-any-delta',\n findings,\n durationMs: Math.round(performance.now() - t0),\n }\n }\n\n const overBudget = cfg.maxAdded > 0 && added > cfg.maxAdded\n const shouldGate = cfg.maxAdded === 0 ? added > 0 : overBudget\n\n const severity: Finding['severity'] = shouldGate ? gateSeverity(cfg.gate) : 'info'\n\n findings.push({\n id: 'ts-any-added',\n severity,\n message: shouldGate\n ? cfg.maxAdded > 0\n ? `Added ~${added} new \\`any\\` usages (budget ${cfg.maxAdded})`\n : `Added ~${added} new \\`any\\` usages in the PR diff`\n : `Added ~${added} new \\`any\\` usages (within budget ${cfg.maxAdded})`,\n detail: `merge-base: ${base}`,\n })\n\n return {\n checkId: 'ts-any-delta',\n findings,\n durationMs: Math.round(performance.now() - t0),\n }\n}\n","import path from 'node:path'\nimport type { CheckResult, Finding, PrContext, StackInfo } from '../types.js'\nimport type { CheckGate, FrontGuardConfig } from '../config/schema.js'\nimport { existingRepoPaths, filterPrFilesForMadge } from '../lib/pr-scope.js'\nimport { pathExists, runNpx } from '../runner/exec-tools.js'\n\nfunction gateSeverity(g: CheckGate): Finding['severity'] {\n return g === 'block' ? 'block' : g === 'info' ? 'info' : 'warn'\n}\n\nexport async function runCycles(\n cwd: string,\n config: FrontGuardConfig,\n stack: StackInfo,\n pr: PrContext | null,\n): Promise<CheckResult> {\n const t0 = performance.now()\n const cfg = config.checks.cycles\n if (!cfg.enabled || !stack.hasTypeScript) {\n return {\n checkId: 'cycles',\n findings: [],\n durationMs: 0,\n skipped: !cfg.enabled ? 'disabled in config' : 'no TypeScript',\n }\n }\n\n let entry = cfg.entries[0] ?? 'src'\n for (const e of cfg.entries) {\n if (await pathExists(path.join(cwd, e))) {\n entry = e\n break\n }\n }\n if (!(await pathExists(path.join(cwd, entry)))) {\n return {\n checkId: 'cycles',\n findings: [],\n durationMs: Math.round(performance.now() - t0),\n skipped: `entry path not found (${entry})`,\n }\n }\n\n const prMadge = filterPrFilesForMadge(pr)\n const prExisting = prMadge?.length ? await existingRepoPaths(cwd, prMadge) : []\n const roots =\n prExisting.length > 0 ? prExisting : [entry]\n\n const args = [\n '-y',\n 'madge@6',\n ...roots,\n '--extensions',\n 'ts,tsx,js,jsx',\n '--circular',\n ...cfg.extraArgs,\n ]\n\n const { exitCode, stdout, stderr } = await runNpx(cwd, args)\n const out = [stdout, stderr].filter(Boolean).join('\\n').trim()\n\n if (exitCode === 127 || /command not found|not recognized|ENOENT/i.test(stderr)) {\n return {\n checkId: 'cycles',\n findings: [],\n durationMs: Math.round(performance.now() - t0),\n skipped: 'npx/madge not available',\n }\n }\n\n const findings: Finding[] = []\n const cyclic = exitCode !== 0 && /circular|Circular|\\(circular\\)/i.test(out)\n\n if (cyclic) {\n findings.push({\n id: 'import-cycle',\n severity: gateSeverity(cfg.gate),\n message:\n prExisting.length > 0\n ? 'Circular dependencies detected (madge, scoped to PR files)'\n : 'Circular dependencies detected (madge)',\n detail: truncate(out || `exit ${exitCode}`, 12_000),\n })\n } else if (exitCode !== 0) {\n findings.push({\n id: 'madge-error',\n severity: 'info',\n message: 'madge exited non-zero — verify entry/extensions or install deps locally',\n detail: truncate(out || `exit ${exitCode}`, 8000),\n })\n }\n\n return {\n checkId: 'cycles',\n findings,\n durationMs: Math.round(performance.now() - t0),\n }\n}\n\nfunction truncate(s: string, max: number): string {\n if (s.length <= max) return s\n return s.slice(0, max) + '…'\n}\n","import type { CheckResult, Finding, PrContext, StackInfo } from '../types.js'\nimport type { CheckGate, FrontGuardConfig } from '../config/schema.js'\nimport { runNpx } from '../runner/exec-tools.js'\n\nfunction gateSeverity(g: CheckGate): Finding['severity'] {\n return g === 'block' ? 'block' : g === 'info' ? 'info' : 'warn'\n}\n\nexport async function runDeadCode(\n cwd: string,\n config: FrontGuardConfig,\n stack: StackInfo,\n pr: PrContext | null,\n): Promise<CheckResult> {\n const t0 = performance.now()\n const cfg = config.checks.deadCode\n if (!cfg.enabled || !stack.hasTypeScript) {\n return {\n checkId: 'dead-code',\n findings: [],\n durationMs: 0,\n skipped: !cfg.enabled ? 'disabled in config' : 'no TypeScript',\n }\n }\n\n const args = ['-y', 'ts-prune', ...cfg.extraArgs]\n const { exitCode, stdout, stderr } = await runNpx(cwd, args)\n\n if (exitCode === 127 || /command not found|not recognized|ENOENT/i.test(stderr)) {\n return {\n checkId: 'dead-code',\n findings: [],\n durationMs: Math.round(performance.now() - t0),\n skipped: 'npx/ts-prune not available',\n }\n }\n\n const raw = (stdout || '').trim()\n const lines = raw\n .split('\\n')\n .map((l) => l.trim())\n .filter((l) => l && /^[\\w./\\\\~-]+[^\\s]*\\s*-\\s*.+/.test(l))\n\n if (lines.length === 0) {\n return {\n checkId: 'dead-code',\n findings: [],\n durationMs: Math.round(performance.now() - t0),\n }\n }\n\n const prFiles = pr?.files?.length\n ? new Set(pr.files.map((f) => f.replace(/\\\\/g, '/')))\n : null\n\n const relevant = prFiles\n ? lines.filter((l) => {\n const file = l.split(/\\s*-\\s*/)[0]?.trim()\n if (!file) return false\n return [...prFiles].some((p) => p === file || p.endsWith(file))\n })\n : lines\n\n const report = (relevant.length ? relevant : lines)\n .slice(0, cfg.maxReportLines)\n .join('\\n')\n\n const findings: Finding[] = [\n {\n id: 'ts-prune',\n severity: gateSeverity(cfg.gate),\n message: prFiles\n ? `Potentially unused exports (${relevant.length} on touched files; ${lines.length} total)`\n : `Potentially unused exports reported by ts-prune (${lines.length})`,\n detail: report,\n },\n ]\n\n return {\n checkId: 'dead-code',\n findings,\n durationMs: Math.round(performance.now() - t0),\n }\n}\n","import fs from 'node:fs/promises'\nimport path from 'node:path'\nimport fg from 'fast-glob'\nimport { exec } from 'tinyexec'\nimport type { CheckResult, Finding, StackInfo } from '../types.js'\nimport type { CheckGate, FrontGuardConfig } from '../config/schema.js'\nimport { resolveDiffBaseRef } from '../runner/git.js'\n\nfunction gateSeverity(g: CheckGate): Finding['severity'] {\n return g === 'block' ? 'block' : g === 'info' ? 'info' : 'warn'\n}\n\ninterface BaselineFile {\n totalBytes: number\n generatedAt?: string\n}\n\nasync function sumGlobBytes(cwd: string, patterns: string[]): Promise<number> {\n let total = 0\n for (const pattern of patterns) {\n const files = await fg(pattern, {\n cwd,\n onlyFiles: true,\n dot: false,\n ignore: ['**/node_modules/**'],\n })\n for (const rel of files) {\n try {\n const st = await fs.stat(path.join(cwd, rel))\n total += st.size\n } catch {\n /* skip */\n }\n }\n }\n return total\n}\n\nasync function readBaseline(\n cwd: string,\n relPath: string,\n baseRef: string | null,\n): Promise<BaselineFile | null> {\n const disk = path.join(cwd, relPath)\n try {\n const raw = await fs.readFile(disk, 'utf8')\n return JSON.parse(raw) as BaselineFile\n } catch {\n /* no local baseline */\n }\n\n if (!baseRef) return null\n try {\n const r = await exec('git', ['show', `${baseRef}:${relPath}`], {\n nodeOptions: { cwd },\n })\n if ((r.exitCode ?? 0) !== 0) return null\n return JSON.parse((r.stdout ?? '').trim()) as BaselineFile\n } catch {\n return null\n }\n}\n\nasync function gitOkQuick(cwd: string): Promise<boolean> {\n try {\n const r = await exec('git', ['rev-parse', '--is-inside-work-tree'], {\n nodeOptions: { cwd },\n })\n return (r.stdout ?? '').trim() === 'true'\n } catch {\n return false\n }\n}\n\nfunction tokenizeCommand(cmd: string): string[] {\n return cmd\n .trim()\n .split(/\\s+/)\n .map((t) => t.trim())\n .filter(Boolean)\n}\n\n/**\n * If the command is a plain `npm|pnpm run <script>` or `yarn run <script>` / `yarn build`,\n * returns that script name so we can skip a doomed run when `package.json` has no such script.\n * Other commands (e.g. `make prod`, `npx vite build`) return null — we always execute those.\n */\nfunction npmScriptFromBuildCommand(cmd: string): string | null {\n const t = cmd.trim()\n if (/^yarn\\s+build\\b/i.test(t)) return 'build'\n const np = /^(?:npm|pnpm)\\s+run\\s+(\\S+)/i.exec(t)\n if (np?.[1]) return np[1]\n const yr = /^yarn\\s+run\\s+(\\S+)/i.exec(t)\n if (yr?.[1]) return yr[1]\n return null\n}\n\nasync function bundleBuildPrecheck(\n cwd: string,\n buildCommand: string,\n): Promise<{ run: true } | { run: false; message: string; detail: string }> {\n const script = npmScriptFromBuildCommand(buildCommand)\n if (!script) return { run: true }\n\n let scripts: Record<string, string> | undefined\n try {\n const raw = await fs.readFile(path.join(cwd, 'package.json'), 'utf8')\n const pkg = JSON.parse(raw) as { scripts?: Record<string, string> }\n scripts = pkg.scripts\n } catch {\n return {\n run: false,\n message: 'Skipped bundle build — no readable package.json',\n detail:\n 'Set checks.bundle.buildCommand to your real build (e.g. `vite build`), set checks.bundle.runBuild to false, or add a package.json with the matching script.',\n }\n }\n\n if (!scripts?.[script]) {\n return {\n run: false,\n message: `Skipped bundle build — no scripts.${script} in package.json`,\n detail:\n 'The bundle check runs a production build, then sums file sizes under checks.bundle.measureGlobs (dist/, build/static/, .next/static/, etc.). Libraries and non-web repos often have no `build` script — set checks.bundle.runBuild to false and optionally tune measureGlobs, or set checks.bundle.buildCommand to whatever produces your artifacts (e.g. `pnpm run compile`, `npx vite build`).',\n }\n }\n\n return { run: true }\n}\n\nexport async function runBundle(\n cwd: string,\n config: FrontGuardConfig,\n stack: StackInfo,\n): Promise<CheckResult> {\n const t0 = performance.now()\n const cfg = config.checks.bundle\n\n if (!cfg.enabled) {\n return {\n checkId: 'bundle',\n findings: [],\n durationMs: 0,\n skipped: 'disabled in config',\n }\n }\n\n if (stack.hasReactNative && !stack.hasNext) {\n return {\n checkId: 'bundle',\n findings: [],\n durationMs: Math.round(performance.now() - t0),\n skipped: 'skipped for React Native (configure web artifacts if needed)',\n }\n }\n\n const preFindings: Finding[] = []\n\n if (cfg.runBuild) {\n const parts = tokenizeCommand(cfg.buildCommand)\n if (parts.length === 0) {\n return {\n checkId: 'bundle',\n findings: [\n {\n id: 'bundle-cmd',\n severity: 'warn',\n message: '`checks.bundle.buildCommand` is empty',\n },\n ],\n durationMs: Math.round(performance.now() - t0),\n }\n }\n\n const pre = await bundleBuildPrecheck(cwd, cfg.buildCommand)\n if (!pre.run) {\n preFindings.push({\n id: 'bundle-build-skipped',\n severity: 'info',\n message: pre.message,\n detail: pre.detail,\n })\n } else {\n const [bin, ...args] = parts\n const res = await exec(bin, args, { nodeOptions: { cwd } })\n if ((res.exitCode ?? 0) !== 0) {\n return {\n checkId: 'bundle',\n findings: [\n {\n id: 'bundle-build',\n severity: gateSeverity(cfg.gate),\n message: 'Build command failed — cannot measure bundle',\n detail: [res.stdout, res.stderr].filter(Boolean).join('\\n').slice(0, 8000),\n },\n ],\n durationMs: Math.round(performance.now() - t0),\n }\n }\n }\n }\n\n const total = await sumGlobBytes(cwd, cfg.measureGlobs)\n if (total === 0) {\n return {\n checkId: 'bundle',\n findings: [\n ...preFindings,\n {\n id: 'bundle-empty',\n severity: 'info',\n message:\n 'No bundle artifacts matched `measureGlobs` — configure paths or run a web build',\n },\n ],\n durationMs: Math.round(performance.now() - t0),\n }\n }\n\n const baseRef = (await gitOkQuick(cwd))\n ? await resolveDiffBaseRef(cwd, cfg.baselineRef)\n : null\n const baseline = await readBaseline(cwd, cfg.baselinePath, baseRef)\n\n const findings: Finding[] = [...preFindings]\n const infoLines = [\n `Measured ${total} bytes (${(total / 1024 / 1024).toFixed(2)} MiB)`,\n baseline\n ? `Baseline from \\`${cfg.baselinePath}\\`: ${baseline.totalBytes} bytes`\n : `No baseline at \\`${cfg.baselinePath}\\` (commit a baseline JSON to compare)`,\n ].join('\\n')\n\n if (cfg.maxTotalBytes != null && total > cfg.maxTotalBytes) {\n findings.push({\n id: 'bundle-max-total',\n severity: gateSeverity(cfg.gate),\n message: `Bundle size ${total} bytes exceeds maxTotalBytes (${cfg.maxTotalBytes})`,\n detail: infoLines,\n })\n }\n\n if (baseline && cfg.maxDeltaBytes != null) {\n const delta = total - baseline.totalBytes\n if (delta > cfg.maxDeltaBytes) {\n findings.push({\n id: 'bundle-delta',\n severity: gateSeverity(cfg.gate),\n message: `Bundle grew by ${delta} bytes vs baseline (limit ${cfg.maxDeltaBytes})`,\n detail: infoLines,\n })\n }\n }\n\n if (\n findings.length === 0 &&\n !baseline &&\n (cfg.maxDeltaBytes != null || cfg.maxTotalBytes != null)\n ) {\n findings.push({\n id: 'bundle-baseline-missing',\n severity: 'info',\n message:\n 'Baseline file missing — delta/total gates need a committed `.frontguard/bundle-baseline.json`',\n detail: infoLines,\n })\n }\n\n if (findings.length === 0) {\n findings.push({\n id: 'bundle-ok',\n severity: 'info',\n message: 'Bundle measurement complete',\n detail: infoLines,\n })\n }\n\n return {\n checkId: 'bundle',\n findings,\n durationMs: Math.round(performance.now() - t0),\n }\n}\n","import fs from 'node:fs/promises'\nimport path from 'node:path'\nimport fg from 'fast-glob'\nimport type { CheckResult, Finding, PrContext, StackInfo } from '../types.js'\nimport type { CheckGate, FrontGuardConfig } from '../config/schema.js'\n\nfunction gateSeverity(g: CheckGate): Finding['severity'] {\n return g === 'block' ? 'block' : g === 'info' ? 'info' : 'warn'\n}\n\n/** Static Core Web Vitals–oriented hints for JSX/TSX (LCP, main-thread hygiene). */\nexport async function runCoreWebVitals(\n cwd: string,\n config: FrontGuardConfig,\n stack: StackInfo,\n pr: PrContext | null,\n): Promise<CheckResult> {\n const t0 = performance.now()\n const cfg = config.checks.coreWebVitals\n\n if (!cfg.enabled) {\n return {\n checkId: 'core-web-vitals',\n findings: [],\n durationMs: 0,\n skipped: 'disabled in config',\n }\n }\n\n if (stack.hasReactNative && !stack.hasNext) {\n return {\n checkId: 'core-web-vitals',\n findings: [],\n durationMs: Math.round(performance.now() - t0),\n skipped: 'skipped for React Native',\n }\n }\n\n const prSet = pr?.files?.length\n ? new Set(pr.files.map((f) => f.replace(/\\\\/g, '/')))\n : null\n\n const files = await fg(cfg.scanGlobs, {\n cwd,\n onlyFiles: true,\n ignore: ['**/node_modules/**', '**/*.test.*', '**/*.spec.*'],\n })\n\n const toScan = prSet\n ? files.filter((f) => [...prSet].some((p) => p === f || p.endsWith(f)))\n : files\n\n const findings: Finding[] = []\n const sev = gateSeverity(cfg.gate)\n\n for (const rel of toScan.slice(0, 400)) {\n const full = path.join(cwd, rel)\n let text: string\n try {\n text = await fs.readFile(full, 'utf8')\n } catch {\n continue\n }\n if (text.length > cfg.maxFileBytes) continue\n\n if (\n stack.hasNext &&\n /<img\\b/i.test(text) &&\n !/from\\s+['\"]next\\/image['\"]/.test(text)\n ) {\n findings.push({\n id: 'core-web-vitals-img-tag',\n severity: sev,\n message: 'Raw `<img>` — prefer `next/image` for LCP-friendly delivery',\n file: rel,\n })\n }\n\n if (/dangerouslySetInnerHTML/i.test(text)) {\n findings.push({\n id: 'core-web-vitals-dsh',\n severity: 'warn',\n message:\n '`dangerouslySetInnerHTML` can add main-thread work — validate necessity',\n file: rel,\n })\n }\n }\n\n return {\n checkId: 'core-web-vitals',\n findings: dedupeFindings(findings).slice(0, 40),\n durationMs: Math.round(performance.now() - t0),\n }\n}\n\nfunction dedupeFindings(f: Finding[]): Finding[] {\n const seen = new Set<string>()\n const out: Finding[] = []\n for (const x of f) {\n const k = `${x.id}:${x.file ?? ''}`\n if (seen.has(k)) continue\n seen.add(k)\n out.push(x)\n }\n return out\n}\n","import fs from 'node:fs/promises'\nimport path from 'node:path'\nimport fg from 'fast-glob'\nimport type { CheckResult, Finding } from '../types.js'\nimport type { FrontGuardConfig } from '../config/schema.js'\n\nconst DEFAULT_GLOB = '**/*.{ts,tsx,js,jsx,mjs,cjs}'\n\nexport async function runCustomRules(\n cwd: string,\n config: FrontGuardConfig,\n restrictToFiles: string[] | null,\n): Promise<CheckResult> {\n const t0 = performance.now()\n const rules = config.rules\n if (!rules || Object.keys(rules).length === 0) {\n return {\n checkId: 'custom-rules',\n findings: [],\n durationMs: 0,\n skipped: 'no rules configured',\n }\n }\n\n const active = Object.entries(rules).filter(([, v]) => v !== 'off') as [\n string,\n Exclude<(typeof rules)[string], 'off'>,\n ][]\n\n if (active.length === 0) {\n return {\n checkId: 'custom-rules',\n findings: [],\n durationMs: 0,\n skipped: 'all rules off',\n }\n }\n\n let files: string[]\n if (restrictToFiles?.length) {\n files = restrictToFiles.filter((f) => /\\.(tsx?|jsx?|mjs|cjs)$/i.test(f))\n } else {\n files = await fg(DEFAULT_GLOB, {\n cwd,\n ignore: ['**/node_modules/**', '**/dist/**', '**/.next/**', '**/build/**'],\n onlyFiles: true,\n })\n }\n\n const findings: Finding[] = []\n const maxFiles = 300\n let n = 0\n\n for (const rel of files) {\n if (n++ > maxFiles) {\n findings.push({\n id: 'custom-rules-cap',\n severity: 'info',\n message: `Custom rules scan capped after ${maxFiles} files`,\n })\n break\n }\n const full = path.join(cwd, rel)\n let content: string\n try {\n content = await fs.readFile(full, 'utf8')\n } catch {\n continue\n }\n if (content.length > 600_000) continue\n\n const ctx = { path: rel, content }\n for (const [id, def] of active) {\n if (typeof def.check !== 'function') continue\n try {\n if (def.check(ctx)) {\n findings.push({\n id: `rule:${id}`,\n severity: def.severity,\n message: def.message,\n file: rel,\n })\n }\n } catch (e) {\n findings.push({\n id: `rule-error:${id}`,\n severity: 'warn',\n message: `Rule \\`${id}\\` threw`,\n detail: e instanceof Error ? e.message : String(e),\n file: rel,\n })\n }\n }\n }\n\n return {\n checkId: 'custom-rules',\n findings,\n durationMs: Math.round(performance.now() - t0),\n }\n}\n","/**\n * AST scan (TypeScript): expression statements that call a local function whose body\n * contains a loop with a large numeric bound (e.g. 50_000). Typical AI slop / mistaken\n * \"benchmark\" code left in render paths.\n *\n * Not profiling: static heuristic only. Misses `while (true)`, `for (i < n)` when n is\n * dynamic, and nested call chains.\n */\nimport * as ts from 'typescript'\n\n/** Numeric literal threshold inside a loop subtree (underscores stripped). */\nconst BIG_LITERAL_MIN = 9_000\n\nexport function scanDiscardedExpensiveCalls(\n regionText: string,\n fileNameHint: string,\n regionStartLine: number,\n): number[] {\n const kind = /\\.(tsx|jsx)$/i.test(fileNameHint) ? ts.ScriptKind.TSX : ts.ScriptKind.TS\n const sf = ts.createSourceFile(\n fileNameHint,\n regionText,\n ts.ScriptTarget.Latest,\n true,\n kind,\n )\n\n const parseDiags = (sf as unknown as { parseDiagnostics?: ts.Diagnostic[] }).parseDiagnostics\n if (parseDiags && parseDiags.length > 12) {\n return []\n }\n\n const stack: Map<string, boolean>[] = [new Map()]\n const lines: number[] = []\n\n function current(): Map<string, boolean> {\n return stack[stack.length - 1]!\n }\n\n function lookupExpensive(name: string): boolean {\n for (let i = stack.length - 1; i >= 0; i--) {\n const v = stack[i]!.get(name)\n if (v !== undefined) return v\n }\n return false\n }\n\n function lineOf(node: ts.Node): number {\n const lc = ts.getLineAndCharacterOfPosition(sf, node.getStart(sf, false))\n return regionStartLine + lc.line\n }\n\n type ConcreteFn =\n | ts.FunctionDeclaration\n | ts.FunctionExpression\n | ts.ArrowFunction\n | ts.MethodDeclaration\n\n function visitFunctionLike(fn: ConcreteFn): void {\n stack.push(new Map())\n for (const p of fn.parameters) {\n if (ts.isIdentifier(p.name)) current().set(p.name.text, false)\n }\n const body = fn.body\n if (!body) {\n stack.pop()\n return\n }\n if (ts.isBlock(body)) {\n for (const st of body.statements) visitStmt(st)\n } else if (ts.isExpression(body)) {\n visitStmt(ts.factory.createExpressionStatement(body))\n }\n stack.pop()\n }\n\n function visitBlock(block: ts.Block): void {\n stack.push(new Map())\n for (const st of block.statements) visitStmt(st)\n stack.pop()\n }\n\n function visitMaybeBlock(s: ts.Statement): void {\n if (ts.isBlock(s)) visitBlock(s)\n else visitStmt(s)\n }\n\n function visitStmt(st: ts.Statement): void {\n if (ts.isVariableStatement(st)) {\n for (const decl of st.declarationList.declarations) {\n if (!ts.isIdentifier(decl.name) || !decl.initializer) continue\n const name = decl.name.text\n const init = decl.initializer\n if (ts.isArrowFunction(init) || ts.isFunctionExpression(init)) {\n current().set(name, isBodyExpensive(init.body))\n visitFunctionLike(init)\n }\n }\n return\n }\n\n if (ts.isFunctionDeclaration(st) && st.name && st.body) {\n current().set(st.name.text, isBodyExpensive(st.body))\n visitFunctionLike(st)\n return\n }\n\n if (ts.isExpressionStatement(st)) {\n const ex = st.expression\n if (\n ts.isCallExpression(ex) &&\n !ex.questionDotToken &&\n ts.isIdentifier(ex.expression) &&\n lookupExpensive(ex.expression.text)\n ) {\n lines.push(lineOf(ex))\n }\n return\n }\n\n if (ts.isBlock(st)) {\n visitBlock(st)\n return\n }\n\n if (ts.isIfStatement(st)) {\n visitMaybeBlock(st.thenStatement)\n if (st.elseStatement) visitMaybeBlock(st.elseStatement)\n return\n }\n\n if (\n ts.isForStatement(st) ||\n ts.isForOfStatement(st) ||\n ts.isForInStatement(st) ||\n ts.isWhileStatement(st) ||\n ts.isDoStatement(st)\n ) {\n visitMaybeBlock(st.statement)\n return\n }\n\n if (ts.isTryStatement(st)) {\n visitBlock(st.tryBlock)\n if (st.catchClause?.block) visitBlock(st.catchClause.block)\n if (st.finallyBlock) visitBlock(st.finallyBlock)\n return\n }\n\n if (ts.isSwitchStatement(st)) {\n for (const clause of st.caseBlock.clauses) {\n for (const s of clause.statements) visitStmt(s)\n }\n return\n }\n\n if (ts.isClassDeclaration(st) && st.members) {\n for (const member of st.members) {\n if (ts.isMethodDeclaration(member) && member.body) {\n const nm = member.name\n if (ts.isIdentifier(nm)) {\n current().set(nm.text, isBodyExpensive(member.body))\n }\n visitFunctionLike(member)\n }\n }\n }\n }\n\n for (const st of sf.statements) {\n if (ts.isImportDeclaration(st) || ts.isImportEqualsDeclaration(st)) continue\n /** `export { x }` / `export * from` — no inline declaration to scan. */\n if (ts.isExportDeclaration(st)) continue\n if (ts.isExportAssignment(st)) {\n const ex = st.expression\n if (ts.isArrowFunction(ex) || ts.isFunctionExpression(ex)) {\n visitFunctionLike(ex)\n }\n continue\n }\n visitStmt(st)\n }\n\n return dedupeSorted(lines)\n}\n\nfunction dedupeSorted(nums: number[]): number[] {\n return [...new Set(nums)].sort((a, b) => a - b)\n}\n\nfunction isBodyExpensive(body: ts.ConciseBody): boolean {\n if (!body) return false\n if (ts.isBlock(body)) return blockHasExpensiveLoop(body)\n return nodeHasExpensiveLoop(body)\n}\n\nfunction blockHasExpensiveLoop(block: ts.Block): boolean {\n return nodeHasExpensiveLoop(block)\n}\n\nfunction nodeHasExpensiveLoop(node: ts.Node): boolean {\n let found = false\n const visit = (n: ts.Node): void => {\n if (found) return\n if (\n ts.isForStatement(n) ||\n ts.isForOfStatement(n) ||\n ts.isForInStatement(n) ||\n ts.isWhileStatement(n) ||\n ts.isDoStatement(n)\n ) {\n if (subtreeHasBigNumeric(n, BIG_LITERAL_MIN)) found = true\n return\n }\n ts.forEachChild(n, visit)\n }\n visit(node)\n return found\n}\n\nfunction subtreeHasBigNumeric(node: ts.Node, min: number): boolean {\n let found = false\n const visit = (n: ts.Node): void => {\n if (found) return\n if (ts.isNumericLiteral(n)) {\n const v = Number(n.text.replace(/_/g, ''))\n if (Number.isFinite(v) && v >= min) {\n found = true\n return\n }\n }\n ts.forEachChild(n, visit)\n }\n visit(node)\n return found\n}\n","/**\n * Client convention: wrap AI-generated code so `ai-assisted-strict` scans only that scope.\n *\n * Line comments (or one-line block comments):\n * - `// @frontguard-ai:start` … `// @frontguard-ai:end`\n * - `// @ai-written:start` … `// @ai-written:end`\n * - `// @frontguard-ai:file` in the first 40 non-empty lines → scan whole file\n * - Human-readable: `// written by AI: start` … `// written by AI: end`, or `// written by AI: file`\n */\n\nconst FILE_SCAN_HEAD_LINES = 40\n\n/** Inner text of a line or block comment. */\nfunction commentInner(line: string): string | null {\n const t = line.trim()\n const mLine = /^\\/\\/\\s*(.*)$/.exec(t)\n if (mLine) return mLine[1]?.trim() ?? ''\n const mBlock = /^\\/\\*\\s*(.*?)\\s*\\*\\/\\s*$/.exec(t)\n if (mBlock) return mBlock[1]?.trim() ?? ''\n return null\n}\n\nfunction lineMarkerKind(line: string): 'start' | 'end' | 'file' | null {\n const inner = commentInner(line)\n if (!inner) return null\n\n if (\n /@(?:frontguard-ai|ai-written)\\s*:\\s*file\\b/i.test(inner) ||\n /^written\\s+by\\s+ai\\s*:?\\s*file\\b/i.test(inner)\n )\n return 'file'\n if (\n /@(?:frontguard-ai|ai-written)\\s*:\\s*start\\b/i.test(inner) ||\n /^written\\s+by\\s+ai\\s*:?\\s*start\\b/i.test(inner)\n )\n return 'start'\n if (\n /@(?:frontguard-ai|ai-written)\\s*:\\s*end\\b/i.test(inner) ||\n /^written\\s+by\\s+ai\\s*:?\\s*end\\b/i.test(inner)\n )\n return 'end'\n return null\n}\n\nfunction isAiFileDirectiveLine(line: string): boolean {\n return lineMarkerKind(line) === 'file'\n}\n\nexport interface AiMarkedRegion {\n /** 1-based first line of region content. */\n startLine: number\n /** 1-based last line of region content (inclusive). */\n endLine: number\n text: string\n}\n\nexport interface AiRegionParseResult {\n regions: AiMarkedRegion[]\n parseWarnings: string[]\n}\n\nexport function parseAiMarkedRegions(source: string, fileHint: string): AiRegionParseResult {\n const lines = source.split(/\\r?\\n/)\n const parseWarnings: string[] = []\n const regions: AiMarkedRegion[] = []\n\n let headNonEmpty = 0\n for (let i = 0; i < lines.length && headNonEmpty < FILE_SCAN_HEAD_LINES; i++) {\n if (!lines[i]?.trim()) continue\n headNonEmpty++\n if (isAiFileDirectiveLine(lines[i] ?? '')) {\n const bodyLines = lines.filter((_, idx) => idx !== i)\n regions.push({\n startLine: 1,\n endLine: lines.length,\n text: bodyLines.join('\\n'),\n })\n return { regions, parseWarnings }\n }\n }\n\n let open = false\n let contentStart: number | null = null\n const buf: string[] = []\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i] ?? ''\n const kind = lineMarkerKind(line)\n\n if (kind === 'file') {\n parseWarnings.push(`${fileHint}:${i + 1}: @file directive ignored (only honored in first ${FILE_SCAN_HEAD_LINES} non-empty lines)`)\n if (open) buf.push(line)\n continue\n }\n\n if (kind === 'start') {\n if (open) {\n parseWarnings.push(`${fileHint}:${i + 1}: nested AI:start ignored (flatten your regions)`)\n buf.push(line)\n continue\n }\n open = true\n contentStart = i + 2\n buf.length = 0\n continue\n }\n\n if (kind === 'end') {\n if (!open) {\n parseWarnings.push(`${fileHint}:${i + 1}: stray AI:end`)\n continue\n }\n open = false\n if (contentStart !== null) {\n regions.push({\n startLine: contentStart,\n endLine: i,\n text: buf.join('\\n'),\n })\n }\n contentStart = null\n buf.length = 0\n continue\n }\n\n if (open) buf.push(line)\n }\n\n if (open && contentStart !== null) {\n parseWarnings.push(`${fileHint}: unclosed AI:start — treating region as ending at EOF`)\n regions.push({\n startLine: contentStart,\n endLine: lines.length,\n text: buf.join('\\n'),\n })\n }\n\n return { regions, parseWarnings }\n}\n\n/** 1-based file line numbers for each match of `re` in `regionText`. */\nexport function matchLineNumbersInRegion(\n regionText: string,\n regionStartLine: number,\n re: RegExp,\n): number[] {\n const flags = re.flags.includes('g') ? re.flags : `${re.flags}g`\n const g = new RegExp(re.source, flags)\n const out: number[] = []\n let m: RegExpExecArray | null\n const text = regionText\n while ((m = g.exec(text)) !== null) {\n const lineInRegion = text.slice(0, m.index).split('\\n').length\n out.push(regionStartLine + lineInRegion - 1)\n if (m.index === g.lastIndex) g.lastIndex++\n }\n return out\n}\n","import fs from 'node:fs/promises'\nimport path from 'node:path'\nimport type { CheckResult, Finding, PrContext } from '../types.js'\nimport type { CheckGate, FrontGuardConfig } from '../config/schema.js'\nimport type { AiRegionParseResult } from '../lib/ai-decorators.js'\nimport { scanDiscardedExpensiveCalls } from '../lib/ai-discarded-expensive-call.js'\nimport { matchLineNumbersInRegion, parseAiMarkedRegions } from '../lib/ai-decorators.js'\n\nfunction sev(gate: CheckGate): Finding['severity'] {\n return gate === 'block' ? 'block' : gate === 'info' ? 'info' : 'warn'\n}\n\nconst CODE_EXT = /\\.(tsx?|jsx?|mjs|cjs)$/i\n\ninterface Pattern {\n id: string\n re: RegExp\n message: string\n forceBlock?: boolean\n}\n\nconst PATTERNS: Pattern[] = [\n {\n id: 'ai-eval',\n re: /\\beval\\s*\\(/,\n message:\n '`eval()` — high risk; AI output often slips this in. Replace with safe parsing.',\n forceBlock: true,\n },\n {\n id: 'ai-new-function',\n re: /\\bnew\\s+Function\\s*\\(/,\n message: '`new Function()` is eval-like — verify necessity and input trust.',\n forceBlock: true,\n },\n {\n id: 'ai-dsh',\n re: /dangerouslySetInnerHTML\\s*=/,\n message: '`dangerouslySetInnerHTML` — XSS risk. Ensure trusted/sanitized HTML only.',\n },\n {\n id: 'ai-inner-html-assign',\n re: /\\.innerHTML\\s*=/,\n message: 'DOM `innerHTML` assignment — XSS risk; prefer textContent or sanitization.',\n },\n {\n id: 'ai-document-write',\n re: /\\bdocument\\.write\\s*\\(/,\n message: '`document.write` — brittle and unsafe in modern apps.',\n },\n {\n id: 'ai-ts-ignore',\n re: /@ts-ignore\\b/,\n message:\n '`@ts-ignore` hides errors (AI often uses instead of fixing). Prefer `@ts-expect-error` with reason.',\n },\n {\n id: 'ai-empty-catch',\n re: /catch\\s*(?:\\([^)]*\\))?\\s*\\{\\s*\\}/,\n message: 'Empty `catch` — errors swallowed; at least log or rethrow intentionally.',\n },\n {\n id: 'ai-http-url',\n re: /(['\"])http:\\/\\//,\n message: 'Plain `http://` URL — mixed content / MITM risk in browser code.',\n },\n {\n id: 'ai-token-storage',\n re: /(?:localStorage|sessionStorage)\\.(?:setItem|getItem)\\s*\\(\\s*['\"][^'\"]*token[^'\"]*['\"]/i,\n message: 'Token in web storage — confirm threat model (XSS exfiltration).',\n },\n {\n id: 'ai-child-process',\n re: /(?:from\\s+['\"]child_process['\"]|require\\s*\\(\\s*['\"]child_process['\"]\\s*\\))/,\n message:\n '`child_process` in app code — unusual for browser bundles; confirm this is server-only tooling.',\n },\n {\n id: 'ai-sql-template',\n re: /(?:query|execute|raw)\\s*\\(\\s*[`'\"][^`'\"]*\\$\\{/i,\n message: 'Possible dynamic SQL/string — ensure parameterization, not string concat.',\n },\n /**\n * Classic C-style loop with `<= ...length` — often an off-by-one with `charAt(i)` / array indexing\n * (index `length` is out of range). Prefer `< length`, `for...of`, or `Array.from`.\n */\n {\n id: 'ai-for-lte-length',\n re: /for\\s*\\(\\s*(?:let|var|const)\\s+\\w+\\s*=\\s*\\d+\\s*;\\s*\\w+\\s*<=\\s*[^;)]+\\.length\\s*;/,\n message:\n 'Loop condition uses `<= ...length` — often an extra iteration (e.g. `charAt(length)` is empty). Prefer `< ...length` or a safer iteration style.',\n },\n /** AI often pastes broad eslint suppression without review. */\n {\n id: 'ai-eslint-disable',\n re: /eslint-disable(?:-next-line|-line)?\\b/i,\n message:\n 'ESLint disable in AI-marked code — confirm the rule violation is understood and cannot be fixed properly.',\n },\n]\n\nfunction scanRegion(\n rel: string,\n regionText: string,\n regionStartLine: number,\n gate: CheckGate,\n tag: '[AI-marked code]' | '[AI-assisted strict]',\n findings: Finding[],\n): void {\n for (const { id, re, message, forceBlock } of PATTERNS) {\n const lines = matchLineNumbersInRegion(regionText, regionStartLine, re)\n for (const line of lines) {\n findings.push({\n id,\n severity: forceBlock ? 'block' : sev(gate),\n message: `${tag} ${message}`,\n file: rel,\n detail: `line ${line}`,\n })\n }\n }\n\n const astLines = scanDiscardedExpensiveCalls(regionText, rel, regionStartLine)\n for (const line of astLines) {\n findings.push({\n id: 'ai-discarded-expensive-call',\n severity: sev(gate),\n message: `${tag} Call discards the return value of a local function whose body includes a loop with a very large numeric bound — likely wasted CPU on every run (e.g. remove the call or move work to an effect / memo with a real dependency).`,\n file: rel,\n detail: `line ${line}`,\n })\n }\n}\n\nexport async function runAiAssistedStrict(\n cwd: string,\n config: FrontGuardConfig,\n pr: PrContext | null,\n): Promise<CheckResult> {\n const t0 = performance.now()\n const cfg = config.checks.aiAssistedReview\n\n if (!cfg.enabled) {\n return {\n checkId: 'ai-assisted-strict',\n findings: [],\n durationMs: 0,\n skipped: 'disabled in config',\n }\n }\n\n if (!pr) {\n return {\n checkId: 'ai-assisted-strict',\n findings: [],\n durationMs: Math.round(performance.now() - t0),\n skipped: 'no PR context (Bitbucket PR pipeline + BITBUCKET_PR_ID required)',\n }\n }\n\n const mode = cfg.strictScanMode ?? 'both'\n const gate = cfg.gate\n const files = (pr.files ?? []).filter((f) => CODE_EXT.test(f)).slice(0, 150)\n\n const byRel = new Map<string, { content: string; parsed: AiRegionParseResult }>()\n let anyDecoratorInPr = false\n\n for (const rel of files) {\n const full = path.join(cwd, rel)\n try {\n const content = await fs.readFile(full, 'utf8')\n if (content.length > 500_000) continue\n const parsed = parseAiMarkedRegions(content, rel)\n byRel.set(rel, { content, parsed })\n if (parsed.regions.length > 0) anyDecoratorInPr = true\n } catch {\n continue\n }\n }\n\n if (mode === 'decorator' && !anyDecoratorInPr) {\n return {\n checkId: 'ai-assisted-strict',\n findings: [],\n durationMs: Math.round(performance.now() - t0),\n skipped:\n 'strictScanMode=decorator — no `@frontguard-ai:start` / `written by AI: start` regions in PR files',\n }\n }\n\n if (mode === 'pr-disclosure' && !pr.aiAssisted) {\n return {\n checkId: 'ai-assisted-strict',\n findings: [],\n durationMs: Math.round(performance.now() - t0),\n skipped: 'strictScanMode=pr-disclosure — PR does not indicate AI-assisted code',\n }\n }\n\n const useWholeFileFallback =\n (mode === 'pr-disclosure' || mode === 'both') && Boolean(pr.aiAssisted)\n\n const findings: Finding[] = []\n\n for (const rel of files) {\n const entry = byRel.get(rel)\n if (!entry) continue\n const { content, parsed } = entry\n\n for (const w of parsed.parseWarnings) {\n findings.push({\n id: 'ai-decorator-parse',\n severity: 'info',\n message: `[AI markers] ${w}`,\n file: rel,\n })\n }\n\n if (parsed.regions.length > 0) {\n for (const r of parsed.regions) {\n scanRegion(rel, r.text, r.startLine, gate, '[AI-marked code]', findings)\n }\n continue\n }\n\n if (useWholeFileFallback) {\n scanRegion(rel, content, 1, gate, '[AI-assisted strict]', findings)\n }\n }\n\n return {\n checkId: 'ai-assisted-strict',\n findings: dedupe(findings),\n durationMs: Math.round(performance.now() - t0),\n }\n}\n\nfunction dedupe(f: Finding[]): Finding[] {\n const s = new Set<string>()\n const out: Finding[] = []\n for (const x of f) {\n const k = `${x.id}:${x.file ?? ''}:${x.detail ?? ''}`\n if (s.has(k)) continue\n s.add(k)\n out.push(x)\n }\n return out\n}\n","import type { FrontGuardConfig } from '../config/schema.js'\nimport type { CheckResult, PrContext } from '../types.js'\n\n/**\n * When the PR discloses AI use, escalate selected automated findings so reviewers\n * treat them as merge blockers (in enforce mode) or high-signal warnings.\n */\nexport function applyAiAssistedEscalation(\n results: CheckResult[],\n pr: PrContext | null,\n config: FrontGuardConfig,\n): void {\n const cfg = config.checks.aiAssistedReview\n if (!pr?.aiAssisted || !cfg.enabled) return\n\n const { escalate } = cfg\n\n for (const r of results) {\n if (r.skipped) continue\n\n if (escalate.secretFindingsToBlock && r.checkId === 'secrets') {\n for (const f of r.findings) {\n if (f.severity === 'warn' || f.severity === 'info') f.severity = 'block'\n }\n }\n\n if (escalate.tsAnyDeltaToBlock && r.checkId === 'ts-any-delta') {\n for (const f of r.findings) {\n if (f.severity === 'warn' || f.severity === 'info') f.severity = 'block'\n }\n }\n }\n}\n","import { writeFile } from 'node:fs/promises'\nimport { Resvg } from '@resvg/resvg-js'\nimport type { CheckResult } from '../types.js'\nimport type { HtmlReportInput } from '../report/html-report.js'\n\nconst W = 920\nconst PAD_X = 24\nconst TABLE_X = 20\nconst TABLE_W = 880\nconst HEADER_H = 34\nconst ROW_H = 34\nconst COL_CHECK = 56\nconst COL_STATUS = 508\nconst COL_NUM = 748\nconst COL_TIME = 888\n\nfunction escapeXml(s: string): string {\n return s\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n}\n\nfunction truncate(s: string, max: number): string {\n const t = s.replace(/\\s+/g, ' ').trim()\n if (t.length <= max) return t\n return `${t.slice(0, max - 1)}…`\n}\n\nfunction formatDuration(ms: number): string {\n if (ms < 1000) return `${ms} ms`\n const s = Math.round(ms / 1000)\n if (s < 60) return `${s}s`\n const m = Math.floor(s / 60)\n const r = s % 60\n return r ? `${m}m ${r}s` : `${m}m`\n}\n\nfunction statusText(r: CheckResult): string {\n if (r.skipped) return `Skipped — ${truncate(r.skipped, 36)}`\n if (r.findings.length === 0) return 'Pass'\n return `${r.findings.length} issue(s)`\n}\n\nfunction dotFill(r: CheckResult): string {\n if (r.skipped) return '#cbd5e1'\n if (r.findings.length === 0) return '#16a34a'\n if (r.findings.some((x) => x.severity === 'block')) return '#dc2626'\n return '#d97706'\n}\n\nfunction riskFill(risk: HtmlReportInput['riskScore']): string {\n if (risk === 'LOW') return '#16a34a'\n if (risk === 'MEDIUM') return '#d97706'\n return '#dc2626'\n}\n\nfunction buildChecksSnapshotSvg(p: HtmlReportInput): string {\n const { riskScore, mode, results, warns, infos, blocks } = p\n const modeLabel = mode === 'enforce' ? 'Enforce' : 'Warn only'\n const brandY = 20\n const titleY = 42\n const metaY = 66\n const tableTop = 88\n const bodyRows = results.length\n const cardH = HEADER_H + bodyRows * ROW_H\n const totalH = tableTop + cardH + 28\n\n const headerMid = tableTop + HEADER_H / 2 + 5\n const rowTextY = (i: number) => tableTop + HEADER_H + i * ROW_H + ROW_H / 2 + 5\n\n const headerCells = [\n { x: COL_CHECK, label: 'CHECK', anchor: 'start' as const },\n { x: COL_STATUS, label: 'STATUS', anchor: 'start' as const },\n { x: COL_NUM, label: '#', anchor: 'end' as const },\n { x: COL_TIME, label: 'TIME', anchor: 'end' as const },\n ]\n\n const rowLines: string[] = []\n for (let i = 0; i < bodyRows; i++) {\n const y = tableTop + HEADER_H + i * ROW_H\n const fill = i % 2 === 1 ? '#f8fafc' : '#ffffff'\n rowLines.push(\n `<rect x=\"${TABLE_X}\" y=\"${y}\" width=\"${TABLE_W}\" height=\"${ROW_H}\" fill=\"${fill}\" stroke=\"none\"/>`,\n )\n }\n\n const bodyCells: string[] = []\n for (let i = 0; i < bodyRows; i++) {\n const r = results[i]!\n const cy = rowTextY(i)\n const cx = 36\n bodyCells.push(\n `<circle cx=\"${cx}\" cy=\"${cy - 4}\" r=\"4.5\" fill=\"${dotFill(r)}\"/>`,\n `<text x=\"${COL_CHECK}\" y=\"${cy}\" font-size=\"13\" font-weight=\"600\" fill=\"#0f172a\" font-family=\"system-ui, -apple-system, Segoe UI, sans-serif\">${escapeXml(truncate(r.checkId, 46))}</text>`,\n `<text x=\"${COL_STATUS}\" y=\"${cy}\" font-size=\"13\" fill=\"#0f172a\" font-family=\"system-ui, -apple-system, Segoe UI, sans-serif\">${escapeXml(statusText(r))}</text>`,\n `<text x=\"${COL_NUM}\" y=\"${cy}\" font-size=\"13\" fill=\"#64748b\" font-family=\"ui-monospace, monospace\" text-anchor=\"end\">${escapeXml(r.skipped ? '—' : String(r.findings.length))}</text>`,\n `<text x=\"${COL_TIME}\" y=\"${cy}\" font-size=\"13\" fill=\"#64748b\" font-family=\"ui-monospace, monospace\" text-anchor=\"end\">${escapeXml(formatDuration(r.durationMs))}</text>`,\n )\n }\n\n const gridLines: string[] = []\n for (let i = 0; i <= bodyRows; i++) {\n const y = tableTop + HEADER_H + i * ROW_H\n gridLines.push(\n `<line x1=\"${TABLE_X}\" y1=\"${y}\" x2=\"${TABLE_X + TABLE_W}\" y2=\"${y}\" stroke=\"#e2e8f0\" stroke-width=\"1\"/>`,\n )\n }\n\n return `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${W}\" height=\"${totalH}\" viewBox=\"0 0 ${W} ${totalH}\">\n <rect width=\"${W}\" height=\"${totalH}\" fill=\"#f8fafc\"/>\n <text x=\"${PAD_X}\" y=\"${brandY}\" font-size=\"11\" font-weight=\"600\" fill=\"#64748b\" letter-spacing=\"0.12em\" font-family=\"system-ui, -apple-system, Segoe UI, sans-serif\">FRONTGUARD</text>\n <text x=\"${PAD_X}\" y=\"${titleY}\" font-size=\"17\" font-weight=\"600\" fill=\"#0f172a\" font-family=\"system-ui, -apple-system, Segoe UI, sans-serif\">Checks</text>\n <text x=\"${PAD_X}\" y=\"${metaY}\" font-size=\"13\" fill=\"#64748b\" font-family=\"system-ui, -apple-system, Segoe UI, sans-serif\">\n <tspan>Risk </tspan><tspan fill=\"${riskFill(riskScore)}\" font-weight=\"600\">${escapeXml(riskScore)}</tspan>\n <tspan> · ${escapeXml(modeLabel)} · Blocking </tspan><tspan fill=\"#0f172a\" font-weight=\"600\">${blocks}</tspan>\n <tspan> · Warnings </tspan><tspan fill=\"#0f172a\" font-weight=\"600\">${warns}</tspan>\n <tspan> · Info </tspan><tspan fill=\"#0f172a\" font-weight=\"600\">${infos}</tspan>\n </text>\n <defs>\n <clipPath id=\"fg-card\">\n <rect x=\"${TABLE_X}\" y=\"${tableTop}\" width=\"${TABLE_W}\" height=\"${cardH}\" rx=\"10\" ry=\"10\"/>\n </clipPath>\n </defs>\n <rect x=\"${TABLE_X}\" y=\"${tableTop}\" width=\"${TABLE_W}\" height=\"${cardH}\" rx=\"10\" ry=\"10\" fill=\"#ffffff\" stroke=\"#e2e8f0\" stroke-width=\"1\"/>\n <g clip-path=\"url(#fg-card)\">\n <rect x=\"${TABLE_X}\" y=\"${tableTop}\" width=\"${TABLE_W}\" height=\"${HEADER_H}\" fill=\"#f1f5f9\"/>\n ${headerCells\n .map(\n (c) =>\n `<text x=\"${c.x}\" y=\"${headerMid}\" font-size=\"11\" font-weight=\"600\" fill=\"#64748b\" letter-spacing=\"0.04em\" font-family=\"system-ui, -apple-system, Segoe UI, sans-serif\" text-anchor=\"${c.anchor}\">${c.label}</text>`,\n )\n .join('\\n ')}\n ${rowLines.join('\\n ')}\n ${gridLines.join('\\n ')}\n ${bodyCells.join('\\n ')}\n </g>\n</svg>`\n}\n\n/**\n * Renders the checks summary table to PNG (SVG → raster via resvg).\n * No browser; requires fonts on the host for readable text (Debian: `fonts-dejavu-core`).\n */\nexport async function renderChecksSnapshotPng(\n pngPath: string,\n input: HtmlReportInput,\n): Promise<void> {\n const svg = buildChecksSnapshotSvg(input)\n const resvg = new Resvg(svg, {\n background: '#f8fafc',\n fitTo: { mode: 'width', value: W },\n font: { loadSystemFonts: true },\n })\n const img = resvg.render()\n await writeFile(pngPath, img.asPng())\n}\n","import pc from 'picocolors'\nimport { formatStackOneLiner } from '../detect/stack.js'\nimport type { GuardMode } from '../config/schema.js'\nimport { stripRepoAbsolutePaths, toRepoRelativePath } from '../lib/repo-paths.js'\nimport type { CheckResult, Finding, PrContext, StackInfo } from '../types.js'\nimport { buildChecksSnapshotHtml, buildHtmlReport, type HtmlReportInput } from './html-report.js'\n\nexport interface FullReport {\n riskScore: 'LOW' | 'MEDIUM' | 'HIGH'\n stack: StackInfo\n pr: PrContext | null\n results: CheckResult[]\n markdown: string\n consoleText: string\n /** Present when {@link buildReport} was called with `emitHtml: true` */\n html: string | null\n /** Minimal HTML for the Checks table only (optional artifact / browser view). */\n checksSnapshotHtml: string | null\n /** Same data as the snapshot HTML; used to raster the table to PNG without a browser. */\n checksSnapshotInput: HtmlReportInput | null\n}\n\nexport function buildReport(\n stack: StackInfo,\n pr: PrContext | null,\n results: CheckResult[],\n options?: {\n mode?: GuardMode\n llmAppendix?: string | null\n cwd?: string\n emitHtml?: boolean\n /** When true, {@link FullReport.checksSnapshotHtml} is populated (for headless screenshot). */\n emitChecksSnapshot?: boolean\n },\n): FullReport {\n const mode = options?.mode ?? 'warn'\n const cwd = options?.cwd ?? process.cwd()\n const allFindings = results.flatMap((r) =>\n r.findings.map((f) => ({ ...f, checkId: r.checkId })),\n )\n const warns = allFindings.filter((f) => f.severity === 'warn').length\n const infos = allFindings.filter((f) => f.severity === 'info').length\n const blocks = allFindings.filter((f) => f.severity === 'block').length\n\n const lines = pr != null ? pr.additions + pr.deletions : null\n\n const riskScore = scoreRisk(blocks, warns, lines, pr?.changedFiles ?? 0)\n\n const markdown = formatMarkdown({\n cwd,\n riskScore,\n mode,\n stack,\n pr,\n results,\n warns,\n infos,\n blocks,\n lines,\n llmAppendix: options?.llmAppendix ?? null,\n })\n\n const consoleText = formatConsole({\n riskScore,\n mode,\n stack,\n pr,\n results,\n warns,\n infos,\n blocks,\n })\n\n const html =\n options?.emitHtml === true\n ? buildHtmlReport({\n cwd,\n riskScore,\n mode,\n stack,\n pr,\n results,\n warns,\n infos,\n blocks,\n lines,\n llmAppendix: options?.llmAppendix ?? null,\n })\n : null\n\n const llmAppendix = options?.llmAppendix ?? null\n const checksSnapshotInput: HtmlReportInput | null =\n options?.emitChecksSnapshot === true\n ? {\n cwd,\n riskScore,\n mode,\n stack,\n pr,\n results,\n warns,\n infos,\n blocks,\n lines,\n llmAppendix,\n }\n : null\n\n const checksSnapshotHtml =\n checksSnapshotInput != null ? buildChecksSnapshotHtml(checksSnapshotInput) : null\n\n return {\n riskScore,\n stack,\n pr,\n results,\n markdown,\n consoleText,\n html,\n checksSnapshotHtml,\n checksSnapshotInput,\n }\n}\n\nfunction scoreRisk(\n blocks: number,\n warns: number,\n lines: number | null,\n files: number,\n): FullReport['riskScore'] {\n let score = 0\n if (blocks > 0) score += 3\n if (warns >= 8) score += 2\n else if (warns >= 3) score += 1\n if (lines != null) {\n if (lines >= 800) score += 2\n else if (lines >= 400) score += 1\n }\n if (files >= 25) score += 1\n if (score >= 5) return 'HIGH'\n if (score >= 2) return 'MEDIUM'\n return 'LOW'\n}\n\n/**\n * Shields.io static badge via standard Markdown image syntax.\n * Bitbucket Cloud renders `` but does not allow raw HTML in PR comments.\n */\nfunction shieldImageUrl(label: string, message: string, color: string): string {\n const q = new URLSearchParams({\n label,\n message,\n color,\n style: 'for-the-badge',\n })\n return `https://img.shields.io/static/v1?${q}`\n}\n\nfunction mdShield(alt: string, label: string, message: string, color: string): string {\n return `})`\n}\n\nfunction riskEmoji(risk: FullReport['riskScore']): string {\n if (risk === 'LOW') return '🟢'\n if (risk === 'MEDIUM') return '🟠'\n return '🔴'\n}\n\nfunction riskShieldColor(risk: FullReport['riskScore']): string {\n if (risk === 'LOW') return 'brightgreen'\n if (risk === 'MEDIUM') return 'orange'\n return 'red'\n}\n\nfunction modeShieldColor(mode: GuardMode): string {\n return mode === 'enforce' ? 'critical' : 'blue'\n}\n\nfunction countShieldColor(kind: 'block' | 'warn' | 'info', n: number): string {\n if (kind === 'block') return n === 0 ? 'brightgreen' : 'critical'\n if (kind === 'info') return n === 0 ? 'inactive' : 'informational'\n if (n === 0) return 'brightgreen'\n if (n <= 10) return 'yellow'\n return 'orange'\n}\n\nfunction formatDuration(ms: number): string {\n if (ms < 1000) return `${ms} ms`\n const s = Math.round(ms / 1000)\n if (s < 60) return `${s}s`\n const m = Math.floor(s / 60)\n const r = s % 60\n return r ? `${m}m ${r}s` : `${m}m`\n}\n\nfunction healthEmojiForCheck(r: CheckResult): string {\n if (r.skipped) return '⏭️'\n if (r.findings.length === 0) return '🟢'\n const hasBlock = r.findings.some((f) => f.severity === 'block')\n if (hasBlock) return '🔴'\n return '🟡'\n}\n\nfunction normalizeFindingDisplay(\n cwd: string,\n f: Finding,\n): { file?: string; message: string; detail?: string } {\n const file = toRepoRelativePath(cwd, f.file)\n const message = stripRepoAbsolutePaths(cwd, f.message)\n const detail = f.detail ? stripRepoAbsolutePaths(cwd, f.detail) : undefined\n return { file, message, detail }\n}\n\n/** Fenced code block body: strip CI absolute paths; avoid breaking out of ``` fences. */\nfunction sanitizeFence(cwd: string, s: string): string {\n return stripRepoAbsolutePaths(cwd, s)\n .replace(/\\r\\n/g, '\\n')\n .replace(/```/g, '`\\u200b``')\n}\n\n/** One-line title for a finding; safe for Markdown (no HTML). */\nfunction findingTitleLine(file: string | undefined, message: string): string {\n const msg =\n message.length > 200 ? `${message.slice(0, 197).trimEnd()}…` : message\n const loc = file ? `\\`${file}\\`` : '_no file_'\n return `${loc} — ${msg}`\n}\n\nfunction parseLineHint(detail: string | undefined): number {\n if (!detail) return 0\n const m = /^line\\s+(\\d+)/i.exec(detail.trim())\n return m ? Number(m[1]) : 0\n}\n\n/** After metadata table: short one-line hint row, or fenced detail for long/multiline output. */\nfunction appendDetailAfterTable(\n sb: string[],\n cwd: string,\n detail: string | undefined,\n): void {\n if (!detail?.trim()) return\n const d = detail.trim()\n const oneLine = !d.includes('\\n')\n const safeForTable =\n oneLine && d.length <= 200 && !d.includes('|') && !d.includes('`')\n\n if (safeForTable) {\n sb.push(`| **Hint** | ${d} |`)\n return\n }\n\n sb.push('')\n sb.push('*Detail*')\n sb.push('')\n sb.push('```text')\n sb.push(sanitizeFence(cwd, d))\n sb.push('```')\n}\n\nfunction appendSuggestedFix(sb: string[], cwd: string, f: Finding): void {\n if (!f.suggestedFix) return\n sb.push('')\n sb.push('_Suggested fix (LLM — non-binding):_')\n sb.push('')\n sb.push(f.suggestedFix.summary)\n if (f.suggestedFix.code) {\n sb.push('')\n sb.push('```text')\n sb.push(sanitizeFence(cwd, f.suggestedFix.code))\n sb.push('```')\n }\n}\n\nfunction formatMarkdown(p: {\n cwd: string\n riskScore: FullReport['riskScore']\n mode: GuardMode\n stack: StackInfo\n pr: PrContext | null\n results: CheckResult[]\n warns: number\n infos: number\n blocks: number\n lines: number | null\n llmAppendix: string | null\n}): string {\n const {\n cwd,\n riskScore,\n mode,\n stack,\n pr,\n results,\n warns,\n infos,\n blocks,\n lines,\n llmAppendix,\n } = p\n const sb: string[] = []\n\n const sortWithCwd = (items: Array<{ r: CheckResult; f: Finding }>) =>\n [...items].sort((a, b) => {\n const af = toRepoRelativePath(cwd, a.f.file) ?? ''\n const bf = toRepoRelativePath(cwd, b.f.file) ?? ''\n if (af !== bf) return af.localeCompare(bf)\n const lineA = parseLineHint(a.f.detail)\n const lineB = parseLineHint(b.f.detail)\n if (lineA !== lineB) return lineA - lineB\n return a.f.message.localeCompare(b.f.message)\n })\n\n sb.push('## ✨ FrontGuard review brief')\n sb.push('')\n const modeLabel = mode === 'enforce' ? 'enforce' : 'warn only'\n const badgeLine = [\n mdShield('Risk level', 'risk', riskScore, riskShieldColor(riskScore)),\n mdShield('CI mode', 'mode', modeLabel, modeShieldColor(mode)),\n mdShield('Blocking', 'blocking', String(blocks), countShieldColor('block', blocks)),\n mdShield('Warnings', 'warnings', String(warns), countShieldColor('warn', warns)),\n mdShield('Info', 'info notes', String(infos), countShieldColor('info', infos)),\n ].join(' ')\n sb.push(badgeLine)\n sb.push('')\n sb.push('---')\n sb.push('')\n sb.push('### 📌 Snapshot')\n sb.push('')\n sb.push('| | |')\n sb.push('|:--|:--|')\n sb.push(`| **Composite risk** | ${riskEmoji(riskScore)} **${riskScore}** — heuristic from blocks, warnings, and PR size. |`)\n sb.push(\n `| **Gate mode** | ${mode === 'enforce' ? '🔒 **Enforce** — CI fails when a \\`block\\` finding is present.' : '🛈 **Warn only** — findings are advisory unless you use \\`--enforce\\`.'} |`,\n )\n sb.push(`| **Stack detected** | ${formatStackOneLiner(stack)} |`)\n if (pr && lines != null) {\n sb.push(\n `| **PR size** | 📏 **${lines}** LOC ( +${pr.additions} / −${pr.deletions} ) · **${pr.changedFiles}** files |`,\n )\n }\n sb.push('')\n if (pr?.aiAssisted) {\n sb.push(\n '> **🤖 AI-assisted PR** — Stricter static checks run on changed files (security / footguns; secrets & `any` deltas may escalate). This does not replace human review for behavior or product rules.',\n )\n sb.push('')\n }\n sb.push('> **How to read this report**')\n sb.push('>')\n sb.push('> | Symbol | Meaning |')\n sb.push('> |:--|:--|')\n sb.push('> | 🟢 | Check passed or skipped cleanly |')\n sb.push('> | 🟡 | Warnings only — review recommended |')\n sb.push('> | 🔴 | Blocking (`block`) severity present |')\n sb.push('> | ⏭️ | Check skipped (see reason in table) |')\n sb.push('>')\n sb.push(\n '> Paths in findings are **relative to the repo root**. Each issue below has a small field table and optional detail.',\n )\n sb.push('')\n sb.push('---')\n sb.push('')\n\n sb.push('### 📋 Check results')\n sb.push('')\n sb.push('| | Check | Status | Findings | Duration |')\n sb.push('|:--:|:--|:--|:-:|--:|')\n for (const r of results) {\n const he = healthEmojiForCheck(r)\n let status: string\n if (r.skipped) {\n const why = r.skipped.replace(/\\|/g, '\\\\|').replace(/\\s+/g, ' ').trim()\n const short = why.length > 120 ? `${why.slice(0, 117)}…` : why\n status = `⏭️ **Skipped** — ${short}`\n } else if (r.findings.length === 0) {\n status = '✅ **Clean**'\n } else {\n status = '⚠️ **Issues**'\n }\n const nFind = r.skipped ? '—' : String(r.findings.length)\n sb.push(\n `| ${he} | **${r.checkId}** | ${status} | **${nFind}** | ${formatDuration(r.durationMs)} |`,\n )\n }\n sb.push('')\n\n const blockFindings = sortWithCwd(\n results.flatMap((r) =>\n r.findings.filter((f) => f.severity === 'block').map((f) => ({ r, f })),\n ),\n )\n\n sb.push(`### 🛑 Blocking — ${blocks} issue${blocks === 1 ? '' : 's'}`)\n sb.push('')\n if (blockFindings.length === 0) {\n sb.push('*✅ No blocking findings — nothing mapped to severity `block`.*')\n } else {\n for (const { r, f } of blockFindings) {\n const d = normalizeFindingDisplay(cwd, f)\n sb.push('---')\n sb.push('')\n sb.push(`#### ${findingTitleLine(d.file, d.message)}`)\n sb.push('')\n sb.push(`| Field | Value |`)\n sb.push(`|:--|:--|`)\n sb.push(`| **Check** | \\`${r.checkId}\\` |`)\n sb.push(`| **Rule / id** | \\`${f.id}\\` |`)\n if (d.file) sb.push(`| **File** | \\`${d.file}\\` |`)\n appendDetailAfterTable(sb, cwd, d.detail)\n appendSuggestedFix(sb, cwd, f)\n sb.push('')\n }\n }\n sb.push('')\n\n const warnFindings = sortWithCwd(\n results.flatMap((r) =>\n r.findings.filter((f) => f.severity === 'warn').map((f) => ({ r, f })),\n ),\n )\n\n sb.push(\n `### ⚠️ Warnings — ${warns} issue${warns === 1 ? '' : 's'} (by check)`,\n )\n sb.push('')\n\n if (warnFindings.length === 0) {\n sb.push('*🎉 No warnings — nice work.*')\n } else {\n const byCheck = new Map<string, Array<{ r: CheckResult; f: Finding }>>()\n for (const item of warnFindings) {\n const list = byCheck.get(item.r.checkId) ?? []\n list.push(item)\n byCheck.set(item.r.checkId, list)\n }\n const checkOrder = [...byCheck.keys()].sort((a, b) => a.localeCompare(b))\n for (const checkId of checkOrder) {\n const group = sortWithCwd(byCheck.get(checkId)!)\n sb.push(`#### 📂 \\`${checkId}\\` · ${group.length} finding${group.length === 1 ? '' : 's'}`)\n sb.push('')\n for (const { r, f } of group) {\n const d = normalizeFindingDisplay(cwd, f)\n sb.push('---')\n sb.push('')\n sb.push(`##### ${findingTitleLine(d.file, d.message)}`)\n sb.push('')\n sb.push(`| Field | Value |`)\n sb.push(`|:--|:--|`)\n sb.push(`| **Check** | \\`${r.checkId}\\` |`)\n sb.push(`| **Rule / id** | \\`${f.id}\\` |`)\n if (d.file) sb.push(`| **File** | \\`${d.file}\\` |`)\n appendDetailAfterTable(sb, cwd, d.detail)\n appendSuggestedFix(sb, cwd, f)\n sb.push('')\n }\n }\n }\n\n sb.push('')\n\n const infoFindings = sortWithCwd(\n results.flatMap((r) =>\n r.findings.filter((f) => f.severity === 'info').map((f) => ({ r, f })),\n ),\n )\n\n sb.push(`### ℹ️ Info & notes — ${infos} item${infos === 1 ? '' : 's'}`)\n sb.push('')\n if (infoFindings.length === 0) {\n sb.push('*No info-level notes.*')\n } else {\n for (const { r, f } of infoFindings) {\n const d = normalizeFindingDisplay(cwd, f)\n sb.push('---')\n sb.push('')\n sb.push(`#### ${findingTitleLine(d.file, d.message)}`)\n sb.push('')\n sb.push(`| Field | Value |`)\n sb.push(`|:--|:--|`)\n sb.push(`| **Check** | \\`${r.checkId}\\` |`)\n sb.push(`| **Rule / id** | \\`${f.id}\\` |`)\n if (d.file) sb.push(`| **File** | \\`${d.file}\\` |`)\n appendDetailAfterTable(sb, cwd, d.detail)\n appendSuggestedFix(sb, cwd, f)\n sb.push('')\n }\n }\n sb.push('')\n\n if (llmAppendix?.trim()) {\n sb.push('### 🤖 AI / manual appendix')\n sb.push('')\n sb.push(llmAppendix.trim())\n sb.push('')\n }\n\n sb.push('---')\n sb.push('')\n sb.push(\n mdShield(\n 'Generated by',\n 'report',\n 'FrontGuard',\n 'blueviolet',\n ),\n )\n sb.push('')\n sb.push(\n '_Configure checks in `frontguard.config.js` · [Shields.io](https://shields.io) badge images load in Bitbucket PR comments (HTML tags like `<details>` are not supported there)._',\n )\n return sb.join('\\n')\n}\n\nfunction formatConsole(p: {\n riskScore: FullReport['riskScore']\n mode: GuardMode\n stack: StackInfo\n pr: PrContext | null\n results: CheckResult[]\n warns: number\n infos: number\n blocks: number\n}): string {\n const { riskScore, mode, stack, pr, results, warns, infos, blocks } = p\n const lines: string[] = []\n lines.push(pc.bold('┌─ FrontGuard review brief ─────────────────────────────┐'))\n lines.push(`│ ${pc.dim('Risk:')} ${riskScore.padEnd(43)} │`)\n lines.push(`│ ${pc.dim('Mode:')} ${mode.padEnd(42)} │`)\n lines.push(\n `│ ${pc.dim('Stack:')} ${(stack.hasNext ? 'Next.js ' : '') + (stack.hasReactNative ? 'RN ' : '') + (stack.hasReact ? 'React ' : '') + (stack.hasTypeScript ? 'TS' : 'JS')}`\n .padEnd(56)\n .slice(0, 56) + ' │',\n )\n if (pr) {\n const sz = `${pr.additions + pr.deletions} lines (+${pr.additions}/-${pr.deletions}) · ${pr.changedFiles} files`\n lines.push(`│ ${pc.dim('PR:')} ${sz.slice(0, 49).padEnd(49)} │`)\n }\n lines.push('│ ' + ''.padEnd(53) + ' │')\n const statusLine =\n blocks > 0\n ? pc.red(`✖ ${blocks} blocking`)\n : warns === 0 && infos === 0\n ? pc.green('✓ No findings')\n : pc.yellow(`⚠ ${warns} warnings · ${infos} info`)\n lines.push(`│ ${statusLine}`.padEnd(64).slice(0, 64) + ' │')\n for (const r of results) {\n const label = r.skipped\n ? pc.dim(` ${r.checkId}: skipped`)\n : ` ${r.checkId}: ${r.findings.length} issues`\n lines.push(`│${label.slice(0, 54).padEnd(54)}│`)\n }\n lines.push(pc.bold('└────────────────────────────────────────────────────────┘'))\n return lines.join('\\n')\n}\n","/** Escape text for HTML text nodes and attribute values. */\nexport function escapeHtml(s: string): string {\n return s\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n}\n","/**\n * Short explanations for HTML report tooltips (Checks table).\n * Keys must match each check’s `checkId`.\n */\nconst CHECK_DESCRIPTIONS: Record<string, string> = {\n eslint:\n 'Runs ESLint using your project config. Flags style, correctness, and framework-specific issues in the repo or PR-scoped files.',\n prettier:\n 'Checks that files match Prettier formatting. Catches unformatted edits so the codebase stays consistent.',\n typescript:\n 'Runs the TypeScript compiler (tsc --noEmit) on the project. Surfaces type errors before merge.',\n secrets:\n 'Scans changed files for patterns that look like leaked secrets (tokens, keys). Heuristic — review each hit.',\n cycles:\n 'Runs madge for circular dependencies on TypeScript/JavaScript entry points. Import cycles can cause brittle builds and load order bugs.',\n 'dead-code':\n 'Runs ts-prune to find unused exports in the TypeScript project. Helps trim dead surface area.',\n bundle:\n 'Measures total size of configured build artifacts (glob) and compares to a checked-in baseline. Flags large regressions in shipped JS/CSS.',\n 'core-web-vitals':\n 'Static hints in JSX/TSX related to Core Web Vitals (e.g. LCP-friendly images, main-thread hygiene). Not a substitute for real field metrics.',\n 'ai-assisted-strict':\n 'When the PR is AI-assisted or code is marked with @frontguard-ai decorators, scans those regions for risky patterns (eval, XSS sinks, etc.) and a few AST heuristics (e.g. discarded hot loops).',\n 'pr-hygiene':\n 'Validates PR metadata when CI provides PR context: description length, checklist items, and similar hygiene rules from config.',\n 'pr-size':\n 'Compares PR diff size (lines/files) against configured budgets to discourage oversized changes.',\n 'ts-any-delta':\n 'Diffs the branch against a base ref and counts newly added uses of the TypeScript any type. Helps stop gradual loss of type safety.',\n 'custom-rules':\n 'Runs optional file/content rules you define in FrontGuard config (regex or structured checks on paths). Skipped when no rules are configured.',\n}\n\nexport function getCheckDescription(checkId: string): string {\n return (\n CHECK_DESCRIPTIONS[checkId] ??\n `FrontGuard check \"${checkId}\". See your frontguard config and docs for behavior.`\n )\n}\n","import { formatStackOneLiner } from '../detect/stack.js'\nimport type { GuardMode } from '../config/schema.js'\nimport { escapeHtml } from '../lib/html-escape.js'\nimport { stripRepoAbsolutePaths, toRepoRelativePath } from '../lib/repo-paths.js'\nimport type { CheckResult, Finding, PrContext, StackInfo } from '../types.js'\nimport { getCheckDescription } from './check-descriptions.js'\n\nexport interface HtmlReportInput {\n cwd: string\n riskScore: 'LOW' | 'MEDIUM' | 'HIGH'\n mode: GuardMode\n stack: StackInfo\n pr: PrContext | null\n results: CheckResult[]\n warns: number\n infos: number\n blocks: number\n lines: number | null\n llmAppendix: string | null\n}\n\nfunction parseLineHint(detail: string | undefined): number {\n if (!detail) return 0\n const m = /^line\\s+(\\d+)/i.exec(detail.trim())\n return m ? Number(m[1]) : 0\n}\n\nfunction normalizeFinding(\n cwd: string,\n f: Finding,\n): { file?: string; message: string; detail?: string } {\n return {\n file: toRepoRelativePath(cwd, f.file),\n message: stripRepoAbsolutePaths(cwd, f.message),\n detail: f.detail ? stripRepoAbsolutePaths(cwd, f.detail) : undefined,\n }\n}\n\nfunction sortFindings(\n cwd: string,\n items: Array<{ r: CheckResult; f: Finding }>,\n): Array<{ r: CheckResult; f: Finding }> {\n return [...items].sort((a, b) => {\n const af = toRepoRelativePath(cwd, a.f.file) ?? ''\n const bf = toRepoRelativePath(cwd, b.f.file) ?? ''\n if (af !== bf) return af.localeCompare(bf)\n const lineA = parseLineHint(a.f.detail)\n const lineB = parseLineHint(b.f.detail)\n if (lineA !== lineB) return lineA - lineB\n return a.f.message.localeCompare(b.f.message)\n })\n}\n\nfunction formatDuration(ms: number): string {\n if (ms < 1000) return `${ms} ms`\n const s = Math.round(ms / 1000)\n if (s < 60) return `${s}s`\n const m = Math.floor(s / 60)\n const r = s % 60\n return r ? `${m}m ${r}s` : `${m}m`\n}\n\nfunction statusDot(r: CheckResult): string {\n if (r.skipped) return '<span class=\"dot dot-skip\" title=\"Skipped\"></span>'\n if (r.findings.length === 0) return '<span class=\"dot dot-ok\" title=\"Clean\"></span>'\n if (r.findings.some((x) => x.severity === 'block'))\n return '<span class=\"dot dot-block\" title=\"Blocking\"></span>'\n return '<span class=\"dot dot-warn\" title=\"Issues\"></span>'\n}\n\n/** Shared by full HTML report and {@link buildChecksSnapshotHtml} (keep in sync visually). */\nconst CHECKS_TABLE_STYLES = `\n table.results {\n width: 100%;\n border-collapse: collapse;\n font-size: 0.875rem;\n background: var(--surface);\n border-radius: var(--radius);\n overflow: hidden;\n border: 1px solid var(--border);\n box-shadow: var(--shadow);\n }\n table.results th, table.results td {\n padding: 0.55rem 0.85rem;\n text-align: left;\n border-bottom: 1px solid var(--border);\n }\n table.results tr:last-child td { border-bottom: none; }\n table.results thead th {\n background: #f1f5f9;\n color: var(--muted);\n font-weight: 600;\n font-size: 0.72rem;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n }\n .td-icon { width: 2rem; vertical-align: middle; }\n .td-check { vertical-align: middle; }\n .td-num, .td-time { color: var(--muted); font-variant-numeric: tabular-nums; }\n .check-title-cell {\n display: inline-flex;\n align-items: center;\n gap: 0.35rem;\n flex-wrap: nowrap;\n }\n .check-name { font-weight: 600; }\n .check-info-wrap {\n position: relative;\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n }\n .check-info {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 1.125rem;\n height: 1.125rem;\n padding: 0;\n margin: 0;\n border: 1px solid var(--border);\n border-radius: 50%;\n background: #f1f5f9;\n color: var(--muted);\n font-size: 0.62rem;\n font-weight: 700;\n font-style: normal;\n line-height: 1;\n cursor: help;\n flex-shrink: 0;\n }\n .check-info:hover,\n .check-info:focus-visible {\n border-color: var(--accent);\n color: var(--accent);\n background: var(--accent-soft);\n outline: none;\n }\n .check-tooltip {\n position: absolute;\n left: 50%;\n bottom: calc(100% + 8px);\n transform: translateX(-50%);\n min-width: 12rem;\n max-width: min(22rem, 86vw);\n padding: 0.55rem 0.65rem;\n background: var(--text);\n color: #f8fafc;\n font-size: 0.78rem;\n font-weight: 400;\n line-height: 1.45;\n border-radius: 6px;\n box-shadow: 0 4px 14px rgba(15, 23, 42, 0.18);\n z-index: 50;\n opacity: 0;\n visibility: hidden;\n pointer-events: none;\n transition: opacity 0.12s ease, visibility 0.12s ease;\n text-align: left;\n }\n .check-info-wrap:hover .check-tooltip,\n .check-info-wrap:focus-within .check-tooltip {\n opacity: 1;\n visibility: visible;\n }\n .check-tooltip::after {\n content: '';\n position: absolute;\n top: 100%;\n left: 50%;\n margin-left: -6px;\n border: 6px solid transparent;\n border-top-color: var(--text);\n }\n .dot {\n display: inline-block;\n width: 8px;\n height: 8px;\n border-radius: 50%;\n }\n .dot-ok { background: var(--ok); }\n .dot-warn { background: var(--warn); }\n .dot-block { background: var(--block); }\n .dot-skip { background: #cbd5e1; }\n`\n\nexport function renderCheckTableRows(results: CheckResult[]): string {\n return results\n .map((r) => {\n const status = r.skipped\n ? `Skipped — ${escapeHtml(r.skipped)}`\n : r.findings.length === 0\n ? 'Pass'\n : `${r.findings.length} issue(s)`\n const help = escapeHtml(getCheckDescription(r.checkId))\n const ariaWhat = escapeHtml(`What does the ${r.checkId} check do?`)\n const checkTitle = `<span class=\"check-title-cell\"><strong class=\"check-name\">${escapeHtml(r.checkId)}</strong><span class=\"check-info-wrap\"><button type=\"button\" class=\"check-info\" title=\"${help}\" aria-label=\"${ariaWhat}\">i</button><span class=\"check-tooltip\" role=\"tooltip\">${help}</span></span></span>`\n return `<tr><td class=\"td-icon\">${statusDot(r)}</td><td class=\"td-check\">${checkTitle}</td><td class=\"td-status\">${status}</td><td class=\"td-num\">${r.skipped ? '—' : r.findings.length}</td><td class=\"td-time\">${formatDuration(r.durationMs)}</td></tr>`\n })\n .join('\\n')\n}\n\n/**\n * Minimal self-contained HTML with only the Checks table (optional artifact or manual browser capture).\n * CI typically writes the PR-comment PNG from the same snapshot data via SVG raster (no headless browser).\n */\nexport function buildChecksSnapshotHtml(p: HtmlReportInput): string {\n const { riskScore, mode, results, warns, infos, blocks } = p\n const modeLabel = mode === 'enforce' ? 'Enforce' : 'Warn only'\n const riskClass =\n riskScore === 'LOW' ? 'risk-low' : riskScore === 'MEDIUM' ? 'risk-med' : 'risk-high'\n const checkRows = renderCheckTableRows(results)\n return `<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <title>FrontGuard — Checks</title>\n <style>\n :root {\n --bg: #f8fafc;\n --surface: #ffffff;\n --text: #0f172a;\n --muted: #64748b;\n --border: #e2e8f0;\n --accent: #4f46e5;\n --accent-soft: #eef2ff;\n --block: #dc2626;\n --warn: #d97706;\n --info: #0284c7;\n --ok: #16a34a;\n --radius: 10px;\n --shadow: 0 1px 3px rgba(15, 23, 42, 0.06);\n }\n * { box-sizing: border-box; }\n body {\n margin: 0;\n padding: 1.25rem 1.5rem 1.5rem;\n font-family: ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", Roboto, sans-serif;\n background: var(--bg);\n color: var(--text);\n line-height: 1.55;\n font-size: 15px;\n max-width: 920px;\n }\n .brand {\n font-size: 0.75rem;\n font-weight: 600;\n letter-spacing: 0.12em;\n text-transform: uppercase;\n color: var(--muted);\n margin-bottom: 0.35rem;\n }\n .h2 {\n font-size: 1rem;\n font-weight: 600;\n margin: 0 0 0.5rem;\n color: var(--text);\n letter-spacing: -0.02em;\n }\n .snap-meta {\n font-size: 0.8rem;\n color: var(--muted);\n margin: 0 0 0.85rem;\n }\n .snap-meta strong { color: var(--text); font-weight: 600; }\n .risk-low { color: var(--ok); }\n .risk-med { color: var(--warn); }\n .risk-high { color: var(--block); }\n ${CHECKS_TABLE_STYLES}\n </style>\n</head>\n<body>\n <div class=\"brand\">FrontGuard</div>\n <h2 class=\"h2\">Checks</h2>\n <p class=\"snap-meta\">Risk <strong class=\"${riskClass}\">${riskScore}</strong> · ${escapeHtml(modeLabel)} · Blocking <strong>${blocks}</strong> · Warnings <strong>${warns}</strong> · Info <strong>${infos}</strong></p>\n <table class=\"results\">\n <thead><tr><th></th><th>Check</th><th>Status</th><th>#</th><th>Time</th></tr></thead>\n <tbody>${checkRows}</tbody>\n </table>\n</body>\n</html>`\n}\n\nfunction renderFindingCard(cwd: string, r: CheckResult, f: Finding): string {\n const d = normalizeFinding(cwd, f)\n const sevClass =\n f.severity === 'block' ? 'sev-block' : f.severity === 'warn' ? 'sev-warn' : 'sev-info'\n\n const fixBlock = f.suggestedFix\n ? `<div class=\"suggested-fix\"><div class=\"fix-label\">Suggested fix <span class=\"pill pill-llm\">LLM</span></div><div class=\"fix-md\">${escapeHtml(f.suggestedFix.summary)}</div>${f.suggestedFix.code ? `<pre class=\"code\"><code>${escapeHtml(f.suggestedFix.code)}</code></pre>` : ''}<p class=\"disclaimer\">Suggestions are non-binding; review before applying.</p></div>`\n : ''\n\n const hintRow =\n d.detail && !d.detail.includes('\\n') && d.detail.length <= 220 && !d.detail.includes('|')\n ? `<tr><th>Hint</th><td>${escapeHtml(d.detail)}</td></tr>`\n : ''\n\n const detailFence =\n d.detail && (d.detail.includes('\\n') || d.detail.length > 220 || d.detail.includes('|'))\n ? `<pre class=\"code\"><code>${escapeHtml(d.detail)}</code></pre>`\n : ''\n\n return `<article class=\"card ${sevClass}\"><div class=\"card-title\">${escapeHtml(d.file ?? '—')}</div><p class=\"card-msg\">${escapeHtml(d.message)}</p><table class=\"meta\"><tr><th>Check</th><td><code>${escapeHtml(r.checkId)}</code></td></tr><tr><th>Rule</th><td><code>${escapeHtml(f.id)}</code></td></tr>${d.file ? `<tr><th>File</th><td><code>${escapeHtml(d.file)}</code></td></tr>` : ''}${hintRow}</table>${detailFence}${fixBlock}</article>`\n}\n\nexport function buildHtmlReport(p: HtmlReportInput): string {\n const {\n cwd,\n riskScore,\n mode,\n stack,\n pr,\n results,\n warns,\n infos,\n blocks,\n lines,\n llmAppendix,\n } = p\n\n const modeLabel = mode === 'enforce' ? 'Enforce' : 'Warn only'\n const riskClass =\n riskScore === 'LOW' ? 'risk-low' : riskScore === 'MEDIUM' ? 'risk-med' : 'risk-high'\n\n const checkRows = renderCheckTableRows(results)\n\n const blockItems = sortFindings(\n cwd,\n results.flatMap((r) =>\n r.findings.filter((f) => f.severity === 'block').map((f) => ({ r, f })),\n ),\n )\n const warnItems = sortFindings(\n cwd,\n results.flatMap((r) =>\n r.findings.filter((f) => f.severity === 'warn').map((f) => ({ r, f })),\n ),\n )\n const infoItems = sortFindings(\n cwd,\n results.flatMap((r) =>\n r.findings.filter((f) => f.severity === 'info').map((f) => ({ r, f })),\n ),\n )\n\n const byCheck = new Map<string, Array<{ r: CheckResult; f: Finding }>>()\n for (const item of warnItems) {\n const list = byCheck.get(item.r.checkId) ?? []\n list.push(item)\n byCheck.set(item.r.checkId, list)\n }\n const checkOrder = [...byCheck.keys()].sort((a, b) => a.localeCompare(b))\n\n const blockingHtml =\n blockItems.length === 0\n ? '<p class=\"empty-state\">No blocking findings.</p>'\n : blockItems.map(({ r, f }) => renderFindingCard(cwd, r, f)).join('\\n')\n\n let warningsHtml = ''\n if (warnItems.length === 0) {\n warningsHtml = '<p class=\"empty-state\">No warnings.</p>'\n } else {\n for (const cid of checkOrder) {\n const group = sortFindings(cwd, byCheck.get(cid)!)\n const cards = group.map(({ r, f }) => renderFindingCard(cwd, r, f)).join('\\n')\n warningsHtml += `<details class=\"panel nested\"><summary><span class=\"summary-title\">${escapeHtml(cid)}</span><span class=\"summary-count\">${group.length}</span></summary><div class=\"panel-body\">${cards}</div></details>`\n }\n }\n\n const infoHtml =\n infoItems.length === 0\n ? '<p class=\"empty-state muted\">No info notes.</p>'\n : infoItems.map(({ r, f }) => renderFindingCard(cwd, r, f)).join('\\n')\n\n const prBlock =\n pr && lines != null\n ? `<tr><th>Pull request</th><td>${lines} lines changed (+${pr.additions} / −${pr.deletions}) · ${pr.changedFiles} files</td></tr>`\n : ''\n\n const appendix = llmAppendix?.trim()\n ? `<section class=\"section\"><h2 class=\"h2\">Appendix</h2><pre class=\"md-raw\">${escapeHtml(llmAppendix.trim())}</pre></section>`\n : ''\n\n return `<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <title>FrontGuard — Report</title>\n <style>\n :root {\n --bg: #f8fafc;\n --surface: #ffffff;\n --text: #0f172a;\n --muted: #64748b;\n --border: #e2e8f0;\n --accent: #4f46e5;\n --accent-soft: #eef2ff;\n --block: #dc2626;\n --warn: #d97706;\n --info: #0284c7;\n --ok: #16a34a;\n --radius: 10px;\n --shadow: 0 1px 3px rgba(15, 23, 42, 0.06);\n }\n * { box-sizing: border-box; }\n body {\n margin: 0;\n font-family: ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", Roboto, sans-serif;\n background: var(--bg);\n color: var(--text);\n line-height: 1.55;\n font-size: 15px;\n padding: 2rem clamp(1rem, 4vw, 3rem) 4rem;\n max-width: 920px;\n margin-left: auto;\n margin-right: auto;\n }\n .hero {\n margin-bottom: 2rem;\n }\n .brand {\n font-size: 0.75rem;\n font-weight: 600;\n letter-spacing: 0.12em;\n text-transform: uppercase;\n color: var(--muted);\n margin-bottom: 0.35rem;\n }\n h1 {\n font-size: 1.75rem;\n font-weight: 700;\n letter-spacing: -0.03em;\n margin: 0 0 1rem;\n color: var(--text);\n }\n .metrics {\n display: flex;\n flex-wrap: wrap;\n gap: 0.65rem;\n margin-bottom: 0.5rem;\n }\n .metric {\n background: var(--surface);\n border: 1px solid var(--border);\n border-radius: var(--radius);\n padding: 0.5rem 0.9rem;\n box-shadow: var(--shadow);\n display: flex;\n align-items: center;\n gap: 0.5rem;\n }\n .metric-label { font-size: 0.72rem; color: var(--muted); text-transform: uppercase; letter-spacing: 0.04em; }\n .metric-value { font-weight: 600; font-size: 0.95rem; }\n .risk-low { color: var(--ok); }\n .risk-med { color: var(--warn); }\n .risk-high { color: var(--block); }\n .section { margin-top: 2.25rem; }\n .h2 {\n font-size: 1rem;\n font-weight: 600;\n margin: 0 0 0.85rem;\n color: var(--text);\n letter-spacing: -0.02em;\n }\n .snapshot {\n width: 100%;\n border-collapse: collapse;\n font-size: 0.9rem;\n background: var(--surface);\n border-radius: var(--radius);\n overflow: hidden;\n border: 1px solid var(--border);\n box-shadow: var(--shadow);\n }\n .snapshot th, .snapshot td {\n padding: 0.65rem 1rem;\n text-align: left;\n border-bottom: 1px solid var(--border);\n }\n .snapshot tr:last-child th, .snapshot tr:last-child td { border-bottom: none; }\n .snapshot th {\n width: 9rem;\n color: var(--muted);\n font-weight: 500;\n background: #f1f5f9;\n }\n ${CHECKS_TABLE_STYLES}\n .panel {\n background: var(--surface);\n border: 1px solid var(--border);\n border-radius: var(--radius);\n margin-bottom: 0.65rem;\n box-shadow: var(--shadow);\n }\n .panel summary {\n cursor: pointer;\n padding: 0.85rem 1rem;\n list-style: none;\n display: flex;\n align-items: center;\n justify-content: space-between;\n font-weight: 600;\n font-size: 0.9rem;\n }\n .panel summary::-webkit-details-marker { display: none; }\n .panel[open] summary { border-bottom: 1px solid var(--border); }\n .panel-body { padding: 0.75rem 1rem 1rem; }\n .nested summary { font-weight: 500; color: var(--warn); }\n .summary-count {\n font-size: 0.8rem;\n font-weight: 500;\n color: var(--muted);\n background: #f1f5f9;\n padding: 0.15rem 0.5rem;\n border-radius: 999px;\n }\n .card {\n border: 1px solid var(--border);\n border-radius: 8px;\n padding: 1rem;\n margin-bottom: 0.65rem;\n background: #fafafa;\n }\n .card:last-child { margin-bottom: 0; }\n .card.sev-block { border-left: 3px solid var(--block); }\n .card.sev-warn { border-left: 3px solid var(--warn); }\n .card.sev-info { border-left: 3px solid var(--info); }\n .card-title { font-size: 0.8rem; font-weight: 600; color: var(--muted); margin-bottom: 0.35rem; }\n .card-msg { margin: 0 0 0.65rem; font-size: 0.9rem; }\n table.meta { width: 100%; font-size: 0.78rem; border-collapse: collapse; margin: 0.35rem 0 0; }\n table.meta th { text-align: left; color: var(--muted); width: 4.5rem; padding: 0.2rem 0.5rem 0.2rem 0; vertical-align: top; }\n table.meta td { padding: 0.2rem 0; }\n table.meta code { font-size: 0.85em; background: #f1f5f9; padding: 0.1rem 0.35rem; border-radius: 4px; }\n .muted { color: var(--muted); }\n .empty-state { margin: 0; font-size: 0.9rem; color: var(--muted); }\n pre.code {\n margin: 0.5rem 0 0;\n padding: 0.75rem;\n background: #f1f5f9;\n border-radius: 6px;\n overflow: auto;\n font-size: 0.78rem;\n border: 1px solid var(--border);\n }\n pre.code code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; white-space: pre; }\n .suggested-fix { margin-top: 0.75rem; padding-top: 0.75rem; border-top: 1px dashed var(--border); }\n .fix-label { font-size: 0.7rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; color: var(--accent); margin-bottom: 0.35rem; }\n .pill-llm { background: var(--accent-soft); color: var(--accent); padding: 0.1rem 0.4rem; border-radius: 4px; font-size: 0.65rem; }\n .fix-md { font-size: 0.85rem; white-space: pre-wrap; margin: 0.25rem 0 0.5rem; }\n .disclaimer { font-size: 0.72rem; color: var(--muted); margin: 0.5rem 0 0; }\n pre.md-raw {\n white-space: pre-wrap;\n font-size: 0.85rem;\n background: var(--surface);\n padding: 1rem;\n border-radius: var(--radius);\n border: 1px solid var(--border);\n margin: 0;\n }\n footer {\n margin-top: 3rem;\n padding-top: 1.25rem;\n border-top: 1px solid var(--border);\n font-size: 0.8rem;\n color: var(--muted);\n }\n footer a { color: var(--accent); text-decoration: none; }\n footer a:hover { text-decoration: underline; }\n </style>\n</head>\n<body>\n <header class=\"hero\">\n <div class=\"brand\">FrontGuard</div>\n <h1>Code review report</h1>\n <div class=\"metrics\">\n <div class=\"metric\"><span class=\"metric-label\">Risk</span><span class=\"metric-value ${riskClass}\">${riskScore}</span></div>\n <div class=\"metric\"><span class=\"metric-label\">Mode</span><span class=\"metric-value\">${escapeHtml(modeLabel)}</span></div>\n <div class=\"metric\"><span class=\"metric-label\">Blocking</span><span class=\"metric-value\">${blocks}</span></div>\n <div class=\"metric\"><span class=\"metric-label\">Warnings</span><span class=\"metric-value\">${warns}</span></div>\n <div class=\"metric\"><span class=\"metric-label\">Info</span><span class=\"metric-value\">${infos}</span></div>\n </div>\n </header>\n\n <section class=\"section\">\n <h2 class=\"h2\">Overview</h2>\n <table class=\"snapshot\">\n <tr><th>Risk score</th><td><strong>${riskScore}</strong> <span class=\"muted\">— heuristic</span></td></tr>\n <tr><th>Mode</th><td>${escapeHtml(modeLabel)}</td></tr>\n <tr><th>Stack</th><td>${escapeHtml(formatStackOneLiner(stack))}</td></tr>\n ${prBlock}\n </table>\n </section>\n\n <section class=\"section\">\n <h2 class=\"h2\">Checks</h2>\n <table class=\"results\">\n <thead><tr><th></th><th>Check</th><th>Status</th><th>#</th><th>Time</th></tr></thead>\n <tbody>${checkRows}</tbody>\n </table>\n </section>\n\n <section class=\"section\">\n <h2 class=\"h2\">Findings</h2>\n <details class=\"panel\"><summary>Blocking <span class=\"summary-count\">${blocks}</span></summary><div class=\"panel-body\">${blockingHtml}</div></details>\n <details class=\"panel\"><summary>Warnings <span class=\"summary-count\">${warns}</span></summary><div class=\"panel-body\">${warningsHtml}</div></details>\n <details class=\"panel\"><summary>Info <span class=\"summary-count\">${infos}</span></summary><div class=\"panel-body\">${infoHtml}</div></details>\n </section>\n\n ${appendix}\n\n <footer>\n <p>Static report — open in any browser. Generated by <strong>FrontGuard</strong>.</p>\n </footer>\n</body>\n</html>`\n}\n","/**\n * Use the runtime's built-in Fetch (Node 18+). Bundling `undici` breaks ESM output\n * (dynamic `require(\"assert\")` inside undici).\n */\nexport function getFetch(): typeof globalThis.fetch {\n const f = globalThis.fetch\n if (typeof f !== 'function') {\n throw new Error(\n 'FrontGuard needs Node.js 18+ (global fetch). Use NODE_VERSION / image >= 18 in CI.',\n )\n }\n return f\n}\n","import { getFetch } from '../lib/http-fetch.js'\n\nexport async function callOllamaChat(opts: {\n baseUrl: string\n model: string\n prompt: string\n timeoutMs: number\n}): Promise<string> {\n const fetch = getFetch()\n const base = opts.baseUrl.replace(/\\/$/, '')\n const controller = new AbortController()\n const t = setTimeout(() => controller.abort(), opts.timeoutMs)\n try {\n const res = await fetch(`${base}/api/chat`, {\n method: 'POST',\n signal: controller.signal,\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n model: opts.model,\n messages: [{ role: 'user', content: opts.prompt }],\n stream: false,\n options: { temperature: 0.2 },\n }),\n })\n if (!res.ok) {\n const body = await res.text()\n throw new Error(`Ollama HTTP ${res.status}: ${body.slice(0, 400)}`)\n }\n const data = (await res.json()) as { message?: { content?: string } }\n const text = data.message?.content?.trim()\n if (!text) throw new Error('Ollama returned empty content')\n return text\n } finally {\n clearTimeout(t)\n }\n}\n","import fs from 'node:fs/promises'\nimport path from 'node:path'\nimport { formatStackOneLiner } from '../detect/stack.js'\nimport type { FrontGuardConfig } from '../config/schema.js'\nimport type { CheckResult, StackInfo } from '../types.js'\nimport { callOllamaChat } from './ollama.js'\n\nasync function safeReadRepoFile(\n cwd: string,\n rel: string,\n maxChars: number,\n): Promise<string | null> {\n const root = path.resolve(cwd)\n const abs = path.resolve(root, rel)\n const relToRoot = path.relative(root, abs)\n if (relToRoot.startsWith('..') || path.isAbsolute(relToRoot)) return null\n try {\n let t = await fs.readFile(abs, 'utf8')\n if (t.length > maxChars) {\n t =\n t.slice(0, maxChars) +\n `\\n\\n/* … truncated after ${maxChars} chars (FrontGuard context limit) … */\\n`\n }\n return t\n } catch {\n return null\n }\n}\n\nfunction parseFixResponse(raw: string): { summary: string; code?: string } {\n const codeMatch = /```(?:\\w+)?\\n([\\s\\S]*?)```/m.exec(raw)\n const code = codeMatch?.[1]?.trim()\n let summary = codeMatch ? raw.replace(codeMatch[0], '').trim() : raw.trim()\n summary = summary.replace(/^#{1,6}\\s+Fix\\s*$/m, '').trim()\n return { summary: summary || raw.trim(), code }\n}\n\nexport async function enrichFindingsWithOllamaFixes(opts: {\n cwd: string\n config: FrontGuardConfig\n stack: StackInfo\n results: CheckResult[]\n}): Promise<CheckResult[]> {\n const { cwd, config, stack, results } = opts\n const cfg = config.checks.llm\n if (!cfg.enabled || cfg.provider !== 'ollama' || !cfg.perFindingFixes) {\n return results\n }\n\n let pkgSnippet = ''\n try {\n const pj = await fs.readFile(path.join(cwd, 'package.json'), 'utf8')\n pkgSnippet = pj.slice(0, 4000)\n } catch {\n pkgSnippet = ''\n }\n\n const stackLabel = formatStackOneLiner(stack)\n\n const out: CheckResult[] = results.map((r) => ({\n ...r,\n findings: r.findings.map((f) => ({ ...f })),\n }))\n\n let budget = cfg.maxFixSuggestions\n\n for (let ri = 0; ri < out.length && budget > 0; ri++) {\n const r = out[ri]\n for (let fi = 0; fi < r.findings.length && budget > 0; fi++) {\n const f = r.findings[fi]\n if (f.severity !== 'warn' && f.severity !== 'block') continue\n if (!f.file) continue\n\n budget -= 1\n const fileContent = await safeReadRepoFile(\n cwd,\n f.file,\n cfg.maxFileContextChars,\n )\n\n const prompt = [\n 'You are a senior frontend engineer. A static checker flagged an issue in a pull request.',\n 'Use ONLY the repo context below (stack summary, package.json excerpt, file content).',\n 'If context is insufficient, say what is missing instead of guessing.',\n '',\n 'Reply in Markdown with exactly these sections:',\n '### Why',\n '(1–3 short sentences: root cause and product/engineering risk.)',\n '### Fix',\n '(Minimal, concrete change. Put code in a single fenced block with a language tag, e.g. ```ts)',\n '',\n `Repo stack: ${stackLabel}`,\n '',\n 'package.json excerpt:',\n '```json',\n pkgSnippet || '{}',\n '```',\n '',\n `check: ${r.checkId}`,\n `rule/id: ${f.id}`,\n `severity: ${f.severity}`,\n `message: ${f.message}`,\n f.detail ? `detail: ${f.detail}` : '',\n '',\n f.file ? `file (repo-relative): ${f.file}` : '',\n '',\n fileContent\n ? 'File content:\\n```\\n' + fileContent + '\\n```'\n : '_No file content could be read (binary or path issue)._',\n ]\n .filter(Boolean)\n .join('\\n')\n\n try {\n const raw = await callOllamaChat({\n baseUrl: cfg.ollamaUrl,\n model: cfg.model,\n prompt,\n timeoutMs: Math.min(cfg.timeoutMs, 120_000),\n })\n const parsed = parseFixResponse(raw)\n r.findings[fi] = {\n ...f,\n suggestedFix: {\n summary: parsed.summary,\n ...(parsed.code ? { code: parsed.code } : {}),\n },\n }\n } catch {\n r.findings[fi] = {\n ...f,\n suggestedFix: {\n summary:\n '_Could not reach Ollama or the model timed out. Is `ollama serve` running and `checks.llm.model` installed?_',\n },\n }\n }\n }\n }\n\n return out\n}\n","import fs from 'node:fs/promises'\nimport path from 'node:path'\n\nconst MAX_CHARS = 200_000\n\n/**\n * Human-in-the-loop review text: paste output from IDE chat, ChatGPT, Claude, etc.\n * No API keys — suitable for enterprise CI that cannot store LLM secrets.\n */\nexport async function loadManualAppendix(opts: {\n cwd: string\n /** From CLI `--append` */\n filePath?: string | null\n}): Promise<string | null> {\n const { cwd, filePath } = opts\n\n const envFile = process.env.FRONTGUARD_MANUAL_APPENDIX_FILE?.trim()\n const resolvedPath = filePath?.trim() || envFile\n if (resolvedPath) {\n const abs = path.isAbsolute(resolvedPath)\n ? resolvedPath\n : path.join(cwd, resolvedPath)\n try {\n let text = await fs.readFile(abs, 'utf8')\n if (text.length > MAX_CHARS) {\n text = text.slice(0, MAX_CHARS) + '\\n\\n_(truncated)_\\n'\n }\n const t = text.trim()\n if (t) {\n return `### Contributed review notes\\n\\n_Pasted or file-based (no CI API key)._ \\n\\n${t}`\n }\n } catch {\n /* missing file is OK */\n }\n }\n\n const inline = process.env.FRONTGUARD_MANUAL_APPENDIX?.trim()\n if (inline) {\n let text = inline\n if (text.length > MAX_CHARS) {\n text = text.slice(0, MAX_CHARS) + '\\n\\n_(truncated)_\\n'\n }\n return `### Contributed review notes\\n\\n${text.trim()}`\n }\n\n return null\n}\n","import type { FrontGuardConfig } from '../config/schema.js'\nimport { getFetch } from '../lib/http-fetch.js'\nimport type { CheckResult, PrContext } from '../types.js'\nimport { gitDiffForReview, gitOk, resolveDiffBaseRef } from '../runner/git.js'\nimport { callOllamaChat } from './ollama.js'\n\nfunction safeGetEnv(name: string): string | undefined {\n const v = process.env[name]\n return v && v.trim() ? v : undefined\n}\n\nexport async function runLlmReview(opts: {\n cwd: string\n config: FrontGuardConfig\n pr: PrContext | null\n results: CheckResult[]\n}): Promise<string | null> {\n const { cwd, config, pr, results } = opts\n const cfg = config.checks.llm\n if (!cfg.enabled) return null\n\n if (cfg.provider !== 'ollama') {\n const apiKey = safeGetEnv(cfg.apiKeyEnv)\n if (!apiKey) {\n if (process.env.FRONTGUARD_LLM_SHOW_NO_KEY_HINT !== '1') {\n return null\n }\n return [\n '### AI review (automated CI)',\n '',\n '_No API key in this environment._ IDE credentials do not reach CI runners.',\n '',\n '**Options:**',\n '1. **Manual** — Paste notes into a file, then `frontguard run --append ./notes.md` (or `FRONTGUARD_MANUAL_APPENDIX_FILE`).',\n `2. **Org CI** — Map an approved inference key to \\`${cfg.apiKeyEnv}\\` via your secret store.`,\n '3. **Local Ollama** — Set `checks.llm.provider` to `\"ollama\"` (no API key; see docs).',\n ].join('\\n')\n }\n }\n\n if (!(await gitOk(cwd))) {\n return '_LLM review skipped: not a git repository_'\n }\n\n const base = await resolveDiffBaseRef(cwd, config.checks.tsAnyDelta.baseRef)\n const diff = await gitDiffForReview(cwd, base, cfg.maxDiffChars)\n if (!diff.trim()) {\n return '_LLM review skipped: empty diff vs base_'\n }\n\n const summaryLines = results\n .flatMap((r) => r.findings.map((f) => `- [${f.severity}] ${r.checkId}: ${f.message}`))\n .slice(0, 40)\n .join('\\n')\n\n const prompt = [\n 'You are a senior frontend reviewer. Respond in Markdown with short sections:',\n '### Summary',\n '### Risk hotspots (files / themes)',\n '### Logic / correctness smells',\n '### Tests & regressions',\n '',\n 'Constraints:',\n '- Be specific to this diff; avoid generic advice.',\n '- If uncertain, say what you need to verify manually.',\n '',\n pr\n ? `PR title: ${pr.title}\\nPR body excerpt:\\n${pr.body.slice(0, 2000)}`\n : 'No PR context from the event payload (local run).',\n '',\n 'Existing automated findings (may be incomplete):',\n summaryLines || '(none)',\n '',\n 'Git diff (may be truncated):',\n '```diff',\n diff,\n '```',\n ].join('\\n')\n\n if (cfg.provider === 'ollama') {\n try {\n const text = await callOllamaChat({\n baseUrl: cfg.ollamaUrl,\n model: cfg.model,\n prompt,\n timeoutMs: cfg.timeoutMs,\n })\n return `### AI review (non-binding, Ollama)\\n\\n${text}`\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e)\n return `_Ollama request failed: ${msg}_`\n }\n }\n\n const apiKey = safeGetEnv(cfg.apiKeyEnv)!\n const controller = new AbortController()\n const t = setTimeout(() => controller.abort(), cfg.timeoutMs)\n\n try {\n if (cfg.provider === 'anthropic') {\n const text = await callAnthropic(cfg.model, apiKey, prompt, controller.signal)\n return `### AI review (non-binding)\\n\\n${text}`\n }\n const text = await callOpenAI(cfg.model, apiKey, prompt, controller.signal)\n return `### AI review (non-binding)\\n\\n${text}`\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e)\n return `_LLM request failed: ${msg}_`\n } finally {\n clearTimeout(t)\n }\n}\n\nasync function callOpenAI(\n model: string,\n apiKey: string,\n prompt: string,\n signal: AbortSignal,\n): Promise<string> {\n const fetch = getFetch()\n const res = await fetch('https://api.openai.com/v1/chat/completions', {\n method: 'POST',\n signal,\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${apiKey}`,\n },\n body: JSON.stringify({\n model,\n temperature: 0.2,\n messages: [\n {\n role: 'system',\n content:\n 'You audit frontend pull requests. Output concise Markdown. No preamble about being an AI.',\n },\n { role: 'user', content: prompt },\n ],\n }),\n })\n\n if (!res.ok) {\n const t = await res.text()\n throw new Error(`OpenAI HTTP ${res.status}: ${t.slice(0, 500)}`)\n }\n\n const data = (await res.json()) as {\n choices?: Array<{ message?: { content?: string } }>\n }\n const text = data.choices?.[0]?.message?.content?.trim()\n if (!text) throw new Error('OpenAI returned empty content')\n return text\n}\n\nasync function callAnthropic(\n model: string,\n apiKey: string,\n prompt: string,\n signal: AbortSignal,\n): Promise<string> {\n const fetch = getFetch()\n const res = await fetch('https://api.anthropic.com/v1/messages', {\n method: 'POST',\n signal,\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-key': apiKey,\n 'anthropic-version': '2023-06-01',\n },\n body: JSON.stringify({\n model,\n max_tokens: 4096,\n temperature: 0.2,\n messages: [{ role: 'user', content: prompt }],\n }),\n })\n\n if (!res.ok) {\n const t = await res.text()\n throw new Error(`Anthropic HTTP ${res.status}: ${t.slice(0, 500)}`)\n }\n\n const data = (await res.json()) as {\n content?: Array<{ type?: string; text?: string }>\n }\n const text = data.content\n ?.map((b) => (b.type === 'text' ? b.text : ''))\n .join('')\n .trim()\n\n if (!text) throw new Error('Anthropic returned empty content')\n return text\n}\n","import fs from 'node:fs/promises'\nimport path from 'node:path'\nimport process from 'node:process'\nimport { formatBitbucketPrSnippet } from '../ci/bitbucket-pr-snippet.js'\nimport { readPrContext } from '../ci/pr-context.js'\nimport { loadConfig } from '../config/load.js'\nimport { detectStack } from '../detect/stack.js'\nimport { runEslint } from '../checks/eslint.js'\nimport { runPrettier } from '../checks/prettier.js'\nimport { runTypeScript } from '../checks/typescript.js'\nimport { runSecrets } from '../checks/secrets.js'\nimport { runPrHygiene } from '../checks/pr-hygiene.js'\nimport { runPrSize } from '../checks/pr-size.js'\nimport { runTsAnyDelta } from '../checks/ts-any-delta.js'\nimport { runCycles } from '../checks/cycles.js'\nimport { runDeadCode } from '../checks/dead-code.js'\nimport { runBundle } from '../checks/bundle.js'\nimport { runCoreWebVitals } from '../checks/core-web-vitals.js'\nimport { runCustomRules } from '../checks/custom-rules.js'\nimport { runAiAssistedStrict } from '../checks/ai-assisted-strict.js'\nimport { applyAiAssistedEscalation } from '../runner/ai-escalation.js'\nimport { renderChecksSnapshotPng } from '../runner/checks-snapshot-png.js'\nimport { buildReport } from '../report/builder.js'\nimport { enrichFindingsWithOllamaFixes } from '../llm/finding-fixes.js'\nimport { loadManualAppendix } from '../llm/manual-appendix.js'\nimport { runLlmReview } from '../llm/review.js'\nimport type { GuardMode } from '../config/schema.js'\nimport type { CheckResult } from '../types.js'\n\nexport interface RunOptions {\n cwd: string\n markdown: boolean\n /** Force failing CI when `block` findings exist */\n enforce?: boolean\n /** Markdown file to append (e.g. paste from IDE chat / external LLM) */\n append?: string | null\n /** Write a self-contained HTML report (rich UI; link from PR comments) */\n htmlOut?: string | null\n /** Write HTML containing only the Checks table (screenshot for PR comments; see FRONTGUARD_CHECKS_IMAGE_URL) */\n checksSnapshotOut?: string | null\n /** Write PNG of the checks snapshot (SVG → PNG via resvg; no browser). Implies building the snapshot HTML. */\n checksPngOut?: string | null\n /** Short Markdown for Bitbucket PR comment when posting HTML as an artifact */\n prCommentOut?: string | null\n}\n\nexport async function runFrontGuard(opts: RunOptions): Promise<void> {\n const config = await loadConfig(opts.cwd)\n const mode: GuardMode = opts.enforce ? 'enforce' : config.mode\n\n const stack = await detectStack(opts.cwd)\n const pr = readPrContext(opts.cwd)\n\n const restrictFiles = pr?.files?.length ? pr.files : null\n\n const [\n eslint,\n prettier,\n typescript,\n secrets,\n cycles,\n deadCode,\n coreWebVitals,\n tsAnyDelta,\n customRules,\n aiStrict,\n ] = await Promise.all([\n runEslint(opts.cwd, config, stack, pr),\n runPrettier(opts.cwd, config, pr),\n runTypeScript(opts.cwd, config, stack, pr),\n runSecrets(opts.cwd, config, pr),\n runCycles(opts.cwd, config, stack, pr),\n runDeadCode(opts.cwd, config, stack, pr),\n runCoreWebVitals(opts.cwd, config, stack, pr),\n runTsAnyDelta(opts.cwd, config, stack),\n runCustomRules(opts.cwd, config, restrictFiles),\n runAiAssistedStrict(opts.cwd, config, pr),\n ])\n\n const bundle = await runBundle(opts.cwd, config, stack)\n\n const prHygiene = runPrHygiene(config, pr)\n const prSize = runPrSize(config, pr)\n\n let results: CheckResult[] = [\n eslint,\n prettier,\n typescript,\n secrets,\n cycles,\n deadCode,\n bundle,\n coreWebVitals,\n aiStrict,\n prHygiene,\n prSize,\n tsAnyDelta,\n customRules,\n ]\n\n applyAiAssistedEscalation(results, pr, config)\n\n results = await enrichFindingsWithOllamaFixes({\n cwd: opts.cwd,\n config,\n stack,\n results,\n })\n\n const manualAppendix = await loadManualAppendix({\n cwd: opts.cwd,\n filePath: opts.append ?? null,\n })\n const automatedAppendix = await runLlmReview({\n cwd: opts.cwd,\n config,\n pr,\n results,\n })\n const llmAppendix =\n [manualAppendix, automatedAppendix].filter(Boolean).join('\\n\\n') || null\n\n const report = buildReport(stack, pr, results, {\n mode,\n llmAppendix,\n cwd: opts.cwd,\n emitHtml: Boolean(opts.htmlOut),\n emitChecksSnapshot: Boolean(opts.checksSnapshotOut || opts.checksPngOut),\n })\n\n if (opts.htmlOut && report.html) {\n await fs.writeFile(opts.htmlOut, report.html, 'utf8')\n }\n\n let embedPngPath: string | null = null\n\n if ((opts.checksSnapshotOut || opts.checksPngOut) && report.checksSnapshotHtml && report.checksSnapshotInput) {\n if (opts.checksSnapshotOut) {\n const snapPath = path.isAbsolute(opts.checksSnapshotOut)\n ? opts.checksSnapshotOut\n : path.join(opts.cwd, opts.checksSnapshotOut)\n await fs.writeFile(snapPath, report.checksSnapshotHtml, 'utf8')\n process.stderr.write(`\\nFrontGuard: wrote checks snapshot HTML to ${snapPath}\\n`)\n }\n\n if (opts.checksPngOut) {\n const pngAbs = path.isAbsolute(opts.checksPngOut)\n ? opts.checksPngOut\n : path.join(opts.cwd, opts.checksPngOut)\n await renderChecksSnapshotPng(pngAbs, report.checksSnapshotInput)\n embedPngPath = pngAbs\n process.stderr.write(`FrontGuard: wrote checks PNG to ${pngAbs}.\\n\\n`)\n } else if (opts.checksSnapshotOut) {\n process.stderr.write(\n ` Tip: add --checksPngOut checks.png to render the checks table to a PNG (no browser).\\n\\n`,\n )\n }\n }\n\n if (opts.prCommentOut) {\n if (embedPngPath) {\n process.env.FRONTGUARD_EMBED_CHECKS_PNG_PATH = embedPngPath\n }\n const snippet = formatBitbucketPrSnippet(report)\n delete process.env.FRONTGUARD_EMBED_CHECKS_PNG_PATH\n const abs = path.isAbsolute(opts.prCommentOut)\n ? opts.prCommentOut\n : path.join(opts.cwd, opts.prCommentOut)\n await fs.writeFile(abs, snippet, 'utf8')\n process.stderr.write(\n `\\nFrontGuard: wrote Bitbucket PR comment text to ${abs} (${snippet.length} bytes).\\n` +\n ' Use ONLY this file in your POST …/pullrequests/{id}/comments payload (content.raw).\\n' +\n ' Do not post frontguard-report.md or captured stdout — that is the long markdown log.\\n' +\n ' With --checksPngOut, the PNG is inlined (small files only) or set FRONTGUARD_CHECKS_IMAGE_URL.\\n\\n',\n )\n }\n\n if (opts.markdown) {\n process.stdout.write(report.markdown + '\\n')\n } else {\n process.stdout.write(report.consoleText + '\\n\\n')\n process.stdout.write(report.markdown + '\\n')\n }\n\n const hasBlock = results.some((r) => r.findings.some((f) => f.severity === 'block'))\n process.exitCode = mode === 'enforce' && hasBlock ? 1 : 0\n}\n","#!/usr/bin/env node\nimport process from 'node:process'\nimport { defineCommand, runMain } from 'citty'\nimport { initFrontGuard } from './commands/init.js'\nimport { runFrontGuard } from './commands/run.js'\n\nconst init = defineCommand({\n meta: {\n name: 'init',\n description:\n 'Add Bitbucket pipeline example, pull_request_template.md, and frontguard.config.js',\n },\n run: async () => {\n const cwd = process.cwd()\n await initFrontGuard(cwd)\n process.stdout.write(\n 'FrontGuard initialized for Bitbucket.\\n\\n' +\n ' • bitbucket-pipelines.frontguard.example.yml — merge into your pipeline\\n' +\n ' • pull_request_template.md — PR description template (Bitbucket Cloud)\\n' +\n ' • frontguard.config.js (if missing)\\n\\n' +\n 'Add the package as a devDependency so CI matches local runs:\\n' +\n ' npm install -D @cleartrip/frontguard\\n' +\n ' yarn add -D @cleartrip/frontguard\\n',\n )\n },\n})\n\nconst run = defineCommand({\n meta: {\n name: 'run',\n description: 'Run checks and print the review brief',\n },\n args: {\n markdown: {\n type: 'boolean',\n description: 'Print markdown only',\n default: false,\n },\n enforce: {\n type: 'boolean',\n description: 'Exit non-zero if any finding has severity block',\n default: false,\n },\n append: {\n type: 'string',\n description:\n 'Append markdown from a file (paste from IDE/ChatGPT/Claude; no CI API key needed)',\n },\n htmlOut: {\n type: 'string',\n description:\n 'Write interactive HTML report (use with CI artifacts; PR comment links to download)',\n },\n checksSnapshotOut: {\n type: 'string',\n description: 'Write HTML with only the Checks table (for screenshots / PR comments)',\n },\n checksPngOut: {\n type: 'string',\n description:\n 'Write PNG of the checks table (SVG raster; @resvg/resvg-js, no browser). Pair with --checksSnapshotOut or use alone',\n },\n prCommentOut: {\n type: 'string',\n description:\n 'Write short Markdown for Bitbucket PR comment (summary + pipeline link for HTML artifact)',\n },\n },\n run: async ({ args }) => {\n await runFrontGuard({\n cwd: process.cwd(),\n markdown: Boolean(args.markdown),\n enforce: Boolean(args.enforce),\n append: typeof args.append === 'string' ? args.append : null,\n htmlOut: typeof args.htmlOut === 'string' ? args.htmlOut : null,\n checksSnapshotOut:\n typeof args.checksSnapshotOut === 'string' ? args.checksSnapshotOut : null,\n checksPngOut: typeof args.checksPngOut === 'string' ? args.checksPngOut : null,\n prCommentOut:\n typeof args.prCommentOut === 'string' ? args.prCommentOut : null,\n })\n },\n})\n\nconst main = defineCommand({\n meta: { name: 'frontguard', description: 'FrontGuard — frontend PR guardrails' },\n subCommands: { init, run },\n})\n\nrunMain(main)\n"]}
|
|
1
|
+
{"version":3,"sources":["../node_modules/consola/dist/chunks/prompt.mjs","../node_modules/picocolors/picocolors.js","../node_modules/consola/dist/core.mjs","../node_modules/consola/dist/shared/consola.DRwqZj3T.mjs","../node_modules/consola/dist/shared/consola.DXBYu-KD.mjs","../node_modules/consola/dist/index.mjs","../node_modules/citty/dist/index.mjs","../src/commands/init.ts","../src/lib/bitbucket-checks-image-md.ts","../src/ci/bitbucket-pr-snippet.ts","../src/ci/parse-ai-disclosure.ts","../src/ci/pr-context.ts","../node_modules/defu/dist/defu.mjs","../src/config/defaults.ts","../src/config/migrate.ts","../src/config/load.ts","../src/detect/stack.ts","../src/lib/pr-scope.ts","../src/lib/repo-paths.ts","../node_modules/tinyexec/dist/main.mjs","../src/runner/exec-tools.ts","../src/checks/eslint.ts","../src/checks/prettier.ts","../src/checks/typescript.ts","../src/checks/secrets.ts","../src/checks/pr-hygiene.ts","../src/checks/pr-size.ts","../src/runner/git.ts","../src/checks/ts-any-delta.ts","../src/checks/cycles.ts","../src/checks/dead-code.ts","../src/checks/bundle.ts","../src/checks/core-web-vitals.ts","../src/checks/custom-rules.ts","../src/lib/ai-discarded-expensive-call.ts","../src/lib/ai-decorators.ts","../src/checks/ai-assisted-strict.ts","../src/runner/ai-escalation.ts","../src/runner/checks-snapshot-png.ts","../src/report/builder.ts","../src/lib/html-escape.ts","../src/report/check-descriptions.ts","../src/report/html-report.ts","../src/lib/http-fetch.ts","../src/llm/ollama.ts","../src/llm/finding-fixes.ts","../src/llm/manual-appendix.ts","../src/llm/review.ts","../src/commands/run.ts","../src/cli.ts"],"names":["x","y","i","p","argv","env","isColorSupported","replaceClose","createColors","f","t","F","u","e","s","C","D","o","E","a","n","B","r","c","l","M","v","j","exports","I","T","g","R","A","_","O","L","S","N","G","P","ansiRegex","stripAnsi","g$1","m","getColor","createConsola","k","path","d","isPlainObject","_defu","createDefu","defu","fs","ts","h","b","w","z","V","W","stdout","truncate","gateSeverity","fg","sev","init","PATTERNS","formatDuration","q","parseLineHint","he","pc","prompt","apiKey","text","process"],"mappings":"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","file":"cli.js","sourcesContent":["import 'node:util';\nimport g, { stdin, stdout } from 'node:process';\nimport f from 'node:readline';\nimport { WriteStream } from 'node:tty';\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nvar src;\nvar hasRequiredSrc;\n\nfunction requireSrc () {\n\tif (hasRequiredSrc) return src;\n\thasRequiredSrc = 1;\n\n\tconst ESC = '\\x1B';\n\tconst CSI = `${ESC}[`;\n\tconst beep = '\\u0007';\n\n\tconst cursor = {\n\t to(x, y) {\n\t if (!y) return `${CSI}${x + 1}G`;\n\t return `${CSI}${y + 1};${x + 1}H`;\n\t },\n\t move(x, y) {\n\t let ret = '';\n\n\t if (x < 0) ret += `${CSI}${-x}D`;\n\t else if (x > 0) ret += `${CSI}${x}C`;\n\n\t if (y < 0) ret += `${CSI}${-y}A`;\n\t else if (y > 0) ret += `${CSI}${y}B`;\n\n\t return ret;\n\t },\n\t up: (count = 1) => `${CSI}${count}A`,\n\t down: (count = 1) => `${CSI}${count}B`,\n\t forward: (count = 1) => `${CSI}${count}C`,\n\t backward: (count = 1) => `${CSI}${count}D`,\n\t nextLine: (count = 1) => `${CSI}E`.repeat(count),\n\t prevLine: (count = 1) => `${CSI}F`.repeat(count),\n\t left: `${CSI}G`,\n\t hide: `${CSI}?25l`,\n\t show: `${CSI}?25h`,\n\t save: `${ESC}7`,\n\t restore: `${ESC}8`\n\t};\n\n\tconst scroll = {\n\t up: (count = 1) => `${CSI}S`.repeat(count),\n\t down: (count = 1) => `${CSI}T`.repeat(count)\n\t};\n\n\tconst erase = {\n\t screen: `${CSI}2J`,\n\t up: (count = 1) => `${CSI}1J`.repeat(count),\n\t down: (count = 1) => `${CSI}J`.repeat(count),\n\t line: `${CSI}2K`,\n\t lineEnd: `${CSI}K`,\n\t lineStart: `${CSI}1K`,\n\t lines(count) {\n\t let clear = '';\n\t for (let i = 0; i < count; i++)\n\t clear += this.line + (i < count - 1 ? cursor.up() : '');\n\t if (count)\n\t clear += cursor.left;\n\t return clear;\n\t }\n\t};\n\n\tsrc = { cursor, scroll, erase, beep };\n\treturn src;\n}\n\nvar srcExports = requireSrc();\n\nvar picocolors = {exports: {}};\n\nvar hasRequiredPicocolors;\n\nfunction requirePicocolors () {\n\tif (hasRequiredPicocolors) return picocolors.exports;\n\thasRequiredPicocolors = 1;\n\tlet p = process || {}, argv = p.argv || [], env = p.env || {};\n\tlet isColorSupported =\n\t\t!(!!env.NO_COLOR || argv.includes(\"--no-color\")) &&\n\t\t(!!env.FORCE_COLOR || argv.includes(\"--color\") || p.platform === \"win32\" || ((p.stdout || {}).isTTY && env.TERM !== \"dumb\") || !!env.CI);\n\n\tlet formatter = (open, close, replace = open) =>\n\t\tinput => {\n\t\t\tlet string = \"\" + input, index = string.indexOf(close, open.length);\n\t\t\treturn ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close\n\t\t};\n\n\tlet replaceClose = (string, close, replace, index) => {\n\t\tlet result = \"\", cursor = 0;\n\t\tdo {\n\t\t\tresult += string.substring(cursor, index) + replace;\n\t\t\tcursor = index + close.length;\n\t\t\tindex = string.indexOf(close, cursor);\n\t\t} while (~index)\n\t\treturn result + string.substring(cursor)\n\t};\n\n\tlet createColors = (enabled = isColorSupported) => {\n\t\tlet f = enabled ? formatter : () => String;\n\t\treturn {\n\t\t\tisColorSupported: enabled,\n\t\t\treset: f(\"\\x1b[0m\", \"\\x1b[0m\"),\n\t\t\tbold: f(\"\\x1b[1m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[1m\"),\n\t\t\tdim: f(\"\\x1b[2m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[2m\"),\n\t\t\titalic: f(\"\\x1b[3m\", \"\\x1b[23m\"),\n\t\t\tunderline: f(\"\\x1b[4m\", \"\\x1b[24m\"),\n\t\t\tinverse: f(\"\\x1b[7m\", \"\\x1b[27m\"),\n\t\t\thidden: f(\"\\x1b[8m\", \"\\x1b[28m\"),\n\t\t\tstrikethrough: f(\"\\x1b[9m\", \"\\x1b[29m\"),\n\n\t\t\tblack: f(\"\\x1b[30m\", \"\\x1b[39m\"),\n\t\t\tred: f(\"\\x1b[31m\", \"\\x1b[39m\"),\n\t\t\tgreen: f(\"\\x1b[32m\", \"\\x1b[39m\"),\n\t\t\tyellow: f(\"\\x1b[33m\", \"\\x1b[39m\"),\n\t\t\tblue: f(\"\\x1b[34m\", \"\\x1b[39m\"),\n\t\t\tmagenta: f(\"\\x1b[35m\", \"\\x1b[39m\"),\n\t\t\tcyan: f(\"\\x1b[36m\", \"\\x1b[39m\"),\n\t\t\twhite: f(\"\\x1b[37m\", \"\\x1b[39m\"),\n\t\t\tgray: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\n\t\t\tbgBlack: f(\"\\x1b[40m\", \"\\x1b[49m\"),\n\t\t\tbgRed: f(\"\\x1b[41m\", \"\\x1b[49m\"),\n\t\t\tbgGreen: f(\"\\x1b[42m\", \"\\x1b[49m\"),\n\t\t\tbgYellow: f(\"\\x1b[43m\", \"\\x1b[49m\"),\n\t\t\tbgBlue: f(\"\\x1b[44m\", \"\\x1b[49m\"),\n\t\t\tbgMagenta: f(\"\\x1b[45m\", \"\\x1b[49m\"),\n\t\t\tbgCyan: f(\"\\x1b[46m\", \"\\x1b[49m\"),\n\t\t\tbgWhite: f(\"\\x1b[47m\", \"\\x1b[49m\"),\n\n\t\t\tblackBright: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\t\t\tredBright: f(\"\\x1b[91m\", \"\\x1b[39m\"),\n\t\t\tgreenBright: f(\"\\x1b[92m\", \"\\x1b[39m\"),\n\t\t\tyellowBright: f(\"\\x1b[93m\", \"\\x1b[39m\"),\n\t\t\tblueBright: f(\"\\x1b[94m\", \"\\x1b[39m\"),\n\t\t\tmagentaBright: f(\"\\x1b[95m\", \"\\x1b[39m\"),\n\t\t\tcyanBright: f(\"\\x1b[96m\", \"\\x1b[39m\"),\n\t\t\twhiteBright: f(\"\\x1b[97m\", \"\\x1b[39m\"),\n\n\t\t\tbgBlackBright: f(\"\\x1b[100m\", \"\\x1b[49m\"),\n\t\t\tbgRedBright: f(\"\\x1b[101m\", \"\\x1b[49m\"),\n\t\t\tbgGreenBright: f(\"\\x1b[102m\", \"\\x1b[49m\"),\n\t\t\tbgYellowBright: f(\"\\x1b[103m\", \"\\x1b[49m\"),\n\t\t\tbgBlueBright: f(\"\\x1b[104m\", \"\\x1b[49m\"),\n\t\t\tbgMagentaBright: f(\"\\x1b[105m\", \"\\x1b[49m\"),\n\t\t\tbgCyanBright: f(\"\\x1b[106m\", \"\\x1b[49m\"),\n\t\t\tbgWhiteBright: f(\"\\x1b[107m\", \"\\x1b[49m\"),\n\t\t}\n\t};\n\n\tpicocolors.exports = createColors();\n\tpicocolors.exports.createColors = createColors;\n\treturn picocolors.exports;\n}\n\nvar picocolorsExports = /*@__PURE__*/ requirePicocolors();\nconst e = /*@__PURE__*/getDefaultExportFromCjs(picocolorsExports);\n\nfunction J({onlyFirst:t=false}={}){const F=[\"[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?(?:\\\\u0007|\\\\u001B\\\\u005C|\\\\u009C))\",\"(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]))\"].join(\"|\");return new RegExp(F,t?void 0:\"g\")}const Q=J();function T$1(t){if(typeof t!=\"string\")throw new TypeError(`Expected a \\`string\\`, got \\`${typeof t}\\``);return t.replace(Q,\"\")}function O(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,\"default\")?t.default:t}var P$1={exports:{}};(function(t){var u={};t.exports=u,u.eastAsianWidth=function(e){var s=e.charCodeAt(0),i=e.length==2?e.charCodeAt(1):0,D=s;return 55296<=s&&s<=56319&&56320<=i&&i<=57343&&(s&=1023,i&=1023,D=s<<10|i,D+=65536),D==12288||65281<=D&&D<=65376||65504<=D&&D<=65510?\"F\":D==8361||65377<=D&&D<=65470||65474<=D&&D<=65479||65482<=D&&D<=65487||65490<=D&&D<=65495||65498<=D&&D<=65500||65512<=D&&D<=65518?\"H\":4352<=D&&D<=4447||4515<=D&&D<=4519||4602<=D&&D<=4607||9001<=D&&D<=9002||11904<=D&&D<=11929||11931<=D&&D<=12019||12032<=D&&D<=12245||12272<=D&&D<=12283||12289<=D&&D<=12350||12353<=D&&D<=12438||12441<=D&&D<=12543||12549<=D&&D<=12589||12593<=D&&D<=12686||12688<=D&&D<=12730||12736<=D&&D<=12771||12784<=D&&D<=12830||12832<=D&&D<=12871||12880<=D&&D<=13054||13056<=D&&D<=19903||19968<=D&&D<=42124||42128<=D&&D<=42182||43360<=D&&D<=43388||44032<=D&&D<=55203||55216<=D&&D<=55238||55243<=D&&D<=55291||63744<=D&&D<=64255||65040<=D&&D<=65049||65072<=D&&D<=65106||65108<=D&&D<=65126||65128<=D&&D<=65131||110592<=D&&D<=110593||127488<=D&&D<=127490||127504<=D&&D<=127546||127552<=D&&D<=127560||127568<=D&&D<=127569||131072<=D&&D<=194367||177984<=D&&D<=196605||196608<=D&&D<=262141?\"W\":32<=D&&D<=126||162<=D&&D<=163||165<=D&&D<=166||D==172||D==175||10214<=D&&D<=10221||10629<=D&&D<=10630?\"Na\":D==161||D==164||167<=D&&D<=168||D==170||173<=D&&D<=174||176<=D&&D<=180||182<=D&&D<=186||188<=D&&D<=191||D==198||D==208||215<=D&&D<=216||222<=D&&D<=225||D==230||232<=D&&D<=234||236<=D&&D<=237||D==240||242<=D&&D<=243||247<=D&&D<=250||D==252||D==254||D==257||D==273||D==275||D==283||294<=D&&D<=295||D==299||305<=D&&D<=307||D==312||319<=D&&D<=322||D==324||328<=D&&D<=331||D==333||338<=D&&D<=339||358<=D&&D<=359||D==363||D==462||D==464||D==466||D==468||D==470||D==472||D==474||D==476||D==593||D==609||D==708||D==711||713<=D&&D<=715||D==717||D==720||728<=D&&D<=731||D==733||D==735||768<=D&&D<=879||913<=D&&D<=929||931<=D&&D<=937||945<=D&&D<=961||963<=D&&D<=969||D==1025||1040<=D&&D<=1103||D==1105||D==8208||8211<=D&&D<=8214||8216<=D&&D<=8217||8220<=D&&D<=8221||8224<=D&&D<=8226||8228<=D&&D<=8231||D==8240||8242<=D&&D<=8243||D==8245||D==8251||D==8254||D==8308||D==8319||8321<=D&&D<=8324||D==8364||D==8451||D==8453||D==8457||D==8467||D==8470||8481<=D&&D<=8482||D==8486||D==8491||8531<=D&&D<=8532||8539<=D&&D<=8542||8544<=D&&D<=8555||8560<=D&&D<=8569||D==8585||8592<=D&&D<=8601||8632<=D&&D<=8633||D==8658||D==8660||D==8679||D==8704||8706<=D&&D<=8707||8711<=D&&D<=8712||D==8715||D==8719||D==8721||D==8725||D==8730||8733<=D&&D<=8736||D==8739||D==8741||8743<=D&&D<=8748||D==8750||8756<=D&&D<=8759||8764<=D&&D<=8765||D==8776||D==8780||D==8786||8800<=D&&D<=8801||8804<=D&&D<=8807||8810<=D&&D<=8811||8814<=D&&D<=8815||8834<=D&&D<=8835||8838<=D&&D<=8839||D==8853||D==8857||D==8869||D==8895||D==8978||9312<=D&&D<=9449||9451<=D&&D<=9547||9552<=D&&D<=9587||9600<=D&&D<=9615||9618<=D&&D<=9621||9632<=D&&D<=9633||9635<=D&&D<=9641||9650<=D&&D<=9651||9654<=D&&D<=9655||9660<=D&&D<=9661||9664<=D&&D<=9665||9670<=D&&D<=9672||D==9675||9678<=D&&D<=9681||9698<=D&&D<=9701||D==9711||9733<=D&&D<=9734||D==9737||9742<=D&&D<=9743||9748<=D&&D<=9749||D==9756||D==9758||D==9792||D==9794||9824<=D&&D<=9825||9827<=D&&D<=9829||9831<=D&&D<=9834||9836<=D&&D<=9837||D==9839||9886<=D&&D<=9887||9918<=D&&D<=9919||9924<=D&&D<=9933||9935<=D&&D<=9953||D==9955||9960<=D&&D<=9983||D==10045||D==10071||10102<=D&&D<=10111||11093<=D&&D<=11097||12872<=D&&D<=12879||57344<=D&&D<=63743||65024<=D&&D<=65039||D==65533||127232<=D&&D<=127242||127248<=D&&D<=127277||127280<=D&&D<=127337||127344<=D&&D<=127386||917760<=D&&D<=917999||983040<=D&&D<=1048573||1048576<=D&&D<=1114109?\"A\":\"N\"},u.characterLength=function(e){var s=this.eastAsianWidth(e);return s==\"F\"||s==\"W\"||s==\"A\"?2:1};function F(e){return e.match(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[^\\uD800-\\uDFFF]/g)||[]}u.length=function(e){for(var s=F(e),i=0,D=0;D<s.length;D++)i=i+this.characterLength(s[D]);return i},u.slice=function(e,s,i){textLen=u.length(e),s=s||0,i=i||1,s<0&&(s=textLen+s),i<0&&(i=textLen+i);for(var D=\"\",C=0,o=F(e),E=0;E<o.length;E++){var a=o[E],n=u.length(a);if(C>=s-(n==2?1:0))if(C+n<=i)D+=a;else break;C+=n;}return D};})(P$1);var X=P$1.exports;const DD=O(X);var uD=function(){return /\\uD83C\\uDFF4\\uDB40\\uDC67\\uDB40\\uDC62(?:\\uDB40\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73|\\uDB40\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDB40\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67)\\uDB40\\uDC7F|(?:\\uD83E\\uDDD1\\uD83C\\uDFFF\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB-\\uDFFE])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFE\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFD\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFC\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFB\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFB\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFC-\\uDFFF])|\\uD83D\\uDC68(?:\\uD83C\\uDFFB(?:\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF]))|\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFC-\\uDFFF])|[\\u2695\\u2696\\u2708]\\uFE0F|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))?|(?:\\uD83C[\\uDFFC-\\uDFFF])\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF]))|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83D\\uDC68|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFE])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])\\uFE0F|\\u200D(?:(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83D[\\uDC66\\uDC67])|\\uD83C\\uDFFF|\\uD83C\\uDFFE|\\uD83C\\uDFFD|\\uD83C\\uDFFC)?|(?:\\uD83D\\uDC69(?:\\uD83C\\uDFFB\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69])|(?:\\uD83C[\\uDFFC-\\uDFFF])\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69]))|\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1)(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC69(?:\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83E\\uDDD1(?:\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D\\uDC41\\uFE0F\\u200D\\uD83D\\uDDE8|\\uD83E\\uDDD1(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|\\uD83D\\uDC69(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|\\uD83D\\uDE36\\u200D\\uD83C\\uDF2B|\\uD83C\\uDFF3\\uFE0F\\u200D\\u26A7|\\uD83D\\uDC3B\\u200D\\u2744|(?:(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF])\\u200D[\\u2640\\u2642]|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|\\uD83C\\uDFF4\\u200D\\u2620|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD])\\u200D[\\u2640\\u2642]|[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u2328\\u23CF\\u23ED-\\u23EF\\u23F1\\u23F2\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB\\u25FC\\u2600-\\u2604\\u260E\\u2611\\u2618\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u2692\\u2694-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A7\\u26B0\\u26B1\\u26C8\\u26CF\\u26D1\\u26D3\\u26E9\\u26F0\\u26F1\\u26F4\\u26F7\\u26F8\\u2702\\u2708\\u2709\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2733\\u2734\\u2744\\u2747\\u2763\\u27A1\\u2934\\u2935\\u2B05-\\u2B07\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDE02\\uDE37\\uDF21\\uDF24-\\uDF2C\\uDF36\\uDF7D\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E\\uDF9F\\uDFCD\\uDFCE\\uDFD4-\\uDFDF\\uDFF5\\uDFF7]|\\uD83D[\\uDC3F\\uDCFD\\uDD49\\uDD4A\\uDD6F\\uDD70\\uDD73\\uDD76-\\uDD79\\uDD87\\uDD8A-\\uDD8D\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA\\uDECB\\uDECD-\\uDECF\\uDEE0-\\uDEE5\\uDEE9\\uDEF0\\uDEF3])\\uFE0F|\\uD83C\\uDFF3\\uFE0F\\u200D\\uD83C\\uDF08|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66|\\uD83D\\uDE35\\u200D\\uD83D\\uDCAB|\\uD83D\\uDE2E\\u200D\\uD83D\\uDCA8|\\uD83D\\uDC15\\u200D\\uD83E\\uDDBA|\\uD83E\\uDDD1(?:\\uD83C\\uDFFF|\\uD83C\\uDFFE|\\uD83C\\uDFFD|\\uD83C\\uDFFC|\\uD83C\\uDFFB)?|\\uD83D\\uDC69(?:\\uD83C\\uDFFF|\\uD83C\\uDFFE|\\uD83C\\uDFFD|\\uD83C\\uDFFC|\\uD83C\\uDFFB)?|\\uD83C\\uDDFD\\uD83C\\uDDF0|\\uD83C\\uDDF6\\uD83C\\uDDE6|\\uD83C\\uDDF4\\uD83C\\uDDF2|\\uD83D\\uDC08\\u200D\\u2B1B|\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDD25|\\uD83E\\uDE79)|\\uD83D\\uDC41\\uFE0F|\\uD83C\\uDFF3\\uFE0F|\\uD83C\\uDDFF(?:\\uD83C[\\uDDE6\\uDDF2\\uDDFC])|\\uD83C\\uDDFE(?:\\uD83C[\\uDDEA\\uDDF9])|\\uD83C\\uDDFC(?:\\uD83C[\\uDDEB\\uDDF8])|\\uD83C\\uDDFB(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA])|\\uD83C\\uDDFA(?:\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF])|\\uD83C\\uDDF9(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF])|\\uD83C\\uDDF8(?:\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF])|\\uD83C\\uDDF7(?:\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC])|\\uD83C\\uDDF5(?:\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE])|\\uD83C\\uDDF3(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF])|\\uD83C\\uDDF2(?:\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF])|\\uD83C\\uDDF1(?:\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE])|\\uD83C\\uDDF0(?:\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDEF(?:\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5])|\\uD83C\\uDDEE(?:\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9])|\\uD83C\\uDDED(?:\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA])|\\uD83C\\uDDEC(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE])|\\uD83C\\uDDEB(?:\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7])|\\uD83C\\uDDEA(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA])|\\uD83C\\uDDE9(?:\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF])|\\uD83C\\uDDE8(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\uDDFF])|\\uD83C\\uDDE7(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDE6(?:\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF])|[#\\*0-9]\\uFE0F\\u20E3|\\u2764\\uFE0F|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDFF4|(?:[\\u270A\\u270B]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDC8F\\uDC91\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC]|\\uD83E[\\uDD0C\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u261D\\u270C\\u270D]|\\uD83D[\\uDD74\\uDD90])(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])|[\\u270A\\u270B]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\uDC08\\uDC15\\uDC3B\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDC8F\\uDC91\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE2E\\uDE35\\uDE36\\uDE4C\\uDE4F\\uDEC0\\uDECC]|\\uD83E[\\uDD0C\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5]|\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD]|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF]|[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF84\\uDF86-\\uDF93\\uDFA0-\\uDFC1\\uDFC5\\uDFC6\\uDFC8\\uDFC9\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC07\\uDC09-\\uDC14\\uDC16-\\uDC3A\\uDC3C-\\uDC3E\\uDC40\\uDC44\\uDC45\\uDC51-\\uDC65\\uDC6A\\uDC79-\\uDC7B\\uDC7D-\\uDC80\\uDC84\\uDC88-\\uDC8E\\uDC90\\uDC92-\\uDCA9\\uDCAB-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDDA4\\uDDFB-\\uDE2D\\uDE2F-\\uDE34\\uDE37-\\uDE44\\uDE48-\\uDE4A\\uDE80-\\uDEA2\\uDEA4-\\uDEB3\\uDEB7-\\uDEBF\\uDEC1-\\uDEC5\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D\\uDD0E\\uDD10-\\uDD17\\uDD1D\\uDD20-\\uDD25\\uDD27-\\uDD2F\\uDD3A\\uDD3F-\\uDD45\\uDD47-\\uDD76\\uDD78\\uDD7A-\\uDDB4\\uDDB7\\uDDBA\\uDDBC-\\uDDCB\\uDDD0\\uDDE0-\\uDDFF\\uDE70-\\uDE74\\uDE78-\\uDE7A\\uDE80-\\uDE86\\uDE90-\\uDEA8\\uDEB0-\\uDEB6\\uDEC0-\\uDEC2\\uDED0-\\uDED6]|(?:[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u270A\\u270B\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF93\\uDFA0-\\uDFCA\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF4\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC3E\\uDC40\\uDC42-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDD7A\\uDD95\\uDD96\\uDDA4\\uDDFB-\\uDE4F\\uDE80-\\uDEC5\\uDECC\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0C-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD78\\uDD7A-\\uDDCB\\uDDCD-\\uDDFF\\uDE70-\\uDE74\\uDE78-\\uDE7A\\uDE80-\\uDE86\\uDE90-\\uDEA8\\uDEB0-\\uDEB6\\uDEC0-\\uDEC2\\uDED0-\\uDED6])|(?:[#\\*0-9\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u261D\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A1\\u26A7\\u26AA\\u26AB\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C5\\u26C8\\u26CE\\u26CF\\u26D1\\u26D3\\u26D4\\u26E9\\u26EA\\u26F0-\\u26F5\\u26F7-\\u26FA\\u26FD\\u2702\\u2705\\u2708-\\u270D\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763\\u2764\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC04\\uDCCF\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE02\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF21\\uDF24-\\uDF93\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E-\\uDFF0\\uDFF3-\\uDFF5\\uDFF7-\\uDFFF]|\\uD83D[\\uDC00-\\uDCFD\\uDCFF-\\uDD3D\\uDD49-\\uDD4E\\uDD50-\\uDD67\\uDD6F\\uDD70\\uDD73-\\uDD7A\\uDD87\\uDD8A-\\uDD8D\\uDD90\\uDD95\\uDD96\\uDDA4\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA-\\uDE4F\\uDE80-\\uDEC5\\uDECB-\\uDED2\\uDED5-\\uDED7\\uDEE0-\\uDEE5\\uDEE9\\uDEEB\\uDEEC\\uDEF0\\uDEF3-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0C-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD78\\uDD7A-\\uDDCB\\uDDCD-\\uDDFF\\uDE70-\\uDE74\\uDE78-\\uDE7A\\uDE80-\\uDE86\\uDE90-\\uDEA8\\uDEB0-\\uDEB6\\uDEC0-\\uDEC2\\uDED0-\\uDED6])\\uFE0F|(?:[\\u261D\\u26F9\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2-\\uDFC4\\uDFC7\\uDFCA-\\uDFCC]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66-\\uDC78\\uDC7C\\uDC81-\\uDC83\\uDC85-\\uDC87\\uDC8F\\uDC91\\uDCAA\\uDD74\\uDD75\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE45-\\uDE47\\uDE4B-\\uDE4F\\uDEA3\\uDEB4-\\uDEB6\\uDEC0\\uDECC]|\\uD83E[\\uDD0C\\uDD0F\\uDD18-\\uDD1F\\uDD26\\uDD30-\\uDD39\\uDD3C-\\uDD3E\\uDD77\\uDDB5\\uDDB6\\uDDB8\\uDDB9\\uDDBB\\uDDCD-\\uDDCF\\uDDD1-\\uDDDD])/g};const FD=O(uD);function A$1(t,u={}){if(typeof t!=\"string\"||t.length===0||(u={ambiguousIsNarrow:true,...u},t=T$1(t),t.length===0))return 0;t=t.replace(FD(),\" \");const F=u.ambiguousIsNarrow?1:2;let e=0;for(const s of t){const i=s.codePointAt(0);if(i<=31||i>=127&&i<=159||i>=768&&i<=879)continue;switch(DD.eastAsianWidth(s)){case \"F\":case \"W\":e+=2;break;case \"A\":e+=F;break;default:e+=1;}}return e}const m=10,L$1=(t=0)=>u=>`\\x1B[${u+t}m`,N=(t=0)=>u=>`\\x1B[${38+t};5;${u}m`,I=(t=0)=>(u,F,e)=>`\\x1B[${38+t};2;${u};${F};${e}m`,r={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(r.modifier);const tD=Object.keys(r.color),eD=Object.keys(r.bgColor);[...tD,...eD];function sD(){const t=new Map;for(const[u,F]of Object.entries(r)){for(const[e,s]of Object.entries(F))r[e]={open:`\\x1B[${s[0]}m`,close:`\\x1B[${s[1]}m`},F[e]=r[e],t.set(s[0],s[1]);Object.defineProperty(r,u,{value:F,enumerable:false});}return Object.defineProperty(r,\"codes\",{value:t,enumerable:false}),r.color.close=\"\\x1B[39m\",r.bgColor.close=\"\\x1B[49m\",r.color.ansi=L$1(),r.color.ansi256=N(),r.color.ansi16m=I(),r.bgColor.ansi=L$1(m),r.bgColor.ansi256=N(m),r.bgColor.ansi16m=I(m),Object.defineProperties(r,{rgbToAnsi256:{value:(u,F,e)=>u===F&&F===e?u<8?16:u>248?231:Math.round((u-8)/247*24)+232:16+36*Math.round(u/255*5)+6*Math.round(F/255*5)+Math.round(e/255*5),enumerable:false},hexToRgb:{value:u=>{const F=/[a-f\\d]{6}|[a-f\\d]{3}/i.exec(u.toString(16));if(!F)return [0,0,0];let[e]=F;e.length===3&&(e=[...e].map(i=>i+i).join(\"\"));const s=Number.parseInt(e,16);return [s>>16&255,s>>8&255,s&255]},enumerable:false},hexToAnsi256:{value:u=>r.rgbToAnsi256(...r.hexToRgb(u)),enumerable:false},ansi256ToAnsi:{value:u=>{if(u<8)return 30+u;if(u<16)return 90+(u-8);let F,e,s;if(u>=232)F=((u-232)*10+8)/255,e=F,s=F;else {u-=16;const C=u%36;F=Math.floor(u/36)/5,e=Math.floor(C/6)/5,s=C%6/5;}const i=Math.max(F,e,s)*2;if(i===0)return 30;let D=30+(Math.round(s)<<2|Math.round(e)<<1|Math.round(F));return i===2&&(D+=60),D},enumerable:false},rgbToAnsi:{value:(u,F,e)=>r.ansi256ToAnsi(r.rgbToAnsi256(u,F,e)),enumerable:false},hexToAnsi:{value:u=>r.ansi256ToAnsi(r.hexToAnsi256(u)),enumerable:false}}),r}const iD=sD(),v=new Set([\"\\x1B\",\"\\x9B\"]),CD=39,w$1=\"\\x07\",W$1=\"[\",rD=\"]\",R=\"m\",y=`${rD}8;;`,V$1=t=>`${v.values().next().value}${W$1}${t}${R}`,z=t=>`${v.values().next().value}${y}${t}${w$1}`,ED=t=>t.split(\" \").map(u=>A$1(u)),_=(t,u,F)=>{const e=[...u];let s=false,i=false,D=A$1(T$1(t[t.length-1]));for(const[C,o]of e.entries()){const E=A$1(o);if(D+E<=F?t[t.length-1]+=o:(t.push(o),D=0),v.has(o)&&(s=true,i=e.slice(C+1).join(\"\").startsWith(y)),s){i?o===w$1&&(s=false,i=false):o===R&&(s=false);continue}D+=E,D===F&&C<e.length-1&&(t.push(\"\"),D=0);}!D&&t[t.length-1].length>0&&t.length>1&&(t[t.length-2]+=t.pop());},nD=t=>{const u=t.split(\" \");let F=u.length;for(;F>0&&!(A$1(u[F-1])>0);)F--;return F===u.length?t:u.slice(0,F).join(\" \")+u.slice(F).join(\"\")},oD=(t,u,F={})=>{if(F.trim!==false&&t.trim()===\"\")return \"\";let e=\"\",s,i;const D=ED(t);let C=[\"\"];for(const[E,a]of t.split(\" \").entries()){F.trim!==false&&(C[C.length-1]=C[C.length-1].trimStart());let n=A$1(C[C.length-1]);if(E!==0&&(n>=u&&(F.wordWrap===false||F.trim===false)&&(C.push(\"\"),n=0),(n>0||F.trim===false)&&(C[C.length-1]+=\" \",n++)),F.hard&&D[E]>u){const B=u-n,p=1+Math.floor((D[E]-B-1)/u);Math.floor((D[E]-1)/u)<p&&C.push(\"\"),_(C,a,u);continue}if(n+D[E]>u&&n>0&&D[E]>0){if(F.wordWrap===false&&n<u){_(C,a,u);continue}C.push(\"\");}if(n+D[E]>u&&F.wordWrap===false){_(C,a,u);continue}C[C.length-1]+=a;}F.trim!==false&&(C=C.map(E=>nD(E)));const o=[...C.join(`\n`)];for(const[E,a]of o.entries()){if(e+=a,v.has(a)){const{groups:B}=new RegExp(`(?:\\\\${W$1}(?<code>\\\\d+)m|\\\\${y}(?<uri>.*)${w$1})`).exec(o.slice(E).join(\"\"))||{groups:{}};if(B.code!==void 0){const p=Number.parseFloat(B.code);s=p===CD?void 0:p;}else B.uri!==void 0&&(i=B.uri.length===0?void 0:B.uri);}const n=iD.codes.get(Number(s));o[E+1]===`\n`?(i&&(e+=z(\"\")),s&&n&&(e+=V$1(n))):a===`\n`&&(s&&n&&(e+=V$1(s)),i&&(e+=z(i)));}return e};function G(t,u,F){return String(t).normalize().replace(/\\r\\n/g,`\n`).split(`\n`).map(e=>oD(e,u,F)).join(`\n`)}const aD=[\"up\",\"down\",\"left\",\"right\",\"space\",\"enter\",\"cancel\"],c={actions:new Set(aD),aliases:new Map([[\"k\",\"up\"],[\"j\",\"down\"],[\"h\",\"left\"],[\"l\",\"right\"],[\"\u0003\",\"cancel\"],[\"escape\",\"cancel\"]])};function k$1(t,u){if(typeof t==\"string\")return c.aliases.get(t)===u;for(const F of t)if(F!==void 0&&k$1(F,u))return true;return false}function lD(t,u){if(t===u)return;const F=t.split(`\n`),e=u.split(`\n`),s=[];for(let i=0;i<Math.max(F.length,e.length);i++)F[i]!==e[i]&&s.push(i);return s}globalThis.process.platform.startsWith(\"win\");const S=Symbol(\"clack:cancel\");function d$1(t,u){const F=t;F.isTTY&&F.setRawMode(u);}var AD=Object.defineProperty,pD=(t,u,F)=>u in t?AD(t,u,{enumerable:true,configurable:true,writable:true,value:F}):t[u]=F,h=(t,u,F)=>(pD(t,typeof u!=\"symbol\"?u+\"\":u,F),F);class x{constructor(u,F=true){h(this,\"input\"),h(this,\"output\"),h(this,\"_abortSignal\"),h(this,\"rl\"),h(this,\"opts\"),h(this,\"_render\"),h(this,\"_track\",false),h(this,\"_prevFrame\",\"\"),h(this,\"_subscribers\",new Map),h(this,\"_cursor\",0),h(this,\"state\",\"initial\"),h(this,\"error\",\"\"),h(this,\"value\");const{input:e=stdin,output:s=stdout,render:i,signal:D,...C}=u;this.opts=C,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=i.bind(this),this._track=F,this._abortSignal=D,this.input=e,this.output=s;}unsubscribe(){this._subscribers.clear();}setSubscriber(u,F){const e=this._subscribers.get(u)??[];e.push(F),this._subscribers.set(u,e);}on(u,F){this.setSubscriber(u,{cb:F});}once(u,F){this.setSubscriber(u,{cb:F,once:true});}emit(u,...F){const e=this._subscribers.get(u)??[],s=[];for(const i of e)i.cb(...F),i.once&&s.push(()=>e.splice(e.indexOf(i),1));for(const i of s)i();}prompt(){return new Promise((u,F)=>{if(this._abortSignal){if(this._abortSignal.aborted)return this.state=\"cancel\",this.close(),u(S);this._abortSignal.addEventListener(\"abort\",()=>{this.state=\"cancel\",this.close();},{once:true});}const e=new WriteStream(0);e._write=(s,i,D)=>{this._track&&(this.value=this.rl?.line.replace(/\\t/g,\"\"),this._cursor=this.rl?.cursor??0,this.emit(\"value\",this.value)),D();},this.input.pipe(e),this.rl=f.createInterface({input:this.input,output:e,tabSize:2,prompt:\"\",escapeCodeTimeout:50}),f.emitKeypressEvents(this.input,this.rl),this.rl.prompt(),this.opts.initialValue!==void 0&&this._track&&this.rl.write(this.opts.initialValue),this.input.on(\"keypress\",this.onKeypress),d$1(this.input,true),this.output.on(\"resize\",this.render),this.render(),this.once(\"submit\",()=>{this.output.write(srcExports.cursor.show),this.output.off(\"resize\",this.render),d$1(this.input,false),u(this.value);}),this.once(\"cancel\",()=>{this.output.write(srcExports.cursor.show),this.output.off(\"resize\",this.render),d$1(this.input,false),u(S);});})}onKeypress(u,F){if(this.state===\"error\"&&(this.state=\"active\"),F?.name&&(!this._track&&c.aliases.has(F.name)&&this.emit(\"cursor\",c.aliases.get(F.name)),c.actions.has(F.name)&&this.emit(\"cursor\",F.name)),u&&(u.toLowerCase()===\"y\"||u.toLowerCase()===\"n\")&&this.emit(\"confirm\",u.toLowerCase()===\"y\"),u===\"\t\"&&this.opts.placeholder&&(this.value||(this.rl?.write(this.opts.placeholder),this.emit(\"value\",this.opts.placeholder))),u&&this.emit(\"key\",u.toLowerCase()),F?.name===\"return\"){if(this.opts.validate){const e=this.opts.validate(this.value);e&&(this.error=e instanceof Error?e.message:e,this.state=\"error\",this.rl?.write(this.value));}this.state!==\"error\"&&(this.state=\"submit\");}k$1([u,F?.name,F?.sequence],\"cancel\")&&(this.state=\"cancel\"),(this.state===\"submit\"||this.state===\"cancel\")&&this.emit(\"finalize\"),this.render(),(this.state===\"submit\"||this.state===\"cancel\")&&this.close();}close(){this.input.unpipe(),this.input.removeListener(\"keypress\",this.onKeypress),this.output.write(`\n`),d$1(this.input,false),this.rl?.close(),this.rl=void 0,this.emit(`${this.state}`,this.value),this.unsubscribe();}restoreCursor(){const u=G(this._prevFrame,process.stdout.columns,{hard:true}).split(`\n`).length-1;this.output.write(srcExports.cursor.move(-999,u*-1));}render(){const u=G(this._render(this)??\"\",process.stdout.columns,{hard:true});if(u!==this._prevFrame){if(this.state===\"initial\")this.output.write(srcExports.cursor.hide);else {const F=lD(this._prevFrame,u);if(this.restoreCursor(),F&&F?.length===1){const e=F[0];this.output.write(srcExports.cursor.move(0,e)),this.output.write(srcExports.erase.lines(1));const s=u.split(`\n`);this.output.write(s[e]),this._prevFrame=u,this.output.write(srcExports.cursor.move(0,s.length-e-1));return}if(F&&F?.length>1){const e=F[0];this.output.write(srcExports.cursor.move(0,e)),this.output.write(srcExports.erase.down());const s=u.split(`\n`).slice(e);this.output.write(s.join(`\n`)),this._prevFrame=u;return}this.output.write(srcExports.erase.down());}this.output.write(u),this.state===\"initial\"&&(this.state=\"active\"),this._prevFrame=u;}}}class fD extends x{get cursor(){return this.value?0:1}get _value(){return this.cursor===0}constructor(u){super(u,false),this.value=!!u.initialValue,this.on(\"value\",()=>{this.value=this._value;}),this.on(\"confirm\",F=>{this.output.write(srcExports.cursor.move(0,-1)),this.value=F,this.state=\"submit\",this.close();}),this.on(\"cursor\",()=>{this.value=!this.value;});}}var bD=Object.defineProperty,mD=(t,u,F)=>u in t?bD(t,u,{enumerable:true,configurable:true,writable:true,value:F}):t[u]=F,Y=(t,u,F)=>(mD(t,typeof u!=\"symbol\"?u+\"\":u,F),F);let wD=class extends x{constructor(u){super(u,false),Y(this,\"options\"),Y(this,\"cursor\",0),this.options=u.options,this.value=[...u.initialValues??[]],this.cursor=Math.max(this.options.findIndex(({value:F})=>F===u.cursorAt),0),this.on(\"key\",F=>{F===\"a\"&&this.toggleAll();}),this.on(\"cursor\",F=>{switch(F){case \"left\":case \"up\":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case \"down\":case \"right\":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break;case \"space\":this.toggleValue();break}});}get _value(){return this.options[this.cursor].value}toggleAll(){const u=this.value.length===this.options.length;this.value=u?[]:this.options.map(F=>F.value);}toggleValue(){const u=this.value.includes(this._value);this.value=u?this.value.filter(F=>F!==this._value):[...this.value,this._value];}};var SD=Object.defineProperty,$D=(t,u,F)=>u in t?SD(t,u,{enumerable:true,configurable:true,writable:true,value:F}):t[u]=F,q=(t,u,F)=>($D(t,typeof u!=\"symbol\"?u+\"\":u,F),F);class jD extends x{constructor(u){super(u,false),q(this,\"options\"),q(this,\"cursor\",0),this.options=u.options,this.cursor=this.options.findIndex(({value:F})=>F===u.initialValue),this.cursor===-1&&(this.cursor=0),this.changeValue(),this.on(\"cursor\",F=>{switch(F){case \"left\":case \"up\":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case \"down\":case \"right\":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break}this.changeValue();});}get _value(){return this.options[this.cursor]}changeValue(){this.value=this._value.value;}}class PD extends x{get valueWithCursor(){if(this.state===\"submit\")return this.value;if(this.cursor>=this.value.length)return `${this.value}\\u2588`;const u=this.value.slice(0,this.cursor),[F,...e$1]=this.value.slice(this.cursor);return `${u}${e.inverse(F)}${e$1.join(\"\")}`}get cursor(){return this._cursor}constructor(u){super(u),this.on(\"finalize\",()=>{this.value||(this.value=u.defaultValue);});}}\n\nfunction ce(){return g.platform!==\"win32\"?g.env.TERM!==\"linux\":!!g.env.CI||!!g.env.WT_SESSION||!!g.env.TERMINUS_SUBLIME||g.env.ConEmuTask===\"{cmd::Cmder}\"||g.env.TERM_PROGRAM===\"Terminus-Sublime\"||g.env.TERM_PROGRAM===\"vscode\"||g.env.TERM===\"xterm-256color\"||g.env.TERM===\"alacritty\"||g.env.TERMINAL_EMULATOR===\"JetBrains-JediTerm\"}const V=ce(),u=(t,n)=>V?t:n,le=u(\"❯\", \">\"),L=u(\"■\", \"x\"),W=u(\"▲\", \"x\"),C=u(\"✔\", \"√\"),o=u(\"\"),d=u(\"\"),k=u(\"\\u25CF\",\">\"),P=u(\"\\u25CB\",\" \"),A=u(\"\\u25FB\",\"[\\u2022]\"),T=u(\"\\u25FC\",\"[+]\"),F=u(\"\\u25FB\",\"[ ]\"),w=t=>{switch(t){case \"initial\":case \"active\":return e.cyan(le);case \"cancel\":return e.red(L);case \"error\":return e.yellow(W);case \"submit\":return e.green(C)}},B=t=>{const{cursor:n,options:s,style:r}=t,i=t.maxItems??Number.POSITIVE_INFINITY,a=Math.max(process.stdout.rows-4,0),c=Math.min(a,Math.max(i,5));let l=0;n>=l+c-3?l=Math.max(Math.min(n-c+3,s.length-c),0):n<l+2&&(l=Math.max(n-2,0));const $=c<s.length&&l>0,p=c<s.length&&l+c<s.length;return s.slice(l,l+c).map((M,v,x)=>{const j=v===0&&$,E=v===x.length-1&&p;return j||E?e.dim(\"...\"):r(M,v+l===n)})},he=t=>new PD({validate:t.validate,placeholder:t.placeholder,defaultValue:t.defaultValue,initialValue:t.initialValue,render(){const n=`${e.gray(o)}\n${w(this.state)} ${t.message}\n`,s=t.placeholder?e.inverse(t.placeholder[0])+e.dim(t.placeholder.slice(1)):e.inverse(e.hidden(\"_\")),r=this.value?this.valueWithCursor:s;switch(this.state){case \"error\":return `${n.trim()}\n${e.yellow(o)} ${r}\n${e.yellow(d)} ${e.yellow(this.error)}\n`;case \"submit\":return `${n}${e.gray(o)} ${e.dim(this.value||t.placeholder)}`;case \"cancel\":return `${n}${e.gray(o)} ${e.strikethrough(e.dim(this.value??\"\"))}${this.value?.trim()?`\n${e.gray(o)}`:\"\"}`;default:return `${n}${e.cyan(o)} ${r}\n${e.cyan(d)}\n`}}}).prompt(),ye=t=>{const n=t.active??\"Yes\",s=t.inactive??\"No\";return new fD({active:n,inactive:s,initialValue:t.initialValue??true,render(){const r=`${e.gray(o)}\n${w(this.state)} ${t.message}\n`,i=this.value?n:s;switch(this.state){case \"submit\":return `${r}${e.gray(o)} ${e.dim(i)}`;case \"cancel\":return `${r}${e.gray(o)} ${e.strikethrough(e.dim(i))}\n${e.gray(o)}`;default:return `${r}${e.cyan(o)} ${this.value?`${e.green(k)} ${n}`:`${e.dim(P)} ${e.dim(n)}`} ${e.dim(\"/\")} ${this.value?`${e.dim(P)} ${e.dim(s)}`:`${e.green(k)} ${s}`}\n${e.cyan(d)}\n`}}}).prompt()},ve=t=>{const n=(s,r)=>{const i=s.label??String(s.value);switch(r){case \"selected\":return `${e.dim(i)}`;case \"active\":return `${e.green(k)} ${i} ${s.hint?e.dim(`(${s.hint})`):\"\"}`;case \"cancelled\":return `${e.strikethrough(e.dim(i))}`;default:return `${e.dim(P)} ${e.dim(i)}`}};return new jD({options:t.options,initialValue:t.initialValue,render(){const s=`${e.gray(o)}\n${w(this.state)} ${t.message}\n`;switch(this.state){case \"submit\":return `${s}${e.gray(o)} ${n(this.options[this.cursor],\"selected\")}`;case \"cancel\":return `${s}${e.gray(o)} ${n(this.options[this.cursor],\"cancelled\")}\n${e.gray(o)}`;default:return `${s}${e.cyan(o)} ${B({cursor:this.cursor,options:this.options,maxItems:t.maxItems,style:(r,i)=>n(r,i?\"active\":\"inactive\")}).join(`\n${e.cyan(o)} `)}\n${e.cyan(d)}\n`}}}).prompt()},fe=t=>{const n=(s,r)=>{const i=s.label??String(s.value);return r===\"active\"?`${e.cyan(A)} ${i} ${s.hint?e.dim(`(${s.hint})`):\"\"}`:r===\"selected\"?`${e.green(T)} ${e.dim(i)}`:r===\"cancelled\"?`${e.strikethrough(e.dim(i))}`:r===\"active-selected\"?`${e.green(T)} ${i} ${s.hint?e.dim(`(${s.hint})`):\"\"}`:r===\"submitted\"?`${e.dim(i)}`:`${e.dim(F)} ${e.dim(i)}`};return new wD({options:t.options,initialValues:t.initialValues,required:t.required??true,cursorAt:t.cursorAt,validate(s){if(this.required&&s.length===0)return `Please select at least one option.\n${e.reset(e.dim(`Press ${e.gray(e.bgWhite(e.inverse(\" space \")))} to select, ${e.gray(e.bgWhite(e.inverse(\" enter \")))} to submit`))}`},render(){const s=`${e.gray(o)}\n${w(this.state)} ${t.message}\n`,r=(i,a)=>{const c=this.value.includes(i.value);return a&&c?n(i,\"active-selected\"):c?n(i,\"selected\"):n(i,a?\"active\":\"inactive\")};switch(this.state){case \"submit\":return `${s}${e.gray(o)} ${this.options.filter(({value:i})=>this.value.includes(i)).map(i=>n(i,\"submitted\")).join(e.dim(\", \"))||e.dim(\"none\")}`;case \"cancel\":{const i=this.options.filter(({value:a})=>this.value.includes(a)).map(a=>n(a,\"cancelled\")).join(e.dim(\", \"));return `${s}${e.gray(o)} ${i.trim()?`${i}\n${e.gray(o)}`:\"\"}`}case \"error\":{const i=this.error.split(`\n`).map((a,c)=>c===0?`${e.yellow(d)} ${e.yellow(a)}`:` ${a}`).join(`\n`);return `${s+e.yellow(o)} ${B({options:this.options,cursor:this.cursor,maxItems:t.maxItems,style:r}).join(`\n${e.yellow(o)} `)}\n${i}\n`}default:return `${s}${e.cyan(o)} ${B({options:this.options,cursor:this.cursor,maxItems:t.maxItems,style:r}).join(`\n${e.cyan(o)} `)}\n${e.cyan(d)}\n`}}}).prompt()};`${e.gray(o)} `;\n\nconst kCancel = Symbol.for(\"cancel\");\nasync function prompt(message, opts = {}) {\n const handleCancel = (value) => {\n if (typeof value !== \"symbol\" || value.toString() !== \"Symbol(clack:cancel)\") {\n return value;\n }\n switch (opts.cancel) {\n case \"reject\": {\n const error = new Error(\"Prompt cancelled.\");\n error.name = \"ConsolaPromptCancelledError\";\n if (Error.captureStackTrace) {\n Error.captureStackTrace(error, prompt);\n }\n throw error;\n }\n case \"undefined\": {\n return void 0;\n }\n case \"null\": {\n return null;\n }\n case \"symbol\": {\n return kCancel;\n }\n default:\n case \"default\": {\n return opts.default ?? opts.initial;\n }\n }\n };\n if (!opts.type || opts.type === \"text\") {\n return await he({\n message,\n defaultValue: opts.default,\n placeholder: opts.placeholder,\n initialValue: opts.initial\n }).then(handleCancel);\n }\n if (opts.type === \"confirm\") {\n return await ye({\n message,\n initialValue: opts.initial\n }).then(handleCancel);\n }\n if (opts.type === \"select\") {\n return await ve({\n message,\n options: opts.options.map(\n (o) => typeof o === \"string\" ? { value: o, label: o } : o\n ),\n initialValue: opts.initial\n }).then(handleCancel);\n }\n if (opts.type === \"multiselect\") {\n return await fe({\n message,\n options: opts.options.map(\n (o) => typeof o === \"string\" ? { value: o, label: o } : o\n ),\n required: opts.required,\n initialValues: opts.initial\n }).then(handleCancel);\n }\n throw new Error(`Unknown prompt type: ${opts.type}`);\n}\n\nexport { kCancel, prompt };\n","let p = process || {}, argv = p.argv || [], env = p.env || {}\nlet isColorSupported =\n\t!(!!env.NO_COLOR || argv.includes(\"--no-color\")) &&\n\t(!!env.FORCE_COLOR || argv.includes(\"--color\") || p.platform === \"win32\" || ((p.stdout || {}).isTTY && env.TERM !== \"dumb\") || !!env.CI)\n\nlet formatter = (open, close, replace = open) =>\n\tinput => {\n\t\tlet string = \"\" + input, index = string.indexOf(close, open.length)\n\t\treturn ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close\n\t}\n\nlet replaceClose = (string, close, replace, index) => {\n\tlet result = \"\", cursor = 0\n\tdo {\n\t\tresult += string.substring(cursor, index) + replace\n\t\tcursor = index + close.length\n\t\tindex = string.indexOf(close, cursor)\n\t} while (~index)\n\treturn result + string.substring(cursor)\n}\n\nlet createColors = (enabled = isColorSupported) => {\n\tlet f = enabled ? formatter : () => String\n\treturn {\n\t\tisColorSupported: enabled,\n\t\treset: f(\"\\x1b[0m\", \"\\x1b[0m\"),\n\t\tbold: f(\"\\x1b[1m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[1m\"),\n\t\tdim: f(\"\\x1b[2m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[2m\"),\n\t\titalic: f(\"\\x1b[3m\", \"\\x1b[23m\"),\n\t\tunderline: f(\"\\x1b[4m\", \"\\x1b[24m\"),\n\t\tinverse: f(\"\\x1b[7m\", \"\\x1b[27m\"),\n\t\thidden: f(\"\\x1b[8m\", \"\\x1b[28m\"),\n\t\tstrikethrough: f(\"\\x1b[9m\", \"\\x1b[29m\"),\n\n\t\tblack: f(\"\\x1b[30m\", \"\\x1b[39m\"),\n\t\tred: f(\"\\x1b[31m\", \"\\x1b[39m\"),\n\t\tgreen: f(\"\\x1b[32m\", \"\\x1b[39m\"),\n\t\tyellow: f(\"\\x1b[33m\", \"\\x1b[39m\"),\n\t\tblue: f(\"\\x1b[34m\", \"\\x1b[39m\"),\n\t\tmagenta: f(\"\\x1b[35m\", \"\\x1b[39m\"),\n\t\tcyan: f(\"\\x1b[36m\", \"\\x1b[39m\"),\n\t\twhite: f(\"\\x1b[37m\", \"\\x1b[39m\"),\n\t\tgray: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\n\t\tbgBlack: f(\"\\x1b[40m\", \"\\x1b[49m\"),\n\t\tbgRed: f(\"\\x1b[41m\", \"\\x1b[49m\"),\n\t\tbgGreen: f(\"\\x1b[42m\", \"\\x1b[49m\"),\n\t\tbgYellow: f(\"\\x1b[43m\", \"\\x1b[49m\"),\n\t\tbgBlue: f(\"\\x1b[44m\", \"\\x1b[49m\"),\n\t\tbgMagenta: f(\"\\x1b[45m\", \"\\x1b[49m\"),\n\t\tbgCyan: f(\"\\x1b[46m\", \"\\x1b[49m\"),\n\t\tbgWhite: f(\"\\x1b[47m\", \"\\x1b[49m\"),\n\n\t\tblackBright: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\t\tredBright: f(\"\\x1b[91m\", \"\\x1b[39m\"),\n\t\tgreenBright: f(\"\\x1b[92m\", \"\\x1b[39m\"),\n\t\tyellowBright: f(\"\\x1b[93m\", \"\\x1b[39m\"),\n\t\tblueBright: f(\"\\x1b[94m\", \"\\x1b[39m\"),\n\t\tmagentaBright: f(\"\\x1b[95m\", \"\\x1b[39m\"),\n\t\tcyanBright: f(\"\\x1b[96m\", \"\\x1b[39m\"),\n\t\twhiteBright: f(\"\\x1b[97m\", \"\\x1b[39m\"),\n\n\t\tbgBlackBright: f(\"\\x1b[100m\", \"\\x1b[49m\"),\n\t\tbgRedBright: f(\"\\x1b[101m\", \"\\x1b[49m\"),\n\t\tbgGreenBright: f(\"\\x1b[102m\", \"\\x1b[49m\"),\n\t\tbgYellowBright: f(\"\\x1b[103m\", \"\\x1b[49m\"),\n\t\tbgBlueBright: f(\"\\x1b[104m\", \"\\x1b[49m\"),\n\t\tbgMagentaBright: f(\"\\x1b[105m\", \"\\x1b[49m\"),\n\t\tbgCyanBright: f(\"\\x1b[106m\", \"\\x1b[49m\"),\n\t\tbgWhiteBright: f(\"\\x1b[107m\", \"\\x1b[49m\"),\n\t}\n}\n\nmodule.exports = createColors()\nmodule.exports.createColors = createColors\n","const LogLevels = {\n silent: Number.NEGATIVE_INFINITY,\n fatal: 0,\n error: 0,\n warn: 1,\n log: 2,\n info: 3,\n success: 3,\n fail: 3,\n ready: 3,\n start: 3,\n box: 3,\n debug: 4,\n trace: 5,\n verbose: Number.POSITIVE_INFINITY\n};\nconst LogTypes = {\n // Silent\n silent: {\n level: -1\n },\n // Level 0\n fatal: {\n level: LogLevels.fatal\n },\n error: {\n level: LogLevels.error\n },\n // Level 1\n warn: {\n level: LogLevels.warn\n },\n // Level 2\n log: {\n level: LogLevels.log\n },\n // Level 3\n info: {\n level: LogLevels.info\n },\n success: {\n level: LogLevels.success\n },\n fail: {\n level: LogLevels.fail\n },\n ready: {\n level: LogLevels.info\n },\n start: {\n level: LogLevels.info\n },\n box: {\n level: LogLevels.info\n },\n // Level 4\n debug: {\n level: LogLevels.debug\n },\n // Level 5\n trace: {\n level: LogLevels.trace\n },\n // Verbose\n verbose: {\n level: LogLevels.verbose\n }\n};\n\nfunction isPlainObject$1(value) {\n if (value === null || typeof value !== \"object\") {\n return false;\n }\n const prototype = Object.getPrototypeOf(value);\n if (prototype !== null && prototype !== Object.prototype && Object.getPrototypeOf(prototype) !== null) {\n return false;\n }\n if (Symbol.iterator in value) {\n return false;\n }\n if (Symbol.toStringTag in value) {\n return Object.prototype.toString.call(value) === \"[object Module]\";\n }\n return true;\n}\n\nfunction _defu(baseObject, defaults, namespace = \".\", merger) {\n if (!isPlainObject$1(defaults)) {\n return _defu(baseObject, {}, namespace, merger);\n }\n const object = Object.assign({}, defaults);\n for (const key in baseObject) {\n if (key === \"__proto__\" || key === \"constructor\") {\n continue;\n }\n const value = baseObject[key];\n if (value === null || value === void 0) {\n continue;\n }\n if (merger && merger(object, key, value, namespace)) {\n continue;\n }\n if (Array.isArray(value) && Array.isArray(object[key])) {\n object[key] = [...value, ...object[key]];\n } else if (isPlainObject$1(value) && isPlainObject$1(object[key])) {\n object[key] = _defu(\n value,\n object[key],\n (namespace ? `${namespace}.` : \"\") + key.toString(),\n merger\n );\n } else {\n object[key] = value;\n }\n }\n return object;\n}\nfunction createDefu(merger) {\n return (...arguments_) => (\n // eslint-disable-next-line unicorn/no-array-reduce\n arguments_.reduce((p, c) => _defu(p, c, \"\", merger), {})\n );\n}\nconst defu = createDefu();\n\nfunction isPlainObject(obj) {\n return Object.prototype.toString.call(obj) === \"[object Object]\";\n}\nfunction isLogObj(arg) {\n if (!isPlainObject(arg)) {\n return false;\n }\n if (!arg.message && !arg.args) {\n return false;\n }\n if (arg.stack) {\n return false;\n }\n return true;\n}\n\nlet paused = false;\nconst queue = [];\nclass Consola {\n options;\n _lastLog;\n _mockFn;\n /**\n * Creates an instance of Consola with specified options or defaults.\n *\n * @param {Partial<ConsolaOptions>} [options={}] - Configuration options for the Consola instance.\n */\n constructor(options = {}) {\n const types = options.types || LogTypes;\n this.options = defu(\n {\n ...options,\n defaults: { ...options.defaults },\n level: _normalizeLogLevel(options.level, types),\n reporters: [...options.reporters || []]\n },\n {\n types: LogTypes,\n throttle: 1e3,\n throttleMin: 5,\n formatOptions: {\n date: true,\n colors: false,\n compact: true\n }\n }\n );\n for (const type in types) {\n const defaults = {\n type,\n ...this.options.defaults,\n ...types[type]\n };\n this[type] = this._wrapLogFn(defaults);\n this[type].raw = this._wrapLogFn(\n defaults,\n true\n );\n }\n if (this.options.mockFn) {\n this.mockTypes();\n }\n this._lastLog = {};\n }\n /**\n * Gets the current log level of the Consola instance.\n *\n * @returns {number} The current log level.\n */\n get level() {\n return this.options.level;\n }\n /**\n * Sets the minimum log level that will be output by the instance.\n *\n * @param {number} level - The new log level to set.\n */\n set level(level) {\n this.options.level = _normalizeLogLevel(\n level,\n this.options.types,\n this.options.level\n );\n }\n /**\n * Displays a prompt to the user and returns the response.\n * Throw an error if `prompt` is not supported by the current configuration.\n *\n * @template T\n * @param {string} message - The message to display in the prompt.\n * @param {T} [opts] - Optional options for the prompt. See {@link PromptOptions}.\n * @returns {promise<T>} A promise that infer with the prompt options. See {@link PromptOptions}.\n */\n prompt(message, opts) {\n if (!this.options.prompt) {\n throw new Error(\"prompt is not supported!\");\n }\n return this.options.prompt(message, opts);\n }\n /**\n * Creates a new instance of Consola, inheriting options from the current instance, with possible overrides.\n *\n * @param {Partial<ConsolaOptions>} options - Optional overrides for the new instance. See {@link ConsolaOptions}.\n * @returns {ConsolaInstance} A new Consola instance. See {@link ConsolaInstance}.\n */\n create(options) {\n const instance = new Consola({\n ...this.options,\n ...options\n });\n if (this._mockFn) {\n instance.mockTypes(this._mockFn);\n }\n return instance;\n }\n /**\n * Creates a new Consola instance with the specified default log object properties.\n *\n * @param {InputLogObject} defaults - Default properties to include in any log from the new instance. See {@link InputLogObject}.\n * @returns {ConsolaInstance} A new Consola instance. See {@link ConsolaInstance}.\n */\n withDefaults(defaults) {\n return this.create({\n ...this.options,\n defaults: {\n ...this.options.defaults,\n ...defaults\n }\n });\n }\n /**\n * Creates a new Consola instance with a specified tag, which will be included in every log.\n *\n * @param {string} tag - The tag to include in each log of the new instance.\n * @returns {ConsolaInstance} A new Consola instance. See {@link ConsolaInstance}.\n */\n withTag(tag) {\n return this.withDefaults({\n tag: this.options.defaults.tag ? this.options.defaults.tag + \":\" + tag : tag\n });\n }\n /**\n * Adds a custom reporter to the Consola instance.\n * Reporters will be called for each log message, depending on their implementation and log level.\n *\n * @param {ConsolaReporter} reporter - The reporter to add. See {@link ConsolaReporter}.\n * @returns {Consola} The current Consola instance.\n */\n addReporter(reporter) {\n this.options.reporters.push(reporter);\n return this;\n }\n /**\n * Removes a custom reporter from the Consola instance.\n * If no reporter is specified, all reporters will be removed.\n *\n * @param {ConsolaReporter} reporter - The reporter to remove. See {@link ConsolaReporter}.\n * @returns {Consola} The current Consola instance.\n */\n removeReporter(reporter) {\n if (reporter) {\n const i = this.options.reporters.indexOf(reporter);\n if (i !== -1) {\n return this.options.reporters.splice(i, 1);\n }\n } else {\n this.options.reporters.splice(0);\n }\n return this;\n }\n /**\n * Replaces all reporters of the Consola instance with the specified array of reporters.\n *\n * @param {ConsolaReporter[]} reporters - The new reporters to set. See {@link ConsolaReporter}.\n * @returns {Consola} The current Consola instance.\n */\n setReporters(reporters) {\n this.options.reporters = Array.isArray(reporters) ? reporters : [reporters];\n return this;\n }\n wrapAll() {\n this.wrapConsole();\n this.wrapStd();\n }\n restoreAll() {\n this.restoreConsole();\n this.restoreStd();\n }\n /**\n * Overrides console methods with Consola logging methods for consistent logging.\n */\n wrapConsole() {\n for (const type in this.options.types) {\n if (!console[\"__\" + type]) {\n console[\"__\" + type] = console[type];\n }\n console[type] = this[type].raw;\n }\n }\n /**\n * Restores the original console methods, removing Consola overrides.\n */\n restoreConsole() {\n for (const type in this.options.types) {\n if (console[\"__\" + type]) {\n console[type] = console[\"__\" + type];\n delete console[\"__\" + type];\n }\n }\n }\n /**\n * Overrides standard output and error streams to redirect them through Consola.\n */\n wrapStd() {\n this._wrapStream(this.options.stdout, \"log\");\n this._wrapStream(this.options.stderr, \"log\");\n }\n _wrapStream(stream, type) {\n if (!stream) {\n return;\n }\n if (!stream.__write) {\n stream.__write = stream.write;\n }\n stream.write = (data) => {\n this[type].raw(String(data).trim());\n };\n }\n /**\n * Restores the original standard output and error streams, removing the Consola redirection.\n */\n restoreStd() {\n this._restoreStream(this.options.stdout);\n this._restoreStream(this.options.stderr);\n }\n _restoreStream(stream) {\n if (!stream) {\n return;\n }\n if (stream.__write) {\n stream.write = stream.__write;\n delete stream.__write;\n }\n }\n /**\n * Pauses logging, queues incoming logs until resumed.\n */\n pauseLogs() {\n paused = true;\n }\n /**\n * Resumes logging, processing any queued logs.\n */\n resumeLogs() {\n paused = false;\n const _queue = queue.splice(0);\n for (const item of _queue) {\n item[0]._logFn(item[1], item[2]);\n }\n }\n /**\n * Replaces logging methods with mocks if a mock function is provided.\n *\n * @param {ConsolaOptions[\"mockFn\"]} mockFn - The function to use for mocking logging methods. See {@link ConsolaOptions[\"mockFn\"]}.\n */\n mockTypes(mockFn) {\n const _mockFn = mockFn || this.options.mockFn;\n this._mockFn = _mockFn;\n if (typeof _mockFn !== \"function\") {\n return;\n }\n for (const type in this.options.types) {\n this[type] = _mockFn(type, this.options.types[type]) || this[type];\n this[type].raw = this[type];\n }\n }\n _wrapLogFn(defaults, isRaw) {\n return (...args) => {\n if (paused) {\n queue.push([this, defaults, args, isRaw]);\n return;\n }\n return this._logFn(defaults, args, isRaw);\n };\n }\n _logFn(defaults, args, isRaw) {\n if ((defaults.level || 0) > this.level) {\n return false;\n }\n const logObj = {\n date: /* @__PURE__ */ new Date(),\n args: [],\n ...defaults,\n level: _normalizeLogLevel(defaults.level, this.options.types)\n };\n if (!isRaw && args.length === 1 && isLogObj(args[0])) {\n Object.assign(logObj, args[0]);\n } else {\n logObj.args = [...args];\n }\n if (logObj.message) {\n logObj.args.unshift(logObj.message);\n delete logObj.message;\n }\n if (logObj.additional) {\n if (!Array.isArray(logObj.additional)) {\n logObj.additional = logObj.additional.split(\"\\n\");\n }\n logObj.args.push(\"\\n\" + logObj.additional.join(\"\\n\"));\n delete logObj.additional;\n }\n logObj.type = typeof logObj.type === \"string\" ? logObj.type.toLowerCase() : \"log\";\n logObj.tag = typeof logObj.tag === \"string\" ? logObj.tag : \"\";\n const resolveLog = (newLog = false) => {\n const repeated = (this._lastLog.count || 0) - this.options.throttleMin;\n if (this._lastLog.object && repeated > 0) {\n const args2 = [...this._lastLog.object.args];\n if (repeated > 1) {\n args2.push(`(repeated ${repeated} times)`);\n }\n this._log({ ...this._lastLog.object, args: args2 });\n this._lastLog.count = 1;\n }\n if (newLog) {\n this._lastLog.object = logObj;\n this._log(logObj);\n }\n };\n clearTimeout(this._lastLog.timeout);\n const diffTime = this._lastLog.time && logObj.date ? logObj.date.getTime() - this._lastLog.time.getTime() : 0;\n this._lastLog.time = logObj.date;\n if (diffTime < this.options.throttle) {\n try {\n const serializedLog = JSON.stringify([\n logObj.type,\n logObj.tag,\n logObj.args\n ]);\n const isSameLog = this._lastLog.serialized === serializedLog;\n this._lastLog.serialized = serializedLog;\n if (isSameLog) {\n this._lastLog.count = (this._lastLog.count || 0) + 1;\n if (this._lastLog.count > this.options.throttleMin) {\n this._lastLog.timeout = setTimeout(\n resolveLog,\n this.options.throttle\n );\n return;\n }\n }\n } catch {\n }\n }\n resolveLog(true);\n }\n _log(logObj) {\n for (const reporter of this.options.reporters) {\n reporter.log(logObj, {\n options: this.options\n });\n }\n }\n}\nfunction _normalizeLogLevel(input, types = {}, defaultLevel = 3) {\n if (input === void 0) {\n return defaultLevel;\n }\n if (typeof input === \"number\") {\n return input;\n }\n if (types[input] && types[input].level !== void 0) {\n return types[input].level;\n }\n return defaultLevel;\n}\nConsola.prototype.add = Consola.prototype.addReporter;\nConsola.prototype.remove = Consola.prototype.removeReporter;\nConsola.prototype.clear = Consola.prototype.removeReporter;\nConsola.prototype.withScope = Consola.prototype.withTag;\nConsola.prototype.mock = Consola.prototype.mockTypes;\nConsola.prototype.pause = Consola.prototype.pauseLogs;\nConsola.prototype.resume = Consola.prototype.resumeLogs;\nfunction createConsola(options = {}) {\n return new Consola(options);\n}\n\nexport { Consola, LogLevels, LogTypes, createConsola };\n","import { formatWithOptions } from 'node:util';\nimport { sep } from 'node:path';\n\nfunction parseStack(stack, message) {\n const cwd = process.cwd() + sep;\n const lines = stack.split(\"\\n\").splice(message.split(\"\\n\").length).map((l) => l.trim().replace(\"file://\", \"\").replace(cwd, \"\"));\n return lines;\n}\n\nfunction writeStream(data, stream) {\n const write = stream.__write || stream.write;\n return write.call(stream, data);\n}\n\nconst bracket = (x) => x ? `[${x}]` : \"\";\nclass BasicReporter {\n formatStack(stack, message, opts) {\n const indent = \" \".repeat((opts?.errorLevel || 0) + 1);\n return indent + parseStack(stack, message).join(`\n${indent}`);\n }\n formatError(err, opts) {\n const message = err.message ?? formatWithOptions(opts, err);\n const stack = err.stack ? this.formatStack(err.stack, message, opts) : \"\";\n const level = opts?.errorLevel || 0;\n const causedPrefix = level > 0 ? `${\" \".repeat(level)}[cause]: ` : \"\";\n const causedError = err.cause ? \"\\n\\n\" + this.formatError(err.cause, { ...opts, errorLevel: level + 1 }) : \"\";\n return causedPrefix + message + \"\\n\" + stack + causedError;\n }\n formatArgs(args, opts) {\n const _args = args.map((arg) => {\n if (arg && typeof arg.stack === \"string\") {\n return this.formatError(arg, opts);\n }\n return arg;\n });\n return formatWithOptions(opts, ..._args);\n }\n formatDate(date, opts) {\n return opts.date ? date.toLocaleTimeString() : \"\";\n }\n filterAndJoin(arr) {\n return arr.filter(Boolean).join(\" \");\n }\n formatLogObj(logObj, opts) {\n const message = this.formatArgs(logObj.args, opts);\n if (logObj.type === \"box\") {\n return \"\\n\" + [\n bracket(logObj.tag),\n logObj.title && logObj.title,\n ...message.split(\"\\n\")\n ].filter(Boolean).map((l) => \" > \" + l).join(\"\\n\") + \"\\n\";\n }\n return this.filterAndJoin([\n bracket(logObj.type),\n bracket(logObj.tag),\n message\n ]);\n }\n log(logObj, ctx) {\n const line = this.formatLogObj(logObj, {\n columns: ctx.options.stdout.columns || 0,\n ...ctx.options.formatOptions\n });\n return writeStream(\n line + \"\\n\",\n logObj.level < 2 ? ctx.options.stderr || process.stderr : ctx.options.stdout || process.stdout\n );\n }\n}\n\nexport { BasicReporter as B, parseStack as p };\n","import * as tty from 'node:tty';\n\nconst {\n env = {},\n argv = [],\n platform = \"\"\n} = typeof process === \"undefined\" ? {} : process;\nconst isDisabled = \"NO_COLOR\" in env || argv.includes(\"--no-color\");\nconst isForced = \"FORCE_COLOR\" in env || argv.includes(\"--color\");\nconst isWindows = platform === \"win32\";\nconst isDumbTerminal = env.TERM === \"dumb\";\nconst isCompatibleTerminal = tty && tty.isatty && tty.isatty(1) && env.TERM && !isDumbTerminal;\nconst isCI = \"CI\" in env && (\"GITHUB_ACTIONS\" in env || \"GITLAB_CI\" in env || \"CIRCLECI\" in env);\nconst isColorSupported = !isDisabled && (isForced || isWindows && !isDumbTerminal || isCompatibleTerminal || isCI);\nfunction replaceClose(index, string, close, replace, head = string.slice(0, Math.max(0, index)) + replace, tail = string.slice(Math.max(0, index + close.length)), next = tail.indexOf(close)) {\n return head + (next < 0 ? tail : replaceClose(next, tail, close, replace));\n}\nfunction clearBleed(index, string, open, close, replace) {\n return index < 0 ? open + string + close : open + replaceClose(index, string, close, replace) + close;\n}\nfunction filterEmpty(open, close, replace = open, at = open.length + 1) {\n return (string) => string || !(string === \"\" || string === void 0) ? clearBleed(\n (\"\" + string).indexOf(close, at),\n string,\n open,\n close,\n replace\n ) : \"\";\n}\nfunction init(open, close, replace) {\n return filterEmpty(`\\x1B[${open}m`, `\\x1B[${close}m`, replace);\n}\nconst colorDefs = {\n reset: init(0, 0),\n bold: init(1, 22, \"\\x1B[22m\\x1B[1m\"),\n dim: init(2, 22, \"\\x1B[22m\\x1B[2m\"),\n italic: init(3, 23),\n underline: init(4, 24),\n inverse: init(7, 27),\n hidden: init(8, 28),\n strikethrough: init(9, 29),\n black: init(30, 39),\n red: init(31, 39),\n green: init(32, 39),\n yellow: init(33, 39),\n blue: init(34, 39),\n magenta: init(35, 39),\n cyan: init(36, 39),\n white: init(37, 39),\n gray: init(90, 39),\n bgBlack: init(40, 49),\n bgRed: init(41, 49),\n bgGreen: init(42, 49),\n bgYellow: init(43, 49),\n bgBlue: init(44, 49),\n bgMagenta: init(45, 49),\n bgCyan: init(46, 49),\n bgWhite: init(47, 49),\n blackBright: init(90, 39),\n redBright: init(91, 39),\n greenBright: init(92, 39),\n yellowBright: init(93, 39),\n blueBright: init(94, 39),\n magentaBright: init(95, 39),\n cyanBright: init(96, 39),\n whiteBright: init(97, 39),\n bgBlackBright: init(100, 49),\n bgRedBright: init(101, 49),\n bgGreenBright: init(102, 49),\n bgYellowBright: init(103, 49),\n bgBlueBright: init(104, 49),\n bgMagentaBright: init(105, 49),\n bgCyanBright: init(106, 49),\n bgWhiteBright: init(107, 49)\n};\nfunction createColors(useColor = isColorSupported) {\n return useColor ? colorDefs : Object.fromEntries(Object.keys(colorDefs).map((key) => [key, String]));\n}\nconst colors = createColors();\nfunction getColor(color, fallback = \"reset\") {\n return colors[color] || colors[fallback];\n}\nfunction colorize(color, text) {\n return getColor(color)(text);\n}\n\nconst ansiRegex = [\n String.raw`[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)`,\n String.raw`(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))`\n].join(\"|\");\nfunction stripAnsi(text) {\n return text.replace(new RegExp(ansiRegex, \"g\"), \"\");\n}\nfunction centerAlign(str, len, space = \" \") {\n const free = len - str.length;\n if (free <= 0) {\n return str;\n }\n const freeLeft = Math.floor(free / 2);\n let _str = \"\";\n for (let i = 0; i < len; i++) {\n _str += i < freeLeft || i >= freeLeft + str.length ? space : str[i - freeLeft];\n }\n return _str;\n}\nfunction rightAlign(str, len, space = \" \") {\n const free = len - str.length;\n if (free <= 0) {\n return str;\n }\n let _str = \"\";\n for (let i = 0; i < len; i++) {\n _str += i < free ? space : str[i - free];\n }\n return _str;\n}\nfunction leftAlign(str, len, space = \" \") {\n let _str = \"\";\n for (let i = 0; i < len; i++) {\n _str += i < str.length ? str[i] : space;\n }\n return _str;\n}\nfunction align(alignment, str, len, space = \" \") {\n switch (alignment) {\n case \"left\": {\n return leftAlign(str, len, space);\n }\n case \"right\": {\n return rightAlign(str, len, space);\n }\n case \"center\": {\n return centerAlign(str, len, space);\n }\n default: {\n return str;\n }\n }\n}\n\nconst boxStylePresets = {\n solid: {\n tl: \"\\u250C\",\n tr: \"\\u2510\",\n bl: \"\\u2514\",\n br: \"\\u2518\",\n h: \"\\u2500\",\n v: \"\\u2502\"\n },\n double: {\n tl: \"\\u2554\",\n tr: \"\\u2557\",\n bl: \"\\u255A\",\n br: \"\\u255D\",\n h: \"\\u2550\",\n v: \"\\u2551\"\n },\n doubleSingle: {\n tl: \"\\u2553\",\n tr: \"\\u2556\",\n bl: \"\\u2559\",\n br: \"\\u255C\",\n h: \"\\u2500\",\n v: \"\\u2551\"\n },\n doubleSingleRounded: {\n tl: \"\\u256D\",\n tr: \"\\u256E\",\n bl: \"\\u2570\",\n br: \"\\u256F\",\n h: \"\\u2500\",\n v: \"\\u2551\"\n },\n singleThick: {\n tl: \"\\u250F\",\n tr: \"\\u2513\",\n bl: \"\\u2517\",\n br: \"\\u251B\",\n h: \"\\u2501\",\n v: \"\\u2503\"\n },\n singleDouble: {\n tl: \"\\u2552\",\n tr: \"\\u2555\",\n bl: \"\\u2558\",\n br: \"\\u255B\",\n h: \"\\u2550\",\n v: \"\\u2502\"\n },\n singleDoubleRounded: {\n tl: \"\\u256D\",\n tr: \"\\u256E\",\n bl: \"\\u2570\",\n br: \"\\u256F\",\n h: \"\\u2550\",\n v: \"\\u2502\"\n },\n rounded: {\n tl: \"\\u256D\",\n tr: \"\\u256E\",\n bl: \"\\u2570\",\n br: \"\\u256F\",\n h: \"\\u2500\",\n v: \"\\u2502\"\n }\n};\nconst defaultStyle = {\n borderColor: \"white\",\n borderStyle: \"rounded\",\n valign: \"center\",\n padding: 2,\n marginLeft: 1,\n marginTop: 1,\n marginBottom: 1\n};\nfunction box(text, _opts = {}) {\n const opts = {\n ..._opts,\n style: {\n ...defaultStyle,\n ..._opts.style\n }\n };\n const textLines = text.split(\"\\n\");\n const boxLines = [];\n const _color = getColor(opts.style.borderColor);\n const borderStyle = {\n ...typeof opts.style.borderStyle === \"string\" ? boxStylePresets[opts.style.borderStyle] || boxStylePresets.solid : opts.style.borderStyle\n };\n if (_color) {\n for (const key in borderStyle) {\n borderStyle[key] = _color(\n borderStyle[key]\n );\n }\n }\n const paddingOffset = opts.style.padding % 2 === 0 ? opts.style.padding : opts.style.padding + 1;\n const height = textLines.length + paddingOffset;\n const width = Math.max(\n ...textLines.map((line) => stripAnsi(line).length),\n opts.title ? stripAnsi(opts.title).length : 0\n ) + paddingOffset;\n const widthOffset = width + paddingOffset;\n const leftSpace = opts.style.marginLeft > 0 ? \" \".repeat(opts.style.marginLeft) : \"\";\n if (opts.style.marginTop > 0) {\n boxLines.push(\"\".repeat(opts.style.marginTop));\n }\n if (opts.title) {\n const title = _color ? _color(opts.title) : opts.title;\n const left = borderStyle.h.repeat(\n Math.floor((width - stripAnsi(opts.title).length) / 2)\n );\n const right = borderStyle.h.repeat(\n width - stripAnsi(opts.title).length - stripAnsi(left).length + paddingOffset\n );\n boxLines.push(\n `${leftSpace}${borderStyle.tl}${left}${title}${right}${borderStyle.tr}`\n );\n } else {\n boxLines.push(\n `${leftSpace}${borderStyle.tl}${borderStyle.h.repeat(widthOffset)}${borderStyle.tr}`\n );\n }\n const valignOffset = opts.style.valign === \"center\" ? Math.floor((height - textLines.length) / 2) : opts.style.valign === \"top\" ? height - textLines.length - paddingOffset : height - textLines.length;\n for (let i = 0; i < height; i++) {\n if (i < valignOffset || i >= valignOffset + textLines.length) {\n boxLines.push(\n `${leftSpace}${borderStyle.v}${\" \".repeat(widthOffset)}${borderStyle.v}`\n );\n } else {\n const line = textLines[i - valignOffset];\n const left = \" \".repeat(paddingOffset);\n const right = \" \".repeat(width - stripAnsi(line).length);\n boxLines.push(\n `${leftSpace}${borderStyle.v}${left}${line}${right}${borderStyle.v}`\n );\n }\n }\n boxLines.push(\n `${leftSpace}${borderStyle.bl}${borderStyle.h.repeat(widthOffset)}${borderStyle.br}`\n );\n if (opts.style.marginBottom > 0) {\n boxLines.push(\"\".repeat(opts.style.marginBottom));\n }\n return boxLines.join(\"\\n\");\n}\n\nexport { centerAlign as a, align as b, colorize as c, box as d, colors as e, getColor as g, leftAlign as l, rightAlign as r, stripAnsi as s };\n","import { createConsola as createConsola$1, LogLevels } from './core.mjs';\nexport { Consola, LogTypes } from './core.mjs';\nimport { B as BasicReporter, p as parseStack } from './shared/consola.DRwqZj3T.mjs';\nimport g$1 from 'node:process';\nimport { e as colors, d as box, s as stripAnsi$1 } from './shared/consola.DXBYu-KD.mjs';\nimport 'node:util';\nimport 'node:path';\nimport 'node:tty';\n\nconst r=Object.create(null),i=e=>globalThis.process?.env||import.meta.env||globalThis.Deno?.env.toObject()||globalThis.__env__||(e?r:globalThis),o=new Proxy(r,{get(e,s){return i()[s]??r[s]},has(e,s){const E=i();return s in E||s in r},set(e,s,E){const B=i(true);return B[s]=E,true},deleteProperty(e,s){if(!s)return false;const E=i(true);return delete E[s],true},ownKeys(){const e=i(true);return Object.keys(e)}}),t=typeof process<\"u\"&&process.env&&process.env.NODE_ENV||\"\",f=[[\"APPVEYOR\"],[\"AWS_AMPLIFY\",\"AWS_APP_ID\",{ci:true}],[\"AZURE_PIPELINES\",\"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI\"],[\"AZURE_STATIC\",\"INPUT_AZURE_STATIC_WEB_APPS_API_TOKEN\"],[\"APPCIRCLE\",\"AC_APPCIRCLE\"],[\"BAMBOO\",\"bamboo_planKey\"],[\"BITBUCKET\",\"BITBUCKET_COMMIT\"],[\"BITRISE\",\"BITRISE_IO\"],[\"BUDDY\",\"BUDDY_WORKSPACE_ID\"],[\"BUILDKITE\"],[\"CIRCLE\",\"CIRCLECI\"],[\"CIRRUS\",\"CIRRUS_CI\"],[\"CLOUDFLARE_PAGES\",\"CF_PAGES\",{ci:true}],[\"CODEBUILD\",\"CODEBUILD_BUILD_ARN\"],[\"CODEFRESH\",\"CF_BUILD_ID\"],[\"DRONE\"],[\"DRONE\",\"DRONE_BUILD_EVENT\"],[\"DSARI\"],[\"GITHUB_ACTIONS\"],[\"GITLAB\",\"GITLAB_CI\"],[\"GITLAB\",\"CI_MERGE_REQUEST_ID\"],[\"GOCD\",\"GO_PIPELINE_LABEL\"],[\"LAYERCI\"],[\"HUDSON\",\"HUDSON_URL\"],[\"JENKINS\",\"JENKINS_URL\"],[\"MAGNUM\"],[\"NETLIFY\"],[\"NETLIFY\",\"NETLIFY_LOCAL\",{ci:false}],[\"NEVERCODE\"],[\"RENDER\"],[\"SAIL\",\"SAILCI\"],[\"SEMAPHORE\"],[\"SCREWDRIVER\"],[\"SHIPPABLE\"],[\"SOLANO\",\"TDDIUM\"],[\"STRIDER\"],[\"TEAMCITY\",\"TEAMCITY_VERSION\"],[\"TRAVIS\"],[\"VERCEL\",\"NOW_BUILDER\"],[\"VERCEL\",\"VERCEL\",{ci:false}],[\"VERCEL\",\"VERCEL_ENV\",{ci:false}],[\"APPCENTER\",\"APPCENTER_BUILD_ID\"],[\"CODESANDBOX\",\"CODESANDBOX_SSE\",{ci:false}],[\"CODESANDBOX\",\"CODESANDBOX_HOST\",{ci:false}],[\"STACKBLITZ\"],[\"STORMKIT\"],[\"CLEAVR\"],[\"ZEABUR\"],[\"CODESPHERE\",\"CODESPHERE_APP_ID\",{ci:true}],[\"RAILWAY\",\"RAILWAY_PROJECT_ID\"],[\"RAILWAY\",\"RAILWAY_SERVICE_ID\"],[\"DENO-DEPLOY\",\"DENO_DEPLOYMENT_ID\"],[\"FIREBASE_APP_HOSTING\",\"FIREBASE_APP_HOSTING\",{ci:true}]];function b(){if(globalThis.process?.env)for(const e of f){const s=e[1]||e[0];if(globalThis.process?.env[s])return {name:e[0].toLowerCase(),...e[2]}}return globalThis.process?.env?.SHELL===\"/bin/jsh\"&&globalThis.process?.versions?.webcontainer?{name:\"stackblitz\",ci:false}:{name:\"\",ci:false}}const l=b();l.name;function n(e){return e?e!==\"false\":false}const I=globalThis.process?.platform||\"\",T=n(o.CI)||l.ci!==false,a=n(globalThis.process?.stdout&&globalThis.process?.stdout.isTTY),g=n(o.DEBUG),R=t===\"test\"||n(o.TEST);n(o.MINIMAL)||T||R||!a;const A=/^win/i.test(I);!n(o.NO_COLOR)&&(n(o.FORCE_COLOR)||(a||A)&&o.TERM!==\"dumb\"||T);const C=(globalThis.process?.versions?.node||\"\").replace(/^v/,\"\")||null;Number(C?.split(\".\")[0])||null;const y=globalThis.process||Object.create(null),_={versions:{}};new Proxy(y,{get(e,s){if(s===\"env\")return o;if(s in e)return e[s];if(s in _)return _[s]}});const c=globalThis.process?.release?.name===\"node\",O=!!globalThis.Bun||!!globalThis.process?.versions?.bun,D=!!globalThis.Deno,L=!!globalThis.fastly,S=!!globalThis.Netlify,u=!!globalThis.EdgeRuntime,N=globalThis.navigator?.userAgent===\"Cloudflare-Workers\",F=[[S,\"netlify\"],[u,\"edge-light\"],[N,\"workerd\"],[L,\"fastly\"],[D,\"deno\"],[O,\"bun\"],[c,\"node\"]];function G(){const e=F.find(s=>s[0]);if(e)return {name:e[1]}}const P=G();P?.name||\"\";\n\nfunction ansiRegex({onlyFirst = false} = {}) {\n\t// Valid string terminator sequences are BEL, ESC\\, and 0x9c\n\tconst ST = '(?:\\\\u0007|\\\\u001B\\\\u005C|\\\\u009C)';\n\tconst pattern = [\n\t\t`[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?${ST})`,\n\t\t'(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]))',\n\t].join('|');\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n}\n\nconst regex = ansiRegex();\n\nfunction stripAnsi(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n\t}\n\n\t// Even though the regex is global, we don't need to reset the `.lastIndex`\n\t// because unlike `.exec()` and `.test()`, `.replace()` does it automatically\n\t// and doing it manually has a performance penalty.\n\treturn string.replace(regex, '');\n}\n\n// Generated code.\n\nfunction isAmbiguous(x) {\n\treturn x === 0xA1\n\t\t|| x === 0xA4\n\t\t|| x === 0xA7\n\t\t|| x === 0xA8\n\t\t|| x === 0xAA\n\t\t|| x === 0xAD\n\t\t|| x === 0xAE\n\t\t|| x >= 0xB0 && x <= 0xB4\n\t\t|| x >= 0xB6 && x <= 0xBA\n\t\t|| x >= 0xBC && x <= 0xBF\n\t\t|| x === 0xC6\n\t\t|| x === 0xD0\n\t\t|| x === 0xD7\n\t\t|| x === 0xD8\n\t\t|| x >= 0xDE && x <= 0xE1\n\t\t|| x === 0xE6\n\t\t|| x >= 0xE8 && x <= 0xEA\n\t\t|| x === 0xEC\n\t\t|| x === 0xED\n\t\t|| x === 0xF0\n\t\t|| x === 0xF2\n\t\t|| x === 0xF3\n\t\t|| x >= 0xF7 && x <= 0xFA\n\t\t|| x === 0xFC\n\t\t|| x === 0xFE\n\t\t|| x === 0x101\n\t\t|| x === 0x111\n\t\t|| x === 0x113\n\t\t|| x === 0x11B\n\t\t|| x === 0x126\n\t\t|| x === 0x127\n\t\t|| x === 0x12B\n\t\t|| x >= 0x131 && x <= 0x133\n\t\t|| x === 0x138\n\t\t|| x >= 0x13F && x <= 0x142\n\t\t|| x === 0x144\n\t\t|| x >= 0x148 && x <= 0x14B\n\t\t|| x === 0x14D\n\t\t|| x === 0x152\n\t\t|| x === 0x153\n\t\t|| x === 0x166\n\t\t|| x === 0x167\n\t\t|| x === 0x16B\n\t\t|| x === 0x1CE\n\t\t|| x === 0x1D0\n\t\t|| x === 0x1D2\n\t\t|| x === 0x1D4\n\t\t|| x === 0x1D6\n\t\t|| x === 0x1D8\n\t\t|| x === 0x1DA\n\t\t|| x === 0x1DC\n\t\t|| x === 0x251\n\t\t|| x === 0x261\n\t\t|| x === 0x2C4\n\t\t|| x === 0x2C7\n\t\t|| x >= 0x2C9 && x <= 0x2CB\n\t\t|| x === 0x2CD\n\t\t|| x === 0x2D0\n\t\t|| x >= 0x2D8 && x <= 0x2DB\n\t\t|| x === 0x2DD\n\t\t|| x === 0x2DF\n\t\t|| x >= 0x300 && x <= 0x36F\n\t\t|| x >= 0x391 && x <= 0x3A1\n\t\t|| x >= 0x3A3 && x <= 0x3A9\n\t\t|| x >= 0x3B1 && x <= 0x3C1\n\t\t|| x >= 0x3C3 && x <= 0x3C9\n\t\t|| x === 0x401\n\t\t|| x >= 0x410 && x <= 0x44F\n\t\t|| x === 0x451\n\t\t|| x === 0x2010\n\t\t|| x >= 0x2013 && x <= 0x2016\n\t\t|| x === 0x2018\n\t\t|| x === 0x2019\n\t\t|| x === 0x201C\n\t\t|| x === 0x201D\n\t\t|| x >= 0x2020 && x <= 0x2022\n\t\t|| x >= 0x2024 && x <= 0x2027\n\t\t|| x === 0x2030\n\t\t|| x === 0x2032\n\t\t|| x === 0x2033\n\t\t|| x === 0x2035\n\t\t|| x === 0x203B\n\t\t|| x === 0x203E\n\t\t|| x === 0x2074\n\t\t|| x === 0x207F\n\t\t|| x >= 0x2081 && x <= 0x2084\n\t\t|| x === 0x20AC\n\t\t|| x === 0x2103\n\t\t|| x === 0x2105\n\t\t|| x === 0x2109\n\t\t|| x === 0x2113\n\t\t|| x === 0x2116\n\t\t|| x === 0x2121\n\t\t|| x === 0x2122\n\t\t|| x === 0x2126\n\t\t|| x === 0x212B\n\t\t|| x === 0x2153\n\t\t|| x === 0x2154\n\t\t|| x >= 0x215B && x <= 0x215E\n\t\t|| x >= 0x2160 && x <= 0x216B\n\t\t|| x >= 0x2170 && x <= 0x2179\n\t\t|| x === 0x2189\n\t\t|| x >= 0x2190 && x <= 0x2199\n\t\t|| x === 0x21B8\n\t\t|| x === 0x21B9\n\t\t|| x === 0x21D2\n\t\t|| x === 0x21D4\n\t\t|| x === 0x21E7\n\t\t|| x === 0x2200\n\t\t|| x === 0x2202\n\t\t|| x === 0x2203\n\t\t|| x === 0x2207\n\t\t|| x === 0x2208\n\t\t|| x === 0x220B\n\t\t|| x === 0x220F\n\t\t|| x === 0x2211\n\t\t|| x === 0x2215\n\t\t|| x === 0x221A\n\t\t|| x >= 0x221D && x <= 0x2220\n\t\t|| x === 0x2223\n\t\t|| x === 0x2225\n\t\t|| x >= 0x2227 && x <= 0x222C\n\t\t|| x === 0x222E\n\t\t|| x >= 0x2234 && x <= 0x2237\n\t\t|| x === 0x223C\n\t\t|| x === 0x223D\n\t\t|| x === 0x2248\n\t\t|| x === 0x224C\n\t\t|| x === 0x2252\n\t\t|| x === 0x2260\n\t\t|| x === 0x2261\n\t\t|| x >= 0x2264 && x <= 0x2267\n\t\t|| x === 0x226A\n\t\t|| x === 0x226B\n\t\t|| x === 0x226E\n\t\t|| x === 0x226F\n\t\t|| x === 0x2282\n\t\t|| x === 0x2283\n\t\t|| x === 0x2286\n\t\t|| x === 0x2287\n\t\t|| x === 0x2295\n\t\t|| x === 0x2299\n\t\t|| x === 0x22A5\n\t\t|| x === 0x22BF\n\t\t|| x === 0x2312\n\t\t|| x >= 0x2460 && x <= 0x24E9\n\t\t|| x >= 0x24EB && x <= 0x254B\n\t\t|| x >= 0x2550 && x <= 0x2573\n\t\t|| x >= 0x2580 && x <= 0x258F\n\t\t|| x >= 0x2592 && x <= 0x2595\n\t\t|| x === 0x25A0\n\t\t|| x === 0x25A1\n\t\t|| x >= 0x25A3 && x <= 0x25A9\n\t\t|| x === 0x25B2\n\t\t|| x === 0x25B3\n\t\t|| x === 0x25B6\n\t\t|| x === 0x25B7\n\t\t|| x === 0x25BC\n\t\t|| x === 0x25BD\n\t\t|| x === 0x25C0\n\t\t|| x === 0x25C1\n\t\t|| x >= 0x25C6 && x <= 0x25C8\n\t\t|| x === 0x25CB\n\t\t|| x >= 0x25CE && x <= 0x25D1\n\t\t|| x >= 0x25E2 && x <= 0x25E5\n\t\t|| x === 0x25EF\n\t\t|| x === 0x2605\n\t\t|| x === 0x2606\n\t\t|| x === 0x2609\n\t\t|| x === 0x260E\n\t\t|| x === 0x260F\n\t\t|| x === 0x261C\n\t\t|| x === 0x261E\n\t\t|| x === 0x2640\n\t\t|| x === 0x2642\n\t\t|| x === 0x2660\n\t\t|| x === 0x2661\n\t\t|| x >= 0x2663 && x <= 0x2665\n\t\t|| x >= 0x2667 && x <= 0x266A\n\t\t|| x === 0x266C\n\t\t|| x === 0x266D\n\t\t|| x === 0x266F\n\t\t|| x === 0x269E\n\t\t|| x === 0x269F\n\t\t|| x === 0x26BF\n\t\t|| x >= 0x26C6 && x <= 0x26CD\n\t\t|| x >= 0x26CF && x <= 0x26D3\n\t\t|| x >= 0x26D5 && x <= 0x26E1\n\t\t|| x === 0x26E3\n\t\t|| x === 0x26E8\n\t\t|| x === 0x26E9\n\t\t|| x >= 0x26EB && x <= 0x26F1\n\t\t|| x === 0x26F4\n\t\t|| x >= 0x26F6 && x <= 0x26F9\n\t\t|| x === 0x26FB\n\t\t|| x === 0x26FC\n\t\t|| x === 0x26FE\n\t\t|| x === 0x26FF\n\t\t|| x === 0x273D\n\t\t|| x >= 0x2776 && x <= 0x277F\n\t\t|| x >= 0x2B56 && x <= 0x2B59\n\t\t|| x >= 0x3248 && x <= 0x324F\n\t\t|| x >= 0xE000 && x <= 0xF8FF\n\t\t|| x >= 0xFE00 && x <= 0xFE0F\n\t\t|| x === 0xFFFD\n\t\t|| x >= 0x1F100 && x <= 0x1F10A\n\t\t|| x >= 0x1F110 && x <= 0x1F12D\n\t\t|| x >= 0x1F130 && x <= 0x1F169\n\t\t|| x >= 0x1F170 && x <= 0x1F18D\n\t\t|| x === 0x1F18F\n\t\t|| x === 0x1F190\n\t\t|| x >= 0x1F19B && x <= 0x1F1AC\n\t\t|| x >= 0xE0100 && x <= 0xE01EF\n\t\t|| x >= 0xF0000 && x <= 0xFFFFD\n\t\t|| x >= 0x100000 && x <= 0x10FFFD;\n}\n\nfunction isFullWidth(x) {\n\treturn x === 0x3000\n\t\t|| x >= 0xFF01 && x <= 0xFF60\n\t\t|| x >= 0xFFE0 && x <= 0xFFE6;\n}\n\nfunction isWide(x) {\n\treturn x >= 0x1100 && x <= 0x115F\n\t\t|| x === 0x231A\n\t\t|| x === 0x231B\n\t\t|| x === 0x2329\n\t\t|| x === 0x232A\n\t\t|| x >= 0x23E9 && x <= 0x23EC\n\t\t|| x === 0x23F0\n\t\t|| x === 0x23F3\n\t\t|| x === 0x25FD\n\t\t|| x === 0x25FE\n\t\t|| x === 0x2614\n\t\t|| x === 0x2615\n\t\t|| x >= 0x2630 && x <= 0x2637\n\t\t|| x >= 0x2648 && x <= 0x2653\n\t\t|| x === 0x267F\n\t\t|| x >= 0x268A && x <= 0x268F\n\t\t|| x === 0x2693\n\t\t|| x === 0x26A1\n\t\t|| x === 0x26AA\n\t\t|| x === 0x26AB\n\t\t|| x === 0x26BD\n\t\t|| x === 0x26BE\n\t\t|| x === 0x26C4\n\t\t|| x === 0x26C5\n\t\t|| x === 0x26CE\n\t\t|| x === 0x26D4\n\t\t|| x === 0x26EA\n\t\t|| x === 0x26F2\n\t\t|| x === 0x26F3\n\t\t|| x === 0x26F5\n\t\t|| x === 0x26FA\n\t\t|| x === 0x26FD\n\t\t|| x === 0x2705\n\t\t|| x === 0x270A\n\t\t|| x === 0x270B\n\t\t|| x === 0x2728\n\t\t|| x === 0x274C\n\t\t|| x === 0x274E\n\t\t|| x >= 0x2753 && x <= 0x2755\n\t\t|| x === 0x2757\n\t\t|| x >= 0x2795 && x <= 0x2797\n\t\t|| x === 0x27B0\n\t\t|| x === 0x27BF\n\t\t|| x === 0x2B1B\n\t\t|| x === 0x2B1C\n\t\t|| x === 0x2B50\n\t\t|| x === 0x2B55\n\t\t|| x >= 0x2E80 && x <= 0x2E99\n\t\t|| x >= 0x2E9B && x <= 0x2EF3\n\t\t|| x >= 0x2F00 && x <= 0x2FD5\n\t\t|| x >= 0x2FF0 && x <= 0x2FFF\n\t\t|| x >= 0x3001 && x <= 0x303E\n\t\t|| x >= 0x3041 && x <= 0x3096\n\t\t|| x >= 0x3099 && x <= 0x30FF\n\t\t|| x >= 0x3105 && x <= 0x312F\n\t\t|| x >= 0x3131 && x <= 0x318E\n\t\t|| x >= 0x3190 && x <= 0x31E5\n\t\t|| x >= 0x31EF && x <= 0x321E\n\t\t|| x >= 0x3220 && x <= 0x3247\n\t\t|| x >= 0x3250 && x <= 0xA48C\n\t\t|| x >= 0xA490 && x <= 0xA4C6\n\t\t|| x >= 0xA960 && x <= 0xA97C\n\t\t|| x >= 0xAC00 && x <= 0xD7A3\n\t\t|| x >= 0xF900 && x <= 0xFAFF\n\t\t|| x >= 0xFE10 && x <= 0xFE19\n\t\t|| x >= 0xFE30 && x <= 0xFE52\n\t\t|| x >= 0xFE54 && x <= 0xFE66\n\t\t|| x >= 0xFE68 && x <= 0xFE6B\n\t\t|| x >= 0x16FE0 && x <= 0x16FE4\n\t\t|| x === 0x16FF0\n\t\t|| x === 0x16FF1\n\t\t|| x >= 0x17000 && x <= 0x187F7\n\t\t|| x >= 0x18800 && x <= 0x18CD5\n\t\t|| x >= 0x18CFF && x <= 0x18D08\n\t\t|| x >= 0x1AFF0 && x <= 0x1AFF3\n\t\t|| x >= 0x1AFF5 && x <= 0x1AFFB\n\t\t|| x === 0x1AFFD\n\t\t|| x === 0x1AFFE\n\t\t|| x >= 0x1B000 && x <= 0x1B122\n\t\t|| x === 0x1B132\n\t\t|| x >= 0x1B150 && x <= 0x1B152\n\t\t|| x === 0x1B155\n\t\t|| x >= 0x1B164 && x <= 0x1B167\n\t\t|| x >= 0x1B170 && x <= 0x1B2FB\n\t\t|| x >= 0x1D300 && x <= 0x1D356\n\t\t|| x >= 0x1D360 && x <= 0x1D376\n\t\t|| x === 0x1F004\n\t\t|| x === 0x1F0CF\n\t\t|| x === 0x1F18E\n\t\t|| x >= 0x1F191 && x <= 0x1F19A\n\t\t|| x >= 0x1F200 && x <= 0x1F202\n\t\t|| x >= 0x1F210 && x <= 0x1F23B\n\t\t|| x >= 0x1F240 && x <= 0x1F248\n\t\t|| x === 0x1F250\n\t\t|| x === 0x1F251\n\t\t|| x >= 0x1F260 && x <= 0x1F265\n\t\t|| x >= 0x1F300 && x <= 0x1F320\n\t\t|| x >= 0x1F32D && x <= 0x1F335\n\t\t|| x >= 0x1F337 && x <= 0x1F37C\n\t\t|| x >= 0x1F37E && x <= 0x1F393\n\t\t|| x >= 0x1F3A0 && x <= 0x1F3CA\n\t\t|| x >= 0x1F3CF && x <= 0x1F3D3\n\t\t|| x >= 0x1F3E0 && x <= 0x1F3F0\n\t\t|| x === 0x1F3F4\n\t\t|| x >= 0x1F3F8 && x <= 0x1F43E\n\t\t|| x === 0x1F440\n\t\t|| x >= 0x1F442 && x <= 0x1F4FC\n\t\t|| x >= 0x1F4FF && x <= 0x1F53D\n\t\t|| x >= 0x1F54B && x <= 0x1F54E\n\t\t|| x >= 0x1F550 && x <= 0x1F567\n\t\t|| x === 0x1F57A\n\t\t|| x === 0x1F595\n\t\t|| x === 0x1F596\n\t\t|| x === 0x1F5A4\n\t\t|| x >= 0x1F5FB && x <= 0x1F64F\n\t\t|| x >= 0x1F680 && x <= 0x1F6C5\n\t\t|| x === 0x1F6CC\n\t\t|| x >= 0x1F6D0 && x <= 0x1F6D2\n\t\t|| x >= 0x1F6D5 && x <= 0x1F6D7\n\t\t|| x >= 0x1F6DC && x <= 0x1F6DF\n\t\t|| x === 0x1F6EB\n\t\t|| x === 0x1F6EC\n\t\t|| x >= 0x1F6F4 && x <= 0x1F6FC\n\t\t|| x >= 0x1F7E0 && x <= 0x1F7EB\n\t\t|| x === 0x1F7F0\n\t\t|| x >= 0x1F90C && x <= 0x1F93A\n\t\t|| x >= 0x1F93C && x <= 0x1F945\n\t\t|| x >= 0x1F947 && x <= 0x1F9FF\n\t\t|| x >= 0x1FA70 && x <= 0x1FA7C\n\t\t|| x >= 0x1FA80 && x <= 0x1FA89\n\t\t|| x >= 0x1FA8F && x <= 0x1FAC6\n\t\t|| x >= 0x1FACE && x <= 0x1FADC\n\t\t|| x >= 0x1FADF && x <= 0x1FAE9\n\t\t|| x >= 0x1FAF0 && x <= 0x1FAF8\n\t\t|| x >= 0x20000 && x <= 0x2FFFD\n\t\t|| x >= 0x30000 && x <= 0x3FFFD;\n}\n\nfunction validate(codePoint) {\n\tif (!Number.isSafeInteger(codePoint)) {\n\t\tthrow new TypeError(`Expected a code point, got \\`${typeof codePoint}\\`.`);\n\t}\n}\n\nfunction eastAsianWidth(codePoint, {ambiguousAsWide = false} = {}) {\n\tvalidate(codePoint);\n\n\tif (\n\t\tisFullWidth(codePoint)\n\t\t|| isWide(codePoint)\n\t\t|| (ambiguousAsWide && isAmbiguous(codePoint))\n\t) {\n\t\treturn 2;\n\t}\n\n\treturn 1;\n}\n\nconst emojiRegex = () => {\n\t// https://mths.be/emoji\n\treturn /[#*0-9]\\uFE0F?\\u20E3|[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23ED-\\u23EF\\u23F1\\u23F2\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB\\u25FC\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692\\u2694-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A7\\u26AA\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C8\\u26CF\\u26D1\\u26E9\\u26F0-\\u26F5\\u26F7\\u26F8\\u26FA\\u2702\\u2708\\u2709\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2733\\u2734\\u2744\\u2747\\u2757\\u2763\\u27A1\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B55\\u3030\\u303D\\u3297\\u3299]\\uFE0F?|[\\u261D\\u270C\\u270D](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?|[\\u270A\\u270B](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u2693\\u26A1\\u26AB\\u26C5\\u26CE\\u26D4\\u26EA\\u26FD\\u2705\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2795-\\u2797\\u27B0\\u27BF\\u2B50]|\\u26D3\\uFE0F?(?:\\u200D\\uD83D\\uDCA5)?|\\u26F9(?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\u2764\\uFE0F?(?:\\u200D(?:\\uD83D\\uDD25|\\uD83E\\uDE79))?|\\uD83C(?:[\\uDC04\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDE02\\uDE37\\uDF21\\uDF24-\\uDF2C\\uDF36\\uDF7D\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E\\uDF9F\\uDFCD\\uDFCE\\uDFD4-\\uDFDF\\uDFF5\\uDFF7]\\uFE0F?|[\\uDF85\\uDFC2\\uDFC7](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDFC4\\uDFCA](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDFCB\\uDFCC](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF43\\uDF45-\\uDF4A\\uDF4C-\\uDF7C\\uDF7E-\\uDF84\\uDF86-\\uDF93\\uDFA0-\\uDFC1\\uDFC5\\uDFC6\\uDFC8\\uDFC9\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF8-\\uDFFF]|\\uDDE6\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF]|\\uDDE7\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF]|\\uDDE8\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF7\\uDDFA-\\uDDFF]|\\uDDE9\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF]|\\uDDEA\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA]|\\uDDEB\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7]|\\uDDEC\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE]|\\uDDED\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA]|\\uDDEE\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9]|\\uDDEF\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5]|\\uDDF0\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF]|\\uDDF1\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE]|\\uDDF2\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF]|\\uDDF3\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF]|\\uDDF4\\uD83C\\uDDF2|\\uDDF5\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE]|\\uDDF6\\uD83C\\uDDE6|\\uDDF7\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC]|\\uDDF8\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF]|\\uDDF9\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF]|\\uDDFA\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF]|\\uDDFB\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA]|\\uDDFC\\uD83C[\\uDDEB\\uDDF8]|\\uDDFD\\uD83C\\uDDF0|\\uDDFE\\uD83C[\\uDDEA\\uDDF9]|\\uDDFF\\uD83C[\\uDDE6\\uDDF2\\uDDFC]|\\uDF44(?:\\u200D\\uD83D\\uDFEB)?|\\uDF4B(?:\\u200D\\uD83D\\uDFE9)?|\\uDFC3(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?|\\uDFF3\\uFE0F?(?:\\u200D(?:\\u26A7\\uFE0F?|\\uD83C\\uDF08))?|\\uDFF4(?:\\u200D\\u2620\\uFE0F?|\\uDB40\\uDC67\\uDB40\\uDC62\\uDB40(?:\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F)?)|\\uD83D(?:[\\uDC3F\\uDCFD\\uDD49\\uDD4A\\uDD6F\\uDD70\\uDD73\\uDD76-\\uDD79\\uDD87\\uDD8A-\\uDD8D\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA\\uDECB\\uDECD-\\uDECF\\uDEE0-\\uDEE5\\uDEE9\\uDEF0\\uDEF3]\\uFE0F?|[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDC8F\\uDC91\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4\\uDEB5](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD74\\uDD90](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?|[\\uDC00-\\uDC07\\uDC09-\\uDC14\\uDC16-\\uDC25\\uDC27-\\uDC3A\\uDC3C-\\uDC3E\\uDC40\\uDC44\\uDC45\\uDC51-\\uDC65\\uDC6A\\uDC79-\\uDC7B\\uDC7D-\\uDC80\\uDC84\\uDC88-\\uDC8E\\uDC90\\uDC92-\\uDCA9\\uDCAB-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDDA4\\uDDFB-\\uDE2D\\uDE2F-\\uDE34\\uDE37-\\uDE41\\uDE43\\uDE44\\uDE48-\\uDE4A\\uDE80-\\uDEA2\\uDEA4-\\uDEB3\\uDEB7-\\uDEBF\\uDEC1-\\uDEC5\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEDC-\\uDEDF\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB\\uDFF0]|\\uDC08(?:\\u200D\\u2B1B)?|\\uDC15(?:\\u200D\\uD83E\\uDDBA)?|\\uDC26(?:\\u200D(?:\\u2B1B|\\uD83D\\uDD25))?|\\uDC3B(?:\\u200D\\u2744\\uFE0F?)?|\\uDC41\\uFE0F?(?:\\u200D\\uD83D\\uDDE8\\uFE0F?)?|\\uDC68(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDC68\\uDC69]\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDC69(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?[\\uDC68\\uDC69]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?|\\uDC69\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?))|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDC6F(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\uDD75(?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\uDE2E(?:\\u200D\\uD83D\\uDCA8)?|\\uDE35(?:\\u200D\\uD83D\\uDCAB)?|\\uDE36(?:\\u200D\\uD83C\\uDF2B\\uFE0F?)?|\\uDE42(?:\\u200D[\\u2194\\u2195]\\uFE0F?)?|\\uDEB6(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?)|\\uD83E(?:[\\uDD0C\\uDD0F\\uDD18-\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5\\uDEC3-\\uDEC5\\uDEF0\\uDEF2-\\uDEF8](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD\\uDDCF\\uDDD4\\uDDD6-\\uDDDD](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDDDE\\uDDDF](?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD0D\\uDD0E\\uDD10-\\uDD17\\uDD20-\\uDD25\\uDD27-\\uDD2F\\uDD3A\\uDD3F-\\uDD45\\uDD47-\\uDD76\\uDD78-\\uDDB4\\uDDB7\\uDDBA\\uDDBC-\\uDDCC\\uDDD0\\uDDE0-\\uDDFF\\uDE70-\\uDE7C\\uDE80-\\uDE89\\uDE8F-\\uDEC2\\uDEC6\\uDECE-\\uDEDC\\uDEDF-\\uDEE9]|\\uDD3C(?:\\u200D[\\u2640\\u2642]\\uFE0F?|\\uD83C[\\uDFFB-\\uDFFF])?|\\uDDCE(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?|\\uDDD1(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1|\\uDDD1\\u200D\\uD83E\\uDDD2(?:\\u200D\\uD83E\\uDDD2)?|\\uDDD2(?:\\u200D\\uD83E\\uDDD2)?))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?))?|\\uDEF1(?:\\uD83C(?:\\uDFFB(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFC-\\uDFFF])?|\\uDFFC(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])?|\\uDFFD(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])?|\\uDFFE(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])?|\\uDFFF(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFE])?))?)/g;\n};\n\nconst segmenter = globalThis.Intl?.Segmenter ? new Intl.Segmenter() : { segment: (str) => str.split('') };\n\nconst defaultIgnorableCodePointRegex = /^\\p{Default_Ignorable_Code_Point}$/u;\n\nfunction stringWidth$1(string, options = {}) {\n\tif (typeof string !== 'string' || string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tconst {\n\t\tambiguousIsNarrow = true,\n\t\tcountAnsiEscapeCodes = false,\n\t} = options;\n\n\tif (!countAnsiEscapeCodes) {\n\t\tstring = stripAnsi(string);\n\t}\n\n\tif (string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tlet width = 0;\n\tconst eastAsianWidthOptions = {ambiguousAsWide: !ambiguousIsNarrow};\n\n\tfor (const {segment: character} of segmenter.segment(string)) {\n\t\tconst codePoint = character.codePointAt(0);\n\n\t\t// Ignore control characters\n\t\tif (codePoint <= 0x1F || (codePoint >= 0x7F && codePoint <= 0x9F)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore zero-width characters\n\t\tif (\n\t\t\t(codePoint >= 0x20_0B && codePoint <= 0x20_0F) // Zero-width space, non-joiner, joiner, left-to-right mark, right-to-left mark\n\t\t\t|| codePoint === 0xFE_FF // Zero-width no-break space\n\t\t) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore combining characters\n\t\tif (\n\t\t\t(codePoint >= 0x3_00 && codePoint <= 0x3_6F) // Combining diacritical marks\n\t\t\t|| (codePoint >= 0x1A_B0 && codePoint <= 0x1A_FF) // Combining diacritical marks extended\n\t\t\t|| (codePoint >= 0x1D_C0 && codePoint <= 0x1D_FF) // Combining diacritical marks supplement\n\t\t\t|| (codePoint >= 0x20_D0 && codePoint <= 0x20_FF) // Combining diacritical marks for symbols\n\t\t\t|| (codePoint >= 0xFE_20 && codePoint <= 0xFE_2F) // Combining half marks\n\t\t) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore surrogate pairs\n\t\tif (codePoint >= 0xD8_00 && codePoint <= 0xDF_FF) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore variation selectors\n\t\tif (codePoint >= 0xFE_00 && codePoint <= 0xFE_0F) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// This covers some of the above cases, but we still keep them for performance reasons.\n\t\tif (defaultIgnorableCodePointRegex.test(character)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// TODO: Use `/\\p{RGI_Emoji}/v` when targeting Node.js 20.\n\t\tif (emojiRegex().test(character)) {\n\t\t\twidth += 2;\n\t\t\tcontinue;\n\t\t}\n\n\t\twidth += eastAsianWidth(codePoint, eastAsianWidthOptions);\n\t}\n\n\treturn width;\n}\n\nfunction isUnicodeSupported() {\n\tconst {env} = g$1;\n\tconst {TERM, TERM_PROGRAM} = env;\n\n\tif (g$1.platform !== 'win32') {\n\t\treturn TERM !== 'linux'; // Linux console (kernel)\n\t}\n\n\treturn Boolean(env.WT_SESSION) // Windows Terminal\n\t\t|| Boolean(env.TERMINUS_SUBLIME) // Terminus (<0.2.27)\n\t\t|| env.ConEmuTask === '{cmd::Cmder}' // ConEmu and cmder\n\t\t|| TERM_PROGRAM === 'Terminus-Sublime'\n\t\t|| TERM_PROGRAM === 'vscode'\n\t\t|| TERM === 'xterm-256color'\n\t\t|| TERM === 'alacritty'\n\t\t|| TERM === 'rxvt-unicode'\n\t\t|| TERM === 'rxvt-unicode-256color'\n\t\t|| env.TERMINAL_EMULATOR === 'JetBrains-JediTerm';\n}\n\nconst TYPE_COLOR_MAP = {\n info: \"cyan\",\n fail: \"red\",\n success: \"green\",\n ready: \"green\",\n start: \"magenta\"\n};\nconst LEVEL_COLOR_MAP = {\n 0: \"red\",\n 1: \"yellow\"\n};\nconst unicode = isUnicodeSupported();\nconst s = (c, fallback) => unicode ? c : fallback;\nconst TYPE_ICONS = {\n error: s(\"\\u2716\", \"\\xD7\"),\n fatal: s(\"\\u2716\", \"\\xD7\"),\n ready: s(\"\\u2714\", \"\\u221A\"),\n warn: s(\"\\u26A0\", \"\\u203C\"),\n info: s(\"\\u2139\", \"i\"),\n success: s(\"\\u2714\", \"\\u221A\"),\n debug: s(\"\\u2699\", \"D\"),\n trace: s(\"\\u2192\", \"\\u2192\"),\n fail: s(\"\\u2716\", \"\\xD7\"),\n start: s(\"\\u25D0\", \"o\"),\n log: \"\"\n};\nfunction stringWidth(str) {\n const hasICU = typeof Intl === \"object\";\n if (!hasICU || !Intl.Segmenter) {\n return stripAnsi$1(str).length;\n }\n return stringWidth$1(str);\n}\nclass FancyReporter extends BasicReporter {\n formatStack(stack, message, opts) {\n const indent = \" \".repeat((opts?.errorLevel || 0) + 1);\n return `\n${indent}` + parseStack(stack, message).map(\n (line) => \" \" + line.replace(/^at +/, (m) => colors.gray(m)).replace(/\\((.+)\\)/, (_, m) => `(${colors.cyan(m)})`)\n ).join(`\n${indent}`);\n }\n formatType(logObj, isBadge, opts) {\n const typeColor = TYPE_COLOR_MAP[logObj.type] || LEVEL_COLOR_MAP[logObj.level] || \"gray\";\n if (isBadge) {\n return getBgColor(typeColor)(\n colors.black(` ${logObj.type.toUpperCase()} `)\n );\n }\n const _type = typeof TYPE_ICONS[logObj.type] === \"string\" ? TYPE_ICONS[logObj.type] : logObj.icon || logObj.type;\n return _type ? getColor(typeColor)(_type) : \"\";\n }\n formatLogObj(logObj, opts) {\n const [message, ...additional] = this.formatArgs(logObj.args, opts).split(\n \"\\n\"\n );\n if (logObj.type === \"box\") {\n return box(\n characterFormat(\n message + (additional.length > 0 ? \"\\n\" + additional.join(\"\\n\") : \"\")\n ),\n {\n title: logObj.title ? characterFormat(logObj.title) : void 0,\n style: logObj.style\n }\n );\n }\n const date = this.formatDate(logObj.date, opts);\n const coloredDate = date && colors.gray(date);\n const isBadge = logObj.badge ?? logObj.level < 2;\n const type = this.formatType(logObj, isBadge, opts);\n const tag = logObj.tag ? colors.gray(logObj.tag) : \"\";\n let line;\n const left = this.filterAndJoin([type, characterFormat(message)]);\n const right = this.filterAndJoin(opts.columns ? [tag, coloredDate] : [tag]);\n const space = (opts.columns || 0) - stringWidth(left) - stringWidth(right) - 2;\n line = space > 0 && (opts.columns || 0) >= 80 ? left + \" \".repeat(space) + right : (right ? `${colors.gray(`[${right}]`)} ` : \"\") + left;\n line += characterFormat(\n additional.length > 0 ? \"\\n\" + additional.join(\"\\n\") : \"\"\n );\n if (logObj.type === \"trace\") {\n const _err = new Error(\"Trace: \" + logObj.message);\n line += this.formatStack(_err.stack || \"\", _err.message);\n }\n return isBadge ? \"\\n\" + line + \"\\n\" : line;\n }\n}\nfunction characterFormat(str) {\n return str.replace(/`([^`]+)`/gm, (_, m) => colors.cyan(m)).replace(/\\s+_([^_]+)_\\s+/gm, (_, m) => ` ${colors.underline(m)} `);\n}\nfunction getColor(color = \"white\") {\n return colors[color] || colors.white;\n}\nfunction getBgColor(color = \"bgWhite\") {\n return colors[`bg${color[0].toUpperCase()}${color.slice(1)}`] || colors.bgWhite;\n}\n\nfunction createConsola(options = {}) {\n let level = _getDefaultLogLevel();\n if (process.env.CONSOLA_LEVEL) {\n level = Number.parseInt(process.env.CONSOLA_LEVEL) ?? level;\n }\n const consola2 = createConsola$1({\n level,\n defaults: { level },\n stdout: process.stdout,\n stderr: process.stderr,\n prompt: (...args) => import('./chunks/prompt.mjs').then((m) => m.prompt(...args)),\n reporters: options.reporters || [\n options.fancy ?? !(T || R) ? new FancyReporter() : new BasicReporter()\n ],\n ...options\n });\n return consola2;\n}\nfunction _getDefaultLogLevel() {\n if (g) {\n return LogLevels.debug;\n }\n if (R) {\n return LogLevels.warn;\n }\n return LogLevels.info;\n}\nconst consola = createConsola();\n\nexport { LogLevels, consola, createConsola, consola as default };\n","import consola from 'consola';\nimport { colors } from 'consola/utils';\n\nfunction toArray(val) {\n if (Array.isArray(val)) {\n return val;\n }\n return val === void 0 ? [] : [val];\n}\nfunction formatLineColumns(lines, linePrefix = \"\") {\n const maxLengh = [];\n for (const line of lines) {\n for (const [i, element] of line.entries()) {\n maxLengh[i] = Math.max(maxLengh[i] || 0, element.length);\n }\n }\n return lines.map(\n (l) => l.map(\n (c, i) => linePrefix + c[i === 0 ? \"padStart\" : \"padEnd\"](maxLengh[i])\n ).join(\" \")\n ).join(\"\\n\");\n}\nfunction resolveValue(input) {\n return typeof input === \"function\" ? input() : input;\n}\nclass CLIError extends Error {\n constructor(message, code) {\n super(message);\n this.code = code;\n this.name = \"CLIError\";\n }\n}\n\nconst NUMBER_CHAR_RE = /\\d/;\nconst STR_SPLITTERS = [\"-\", \"_\", \"/\", \".\"];\nfunction isUppercase(char = \"\") {\n if (NUMBER_CHAR_RE.test(char)) {\n return void 0;\n }\n return char !== char.toLowerCase();\n}\nfunction splitByCase(str, separators) {\n const splitters = separators ?? STR_SPLITTERS;\n const parts = [];\n if (!str || typeof str !== \"string\") {\n return parts;\n }\n let buff = \"\";\n let previousUpper;\n let previousSplitter;\n for (const char of str) {\n const isSplitter = splitters.includes(char);\n if (isSplitter === true) {\n parts.push(buff);\n buff = \"\";\n previousUpper = void 0;\n continue;\n }\n const isUpper = isUppercase(char);\n if (previousSplitter === false) {\n if (previousUpper === false && isUpper === true) {\n parts.push(buff);\n buff = char;\n previousUpper = isUpper;\n continue;\n }\n if (previousUpper === true && isUpper === false && buff.length > 1) {\n const lastChar = buff.at(-1);\n parts.push(buff.slice(0, Math.max(0, buff.length - 1)));\n buff = lastChar + char;\n previousUpper = isUpper;\n continue;\n }\n }\n buff += char;\n previousUpper = isUpper;\n previousSplitter = isSplitter;\n }\n parts.push(buff);\n return parts;\n}\nfunction upperFirst(str) {\n return str ? str[0].toUpperCase() + str.slice(1) : \"\";\n}\nfunction lowerFirst(str) {\n return str ? str[0].toLowerCase() + str.slice(1) : \"\";\n}\nfunction pascalCase(str, opts) {\n return str ? (Array.isArray(str) ? str : splitByCase(str)).map((p) => upperFirst(opts?.normalize ? p.toLowerCase() : p)).join(\"\") : \"\";\n}\nfunction camelCase(str, opts) {\n return lowerFirst(pascalCase(str || \"\", opts));\n}\nfunction kebabCase(str, joiner) {\n return str ? (Array.isArray(str) ? str : splitByCase(str)).map((p) => p.toLowerCase()).join(joiner ?? \"-\") : \"\";\n}\n\nfunction toArr(any) {\n return any == void 0 ? [] : Array.isArray(any) ? any : [any];\n}\nfunction toVal(out, key, val, opts) {\n let x;\n const old = out[key];\n const nxt = ~opts.string.indexOf(key) ? val == void 0 || val === true ? \"\" : String(val) : typeof val === \"boolean\" ? val : ~opts.boolean.indexOf(key) ? val === \"false\" ? false : val === \"true\" || (out._.push((x = +val, x * 0 === 0) ? x : val), !!val) : (x = +val, x * 0 === 0) ? x : val;\n out[key] = old == void 0 ? nxt : Array.isArray(old) ? old.concat(nxt) : [old, nxt];\n}\nfunction parseRawArgs(args = [], opts = {}) {\n let k;\n let arr;\n let arg;\n let name;\n let val;\n const out = { _: [] };\n let i = 0;\n let j = 0;\n let idx = 0;\n const len = args.length;\n const alibi = opts.alias !== void 0;\n const strict = opts.unknown !== void 0;\n const defaults = opts.default !== void 0;\n opts.alias = opts.alias || {};\n opts.string = toArr(opts.string);\n opts.boolean = toArr(opts.boolean);\n if (alibi) {\n for (k in opts.alias) {\n arr = opts.alias[k] = toArr(opts.alias[k]);\n for (i = 0; i < arr.length; i++) {\n (opts.alias[arr[i]] = arr.concat(k)).splice(i, 1);\n }\n }\n }\n for (i = opts.boolean.length; i-- > 0; ) {\n arr = opts.alias[opts.boolean[i]] || [];\n for (j = arr.length; j-- > 0; ) {\n opts.boolean.push(arr[j]);\n }\n }\n for (i = opts.string.length; i-- > 0; ) {\n arr = opts.alias[opts.string[i]] || [];\n for (j = arr.length; j-- > 0; ) {\n opts.string.push(arr[j]);\n }\n }\n if (defaults) {\n for (k in opts.default) {\n name = typeof opts.default[k];\n arr = opts.alias[k] = opts.alias[k] || [];\n if (opts[name] !== void 0) {\n opts[name].push(k);\n for (i = 0; i < arr.length; i++) {\n opts[name].push(arr[i]);\n }\n }\n }\n }\n const keys = strict ? Object.keys(opts.alias) : [];\n for (i = 0; i < len; i++) {\n arg = args[i];\n if (arg === \"--\") {\n out._ = out._.concat(args.slice(++i));\n break;\n }\n for (j = 0; j < arg.length; j++) {\n if (arg.charCodeAt(j) !== 45) {\n break;\n }\n }\n if (j === 0) {\n out._.push(arg);\n } else if (arg.substring(j, j + 3) === \"no-\") {\n name = arg.slice(Math.max(0, j + 3));\n if (strict && !~keys.indexOf(name)) {\n return opts.unknown(arg);\n }\n out[name] = false;\n } else {\n for (idx = j + 1; idx < arg.length; idx++) {\n if (arg.charCodeAt(idx) === 61) {\n break;\n }\n }\n name = arg.substring(j, idx);\n val = arg.slice(Math.max(0, ++idx)) || i + 1 === len || (\"\" + args[i + 1]).charCodeAt(0) === 45 || args[++i];\n arr = j === 2 ? [name] : name;\n for (idx = 0; idx < arr.length; idx++) {\n name = arr[idx];\n if (strict && !~keys.indexOf(name)) {\n return opts.unknown(\"-\".repeat(j) + name);\n }\n toVal(out, name, idx + 1 < arr.length || val, opts);\n }\n }\n }\n if (defaults) {\n for (k in opts.default) {\n if (out[k] === void 0) {\n out[k] = opts.default[k];\n }\n }\n }\n if (alibi) {\n for (k in out) {\n arr = opts.alias[k] || [];\n while (arr.length > 0) {\n out[arr.shift()] = out[k];\n }\n }\n }\n return out;\n}\n\nfunction parseArgs(rawArgs, argsDef) {\n const parseOptions = {\n boolean: [],\n string: [],\n mixed: [],\n alias: {},\n default: {}\n };\n const args = resolveArgs(argsDef);\n for (const arg of args) {\n if (arg.type === \"positional\") {\n continue;\n }\n if (arg.type === \"string\") {\n parseOptions.string.push(arg.name);\n } else if (arg.type === \"boolean\") {\n parseOptions.boolean.push(arg.name);\n }\n if (arg.default !== void 0) {\n parseOptions.default[arg.name] = arg.default;\n }\n if (arg.alias) {\n parseOptions.alias[arg.name] = arg.alias;\n }\n }\n const parsed = parseRawArgs(rawArgs, parseOptions);\n const [...positionalArguments] = parsed._;\n const parsedArgsProxy = new Proxy(parsed, {\n get(target, prop) {\n return target[prop] ?? target[camelCase(prop)] ?? target[kebabCase(prop)];\n }\n });\n for (const [, arg] of args.entries()) {\n if (arg.type === \"positional\") {\n const nextPositionalArgument = positionalArguments.shift();\n if (nextPositionalArgument !== void 0) {\n parsedArgsProxy[arg.name] = nextPositionalArgument;\n } else if (arg.default === void 0 && arg.required !== false) {\n throw new CLIError(\n `Missing required positional argument: ${arg.name.toUpperCase()}`,\n \"EARG\"\n );\n } else {\n parsedArgsProxy[arg.name] = arg.default;\n }\n } else if (arg.required && parsedArgsProxy[arg.name] === void 0) {\n throw new CLIError(`Missing required argument: --${arg.name}`, \"EARG\");\n }\n }\n return parsedArgsProxy;\n}\nfunction resolveArgs(argsDef) {\n const args = [];\n for (const [name, argDef] of Object.entries(argsDef || {})) {\n args.push({\n ...argDef,\n name,\n alias: toArray(argDef.alias)\n });\n }\n return args;\n}\n\nfunction defineCommand(def) {\n return def;\n}\nasync function runCommand(cmd, opts) {\n const cmdArgs = await resolveValue(cmd.args || {});\n const parsedArgs = parseArgs(opts.rawArgs, cmdArgs);\n const context = {\n rawArgs: opts.rawArgs,\n args: parsedArgs,\n data: opts.data,\n cmd\n };\n if (typeof cmd.setup === \"function\") {\n await cmd.setup(context);\n }\n let result;\n try {\n const subCommands = await resolveValue(cmd.subCommands);\n if (subCommands && Object.keys(subCommands).length > 0) {\n const subCommandArgIndex = opts.rawArgs.findIndex(\n (arg) => !arg.startsWith(\"-\")\n );\n const subCommandName = opts.rawArgs[subCommandArgIndex];\n if (subCommandName) {\n if (!subCommands[subCommandName]) {\n throw new CLIError(\n `Unknown command \\`${subCommandName}\\``,\n \"E_UNKNOWN_COMMAND\"\n );\n }\n const subCommand = await resolveValue(subCommands[subCommandName]);\n if (subCommand) {\n await runCommand(subCommand, {\n rawArgs: opts.rawArgs.slice(subCommandArgIndex + 1)\n });\n }\n } else if (!cmd.run) {\n throw new CLIError(`No command specified.`, \"E_NO_COMMAND\");\n }\n }\n if (typeof cmd.run === \"function\") {\n result = await cmd.run(context);\n }\n } finally {\n if (typeof cmd.cleanup === \"function\") {\n await cmd.cleanup(context);\n }\n }\n return { result };\n}\nasync function resolveSubCommand(cmd, rawArgs, parent) {\n const subCommands = await resolveValue(cmd.subCommands);\n if (subCommands && Object.keys(subCommands).length > 0) {\n const subCommandArgIndex = rawArgs.findIndex((arg) => !arg.startsWith(\"-\"));\n const subCommandName = rawArgs[subCommandArgIndex];\n const subCommand = await resolveValue(subCommands[subCommandName]);\n if (subCommand) {\n return resolveSubCommand(\n subCommand,\n rawArgs.slice(subCommandArgIndex + 1),\n cmd\n );\n }\n }\n return [cmd, parent];\n}\n\nasync function showUsage(cmd, parent) {\n try {\n consola.log(await renderUsage(cmd, parent) + \"\\n\");\n } catch (error) {\n consola.error(error);\n }\n}\nasync function renderUsage(cmd, parent) {\n const cmdMeta = await resolveValue(cmd.meta || {});\n const cmdArgs = resolveArgs(await resolveValue(cmd.args || {}));\n const parentMeta = await resolveValue(parent?.meta || {});\n const commandName = `${parentMeta.name ? `${parentMeta.name} ` : \"\"}` + (cmdMeta.name || process.argv[1]);\n const argLines = [];\n const posLines = [];\n const commandsLines = [];\n const usageLine = [];\n for (const arg of cmdArgs) {\n if (arg.type === \"positional\") {\n const name = arg.name.toUpperCase();\n const isRequired = arg.required !== false && arg.default === void 0;\n const defaultHint = arg.default ? `=\"${arg.default}\"` : \"\";\n posLines.push([\n \"`\" + name + defaultHint + \"`\",\n arg.description || \"\",\n arg.valueHint ? `<${arg.valueHint}>` : \"\"\n ]);\n usageLine.push(isRequired ? `<${name}>` : `[${name}]`);\n } else {\n const isRequired = arg.required === true && arg.default === void 0;\n const argStr = (arg.type === \"boolean\" && arg.default === true ? [\n ...(arg.alias || []).map((a) => `--no-${a}`),\n `--no-${arg.name}`\n ].join(\", \") : [...(arg.alias || []).map((a) => `-${a}`), `--${arg.name}`].join(\n \", \"\n )) + (arg.type === \"string\" && (arg.valueHint || arg.default) ? `=${arg.valueHint ? `<${arg.valueHint}>` : `\"${arg.default || \"\"}\"`}` : \"\");\n argLines.push([\n \"`\" + argStr + (isRequired ? \" (required)\" : \"\") + \"`\",\n arg.description || \"\"\n ]);\n if (isRequired) {\n usageLine.push(argStr);\n }\n }\n }\n if (cmd.subCommands) {\n const commandNames = [];\n const subCommands = await resolveValue(cmd.subCommands);\n for (const [name, sub] of Object.entries(subCommands)) {\n const subCmd = await resolveValue(sub);\n const meta = await resolveValue(subCmd?.meta);\n commandsLines.push([`\\`${name}\\``, meta?.description || \"\"]);\n commandNames.push(name);\n }\n usageLine.push(commandNames.join(\"|\"));\n }\n const usageLines = [];\n const version = cmdMeta.version || parentMeta.version;\n usageLines.push(\n colors.gray(\n `${cmdMeta.description} (${commandName + (version ? ` v${version}` : \"\")})`\n ),\n \"\"\n );\n const hasOptions = argLines.length > 0 || posLines.length > 0;\n usageLines.push(\n `${colors.underline(colors.bold(\"USAGE\"))} \\`${commandName}${hasOptions ? \" [OPTIONS]\" : \"\"} ${usageLine.join(\" \")}\\``,\n \"\"\n );\n if (posLines.length > 0) {\n usageLines.push(colors.underline(colors.bold(\"ARGUMENTS\")), \"\");\n usageLines.push(formatLineColumns(posLines, \" \"));\n usageLines.push(\"\");\n }\n if (argLines.length > 0) {\n usageLines.push(colors.underline(colors.bold(\"OPTIONS\")), \"\");\n usageLines.push(formatLineColumns(argLines, \" \"));\n usageLines.push(\"\");\n }\n if (commandsLines.length > 0) {\n usageLines.push(colors.underline(colors.bold(\"COMMANDS\")), \"\");\n usageLines.push(formatLineColumns(commandsLines, \" \"));\n usageLines.push(\n \"\",\n `Use \\`${commandName} <command> --help\\` for more information about a command.`\n );\n }\n return usageLines.filter((l) => typeof l === \"string\").join(\"\\n\");\n}\n\nasync function runMain(cmd, opts = {}) {\n const rawArgs = opts.rawArgs || process.argv.slice(2);\n const showUsage$1 = opts.showUsage || showUsage;\n try {\n if (rawArgs.includes(\"--help\") || rawArgs.includes(\"-h\")) {\n await showUsage$1(...await resolveSubCommand(cmd, rawArgs));\n process.exit(0);\n } else if (rawArgs.length === 1 && rawArgs[0] === \"--version\") {\n const meta = typeof cmd.meta === \"function\" ? await cmd.meta() : await cmd.meta;\n if (!meta?.version) {\n throw new CLIError(\"No version specified\", \"E_NO_VERSION\");\n }\n consola.log(meta.version);\n } else {\n await runCommand(cmd, { rawArgs });\n }\n } catch (error) {\n const isCLIError = error instanceof CLIError;\n if (!isCLIError) {\n consola.error(error, \"\\n\");\n }\n if (isCLIError) {\n await showUsage$1(...await resolveSubCommand(cmd, rawArgs));\n }\n consola.error(error.message);\n process.exit(1);\n }\n}\nfunction createMain(cmd) {\n return (opts = {}) => runMain(cmd, opts);\n}\n\nexport { createMain, defineCommand, parseArgs, renderUsage, runCommand, runMain, showUsage };\n","import fs from 'node:fs/promises'\nimport path from 'node:path'\nimport { fileURLToPath } from 'node:url'\n\nfunction packageRoot(): string {\n return path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..')\n}\n\nconst CONFIG = `import { defineConfig } from '@cleartrip/frontguard'\n\nexport default defineConfig({\n mode: 'warn', // or FrontGuard run with \\`--enforce\\`\n // extends: '@your-org/frontguard-config/base',\n\n // Example custom rules (return true when violated):\n // rules: {\n // 'no-inline-style': {\n // severity: 'warn',\n // message: 'Avoid inline style objects',\n // check: (file) => file.content.includes('style={{'),\n // },\n // },\n\n // checks: {\n // bundle: { baselineRef: 'main', maxDeltaBytes: 50_000 },\n // coreWebVitals: { scanGlobs: ['src/**/*.{tsx,jsx}'] },\n // prSize: {\n // tiers: [\n // { minLines: 1000, severity: 'warn', message: 'Very large PR (\\${lines} lines; ≥ \\${min})' },\n // { minLines: 500, severity: 'info', message: 'Consider splitting (\\${lines} lines)' },\n // ],\n // },\n // // AI strict: only // @frontguard-ai:start … :end (or // written by AI: start … :end) in PR files\n // // aiAssistedReview: { strictScanMode: 'decorator' },\n // cycles: { enabled: true },\n // deadCode: { enabled: true, gate: 'info' },\n // // LLM: cloud keys in CI, or local Ollama (no API key) on dev/self-hosted runners:\n // // ollama serve && ollama pull llama3.2\n // // Paste workflow (no key): frontguard run --append ./.frontguard/review-notes.md\n // llm: {\n // enabled: true,\n // provider: 'ollama',\n // model: 'llama3.2',\n // ollamaUrl: 'http://127.0.0.1:11434',\n // perFindingFixes: true,\n // maxFixSuggestions: 8,\n // },\n // // llm: { enabled: true, provider: 'openai', apiKeyEnv: 'OPENAI_API_KEY' },\n // },\n})\n`\n\nconst PR_TEMPLATE = `## Summary\n\n## Why\n\n## How to test\n\n## AI disclosure\n<!-- FrontGuard reads this section. Mark exactly one of Yes / No. -->\n\n- [ ] **Yes** — AI tools (Cursor, Copilot, ChatGPT, Claude, etc.) helped write or materially refactor code in this PR\n- [ ] **No** — I did not use AI-generated code for the changes in this PR\n\nIf **Yes**, list tools and what they touched (helps reviewers run a stricter first pass):\n\n- Tools: \n- Areas/files or prompts (short): \n\n## AI assistance (optional detail)\n- [ ] I have reviewed every AI-suggested line for security, auth, and product correctness\n`\n\nexport async function initFrontGuard(cwd: string): Promise<void> {\n const root = packageRoot()\n const tplPath = path.join(root, 'templates', 'bitbucket-pipelines.yml')\n const outPipeline = path.join(cwd, 'bitbucket-pipelines.frontguard.example.yml')\n try {\n await fs.access(outPipeline)\n } catch {\n try {\n const yml = await fs.readFile(tplPath, 'utf8')\n await fs.writeFile(outPipeline, yml, 'utf8')\n } catch {\n await fs.writeFile(\n outPipeline,\n '# Copy bitbucket-pipelines.yml from @cleartrip/frontguard/templates in node_modules\\n',\n 'utf8',\n )\n }\n }\n\n const cfgPath = path.join(cwd, 'frontguard.config.js')\n try {\n await fs.access(cfgPath)\n } catch {\n await fs.writeFile(cfgPath, CONFIG, 'utf8')\n }\n\n const tplPr = path.join(cwd, 'pull_request_template.md')\n try {\n await fs.access(tplPr)\n } catch {\n await fs.writeFile(tplPr, PR_TEMPLATE, 'utf8')\n }\n}\n","import { existsSync, readFileSync, statSync } from 'node:fs'\n\n/**\n * Bitbucket Cloud PR comments accept Markdown with embedded PNG via `data:image/png;base64,...`.\n * Keep alt text ASCII-only and use standard Base64 (RFC 4648) to match Python `base64.standard_b64encode`.\n *\n * @see https://support.atlassian.com/bitbucket-cloud/docs/markdown-syntax-guide/\n */\n\n/** Alt text for the checks summary image (ASCII for broad compatibility in JSON + Markdown). */\nexport const BITBUCKET_CHECKS_IMAGE_MARKDOWN_ALT = 'FrontGuard checks summary'\n\n/**\n * Max length of the single markdown line ``.\n * Bitbucket API payloads can fail or truncate if the PR comment body is too large.\n */\nexport const MAX_BITBUCKET_INLINE_IMAGE_MARKDOWN_LINE_LENGTH = 300_000\n\n/**\n * Conservative cap on PNG bytes so Base64 expansion + prefix stays under\n * {@link MAX_BITBUCKET_INLINE_IMAGE_MARKDOWN_LINE_LENGTH}.\n * (Roughly: line = prefix + ceil(4n/3) base64 chars + closing paren.)\n */\nexport const MAX_PNG_BYTES_BITBUCKET_INLINE = 210_000\n\nconst MARKDOWN_LINE_PREFIX =\n `: boolean {\n return (\n buf.length >= 8 &&\n buf[0] === 0x89 &&\n buf[1] === 0x50 &&\n buf[2] === 0x4e &&\n buf[3] === 0x47 &&\n buf[4] === 0x0d &&\n buf[5] === 0x0a &&\n buf[6] === 0x1a &&\n buf[7] === 0x0a\n )\n}\n\n/** Length of the full markdown image line for a PNG of `pngByteLength` bytes (before reading the file). */\nexport function bitbucketImageMarkdownLineLength(pngByteLength: number): number {\n const b64Len = 4 * Math.ceil(pngByteLength / 3)\n return MARKDOWN_LINE_PREFIX.length + b64Len + 1\n}\n\n/**\n * Builds one Bitbucket-compatible markdown line for an inline PNG.\n * @throws if buffer is not a PNG, is too large, or the markdown line would exceed API limits\n */\nexport function pngBufferToBitbucketImageMarkdownLine(png: Buffer): string {\n if (!isPngBuffer(png)) {\n throw new TypeError('Buffer is not a PNG (missing IHDR signature)')\n }\n if (png.length > MAX_PNG_BYTES_BITBUCKET_INLINE) {\n throw new RangeError(\n `PNG too large for Bitbucket inline markdown (${png.length} bytes; max ${MAX_PNG_BYTES_BITBUCKET_INLINE}). Host the image and use an HTTPS URL instead.`,\n )\n }\n const b64 = png.toString('base64')\n const line = `${MARKDOWN_LINE_PREFIX}${b64})`\n if (line.length > MAX_BITBUCKET_INLINE_IMAGE_MARKDOWN_LINE_LENGTH) {\n throw new RangeError(\n `Inline markdown line too long (${line.length} chars; max ${MAX_BITBUCKET_INLINE_IMAGE_MARKDOWN_LINE_LENGTH})`,\n )\n }\n return line\n}\n\n/** Same as {@link pngBufferToBitbucketImageMarkdownLine} but returns null on any failure (CI / env paths). */\nexport function tryPngFileToBitbucketImageMarkdownLine(filePath: string): string | null {\n try {\n if (!existsSync(filePath)) return null\n const st = statSync(filePath)\n if (!st.isFile() || st.size > MAX_PNG_BYTES_BITBUCKET_INLINE) return null\n const buf = readFileSync(filePath)\n return pngBufferToBitbucketImageMarkdownLine(buf)\n } catch {\n return null\n }\n}\n","import type { FullReport } from '../report/builder.js'\nimport {\n BITBUCKET_CHECKS_IMAGE_MARKDOWN_ALT,\n tryPngFileToBitbucketImageMarkdownLine,\n} from '../lib/bitbucket-checks-image-md.js'\n\n/**\n * Prefer a local PNG as base64 (set by `frontguard run --checksPngOut` + `--prCommentOut`), else HTTPS URL.\n */\nfunction checksImageMarkdown(): string | null {\n const embedPath = process.env.FRONTGUARD_EMBED_CHECKS_PNG_PATH?.trim()\n if (embedPath) {\n return tryPngFileToBitbucketImageMarkdownLine(embedPath)\n }\n const u = process.env.FRONTGUARD_CHECKS_IMAGE_URL?.trim()\n if (!u) return null\n return ``\n}\n\nfunction bitbucketPipelineResultsUrl(): string | null {\n const full = process.env.BITBUCKET_REPO_FULL_NAME?.trim()\n const bn = process.env.BITBUCKET_BUILD_NUMBER?.trim()\n if (full && bn) {\n return `https://bitbucket.org/${full}/pipelines/results/${bn}`\n }\n const ws = process.env.BITBUCKET_WORKSPACE?.trim()\n const slug = process.env.BITBUCKET_REPO_SLUG?.trim()\n if (ws && slug && bn) {\n return `https://bitbucket.org/${ws}/${slug}/pipelines/results/${bn}`\n }\n return null\n}\n\nfunction bitbucketDownloadsPageUrl(): string | null {\n const full = process.env.BITBUCKET_REPO_FULL_NAME?.trim()\n if (full) return `https://bitbucket.org/${full}/downloads/`\n const ws = process.env.BITBUCKET_WORKSPACE?.trim()\n const slug = process.env.BITBUCKET_REPO_SLUG?.trim()\n if (ws && slug) return `https://bitbucket.org/${ws}/${slug}/downloads/`\n return null\n}\n\n/**\n * Short body for a Bitbucket PR comment: plain lines + bare URLs.\n *\n * Avoids markdown tables and ## headings so the text stays readable even if markup is not\n * rendered. Put HTTPS URLs on their own line (Bitbucket usually turns them into links).\n *\n * For a hosted one-click HTML URL, set FRONTGUARD_PUBLIC_REPORT_URL before `frontguard run`.\n *\n * Set FRONTGUARD_BITBUCKET_COMMENT_LINK_ONLY=1 with FRONTGUARD_PUBLIC_REPORT_URL to output only\n * that URL (e.g. after FreeKit or another deploy step), matching optional Bitbucket flows.\n *\n * Optional image (first match wins):\n * - FRONTGUARD_EMBED_CHECKS_PNG_PATH — local PNG path; FrontGuard sets this when using\n * `--checksPngOut` with `--prCommentOut` (PNG must pass Bitbucket inline limits; see bitbucket-checks-image-md).\n * - FRONTGUARD_CHECKS_IMAGE_URL — HTTPS URL to the PNG if you host it yourself.\n */\nconst DETAILED_REPORT_LINE =\n 'For detailed check analysis, please open the full interactive report:'\n\nexport function formatBitbucketPrSnippet(report: FullReport): string {\n const publicReport = process.env.FRONTGUARD_PUBLIC_REPORT_URL?.trim()\n const linkOnly = process.env.FRONTGUARD_BITBUCKET_COMMENT_LINK_ONLY === '1'\n const imgMd = checksImageMarkdown()\n\n if (linkOnly && publicReport) {\n const parts: string[] = []\n if (imgMd) {\n parts.push(imgMd, '')\n parts.push(DETAILED_REPORT_LINE)\n }\n parts.push(publicReport.endsWith('\\n') ? publicReport.slice(0, -1) : publicReport)\n return `${parts.join('\\n')}\\n`\n }\n\n const downloadsName = process.env.FRONTGUARD_REPORT_DOWNLOAD_NAME?.trim()\n const downloadsPage = bitbucketDownloadsPageUrl()\n const pipeline = bitbucketPipelineResultsUrl()\n\n const { riskScore, results } = report\n const blocks = results.reduce(\n (n, r) => n + r.findings.filter((f) => f.severity === 'block').length,\n 0,\n )\n const warns = results.reduce(\n (n, r) => n + r.findings.filter((f) => f.severity === 'warn').length,\n 0,\n )\n\n const out: string[] = []\n if (imgMd) {\n out.push(imgMd)\n out.push('')\n }\n out.push(\n 'FrontGuard report (short summary)',\n '',\n `Risk: ${riskScore} | Blocking: ${blocks} | Warnings: ${warns}`,\n '',\n )\n\n if (publicReport) {\n if (imgMd) {\n out.push(DETAILED_REPORT_LINE)\n } else {\n out.push('Full interactive report (open in browser):')\n }\n out.push(publicReport)\n out.push('')\n } else if (downloadsName && downloadsPage) {\n out.push('HTML report is in Repository → Downloads. Open this page while logged in:')\n out.push(downloadsPage)\n out.push(`File name: ${downloadsName}`)\n out.push('Download the file, then open it in a browser.')\n out.push('')\n } else if (pipeline) {\n out.push(\n 'There is no direct “HTML URL” for pipeline artifacts in Bitbucket. Use this pipeline run (log in), then Artifacts → frontguard-report.html:',\n )\n out.push(pipeline)\n out.push('')\n out.push(\n 'Steps: open the link → scroll to Artifacts → download frontguard-report.html → open the file on your machine.',\n )\n out.push('')\n } else {\n out.push(\n 'Add a link: run FrontGuard inside Bitbucket Pipelines, or set FRONTGUARD_PUBLIC_REPORT_URL after uploading the HTML somewhere HTTPS.',\n )\n out.push('')\n }\n\n out.push('Checks:')\n for (const r of results) {\n const status = r.skipped\n ? `skipped (${r.skipped.slice(0, 100)}${r.skipped.length > 100 ? '…' : ''})`\n : r.findings.length === 0\n ? 'clean'\n : `${r.findings.length} finding(s)`\n out.push(`- ${r.checkId}: ${status}`)\n }\n\n out.push('')\n out.push(\n 'Do not paste the long frontguard-report.md into PR comments. Full text output is in that file / pipeline artifacts only.',\n )\n return out.join('\\n')\n}\n","/**\n * Parse PR markdown for explicit AI disclosure (no network / no IDE keys).\n *\n * Supports:\n * - `## … AI …` section with `- [x] **Yes**` / `- [x] **No**`\n * - Legacy: \"AI tools were used\" + checked box somewhere in body\n */\n\nexport interface AiDisclosureResult {\n assisted: boolean\n explicitNo: boolean\n /** Checked box in AI section but unclear yes vs no */\n ambiguous: boolean\n}\n\nfunction extractAiSection(body: string): string | null {\n const lines = body.split(/\\r?\\n/)\n const idx = lines.findIndex((l) => /^#{1,6}\\s+.*\\bAI\\b/i.test(l.trim()))\n if (idx < 0) return null\n\n const out: string[] = []\n for (let j = idx + 1; j < lines.length; j++) {\n const line = lines[j] ?? ''\n if (/^##\\s+/.test(line)) break\n out.push(line)\n }\n const text = out.join('\\n').trim()\n return text.length ? text : null\n}\n\nfunction isCheckedItem(line: string): boolean {\n return /^\\s*-\\s*\\[[xX]\\]/.test(line)\n}\n\nexport function parseAiDisclosure(body: string): AiDisclosureResult {\n let assisted = false\n let explicitNo = false\n let ambiguous = false\n\n const section = extractAiSection(body)\n\n if (section) {\n let anyChecked = false\n for (const raw of section.split(/\\r?\\n/)) {\n const line = raw.trimEnd()\n if (!isCheckedItem(line)) continue\n anyChecked = true\n const lower = line.toLowerCase()\n\n const saysNo =\n /\\*\\*no\\*\\*/i.test(line) ||\n /\\bwithout ai\\b/i.test(lower) ||\n /\\bdid not use ai\\b/i.test(lower) ||\n /\\bno\\s+ai\\b/i.test(lower)\n\n const saysYes =\n /\\*\\*yes\\*\\*/i.test(line) ||\n /\\byes\\s*[—–-]\\s*ai\\b/i.test(lower) ||\n /\\bwere used\\b/i.test(lower) ||\n /ai tools.*used/i.test(lower) ||\n /\\b(copilot|cursor|chatgpt|claude)\\b/i.test(lower)\n\n if (saysNo && !saysYes) explicitNo = true\n else if (saysYes) assisted = true\n else if (/\\bai\\b/i.test(line) && !saysNo) assisted = true\n }\n\n if (anyChecked && !assisted && !explicitNo) ambiguous = true\n }\n\n if (!section && /ai tools were used/i.test(body)) {\n const checked = /\\[[xX]\\]\\s*AI tools were used/i.test(body)\n if (checked) assisted = true\n }\n\n if (explicitNo && assisted) {\n ambiguous = true\n assisted = false\n explicitNo = false\n }\n\n return { assisted, explicitNo, ambiguous }\n}\n","import { execFileSync } from 'node:child_process'\nimport type { PrContext } from '../types.js'\nimport { parseAiDisclosure } from './parse-ai-disclosure.js'\nfunction gitTrimmed(cwd: string, args: string[]): string {\n return execFileSync('git', ['-C', cwd, ...args], {\n encoding: 'utf8',\n maxBuffer: 20 * 1024 * 1024,\n }).trimEnd()\n}\n\nfunction resolveCompareRef(cwd: string, destBranch: string): string | null {\n const safe = destBranch.trim()\n if (!safe || safe.startsWith('-') || safe.includes('..')) return null\n const candidates = [safe, `origin/${safe}`]\n for (const c of candidates) {\n try {\n gitTrimmed(cwd, ['rev-parse', '--verify', `${c}^{commit}`])\n return c\n } catch {\n /* try next */\n }\n }\n return null\n}\n\nfunction parseNumstat(output: string): {\n additions: number\n deletions: number\n files: string[]\n} {\n let additions = 0\n let deletions = 0\n const files: string[] = []\n for (const line of output.split('\\n')) {\n const t = line.trim()\n if (!t) continue\n const tab = t.indexOf('\\t')\n if (tab < 0) continue\n const tab2 = t.indexOf('\\t', tab + 1)\n if (tab2 < 0) continue\n const aStr = t.slice(0, tab)\n const dStr = t.slice(tab + 1, tab2)\n const path = t.slice(tab2 + 1)\n const a = aStr === '-' ? 0 : Number(aStr)\n const d = dStr === '-' ? 0 : Number(dStr)\n if (!Number.isFinite(a) || !Number.isFinite(d)) continue\n additions += a\n deletions += d\n if (path) files.push(path)\n }\n return { additions, deletions, files }\n}\n\n/**\n * Bitbucket Cloud pull-request pipelines set BITBUCKET_PR_ID and branch refs.\n * PR body is not in standard env vars — use FRONTGUARD_PR_BODY if you want pr-hygiene on the description.\n * Diff stats use `git diff <destination>...HEAD --numstat`.\n */\nexport function buildBitbucketPrContext(cwd: string): PrContext | null {\n const prId = process.env.BITBUCKET_PR_ID?.trim()\n if (!prId) return null\n\n const dest = process.env.BITBUCKET_PR_DESTINATION_BRANCH?.trim() || 'main'\n const body = process.env.FRONTGUARD_PR_BODY?.trim() ?? ''\n const headRef = process.env.BITBUCKET_PR_SOURCE_BRANCH?.trim() ?? ''\n const title = process.env.BITBUCKET_PR_TITLE?.trim() ?? ''\n\n let additions = 0\n let deletions = 0\n let files: string[] = []\n\n const destRef = resolveCompareRef(cwd, dest)\n if (destRef) {\n try {\n const raw = gitTrimmed(cwd, ['diff', `${destRef}...HEAD`, '--numstat'])\n const stat = parseNumstat(raw)\n additions = stat.additions\n deletions = stat.deletions\n files = stat.files\n } catch {\n /* shallow clone or ambiguous ref — still return context for hygiene */\n }\n }\n\n const ai = parseAiDisclosure(body)\n\n return {\n number: Number.parseInt(prId, 10) || 0,\n title,\n body,\n baseRef: dest,\n headRef,\n additions,\n deletions,\n changedFiles: files.length,\n files,\n ...ai,\n }\n}\n\n/** PR metadata for Bitbucket Cloud PR pipelines (`BITBUCKET_PR_*`). */\nexport function readPrContext(cwd: string): PrContext | null {\n return buildBitbucketPrContext(cwd)\n}\n","function isPlainObject(value) {\n if (value === null || typeof value !== \"object\") {\n return false;\n }\n const prototype = Object.getPrototypeOf(value);\n if (prototype !== null && prototype !== Object.prototype && Object.getPrototypeOf(prototype) !== null) {\n return false;\n }\n if (Symbol.iterator in value) {\n return false;\n }\n if (Symbol.toStringTag in value) {\n return Object.prototype.toString.call(value) === \"[object Module]\";\n }\n return true;\n}\n\nfunction _defu(baseObject, defaults, namespace = \".\", merger) {\n if (!isPlainObject(defaults)) {\n return _defu(baseObject, {}, namespace, merger);\n }\n const object = { ...defaults };\n for (const key of Object.keys(baseObject)) {\n if (key === \"__proto__\" || key === \"constructor\") {\n continue;\n }\n const value = baseObject[key];\n if (value === null || value === void 0) {\n continue;\n }\n if (merger && merger(object, key, value, namespace)) {\n continue;\n }\n if (Array.isArray(value) && Array.isArray(object[key])) {\n object[key] = [...value, ...object[key]];\n } else if (isPlainObject(value) && isPlainObject(object[key])) {\n object[key] = _defu(\n value,\n object[key],\n (namespace ? `${namespace}.` : \"\") + key.toString(),\n merger\n );\n } else {\n object[key] = value;\n }\n }\n return object;\n}\nfunction createDefu(merger) {\n return (...arguments_) => (\n // eslint-disable-next-line unicorn/no-array-reduce\n arguments_.reduce((p, c) => _defu(p, c, \"\", merger), {})\n );\n}\nconst defu = createDefu();\nconst defuFn = createDefu((object, key, currentValue) => {\n if (object[key] !== void 0 && typeof currentValue === \"function\") {\n object[key] = currentValue(object[key]);\n return true;\n }\n});\nconst defuArrayFn = createDefu((object, key, currentValue) => {\n if (Array.isArray(object[key]) && typeof currentValue === \"function\") {\n object[key] = currentValue(object[key]);\n return true;\n }\n});\n\nexport { createDefu, defu as default, defu, defuArrayFn, defuFn };\n","import type { FrontGuardConfig } from './schema.js'\n\nexport const defaultConfig: FrontGuardConfig = {\n mode: 'warn',\n rules: {},\n checks: {\n eslint: { enabled: true, glob: '**/*.{js,cjs,mjs,jsx,ts,tsx}' },\n prettier: {\n enabled: true,\n glob: '**/*.{js,cjs,mjs,jsx,ts,tsx,json,md,css,scss,yml,yaml}',\n },\n typescript: { enabled: true },\n secrets: { enabled: true },\n prHygiene: {\n enabled: true,\n minBodyLength: 80,\n requireSections: false,\n sectionHints: ['what', 'why', 'test', 'how to test', 'screenshot'],\n requireAiDisclosureSection: true,\n gateWhenAiDisclosureAmbiguous: 'warn',\n },\n aiAssistedReview: {\n enabled: true,\n gate: 'warn',\n strictScanMode: 'both',\n escalate: {\n secretFindingsToBlock: true,\n tsAnyDeltaToBlock: true,\n },\n },\n prSize: { enabled: true, warnLines: 400, softBlockLines: 800 },\n\n tsAnyDelta: {\n enabled: true,\n gate: 'warn',\n baseRef: 'main',\n maxAdded: 0,\n },\n cycles: {\n enabled: true,\n gate: 'warn',\n entries: ['src'],\n extraArgs: [],\n },\n deadCode: {\n enabled: true,\n gate: 'info',\n extraArgs: [],\n maxReportLines: 80,\n },\n bundle: {\n enabled: true,\n gate: 'warn',\n runBuild: true,\n buildCommand: 'npm run build',\n measureGlobs: ['dist/**/*', 'build/static/**/*', '.next/static/**/*'],\n baselinePath: '.frontguard/bundle-baseline.json',\n baselineRef: 'main',\n maxDeltaBytes: null,\n maxTotalBytes: null,\n },\n coreWebVitals: {\n enabled: true,\n gate: 'warn',\n scanGlobs: ['app/**/*.{tsx,jsx}', 'pages/**/*.{tsx,jsx}', 'src/**/*.{tsx,jsx}'],\n maxFileBytes: 400_000,\n },\n llm: {\n enabled: false,\n provider: 'openai',\n model: 'gpt-4o-mini',\n apiKeyEnv: 'OPENAI_API_KEY',\n maxDiffChars: 48_000,\n timeoutMs: 60_000,\n ollamaUrl: 'http://127.0.0.1:11434',\n perFindingFixes: false,\n maxFixSuggestions: 12,\n maxFileContextChars: 24_000,\n },\n },\n}\n","import type { FrontGuardConfig } from './schema.js'\n\n/** Normalize legacy config keys before merging with defaults. */\nexport function migrateLegacyConfigKeys(config: Partial<FrontGuardConfig>): void {\n const ch = config.checks as Record<string, unknown> | undefined\n if (!ch) return\n if ('cwv' in ch && !('coreWebVitals' in ch)) {\n ch.coreWebVitals = ch.cwv\n delete ch.cwv\n }\n}\n","import { createRequire } from 'node:module'\nimport fs from 'node:fs'\nimport path from 'node:path'\nimport { pathToFileURL } from 'node:url'\nimport defu from 'defu'\nimport type { FrontGuardConfig } from './schema.js'\nimport { defaultConfig } from './defaults.js'\nimport { migrateLegacyConfigKeys } from './migrate.js'\n\nconst CONFIG_NAMES = [\n 'frontguard.config.js',\n 'frontguard.config.mjs',\n 'frontguard.config.cjs',\n] as const\n\nasync function importConfig(\n absolutePath: string,\n): Promise<{ default?: FrontGuardConfig } | FrontGuardConfig> {\n const url = pathToFileURL(absolutePath).href\n return import(url) as Promise<{ default?: FrontGuardConfig } | FrontGuardConfig>\n}\n\nfunction normalizeExport(\n mod: { default?: FrontGuardConfig } | FrontGuardConfig,\n): FrontGuardConfig {\n if (mod && typeof mod === 'object' && 'default' in mod && mod.default) {\n return mod.default as FrontGuardConfig\n }\n return mod as FrontGuardConfig\n}\n\nfunction stripExtends<T extends { extends?: unknown }>(c: T): Omit<T, 'extends'> {\n const { extends: _e, ...rest } = c\n return rest\n}\n\nasync function loadExtendsLayer(\n cwd: string,\n spec: string | string[] | undefined,\n): Promise<Partial<FrontGuardConfig>> {\n if (!spec) return {}\n const req = createRequire(path.join(cwd, 'package.json'))\n const specs = Array.isArray(spec) ? spec : [spec]\n let merged: Partial<FrontGuardConfig> = {}\n\n for (const s of specs) {\n try {\n const resolved = req.resolve(s)\n const mod = await import(pathToFileURL(resolved).href)\n const layer = normalizeExport(\n mod as { default?: FrontGuardConfig } | FrontGuardConfig,\n )\n merged = defu(stripExtends(layer), merged) as Partial<FrontGuardConfig>\n } catch {\n // org package not installed\n }\n }\n\n return merged\n}\n\nexport async function loadConfig(cwd: string): Promise<FrontGuardConfig> {\n let userFile: FrontGuardConfig | null = null\n\n for (const name of CONFIG_NAMES) {\n const full = path.join(cwd, name)\n if (!fs.existsSync(full)) continue\n try {\n const mod = await importConfig(full)\n userFile = normalizeExport(mod)\n break\n } catch {\n continue\n }\n }\n\n const extendsSpec = userFile?.extends\n const orgLayer = await loadExtendsLayer(cwd, extendsSpec)\n migrateLegacyConfigKeys(orgLayer as Partial<FrontGuardConfig>)\n\n if (userFile) migrateLegacyConfigKeys(userFile)\n const user = userFile ? stripExtends(userFile) : {}\n const base = structuredClone(defaultConfig)\n const withOrg = defu(orgLayer, base) as FrontGuardConfig\n return defu(user, withOrg) as FrontGuardConfig\n}\n","import fs from 'node:fs/promises'\nimport path from 'node:path'\nimport type { StackInfo } from '../types.js'\n\ninterface Pkg {\n dependencies?: Record<string, string>\n devDependencies?: Record<string, string>\n peerDependencies?: Record<string, string>\n workspaces?: unknown\n}\n\nfunction allDeps(pkg: Pkg): Record<string, string> {\n return {\n ...pkg.peerDependencies,\n ...pkg.devDependencies,\n ...pkg.dependencies,\n }\n}\n\nfunction hasDep(deps: Record<string, string>, name: string): boolean {\n return Object.prototype.hasOwnProperty.call(deps, name)\n}\n\nexport async function detectStack(cwd: string): Promise<StackInfo> {\n let pkg: Pkg = {}\n try {\n const raw = await fs.readFile(path.join(cwd, 'package.json'), 'utf8')\n pkg = JSON.parse(raw) as Pkg\n } catch {\n return {\n isMonorepo: false,\n hasTypeScript: false,\n hasReact: false,\n hasNext: false,\n hasReactNative: false,\n hasJest: false,\n hasVitest: false,\n hasPlaywright: false,\n packageManager: 'unknown',\n tsStrict: null,\n }\n }\n\n const deps = allDeps(pkg)\n const isMonorepo = Boolean(pkg.workspaces)\n\n let tsStrict: boolean | null = null\n try {\n const tsconfigPath = path.join(cwd, 'tsconfig.json')\n const tsRaw = await fs.readFile(tsconfigPath, 'utf8')\n const ts = JSON.parse(tsRaw) as { compilerOptions?: { strict?: boolean } }\n if (typeof ts.compilerOptions?.strict === 'boolean') {\n tsStrict = ts.compilerOptions.strict\n }\n } catch {\n // no tsconfig\n }\n\n let pm: StackInfo['packageManager'] = 'unknown'\n try {\n await fs.access(path.join(cwd, 'pnpm-lock.yaml'))\n pm = 'pnpm'\n } catch {\n try {\n await fs.access(path.join(cwd, 'yarn.lock'))\n pm = 'yarn'\n } catch {\n try {\n await fs.access(path.join(cwd, 'package-lock.json'))\n pm = 'npm'\n } catch {\n pm = 'npm'\n }\n }\n }\n\n return {\n isMonorepo,\n hasTypeScript: hasDep(deps, 'typescript') || Boolean(tsStrict !== null),\n hasReact: hasDep(deps, 'react'),\n hasNext: hasDep(deps, 'next'),\n hasReactNative: hasDep(deps, 'react-native'),\n hasJest: hasDep(deps, 'jest'),\n hasVitest: hasDep(deps, 'vitest'),\n hasPlaywright: hasDep(deps, '@playwright/test'),\n packageManager: pm,\n tsStrict,\n }\n}\n\n/** Compact stack label for reports and LLM context (React / Next / RN / TS / package manager). */\nexport function formatStackOneLiner(s: StackInfo): string {\n const bits: string[] = []\n if (s.hasNext) bits.push('Next.js')\n if (s.hasReactNative) bits.push('React Native')\n else if (s.hasReact) bits.push('React')\n if (s.hasTypeScript) bits.push('TypeScript')\n if (s.tsStrict === true) bits.push('strict TS')\n bits.push(`pkg: ${s.packageManager}`)\n return bits.join(' · ') || 'unknown'\n}\n","import path from 'node:path'\nimport fs from 'node:fs/promises'\nimport type { PrContext } from '../types.js'\n\n/** Normalize repo-relative paths from git / Bitbucket. */\nexport function normalizePrPath(p: string): string {\n return p.replace(/\\\\/g, '/').replace(/^\\.\\//, '')\n}\n\n/** True when we should limit checks to `pr.files` (Bitbucket / PR pipeline). */\nexport function hasPrFileList(pr: PrContext | null): boolean {\n return Boolean(pr?.files?.length)\n}\n\nexport function prPathSet(pr: PrContext | null): Set<string> | null {\n if (!hasPrFileList(pr)) return null\n return new Set(pr!.files!.map(normalizePrPath))\n}\n\n/** Whether a diagnostic path belongs to the PR file set (exact match after normalize). */\nexport function isPathInPrScope(relOrAbs: string, cwd: string, prSet: Set<string>): boolean {\n const raw = relOrAbs.replace(/^file:\\/\\//, '')\n let rel = normalizePrPath(raw)\n if (path.isAbsolute(raw)) {\n rel = normalizePrPath(path.relative(cwd, raw))\n }\n if (prSet.has(rel)) return true\n const trimmed = rel.replace(/^\\.\\//, '')\n if (prSet.has(trimmed)) return true\n return false\n}\n\nconst ESLINT_EXT = /\\.(js|cjs|mjs|jsx|ts|tsx)$/i\nconst PRETTIER_EXT = /\\.(js|cjs|mjs|jsx|ts|tsx|json|md|css|scss|sass|less|yml|yaml|vue|svelte)$/i\nconst CYCLES_EXT = /\\.(tsx?|jsx?|mjs|cjs|js)$/i\n\nexport function filterPrFilesForEslint(pr: PrContext | null): string[] | null {\n if (!hasPrFileList(pr)) return null\n return pr!.files!.map(normalizePrPath).filter((f) => ESLINT_EXT.test(f))\n}\n\nexport function filterPrFilesForPrettier(pr: PrContext | null): string[] | null {\n if (!hasPrFileList(pr)) return null\n return pr!.files!.map(normalizePrPath).filter((f) => PRETTIER_EXT.test(f))\n}\n\nexport function filterPrFilesForMadge(pr: PrContext | null): string[] | null {\n if (!hasPrFileList(pr)) return null\n return pr!.files!.map(normalizePrPath).filter((f) => CYCLES_EXT.test(f))\n}\n\n/** Keep only paths that still exist (skip deleted-only paths in PR). */\nexport async function existingRepoPaths(cwd: string, rels: string[]): Promise<string[]> {\n const out: string[] = []\n for (const rel of rels) {\n try {\n await fs.access(path.join(cwd, rel))\n out.push(rel)\n } catch {\n /* deleted or missing */\n }\n }\n return out\n}\n\n/**\n * Keep tsc stderr/stdout lines that reference a file in the PR scope.\n * Matches `path( line, col):` / `path(line,col):` style diagnostics.\n */\nexport function filterTscOutputToPrFiles(output: string, cwd: string, prSet: Set<string>): string {\n const lines = output.split('\\n')\n const kept: string[] = []\n for (const line of lines) {\n const m = /^(.+?)\\(\\d+,\\d+\\):\\s/.exec(line)\n if (m?.[1]) {\n if (isPathInPrScope(m[1], cwd, prSet)) kept.push(line)\n continue\n }\n // Some messages are file-less; drop in PR-scoped mode to avoid noise\n }\n return kept.join('\\n').trim()\n}\n","import path from 'node:path'\n\nfunction stripFileUrl(p: string): string {\n let s = p.trim()\n if (!/^file:/i.test(s)) return s\n s = s.replace(/^file:\\/\\//i, '')\n if (process.platform === 'win32' && s.startsWith('/')) {\n const m = s.match(/^\\/([A-Za-z]:\\/.*)$/)\n if (m) return m[1]!\n }\n return s\n}\n\n/** True if `child` is under `parent` (resolved). */\nfunction isUnderDir(parent: string, child: string): boolean {\n const rel = path.relative(parent, child)\n return rel === '' || (!rel.startsWith('..') && !path.isAbsolute(rel))\n}\n\n/**\n * Path shown in reports: relative to repo root, POSIX-style. Handles absolute\n * ESLint/file URLs and already-relative paths from other checks.\n */\nexport function toRepoRelativePath(\n cwd: string,\n filePath: string | undefined,\n): string | undefined {\n if (!filePath?.trim()) return undefined\n const raw = stripFileUrl(filePath)\n const resolvedCwd = path.resolve(cwd)\n const absFile = path.isAbsolute(raw)\n ? path.resolve(raw)\n : path.resolve(resolvedCwd, raw)\n\n if (!isUnderDir(resolvedCwd, absFile)) {\n return raw.split(/[/\\\\]/g).join('/')\n }\n\n let rel = path.relative(resolvedCwd, absFile)\n if (!rel || rel === '.') {\n return path.basename(absFile)\n }\n return rel.split(path.sep).join('/')\n}\n\n/** Strip CI/workspace absolute prefix from messages and log blobs (ESLint, Prettier, tsc). */\nexport function stripRepoAbsolutePaths(cwd: string, text: string): string {\n if (!text || !cwd.trim()) return text\n const resolvedCwd = path.resolve(cwd)\n const asPosix = (s: string) => s.replace(/\\\\/g, '/')\n const cwdPosix = asPosix(resolvedCwd)\n let out = asPosix(text)\n const prefixes = [...new Set([cwdPosix + '/', resolvedCwd + path.sep])].filter(\n (p) => p.length > 1,\n )\n for (const prefix of prefixes) {\n const norm = prefix.replace(/\\\\/g, '/')\n if (out.includes(norm)) {\n out = out.split(norm).join('')\n }\n }\n return out\n}\n","import { createRequire as e } from \"node:module\";\nimport { spawn as t, spawnSync as n } from \"node:child_process\";\nimport { delimiter as r, dirname as i, normalize as a, resolve as o } from \"node:path\";\nimport { cwd as s } from \"node:process\";\nimport { pipeline as c } from \"node:stream/promises\";\nimport { PassThrough as l } from \"node:stream\";\nimport u from \"node:readline\";\n//#region \\0rolldown/runtime.js\nvar d = (e, t) => () => (t || e((t = { exports: {} }).exports, t), t.exports);\nvar f = /* @__PURE__ */ e(import.meta.url);\n//#endregion\n//#region src/env.ts\nconst p = /^path$/i;\nconst m = {\n\tkey: \"PATH\",\n\tvalue: \"\"\n};\nfunction h(e) {\n\tfor (const t in e) {\n\t\tif (!Object.prototype.hasOwnProperty.call(e, t) || !p.test(t)) continue;\n\t\tconst n = e[t];\n\t\tif (!n) return m;\n\t\treturn {\n\t\t\tkey: t,\n\t\t\tvalue: n\n\t\t};\n\t}\n\treturn m;\n}\nfunction g(e, t) {\n\tconst n = t.value.split(r);\n\tconst a = [];\n\tlet s = e;\n\tlet c;\n\tdo {\n\t\ta.push(o(s, \"node_modules\", \".bin\"));\n\t\tc = s;\n\t\ts = i(s);\n\t} while (s !== c);\n\ta.push(i(process.execPath));\n\tconst l = a.concat(n).join(r);\n\treturn {\n\t\tkey: t.key,\n\t\tvalue: l\n\t};\n}\nfunction _(e, t) {\n\tconst n = {\n\t\t...process.env,\n\t\t...t\n\t};\n\tconst r = g(e, h(n));\n\tn[r.key] = r.value;\n\treturn n;\n}\n//#endregion\n//#region src/stream.ts\nconst v = (e) => {\n\tlet t = e.length;\n\tconst n = new l();\n\tconst r = () => {\n\t\tif (--t === 0) n.end();\n\t};\n\tfor (const t of e) c(t, n, { end: false }).then(r).catch(r);\n\treturn n;\n};\n//#endregion\n//#region node_modules/isexe/windows.js\nvar y = /* @__PURE__ */ d(((e, t) => {\n\tt.exports = a;\n\ta.sync = o;\n\tvar n = f(\"fs\");\n\tfunction r(e, t) {\n\t\tvar n = t.pathExt !== void 0 ? t.pathExt : process.env.PATHEXT;\n\t\tif (!n) return true;\n\t\tn = n.split(\";\");\n\t\tif (n.indexOf(\"\") !== -1) return true;\n\t\tfor (var r = 0; r < n.length; r++) {\n\t\t\tvar i = n[r].toLowerCase();\n\t\t\tif (i && e.substr(-i.length).toLowerCase() === i) return true;\n\t\t}\n\t\treturn false;\n\t}\n\tfunction i(e, t, n) {\n\t\tif (!e.isSymbolicLink() && !e.isFile()) return false;\n\t\treturn r(t, n);\n\t}\n\tfunction a(e, t, r) {\n\t\tn.stat(e, function(n, a) {\n\t\t\tr(n, n ? false : i(a, e, t));\n\t\t});\n\t}\n\tfunction o(e, t) {\n\t\treturn i(n.statSync(e), e, t);\n\t}\n}));\n//#endregion\n//#region node_modules/isexe/mode.js\nvar b = /* @__PURE__ */ d(((e, t) => {\n\tt.exports = r;\n\tr.sync = i;\n\tvar n = f(\"fs\");\n\tfunction r(e, t, r) {\n\t\tn.stat(e, function(e, n) {\n\t\t\tr(e, e ? false : a(n, t));\n\t\t});\n\t}\n\tfunction i(e, t) {\n\t\treturn a(n.statSync(e), t);\n\t}\n\tfunction a(e, t) {\n\t\treturn e.isFile() && o(e, t);\n\t}\n\tfunction o(e, t) {\n\t\tvar n = e.mode;\n\t\tvar r = e.uid;\n\t\tvar i = e.gid;\n\t\tvar a = t.uid !== void 0 ? t.uid : process.getuid && process.getuid();\n\t\tvar o = t.gid !== void 0 ? t.gid : process.getgid && process.getgid();\n\t\tvar s = parseInt(\"100\", 8);\n\t\tvar c = parseInt(\"010\", 8);\n\t\tvar l = parseInt(\"001\", 8);\n\t\tvar u = s | c;\n\t\treturn n & l || n & c && i === o || n & s && r === a || n & u && a === 0;\n\t}\n}));\n//#endregion\n//#region node_modules/isexe/index.js\nvar x = /* @__PURE__ */ d(((e, t) => {\n\tf(\"fs\");\n\tvar n;\n\tif (process.platform === \"win32\" || global.TESTING_WINDOWS) n = y();\n\telse n = b();\n\tt.exports = r;\n\tr.sync = i;\n\tfunction r(e, t, i) {\n\t\tif (typeof t === \"function\") {\n\t\t\ti = t;\n\t\t\tt = {};\n\t\t}\n\t\tif (!i) {\n\t\t\tif (typeof Promise !== \"function\") throw new TypeError(\"callback not provided\");\n\t\t\treturn new Promise(function(n, i) {\n\t\t\t\tr(e, t || {}, function(e, t) {\n\t\t\t\t\tif (e) i(e);\n\t\t\t\t\telse n(t);\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t\tn(e, t || {}, function(e, n) {\n\t\t\tif (e) {\n\t\t\t\tif (e.code === \"EACCES\" || t && t.ignoreErrors) {\n\t\t\t\t\te = null;\n\t\t\t\t\tn = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\ti(e, n);\n\t\t});\n\t}\n\tfunction i(e, t) {\n\t\ttry {\n\t\t\treturn n.sync(e, t || {});\n\t\t} catch (e) {\n\t\t\tif (t && t.ignoreErrors || e.code === \"EACCES\") return false;\n\t\t\telse throw e;\n\t\t}\n\t}\n}));\n//#endregion\n//#region node_modules/which/which.js\nvar S = /* @__PURE__ */ d(((e, t) => {\n\tconst n = process.platform === \"win32\" || process.env.OSTYPE === \"cygwin\" || process.env.OSTYPE === \"msys\";\n\tconst r = f(\"path\");\n\tconst i = n ? \";\" : \":\";\n\tconst a = x();\n\tconst o = (e) => Object.assign(/* @__PURE__ */ new Error(`not found: ${e}`), { code: \"ENOENT\" });\n\tconst s = (e, t) => {\n\t\tconst r = t.colon || i;\n\t\tconst a = e.match(/\\//) || n && e.match(/\\\\/) ? [\"\"] : [...n ? [process.cwd()] : [], ...(t.path || process.env.PATH || \"\").split(r)];\n\t\tconst o = n ? t.pathExt || process.env.PATHEXT || \".EXE;.CMD;.BAT;.COM\" : \"\";\n\t\tconst s = n ? o.split(r) : [\"\"];\n\t\tif (n) {\n\t\t\tif (e.indexOf(\".\") !== -1 && s[0] !== \"\") s.unshift(\"\");\n\t\t}\n\t\treturn {\n\t\t\tpathEnv: a,\n\t\t\tpathExt: s,\n\t\t\tpathExtExe: o\n\t\t};\n\t};\n\tconst c = (e, t, n) => {\n\t\tif (typeof t === \"function\") {\n\t\t\tn = t;\n\t\t\tt = {};\n\t\t}\n\t\tif (!t) t = {};\n\t\tconst { pathEnv: i, pathExt: c, pathExtExe: l } = s(e, t);\n\t\tconst u = [];\n\t\tconst d = (n) => new Promise((a, s) => {\n\t\t\tif (n === i.length) return t.all && u.length ? a(u) : s(o(e));\n\t\t\tconst c = i[n];\n\t\t\tconst l = /^\".*\"$/.test(c) ? c.slice(1, -1) : c;\n\t\t\tconst d = r.join(l, e);\n\t\t\ta(f(!l && /^\\.[\\\\\\/]/.test(e) ? e.slice(0, 2) + d : d, n, 0));\n\t\t});\n\t\tconst f = (e, n, r) => new Promise((i, o) => {\n\t\t\tif (r === c.length) return i(d(n + 1));\n\t\t\tconst s = c[r];\n\t\t\ta(e + s, { pathExt: l }, (a, o) => {\n\t\t\t\tif (!a && o) if (t.all) u.push(e + s);\n\t\t\t\telse return i(e + s);\n\t\t\t\treturn i(f(e, n, r + 1));\n\t\t\t});\n\t\t});\n\t\treturn n ? d(0).then((e) => n(null, e), n) : d(0);\n\t};\n\tconst l = (e, t) => {\n\t\tt = t || {};\n\t\tconst { pathEnv: n, pathExt: i, pathExtExe: c } = s(e, t);\n\t\tconst l = [];\n\t\tfor (let o = 0; o < n.length; o++) {\n\t\t\tconst s = n[o];\n\t\t\tconst u = /^\".*\"$/.test(s) ? s.slice(1, -1) : s;\n\t\t\tconst d = r.join(u, e);\n\t\t\tconst f = !u && /^\\.[\\\\\\/]/.test(e) ? e.slice(0, 2) + d : d;\n\t\t\tfor (let e = 0; e < i.length; e++) {\n\t\t\t\tconst n = f + i[e];\n\t\t\t\ttry {\n\t\t\t\t\tif (a.sync(n, { pathExt: c })) if (t.all) l.push(n);\n\t\t\t\t\telse return n;\n\t\t\t\t} catch (e) {}\n\t\t\t}\n\t\t}\n\t\tif (t.all && l.length) return l;\n\t\tif (t.nothrow) return null;\n\t\tthrow o(e);\n\t};\n\tt.exports = c;\n\tc.sync = l;\n}));\n//#endregion\n//#region node_modules/path-key/index.js\nvar C = /* @__PURE__ */ d(((e, t) => {\n\tconst n = (e = {}) => {\n\t\tconst t = e.env || process.env;\n\t\tif ((e.platform || process.platform) !== \"win32\") return \"PATH\";\n\t\treturn Object.keys(t).reverse().find((e) => e.toUpperCase() === \"PATH\") || \"Path\";\n\t};\n\tt.exports = n;\n\tt.exports.default = n;\n}));\n//#endregion\n//#region node_modules/cross-spawn/lib/util/resolveCommand.js\nvar w = /* @__PURE__ */ d(((e, t) => {\n\tconst n = f(\"path\");\n\tconst r = S();\n\tconst i = C();\n\tfunction a(e, t) {\n\t\tconst a = e.options.env || process.env;\n\t\tconst o = process.cwd();\n\t\tconst s = e.options.cwd != null;\n\t\tconst c = s && process.chdir !== void 0 && !process.chdir.disabled;\n\t\tif (c) try {\n\t\t\tprocess.chdir(e.options.cwd);\n\t\t} catch (e) {}\n\t\tlet l;\n\t\ttry {\n\t\t\tl = r.sync(e.command, {\n\t\t\t\tpath: a[i({ env: a })],\n\t\t\t\tpathExt: t ? n.delimiter : void 0\n\t\t\t});\n\t\t} catch (e) {} finally {\n\t\t\tif (c) process.chdir(o);\n\t\t}\n\t\tif (l) l = n.resolve(s ? e.options.cwd : \"\", l);\n\t\treturn l;\n\t}\n\tfunction o(e) {\n\t\treturn a(e) || a(e, true);\n\t}\n\tt.exports = o;\n}));\n//#endregion\n//#region node_modules/cross-spawn/lib/util/escape.js\nvar T = /* @__PURE__ */ d(((e, t) => {\n\tconst n = /([()\\][%!^\"`<>&|;, *?])/g;\n\tfunction r(e) {\n\t\te = e.replace(n, \"^$1\");\n\t\treturn e;\n\t}\n\tfunction i(e, t) {\n\t\te = `${e}`;\n\t\te = e.replace(/(?=(\\\\+?)?)\\1\"/g, \"$1$1\\\\\\\"\");\n\t\te = e.replace(/(?=(\\\\+?)?)\\1$/, \"$1$1\");\n\t\te = `\"${e}\"`;\n\t\te = e.replace(n, \"^$1\");\n\t\tif (t) e = e.replace(n, \"^$1\");\n\t\treturn e;\n\t}\n\tt.exports.command = r;\n\tt.exports.argument = i;\n}));\n//#endregion\n//#region node_modules/shebang-regex/index.js\nvar E = /* @__PURE__ */ d(((e, t) => {\n\tt.exports = /^#!(.*)/;\n}));\n//#endregion\n//#region node_modules/shebang-command/index.js\nvar D = /* @__PURE__ */ d(((e, t) => {\n\tconst n = E();\n\tt.exports = (e = \"\") => {\n\t\tconst t = e.match(n);\n\t\tif (!t) return null;\n\t\tconst [r, i] = t[0].replace(/#! ?/, \"\").split(\" \");\n\t\tconst a = r.split(\"/\").pop();\n\t\tif (a === \"env\") return i;\n\t\treturn i ? `${a} ${i}` : a;\n\t};\n}));\n//#endregion\n//#region node_modules/cross-spawn/lib/util/readShebang.js\nvar O = /* @__PURE__ */ d(((e, t) => {\n\tconst n = f(\"fs\");\n\tconst r = D();\n\tfunction i(e) {\n\t\tconst t = 150;\n\t\tconst i = Buffer.alloc(t);\n\t\tlet a;\n\t\ttry {\n\t\t\ta = n.openSync(e, \"r\");\n\t\t\tn.readSync(a, i, 0, t, 0);\n\t\t\tn.closeSync(a);\n\t\t} catch (e) {}\n\t\treturn r(i.toString());\n\t}\n\tt.exports = i;\n}));\n//#endregion\n//#region node_modules/cross-spawn/lib/parse.js\nvar k = /* @__PURE__ */ d(((e, t) => {\n\tconst n = f(\"path\");\n\tconst r = w();\n\tconst i = T();\n\tconst a = O();\n\tconst o = process.platform === \"win32\";\n\tconst s = /\\.(?:com|exe)$/i;\n\tconst c = /node_modules[\\\\/].bin[\\\\/][^\\\\/]+\\.cmd$/i;\n\tfunction l(e) {\n\t\te.file = r(e);\n\t\tconst t = e.file && a(e.file);\n\t\tif (t) {\n\t\t\te.args.unshift(e.file);\n\t\t\te.command = t;\n\t\t\treturn r(e);\n\t\t}\n\t\treturn e.file;\n\t}\n\tfunction u(e) {\n\t\tif (!o) return e;\n\t\tconst t = l(e);\n\t\tconst r = !s.test(t);\n\t\tif (e.options.forceShell || r) {\n\t\t\tconst r = c.test(t);\n\t\t\te.command = n.normalize(e.command);\n\t\t\te.command = i.command(e.command);\n\t\t\te.args = e.args.map((e) => i.argument(e, r));\n\t\t\te.args = [\n\t\t\t\t\"/d\",\n\t\t\t\t\"/s\",\n\t\t\t\t\"/c\",\n\t\t\t\t`\"${[e.command].concat(e.args).join(\" \")}\"`\n\t\t\t];\n\t\t\te.command = process.env.comspec || \"cmd.exe\";\n\t\t\te.options.windowsVerbatimArguments = true;\n\t\t}\n\t\treturn e;\n\t}\n\tfunction d(e, t, n) {\n\t\tif (t && !Array.isArray(t)) {\n\t\t\tn = t;\n\t\t\tt = null;\n\t\t}\n\t\tt = t ? t.slice(0) : [];\n\t\tn = Object.assign({}, n);\n\t\tconst r = {\n\t\t\tcommand: e,\n\t\t\targs: t,\n\t\t\toptions: n,\n\t\t\tfile: void 0,\n\t\t\toriginal: {\n\t\t\t\tcommand: e,\n\t\t\t\targs: t\n\t\t\t}\n\t\t};\n\t\treturn n.shell ? r : u(r);\n\t}\n\tt.exports = d;\n}));\n//#endregion\n//#region node_modules/cross-spawn/lib/enoent.js\nvar A = /* @__PURE__ */ d(((e, t) => {\n\tconst n = process.platform === \"win32\";\n\tfunction r(e, t) {\n\t\treturn Object.assign(/* @__PURE__ */ new Error(`${t} ${e.command} ENOENT`), {\n\t\t\tcode: \"ENOENT\",\n\t\t\terrno: \"ENOENT\",\n\t\t\tsyscall: `${t} ${e.command}`,\n\t\t\tpath: e.command,\n\t\t\tspawnargs: e.args\n\t\t});\n\t}\n\tfunction i(e, t) {\n\t\tif (!n) return;\n\t\tconst r = e.emit;\n\t\te.emit = function(n, i) {\n\t\t\tif (n === \"exit\") {\n\t\t\t\tconst n = a(i, t);\n\t\t\t\tif (n) return r.call(e, \"error\", n);\n\t\t\t}\n\t\t\treturn r.apply(e, arguments);\n\t\t};\n\t}\n\tfunction a(e, t) {\n\t\tif (n && e === 1 && !t.file) return r(t.original, \"spawn\");\n\t\treturn null;\n\t}\n\tfunction o(e, t) {\n\t\tif (n && e === 1 && !t.file) return r(t.original, \"spawnSync\");\n\t\treturn null;\n\t}\n\tt.exports = {\n\t\thookChildProcess: i,\n\t\tverifyENOENT: a,\n\t\tverifyENOENTSync: o,\n\t\tnotFoundError: r\n\t};\n}));\n//#endregion\n//#region node_modules/cross-spawn/index.js\nvar j = /* @__PURE__ */ d(((e, t) => {\n\tconst n = f(\"child_process\");\n\tconst r = k();\n\tconst i = A();\n\tfunction a(e, t, a) {\n\t\tconst o = r(e, t, a);\n\t\tconst s = n.spawn(o.command, o.args, o.options);\n\t\ti.hookChildProcess(s, o);\n\t\treturn s;\n\t}\n\tfunction o(e, t, a) {\n\t\tconst o = r(e, t, a);\n\t\tconst s = n.spawnSync(o.command, o.args, o.options);\n\t\ts.error = s.error || i.verifyENOENTSync(s.status, o);\n\t\treturn s;\n\t}\n\tt.exports = a;\n\tt.exports.spawn = a;\n\tt.exports.sync = o;\n\tt.exports._parse = r;\n\tt.exports._enoent = i;\n}));\n//#endregion\n//#region src/non-zero-exit-error.ts\nvar M = j();\nvar N = class extends Error {\n\tget exitCode() {\n\t\tif (this.result.exitCode !== null) return this.result.exitCode;\n\t}\n\tconstructor(e, t) {\n\t\tsuper(`Process exited with non-zero status (${e.exitCode})`);\n\t\tthis.result = e;\n\t\tthis.output = t;\n\t}\n};\n//#endregion\n//#region src/main.ts\nconst P = /\\r?\\n/;\nconst F = {\n\ttimeout: void 0,\n\tpersist: false\n};\nconst I = { timeout: void 0 };\nconst L = { windowsHide: true };\nfunction R(e, t) {\n\treturn {\n\t\tcommand: a(e),\n\t\targs: t ?? []\n\t};\n}\nfunction z(e) {\n\tconst t = new AbortController();\n\tfor (const n of e) {\n\t\tif (n.aborted) {\n\t\t\tt.abort();\n\t\t\treturn n;\n\t\t}\n\t\tconst e = () => {\n\t\t\tt.abort(n.reason);\n\t\t};\n\t\tn.addEventListener(\"abort\", e, { signal: t.signal });\n\t}\n\treturn t.signal;\n}\nasync function B(e) {\n\tlet t = \"\";\n\ttry {\n\t\tfor await (const n of e) t += n.toString();\n\t} catch {}\n\treturn t;\n}\nvar V = class {\n\t_process;\n\t_aborted = false;\n\t_options;\n\t_command;\n\t_args;\n\t_resolveClose;\n\t_processClosed;\n\t_thrownError;\n\tget process() {\n\t\treturn this._process;\n\t}\n\tget pid() {\n\t\treturn this._process?.pid;\n\t}\n\tget exitCode() {\n\t\tif (this._process && this._process.exitCode !== null) return this._process.exitCode;\n\t}\n\tconstructor(e, t, n) {\n\t\tthis._options = {\n\t\t\t...F,\n\t\t\t...n\n\t\t};\n\t\tthis._command = e;\n\t\tthis._args = t ?? [];\n\t\tthis._processClosed = new Promise((e) => {\n\t\t\tthis._resolveClose = e;\n\t\t});\n\t}\n\tkill(e) {\n\t\treturn this._process?.kill(e) === true;\n\t}\n\tget aborted() {\n\t\treturn this._aborted;\n\t}\n\tget killed() {\n\t\treturn this._process?.killed === true;\n\t}\n\tpipe(e, t, n) {\n\t\treturn W(e, t, {\n\t\t\t...n,\n\t\t\tstdin: this\n\t\t});\n\t}\n\tasync *[Symbol.asyncIterator]() {\n\t\tconst e = this._process;\n\t\tif (!e) return;\n\t\tconst t = [];\n\t\tif (this._streamErr) t.push(this._streamErr);\n\t\tif (this._streamOut) t.push(this._streamOut);\n\t\tconst n = v(t);\n\t\tconst r = u.createInterface({ input: n });\n\t\tfor await (const e of r) yield e.toString();\n\t\tawait this._processClosed;\n\t\te.removeAllListeners();\n\t\tif (this._thrownError) throw this._thrownError;\n\t\tif (this._options?.throwOnError && this.exitCode !== 0 && this.exitCode !== void 0) throw new N(this);\n\t}\n\tasync _waitForOutput() {\n\t\tconst e = this._process;\n\t\tif (!e) throw new Error(\"No process was started\");\n\t\tconst [t, n] = await Promise.all([this._streamOut ? B(this._streamOut) : \"\", this._streamErr ? B(this._streamErr) : \"\"]);\n\t\tawait this._processClosed;\n\t\tconst { stdin: r } = this._options;\n\t\tif (r && typeof r !== \"string\") await r;\n\t\te.removeAllListeners();\n\t\tif (this._thrownError) throw this._thrownError;\n\t\tconst i = {\n\t\t\tstderr: n,\n\t\t\tstdout: t,\n\t\t\texitCode: this.exitCode\n\t\t};\n\t\tif (this._options.throwOnError && this.exitCode !== 0 && this.exitCode !== void 0) throw new N(this, i);\n\t\treturn i;\n\t}\n\tthen(e, t) {\n\t\treturn this._waitForOutput().then(e, t);\n\t}\n\t_streamOut;\n\t_streamErr;\n\tspawn() {\n\t\tconst e = s();\n\t\tconst n = this._options;\n\t\tconst r = {\n\t\t\t...L,\n\t\t\t...n.nodeOptions\n\t\t};\n\t\tconst i = [];\n\t\tthis._resetState();\n\t\tif (n.timeout !== void 0) i.push(AbortSignal.timeout(n.timeout));\n\t\tif (n.signal !== void 0) i.push(n.signal);\n\t\tif (n.persist === true) r.detached = true;\n\t\tif (i.length > 0) r.signal = z(i);\n\t\tr.env = _(e, r.env);\n\t\tconst { command: a, args: o } = R(this._command, this._args);\n\t\tconst c = (0, M._parse)(a, o, r);\n\t\tconst l = t(c.command, c.args, c.options);\n\t\tif (l.stderr) this._streamErr = l.stderr;\n\t\tif (l.stdout) this._streamOut = l.stdout;\n\t\tthis._process = l;\n\t\tl.once(\"error\", this._onError);\n\t\tl.once(\"close\", this._onClose);\n\t\tif (l.stdin) {\n\t\t\tconst { stdin: e } = n;\n\t\t\tif (typeof e === \"string\") l.stdin.end(e);\n\t\t\telse e?.process?.stdout?.pipe(l.stdin);\n\t\t}\n\t}\n\t_resetState() {\n\t\tthis._aborted = false;\n\t\tthis._processClosed = new Promise((e) => {\n\t\t\tthis._resolveClose = e;\n\t\t});\n\t\tthis._thrownError = void 0;\n\t}\n\t_onError = (e) => {\n\t\tif (e.name === \"AbortError\" && (!(e.cause instanceof Error) || e.cause.name !== \"TimeoutError\")) {\n\t\t\tthis._aborted = true;\n\t\t\treturn;\n\t\t}\n\t\tthis._thrownError = e;\n\t};\n\t_onClose = () => {\n\t\tif (this._resolveClose) this._resolveClose();\n\t};\n};\nfunction H(e, t, r) {\n\tconst i = {\n\t\t...I,\n\t\t...r\n\t};\n\tconst a = s();\n\tconst o = {\n\t\twindowsHide: true,\n\t\t...i.nodeOptions\n\t};\n\tif (i.timeout !== void 0) o.timeout = i.timeout;\n\to.env = _(a, o.env);\n\tconst { command: c, args: l } = R(e, t);\n\tconst u = (0, M._parse)(c, l, o);\n\tconst d = n(u.command, u.args, u.options);\n\tif (d.error) throw d.error;\n\tconst f = d.stdout?.toString() ?? \"\";\n\tconst p = d.stderr?.toString() ?? \"\";\n\tconst m = d.status ?? void 0;\n\tconst h = d.signal != null;\n\tconst g = {\n\t\tstdout: f,\n\t\tstderr: p,\n\t\tget exitCode() {\n\t\t\treturn m;\n\t\t},\n\t\tget pid() {\n\t\t\treturn d.pid;\n\t\t},\n\t\tget killed() {\n\t\t\treturn h;\n\t\t},\n\t\t*[Symbol.iterator]() {\n\t\t\tfor (const e of [f, p]) {\n\t\t\t\tif (!e) continue;\n\t\t\t\tconst t = e.split(P);\n\t\t\t\tif (t[t.length - 1] === \"\") t.pop();\n\t\t\t\tyield* t;\n\t\t\t}\n\t\t}\n\t};\n\tif (i.throwOnError && m !== 0 && m !== void 0) throw new N(g, g);\n\treturn g;\n}\nconst U = (e, t, n) => {\n\tconst r = new V(e, t, n);\n\tr.spawn();\n\treturn r;\n};\nconst W = U;\nconst G = H;\n//#endregion\nexport { V as ExecProcess, N as NonZeroExitError, W as exec, G as execSync, U as x, H as xSync };\n","import path from 'node:path'\nimport fs from 'node:fs/promises'\nimport { exec } from 'tinyexec'\n\nexport interface RunOptions {\n cwd: string\n}\n\nexport async function pathExists(file: string): Promise<boolean> {\n try {\n await fs.access(file)\n return true\n } catch {\n return false\n }\n}\n\nexport async function resolveBin(cwd: string, name: string): Promise<string | null> {\n const local = path.join(cwd, 'node_modules', '.bin', name)\n if (await pathExists(local)) return local\n\n const win = local + '.cmd'\n if (await pathExists(win)) return win\n\n return null\n}\n\n/** Run with local binary if present, else `npx --no-install` first then `npx`. */\nexport async function runNpmBinary(\n cwd: string,\n name: string,\n args: string[],\n): Promise<{ exitCode: number; stdout: string; stderr: string }> {\n try {\n const bin = await resolveBin(cwd, name)\n if (bin) {\n const r = await exec(bin, args, { nodeOptions: { cwd } })\n return {\n exitCode: r.exitCode ?? 0,\n stdout: r.stdout ?? '',\n stderr: r.stderr ?? '',\n }\n }\n\n let r = await exec('npx', ['--no-install', name, ...args], { nodeOptions: { cwd } })\n if ((r.exitCode ?? 0) !== 0) {\n r = await exec('npx', [name, ...args], { nodeOptions: { cwd } })\n }\n return {\n exitCode: r.exitCode ?? 0,\n stdout: r.stdout ?? '',\n stderr: r.stderr ?? '',\n }\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e)\n return {\n exitCode: 127,\n stdout: '',\n stderr: msg,\n }\n }\n}\n\n/** Invoke `npx` with explicit args (e.g. `npx -y madge ...`). */\nexport async function runNpx(\n cwd: string,\n args: string[],\n): Promise<{ exitCode: number; stdout: string; stderr: string }> {\n try {\n const r = await exec('npx', args, { nodeOptions: { cwd } })\n return {\n exitCode: r.exitCode ?? 0,\n stdout: r.stdout ?? '',\n stderr: r.stderr ?? '',\n }\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e)\n return {\n exitCode: 127,\n stdout: '',\n stderr: msg,\n }\n }\n}\n","import fs from 'node:fs/promises'\nimport path from 'node:path'\nimport type { CheckResult, Finding, PrContext, StackInfo } from '../types.js'\nimport type { FrontGuardConfig } from '../config/schema.js'\nimport {\n existingRepoPaths,\n filterPrFilesForEslint,\n hasPrFileList,\n} from '../lib/pr-scope.js'\nimport { toRepoRelativePath } from '../lib/repo-paths.js'\nimport { pathExists, runNpmBinary } from '../runner/exec-tools.js'\n\nasync function hasEslintDependency(cwd: string): Promise<boolean> {\n try {\n const raw = await fs.readFile(path.join(cwd, 'package.json'), 'utf8')\n const p = JSON.parse(raw) as {\n dependencies?: Record<string, string>\n devDependencies?: Record<string, string>\n }\n return Boolean(p.devDependencies?.eslint || p.dependencies?.eslint)\n } catch {\n return false\n }\n}\n\nasync function hasEslintConfig(cwd: string): Promise<boolean> {\n const candidates = [\n 'eslint.config.js',\n 'eslint.config.mjs',\n 'eslint.config.cjs',\n 'eslint.config.json',\n '.eslintrc',\n '.eslintrc.json',\n '.eslintrc.cjs',\n '.eslintrc.yaml',\n '.eslintrc.yml',\n ]\n for (const c of candidates) {\n if (await pathExists(path.join(cwd, c))) return true\n }\n return false\n}\n\nfunction meaningfulStderr(stderr: string): string {\n return stderr\n .split('\\n')\n .filter((l) => l.trim() && !/^npm warn\\b/i.test(l))\n .join('\\n')\n .trim()\n}\n\nconst ESLINT_BATCH = 80\n\nasync function runEslintOnPaths(\n cwd: string,\n relPaths: string[],\n): Promise<{ exitCode: number; stdout: string; stderr: string }> {\n let worstExit = 0\n const merged: Array<{\n filePath: string\n messages: Array<{ ruleId: string | null; message: string; line?: number }>\n }> = []\n let stderrAcc = ''\n\n for (let i = 0; i < relPaths.length; i += ESLINT_BATCH) {\n const batch = relPaths.slice(i, i + ESLINT_BATCH)\n const args = [\n ...batch,\n '--max-warnings',\n '0',\n '--no-error-on-unmatched-pattern',\n '-f',\n 'json',\n ]\n const { exitCode, stdout, stderr } = await runNpmBinary(cwd, 'eslint', args)\n worstExit = Math.max(worstExit, exitCode ?? 0)\n stderrAcc += stderr\n const t = stdout.trim()\n if (t) {\n try {\n const rows = JSON.parse(t) as typeof merged\n if (Array.isArray(rows)) merged.push(...rows)\n } catch {\n /* batch may be non-json on crash */\n }\n }\n }\n\n return {\n exitCode: worstExit,\n stdout: JSON.stringify(merged),\n stderr: stderrAcc,\n }\n}\n\nexport async function runEslint(\n cwd: string,\n config: FrontGuardConfig,\n _stack: StackInfo,\n pr: PrContext | null,\n): Promise<CheckResult> {\n const t0 = performance.now()\n if (!config.checks.eslint.enabled) {\n return {\n checkId: 'eslint',\n findings: [],\n durationMs: 0,\n skipped: 'disabled in config',\n }\n }\n\n const configured = await hasEslintConfig(cwd)\n const dep = await hasEslintDependency(cwd)\n if (!configured && !dep) {\n return {\n checkId: 'eslint',\n findings: [],\n durationMs: Math.round(performance.now() - t0),\n skipped: 'ESLint not installed or configured',\n }\n }\n\n const glob = config.checks.eslint.glob ?? '**/*.{js,cjs,mjs,jsx,ts,tsx}'\n const prPaths = filterPrFilesForEslint(pr)\n let exitCode: number\n let stdout: string\n let stderr: string\n\n if (prPaths !== null) {\n if (prPaths.length === 0) {\n return {\n checkId: 'eslint',\n findings: [],\n durationMs: Math.round(performance.now() - t0),\n skipped: 'no lintable files in PR diff',\n }\n }\n const existing = await existingRepoPaths(cwd, prPaths)\n if (existing.length === 0) {\n return {\n checkId: 'eslint',\n findings: [],\n durationMs: Math.round(performance.now() - t0),\n skipped: hasPrFileList(pr)\n ? 'no lintable files in PR diff (added/modified only)'\n : 'no files',\n }\n }\n ;({ exitCode, stdout, stderr } = await runEslintOnPaths(cwd, existing))\n } else {\n ;({ exitCode, stdout, stderr } = await runNpmBinary(cwd, 'eslint', [\n glob,\n '--max-warnings',\n '0',\n '--no-error-on-unmatched-pattern',\n '-f',\n 'json',\n ]))\n }\n\n const errText = meaningfulStderr(stderr)\n const findings: Finding[] = []\n\n if (exitCode === 0) {\n if (errText) {\n findings.push({\n id: 'eslint-stderr',\n severity: 'warn',\n message: 'ESLint wrote to stderr',\n detail: truncate(errText, 4000),\n })\n }\n return {\n checkId: 'eslint',\n findings,\n durationMs: Math.round(performance.now() - t0),\n }\n }\n\n try {\n const rows = JSON.parse(stdout) as Array<{\n filePath: string\n messages: Array<{ ruleId: string | null; message: string; line?: number }>\n }>\n for (const row of rows) {\n const relFile = toRepoRelativePath(cwd, row.filePath)\n for (const m of row.messages) {\n findings.push({\n id: `eslint-${m.ruleId ?? 'unknown'}`,\n severity: 'warn',\n message: m.message,\n file: relFile,\n detail: m.line ? `line ${m.line}` : undefined,\n })\n }\n }\n if (findings.length === 0) {\n findings.push({\n id: 'eslint-failed',\n severity: 'warn',\n message: 'ESLint exited with a non-zero status',\n detail: truncate(\n [stdout, errText].filter(Boolean).join('\\n') || `exit ${exitCode}`,\n 4000,\n ),\n })\n }\n } catch {\n findings.push({\n id: 'eslint-failed',\n severity: 'warn',\n message: 'ESLint exited with errors',\n detail: truncate(\n [stdout, errText].filter(Boolean).join('\\n') || `exit ${exitCode}`,\n 4000,\n ),\n })\n }\n\n return {\n checkId: 'eslint',\n findings,\n durationMs: Math.round(performance.now() - t0),\n }\n}\n\nfunction truncate(s: string, max: number): string {\n if (s.length <= max) return s\n return s.slice(0, max) + '…'\n}\n","import type { CheckResult, Finding, PrContext } from '../types.js'\nimport type { FrontGuardConfig } from '../config/schema.js'\nimport {\n existingRepoPaths,\n filterPrFilesForPrettier,\n hasPrFileList,\n} from '../lib/pr-scope.js'\nimport { runNpmBinary } from '../runner/exec-tools.js'\n\nconst PRETTIER_BATCH = 100\n\nasync function runPrettierOnPaths(\n cwd: string,\n relPaths: string[],\n): Promise<{ exitCode: number; stdout: string; stderr: string }> {\n let worstExit = 0\n let stdoutAcc = ''\n let stderrAcc = ''\n for (let i = 0; i < relPaths.length; i += PRETTIER_BATCH) {\n const batch = relPaths.slice(i, i + PRETTIER_BATCH)\n const r = await runNpmBinary(cwd, 'prettier', [\n '--check',\n '--ignore-unknown',\n ...batch,\n ])\n worstExit = Math.max(worstExit, r.exitCode ?? 0)\n stdoutAcc += r.stdout\n stderrAcc += r.stderr\n }\n return { exitCode: worstExit, stdout: stdoutAcc, stderr: stderrAcc }\n}\n\nexport async function runPrettier(\n cwd: string,\n config: FrontGuardConfig,\n pr: PrContext | null,\n): Promise<CheckResult> {\n const t0 = performance.now()\n if (!config.checks.prettier.enabled) {\n return {\n checkId: 'prettier',\n findings: [],\n durationMs: 0,\n skipped: 'disabled in config',\n }\n }\n\n const glob =\n config.checks.prettier.glob ??\n '**/*.{js,cjs,mjs,jsx,ts,tsx,json,md,css,scss,yml,yaml}'\n\n let exitCode: number\n let stdout: string\n let stderr: string\n\n const prPaths = filterPrFilesForPrettier(pr)\n if (prPaths !== null) {\n if (prPaths.length === 0) {\n return {\n checkId: 'prettier',\n findings: [],\n durationMs: Math.round(performance.now() - t0),\n skipped: 'no formattable files in PR diff',\n }\n }\n const existing = await existingRepoPaths(cwd, prPaths)\n if (existing.length === 0) {\n return {\n checkId: 'prettier',\n findings: [],\n durationMs: Math.round(performance.now() - t0),\n skipped: hasPrFileList(pr)\n ? 'no formattable files in PR diff'\n : 'no files',\n }\n }\n ;({ exitCode, stdout, stderr } = await runPrettierOnPaths(cwd, existing))\n } else {\n ;({ exitCode, stdout, stderr } = await runNpmBinary(cwd, 'prettier', [\n '--check',\n glob,\n '--ignore-unknown',\n ]))\n }\n\n const findings: Finding[] = []\n\n if (exitCode === 127 || /command not found|not recognized|ENOENT/i.test(stderr)) {\n return {\n checkId: 'prettier',\n findings: [],\n durationMs: Math.round(performance.now() - t0),\n skipped: 'prettier binary not found (install prettier or use npx)',\n }\n }\n\n if (exitCode !== 0) {\n const blob = [stdout, stderr].filter(Boolean).join('\\n').trim()\n findings.push({\n id: 'prettier-check',\n severity: 'warn',\n message: 'Prettier reported formatting differences',\n detail: blob ? truncate(blob, 6000) : `exit ${exitCode}`,\n })\n }\n\n return {\n checkId: 'prettier',\n findings,\n durationMs: Math.round(performance.now() - t0),\n }\n}\n\nfunction truncate(s: string, max: number): string {\n if (s.length <= max) return s\n return s.slice(0, max) + '…'\n}\n","import path from 'node:path'\nimport type { CheckResult, Finding, PrContext, StackInfo } from '../types.js'\nimport type { FrontGuardConfig } from '../config/schema.js'\nimport { filterTscOutputToPrFiles, prPathSet } from '../lib/pr-scope.js'\nimport { pathExists, runNpmBinary } from '../runner/exec-tools.js'\n\nexport async function runTypeScript(\n cwd: string,\n config: FrontGuardConfig,\n stack: StackInfo,\n pr: PrContext | null,\n): Promise<CheckResult> {\n const t0 = performance.now()\n if (!config.checks.typescript.enabled) {\n return {\n checkId: 'typescript',\n findings: [],\n durationMs: 0,\n skipped: 'disabled in config',\n }\n }\n\n const hasTs = stack.hasTypeScript || (await pathExists(path.join(cwd, 'tsconfig.json')))\n if (!hasTs) {\n return {\n checkId: 'typescript',\n findings: [],\n durationMs: Math.round(performance.now() - t0),\n skipped: 'no TypeScript project detected',\n }\n }\n\n const extra = config.checks.typescript.tscArgs ?? []\n const hasProject = extra.some((a) => a === '-p' || a === '--project')\n const tsconfigPath = path.join(cwd, 'tsconfig.json')\n const args = [\n '--noEmit',\n ...(hasProject || !(await pathExists(tsconfigPath)) ? [] : ['-p', 'tsconfig.json']),\n ...extra,\n ]\n const { exitCode, stdout, stderr } = await runNpmBinary(cwd, 'tsc', args)\n\n const findings: Finding[] = []\n if (exitCode === 127 || /command not found|not recognized|ENOENT/i.test(stderr)) {\n return {\n checkId: 'typescript',\n findings: [],\n durationMs: Math.round(performance.now() - t0),\n skipped: 'typescript compiler not found',\n }\n }\n\n if (exitCode !== 0) {\n const out = [stdout, stderr].filter(Boolean).join('\\n').trim()\n const prS = prPathSet(pr)\n const scoped = prS && out ? filterTscOutputToPrFiles(out, cwd, prS) : out\n if (scoped) {\n findings.push({\n id: 'tsc',\n severity: 'warn',\n message: prS\n ? 'TypeScript: issues in PR-changed files (full project was typechecked)'\n : 'TypeScript compiler reported diagnostics',\n detail: scoped ? truncate(scoped, 8000) : `exit ${exitCode}`,\n })\n }\n }\n\n return {\n checkId: 'typescript',\n findings,\n durationMs: Math.round(performance.now() - t0),\n }\n}\n\nfunction truncate(s: string, max: number): string {\n if (s.length <= max) return s\n return s.slice(0, max) + '…'\n}\n","import fs from 'node:fs/promises'\nimport path from 'node:path'\nimport fg from 'fast-glob'\nimport type { CheckResult, Finding, PrContext } from '../types.js'\nimport type { FrontGuardConfig } from '../config/schema.js'\n\n/** Lightweight pattern scan — warn-only in Phase 1. Kept conservative to limit noise. */\nconst PATTERNS: Array<{ id: string; re: RegExp; message: string }> = [\n {\n id: 'aws-access-key',\n re: /AKIA[0-9A-Z]{16}/,\n message: 'Possible AWS access key id',\n },\n {\n id: 'github-pat',\n re: /\\bghp_[a-zA-Z0-9]{20,}\\b/,\n message: 'Possible GitHub personal access token',\n },\n {\n id: 'openai-sk',\n re: /\\bsk-[a-zA-Z0-9]{20,}\\b/,\n message: 'Possible OpenAI-style API secret',\n },\n {\n id: 'private-key-block',\n re: /-----BEGIN (?:RSA |EC |OPENSSH )?PRIVATE KEY-----/,\n message: 'Private key material in source',\n },\n]\n\nconst TEXT_EXT = new Set([\n '.ts',\n '.tsx',\n '.js',\n '.jsx',\n '.mjs',\n '.cjs',\n '.json',\n '.md',\n '.yml',\n '.yaml',\n '.env',\n '.txt',\n])\n\nexport async function runSecrets(\n cwd: string,\n config: FrontGuardConfig,\n pr: PrContext | null,\n): Promise<CheckResult> {\n const t0 = performance.now()\n if (!config.checks.secrets.enabled) {\n return {\n checkId: 'secrets',\n findings: [],\n durationMs: 0,\n skipped: 'disabled in config',\n }\n }\n\n const findings: Finding[] = []\n\n let globs: string[]\n if (pr?.files.length) {\n globs = pr.files.filter((f) => isProbablyTextFile(f))\n } else {\n globs = await fg(\n [\n '**/*.{ts,tsx,js,jsx,mjs,cjs,json,md,yml,yaml,env}',\n '!**/node_modules/**',\n '!**/dist/**',\n '!**/.next/**',\n '!**/build/**',\n '!**/coverage/**',\n ],\n { cwd, onlyFiles: true, dot: false },\n )\n }\n\n const maxFiles = 200\n let scanned = 0\n\n for (const rel of globs) {\n if (scanned++ > maxFiles) {\n findings.push({\n id: 'secrets-cap',\n severity: 'info',\n message: `Secret scan capped after ${maxFiles} files (run on PR for narrower scope)`,\n })\n break\n }\n\n const full = path.join(cwd, rel)\n let content: string\n try {\n content = await fs.readFile(full, 'utf8')\n } catch {\n continue\n }\n if (content.length > 500_000) continue\n\n for (const { id, re, message } of PATTERNS) {\n if (re.test(content)) {\n findings.push({\n id,\n severity: 'warn',\n message,\n file: rel,\n })\n }\n }\n }\n\n return {\n checkId: 'secrets',\n findings,\n durationMs: Math.round(performance.now() - t0),\n }\n}\n\nfunction isProbablyTextFile(rel: string): boolean {\n const ext = path.extname(rel).toLowerCase()\n return TEXT_EXT.has(ext)\n}\n","import type { CheckResult, Finding, PrContext } from '../types.js'\nimport type { FrontGuardConfig } from '../config/schema.js'\n\nexport function runPrHygiene(\n config: FrontGuardConfig,\n pr: PrContext | null,\n): CheckResult {\n const t0 = performance.now()\n if (!config.checks.prHygiene.enabled) {\n return {\n checkId: 'pr-hygiene',\n findings: [],\n durationMs: 0,\n skipped: 'disabled in config',\n }\n }\n\n if (!pr) {\n return {\n checkId: 'pr-hygiene',\n findings: [],\n durationMs: Math.round(performance.now() - t0),\n skipped:\n 'no PR context (run in a Bitbucket PR pipeline with BITBUCKET_PR_ID, or set FRONTGUARD_PR_BODY for description checks)',\n }\n }\n\n const findings: Finding[] = []\n const body = (pr.body ?? '').trim()\n const min = config.checks.prHygiene.minBodyLength\n\n if (body.length < min) {\n findings.push({\n id: 'pr-body-short',\n severity: 'warn',\n message: `PR description is shorter than ${min} characters`,\n detail: `Current length: ${body.length}`,\n })\n }\n\n const lower = body.toLowerCase()\n const hints = config.checks.prHygiene.sectionHints\n const missing = hints.filter((h) => !sectionMentioned(lower, h))\n\n if (missing.length > 0) {\n findings.push({\n id: 'pr-sections',\n severity: config.checks.prHygiene.requireSections ? 'warn' : 'info',\n message: `PR description may be missing suggested sections: ${missing.join(', ')}`,\n })\n }\n\n if (config.checks.prHygiene.requireAiDisclosureSection) {\n const hasAiHeader = /^#{1,6}\\s+.*\\bAI\\b/im.test(body)\n if (!hasAiHeader) {\n findings.push({\n id: 'pr-ai-section-missing',\n severity: 'warn',\n message:\n 'PR is missing an **AI disclosure** section (e.g. `## AI disclosure`). Mark whether this PR used AI tools.',\n })\n }\n }\n\n if (pr.aiDisclosureAmbiguous) {\n findings.push({\n id: 'pr-ai-disclosure-ambiguous',\n severity: config.checks.prHygiene.gateWhenAiDisclosureAmbiguous,\n message:\n 'AI disclosure checkboxes look ambiguous — please mark **Yes** or **No** clearly in the AI section.',\n })\n }\n\n if (pr.aiAssisted) {\n findings.push({\n id: 'pr-ai-flag',\n severity: 'warn',\n message:\n '**AI-assisted PR:** FrontGuard is applying stricter static checks and may escalate secrets / `any` deltas. Verify business logic, auth, and data handling manually.',\n })\n }\n\n if (pr.aiExplicitNo) {\n findings.push({\n id: 'pr-ai-explicit-no',\n severity: 'info',\n message:\n 'Author indicated **no AI** for code generation — standard review profile.',\n })\n }\n\n return {\n checkId: 'pr-hygiene',\n findings,\n durationMs: Math.round(performance.now() - t0),\n }\n}\n\nfunction sectionMentioned(body: string, hint: string): boolean {\n const h = hint.toLowerCase()\n if (h === 'what') {\n return /\\bwhat\\b/.test(body) || /##\\s*summary/.test(body) || /##\\s*context/.test(body)\n }\n if (h === 'why') {\n return /\\bwhy\\b/.test(body) || /motivation/.test(body) || /##\\s*rationale/.test(body)\n }\n if (h === 'test' || h === 'how to test') {\n return (\n /how to test/.test(body) ||\n /\\btesting\\b/.test(body) ||\n /##\\s*test/.test(body) ||\n /qa\\s*steps/.test(body)\n )\n }\n if (h === 'screenshot') {\n return /screenshot|screen recording|loom|recording/i.test(body)\n }\n return body.includes(h)\n}\n","import type { CheckResult, Finding, PrContext } from '../types.js'\nimport type { FrontGuardConfig, PrSizeTier } from '../config/schema.js'\n\nfunction expandMessage(template: string, lines: number, min: number): string {\n return template.replaceAll('${lines}', String(lines)).replaceAll('${min}', String(min))\n}\n\nfunction defaultTiers(cfg: FrontGuardConfig['checks']['prSize']): PrSizeTier[] {\n return [\n {\n minLines: cfg.softBlockLines,\n severity: 'warn',\n id: 'pr-size-large',\n message:\n 'PR is very large (${lines} lines changed; threshold ${min}). Consider splitting for review.',\n },\n {\n minLines: cfg.warnLines,\n severity: 'info',\n id: 'pr-size-medium',\n message: 'PR size is elevated (${lines} lines changed; threshold ${min}).',\n },\n ]\n}\n\nexport function runPrSize(config: FrontGuardConfig, pr: PrContext | null): CheckResult {\n const t0 = performance.now()\n if (!config.checks.prSize.enabled) {\n return {\n checkId: 'pr-size',\n findings: [],\n durationMs: 0,\n skipped: 'disabled in config',\n }\n }\n\n if (!pr) {\n return {\n checkId: 'pr-size',\n findings: [],\n durationMs: Math.round(performance.now() - t0),\n skipped:\n 'no PR context (run in a Bitbucket pull-request pipeline so BITBUCKET_PR_* and git diff are available)',\n }\n }\n\n const lines = pr.additions + pr.deletions\n const cfg = config.checks.prSize\n const rawTiers = cfg.tiers?.length ? cfg.tiers : defaultTiers(cfg)\n const sorted = [...rawTiers].sort((a, b) => b.minLines - a.minLines)\n\n const findings: Finding[] = []\n let i = 0\n for (const tier of sorted) {\n if (lines < tier.minLines) continue\n const id = tier.id ?? `pr-size-tier-${i}`\n i += 1\n const message = tier.message\n ? expandMessage(tier.message, lines, tier.minLines)\n : expandMessage(\n 'PR has ${lines} lines changed (≥ ${min}).',\n lines,\n tier.minLines,\n )\n findings.push({\n id,\n severity: tier.severity,\n message,\n detail: 'Total = additions + deletions from the PR diff.',\n })\n }\n\n return {\n checkId: 'pr-size',\n findings,\n durationMs: Math.round(performance.now() - t0),\n }\n}\n","import { exec } from 'tinyexec'\n\nexport async function gitOk(cwd: string): Promise<boolean> {\n try {\n const r = await exec('git', ['rev-parse', '--is-inside-work-tree'], {\n nodeOptions: { cwd },\n })\n return (r.stdout ?? '').trim() === 'true'\n } catch {\n return false\n }\n}\n\nexport async function gitMergeBase(cwd: string, baseRef: string): Promise<string | null> {\n try {\n const r = await exec('git', ['merge-base', 'HEAD', baseRef], {\n nodeOptions: { cwd },\n })\n const s = (r.stdout ?? '').trim()\n return s || null\n } catch {\n return null\n }\n}\n\n/** Unified diff patch (text) between base and HEAD for pathspecs. */\nexport async function gitDiffPatch(\n cwd: string,\n baseRef: string,\n pathspecs: string[],\n): Promise<string | null> {\n if (pathspecs.length === 0) return null\n try {\n const r = await exec(\n 'git',\n ['diff', `${baseRef}...HEAD`, '--unified=1', '--no-color', '--', ...pathspecs],\n { nodeOptions: { cwd } },\n )\n return r.stdout ?? ''\n } catch {\n return null\n }\n}\n\nexport async function gitShowFile(\n cwd: string,\n gitRef: string,\n filePath: string,\n): Promise<string | null> {\n try {\n const r = await exec('git', ['show', `${gitRef}:${filePath}`], {\n nodeOptions: { cwd },\n })\n return r.stdout ?? ''\n } catch {\n return null\n }\n}\n\n/** Unified diff for review / LLM context. */\nexport async function gitDiffForReview(\n cwd: string,\n baseRef: string,\n maxChars: number,\n): Promise<string> {\n try {\n const r = await exec(\n 'git',\n ['diff', `${baseRef}...HEAD`, '--unified=2', '--no-color'],\n {\n nodeOptions: { cwd },\n },\n )\n let s = r.stdout ?? ''\n if (s.length > maxChars) {\n s = s.slice(0, maxChars) + '\\n…(truncated)\\n'\n }\n return s\n } catch {\n return ''\n }\n}\n\nexport async function resolveDiffBaseRef(cwd: string, fallback: string): Promise<string> {\n const bb = process.env.BITBUCKET_PR_DESTINATION_BRANCH?.trim()\n if (bb) {\n const origin = `origin/${bb}`\n try {\n await exec('git', ['rev-parse', '--verify', origin], { nodeOptions: { cwd } })\n return origin\n } catch {\n try {\n await exec('git', ['rev-parse', '--verify', bb], { nodeOptions: { cwd } })\n return bb\n } catch {\n /* fall through to fallback */\n }\n }\n }\n try {\n const cand = fallback.includes('/') ? fallback : `origin/${fallback}`\n await exec('git', ['rev-parse', '--verify', cand], { nodeOptions: { cwd } })\n return cand\n } catch {\n try {\n await exec('git', ['rev-parse', '--verify', fallback], { nodeOptions: { cwd } })\n return fallback\n } catch {\n return fallback\n }\n }\n}\n","import type { CheckResult, Finding, StackInfo } from '../types.js'\nimport type { CheckGate, FrontGuardConfig } from '../config/schema.js'\nimport { gitDiffPatch, gitOk, resolveDiffBaseRef } from '../runner/git.js'\n\nfunction gateSeverity(g: CheckGate): Finding['severity'] {\n return g === 'block' ? 'block' : g === 'info' ? 'info' : 'warn'\n}\n\n/** Approximate count of *new* `any` introduced on `+` diff lines. */\nexport function countAddedAnyInPatch(patch: string): number {\n let n = 0\n for (const raw of patch.split('\\n')) {\n if (!raw.startsWith('+') || raw.startsWith('+++')) continue\n const line = raw.slice(1)\n if (/^\\s*\\/(\\/|\\*)/.test(line)) continue\n const patterns = [\n /:\\s*any\\b/g,\n /\\bas\\s+any\\b/g,\n /<\\s*any\\s*>/g,\n /\\bReadonlyArray\\s*<\\s*any\\s*>/g,\n /\\bArray\\s*<\\s*any\\s*>/g,\n /\\bRecord\\s*<\\s*[^,]+,\\s*any\\s*>/g,\n ]\n for (const p of patterns) {\n const m = line.match(p)\n if (m) n += m.length\n }\n }\n return n\n}\n\nexport async function runTsAnyDelta(\n cwd: string,\n config: FrontGuardConfig,\n stack: StackInfo,\n): Promise<CheckResult> {\n const t0 = performance.now()\n const cfg = config.checks.tsAnyDelta\n if (!cfg.enabled || !stack.hasTypeScript) {\n return {\n checkId: 'ts-any-delta',\n findings: [],\n durationMs: 0,\n skipped: !cfg.enabled ? 'disabled in config' : 'no TypeScript',\n }\n }\n\n if (!(await gitOk(cwd))) {\n return {\n checkId: 'ts-any-delta',\n findings: [],\n durationMs: Math.round(performance.now() - t0),\n skipped: 'not a git repository',\n }\n }\n\n const base = await resolveDiffBaseRef(cwd, cfg.baseRef)\n const patch = (await gitDiffPatch(cwd, base, ['*.ts', '*.tsx', '*.mts', '*.cts'])) ?? ''\n\n if (!patch.trim()) {\n return {\n checkId: 'ts-any-delta',\n findings: [],\n durationMs: Math.round(performance.now() - t0),\n skipped: 'no diff vs base (fetch depth or base ref?)',\n }\n }\n\n const added = countAddedAnyInPatch(patch)\n const findings: Finding[] = []\n\n if (added === 0) {\n return {\n checkId: 'ts-any-delta',\n findings,\n durationMs: Math.round(performance.now() - t0),\n }\n }\n\n const overBudget = cfg.maxAdded > 0 && added > cfg.maxAdded\n const shouldGate = cfg.maxAdded === 0 ? added > 0 : overBudget\n\n const severity: Finding['severity'] = shouldGate ? gateSeverity(cfg.gate) : 'info'\n\n findings.push({\n id: 'ts-any-added',\n severity,\n message: shouldGate\n ? cfg.maxAdded > 0\n ? `Added ~${added} new \\`any\\` usages (budget ${cfg.maxAdded})`\n : `Added ~${added} new \\`any\\` usages in the PR diff`\n : `Added ~${added} new \\`any\\` usages (within budget ${cfg.maxAdded})`,\n detail: `merge-base: ${base}`,\n })\n\n return {\n checkId: 'ts-any-delta',\n findings,\n durationMs: Math.round(performance.now() - t0),\n }\n}\n","import path from 'node:path'\nimport type { CheckResult, Finding, PrContext, StackInfo } from '../types.js'\nimport type { CheckGate, FrontGuardConfig } from '../config/schema.js'\nimport { existingRepoPaths, filterPrFilesForMadge } from '../lib/pr-scope.js'\nimport { pathExists, runNpx } from '../runner/exec-tools.js'\n\nfunction gateSeverity(g: CheckGate): Finding['severity'] {\n return g === 'block' ? 'block' : g === 'info' ? 'info' : 'warn'\n}\n\nexport async function runCycles(\n cwd: string,\n config: FrontGuardConfig,\n stack: StackInfo,\n pr: PrContext | null,\n): Promise<CheckResult> {\n const t0 = performance.now()\n const cfg = config.checks.cycles\n if (!cfg.enabled || !stack.hasTypeScript) {\n return {\n checkId: 'cycles',\n findings: [],\n durationMs: 0,\n skipped: !cfg.enabled ? 'disabled in config' : 'no TypeScript',\n }\n }\n\n let entry = cfg.entries[0] ?? 'src'\n for (const e of cfg.entries) {\n if (await pathExists(path.join(cwd, e))) {\n entry = e\n break\n }\n }\n if (!(await pathExists(path.join(cwd, entry)))) {\n return {\n checkId: 'cycles',\n findings: [],\n durationMs: Math.round(performance.now() - t0),\n skipped: `entry path not found (${entry})`,\n }\n }\n\n const prMadge = filterPrFilesForMadge(pr)\n const prExisting = prMadge?.length ? await existingRepoPaths(cwd, prMadge) : []\n const roots =\n prExisting.length > 0 ? prExisting : [entry]\n\n const args = [\n '-y',\n 'madge@6',\n ...roots,\n '--extensions',\n 'ts,tsx,js,jsx',\n '--circular',\n ...cfg.extraArgs,\n ]\n\n const { exitCode, stdout, stderr } = await runNpx(cwd, args)\n const out = [stdout, stderr].filter(Boolean).join('\\n').trim()\n\n if (exitCode === 127 || /command not found|not recognized|ENOENT/i.test(stderr)) {\n return {\n checkId: 'cycles',\n findings: [],\n durationMs: Math.round(performance.now() - t0),\n skipped: 'npx/madge not available',\n }\n }\n\n const findings: Finding[] = []\n const cyclic = exitCode !== 0 && /circular|Circular|\\(circular\\)/i.test(out)\n\n if (cyclic) {\n findings.push({\n id: 'import-cycle',\n severity: gateSeverity(cfg.gate),\n message:\n prExisting.length > 0\n ? 'Circular dependencies detected (madge, scoped to PR files)'\n : 'Circular dependencies detected (madge)',\n detail: truncate(out || `exit ${exitCode}`, 12_000),\n })\n } else if (exitCode !== 0) {\n findings.push({\n id: 'madge-error',\n severity: 'info',\n message: 'madge exited non-zero — verify entry/extensions or install deps locally',\n detail: truncate(out || `exit ${exitCode}`, 8000),\n })\n }\n\n return {\n checkId: 'cycles',\n findings,\n durationMs: Math.round(performance.now() - t0),\n }\n}\n\nfunction truncate(s: string, max: number): string {\n if (s.length <= max) return s\n return s.slice(0, max) + '…'\n}\n","import type { CheckResult, Finding, PrContext, StackInfo } from '../types.js'\nimport type { CheckGate, FrontGuardConfig } from '../config/schema.js'\nimport { runNpx } from '../runner/exec-tools.js'\n\nfunction gateSeverity(g: CheckGate): Finding['severity'] {\n return g === 'block' ? 'block' : g === 'info' ? 'info' : 'warn'\n}\n\nexport async function runDeadCode(\n cwd: string,\n config: FrontGuardConfig,\n stack: StackInfo,\n pr: PrContext | null,\n): Promise<CheckResult> {\n const t0 = performance.now()\n const cfg = config.checks.deadCode\n if (!cfg.enabled || !stack.hasTypeScript) {\n return {\n checkId: 'dead-code',\n findings: [],\n durationMs: 0,\n skipped: !cfg.enabled ? 'disabled in config' : 'no TypeScript',\n }\n }\n\n const args = ['-y', 'ts-prune', ...cfg.extraArgs]\n const { exitCode, stdout, stderr } = await runNpx(cwd, args)\n\n if (exitCode === 127 || /command not found|not recognized|ENOENT/i.test(stderr)) {\n return {\n checkId: 'dead-code',\n findings: [],\n durationMs: Math.round(performance.now() - t0),\n skipped: 'npx/ts-prune not available',\n }\n }\n\n const raw = (stdout || '').trim()\n const lines = raw\n .split('\\n')\n .map((l) => l.trim())\n .filter((l) => l && /^[\\w./\\\\~-]+[^\\s]*\\s*-\\s*.+/.test(l))\n\n if (lines.length === 0) {\n return {\n checkId: 'dead-code',\n findings: [],\n durationMs: Math.round(performance.now() - t0),\n }\n }\n\n const prFiles = pr?.files?.length\n ? new Set(pr.files.map((f) => f.replace(/\\\\/g, '/')))\n : null\n\n const relevant = prFiles\n ? lines.filter((l) => {\n const file = l.split(/\\s*-\\s*/)[0]?.trim()\n if (!file) return false\n return [...prFiles].some((p) => p === file || p.endsWith(file))\n })\n : lines\n\n const report = (relevant.length ? relevant : lines)\n .slice(0, cfg.maxReportLines)\n .join('\\n')\n\n const findings: Finding[] = [\n {\n id: 'ts-prune',\n severity: gateSeverity(cfg.gate),\n message: prFiles\n ? `Potentially unused exports (${relevant.length} on touched files; ${lines.length} total)`\n : `Potentially unused exports reported by ts-prune (${lines.length})`,\n detail: report,\n },\n ]\n\n return {\n checkId: 'dead-code',\n findings,\n durationMs: Math.round(performance.now() - t0),\n }\n}\n","import fs from 'node:fs/promises'\nimport path from 'node:path'\nimport fg from 'fast-glob'\nimport { exec } from 'tinyexec'\nimport type { CheckResult, Finding, StackInfo } from '../types.js'\nimport type { CheckGate, FrontGuardConfig } from '../config/schema.js'\nimport { resolveDiffBaseRef } from '../runner/git.js'\n\nfunction gateSeverity(g: CheckGate): Finding['severity'] {\n return g === 'block' ? 'block' : g === 'info' ? 'info' : 'warn'\n}\n\ninterface BaselineFile {\n totalBytes: number\n generatedAt?: string\n}\n\nasync function sumGlobBytes(cwd: string, patterns: string[]): Promise<number> {\n let total = 0\n for (const pattern of patterns) {\n const files = await fg(pattern, {\n cwd,\n onlyFiles: true,\n dot: false,\n ignore: ['**/node_modules/**'],\n })\n for (const rel of files) {\n try {\n const st = await fs.stat(path.join(cwd, rel))\n total += st.size\n } catch {\n /* skip */\n }\n }\n }\n return total\n}\n\nasync function readBaseline(\n cwd: string,\n relPath: string,\n baseRef: string | null,\n): Promise<BaselineFile | null> {\n const disk = path.join(cwd, relPath)\n try {\n const raw = await fs.readFile(disk, 'utf8')\n return JSON.parse(raw) as BaselineFile\n } catch {\n /* no local baseline */\n }\n\n if (!baseRef) return null\n try {\n const r = await exec('git', ['show', `${baseRef}:${relPath}`], {\n nodeOptions: { cwd },\n })\n if ((r.exitCode ?? 0) !== 0) return null\n return JSON.parse((r.stdout ?? '').trim()) as BaselineFile\n } catch {\n return null\n }\n}\n\nasync function gitOkQuick(cwd: string): Promise<boolean> {\n try {\n const r = await exec('git', ['rev-parse', '--is-inside-work-tree'], {\n nodeOptions: { cwd },\n })\n return (r.stdout ?? '').trim() === 'true'\n } catch {\n return false\n }\n}\n\nfunction tokenizeCommand(cmd: string): string[] {\n return cmd\n .trim()\n .split(/\\s+/)\n .map((t) => t.trim())\n .filter(Boolean)\n}\n\n/**\n * If the command is a plain `npm|pnpm run <script>` or `yarn run <script>` / `yarn build`,\n * returns that script name so we can skip a doomed run when `package.json` has no such script.\n * Other commands (e.g. `make prod`, `npx vite build`) return null — we always execute those.\n */\nfunction npmScriptFromBuildCommand(cmd: string): string | null {\n const t = cmd.trim()\n if (/^yarn\\s+build\\b/i.test(t)) return 'build'\n const np = /^(?:npm|pnpm)\\s+run\\s+(\\S+)/i.exec(t)\n if (np?.[1]) return np[1]\n const yr = /^yarn\\s+run\\s+(\\S+)/i.exec(t)\n if (yr?.[1]) return yr[1]\n return null\n}\n\nasync function bundleBuildPrecheck(\n cwd: string,\n buildCommand: string,\n): Promise<{ run: true } | { run: false; message: string; detail: string }> {\n const script = npmScriptFromBuildCommand(buildCommand)\n if (!script) return { run: true }\n\n let scripts: Record<string, string> | undefined\n try {\n const raw = await fs.readFile(path.join(cwd, 'package.json'), 'utf8')\n const pkg = JSON.parse(raw) as { scripts?: Record<string, string> }\n scripts = pkg.scripts\n } catch {\n return {\n run: false,\n message: 'Skipped bundle build — no readable package.json',\n detail:\n 'Set checks.bundle.buildCommand to your real build (e.g. `vite build`), set checks.bundle.runBuild to false, or add a package.json with the matching script.',\n }\n }\n\n if (!scripts?.[script]) {\n return {\n run: false,\n message: `Skipped bundle build — no scripts.${script} in package.json`,\n detail:\n 'The bundle check runs a production build, then sums file sizes under checks.bundle.measureGlobs (dist/, build/static/, .next/static/, etc.). Libraries and non-web repos often have no `build` script — set checks.bundle.runBuild to false and optionally tune measureGlobs, or set checks.bundle.buildCommand to whatever produces your artifacts (e.g. `pnpm run compile`, `npx vite build`).',\n }\n }\n\n return { run: true }\n}\n\nexport async function runBundle(\n cwd: string,\n config: FrontGuardConfig,\n stack: StackInfo,\n): Promise<CheckResult> {\n const t0 = performance.now()\n const cfg = config.checks.bundle\n\n if (!cfg.enabled) {\n return {\n checkId: 'bundle',\n findings: [],\n durationMs: 0,\n skipped: 'disabled in config',\n }\n }\n\n if (stack.hasReactNative && !stack.hasNext) {\n return {\n checkId: 'bundle',\n findings: [],\n durationMs: Math.round(performance.now() - t0),\n skipped: 'skipped for React Native (configure web artifacts if needed)',\n }\n }\n\n const preFindings: Finding[] = []\n\n if (cfg.runBuild) {\n const parts = tokenizeCommand(cfg.buildCommand)\n if (parts.length === 0) {\n return {\n checkId: 'bundle',\n findings: [\n {\n id: 'bundle-cmd',\n severity: 'warn',\n message: '`checks.bundle.buildCommand` is empty',\n },\n ],\n durationMs: Math.round(performance.now() - t0),\n }\n }\n\n const pre = await bundleBuildPrecheck(cwd, cfg.buildCommand)\n if (!pre.run) {\n preFindings.push({\n id: 'bundle-build-skipped',\n severity: 'info',\n message: pre.message,\n detail: pre.detail,\n })\n } else {\n const [bin, ...args] = parts\n const res = await exec(bin, args, { nodeOptions: { cwd } })\n if ((res.exitCode ?? 0) !== 0) {\n return {\n checkId: 'bundle',\n findings: [\n {\n id: 'bundle-build',\n severity: gateSeverity(cfg.gate),\n message: 'Build command failed — cannot measure bundle',\n detail: [res.stdout, res.stderr].filter(Boolean).join('\\n').slice(0, 8000),\n },\n ],\n durationMs: Math.round(performance.now() - t0),\n }\n }\n }\n }\n\n const total = await sumGlobBytes(cwd, cfg.measureGlobs)\n if (total === 0) {\n return {\n checkId: 'bundle',\n findings: [\n ...preFindings,\n {\n id: 'bundle-empty',\n severity: 'info',\n message:\n 'No bundle artifacts matched `measureGlobs` — configure paths or run a web build',\n },\n ],\n durationMs: Math.round(performance.now() - t0),\n }\n }\n\n const baseRef = (await gitOkQuick(cwd))\n ? await resolveDiffBaseRef(cwd, cfg.baselineRef)\n : null\n const baseline = await readBaseline(cwd, cfg.baselinePath, baseRef)\n\n const findings: Finding[] = [...preFindings]\n const infoLines = [\n `Measured ${total} bytes (${(total / 1024 / 1024).toFixed(2)} MiB)`,\n baseline\n ? `Baseline from \\`${cfg.baselinePath}\\`: ${baseline.totalBytes} bytes`\n : `No baseline at \\`${cfg.baselinePath}\\` (commit a baseline JSON to compare)`,\n ].join('\\n')\n\n if (cfg.maxTotalBytes != null && total > cfg.maxTotalBytes) {\n findings.push({\n id: 'bundle-max-total',\n severity: gateSeverity(cfg.gate),\n message: `Bundle size ${total} bytes exceeds maxTotalBytes (${cfg.maxTotalBytes})`,\n detail: infoLines,\n })\n }\n\n if (baseline && cfg.maxDeltaBytes != null) {\n const delta = total - baseline.totalBytes\n if (delta > cfg.maxDeltaBytes) {\n findings.push({\n id: 'bundle-delta',\n severity: gateSeverity(cfg.gate),\n message: `Bundle grew by ${delta} bytes vs baseline (limit ${cfg.maxDeltaBytes})`,\n detail: infoLines,\n })\n }\n }\n\n if (\n findings.length === 0 &&\n !baseline &&\n (cfg.maxDeltaBytes != null || cfg.maxTotalBytes != null)\n ) {\n findings.push({\n id: 'bundle-baseline-missing',\n severity: 'info',\n message:\n 'Baseline file missing — delta/total gates need a committed `.frontguard/bundle-baseline.json`',\n detail: infoLines,\n })\n }\n\n if (findings.length === 0) {\n findings.push({\n id: 'bundle-ok',\n severity: 'info',\n message: 'Bundle measurement complete',\n detail: infoLines,\n })\n }\n\n return {\n checkId: 'bundle',\n findings,\n durationMs: Math.round(performance.now() - t0),\n }\n}\n","import fs from 'node:fs/promises'\nimport path from 'node:path'\nimport fg from 'fast-glob'\nimport type { CheckResult, Finding, PrContext, StackInfo } from '../types.js'\nimport type { CheckGate, FrontGuardConfig } from '../config/schema.js'\n\nfunction gateSeverity(g: CheckGate): Finding['severity'] {\n return g === 'block' ? 'block' : g === 'info' ? 'info' : 'warn'\n}\n\n/** Static Core Web Vitals–oriented hints for JSX/TSX (LCP, main-thread hygiene). */\nexport async function runCoreWebVitals(\n cwd: string,\n config: FrontGuardConfig,\n stack: StackInfo,\n pr: PrContext | null,\n): Promise<CheckResult> {\n const t0 = performance.now()\n const cfg = config.checks.coreWebVitals\n\n if (!cfg.enabled) {\n return {\n checkId: 'core-web-vitals',\n findings: [],\n durationMs: 0,\n skipped: 'disabled in config',\n }\n }\n\n if (stack.hasReactNative && !stack.hasNext) {\n return {\n checkId: 'core-web-vitals',\n findings: [],\n durationMs: Math.round(performance.now() - t0),\n skipped: 'skipped for React Native',\n }\n }\n\n const prSet = pr?.files?.length\n ? new Set(pr.files.map((f) => f.replace(/\\\\/g, '/')))\n : null\n\n const files = await fg(cfg.scanGlobs, {\n cwd,\n onlyFiles: true,\n ignore: ['**/node_modules/**', '**/*.test.*', '**/*.spec.*'],\n })\n\n const toScan = prSet\n ? files.filter((f) => [...prSet].some((p) => p === f || p.endsWith(f)))\n : files\n\n const findings: Finding[] = []\n const sev = gateSeverity(cfg.gate)\n\n for (const rel of toScan.slice(0, 400)) {\n const full = path.join(cwd, rel)\n let text: string\n try {\n text = await fs.readFile(full, 'utf8')\n } catch {\n continue\n }\n if (text.length > cfg.maxFileBytes) continue\n\n if (\n stack.hasNext &&\n /<img\\b/i.test(text) &&\n !/from\\s+['\"]next\\/image['\"]/.test(text)\n ) {\n findings.push({\n id: 'core-web-vitals-img-tag',\n severity: sev,\n message: 'Raw `<img>` — prefer `next/image` for LCP-friendly delivery',\n file: rel,\n })\n }\n\n if (/dangerouslySetInnerHTML/i.test(text)) {\n findings.push({\n id: 'core-web-vitals-dsh',\n severity: 'warn',\n message:\n '`dangerouslySetInnerHTML` can add main-thread work — validate necessity',\n file: rel,\n })\n }\n }\n\n return {\n checkId: 'core-web-vitals',\n findings: dedupeFindings(findings).slice(0, 40),\n durationMs: Math.round(performance.now() - t0),\n }\n}\n\nfunction dedupeFindings(f: Finding[]): Finding[] {\n const seen = new Set<string>()\n const out: Finding[] = []\n for (const x of f) {\n const k = `${x.id}:${x.file ?? ''}`\n if (seen.has(k)) continue\n seen.add(k)\n out.push(x)\n }\n return out\n}\n","import fs from 'node:fs/promises'\nimport path from 'node:path'\nimport fg from 'fast-glob'\nimport type { CheckResult, Finding } from '../types.js'\nimport type { FrontGuardConfig } from '../config/schema.js'\n\nconst DEFAULT_GLOB = '**/*.{ts,tsx,js,jsx,mjs,cjs}'\n\nexport async function runCustomRules(\n cwd: string,\n config: FrontGuardConfig,\n restrictToFiles: string[] | null,\n): Promise<CheckResult> {\n const t0 = performance.now()\n const rules = config.rules\n if (!rules || Object.keys(rules).length === 0) {\n return {\n checkId: 'custom-rules',\n findings: [],\n durationMs: 0,\n skipped: 'no rules configured',\n }\n }\n\n const active = Object.entries(rules).filter(([, v]) => v !== 'off') as [\n string,\n Exclude<(typeof rules)[string], 'off'>,\n ][]\n\n if (active.length === 0) {\n return {\n checkId: 'custom-rules',\n findings: [],\n durationMs: 0,\n skipped: 'all rules off',\n }\n }\n\n let files: string[]\n if (restrictToFiles?.length) {\n files = restrictToFiles.filter((f) => /\\.(tsx?|jsx?|mjs|cjs)$/i.test(f))\n } else {\n files = await fg(DEFAULT_GLOB, {\n cwd,\n ignore: ['**/node_modules/**', '**/dist/**', '**/.next/**', '**/build/**'],\n onlyFiles: true,\n })\n }\n\n const findings: Finding[] = []\n const maxFiles = 300\n let n = 0\n\n for (const rel of files) {\n if (n++ > maxFiles) {\n findings.push({\n id: 'custom-rules-cap',\n severity: 'info',\n message: `Custom rules scan capped after ${maxFiles} files`,\n })\n break\n }\n const full = path.join(cwd, rel)\n let content: string\n try {\n content = await fs.readFile(full, 'utf8')\n } catch {\n continue\n }\n if (content.length > 600_000) continue\n\n const ctx = { path: rel, content }\n for (const [id, def] of active) {\n if (typeof def.check !== 'function') continue\n try {\n if (def.check(ctx)) {\n findings.push({\n id: `rule:${id}`,\n severity: def.severity,\n message: def.message,\n file: rel,\n })\n }\n } catch (e) {\n findings.push({\n id: `rule-error:${id}`,\n severity: 'warn',\n message: `Rule \\`${id}\\` threw`,\n detail: e instanceof Error ? e.message : String(e),\n file: rel,\n })\n }\n }\n }\n\n return {\n checkId: 'custom-rules',\n findings,\n durationMs: Math.round(performance.now() - t0),\n }\n}\n","/**\n * AST scan (TypeScript): expression statements that call a local function whose body\n * contains a loop with a large numeric bound (e.g. 50_000). Typical AI slop / mistaken\n * \"benchmark\" code left in render paths.\n *\n * Not profiling: static heuristic only. Misses `while (true)`, `for (i < n)` when n is\n * dynamic, and nested call chains.\n */\nimport * as ts from 'typescript'\n\n/** Numeric literal threshold inside a loop subtree (underscores stripped). */\nconst BIG_LITERAL_MIN = 9_000\n\nexport function scanDiscardedExpensiveCalls(\n regionText: string,\n fileNameHint: string,\n regionStartLine: number,\n): number[] {\n const kind = /\\.(tsx|jsx)$/i.test(fileNameHint) ? ts.ScriptKind.TSX : ts.ScriptKind.TS\n const sf = ts.createSourceFile(\n fileNameHint,\n regionText,\n ts.ScriptTarget.Latest,\n true,\n kind,\n )\n\n const parseDiags = (sf as unknown as { parseDiagnostics?: ts.Diagnostic[] }).parseDiagnostics\n if (parseDiags && parseDiags.length > 12) {\n return []\n }\n\n const stack: Map<string, boolean>[] = [new Map()]\n const lines: number[] = []\n\n function current(): Map<string, boolean> {\n return stack[stack.length - 1]!\n }\n\n function lookupExpensive(name: string): boolean {\n for (let i = stack.length - 1; i >= 0; i--) {\n const v = stack[i]!.get(name)\n if (v !== undefined) return v\n }\n return false\n }\n\n function lineOf(node: ts.Node): number {\n const lc = ts.getLineAndCharacterOfPosition(sf, node.getStart(sf, false))\n return regionStartLine + lc.line\n }\n\n type ConcreteFn =\n | ts.FunctionDeclaration\n | ts.FunctionExpression\n | ts.ArrowFunction\n | ts.MethodDeclaration\n\n function visitFunctionLike(fn: ConcreteFn): void {\n stack.push(new Map())\n for (const p of fn.parameters) {\n if (ts.isIdentifier(p.name)) current().set(p.name.text, false)\n }\n const body = fn.body\n if (!body) {\n stack.pop()\n return\n }\n if (ts.isBlock(body)) {\n for (const st of body.statements) visitStmt(st)\n } else if (ts.isExpression(body)) {\n visitStmt(ts.factory.createExpressionStatement(body))\n }\n stack.pop()\n }\n\n function visitBlock(block: ts.Block): void {\n stack.push(new Map())\n for (const st of block.statements) visitStmt(st)\n stack.pop()\n }\n\n function visitMaybeBlock(s: ts.Statement): void {\n if (ts.isBlock(s)) visitBlock(s)\n else visitStmt(s)\n }\n\n function visitStmt(st: ts.Statement): void {\n if (ts.isVariableStatement(st)) {\n for (const decl of st.declarationList.declarations) {\n if (!ts.isIdentifier(decl.name) || !decl.initializer) continue\n const name = decl.name.text\n const init = decl.initializer\n if (ts.isArrowFunction(init) || ts.isFunctionExpression(init)) {\n current().set(name, isBodyExpensive(init.body))\n visitFunctionLike(init)\n }\n }\n return\n }\n\n if (ts.isFunctionDeclaration(st) && st.name && st.body) {\n current().set(st.name.text, isBodyExpensive(st.body))\n visitFunctionLike(st)\n return\n }\n\n if (ts.isExpressionStatement(st)) {\n const ex = st.expression\n if (\n ts.isCallExpression(ex) &&\n !ex.questionDotToken &&\n ts.isIdentifier(ex.expression) &&\n lookupExpensive(ex.expression.text)\n ) {\n lines.push(lineOf(ex))\n }\n return\n }\n\n if (ts.isBlock(st)) {\n visitBlock(st)\n return\n }\n\n if (ts.isIfStatement(st)) {\n visitMaybeBlock(st.thenStatement)\n if (st.elseStatement) visitMaybeBlock(st.elseStatement)\n return\n }\n\n if (\n ts.isForStatement(st) ||\n ts.isForOfStatement(st) ||\n ts.isForInStatement(st) ||\n ts.isWhileStatement(st) ||\n ts.isDoStatement(st)\n ) {\n visitMaybeBlock(st.statement)\n return\n }\n\n if (ts.isTryStatement(st)) {\n visitBlock(st.tryBlock)\n if (st.catchClause?.block) visitBlock(st.catchClause.block)\n if (st.finallyBlock) visitBlock(st.finallyBlock)\n return\n }\n\n if (ts.isSwitchStatement(st)) {\n for (const clause of st.caseBlock.clauses) {\n for (const s of clause.statements) visitStmt(s)\n }\n return\n }\n\n if (ts.isClassDeclaration(st) && st.members) {\n for (const member of st.members) {\n if (ts.isMethodDeclaration(member) && member.body) {\n const nm = member.name\n if (ts.isIdentifier(nm)) {\n current().set(nm.text, isBodyExpensive(member.body))\n }\n visitFunctionLike(member)\n }\n }\n }\n }\n\n for (const st of sf.statements) {\n if (ts.isImportDeclaration(st) || ts.isImportEqualsDeclaration(st)) continue\n /** `export { x }` / `export * from` — no inline declaration to scan. */\n if (ts.isExportDeclaration(st)) continue\n if (ts.isExportAssignment(st)) {\n const ex = st.expression\n if (ts.isArrowFunction(ex) || ts.isFunctionExpression(ex)) {\n visitFunctionLike(ex)\n }\n continue\n }\n visitStmt(st)\n }\n\n return dedupeSorted(lines)\n}\n\nfunction dedupeSorted(nums: number[]): number[] {\n return [...new Set(nums)].sort((a, b) => a - b)\n}\n\nfunction isBodyExpensive(body: ts.ConciseBody): boolean {\n if (!body) return false\n if (ts.isBlock(body)) return blockHasExpensiveLoop(body)\n return nodeHasExpensiveLoop(body)\n}\n\nfunction blockHasExpensiveLoop(block: ts.Block): boolean {\n return nodeHasExpensiveLoop(block)\n}\n\nfunction nodeHasExpensiveLoop(node: ts.Node): boolean {\n let found = false\n const visit = (n: ts.Node): void => {\n if (found) return\n if (\n ts.isForStatement(n) ||\n ts.isForOfStatement(n) ||\n ts.isForInStatement(n) ||\n ts.isWhileStatement(n) ||\n ts.isDoStatement(n)\n ) {\n if (subtreeHasBigNumeric(n, BIG_LITERAL_MIN)) found = true\n return\n }\n ts.forEachChild(n, visit)\n }\n visit(node)\n return found\n}\n\nfunction subtreeHasBigNumeric(node: ts.Node, min: number): boolean {\n let found = false\n const visit = (n: ts.Node): void => {\n if (found) return\n if (ts.isNumericLiteral(n)) {\n const v = Number(n.text.replace(/_/g, ''))\n if (Number.isFinite(v) && v >= min) {\n found = true\n return\n }\n }\n ts.forEachChild(n, visit)\n }\n visit(node)\n return found\n}\n","/**\n * Client convention: wrap AI-generated code so `ai-assisted-strict` scans only that scope.\n *\n * Line comments (or one-line block comments):\n * - `// @frontguard-ai:start` … `// @frontguard-ai:end`\n * - `// @ai-written:start` … `// @ai-written:end`\n * - `// @frontguard-ai:file` in the first 40 non-empty lines → scan whole file\n * - Human-readable: `// written by AI: start` … `// written by AI: end`, or `// written by AI: file`\n */\n\nconst FILE_SCAN_HEAD_LINES = 40\n\n/** Inner text of a line or block comment. */\nfunction commentInner(line: string): string | null {\n const t = line.trim()\n const mLine = /^\\/\\/\\s*(.*)$/.exec(t)\n if (mLine) return mLine[1]?.trim() ?? ''\n const mBlock = /^\\/\\*\\s*(.*?)\\s*\\*\\/\\s*$/.exec(t)\n if (mBlock) return mBlock[1]?.trim() ?? ''\n return null\n}\n\nfunction lineMarkerKind(line: string): 'start' | 'end' | 'file' | null {\n const inner = commentInner(line)\n if (!inner) return null\n\n if (\n /@(?:frontguard-ai|ai-written)\\s*:\\s*file\\b/i.test(inner) ||\n /^written\\s+by\\s+ai\\s*:?\\s*file\\b/i.test(inner)\n )\n return 'file'\n if (\n /@(?:frontguard-ai|ai-written)\\s*:\\s*start\\b/i.test(inner) ||\n /^written\\s+by\\s+ai\\s*:?\\s*start\\b/i.test(inner)\n )\n return 'start'\n if (\n /@(?:frontguard-ai|ai-written)\\s*:\\s*end\\b/i.test(inner) ||\n /^written\\s+by\\s+ai\\s*:?\\s*end\\b/i.test(inner)\n )\n return 'end'\n return null\n}\n\nfunction isAiFileDirectiveLine(line: string): boolean {\n return lineMarkerKind(line) === 'file'\n}\n\nexport interface AiMarkedRegion {\n /** 1-based first line of region content. */\n startLine: number\n /** 1-based last line of region content (inclusive). */\n endLine: number\n text: string\n}\n\nexport interface AiRegionParseResult {\n regions: AiMarkedRegion[]\n parseWarnings: string[]\n}\n\nexport function parseAiMarkedRegions(source: string, fileHint: string): AiRegionParseResult {\n const lines = source.split(/\\r?\\n/)\n const parseWarnings: string[] = []\n const regions: AiMarkedRegion[] = []\n\n let headNonEmpty = 0\n for (let i = 0; i < lines.length && headNonEmpty < FILE_SCAN_HEAD_LINES; i++) {\n if (!lines[i]?.trim()) continue\n headNonEmpty++\n if (isAiFileDirectiveLine(lines[i] ?? '')) {\n const bodyLines = lines.filter((_, idx) => idx !== i)\n regions.push({\n startLine: 1,\n endLine: lines.length,\n text: bodyLines.join('\\n'),\n })\n return { regions, parseWarnings }\n }\n }\n\n let open = false\n let contentStart: number | null = null\n const buf: string[] = []\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i] ?? ''\n const kind = lineMarkerKind(line)\n\n if (kind === 'file') {\n parseWarnings.push(`${fileHint}:${i + 1}: @file directive ignored (only honored in first ${FILE_SCAN_HEAD_LINES} non-empty lines)`)\n if (open) buf.push(line)\n continue\n }\n\n if (kind === 'start') {\n if (open) {\n parseWarnings.push(`${fileHint}:${i + 1}: nested AI:start ignored (flatten your regions)`)\n buf.push(line)\n continue\n }\n open = true\n contentStart = i + 2\n buf.length = 0\n continue\n }\n\n if (kind === 'end') {\n if (!open) {\n parseWarnings.push(`${fileHint}:${i + 1}: stray AI:end`)\n continue\n }\n open = false\n if (contentStart !== null) {\n regions.push({\n startLine: contentStart,\n endLine: i,\n text: buf.join('\\n'),\n })\n }\n contentStart = null\n buf.length = 0\n continue\n }\n\n if (open) buf.push(line)\n }\n\n if (open && contentStart !== null) {\n parseWarnings.push(`${fileHint}: unclosed AI:start — treating region as ending at EOF`)\n regions.push({\n startLine: contentStart,\n endLine: lines.length,\n text: buf.join('\\n'),\n })\n }\n\n return { regions, parseWarnings }\n}\n\n/** 1-based file line numbers for each match of `re` in `regionText`. */\nexport function matchLineNumbersInRegion(\n regionText: string,\n regionStartLine: number,\n re: RegExp,\n): number[] {\n const flags = re.flags.includes('g') ? re.flags : `${re.flags}g`\n const g = new RegExp(re.source, flags)\n const out: number[] = []\n let m: RegExpExecArray | null\n const text = regionText\n while ((m = g.exec(text)) !== null) {\n const lineInRegion = text.slice(0, m.index).split('\\n').length\n out.push(regionStartLine + lineInRegion - 1)\n if (m.index === g.lastIndex) g.lastIndex++\n }\n return out\n}\n","import fs from 'node:fs/promises'\nimport path from 'node:path'\nimport type { CheckResult, Finding, PrContext } from '../types.js'\nimport type { CheckGate, FrontGuardConfig } from '../config/schema.js'\nimport type { AiRegionParseResult } from '../lib/ai-decorators.js'\nimport { scanDiscardedExpensiveCalls } from '../lib/ai-discarded-expensive-call.js'\nimport { matchLineNumbersInRegion, parseAiMarkedRegions } from '../lib/ai-decorators.js'\n\nfunction sev(gate: CheckGate): Finding['severity'] {\n return gate === 'block' ? 'block' : gate === 'info' ? 'info' : 'warn'\n}\n\nconst CODE_EXT = /\\.(tsx?|jsx?|mjs|cjs)$/i\n\ninterface Pattern {\n id: string\n re: RegExp\n message: string\n forceBlock?: boolean\n}\n\nconst PATTERNS: Pattern[] = [\n {\n id: 'ai-eval',\n re: /\\beval\\s*\\(/,\n message:\n '`eval()` — high risk; AI output often slips this in. Replace with safe parsing.',\n forceBlock: true,\n },\n {\n id: 'ai-new-function',\n re: /\\bnew\\s+Function\\s*\\(/,\n message: '`new Function()` is eval-like — verify necessity and input trust.',\n forceBlock: true,\n },\n {\n id: 'ai-dsh',\n re: /dangerouslySetInnerHTML\\s*=/,\n message: '`dangerouslySetInnerHTML` — XSS risk. Ensure trusted/sanitized HTML only.',\n },\n {\n id: 'ai-inner-html-assign',\n re: /\\.innerHTML\\s*=/,\n message: 'DOM `innerHTML` assignment — XSS risk; prefer textContent or sanitization.',\n },\n {\n id: 'ai-document-write',\n re: /\\bdocument\\.write\\s*\\(/,\n message: '`document.write` — brittle and unsafe in modern apps.',\n },\n {\n id: 'ai-ts-ignore',\n re: /@ts-ignore\\b/,\n message:\n '`@ts-ignore` hides errors (AI often uses instead of fixing). Prefer `@ts-expect-error` with reason.',\n },\n {\n id: 'ai-empty-catch',\n re: /catch\\s*(?:\\([^)]*\\))?\\s*\\{\\s*\\}/,\n message: 'Empty `catch` — errors swallowed; at least log or rethrow intentionally.',\n },\n {\n id: 'ai-http-url',\n re: /(['\"])http:\\/\\//,\n message: 'Plain `http://` URL — mixed content / MITM risk in browser code.',\n },\n {\n id: 'ai-token-storage',\n re: /(?:localStorage|sessionStorage)\\.(?:setItem|getItem)\\s*\\(\\s*['\"][^'\"]*token[^'\"]*['\"]/i,\n message: 'Token in web storage — confirm threat model (XSS exfiltration).',\n },\n {\n id: 'ai-child-process',\n re: /(?:from\\s+['\"]child_process['\"]|require\\s*\\(\\s*['\"]child_process['\"]\\s*\\))/,\n message:\n '`child_process` in app code — unusual for browser bundles; confirm this is server-only tooling.',\n },\n {\n id: 'ai-sql-template',\n re: /(?:query|execute|raw)\\s*\\(\\s*[`'\"][^`'\"]*\\$\\{/i,\n message: 'Possible dynamic SQL/string — ensure parameterization, not string concat.',\n },\n /**\n * Classic C-style loop with `<= ...length` — often an off-by-one with `charAt(i)` / array indexing\n * (index `length` is out of range). Prefer `< length`, `for...of`, or `Array.from`.\n */\n {\n id: 'ai-for-lte-length',\n re: /for\\s*\\(\\s*(?:let|var|const)\\s+\\w+\\s*=\\s*\\d+\\s*;\\s*\\w+\\s*<=\\s*[^;)]+\\.length\\s*;/,\n message:\n 'Loop condition uses `<= ...length` — often an extra iteration (e.g. `charAt(length)` is empty). Prefer `< ...length` or a safer iteration style.',\n },\n /** AI often pastes broad eslint suppression without review. */\n {\n id: 'ai-eslint-disable',\n re: /eslint-disable(?:-next-line|-line)?\\b/i,\n message:\n 'ESLint disable in AI-marked code — confirm the rule violation is understood and cannot be fixed properly.',\n },\n]\n\nfunction scanRegion(\n rel: string,\n regionText: string,\n regionStartLine: number,\n gate: CheckGate,\n tag: '[AI-marked code]' | '[AI-assisted strict]',\n findings: Finding[],\n): void {\n for (const { id, re, message, forceBlock } of PATTERNS) {\n const lines = matchLineNumbersInRegion(regionText, regionStartLine, re)\n for (const line of lines) {\n findings.push({\n id,\n severity: forceBlock ? 'block' : sev(gate),\n message: `${tag} ${message}`,\n file: rel,\n detail: `line ${line}`,\n })\n }\n }\n\n const astLines = scanDiscardedExpensiveCalls(regionText, rel, regionStartLine)\n for (const line of astLines) {\n findings.push({\n id: 'ai-discarded-expensive-call',\n severity: sev(gate),\n message: `${tag} Call discards the return value of a local function whose body includes a loop with a very large numeric bound — likely wasted CPU on every run (e.g. remove the call or move work to an effect / memo with a real dependency).`,\n file: rel,\n detail: `line ${line}`,\n })\n }\n}\n\nexport async function runAiAssistedStrict(\n cwd: string,\n config: FrontGuardConfig,\n pr: PrContext | null,\n): Promise<CheckResult> {\n const t0 = performance.now()\n const cfg = config.checks.aiAssistedReview\n\n if (!cfg.enabled) {\n return {\n checkId: 'ai-assisted-strict',\n findings: [],\n durationMs: 0,\n skipped: 'disabled in config',\n }\n }\n\n if (!pr) {\n return {\n checkId: 'ai-assisted-strict',\n findings: [],\n durationMs: Math.round(performance.now() - t0),\n skipped: 'no PR context (Bitbucket PR pipeline + BITBUCKET_PR_ID required)',\n }\n }\n\n const mode = cfg.strictScanMode ?? 'both'\n const gate = cfg.gate\n const files = (pr.files ?? []).filter((f) => CODE_EXT.test(f)).slice(0, 150)\n\n const byRel = new Map<string, { content: string; parsed: AiRegionParseResult }>()\n let anyDecoratorInPr = false\n\n for (const rel of files) {\n const full = path.join(cwd, rel)\n try {\n const content = await fs.readFile(full, 'utf8')\n if (content.length > 500_000) continue\n const parsed = parseAiMarkedRegions(content, rel)\n byRel.set(rel, { content, parsed })\n if (parsed.regions.length > 0) anyDecoratorInPr = true\n } catch {\n continue\n }\n }\n\n if (mode === 'decorator' && !anyDecoratorInPr) {\n return {\n checkId: 'ai-assisted-strict',\n findings: [],\n durationMs: Math.round(performance.now() - t0),\n skipped:\n 'strictScanMode=decorator — no `@frontguard-ai:start` / `written by AI: start` regions in PR files',\n }\n }\n\n if (mode === 'pr-disclosure' && !pr.aiAssisted) {\n return {\n checkId: 'ai-assisted-strict',\n findings: [],\n durationMs: Math.round(performance.now() - t0),\n skipped: 'strictScanMode=pr-disclosure — PR does not indicate AI-assisted code',\n }\n }\n\n const useWholeFileFallback =\n (mode === 'pr-disclosure' || mode === 'both') && Boolean(pr.aiAssisted)\n\n const findings: Finding[] = []\n\n for (const rel of files) {\n const entry = byRel.get(rel)\n if (!entry) continue\n const { content, parsed } = entry\n\n for (const w of parsed.parseWarnings) {\n findings.push({\n id: 'ai-decorator-parse',\n severity: 'info',\n message: `[AI markers] ${w}`,\n file: rel,\n })\n }\n\n if (parsed.regions.length > 0) {\n for (const r of parsed.regions) {\n scanRegion(rel, r.text, r.startLine, gate, '[AI-marked code]', findings)\n }\n continue\n }\n\n if (useWholeFileFallback) {\n scanRegion(rel, content, 1, gate, '[AI-assisted strict]', findings)\n }\n }\n\n return {\n checkId: 'ai-assisted-strict',\n findings: dedupe(findings),\n durationMs: Math.round(performance.now() - t0),\n }\n}\n\nfunction dedupe(f: Finding[]): Finding[] {\n const s = new Set<string>()\n const out: Finding[] = []\n for (const x of f) {\n const k = `${x.id}:${x.file ?? ''}:${x.detail ?? ''}`\n if (s.has(k)) continue\n s.add(k)\n out.push(x)\n }\n return out\n}\n","import type { FrontGuardConfig } from '../config/schema.js'\nimport type { CheckResult, PrContext } from '../types.js'\n\n/**\n * When the PR discloses AI use, escalate selected automated findings so reviewers\n * treat them as merge blockers (in enforce mode) or high-signal warnings.\n */\nexport function applyAiAssistedEscalation(\n results: CheckResult[],\n pr: PrContext | null,\n config: FrontGuardConfig,\n): void {\n const cfg = config.checks.aiAssistedReview\n if (!pr?.aiAssisted || !cfg.enabled) return\n\n const { escalate } = cfg\n\n for (const r of results) {\n if (r.skipped) continue\n\n if (escalate.secretFindingsToBlock && r.checkId === 'secrets') {\n for (const f of r.findings) {\n if (f.severity === 'warn' || f.severity === 'info') f.severity = 'block'\n }\n }\n\n if (escalate.tsAnyDeltaToBlock && r.checkId === 'ts-any-delta') {\n for (const f of r.findings) {\n if (f.severity === 'warn' || f.severity === 'info') f.severity = 'block'\n }\n }\n }\n}\n","import { readFile, writeFile } from 'node:fs/promises'\nimport { Resvg } from '@resvg/resvg-js'\nimport type { ResvgRenderOptions } from '@resvg/resvg-js'\nimport { formatStackOneLiner } from '../detect/stack.js'\nimport { isPngBuffer } from '../lib/bitbucket-checks-image-md.js'\nimport type { CheckResult } from '../types.js'\nimport type { HtmlReportInput } from '../report/html-report.js'\n\nconst W = 920\nconst PAD_X = 24\nconst TABLE_X = 20\nconst TABLE_W = 880\nconst HEADER_H = 34\nconst ROW_H = 34\nconst COL_CHECK = 52\nconst ICON_X = 268\nconst COL_STATUS = 400\nconst COL_NUM = 700\nconst COL_TIME = 820\nconst OVER_LABEL_W = 132\nconst OVER_ROW_H = 36\n\nlet clipSeq = 0\nfunction nextClipId(): string {\n clipSeq += 1\n return `fgc${clipSeq}_${Math.random().toString(36).slice(2, 8)}`\n}\n\nfunction escapeXml(s: string): string {\n return s\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n}\n\nfunction truncate(s: string, max: number): string {\n const t = s.replace(/\\s+/g, ' ').trim()\n if (t.length <= max) return t\n return `${t.slice(0, max - 1)}…`\n}\n\nfunction formatDuration(ms: number): string {\n if (ms < 1000) return `${ms} ms`\n const s = Math.round(ms / 1000)\n if (s < 60) return `${s}s`\n const m = Math.floor(s / 60)\n const r = s % 60\n return r ? `${m}m ${r}s` : `${m}m`\n}\n\nfunction statusText(r: CheckResult): string {\n if (r.skipped) return `Skipped — ${truncate(r.skipped, 42)}`\n if (r.findings.length === 0) return 'Pass'\n return `${r.findings.length} issue(s)`\n}\n\nfunction dotFill(r: CheckResult): string {\n if (r.skipped) return '#cbd5e1'\n if (r.findings.length === 0) return '#16a34a'\n if (r.findings.some((x) => x.severity === 'block')) return '#dc2626'\n return '#d97706'\n}\n\nfunction riskFill(risk: HtmlReportInput['riskScore']): string {\n if (risk === 'LOW') return '#16a34a'\n if (risk === 'MEDIUM') return '#d97706'\n return '#dc2626'\n}\n\nfunction resvgFontOptions(): ResvgRenderOptions['font'] {\n const base = { loadSystemFonts: true as const }\n if (process.platform === 'linux') {\n return {\n ...base,\n fontDirs: [\n '/usr/share/fonts/truetype/dejavu',\n '/usr/share/fonts/truetype/liberation',\n '/usr/share/fonts/opentype/noto',\n '/usr/share/fonts',\n ],\n }\n }\n return base\n}\n\nfunction buildChecksSnapshotSvg(p: HtmlReportInput): string {\n const { riskScore, mode, stack, pr, results, lines } = p\n const modeLabel = mode === 'enforce' ? 'Enforce' : 'Warn only'\n const stackLine = truncate(formatStackOneLiner(stack), 96)\n const prLine =\n pr && lines != null\n ? truncate(\n `${lines} lines changed (+${pr.additions} / −${pr.deletions}) · ${pr.changedFiles} files`,\n 96,\n )\n : null\n\n const nOverview = 3 + (prLine ? 1 : 0)\n const overviewH = nOverview * OVER_ROW_H\n const overviewY0 = 44\n const overviewClip = nextClipId()\n const checksTitleY = overviewY0 + overviewH + 22\n const tableTop = checksTitleY + 22\n\n const bodyRows = results.length\n const cardH = HEADER_H + bodyRows * ROW_H\n const totalH = tableTop + cardH + 36\n const headerMid = tableTop + HEADER_H / 2 + 5\n const rowTextY = (i: number) => tableTop + HEADER_H + i * ROW_H + ROW_H / 2 + 5\n\n const headerCells = [\n { x: COL_CHECK, label: 'CHECK', anchor: 'start' as const },\n { x: COL_STATUS, label: 'STATUS', anchor: 'start' as const },\n { x: COL_NUM, label: '#', anchor: 'end' as const },\n { x: COL_TIME, label: 'TIME', anchor: 'end' as const },\n ]\n\n const overviewRows: string[] = []\n type OvRow = { label: string; kind: 'risk' } | { label: string; kind: 'text'; text: string }\n const ov: OvRow[] = [\n { label: 'Risk score', kind: 'risk' },\n { label: 'Mode', kind: 'text', text: modeLabel },\n { label: 'Stack', kind: 'text', text: stackLine },\n ]\n if (prLine) ov.push({ label: 'Pull request', kind: 'text', text: prLine })\n\n for (let i = 0; i < nOverview; i++) {\n const row = ov[i]!\n const y = overviewY0 + i * OVER_ROW_H\n const mid = y + OVER_ROW_H / 2 + 4\n overviewRows.push(\n `<rect x=\"${TABLE_X}\" y=\"${y}\" width=\"${OVER_LABEL_W}\" height=\"${OVER_ROW_H}\" fill=\"#f1f5f9\" stroke=\"none\"/>`,\n `<line x1=\"${TABLE_X}\" y1=\"${y + OVER_ROW_H}\" x2=\"${TABLE_X + TABLE_W}\" y2=\"${y + OVER_ROW_H}\" stroke=\"#e2e8f0\" stroke-width=\"1\"/>`,\n `<text x=\"${TABLE_X + 10}\" y=\"${mid}\" font-size=\"12\" fill=\"#64748b\" font-weight=\"500\" font-family=\"DejaVu Sans, Liberation Sans, system-ui, sans-serif\">${escapeXml(row.label)}</text>`,\n )\n if (row.kind === 'risk') {\n const rs = riskScore\n overviewRows.push(\n `<text x=\"${TABLE_X + OVER_LABEL_W + 10}\" y=\"${mid}\" font-size=\"13\" font-family=\"DejaVu Sans, Liberation Sans, system-ui, sans-serif\"><tspan fill=\"${riskFill(riskScore)}\" font-weight=\"600\">${escapeXml(rs)}</tspan><tspan fill=\"#64748b\"> — heuristic</tspan></text>`,\n )\n } else {\n overviewRows.push(\n `<text x=\"${TABLE_X + OVER_LABEL_W + 10}\" y=\"${mid}\" font-size=\"13\" fill=\"#0f172a\" font-family=\"DejaVu Sans, Liberation Sans, system-ui, sans-serif\">${escapeXml(row.text)}</text>`,\n )\n }\n }\n\n const rowLines: string[] = []\n for (let i = 0; i < bodyRows; i++) {\n const y = tableTop + HEADER_H + i * ROW_H\n const fill = i % 2 === 1 ? '#f8fafc' : '#ffffff'\n rowLines.push(\n `<rect x=\"${TABLE_X}\" y=\"${y}\" width=\"${TABLE_W}\" height=\"${ROW_H}\" fill=\"${fill}\" stroke=\"none\"/>`,\n )\n }\n\n const bodyCells: string[] = []\n for (let i = 0; i < bodyRows; i++) {\n const r = results[i]!\n const cy = rowTextY(i)\n bodyCells.push(\n `<circle cx=\"34\" cy=\"${cy - 4}\" r=\"4.5\" fill=\"${dotFill(r)}\"/>`,\n `<text x=\"${COL_CHECK}\" y=\"${cy}\" font-size=\"13\" font-weight=\"600\" fill=\"#0f172a\" font-family=\"DejaVu Sans, Liberation Sans, system-ui, sans-serif\">${escapeXml(truncate(r.checkId, 22))}</text>`,\n `<circle cx=\"${ICON_X}\" cy=\"${cy - 3}\" r=\"8\" fill=\"#f1f5f9\" stroke=\"#e2e8f0\" stroke-width=\"1\"/>`,\n `<text x=\"${ICON_X}\" y=\"${cy}\" font-size=\"9\" font-weight=\"700\" fill=\"#64748b\" text-anchor=\"middle\" font-family=\"DejaVu Sans, Liberation Sans, system-ui, sans-serif\">i</text>`,\n `<text x=\"${COL_STATUS}\" y=\"${cy}\" font-size=\"13\" fill=\"#0f172a\" font-family=\"DejaVu Sans, Liberation Sans, system-ui, sans-serif\">${escapeXml(statusText(r))}</text>`,\n `<text x=\"${COL_NUM}\" y=\"${cy}\" font-size=\"13\" fill=\"#64748b\" font-family=\"Liberation Mono, DejaVu Sans Mono, monospace\" text-anchor=\"end\">${escapeXml(r.skipped ? '—' : String(r.findings.length))}</text>`,\n `<text x=\"${COL_TIME}\" y=\"${cy}\" font-size=\"13\" fill=\"#64748b\" font-family=\"Liberation Mono, DejaVu Sans Mono, monospace\" text-anchor=\"end\">${escapeXml(formatDuration(r.durationMs))}</text>`,\n )\n }\n\n const gridLines: string[] = []\n for (let i = 0; i <= bodyRows; i++) {\n const y = tableTop + HEADER_H + i * ROW_H\n gridLines.push(\n `<line x1=\"${TABLE_X}\" y1=\"${y}\" x2=\"${TABLE_X + TABLE_W}\" y2=\"${y}\" stroke=\"#e2e8f0\" stroke-width=\"1\"/>`,\n )\n }\n\n const checksClip = nextClipId()\n\n return `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${W}\" height=\"${totalH}\" viewBox=\"0 0 ${W} ${totalH}\">\n <rect width=\"${W}\" height=\"${totalH}\" fill=\"#f8fafc\"/>\n <text x=\"${PAD_X}\" y=\"18\" font-size=\"11\" font-weight=\"600\" fill=\"#64748b\" letter-spacing=\"0.12em\" font-family=\"DejaVu Sans, Liberation Sans, system-ui, sans-serif\">FRONTGUARD</text>\n <text x=\"${PAD_X}\" y=\"36\" font-size=\"16\" font-weight=\"600\" fill=\"#0f172a\" font-family=\"DejaVu Sans, Liberation Sans, system-ui, sans-serif\">Overview</text>\n <defs>\n <clipPath id=\"${overviewClip}\">\n <rect x=\"${TABLE_X}\" y=\"${overviewY0}\" width=\"${TABLE_W}\" height=\"${overviewH}\" rx=\"10\" ry=\"10\"/>\n </clipPath>\n <clipPath id=\"${checksClip}\">\n <rect x=\"${TABLE_X}\" y=\"${tableTop}\" width=\"${TABLE_W}\" height=\"${cardH}\" rx=\"10\" ry=\"10\"/>\n </clipPath>\n </defs>\n <rect x=\"${TABLE_X}\" y=\"${overviewY0}\" width=\"${TABLE_W}\" height=\"${overviewH}\" rx=\"10\" ry=\"10\" fill=\"#ffffff\" stroke=\"#e2e8f0\" stroke-width=\"1\"/>\n <g clip-path=\"url(#${overviewClip})\">\n ${overviewRows.join('\\n ')}\n </g>\n <text x=\"${PAD_X}\" y=\"${checksTitleY}\" font-size=\"16\" font-weight=\"600\" fill=\"#0f172a\" font-family=\"DejaVu Sans, Liberation Sans, system-ui, sans-serif\">Checks</text>\n <rect x=\"${TABLE_X}\" y=\"${tableTop}\" width=\"${TABLE_W}\" height=\"${cardH}\" rx=\"10\" ry=\"10\" fill=\"#ffffff\" stroke=\"#e2e8f0\" stroke-width=\"1\"/>\n <g clip-path=\"url(#${checksClip})\">\n <rect x=\"${TABLE_X}\" y=\"${tableTop}\" width=\"${TABLE_W}\" height=\"${HEADER_H}\" fill=\"#f1f5f9\"/>\n ${headerCells\n .map(\n (c) =>\n `<text x=\"${c.x}\" y=\"${headerMid}\" font-size=\"11\" font-weight=\"600\" fill=\"#64748b\" letter-spacing=\"0.04em\" font-family=\"DejaVu Sans, Liberation Sans, system-ui, sans-serif\" text-anchor=\"${c.anchor}\">${c.label}</text>`,\n )\n .join('\\n ')}\n ${rowLines.join('\\n ')}\n ${gridLines.join('\\n ')}\n ${bodyCells.join('\\n ')}\n </g>\n</svg>`\n}\n\n/**\n * Renders Overview + Checks (same content as snapshot HTML) to PNG via resvg.\n * On Linux CI, install `fonts-dejavu-core` and/or `fonts-liberation` so text is not missing.\n */\nexport async function renderChecksSnapshotPng(\n pngPath: string,\n input: HtmlReportInput,\n): Promise<void> {\n const svg = buildChecksSnapshotSvg(input)\n const resvg = new Resvg(svg, {\n background: '#f8fafc',\n fitTo: { mode: 'width', value: W },\n font: resvgFontOptions(),\n })\n const img = resvg.render()\n const png = img.asPng()\n await writeFile(pngPath, png)\n\n const written = await readFile(pngPath)\n if (!isPngBuffer(written) || written.length < 200) {\n throw new Error(\n 'FrontGuard: checks PNG is missing or invalid after render. Install fonts on the runner (e.g. apt install fonts-dejavu-core fonts-liberation) and ensure @resvg/resvg-js native binary loads.',\n )\n }\n const { width, height } = img\n if (width < 16 || height < 16) {\n throw new Error(`FrontGuard: checks PNG has invalid dimensions ${width}x${height}.`)\n }\n}\n","import pc from 'picocolors'\nimport { formatStackOneLiner } from '../detect/stack.js'\nimport type { GuardMode } from '../config/schema.js'\nimport { stripRepoAbsolutePaths, toRepoRelativePath } from '../lib/repo-paths.js'\nimport type { CheckResult, Finding, PrContext, StackInfo } from '../types.js'\nimport { buildChecksSnapshotHtml, buildHtmlReport, type HtmlReportInput } from './html-report.js'\n\nexport interface FullReport {\n riskScore: 'LOW' | 'MEDIUM' | 'HIGH'\n stack: StackInfo\n pr: PrContext | null\n results: CheckResult[]\n markdown: string\n consoleText: string\n /** Present when {@link buildReport} was called with `emitHtml: true` */\n html: string | null\n /** Minimal HTML for the Checks table only (optional artifact / browser view). */\n checksSnapshotHtml: string | null\n /** Same data as the snapshot HTML; used to raster the table to PNG without a browser. */\n checksSnapshotInput: HtmlReportInput | null\n}\n\nexport function buildReport(\n stack: StackInfo,\n pr: PrContext | null,\n results: CheckResult[],\n options?: {\n mode?: GuardMode\n llmAppendix?: string | null\n cwd?: string\n emitHtml?: boolean\n /** When true, {@link FullReport.checksSnapshotHtml} is populated (for headless screenshot). */\n emitChecksSnapshot?: boolean\n },\n): FullReport {\n const mode = options?.mode ?? 'warn'\n const cwd = options?.cwd ?? process.cwd()\n const allFindings = results.flatMap((r) =>\n r.findings.map((f) => ({ ...f, checkId: r.checkId })),\n )\n const warns = allFindings.filter((f) => f.severity === 'warn').length\n const infos = allFindings.filter((f) => f.severity === 'info').length\n const blocks = allFindings.filter((f) => f.severity === 'block').length\n\n const lines = pr != null ? pr.additions + pr.deletions : null\n\n const riskScore = scoreRisk(blocks, warns, lines, pr?.changedFiles ?? 0)\n\n const markdown = formatMarkdown({\n cwd,\n riskScore,\n mode,\n stack,\n pr,\n results,\n warns,\n infos,\n blocks,\n lines,\n llmAppendix: options?.llmAppendix ?? null,\n })\n\n const consoleText = formatConsole({\n riskScore,\n mode,\n stack,\n pr,\n results,\n warns,\n infos,\n blocks,\n })\n\n const html =\n options?.emitHtml === true\n ? buildHtmlReport({\n cwd,\n riskScore,\n mode,\n stack,\n pr,\n results,\n warns,\n infos,\n blocks,\n lines,\n llmAppendix: options?.llmAppendix ?? null,\n })\n : null\n\n const llmAppendix = options?.llmAppendix ?? null\n const checksSnapshotInput: HtmlReportInput | null =\n options?.emitChecksSnapshot === true\n ? {\n cwd,\n riskScore,\n mode,\n stack,\n pr,\n results,\n warns,\n infos,\n blocks,\n lines,\n llmAppendix,\n }\n : null\n\n const checksSnapshotHtml =\n checksSnapshotInput != null ? buildChecksSnapshotHtml(checksSnapshotInput) : null\n\n return {\n riskScore,\n stack,\n pr,\n results,\n markdown,\n consoleText,\n html,\n checksSnapshotHtml,\n checksSnapshotInput,\n }\n}\n\nfunction scoreRisk(\n blocks: number,\n warns: number,\n lines: number | null,\n files: number,\n): FullReport['riskScore'] {\n let score = 0\n if (blocks > 0) score += 3\n if (warns >= 8) score += 2\n else if (warns >= 3) score += 1\n if (lines != null) {\n if (lines >= 800) score += 2\n else if (lines >= 400) score += 1\n }\n if (files >= 25) score += 1\n if (score >= 5) return 'HIGH'\n if (score >= 2) return 'MEDIUM'\n return 'LOW'\n}\n\n/**\n * Shields.io static badge via standard Markdown image syntax.\n * Bitbucket Cloud renders `` but does not allow raw HTML in PR comments.\n */\nfunction shieldImageUrl(label: string, message: string, color: string): string {\n const q = new URLSearchParams({\n label,\n message,\n color,\n style: 'for-the-badge',\n })\n return `https://img.shields.io/static/v1?${q}`\n}\n\nfunction mdShield(alt: string, label: string, message: string, color: string): string {\n return `})`\n}\n\nfunction riskEmoji(risk: FullReport['riskScore']): string {\n if (risk === 'LOW') return '🟢'\n if (risk === 'MEDIUM') return '🟠'\n return '🔴'\n}\n\nfunction riskShieldColor(risk: FullReport['riskScore']): string {\n if (risk === 'LOW') return 'brightgreen'\n if (risk === 'MEDIUM') return 'orange'\n return 'red'\n}\n\nfunction modeShieldColor(mode: GuardMode): string {\n return mode === 'enforce' ? 'critical' : 'blue'\n}\n\nfunction countShieldColor(kind: 'block' | 'warn' | 'info', n: number): string {\n if (kind === 'block') return n === 0 ? 'brightgreen' : 'critical'\n if (kind === 'info') return n === 0 ? 'inactive' : 'informational'\n if (n === 0) return 'brightgreen'\n if (n <= 10) return 'yellow'\n return 'orange'\n}\n\nfunction formatDuration(ms: number): string {\n if (ms < 1000) return `${ms} ms`\n const s = Math.round(ms / 1000)\n if (s < 60) return `${s}s`\n const m = Math.floor(s / 60)\n const r = s % 60\n return r ? `${m}m ${r}s` : `${m}m`\n}\n\nfunction healthEmojiForCheck(r: CheckResult): string {\n if (r.skipped) return '⏭️'\n if (r.findings.length === 0) return '🟢'\n const hasBlock = r.findings.some((f) => f.severity === 'block')\n if (hasBlock) return '🔴'\n return '🟡'\n}\n\nfunction normalizeFindingDisplay(\n cwd: string,\n f: Finding,\n): { file?: string; message: string; detail?: string } {\n const file = toRepoRelativePath(cwd, f.file)\n const message = stripRepoAbsolutePaths(cwd, f.message)\n const detail = f.detail ? stripRepoAbsolutePaths(cwd, f.detail) : undefined\n return { file, message, detail }\n}\n\n/** Fenced code block body: strip CI absolute paths; avoid breaking out of ``` fences. */\nfunction sanitizeFence(cwd: string, s: string): string {\n return stripRepoAbsolutePaths(cwd, s)\n .replace(/\\r\\n/g, '\\n')\n .replace(/```/g, '`\\u200b``')\n}\n\n/** One-line title for a finding; safe for Markdown (no HTML). */\nfunction findingTitleLine(file: string | undefined, message: string): string {\n const msg =\n message.length > 200 ? `${message.slice(0, 197).trimEnd()}…` : message\n const loc = file ? `\\`${file}\\`` : '_no file_'\n return `${loc} — ${msg}`\n}\n\nfunction parseLineHint(detail: string | undefined): number {\n if (!detail) return 0\n const m = /^line\\s+(\\d+)/i.exec(detail.trim())\n return m ? Number(m[1]) : 0\n}\n\n/** After metadata table: short one-line hint row, or fenced detail for long/multiline output. */\nfunction appendDetailAfterTable(\n sb: string[],\n cwd: string,\n detail: string | undefined,\n): void {\n if (!detail?.trim()) return\n const d = detail.trim()\n const oneLine = !d.includes('\\n')\n const safeForTable =\n oneLine && d.length <= 200 && !d.includes('|') && !d.includes('`')\n\n if (safeForTable) {\n sb.push(`| **Hint** | ${d} |`)\n return\n }\n\n sb.push('')\n sb.push('*Detail*')\n sb.push('')\n sb.push('```text')\n sb.push(sanitizeFence(cwd, d))\n sb.push('```')\n}\n\nfunction appendSuggestedFix(sb: string[], cwd: string, f: Finding): void {\n if (!f.suggestedFix) return\n sb.push('')\n sb.push('_Suggested fix (LLM — non-binding):_')\n sb.push('')\n sb.push(f.suggestedFix.summary)\n if (f.suggestedFix.code) {\n sb.push('')\n sb.push('```text')\n sb.push(sanitizeFence(cwd, f.suggestedFix.code))\n sb.push('```')\n }\n}\n\nfunction formatMarkdown(p: {\n cwd: string\n riskScore: FullReport['riskScore']\n mode: GuardMode\n stack: StackInfo\n pr: PrContext | null\n results: CheckResult[]\n warns: number\n infos: number\n blocks: number\n lines: number | null\n llmAppendix: string | null\n}): string {\n const {\n cwd,\n riskScore,\n mode,\n stack,\n pr,\n results,\n warns,\n infos,\n blocks,\n lines,\n llmAppendix,\n } = p\n const sb: string[] = []\n\n const sortWithCwd = (items: Array<{ r: CheckResult; f: Finding }>) =>\n [...items].sort((a, b) => {\n const af = toRepoRelativePath(cwd, a.f.file) ?? ''\n const bf = toRepoRelativePath(cwd, b.f.file) ?? ''\n if (af !== bf) return af.localeCompare(bf)\n const lineA = parseLineHint(a.f.detail)\n const lineB = parseLineHint(b.f.detail)\n if (lineA !== lineB) return lineA - lineB\n return a.f.message.localeCompare(b.f.message)\n })\n\n sb.push('## ✨ FrontGuard review brief')\n sb.push('')\n const modeLabel = mode === 'enforce' ? 'enforce' : 'warn only'\n const badgeLine = [\n mdShield('Risk level', 'risk', riskScore, riskShieldColor(riskScore)),\n mdShield('CI mode', 'mode', modeLabel, modeShieldColor(mode)),\n mdShield('Blocking', 'blocking', String(blocks), countShieldColor('block', blocks)),\n mdShield('Warnings', 'warnings', String(warns), countShieldColor('warn', warns)),\n mdShield('Info', 'info notes', String(infos), countShieldColor('info', infos)),\n ].join(' ')\n sb.push(badgeLine)\n sb.push('')\n sb.push('---')\n sb.push('')\n sb.push('### 📌 Snapshot')\n sb.push('')\n sb.push('| | |')\n sb.push('|:--|:--|')\n sb.push(`| **Composite risk** | ${riskEmoji(riskScore)} **${riskScore}** — heuristic from blocks, warnings, and PR size. |`)\n sb.push(\n `| **Gate mode** | ${mode === 'enforce' ? '🔒 **Enforce** — CI fails when a \\`block\\` finding is present.' : '🛈 **Warn only** — findings are advisory unless you use \\`--enforce\\`.'} |`,\n )\n sb.push(`| **Stack detected** | ${formatStackOneLiner(stack)} |`)\n if (pr && lines != null) {\n sb.push(\n `| **PR size** | 📏 **${lines}** LOC ( +${pr.additions} / −${pr.deletions} ) · **${pr.changedFiles}** files |`,\n )\n }\n sb.push('')\n if (pr?.aiAssisted) {\n sb.push(\n '> **🤖 AI-assisted PR** — Stricter static checks run on changed files (security / footguns; secrets & `any` deltas may escalate). This does not replace human review for behavior or product rules.',\n )\n sb.push('')\n }\n sb.push('> **How to read this report**')\n sb.push('>')\n sb.push('> | Symbol | Meaning |')\n sb.push('> |:--|:--|')\n sb.push('> | 🟢 | Check passed or skipped cleanly |')\n sb.push('> | 🟡 | Warnings only — review recommended |')\n sb.push('> | 🔴 | Blocking (`block`) severity present |')\n sb.push('> | ⏭️ | Check skipped (see reason in table) |')\n sb.push('>')\n sb.push(\n '> Paths in findings are **relative to the repo root**. Each issue below has a small field table and optional detail.',\n )\n sb.push('')\n sb.push('---')\n sb.push('')\n\n sb.push('### 📋 Check results')\n sb.push('')\n sb.push('| | Check | Status | Findings | Duration |')\n sb.push('|:--:|:--|:--|:-:|--:|')\n for (const r of results) {\n const he = healthEmojiForCheck(r)\n let status: string\n if (r.skipped) {\n const why = r.skipped.replace(/\\|/g, '\\\\|').replace(/\\s+/g, ' ').trim()\n const short = why.length > 120 ? `${why.slice(0, 117)}…` : why\n status = `⏭️ **Skipped** — ${short}`\n } else if (r.findings.length === 0) {\n status = '✅ **Clean**'\n } else {\n status = '⚠️ **Issues**'\n }\n const nFind = r.skipped ? '—' : String(r.findings.length)\n sb.push(\n `| ${he} | **${r.checkId}** | ${status} | **${nFind}** | ${formatDuration(r.durationMs)} |`,\n )\n }\n sb.push('')\n\n const blockFindings = sortWithCwd(\n results.flatMap((r) =>\n r.findings.filter((f) => f.severity === 'block').map((f) => ({ r, f })),\n ),\n )\n\n sb.push(`### 🛑 Blocking — ${blocks} issue${blocks === 1 ? '' : 's'}`)\n sb.push('')\n if (blockFindings.length === 0) {\n sb.push('*✅ No blocking findings — nothing mapped to severity `block`.*')\n } else {\n for (const { r, f } of blockFindings) {\n const d = normalizeFindingDisplay(cwd, f)\n sb.push('---')\n sb.push('')\n sb.push(`#### ${findingTitleLine(d.file, d.message)}`)\n sb.push('')\n sb.push(`| Field | Value |`)\n sb.push(`|:--|:--|`)\n sb.push(`| **Check** | \\`${r.checkId}\\` |`)\n sb.push(`| **Rule / id** | \\`${f.id}\\` |`)\n if (d.file) sb.push(`| **File** | \\`${d.file}\\` |`)\n appendDetailAfterTable(sb, cwd, d.detail)\n appendSuggestedFix(sb, cwd, f)\n sb.push('')\n }\n }\n sb.push('')\n\n const warnFindings = sortWithCwd(\n results.flatMap((r) =>\n r.findings.filter((f) => f.severity === 'warn').map((f) => ({ r, f })),\n ),\n )\n\n sb.push(\n `### ⚠️ Warnings — ${warns} issue${warns === 1 ? '' : 's'} (by check)`,\n )\n sb.push('')\n\n if (warnFindings.length === 0) {\n sb.push('*🎉 No warnings — nice work.*')\n } else {\n const byCheck = new Map<string, Array<{ r: CheckResult; f: Finding }>>()\n for (const item of warnFindings) {\n const list = byCheck.get(item.r.checkId) ?? []\n list.push(item)\n byCheck.set(item.r.checkId, list)\n }\n const checkOrder = [...byCheck.keys()].sort((a, b) => a.localeCompare(b))\n for (const checkId of checkOrder) {\n const group = sortWithCwd(byCheck.get(checkId)!)\n sb.push(`#### 📂 \\`${checkId}\\` · ${group.length} finding${group.length === 1 ? '' : 's'}`)\n sb.push('')\n for (const { r, f } of group) {\n const d = normalizeFindingDisplay(cwd, f)\n sb.push('---')\n sb.push('')\n sb.push(`##### ${findingTitleLine(d.file, d.message)}`)\n sb.push('')\n sb.push(`| Field | Value |`)\n sb.push(`|:--|:--|`)\n sb.push(`| **Check** | \\`${r.checkId}\\` |`)\n sb.push(`| **Rule / id** | \\`${f.id}\\` |`)\n if (d.file) sb.push(`| **File** | \\`${d.file}\\` |`)\n appendDetailAfterTable(sb, cwd, d.detail)\n appendSuggestedFix(sb, cwd, f)\n sb.push('')\n }\n }\n }\n\n sb.push('')\n\n const infoFindings = sortWithCwd(\n results.flatMap((r) =>\n r.findings.filter((f) => f.severity === 'info').map((f) => ({ r, f })),\n ),\n )\n\n sb.push(`### ℹ️ Info & notes — ${infos} item${infos === 1 ? '' : 's'}`)\n sb.push('')\n if (infoFindings.length === 0) {\n sb.push('*No info-level notes.*')\n } else {\n for (const { r, f } of infoFindings) {\n const d = normalizeFindingDisplay(cwd, f)\n sb.push('---')\n sb.push('')\n sb.push(`#### ${findingTitleLine(d.file, d.message)}`)\n sb.push('')\n sb.push(`| Field | Value |`)\n sb.push(`|:--|:--|`)\n sb.push(`| **Check** | \\`${r.checkId}\\` |`)\n sb.push(`| **Rule / id** | \\`${f.id}\\` |`)\n if (d.file) sb.push(`| **File** | \\`${d.file}\\` |`)\n appendDetailAfterTable(sb, cwd, d.detail)\n appendSuggestedFix(sb, cwd, f)\n sb.push('')\n }\n }\n sb.push('')\n\n if (llmAppendix?.trim()) {\n sb.push('### 🤖 AI / manual appendix')\n sb.push('')\n sb.push(llmAppendix.trim())\n sb.push('')\n }\n\n sb.push('---')\n sb.push('')\n sb.push(\n mdShield(\n 'Generated by',\n 'report',\n 'FrontGuard',\n 'blueviolet',\n ),\n )\n sb.push('')\n sb.push(\n '_Configure checks in `frontguard.config.js` · [Shields.io](https://shields.io) badge images load in Bitbucket PR comments (HTML tags like `<details>` are not supported there)._',\n )\n return sb.join('\\n')\n}\n\nfunction formatConsole(p: {\n riskScore: FullReport['riskScore']\n mode: GuardMode\n stack: StackInfo\n pr: PrContext | null\n results: CheckResult[]\n warns: number\n infos: number\n blocks: number\n}): string {\n const { riskScore, mode, stack, pr, results, warns, infos, blocks } = p\n const lines: string[] = []\n lines.push(pc.bold('┌─ FrontGuard review brief ─────────────────────────────┐'))\n lines.push(`│ ${pc.dim('Risk:')} ${riskScore.padEnd(43)} │`)\n lines.push(`│ ${pc.dim('Mode:')} ${mode.padEnd(42)} │`)\n lines.push(\n `│ ${pc.dim('Stack:')} ${(stack.hasNext ? 'Next.js ' : '') + (stack.hasReactNative ? 'RN ' : '') + (stack.hasReact ? 'React ' : '') + (stack.hasTypeScript ? 'TS' : 'JS')}`\n .padEnd(56)\n .slice(0, 56) + ' │',\n )\n if (pr) {\n const sz = `${pr.additions + pr.deletions} lines (+${pr.additions}/-${pr.deletions}) · ${pr.changedFiles} files`\n lines.push(`│ ${pc.dim('PR:')} ${sz.slice(0, 49).padEnd(49)} │`)\n }\n lines.push('│ ' + ''.padEnd(53) + ' │')\n const statusLine =\n blocks > 0\n ? pc.red(`✖ ${blocks} blocking`)\n : warns === 0 && infos === 0\n ? pc.green('✓ No findings')\n : pc.yellow(`⚠ ${warns} warnings · ${infos} info`)\n lines.push(`│ ${statusLine}`.padEnd(64).slice(0, 64) + ' │')\n for (const r of results) {\n const label = r.skipped\n ? pc.dim(` ${r.checkId}: skipped`)\n : ` ${r.checkId}: ${r.findings.length} issues`\n lines.push(`│${label.slice(0, 54).padEnd(54)}│`)\n }\n lines.push(pc.bold('└────────────────────────────────────────────────────────┘'))\n return lines.join('\\n')\n}\n","/** Escape text for HTML text nodes and attribute values. */\nexport function escapeHtml(s: string): string {\n return s\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n}\n","/**\n * Short explanations for HTML report tooltips (Checks table).\n * Keys must match each check’s `checkId`.\n */\nconst CHECK_DESCRIPTIONS: Record<string, string> = {\n eslint:\n 'Runs ESLint using your project config. Flags style, correctness, and framework-specific issues in the repo or PR-scoped files.',\n prettier:\n 'Checks that files match Prettier formatting. Catches unformatted edits so the codebase stays consistent.',\n typescript:\n 'Runs the TypeScript compiler (tsc --noEmit) on the project. Surfaces type errors before merge.',\n secrets:\n 'Scans changed files for patterns that look like leaked secrets (tokens, keys). Heuristic — review each hit.',\n cycles:\n 'Runs madge for circular dependencies on TypeScript/JavaScript entry points. Import cycles can cause brittle builds and load order bugs.',\n 'dead-code':\n 'Runs ts-prune to find unused exports in the TypeScript project. Helps trim dead surface area.',\n bundle:\n 'Measures total size of configured build artifacts (glob) and compares to a checked-in baseline. Flags large regressions in shipped JS/CSS.',\n 'core-web-vitals':\n 'Static hints in JSX/TSX related to Core Web Vitals (e.g. LCP-friendly images, main-thread hygiene). Not a substitute for real field metrics.',\n 'ai-assisted-strict':\n 'When the PR is AI-assisted or code is marked with @frontguard-ai decorators, scans those regions for risky patterns (eval, XSS sinks, etc.) and a few AST heuristics (e.g. discarded hot loops).',\n 'pr-hygiene':\n 'Validates PR metadata when CI provides PR context: description length, checklist items, and similar hygiene rules from config.',\n 'pr-size':\n 'Compares PR diff size (lines/files) against configured budgets to discourage oversized changes.',\n 'ts-any-delta':\n 'Diffs the branch against a base ref and counts newly added uses of the TypeScript any type. Helps stop gradual loss of type safety.',\n 'custom-rules':\n 'Runs optional file/content rules you define in FrontGuard config (regex or structured checks on paths). Skipped when no rules are configured.',\n}\n\nexport function getCheckDescription(checkId: string): string {\n return (\n CHECK_DESCRIPTIONS[checkId] ??\n `FrontGuard check \"${checkId}\". See your frontguard config and docs for behavior.`\n )\n}\n","import { formatStackOneLiner } from '../detect/stack.js'\nimport type { GuardMode } from '../config/schema.js'\nimport { escapeHtml } from '../lib/html-escape.js'\nimport { stripRepoAbsolutePaths, toRepoRelativePath } from '../lib/repo-paths.js'\nimport type { CheckResult, Finding, PrContext, StackInfo } from '../types.js'\nimport { getCheckDescription } from './check-descriptions.js'\n\nexport interface HtmlReportInput {\n cwd: string\n riskScore: 'LOW' | 'MEDIUM' | 'HIGH'\n mode: GuardMode\n stack: StackInfo\n pr: PrContext | null\n results: CheckResult[]\n warns: number\n infos: number\n blocks: number\n lines: number | null\n llmAppendix: string | null\n}\n\nfunction parseLineHint(detail: string | undefined): number {\n if (!detail) return 0\n const m = /^line\\s+(\\d+)/i.exec(detail.trim())\n return m ? Number(m[1]) : 0\n}\n\nfunction normalizeFinding(\n cwd: string,\n f: Finding,\n): { file?: string; message: string; detail?: string } {\n return {\n file: toRepoRelativePath(cwd, f.file),\n message: stripRepoAbsolutePaths(cwd, f.message),\n detail: f.detail ? stripRepoAbsolutePaths(cwd, f.detail) : undefined,\n }\n}\n\nfunction sortFindings(\n cwd: string,\n items: Array<{ r: CheckResult; f: Finding }>,\n): Array<{ r: CheckResult; f: Finding }> {\n return [...items].sort((a, b) => {\n const af = toRepoRelativePath(cwd, a.f.file) ?? ''\n const bf = toRepoRelativePath(cwd, b.f.file) ?? ''\n if (af !== bf) return af.localeCompare(bf)\n const lineA = parseLineHint(a.f.detail)\n const lineB = parseLineHint(b.f.detail)\n if (lineA !== lineB) return lineA - lineB\n return a.f.message.localeCompare(b.f.message)\n })\n}\n\nfunction formatDuration(ms: number): string {\n if (ms < 1000) return `${ms} ms`\n const s = Math.round(ms / 1000)\n if (s < 60) return `${s}s`\n const m = Math.floor(s / 60)\n const r = s % 60\n return r ? `${m}m ${r}s` : `${m}m`\n}\n\nfunction statusDot(r: CheckResult): string {\n if (r.skipped) return '<span class=\"dot dot-skip\" title=\"Skipped\"></span>'\n if (r.findings.length === 0) return '<span class=\"dot dot-ok\" title=\"Clean\"></span>'\n if (r.findings.some((x) => x.severity === 'block'))\n return '<span class=\"dot dot-block\" title=\"Blocking\"></span>'\n return '<span class=\"dot dot-warn\" title=\"Issues\"></span>'\n}\n\n/** Shared by full HTML report and {@link buildChecksSnapshotHtml} (keep in sync visually). */\nconst CHECKS_TABLE_STYLES = `\n table.results {\n width: 100%;\n border-collapse: collapse;\n font-size: 0.875rem;\n background: var(--surface);\n border-radius: var(--radius);\n overflow: hidden;\n border: 1px solid var(--border);\n box-shadow: var(--shadow);\n }\n table.results th, table.results td {\n padding: 0.55rem 0.85rem;\n text-align: left;\n border-bottom: 1px solid var(--border);\n }\n table.results tr:last-child td { border-bottom: none; }\n table.results thead th {\n background: #f1f5f9;\n color: var(--muted);\n font-weight: 600;\n font-size: 0.72rem;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n }\n .td-icon { width: 2rem; vertical-align: middle; }\n .td-check { vertical-align: middle; }\n .td-num, .td-time { color: var(--muted); font-variant-numeric: tabular-nums; }\n .check-title-cell {\n display: inline-flex;\n align-items: center;\n gap: 0.35rem;\n flex-wrap: nowrap;\n }\n .check-name { font-weight: 600; }\n .check-info-wrap {\n position: relative;\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n }\n .check-info {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 1.125rem;\n height: 1.125rem;\n padding: 0;\n margin: 0;\n border: 1px solid var(--border);\n border-radius: 50%;\n background: #f1f5f9;\n color: var(--muted);\n font-size: 0.62rem;\n font-weight: 700;\n font-style: normal;\n line-height: 1;\n cursor: help;\n flex-shrink: 0;\n }\n .check-info:hover,\n .check-info:focus-visible {\n border-color: var(--accent);\n color: var(--accent);\n background: var(--accent-soft);\n outline: none;\n }\n .check-tooltip {\n position: absolute;\n left: 50%;\n bottom: calc(100% + 8px);\n transform: translateX(-50%);\n min-width: 12rem;\n max-width: min(22rem, 86vw);\n padding: 0.55rem 0.65rem;\n background: var(--text);\n color: #f8fafc;\n font-size: 0.78rem;\n font-weight: 400;\n line-height: 1.45;\n border-radius: 6px;\n box-shadow: 0 4px 14px rgba(15, 23, 42, 0.18);\n z-index: 50;\n opacity: 0;\n visibility: hidden;\n pointer-events: none;\n transition: opacity 0.12s ease, visibility 0.12s ease;\n text-align: left;\n }\n .check-info-wrap:hover .check-tooltip,\n .check-info-wrap:focus-within .check-tooltip {\n opacity: 1;\n visibility: visible;\n }\n .check-tooltip::after {\n content: '';\n position: absolute;\n top: 100%;\n left: 50%;\n margin-left: -6px;\n border: 6px solid transparent;\n border-top-color: var(--text);\n }\n .dot {\n display: inline-block;\n width: 8px;\n height: 8px;\n border-radius: 50%;\n }\n .dot-ok { background: var(--ok); }\n .dot-warn { background: var(--warn); }\n .dot-block { background: var(--block); }\n .dot-skip { background: #cbd5e1; }\n`\n\n/** Overview table in PR snapshot HTML (matches {@link buildHtmlReport} Overview section). */\nconst SNAPSHOT_OVERVIEW_STYLES = `\n .snapshot {\n width: 100%;\n border-collapse: collapse;\n font-size: 0.9rem;\n background: var(--surface);\n border-radius: var(--radius);\n overflow: hidden;\n border: 1px solid var(--border);\n box-shadow: var(--shadow);\n margin: 0 0 1.25rem;\n }\n .snapshot th, .snapshot td {\n padding: 0.65rem 1rem;\n text-align: left;\n border-bottom: 1px solid var(--border);\n }\n .snapshot tr:last-child th, .snapshot tr:last-child td { border-bottom: none; }\n .snapshot th {\n width: 9rem;\n color: var(--muted);\n font-weight: 500;\n background: #f1f5f9;\n }\n .muted { color: var(--muted); }\n`\n\nexport function renderCheckTableRows(results: CheckResult[]): string {\n return results\n .map((r) => {\n const status = r.skipped\n ? `Skipped — ${escapeHtml(r.skipped)}`\n : r.findings.length === 0\n ? 'Pass'\n : `${r.findings.length} issue(s)`\n const help = escapeHtml(getCheckDescription(r.checkId))\n const ariaWhat = escapeHtml(`What does the ${r.checkId} check do?`)\n const checkTitle = `<span class=\"check-title-cell\"><strong class=\"check-name\">${escapeHtml(r.checkId)}</strong><span class=\"check-info-wrap\"><button type=\"button\" class=\"check-info\" title=\"${help}\" aria-label=\"${ariaWhat}\">i</button><span class=\"check-tooltip\" role=\"tooltip\">${help}</span></span></span>`\n return `<tr><td class=\"td-icon\">${statusDot(r)}</td><td class=\"td-check\">${checkTitle}</td><td class=\"td-status\">${status}</td><td class=\"td-num\">${r.skipped ? '—' : r.findings.length}</td><td class=\"td-time\">${formatDuration(r.durationMs)}</td></tr>`\n })\n .join('\\n')\n}\n\n/**\n * Self-contained HTML with the same **Overview** + **Checks** blocks as the full report (no Findings).\n * Used for artifacts and as the visual reference for the PR-comment PNG raster.\n */\nexport function buildChecksSnapshotHtml(p: HtmlReportInput): string {\n const { riskScore, mode, stack, pr, results, lines } = p\n const modeLabel = mode === 'enforce' ? 'Enforce' : 'Warn only'\n const riskClass =\n riskScore === 'LOW' ? 'risk-low' : riskScore === 'MEDIUM' ? 'risk-med' : 'risk-high'\n const checkRows = renderCheckTableRows(results)\n const prRow =\n pr && lines != null\n ? `<tr><th>Pull request</th><td>${lines} lines changed (+${pr.additions} / −${pr.deletions}) · ${pr.changedFiles} files</td></tr>`\n : ''\n return `<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <title>FrontGuard — Snapshot</title>\n <style>\n :root {\n --bg: #f8fafc;\n --surface: #ffffff;\n --text: #0f172a;\n --muted: #64748b;\n --border: #e2e8f0;\n --accent: #4f46e5;\n --accent-soft: #eef2ff;\n --block: #dc2626;\n --warn: #d97706;\n --info: #0284c7;\n --ok: #16a34a;\n --radius: 10px;\n --shadow: 0 1px 3px rgba(15, 23, 42, 0.06);\n }\n * { box-sizing: border-box; }\n body {\n margin: 0;\n padding: 1.25rem 1.5rem 1.5rem;\n font-family: ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", Roboto, sans-serif;\n background: var(--bg);\n color: var(--text);\n line-height: 1.55;\n font-size: 15px;\n max-width: 920px;\n }\n .brand {\n font-size: 0.75rem;\n font-weight: 600;\n letter-spacing: 0.12em;\n text-transform: uppercase;\n color: var(--muted);\n margin-bottom: 0.35rem;\n }\n .h2 {\n font-size: 1rem;\n font-weight: 600;\n margin: 0 0 0.85rem;\n color: var(--text);\n letter-spacing: -0.02em;\n }\n .risk-low { color: var(--ok); }\n .risk-med { color: var(--warn); }\n .risk-high { color: var(--block); }\n ${SNAPSHOT_OVERVIEW_STYLES}\n ${CHECKS_TABLE_STYLES}\n </style>\n</head>\n<body>\n <div class=\"brand\">FrontGuard</div>\n <h2 class=\"h2\">Overview</h2>\n <table class=\"snapshot\">\n <tr><th>Risk score</th><td><strong class=\"${riskClass}\">${riskScore}</strong> <span class=\"muted\">— heuristic</span></td></tr>\n <tr><th>Mode</th><td>${escapeHtml(modeLabel)}</td></tr>\n <tr><th>Stack</th><td>${escapeHtml(formatStackOneLiner(stack))}</td></tr>\n ${prRow}\n </table>\n <h2 class=\"h2\">Checks</h2>\n <table class=\"results\">\n <thead><tr><th></th><th>Check</th><th>Status</th><th>#</th><th>Time</th></tr></thead>\n <tbody>${checkRows}</tbody>\n </table>\n</body>\n</html>`\n}\n\nfunction renderFindingCard(cwd: string, r: CheckResult, f: Finding): string {\n const d = normalizeFinding(cwd, f)\n const sevClass =\n f.severity === 'block' ? 'sev-block' : f.severity === 'warn' ? 'sev-warn' : 'sev-info'\n\n const fixBlock = f.suggestedFix\n ? `<div class=\"suggested-fix\"><div class=\"fix-label\">Suggested fix <span class=\"pill pill-llm\">LLM</span></div><div class=\"fix-md\">${escapeHtml(f.suggestedFix.summary)}</div>${f.suggestedFix.code ? `<pre class=\"code\"><code>${escapeHtml(f.suggestedFix.code)}</code></pre>` : ''}<p class=\"disclaimer\">Suggestions are non-binding; review before applying.</p></div>`\n : ''\n\n const hintRow =\n d.detail && !d.detail.includes('\\n') && d.detail.length <= 220 && !d.detail.includes('|')\n ? `<tr><th>Hint</th><td>${escapeHtml(d.detail)}</td></tr>`\n : ''\n\n const detailFence =\n d.detail && (d.detail.includes('\\n') || d.detail.length > 220 || d.detail.includes('|'))\n ? `<pre class=\"code\"><code>${escapeHtml(d.detail)}</code></pre>`\n : ''\n\n return `<article class=\"card ${sevClass}\"><div class=\"card-title\">${escapeHtml(d.file ?? '—')}</div><p class=\"card-msg\">${escapeHtml(d.message)}</p><table class=\"meta\"><tr><th>Check</th><td><code>${escapeHtml(r.checkId)}</code></td></tr><tr><th>Rule</th><td><code>${escapeHtml(f.id)}</code></td></tr>${d.file ? `<tr><th>File</th><td><code>${escapeHtml(d.file)}</code></td></tr>` : ''}${hintRow}</table>${detailFence}${fixBlock}</article>`\n}\n\nexport function buildHtmlReport(p: HtmlReportInput): string {\n const {\n cwd,\n riskScore,\n mode,\n stack,\n pr,\n results,\n warns,\n infos,\n blocks,\n lines,\n llmAppendix,\n } = p\n\n const modeLabel = mode === 'enforce' ? 'Enforce' : 'Warn only'\n const riskClass =\n riskScore === 'LOW' ? 'risk-low' : riskScore === 'MEDIUM' ? 'risk-med' : 'risk-high'\n\n const checkRows = renderCheckTableRows(results)\n\n const blockItems = sortFindings(\n cwd,\n results.flatMap((r) =>\n r.findings.filter((f) => f.severity === 'block').map((f) => ({ r, f })),\n ),\n )\n const warnItems = sortFindings(\n cwd,\n results.flatMap((r) =>\n r.findings.filter((f) => f.severity === 'warn').map((f) => ({ r, f })),\n ),\n )\n const infoItems = sortFindings(\n cwd,\n results.flatMap((r) =>\n r.findings.filter((f) => f.severity === 'info').map((f) => ({ r, f })),\n ),\n )\n\n const byCheck = new Map<string, Array<{ r: CheckResult; f: Finding }>>()\n for (const item of warnItems) {\n const list = byCheck.get(item.r.checkId) ?? []\n list.push(item)\n byCheck.set(item.r.checkId, list)\n }\n const checkOrder = [...byCheck.keys()].sort((a, b) => a.localeCompare(b))\n\n const blockingHtml =\n blockItems.length === 0\n ? '<p class=\"empty-state\">No blocking findings.</p>'\n : blockItems.map(({ r, f }) => renderFindingCard(cwd, r, f)).join('\\n')\n\n let warningsHtml = ''\n if (warnItems.length === 0) {\n warningsHtml = '<p class=\"empty-state\">No warnings.</p>'\n } else {\n for (const cid of checkOrder) {\n const group = sortFindings(cwd, byCheck.get(cid)!)\n const cards = group.map(({ r, f }) => renderFindingCard(cwd, r, f)).join('\\n')\n warningsHtml += `<details class=\"panel nested\"><summary><span class=\"summary-title\">${escapeHtml(cid)}</span><span class=\"summary-count\">${group.length}</span></summary><div class=\"panel-body\">${cards}</div></details>`\n }\n }\n\n const infoHtml =\n infoItems.length === 0\n ? '<p class=\"empty-state muted\">No info notes.</p>'\n : infoItems.map(({ r, f }) => renderFindingCard(cwd, r, f)).join('\\n')\n\n const prBlock =\n pr && lines != null\n ? `<tr><th>Pull request</th><td>${lines} lines changed (+${pr.additions} / −${pr.deletions}) · ${pr.changedFiles} files</td></tr>`\n : ''\n\n const appendix = llmAppendix?.trim()\n ? `<section class=\"section\"><h2 class=\"h2\">Appendix</h2><pre class=\"md-raw\">${escapeHtml(llmAppendix.trim())}</pre></section>`\n : ''\n\n return `<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <title>FrontGuard — Report</title>\n <style>\n :root {\n --bg: #f8fafc;\n --surface: #ffffff;\n --text: #0f172a;\n --muted: #64748b;\n --border: #e2e8f0;\n --accent: #4f46e5;\n --accent-soft: #eef2ff;\n --block: #dc2626;\n --warn: #d97706;\n --info: #0284c7;\n --ok: #16a34a;\n --radius: 10px;\n --shadow: 0 1px 3px rgba(15, 23, 42, 0.06);\n }\n * { box-sizing: border-box; }\n body {\n margin: 0;\n font-family: ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", Roboto, sans-serif;\n background: var(--bg);\n color: var(--text);\n line-height: 1.55;\n font-size: 15px;\n padding: 2rem clamp(1rem, 4vw, 3rem) 4rem;\n max-width: 920px;\n margin-left: auto;\n margin-right: auto;\n }\n .hero {\n margin-bottom: 2rem;\n }\n .brand {\n font-size: 0.75rem;\n font-weight: 600;\n letter-spacing: 0.12em;\n text-transform: uppercase;\n color: var(--muted);\n margin-bottom: 0.35rem;\n }\n h1 {\n font-size: 1.75rem;\n font-weight: 700;\n letter-spacing: -0.03em;\n margin: 0 0 1rem;\n color: var(--text);\n }\n .metrics {\n display: flex;\n flex-wrap: wrap;\n gap: 0.65rem;\n margin-bottom: 0.5rem;\n }\n .metric {\n background: var(--surface);\n border: 1px solid var(--border);\n border-radius: var(--radius);\n padding: 0.5rem 0.9rem;\n box-shadow: var(--shadow);\n display: flex;\n align-items: center;\n gap: 0.5rem;\n }\n .metric-label { font-size: 0.72rem; color: var(--muted); text-transform: uppercase; letter-spacing: 0.04em; }\n .metric-value { font-weight: 600; font-size: 0.95rem; }\n .risk-low { color: var(--ok); }\n .risk-med { color: var(--warn); }\n .risk-high { color: var(--block); }\n .section { margin-top: 2.25rem; }\n .h2 {\n font-size: 1rem;\n font-weight: 600;\n margin: 0 0 0.85rem;\n color: var(--text);\n letter-spacing: -0.02em;\n }\n .snapshot {\n width: 100%;\n border-collapse: collapse;\n font-size: 0.9rem;\n background: var(--surface);\n border-radius: var(--radius);\n overflow: hidden;\n border: 1px solid var(--border);\n box-shadow: var(--shadow);\n }\n .snapshot th, .snapshot td {\n padding: 0.65rem 1rem;\n text-align: left;\n border-bottom: 1px solid var(--border);\n }\n .snapshot tr:last-child th, .snapshot tr:last-child td { border-bottom: none; }\n .snapshot th {\n width: 9rem;\n color: var(--muted);\n font-weight: 500;\n background: #f1f5f9;\n }\n ${CHECKS_TABLE_STYLES}\n .panel {\n background: var(--surface);\n border: 1px solid var(--border);\n border-radius: var(--radius);\n margin-bottom: 0.65rem;\n box-shadow: var(--shadow);\n }\n .panel summary {\n cursor: pointer;\n padding: 0.85rem 1rem;\n list-style: none;\n display: flex;\n align-items: center;\n justify-content: space-between;\n font-weight: 600;\n font-size: 0.9rem;\n }\n .panel summary::-webkit-details-marker { display: none; }\n .panel[open] summary { border-bottom: 1px solid var(--border); }\n .panel-body { padding: 0.75rem 1rem 1rem; }\n .nested summary { font-weight: 500; color: var(--warn); }\n .summary-count {\n font-size: 0.8rem;\n font-weight: 500;\n color: var(--muted);\n background: #f1f5f9;\n padding: 0.15rem 0.5rem;\n border-radius: 999px;\n }\n .card {\n border: 1px solid var(--border);\n border-radius: 8px;\n padding: 1rem;\n margin-bottom: 0.65rem;\n background: #fafafa;\n }\n .card:last-child { margin-bottom: 0; }\n .card.sev-block { border-left: 3px solid var(--block); }\n .card.sev-warn { border-left: 3px solid var(--warn); }\n .card.sev-info { border-left: 3px solid var(--info); }\n .card-title { font-size: 0.8rem; font-weight: 600; color: var(--muted); margin-bottom: 0.35rem; }\n .card-msg { margin: 0 0 0.65rem; font-size: 0.9rem; }\n table.meta { width: 100%; font-size: 0.78rem; border-collapse: collapse; margin: 0.35rem 0 0; }\n table.meta th { text-align: left; color: var(--muted); width: 4.5rem; padding: 0.2rem 0.5rem 0.2rem 0; vertical-align: top; }\n table.meta td { padding: 0.2rem 0; }\n table.meta code { font-size: 0.85em; background: #f1f5f9; padding: 0.1rem 0.35rem; border-radius: 4px; }\n .muted { color: var(--muted); }\n .empty-state { margin: 0; font-size: 0.9rem; color: var(--muted); }\n pre.code {\n margin: 0.5rem 0 0;\n padding: 0.75rem;\n background: #f1f5f9;\n border-radius: 6px;\n overflow: auto;\n font-size: 0.78rem;\n border: 1px solid var(--border);\n }\n pre.code code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; white-space: pre; }\n .suggested-fix { margin-top: 0.75rem; padding-top: 0.75rem; border-top: 1px dashed var(--border); }\n .fix-label { font-size: 0.7rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; color: var(--accent); margin-bottom: 0.35rem; }\n .pill-llm { background: var(--accent-soft); color: var(--accent); padding: 0.1rem 0.4rem; border-radius: 4px; font-size: 0.65rem; }\n .fix-md { font-size: 0.85rem; white-space: pre-wrap; margin: 0.25rem 0 0.5rem; }\n .disclaimer { font-size: 0.72rem; color: var(--muted); margin: 0.5rem 0 0; }\n pre.md-raw {\n white-space: pre-wrap;\n font-size: 0.85rem;\n background: var(--surface);\n padding: 1rem;\n border-radius: var(--radius);\n border: 1px solid var(--border);\n margin: 0;\n }\n footer {\n margin-top: 3rem;\n padding-top: 1.25rem;\n border-top: 1px solid var(--border);\n font-size: 0.8rem;\n color: var(--muted);\n }\n footer a { color: var(--accent); text-decoration: none; }\n footer a:hover { text-decoration: underline; }\n </style>\n</head>\n<body>\n <header class=\"hero\">\n <div class=\"brand\">FrontGuard</div>\n <h1>Code review report</h1>\n <div class=\"metrics\">\n <div class=\"metric\"><span class=\"metric-label\">Risk</span><span class=\"metric-value ${riskClass}\">${riskScore}</span></div>\n <div class=\"metric\"><span class=\"metric-label\">Mode</span><span class=\"metric-value\">${escapeHtml(modeLabel)}</span></div>\n <div class=\"metric\"><span class=\"metric-label\">Blocking</span><span class=\"metric-value\">${blocks}</span></div>\n <div class=\"metric\"><span class=\"metric-label\">Warnings</span><span class=\"metric-value\">${warns}</span></div>\n <div class=\"metric\"><span class=\"metric-label\">Info</span><span class=\"metric-value\">${infos}</span></div>\n </div>\n </header>\n\n <section class=\"section\">\n <h2 class=\"h2\">Overview</h2>\n <table class=\"snapshot\">\n <tr><th>Risk score</th><td><strong>${riskScore}</strong> <span class=\"muted\">— heuristic</span></td></tr>\n <tr><th>Mode</th><td>${escapeHtml(modeLabel)}</td></tr>\n <tr><th>Stack</th><td>${escapeHtml(formatStackOneLiner(stack))}</td></tr>\n ${prBlock}\n </table>\n </section>\n\n <section class=\"section\">\n <h2 class=\"h2\">Checks</h2>\n <table class=\"results\">\n <thead><tr><th></th><th>Check</th><th>Status</th><th>#</th><th>Time</th></tr></thead>\n <tbody>${checkRows}</tbody>\n </table>\n </section>\n\n <section class=\"section\">\n <h2 class=\"h2\">Findings</h2>\n <details class=\"panel\"><summary>Blocking <span class=\"summary-count\">${blocks}</span></summary><div class=\"panel-body\">${blockingHtml}</div></details>\n <details class=\"panel\"><summary>Warnings <span class=\"summary-count\">${warns}</span></summary><div class=\"panel-body\">${warningsHtml}</div></details>\n <details class=\"panel\"><summary>Info <span class=\"summary-count\">${infos}</span></summary><div class=\"panel-body\">${infoHtml}</div></details>\n </section>\n\n ${appendix}\n\n <footer>\n <p>Static report — open in any browser. Generated by <strong>FrontGuard</strong>.</p>\n </footer>\n</body>\n</html>`\n}\n","/**\n * Use the runtime's built-in Fetch (Node 18+). Bundling `undici` breaks ESM output\n * (dynamic `require(\"assert\")` inside undici).\n */\nexport function getFetch(): typeof globalThis.fetch {\n const f = globalThis.fetch\n if (typeof f !== 'function') {\n throw new Error(\n 'FrontGuard needs Node.js 18+ (global fetch). Use NODE_VERSION / image >= 18 in CI.',\n )\n }\n return f\n}\n","import { getFetch } from '../lib/http-fetch.js'\n\nexport async function callOllamaChat(opts: {\n baseUrl: string\n model: string\n prompt: string\n timeoutMs: number\n}): Promise<string> {\n const fetch = getFetch()\n const base = opts.baseUrl.replace(/\\/$/, '')\n const controller = new AbortController()\n const t = setTimeout(() => controller.abort(), opts.timeoutMs)\n try {\n const res = await fetch(`${base}/api/chat`, {\n method: 'POST',\n signal: controller.signal,\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n model: opts.model,\n messages: [{ role: 'user', content: opts.prompt }],\n stream: false,\n options: { temperature: 0.2 },\n }),\n })\n if (!res.ok) {\n const body = await res.text()\n throw new Error(`Ollama HTTP ${res.status}: ${body.slice(0, 400)}`)\n }\n const data = (await res.json()) as { message?: { content?: string } }\n const text = data.message?.content?.trim()\n if (!text) throw new Error('Ollama returned empty content')\n return text\n } finally {\n clearTimeout(t)\n }\n}\n","import fs from 'node:fs/promises'\nimport path from 'node:path'\nimport { formatStackOneLiner } from '../detect/stack.js'\nimport type { FrontGuardConfig } from '../config/schema.js'\nimport type { CheckResult, StackInfo } from '../types.js'\nimport { callOllamaChat } from './ollama.js'\n\nasync function safeReadRepoFile(\n cwd: string,\n rel: string,\n maxChars: number,\n): Promise<string | null> {\n const root = path.resolve(cwd)\n const abs = path.resolve(root, rel)\n const relToRoot = path.relative(root, abs)\n if (relToRoot.startsWith('..') || path.isAbsolute(relToRoot)) return null\n try {\n let t = await fs.readFile(abs, 'utf8')\n if (t.length > maxChars) {\n t =\n t.slice(0, maxChars) +\n `\\n\\n/* … truncated after ${maxChars} chars (FrontGuard context limit) … */\\n`\n }\n return t\n } catch {\n return null\n }\n}\n\nfunction parseFixResponse(raw: string): { summary: string; code?: string } {\n const codeMatch = /```(?:\\w+)?\\n([\\s\\S]*?)```/m.exec(raw)\n const code = codeMatch?.[1]?.trim()\n let summary = codeMatch ? raw.replace(codeMatch[0], '').trim() : raw.trim()\n summary = summary.replace(/^#{1,6}\\s+Fix\\s*$/m, '').trim()\n return { summary: summary || raw.trim(), code }\n}\n\nexport async function enrichFindingsWithOllamaFixes(opts: {\n cwd: string\n config: FrontGuardConfig\n stack: StackInfo\n results: CheckResult[]\n}): Promise<CheckResult[]> {\n const { cwd, config, stack, results } = opts\n const cfg = config.checks.llm\n if (!cfg.enabled || cfg.provider !== 'ollama' || !cfg.perFindingFixes) {\n return results\n }\n\n let pkgSnippet = ''\n try {\n const pj = await fs.readFile(path.join(cwd, 'package.json'), 'utf8')\n pkgSnippet = pj.slice(0, 4000)\n } catch {\n pkgSnippet = ''\n }\n\n const stackLabel = formatStackOneLiner(stack)\n\n const out: CheckResult[] = results.map((r) => ({\n ...r,\n findings: r.findings.map((f) => ({ ...f })),\n }))\n\n let budget = cfg.maxFixSuggestions\n\n for (let ri = 0; ri < out.length && budget > 0; ri++) {\n const r = out[ri]\n for (let fi = 0; fi < r.findings.length && budget > 0; fi++) {\n const f = r.findings[fi]\n if (f.severity !== 'warn' && f.severity !== 'block') continue\n if (!f.file) continue\n\n budget -= 1\n const fileContent = await safeReadRepoFile(\n cwd,\n f.file,\n cfg.maxFileContextChars,\n )\n\n const prompt = [\n 'You are a senior frontend engineer. A static checker flagged an issue in a pull request.',\n 'Use ONLY the repo context below (stack summary, package.json excerpt, file content).',\n 'If context is insufficient, say what is missing instead of guessing.',\n '',\n 'Reply in Markdown with exactly these sections:',\n '### Why',\n '(1–3 short sentences: root cause and product/engineering risk.)',\n '### Fix',\n '(Minimal, concrete change. Put code in a single fenced block with a language tag, e.g. ```ts)',\n '',\n `Repo stack: ${stackLabel}`,\n '',\n 'package.json excerpt:',\n '```json',\n pkgSnippet || '{}',\n '```',\n '',\n `check: ${r.checkId}`,\n `rule/id: ${f.id}`,\n `severity: ${f.severity}`,\n `message: ${f.message}`,\n f.detail ? `detail: ${f.detail}` : '',\n '',\n f.file ? `file (repo-relative): ${f.file}` : '',\n '',\n fileContent\n ? 'File content:\\n```\\n' + fileContent + '\\n```'\n : '_No file content could be read (binary or path issue)._',\n ]\n .filter(Boolean)\n .join('\\n')\n\n try {\n const raw = await callOllamaChat({\n baseUrl: cfg.ollamaUrl,\n model: cfg.model,\n prompt,\n timeoutMs: Math.min(cfg.timeoutMs, 120_000),\n })\n const parsed = parseFixResponse(raw)\n r.findings[fi] = {\n ...f,\n suggestedFix: {\n summary: parsed.summary,\n ...(parsed.code ? { code: parsed.code } : {}),\n },\n }\n } catch {\n r.findings[fi] = {\n ...f,\n suggestedFix: {\n summary:\n '_Could not reach Ollama or the model timed out. Is `ollama serve` running and `checks.llm.model` installed?_',\n },\n }\n }\n }\n }\n\n return out\n}\n","import fs from 'node:fs/promises'\nimport path from 'node:path'\n\nconst MAX_CHARS = 200_000\n\n/**\n * Human-in-the-loop review text: paste output from IDE chat, ChatGPT, Claude, etc.\n * No API keys — suitable for enterprise CI that cannot store LLM secrets.\n */\nexport async function loadManualAppendix(opts: {\n cwd: string\n /** From CLI `--append` */\n filePath?: string | null\n}): Promise<string | null> {\n const { cwd, filePath } = opts\n\n const envFile = process.env.FRONTGUARD_MANUAL_APPENDIX_FILE?.trim()\n const resolvedPath = filePath?.trim() || envFile\n if (resolvedPath) {\n const abs = path.isAbsolute(resolvedPath)\n ? resolvedPath\n : path.join(cwd, resolvedPath)\n try {\n let text = await fs.readFile(abs, 'utf8')\n if (text.length > MAX_CHARS) {\n text = text.slice(0, MAX_CHARS) + '\\n\\n_(truncated)_\\n'\n }\n const t = text.trim()\n if (t) {\n return `### Contributed review notes\\n\\n_Pasted or file-based (no CI API key)._ \\n\\n${t}`\n }\n } catch {\n /* missing file is OK */\n }\n }\n\n const inline = process.env.FRONTGUARD_MANUAL_APPENDIX?.trim()\n if (inline) {\n let text = inline\n if (text.length > MAX_CHARS) {\n text = text.slice(0, MAX_CHARS) + '\\n\\n_(truncated)_\\n'\n }\n return `### Contributed review notes\\n\\n${text.trim()}`\n }\n\n return null\n}\n","import type { FrontGuardConfig } from '../config/schema.js'\nimport { getFetch } from '../lib/http-fetch.js'\nimport type { CheckResult, PrContext } from '../types.js'\nimport { gitDiffForReview, gitOk, resolveDiffBaseRef } from '../runner/git.js'\nimport { callOllamaChat } from './ollama.js'\n\nfunction safeGetEnv(name: string): string | undefined {\n const v = process.env[name]\n return v && v.trim() ? v : undefined\n}\n\nexport async function runLlmReview(opts: {\n cwd: string\n config: FrontGuardConfig\n pr: PrContext | null\n results: CheckResult[]\n}): Promise<string | null> {\n const { cwd, config, pr, results } = opts\n const cfg = config.checks.llm\n if (!cfg.enabled) return null\n\n if (cfg.provider !== 'ollama') {\n const apiKey = safeGetEnv(cfg.apiKeyEnv)\n if (!apiKey) {\n if (process.env.FRONTGUARD_LLM_SHOW_NO_KEY_HINT !== '1') {\n return null\n }\n return [\n '### AI review (automated CI)',\n '',\n '_No API key in this environment._ IDE credentials do not reach CI runners.',\n '',\n '**Options:**',\n '1. **Manual** — Paste notes into a file, then `frontguard run --append ./notes.md` (or `FRONTGUARD_MANUAL_APPENDIX_FILE`).',\n `2. **Org CI** — Map an approved inference key to \\`${cfg.apiKeyEnv}\\` via your secret store.`,\n '3. **Local Ollama** — Set `checks.llm.provider` to `\"ollama\"` (no API key; see docs).',\n ].join('\\n')\n }\n }\n\n if (!(await gitOk(cwd))) {\n return '_LLM review skipped: not a git repository_'\n }\n\n const base = await resolveDiffBaseRef(cwd, config.checks.tsAnyDelta.baseRef)\n const diff = await gitDiffForReview(cwd, base, cfg.maxDiffChars)\n if (!diff.trim()) {\n return '_LLM review skipped: empty diff vs base_'\n }\n\n const summaryLines = results\n .flatMap((r) => r.findings.map((f) => `- [${f.severity}] ${r.checkId}: ${f.message}`))\n .slice(0, 40)\n .join('\\n')\n\n const prompt = [\n 'You are a senior frontend reviewer. Respond in Markdown with short sections:',\n '### Summary',\n '### Risk hotspots (files / themes)',\n '### Logic / correctness smells',\n '### Tests & regressions',\n '',\n 'Constraints:',\n '- Be specific to this diff; avoid generic advice.',\n '- If uncertain, say what you need to verify manually.',\n '',\n pr\n ? `PR title: ${pr.title}\\nPR body excerpt:\\n${pr.body.slice(0, 2000)}`\n : 'No PR context from the event payload (local run).',\n '',\n 'Existing automated findings (may be incomplete):',\n summaryLines || '(none)',\n '',\n 'Git diff (may be truncated):',\n '```diff',\n diff,\n '```',\n ].join('\\n')\n\n if (cfg.provider === 'ollama') {\n try {\n const text = await callOllamaChat({\n baseUrl: cfg.ollamaUrl,\n model: cfg.model,\n prompt,\n timeoutMs: cfg.timeoutMs,\n })\n return `### AI review (non-binding, Ollama)\\n\\n${text}`\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e)\n return `_Ollama request failed: ${msg}_`\n }\n }\n\n const apiKey = safeGetEnv(cfg.apiKeyEnv)!\n const controller = new AbortController()\n const t = setTimeout(() => controller.abort(), cfg.timeoutMs)\n\n try {\n if (cfg.provider === 'anthropic') {\n const text = await callAnthropic(cfg.model, apiKey, prompt, controller.signal)\n return `### AI review (non-binding)\\n\\n${text}`\n }\n const text = await callOpenAI(cfg.model, apiKey, prompt, controller.signal)\n return `### AI review (non-binding)\\n\\n${text}`\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e)\n return `_LLM request failed: ${msg}_`\n } finally {\n clearTimeout(t)\n }\n}\n\nasync function callOpenAI(\n model: string,\n apiKey: string,\n prompt: string,\n signal: AbortSignal,\n): Promise<string> {\n const fetch = getFetch()\n const res = await fetch('https://api.openai.com/v1/chat/completions', {\n method: 'POST',\n signal,\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${apiKey}`,\n },\n body: JSON.stringify({\n model,\n temperature: 0.2,\n messages: [\n {\n role: 'system',\n content:\n 'You audit frontend pull requests. Output concise Markdown. No preamble about being an AI.',\n },\n { role: 'user', content: prompt },\n ],\n }),\n })\n\n if (!res.ok) {\n const t = await res.text()\n throw new Error(`OpenAI HTTP ${res.status}: ${t.slice(0, 500)}`)\n }\n\n const data = (await res.json()) as {\n choices?: Array<{ message?: { content?: string } }>\n }\n const text = data.choices?.[0]?.message?.content?.trim()\n if (!text) throw new Error('OpenAI returned empty content')\n return text\n}\n\nasync function callAnthropic(\n model: string,\n apiKey: string,\n prompt: string,\n signal: AbortSignal,\n): Promise<string> {\n const fetch = getFetch()\n const res = await fetch('https://api.anthropic.com/v1/messages', {\n method: 'POST',\n signal,\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-key': apiKey,\n 'anthropic-version': '2023-06-01',\n },\n body: JSON.stringify({\n model,\n max_tokens: 4096,\n temperature: 0.2,\n messages: [{ role: 'user', content: prompt }],\n }),\n })\n\n if (!res.ok) {\n const t = await res.text()\n throw new Error(`Anthropic HTTP ${res.status}: ${t.slice(0, 500)}`)\n }\n\n const data = (await res.json()) as {\n content?: Array<{ type?: string; text?: string }>\n }\n const text = data.content\n ?.map((b) => (b.type === 'text' ? b.text : ''))\n .join('')\n .trim()\n\n if (!text) throw new Error('Anthropic returned empty content')\n return text\n}\n","import fs from 'node:fs/promises'\nimport path from 'node:path'\nimport process from 'node:process'\nimport { formatBitbucketPrSnippet } from '../ci/bitbucket-pr-snippet.js'\nimport { readPrContext } from '../ci/pr-context.js'\nimport { loadConfig } from '../config/load.js'\nimport { detectStack } from '../detect/stack.js'\nimport { runEslint } from '../checks/eslint.js'\nimport { runPrettier } from '../checks/prettier.js'\nimport { runTypeScript } from '../checks/typescript.js'\nimport { runSecrets } from '../checks/secrets.js'\nimport { runPrHygiene } from '../checks/pr-hygiene.js'\nimport { runPrSize } from '../checks/pr-size.js'\nimport { runTsAnyDelta } from '../checks/ts-any-delta.js'\nimport { runCycles } from '../checks/cycles.js'\nimport { runDeadCode } from '../checks/dead-code.js'\nimport { runBundle } from '../checks/bundle.js'\nimport { runCoreWebVitals } from '../checks/core-web-vitals.js'\nimport { runCustomRules } from '../checks/custom-rules.js'\nimport { runAiAssistedStrict } from '../checks/ai-assisted-strict.js'\nimport { applyAiAssistedEscalation } from '../runner/ai-escalation.js'\nimport { renderChecksSnapshotPng } from '../runner/checks-snapshot-png.js'\nimport { buildReport } from '../report/builder.js'\nimport { enrichFindingsWithOllamaFixes } from '../llm/finding-fixes.js'\nimport { loadManualAppendix } from '../llm/manual-appendix.js'\nimport { runLlmReview } from '../llm/review.js'\nimport type { GuardMode } from '../config/schema.js'\nimport type { CheckResult } from '../types.js'\n\nexport interface RunOptions {\n cwd: string\n markdown: boolean\n /** Force failing CI when `block` findings exist */\n enforce?: boolean\n /** Markdown file to append (e.g. paste from IDE chat / external LLM) */\n append?: string | null\n /** Write a self-contained HTML report (rich UI; link from PR comments) */\n htmlOut?: string | null\n /** Write HTML containing only the Checks table (screenshot for PR comments; see FRONTGUARD_CHECKS_IMAGE_URL) */\n checksSnapshotOut?: string | null\n /** Write PNG of the checks snapshot (SVG → PNG via resvg; no browser). Implies building the snapshot HTML. */\n checksPngOut?: string | null\n /** Short Markdown for Bitbucket PR comment when posting HTML as an artifact */\n prCommentOut?: string | null\n}\n\nexport async function runFrontGuard(opts: RunOptions): Promise<void> {\n const config = await loadConfig(opts.cwd)\n const mode: GuardMode = opts.enforce ? 'enforce' : config.mode\n\n const stack = await detectStack(opts.cwd)\n const pr = readPrContext(opts.cwd)\n\n const restrictFiles = pr?.files?.length ? pr.files : null\n\n const [\n eslint,\n prettier,\n typescript,\n secrets,\n cycles,\n deadCode,\n coreWebVitals,\n tsAnyDelta,\n customRules,\n aiStrict,\n ] = await Promise.all([\n runEslint(opts.cwd, config, stack, pr),\n runPrettier(opts.cwd, config, pr),\n runTypeScript(opts.cwd, config, stack, pr),\n runSecrets(opts.cwd, config, pr),\n runCycles(opts.cwd, config, stack, pr),\n runDeadCode(opts.cwd, config, stack, pr),\n runCoreWebVitals(opts.cwd, config, stack, pr),\n runTsAnyDelta(opts.cwd, config, stack),\n runCustomRules(opts.cwd, config, restrictFiles),\n runAiAssistedStrict(opts.cwd, config, pr),\n ])\n\n const bundle = await runBundle(opts.cwd, config, stack)\n\n const prHygiene = runPrHygiene(config, pr)\n const prSize = runPrSize(config, pr)\n\n let results: CheckResult[] = [\n eslint,\n prettier,\n typescript,\n secrets,\n cycles,\n deadCode,\n bundle,\n coreWebVitals,\n aiStrict,\n prHygiene,\n prSize,\n tsAnyDelta,\n customRules,\n ]\n\n applyAiAssistedEscalation(results, pr, config)\n\n results = await enrichFindingsWithOllamaFixes({\n cwd: opts.cwd,\n config,\n stack,\n results,\n })\n\n const manualAppendix = await loadManualAppendix({\n cwd: opts.cwd,\n filePath: opts.append ?? null,\n })\n const automatedAppendix = await runLlmReview({\n cwd: opts.cwd,\n config,\n pr,\n results,\n })\n const llmAppendix =\n [manualAppendix, automatedAppendix].filter(Boolean).join('\\n\\n') || null\n\n const report = buildReport(stack, pr, results, {\n mode,\n llmAppendix,\n cwd: opts.cwd,\n emitHtml: Boolean(opts.htmlOut),\n emitChecksSnapshot: Boolean(opts.checksSnapshotOut || opts.checksPngOut),\n })\n\n if (opts.htmlOut && report.html) {\n await fs.writeFile(opts.htmlOut, report.html, 'utf8')\n }\n\n let embedPngPath: string | null = null\n\n if ((opts.checksSnapshotOut || opts.checksPngOut) && report.checksSnapshotHtml && report.checksSnapshotInput) {\n if (opts.checksSnapshotOut) {\n const snapPath = path.isAbsolute(opts.checksSnapshotOut)\n ? opts.checksSnapshotOut\n : path.join(opts.cwd, opts.checksSnapshotOut)\n await fs.writeFile(snapPath, report.checksSnapshotHtml, 'utf8')\n process.stderr.write(`\\nFrontGuard: wrote checks snapshot HTML to ${snapPath}\\n`)\n }\n\n if (opts.checksPngOut) {\n const pngAbs = path.isAbsolute(opts.checksPngOut)\n ? opts.checksPngOut\n : path.join(opts.cwd, opts.checksPngOut)\n await renderChecksSnapshotPng(pngAbs, report.checksSnapshotInput)\n embedPngPath = pngAbs\n process.stderr.write(`FrontGuard: wrote checks PNG to ${pngAbs}.\\n\\n`)\n } else if (opts.checksSnapshotOut) {\n process.stderr.write(\n ` Tip: add --checksPngOut checks.png to render the checks table to a PNG (no browser).\\n\\n`,\n )\n }\n }\n\n if (opts.prCommentOut) {\n if (embedPngPath) {\n process.env.FRONTGUARD_EMBED_CHECKS_PNG_PATH = embedPngPath\n }\n const snippet = formatBitbucketPrSnippet(report)\n delete process.env.FRONTGUARD_EMBED_CHECKS_PNG_PATH\n const abs = path.isAbsolute(opts.prCommentOut)\n ? opts.prCommentOut\n : path.join(opts.cwd, opts.prCommentOut)\n await fs.writeFile(abs, snippet, 'utf8')\n process.stderr.write(\n `\\nFrontGuard: wrote Bitbucket PR comment text to ${abs} (${snippet.length} bytes).\\n` +\n ' Use ONLY this file in your POST …/pullrequests/{id}/comments payload (content.raw).\\n' +\n ' Do not post frontguard-report.md or captured stdout — that is the long markdown log.\\n' +\n ' With --checksPngOut, the PNG is inlined (small files only) or set FRONTGUARD_CHECKS_IMAGE_URL.\\n\\n',\n )\n }\n\n if (opts.markdown) {\n process.stdout.write(report.markdown + '\\n')\n } else {\n process.stdout.write(report.consoleText + '\\n\\n')\n process.stdout.write(report.markdown + '\\n')\n }\n\n const hasBlock = results.some((r) => r.findings.some((f) => f.severity === 'block'))\n process.exitCode = mode === 'enforce' && hasBlock ? 1 : 0\n}\n","#!/usr/bin/env node\nimport process from 'node:process'\nimport { defineCommand, runMain } from 'citty'\nimport { initFrontGuard } from './commands/init.js'\nimport { runFrontGuard } from './commands/run.js'\n\nconst init = defineCommand({\n meta: {\n name: 'init',\n description:\n 'Add Bitbucket pipeline example, pull_request_template.md, and frontguard.config.js',\n },\n run: async () => {\n const cwd = process.cwd()\n await initFrontGuard(cwd)\n process.stdout.write(\n 'FrontGuard initialized for Bitbucket.\\n\\n' +\n ' • bitbucket-pipelines.frontguard.example.yml — merge into your pipeline\\n' +\n ' • pull_request_template.md — PR description template (Bitbucket Cloud)\\n' +\n ' • frontguard.config.js (if missing)\\n\\n' +\n 'Add the package as a devDependency so CI matches local runs:\\n' +\n ' npm install -D @cleartrip/frontguard\\n' +\n ' yarn add -D @cleartrip/frontguard\\n',\n )\n },\n})\n\nconst run = defineCommand({\n meta: {\n name: 'run',\n description: 'Run checks and print the review brief',\n },\n args: {\n markdown: {\n type: 'boolean',\n description: 'Print markdown only',\n default: false,\n },\n enforce: {\n type: 'boolean',\n description: 'Exit non-zero if any finding has severity block',\n default: false,\n },\n append: {\n type: 'string',\n description:\n 'Append markdown from a file (paste from IDE/ChatGPT/Claude; no CI API key needed)',\n },\n htmlOut: {\n type: 'string',\n description:\n 'Write interactive HTML report (use with CI artifacts; PR comment links to download)',\n },\n checksSnapshotOut: {\n type: 'string',\n description: 'Write HTML with only the Checks table (for screenshots / PR comments)',\n },\n checksPngOut: {\n type: 'string',\n description:\n 'Write PNG of the checks table (SVG raster; @resvg/resvg-js, no browser). Pair with --checksSnapshotOut or use alone',\n },\n prCommentOut: {\n type: 'string',\n description:\n 'Write short Markdown for Bitbucket PR comment (summary + pipeline link for HTML artifact)',\n },\n },\n run: async ({ args }) => {\n await runFrontGuard({\n cwd: process.cwd(),\n markdown: Boolean(args.markdown),\n enforce: Boolean(args.enforce),\n append: typeof args.append === 'string' ? args.append : null,\n htmlOut: typeof args.htmlOut === 'string' ? args.htmlOut : null,\n checksSnapshotOut:\n typeof args.checksSnapshotOut === 'string' ? args.checksSnapshotOut : null,\n checksPngOut: typeof args.checksPngOut === 'string' ? args.checksPngOut : null,\n prCommentOut:\n typeof args.prCommentOut === 'string' ? args.prCommentOut : null,\n })\n },\n})\n\nconst main = defineCommand({\n meta: { name: 'frontguard', description: 'FrontGuard — frontend PR guardrails' },\n subCommands: { init, run },\n})\n\nrunMain(main)\n"]}
|